Представление чисел с плавающей точкой. Типы данных математического сопроцессора. Особенности представления чисел

Содержание

Слайд 2

Основные понятия FPU – Floating Point Unit, специальное устройство предназначенное для

Основные понятия

FPU – Floating Point Unit, специальное устройство предназначенное для выполнения

команд обработки вещественных данных. В современных процессорах является составной частью основного процессора.
Обеспечивает полную поддержку стандартов IEEE-754 и IEEE-854 по представлению и обработке данных с плавающей точкой.

/20

Слайд 3

Числа с плавающей точкой (знак)(мантисса)*10(знак)(порядок) пример:-9.8765432*10-9 нормализованное представление чисел – целая

Числа с плавающей точкой

(знак)(мантисса)*10(знак)(порядок)
пример:-9.8765432*10-9
нормализованное представление чисел
– целая часть мантиссы

числа состоит из одной, не равной нулю, цифры
для фиксированной разрядной сетки числа нормализованные числа имеют наибольшую точность.
нормализованное представление исключает неоднозначность – каждое число с плавающей точкой может быть представлено различными (ненормализованными) способами

/20

Слайд 4

Стандарт IEEE 754 /20

Стандарт IEEE 754

/20

Слайд 5

Представление вещественных чисел X= ± mq ± p Нормализация числа –

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

X= ± mq ± p
Нормализация числа – скрытая единица
Для

того, чтобы определить абсолютное значение числа с плавающей точкой, можно воспользоваться следующими формулами:
одинарная точность: 1.(цифры мантиссы)*2(P-127)
двойная точность: 1.(цифры мантиссы)*2(P-1023)
расширенная точность: 1.(цифры мантиссы)*2(P-16383)

/20

Слайд 6

Представление вещественных чисел X= ± mq ± p Рассмотрим число с

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

X= ± mq ± p
Рассмотрим число с одинарной точностью

со смещённым порядком :
1 01111110 11000000000000000000000
знаковый бит равен 1 (отрицательное число)
смещённый порядок равен 126
мантисса – 1.11 (в двоичной системе счисления)
Значение этого числа равно:
-1.11 * 2(126-127) = -(1+1/2+1/4) * 2(-1) =-1,75 /2= -0,875

/20

Слайд 7

Представление вещественных чисел Алгоритм представления: Перевести число из Р-ичной системы в

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

Алгоритм представления:
Перевести число из Р-ичной системы в двоичную
Представить двоичное

число в нормализованной экспоненциальной форме
Рассчитать смещённый порядок числа
Разместить знак, порядок и мантиссу в соответствующие разряды

/20

Слайд 8

Типы данных сопроцессора /20

Типы данных сопроцессора

/20

Слайд 9

Особенности представления чисел Наименьшее положительное: Наибольшее отрицательное: Наибольшее положительное: Наименьшее отрицательное:

Особенности представления чисел

Наименьшее положительное:
Наибольшее отрицательное:
Наибольшее положительное:
Наименьшее отрицательное:

0

0


0

1

0

0


0

0

Смещённый порядок

Модуль мантиссы

1

0


0

1

0

0


0

0

Смещённый

порядок

Модуль мантиссы

0

1


1

0

1

1


1

1

Смещённый порядок

Модуль мантиссы

1

1


1

0

1

1


1

1

Смещённый порядок

Модуль мантиссы

/20

Слайд 10

Особенности представления чисел Неоднозначность нуля: Бесконечность INF: Не число NAN: Неопределенность:

Особенности представления чисел

Неоднозначность нуля:
Бесконечность INF:
Не число NAN:
Неопределенность:

±

0


0

0

0

0


0

0

Смещённый порядок

Модуль мантиссы

±

1


1

1

0

0


0

1

Смещённый

порядок

Модуль мантиссы

1

1


1

1

х

х


х

1

Смещённый порядок

Модуль мантиссы

1

1


1

1

1

0


0

1

Смещённый порядок

Модуль мантиссы

/20

Слайд 11

Особые случаи Неточный результат В результате выполнения некоторых операций может возникнуть

Особые случаи

