2.2. Разработка архитектуры цп
2.2.1. Уточнение структуры системы
Разрабатываемый процессор предназначен для использования в качестве встроенного процессора.
Обобщенная структура процессора, соответствующая гарвардской архитектуре, приведена на рис. 1. Она представляет собой одноплатную ЭВМ, предназначенную для встроенных применений. На плате размещаются: ЦП, память данных, счетчик-таймер, адаптер интерфейса. Кроме того, на плате могут размещаться вспомогательные схемы и интерфейсные схемы для подключения внешних устройств (на рис. 1 эти схемы не показаны).
Разрабатываемая плата не имеет собственной дисковой памяти, дисплея и клавиатур. Предполагается, что разработка и отладка программного обеспепечения осуществляются на инструментальной машине с использованием кросс-систем программирования. В качестве инструментальной машины может использоваться, например рабочая станция, имеющая в своем составе дисплей, клавиатуру, дисковую память и т. п.
Рис. 1. Обобщённая структура процессора.
2.2.2. Архитектура внешних выводов
Архитектура представлена на рис. 1.
Рис. 1. Внешние выводы процессора и сопроцессора.
AD – совмещенная 32-разрядная шина адрес/данные;
ALE – сигнал, означающий, что находится в данный момент на шине А/Д: адрес или данные;
HLD – сигнал запроса на захват шины;
HLDA – сигнал подтверждения запроса на захват шины;
INT – сигнал запроса на прерывание;
INTA – сигнал подтверждения запроса на прерывание;
READ – сигнал чтения данных, выставленных на шину;
WRITE – сигнал записи (выставления) данных на шину;
BHE – разрешение записи старшего байта, задают выполняемую на шине операцию;
IN – сигнал чтения из порта;
OUT – сигнал записи в порт;
FRAME – сигнал режима пакетного обмена данными между ОП и кэшем, появление данного сигнала на шине означает начало транзакции, а снятие – указывает на то, что следующий цикл передачи данных на шине является последним.
RESET – сброс;
WAIT – ожидание данных от сопроцессора;
CLC – синхронизация;
FPBUSY – сопроцессор занят;
FPINT – ошибочная ситуация.
2.2.3. Выбор форматов данных
Рис. 2. основные используемые типы данных
Целые числа могут занимать слово или двойное слово. Они могут быть знаковыми и беззнаковыми. В знаковых целых самый старший бит отводится для индикации знака числа. Нуль соответствует плюсу, единица — минусу. Таким образом, возможный диапазон представляемых значений для знаковых целых составляет: от –215 до 215 для слов, от –231 до 231 для двойных слов. Беззнаковые целые могут принимать значения: от 0 до 216-1 для слов, от 0 до 232-1 для двойных слов.
2.2.5. Выбор формата команд
В соответствии с техническим заданием, команды должны быть трёхадресными. Код операции (КОП) всегда занимает 6 бит, максимальное число команд равняется 64 (26 = 64).
Поддерживаются 3 вида адресации: непосредственная (Н), прямая (П) и относительная (О).
В зависимости от типа адресации варьируется формат команды, однако последние 16 бит команды всегда имеют одинаковый формат.
Важно отметить что команды считываются по 16 бит начиная с последних 16 бит.
Непосредственно можно передать лишь один операнд, а именно - первый. Такое ограничение продиктовано самим смыслом использования операций. Вне зависимости от размера данных, при непосредственной адресации первый операнд А1 всегда занимает 32 бита.
В случае прямой или относительной адресации формат команды выглядит так, как показано на рис. 3. Так как это наиболее общий формат, то рассмотрим на нём назначения тех или иных полей:
Рис. 3. Формат команды при прямой адресации.
Последние 6 бит – всегда содержат КОП. В каждом двухразрядном поле Пi хранится способ адресации для соответствующего адресного поля Аi:
0x1 – Непосредственная адресация (Ai содержит непосредственно данные);
0x2 – Прямая адресация (Ai содержит адрес ячейки с данными);
0x3 – Относительная адресация (Ai содержит адрес, прибавляемый к значению, хранящемся в регистре, указанном в поле И);
0x0 – Поле не используется (означает, что Аi не используется).
Адресные поля А1, А2 и А3 используются для хранения 1-го, 2-го и 3-го операндов (или результата). Поле Х служит для указания формата данных (32 или 16 бит). Однобитовое поле И задаёт один из двух возможных регистров при относительной адресации.
Рис. 4. Формат команды при прямой адресации и одном операнде.
Для удобства, обозначим команды по значениям полей Пi, т.е. в данном случае команда будет иметь формат “1.0.0”, а в предыдущем – «2.2.2».
Для таких команд, как INT 5 предусмотрен формат «1.0.0» (рис. 4), для таких, как MOV 5, AH предусмотрен формат «1.2.0» (рис. 5).
Рис. 5. Формат команды при прямой адресации и одном операнде.
Команды типа RET не имеют операндов вообще (рис. 6).
Рис. 6. Формат команды, не имеющей операндов.
Как видно из формата, первые 4 бита здесь вообще не используются, тем не менее, вся команда умещается в 16 бит, что позволяет считать всю команду за один цикл.
Рассмотрим ещё два формата – с двумя операндами и с одним при прямой или относительной адресации.
Рис. 7. Формат команды с двумя операндами при относительной или прямой адресации.
Формат, изображённый на рис. 7 одинаково подходит как для прямой, так и для относительной адресации. Различие – лишь в значениях полей Пi: «2.2.0» – прямая адресация, «3.3.0» – относительная, «2.3.0» и «3.2.0» - прямая и относительная вместе.
Рис. 8. Формат команды с одним операндом при относительной или прямой адресации.
Как и в предыдущем случае, формат, изображённый на рис. 8 одинаково подходит как для прямой, так и для относительной адресации. Различие – лишь в значениях полей Пi: «2.0.0» – прямая адресация, «3.0.0» – относительная.
Аналогичные выводы можно сделать и для рис. 3.