Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура средств ВТ / Литература / Цилькер / Организация ЭВМ и систем / Глава 2.Архитектура системы командdoc.doc
Скачиваний:
182
Добавлен:
01.06.2015
Размер:
17.76 Mб
Скачать

Упакованные целые числа

В АСК современных микропроцессоров имеются команды, оперирующие целыми числами, представленными в упакованном виде. Связано это с обработкой муль-

67

Рис. 2.13. Целочисленные форматы микропроцессоров фирмы Intel

тимедийной информации. Формат предполагает упаковку в пределах достаточно длинного слова (обычно 64-разрядного) нескольких небольших целых чисел, а со­ответствующие команды обрабатывают все эти числа параллельно. Если каждое из чисел состоит из четырех двоичных разрядов, то в 64-разрядное слово можно поместить до 16 таких чисел. Неиспользованные разряды заполняются нулями. В микропроцессорах фирмы Intel, начиная с Pentium MMX, присутствуют спе­циальные команды для обработки мультимедийной информации (ММХ-коман-ды), оперирующие целыми числами, упакованными в квадрослова (64-разрядные слова). Предусмотрены три формата (рис. 2.14): упакованные байты (восемь 8-раз­рядных чисел); упакованные слова (четыре 16-разрядных числа) и упакованные двойные слова (два 32-разрядных числа).

Рис. 2.14. Форматы упакованных целых чисел в технологиях ММХ и SDNow!

68

Байты в формате упакованных байтов нумеруются от 0 до 7, причем байт 0 рас­полагается в младших разрядах квадрослова. Аналогичная система нумерации и размещения упакованных чисел применяется для упакованных слов (номе­ра 0-3) и упакованных двойных слов (номера 0-1).

Идентичные форматы упакованных данных применяются также в другой тех­нологии обработки мультимедийной информации, предложенной фирмой AMD. Эта технология носит название SDNow!, а реализована в микропроцессорах дан­ной фирмы.

Десятичные числа

В ряде задач, главным образом, учетно-статистического характера, приходится иметь дело с хранением, обработкой и пересылкой десятичной информации. Осо­бенность таких задач состоит в том, что обрабатываемые числа могут состоять из различного и весьма большого количества десятичных цифр. Традиционные ме­тоды обработки с переводом исходных данных в двоичную систему счисления и об­ратным преобразованием результата зачастую сопряжены с существенными на­кладными расходами. По этой причине в ВМ применяются иные специальные формы представления десятичных данных. В их основу положен принцип коди­рования каждой десятичной цифры эквивалентным двоичным числом из четырех битов (тетрадой), то есть так называемым двоично-десятичным кодом (BCD — Binary Coded Decimal).

Байт

Байт

Байт

Байт

Зона

Цифра

Зона

Цифра

...

Зона

Цифра

Зона

Цифра

а

Байт

Байт

Байт

Байт

Цифра

Цифра

Цифра

Цифра

...

Цифра

Цифра

Цифра

Знак

б

Рис. 2.15, Форматы десятичных чисел: а —зонный; б —уплотненный

Используются два формата представления десятичных чисел (все числа рас­сматриваются как целые): зонный (распакованный) и уплотненный (упакованный). В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, то есть заменяется двоично-десятичным кодом. Из оставшихся задействованных шести четырехразрядных двоичных комбинаций (24 = 16) две служат для кодиро­вания знаков «+>> и «-». Например, в ВМ семейства IBM 360/370/390 для знака «плюс» выбран код 11002 = C1G, а для знака «минус» — код 1101, = D1C.

Зонный формат (рис. 2.15, а) применяется в операциях ввода/вывода. В нем под каждую цифру выделяется один байт, где младшие четыре разряда отводятся под код цифры, а в старшую тетраду (поле зоны) записывается специальный код «зона», не совпадающий с кодами цифр и знаков. В IBM 360/370/390 это код 11112 = F16. Исключение составляет байт, содержащий младшую цифру десятич­ного числа, где в поле зоны хранится знак числа. На рис. 2.16 показана запись чис­ла -7396 в зонном формате. В некоторых ВМ принят вариант зонного формата, где поле зоны заполняется нулями

69

Байт ; Байт

Байт

Байт

Зона

7

Зона

3

Зона

9

Минус

6

1111

0111

1111

001 1

1111

1001

1101

0110

Рис. 2.16. Представление числа -7396 в зонном формате

При выполнении операций сложения и вычитания над десятичными числами обычно используется упакованный формат и в нем же получается результат (умно­жение и деление возможно только в зонном формате). В упакованном формате (рис. 2.15, б) каждый байт содержит коды двух десятичных цифр. Правая тетрада последнего байта предназначается для записи знака числа. Десятичное число долж­но занимать целое количество байтов. Если это условие не выполняется, то четыре старших двоичных разряда левого байта заполняется нулями. Так, представление числа -7396 в упакованном формате имеет вид, приведенный на рис. 2.17.

Байт Байт Байт

0

7

3

9

6

Минус

0000

0111

0011

1 001

0110

1101

Рис. 2.17. Представление числа -7396 в упакованном формате

Размещение знака в младшем байте, как в зонном, так и в упакованном пред­ставлениях, позволяет задавать десятичные числа произвольной длины и переда­вать их в виде цепочки байтов. В этом случае знак указывает, что байт, в котором он содержится, является последним байтом данного числа, а следующий байт по­следовательности — это старший байт очередного числа.

Числа в форме с плавающей запятой

От недостатков ФЗ в значительной степени свободна форма представления чисел с плавающей запятой (ПЗ), известная также под названиями нормальной или по­лулогарифмической формы. В данном варианте каждое число разбивается на две группы цифр. Первая группа цифр называется мантиссой, вторая — порядком. Число представляется в виде произведения X = +mq±!>, где т — мантисса числа X, р — порядок числа, q — основание системы счисления.

Для представления числа в форме с ПЗ требуется задать знаки мантиссы и по­рядка, их модули в д-ичном коде, а также основание системы счисления (рис. 2.18). Нормальная форма неоднозначна, так как взаимное изменение тир приводит к «плаванию» запятой, чем и обусловлено название этой формы.

Модуль порядка Модуль мантиссы

Знак т

Знак р

Рг-1

Pi

Ро

т-1

т_2

т.п

Рис. 2.18. Форма представления чисел с плавающей запятой

Диапазон и точность представления чисел с ПТ зависят от числа разрядов, от­водимых под порядок и мантиссу. На рис. 2.19 показаны диапазоны разрядностей порядка и мантиссы, характерные для известных ВМ.

70

Рис. 2.19. Типовые разрядности полей порядка и мантиссы

Помимо разрядности порядка и мантиссы диапазон представления чисел зави­сит и от основания используемой системы счисления, которое может быть отлич­ным от 2. Например, в универсальных ВМ (мэйнфреймах) фирмы IBM использу­ется база 16. Это позволяет при одинаковом количестве битов, отведенных под порядок, представлять числа в большем диапазоне. Так, если поле порядка равно 7 битам, максимальное значение qp, на которое умножается мантисса, равно 2128 (при q = 2) или 16128 (при q= 16), а диапазоны представления чисел соответствен­но составят 10 -19 < \Х\ < 10+19и 10 -76 < \Х\ < 10+76. Известны также случаи использо­вания базы 8, например, в ВМ В-5500 фирмы Burroughs.

В большинстве вычислительных машин для упрощения операций над поряд­ками последние приводят к целым положительным числам, применяя так называ­емый смещенный порядок. Для этого к истинному порядку добавляется целое по­ложительное число — смещение (рис. 2.20). Например, в системе со смещением 128 порядок -3 представляется как 125 (-3 + 128). Обычно смещение выбирается равным половине представимого диапазона порядков. Отметим, что смещенный порядок занимает все биты поля порядка, в том числе и тот, который ранее ис­пользовался для записи знака поряljr

Смещенный порядок Модуль мантиссы

Знак т

Рг

Рм

pi

ро

m-1

т.2

т-n

71

