В цикле 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).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.