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


Рисунок 5.2 Окружение PCenv с поддержкой прерываний


вместо этого JISR,:


За исключением команды rfe, значения PC' uiи DPCuiвычисляются как и прежде:

Таким образом, новое вычисление PC теперь требует два дополнительных мультиплексора, управляемых сигналом rfe. Два регистра linkи DDPCобновляются только при активном сигнале синхронизации PCce, тогда как PC' и DPCтакже обновляются при переходе на ISR:

DPCce = PC'ce = PCce \/ PCinit.

Эти изменения не влияют ни на регистр link, ни на glue logic Pcglueкоторая генерирует сигнал bjtaken. Стоимость окружения теперь

CPCenv   =   4 * Cff (32) + 6 • Cmux (32) + Cadd (32) + Cinc (30) + CPCglue .

Два исключения PC обеспечиваются средой RFenv. Пусть csIDозначает сигнал управления, который управляет этапом ID, включая сигнал JISR;




Рисунок 5.3 Схема Daddr

и пусть acon(csid) означает их накопленную задержку. Тогда окружение PCenv требует времени цикла

5.5.2    Схема Daddr

Схема Daddrсостоит из двух подсхем Caddrи Saddr. Как и прежде, схема Caddrгенерирует адрес назначения Cadфайла регистров общего назначения GPR. Схема Saddr(рисунок 5.3) обеспечивает исходный адрес Sasи адрес назначения Sadфайла регистров специального назначения SPR.

Два адреса файла регистров SPR обычно определяются битами SA = IR[10 : 6]. Однако, при команде rfe, состояние исключения ESR копируется в регистр состояния SR. Согласно таблице 5.3, регистры ESR и SR имеют адреса 1 и 0, соответственно. Таким образом, схема Saddrвыбирает исходный адрес и адрес назначения файла регистров SPR как

Схема Daddrпредоставляет три адреса Cad, Sasи Sadсо следующей стоимостью и задержкой:

CDaddr      =    CCaddr + CSaddr

CSaddr      =    2 * Cmux(5)

DDaddr      =    max{DCaddr, Dmux(5)}   = DCaddr.


5.5.3    Окружение файла регистров RFenv

Теперь архитектура DLX содержит два файла регистров, один для универсальных регистров GPR и один для специальных регистров SPR. Оба файла регистров формируют окружение RFenv.

CRFenv  = CGPRenv + CSPRenv

Окружение GPRenv файла универсальных регистров имеет ту же самую функциональность, что и прежде. Дополнительные регистры SPR содержатся в файле регистров с расширенным режимом доступа. Специальные команды перемещения movi2s и movs2i обращаются к этим регистрам как к регулярному файлу регистров, который разрешает одновременно одну операцию чтения и одну записи. Однако, на JISR все регистры читаются и обновляются параллельно. Прежде чем описать окружение SPRenv подробно, мы представим файл специальных регистров с таким расширенным режимом доступа.

Специальный файл регистров

(Kx n) файл специальных регистров SF включает Kрегистров, каждый из которых является nразрядным. Файл SF может быть доступен как регулярный двухпортовый файл регистров:


• флаг wопределяет, что должна быть выполнена операция записи

• адреса adrи adwопределяют адреса чтения и записи файла регистров, и

Dinи Doutопределяют входные и выходные данные файла регистров.

Кроме того, файл специальных регистров SF предоставляет четкий порт чтения и записи для каждого из регистров. Для любого регистра SF[r],

Do[r] определяет выход порта четкого чтения, и

Di[r] определяет данные, записываемые в SF[r] при активном флаге записи w[r].

В случае конфликта адресов, такая специальная запись имеет приоритет над правильным доступом по записи определяемым адресом  adw. Таким образом, данные d[r] записываемые в SF[r] равны

Регистр обновляется в случае w[r] = 1 и в случае правильной записи по адресу r:

ce[r] = w[r] \/ (w /\ ((adw) = r)).                                  (5.3)