Лекция 05 Математический сопроцессор.ppt
- Количество слайдов: 29
МАТЕМАТИЧЕСКИЙ СОПРОЦЕССОР (FPU) Архитектура сопроцессора Команды сопроцессора Организация взаимодействия СРU и FPU
ПРОЦЕССОР И СОПРОЦЕССОР 1. Процессор инициирует выборку очередной команды из памяти и она попадает в оба процессора 2. Команда сопроцессора имеет код, начинающийся с 11011 3. Если имеется операнд из памяти, то процессор выставляет адрес на шину адреса 4. Сопроцессор считывает операнд и выполняет команду P. S. Работа обоих устройств должна быть согласована
Представление вещественных чисел в ЭВМ на базе процессора INTEL 12 ≤ m<102 Знак Смещение Порядок Мантисса числа порядка Короткое Длинное Расширенное 31 63 79 30 -23 62 -52 78 -64 127 1023 16383 22 -0 51 -0 63 -0 -1. 010 = -1. 0 e 02= 1 01111111 000… 2 = BF 80000016 5. 2510=101. 012=+1. 0101 е+102=0 10000001 010100… 2=40 A 8000016
Другие форматы данных • Двоичные целые числа в трех форматах – 16 бит, 32 бита и 64 бита • Упакованные целые десятичные (BCD) числа – длина максимального числа составляет 18 упакованных десятичных цифр (9 байтов). Старший десятый байт игнорируется. z – знак числа. z d 17 d 16 d 15 d 14 d 13 d 12 d 11 d 10 d 9 d 8 d 7 d 6 d 5 d 4 d 3 d 2 d 1 d 0
Специальные численные значения • Денормализованные вещественные числа – это числа, которые меньше минимального нормализованного числа для каждого вещественного формата • Нуль. Значение истинного нуля может иметь знак • Бесконечность. Может иметь знак • Нечисла. SNAN – сигнальные нечисла (ie). QNAN – спокойные (тихие) нечисла. Вещественная неопределенность • Неподдерживаемые форматы
Программная модель сопроцессора 79 0 15 0 CWR ST(2) TWR ST(3) ST(4) ST(5) ST(6) ST(7) FPU FIP FDP Управляющие регистры Регистры общего назначения (Стек) ST(0) ST(1)
Control Word Register (CWR) 15 14 13 12 Управление округлением rc pc 11 10 9 8 7 Управление точностью pm um om zm dm im 6 5 4 3 2 1 0 Маски исключений Status Word Register (SWR) b c 3 top c 2 c 1 c 0 es sf pe ue oe ze de ie 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Ошибка работы стека pe, ue, ie Флаги исключений es – любая исключительная ситуация ie Invalid operation Error oe Overflow Error de Denormalized operand Error ue Underflow Error ze divide by Zero pe Precision Error
• Управление округлением точностью (pc) (rc) Длина мантиссы: 00 – 24 бита 01 – 53 бита 11 – 64 бита По умолчанию: pc = 11 Пусть: m – точное значение результата a и b – ближайшие представимые в регистре сопроцессора точно числа с недостатком и с избытком 00 – к ближайшему из a и b 01 – c недостатком (=а) 10 – с избытком (=b) 11 – отбрасывание дробной части (для целочисленной арифметики)
Биты кода условия с0, с1, с2, с3 c 2 c 0 0 ST > операнд ST < 0 операнд ST = 1 15 операнд 14 13 12 11 10 1 b Не c 3 top c 2 сравнимы sf zf af pf fcom [op] fstsw ax ; swr -> ax 0 1 sahf ; ah -> flags 0 0 j*** ; переход 9 8 7 6 5 4 3 2 1 0 1 1 es sf pe ue oe ze de ie c 1 c 0 cf
Tags Word Register (TWR) 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 - для хранения адреса команды, вызвавшей исключительную ситуацию, и адреса её операнда.
Команды сопроцессора Передачи данных Сравнения данных Арифметические Трансцендентные Управления f***p – после операции производится выталкивание из стека f***r(p) – реверсивное следование операндов в операциях – и /
Команды передачи данных • Вещественных fld fst(p) • Целых fild fist(p) • Десятичных fbld fbstp • Обмена fxch fld ST(I) • Загрузка констант ST(0) fldz 0 fld 1 1 fldpi π fldl 2 t log 210 fldl 2 e log 2 e fldlg 2 fldln 2 M 32, 64, 80 fst fbld fbstp ST(I) fist M 16, 32 M 32, 64 fild M 16, 32, 64 M 80 fxch ST(I)
Команды сравнения данных • Вещественных fcomp(p) fucom(p)(pp) • Целых ficom(p) • Анализ fxam • С нулем ftst ST(I) fcom(p) M 32, 64 fucom ST(I) ficom fcompp fxam ftst M 16, 32
Команда FXAM c 1 c 3 c 2 Знак ST 0 0 0 1 0 1 1 c 0 0 1 0 1 0 Содержимое ST Неподдерживаемый формат Не число (NAN) Корректное вещественное число Бесконечность Нуль Пусто Денормализованное число
Арифметические команды v Вещественные • Сложение fadd(p) • Вычитание fsub(r)p • Умножение fmul(p) • Деление fdiv(r)p v Целочисленные • Сложение fiadd • Вычитание fisub(r) • Умножение fimul • Деление fidiv(r) faddp M 32, 64 ST(I) fsub, fsubr fsubp, fsubrp ST(I), ST fmulp fdiv, fdivr ST, ST(I) fdivp, fdivrp ST(I), ST fiadd fisub, fisubr M 16, 32 fimul fidiv, fidivr
• Команда без параметров: КОП ; КОП ST(1), ST(0) + pop • Команда с одним параметром: КОП источник ; КОП ST(0), источник • Команда с двумя параметрами: КОП приемник, источник ; приемник = приемник коп источник КОПr приемник, источник ; приемник = источник коп приемник
. data a dd b dd c dt d dw. code mov fld 1 -1. 5 98765 67890 h 15 ax, @data ds, ax a -1. 5
. data a dd b dd c dt d dw. code mov fld 1 fadd -1. 5 98765 67890 h 15 ax, @data ds, ax a 1. -1. 5
. data a dd b dd c dt d dw. code mov fld 1 fadd fld 1 -1. 5 98765 67890 h 15 ax, @data ds, ax a -0. 5
. data a dd b dd c dt d dw. code mov fld 1 fadd fld 1 fsub -1. 5 98765 67890 h 15 ax, @data ds, ax a st, st(1) 1 -0. 5
. data a dd b dd c dt d dw. code mov fld 1 fadd fld 1 fsub fdivr -1. 5 98765 67890 h 15 ax, @data ds, ax a st, st(1), st 1. 5 -0. 5
. data a dd b dd c dt d dw. code mov fld 1 fadd fld 1 fsub fdivr -1. 5 98765 67890 h 15 ax, @data ds, ax a st, st(1), st 1. 5 -3.
a dd b dd c dt d dw. code mov fld 1 fadd fld 1 fsub fdivr fild fbld fsub -1. 5 98765 67890 h 15 67890. 98765. ax, @data ds, ax a st, st(1), st b c 1. 5 -3.
b dd c dt d dw. code mov fld 1 fadd fld 1 fsub fdivr fild fbld fsub fbstp 98765 67890 h 15 ax, @data ds, ax a st, st(1), st b c c 30875. 1. 5 -3.
c dt d dw. code mov fld 1 fadd fld 1 fsub fdivr fild fbld fsub fbstp fcompp 30875 h 15 ax, @data ds, ax a st, st(1), st b c c ; st-st(1) 1. 5 -3.
fcompp fstsw sahf jp m 1 jc m 2 jz m 3 m 4: … m 3: … m 2: … m 1: … ; st-st(1) ax ; c 3 c 2 c 0=000 ; не сравнимы ; st < st(1) ; st = st(1) ; st > st(1) sf zf af pf * 0 * * * 0 * cf 0
Вспомогательные арифметические команды • • fsqrt fabs fchs fxtract fprem fscale frndint – – – – Sqrt(st) st Abs(st) st +/- st Мантисса st, порядок st(1) st mod st(1) st st*2 st(1) st [st] st
Трансцендентные функции • Тригонометрические fsincos fptan fpatan • Степенные и логарифмические f 2 xm 1 fyl 2 xp 1 fyl 2 x sin(st) st sin(st) st, cos(st) st(1) cos(st), tg(st) st, fld 1 arctg(st/st(1)) st 2 st-1 st; -1
Команды управления • Инициализация сопроцессора f(n)init cwr=037 f, swr=0000, twr=ffff • Работы со средой f(n)save mem ; сохр. ср. cwr, swr, twr, st, …st(7), fdp, fip f(n)stenv/fldenv mem cwr, swr, twr, fip, fdp f(n)clex swr=0*** **** 0000 fldcw/f(n)stcw m 16 ; cwr<->m 16 f(n)stsw m 16 ; swr -> m 16 frstor mem ; восст. ср. Без обработки • Работы со стеком исключительных ffree ST(I) ; ST(I) - пустой ситуаций • Синхронизации CPU и FPU wait/fwait ; ожидание