Мантисса в числах с ПЗ обычно представляется в нормализованной форме. Это означает, что на мантиссу

налагаются такие условия, чтобы она по модулю была меньше единицы (\q\ < 1), а первая цифра после точки отличалась от нуля. Полученная таким образом мантисса называется нормализованной. Для применяемых ВМ систем счисления можно записать:

- двоичная: X = q2р, (1 > |q| = S);

- восьмеричная: X = q8 р, (1> |q| = ?);

- шестнадцатеричная: X = q16 р, (1> |q| = 1/16).

Если первые i цифр мантиссы равны нулю, для нормализации ее нужно сдви­нуть относительно запятой на z разрядов влево с одновременным уменьшением порядка на г единиц. В результате такой операции число не изменяется.

База

До нормализации

После нормализации

Порядок

Мантисса

Порядок

Мантисса

2

100

0,000110

001

0,110000

16

8

0,001x109

6

0,1 х I900

Рис. 2.20. Формат числа с ПЗ со смещенным порядком

В примере для шестнадцатеричной системы после нормализации старшая цифра в двоичном представлении содержит впереди три нуля (0001). Это несколько умень­шает точность представления чисел по сравнению с двоичной системой при оди­наковом числе двоичных разрядов, отведенных под мантиссу.

Если для записи числа с ПЗ используется база 2 (q = 2), то часто применяют еще один способ повышения точности представления мантиссы, называемый при­емом скрытой единицы. Суть его в том, что в нормализованной мантиссе старшая цифра всегда равна единице (для представления нуля используется специальная кодовая комбинация), следовательно, эта цифра может не записываться, а подра­зумеваться. Запись мантиссы начинают с ее второй цифры, и это позволяет задей­ствовать дополнительный значащий бит для более точного представления числа. Следует отметить, что значение порядка в данном случае не меняется. Скрытая единица перед выполнением арифметических операций восстанавливается, а при записи результата — удаляется. Таким образом, нормализованная мантисса 0,101000(1) при использовании способа «скрытой единицы» будет иметь вид 0,010001 (в скобках указана цифра, не поместившаяся в поле мантиссы при стан­дартной записи).

Для более существенного увеличения точности вычислений под число отводят несколько машинных слов, например два. Дополнительные биты, как правило, служат для увеличения разрядности мантиссы, однако в ряде случаев часть из них Может отводиться и для расширения поля порядка. В процессе вычислений может получаться ненормализованное число. В таком случае ВМ, если это предписано командой, автоматически нормализует его.

Рассмотренные принципы представления чисел с ПЗ поясним на примере [200]. rta рис. 2.21 представлен типичный 32-битовый формат числа с ПЗ. Старший (левый) бит содержит знак числа. Значение смещенного порядка хранится в разрядах

72

с 1 -го по 8-й и может находиться в диапазоне от 0 до 255. Для получения фактичес­кого значения порядка из содержимого этого поля нужно вычесть фиксированное значение, равное 128. С таким смещением фактические значения порядка могут лежать в диапазоне от -128 до +127. В примере предполагается, что основание си­стемы счисления равно 2. Третье поле слова содержит нормализованную мантис­су со скрытым разрядом (единицей). Благодаря такому приему 23-разрядное поле позволяет хранить 24-разрядную мантиссу в диапазоне от 0,5 до 1,0.

0 1 8 9 31

Рис. 2.21. Типичный 32-битовый формат числа с плавающей запятой

На рис. 2.22 приведены диапазоны чисел, которые могут быть записаны с по­мощью 32-разрядного слова.

Рис. 2.22. Числа, Представимые в 32-битовых форматах: а — целые числа с фиксированной запятой; б — числа с плавающей запятой

В варианте с ФЗ для целых чисел в дополнительном коде могут быть представ­лены все целые числа от -231 до 231 - 1, то есть всего 232 различных чисел (см. рис. 2.22, о). Для случая ПЗ возможны следующие диапазоны чисел (см. рис. 2.22, б):

*отрицательные числа между -(1 – 2 -24) х 2127 и -0,5 х 2 -128;

