Переходы с задержкой и без задержки

Наличие управляющего параметра после команды перехода (DB) показывает, что выполняется переход с задержкой. В этом случае процессор продолжает выполнять еще две инструкции, пока инструкция по адресу перехода выбирается и декодируется; в случае вызова подпрограммы адрес возврата является третьим после инструкции перехода (рис. 4.2).

Время
PC n n+1 N+2 j
DADDR n+1 n+2 j j+1
FADDR n+2 j J+1 j+2
  команда CALL на адрес i в стек ПС проталкивается (n+3)    

Рис.4.2. Выполнение инструкции задержанного перехода

Если же выполняется переход без задержки (отсутствует параметр (DB) после команды перехода), то две инструкции после инструкции перехода, которые находятся на стадии декодирования и выборки, не выполняются; для вызова подпрограммы адрес возврата является адресом следующей после команды перехода инструкции (рис. 4.3).

Время
PC n n+1 -> NOP n+2 -> NOP j
DADDR n+1 -> NOP n+2 -> NOP J j+1
FADDR n+2 j j+1 j+2
  команда CALL на адрес i Для CALL в стек ПС проталкивается (n+1)    

Рис. 4.3. Выполнение инструкции незадержанного перехода (серым цветом показаны циклы "потерь времени")

Из-за конвейеризации инструкций инструкция задержанного перехода и следующие за ней две инструкции должны выполняться последовательно. Поэтому инструкциями, непосредственно следующими за инструкцией задерживаемого перехода, не могут быть:

- другие команды переходов или возвратов (JUMP, CALL, RTS, RTI);

- команды записи и чтения из стека ПС (PUSH и POP);

- команды записи в стек ПС или изменения указателя стека ПС;

- инструкция цикла DO…UNTIL;

- инструкция IDLE.

Любое прерывание, происшедшее во время выполнения задерживаемого перехода, защелкивается, но не обрабатывается, пока не завершится переход.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: