Денормализованный операнд.
Возникает при попытке оперировать денормализованным операндом. Маскированная реакция – установка бита D и продолжение операции, при незамаскированном варианте операнды не изменяются, устанавливается бит D и вызывается обработчик особого случая.
На основании анализа заданных операций укрупненная блок-схема процессора представлена на рис 4.1. В него входят оперативная память ОП, блок преобразования форматов данных БПФ, блок регистров БР, блок обработки данных БОД, блок микропрограммного управления БМУ. БПФ и ОП связаны 128-битной шиной и через нее передаются данные в ОП в формате m32real. БПФ осуществляет обратное преобразование из формата PT в OТ.
БР включает в себя регистровый стек, регистры слов тэгов, управления и состояния. Из БР в БПФ передается операнд из вершины стека в формате РТ (операция FSt). Из БР в БОД передаются 2 операнда в формате РТ для операции умножения (FMul) и из БОД в БР передается результат операции умножения в формате РТ в вершину стека. В БОД осуществляется операция умножения.
Управление операциями осуществляется БМУ путем выборки последовательности микрокодов (МК). Обратная связь от БПФ, БР и БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.
5.1. Алгоритм операции FMulSt,St(i).
Порядок выполнения операции состоит из следующих этапов:
а) Чтение операнда из вершины стека ST(0) в БОД;
б) Чтение операнда из ST(i) в БОД;
в) Операция умножения;
г) Запись результата умножения в стек ST(0).
1 этап. Чтение операнда из вершины стека ST(0) в БОД.
Если регистр ST(0) непустой (Т(0)¹11), то читаем операнд в RGD=ST(0), а оттуда в рабочий регистр RG1.
2 этап. Чтение операнда из ST(i) в БОД.
Если регистр ST(i) непустой (Т(i)¹11), то читаем операнд в RGD=ST(i), а оттуда в рабочий регистр RG2.
3 этап. Операция умножения.
Первый операнд читается из вершины стека в рабочий регистр
RG1:RG1=ST(0).
Второй операнд читается из вершины стека в рабочий регистр RG2:
RG2=ST(i).
Произведение формируется в RG3.
Регистры операндов RG1 и RG2 и регистр произведения RG3 подразделяются на субрегистры знаков (S1, S2, S3), и порядков (Е1, Е2, Е3), и мантисс (М1, М2, М3).
Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат округляется до 64 бит.
Схема обработки знаков вычисляет знак произведения S3=S1 S2. Сумматор SME вычисляет порядок произведения E3=E1+E2-16383. Умножение мантисс происходит с анализом младшего бита множителя со сдвигом множимого.Умножение завершается нормализацией и округлением результата:
· Если произошло переполнение разрядной сетки мантиссы, то сдвиг вправо и инкремент E3 (нормализация вправо).
· Если произошло антипереполнение порядка, то сдвиг M3 вправо и обнуление E3 (денормализация).
· Округление M3 до 64 бит в зависимости от режима округления - поле RC (табл.5.1).
Таблица 5.1 – Округление результата
RC | Режим | r | Действие округления |
00 01 | К ближайшему вверх | R<1000 | Отбросить младшие биты |
R>=1000 | Если старший отбрасываемый бит равен 1, то прибавить 1 к младшему сохраняемому биту, иначе отбросить младшие биты | ||
10 11 | Вниз усечение | любое | Отбросить младшие биты |
При умножении мантисс нормализованных чисел переполнение мантиссы возможно только на один бит и нормализация ограничивается одним сдвигом вправо. Денормализация выполняется как маскированная реакция на антипереполнение порядка (E3<0). Если E3>-64, M3 сдвигается на ABS(E3) битов вправо, а E3 обнуляется. Если E3<(-64) результат принимается равным нулю.
При нормализации возможны следующие особые случаи:
· При инкременте Е3 возникает переполнение порядка
· При декременте Е3 возникает антипереполнение порядка
При возникновении подобных случаев фиксируются следующие признаки результата:
· P - потеря точности;
· O - переполнение порядка;
· U - антипереполнение порядка;
· I - недействительная операция (при Т(0)=11 или Т(i)=11);
· D - денормализованный операнд (при Т(0)=10 или Т(i)=10).
Маскированные операции на особые случаи:
· O - запись кода бесконечности (Е3=11…1 и М3=1.00…0);
· U - запись кода нуля или денормализованного значения.
Схема операцииFMulST, ST(i)приведена на рис.5.1.
W7 | W6 | W5 | W4 | W3 | W2 | W1 | W0 | ||
7FF | m32 | m32 | m32 | m32 | 7F8 | ||||
7F7 | m16 | m32 | m32 | m32 | m16 | 7F0 | |||
… | … | … | |||||||
007 | m16 | m16 | m16 | m16 | m16 | m16 | m16 | m16 | 000 |
127 112 | 111 96 | 95 79 | 78 64 | 63 48 | 47 32 | 21 16 | 15 0 |