*положительные числа между 0,5 х 2 -128 и (1 - 224) х 2127.

В эту область не включены пять участков:

*отрицательные числа, меньшие чем -(1 - 224) х 2127отрицательное пере­полнение;

73

* отрицательные числа, большие чем -0,5 х 2 -128отрицательная потеря зна­чимости;

* положительные числа, меньшие чем 0,5 х 2 -28положительная потеря значи­мости;

* положительные числа, большие чем (1 – 2 -24) х 2127положительное переполнение.

Показанная запись числа с ПЗ не учитывает нулевого значения. Для этой цели используется специальная кодовая комбинация. Переполнения возникают, когда в результате арифметической операции получается значение большее, чем можно представить порядком 127 (2120 х 2100 = 2230). Потеря значимости — это когда резуль­тат представляет собой слишком маленькое дробное значение (2 -120 х2 -'°° = 2 -230). Потеря значимости является менее серьезной проблемой, поскольку такой резуль­тат обычно рассматривают как нулевой.

Следует также отметить, что числа в форме с ПЗ, в отличие от чисел в форме с ФЗ, размещены на числовой оси неравномерно. Возможные значения в начале числовой оси расположены плотнее, а по мере движения вправо — все реже (рис. 2.23). Это означает, что многие вычисления приводят к результату, который не является точным, то есть представляет собой округление до ближайшего значе­ния, представимого в данной форме записи.

Рис. 2.23. Плотность чисел с плавающей запятой на числовой оси

Для формата, изображенного на рис. 2.21, имеет место противоречие между диа­пазоном и точностью. Если увеличить число битов, отведенных под порядок, рас­ширяется диапазон представимых чисел. Однако, поскольку может быть представ­лено только фиксированное число различных значений, уменьшается плотность и тем самым точность. Единственный путь увеличения как диапазона, так и точ­ности — увеличение количества разрядов, поэтому в большинстве ВМ предлагает­ся использовать числа в одинарном и двойном форматах. Например, число оди­нарного формата может занимать 32 бита, а двойного — 64 бита.

Числа с плавающей запятой в разных ВМ имеют несколько различных форма­тов. В табл. 2.5 приводятся основные параметры для нескольких систем представ­ления чисел в форме с ПЗ. В настоящее время для всех ВМ рекомендован стан­дарт, разработанный общепризнанным международным центром стандартизации IEEE (Institute of Electrical and Electronics Engineers).

аолица 2.5. Варианты форматов чисел с плавающей запятой'

Параметр

IBM 390

VAX

IEEE 754

Длина слова (бит)

О: 32; Д: 64

0: 32; Д: 64

О: 32; Д: 64

Порядок (бит)

7 бит

8 бит

О:8;Д:11

74 Глава 2. Архитектура системы команд Таблица 2.5 (продолжение)

Параметр

IBM 390

VAX

IEEE 754 1

Мантисса (F)

О: 6 цифр; Д: 14 цифр

О: (1) + 23 бита Д:(1) + 55бит

О: (1) + 23 бита ' Д:(1) + 52бита

Смещение порядка

64

128

К: 127; Д: 1023

База

16

2

2

Скрытая 1

Нет

Да

Да

Запятая

Слева от мантиссы

Слева от скрытой 1

Справа старшего бита мантиссы

Диапазон F

(1,16)<F<1

0,5<F<1

1<F<2

Представление F

Величина со знаком

Величина со знаком

Величина со знаком

Максимальное положительное число

1663=1076

2126= 1038

21 024 =10 308 (Д)

Точность

O:16-6=lO-7

Д: 16 -14=lO-17

O:2-24=l0-7

Д:2 -564=10 -17

0:2-23= l0-7

Д:2-524=10 -16

Стандарт IEEE 754

Рекомендуемый для всех ВМ формат представления чисел с плавающей запятой определен стандартом IEEE 754. Этот стандарт был разработан с целью облегчить перенос программ с одного процессора на другие и нашел широкое применение практически во всех процессорах и арифметических сопроцессорах.

б

Рис. 2.24. Основные форматы IEEE 754: а — одинарный; б — двойной

Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) фор­маты (рис. 2.24) с 8- и 11-разрядным порядком соответственно. Основанием сис­темы счисления является 2. В дополнение, стандарт предусматривает два расши­ренных формата, одинарный и двойной, фактический вид которых зависит от конкретной реализации. Расширенные форматы предусматривают дополнитель-

