Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 5..doc
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
349 Кб
Скачать

5.4.2. Определение Переполнения

Исключение переполнения может произойти всегда, когда округленный истинный результат превышает по величине наибольшее максимальное число в формате приемника.

IEEE ловушка «Исключение: Переполнение с плавающей точкой» блокирует ответ для всех нормальных и параллельных FP инструкций, а вместо этого возвращает либо бесконечность, либо корректное знаковое значение, максимально допустимое для точности приемника. Это зависит от режима округления, знака результата и операции. О потере точности результата сигнализируется соответствующему исключению.

IEEE ловушка «Исключение: Переполнение с плавающей точкой» допускает ответ для всех нормальных арифметических инструкций, который возвращает истинное смещенное значение порядка по модулю 217, а для всех параллельных FP арифметических инструкций, который возвращает истинное смещенное значение порядка по модулю 28. Значение мантиссы округляется к заданной точности и записывается в приемный регистр. Если округленное значение отличается от абсолютно точного значения, то отмечается потеря точности. Если мантисса была округлена добавлением единицы в самый младший бит, то устанавливается бит fpa=1 в поле ISR.code. В конце происходит вызов прерывания из-за ловушки «Исключение с плавающей точкой».

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

5.4.3. Определение Крошечности, Неточности и Антипереполнения.

Крошечность (Tininess) выявляется после округления и объявляется, когда выяснилось, что результат не является нулевым (вычислен, как если бы диапазон порядка был не ограничен), но при этом находится в пределах от +2Emin до –2Emin. (О значениях Emin для каждого вещественного типа см. табл.5.1). Создание крошечного результата может, позднее, вызвать исключение (такое как переполнение при делении на очень маленький результат).

Неточность (Inexactness) – это такой случай, когда результат отличается от того, что было бы вычислено, если бы и диапазон порядка, и точность были бы неограниченны.

Как крошечность, так и неточность, запускают исключение антипереполнения в зависимости от того, разрешена или запрещена ловушка «Исключение: Антипереполнение с плавающей точкой». Если ловушка запрещена, то исключение антипереполнения отмечается, когда результат является и крошечным, и неточным. Если ловушка разрешена, то исключение антипереполнения отмечается, когда результат является крошечным, не зависимо от неточности. Заметим, что в случае, если запрещена ловушка «Исключение: Антипереполнение с плавающей точкой» и есть крошечность, но нет неточности, то не отмечается ни крошечность, ни неточность, а результат является денормализованным.

IEEE ловушка «Исключение: Антипереполнение с плавающей точкой» запрещающая ответ, для всех нормальных и параллельных FP арифметических инструкций, денормализует абсолютно точный результат, а затем округляет его к точности приемника. Результат может быть денормализованным, нулевым или нормализованным. Если необходимо, то отмечается исключение потери точности.

IEEE ловушка «Исключение: Антипереполнение с плавающей точкой» разрешающая ответ, для всех нормальных арифметических инструкций, возвращает истинное смещенное значение порядка по модулю 217, а для параллельных FP арифметических инструкций, возвращает истинное смещенное значение порядка по модулю 28. Мантисса округляется к заданной точности и записывается в приемный регистр, не зависимо от возможности требования переноса при вычислении порядка. Если округленное значение отличается от абсолютно точного значения, то отмечается неточность. Если мантисса была округлена добавлением единицы к младшему значащему биту, то бит fpa в поле ISR.code устанавливается в 1. В конце происходит вызов прерывания из-за ловушки «Исключение с плавающей точкой».

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

Если разрешен режим FTZ (Flush To Zero – стремления к нулю), то поведение крошечных результатов различно. Если инструкция выдает крошечный результат, то вместо него подставляется корректный знаковый ноль, и устанавливаются биты в соответствующих полях FPSR.sx.u и FPSR.sx.i. Этот режим может улучшить эффективность при выполнении, которое не является предметом обработки денормализации в аппаратных средствах. Если разрешен режим FTZ, то при возникновении крошечных результатов, не будут вызываться ловушки, содействующие программному исключению с плавающей точкой.