Такая модель выполнения команды, называемая иногда циклом выборка-выполнение, полезна для теории и может стать основой воплощения уровня архитектуры команд со сложными командами (например, ЦУМ). Далее мы опишем, как работает эта модель, что собой представляет микроархитектура и как ею управляют микрокоманды, каждая из которых занимает тракт данных на один цикл. Полный список команд формирует микропрограмму, которая будет рассмотрена очень подробно.
Тракт данных
Тракт данных — это часть центрального процессора, состоящая из АЛУ (арифметико-логического устройства), его входов и выходов. Тракт данных нашей микроархитектуры показан на рис. 4.1. Хотя этот тракт данных и был оптимизирован для интерпретации ЦУМ-программ, он схож с трактами данных большинства компьютеров. Тракт содержит ряд 32-разрядных регистров, которым мы приписали символические названия (например, РС, 8Р, МЭИ,). Хотя некоторые из этих названий нам знакомы, важно понимать, что эти регистры доступны только на уровне микроархитектуры (для микропрограммы). Им даны такие названия, поскольку они обычно содержат значения, соответствующие переменным с аналогичными названиями на уровне архитектуры команд. Содержание большинства регистров передается на шину В. Выходной сигнал АЛУ управляет схемой сдвига и далее шиной С. Значение с шины С может записываться в один или несколько регистров одновременно. Шину А мы введем позже, а пока представим, что ее нет.
Рис. 4.1. Тракт данных для микроархитектуры, рассматриваемой в этой главе
Данное АЛУ идентично тому, которое изображено на рис. 3.18 и 3.19. Его функционирование зависит от линий управления. На рис. 4.1 перечеркнутая стрелочка с цифрой 6 сверху указывает на наличие шести линий управления АЛУ. Из них F0 и Ft служат для задания операции, ENA и ENB — для разрешения входных сигналов А и В соответственно, INVA — для инверсии левого входа и INC — для переноса бита в младший разряд, что эквивалентно прибавлению
единицы к результату. Однако не все 64 комбинации значений на линиях управления могут быть полезными.
Некоторые комбинации показаны в табл. 4.1. Не все из этих функций нужны для машины IJVM, но многие из них могут пригодиться для полнофункциональной машины (JVM). В большинстве случаев существует несколько возможностей для достижения одного и того же результата. В данной таблице знак плюс (+) означает арифметический плюс, а знак минус (-) — арифметический минус, поэтому -А означает дополнение А.
Таблица 4.1. Некоторые комбинации сигналов АЛУ и соответствующие им функции
Порядковый номер |
Fo |
Fi |
ENA |
ENB |
INVA |
INC |
Функция |
А |
|||||||
В |
|||||||
Ä |
|||||||
В |
|||||||
А + В |
|||||||
А + В + 1 |
|||||||
А+ 1 |
|||||||
В + 1 |
|||||||
В - А |
|||||||
В - 1 |
|||||||
-А |
|||||||
АИВ |
|||||||
А ИЛИ В |
|||||||
-1 |
АЛУ, изображенное на рис. 4.1, содержит два входа для данных: левый вход (А) и правый вход (В). С левым входом связан регистр временного хранения Н. С правым входом связана шина В, на которую могут поступать значения с одного из девяти источников, что показано с помощью девяти серых стрелок, примыкающих к шине. Существует и другая разработка АЛУ с двумя полноразрядными шинами, мы рассмотрим ее чуть позже в этой главе.