Материал: Разработка однокристального RISC-процессора для встроенных применений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка однокристального RISC-процессора для встроенных применений

1. Техническое задание

Разработать однокристальный RISC-процессор для встроенных применений (контроллер).

В процессоре должна быть предусмотрена поддержка 8- и 16-разрядных типов данных. Требуется реализовать эти форматы для целых чисел со знаком и без знака.

Регистровая память должна содержать тридцать два 16-разрядных регистра.

В процессоре необходимо обеспечить поддержку следующих способов адресации:

относительная (базовая) адресация;

прямая адресация;

косвенная адресация.

Для занесения непосредственного значения в регистр также должна поддерживаться непосредственная адресация.

Следует предусмотреть функциональную ориентацию регистров, разбив их на группы в зависимости от функционального назначения (например, регистры для хранения: данных, индексов, базы, и т.п.).

В процессоре должны использоваться раздельные шины адреса и данных.

В режиме прямо-адресуемой памяти необходимо обеспечить доступ к памяти данных объемом 46 Кбайт.

Для памяти должна быть выбрана 16-разрядная шина данных. Разрядность шины определяется разрядностью памяти.

Поскольку при разработке процессора используется гарвардская архитектура, это подразумевает наличие отдельной памяти команд, которая размещается внутри кристалла и соединяется с процессором 64-разрядной шиной команд.

Объем памяти команд должен составлять 48 Кбайт. Кроме того, должна быть обеспечена возможность подключения дополнительной внешней памяти команд.

Следует организовать конвейер по выборке команд из памяти и по размещению их в очередь для дальнейшего исполнения.

Ввод-вывод должен быть организован с использованием специальных команд ввода-вывода. Идентификация обращения к регистрам внешних устройств осуществляется по коду операции.

Необходимо разработать векторную систему прерываний; таблица векторов может находиться по произвольным адресам. Используется внешний контроллер прерываний.

Процессор должен иметь встроенную кэш-память, наличие которой предполагает разработку основных алгоритмов ее работы, стратегии и алгоритма замены строк, проработку вопросов структурной организации кэш-памяти.

При разработке системы команд следует учесть, что в RISC-процессоре операции обращения к памяти отделены от операций, связанных с обработкой данных. Операции, связанные с преобразованием данных, выполняются по принципу регистр-регистр и имеют трехадресный формат.

2. Структура выводов кристалла

Для разрабатываемого процессора используется стандартный корпус, имеющий 68 выводов. Обобщенная архитектура внешних выводов кристалла процессора показана на рис. 1.

Рис. 1

Процессор (см. рис. 1) имеет раздельные шины адреса (A) и данных (D), а также двунаправленный порт ввода/вывода (I/O). Пара сигналов HLD и HLDA используется для реализации механизма захвата шины. Сигналы INTRi являются сигналами запроса прерывания от внешних устройств.

Линии RD (чтение), WR (запись), IN (ввод), OUT (вывод) задают выполняемую на шине операцию. Линия FRAME используется для организации режима пакетного обмена между ОЗУ и внутренним кэшем. Появление данного сигнала на шине означает начало транзакции, а снятие - указывает на то, что следующий цикл передачи данных на шине является последним.

Контакт READY (готовность) служит для приема сигнала готовности от медленных внешних устройств. Назначение выводов питания, RESET (сброс) и CLC (синхронизация) очевидно из их названий.

Оставшиеся "лишние" 8 выводов используются для дублирования контактов "земля" и "питание".

3. Форматы данных

В разрабатываемом процессоре предусмотрена поддержка 8- и 16-разрядных типов данных. Эти форматы реализованы для целых чисел со знаком и без знака (рис. 2).

Рис. 2

В целых числах со знаком старший разряд является знаковым (0 - "+", 1 - "-"). Для представления отрицательных чисел используется дополнительный код (дополнение до двух).

В табл. 1 приведены диапазоны значений поддерживаемых типов данных.

Табл. 1

Тип

Диапазон значений

Размер (байт)

полуслово со знаком

-128 … 127

1

полуслово без знака

0 … 255

1

слово со знаком

-32768 … 32767

2

слово без знака

0 … 65535

2


Поскольку целые числа без знака используются также и для представления адресов, то выбранные форматы данных позволяют обеспечить доступ к памяти объемом до 64 Кбайт (при использовании для адреса 16-разрядного числа).

4. Модель памяти и структура регистровой памяти

.1 Обобщенная модель памяти

