- •Упакованные целые числа
- •Десятичные числа
- •Числа в форме с плавающей запятой
- •Стандарт ieee 754
- •Размещение числовых данных в памяти
- •Символьная информация
- •Видеоинформация
- •Аудиоинформация
- •Типы команд
- •Операции с целыми числами
- •Форматы команд
- •Длина команды
- •Разрядность адресной части
- •Количество адресов в команде
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Относительная адресация
- •Базовая регистровая адресация
- •Страничная адресация
- •Способы адресации в командах управления потоком команд
- •Система операций
- •Показатели эффективности системы операций
- •Выбор системы операций
Стандарт ieee 754
Рекомендуемый для всех ВМ формат представления чисел с плавающей запятой определен стандартом IEEE 754. Этот стандарт был разработан с целью облегчить перенос программ с одного процессора на другие и нашел широкое применение практически во всех процессорах и арифметических сопроцессорах.
Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) форматы (рис.24) с 8- и 11-разрядным порядком соответственно. Основанием системы счисления является 2. В дополнение, стандарт предусматривает два расширенных формата, одинарный и двойной, фактический вид которых зависит от конкретной реализации. Расширенные форматы предусматривают дополнительные биты для порядка (увеличенный диапазон) и мантиссы (повышенная точность). Таблица 8 содержит описание основных характеристик всех четырех форматов.
Рис. 24 Основные форматы IEEE 754: а – одинарный; б - двойной
Не все кодовые комбинации в форматах IEEE интерпретируются обычным путем — некоторые комбинации используются для представления специальных значений. Предельные значения порядка, содержащие все нули (0) и все единицы (255 — в одинарном формате и 2047 — в двойном формате), определяют специальные значения.
Описываются следующие классы чисел.
-
Порядки в диапазоне от 1 до 254 для одинарного формата и от 1 до 2036 — для двойного формата, используются для представления ненулевых нормализованных чисел. Порядки смещены так, что их диапазон составляет от -126 до +127 для одинарного формата и от -1022 до +1023 — для двойного формата. Нормализованное число требует, чтобы слева от двоичной запятой был единичный бит. Этот бит подразумевается, благодаря чему обеспечивается эффективная ширина мантиссы, равная 24 битам для одинарного и 53 битам — для двойного форматов.
-
Нулевой порядок совместно с нулевой мантиссой представляют положительный или отрицательный 0, в зависимости от состояния бита знака мантиссы.
-
Порядок, содержащий единицы во всех разрядах, плюс нулевая мантисса соответствуют бесконечности (положительной или отрицательной, в зависимости от состояния бита знака), что позволяет пользователю самому решить, считать ли это ошибкой или продолжать вычисления со значением, равным бесконечности.
-
Нулевой порядок в сочетании с ненулевой мантиссой обозначают ненормализованное число. В этом случае бит слева от двоичной точки равен 0 и фактический порядок равен -126 или -1022. Число является положительным или отрицательным в зависимости от значения знакового бита.
-
Кодовая комбинация, в которой порядок содержит все единицы, а мантисса не равна 0, используется как признак «не числа» (NAN — Not a Number) и служит для предупреждения о различных исключительных ситуациях, например о делении 0/0.
Табл. 8 Параметры форматов стандарта IEEE 754
Параметр |
Формат |
|||
одинарный |
одинарный раширенный |
двойной |
двойной расширенный |
|
Разрядность слова,бит |
32 |
≥43 |
64 |
≥79 |
Поле порядка, бит |
8 |
≥11 |
11 |
≥15 |
Смещение порядка |
127 |
Не оговорено |
1023 |
Не оговорено |
Поле мантиссы, бит |
23 |
≥31 |
52 |
≥63 |
Максимальное значение порядка |
127 |
≥1023 |
1023 |
≥16383 |
Минимальное значение порядка |
-126 |
≤-1022 |
-1022 |
≤-16382 |
Диапазон чисел |
10-38, 1038 |
Не оговорен |
10-308, 10308 |
Не оговорен |
Упакованные числа с плавающей запятой
В рамках уже упоминавшейся технологии SSЕ4 имеются команды, служащие для увеличения производительности систем при обработке мультимедийной информации, описываемой числами с ПЗ. Каждая такая команда работает с четырьмя операндами с плавающей запятой одинарной точности или двумя операндами двойной точности. Операнды упаковываются в 128-разрядные группы, как это показано на рис. 25.
Рис. 25 Формат упакованных чисел с плавающей запятой в технологии SSЕ4
Разрядность основных форматов числовых данных
Данные, представляющие в ВМ числовую информацию, могут иметь фиксированную или переменную длину. Операционные устройства вычислительных машин (целочисленные арифметико-логические устройства, блоки обработки чисел с плавающей запятой, устройства десятичной арифметики и т. п.), как правило, рассчитаны на обработку кодов фиксированной длины. Общепринятые величины разрядности кодов чисел: бит, полубайт, байт, слово, двойное слово, счетверенное слово, двойное счетверенное слово.
Наименьшей единицей данных в ВМ служит бит (BIT, Binary digiT — двоичная цифра). В большинстве случаев эта единица информации слишком мала. Однобитовые операционные устройства использовались в ВМ с последовательной обработкой информации, а в современных машинах с параллельной обработкой разрядов они практически не применяются. Побитовую работу с данными скорее можно встретить в многопроцессорных вычислительных системах, построенных из одноразрядных процессоров.
Следующая по величине единица состоит из четырех битов и называется полубайтом или тетрадой, или реже «ниблом» (nibble). Она также редко имеет самостоятельное значение и заслуживает упоминания как единица представления отдельных десятичных цифр при их двоично-десятичной записи.
Реально наименьшей обрабатываемой единицей считается байт (BYTE, BinarY TErm — двоичный элемент), состоящий из восьми битов. На практике эта единица информации также оказывается недостаточной, и значительно чаще применяются числа, представленные двумя (слово — 16 битов), четырьмя (двойное слово — 32 бита), восемью (счетверенное слово — 64 бита) или шестнадцатью (двойное счетверенное слово — 128 битов) байтами.
Блоки операций с плавающей запятой обычно согласованы со стандартом IEEE 754 и рассчитаны на обработку чисел в формате двойной длины (64 бита). В большинстве ВМ реальная разрядность таких блоков даже больше (80 битов). Таким образом, наилучшим вариантом при проведении вычислений с плавающей запятой можно считать формат двойного слова. При выборе формата меньшей длины (32 разряда) вычисления все равно ведутся с большей точностью, после чего результат округляется. Таким образом, использование короткого формата чисел с плавающей запятой, как и в случае целых чисел с фиксированной запятой, помимо экономии памятй никаких иных преимуществ также не дает.
В приложениях, оперирующих десятичными числами, где количество цифр в числе может варьироваться в широком диапазоне, что характерно для задач из области экономики, более удобными оказываются форматы переменной длины. В этом случае числа не переводятся в двоичную систему, а записываются в виде последовательности двоично-кодированных десятичных цифр. Длина подобной цепочки может быть произвольной, а для указания ее границы обычно используют символ-ограничитель, код которого не совпадает с кодами цифр. Длина цифровой последовательности может быть задана явно в виде количества цифр числа и храниться в первом байте записи числа, однако этот прием более характерен для указания длины строки символов.