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

В цикле T' подготовленная последовательная машина имеет еще не обновленный регистр GPR[r]. Следующая лемма подсказывает, где мы можем найти вычисляемую заранее версию GPR[r]iв последовательной машине.


v[j]i-α1


PROOF


QED


PROOF


Lemma 4.9



для всех этапов j. Приложение индукционной гипотезы к регистру команд дает IRi = IRTπ . Так как Ii читает GPR[r], из этого следует для сигнала Aadr:


r = (Aadi) = (AadTπ).



Так как Ii пишет регистр GPR[r], из этого следует по лемме 4.8 для всех этапов j >= 2 что

GPRw.ji  /\ ((Cad.ji) = r) /\ (r =/= 0).

Для этапа j = 1 + α, определение конвейеризации подразумевает (таблица 4.14)


Обратите внимание, что ни один из этапов от 0 до iне пуст. В соответствии с индукционной гипотезой из этого следует, что



Пусть Ii– последняя команда перед Ii которая пишет GPR[r].  Тогда не существует команд между Ii и Ii пишущих GPR[r], и мы имеем

hit[ l ]Tπ = 0

для любых этапов l при 1 < l < 1 + α, и следовательно top.(l + α)Tπ = l. Пусть T ' означает цикл в последовательном выполнении с Iσ (1 + α, T ) = Iπ(1 + α, T) = i - α. Логика пересылки доставляет выход

DoutTπ= C'.(1+a)Tπ

=C'.(l + a)T 'σ       по лемме 4.8 и по

Iπ (j, T) = Iπ(1+α, T) = i - α,

теореме для Т и k = 1 + α

=   GPR[r]i-a         по лемме 4.9

В простом втором случае, сильная гипотеза теоремы 4.5 верна для Ii. Для любого i >= 4, это означает, что ни одна из команд Ii-1 , Ii-2 , Ii-3  не пишет GPR[r]. Как и выше, это означает, что

hit[j]Tπ = 0,

=   GPR[r]i-1.


для всех j. Следовательно, логика пересылки ведет себя подобно старому соединению между выходом данных GPRoutAокружения GPR и входом Ainдоставленным этапом декодирования

DoutTπ = DinTπ = GPR[r]i-4 = GPR[r]i-1.

Для i <= 3 DLXπконвейер получается заполненным. В течении этих начальных циклов (T <= 3) этап k > 1 также является пустым или команда Ijc Iπ(k, T) = j<=2 не обновляет регистр GPR[r]. Как и выше заключим, что для любого j


QED


hit[j]Tπ = 0,

и что

DoutTπ = DinTπ = GPR[r]-1

4.5    Аппаратная взаимная блокировка (Interlock)

4.5.1    Механизм останова

В этом разделе мы создадим сложный механизм останова, называемый hardwareinterlock (аппаратная взаимная блокировка). Этот механизм останавливает верхние два этапа конвейера в ситуации, называемой datahazard (опасности данных), т.е., когда механизм пересылки не может доставлять верные данные вовремя. Повторимся, что это происходит если

1. команда Ii , которая читает из регистра r =/= 0,  находится на этапе 1,

2. одна из команд Ij   с  j€ {i - 1, i - 2} является командой загрузки с адресом назначения r,

3. Ijявляется последней командой перед Ii с адресом назначения r.

Это должно быть проверенно для обоих операндов Aи B. В существующей машине мы могли характеризовать эту ситуацию активацией сигнала dhaz:

dhaz   =    dhazA \/ dhazB

dhazA   =    topA.2 /\ /v[2].2 \/ topA.3/\ /v[3].3

dhazB   =    topB.2 /\ /v[2].2 \/ topB.3/\ /v[3].3.

Основываясь на этом сигнале мы определим два синхросигнала, синхросигнал CE1 этапов 0 и 1, и синхросигнал CE2 этапов 2 - 4:

CE2   =    /(ibusy \/ dbusy) \/ (reset /\ /ibusy)

CE1   =    /(ibusy \/ dbusy \/ dhaz) \/ (reset /\ /'ibusy).