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


Теорема 4.2


Пусть конструкция DLX  выполнена так, что



Таблица 4.5 RTL команды этапа EX


Состояние

RTL команды

активные управляющие сигналы

Alu

MAR = A op B,

Cad.3 = Cad.2

bmuxsel, ALUDdoe, MARce, Rtype, Cad3ce

Test

MAR=(A rel B ? 1 :0), Cad.3 = Cad.2

bmuxsel, ALUDdoe, MARce,

test, Rtype, Cad3ce

Shift

MAR = shift(A,B[4:0]), Cad.3 = Cad.2

bmuxsel, SHDdoe, MARce,

Rtype, Cad3ce

aluI

MAR = A op со,

Cad.3 = Cad.2

ALUDdoe, MARce,

Cad3ce

testI

МAR=(A геl со ? 1 :0), Cad.3 = Cad.2

ALUDdoe, MARce,

test, Cad3ce

shiftI

MAR = shift(A,co[4:0]), Cad.3 = Cad.2

SHDdoe, MARce, shiftI,

Rtype, Cad3ce

savePC

MAR = link,

Cad.3 = Cad.2

linkDdoe, MARce,

Cad3ce

addrL

MAR = A + со,

Cad.3 = Cad.2

ALUDdoe, add, MARce,

Cad3ce

addrS

MAR = A + со,

MDRw = cls(B,MAR[l:0]000)

ALUDdoe, add, MARce,

amuxsel, shift4s, MDRwce

noEX

1. для каждого типа команд берутся пути, определенные в таблице 4.8,

2.  для каждого состояния s выполняется  набор RTL команд rtl(s).

Если каждое обращение к памяти занимает только один такт, тогда машина интерпретирует набор команд DLX с семантикой задержанного PC.

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

4.2.3    Управление вычисляемое заранее

Мы получим из вышеупомянутой FSD и простого механизма останова новые механизм управления и механизм останова с точно таким же поведением. На этом заканчивается конструирование подготовленной последовательной машины DLXσ .


Таблица 4.6 RTL команды этапов памяти и обратной записи

состояние

RTL команда

управляющие сигналы

M

passC

С = MAR, Cad A = Cad.3

Cce, Cad4ce

load

MDRr = Mword[(MAR[31 : 2]00)],

С = MAR, Cad A = Cad.3

Dmr, MDRrce,

Cce, Cad4ce

store

т = bytes(MDRw)

Dmw

noM

WB

sh41

GPR(Cad.4] =

sh4l(MDRr,MAR[1 : 0]000)

shift41, GPRw

wb

GPR[Cad.4] = С

GPRw

noWB

(no update)

Мы начнем с механизма останова, который синхронизирует все этапы в round robin fashion. Это 5-битный регистр full[4 : 0], где для всех этапов iсигнал

uel = fulll /\ /busy

разрешает обновление регистров в  out(i). Так как обращения к памяти могут занимать несколько тактов, обновление памяти данных DM разрешается full3  , а не ue3. Регистр fullобновляется

Так как конструкция включает два блока памяти, сигнал занято

/busy = ibusy NOR dbusy.

С сигналами fullопределенными таким образом, мы, очевидно, можем следить за этапом, который выполняет команду, а именно: команда находится на этапе i тогда и только тогда, когда fulli = 1. В частности, команда на этапе IFтолько когда full0 = 1, а на этапе ID, если full1 = 1.                                                                                         Мы преобразуем FSD следующими четырьмя изменениями:

1. Управляющие сигналы, активированные в состоянии IFтеперь всегда активны. В такте с full0 = 1 эти сигналы имеют верные значения. В других тактах они не имеют значения, поскольку IRне тактируется.

2. Сигналы Мура активированные в состоянии IDтеперь всегда активны. Они имеют значение только в тактах с full1 = 1.