Каталог :: Цифровые устройства

Курсовая: Разработка процессора с плавающей точкой

     Министерство общего и 
     профессионального образования
     Российской Федерации.
     Рязанская Государственная 
     Радиотехническая Академия.
     Кафедра ЭВМ.
                    Пояснительная записка к курсовому проекту                    
                   «Разработка процессора с плавающей точкой»                   
                                    по курсу                                    
                           «Организация ЭВМ и систем».                           
                                                                       Выполнил:
                                                                     Ст. гр. 143
                                                                     Бодров В.В.
                                                                       Проверил:
                                                                   Доц. каф. ЭВМ
                                                                    Елесина С.И.
     

Рязань 2002 г.

Содержание: Стр.1 – Титульный лист. Стр.2 – Содержание. Стр.3 – Задание. Стр.4 – Форматы данных. Стр.6 – Программная модель процессора. Стр.9 – Описание команд. Стр.11 – Блок-схема процессора. Стр.12 – Алгоритмы операций. Стр.21 – Структурные схемы блоков процессора. Стр.31 – Моделирование операций. Стр.38 – Заключение. Стр.38 – Примечания.

Задание

FDiv St(i),St – деление. Команда деления производит деление стека St(i) на вершину стека и возвращает частное в получатель. St(i) ß St(i)/St Один из операндов находится в регистровом стеке St(i) в формате 80 Real , второй в вершине регистрового стека St в формате 80 Real. Особые случаи: P,U,Z,O,D,I. FIST m16int – сохранение целочисленное. Команда сохранения преобразует значение из регистра St в формат получателя и помещает операнд в ОП. Если получателем является регистр, номер используемого регистра берётся до извлечения из стека. m16intß St Особые случаи: P,I,U,O,D. Ёмкость ОП 8Кбайт. Длина слова памяти 32 бита. I. Форматы данных. 1.1.Внутренний формат. Во внутренних операциях процессор с плавающей точкой (ППТ) использует представление вещественных чисел в формате с расширенной точностью РТ (рис.1.1). Длина формата 80 бит. 14 0 0 63
SE1.M
79 78 64 63 62 0 рис.1.1 Внутренний формат РТ. Значащие цифры числа находятся в поле мантиссы (M). Длина мантиссы 64 бита. Поле порядка (Е) показывает фактическое положение двоичной точки в разрядах мантиссы. Длина порядка 15 бит. Бит знака S определяет знак числа. Мантисса представлена в прямом коде. Порядок E задаётся в смещённой форме; он равен истинному порядку (П), увеличенному на значение смещения – смещ. РТ = 16383: Е = П + смещ РТ. Истинный порядок изменяется от –16382 до 16383. Смещённые порядки 000..0В и 111..1В зарезервированы для специальных значений. Числа в формате РТ имеют явный бит F0.

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

S (Е-смещ РТ) (-1) * 2 * (F0).(F1)(F2).(F63) Пример: Число – 15 в формате РТ будет выглядеть следующим образом: 14 0 0 63
101000.000101.1110000000000000000000000000000.000
79 78 64 63 62 0 Рис.1.1.а. Пример записи числа в формате РТ. 1.2.Внешние форматы. В данном курсовом проекте рассматривается один внешний формат: 16int – целое слово (ЦС) . Формат ЦС представлен на рис.1.2. Длина формата 16 бит.
S
15 14 0 Рис.1.2. Формат ЦС. Бит знака S определяет знак числа. Для представления чисел применяется стандартный дополнительный код (ДК). Диапазон чисел: -32768.+ 32767. Все двоичные целые числа точно представимы в формате РТ. Пример: Число 5 в формате ЦС будет выглядеть следующим образом:
00000000.000000000101
15 14 0 Рис.1.2.а. Пример записи числа формате ЦС. II.Программная модель процессора. Программная модель (рис.2.1) включает в себя кольцевой стек из восьми регистров R0-R7, регистры слова тэгов TW , слова состояния SW и слова управления CW. В стеке хранятся числа в формате РТ. Вершина стека определяется полем ТОР слова состояния SW и обозначается ST(0) или ST. На рисунке вершиной стека является физический регистр R3. ST(0) содержит последнее включённое в стек значение, регистр ST(1) предпоследнее и т.д. Включение в стек осуществляет декремент ТОР и загрузку в новую вершину стека. При извлечении из стека данное читается из ST(0), а затем производится декремент ТОР. 15 13 11 0

SW

*

C3

Т О Р

011

C2 C1 C0

Флажки

ошибок

15 0
CW***

RC

PC

Маски

TW
R0

ST(5)

T(5)

R1

ST(6)

T(6)

R2

ST(7)

T(7)

R3

Вершина стека ST(0)

T(0)
R4

ST(1)

T(1)
R5

ST(2)

T(2)
R6

ST(3)

T(3)

R7

ST(4)

T(4)
79 0 1 0 Рис.2.1. Программная модель процессора. С каждым регистром стека ассоциируется двухбитный тэг, характеризующий хранимое число: 00 – нормализованное число; 01 – истинный нуль; 10 – денормализованное число; 11 – пустой регистр. В слове состояния SW поле ТОР содержит адрес текущей вершины стека. Биты кода условия C0-C3 фиксируют результаты команд сравнения, проверки и анализа. Восемь бит отведены для регистрации особых случаев (ошибок) (рис.2.2). 15 14 13 11 10 9 8 7 6 5 4 3 2 1 0
SW*C3TOPC1C0ESSFPEUEOEZEDEIE
Рис.2.2. Регистр SW При выполнении команд с ПТ возможны следующие особые случаи: - P – неточный результат (точность); - U – антипереполнение; - O – переполнение; - D – денормализованный операнд; - I – недействительная операция; - Z – деление на нуль. Особым случаям соответствуют флажки в слове состояния SW (рис.2.2): IE,ZE,DE,OE,UE,PE. При любом особом случае устанавливается бит суммарной ошибки ES, а также вырабатывается активный сигнал ошибки FERR. В слове управления CW поле RC задаёт режим округления, когда формат получателя не позволяет точно представить результат. Пусть В - точный результат, А и С – ближайшие к нему представимые в заданном формате числа: А<В<С. Поле RC задаёт режим округления: 00 – округление к ближайшему – выбор из А и С, ближайшего к В; 01 – округление вниз – А; 10 – округление вверх – С; 11 – усечение – меньшее из А и С по модулю. Младшие 6 битов CW хранят маски особых случаев (рис.2.3). Если бит маски установлен, прерывание при соответствующем особом случае не происходит. Если бит маски сброшен, происходит прерывание. 15 7 6 5 4 3 2 1 0
CW.PMUMOMZMDMIM
Рис.2.3 Маски особых случаев. В данном курсовом проекте возможны следующие особые случаи: P,U,Z,O,D,I. Недействительная операция. Этот случай возникает при антипереполнении стека (попытка извлечения из пустого регистра). Стековые операции распознаются по биту SF=1 в SW. При антипереполнении стека бит C1=0. В операции FIST формируется особый случай I если значение в регистре ST слишком велико для представления целым числом. Переполнение. Возникает, когда округлённый результат арифметической команды с преобразованием формата превышает наибольшее конечное число в формате получателя. Денормализованный операнд. Возникает при попытке оперировать денормализованным операндом. III.Описание команд. 3.1. FDiv St(i),St – деление. Команда деления производит деление стека St(i) на вершину стека и возвращает частное в получатель. St(i) ß St(i)/St Один из операндов находится в регистровом стеке St(i) в формате 80 Real , второй в вершине регистрового стека St в формате 80 Real. Особые случаи: P,U,Z,O,D,I. P – неточный результат(точность); U – антипереполнение; Z – деление на нуль; O – переполнение; D – денормализованный операнд; I – недействительная операция; Формат команды представлен на рис.3.1.
11011RPКОп11КОпSt(i)
Рис3.1. Формат команды FDiv St(i),St. Команды данного формата осуществляют операции над вершиной стека и регистром St(i). Бит R (Reverse) показывает, возвращается ли результат в вершину стека (R=0) или в St(i) (R=1). Бит P=1 (Pop) указывает, что после операции производится извлечение из стека. В данном случае бит R=1 – результат возвращается в St(i). 3.2. FIST m16int – сохранение целочисленное. Команда сохранения преобразует значение из регистра St в формат получателя и помещает операнд в ОП. Если получателем является регистр, номер используемого регистра берётся до извлечения из стека. m16intß St Особые случаи: P,I,U,O,D. P – неточный результат (точность); I – недействительная операция; U – антипереполнение; O – переполнение; D – денормализованный операнд; Формат команды представлен на рис.3.2.
11011

