Проектирование процессора с плавающей точкой

Министерство Образования

Российской Федерации



РГРТА

Кафедра ЭВМ



Пояснительная записка к курсовому проекту по дисциплине

«Организация ЭВМ и систем»



по теме

«Проектирование процессора с плавающей точкой»















Выполнил студент гр.343

Савченко Н.



Проверил:

Юдинцев А.С.











Рязань 2004


Содержание



Техническое задание

Введение

1. Описание команд

1.1. FMul ST, ST(i) - умножение

1.2. FSt m32real - сохранение

2. Форматы данных

2.1. Внутренний формат

2.2. Внешний формат

2.3. Пример формата m80real

2.4. Пример формата m32real

3. Программная модель процессора

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

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

5.1. Алгоритм операции FMul St,St(i)

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

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

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

6.2. Блок преобразования форматов

6.3. Блок регистров

6.4. Блок обработки данных (блок умножения)

6.5. Блок микропрограммного управления

7. Моделирование операции FMul St,St(i)

Заключение

Список использованных источников


Техническое задание

FMul ST, ST(i) - умножение.

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



ST ← ST * ST(i)



Оба операнда находятся в регистровом стеке в формате 80real.

Умножение с анализом младшего бита множителя со сдвигом множимого.

Особые случаи: P, U, O, D, I.



FSt m32real - сохранение.



m32real ← ST



Особые случаи: P, U, O, D, I.



Емкость ОП 4 Кбайт.

Длина слова памяти 128 бит.






Введение



С появлением процессора i486 и его сопроцессора FPU – сопроцессора с плавающей точкой, работа с вещественными числами стала аппаратной, а не программной задачей. Производительность ЭВМ увеличилась. Возможности использования ЭВМ в бухгалтерии и многих других областях деятельности человека дали толчок массовому внедрению их в повседневную жизнь. Были переписаны многие программы, компиляторы. Освоение архитектуры, принципов работы сопроцессора FPU стало для программистов едва ли не основной задачей. 

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


1. Описание команд



1.1. FMul ST, ST(i) - умножение.



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



ST ← ST * ST(i)



Оба операнда находятся в регистровом стеке в формате 80real.

Умножение с анализом младшего бита множителя со сдвигом множимого.

Особые случаи: 

		P	-	неточный результат;

		U	-	антипереполнение;

		O	-	переполнение;

		D	-	денормализованный операнд;

		I	-	недействительная операция.



Формат команды представлен на рисунке 1.1



1    1       К   О   П       S   T   (i)

1    1      0     1     1     R     P    k

   7     6     5      4     3     2     1     0         7     6      5           3      2            0

Рисунок 1.1 — Формат команды FMul St,St(i).

Адрес второго операнда определяется полем ST(i), которое принимает значения от 000 до 111, где 000 – вершина стека, 111 – восьмой элемент регистрового стека. 

Бит R показывает, возвращается ли результат в вершину стека. В данном случае R = 0.

Бит P указывает, что после операции производится извлечение из стека. P = 0, так как извлечения нет.

		

1.2. FSt m32real - сохранение.



Команда FSt m32real передает значение из регистра ST в ОП. Содержимое ST остается неизменным.

Особые случаи: 

		P	-	неточный результат;

		U	-	антипереполнение;

		O	-	переполнение;

		D	-	денормализованный операнд;

		I	-	недействительная операция.

Формат команды представлен на рисунке 1.2





Рисунок 1.2 — Формат команды FSt m32real.

m o d      К   О   П          r / m

1    1      0     1     1    M     F    d

 7     6     5      4     3     2     1     0         7     6      5           3      2            0        7                   0     7                    0

SIB

Disp



Адрес операнда m32real определяется полями mod, r/m, SIB, Disp. Адрес вычисляется целочисленным процессором. К началу операции он уже сформирован. Бит [0] первого байта команды определяет тип операции.

В данном случае Бит [0] = 1 – передача данного из стека в память.

Поле MF определяет тип операнда. При m32real MF = 00.

		
2. Форматы данных



2.1. Внутренний формат.

