Детальный проект конвейерного RISC процессора (Глава 5 "Обработка прерываний"), страница 12

но из-за программных ограничений rfe может быть прервано только сбросом, который прерывает выполнение. Таким образом, входы двух exception PC могут быть выбраны как

Окружение SPRenv состоит из файла специальных регистров, схемы SPRsel, которая выбирает входы четких портов чтения, и glue logic, которая генерирует сигнал sel. Таким образом, стоимость равна

CSPRenv     =    CSF(6, 32) + CSPRsel + CSPRglue

CSPRsel   =   3 * Cmux(32)

CSPRglue     =     Czero(3) + 2 * Cand + Cinv .

Все входы данных непосредственно обеспечиваются регистрами с нулевой задержкой. Пусть входы управления имеют задержку acon(csspr). Тогда выход Sinи входы Diимеют накопленную задержку

ASPRenv(Sin)    =   DSF(Dout) ASPRenv(Di)    =   max{ACON(csSPR), Dzero(3)} + 2 • Dand + Dmux ,

и доступ по записи требует время цикла самое большее

5.5.4    Модифицированные пути данных

Декодирующий этап ID получает новый выходной регистр S. Два кода операций IR[31:26] и IR[5:0] и адрес назначения Cadфайла универсальных регистров предоставляются этапом ID, но они также используются более поздними этапами. Как и прежде, эти данные пропускаются вниз по конвейеру, и буферизируются на каждом этапе. Также из-за обработки прерываний этап WB теперь требует трех PC и адреса Sadфайла регистров SPR. Подобно коду операции и адресу Cad, эти данные перемещаются вниз по конвейеру вместе с командой. Это требует дополнительной буферизации (рисунок 5.7); ее стоимость

Cbuffer = Cff(22) + 2 * Cff(22 + 3 * 32).




Рисунок 5.7 Буферизация

Обработка прерываний влияет на окружение регистра команд IRenv, которое извлекает непосредственный операнд coи окружение устройства сдвига SH4Lenv.

Окружение выполнения

Окружение выполнения EXenvна рисунке 5.8 все еще включает окружение ALU и устройства сдвига SHenv и соединяет их с шинами операнда и результата. Три шины операнда управляются как и прежде, и выводы shи ovfтакже остаются теми же самыми.

Единственное изменение заключается в том, что результат Dтеперь выбирается среди шести значений. Помимо значения регистра linkи результатов ALU и устройства сдвига, окружение EXenv также может помещать константу coили операнды Sили Aна шину результата:

Результат D = coиспользуется в случае пропускания константы ловушки вниз по конвейеру, в то время как результат D = Aиспользуется специальной командой перемещения movi2s. D = Sиспользуется rfe и movs2i.

Выбор Dтеперь требует двух добавочных буферов с тремя состояниями, но это не влияет на задержку окружения. Стоимость EXenv

CEXenv  = CALUenv + CSHenv + 2 • Cmux(32) + 6 • Cdriv(32).




Рисунок 5.8 Окружение выполнения EXenv с поддержкой прерываний

Окружение памяти команд IMenv

Окружение IMenv памяти команд управляется единственным сигналом управления Imr. Адрес все еще определяется регистром DPC, но память IM имеет слегка расширенные функциональные возможности. В добавок, к выходу данных IMoutи флагу занятости ibusy, IM обеспечивает второй флаг состояния ipf. Флаг ipfпоказывает, что память неспособна выполнить требуемый доступ из-за отсутствия страницы. Флаг ibusyуказывает, что памяти требуется, по крайней мере, еще один цикл для завершения требуемого обращения. Оба флага неактивны, если память IM не выполняет доступ. В случае успешного обращения (ibusy= ipf = 0), память команд IM обеспечивает требуемое слово памяти на выходе данных Imout, в противном случае, она обеспечивает произвольное но фиксированное двоичное значение IMdefault:

Контроллер памяти команд IMC проверяет обращение на неправильные границы. Вызов 4-байтной команды нарушает границы, если адрес не кратен четырем:

imal = DPC[0] \/ DPC[1].

Пусть dIstatозначает время состояния памяти команд. Так как адрес напрямую берется из регистра, флаги состояний imal, ibusyи ipfобеспечиваются со следующей стоимостью и накопленной задержкой:

cimc  =   Cor

AIMenv( flags)    =   max{Dor ,dIstat}.

Окружение памяти данных DMenv

Окружение DMenv все еще состоит из памяти данных DM и контроллера памяти DMC. Память DM производит фактический доступ на загрузку или