Вы находитесь на странице: 1из 8

1 Приведите форматы данных, обрабатываемых FPU.

Всего поддерживается семь различных форматов. Три формата для целых, три —
для вещественных, один — для двоично-десятичных чисел. Каждый из этих
форматов характеризуется числом занимаемых бит и диапазонами представимых в
этом формате значений.

2 Что представляет собой регистровая модель блока FPU?

С программной точки зрения сопроцессор содержит несколько управляющих регистров, а


также блок из 8 регистров данных разрядностью 80 бит, организованных в стек

Вещественные числа хранятся и обрабатываются в регистрах, общее число которых зависит


от модели FPU:

• FPU типов FPv4-SP и FPv5, входящие в состав ряда процессоров архитектуры ARMv7-M,
позволяют использовать шестнадцать 64-разрядных регистров D0-D15 и 32 32-разрядных
регистра S0-S31;
• остальные модели FPU включают 32 64-разрядных регистра D0-D31.

С точки зрения программиста FPU располагает 32- и 64-разрядными регистрами с плавающей


запятой, причём они могут использоваться одновременно. Технически, однако, эти регистры
перекрываются: один 64-разрядный регистр может служить двумя 32-разрядными со
смежными номерами и наоборот (регистру D0 соответствуют S0 и S1, регистру D1 – S2 и S3
и т.д.). По этой причине запись в регистр одной разрядности портит содержимое
соответствующих регистров другой разрядности.

В FPU можно выделить три группы регистров:

 Стек процессора: регистры R0..R7. Размерность каждого регистра: 80 бит.


 Служебные регистры
 Регистр состояния процессора SWR (Status Word Register) — информация о текущем
состоянии сопроцессора. Размерность: 16 бит.
 Управляющий регистр сопроцессора CWR (Control Word Register) — управление
режимами работы сопроцессора. Размерность: 16 бит.
 Регистр слова тегов TWR (Tags Word Register) — контроль над регистрами R0..R7
(например, для определения возможности записи). Размерность: 16 бит.
 Регистры указателей
 Указатель данных DPR (Data Point Register). Размерность: 48 бит.
 Указатель команд IPR (Instruction Point Register). Размерность: 48 бит.
3 Каким образом адресуются регистры данных FPU?

Сопроцессор (FPU) предназначен для выполнения операций над вещественными


числами. С программной точки зрения сопроцессор содержит блок регистров
данных, регистр управления и группу регистров состояния и указателей. Восемь
регистров данных разрядностью 80 бит организованы в стек. Номер регистра,
являющегося текущей вершиной стека, хранится в специальном поле регистра
состояния (указателе вершины стека). Операция push уменьшает значение
указателя на 1 и помещает в стек данные в регистр, являющийся новой вершиной
стека. Операция popзаписывает данные с вершины стека в память или регистр и
увеличивает указатель на 1. Инструкции адресуют регистры либо явно, либо
неявно. Неявная адресация подразумевает операнд, находящийся на вершине
стека. Явная адресация подразумевает указание смещения регистра относительно
вершины стека - st(i).
Математический сопроцессор содержит восемь 80 рязрядных регистров общего
назначения R0..R7 (рис. 1.11.), которые образуют специальный регистровый стек
FPU. Регистры стека обозначаются как ST(0)..ST(7) и ассоциируются с
физическими регистрами R0..R7 в порядке возрастания номеров. Номер регистра,
соответствующего вершине стека ST(0), определяется полем TOP регистра
состояния SW. Кроме этого, каждому регистру R0..R7 соответствует двухбитовое
поле в регистре тэгов TW. ST(0) также может обозначаться как ST.

4 Поясните принцип выполнения двухоперандных арифметических


команд FPU.

При выполнении операций в качестве одного из операндов всегда используется содержимое


ST(0) - регистра данных FPU, являющегося вершиной стека. Физический номер этого
регистра определяется полем ТОР в регистре состояния FPSR, содержимое которого
изменяется при выполнении ряда команд. Таким образом, осуществляется заполнение или
освобождение регистров арифметического стека. Второй операнд при выполнении
двухоперандных команд FPU выбирается из памяти или из i-гo регистра данных ST(i),
входящего в состав арифметического стека.

5 Перечислите особые случаи представления вещественных чисел.


