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

Рисунок 4.3 Высокоуровневый вид путей данных подготовленной последовательной DLX

Таблица 4.3 Входы и выходы путей данных на каждом этапе kподготовленной DLX

stage

in(k)

out(k)

0

IF

DPC, IM

IR

1

ID

GPR, PC', IR

A, B, PC', link, DPC, со, Cad.2

2

EX

A, B, link, со, Cad.2, IR

MAR, MDRw, Cad.3

3

M

MAR, MDRw, DM, Cad.3, IR

DM, C, MDRr, Cad.4

4

WB

C, MDRr, Cad.4, IR

GPR

время цикла, поскольку только последние два бита адреса влияют на расстояние сдвига, а эти биты известны в начале цикла. Обычно память Mразбита на память команд IMи память данных DM.

Есть, однако, простое но глобальное изменение, в котором мы синхронизируем выходные регистры этапов. Вместо единственного сигнала разрешения обновления UE(раздел 3.4.3), мы вводим для каждого этапа kсигнал четкого разрешения обновления ue.k. Выходной регистр Rэтапа kмодифицируется тогда и только тогда, когда и сигнал запроса синхронизации




Рисунок 4.4 Управление обновлением выходных регистров  этапа k

Rceи сигнал разрешения обновления на этапе kактивны (рисунок 4.4). Таким образом, сигнал разрешения синхронизации Rce' такого регистра Rполучается как

Rce' = Rcе /\ ue.k.

Как и прежде, сигналы чтения и записи основной памяти Mне маскируются сигналом разрешения обновления ue.3 но заполняют бит full.3 этапа памяти.

4.2.1    Пути данных подготовленной DLX

Окружение IRenv

регистра команд все еще управляется сигналами Jjump(J-type jump), shiftIи синхронизирующим сигналом IRce. Функциональные возможности фактически те же самые, что и прежде. При IRce = 1, выход IMoutпамяти команд синхронизируется с регистром команд   

IR= IMout,

и 32-битной константа со генерируется как в последовательной конструкции, а именно


Стоимость и задержка окружения IRenv остаются теми же.

Для использования в дальнейших конвейерных этапах, два кода операций IR[31 : 26] и IR[5 : 0] буферизируются в трех регистрах

IR .k, каждый из которых шириной в 12 бит.

Окружение SH4Lenv

управляется сигналом shift4l, который запрашивает сдвиг в случае загрузки команды. Единственное изменение в этом окружении то, что адрес памяти теперь предоставляется регистром С а не регистром MAR. Это влияет на функциональность окружения SH4Lenv, но не на стоимость и задержку.


Пусть sh4l(a, dist) означает функцию, вычисляемую устройством сдвига SH4L, как это было определено в разделе 3.3.7. Тогда  измененное окружение SH4Lenv обеспечивает результат

Окружения CAddr и GPRenv

Как в последовательной конструкции, схема CAddrгенерирует адрес Cadрегистра назначения основываясь на сигналах Jlink(jump и link) и Itype. Однако, адрес Cadтеперь заранее вычисляется на этапе ID и затем проходит вниз этап за этапом к окружению файла регистров GPRenv. Для дальнейшего использования, мы вводим запись

Cad = CAddr(IR).   

Окружение GPRenv (рисунок 4.5) имеет те же самые функциональные возможности. Оно обеспечивает два регистровых операнда             

и обновление файла регистров под управлением сигнала записи GPRw:

GPR[Cad.4]=C'    если   GPRw=1.

Так как схема CAddrтеперь имеет свое собственное окружение, стоимость окружения файла регистров GPRenv равна


CGPRenv   =  Cram3(32,32)+2* (Czero(5) + Cinv + Cand(32)).

Из-за вычисляемого заранее адреса назначения Cad.4 обновление файла регистров становится быстрее. Окружение GPRenv теперь задерживает только доступ по записи

DGPR,write  = Dram3(32,32).

Пусть Acon(csWB) означает накопленную задержку управляющих сигналов которые управляют этапом WB; время цикла этапа обратной записи равно

Задержка DGPR,readдоступа по чтению, однако, остается неизменной; она складывается со временем цикла этапа IF и блока управления.