Внешняя память и интерфейс ввода/вывода
Микропроцессор TMS32020 поддерживает широкий диапазон интерфейсных систем. Адресное пространство данных, программ и ввода/вывода обеспечивает сопряжение с памятью и внешними устройствами, что увеличивает возможности системы. Интерфейс локальной памяти состоит из:
· 16-ти разрядной шины данных (D0-D15);
· 16-ти разрядной шины адреса (A0-A15);
· адресных пространств данных, программ и ввода/вывода выбираемых сигналами (*DS, *PS и *IS);
· различных сигналов управления системой.
Сигнал R/*W управляет направлением передачи, а сигнал *STRB управляет передачей.
Пространство ввода/вывода содержит 16 портов для вводы и 16 портов для вывода. Эти порты обеспечивают полный 16-разрядный интерфейс со внешними устройствами по шине данных. Одноразовый ввод/вывод с помощью команд IN и OUT выполняется за два командных цикла; однако использование счетчика повторений снижает время одного обращения к порту до 1-го цикла.
Использование ввода/вывода упрощается тем, что ввод/ вывод осуществляется также, как и обращение к памяти. Устройства ввода/вывода отображаются в адресном пространстве ввода/вывода, используя внешние адреса процессора и шину данных, таким же образом, как память. При адресации внутренней памяти шина данных находится в третьем состоянии, а управляющие сигналы в пассивном состоянии (высоком).
Взаимодействие c памятью и устройствами ввода/вывода на различных скоростях сопровождается сигналом READY. При связи с медленными устройствами, TMS320C2x ждет, пока устройство не завершит свою работу и просигнализирует процессору об этом через линию READY, после чего процессор продолжит работу.
Центральное арифметико-логическое устройство
Центральное арифметическо-логическое устройство (CALU) содержит 16-разрядный масштабирующий регистр сдвига, 16 x 16 параллельный умножитель, 32-разрядное арифметическо-логическое устройство (ALU), 32-разрядный аккумулятор и несколько дополнительных сдвиговых регистров, расположенных как на выходе из умножителя, так и на выходе из аккумулятора.
Любая операция ALU выполняется в следующей последовательности:
- данные захватываются из RAM на шину данных,
- данные проходят через масштабирующий сдвиговый регистр и через ALU, в котором выполняются арифметические операции,
- результат передается в аккумулятор.
Один вход в ALU всегда соединен с выходом аккумулятора, а второй может получать информацию либо из регистра произведения (PR) умножителя, либо загружаться из памяти через масштабирующий сдвиговый регистр.
Конвейерные операции
Конвейер команд состоит из последовательности операций обращения ко внешней шине, которые возникают в течении выполнения команд. Конвейер "предвыборка-декодирование-выполнение" обычно незаметен для пользователя, за исключением некоторых случаев, когда конвейер должен быть прерван (например, при ветвлении). Во время работы конвейера предвыборка, декодирование и выполнение команд независимы друг от друга. Это позволяет командам перекрываться. Так в течении одного цикла две или три команды могут быть активны, каждая на разных этапах работы. Поэтому получается двухуровневый конвейер для TMS32020 и трехуровневый для TMS320C25.
Количество уровней конвейера не всегда влияет на скорость выполнения команд. Большинство команд выполняется за одно и то же количество циклов вне зависимости от того, из какой памяти выбираются команды: внешней, внутренней RAM или внутренней ROM.
Добавочные аппаратные средства, имеющиеся на процессоре TMS320C25, позволяют расширить количество уровней конвейера до трех, что повышает производительность процессора. К этим средствам относятся счетчик предзахватов (PFC), 16-разрядный стек микровызовов (MCS), регистр команд (IR), и регистр очереди команд (QIR).
При трехуровневом конвейере PFC содержит адрес следующей команды, которая должна быть предзахвачена. Как только предзахват осуществлен, команда загружается в IR. Если же IR хранит команду, которая еще не выполнена, то предзахваченная команда помещается в QIR. После этого PFC увеличивается на 1. Как только текущая команда будет выполнена, команда из QIR будет перегружена в IR, для дальнейшего исполнения.
Счетчик команд (PC) содержит адрес команды, которая должна быть выполнена следующей, и не используется для операций захвата.
Но обычно PC используется в качестве указателя на текущую позицию в программе. Содержимое PC увеличивается после каждой выполненной команды. Когда возникает прерывание или вызов подпрограммы, содержимое PC помещается в стек, чтобы в дальнейшем можно было выполнить возврат в нужное место программы.
Циклы предзахвата, декодирования и выполнения конвейера независимы друг от друга, это позволяет перекрываться исполняемым командам во времени. В течении любого цикла три команды могут быть одновременно активны, каждая на разных стадиях завершения.