75

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

Не все кодовые комбинации в форматах IEEE интерпретируются обычным - некоторые комбинации используются для представления специальных значений Предельные значения порядка, содержащие все нули (0) и все единицы (255 - в одинарном формате и 2047 - в двойном формате), определяют специаль­ные значения.

Таблица 2.6. Параметры форматов стандарта IEEE 754

Формат

одинарный

одинарный расширенный

двойной

двойной расширенный

Ширина слова, бит

32

>43

64

>79

Ширина порядка, бит

8

>11

11

>15

Смещение порядка

127

Не определено

1023

Не определено

Максимальный порядок

127

>1023

1023

> 16 383

Минимальный порядок

-126

<-1022

-1022

< -16 382

Диапазон чисел

10 -38, 10+38

Не определен

10-308, 10-308

Не определен

Длина мантиссы, бит

23

>31

52

>63

Количество порядков

254

Не определено

2046

Не определено

Количество мантисс

223

Не определено

252

Не определено

Количество значений

1,98х231

Не определено

1,99х263

Не определено

Представлены следующие классы чисел:

Порядки в диапазоне от 1 до 254 для одинарного формата и от 1 до 2036 - для двойного формата, используются для представления ненулевых нормализован­ных чисел. Порядки смещены так, что их диапазон составляет от -126 до +127 для одинарного формата и от -1022 до +1023 - для двойного формата. Норма­лизованное число требует, чтобы слева от двоичной запятой был единичный бит. Этот бит подразумевается, благодаря чему обеспечивается эффективная ширина мантиссы, равная 24 битам для одинарного и 53 битам - для двойного форматов.

- Нулевой порядок совместно с нулевой мантиссой представляют положитель­ный или отрицательный 0, в зависимости от состояния бита знака мантиссы.

- Порядок, содержащий единицы во всех разрядах, совокупно с нулевой мантис­сой представляют положительную или отрицательную бесконечность, в зави­симости от состояния бита знака, что позволяет пользователю самому решить, считать ли это ошибкой или продолжать вычисления со значением, равным бесконечности.

76

* Нулевой порядок в сочетании с ненулевой мантиссой представляют ненормализованное число. В этом случае бит слева от двоичной точки равен 0 и фактический порядок равен -126 или -1022. Число является положительным и отрицательным в зависимости от значения знакового бита.

* Кодовая комбинация, в которой порядок содержит все единицы, а мантисса равна 0, используется как признак «не числа» (NAN — Not a Number) и служба для предупреждения о различных исключительных ситуациях.

Упакованные числа с плавающей запятой

В последних версиях АСК, предусматривающих особые команды для обработки мультимедийной информации, помимо упакованных целых чисел исполъзуюется и упакованные числа с плавающей запятой. Так, в уже упоминавшейся технолс гии 3DNow! фирмы AMD имеются команды, служащие для увеличения произвс дительности систем при обработке трехмерных приложений, описываемых числами с ПЗ. Каждая такая команда работает с двумя операндами с плавающей занято: одинарной точности. Операнды упаковываются в 64-разрядные группы, как это показано на рис. 2.25.

В микропроцессорах фирмы Intel, начиная с Pentium III, для аналогичных це­лей поддержаны команды, реализующие технологию SSE, также ориентирован­ную на параллельную обработку упакованных чисел с ПЗ. Здесь числа объеди­няются в группы длиной 128 бит, и это позволяет упаковать в группу четыре 32-разрядных числа с ПЗ (числа с одинарной точностью). Позже, в технологии SSE2, которую можно считать дальнейшим развитием SSE, появился формат, где в группу из 128 бит упаковываются два 64-разрядных числа с ПЗ, то есть числа, представленные с двойной точностью.