Неточный результат
В результате выполнения некоторых операций может возникнуть такая ситуация,

когда невозможно точно представить результат.
Обычно неточный результат является результатом округления и может не рассматриваться как ошибка.
Пример:
результатом деления числа 1.0 на 3.0 является бесконечная периодическая двоичная дробь 0.010101...
Такое число не может быть представлено точно ни в одном формате вещественных чисел.

/20

Слайд 12

Особые случаи Недействительная операция Этот особый случай возникает при попытке выполнения

Особые случаи

Недействительная операция
Этот особый случай возникает при попытке выполнения таких запрещенных

команд, как
деление нуля на нуль;
извлечения корня из отрицательного числа,
обращение к несуществующему регистру сопроцессора;
при попытке использования в качестве операндов команд нечисел, неопределенностей, бесконечности (для трансцендентных функций) или денормализованных чисел .

/20

Слайд 13

Особые случаи Переполнение Если результат выполнения операции слишком велик и не

Особые случаи

Переполнение
Если результат выполнения операции слишком велик и не может быть

представлен в формате приемника результата.
Пример:
при сложении максимального числа расширенной точности самим с собой;
при преобразовании этого числа в формат с двойной или одинарной точностью.

/20

Слайд 14

Особые случаи Антипереполнение Если результат слишком мал для его представления в

Особые случаи

Антипереполнение
Если результат слишком мал для его представления в формате приемника

результата операции, но все же отличен от нуля.
Пример:
при преобразовании наименьшего положительного числа с расширенной точностью в формат числа с двойной или одинарной точностью.

/20

Слайд 15

Особые случаи Денормализованный операнд при выполнении операции может оказаться, что результат

Особые случаи

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

по абсолютной величине для представления его в нормализованной форме. Можно было бы считать такой результат нулевым, однако это привело бы к снижению точности вычислений или даже к грубым ошибкам.
Пример:
вычисляется следующее выражение: (y-x)+x;
Если разность (y-x)вызывает антипереполнение и в качестве результата берется нулевое значение, то после вычисления всего выражения получится x.
Если же пойти на расширение диапазона представления чисел за счет снижения точности и сформировать результат вычисления разности y-x)как денормализованное число, выражение будет вычислено правильно и в результате получится y.
Однако при попытке деления на ненормализованное число или извлечения из него квадратного корня фиксируется особый случай недействительной операции.

/20

Слайд 16

Денормализованные числа Формат представления: Для получения их значения не требуется использование

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

Формат представления:
Для получения их значения не требуется использование неявной единицы

– мантисса умножается на наименьшую для данного формата экспоненту.
Позволяют представлять очень маленькие числа при вычислениях с расширенной точностью.
Денормализованные числа находятся ближе к 0, чем наименьшее представимое нормализованное число.

±

0


0

0

x

x


x

0

Смещённый порядок

Модуль мантиссы

/20

Слайд 17

Программная модель сопроцессора 8 регистров данных 80 бит 3 специальных регистра

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

8 регистров данных
80 бит
3 специальных регистра
16 бит


статус
управление
теги
2 регистра указателя
48 бит
(команда, операнд)

/20

Слайд 18

Состояние FPU I (b0) – недопустимая операция D (b1) – денормализованный

Состояние FPU

I (b0) – недопустимая операция
D (b1) – денормализованный операнд
Z (b2)

– деление на ноль
O (b3) – переполнение (результат - ∞)
U (b4) – результат слишком мал для нормализации
P (b5) – потеря точности
E (b6) – любой из предыдущих
S (b7) – ошибка стека
B (b8) – занят
c1 (b9) – переполнение стека
c3,c2,c0 (b14,b10,b8) - сравнение, проверка

/20

Слайд 19

Команды сопроцессора Передачи данных Сравнения данных Арифметические Трансцендентные Управления

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

Передачи данных

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

Арифметические

Трансцендентные

Управления

Слайд 20

Расширенная стековая машина Операции со сдвигом стека Два результата одноместной операции

Расширенная стековая машина
Операции со сдвигом стека
Два результата одноместной операции
Двуместные без сдвига