MF

1/0Mod1КОпr/mSibDisp

Рис.3.2. Формат команды FIST m16int.

Адрес операнда m16int определяется полями mod, r/m, sib и disp. Адрес вычисляется целочисленным процессором. К началу операции он уже сформирован. Бит [0] первого байта команды определяет тип операции. В данном случае бит [0]=1 – передача данного из стека в память. Поле MF определяет тип операнда. При m16int MF=11. IV. Блок-схема процессора. На основании анализа заданных операций, укрупнённая блок-схема процессора представлена на рис.4.1. В него входят оперативная память ОП, блок преобразования форматов БПФ, блок регистров БР, блок обработки данных БОД, блок микропрограммного управления БМУ. БПФ и ОП связаны 32-битной шиной, через неё передаются данные из БПФ в ОП в формате 16int. БПФ осуществляет преобразование из формата РТ в формат ЦС. БР включает в себя регистровый стек, регистры слов тэгов, управления и состояния. Из БР в БПФ передаётся операнд из вершины стека в формате РТ (операция FIST). Из БР в БОД передаётся 1-й и 2-й операнд для операции деления (FDiv) в формате РТ и из БОД в БР передаётся результат операции деления в формате РТ в вершину стека. В БОД осуществляется операция деления. Управление операциями осуществляется БМУ путём выборки последовательности микрокодов (МК). Обратная связь от БПФ, БР и БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.

БМУ

МК

Память

32БПФ80БР80БОД

Осведомительные сигналы
Рис.4.1. Блок-схема процессора. V. Алгоритмы операций. 5.1. Алгоритм операции FDiv St(i),St Порядок выполнения операции состоит из следующих этапов: 1. Операция деления; 2. Запись результата деления в стек. 1 этап. Первый операнд читается из стека ST(i) в рабочий регистр RG1:RG1=ST(i). Второй операнд читается из вершины стека ST в рабочий регистр RG2:RG2=ST. Частное формируется в RG3. Регистры операндов RG1 и RG2 и регистр частного RG3 подразделяются на субрегистры знаков (S1,S2,S3), порядков (E1,E2,E3) и мантисс (M1,M2,M3). Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат округляется до 64 бит. Перед началом деления выявляется случай деления на ноль. Знак частного S3 = S1 xor S2. Порядок частного E3=E1-E2+16383. Мантисса частного M3 формируется делением мантиссы делимого M1 на мантиссу делителя M2. При делении нормализованных чисел 0.10...0 < M3 < 1.11...1. Если M3<1.0 выполняется нормализация -сдвиг M3 влево на 1 бит и декремент E3. Операция деления FDiv завершается нормализацией и округлением результата: - если М3 получился в ДК, то М3 преобразуется в прямой код (ПК) М3 = not М3 + 1; - если произошло переполнение мантиссы, то делаем нормализацию вправо : М3 = R1(M3), Е3= ЕЗ +1; - если отсутствует явный бит в М3, то делаем нормализацию влево : М3 = Lk(M3), Е3= ЕЗ - k, где k - число ведущих нулей; - округление М3 до 64 бит в зависимости от режима округления - поле RC (табл 5.1). Округление результата Таблица 5.1
RCрежимгдействие округления

00

10

к ближайшему вверхг< 1000отбросить младшие биты
г=1000если младший сохраняемый бит 1 -прибавить к нему 1, отбросить младшие биты

01

11

