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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.11.2010
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Федеральное агентство по образованию Российской Федерации

Государственное образовательное учреждение высшего

профессионального образования

РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ

Кафедра ЭВМ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОМУ ПРОЕКТУ

по дисциплине

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

по теме

«ПРОЕКТИРОВАНИЕ ПРОЦЕССОРА С ПЛАВАЮЩЕЙ ТОЧКОЙ»

Выполнил

Руководитель проекта:

________________________

дата сдачи на проверку, подпись

__________________ __________________

оценка дата защиты, подпись

Рязань, 2008г.

Техническое задание к курсовому проекту

1) Набор операций:

· FSub ST(i),ST - вычитание;

· FILd m32int - загрузка операнда из памяти в стек.

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

3) Длина слова ОП: 128 бит.

4) Моделируемая операция: FSub ST(i),ST.

Обозначения и сокращения

БМУ - блок микропрограммного управления

БОД - блок обработки данных

БР - блок регистров

БП - блок памяти

БПФ - блок преобразования форматов

ДК - дополнительный код

Е - смещенный порядок

ИКУ - инвертор кода условия

ЛУ - логические условия

М - мантисса

МК - микрокоманда

МКУ - мультиплексор кода условия

МУАД - мультиплексор адреса

ОП - оперативная память

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

ОТ - обычная точность

П - порядок (истинный порядок)

ПЗУ - постоянное записывающее устройство

ПЗУК - память констант

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

РТ - расширенная точность

СМК - счетчик микрокоманд

УПМ - схема управления последовательностью команд

УПК - упакованный код

ФПР - формирователь признака результата

Содержание

операция формат регистр микропрограммный

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

Обозначения и сокращения

Содержание

Введение

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

1.1 FSub ST(i),ST - вычитание

1.2 FILD m32int - загрузка операнда из памяти в стек

2. Описание форматов данных

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

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

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

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

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

5.1 Алгоритм операции FSub ST(i),ST

5.2 Алгоритм операции FILD m32int

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

6.1 Оперативная память

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

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

6.4 Блок обработки данных (блок вычитания)

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

7. Структура микрокоманды

8. Моделирование операции вычитания

Заключение

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

Введение

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

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

Конструктивно ППТ состоит из следующих блоков:

· Блока памяти;

· Блока преобразования форматов данных;

· Блока регистров;

· Блока обработки данных;

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

Использование ППТ позволяет существенно повысить быстродействие ПЭВМ.

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

1.1 FSub ST(i),ST - вычитание

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

ST(i) ST(i) - ST

Один из операндов находится в вершине стека, другой в регистре ST(i). Оба операнда имеют формат 80real.

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

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

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

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

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

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

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

7 0 7 0

11011

R

P

КОп

11

КОп

ST(i)

Рис.1 Формат команды FSub ST(i),ST

Бит R (Reverse) показывает, возвращается ли результат в вершину стека (R=0) или в ST(i) (R=1). В данном случае результат возвращается в ST(i) и поэтому R=1. Бит P=1 (Pop) указывает, что после операции производится извлечение из стека. Поле КОп определяет код операции.

1.2 FILD m32int - загрузка операнда из памяти в стек

Эта операция производит декремент указателя стека ТОР и передачу операнда в новую вершину стека ST с предварительным преобразованием в формат РТ.

TOP TOP - 1; ST m32int

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

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

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

Формат команды представлен на рис. 2:

7 0 7 0 7 0 7 0

11011

MF

1/0

mod

1

КОп

r/m

SIB

Disp

Рис. 2. Формат команды FILD m32int

Адрес операнда m32int определяется полями mod, r/m, sib и disp, где:

mod - режим адресации;

r/m - при mod 11 - указатель регистров, участвующих в формировании адреса,

-при mod=11 - адрес регистра;

Адрес вычисляется целочисленным процессором. К началу операции он уже сформирован. Бит [0] первого байта команды определяет тип операции.

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

Поле MF определяет тип операнда. В нашем случае, при m32int MF=01.

Поле Коп определяет код операции.

2. Описание форматов данных

Процессор оперирует данными в трех целых двоичных форматах - целое слово ЦС или 16int, короткое целое КЦ или 32int и длинное целое ДЦ или 64int; в трех вещественных форматах - с обычной точностью ОТ или 32real, с двойной точностью ДТ или 64real и с расширенной точностью РТ или 80real; в упакованном десятичном формате УПК или 80dec. В данной курсовой работе используются только два формата - ОТ и РТ. Форматы чисел представлены на рис.3.

Бит знака S определяет знак числа. Двоичные целые представляются в дополнительном коде. Значащие цифры вещественного числа находятся в поле мантиссы М=(F0).(F1)(F2)…(Fn), которая представляется в прямом коде. Поле порядка (Е) показывает фактическое положение двоичной точки в разрядах мантиссы. Порядок задается в смещенной форме, он равен истинному порядку (П), увеличенному на значение смещения D:

Е = П + D.

Значение числа с плавающей точкой равно (-1)s * М * 2(E-D), где n равно 23, 52 или 63.

Параметры форматов вещественных чисел приведены в табл.1.

Рис.3. Форматы данных

Параметры форматов вещественных чисел

Таблица 1

Параметр

Формат

Одинарный ОТ

Двойной ДТ

Расширенный РТ

Длина формата в битах

32

64

80

Длина мантиссы (точность)

23

52

64

Длина порядка в битах

8

11

15

Emax

+127

+1023

+16383

Emin

-126

-1022

-16382

Смещение порядка (D)

+127

+1023

+16383

Вещественные числа в формате РТ имеют явный бит F0 с весом 1, а числа форматов ОТ и ДТ имеют неявный старший бит F0=1. Следовательно, за исключением числа нуль мантисса состоит из целой части и дроби в следующем виде:

1.(F1)(F2)…(Fn).

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

Покажем представление десятичного числа -127.125 в вещественных форматах. Двоичный код его равен -1111111.001 и истинный порядок равен +6. Смещенный порядок в трех вещественных форматах равен 133, 1029 и 16389. С учетом бита F0 имеем такие представления (таблица 2):

Представление числа -127.125 в вещественных форматах Таблица 2

Формат

S

E

M

ОТ

1

10000101

0001111010000…0

ДТ

1

10000000101

000111101000000000000…0

РТ

1

100000000000101

1000111101000000000000…0

Покажем представление числа -122 в целых форматах. Двоичный код его равен -1111010. Так как число отрицательное то переводим его в ДК: 1..110000110. Количество единиц в старших битах числа зависит от формата.

Десятичные числа формата УПК (80dec) содержат 18 десятичных цифр D17 - D0 в коде 8421 и представлены в прямом коде. Старший бит левого байта содержит знак, остальные 7 бит содержат нули. Пример представления чисел в данном формате показан на рис.4.

79 78 72 71 0

1

00..0

00..0 0001 0101 0110

S D17 … D3 D2 D1 D0

Рис.4. Представление числа -156 в формате УПК

Данные, пересылаемые из памяти в процессор, преобразуются в формат РТ.

Вещественные форматы допускают представление некоторых специальных значений:

Денормализованное вещественное - число, меньшее по модулю минимального нормализованного числа для каждого из двух форматов. Оно имеет ненулевую мантиссу и минимальный смещенный порядок E=0. Бит целой части мантиссы равен 0. При преобразовании денормализованных чисел формата ОТ в формат РТ они автоматически нормализуются.

Истинный нуль кодируется нулевыми смещенным порядком и мантиссой. Значение нуль в вещественных форматах является знаковым.

Бесконечность возникает при переполнении порядка. Кодируется максимально возможным порядком E = 11..1 и M = 1.00..0. Значение бесконечности является знаковым.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ш P - неточный результат (точность).

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

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

*

С3

TOP

C2

C1

C0

ES

SF

PE

UE

OE

ZE

DE

IE

Рис.6 Слово состояния SW

В слове управления CW поле RC задает режим округления.

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

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

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

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

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

Младшие 6 битов CW хранят маски особых случаев: IM, DM, PM, OM, UM, PM (рис.7). Если особый случай замаскирован (бит маски установлен), процессор действует по умолчанию. Если бит маски сброшен, происходит прерывание. Неиспользуемые биты CW отмечены знаком *.

15 5 4 3 2 1 0

***

RC

PC

11

PM

UM

OM

ZM

DM

IM

Рис.7 Слово управления CW

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

Этот случай возникает при переполнении стека (попытка включения в непустой

регистр) и при его антипереполнении (попытка извлечения из пустого регистра ).

