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

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(FlushToZero– стремления к нулю), то поведение крошечных результатов различно. Если инструкция выдает крошечный результат, то вместо него подставляется корректный знаковый ноль, и устанавливаются биты в соответствующих поляхFPSR.sx.uиFPSR.sx.i. Этот режим может улучшить эффективность при выполнении, которое не является предметом обработки денормализации в аппаратных средствах. Если разрешен режимFTZ, то при возникновении крошечных результатов, не будут вызываться ловушки, содействующие программному исключению с плавающей точкой.