вниз усечениелюбоеотбросить младшие биты
При нормализации возможны следующие особые случаи: - мантисса М3=0 (потеря значимости); - при инкременте Е3 возникает переполнение порядка; - при декременте Е3 возникает антипереполнение порядка. При возникновении подобных случаев фиксируются следующие признаки результата: - Z - нулевой результат, - S - знак результата; - Р - потеря точности; - О - переполнение порядка; - U - антипереполнение порядка. Маскированные реакции на особые случаи: - Z - запись в ST(i) истинного нуля; - О - запись кода бесконечности; - U - запись кода нуля или денормализованного значения. Схема операции FDiv приведена на рис.5.4. 5.2. Алгоритм операции FIST m16int. Порядок выполнения операции состоит из следующих этапов: 1. Чтение операнда из вершины стека ST в БПФ; 2. Преобразование операнда из формата 80real в формат 16int ; 3. Запись операнда в формате 16int в ОП. 1 этап. Если регистр ST не пустой T(0) ¹11, то читаем операнд в RGD=ST(0). Регистр операндов RGD подразделяется на субрегистры знака (S), порядка (E) и мантиссы(М). 2 этап. Преобразование начинается с проверки Т(0) регистра слова тэгов TW. 00 – нормализованное число; 01 – истинный ноль; 10 – денормализованное число. Если число денормализовано, то результат будет нулевым (мантисса меньше единицы). Если число нормализовано, то переполнение фиксируется если П = Е - 16383 >= 15. Если переполнение замаскировано, то в память будет записано наибольшее (по модулю) отрицательное число. При отсутствии переполнения мантисса сдвигается вправо на k разрядов M = Rk(M) ,где k = 15 – П. Значение k изменяется от 1 до 14. Если k > 14, то число равно нулю. Далее производим округление результата (табл. 5.1). Младшие 48 бит обнуляются M[47:0] = 0. Если число отрицательное , оно преобразуется в ДК: M = not M + 1. Преобразованное число находится в 63-48 разрядах (рис 5.2). RGD
S
79 64 63 62 48 47 0 Рис. 5.2. Расположение преобразованного числа в RGD. Позиционирование данных в RGRW зависит от положения числа в RGD и младших битов адреса EAR[0:1] (табл. 5.3). Размещение данных в RGRW. Таблица 5.3.
EAR[0:1]0001
Разряды RGRW15:031:16
CASE EAR[0:1] 00: RGRW[15:0] = R47(RGD) 01: RGRW[31:16] = R31(RGD) EAR[0:1] = 10 и EAR[0:1] = 11 – запрещены. Алгоритм операции Fist m16int приведён на рис. 5.5.
Блок-схема: решение: ST=0 1 0

ССТ=44h

Блок-схема: решение: N 0 1
Блок-схема: узел: 1Блок-схема: узел: 2

Блок-схема: решение: СТТ=0 0
1
Рис. 5.4. FDiv St(i),St.
1
Блок-схема: решение: E3 < 0 1

Блок-схема: решение: UM
Обработчик прерываний U
1

Блок-схема: узел: 2
E3 = 0

Рис.5.4.а. Нормализация.
Блок-схема: решение: RC = 002  OR
RC = 102
1
Блок-схема: решение: M3[64] 0

Блок-схема: решение: M3[0] 1

Рис.5.4.б. Округление. Рис. 5.5 Алгоритм операции

RGD = ST

Fist m 16int.
Блок-схема: решение: T(0)=00 0
1

Блок-схема: решение: П >= 0Fh 0 1
K = Fh - П
Блок-схема: решение: IM 1

M[63:48] = -3276810

Блок-схема: решение: K > 0Eh1

RGRW[15:0]=R47(RGD)

00 Блок-схема: альтернативный процесс: конец

RGRW[31:16]=R31(RGD)

01
VI. Структурные схемы блоков процессора. 6.1. Блок памяти. В данном курсовом проекте используется одноуровневая память данных ёмкостью 8Кб и длинной слова ОП 32 бит. Адрес данного к началу операции вычислен и находится в адресном регистре EAR. В операциях с ПТ минимальный размер данного 2 байта, поэтому адресация производится с точностью до двухбайтового слова W. Адрес содержит 12 бит, из них старшие 10 адресуют слово W в MW. В курсовом проекте адресуются данные длиной 16 и 32 бит. Они выбираются и записываются в ОП за одно обращение. Адресация памяти для заданных форматов приведена на рис. 6.1. Адрес данного формата m32 кратен двум. Адрес данного формата m16 может быть любым в пределах ёмкости ОП. При выборке из ОП читается всегда полное слово MW в регистр чтения-записи RGRW[32:0]. Данное формата m32 совпадает с размером регистра RGRW. При записи данное должно быть размещено в ОП в соответствии со своим форматом и адресом, поскольку запись полного слова может привести к разрушению информации в соседних полях слова памяти. Для этого память выполнена в виде двух банков Б1, Б0, которые хранят соответственно двухбайтовые слова W1, W0 всех слов памяти. Управляют записью в банки биты разрешения записи Z1, Z0, формируемые в зависимости о двух младших бит адреса (табл. 6.1). Формирование битов разрешения записи для формата 16int. Табл. 6.1.
Младшие биты адреса EAR[1:0]Биты разрешения
Z1Z0
0001
0110
W1 W0
FFFm16m16
FFDm32
..
..
005m16m32
003m32m16
001m16m16
Рис. 6.1. Адресация памяти для форматов m16 и m32. Схема организации памяти приведена на рис. 6.2. Здесь БП – блок памяти (банки Б1-Б0), EAR – регистр исполнительного адреса, ФСРЗ – формирователь сигналов разрешения записи Z1-Z0.
RGRW
WR RD

