Центральное арифметико-логическое устройство
Центральное арифметическо-логическое устройство (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 помещается в стек, чтобы в дальнейшем можно было выполнить возврат в нужное место программы.
Циклы предзахвата, декодирования и выполнения конвейера независимы друг от друга, это позволяет перекрываться исполняемым командам во времени. В течении любого цикла три команды могут быть одновременно активны, каждая на разных стадиях завершения.