ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5251
Скачиваний: 8
Стандарт
754
Рекомендуемый для всех ВМ формат представления чисел с плавающей запятой
определен стандартом IEEE 754. Этот стандарт был разработан с целью облегчить
перенос программ с одного процессора на другие и нашел широкое применение
практически во всех процессорах и арифметических сопроцессорах.
Рис. 2.24.
Основные форматы
754:
а
— одинарный;
б —
двойной
Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) фор-
маты (рис. 2.24) с 8- и
порядком соответственно. Основанием сис-
темы счисления является 2. В дополнение, стандарт предусматривает два расши-
ренных формата, одинарный и двойной, фактический вид которых зависит от
конкретной реализации. Расширенные форматы предусматривают дополнитель-
74 Глава 2. Архитектура системы команд
Таблица 2.5
(продолжение)
Типы и форматы операндов
75
ные биты для порядка (увеличенный диапазон) и
(повышенная
ность). Таблица 2.6 содержит описание основных характеристик всех четырех фор-
матов.
Не все кодовые комбинации в форматах IEEE интерпретируются обычным
путем — некоторые комбинации используются для представления специальных
значений. Предельные значения порядка, содержащие все нули (0) и все единицы
(255 — в одинарном формате и 2047 — в двойном формате), определяют специаль-
ные значения.
Таблица 2.6.
Параметры форматов стандарта
754
Параметр
Ширина слова, бит
Ширина порядка, бит
Смещение порядка
Максимальный порядок
Минимальный порядок
Диапазон чисел
Длина мантиссы, бит
Количество порядков
Количество мантисс
Количество значений
одинарный
32
8
127
127
-126
23
254
223
1,98
одинарный
расширенный
> 4 3
>11
Не определено
> 1023
<-1022
Не определен
>31
Не определено
Не определено
Не определено
64
11
1023
1023
-1022
10
3 0 8
52
2046
252
1,99 х
расширенный
>79
> 1 5
Не определено
> 16 383
<-16382
Не определен
>63
Не определено
Не определено
Не определено
Представлены следующие классы чисел:
Порядки в диапазоне от 1 до 254 для одинарного формата и от 1 до 2036 — для
двойного формата, используются для представления ненулевых нормализован-
ных чисел. Порядки смещены так, что их диапазон составляет от -126 до +127
для одинарного формата и от -1022 до +1023 — для двойного формата. Норма-
лизованное число требует, чтобы слева от двоичной запятой был единичный
бит. Этот бит подразумевается, благодаря чему обеспечивается эффективная
ширина мантиссы, равная 24 битам для одинарного и 53 битам — для двойного
форматов.
Нулевой порядок совместно с нулевой мантиссой представляют положитель-
ный или отрицательный 0, в зависимости от состояния бита знака мантиссы.
Порядок, содержащий единицы во всех разрядах, совокупно с нулевой мантис-
сой представляют положительную или отрицательную бесконечность, в зави-
симости от состояния бита знака, что позволяет пользователю самому решить,
считать ли это ошибкой или продолжать вычисления со значением, равным
бесконечности.
76 Глава 2. Архитектура системы команд
• Нулевой порядок в сочетании с ненулевой мантиссой представляют ненорма-
лизованное число. В этом случае бит слева от двоичной точки равен 0 и факти-
ческий порядок равен -126 или -1022. Число является положительным или
отрицательным в зависимости от значения знакового бита.
• Кодовая комбинация, в которой порядок содержит все единицы, а мантисса не
равна 0, используется как признак «не числа» (NAN — Not a Number) и служит
для предупреждения о различных исключительных ситуациях.
Упакованные числа с плавающей запятой
В последних версиях АСК, предусматривающих особые команды
обработки
мультимедийной информации, помимо упакованных целых чисел используются
и упакованные числа с плавающей запятой. Так, в уже упоминавшейся техноло-
гии 3DNow! фирмы AMD имеются команды, служащие для
произво-
дительности систем при обработке трехмерных приложений, описываемых числа-
ми с ПЗ. Каждая такая команда работает с двумя операндами с плавающей запятой
точности. Операнды упаковываются в 64-разрядные группы, как это
показано на рис. 2.25.
Рис. 2.25. Формат упакованных чисел с плавающей запятой в технологиях 3DNow!, SSE, SSE2
В микропроцессорах фирмы
начиная с Pentium III, для аналогичных це-
лей поддержаны команды, реализующие технологию SSE, также ориентирован-
ную на параллельную обработку упакованных чисел с ПЗ. Здесь числа объеди-
няются в группы длиной 128 бит, и это позволяет упаковать в группу четыре
32-разрядных числа с ПЗ (числа с одинарной точностью). Позже, в технологии
SSE2, которую можно считать дальнейшим развитием SSE, появился формат, где
в группу из 128 бит упаковываются два 64-разрядных числа с ПЗ, то есть числа,
представленные с двойной точностью.
Разрядность основных форматов числовых данных
Данные, представляющие в ВМ числовую информацию, могут иметь
фиксирован-
ную
или
переменную
длину. Операционные устройства вычислительных машин
(целочисленные арифметико-логические устройства, блоки обработки чисел
Типы и форматы операндов 77
с плавающей запятой, устройства десятичной арифметики и т. п.), как правило, рас-
считаны на обработку кодов фиксированной длины. Общепринятые величины раз-
рядности кодов чисел показаны на рис. 2.26.
Рис. 2.26.
Стандартная длина фиксированных форматов представления чисел
Наименьшей единицей данных в ВМ служит бит (BIT, Binary digiT — двоич-
ная цифра). В большинстве случаев эта единица информации слишком мала. Од-
нобитовые операционные устройства использовались в ВМ с последовательной
обработкой информации, а в современных машинах с параллельной обработкой
разрядов они практически не применяются. Побитовую работу с данными скорее
можно встретить в многопроцессорных вычислительных системах, построенных
из одноразрядных процессоров.
Следующая по величине единица
из четырех битов и называется полу-
байтом или тетрадой, или реже «ниблом» (nibble — огрызок). Она также редко имеет
самостоятельное значение и заслуживает упоминания как единица представления
отдельных десятичных цифр при их двоично-десятичной записи.
Реально наименьшей обрабатываемой единицей считается байт, состоящий из
восьми битов. На практике эта единица информации также оказывается недоста-
точной, и значительно чаще применяются числа, представленные двумя (полусло-
во), четырьмя (слово), восемью (двойное слово) или шестнадцатью (счетверенное
слово) байтами
1
.
Разрядность целочисленного АЛУ обычно выбирается равной ширине адреса
(для большинства современных ВМ это 32 разряда). Следовательно, наиболее
выгодными в плане быстродействия являются такие целые числа, длина которых
Согласно терминологии Intel. В другом варианте (DEC) естественный размер слова — 2 байта, двой-
ного или длинного слова (longword) — 4 байта и упоминавшегося выше квадрослова (quadword) —
8 байт.
78 Глава 2. Архитектура системы команд
совпадает с разрядностью адреса. Использование более
чисел позволяет
сэкономить на памяти, но выигрыша в производительности не дает.
Блоки операций с плавающей запятой обычно согласованы со стандартом
IEEE 754 и рассчитаны на обработку чисел в формате двойной длины (64 бита).
В большинстве ВМ реальная разрядность таких блоков даже больше (80 бит). Та-
ким образом, наилучшим вариантом при проведении вычислений с плавающей
запятой можно считать формат двойного слова. При выборе формата меньшей
длины (32 разряда) вычисления все равно ведутся с большей точностью, после чего
результат округляется. Таким образом, использование короткого формата чисел
с плавающей запятой, как и в случае целых чисел с фиксированной запятой, поми-
мо экономии памяти никаких иных преимуществ также не дает.
В работе [120] приводятся усредненные данные о частоте использования ос-
новных форматов чисел, полученные в ходе выполнения пакета тестовых программ
SPEC92 на вычислительной машине DEC VAX (рис. 2.27).
Рис. 2.27. Частота обращения к числовым данным в зависимости от их разрядности
В приложениях, оперирующих десятичными числами, где количество цифр
в числе может варьироваться в широком диапазоне, что характерно для
из
области экономики, более удобными оказываются форматы переменной
В этом случае числа не переводятся в двоичную систему, а записываются в виде
последовательности двоично-кодированных десятичных цифр. Длина подобной
цепочки может быть произвольной, а для указания ее границы обычно использу-
ют символ-ограничитель, код которого не совпадает с кодами цифр. Длина цифро-
вой последовательности может быть задана явно в виде количества цифр числа
и храниться в первом байте записи числа, однако этот прием более характерен
указания длины строки символов.
Размещение числовых данных памяти
В современных ВМ разрядность одной ячейки памяти, как правило, равна одному |
байту (8 бит). В то же время реальная длина кодов чисел составляет 2, 4, 8
16 байт. При хранении таких чисел в памяти
байты числа