стека
Двуместные, где один в памяти
Двуместные, где один «в глубине» стека
Двуместные с обратным порядком операндов
Данные - 80 бит (помимо 64 и 32 бит)

FPU. Особенности

Слайд 21

Команды сопроцессора Без параметров: ОП ; ОП ST(1),ST(0) + pop С

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

Без параметров: ОП ; ОП ST(1),ST(0) + pop
С одним параметром: ОП источник ; ОП

ST(0),источник
С двумя параметрами: ОП приёмник , источник
; приёмник = приёмник ОП источник

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

Слайд 22

Сравнение данных Вещественных fcom fcomp fcompp Целых ficom(p) Анализ fxam С

Сравнение данных

Вещественных
fcom fcomp fcompp
Целых ficom(p)
Анализ fxam
С нулем ftst

fcom(p)(pp)

ST(I)

M32,64

ficom

M16,32

fxam

ftst

Сравнение данных

Слайд 23

FXAM Сравнение данных

FXAM

Сравнение данных

Слайд 24

Особенности проверки чисел fstsw ax sahf j*** Регистр флагов

Особенности проверки чисел

fstsw ax
sahf
j***

Регистр флагов

Слайд 25

Загрузка и выгрузка Передача данных Загрузка fld fild Выгрузка fst, fstp

Загрузка и выгрузка

Передача данных

Загрузка
fld
fild
Выгрузка
fst, fstp
fist, fistp
Обмен
fxch
(если не указан источник то

считается, что он соответствует ST(1))

Все команды имеют один операнд: либо источник либо приемник

Загрузка констант
fldz
fld1
fldpi
fldl2t
fldl2e
fldlg2
fldln2

Слайд 26

Команды сложения и умножения Арифметические Вещественные Сложение fadd(p) Вычитание fsub(r) fsub(r)p

Команды сложения и умножения

Арифметические

Вещественные
Сложение fadd(p)
Вычитание fsub(r) fsub(r)p
Умножение fmul(p)
Деление fdiv(r) fdiv(r)p

Целочисленные
Сложение fiadd
Вычитание fisub(r)
Умножение fimul
Деление fidiv(r)

Слайд 27

Вспомогательные арифметические Арифметические Sqrt(st) ? st Abs(st) ? st +/- st

Вспомогательные арифметические

Арифметические

Sqrt(st) ? st
Abs(st) ? st
+/- st ? st
Мантисса ? st,

порядок ?st(1)
st mod st(1) ?st
st*2st(1) ? st
[st] ? st

fsqrt
fabs
fchs
fxtract
fprem
fscale
frndint

Слайд 28

Трансцендентные Трансцендентные sin(st) ?st sin(st) ? st, cos(st) ?st(1) cos(st) tg(st)

Трансцендентные

Трансцендентные

sin(st) ?st sin(st) ? st, cos(st) ?st(1) cos(st) tg(st) ? st, fld1 arctg(st/st(1)) ? st
2st-1

? st; -1

Тригонометрические fsin fsincos fcos fptan fpatan
Степенные и логарифмические f2xm1 fyl2xp1 fyl2x

Слайд 29

Программная модель сопроцессора 8 регистров данных 80 бит 3 специальных регистра

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

8 регистров данных
80 бит
3 специальных регистра
16 бит


статус
управление
теги
2 регистра указателя
48 бит
(команда, операнд)

/20

Слайд 30

/20 Регистр управления

/20

Регистр управления

Слайд 31

Управление Управления finit - Сброс fdecstp/fincstp - Сдвиг стека ffree -

Управление

Управления

finit - Сброс
fdecstp/fincstp - Сдвиг стека
ffree - Освобождение регистра
fclex - Сбросить

статус
fstsw/fstcw - Считать статус/управление
fldcw - Записать управление
fnop - Пустая операция
fstenv - Сохранить состояние (кроме данных)
fldenv - Восстановить состояние (кроме данных)
fsave - Сохранить состояние полностью и сбросить
frstor - Восстановить состояние полностью
fwait/wait - Задержать ЦП