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

Таким образом, CE2 соответствует старому сигналу синхронизации CE, тогда как CE1 также неактивен в присутствие опасностей данных.

Всякий раз, когда нижние этапы конвейера синхронизируются пока верхние этапы остановлены, фиктивная команда (т.е., команда, которая не должна там быть) вводится в этап 2 и в последующих циклах по каналу стекает вниз. Мы должны гарантировать, что фиктивные команды не смогут обновить машину. Первый метод состоит в том, чтобы вводить команду NOP в этап 2 всякий раз, когда CE2 /\ /CE1 = 1. К сожалению, этот метод зависит от специфического набора команд и его кодирования. При остановке различных конвейеров соответствующая часть аппаратных средств должна быть изменена. Более однородный метод состоит в следующем:

1. Отследить истинные и фиктивные команды на этапе kодним битом full.k, где full.k = 1 сигнализирует об истинной команде а  full.k = 0 сигнализирует о фиктивной команде.

2. В циклах CE2 с full.k = 0 не обновлять этап kи продвинуть фиктивную команду на этап k+ 1 если k+1 <= 4.

Следующие уравнения определяют механизм останова, который использует этот принцип. Он синхронизируется CE2. Аппаратная реализация показана на рисунке 4.19. Для k >= 2,

ue.0     =   CE1

full.1   =    1

ue.1    =    CE1 /\  reset


ue.k    =    CE1 /\ reset /\ full.k

full.k   :=   ue.(k - 1)

Это простейший набор уравнений. Однако, разрешение сигналов hit[j] соответствующими флагами заполненности является тонкой и критичной частью механизма. Этим гарантируется, что фиктивные команды не смогут активировать ни сигнал hit[j], ни сигнал опасности данных (упражнение 4.4).

Для предотвращения фиктивных команд от генерации сигнала dbusyи от обновления памяти данных, сигналы чтения и записи Dmr' и Dmw' памяти данных DM также включаются флагом заполненности:

Dmr'    =   Dmr /\ full.3 Dmw'    =   Dmw /\ full.3 /\ reset,

где Dmrи Dmwсигналы запроса чтения и записи обеспечиваются вычисляемым заранее управлением.




Рисунок 4.19 Механизм аппаратной взаимной блокировки конструкции DLXπ

Аппаратная стоимость и задержка

Модификации представленные выше действуют только на механизм останова. Механизм останова на рисунке 4.19 определяет сигналы разрешения обновления ue.iосновываясь на синхроимпульсах CE1 и CE2. Эти синхросигналы могут быть определены как

CE2   =   /busy \/ (/reset NOR ibusy)

CE1    =    (/busy /\ /dhaz) \/ (/reset NOR ibusy)

/busy   =    ibusy NOR dbusy.

Синхроимпульсы теперь также зависят от сигнала опасности данных dhaz, который может быть обеспечен со следующей стоимостью и задержкой:

Cdhaz  = 2*Cinv + 4*Cand + 3*Cor

Astall(dhaz)    =   AForw(top;3)+Dand + 2*Dor .

Так как сигнал resetимеет нулевую задержку, синхроимпульсы могут генерироваться со следующей накопленной задержкой

Astall (/busy)    =   max{AIMenv(ibusy), ADMenv(dbusy)} + Dnor

Astall(CE)    =   max{Astall(/busy), Astall(dhaz)} + Dand+Dor .

Для каждого регистра и памяти, механизм останова превращает сигнал запроса синхронизации/записи в сигнал синхронизации/записи. Из-за сигналоы Dmrи Dmwтеперь требуется 11 вентилей AND. В целом, стоимость механизма останова и взаимной блокировки равна

Сstall = 3 • Cff + Cinv + (5+11 + 1) • Cand + 2 Cnor + 2 Cor + Сdhaz .


Так как структура механизма останова остается той же, время цикла может быть выражено как и прежде: