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

5.6.2    Пересылка и взаимная блокировка

Пути данных включают два файла регистров, GPR и SPR. Оба обновляются в течение этапа обратной записи. Так как их данные читаются более ранними этапами, требуются пересылка результата и взаимная блокировка. Оба файла регистров обрабатываются отдельно.

Регистры общего назначения (универсальные)

В течении команды movs2i данные копируются из файла регистров SPR через регистр Sи регистры C.kв файл регистров GPR. Схемы пересылки к Sдолжны гарантировать, что непрерывное выполнение Ii , т.е.,

IП(2, T) = IП(3, T + l) = IП(4, T + 2) = i,

подразумевает ST = Si-1. Тогда в течение этапов EX, Mи WBданные бродят внизу регистров C.kподобно результату обычной операции с фиксированной точкой. Таким образом, мы совсем не изменяем схемы пересылки для регистров Aи B.

Регистры специального назначения

Данные из специальных регистров используются в трех местах, а именно

• при команде movs2i, SPR[Sas] читается в регистр Sв течение этапа декодирования,

• среда причины читает маски прерываний SR на этапе памяти, и

• при команде rfe два exception PC читаются в течение этапа декодирования.

Обновления регистров SPR производится в трех ситуациях:

• При команде movi2s значение C.4 пишется в регистр SPR[Sad].




Рисунок 5.15 Пересылка SPR в регистр S

• Регистр SRобновляется по rfe. Повторимся, что на этапах 2 - 4, мы осуществили это обновление подобно регулярной записи в SPR с адресом записи Sad = 0.

• Все регистры специального назначения обновляются JISR. Пересылающее действие этого напоминает кошмар. К счастью, все команды которые могли бы использовать пересланные версии значений занесенные в SPR процедурой JISR, выселяются из канала в тех же самых случаях JISR.

Поэтому, единственная необходимость пересылать данные из входов регистров C.kс адресом назначения в SPRопределяется Sad.

Пересылка SПересылаемые данные с адресом назначения SPRв регистр S – точно подобны пересылаемым данным с адресом назначения GPRв Aили B, за исключением адреса ad = 0 данные теперь пересылаются также. Таким образом, объединенные три этапа схемы пересылки SFor(3) как изображено на рисунке 5.15 обрабатывают пересылку в регистр S. Обратите внимание, что не введены никакие опасности данных.

Схема SFor на рисунке 5.16 изображает реализацию 3-этапной схемы отправления SFor. Она получена из схемы Forwна рисунке 4.18 очевидным путем. Пусть DSFor(Data; 3) означает задержку, требуемую входами данных для прохода схемы SFor(3). Для n-битного адреса ad, стоимость и задержка SFor(3) может быть смоделирована как

CSFor(3)   =    3*Cmux(32) + 6*Cand + 3*Cequal(n)

DSFor(hit)    =    Dequal(n)+Dand

DSFor(Dout; 3)   =     DSFor(hit) + 3*Dmux(32)

DSFor(Data; 3)   =    3*Dmux(32).

Схема SForнемного быстрее, чем схема пересылки Forwдля операндов GPR.




Рисунок 5.16 3-этапная схема отправления SFor(3) для регистра SPR


Рисунок 5.17 Пересылка EPC в регистр PC' (a) и регистр SR на этапе памяти (b)

Пересылка EPC Пересылка EPCв программный счетчик PC' в течении команды rfe выполняется посредством схемы SFor(3), которая соединена как показано на рисунке 5.17 (a). Обратите внимание, что адресный вход adсхемы пересылки теперь связан с фиксированным адресом 3 регистра EPC. Опасности данных не представлены.

Пересылка SR Пересылка регистра SRв окружение памяти требует пересылки по единственному этапу схемой SFor(1), соединенной, как показано на рисунке 5.17 (b). Эта схема получена из схемы SFor(3) очевидными упрощениями. Ее стоимость и задержка

CSFor(1)    =    Cmux(32) + 2 • Cand + Cequal (3)

DSFor(Dout; 1)   =   DSFor(hit) + Dmux(32)

DSFor(Data; 1)   =   Dmux(32).

И снова не было введено никаких опасностей данных.

Пересылка EDPC    Пересылка EDPC в течение команд rfe, чтобы сигнализировать, что dpcв окружении PC должно работать вдоль тех же строк,