1 бит 8 бит 23 бита
Одинарная точность
S Порядок Мантисса 4 байта
(Короткое вещественное)
1 бит 11 бит 52 бита
Двойная точность
S Порядок Мантисса 8 байт
(Длинное вещественное)
1 бит 15 бит 64 бита
Расширенная точность
S Порядок Мантисса 10 байт
(Временное вещественное)
- положительный и отрицательный нули (+/- 0) (все нули)
- положительная и отрицательная бесконечности (Infinity) (+/- inf) (порядок - все 1, мантиса –
все 0)
- Наименьшее положительное число (0 – знаковый бит, порядок – 1, мантиса - 0)
- Наибольшее положительное число(0 – знаковый бит, порядок – 0, мантиса - 1)
- Наименьшее отрицательно число (1 – знаковый бит, порядок – 0, мантиса - 1)
- Наибольшее отрицательно число(1 – знаковый бит, порядок – 1, мантиса - 0)

- Не число (NAN) (порядок – 1, мантиса – всё что угодно)


- Неопределенность(порядок – 1, мантиса – 1000..0)

6 Какие особые случаи различают в работе FPU?

- Недопустимая операция
• опустошения стека,
• переполнение стека,
• недопустимый формат операнда(только для операнда в расширенном
формате двойной точности),
• SNaN-явно не число)
- QNaN(не истинный особый случай)
- Прочие особые случаи недопустимой операции
- Денормализованный операнд
- Переполнение и антипереполнение
- Потеря точности

7 Что представляет собой мнемоника команд FPU?

Мнемоника команд FPU


1.Префиксы:
– F – идентификатор команды FPU:
2. F (Floating) – обычная команда;
FN (Floating No Wait) – «не ожидающая» команда, », т.е. процессор х86
передает их для выполнения в сопроцессор х87, не проверяя занятость
сопроцессора и игнорируя численные особые случаи.
– _____________ – тип обрабатываемых числовых данных:
Мнемоники команд с целочисленным (двоичным) операндом начинаются с «FI», а
с десятичным операндом – с «FB». «F» - для команд с плавающей точкой.
3. I (Integer) – целое двоичное число;
4. B (Binary-coded decimal) – десятичное число;
5. _ – вещественное число.
2.Суффиксы:
– предпоследний:
6. R (Reverse) – обратная операция;
– последний:
7. P (Popping) – заключительным действием команды является
извлечение из стека.

8 Назовите основные группы команд FPU и объясните их назначение.


 Команды передачи данных
 Вещественные данные
 Целочисленные данные
 Десятичные данные
 Загрузка констант (0, 1, число Пи, log2(10), log2(e), lg(2), ln(2))
 Обмен
 Условная пересылка (Pentium II/III)
Мнемони Операнд
ка, Тип команды
С плав. точкой Целое число Десят.число
FLD FILD FBLD (–) Включить в стек
FSTP FISTP FBSTP Извлечь из стека (+)
FST FIST - Копирование
FXCH - - Обмен регистров
FLDZ (–) Включить в стек 0
FLD1 (–) Включить в стек 1
FLDPI (–) Включить в стек = 3.1415...
FLDLG2 (–) Включить в стек log10 (2)
FLDLN2 (–) Включить в стек ln (2)
FLDL2T (–) Включить в стек log2 (10)
FLDL2E (–) Включить в стек log2 (e)

 Команды сравнения данных


 Вещественные данные
 Целочисленные данные
 Анализ
 С нулём
 Условное сравнение (Pentium II/III)

1. FCOM ST(i)/mem – сравнивает содержимое ST(0) с операндом в численном регистре или в


памяти, т.е. производит вычитание операндов без запоминания результата и устанавливает
коды условий в регистре состояния (таблица Б.4).
2. FICOM mem – сравнивает содержи мое вершины стека ST(0) с целым числом в памяти.
3. FCOMP ST(i)/mem – аналогична команде FCOM, но после сравнения производит извлечение
операнда из вершины стека.
4. FCOMPP ST(i) – сравнивает ST(0) c ST(i) и извлекает из стека оба операнда.
5. FTST – сравнивает вершину стека с нулем.
6. FXAM – сравнивает вершину стека с нулем, но выставляет 4 флага условий (в частности,
определяется ненормализованная мантисса, бесконечность, нечисло и др.).
7. FCOMI ST(0),ST(i) – сравнение вещественных чисел и установка флагов в EFLAGS (P6+).
8. FCOMIР ST(0),ST(i) – сравнение вещественных чисел и установка флагов в EFLAGS и
извлечение операнда из вершины стека (P6+).

 Арифметические команды
 Вещественные данные: сложение, вычитание, умножение, деление
 Целочисленные данные: сложение, вычитание, умножение, деление
 Вспомогательные арифметические команды (квадратный корень, модуль, изменение
знака, выделение порядка и мантиссы)
Команды Основная Целое в памяти С извлечением
Сложение FAD FIAD FADD
Вычитание D D P
Обратное FSU FISU FSUB
вычитан. B B P
Умножение FSU FISU FSUB
Деление BR BR RP
Обратное деление FMU FIMU FMUL
L L P
FDIV FIDIV FDIVP
FDIV FIDIV FDIV
R R RP

 Трансцендентные команды
 Тригонометрия: синус, косинус, тангенс, арктангенс
 Вычисление логарифмов и степеней

Мнемоника Описание команды Вычисляемая функция


FPTAN Частичный тангенс ST(1) / ST(0) = tg (ST(0))
FSIN Синус(387+) ST(0) = sin (ST(0))
FCOS Косинус (387+) ST(0) = cos (ST(0))
ST(7) = sin (ST(0));
FSINCOS Синус, косинус (387+)
ST(0) = cos (ST(0))
FPATAN Частичный арктангенс ST(0) = arctg (ST(1)/ST(0)
FYL2X Двоичный логарифм ST(0) = ST(1) * log2 (ST(0))
FYL2XP1 Двоичный логарифм ST(0) = ST(1) * log2 (ST(0)+1)
F2XM1 Показательная функция ST(0) = 2(ST(0)) – 1

 Команды управления
 Инициализация сопроцессора
 Работа со средой
 Работа со стеком
 Переключение режимов

1. Команда – FNSTCW mem (FSTCW mem) – передает содержимое регистра управления (CW) в
ячейку памяти.
2. Команда – FLDCW mem – загружает регистр управления (CW) из ячейки памяти. Эти две
команды применяются для изменения режима работы сопроцессора х87.
3. Команда – FNSTSW mem (FSTSW mem) – передает содержимое регистра состояния (SW)
сопроцессора х87 в ячейку памяти.
4. Команда – FNSTSW AX (FSTSW AX) – передает содержимое регистра состояния (SW)
сопроцессора в регистр AX микропроцессора х86.
5. Команда – FNCLEX (FCLEX) – сбрасывает в регистре состояния сопроцессора флаги особых
случаев, а также биты ES и BUSY. Эти флаги не сбрасываются аппаратно и должны явно
сбрасываться программистом.
6. Команда – FNINIT (FINIT) – инициализирует регистры управления, состояния и тэгов на
значения, приведенные в табл. Б.12. Такое же действие производит аппаратный сигнал
сброса – RESET.
9 Как реализуются ветвления на основе анализа значений данных
FPU?

Для организации ветвлений и проверки условий окончания циклов используются группа


команд сравнения сопроцессора и команды передачи слова состояния в центральный
процессор.

FCOM– сравнивает st[0]с операндом, а FICOM– с целым операндом из памяти; FCOMP-


сравнивает содержимое st[0]с операндом, после чего исключает его из стека сопроцессора, a
FICOMP делает то же действие при сравнении с целочисленным операндом; FCOMPP-
сравнивает два верхних регистра стека st[0] и st[1] с последующим их исключением из стека.
FTST– сравнивает st[0] с 0.

Перечисленные команды меняют содержимое регистра состояния в соответствии с


результатом вычитания второго операнда из первого и могут быть использованы для
организации условной передачи управления по арифметическим отношениям.
Результат С3 С2 С0

ST[0] > X 0 0 0

ST[0] < X 0 0 1

ST[0] = X 1 0 0

Не сравнимы 1 1 1

Коды результата операции сравнения в регистре SW


С учетом особенностей структуры регистра FLAGSЦП и регистра состояния
математического сопроцессора, а также наличием команды сопроцессора FSTSW wrd и
центрального процессора. SAHF можно организовать передачу флагов сопроцессора в ЦП.

Вам также может понравиться