Стековые операции распознаются по биту SF=1 в SW. Для различения антипереполнения от переполнения служит бит C1 в SW: C1=1 при переполнении и C1=0 при антипереполнении.

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

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

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

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

Антипереполнение - U

Возникает, если порядок результата меньше минимального в формате РТ. Маскированная реакция - денормализация числа или запись кода нуля если E<(-67).

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

Возникает, при округлении результата операции. Маскированная реакция - установка бита P и продолжение операции.

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

Укрупненная блок-схема процессора представлена на рис.8. В него входят оперативная память ОП, блок преобразования форматов данных БПФ, блок регистров БР, блок обработки данных БОД, блок микропрограммного управления БМУ. БПФ и ОП связаны 128-битной шиной, через нее передаются данные формата 32int. БПФ преобразует операнды из формата КЦ в формат РТ. БР включает в себя регистровый стек, регистры слов тэгов, управления и состояния и вспомогательные схемы. При загрузке в стек передается из БПФ 80-битный операнд в формате РТ. Операнды передаются из БР в БОД одновременно по двум 80-битным шинам чтения. Результаты из БОД в БР передаются по 80-битной шине записи. Управление операциями осуществляется БМУ путем выработки последовательности микрокодов МК. Обратная связь от БПФ, БР и БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.

Помимо обмена данными между блоками передается дополнительная информация, например признаки нуля.

Рис.8 Блок-схема процессора

5. Алгоритмы выполнения заданных операций

Порядок выполнения команд в процессоре

1) выборка команды из памяти и определение адреса следующей команды;

2) декодирование команды;

3) вычисление адреса операндов;

4) считывание операндов;

5) собственно выполнение команды и формирование признака результата;

6) запись результата.

В данном курсовом проекте считаем, что п.1-3 уже выполнены и адреса операндов уже известны.

5.1 Алгоритм операции FSub ST(i),ST

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

1) Чтение операндов в БОД;

2) Уравнивание порядков;

3) Вычитание мантисс;

4) Формирование результата;

5) Запись результата.

Первый операнд читается из регистра стека ST(i) в рабочий регистр RG1: RG1=ST(i). Второй операнд читается из вершины стека в рабочий регистр RG2: RG2=ST(0). Сумма формируется в RG3.

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

Прежде чем сделать операцию вычитания мантисс, необходимо уравнять порядки. Для этого вначале находим ?Е = E1 - E2. Если ?Е > 0, то производится сдвиг М2 на ?Е вправо (dec ?Е), если ?Е < 0, то сдвигаем М1 на ?Е вправо (inc ?Е). Уравнивание заканчивается при ?Е=0. Если ?Е > 67, то сразу обнуляем сдвигаемую мантиссу, чтобы

исключить ненужные сдвиги. Порядок результата Е3 равен большему из Е1 и Е2.

Обработка мантисс зависит от их знаков и происходит в соответствии с табл.3, где Sm - знак разности мантисс.

Обработка мантисс

Таблица 3

S1

S2

Действие над мантиссами

S3

0

0

M1 - M2

Sm

0

1

M1 + M2

0

1

0

M1 + M2

1

1

1

M2 - M1

Sm

В зависимости от знаков операндов производим сложение или вычитание мантисс.

Операция вычитания FSub завершается нормализацией и округлением результата:

o преобразование отрицательной разности в М3 в прямой код;

o если произошло переполнение мантиссы, то делаем нормализацию вправо: М3 = R1(M3), E3= E3 + 1;

o сдвиг М3 на k бит влево и вычитание k из Е3, если М3 содержит k ведущих нулей (нормализация влево) либо обнуление E3, если M3 = 0;

o округление М3 до 64 бит в зависимости от режима округления - поле RC (табл.4), r - двоичный код в отбрасываемых битах мантиссы (при потере точности устанавливается флажок P).

Установка флажка O в случае переполнения порядка (маскированная реакция: запись кода бесконечности E = 11..1, M = 1.00..0);

o Установка флажка U и денормализация в случае антипереполнения порядка (E3 < 0). Денормализация выполняется как маскированная реакция. Если Е3>(-64), М3 сдвигается на ABS(Е3) битов вправо, а Е3 обнуляется. Если Е3<(-63), результат принимается равным нулю;

Округление результата

Таблица 4

RC

Режим

Действие округления

00

К ближайшему

Если r < 1000, то отбросить младшие биты.