11

EAR

2

10
Рис. 6.2. Схема организации памяти. 6.2. Блок преобразования форматов. При разработке алгоритма Fist m16int описаны основные действия в БПФ. Укрупнённая схема БПФ приведена на рис.6.3. Она включает в себя обратный преобразователь форматов (ОПФ), коммутатор обратного позиционирования (КОП) со схемой управления СУОП. Коммутаторы управляются сигналами EAR[0:1]. Преобразователи управляют специальные последовательности микрокодов, вырабатываемые БМУ в зависимости от вида преобразования и его шага, а также от промежуточных результатов преобразования.
микрокод

EAR[0:1]

СУОП

КПП

ОПФ
32 80
Рис.6.3. Укрупнённая схема БПФ. 79 78 64 63 0

S

EM
16383
15 П 64
K

CNTR

SH1
63 48

CNTR

коммутатор
+1

инвертор

RGD
79 63 EAR[0:1]

CNTR

63 SH2 0

RGRW

31 16 15 0 Рис.6.4. Структурная схема блока ОПФ. Структурная схема блока ОПФ для нормализованных чисел приведена выше (рис.6.4).С помощью двух сумматоров SM1 и SM2 вычисляем истинный порядок П и количество сдвигов k. На сдвигатель SH1 подаём значение мантиссы из RGD и сдвигаем M на k разрядов вправо. Если знак числа S=0, то разряды 63-48 передаём без изменения, иначе берём ДК. Позиционирование в RGRW осуществляем программируемого сдвигателя SH2 в зависимости от EAR[0:1]. 6.3. Блок регистров. Блок регистров БР (рис.6.6) включает в себя регистровый стек 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. Запись может производиться из регистров RGA и RGB, из блока преобразования форматов БПФ и из регистра результата БОД. Необходимый выбор осуществляется с помощью мультиплексора MX. Схема анализа и модификации выполняет проверку и модификацию тэгов, установку битов особых случаев, проверку масок, установку битов условия C3-C0 и другие операции над TW, CW, и SW. Их содержимое может быть по соответствующим командам передано в память или загружено из неё через БПФ. Примечание: в данном курсовом проекте задействована лишь малая часть этой схемы. 6.4. Блок обработки данных. 6.4.1. Обобщённая схема БОД. Бод выполняет арифметическую операцию FDiv над поступающими на его входы операндами. Обобщённая схема БОД приведена на рис.6.5. В неё входят регистры RG1 и RG2 первого и второго операндов, блок сравнения операндов с кодами истинного нуля, блок выполнения операций БВО, регистр результата RG3. Константы для сравнения с операндом поступают в блок сравнения операндов (компаратор) из ПЗУ констант в составе БМУ. БОД разделяют на схему обработки знаков, блок обработки порядков, блок обработки мантисс и формирователь признака результата. Из БР Из БР В БМУ

RG1

RG2
Блок сравнения
Из ПЗУ констант

Блок выполнения операции

Схема обработки знаков

Блок обработки порядковБлок обработки мантиссФормирователь признака результата

RG3

В БР В БМУ Рис.6.5. Обобщённая структурная схема БОД.
TW
Схема анализа и модификации
CW

Рис.6.6. Структурная схема блока регистров. 6.4.2. Блок деления. На основании алгоритма операции FDiv (раздел 5.1) разработан блок деления (рис.6.7). Регистры операндов RG1 и RG2 и регистр частного подразделяются на субрегистры знаков (S1,S2,S3), порядков (E1,E2,E3) и мантисс (M1,M2,M3). Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат получается в RG3 и округляется до 64 бит. Схема обработки знаков определяет знак результата S3 в зависимости от знаков операндов S1,S2. Сумматор SME выполняет операцию вычитания порядков E1 – E2, а сумматор SM выполняет операцию сложения числа, поступающего с выхода сумматора SME, и константы 3FFFh. Делитель мантисс DivM выполняет операцию деления мантисс.

