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

Подготовительный этап

Первой особенностью операционных устройств для чисел с плавающей запятой является то, что в них операции над тремя составляющими чисел с ПЗ (знаками, мантиссами и порядками операндов) выполняются раздельно: блоком обработки знаков (БОЗ), блоком обработки порядков (БОП) и блоком обработки мантисс (БОМ). Для хранения операндов и результата в ОПУ предусмотрены соответству­ющие регистры. Хотя эти регистры могут быть физически реализованы в виде еди­ных устройств, каждый из них логично рассматривать как совокупность трех ре­гистров: знака, порядка и мантиссы. Таким образом, на этапе загрузки операндов в регистры ОПУ осуществляется «распаковка» чисел с ПЗ, их разбиение на три составляющие. В ходе такой распаковки в старшем разряде регистра мантиссы вос­станавливается единица, которая в записи числа отсутствовала (была скрыта).

На предварительном этапе может быть также выполнена проверка на равен­ство нулю одного или обоих операндов (в стандарте IEEE 754 для представления нулевого значения используется такая запись числа, в которой нулю равны все Разряды порядка). Это позволяет исключить ненужные операции. Так, в операциях умножения и деления, если нулю равны множитель, множимое или делимое, в качестве результата сразу же можно принять нулевое значение, обойдя предви­димые данными операциями действия.

Заключительный этап

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

Нулевое значение мантиссы может получиться в результате операции, например при сложении или вычитании мантисс. Второй причиной может стать сдвиг мантиссы вправо для устранения переполнения. В обоях случаях имеет место ситуация потери значимости мантиссы, и результат операции принимается равным нулю. Для стандарта IEEE 754 это означает, что все цифры порядка результата необходимо обнулить, а также то, что нормализацию мантиссы результата производить не нужно.

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

В завершение мантисса результата округляется и, если это предусмотрено фор­матом ПЗ, из нее удаляется скрытый разряд.

В последней фазе осуществляется «упаковка» всех составляющих результата (знака, порядка и мантиссы), после чего сформированный результат заносится в выходной регистр ОГТУ.

Сложение и вычитание

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

1. Подготовительный этап.

2. Определение операнда, имеющего меньший порядок, и сдвиг его мантиссы впра­во на число разрядов, равное разности порядков операндов.

3. Приравнивание порядка результата большему из порядков операндов.

4. Сложение или вычитание мантисс и определение знака результата.

5. Проверку па переполнение.

6. Заключительный этан.

Операции предшествует вышеописанный подготовительный этап, в ходе кото­рого операнды «распаковываются» и помещаются в регистры ОПУ.

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

В следующей фазе осуществляется такое преобразование одного из исходных чисел, чтобы порядки обоих операндов стали равны. Для пояснения рассмотрим например сложения десятичных чисел с ПЗ:

123 х 100 +456 х 10 -2.

Очевидно, что непосредственное сложение мантисс недопустимо, поскольку цифры мантисс, имеющие одинаковый вес, должны располагаться в эквивалентных позициях. Так, цифра 4 во втором числе должна суммироваться с цифрой 3 в первом. Этого можно добиться, если записать второе число так, чтобы порядки обоих чисел были равны:

123 х 100 + 456 х 10-2 = 123 х 10° + 4,56 х 10° = 127,56 х 10°.

Выравнивания порядков можно достичь сдвигом мантиссы меньшего из чисел вправо, с одновременным увеличением порядка этого числа, либо сдвигом мантиссы большего из чисел влево и уменьшением его порядка. Оба варианта сопря­жены с потерей цифр мантиссы, но выгоднее сдвигать меньшее из чисел, так как при этом теряются младшие разряды мантиссы. Таким образом, выравнивание порядков операндов реализуется путем сдвига мантиссы меньшего из чисел на один разряд вправо с одновременным увеличением порядка этого числа на единицу. Действия повторяются до совпадения порядков. Если в процессе сдвига мантисса обращается в 0, в качестве результата операции берется другой операнд.

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

Далее выполняется описанный выше заключительный этап.

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