Пр о ц е с с о р TMS 3 2 0C4 x
48
1.11.1. Конфликты переходов
Конфликты этой категории возникают при выполнении стандартных (не
задержанных) команд переходов
BR, Bcond, Dbcond, CALL, IDLE, RPTB,
RPTS, RETIcond, RETScond
и при прерываниях. В примере показана работа
конвейера при выполнении команды BR. Выполнение команд данной группы
связано с изменением программного счетчика, используемого для адресации
памяти при выборке команды (уровень F). Когда команда BR обрабатывается
на уровне декодирования D, определяется, что это команда стандартного пере-
хода, поэтому выборка команд задерживается до тех пор пока команда BR не
достигнет уровня E, где и выполнится модификация PC. Из примера видно, что
к моменту выборки команды по адресу перехода (THREE) конвейер команд
очищен, т.е. уровни D, R и E не выполняют операций. Примечательно, что осу-
ществляется одна пустая выборка команды (MPYF), которая может записывать
инстукцию в кэш команд.
Пример работы конвейера при выполнении команды BR
Операционные уровни конвейера
PC
| F |
| D |
| R |
| E |
n
BR
–
–
–
n
+1
MPYF
BR
–
–
n
+1
(nop)
(nop)
BR
–
n
+1
(nop)
(nop)
(nop)
BR
THREE
OR
(nop)
(nop)
(nop)
STI
(nop)
(nop)
(nop)
Выборка
задерживается до
нового значения PC
THREE
→
PC
Фрагмент программы
BR
THREE
; безусловный переход
MPYF
; не выполняется, но выбирается
ADD
; не выполняется и не выбирается
AND
; не выполняется и не выбирается
.
.
THREE
OR
; выборка после перехода
STI