Министерство Образования
Российской Федерации
РГРТА
Кафедра ЭВМ
Пояснительная записка к курсовому проекту по дисциплине
«Организация ЭВМ и систем»
по теме
«Проектирование процессора с плавающей точкой»
Выполнил студент гр.343
Савченко Н.
Проверил:
Юдинцев А.С.
Рязань 2004
Содержание
Техническое задание
Введение
1. Описание команд
1.1. FMul ST, ST(i) - умножение
1.2. FSt m32real - сохранение
2. Форматы данных
2.1. Внутренний формат
2.2. Внешний формат
2.3. Пример формата m80real
2.4. Пример формата m32real
3. Программная модель процессора
4. Блок – схема процессора
5. Алгоритмы операций
5.1. Алгоритм операции FMulSt,St(i)
5.2. Алгоритм операции FSt m32real
6. Структурные схемы блоков процессора
6.1. Блок памяти
6.2. Блок преобразования форматов
6.3. Блок регистров
6.4. Блок обработки данных (блок умножения)
6.5. Блок микропрограммного управления
7. Моделирование операции FMul St,St(i)
Заключение
Список использованных источников
Техническое задание
FMul ST, ST(i) - умножение.
Команда умножения умножает операнды источника и получателя и возвращает произведение в получатель.
ST ← ST * ST(i)
Оба операнда находятся в регистровом стеке в формате 80real.
Умножение с анализом младшего бита множителя со сдвигом множимого.
Особые случаи: P, U, O, D, I.
FStm32real - сохранение.
m32real ← ST
Особые случаи: P, U, O, D, I.
Емкость ОП 4 Кбайт.
Длина слова памяти 128 бит.
Введение
С появлением процессора i486 и его сопроцессора FPU – сопроцессора с плавающей точкой, работа с вещественными числами стала аппаратной, а не программной задачей. Производительность ЭВМ увеличилась. Возможности использования ЭВМ в бухгалтерии и многих других областях деятельности человека дали толчок массовому внедрению их в повседневную жизнь. Были переписаны многие программы, компиляторы. Освоение архитектуры, принципов работы сопроцессора FPU стало для программистов едва ли не основной задачей.
В данной работе описываются команды, форматы данных ППТ, программная модель и почти все блоки процессора, рассматриваются алгоритмы выполнения заданных операций, а также моделирование одной арифметической операции на модели микропрограммируемого процессора (MICRO).
1. Описание команд
1.1. FMulST, ST(i) - умножение.
Команда умножения умножает операнды источника и получателя и возвращает произведение в получатель.
ST ← ST * ST(i)
Оба операнда находятся в регистровом стеке в формате 80real.
Умножение с анализом младшего бита множителя со сдвигом множимого.
Особые случаи:
P - неточный результат;
U - антипереполнение;
O - переполнение;
D - денормализованный операнд;
I - недействительная операция.
Формат команды представлен на рисунке 1.1
Адрес второго операнда определяется полем ST(i), которое принимает значения от 000 до 111, где 000 – вершина стека, 111 – восьмой элемент регистрового стека.
Бит R показывает, возвращается ли результат в вершину стека. В данном случае R = 0.
Бит P указывает, что после операции производится извлечение из стека. P = 0, так как извлечения нет.
1.2.
FStm32real- сохранение.
Команда FSt m32real передает значение из регистра ST в ОП. Содержимое ST остается неизменным.
Особые случаи:
P - неточный результат;
U - антипереполнение;
O - переполнение;
D - денормализованный операнд;
I - недействительная операция.
Формат команды представлен на рисунке 1.2
Адрес операнда m32real определяется полями mod, r/m, SIB, Disp. Адрес вычисляется целочисленным процессором. К началу операции он уже сформирован. Бит [0] первого байта команды определяет тип операции.
В данном случае Бит [0] = 1 – передача данного из стека в память.
Поле MF определяет тип операнда. При m32realMF = 00.
2. Форматы данных
2.1. Внутренний формат.
Во внутренних операциях процессор с плавающей точкой (ППТ) использует представление вещественных чисел в формате с расширенной точностью (РТ, m80real) (рис.2.1). Длина формата 80 бит.
Значащие цифры числа находятся в поле мантиссы (М). Длина мантиссы 64 бита. Поле порядка (E) показывает фактическое положение двоичной точки в разрядах мантиссы. Длина порядка 15 бит. Бит знака (S) определяет знак числа. Мантисса представлена в прямом коде. Порядок задается в смещенной форме; он равен истинному порядку (П), увеличенному на значение смещения – смещ РТ = 16383:
E = П + смещ РТ
Истинный порядок изменяется от –16382 до 16383. Порядки 000…0b и 111…1b зарезервированы для специальных значений. Числа в формате РТ имеют явный бит F0.
Значение числа в формате РТ равно .
2.2. Внешний формат.
В данном курсовом проекте рассматривается один внешний формат m32real – формат обычной точности (ОТ) (рис.2.2). Длина формата 32 бита.
Значащие цифры числа находятся в поле мантиссы (М). Длина мантиссы 23 бита. Поле порядка (E) показывает фактическое положение двоичной точки в разрядах мантиссы. Длина порядка 8 бит. Бит знака (S) определяет знак числа. Мантисса представлена в прямом коде. Порядок задается в смещенной форме; он равен истинному порядку (П), увеличенному на значение смещения – смещ ОТ = 127:
E = П + смещ ОТ
Истинный порядок изменяется от –126 до 127. Порядки 000…0b и 111…1b зарезервированы для специальных значений. Явный бит F0 в формате ОТ отсутствует и мантисса оказывается правильной дробью.
Значение числа в формате ОТ равно .
2.3. Пример формата
m80real.
Покажем представление десятичного числа 24789.8125 в формате РТ. Двоичный код числа равен 110000011010101.1101b, истинный порядок равен 14. Смещенный порядок E=14+16383=16397=100000000001101b. Число в формате РТ приведено на рис. 2.3.
2.4. Пример формата
m32real.
Покажем представление десятичного числа -85.125 в формате ОТ. Двоичный код числа равен -1010101.001b, истинный порядок равен 6. Смещенный порядок E=6+127=133=10000101b. Число в формате ОТ приведено на рис. 2.4.
3. Программная модель процессора
Программная модель (рис. 3.1) включает в себя кольцевой стек из восьми регистров R0-R7, слово тэгов TW, слово состояния SW и слово управления CW. В стеке хранятся числа в формате РТ. В полях S, Е и М регистров записаны соответственно знак, порядок и мантисса. Вершина стека определяется полем TOP слова состояния SW и обозначается ST(0), или просто ST. На рисунке вершиной стека является физический регистр R3. ST(0) содержит последнее включенное в стек значение, регистр ST(1) предпоследнее и т.д. Включение в стек осуществляет декремент TOP и загрузку в новую вершину стека. При извлечении из стека данное читается из ST(0), а затем производится инкремент TOP.
С каждым регистром стека ассоциируется двухбитный тэг, характеризующий хранимое число:
00 - нормализованное число;
01 - истинный нуль;
10 - денормализованное число, бесконечность или неопределенность;
11 - пустой регистр.
В слове состояния SW поле TOP содержит адрес текущей вершины стека. Биты кода условия C0-C3 фиксируют результаты команд сравнения, проверки и анализа. Восемь бит отведены для регистрации особых случаев (ошибок) (рис.3.2).
При выполнении команд с ПТ возможны следующие особые случаи:
·P – неточный результат (точность);
·U – антипереполнение;
·O – переполнение;
·D – денормализованный операнд;
·I – недействительная операция;
·Z – деление на нуль.
Особым случаям соответствуют флажки в слове состояния SW (рис.3.2): IE, ZE, DE, OE, UE, PE. При любом особом случае устанавливается бит суммарной ошибки ES, а также вырабатывается активный сигнал ошибки FERR.
В слове управления CW поле RCзадает режим округления, когда формат получателя не позволяет точно представить результат. Пусть B – точный результат, A и C – ближайшие к нему представимые в заданном формате числа: A<B<C. Поле RC задает режим округления:
00 – округление к ближайшему – выбор из А и С, ближайшего к В;
01 – округление вниз – А;
10 – округление вверх – С;
11 – усечение – меньшее из А и С по модулю.
Младшие 6 битов CW хранят маски особых случаев: IM, DM, ZM, OM, UM, PM(рис.3.3). Если бит маски установлен, прерывание при соответствующем особом случае не происходит. Если бит маски сброшен, происходит прерывание.
В данном курсовом проекте используются следующие особые случаи: P, U, O, D, I.
Недействительная операция.
Этот случай возникает при антипереполнении стека (попытка извлечения из пустого регистра) и переполнении стека (попытка включения в непустой регистр). Стековые операции распознаются по биту SF=1 в SW. При антипереполнении стека бит C1=0, С1=1 при переполнении. В операциях FStm32real и FMulSt, St(i) формируется особый случай I при попытке извлечения из пустого регистра.
Переполнение.
Возникает, когда округленный результат арифметической команды с преобразованием формата превышает наибольшее конечное число в формате получателя. Маскированная реакция зависит от режима округления.
Денормализованный операнд.
Возникает при попытке оперировать денормализованным операндом. Маскированная реакция – установка бита D и продолжение операции, при незамаскированном варианте операнды не изменяются, устанавливается бит D и вызывается обработчик особого случая.
4. Блок – схема процессора
На основании анализа заданных операций укрупненная блок-схема процессора представлена на рис 4.1. В него входят оперативная память ОП, блок преобразования форматов данных БПФ, блок регистров БР, блок обработки данных БОД, блок микропрограммного управления БМУ. БПФ и ОП связаны 128-битной шиной и через нее передаются данные в ОП в формате m32real. БПФ осуществляет обратное преобразование из формата PT в OТ.
БР включает в себя регистровый стек, регистры слов тэгов, управления и состояния. Из БР в БПФ передается операнд из вершины стека в формате РТ (операция FSt). Из БР в БОД передаются 2 операнда в формате РТ для операции умножения (FMul) и из БОД в БР передается результат операции умножения в формате РТ в вершину стека. В БОД осуществляется операция умножения.
Управление операциями осуществляется БМУ путем выборки последовательности микрокодов (МК). Обратная связь от БПФ, БР и БОД к БМУ обеспечивается через шину осведомительных сигналов ОС.
5. Алгоритмы операций
5.1. Алгоритм операции FMulSt,St(i).
Порядок выполнения операции состоит из следующих этапов:
а) Чтение операнда из вершины стека ST(0) в БОД;
б) Чтение операнда из ST(i) в БОД;
в) Операция умножения;
г) Запись результата умножения в стек ST(0).
1 этап. Чтение операнда из вершины стека ST(0) в БОД.
Если регистр ST(0) непустой (Т(0)¹11), то читаем операнд в RGD=ST(0), а оттуда в рабочий регистр RG1.
2 этап. Чтение операнда из ST(i) в БОД.
Если регистр ST(i) непустой (Т(i)¹11), то читаем операнд в RGD=ST(i), а оттуда в рабочий регистр RG2.
3 этап. Операция умножения.
Первый операнд читается из вершины стека в рабочий регистр
RG1:RG1=ST(0).
Второй операнд читается из вершины стека в рабочий регистр RG2:
RG2=ST(i).
Произведение формируется в RG3.
Регистры операндов RG1 и RG2 и регистр произведения RG3 подразделяются на субрегистры знаков (S1, S2, S3), и порядков (Е1, Е2, Е3), и мантисс (М1, М2, М3).
Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат округляется до 64 бит.
Схема обработки знаков вычисляет знак произведения S3=S1 S2. Сумматор SME вычисляет порядок произведения E3=E1+E2-16383. Умножение мантисс происходит с анализом младшего бита множителя со сдвигом множимого.
Умножение завершается нормализацией и округлением результата:
· Если произошло переполнение разрядной сетки мантиссы, то сдвиг вправо и инкремент E3 (нормализация вправо).
· Если произошло антипереполнение порядка, то сдвиг M3 вправо и обнуление E3 (денормализация).
· Округление M3 до 64 бит в зависимости от режима округления - поле RC (табл.5.1).
Таблица 5.1
–
Округление результата
RC | Режим | r | Действие округления |
00 01 |
К ближайшему вверх | R<1000 | Отбросить младшие биты |
R>=1000 | Если старший отбрасываемый бит равен 1, то прибавить 1 к младшему сохраняемому биту, иначе отбросить младшие биты | ||
10 11 |
Вниз усечение |
любое | Отбросить младшие биты |
При умножении мантисс нормализованных чисел переполнение мантиссы возможно только на один бит и нормализация ограничивается одним сдвигом вправо. Денормализация выполняется как маскированная реакция на антипереполнение порядка (E3<0). Если E3>-64, M3 сдвигается на ABS(E3) битов вправо, а E3 обнуляется. Если E3<(-64) результат принимается равным нулю.
При нормализации возможны следующие особые случаи:
· При инкременте Е3 возникает переполнение порядка
· При декременте Е3 возникает антипереполнение порядка
При возникновении подобных случаев фиксируются следующие признаки результата:
· P - потеря точности;
· O - переполнение порядка;
· U - антипереполнение порядка;
· I - недействительная операция (при Т(0)=11 или Т(i)=11);
· D - денормализованный операнд (при Т(0)=10 или Т(i)=10).
Маскированные операции на особые случаи:
· O - запись кода бесконечности (Е3=11…1 и М3=1.00…0);
· U - запись кода нуля или денормализованного значения.
Схема операцииFMulST, ST(i)приведена на рис.5.1.
|
|
5.2. Алгоритм операции
FStm32real.
Порядок выполнения операции состоит из следующих этапов:
а) Чтение операнда из вершины стека ST(0) в БПФ;
б) Преобразование операнда из формата m80real в формат m32real;
в) Позиционирование операнда;
г) Запись в ОП.
1 этап. Чтение операнда из вершины стека ST(0) в БПФ.
Если регистр ST(0) непустой (Т(0)¹11), то читаем операнд в RGD=ST(0), иначе фиксируем недействительную операцию. Регистр операндов RGD подразделяется на субрегистры знака (S), порядка (E) и мантиссы (M).
2 этап. Преобразование операнда из формата m80real в формат m32real.
Преобразование начинается с проверки T(0) регистра слова тегов TW.
00 – нормализованное число;
01 – истинный нуль;
10 – денормализованное число;
Если число денормализовано или равно нулю, то результатом будет код нуля в формате ОТ.
Затем вычесть из смещенного порядка E разность смещений 16383-127 =16256. Если E > 254, то фиксируется особый случай переполнения O; если он не замаскирован, перейти к обработчику прерывания, если замаскирован – сформировать результат, равный наибольшему положительному или отрицательному числу, и закончить преобразование.
Если E < 1, то фиксируется особый случай антипереполнения U; если он не замаскирован, перейти к обработчику прерывания, если замаскирован – продолжить преобразование.
Если E < 23, произвести денормализацию числа – сдвинуть мантиссу на E битов вправо, округлить её и установить E=0, иначе проверить младшие отбрасываемые 40 бит мантиссы; если они не равны нулю, зафиксировать особый случай P (потеря точности); если особый случай не замаскирован, перейти к обработчику прерывания, если замаскирован – продолжить преобразование.
Далее округлить мантиссу до 24 бит в соответствии со значением поля RC; порядок округления описывается таблицей 5.1. Закончить преобразование, сдвинув мантиссу на 1 бит влево.
Преобразованное число находится в 79, 71-41 разрядах рабочего регистра RGD (рис. 5.2).
3 этап. Позиционирование операнда.
Позиционирование операнда – это размещение операнда в приемном регистре в некотором стандартном виде.
Переписываем операнд из регистра RGD в регистр REG (длина 32 бита) определенные разряды (рис 5.3).
|
REG[31] = RGD[79] - позиционирование знака.
REG[30:23] = RGD[71:64] - позиционирование порядка.
REG[22:0] = RGD[63:41] - позиционирование мантиссы.
Так как операнд имеет длину меньше, чем длина слова ОП, то REG позиционируют в RGRW в зависимости от байтов 0-2 адресного регистра EAR.
CASE EAR[0:1:2]
000: RGRW[31:0]:= REG;
001: RGRW[47:16]:= REG;
010: RGRW[63:32]:= REG;
011: RGRW[79:48]:= REG;
100: RGRW[95:64]:= REG;
101: RGRW[111:80]:= REG;
110: RGRW[127:96]:= REG;
111: INT.
4 этап. Запись в ОП.
MEM[EAR] = RGRW.
Схема операции FStm32real приведена на рис. 5.4.
|
|
6. Структурные схемы блоков процессора
6.1. Блок памяти.
В курсовом проекте используется одноуровневая память данных емкостью 4Кб и длиной слова ОП 128 бит. Адрес данного к началу операции вычислен и находится в адресном регистре EAR. В операциях с ПТ минимальный размер данного 2 байта, поэтому адресация производится с точностью до двухбайтового слова W. Адрес содержит 11 бит, из них старшие 8 адресуют слово MW, а младшие 3 - слово W в MW.
В данном курсовом проекте адресуются данные длиной 32 бит. Они выбираются из ОП за одно обращение. Адресация памяти для заданного формата приведена на рис.6.1. Адрес двойного слова QW заканчивается битами 000,010,011, 100,101 или 110, но не 111. При выборке из ОП читается всегда полное слово MW в регистр чтения-записи RGRW[127:0]. Выделение из MW данных формата m32 происходит в БПФ.
W7 | W6 | W5 | W4 | W3 | W2 | W1 | W0 | ||
7FF | m32 | m32 | m32 | m32 | 7F8 | ||||
7F7 | m16 | m32 | m32 | m32 | m16 | 7F0 | |||
… | … | … | |||||||
007 | m16 | m16 | m16 | m16 | m16 | m16 | m16 | m16 | 000 |
127 112 | 111 96 | 95 79 | 78 64 | 63 48 | 47 32 | 21 16 | 15 0 |
|
При записи данное должно быть размещено в ОП в соответствии со своим форматом и адресом, поскольку запись полного слова может привести к разрушению информации в соседних полях слова памяти. Для этого память выполнена в виде восьми банков Б7, Б6, …, Б0, которые хранят соответственно двухбайтовые слова W7, W6, …, W0 всех слов памяти. Управляют записью в банки биты разрешения записи Z7, Z6, …, Z0, формируемые в зависимости от трех младших бит адреса (таблица 6.1).
Таблица 6.1 - Формирование битов разрешения записи для формата m32
Младшие биты адреса EAR[0:1:2] | Биты разрешения | |||||||
Z7 | Z6 | Z5 | Z4 | Z3 | Z2 | Z1 | Z0 | |
000 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
001 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
010 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
011 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
100 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
101 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
110 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
111 | - | - | - | - | - | - | - | - |
Схема организации памяти приведена на рис 6.2. Здесь БП - блок памяти (банки Б7-Б0), EAR - регистр исполнительного адреса, ФСРЗ – формирователь сигналов разрешения записи Z7-Z0. Схема управляется сигналами (битами МК) WR – запись, МЕМ – обращение к памяти.
|
6.2. Блок преобразования форматов.
При разработке алгоритма FSt m32real описаны основные действия в БПФ.
Укрупненная схема БПФ приведена на рис. 6.3.
Она включает в себя обратный (ОПФ) преобразователь форматов, коммутатор обратного (КОП) позиционирования со схемой управления СУОП. Коммутатор управляется сигналом EAR[0:1:2] и микрокодом формата данного FD.
Преобразователем управляют специальные последовательности микроко
|
Структурная схема блока обратного преобразования форматов (ОПФ) из m80real в m32real для нормализованных чисел приведена на рис. 6.4.
На один вход сумматора SM1 подается константа -16256. На выходе SM1 получаем смещенный порядок E для формата m32real и передаем его в разряды 30:23 REG.
Старшие разряды мантиссы M из регистра RGD передаются в регистр RGS1.
Осуществляем сдвиг регистра RGS1 на один разряд влево. В разряды 22-0 регистра REG передаем старшие разряды регистра RGS1. Знак S (79 разряд), передается в 31 разряд регистра REG без изменений.
6.3. Блок регистров.
Блок регистров БР (рис.6.5) включает в себя регистровый стек ST, регистр тэгов TW, регистр управления CW, регистр состояния SW, регистр 1-го операнда RGA, схему СхАиМ анализа и модификации TW, CW и SW, трехразрядный сумматор SM.
Выборка из ST происходит по шинам А и B, запись – только по шине А. ST имеет адресные входы A=TOP (адресует вершину стека) и B=TOP+i (адресует регистр ST(i)). Чтение происходит по сигналу RD. Если при этом подан сигнал разрешения обращения к ST(i) EI=1, чтение происходит одновременно по обоим адресам. Запись происходит по сигналу WR в ST(0) при EI=0 и в ST(i) при EI=1.
Схема анализа и модификации выполняет проверку и модификацию тэгов, установку битов особых случаев, проверку масок.
6.4. Блок обработки данных (блок умножения)
Обобщенная схема БОД.
БОД выполняет операцию умножения над поступающими на его входы операндами. Обобщенная схема БОД приведена на рис. 6.6.
В нее входят регистры RG1 и RG2 первого и второго операндов, компаратор COMP для сравнения операндов с кодами истинного нуля, блок выполнения операций БВО, регистр результата RGB. Константы для сравнения с операндом поступают на компаратор из ПЗУ констант в составе блока микропрограммного управления БМУ. БВО разделяют на схему обработки знаков, блок обработки порядков БОП, блок обработки мантисс БОМ и формирователь признака результата ФПР. Регистры RG1 и RG2 могут быть совмещены с регистрами RGA и RGB БР. Их используют для хранения исходных операндов.
Блок умножения.
На основании алгоритма операции FMulST,ST(i) разработан блок умножения Регистры операндов RG1 и RG2 и регистр произведения RG3 подразделяются на субрегистры знаков (S1, S2, S3), порядков (E1, E2, E3) и мантисс (М1, М2, М3). Регистры мантисс расширены до 68 бит для увеличения точности вычислений. Окончательный результат получается в RG3 округляется до 64 бит.
Структурная схема обработки знаков показана на рисунке 6.8. Знак результата определяется как S3=S1 + S2.
|
|
Сумматор SME вычисляет порядок произведения E3=E1+E2-16383.
Умножитель мантисс умножает мантиссы по схеме с анализом младшего бита множителя со сдвигом множимого влево.
Вариант такой схемы приведен на рис. 6.9. Для организации цикла используется счетчик циклов CTT.
Умножение завершается нормализацией и округлением результата. Вариант схемы нормализации представлен на рис. 6.10, округления – на рис. 6.11.
|
|
|
6.5. Блок микропрограммного управления
В состав БМУ (рис. 6.12) входят регистр команд RGК, регистр микрокоманд RGМК, схема управления последовательностью микрокоманд УПМ, мультиплексор кода условия МКУ; инвертор кода условия ИКУ, счетчик микрокоманд СМК, преобразователь кода операции ПКОп, мультиплексор адреса МК МУАД, память констант ПЗУК.
ПЗУ МК содержит микропрограммы выполняемых операций. RGМК хранит выбранную микрокоманду (микрокод) на время ее исполнения. В микрокоманде можно выделить часть, которая управляет операционными блоками - ОП, БПФ, БР, БОД, и часть, которая управляет самим БМУ. В МК, которая управляет БМУ входят следующие поля: CHA –управление адресом следующей МК, CC-определяет проверяемое логическое условие (ЛУ), I - бит инверсии условия, J- бит безусловного перехода, Адр/К (адреса/константы)- поле адреса или константы, которое содержит адрес следующей МК, адрес ПЗУ констант или небольшую константу К.
МКУ выделяет ЛУ, указанное СС, а ИКУ передает полученное значение Х на УПМ с инверсией или без нее в зависимости от бита I.
ПКОп преобразует код операции в начальный адрес НА микропрограммы этой операции или непосредственно в микрокод. УПМ управляет мультиплексором адреса МК МУАД в зависимости от полей CHA и J МК и значения условия Х.
|
|
|||||||
|
7. Моделирование операции
FMulSt,St(i)
Основные этапы моделирования:
1) постановка задачи;
2) разработка схемы алгоритма;
3) распределение регистров;
4) микропрограмма заданного алгоритма (с коментариями);
5) значения исходных данных и результатов;
6) протокол изменения состояния основных элементов модели в режиме «микрокоманда» (трасса);
7) проверка вручную правильности результата.
1 этап. Постановка задачи.
Моделирование имеет целью проверку правильности алгоритма и его окончательную отладку.
Смоделировать операцию умножения мантисс двух вещественных чисел (FMulSt, St(i)). Умножение осуществляется с анализом младшего бита множителя со сдвигом множимого влево.
2 этап. Разработка схема алгоритма.
Схемы алгоритма представлены на рисунках 5.6 и 7.1.
3 этап. Распределение регистров.
Знак и характеристика первого числа хранятся в регистре BX (15ый бит – знак числа, биты 0-14 – характеристика), мантисса – в регистре BP. Знак и характеристика второго числа хранятся в регистре CX, мантисса – в регистре SI. Произведение получается в регистрах DX и DI (аналогично).
Также в микропрограмме используются дополнительные регистры RGQ и AX. AX- сначала для выделения знака числа, затем как маска. RGQ– младшая часть мантиссы второго операнда.
4 этап. Микропрограмма заданного алгоритма (с комментариями).
Микропрограмма по заданному алгоритму, с учетом распределения регистров представлена в таблице 7.1.
|
Таблица 7.1 – Микропрограмма операции FMulSt,St(i) (начало).
a | b | ma | mb | mem | src | sh | n | alu | ccx | f | dst | wm | jfi | cc | cha | const |
MK0 AX=BX | ||||||||||||||||
3 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK1 AX=AX xor CX | ||||||||||||||||
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | e | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK2 AX=AX & 8000h | ||||||||||||||||
0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 8000 |
MK3 DX=AX | ||||||||||||||||
0 | 2 | 0 | 0 | 0 | 1 | 0 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK4 BX=BX & 7FFFh | ||||||||||||||||
0 | 3 | 0 | 0 | 0 | 5 | 0 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 7FFF |
MK5 CX=CX & 7FFFh | ||||||||||||||||
0 | 1 | 0 | 0 | 0 | 5 | 0 | 0 | 9 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 7FFF |
MK6 BX=BX + CX | ||||||||||||||||
1 | 3 | 0 | 0 | 0 | 1 | 0 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK7 BX=BX – 3FFFh | ||||||||||||||||
0 | 3 | 0 | 0 | 0 | 5 | 0 | 0 | 1 | 1 | 0 | 4 | 0 | 0 | 0 | 7 | 3FFF |
MK8 DX= DX v BX RACT=Fh |
Таблица 7.1 – Микропрограмма операции FMulSt,St(i) (окончание).
a | b | ma | mb | mem | src | sh | n | alu | ccx | f | dst | wm | jfi | cc | cha | const |
3 | 2 | 0 | 0 | 0 | 1 | 0 | 0 | C | 0 | 0 | 4 | 0 | 0 | 0 | 6 | 000F |
MK9 AX=1 | ||||||||||||||||
0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0001 |
MK A RGQ=BP | ||||||||||||||||
0 | 5 | 0 | 0 | 0 | 1 | 6 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0000 |
MK B BP=0 | ||||||||||||||||
0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK C IF (SI & AX)=0 GOTO E | ||||||||||||||||
0 | 6 | 0 | 0 | 0 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 000E |
MK D DI=DI+BP | ||||||||||||||||
5 | 7 | 0 | 0 | 0 | 1 | 0 | 0 | 3 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK E BP=L1(BP, RGQ) | ||||||||||||||||
0 | 5 | 0 | 0 | 0 | 1 | A | 1 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK F SI=R1(SI) RACT=RACT-1 If RACT=0 GOTO C | ||||||||||||||||
0 | 6 | 0 | 0 | 0 | 1 | 2 | 1 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 4 | 000C |
MK 10 DI=L1(DI) | ||||||||||||||||
0 | 7 | 0 | 0 | 0 | 1 | 8 | 1 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | 7 | 0000 |
MK 11 HALT | ||||||||||||||||
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 6 | 0 | 0 | 0 | 0 | 5 | 0 | 7 | 0000 |
5 этап. Значения исходных данных и результатов.
Исходные данные:
1-ый операнд: 3FFFA000
BX = 3FFF
BP = A000
2-ой операнд: 3FFE C000
CX = 3FFE
SI = C000
Результат: 3FFEF000
DX = 3FFE
DI = F000
6 этап. Трасса программы (таблица 7.2).
Таблица 7.2 – Трасса программы.
AX | BX | BP | CX | SI | DX | DI | RGQ | CMK | RFI | RACT |
0000 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 0000 | 00 | 0000 |
3FFF | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 0001 | 00 | 0000 |
0001 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 2 | 10 | 0000 |
0000 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 3 | 04 | 0000 |
0000 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 4 | 04 | 0000 |
0000 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 5 | 00 | 0000 |
0000 | 3FFF | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 6 | 10 | 0000 |
0000 | 7FFD | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 7 | 00 | 0000 |
0000 | 3FFE | A000 | 3FFE | C000 | 0000 | 0000 | 0000 | 8 | 10 | 0000 |
0000 | 3FFE | A000 | 3FFE | C000 | 3FFE | 0000 | 0000 | 9 | 10 | 000F |
0001 | 3FFE | A000 | 3FFE | C000 | 3FFE | 0000 | 0000 | A | 10 | 000F |
0001 | 3FFE | A000 | 3FFE | C000 | 3FFE | 0000 | A000 | B | 0A | 000F |
0001 | 3FFE | 0000 | 3FFE | C000 | 3FFE | 0000 | A000 | C | 04 | 000F |
0001 | 3FFE | 0000 | 3FFE | C000 | 3FFE | 0000 | A000 | E | 04 | 000F |
0001 | 3FFE | 0001 | 3FFE | C000 | 3FFE | 0000 | 4000 | F | 04 | 000F |
0001 | 3FFE | 0001 | 3FFE | 6000 | 3FFE | 0000 | 4000 | C | 0A | 000E |
0001 | 3FFE | 0001 | 3FFE | 6000 | 3FFE | 0000 | 4000 | E | 04 | 000E |
0001 | 3FFE | 0002 | 3FFE | 6000 | 3FFE | 0000 | 8000 | F | 00 | 000E |
0001 | 3FFE | 0002 | 3FFE | 3000 | 3FFE | 0000 | 8000 | C | 00 | 000D |
… | … | … | … | … | … | … | … | … | … | … |
0001 | 3FFE | 2800 | 3FFE | 0003 | 3FFE | 0000 | 0000 | C | 00 | 0001 |
0001 | 3FFE | 2800 | 3FFE | 0003 | 3FFE | 0000 | 0000 | D | 10 | 0001 |
0001 | 3FFE | 2800 | 3FFE | 0003 | 3FFE | 2800 | 0000 | E | 00 | 0001 |
0001 | 3FFE | 5000 | 3FFE | 0003 | 3FFE | 2800 | 0000 | F | 00 | 0001 |
0001 | 3FFE | 5000 | 3FFE | 0001 | 3FFE | 2800 | 0000 | C | 10 | 0000 |
0001 | 3FFE | 5000 | 3FFE | 0001 | 3FFE | 2800 | 0000 | D | 10 | 0000 |
0001 | 3FFE | 5000 | 3FFE | 0001 | 3FFE | 7800 | 0000 | E | 00 | 0000 |
0001 | 3FFE | A000 | 3FFE | 0001 | 3FFE | 7800 | 0000 | F | 00 | 0000 |
0001 | 3FFE | A000 | 3FFE | 0000 | 3FFE | 7800 | 0000 | 10 | 00 | 0000 |
0001 | 3FFE | A000 | 3FFE | 0000 | 3FFE | F000 | 0000 | 11 | 00 | 0000 |
0001 | 3FFE | A000 | 3FFE | 0000 | 3FFE | F000 | 0000 | 12 | 10 | 0000 |
7 этап. Проверка вручную правильности результата.
а) BX=3FFF BP=A000 =>
S1=0, E1=3FFF, M1=A000
П1=3FFF-3FFF=0
X=1,010*1=1,012
=1,2510
б) CX=3FFF SI=C000 =>
S2=0, E2=3FFE, M2=C000
П2=3FFE-3FFF=-1
Y=0,11002
=0,7510
в) X*Y=0,75*1,25= 0,9375=(15/16)10
=0,11112
П3=-1, E3=3FFE, M1=1,1112
=F00016
DX=3FFE, DI=F000
Заключение
Целью данного курсового проекта является разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486, изучение структуры сопроцессора FPU. В результате выполнения данной работы был расписан принцип выполнения операций, разработаны блок-схемы выполнения этих операций, построены структурные схемы основных блоков процессора.
Грамотная разработка подобных устройств дает необходимые первичные навыки будущим инженерам различных специальностей.
Список использованных источников
1. Григорьев В.Л. Микропроцессор i486. Архитектура и программирование (в четырех книгах). М.: ГРАНАЛ, 1993. 382 с.
2. Григорьев В.Л. Архитектура и программирование арифметического сопроцессора. М.: Энергоатомиздат, 1991.
3. Злобин В.К., Григорьев В.Л. Программирование арифметических операций в микропроцессорах: учебное пособие для технических вузов, М: Высш. шк., 1991, 303 с.
4. Исследование микропрограммируемого процессора: методические указания к лабораторным работам / РГРТА; Сост.: Волковыский В.Л., Елесина С.И., Никифоров М.Б. Рязань, 2001, 40 с.
5. Проектирование процессора с плавающей точкой: методические указания к лабораторным работам / РГРТА; Сост.: Волковыский В.Л., Елесина С.И. Рязань, 2003, 32 с.