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


Рисунок 5.18 Обнаружение опасностей данных для EDPC

но это увеличило бы время выборки команд. Поэтому, пересылка EDPC в dpcопускается. Опасности данных, вызываемые этим, могут всегда аннулироваться, если мы обновим в последовательности restore процедуры обработки прерываний регистр EDPC перед регистром EPC.

Если эта предосторожность не принята программистом, тогда сигнал опасности данных

dhaz(EDPC) = hit.2 \/ hit.3 \/ hit.4

генерируется схемой на рисунке 5.18. Обратите внимание, что эта схема получена из схемы SFor(3) очевидными упрощениями. Такие опасности данных интересны, только если этап декодирования выполняет команду rfe. Это единственный случай, в котором регистр SPR запрашивает взаимную блокировку:

dhazS = dhaz(EDPC) /\ rfe.1.

Стоимость и задержка    Сигнал опасности dhazSгенерируется со следующей стоимостью и задержкой

CdhazS     =     3 • Cequal(3) + 7 • Cand + 2 • Cor

AdhazS    =   Dequal(3) + 2*Dand + 2*Dor .

Адресные и управляющие входы схемы пересылки SForнапрямую берутся из регистров. Входные данные обеспечиваются средой EXenv, регистром C.4 и специальными портами чтения файла регистров SPR. Таким образом,

AFORW(S, EPC)    =    max{DSFor(Dout; 3), DSFor(Data; 3) +AEXenv}

AFORW(SR)    =   max{DSFor(Dout; 1), DSFor(Data; 1) + ASH4Lenv} AFORW(EDPC)   =   0.


Пересылка операндов SPR выполняется на 1-этапной и двух 3-этапных схемах пересылки:

CSFORW  = CSFor(1) + 2 • CSFor(3 )


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

Механизм останова конструкции DLXП очень похож на механизм взаимной блокировки раздела 4.5, за исключением двух аспектов: различная инициализация и дополнительные опасности данных для проверки. При опасностях данных верхние два этапа конвейера остановлены, в то время как остальные три этапа выполняются. Верхние два этапа синхронизируются сигналом CE1, другие этапы синхронизируются сигналом CE2.

Опасности данных теперь могут быть вызваны одним из операндов общего назначения Aи Bили операндом регистра специального назначения. Такая опасность сигнализирует активацией флага

dhaz = dhazA \/ dhazB \/ dhazS.

Обновление Full Vector (вектор заполненности)

Вектор заполненности инициализируется при сбросе и каждом переходе на ISR. Как в конструкции DLX, переход на ISR инициализируется только если этап обратной записи не пуст

JISR = jisr.4 /\ full.4.

При JISR, этап обратной записи обновляется и этап IF уже выбирает первую команду ISR. Поэтому сигналы разрешения обновления ue.4 и ue.0 должны быть активны. Команды выполняемые на этапах 1 - 3 отменяются при переходе на ISR; сигнал JISRблокирует сигналы разрешения обновления ue[3 : 1]. В цикле после JISR только этапы 0 и 1 содержат верные команды, другие этапы пусты, т.е., они выполняют фиктивные команды.

Подобно конструкции DLX, активный сигнал сброса немедленно захватывается и синхронизируется в регистр MCA, даже если этап памяти пуст. Чтобы гарантировать, что в следующем цикле инициализируется переход на ISR, сигнал сброса принудительно устанавливает бит full.4 этапа обратной записи в единицу.

Следующие уравнения определяют такой механизм останова. Аппаратная реализация изображена на рисунке 5.19.

ue.0 = CE1

ue.l=CE1 /\ /JISR                               full.1 = 1

ue.2 = CE2 /\ /JISR /\ full.2                 full.2 := ue. 1

ue.3 = CE2 /\ /JISR /\ full.3                 full.3 := ue.2

ue.4 = CE2 /\ full.4                            full.4 :=ue.3 \/ reset