Во внутренних операциях процессор с плавающей точкой (ППТ) использует представление вещественных чисел в формате с расширенной точностью (РТ, m80real) (рис.2.1). Длина формата 80 бит.





 14                                               0   0   1                                                                                                            63

79   78                                           64   63   62                                                                                                           0

Рисунок 2.1 – Внутренний формат РТ.

S                           E                            1.                                                        M



Значащие цифры числа находятся в поле мантиссы (М). Длина мантиссы 64 бита. Поле порядка (E) показывает фактическое положение двоичной точки в разрядах мантиссы. Длина порядка 15 бит. Бит знака (S) определяет знак числа. Мантисса представлена в прямом коде. Порядок задается в смещенной форме; он равен истинному порядку (П), увеличенному на значение смещения – смещ РТ = 16383:



E = П + смещ РТ



Истинный порядок изменяется от –16382 до 16383. Порядки 000…0b и 111…1b зарезервированы для специальных значений. Числа в формате РТ имеют явный бит F0.

Значение числа в формате РТ равно .



2.2. Внешний формат.



В данном курсовом проекте рассматривается один внешний формат m32real – формат обычной точности (ОТ) (рис.2.2). Длина формата 32 бита.




Рисунок 2.2 – Внешний формат ОТ.

  7                             0   1                                                 23

31   30                         23   22                                                 0

S                 E                                          M

Значащие цифры числа находятся в поле мантиссы (М). Длина мантиссы 23 бита. Поле порядка (E) показывает фактическое положение двоичной точки в разрядах мантиссы. Длина порядка 8 бит. Бит знака (S) определяет знак числа. Мантисса представлена в прямом коде. Порядок задается в смещенной форме; он равен истинному порядку (П), увеличенному на значение смещения – смещ ОТ = 127:



E = П + смещ ОТ



Истинный порядок изменяется от –126 до 127. Порядки 000…0b и 111…1b зарезервированы для специальных значений. Явный бит F0 в формате ОТ отсутствует и мантисса оказывается правильной дробью.

Значение числа в формате ОТ равно .



2.3. Пример формата m80real.



Покажем представление десятичного числа 24789.8125 в формате РТ. Двоичный код числа равен 110000011010101.1101b, истинный порядок равен 14. Смещенный порядок E=14+16383=16397=100000000001101b. Число в формате РТ приведено на рис. 2.3.





 14                                               0   0   1                                                                                                            63

79   78                                           64   63   62                                                                                                           0

Рисунок 2.3 – Число 24789.8125 формате РТ.

0       1 0 0 0 0 0 0 0 0 0 0 1 1 0 1       1      1 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 …


2.4. Пример формата m32real.



Покажем представление десятичного числа -85.125 в формате ОТ. Двоичный код числа равен -1010101.001b, истинный порядок равен 6. Смещенный порядок E=6+127=133=10000101b. Число в формате ОТ приведено на рис. 2.4.





Рисунок 2.4 – Число -85.125 формате ОТ.

  7                             0   1                                                 23

31   30                         23   22                                                 0

1        1 0 0 0 0 1 0 1         0 1 0 1 0 1 0 0 1 …




3. Программная модель процессора



Программная модель (рис. 3.1) включает в себя кольцевой стек из восьми регистров R0-R7, слово тэгов TW, слово состояния SW и слово управления CW. В стеке хранятся числа в формате РТ. В полях S, Е и М регистров записаны соответственно знак, порядок и мантисса. Вершина стека определяется полем TOP слова состояния SW и обозначается ST(0), или просто ST. На рисунке вершиной стека является физический регистр R3. ST(0) содержит последнее включенное в стек значение, регистр ST(1) предпоследнее и т.д. Включение в стек осуществляет декремент TOP и загрузку в новую вершину стека. При извлечении из стека данное читается из ST(0), а затем производится инкремент TOP.





Вершина стека

 1        0

79                                               0

 R6

 R7

 R1

 R2

 R3

 R4

 R5

 R0

   ST(2)

   ST(3)

   ST(4)

   ST(7)

   ST(6)

   ST(0)

   ST(1)

 15                                               0

CW

* * *    RC  PC  1 1     Маски

 15          13      11                                                       0

SW

*   C3     TOP      C2 C1 C0      Флажки ошибок

