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