Реклама:

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

Следующая (и последняя) микроархитектура - Міс-4. Ее основные компоненты представлены на рис. 4.23, но большая их часть не показана, чтобы сделать схему более понятной. Как и Міс-3, эта микроархитектура содержит блок выборки команд (ІЕТЛ), который заранее вызывает слова из памяти и сохраняет различные значения МЕЖ.

Семиступенчатый конвейер - микроархитектура Mic-4

Рис. 4.23. Основные компоненты микроархитектуры Міс-4

Блок выборки команд передает входящий поток байтов в новый компонент - блок декодирования. Этот блок содержит внутреннее ПЗУ, которое индексируется кодом IJVM-операции. Каждый элемент (ряд) блока состоит из двух частей: поля длины IJVM-команды и индекса в другом ПЗУ - ПЗУ микроопераций. Длина IJVM-команды нужна для того, чтобы блок декодирования мог разделить входящий поток байтов и установить, какие байты являются кодами операций, а какие - операндами. Если длина текущей команды составляет 1 байт (например, длина команды POP), то блок декодирования определяет, что следующий байт - это код операции. Если длина текущей команды составляет 2 байта, блок декодирования определяет, что следующий байт - это операнд, сразу за которым следует другой код операции. Когда появляется префиксная команда WIDE, следующий байт преобразуется в специальный расширенный код операции, например, WIDE плюс IL0AD превращается в WIDEILOAD.

Блок декодирования передает индекс в ПЗУ микроопераций, который он находит в своей таблице, следующему компоненту, блоку формирования очереди. Этот блок содержит логические схемы и две внутренние таблицы одну для ПЗУ и вторую для ОЗУ. В ПЗУ находится микропрограмма, причем каждая IJVM-ko-манда состоит из микроопераций. Эти микрооперации должны располагаться в строгом порядке, и, например, переход из wide_iload2 в iload2, который допустим в микроархитектуре Mic-2, не разрешается. Каждая последовательность микроопераций должна выполняться полностью, в некоторых случаях последовательности дублируются.

Структура микрооперации сходна со структурой микрокоманды (см. рис. 4.4), только в данном случае поля NEXT_ADDRESS и JAM отсутствуют и требуется новое поле для определения входа на шину А. Имеется также два новых бита: бит завершения и бит перехода. Бит завершения устанавливается на последней микрооперации каждой последовательности (чтобы обозначить эту операцию). Бит перехода нужен для указания на микрооперации, которые являются условными микропереходами. По формату они отличаются от обычных микроопераций. Они состоят из битов JAM и индекса в ПЗУ микроопераций. Микрокоманды, которые раньше осуществляли какие-либо действия с трактом данных, а также выполняли условные микропереходы (например, iflt4), теперь нужно разбивать на две микрооперации.

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

Таким образом, последовательность IJVM-команд в памяти в конечном итоге превращается в последовательность микроопераций в очереди. Эти микрооперации передаются в регистры MIR, которые посылают сигналы тракту данных. Но есть еще один фактор, который нам нужно учесть: поля каждой микрооперации не действуют одновременно. Поля А и В активны во время первого цикла, поле АЛУ активно во время второго цикла, поле С активно во время третьего цикла, а все операции с памятью происходят в четвертом цикле.

Чтобы все эти операции выполнялись правильно, мы ввели 4 независимых регистра MIR в схему на рис. 4.23. В начале каждого цикла (на рис. 4.2 это время Aw) значение MIR3 копируется в регистр MIR4, значение MIR2 - в регистр MIR3, значение MIR1 - в регистр MIR2, а в MIR1 загружается новая микрооперация из очереди. Затем каждый регистр MIR выдает сигналы управления, но используются только некоторые из них. Поля А и В из регистра MIR1 применяются для выбора регистров, которые запускают защелки А и В, а поле АЛУ в регистре MIR1 не используется и не связано ни с чем на тракте данных.

В следующем цикле микрооперация передается в регистр MIR2; выбранные регистры находятся в защелках А и В. Поле АЛУ теперь используется для запуска АЛУ. В следующем цикле поле С запишет результаты обратно в регистры. После этого микрооперация передается в регистр MIR4 и инициирует любую необходимую операцию памяти, используя загруженное значение регистра MAR (или MDR для записи).

Нужно обсудить еще один аспект микроархитектуры Mic-4 - микропереходы. Некоторым IJVM-командам нужен условный переход, который осуществляется с помощью бита N. Когда происходит такой переход, конвейер не может продолжать работу. Именно поэтому нам пришлось добавить в микрооперацию бит перехода. Когда в блок формирования очереди поступает микрооперация с таким битом, блок воздерживается от передачи сигнала о получении данных блоку декодирования. В результате машина простаивает до тех пор, пока этот переход не разрешится.

Предположительно, некоторые IJVM-команды, не зависящие от этого перехода, могут быть уже переданы в блок декодирования, но не в блок формирования очереди, поскольку он еще не выдал сигнал о получении. Чтобы разобраться в этой путанице и вернуться к нормальной работе, требуется специальное устройство и особые механизмы, но мы не будем рассматривать их в этой книге. Здесь отметим только, что классик, написавший о губительности команд goto, был безусловно прав [55].

Мы начали с микроархитектуры Mic-1 и, пройдя довольно долгий путь, закончили микроархитектурой Mic-4. Аппаратное обеспечение микроархитектуры Mic-1 оказалось очень простым, поскольку практически все управление было реализовано программно. Микроархитектура Mic-4 является конвейеризированной структурой с семью ступенями и более сложным аппаратным обеспечением. Данный конвейер изображен на рис. 4.24. Цифры в кружочках соответствуют компонентам на рис. 4.23. В микроархитектуре Mic-4 поток байтов заранее вызывается из памяти в автоматическом режиме, декодируется в IJVM-команды, которые затем с помощью ПЗУ превращаются в последовательность операций и применяются по назначению. Первые три ступени конвейера при желании можно связать с задающим генератором тракта данных, но работа будет происходить не в каждом цикле. Например, блок выборки команд совершенно точно не сможет передавать новый код операции блоку декодирования в каждом цикле, поскольку выполнение ЦУМ-команды занимает несколько циклов и очередь быстро переполнится.

Семиступенчатый конвейер - микроархитектура Mic-4

Рис. 4.24. Конвейер Mic-4

В каждом цикле значения регистров MIR смещаются, и микрооперация, находящаяся в начале очереди, копируется в регистр MIR1. Затем сигналы управления от всех четырех регистров MIR передаются по тракту данных, вызывая определенные действия. Каждый регистр MIR контролирует отдельную часть тракта данных и, следовательно, разные микрошаги.

В данной разработке имеется конвейеризированный процессор. Благодаря этому отдельные шаги становятся очень короткими, а тактовая частота - высокой. Многие процессоры проектируются именно таким образом, особенно те, которым приходится выполнять устаревший набор команд (CISC). Например, процессор Pentium II в некоторых аспектах сходен с микроархитектурой Mic-4, как мы увидим позднее в этой главе.

Конвейерная конструкция - микроархитектура Mic-З || Оглавление || Повышение производительности