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

ВВЕДЕНИЕ

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

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

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

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

 

  1. 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.

Параметры форматов вещественных чисел приведены в табл.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 имеем такие представления:

 

Формат

Знак

Порядок

Мантисса

ОТ

1

10000110

11101110110000…0

ДТ

1

10000000110

1110111011000000000000…0

РТ

1

100000000000110

11110111011000000000000…0

 

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

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

 

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

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

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

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

 

  1. 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. При обращении к 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 отмечены знаком *.

 

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) указывает, что после операции производится извлечение из стека. Формат в относится к дополнительным арифметическим операциям и операциям над константами. Операнды в них определяются неявно. Формат г используется для команд управления.

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

К этой группе относятся команды загрузки, сохранения и обмена.

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

Команды загрузки констант включают в стек константы нуля +0.0, единицы +1.0, числа p, двоичного логарифма десяти, двоичного логарифма числа е,  десятичного и натурального логарифмов двух. Константы хранятся во внутренней постоянной памяти процессора, в формате, более точном, чем РТ (длина мантиссы 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;

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

Операнд

в памяти

FOp

[ST], m32real

[ST], m64real

[ST], m16int

[ST], m32int

FAdd    m32real

FSub    m64real

FSubR  m16int

FAdd    m32int

 

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

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



 
рельефа на дне океана