

Lection №2
Программная модель FPU.
Исключения и интерфейс сопроцессора
Рег
ист
ры
общ
его
наз
нач
ени
я
(Ст
ек)
79 |
0 |
15 |
0 |
|
ST(0) |
|
CWR |
|
ST(1) |
|
SWR |
|
ST(2) |
|
TWR |
|
ST(3) |
FPU |
|
|
|
|
FIP |
|
ST(4) |
|
|
ST(5)
FDP
ST(6)
Упр
авл
яю
щие
рег
ист
ры
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Программная модель FPU: регистры математического сопроцессора
Регистры данных R0-R7 организованы в стек
Номер регистра являющегося вершиной стека хранится в поле TOS
Операция Push:
Декрементирует поле TOS на 1 и помещает данные в регистр являющийся новой вершиной стека.
+
Операция Pop:
Записывает данные с вершины стека в память или регистр и инкрементирует указатель.
Эти инструкции адресуют регистры либо явно, либо не явно.
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

|
|
Программная модель FPU: |
|
|
|||||
|
|
адресация |
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
С каждым регистром |
|
|
|
|
|
|
|||
связано двухбитное |
|
|
|
|
|
|
|||
поле тегов, |
|
|
|
|
|
|
|
||
предназначенное для |
Регистры данных FPU |
|
|
|
|||||
быстрого |
|
|
|
|
|
||||
анализа состояния |
|
(арифметический стек) |
|
|
|
||||
регистра. |
|
|
79 |
78 |
64 |
63 |
0 |
|
|
Поля |
Физические |
Относительные |
|||||||
Знак |
Порядок |
Мантисса |
|||||||
регистра |
|
номера |
|||||||
тегов |
|
|
|
|
|
|
|
номера(TOS=3) |
|
0 0 Tag(0) |
R(0) |
|
|
|
|
|
ST(5) |
||
|
|
|
|
|
ST(6) |
||||
0 1 Tag(1) |
R(1) |
|
|
|
|
|
|||
|
|
|
|
|
|
||||
R(2) |
|
|
|
|
|
ST(7) |
|||
1 0 Tag(2) |
|
|
|
|
|
|
|||
R(3) |
|
|
|
|
|
ST(0) |
|||
1 1 |
Tag(3) |
R(4) |
|
|
|
|
|
ST(1) |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
||
|
Tag(4) |
R(5) |
|
|
|
|
|
ST(2) |
|
|
|
|
|
|
|
|
|||
|
Tag(5) |
R(6) |
|
|
|
|
|
ST(3) |
|
|
|
|
|
|
|
|
|||
|
Tag(6) |
R(7) |
|
|
|
|
|
ST(4) |
|
|
Tag(7) |
|
|
|
Указатели, регистры состояния и управления |
||||
|
|
|
|
|
|
|
|
||
|
|
|
15 |
TOS |
11 |
|
|
0 |
|
|
|
|
13 |
|
|
00 – valid(наличие операнда в регистре)
01 – zero(его нулевое значение)
10 – Special(специальное назначение)
11 – Empty(регистр пустой)
|
Status Register |
|
|
Control Register |
|
Tag 7 |
Tag Word |
Tag 0 |
|
Instruction Pointer |
|
|
Data Pointer |
|
|
OpCode |
|
Неявная адресация, Подразумевает операнд находящийся в стеке
Явная адресация, Подразумевает указание смещения регистра Относительно вершины стека(номера ST(i))
!У Pentium 4 внутренняя шина имеет 84 разряда для ускорения выполнения
операций, НО в программной модели важная внешняя логическая структура
!Теги модифицируются только сопроцессором
– при восстановлении их из образа регистров, сохраненного в памяти, используется только информация «пустой»(11) или «непустой»(00,01,11)
Поля тегов объединены в одно:
слово тегов TW (Tag Word)
! Значение тега для непустого регистра определяется по
фактическим данным.
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Tags Word Register
15 |
14 |
13 |
12 11 |
10 |
9 |
8 7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр стека:
00 – занят допустимым ненулевым значением
01 – содержит нулевое значение
10 – содержит одно из специальных числовых значений
11 – регистр пуст в него можно производить запись
Data Pointer Register Instruction Pointer Register
- для хранения адреса команды, вызвавшей исключительную ситуацию, и адреса её операнда.

Программная модель FPU:
указатели, регистры состояния
и управления
Слово состояния(Status Word=Status register) отображает общее состояние сопроцессора
|
15 |
13 |
|
|
11 Status Register |
0 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
Control Register |
|
|
|
|
|
|
|
|
|
|
Tag 7 |
|
|
|
|
|
Tag Word |
|
|
Tag 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
Наличие |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
Instruction Pointer |
|
|
|
|
необслу- |
|
|||
|
|
|
|
|
|
|
Data Pointer |
|
|
|
|
женного |
|
|||
|
|
|
|
|
|
|
|
|
|
|
запроса |
|
||||
|
|
|
|
|
|
|
OpCode |
|
|
|
|
(Busy) |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Управляющее слово CW (Control Word) служит для выбора |
||||||||||||||||
параметров выполняемых операций |
|
|
|
|
|
|
|
|
||||||||
15 |
13 |
11 |
5 |
|
0 |
|
|
|
|
|
||||||
X X X |
X |
|
|
P |
U O Z D I |
|
|
|
|
|
||||||
|
|
|
RC PC X X M |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
M M M M M |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Указывает способ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
округления (Rounding |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задает точность |
|
|
|
|
|
|
|
|
|
||
Control): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00 –к ближайшему |
|
|
|
|
|
|
(Precision Control): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Маскируют отдельные |
|
|
|
|||||||
значению; |
|
|
|
|
|
|
00 – 24 бит |
|
|
|
|
|
||||
01 – по направлению к -∞; |
|
|
|
|
|
(одинарная); |
|
|
|
исключения |
|
|
|
|
|
|
10 - по направлению к +∞; |
|
|
|
|
|
10 – 53 бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
11 – по направлению к 0. |
|
|
|
|
|
(двойная); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 – 64 бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
(расширенная); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Состояние 01 - |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
зарезервировано |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Биты С[0:3] определяют код условия(Condition Code), интерпретируемый в зависимости от выполненной инструкции(например,FCOMI, FCMOVEcc и т.д.)
15 |
13 |
11 |
|
5 |
0 |
|
|
B |
C TO |
|
|
C C C E S P U O Z D I |
||||||||
|
3 S |
|
|
2 1 0 S F E E E E E E |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Немаски- |
|
|
|
|||
|
|
Указатель |
|
|
|
|
|||||||
|
|
|
|
|
руемое |
|
|
|
|
|
|
||
|
|
верхушки |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
исключе- |
|
|
|
|
|
|
||
|
|
стека |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
ние |
|
|
|
|
Эти биты |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
устанавливаются при |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
возникновении |
|
|
|
|
|
|
|
|
|
|
|
|
|
исключений |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Некорректная операция со стеком |
|
|
|
(маскированного) |
|
||||||||
(переполнение сверху или снизу) |
|
|
|
|
|
||||||||
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Программная модель FPU:
указатели, регистры состояния и управления
Status Register
Control Register
Tag 7 |
Tag Word |
Instruction Pointer
Data Pointer
OpCode
Хранится код последней исполнившейся неуправляющей инструкции, причем из двухбайтного кода операции сохраняются только 11 младших бит(пять старших бит всегда равны 11011, этот код называют «Escape»).
Real & Virtual
Mode
|
|
|
|
В реальном режиме |
Линейный адрес |
||
|
|
|
|
|
|
|
указателя |
Tag 0 |
|
|
|
|
|
инструкции FPU(FPU |
|
|
|
|
|
|
IP) и операнда |
||
Указатели инструкции и данных |
|
|
|
||||
|
|
|
|
|
|||
} |
служат для сохранения адреса |
Хранится |
FPU(FPU OP) |
||||
выполняемой инструкции, а также |
|
||||||
|
|
для хранения адреса операнда |
|
|
|
|
|
|
|
|
|
|
Селекторы |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
указателей |
|
|
|
|
|
|
|
инструкций(FPU CS |
|
|
|
|
В защищенном режиме |
Selector и FPU OP |
||
|
|
|
|
|
|
|
Selector) и их |
|
|
|
|
|
|
|
смещения(FPU IP |
|
|
Образы контекста FPU |
|
|
|
Offset и FPU OP |
|
|
|
(состояние сопроцессора) |
|
|
|
Offset) |
|
|
|
|
|
Protect Mode |
|
|
31 |
16 15 |
0 |
|
|
|||
|
reserved |
CW |
31 |
16 15 |
|
0 |
|
|
reserved |
SW |
|
||||
|
|
reserved |
CW |
||||
|
reserved |
TW |
|
||||
|
|
reserved |
SW |
||||
|
FPU IP OFFSET |
|
|||||
|
|
reserved |
TW |
||||
|
00000 OPCODE |
|
|
||||
|
FPU CS SELECTOR |
|
reserved |
FPU IP [15:0] |
|||
|
[10:0] |
|
|
||||
|
|
|
0000 |
FPU IP [15:0] |
0 |
OPCODE[10:0] |
|
|
FPU IP OFFSET |
||||||
|
|
reserved |
FPU OP[15:0] |
||||
|
|
|
FPU OP |
|
|||
|
|
|
|
|
|
|
|
|
reserved |
SELECTOR |
0000 |
FPU IP [15:0] |
000 |
000000000 |
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Исключения: определения и назначения
Исключения(exceptions)
Отказ(fault) – это исключение, которое обнаруживается и обслуживается ДО
выполнения инструкции, вызвавшей ошибку.
Ловушка(trap) – это исключение, которое обнаруживается и обслуживается после выполнения инструкции, его вызвавшей.
После обслуживания этого исключения управление возвращается
Аварийное завершение(abort) – это
исключение, которое не позволяет точно установить инструкцию, его вызвавшую.
Используются
снова на ту же |
на инструкцию, |
инструкцию, которая |
следующую за |
вызвала отказ. |
вызвавшей ловушку. |
|
|
|
|
|
|
|
|
|
|
я |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с |
|
|
|
|
|
|
|
|
|
т |
|
|
|
|
|
|
|
|
|
ю |
|
|
|
|
|
|
|
|
|
у |
|
|
|
|
|
|
|
|
|
з |
|
|
|
|
|
|
|
|
|
ь |
|
|
|
|
|
|
|
|
|
л |
|
|
|
|
|
|
|
|
|
о |
|
|
|
|
|
|
|
|
|
п |
|
|
|
|
|
|
|
|
|
с |
|
|
|
|
|
|
|
|
|
|
И |
|
|
|
|
|
|
|
|
|
|
Как программные прерывания
В системе виртуальной памяти, в частности Помогают подкачать с диска в оперативную память
Затребованную страницу или сегмент.
Для сообщения о серьезной ошибке, такой как аппаратная ошибка или повреждение системных таблиц
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Исключения: исключения сопроцессора
Флаг |
Маска |
IE |
IM |
DE |
DM |
ZE |
ZM |
OE |
OM |
UE |
UM |
PE |
PM |
Исключение
#I (Invalid Operation) – недействительная операция: извлечение данных из пустого регистра(0/0 или ∞-∞), извлечение чётного корня из отрицательного числа, операции с нечисловыми переменными и т.п. Если установление флаг SF, то исключение связано с переполнением стека сверху или снизу.
#D (Denormalized Operand) – денормализован хотя бы один операнд
#Z (Zero Divide) – деление на нуль ненулевого операнда
#O (Overflow) - переполнение
#U (Underflow) – потеря точности (исчезновение значащих разрядов)
#P (Precision) – результат не может быть точно представлен в заданном формате, при выполнении округления
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Исключения: исключения сопроцессора
Флаг
Маска
|
|
|
Подавлять генерацию исключений по |
|
|
При возникновении условия исключения |
|
|
|
|
устанавливается флаг данного исключения |
|
различным классам условий (единичное |
|
|
в регистре состояния и накапливаются там |
|
значение бита маскирует исключение) |
|
|
до явного сброса. |
} |
|
|
|
|
|
Незамаскированные исключения вызывают также установку общего флага ES и аппаратный сигнал ошибки на выходе сопроцессора. В то время как, возникновение замаскированного исключения только фиксируется в регистре состояния, не вызываю прерывания, а сопроцессор выполнит соответствующую данному типу внутреннюю процедуру обработки исключения.
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich

Используемая литература
Книга «Процессоры «Pentium 4,Athlon и Duron»»,авторы Михаил Гук, Виктор Юров
Книга «Ассемблер. Учебник для ВУЗов», авторы Михаил Гук, Виктор Юров
Книга «Архитектура ЭВМ»,автор Мюллер
http://www.slidefinder.net/F/FPU_Архитектура_сопроцесс ора_Команды_сопроцессора/9075948
Физический факультет, ЭВУ и системы, 7 семестр,2010 Доцент Моховиков А..Ю. Physics Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov Alexander Yurievich