3FFFh

В БР
Нормализация и округление
В БМУ Рис.6.7. Структурная схема блока деления. 6.4.3. Блок обработки знаков. Структурная схема блока обработки знаков представлена на рис.6.8.

S1 S2

S3 Рис.6.8. Структурная схема блока обработки знаков. 6.4.4. Блок нормализации и округления. Структурная схема блока нормализации и округления представлена на рис.6.9.

+1

+1

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

Регистр микрокоманд
П
БПФ
БР
БВО
Адр/К
СНА
СС
I
J

Рис.6.10. Структурная схема БМУ. VII. Моделирование операций. 1.) Постановка задачи. Написать программу деления двух чисел в формате 80real на эмуляторе MICRO. 2.) Разработка схемы алгоритма.
Блок-схема: решение: CX=0 1

0
DI=SI
CS=SHL(DX)
DI=SHL(BX)
BP=BP xor DI
DI=DI and DX
DI=SI
BP=DI
DI=DI and BX
Блок-схема: узел: 2
Блок-схема: решение: N 0 1
Блок-схема: узел: 3Блок-схема: узел: 6

Блок-схема: решение: RACT=0 0
1 Блок-схема: альтернативный процесс: конец 3.) Распределение регистров. AX – Хранит мантиссу делимого. BX – Старший бит хранит знак делимого, а остальные 15 бит хранят порядок делимого в смещённой форме. CX – Хранит мантиссу делителя. DX – Старший бит хранит знак делителя, а остальные 15 бит хранят порядок делителя в смещённой форме. SP – Предназначен для хранения мантиссы частного. BP – Предназначен для хранения знака и порядка частного. Старший бит – знак, а остальные 15 бит – порядок в смещённой форме. SI – Хранит маску: 8000h. DI – Временный (вспомогательный) регистр. CS – Временный (вспомогательный) регистр. 4.) Микропрограмма заданного алгоритма (с комментариями).
МКabmambmemsrcshaluccxfdstwmjficcchaconst
0100001060100213001C
16700010600400070000
23700010900400070000
37500010600400070000
46700010600400070000
52700010900400070000
67500010E00400070000
73700018600400070000
82800018600400070000
98700010110400070000
A0700012400400070000
B0700050300400073FFF
C7500010300400070000
D0400050600400070000
E0700012600400070000
F7700012600400070000
101800012600400070000
118800012600400070000
12000000000000006000F
138700010110400070000
147000010601002230018
150400018400400070000
160400050300400070001
17000000000000403001A
180400018400400070000
198700010300400070000
1A0700018400400070000
1B0000000000000040013
1C0000000000005070000
1D0000010600000070000
1E0000010600000070000
1F0000010600000070000
МК 0: IF CX = 0 THEN GOTO МК 1C; МК 1: DI := SI; МК 2: DI := DI AND BX; МК 3: BP := DI; МК 4: DI := SI; МК 5: DI := DI AND DX; МК 6: BP := BP XOR DI; МК 7: DI := SHL(BX); МК 8: CS := SHL(DX); МК 9: DI := DI – CS; МК A: DI := SHR(DI); МК B: DI := DI + 3FFF; МК C: BP := BP + DI; МК D: SP := 0; МК E: DI := SHR(AX); МК F: DI := SHR(DI); МК 10: CS := SHR(CX); МК 11: CS := SHR(CS); МК 12: RACT := F; МК 13: DI := DI – CS; МК 14: IF N = 1 THEN GOTO МК 18; МК 15: SP:= SHL(SP); МК 16: SP := SP + 1h; МК 17: GOTO МК 1A; МК 18: SP := SHL(SP).0; МК 19: DI := DI + CS; МК 1A: DI := SHL(DI); МК 1B: RACT := RACT – 1h; IF RACT ¹ 0 THEN GOTO МК 13; МК 1C: STOP; МК 1D: «Пустая» команда; МК 1E: «Пустая» команда; МК 1F: «Пустая» команда. 4.) Значение исходных данных и результатов. В качестве примера работы программы разделим два числа: – 15 и 3. В результате должны получить – 5. 15 = Fh = 11112-10; 3 = 3h = 00112-10; 5 = 5h = 01012-10.

