+ All Categories

FPU

Date post: 01-Feb-2016
Category:
Upload: lonato
View: 42 times
Download: 0 times
Share this document with a friend
Description:
FPU. Архитектура сопроцессора Команды сопроцессора Организация взаимодействия СР и FPU. Программная модель сопроцессора. Control Word Register. rc. pc. pm. um. om. zm. dm. im. 15 14 13 12 11 10 9 8 7 65 4 3 2 1 0. Управление округлением. - PowerPoint PPT Presentation
Popular Tags:
25
FPU Архитектура сопроцессора Команды сопроцессора Организация взаимодействия СР и FPU
Transcript
Page 1: FPU

FPU

Архитектура сопроцессора

Команды сопроцессора

Организация взаимодействия СР и FPU

Page 2: FPU

Программная модель сопроцессора

Регистры

общего назначения

(Стек)

79 0 15 0

ST(0) CWR Управляю

щие регистры

ST(1) SWR

ST(2) TWR

ST(3) FPUFIP

ST(4)

ST(5)FDP

ST(6)

ST(7)

Page 3: FPU

Control Word Registerrc pc pm um om zm dm im

Status Word Registerb c3 top c2 c1 c0 es sf pe ue oe ze de ie

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Маски исключений

Флаги исключений

ES – исключительная ситуация

Ie Invalid operation Error Oe Overflow Error

De Denormalized operand Error Ue Underflow Error

Ze divide by Zero Pe Precision Error

Управление округлением

Управление точностью

Ошибка работы стека

Page 4: FPU

• Управление точностью (pc)

Длина мантиссы:

00 – 24 бита

01 – 53 бита

11 – 64 бита

• Управление округлением (rc)

Пусть:

m – точное значение результата

a и b – ближайшие представимые в регистре сопроцессора точно числа с недостатком и с избытком

00 – к ближайшему из a и b

01 – c недостатком (=а)

10 – с избытком (=b)

11 – отбрасывание дробной части (для целочисленной арифметики)

Page 5: FPU

Биты кода условия с0,с1,с2,с3

c3 c2 c0

ST > операнд 0 0 0

ST < операнд 0 0 1

ST = операнд 1 0 0

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

b c3 top c2 c1 c0 es sf pe ue oe ze de ie15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

sf zf af pf cf

Fstsw ax

Sahf

J***

Page 6: FPU

Tags Word Register15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Регистр стека:00 – занят допустимым ненулевым значением01 – содержит нулевое значение10 – содержит одно из специальных числовых значений11 – регистр пуст в него можно производить запись

Data Pointer RegisterInstruction Pointer Register

- для хранения адреса команды, вызвавшей исключительную ситуацию, и адреса её операнда.

Page 7: FPU

Команды сопроцессора

Передачи данных Сравнения данных

Арифметические Трансцендентные

Управления

F***p – после операции производится выталкивание из стекаF***r(p) – реверсивное следование операндов в операциях – и /

Page 8: FPU

Передачи данных• Вещественных

fld fst(p)• Целых

fild fist(p)• Десятичных

fbld fbstp• Обмена

fxch

• Загрузка констант

ST(0)fldz 0fld1 1fldpi π fldl2t log210fldl2e log2efldlg2 lg 2fldln2 ln 2fld

M32,64,80

ST(I)

fild M16,32,64

fbldfbstp

M80

fist M16,32fst

M32,64

ST(I)fxch

ST(I)

Page 9: FPU

Сравнения данных• Вещественных

fcom fcomp(p)fucom(p)(pp)

• Целыхficom(p)

• Анализfxam

• С нулемftst

fcom(p)ST(I)

M32,64

fucomST(I)

ficom M16,32

fcompp

fxam

ftst

Page 10: FPU

FXAM

c1 c3 c2 c0 Содержимое ST

Знак ST 0 0 0 Неизвестный формат

0 0 1 Не число

0 1 0 Корректное вещественное число

0 1 1 Бесконечность

1 0 0 Нуль

1 0 1 Пусто

1 1 0 Денормализованное число

Page 11: FPU

АрифметическиеВещественные• Сложение

fadd(p)• Вычитание

fsub(r) fsub(r)p• Умножение

fmul(p)• Деление

fdiv(r) fdiv(r)p

Целочисленные• Сложение

fiadd• Вычитание

fisub(r)• Умножение

fimul• Деление

fidiv(r)

faddfsub,fsubr

fmulfdiv,fdivr

M32,64

ST,ST(I)

ST(I),ST

faddpfsubp,fsubrp

fmulpfdivp,fdivrp

ST(I)

ST(I),ST

fiaddfisub,fisubr

fimulfidiv,fidivr

M16,32

Page 12: FPU

• Без параметров:КОП ; КОП ST(1),ST(0) + pop

• С одним параметром:КОП источник ; КОП ST(0),источник

• С двумя параметрами:КОП приемник,источник

; приемник = приемник коп источникКОПr приемник,источник

; приемник = источник коп приемник

Page 13: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1

-1.5

Page 14: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1fadd

1.

-1.5

Page 15: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1

-0.5

Page 16: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)

1

-0.5

Page 17: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)fdivr st(1),st

1.5

-0.5

Page 18: FPU

.dataa dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)fdivr st(1),st

1.5

-3.

Page 19: FPU

a dd -1.5b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)fdivr st(1),stfild bfbld cfsub

67890.

98765.

1.5

-3.

Page 20: FPU

b dd 98765c dt 67890hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)fdivr st(1),stfild bfbld cfsubfbstp c

30875.

1.5

-3.

Page 21: FPU

c dt 30875hd dw 15

.codemov ax,@datamov ds,axfld afld1faddfld1fsub st,st(1)fdivr st(1),stfild bfbld cfsubfbstp cfcompp ; st-st(1)

1.5

-3.

Page 22: FPU

fcompp ; st-st(1)fstsw axsahf ; c3c2c0=000

jp m1 ; не сравнимы

jc m2 ; st < st(1)

jz m3 ; st = st(1)

m4: … ; st > st(1)

m3: …

m2: …

m1: …

* 0 * * * 0 * 0

sf zf af pf cf

Page 23: FPU

Вспомогательные арифметические• Fsqrt• Fabs• Fchs• Fxtract• Fprem• Fscale• Frndint

– Sqrt(st) st– Abs(st) st– +/- st st– Мантисса st, порядок st(1)– st mod st(1) st– st*2st(1) st– [st] st

Page 24: FPU

Трансцендентные функции• Тригонометрические

fsinfsincosfcosfptanfpatan

• Степенные и логарифмическиеf2xm1fyl2xp1fyl2x

sin(st) stsin(st) st, cos(st) st(1)cos(st),tg(st) st, fld1arctg(st/st(1)) st

2st-1 st; -1<x<1st(1)*log2(st+1) st(1), popst(1)*log2(st) st(1), pop

Page 25: FPU

Команды управления• Инициализация сопроцессора

f(n)init• Работы со средой

f(n)save memf(n)stenv/fldenv memf(n)clexfldcw/f(n)stcw m16f(n)stsw m16frstor mem

• Работы со стекомffree ST(I)

• Синхронизации CP и FPUwait/fwait

cwr=037f swr=0000 twr=ffff

cwr,swr,twr,st,…st(7),fdp,fipcwr,swr,twr,fip,fdpswr=0*** **** 0000 0000

Без обработки исключительных

ситуаций


Recommended