Таненбаум Э.- Архитектура компьютера. стр.221

Чтобы объединить основной цикл с какой-нибудь микрокомандой, нужно освободить АЛУ от некоторых задач подобного рода. Для этого можно ввести второе

АЛ У, хотя полнофункциональное АЛ У в большинстве случаев для этого не потребуется. Отметим, что АЛ У часто применяется для копирования значения из одного регистра в другой. Эти циклы можно убрать, если ввести дополнительные тракты данных, которые не проходят через АЛ У. Полезно будет, например, создать тракт от TOS к MDR или от MDR к TOS, поскольку верхнее слово стека часто копируется из одного регистра в другой.

В микроархитектуре Mic-1 с АЛ У можно снять большую часть нагрузки, если создать независимый блок для вызова и обработки команд. Этот блок, который называется блоком выборки команд (Instruction Fetch Unit, IFU), может независимо от АЛУ увеличивать значение PC на 1 и вызывать байты из потока байтов до того, как они понадобятся. Блок IFU содержит схему инкремента, которая по строению гораздо проще, чем полный сумматор. Разовьем эту идею. Блок выборки команд может также объединять 8-разрядные и 16-разрядные операнды, чтобы они могли использоваться сразу, как только потребуются. Это можно осуществить по крайней мере двумя способами:

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

♦ Блок IFU может постоянно предоставлять следующие 8- или 16-разрядные фрагменты данных независимо от того, имеет это смысл или нет. Тогда основной операционный блок может запрашивать любые данные, которые ему требуются.

Рисунок 4.18 иллюстрирует второй способ реализации IFU. Вместо одного 8-разрядного регистра MBR здесь есть два регистра MBR: 8-разрядный MBR1 и 16-разрядный MBR2. Блок IFU следит за самым последним байтом или байтами, которые поступили в основной операционный блок. Кроме того, он передает следующий байт в регистр MBR, как и в архитектуре Mic-1, только в данном случае он автоматически определяет, когда значение регистра считано, вызывает следующий байт и сразу загружает его в регистр MBR1. Как и в микроархитектуре Mic-1, он имеет два интерфейса с шиной В: MBR1 и MBR1U. Первый получает знаковое расширение до 32 битов, второй дополнен нулями.

Регистр MBR2 функционирует точно так же, но содержит следующие 2 байта. Он имеет два интерфейса с шиной В: MBR2 и MBR2U, первый из которых расширен по знаку, а второй дополнен до 32 бит нулями.

Блок выборки команд отвечает за вызов байтов. Для этого он использует стандартный 4-байтный порт памяти, вызывая полные 4-байтные слова заранее и загружая следующие байты в сдвиговый регистр, который выдает их по одному или по два за раз в том порядке, в котором они вызываются из памяти. Задача сдвигового регистра — сохранить последовательность поступающих байтов для загрузки в регистры MBR1hMBR2.

MBR1 всегда содержит самый старший байт сдвигового регистра, a MBR2 — 2 старших байта (старшим является левый байт), которые формируют 16-разрядное целое число (см. рис. 4.14, б). Два байта в регистре MBR2 могут быть получены из различных слов памяти, поскольку IJVM-команды никак не связаны с границами слов.


⇐ Предыдущая страница| |Следующая страница ⇒