Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MU_KP1_3494

.pdf
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
630.38 Кб
Скачать

ВВЕДЕНИЕ

 

Методические указания

используются при курсовом

проектировании по дисциплине «Организация ЭВМ и систем». Проект включает в себя разработку устройства, реализующего набор команд из числа операций с плавающей точкой процессора семейства x86.

Рекомендуется следующая последовательность проектирования:

подробное описание заданных команд и порядка их выполнения, форматы данных, описание программной модели процессора;

разработка структурной схемы процессора и алгоритмов операций в виде содержательных граф-схем алгоритмов (ГСА);

моделирование операций;

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

выбор структуры микрокоманды МК, состава ее полей, кодирование микроопераций, микропрограммирование операций;

разработка структурной схемы блока микропрограммного управления.

Содержательная ГСА, структурная схема выполняются на листах стандартного формата в соответствии с действующими ГОСТами. В записке приводятся описание операций и алгоритмов, пояснения к схемам.

1. ФОРМАТЫ ДАННЫХ И СПЕЦИАЛЬНЫЕ СЛУЧАИ

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

Процессор оперирует данными в трех целых двоичных форматах - целое слово ЦС или 16int, короткое целое КЦ или 32int и длинное целое ДЦ или 64int; в трех вещественных форматах - с обычной точностью ОТ или 32real, с двойной точностью ДТ или 64real и с расширенной точностью РТ или 80real; в упакованном десятичном формате УПК или 80dec. Форматы чисел представлены на рис.1.1. Бит знака S определяет знак числа. Двоичные целые представляются в дополнительном коде. Значащие цифры вещественного числа находятся в поле мантиссы М=(F0).(F1)(F2)…(Fn), которая представляется в прямом коде. Поле порядка (Е) показывает фактическое положение двоичной точки в разрядах мантиссы. Порядок задается в смещенной форме, он равен истинному порядку (П), увеличенному на значение смещения D:

Е = П + D.

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

2

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

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

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

Таблица 1.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).

Покажем представление десятичного числа –247.375 в вещественных форматах. Двоичный код его равен –11110111.011B и истинный порядок равен +7. Смещенный порядок в трех вещественных форматах равен 134, 1030 и 16390. С учетом бита F0 имеем такие представления:

 

 

 

3

 

 

 

 

 

Формат

Знак

Порядок

 

Мантисса

ОТ

1

10000110

 

11101110110000…0

ДТ

1

10000000110

 

1110111011000000000000…0

РТ

1

100000000000110

 

11110111011000000000000…0

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

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

1.2. Специальные случаи

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

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

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

2. АРХИТЕКТУРА ПРОЦЕССОРА

2.1. Программная модель

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

4

ST(i) выбирается регистр Rj, где j=TOP+i (mod 8). Так, при TOP =3 и i=4

выбирается регистр R7, при TOP=3 и i=6 - регистр R1 и т.д.

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

С каждым регистром стека ассоциируется двухбитный тэг, характеризующий хранимое число: 00 - нормализованное число; 01 - истинный нуль; 10 - денормализованное число; 11 - пустой регистр.

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

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

Пусть В

-

точный

результат, А

и С - ближайшие к нему

представимые

в

заданном

формате числа:

A<B<С. Поле RC задает

режимы округления: 00 - округление к ближайшему - выбор из А и С, ближайшего к В; 01 - округление вниз - А; 10 - округление вверх - С; 11 - усечение - меньшее из А и С по модулю.

Младшие 6 битов CW хранят маски особых случаев. Если бит маски установлен, прерывания при соответствующем особом случае не происходит. Более подробно особые случаи рассматриваются в разделе 2.3. Неиспользуемые биты CW отмечены знаком *.

5

2.2.Система команд

2.2.1.Мнемонические обозначения

Мнемоники команд начинаются с буквы F (Floating). Вторая буква I (Integer) обозначает операцию с целым числом , буква B (Binary-coded- decimal) - операцию с десятичным данным. Предпоследняя или последняя буква R указывает обратную операцию вычитания или деления. Последняя буква P (Pop) означает, что операция завершается исключением из стека (инкремент TOP).

Типы операндов в памяти обозначаются так:

m16int, m32int, m64int - целые длиной 16, 32 и 64 бит;

m32real, m64real, m80real - вещественные ОТ, ДТ или РТ;

m80dec - упакованное двоично-десятичное число длиной 80 бит.

2.2.2.Форматы команд

Процессор с ПТ имеет четыре формата команд (рис 2.2). Команды формата а осуществляют обращение к памяти по адресу, определяемому полями mod, r/m, sib и disp. Адрес вычисляется целочисленным процессором. К началу операции он уже сформирован, и эти поля больше не используются. Бит [0] первого байта команды определяет тип операции - передача данного из памяти в стек или наоборот (бит [0] =1) или арифметические операции над операндом из памяти и вершиной стека

(бит[0]=0). Поле MF (Memory Format) определяет тип операнда: 00 - m32real, 01 - m32int или m80real, 10 - m64real, 11 - m16int, m64int или m80dec.

Рис.2.2. Форматы команд

Команды формата б осуществляют операции над вершиной стека и регистром ST(i). Бит R (Reverse) показывает, возвращается ли результат в вершину стека (R=0) или в ST(i) (R=1). Бит P=1 (Pop) указывает, что после операции производится извлечение из стека. Формат в относится к дополнительным арифметическим операциям и операциям над

6

константами. Операнды в них определяются неявно. Формат г используется для команд управления.

2.2.3.Команды передачи данных

К этой группе относятся команды загрузки, сохранения и обмена. Команды загрузки FLD src (загрузка вещественных), FILD src

(загрузка целых), FBLD src (загрузка десятичных) производят декремент указателя стека TOP и передачу операнда src в новую вершину стека ST с предварительным преобразованием в формат РТ. Если источником является ST(i), номер регистра соответствует ситуации до декремента TOP. Перед загрузкой и декрементом TOP проверяется тэг регистра ST(7). Этот регистр, который после декремента TOP станет новой вершиной стека, должен быть пуст, т. е. его тэг должен содержать код 11. В противном случае фиксируется переполнение стека.

Команды загрузки констант включают в стек константы нуля +0.0, единицы +1.0, числа π, двоичного логарифма десяти, двоичного логарифма числа е, десятичного и натурального логарифмов двух. Константы хранятся во внутренней постоянной памяти процессора, в формате, более точном, чем РТ (длина мантиссы 66 бит). При загрузке они округляются в соответствии с полем RC.

При операциях загрузки автоматически корректируется слово тэгов

TW.

Команды сохранения FST dst (сохранение вещественных), FSTP dst (сохранение вещественных с извлечением из стека), FIST dst (сохранение целых), FISTP dst (сохранение целых с извлечением из стека) осуществляют передачу из ST с преобразованием в формат получателя dst. Если формат dst отличен от РТ, производится округление. Если при округлении число изменяется, генерируется особый случай потери точности. Если число слишком велико для формата dst, фиксируется переполнение. Если число при преобразовании в ОТ или ДТ меньше минимального представимого, фиксируется антипереполнение.

Команда обмена FXCH ST(i) обменивает содержимое ST и ST(i). При пустом поле операнда обмен происходит между ST и ST(1).

2.2.4.Арифметические команды

Формы арифметических команд приведены в табл. 2.1, квадратные

скобки обозначают

неявные операнды. Аббревиатура OP (operation)

обозначает одну из следующих операций:

OP = Add

-

dst:= dst + src;

Sub

-

dst:= dst - src;

 

 

7

SubR -

dst:= src - dst;

Mul

-

dst:= dst * src;

Div

-

dst:= dst/src;

DivR -

dst:= src/dst.

Получателем dst является первый операнд команды.

Формы арифметических команд

 

Таблица 2.1

Форма команды

Мнемоника

Операнды

Пример записи

Стековая

FOp

[ST(1), ST]

Fsub

 

Регистровая

FOp

ST(i), ST

FAdd ST(i), ST

FAdd ST, ST(i)

 

 

 

Регистровая

FOpP

ST(i), ST

FMulP ST(3), ST

с извлечением

 

 

 

 

 

 

[ST], m32real

FAdd

m32real

Операнд

FOp

[ST], m64real

FSub

m64real

в памяти

[ST], m16int

FSubR m16int

 

 

 

[ST], m32int

FAdd

m32int

Результат стековой операции записывается в ST(1), а затем выполняется извлечение из стека и ST(1) становится вершиной стека ST. Поэтому, например, команда FAdd эквивалентна команде FaddP ST(1), ST.

В регистровых командах получателем может быть ST или ST(i), в регистровых с извлечением - только ST(i), при операнде в памяти получатель всегда ST.

2.2.5.Дополнительные арифметические команды

Из 8 дополнительных команд в курсовом проекте возможны 6:

FSqrt (извлечение корня): ST:=SQRT(ST), при ST < 0 - особый случай недействительной операции;

FAbs (абсолютная величина): ST:=ABS(ST);

FChS (смена знака): ST:= -ST;

FScale (масштабирование): E(ST):=E(ST)+ST(1);

FXtract (расщепление числа на порядок и мантиссу);

FRndInt (округление до большего, меньшего или ближайшего целого): ST := округленное значение ST.

В операции FScale содержимое ST(1) интерпретируется как целое двоичное число и прибавляется к смещенному порядку E(ST) регистра ST, что эквивалентно умножению ST на целую степень двойки.

Команда FXtract расщепляет значение в ST на истинный порядок E(ST) - 16383 и мантиссу M(ST). Порядок заменяет исходный операнд, а мантисса включается в стек. Мантисса и порядок представляются в стеке

8

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

2.2.6.Команды сравнения и анализа

Эти команды анализируют число в вершине стека и формируют код условия в слове SW. Сравнения производятся с нулем, с регистром стека, с операндом в памяти: FCom - сравнение ST и ST(1), FCom src -

сравнение ST с вещественным m32real, m64real или ST(i), FICom src -

сравнение ST с целым m16int, m32int или 64int; FTST - сравнение с нулем. Команды FComp и FIComp выполняются так же, как FCom и FICom, но с последующим извлечением из стека, а команда FCompP сравнивает ST и ST(1) с двукратным извлечением из стека, то есть с уничтожением сравниваемых данных. Код условия определяется в соответствии с табл. 2.2.

Установка кода условия

Таблица 2.2

Условие

С3

С2

С0

ST > src

0

0

0

ST < src

0

0

1

ST = src

1

0

0

 

2.2.7. Команды управления

 

В курсовом проекте возможны следующие команды управления :

 

FINIT

инициализация процессора: загрузка

 

 

CW:=037EH;

 

 

SW:=0;

 

 

TW:=FFFFH;

 

FIDSW m2byte

загрузка CW двухбайтовым целым из

 

 

памяти;

 

FSTCW m2byte

сохранение CW в памяти;

 

FSTSW m2byte/AX

сохранение SW в памяти или

 

 

аккумуляторе;

 

FLDENV m6byte/m12byte

загрузка сpеды - pегистров SW,CW и

 

 

TW из памяти;

 

FSTENV m6byte/m12byte

сохранение сpеды в памяти;

 

FSAVE m86byte/m92byte

сохранение полного состояния -

 

 

сpеды и pегистpового стека в памяти;

 

FRSTOR m86byte/m92byte

загpузка полного состояния;

 

FINCSTP

инкpемент указателя стека;

 

FDECSTP

декpемент указателя стека;

 

9

FFREE

освобождение регистра.

После пеpедачи

полного состояния в память (команда FSAVE)

пpоцессоp pеинициализиpуется как в команде FINIT.

2.3. Особые случаи

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

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

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

Z - деление на нуль;

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

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

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

Особым случаям соответствуют флажки в слове состояния SW (см. рис.2.3): IE,ZE,DE,OE,UE,PE. При любом особом случае устанавливается бит суммарной ошибки ES , а также вырабатывается активный сигнал ошибки FERR. В слове состояния CW имеются биты маски IM, DM, ZM, OM, UM, PM. Если особый случай замаскирован (бит маски установлен ), процессор действует по умолчанию. Если бит маски сброшен, происходит прерывание.

Рис.2.3. Биты флажков и маски особых случаев

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

Этот случай возникает при арифметических операциях (например, извлечение квадратного корня из отрицательного числа), а также при переполнении стека (попытка включения в непустой регистр ) и при его антипереполнении (попытка извлечения из пустого регистра ). Стековые операции распознаются по биту SF=1 в SW. Для различения антипереполнения от переполнения служит бит C1 в SW: C1=1 при переполнении и C1=0 при антипереполнении.

2.3.2. Деление на нуль

Случай Z возникает при делении конечного ненулевого операнда на нуль. Маскированная реакция - возвращение знаковой бесконечности (знак равен сумме по модулю 2 знаков операндов, Е=11…1, М=1.00..0).

10

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

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

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

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

3.ВНУТРЕННЯЯ АРХИТЕКТУРА ПРОЦЕССОРА

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

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

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

Приведенная структура может быть модифицирована. В частности, возможно объединение БПФ и БОД или совместное использование ими общих элементов - программируемого сдвигателя, сумматора и.т.п.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]