Автор работы: Пользователь скрыл имя, 29 Октября 2013 в 21:20, курсовая работа
Микропроцессор — процессор (устройство, отвечающее за выполнение арифметических, логических операций и операций управления, записанных в машинном коде), реализованный в виде одной микросхемы или комплекта из нескольких специализированных микросхем (в отличие от реализации процессора в виде электрической схемы на элементной базе общего назначения или в виде программной модели).
Долгое время центральные процессоры создавались из отдельных микросхем малой и средней интеграции, содержащих от нескольких единиц до нескольких сотен транзисторов. Развитие микроэлектронных технологий позволило существенно повысить вместимость кристаллов электронных схем. В 1989 году появился микропроцессор Intel486.
Операция загрузки или включения в стек (push) осуществляет декремент поля ТОР и загружает адресуемые данные в новую вершину стека, что приводит к автоматической перенумерации регистров. В операции сохранения и извлечения из стека (pop) в получатель, например в память, передастся содержимое текущей вершины стека, а затем производится инкремент поля ТОР. Таким образом, в стандартных стековых операциях поле ТОР выполняет функции традиционного указателя стека SP. Организация стека представлена на Рис.10. [2]
Рис.8. Программная модель устройства FPU
Регистр состояния:
Рис. 9. Формат регистра состояния
PE – неточный результат;
UE – антипереполнение;
OE – переполнение;
ZE – деление на нуль;
DE – денормализованный операнд;
IE – недействительная операция.
C0, C1, C2, C3 (биты 8, 9, 10, 14) - коды условий.
Аналогичны флагам CPU. FPU устанавливает
значения этих битов по
При обнаружении любого из незамаскированных особых случаев устройство FPU устанавливает в состояние 1 соответствующий флажок и формирует активный выходной сигнал FERR#, сообщая об особом случае.
Рис. 10. Организация стека устройства FPU
В соответствии с заданием, необходимо произвести выборку следующих команд: AND r8imm8, FADD m64real, JCXZ rel8.
1. AND r8imm8. | |||
КОП |
Описание | ||
80 |
/4 |
ib |
Логическое И |
ib - однобайтный непосредственный операнд, следующий за кодом операции, ModR/M байтом. Непосредственный операнд - однобайтное беззнаковое целое число.
Описание: Каждый бит результата команды AND равен 1, если соответствующие биты обоих операндов равны 1; иначе результат равен 0.
Воздействие на флажки: Флажки CF и OF сбрасываются в 0, а флажки ZF, SF и PF устанавливаются в соответствии с результатом.
Поле Reg имеет значение 100. Это означает наличие непосредственного операнда в команде. Поля Mod и R/M определяют 8-разрядный РОН. Следовательно, способом адресации является регистровая адресация. Формат команды AND r8,imm8 представлен на рисунке 11.
КОП |
MOD R/M |
Непосредственный операнд | ||||||||
Mod |
REG/opcode |
R/M | ||||||||
10000000 |
11 |
100 |
3 бита |
1 байт | ||||||
23 |
1 |
15 |
8 |
7 |
0 |
Рис 11. Формат команды AND r8,imm8
2. FADD m64real. | ||||
КОП |
Описание | |||
DC |
/0 |
ST(0) = m64real + ST(0) |
Описание: Команда сложения вещественных чисел прибавляют операнд-источник к операнду-приемнику и возвращают сумму на место операнда-приемника. Приемник имеет формат вещественного числа расширенной точности и находится в вершине стека. Источник, представленный в формате вещественно числа с двойной точностью, находится в памяти. При выполнении команды второй операнд приводится к формату расширенной точности.
Старшие 5 бит инициализируют устройство FPU. Поле MF определяет тип операнда, находящегося в памяти (вещественное число двойной точности). КОП (3,4,5,8 биты) инициализируют команду FADD. Поле Mod=01, следовательно, поле R/M определяет РОН, хранящий адрес второго операнда в памяти. Способом адресации является косвенно-регистровая .
Воздействие на флажки: Флаги C0, C2, C3 регистра SW после выполнения команды неопределенны, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS. Также меняются флаги IS, IA, D, O, U, P. Формат команды FADD m64real представлен на рисунке 12.[1]
КОП |
MF |
КОП |
MOD |
КОП |
R/M | ||||
11011 |
10 |
0 |
01 |
100 |
3 бита | ||||
15 |
8 |
7 |
0 |
Рис 12. Формат команды FADD m64real
3. JCXZ rel8. | |||
КОП |
Описание | ||
E3 |
cb |
Короткий переход, если CX=0 |
Описание: Команда JCXZ отличается от других команд условного перехода тем, что она проверяет содержимое регистра CX на нуль.
При выполнении условия(CX=0), команда JCXZ осуществляет переход по адресу счетчика команд, увеличенного на величину непосредственного операнда. В случае невыполнения условия, значение счетчика команд увеличивается на единицу. В непосредственном операнде указано относительное смещение. Для этой команды оно может принимать значения от –127 до +128. Непосредственный операнд – однобайтовое знаковое число, представленное в дополнительном коде. Команда флаги не меняет. Формат команды JCXZ rel8 представлен на рисунке 13.
Способ адресации –
КОП |
Непосредственный операнд | |||||
11100011 |
1 байт | |||||
15 |
8 |
7 |
0 |
Рис 13. Формат команды JCXZ rel8
Команды из памяти выбираются по счетчику команд и записывается в регистр команд. В счетчике хранится адрес текущей команды. После выполнения текущей команды, значение счетчика увеличивается и выборка производится снова. В регистре команд производится дешифрация команд.
На основе анализа форматов заданных
команд и данных была разработана
структурная схема
1. Оперативная память объемом 4 ГБ. Регистр адреса ОП имеет разрядность 31, а регистр информации ОП– 16. Ширина выборки – 16 бит. Разрядность общей шины – 32 бита.
Расчет организации ОП:
;
Ширина выборки = 16 бит - разрядность РгИОП;
N = 31 – разрядность РгАОП
РгАОП является считающим. Это необходимо для быстрого считывания операндов большой разрядности.
2. Регистры общего назначения с организацией 8×32. Разрядность регистра адреса РОН 3 бит, а регистра информации - 32 бита.
3. Стековая память (FPU) с организацией 8×80. Разрядность регистра адреса стековой памяти 3 бит, а регистра информации – 80 бит.
4. Регистр флагов сопроцессора (РгSW) - отображает состояния флагов, после выполнения команд в формате с плавающей точкой. Разрядность регистра 16 бит.
5. FLAGS (регистр флагов) – хранит состояния флагов, значения которых меняются в соответствии с полученными результатами выполняемых команд. Разрядность равна 16 бит.
6. Счетчик команд (СчК) – хранит адрес следующей команды. Разрядность равна 32 бит. Разрядность счетчика команд 32 бита выбрана для адресации каждого полуслова в памяти, так как команды различных форматов имеют различную длину.
7. Регистр команд (РгК) – хранит текущую команду. Разрядность: 16 бит.
8. Буферные регистры:
9. Операция логического И производится над беззнаковыми операндами размером 1 байт. Первый и второй операнд пересылается по шине данных. Первый операнд из буфера регистра команд, второй РОН, адрес которого указан в коде команды. После выполнения операции, результат пересылается на схему проверки четности. Она также имеет разрядность 8 бит.
Блок СОЛО для операции AND. Состоит из следующих элементов:
Блок проверки признака четности. Состоит из следующих элементов:
10. Операция FADD выполняется над двумя вещественными числами, представленными в формате двойной и расширенной точности. Первый операнд хранится в стеке FPU и имеет формат расширенной точности. Второй операнд хранится в ОП и имеет формат двойной точности. Оба операнда пересылаются по шине данных. После пересылки операндов во входные регистры АЛУ, производится приведение формата второго операнда в формат расширенной точности. В формат двойной точности представления чисел с плавающей запятой целая часть мантиссы не представлена явно, но предполагается, что она равна единице (скрытая единица). Мантисса формата расширенной точности должна иметь целую часть. Поэтому для приведения мантиссы второго операнда к формату расширенной точности, необходимо восстановить скрытую единицу в старшем разряде, что производится при пересылке мантиссы из регистра второго операнда во входной регистр блока сумматора мантисс. Для приведения порядка второго операнда к формату расширенной точности необходимо к нему прибавить разницу смещения порядка числа с расширенной точностью и смещения порядка числа с двойной точностью на сумматоре порядков (15360=16383-1023). После этого происходит проверка на знаки и мантиссы отрицательных чисел переводятся в дополнительный код на цепях сумматора мантисс. Счетчику тактов присваивается значение 64(максимальное число сдвигов вправо при выравнивании мантисс). Далее вычитаются порядки и определяется меньшее по модулю число. Счетчику порядков присваивается модуль значения разности порядков обоих чисел и запускается цикл сдвига мантиссы меньшего числа вправо на цепях сумматора мантисс и вычитания единицы из счетчика порядков. По достижению счетчика порядков значения нуль, мантиссы складываются и в счетчик порядков заносится значение большего числа. Выявляются переполнения и устанавливаются флаги регистра флагов FPU. Определяется знак результата. Знак заносится в выходной регистр. При отрицательном значении результата мантисса переводится в прямой код на цепях сумматора мантисс. Далее при необходимости производится нормализация результата на цепях сумматора мантисс. По ее завершению происходит формирование результата на выходном регистре АЛУ.
Блок АЛУ для операции FADD. Состоит из следующих элементов:
11. Для выполнения команды JCXZ необходимо сначала проверить регистр CX на равенство нулю. При выполнении команды JCXZ rel8 адрес из команды складывается со счетчиком команд. Так как JCXZ rel8 осуществляет относительный переход, значение непосредственно операнда должно хранится в дополнительном коде. Сложение непосредственно операнда с значением счетчика команд должно производиться также в дополнительном коде. Сумматор для этой операции должен быть той же разрядности, что и счетчик команд. Данные со счетчика команд и смещение, указанное в буфере регистра команд передаются на АЛУ JCXZ через шину. Проверяется знак смещения. При отрицательном знаке смещения старшие байты регистра заполняются единицами или нулями, если знак смещения положительный. После сложения новый адрес передается в счетчик команд через шину.
Блок проверки признака нуля. Состоит из следующих элементов:
Блок АЛУ для выполнения команды JCXZ имеет следующую структуру(блоки алгоритма 14-17):
Информация о работе Проектирование процессора для заданной системы команд