Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
23.11.2024
Размер:
474 Кб
Скачать

НИУ МИЭТ, ИПОВС, КАИ

Математический сопроцессор

1 / 18

Математический сопроцессор

Александра Игоревна Кононова

НИУ МИЭТ

17 ноября 2020 г. актуальную версию можно найти на https://gitlab.com/illinc/arch-cs

Структура FPU

Стек FPU FPU x87 Команды вычислений

Сравнение вещественных чисел

НИУ МИЭТ, ИПОВС, КАИ

Математический сопроцессор

2 / 18

FPU x87

Математический сопроцессор (Floating Point Unit, FPU) устройство для обработки числовых данных в формате с плавающей запятой (начиная с i486DX интегрирован в процессор, до Atom имеет почти независимое ядро):

формат данных;

собственный набор регистров данных (стек FPU), флаги;

собственная система команд (префикс f);

сообщение с ЦП в основном через память.

Внастоящее время полностью интегрирован в ЦП:

не требуется ожидание;

новые команды могут работать с флагами ЦП.

Структура FPU

Стек FPU FPU x87 Команды вычислений

Сравнение вещественных чисел

 

 

НИУ МИЭТ, ИПОВС, КАИ

Математический сопроцессор

 

 

 

 

3 / 18

 

 

 

Числа с плавающей

запятой (IEEE 754)

 

 

 

 

 

 

 

 

 

( 1)s 2p

 

 

 

 

 

 

 

 

 

 

 

0;1m2m3m4 : : : mn+1

 

s

p +

 

m2m3m4 : : : mn+1

 

 

 

 

 

 

 

 

 

pmin 6 p 6 pmax

 

n + w n + w 1

n n 1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

m2m3m4 : : : mn+1

 

s

pmin

 

 

 

 

 

 

000 : : : 000

 

 

0;0m2m3m4 : : : mn+1

 

 

 

 

 

 

( 1)

2

 

n + w n + w 1

n n 1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

000 : : : 000

 

000 : : : 0

 

( 1)

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n + w n + w 1

n n 1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

111 : : : 111

 

000 : : : 0

 

( 1)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n + w n + w 1

n n 1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нечисло (nan)

 

x

111 : : : 111

 

 

qxx : : : x

 

 

n + w n + w 1

n n 1

0

 

 

 

 

 

 

 

 

 

 

 

 

x + (y + z) 6= (x + y) + z

 

 

 

 

 

 

 

32 = 1 + 8 + 23 бита одинарная точность, float

 

2 126 6 jxj 6 2127 (2 2 23)

64 = 1 + 11 + 52 бита двойная, double

 

2 1022 6 jxj 6 21023 (2 2 52)

Округление: к ближайшему|чётному, к ближайшему|1, к 0, к +1 (вверх), к 1 (вниз)

Структура FPU

Числа с плавающей запятой (IEEE 754)

Стек FPU

Внутренний формат FPU (10 байт)

Команды вычислений

Регистры FPU

Сравнение вещественных чисел

Флаги FPU (sw;cw), их выгрузка/загрузка

НИУ МИЭТ, ИПОВС, КАИ

Математический сопроцессор

4 / 18

Внутренний формат FPU (10 байт)

Корректные значения

s

 

p +

 

1m2m3m4 : : : mn

79

78

64

63

0

 

 

 

s

000 : : : 000

 

0m2m3m4 : : : mn

79

78

64

63

0

 

 

 

s

000 : : : 000

 

000 : : : 0

79

78

64

63

0

 

 

 

s

111 : : : 111

 

000 : : : 0

79

78

64

63

0

 

 

 

1

111 : : : 111

 

110 : : : 0

79

78

64

63

0

 

 

 

x

111 : : : 111

 

11x : : : x

79

78

64

63

0

 

 

 

 

x

111 : : : 111

 

10x : : : x

 

 

 

 

 

( 1)s 2p 0;1m2m3m4 : : : mn

pmin 6 p 6 pmax

( 1)s 2pmin

0;0m2m3m4 : : : mn

 

 

 

( 1)s 0

 

 

 

 

 

 

( 1)s 1

 

 

Недопустимые значения

 

 

 

 

неопределённость

 

 

 

 

 

 

x

000 : : : 000

 

1xx : : : x

(nan)

 

 

 

79

78

64

63

0

тихое нечисло

 

 

 

 

 

 

x

111 : : : 111

 

0yy : : : y

(qnan 3 nan)

 

79

78

64

63

0

сигнальное нечисло

 

 

 

 

 

 

x

yyy : : : yyy

 

0xx : : : x

(snan)

 

 

 

 

 

 

 

 

 

9y 6= 0

9y 6= 0;

9y 6= 1

79

78

64

63

0

79

78

64

63

 

 

 

 

 

0

 

 

80 = 1 + 15 + 64 бита двойная расширенная

 

2 16 382 6 jxj 6 216 383 (2 2 63)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Структура FPU

Числа с плавающей запятой (IEEE 754)

 

 

 

 

 

 

 

Стек FPU

Внутренний формат FPU (10 байт)

 

 

 

 

 

 

 

Команды вычислений

Регистры FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сравнение вещественных чисел

Флаги FPU (sw;cw), их выгрузка/загрузка

 

НИУ МИЭТ, ИПОВС, КАИ

Математический сопроцессор

Регистры FPU

 

 

 

st(7)

Регистры данных r0 r7

Знак Порядок

 

 

Мантисса

: :

r0

 

 

 

 

 

 

 

 

 

 

:

r1

 

 

 

 

 

(0)st

 

 

 

 

 

r3

 

 

 

 

 

 

r2

 

 

 

 

 

FPU:

r4

 

 

 

 

 

r6

 

 

 

 

 

 

r5

 

 

 

 

 

Стек

r7

 

 

 

 

 

79 78

64

63

 

 

 

Слово состояния sw

15

Управляющее слово cw

15

Указатель на последнюю команду fip

47

Указатель на последний операнд fdp

47

Код операции fop

5 / 18

Слово тегов tw

0

2

4

6

8

10

12

14

015

0

0

0

0

90

Структура FPU

Числа с плавающей запятой (IEEE 754)

Стек FPU

Внутренний формат FPU (10 байт)

Команды вычислений

Регистры FPU

Сравнение вещественных чисел

Флаги FPU (sw;cw), их выгрузка/загрузка

 

 

 

 

НИУ МИЭТ, ИПОВС, КАИ

 

Математический сопроцессор

 

 

 

 

 

 

 

6 / 18

 

 

Флаги FPU (sw;cw

), их выгрузка/загрузка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Слово состояния sw

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

C3

 

top

 

C2

C1

C0

ES

SF

P E

UE

OE

ZE

DE

IE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

14

13

 

 

11

10

 

9

8

 

7

6

5

 

4

 

3

2

 

1

0

 

 

 

top указатель вершины стека

 

 

 

 

C0 C3 флаги состояния

 

 

 

 

 

 

 

 

 

 

 

SF флаг немаскируемой ошибки стека

ES флаг незамаскированной ошибки

 

шесть флагов (IE:::P E 3 sw)/масок (IM:::P M 3 cw) исключительных ситуаций

 

 

#I

недействительная операция

 

#О переполнение порядка

 

 

 

 

 

 

 

 

 

#D денормализованный операнд

 

#U исчезновение порядка

 

 

 

 

 

 

 

 

 

#Z деление на ноль

 

 

 

 

 

 

 

#Р неточный результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управляющее слово cw

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RC

 

P C

 

 

 

 

P M

UM

OM

ZM

DM

IM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

12

11

10

 

9

 

8

 

7

6

5

 

4

 

3

2

 

1

0

 

 

 

P C поле управления точностью

RC округлением (к ближ|чёт, к 1, к +1, к 0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fnstcw dmem16

 

Выгрузка cw в память

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fldcw smem16

 

Загрузка cw из памяти

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fnstsw dest16

 

Выгрузка (разрушающая) sw в память или регистр ax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Структура FPU

 

Числа с плавающей запятой (IEEE 754)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стек FPU

 

Внутренний формат FPU (10 байт)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды вычислений

 

Регистры FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сравнение вещественных чисел

 

Флаги FPU (sw;cw), их выгрузка/загрузка

Соседние файлы в папке АВС