На рис. 3 приведена обобщенная модель памяти разрабатываемого процессора.

Рис. 3

Поскольку при разработке процессора используется гарвардская архитектура, то память команд является отдельной. Эта память, а также кэш-память команд и кэш-память данных, размещена внутри кристалла. Память данных является внешней и соединяется с процессором 16-разрядной шиной данных. Кроме этого, в процессоре обеспечена возможность подключения дополнительной внешней памяти команд.

Поскольку в процессоре обеспечена поддержка относительной и косвенной адресации, то адрес при обращении к памяти данных может поступать не только из устройства управления, но также из регистровой памяти, в которой предусмотрена специальная группа адресных регистров.

4.2 Память команд

Память команд предназначена для хранения и считывания команд, которые поступают в устройство управления и управляют процессом обработки информации. Общий объем адресуемой памяти команд на кристалле составляет 48 Кбайт. Кроме этого, в процессоре обеспечена возможность подключения дополнительной внешней памяти команд. Таким образом, общий объем памяти команд может достигать 32К 64-разрядных слов (256 Кбайт).

Рис. 4

Поскольку среди выбранных форматов команд максимальную длину имеют 32-разрядные команды, то для рационального использования 64-разрядной памяти команд вводится дополнительной устройство, позволяющее хранить в одной ячейке памяти две команды (см. рис. 4). Это устройство содержит 32 мультиплексора "2 в 1" с общим сигналом управления.

Управляющим сигналом служит младший бит адреса команды. Если он равен 0, то на выход передается правая половина прочитанного из памяти 64-разрядного слова, если он равен 1 - левая половина. Остальные 15 бит адреса поступают на адресную шину памяти команд.

4.3 Память данных

Доступ к внешней памяти данных осуществляется только с помощью специальных команд, которые передают данные между регистровой памятью и памятью данных. Минимальный объем памяти данных, обусловленный требованиями технического задания, составляет 46 Кбайт. Максимальный объем памяти данных может достигать 64К 16-разрядных слов (128 Кбайт).

Рис. 5

Память данных организована так, что одна ячейка памяти может использоваться для хранения 8- или 16-разрядных чисел (см. рис. 5). Данные всегда располагаются в памяти от начала ячейки. Для выполнения операций над числами разной длины в команде должен присутствовать признак разрядности операндов (дополнительный бит в коде операции, дополнительная буква в мнемонике команды).

Преимуществом такого способа организации памяти является простая в реализации структура, недостатком - нерациональное использование памяти при значительной доле среди хранимых данных 8-разрядных чисел.


На рис. 6 показана организация пользовательской регистровой памяти, а также примерная структура системных регистров процессора.

Рис. 6

Пользовательская регистровая память включает тридцать два 16-разрядных регистра общего назначения для хранения данных, доступ к которым осуществляется с использованием прямой регистровой адресации. В соответствии с функциональным назначением выделена группа адресных регистров BP (R30 и R31), предназначенная для хранения базового адреса при использовании относительной адресации или адреса ячейки памяти при косвенной адресации.

В состав системных регистров входят указатель стека (SP), программный счетчик (PC), регистр флажков, регистр физического адреса таблицы векторов прерываний (IDTR), регистры команд (IR1, IR2).

Регистр флажков содержит шесть флажков, которые используются следующим образом:- признак нулевого результата;- признак переноса из старшего разряда;- знак результата;- признак переполнения результата;- разрешение прерывания;- пошаговый режим.

5. Алгоритм кэширования

В разрабатываемом процессоре используется кэш прямого отображения (рис. 7). Память для хранения копий делится на элементы - строки кэша. Данные из памяти дублируются в кэш целой строкой, которая содержит запрошенную процессором ячейку памяти.

Рис. 7

Вся память рассматривается, как совокупность блоков, которые равны по объему кэшу и состоят из строк. Копия любой строки из любого блока всегда занимает в кэше такое же положение, как оригинал в соответствующем блоке памяти. Таким образом, смещение копии строки относительно начала кэш-памяти всегда равно смещению оригинала строки относительно начала ее блока в памяти.

Для идентификации слова в кэш-памяти используется представление адреса основной памяти в виде трех компонент (см. рис. 7). ТЭГ определяет номер блока основной памяти, которому принадлежит адресуемая ячейка. Поле средних разрядов СТРОКА идентифицирует номер строки кэша, в которой находится слово. Младшие разряды СЛОВО определяют место слова в строке.