Если старший отбрасываемый бит 1 (r >=1000), то прибавить 1 к младшему сохраняемому биту

10

Вверх

01

Вниз

При любом значении r отбрасываются младшие биты

11

Усечение

Сформированный в RG3 результат записывается в регистр стека ST(i): ST(i):=RG3.

Рис.9. Алгоритм операции FSub ST(i), ST

5.2 Алгоритм операции FILD 32 int

Чтение операнда из ОП;

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

Преобразование операнда из формата 32 int в формат 80 real;

Запись операнда в формате 80 real в стек БР.

1 этап.

Адрес данного к началу операции вычислен и находится в адресном регистре EAR. По заданию длина слова ОП равна 128 бит. Поэтому операнд выбирается в регистр чтения RGRW за одно обращение:

RGRW = MEM[EAR] (Рис. 10).

Рис.10. Организация чтения и записи памяти

2 этап.

Операнд может занимать разряды [127:96], [111:80], [95:64], [79:48], [63:32], [47:16] или [31:0] регистра RGRW, поэтому с помощью мультиплексора приводим его к стандартному виду в промежуточном регистре RGP, а затем позиционируем в RGD (рис.9):

ь RGD[79]=RGP[31]- позиционирование знака;

ь RGD[63:32]=RGP[31:0] -позиционирование мантиссы;

ь В биты RGD[78:64, 31:0] записать нули.

Рис.9 Позиционирование m32int

3 этап.

Число формата КЦ в формат РТ преобразуется в следующей последовательности.

RGD представляем в виде субрегистров знака S (RGD[79]), порядка E (RGD[78:64]) и мантиссы M (RGD[63:0]).

· Если число равно нулю, то результатом будет код нуля в формате РТ: Е=0, М=0.

· если число отрицательное, преобразовать его в прямой код;

· записать в биты порядка значение 16414 (16383 + 31)

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

4 этап.

Преобразованный операнд записывается в вершину стека ST(0): ST(0):=RGD.

Блок-схема алгоритма FILD 32 int представлена на Рис.11.

Рис.11 Блок-схема алгоритма FILD m32int.

6.СТРУКТУРНЫЕ СХЕМЫ БЛОКОВ ПРОЦЕССОРА

6.1 Блок памяти

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

В курсовом проекте адресуются данные длиной 128 бит. Адресация памяти для заданных форматов приведена на рис.12. При выборке из ОП читается всегда полное слово MW в регистр чтения-записи RGRW[127:0]. Память выполнена в виде восьми банков Б7, Б6, Б5, Б4, БЗ, Б2, Б1, БО, которые хранят соответственно двухбайтовые слова W7, W6, W5, W4, WЗ, W2, W1, WО всех слов памяти. Выделение из MW данных формата m32int происходит в БПФ. Схема организации памяти приведена на рис 13. Здесь БП - блок памяти (банки Б7-Б0), EAR - регистр исполнительного адреса. Схема управляется сигналами (битами МК) RD- чтение, MEM-обращение к памяти.

W7 W6 W5 W4 W3 W2 W1 W0

m32

m32

m32

m32

m32

m32

m32

Риc.12.Адресация памяти для формата m32int

Рис.13. Организация чтения памяти

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

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

Рис.14. Укрупнённая схема БПФ.

Для заданного варианта структурная схема блоков КПП и ППФ приведена на рис.16.

После чтения ОП в регистре RGRW находится второй операнд в разрядах [127:96] или [111:80], или [95:64], или [79:48], или [63:32] , или [47:16], или [31:0]. Чтобы выбрать нужные разряды, используем мультиплексор MX, на информационные входы которого подаем соответствующие разряды, а на управляющие входы - младшие разряды адреса EAR[2:0]. С выхода MX получим операнд в формате 32int . Далее позиционируем разряды с выхода сумматора в соответствующие разряды знака (для знака достаточно триггера знака) и мантиссы; мантиссу пропускаем через управляемое знаковым битом ALU, которое переводит отрицательное число в ПК. Для хранения мантиссы берём регистр сдвига. Он сдвигает мантиссу влево до появления единицы в старшем разряде, при этом счётчик СТ считает количество сдвигов. Для определения порядка на один вход ALU подаём константу 16383+31=16414, а на другой количество сдвигов мантиссы, и производим вычитание. Затем записываем порядок и мантиссу в соответствующие биты RGD.

