Курсовая: Разработка процессора с плавающей точкой
Министерство общего и
профессионального образования
Российской Федерации.
Рязанская Государственная
Радиотехническая Академия.
Кафедра ЭВМ.
Пояснительная записка к курсовому проекту
лРазработка процессора с плавающей точкой
по курсу
лОрганизация ЭВМ и систем.
Выполнил:
Ст. гр. 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
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
1 | 01000.00010 | 1. | 1110000000000000000000000000000.000 |
79 78 64 63 62 0
Рис.1.1.а. Пример записи числа в формате РТ.
1.2.Внешние форматы.
В данном курсовом проекте рассматривается один внешний формат: 16int Ц целое
слово (ЦС) .
Формат ЦС представлен на рис.1.2. Длина формата 16 бит.
15 14 0
Рис.1.2. Формат ЦС.
Бит знака S определяет знак числа. Для представления чисел применяется
стандартный дополнительный код (ДК). Диапазон чисел:
-32768.+ 32767. Все двоичные целые числа точно представимы в формате РТ.
Пример:
Число 5 в формате ЦС будет выглядеть следующим образом:
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
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 | * | C3 | TOP | | C1 | C0 | ES | SF | PE | UE | OE | ZE | DE | IE |
Рис.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
Рис.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.
Рис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/0 | | Mod | 1 | КОп | r/m | | Sib | | Disp |
Рис.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) в формате РТ и из БОД в БР
передаётся результат операции деления в формате РТ в вершину стека. В БОД
осуществляется операция деления. Управление операциями осуществляется БМУ
путём выборки последовательности микрокодов (МК). Обратная связь от БПФ, БР и
БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.
Рис.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
79 64 63 62
48 47 0
Рис. 5.2. Расположение преобразованного числа в RGD.
Позиционирование данных в RGRW зависит от положения числа в RGD и младших
битов адреса EAR[0:1] (табл. 5.3).
Размещение данных в RGRW. Таблица 5.3.
EAR[0:1] | 00 | 01 |
Разряды RGRW | 15:0 | 31: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.
1
0
0 1
0
1
Рис. 5.4. FDiv St(i),St.
1
1
1
Рис.5.4.а. Нормализация.
1
0
1
Рис.5.4.б. Округление.
Рис. 5.5 Алгоритм операции
Fist m 16int.
0
1
0 1
1
1
00
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] | Биты разрешения |
Z1 | Z0 |
00 | 0 | 1 |
01 | 1 | 0 |
W1 W0
FFF | m16 | m16 |
FFD | m32 |
. | . |
. | . |
005 | m16 | m32 |
003 | m32 | m16 |
001 | m16 | m16 |
Рис. 6.1. Адресация памяти для форматов m16 и m32.
Схема организации памяти приведена на рис. 6.2. Здесь БП Ц блок памяти (банки
Б1-Б0), EAR Ц регистр исполнительного адреса, ФСРЗ Ц формирователь сигналов
разрешения записи Z1-Z0.
WR RD
10
Рис. 6.2. Схема организации памяти.
6.2. Блок преобразования форматов.
При разработке алгоритма Fist m16int описаны основные действия в БПФ.
Укрупнённая схема БПФ приведена на рис.6.3. Она включает в себя обратный
преобразователь форматов (ОПФ), коммутатор обратного позиционирования (КОП)
со схемой управления СУОП.
Коммутаторы управляются сигналами EAR[0:1]. Преобразователи управляют
специальные последовательности микрокодов, вырабатываемые БМУ в зависимости
от вида преобразования и его шага, а также от промежуточных результатов
преобразования.
EAR[0:1]
32 80
Рис.6.3. Укрупнённая схема БПФ.
79 78 64 63 0
16383
15 П 64
K
63 48
+1
RGD
79
63
EAR[0:1]
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. Константы для сравнения с операндом поступают в блок
сравнения операндов (компаратор) из ПЗУ констант в составе БМУ. БОД разделяют
на схему обработки знаков, блок обработки порядков, блок обработки мантисс и
формирователь признака результата.
Из БР Из БР В БМУ
Из ПЗУ
констант
Блок выполнения операции | |
Схема обработки знаков | Блок обработки порядков | Блок обработки мантисс | Формирователь признака результата |
| | | | |
В БР В БМУ
Рис.6.5. Обобщённая структурная схема БОД.
| | | | | | | |
| | | | Схема анализа и модификации |
|
| | | | | |
|
|
|
Рис.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
Конст
Чтение
Регистр микрокоманд
Рис.6.10. Структурная схема БМУ.
VII. Моделирование операций.
1.) Постановка задачи.
Написать программу деления двух чисел в формате 80real на эмуляторе MICRO.
2.) Разработка схемы алгоритма.
1
0
0 1
0
1
3.) Распределение регистров.
AX Ц Хранит мантиссу делимого.
BX Ц Старший бит хранит знак делимого, а остальные 15 бит хранят
порядок делимого в смещённой форме.
CX Ц Хранит мантиссу делителя.
DX Ц Старший бит хранит знак делителя, а остальные 15 бит хранят порядок
делителя в смещённой форме.
SP Ц Предназначен для хранения мантиссы частного.
BP Ц Предназначен для хранения знака и порядка частного. Старший бит Ц знак,
а остальные 15 бит Ц порядок в смещённой форме.
SI Ц Хранит маску: 8000h.
DI Ц Временный (вспомогательный) регистр.
CS Ц Временный (вспомогательный) регистр.
4.) Микропрограмма заданного алгоритма (с комментариями).
МК | a | b | ma | mb | mem | src | sh | alu | ccx | f | dst | wm | jfi | cc | cha | const |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 1 | 0 | 0 | 2 | 1 | 3 | 001C |
1 | 6 | 7 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
2 | 3 | 7 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
3 | 7 | 5 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
4 | 6 | 7 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
5 | 2 | 7 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
6 | 7 | 5 | 0 | 0 | 0 | 1 | 0 | E | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
7 | 3 | 7 | 0 | 0 | 0 | 1 | 8 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
8 | 2 | 8 | 0 | 0 | 0 | 1 | 8 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
9 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
A | 0 | 7 | 0 | 0 | 0 | 1 | 2 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
B | 0 | 7 | 0 | 0 | 0 | 5 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 3FFF |
C | 7 | 5 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
D | 0 | 4 | 0 | 0 | 0 | 5 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
E | 0 | 7 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
F | 7 | 7 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
10 | 1 | 8 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
11 | 8 | 8 | 0 | 0 | 0 | 1 | 2 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 000F |
13 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
14 | 7 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 1 | 0 | 0 | 2 | 2 | 3 | 0018 |
15 | 0 | 4 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
16 | 0 | 4 | 0 | 0 | 0 | 5 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0001 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 3 | 001A |
18 | 0 | 4 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
19 | 8 | 7 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
1A | 0 | 7 | 0 | 0 | 0 | 1 | 8 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
1B | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0013 |
1C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 7 | 0000 |
1D | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 |
1E | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 |
1F | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 |
МК 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.) Трасса.
шаг | СМК | AX | BX | CX | DX | SP | BP | SI | DI | CS |
0 | 0 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | FFFF | FFFF |
1 | 1 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | FFFF | FFFF |
2 | 2 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | 8000 | FFFF |
3 | 3 | F000 | C002 | C000 | 4000 | FFFF | FFFF | 8000 | 8000 | FFFF |
4 | 4 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8000 | FFFF |
5 | 5 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8000 | FFFF |
6 | 6 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0000 | FFFF |
7 | 7 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0000 | FFFF |
8 | 8 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8004 | FFFF |
9 | 9 | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 8004 | 8000 |
10 | A | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0004 | 8000 |
11 | B | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 0002 | 8000 |
12 | C | F000 | C002 | C000 | 4000 | FFFF | 8000 | 8000 | 4001 | 8000 |
13 | D | F000 | C002 | C000 | 4000 | FFFF | C001 | 8000 | 4001 | 8000 |
14 | E | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 4001 | 8000 |
15 | F | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 7800 | 8000 |
16 | 10 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 8000 |
17 | 11 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 6000 |
18 | 12 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 3000 |
19 | 13 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 3C00 | 3000 |
20 | 14 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 |
21 | 15 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 |
22 | 16 | F000 | C002 | C000 | 4000 | 0000 | C001 | 8000 | 0C00 | 3000 |
23 | 17 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 0C00 | 3000 |
24 | 1A | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 0C00 | 3000 |
25 | 1B | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 1800 | 3000 |
26 | 13 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | 1800 | 3000 |
27 | 14 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | E800 | 3000 |
28 | 18 | F000 | C002 | C000 | 4000 | 0001 | C001 | 8000 | E800 | 3000 |
29 | 19 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | E800 | 3000 |
30 | 1A | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 1800 | 3000 |
31 | 1B | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 3000 | 3000 |
32 | 13 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 3000 | 3000 |
33 | 14 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 0000 | 3000 |
34 | 15 | F000 | C002 | C000 | 4000 | 0002 | C001 | 8000 | 0000 | 3000 |
35 | 16 | F000 | C002 | C000 | 4000 | 0004 | C001 | 8000 | 0000 | 3000 |
36 | 17 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 |
37 | 1A | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 |
38 | 1B | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 |
39 | 13 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | 0000 | 3000 |
40 | 14 | F000 | C002 | C000 | 4000 | 0005 | C001 | 8000 | D000 | 3000 |
. | . | . | . | . | . | . | . | . | . | . |
117 | 1C | F000 | C002 | C000 | 4000 | A000 | C001 | 8000 | 0000 | 3000 |
118 | 1D | F000 | C002 | C000 | 4000 | A000 | C001 | 8000 | 0000 | 3000 |
Работа микропрограммы и алгоритма в целом были проверены также и при делении
числа 20 на число 10. В результате деления этих чисел должны были получить
число 2. Точно такой же результат был получен при делении этих чисел по
вышеописанному алгоритму и реализованному в микрокомандах на эмуляторе MICRO.
Отсюда можно сделать вывод, что алгоритм работает правильно, и
микропрограмма написана верно.
Заключение.
Целью данного курсового проекта являлась разработка процессора с плавающей
точкой. В результате проделанной работы процессор был разработан.
Примечания.
В данной пояснительной записке могут встречаться опечатки и неточности, а
также некоторые ллишние слова и блоки. Вполне вероятно, что в распечатанном
варианте все или почти все опечатки, неточности и ошибки исправлены лот
руки.
При разработке процессора с плавающей точкой использовались лекции по данной
дисциплине, методические указания, а так же примерный вариант данной курсовой
работы.
Данная пояснительная записка имеется также в полной форме в электронном виде.
Тексты, схемы алгоритмов, таблицы, структурные схемы и т. п. были набраны,
нарисованы и начерчены при помощи программы Microsoft Word 97. Никакие другие
программы при написании данной пояснительной записки не использовались.
Микропрограмма написана для эмулятора микропрограммируемого процессора версии
MICRO_BT.
Дата написания: 27 декабря 2002г.
Время: 3:33.
Подпись разработчика: