- •5. Модель программирования с плавающей точкой.
- •5.1. Форматы и типы данных
- •5.1.1. Типы действительных чисел
- •5.1.2. Формат регистра с плавающей точкой
- •5.1.3. Представление значений в регистрах с плавающей точкой
- •5.2. Регистр состояния с плавающей точкой
- •5.3. Инструкции с плавающей точкой
- •5.3.1. Инструкции доступа к памяти
- •5.3.2. Инструкции обмена между регистрами с плавающей точкой и основными регистрами
- •5.3.3. Арифметические инструкции
- •5.3.4. Неарифметические инструкции
- •5.3.5. Инструкции поля состояния для регистра состояния с плавающей точкой (fpsr)
- •5.3.6. Инструкции целочисленного умножения и сложения
- •5.4. Дополнительные обсуждения в связи с ieee
- •5.4.1. Прерывания с плавающей точкой
- •5.4.1.1. Ошибка: Недоступный регистр с плавающей точкой
- •5.4.1.2. Ошибка: Исключение с плавающей точкой
- •5.4.1.3. Ловушка «Исключение с плавающей точкой»
- •5.4.2. Определение Переполнения
- •5.4.3. Определение Крошечности, Неточности и Антипереполнения.
- •5.4.4. Целочисленные неверные операции
- •5.4.5. Определение целочисленных операций
- •5.4.6. Определение и распространение значений.
- •5.4.7. Операции, предписанные стандартом ieee, отложенные программно
- •5.4.8. Дополнения сверх стандарта ieee
5. Модель программирования с плавающей точкой.
Архитектура с плавающей точкой полностью соответствует стандарту ANSI/IEEEдля двоичной арифметики с плавающей точкой (стандарт 754-1985). Имеется полнаяIEEEподдержка для вещественных чисел с одинарной, двойной точностью и двойного расширенного формата. Поддерживаются дваIEEEметода управления округлением. Первый метод преобразует результат в двойной расширенный экспонентный диапазон. Второй метод преобразовывает результат к заданной точности. Также, включены некоторыеIEEEрасширения, такие как, операции умножения и сложения, минимума и максимума, а также формат регистра с диапазоном большим, чем минимальный двойной расширенный формат.
5.1. Форматы и типы данных
Прямо поддерживается шесть типов данных: одинарный, двойной, двойной расширенный для вещественных чисел (типы вещественных чисел IEEE); 64-битное целое со знаком, 64-битное целое без знака и 82-битный формат регистра с плавающей точкой. Также поддерживается «параллельный»FPформат, где пара чисел с одинарной точностью занимает один регистр с плавающей точкой. Седьмой тип данных – числа в стилеIEEEучетверенной точности поддерживается программно. Будущие архитектурные расширения могут включать дополнительную поддержку вещественных чисел четверной точности.
5.1.1. Типы действительных чисел
В табл. 5.1 собраны параметры типов вещественных чисел поддерживаемых IEEE.
Табл.5.1. Свойства вещественных чисел IEEE-типов
|
Одинарный |
Двойной |
Двойной расширенный |
Четверной |
Параметры вещественныхтипов IEEE |
|
|
| |
Знак |
+или- |
+или- |
+или- |
+или- |
Максимальный порядок Emax |
+127 |
+1023 |
+16383 |
+16383 |
Минимальный порядок Emin |
-126 |
-1022 |
-16382 |
-16382 |
Смещение порядка |
+127 |
+1023 |
+16383 |
+16383 |
Точность (бит) |
24 |
53 |
64 |
113 |
IEEE форматы памяти |
|
|
|
|
Общая ширина в памяти (бит) |
32 |
64 |
80 |
128 |
Ширина поля знака (бит) |
1 |
1 |
1 |
1 |
Ширина поля порядка (бит) |
8 |
11 |
15 |
15 |
Ширина поля мантиссы (бит) |
23 |
52 |
64 |
112 |
5.1.2. Формат регистра с плавающей точкой
Данные, содержащиеся в регистрах с плавающей точкой, могут быть либо целого, либо вещественных типа. Формат данных в регистрах с плавающей точкой приспособлен для размещения обоих этих типов без потерь информации.
Вещественные числа располагаются в 82-битных регистрах с плавающей точкой в формате из трех двоичных полей (см. рис. 5.1). Это следующие три поля:
64-битное поле мантиссы,b63.b62b61…b1b0, содержит значащие цифры числа. Это поле состоит из обязательного бита целой части (бит 63) и 63 битов дробной части (биты 62:0).
17-битное поле порядка, указывает расположение двоичной точки в пределах, либо за пределами значащих цифр (т.е. оно определяет размер числа). Порядок в поле смещен на 65535 (0xFFFF). Поле порядка, содержащее все 1, используется для кодирования специальныхIEEEзначений – бесконечностей со знаком и не чисел типаNaN. Поле порядка, содержащее все 0 и поле мантиссы, содержащее все 0, используется для кодирования специальныхIEEEзначений нуля со знаком. Поле порядка, содержащее все 0, и поле мантиссы не содержащее все 0, кодирует денормализованные двойные расширенные вещественные числа и псевдо-денормализованные двойные расширенные вещественные числа.
1-битное поле знака показывает, является ли число положительным (0) или отрицательным (1).
81 |
80 |
64 |
63 |
0 |
знак |
порядок |
мантисса (с явным целым битом) | ||
1 |
17 |
64 |
Рис.5.1. Формат регистра с плавающей точкой.
Точное значение числа с плавающей точкой, закодированного при не нулевом поле порядка, может быть рассчитано по следующей формуле:
(-1)(знак)• 2(порядок-65535)• (мантисса{63}.мантисса{62:0})
Точное значение числа с плавающей точкой, закодированного при не нулевом поле порядка, может быть рассчитано по следующей формуле:
(-1)(знак)• 2(-16382)• (мантисса{63}.мантисса{62:0})
Целые числа (со знаком или без знака) и параллельные FPчисла располагаются в 64-битах поля мантиссы. В их канонической форме поле порядка устанавливается в 0x1003E(смещение 63), а поле знака устанавливается в 0.