Рис.15. Схема КПП и ППФ

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

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

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

Запись может производиться из регистра результата БОД и из БПФ.

Рис.16. Структурная схема блока регистров

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

6.4 Блок обработки данных (блок вычитания)

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

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

Рис.17. Структурная схема блока обработки данных

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

Сумматор порядков SME выполняет операции вычитания порядков Е1-Е2, а также передачу Е1 или Е2 на выход SME.

Схема обработки знаков определяет действие над мантиссами и знак результата S3 в зависимости от знаков операндов S1, S2 и знака разности мантисс Sm (табл. 3).

Порядки уравниваются сдвигом вправо мантиссы числа с меньшим порядком на dE разрядов, где dE - разность большего и меньшего порядков. Для фиксации разности порядков используется специальный регистр RGDE. В случае если dE > 67, сразу обнуляют сдвигаемую мантиссу, чтобы исключить ненужные сдвиги. Если dE >0, производятся сдвиг М2 и декремент dE, а при dE<0 - сдвиг М1 и инкремент dE. Уравнивание заканчивают при dE=0. Порядок результата Е3 равен большему из Е1 и Е2.

Рис.18. Структурная схема БВО вычитания

Регистры М1 и М2 организованы как регистры сдвига. Схема нормализации (рис. 19) и округления совместно со схемой формирования признака результата выполняет:

o преобразование отрицательной разности в М3 в прямой код;

o если произошло переполнение мантиссы, то делаем нормализацию вправо: М3 = R1(M3), E3= E3 + 1;

o сдвиг М3 на k бит влево и вычитание k из Е3, если М3 содержит k ведущих нулей (нормализация влево) либо обнуление E3, если M3 = 0;

o округление М3 до 64 бит в зависимости от режима округления - поле RC (табл.3), r - двоичный код в отбрасываемых битах мантиссы (при потере точности устанавливается флажок P).

o Установка флажка O в случае переполнения порядка (маскированная реакция: запись кода бесконечности E = 11..1, M = 1.00..0);

o Установка флажка U и денормализация в случае антипереполнения порядка (E3 < 0). Денормализация выполняется как маскированная реакция. Если Е3>-64, М3 сдвигается на ABS(Е3) битов вправо, а Е3 обнуляется. Если Е3<(-63), результат принимается равным нулю.

Рис.19. Схема нормализации.

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

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

Рис.20. Схема БМУ.

7. Структура микрокоманды

Структура микрокоманды определяется функциональной схемой процессора. В МК можно выделить зоны ОП, БПФ, БР, БОД, БМУ управляющие одноимёнными блоками и зону константы КОНСТ. Зоны разбиты на поля, каждое управляет определённым узлом - мультиплексором, сдвигателем и т.д. В некоторых блоках реализовано сочетание микропрограммного и аппаратного управления.

В данной курсовой работе микрокоманда состоит из следующих полей (жирным шрифтом отмечены значения полей по умолчанию):

Ш Зона ОП

ь RM - управление чтением из памяти

v 0 - нет операции

v 1 - чтение

Ш Зона БПФ

ь RGRW - управление чтением и записью в регистр RGRW

v 00 - нет операции

v 01 - чтение

v 10 - запись

ь RGD - управление чтением и записью в регистр RGD

v 00 - нет операции

v 01 - чтение

v 10 - запись

ь RGSM - управление регистром сдвига RGSM

v 00 - нет операции

v 01 - чтение

v 10 - запись

Ш Зона БР

ь RWST - управление чтением и записью в вершину стека

v 00 - нет операции

v 01 - чтение

v 10 - запись

ь EI - управление чтением и записью в ST(i)

v 0 - чтение или запись в ST

v 1 - чтение или запись в ST(i)

ь MX - управление мультиплексором MX

v 0 - БОД - шина A

v 1 - БПФ - шина A

Ш Зона БОД

ь RG1 - управление регистром RG1

v 000 - нет операции

v 001 - чтение порядка

v 010 - чтение знака и мантиссы

v 011 - запись

v 100 - сдвиг мантиссы на 1 вправо

ь RG2 - управление регистром RG2

v 000 - нет операции

v 001 - чтение порядка

v 010 - чтение знака и мантиссы

v 011 - запись

v 100 - сдвиг мантиссы на 1 вправо

ь RG3 - управление регистром RG3

v 00 - нет операции

v 01 - чтение

v 10 - запись

v 11 - округление и нормализация содержимого регистра

ь SME - управление сумматором порядков

v 00 - нет операции

v 01 - вычитание порядков

v 10 - передача на выход первого порядка

v 11 - передача на выход второго порядка

ь MX - управление мультиплексором MX

v 0 - SME - RGDE

v 1 - ALU - RGDE

ь RGDE - управление записью и чтением из регистра RGDE

v 00 - нет операции

v 01 - чтение

v 10 - запись

v 11 - чтение и запись

Ш Зона БМУ (подробное описание полей дано в разделе 6.5)

ь CHA

v 000 - CONT

v 001 - JZ

v 010 - JMAP

v 011 - JS

v 100 - JP

v 101 - RET

ь CC - условие перехода

v 000 - ES=1

v 001 - IE=1

v 010 - DE=1

v 011 - OE=1

v 100 - UE=1

v 101 - PE=1

v 110 - разность порядков равна 0

v 111 - разность порядков отрицательна

ь J - условный/безусловный переход

v 0 - переход по условию

v 1 - безусловный переход

ь I - инверсия условия

v 0 - не инвертировать условие

v 1 - инвертировать условие

8. МОДЕЛИРОВАНИЕ

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

Смоделировать операцию вычитания двух чисел на модели микропрограммируемого процессора «MICRO».

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

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

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

Знак и порядок первого числа хранятся в регистре АX (15ый бит - знак числа, биты 0-14 - порядок), мантисса - в регистре BX. Знак и порядок второго числа хранятся в регистре CX, мантисса - в регистре DX. Разность получается в регистрах AX и BX (аналогично).

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

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

Рисунок 21 - Алгоритм выполнения операции вычитания

Рисунок 22 - Алгоритм выполнения подпрограммы

Микропрограмма:

Комментарии к микропрограмме:

МК00: Умножение содержимого регистра АХ на 8000h, выделение старшего (знакового) бита первого числа (запоминаем значение флажков).

МК01: Условный переход по адресу 000С при выполнении условия: знаковый бит =0 (проверка флажка Z на 1).

МК02: Умножение содержимого регистра СХ на 8000h, выделение старшего (знакового) бита второго числа (запоминаем значение флажков).

МК03: Условный переход по адресу 0009 при выполнении условия: знаковый бит =0 (проверка флажка Z на 1).

МК04: Вычитание мантисс DХ-ВХ c cохранением результата вычитания.

МК05: Переносим содержимое регистра ВХ в промежуточный регистр SP.

МК06: Умножение содержимого регистра SP на 8000h, выделение старшего (знакового) бита мантиссы результирующего числа.

МК07: Безусловный переход к МК21 (к подпрограмме).

МК08: Безусловный переход к МК15.

МК09: Суммирование мантисс DX+BX c фиксацией флажков и сохранением результата.

МК0А: Заносим в регистра SP константу 8000h, т.к. знак результирующего числа заведомо отрицателен (1-е число отрицательное, 2-е - положительное).

МК0В: Безусловный переход к МК15.

МК0С: Умножение содержимого регистра СХ на 8000h, выделение старшего (знакового) бита второго числа (запоминаем значение флажков).

МК0D: Условный переход по адресу 0011 при выполнении условия: знаковый бит =0 (проверка флажка Z на 1).

МК0Е: Суммирование мантисс DX+BX c фиксацией флажков и сохранением результата.

МК0F: В регистр SP заносим значение 0000h.

МК10: Безусловный переход к МК15.

МК11: Вычитание мантисс ВХ-DХ c cохранением результата вычитания.

МК12: Переносим содержимое регистра ВХ в промежуточный регистр SP.

МК13: Умножение содержимого регистра SP на 8000h, выделение старшего (знакового) бита мантиссы результирующего числа.

МК14: Безусловный переход к МК21 (к подпрограмме).

МК15: Условный переход по адресу 0019 при выполнении условия: осуществлен перенос (проверка флажка C на 0).

МК16: Логический сдвиг содержимого регистра ВХ вправо на 1 разряд.

МК17: Суммируем содержимое регистра ВХ с константой 8000h.

МК18: Увеличиваем порядок результирующего числа (АХ) на 1.

МК19: Умножение содержимого регистра АХ на константу 7FFFh.