ST(5)

TW

T(5)

T(6)

T(7)

T(0)

T(1)

T(2)

T(3)

T(4)

Рисунок 3.1 – Программная модель процессора



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

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

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

		10	-	денормализованное число, бесконечность или неопределенность;

		11	-	пустой регистр.

В слове состояния SW поле TOP содержит адрес текущей вершины стека. Биты кода условия C0-C3 фиксируют результаты команд сравнения, проверки и анализа. Восемь бит отведены для регистрации особых случаев (ошибок) (рис.3.2).





Рисунок 3.2 – Регистр SW

 15    14   13        11  10     9     8     7     6     5     4     3      2     1     0

  IE

SW

*   С3      TOP               C1  C0   ES  SF   PE  UE  OE  ZE  DE



 При выполнении команд с ПТ возможны следующие особые случаи:

		 P	–	неточный результат (точность);

		 U	–	антипереполнение;

		 O	–	переполнение;

		 D	–	денормализованный операнд;

		 I	–	недействительная операция;

		 Z	–	деление на нуль.

Особым случаям соответствуют флажки в слове состояния SW (рис.3.2): IE, ZE, DE, OE, UE, PE. При любом особом случае устанавливается бит суммарной ошибки ES, а также вырабатывается активный сигнал ошибки FERR.

В слове управления CW поле RC задает режим округления, когда формат получателя не позволяет точно представить результат. Пусть B – точный результат, A и C – ближайшие к нему представимые в заданном формате числа: A<B<C. Поле RC задает режим округления: 

		00	–	округление к ближайшему – выбор из А и С, ближайшего к В;

		01	–	округление вниз – А;

		10	–	округление вверх – С;

		11	–	усечение – меньшее из А и С по модулю.

Младшие 6 битов CW хранят маски особых случаев: IM, DM, ZM, OM, UM, PM (рис.3.3). Если бит маски установлен, прерывание при соответствующем особом случае не происходит. Если бит маски сброшен, происходит прерывание.





Рисунок 3.3 – Маски особых случаев

 15                         7         6         5        4         3         2        1         0

СW

                                                             PM    UM    OM    ZM     DM     IM 

В данном курсовом проекте используются следующие особые случаи: P, U, O, D, I.

Недействительная операция.

Этот случай возникает при антипереполнении стека (попытка извлечения из пустого регистра) и переполнении стека (попытка включения в непустой регистр). Стековые операции распознаются по биту SF=1 в SW. При антипереполнении стека бит C1=0, С1=1 при переполнении. В операциях FSt m32real и FMul St, St(i) формируется особый случай I при попытке извлечения из пустого регистра.

Переполнение.

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

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

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


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



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

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

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





80

80

80

80

128

БМУ

МК



Память



БПФ



БР



БОД

Осведомительные сигналы

Рисунок 4.1 – Укрупненная блок-схема процессора




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



5.1. Алгоритм операции FMul St,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	-	запись кода нуля или денормализованного значения.

Схема операции FMul ST, ST(i) приведена на рис.5.1.



 

FMul St,St(i)

RG1=ST(0)

RG2=ST(i)

Обработка особых случаев I и D

Нормализация и округление результата

Операция умножения

ST(0)=RG3

Конец

нет

да

да

нет

да

нет

Обработка особых случаев I и D

D(RG1) or D(RG2)

DM

INT

Нормализация КП

I

INT

Выход






Рисунок 5.1 – Схема операции FMul St, St(i) (начало)



 



Рисунок 5.1 – Схема операции FMul St, St(i) (окончание) 





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



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

а) Чтение операнда из вершины стека 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).





RGD



  79                                  71                    64  63                           41                                                0

Рисунок 5.2 – Расположение преобразованного числа в RGD



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

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

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





  79                                  71                    64  63                           41                                                0



  31  30                   23   22                            0

REG

RGD

S

E

M

Рисунок 5.3 – Позиционирование m32real.

S

E

M

	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.



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





Рисунок 5.4 - Схема операции FSt m32real (начало)


 



Рисунок 5.4 - Схема операции FSt m32real (окончание)


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





Рисунок 6.1 - Адресация памяти для формата m32



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