Информация о том, какой блок в текущий момент занимает данную строку кэша и является ли эта строка действительной, содержится соответственно в полях тэга и бита достоверности. Поиск слова начинается с выделения битов СТРОКА, по которым определяется единственная строка кэш-памяти, которой может принадлежать адресуемая ячейка. Если найденная строка, согласно биту достоверности, является действительной и имеет идентичный старшим разрядам адреса тэг, то имеет место кэш-попадание. В противном случае происходит замена строки.

Разделение физических адресов на компоненты контроллером кэша и разрядность каждого участка адреса для памяти команд и памяти данных приведены соответственно на рис. 8 и рис. 9.

Рис. 8

Рис. 9

Таким образом, при использовании кэш-памяти объемом 32 Кбайт память команд общим объемом 256 Кбайт разбивается на 8 блоков, каждый из которых содержит 1024 строки, состоящие из четырех 64-разрядных слов. Память данных общим объемом 128 Кбайт разбивается на 4 блока, каждый из которых содержит 2048 строк, состоящих из восьми 16-разрядных слов.

6. Форматы команд

При разработке системы команд процессора учитывались принципы RISC-архитектуры, в соответствии с которыми используется минимальное число форматов команд. Машинные инструкции могут иметь разную длину, а минимизация числа форматов достигается за счет упрощения внутренней структуры команды и одинакового расположения одноименных полей фиксированной длины в командах разных типов.

Все команды процессора начинаются с 8-разрядного кода операции, за которым следуют три разряда, уточняющие поведение команды. Их содержимое зависит от типа команды (признак способа адресации для команд обращения к памяти, формат операндов (разрядность, наличие знака) для операционных команд), либо игнорируется. Код операции и поле признаков однозначно определяют состав и назначение последующих полей команды.

.1 Команды обращения к памяти

Команды обращения к памяти данных по чтению и записи имеют три различных формата в зависимости от используемого способа адресации ячейки памяти (рис. 10).

Рис. 10

В трех разрядах, следующих за кодом операции, содержатся признак способа адресации (2 разряда) (СА) и номер адресного регистра BP (1 разряд) (Б). При использовании косвенной адресации в адресном регистре содержится прямой адрес ячейки памяти. При использовании относительной адресации прямой адрес вычисляется с помощью сложения базового адреса, который содержится в выбранном регистре BP, со значением смещения в соответствующем поле команды.

В поле АРЕГ содержится номер регистра, являющегося приемником или источником данных в командах чтения или записи соответственно.

.2 Команды обращения к стеку

Формат команды (рис. 11) аналогичен команде обращения к памяти при использовании косвенной адресации (см. рис. 10).

Рис. 11

Адрес вершины стека содержится в указателе стека SP.

Так как стек "растет" по направлению к младшим адресам памяти, то при помещении слова в стек значение регистра SP уменьшается на единицу, при извлечении слова из стека - увеличивается.

В поле АРЕГ содержится номер регистра, являющегося источником или приемником данных в командах помещения или извлечения слова соответственно.

6.3 Арифметические и логические команды

В RISC-процессоре любые операции с данными выполняются только над содержимым регистров, поэтому все операционные команды используют прямую регистровую адресацию и имеют единый трехадресный формат (рис. 12).

Рис. 12

В трех разрядах, следующих за кодом операции, содержатся признаки разрядности операндов (8/16-разрядные) (Р), наличия знака (со знаком / без знака) (З) и бит разрешения/запрета установки флажков (Ф).

В зависимости от значения признака разрядности операндов АЛУ выполняет арифметические операции над целыми словами, содержащимися в регистрах-операндах, или над их старшими половинами.

При выполнении операций над 8-разрядными данными результат помещается также в старшую половину регистра AРЕЗ, при этом содержимое младшая половина регистра обнуляется.

При выполнении команды умножения произведение имеет двойной размер и возвращается так, что старшая половина результата содержится в регистре R0, младшая - в AРЕЗ (для 8-разрядных чисел в старших половинах указанных регистров).

Поразрядные логические операции выполняются только над 16-разрядными словами.

6.4 Команды сдвигов

Все команды сдвигов выполняются только над регистром, прямой адрес которого находится в команде (рис. 13). Младшие 16 разрядов в команде занимает число позиций, на которое осуществляется сдвиг.

Следует отметить, что формат полей команды аналогичен команде обращения к памяти при использовании относительной адресации (см. рис. 10).