МК1А: Суммируем содержимое регистров АХ и SP.

МК1В: Умножение содержимого регистра ВХ на 8000h, выделение старшего (знакового) бита результирующего числа (запоминаем значение флажков).

МК1С: Условный переход по адресу 0020 при выполнении условия: старший бит =1 (проверка флажка Z на 0).

МК1D: Логический сдвиг содержимого регистра ВХ влево на 1 разряд.

МК1Е: Уменьшение содержимого регистра АХ на 1.

МК1F: Безусловный переход к МК1В.

МК20: Формирование признака STOP.

МК21: Умножение содержимого регистра ВХ на 8000h, выделение старшего (знакового) бита числа (запоминаем значение флажков).

МК22: Условный переход по адресу 0024 при выполнении условия: знаковый бит =0 (проверка флажка Z на 1).

МК23: Переводим содержимое регистра ВХ в дополнительный код.

МК24: Возврат из подпрограммы.

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

Найдем разность двух положительных чисел:

25,25 - 15 = 10,25

Распределение регистров:

25,25: AX=4003, BX=CA00;

15: CX=4003, DX=7800.

Трасса Таблица 6

МК

RGA

RGB

ALU

SDA

AX

BX

DX

CX

SP

N

Z

00

0000

0000

0000

0000

4003

СA00

7800

4003

0000

0

0

01

4003

4003

0000

0000

4003

CA00

7800

4003

0000

0

1

0C

4003

4003

4003

4003

4003

CA00

7800

4003

0000

0

0

0D

4003

4003

0000

0000

4003

CA00

7800

4003

0000

0

1

11

4003

4003

4003

4003

4003

CA00

7800

4003

0000

0

0

12

7800

CA00

5200

5200

4003

5200

7800

4003

0000

0

0

13

5200

0000

5200

5200

4003

5200

7800

4003

5200

0

0

14

4003

5200

0000

0000

4003

5200

7800

4003

0000

0

1

21

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

22

4003

5200

0000

0000

4003

5200

7800

4003

0000

0

1

24

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

15

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

19

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

1A

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

1B

0000

4003

4003

4003

4003

5200

7800

4003

0000

0

0

1C

4003

0000

0000

0000

4003

5200

7800

4003

0000

0

1

1D

4003

4003

4003

4003

4003

5200

7800

4003

0000

0

0

1E

4003

5200

5200

A400

4003

A400

7800

4003

0000

0

0

1F

4003

4003

4002

4002

4002

A400

7800

4003

0000

0

0

1B

4002

4002

4002

4002

4002

A400

7800

4003

0000

0

0

1C

4002

A400

8000

8000

4002

A400

7800

4003

0000

1

0

20

4002

4002

4002

4002

4002

A400

7800

4003

0000

0

0

21

4002

4002

4002

4002

4002

A400

7800

4003

0000

0

0

Результат:

АХ=4002;

ВХ=А400.

Проверка правильности работы микропрограммы:

M1 = 25,2510 = 11001.01002 = СА00h

M2 = 1510 = 11112 = F000h

E1 = 3FFF+4 = 4003h

E2 = 3FFF+3 = 4002h

Т.к. по условию числа даны уже с уравненными порядками, необходимо уравнять порядки вручную.

М2 = 111.12 = 7800h

Е2 = 3FFF+4 = 4003h

Порядки уравнены. Теперь произведем вычитание с учетом знаков. Оба числа положительны.

M = M1-M2 = 5200h = 1010012

E = 4003h

M = 10100102 = A400h = BX

E = 4002h = AX

9. ЗАКЛЮЧЕНИЕ

Целью данного курсового проекта являлась разработка устройства, реализующего набор команд из числа операций с плавающей точкой процессора семейства x486.

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

В данном проекте устройство должно реализовывать 2 операции: FILD m32int и FSub ST(i), ST. Моделирование операции вычитания необходимо для проверки правильности разработанного алгоритма.

В данном случае при моделировании получены верные результаты на различных наборах исходных данных.

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

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

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

3. Организация ЭВМ и систем: Методические указания к курсовому проекту/ РГРТА, С.И. Елесина, М.Б. Никифоров.

4. Организация ЭВМ и систем: Методические указания к лабораторным работам/ РГРТА, С.И. Елесина, М.Б. Никифоров, Рязань, 2004.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.