Таблица 6.1 - Формирование битов разрешения записи для формата m32

Младшие биты адреса EAR[0:1:2]

Биты разрешения



Z7

Z6

Z5

Z4

Z3

Z2

Z1

Z0

000

0

0

0

0

0

0

1

1

001

0

0

0

0

0

1

1

0

010

0

0

0

0

1

1

0

0

011

0

0

0

1

1

0

0

0

100

0

0

1

1

0

0

0

0

101

0

1

1

0

0

0

0

0

110

1

1

0

0

0

0

0

0

111

-

-

-

-

-

-

-

-



Схема организации памяти приведена на рис 6.2. Здесь БП - блок памяти (банки Б7-Б0), EAR - регистр исполнительного адреса, ФСРЗ – формирователь сигналов разрешения записи Z7-Z0. Схема управляется сигналами (битами МК) WR – запись, МЕМ – обращение к памяти. 



Рисунок 6.2 – Схема организации памяти. 


6.2. Блок преобразования форматов.



При разработке алгоритма FSt m32real описаны основные действия в БПФ. 

Укрупненная схема БПФ приведена на рис. 6.3. 

Она включает в себя обратный (ОПФ) преобразователь форматов, коммутатор обратного (КОП) позиционирования со схемой управления СУОП. Коммутатор управляется сигналом EAR[0:1:2] и микрокодом формата данного FD.

 Преобразователем управляют специальные последовательности микрокодов, вырабатываемые БМУ в зависимости от вида преобразования и его шага, а также от промежуточных результатов преобразования.





Рисунок 6.3 – Укрупненная схема БПФ. 

 



Структурная схема блока обратного преобразования	форматов (ОПФ) из m80real в m32real для нормализованных чисел приведена на рис. 6.4. 

На один вход сумматора SM1 подается константа -16256. На выходе SM1 получаем смещенный порядок E для формата m32real и передаем его в разряды 30:23 REG. 

Старшие разряды мантиссы M из регистра RGD передаются в регистр RGS1. 

Осуществляем сдвиг регистра RGS1 на один разряд влево. В разряды 22-0 регистра REG передаем старшие разряды регистра RGS1. Знак S (79 разряд), передается в 31 разряд регистра REG без изменений.




23                                               0 

8

RGS1

15

-16256

  79                                                    64  63                                                                                      0

  31  30                   23   22                            0

REG

RGD

S

E

1.                                       M

Рисунок 6.4 – Структурная схема блока ОПФ.

S

E

M

SM1

1

64

23



6.3. Блок регистров.



Блок регистров БР (рис.6.5) включает в себя регистровый стек ST, регистр тэгов TW, регистр управления CW, регистр состояния SW, регистр 1-го операнда RGA, схему СхАиМ анализа и модификации TW, CW и SW, трехразрядный сумматор SM. 

Выборка из ST происходит по шинам А и B, запись – только по шине А. ST имеет адресные входы A=TOP (адресует вершину стека) и B=TOP+i (адресует регистр ST(i)). Чтение происходит по сигналу RD. Если при этом подан сигнал разрешения обращения к ST(i) EI=1, чтение происходит одновременно по обоим адресам. Запись происходит по сигналу WR в ST(0) при EI=0 и в ST(i) при EI=1.

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

 

6.4. Блок обработки данных (блок умножения)



Обобщенная схема БОД.

БОД выполняет операцию умножения над поступающими на его входы операндами. Обобщенная схема БОД приведена на рис. 6.6.

В нее входят регистры RG1 и RG2 первого и второго операндов, компаратор COMP для сравнения операндов с кодами истинного нуля, блок выполнения операций БВО, регистр результата RGB. Константы для сравнения с операндом поступают на компаратор из ПЗУ констант в составе блока микропрограммного управления БМУ. БВО разделяют на схему обработки знаков, блок обработки порядков БОП, блок обработки мантисс БОМ и формирователь признака результата ФПР. Регистры RG1 и RG2 могут быть совмещены с регистрами RGA и RGB БР. Их используют для хранения исходных операндов.

Блок умножения.

На основании алгоритма операции FMul ST,ST(i) разработан блок умножения Регистры операндов RG1 и RG2 и регистр произведения RG3 подразделяются на субрегистры знаков (S1, S2, S3), порядков (E1, E2, E3) и мантисс (М1, М2, М3). Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат получается в RG3 округляется до 64 бит.

Структурная схема обработки знаков показана на рисунке 6.8. Знак результата определяется как S3=S1 + S2.



 



Рисунок 6.8. – Схема обработки знаков




 



Рисунок 6.7  – Блок умножения





Сумматор SME вычисляет порядок произведения E3=E1+E2-16383.

Умножитель мантисс умножает мантиссы по схеме с анализом младшего бита множителя со сдвигом множимого влево. 

Вариант такой схемы приведен на рис. 6.9. Для организации цикла используется счетчик циклов CTT. 

Умножение завершается нормализацией и округлением результата. Вариант схемы нормализации представлен на рис. 6.10, округления – на рис. 6.11.





Рисунок 6.9  – Структурная схема блока умножения мантисс

 


 



Рисунок 6.10  – Структурная схема блока нормализации



 



Рисунок 6.11  – Структурная схема блока округления






6.5. Блок микропрограммного управления



В состав БМУ (рис. 6.12) входят регистр команд RGК, регистр микрокоманд RGМК, схема управления последовательностью микрокоманд УПМ, мультиплексор кода условия МКУ; инвертор кода условия ИКУ, счетчик микрокоманд СМК, преобразователь кода операции ПКОп, мультиплексор адреса МК МУАД, память констант ПЗУК.

ПЗУ МК содержит микропрограммы выполняемых операций. RGМК хранит выбранную микрокоманду (микрокод) на время ее исполнения. В микрокоманде можно выделить часть, которая управляет операционными блоками - ОП, БПФ, БР, БОД, и часть, которая управляет самим БМУ. В МК, которая управляет БМУ входят следующие поля: CHA –управление адресом следующей МК, CC-определяет проверяемое логическое условие (ЛУ), I - бит инверсии условия, J- бит безусловного перехода, Адр/К (адреса/константы)- поле адреса или константы, которое содержит адрес следующей МК, адрес ПЗУ констант или небольшую константу К.

МКУ выделяет ЛУ, указанное СС, а ИКУ передает полученное значение Х на УПМ с инверсией или без нее в зависимости от бита I.

ПКОп преобразует код операции в начальный адрес НА микропрограммы этой операции или непосредственно в микрокод. УПМ управляет мультиплексором адреса МК МУАД в зависимости от полей CHA и J МК и значения условия Х.







 



10

  2   0

+1



STP



СT

RGK

ЛУ

Регистр микрокоманд

БР

J

X





УПМ

КОП     i

ПКОп

Адр/К

ИКУ

МКУ

CC

СМК

БВО

Адр/К

CHA

CC

I

J

БПФ

П

CHA

I

X

МУАД

+1

ПЗУ МК

ПЗУ Констант

Чтение





ЛУ





Упр ОП





HA



Упр БПФ





Упр БР





Упр БОД







i





K





Конст





Внутренняя шина БМУ

Внешняя шина





Рисунок 6.12  – Структурная схема БМУ







7. Моделирование операции FMul St,St(i)



Основные этапы моделирования:

1) постановка задачи;

2) разработка схемы алгоритма;

3) распределение регистров;

4) микропрограмма заданного алгоритма (с коментариями);

5) значения исходных данных и результатов;

6) протокол изменения состояния основных элементов модели в режиме «микрокоманда» (трасса);

7) проверка вручную правильности результата.

1 этап. Постановка задачи.

Моделирование имеет целью проверку правильности алгоритма и его окончательную отладку.

Смоделировать операцию умножения мантисс двух вещественных чисел (FMul St, St(i)). Умножение осуществляется с анализом младшего бита множителя со сдвигом множимого влево.

2 этап. Разработка схема алгоритма.

Схемы алгоритма представлены на рисунках 5.6 и 7.1.

3 этап. Распределение регистров.

Знак и характеристика первого числа хранятся в регистре BX (15ый бит – знак числа, биты 0-14 – характеристика), мантисса – в регистре BP. Знак и характеристика второго числа хранятся в регистре CX, мантисса – в регистре SI. Произведение получается в регистрах DX и DI (аналогично).

