Пр о ц е с с о р TMS 3 2 0C4 x
51
1.11.3. Конфликты памяти
Рассмотрим некоторые, наиболее характерные, конфликты памяти .
П р и м е р 1.3.
В примере AR0 и AR1 адресуют данные в блоке памяти
RAM0 и выборка команд производится из того же блока. Внутренние блоки
памяти поддерживают только две выборки в одном цикле, поэтому возникает
конфликт памяти. Устройство чтения R имеет приоритет выше, чем устройство
выборки F, поэтому выборка инструкции MPYF задерживается до завершения
выборки операндов инструкции ADDF3.
П р и м е р 1.4.
В примере показан случай, когда вслед за инструкцией
записи в память идет параллельная инструкция загрузки регистров (считыва-
ния). Считывание операндов производится в устройстве считывания операндов
(R). В этом же цикле устройство выполнения (E) записывает содержимое R0 в
память по адресу, находящемуся в AR1 (выполняет команду STF). Таким обра-
зом, в цикле
n
+3 требуется одновременный доступ по трем адресам памяти (од-
но для STF и два для LDF||LDF). Память обеспечивает одновременный доступ
только к двум ячейкам. Устройство выполнения команд имеет более высокий
приоритет, поэтому в цикле n+3 производится запись памяти (команда STF), а
считывание операндов (команда LDF||LDF) задерживается и выполняется толь-
ко в следующем цикле.
П р и м е р 1.5.
Этот пример аналогичен предыдущему. За параллельной
командой записи STF||STF следует команда считывания ADDF. В цикле
n
+3
требуется три обращения к памяти - два на запись при выполнении команды
STF||STF и одно на считывание при выборке операнда команды ADDF. Возни-
кает конфликт памяти и выборка операнда команды ADDF задерживается до
следующего цикла.
Работа конвейера в примере 1.3
Операционные уровни конвейера
PC
| F |
| D |
| R |
| E |
n
ADDF3
–
–
–
n
+1
FIX
ADDF3
–
–
n
+2
(nop)
FIX
ADDF3
–
n
+2
MPYF
(nop)
FIX
ADDF3
n
+3
ADDF3
MPYF
(nop)
FIX
n
+4
NEGB
ADDF3
MPYF
(nop)
Выборка инструкции
задерживается до
завершения выборки
операндов
Операнды считаны
Фрагмент программы
ADDF3
∗
AR0,
∗
AR1,R0
FIX
MPYF
ADDF3
NEGB