
Лекция 8
4. Микроархитектурный уровень
В архитектурной иерархии компьютера он расположен над цифровым логическим уровнем. Его задача - интерпретация команд уровня 2 (уровня машинных команд, или команд макроархитектуры). Строение микроархитектурного уровня существенно зависит от уровня 2 (например, RISC или CISC), а также от стоимости и назначения компьютера. В RISC-архитектуре каждая команда выполняется за 1 цикл центрального процессора, в CISC выполнение команды может занимать несколько циклов. Чтобы выполнить машинную команду, необходимо расшифровать ее, найти операнды, считать их, произвести операцию и записать результаты в память. Эти действия выполняет микропрограмма.
4.1. Основы микроархитектуры
В связи c различиями систем интерпретируемых команд, подходов к их реализации, в настоящее время не существует общих принципов разработки микроархитектурного уровня. Поэтому мы рассмотрим некоторый упрощенный пример того, какой могла бы быть микроархитектура. Этот пример содержит некоторое подмножество микроархитектуры виртуальной машины Java (IJVM - Integer JVM).
Рассматриваемая микроархитектура содержит в ПЗУ микропрограмму, которая способна выбирать, декодировать и выполнять команды IJVM. Для этих целей невозможно использование интерпретатора JVM фирмы Sun, поскольку он написан на C, а нам требуется минимальная микропрограмма, запускающая отдельные вентили аппаратуры.
С точки зрения микропрограммирования каждую команду макроархитектуры можно считать “функцией”, вызываемой “основной программой” - бесконечным циклом. Микропрограмма содержит также набор глобальных переменных, определяющих состояние компьютера. Каждая “функция” (команда макроархитектуры) изменяет значения этих переменных, формируя новое состояние. К таким переменным можно отнести, например, счетчик команд (регистр PC).
Каждая машинная команда IJVM может состоять из одного или более полей. К ним относятся: код операции, тип операнда, его адрес. Для стековой машины, которой является JVM, операнд может быть только один и присутствует не всегда. Рассматриваемая модель выполнения команды называется циклом выборка-выполнение. Каждая микрокоманда на один цикл процессора занимает тракт данных (АЛУ + регистры процессора). Он содержит несколько 32-разрядных регистров с символическими именами (например, PC, SP, MDR), доступных микропрограмме (но не машинным командам). Одна микрокоманда использует простейшие схемы нижнего уровня (сумматор, инвертер, сдвиг), выполняя элементарную операцию над словами. Точная синхронизация тракта данных делает возможным считывание и запись одного и того же регистра за один цикл, при этом цикл тракта данных разбивается на несколько подциклов. Границы подциклов определяются временем прохождения синхронизирующего сигнала.
IJVM может взаимодействовать с основной памятью двумя способами: посредством порта с пословной адресацией (32-битный) и порта с байтовой адресацией (8-битный). Порт с пословной адресацией управляется двумя регистрами: MAR (Memory Address Register - регистр адреса) и MDR (Memory Data Register - регистр данных). Порт с байтовой адресацией управляется регистром PC, который записывает 1 байт в 8 младших разрядов регистра MBR (Memory Buffer Register - буферный регистр памяти). Этот порт может только считывать данные и используется для чтения однобайтных кодов операций из потока команд. Регистры запускаются одним из сигналов управления.
Сигналы, управляющие трактом данных, можно разделить на 5 групп:
-
запись данных в регистры;
-
разрешение передачи данных из регистров в АЛУ;
-
управление АЛУ и схемой сдвига;
-
чтение/запись памяти через MAR/MDR;
-
чтение памяти через PC/MBR.
За последовательность операций, необходимых для выполнения одной команды, отвечает специальный контроллер последовательности. Он задает, какой сигнал управления и на каком цикле должен запускаться. В каждом цикле контроллер последовательности выдает состояние каждого сигнала управления в системе и адрес следующей микрокоманды.
Микропрограмма хранится в специальной управляющей памяти. В IJVM управляющая память состоит из слов. Одно слово соответствует одной 32-битной микрокоманде. Каждая микрокоманда наряду с собственной информацией содержит также адрес следующей микрокоманды. Таким образом, способ расположения микрокоманд в управляющей памяти отличается от последовательного расположения машинных команд в основной памяти. Функционально управляющая память представляет собой ПЗУ. Она имеет собственный адресный регистр и собственный регистр данных. Назовем их соответственно MPC (MicroProgram Counter - микропрограммный счетчик, содержит управляющие сигналы и адрес текущей микрокоманды) и MIR (MicroInstruction Register - регистр микрокоманд, содержит текущую микрокоманду). Управляющей памяти не требуются сигналы чтения и записи, т.к. процесс считывания происходит автоматически и постоянно. Регистр MPC может быть виртуальным, т.е. представлять собой место скопления сигналов.