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

Figure 4.5 Окружение GPRenv конструкции DLXσ

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

Конструкция DLX которая подготовлена для конвейерного выполнения включает два блока памяти, один для команд и один для  фактического доступа к данным.

Окружение IMenv памяти команд управляется одним сигналом fetch, который активирует сигнал чтения Imr. Адрес доступа к памяти команд определен в регистре DPC. Таким образом, при fetch = 1, окружение IMenv выполняет операцию чтения, обеспечивающую слово памяти

IMout = IMword[(DPC[31 : 2]00)].

Так как память IMне выполняет доступа по записи, ее сигнал записи Imwвсегда неактивен.1 Управление IMCпамятью команд простое и имеет нулевую стоимость и задержку. Пусть dImemозначает время доступа к банку памяти IM. Так как адрес непосредственно берется из регистра, окружение IMenv задерживает выборку команды на

DIMenv(IR)   =  DIMC + dImem   =  dImem.

Память команд также обеспечивает сигнал ibusyпоказывающий, что доступ не может быть закончен в текущем тактовом цикле. Мы ожидаем, что этот сигнал будет верным через dIstatединиц времени после начала обращения к памяти IM.

Окружение DMenv памяти данных DM выполняет обращение к памяти команд загрузки и записи. По большему счету, DMenv идентичен окружению памяти последовательной конструкции, но теперь адрес всегда обеспечивается регистром MAR.

Окружение DMenv управляется двумя сигналами Dmrи Dmw, которые запрашивают доступ к памяти по чтению или записи соответственно. Память

1Конечно это абстракция.  В главе 6 мы обрабатываем кэш команд, который, конечно, может быть записан.


DM адресуема побайтно, управление DMC генерирует четыре сигнала записи в банк Dmbw[3 : 0] основываясь на адресе и ширине доступа по записи, как и в последовательной конструкции. Стоимость и задержка управления памятью остаются теми же самыми .

Память данных DM имеет время доступа dDmemи обеспечивает флаг dbusyс задержкой dDstat. Сигнал dbusyпоказывает, что текущее обращение не может быть закончено в текущем тактовом цикле. Пусть acon(csm) означает накопленную задержку сигналов Dmrи Dmw, тогда


Окружение PC

Окружение PCenv на рисунке 4.6 управляется семью сигналами управления, а именно:

reset, который инициализирует регистры PC' и DPC,

• сигналы синхронизации PCceи linkce,

jump, который обозначает одну из четырех команд перехода j, jal, jr и jalr,

•  jumpR , который обозначает команды абсолютного перехода (jr, jalr),

•  branch , который обозначает команды ветвления beqz, bnez,

•  bzero , который активен при beqz и неактивен при bnez.

Основываясь на этих сигналах, gluelogicPCglueгенерирует тактовый сигнал для регистров PC' и DPC. Они синхронизируются одновременно, когда сигнал PCceактивен или при сбросе, то есть

PCce \/ reset.

В добавок, PCglueпроверяет операнд A' на ноль        

AEQZ = 1     <->     [A[31:0]] = 0

и генерирует сигнал bjtakenсогласно спецификациям раздела 4.1. Таким образом, bjtakenустанавливается при любых переходах или принятии ветвления:

bjtaken = jump \/ branch /\ (bzero XNOR AEQZ).




Рисунок 4.6 Окружение PCenv осуществляющее задержанный PC

Пусть Acon(csID) означает накопленную задержку управляющих сигналов, которые управляют этапом ID. Тогда стоимость glue logic и задержка сигналов AEQZи bjtaken

CPCglue      =    2*Cor + Cand  + Cxnor + Czero(32)

DPCglue      =    Dor + Dand + Dxnor

A(AEQZ)    =    AGPRenv(A')+Dzero(32)

A(bjtaken)    =    max {ACON(csID),A(AEQZ)} + DPCglue.

Окружение PCenv простейшим способом осуществляет механизм “задержанного PC” из раздела 4.1. При активном сигнале синхронизации, эти два PC установлены в


где значение pc' = nextPC(PC', А', со) команды I, которая содержится в регистре IR, вычисляется как

PCenv также обеспечивает регистр link , который обновляется под управлением сигнала linkce. При linkce= 1, он установлен в

link = PC' + 4,

это PC, который будет сохранен в случае команд перехода и связи.