Также в микропрограмме используются дополнительные регистры RGQ и AX. AX - сначала для выделения знака числа, затем как маска. RGQ – младшая часть мантиссы второго операнда.

4 этап. Микропрограмма заданного алгоритма (с комментариями).

Микропрограмма по заданному алгоритму, с учетом распределения регистров представлена в таблице 7.1.

 



Рисунок 7.1. – Блок-схема алгоритма умножения





Таблица 7.1 – Микропрограмма операции FMul St,St(i) (начало).

a

b

ma

mb

mem

src

sh

n

alu

ccx

f

dst

wm

jfi

cc

cha

const

MK0 AX=BX

3

0

0

0

0

1

0

0

6

0

0

4

0

0

0

7

0000

MK1 AX=AX xor CX

1

0

0

0

0

1

0

0

e

0

0

4

0

0

0

7

0000

MK2 AX=AX & 8000h

0

0

0

0

0

5

0

0

9

0

0

4

0

0

0

7

8000

MK3 DX=AX

0

2

0

0

0

1

0

0

6

0

0

4

0

0

0

7

0000

MK4 BX=BX & 7FFFh

0

3

0

0

0

5

0

0

9

0

0

4

0

0

0

7

7FFF

MK5 CX=CX & 7FFFh

0

1

0

0

0

5

0

0

9

0

0

4

0

0

0

7

7FFF

MK6 BX=BX + CX

1

3

0

0

0

1

0

0

3

0

0

4

0

0

0

7

0000

MK7 BX=BX – 3FFFh

0

3

0

0

0

5

0

0

1

1

0

4

0

0

0

7

3FFF

MK8 DX= DX v BX RACT=Fh



Таблица 7.1 – Микропрограмма операции FMul St,St(i) (окончание).

a

b

ma

mb

mem

src

sh

n

alu

ccx

f

dst

wm

jfi

cc

cha

const

3

2

0

0

0

1

0

0

C

0

0

4

0

0

0

6

000F

MK9 AX=1

0

0

0

0

0

5

0

0

6

0

0

4

0

0

0

7

0001

MK A RGQ=BP

0

5

0

0

0

1

6

0

4

0

0

0

0

0

0

7

0000

MK B BP=0

0

5

0

0

0

5

0

0

6

0

0

4

0

0

0

7

0000

MK C IF (SI & AX)=0 GOTO E

0

6

0

0

0

1

0

0

9

0

0

0

0

0

1

3

000E

MK D DI=DI+BP

5

7

0

0

0

1

0

0

3

0

0

4

0

0

0

7

0000

MK E BP=L1(BP, RGQ)

0

5

0

0

0

1

A

1

4

0

0

4

0

0

0

7

0000

MK F SI=R1(SI) RACT=RACT-1 If RACT=0 GOTO C

0

6

0

0

0

1

2

1

4

0

0

4

0

0

0

4

000C

MK 10 DI=L1(DI)

0

7

0

0

0

1

8

1

4

0

0

4

0

0

0

7

0000

MK 11 HALT

0

0

0

0

0

1

0

0

6

0

0

0

0

5

0

7

0000



5 этап. Значения исходных данных и результатов.

Исходные данные: 

1-ый операнд: 3FFF A000



BX = 3FFF

BP = A000



2-ой операнд: 3FFE C000



CX = 3FFE

SI = C000



Результат: 3FFE F000



DX = 3FFE

DI = F000


6 этап. Трасса программы (таблица 7.2).



Таблица 7.2 – Трасса программы.

AX

BX

BP

CX

SI

DX

DI

RGQ

CMK

RFI

RACT

0000

3FFF

A000

3FFE

C000

0000

0000

0000

0000

00

0000

3FFF

3FFF

A000

3FFE

C000

0000

0000

0000

0001

00

0000

0001

3FFF

A000

3FFE

C000

0000

0000

0000

2

10

0000

0000

3FFF

A000

3FFE

C000

0000

0000

0000

3

04

0000

0000

3FFF

A000

3FFE

C000

0000

0000

0000

4

04

0000

0000

3FFF