Начальное состояние регистров: AX = F000h; SP = FFFFh; CS = FFFFh; IP = 0000h; BX = C002h; BP = FFFFh; SS = 0000h; PSW = 0000h; CX = C000h; SI = 8000h; DS = 0000h; RGK= 0000h; DX = 4000h; DI = FFFFh; ES = 0000h; RW = 0000h.

Состояние регистров после выполнения программы деления: AX = F000h; SP = A000h; CS = 3000h; IP = 0000h; BX = C002h; BP = C001h; SS = 0000h; PSW = 0000h; CX = C000h; SI = 8000h; DS = 0000h; RGK= 0000h; DX = 4000h; DI = 0000h; ES = 0000h; RW = 0000h. 5.) Трасса.
шагСМКAXBXCXDXSPBPSIDICS
00F000C002C0004000FFFFFFFF8000FFFFFFFF
11F000C002C0004000FFFFFFFF8000FFFFFFFF
22F000C002C0004000FFFFFFFF80008000FFFF
33F000C002C0004000FFFFFFFF80008000FFFF
44F000C002C0004000FFFF800080008000FFFF
55F000C002C0004000FFFF800080008000FFFF
66F000C002C0004000FFFF800080000000FFFF
77F000C002C0004000FFFF800080000000FFFF
88F000C002C0004000FFFF800080008004FFFF
99F000C002C0004000FFFF8000800080048000
10AF000C002C0004000FFFF8000800000048000
11BF000C002C0004000FFFF8000800000028000
12CF000C002C0004000FFFF8000800040018000
13DF000C002C0004000FFFFC001800040018000
14EF000C002C00040000000C001800040018000
15FF000C002C00040000000C001800078008000
1610F000C002C00040000000C00180003C008000
1711F000C002C00040000000C00180003C006000
1812F000C002C00040000000C00180003C003000
1913F000C002C00040000000C00180003C003000
2014F000C002C00040000000C00180000C003000
2115F000C002C00040000000C00180000C003000
2216F000C002C00040000000C00180000C003000
2317F000C002C00040000001C00180000C003000
241AF000C002C00040000001C00180000C003000
251BF000C002C00040000001C001800018003000
2613F000C002C00040000001C001800018003000
2714F000C002C00040000001C0018000E8003000
2818F000C002C00040000001C0018000E8003000
2919F000C002C00040000002C0018000E8003000
301AF000C002C00040000002C001800018003000
311BF000C002C00040000002C001800030003000
3213F000C002C00040000002C001800030003000
3314F000C002C00040000002C001800000003000
3415F000C002C00040000002C001800000003000
3516F000C002C00040000004C001800000003000
3617F000C002C00040000005C001800000003000
371AF000C002C00040000005C001800000003000
381BF000C002C00040000005C001800000003000
3913F000C002C00040000005C001800000003000
4014F000C002C00040000005C0018000D0003000
...........
1171CF000C002C0004000A000C001800000003000
1181DF000C002C0004000A000C001800000003000
Работа микропрограммы и алгоритма в целом были проверены также и при делении числа 20 на число 10. В результате деления этих чисел должны были получить число 2. Точно такой же результат был получен при делении этих чисел по вышеописанному алгоритму и реализованному в микрокомандах на эмуляторе MICRO. Отсюда можно сделать вывод, что алгоритм работает правильно, и микропрограмма написана верно. Заключение. Целью данного курсового проекта являлась разработка процессора с плавающей точкой. В результате проделанной работы процессор был разработан. Примечания. В данной пояснительной записке могут встречаться опечатки и неточности, а также некоторые «лишние» слова и блоки. Вполне вероятно, что в распечатанном варианте все или почти все опечатки, неточности и ошибки исправлены «от руки». При разработке процессора с плавающей точкой использовались лекции по данной дисциплине, методические указания, а так же примерный вариант данной курсовой работы. Данная пояснительная записка имеется также в полной форме в электронном виде. Тексты, схемы алгоритмов, таблицы, структурные схемы и т. п. были набраны, нарисованы и начерчены при помощи программы Microsoft Word 97. Никакие другие программы при написании данной пояснительной записки не использовались. Микропрограмма написана для эмулятора микропрограммируемого процессора версии MICRO_BT. Дата написания: 27 декабря 2002г. Время: 3:33. Подпись разработчика: