Смекни!
smekni.com

Проектирование процессора с плавающей точкой (стр. 2 из 4)

Денормализованный операнд.

Возникает при попытке оперировать денормализованным операндом. Маскированная реакция – установка бита D и продолжение операции, при незамаскированном варианте операнды не изменяются, устанавливается бит D и вызывается обработчик особого случая.


4. Блок – схема процессора

На основании анализа заданных операций укрупненная блок-схема процессора представлена на рис 4.1. В него входят оперативная память ОП, блок преобразования форматов данных БПФ, блок регистров БР, блок обработки данных БОД, блок микропрограммного управления БМУ. БПФ и ОП связаны 128-битной шиной и через нее передаются данные в ОП в формате m32real. БПФ осуществляет обратное преобразование из формата PT в OТ.

БР включает в себя регистровый стек, регистры слов тэгов, управления и состояния. Из БР в БПФ передается операнд из вершины стека в формате РТ (операция FSt). Из БР в БОД передаются 2 операнда в формате РТ для операции умножения (FMul) и из БОД в БР передается результат операции умножения в формате РТ в вершину стека. В БОД осуществляется операция умножения.

Управление операциями осуществляется БМУ путем выборки последовательности микрокодов (МК). Обратная связь от БПФ, БР и БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.

5. Алгоритмы операций

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.



5.2. Алгоритм операции FStm32real.

Порядок выполнения операции состоит из следующих этапов:

а) Чтение операнда из вершины стека ST(0) в БПФ;

б) Преобразование операнда из формата m80real в формат m32real;

в) Позиционирование операнда;

г) Запись в ОП.

1 этап. Чтение операнда из вершины стека ST(0) в БПФ.

Если регистр ST(0) непустой (Т(0)¹11), то читаем операнд в RGD=ST(0), иначе фиксируем недействительную операцию. Регистр операндов RGD подразделяется на субрегистры знака (S), порядка (E) и мантиссы (M).

2 этап. Преобразование операнда из формата m80real в формат m32real.

Преобразование начинается с проверки T(0) регистра слова тегов TW.

00 – нормализованное число;

01 – истинный нуль;

10 – денормализованное число;

Если число денормализовано или равно нулю, то результатом будет код нуля в формате ОТ.

Затем вычесть из смещенного порядка E разность смещений 16383-127 =16256. Если E > 254, то фиксируется особый случай переполнения O; если он не замаскирован, перейти к обработчику прерывания, если замаскирован – сформировать результат, равный наибольшему положительному или отрицательному числу, и закончить преобразование.

Если E < 1, то фиксируется особый случай антипереполнения U; если он не замаскирован, перейти к обработчику прерывания, если замаскирован – продолжить преобразование.

Если E < 23, произвести денормализацию числа – сдвинуть мантиссу на E битов вправо, округлить её и установить E=0, иначе проверить младшие отбрасываемые 40 бит мантиссы; если они не равны нулю, зафиксировать особый случай P (потеря точности); если особый случай не замаскирован, перейти к обработчику прерывания, если замаскирован – продолжить преобразование.

Далее округлить мантиссу до 24 бит в соответствии со значением поля RC; порядок округления описывается таблицей 5.1. Закончить преобразование, сдвинув мантиссу на 1 бит влево.

Преобразованное число находится в 79, 71-41 разрядах рабочего регистра RGD (рис. 5.2).

3 этап. Позиционирование операнда.

Позиционирование операнда – это размещение операнда в приемном регистре в некотором стандартном виде.

Переписываем операнд из регистра RGD в регистр REG (длина 32 бита) определенные разряды (рис 5.3).


REG[31] = RGD[79] - позиционирование знака.

REG[30:23] = RGD[71:64] - позиционирование порядка.

REG[22:0] = RGD[63:41] - позиционирование мантиссы.

Так как операнд имеет длину меньше, чем длина слова ОП, то REG позиционируют в RGRW в зависимости от байтов 0-2 адресного регистра EAR.

CASE EAR[0:1:2]

000: RGRW[31:0]:= REG;

001: RGRW[47:16]:= REG;

010: RGRW[63:32]:= REG;

011: RGRW[79:48]:= REG;

100: RGRW[95:64]:= REG;

101: RGRW[111:80]:= REG;

110: RGRW[127:96]:= REG;

111: INT.

4 этап. Запись в ОП.

MEM[EAR] = RGRW.

Схема операции FStm32real приведена на рис. 5.4.



6. Структурные схемы блоков процессора

6.1. Блок памяти.

В курсовом проекте используется одноуровневая память данных емкостью 4Кб и длиной слова ОП 128 бит. Адрес данного к началу операции вычислен и находится в адресном регистре EAR. В операциях с ПТ минимальный размер данного 2 байта, поэтому адресация производится с точностью до двухбайтового слова W. Адрес содержит 11 бит, из них старшие 8 адресуют слово MW, а младшие 3 - слово W в MW.

В данном курсовом проекте адресуются данные длиной 32 бит. Они выбираются из ОП за одно обращение. Адресация памяти для заданного формата приведена на рис.6.1. Адрес двойного слова QW заканчивается битами 000,010,011, 100,101 или 110, но не 111. При выборке из ОП читается всегда полное слово MW в регистр чтения-записи RGRW[127:0]. Выделение из MW данных формата m32 происходит в БПФ.

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

При записи данное должно быть размещено в ОП в соответствии со своим форматом и адресом, поскольку запись полного слова может привести к разрушению информации в соседних полях слова памяти. Для этого память выполнена в виде восьми банков Б7, Б6, …, Б0, которые хранят соответственно двухбайтовые слова W7, W6, …, W0 всех слов памяти. Управляют записью в банки биты разрешения записи Z7, Z6, …, Z0, формируемые в зависимости от трех младших бит адреса (таблица 6.1).