A000

3FFE

C000

0000

0000

0000

5

00

0000

0000

3FFF

A000

3FFE

C000

0000

0000

0000

6

10

0000

0000

7FFD

A000

3FFE

C000

0000

0000

0000

7

00

0000

0000

3FFE

A000

3FFE

C000

0000

0000

0000

8

10

0000

0000

3FFE

A000

3FFE

C000

3FFE

0000

0000

9

10

000F

0001

3FFE

A000

3FFE

C000

3FFE

0000

0000

A

10

000F

0001

3FFE

A000

3FFE

C000

3FFE

0000

A000

B

0A

000F

0001

3FFE

0000

3FFE

C000

3FFE

0000

A000

C

04

000F

0001

3FFE

0000

3FFE

C000

3FFE

0000

A000

E

04

000F

0001

3FFE

0001

3FFE

C000

3FFE

0000

4000

F

04

000F

0001

3FFE

0001

3FFE

6000

3FFE

0000

4000

C

0A

000E

0001

3FFE

0001

3FFE

6000

3FFE

0000

4000

E

04

000E

0001

3FFE

0002

3FFE

6000

3FFE

0000

8000

F

00

000E

0001

3FFE

0002

3FFE

3000

3FFE

0000

8000

C

00

000D

…

…

…

…

…

…

…

…

…

…

…

0001

3FFE

2800

3FFE

0003

3FFE

0000

0000

C

00

0001

0001

3FFE

2800

3FFE

0003

3FFE

0000

0000

D

10

0001

0001

3FFE

2800

3FFE

0003

3FFE

2800

0000

E

00

0001

0001

3FFE

5000

3FFE

0003

3FFE

2800

0000

F

00

0001

0001

3FFE

5000

3FFE

0001

3FFE

2800

0000

C

10

0000

0001

3FFE

5000

3FFE

0001

3FFE

2800

0000

D

10

0000

0001

3FFE

5000

3FFE

0001

3FFE

7800

0000

E

00

0000

0001

3FFE

A000

3FFE

0001

3FFE

7800

0000

F

00

0000

0001

3FFE

A000

3FFE

0000

3FFE

7800

0000

10

00

0000

0001

3FFE

A000

3FFE

0000

3FFE

F000

0000

11

00

0000

0001

3FFE

A000

3FFE

0000

3FFE

F000

0000

12

10

0000



7 этап. Проверка вручную правильности результата.

а) BX=3FFF BP=A000 => 

S1=0, E1=3FFF, M1=A000

П1=3FFF-3FFF=0

X=1,010*1=1,012=1,2510

б) CX=3FFF SI=C000 =>

S2=0, E2=3FFE, M2=C000

П2=3FFE-3FFF=-1

Y=0,11002=0,7510

в) X*Y=0,75*1,25= 0,9375=(15/16)10=0,11112

П3=-1, E3=3FFE, M1=1,1112=F00016

DX=3FFE, DI=F000


Заключение



Целью данного курсового проекта является разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486, изучение структуры сопроцессора FPU. В результате выполнения данной работы был расписан принцип выполнения операций, разработаны блок-схемы выполнения этих операций, построены структурные схемы основных блоков процессора. 

Грамотная разработка подобных устройств дает необходимые первичные навыки будущим инженерам различных специальностей.


Список использованных источников



	Григорьев В.Л. Микропроцессор i486. Архитектура и программирование (в четырех книгах). М.: ГРАНАЛ, 1993. 382 с.

	Григорьев В.Л. Архитектура и программирование арифметического сопроцессора. М.: Энергоатомиздат, 1991.

	Злобин В.К., Григорьев В.Л. Программирование арифметических операций в микропроцессорах: учебное пособие для технических вузов, М: Высш. шк., 1991, 303 с.

	Исследование микропрограммируемого процессора: методические указания к лабораторным работам / РГРТА; Сост.: Волковыский В.Л., Елесина С.И., Никифоров М.Б. Рязань, 2001, 40 с.

	Проектирование процессора с плавающей точкой: методические указания к лабораторным работам / РГРТА; Сост.: Волковыский В.Л., Елесина С.И. Рязань, 2003, 32 с.







5