Центральное арифметико-логическое устройство

Центральное арифметическо-логическое устройство (CALU) содер­жит 16-разрядный масштабирующий регистр сдвига, 16 x 16 парал­лельный умножитель, 32-разрядное арифметическо-логическое устройс­тво (ALU), 32-разрядный аккумулятор и несколько дополнительных сдвиговых регистров, расположенных как на выходе из умножителя, так и на выходе из аккумулятора.

Любая операция ALU выполняется в следующей последовательнос­ти:

  1. данные захватываются из RAM на шину данных,
  2. данные проходят через масштабирующий сдвиговый регистр и через ALU, в котором выполняются арифметические опера­ции,
  3. результат передается в аккумулятор.

Один вход в ALU всегда соединен с выходом аккумулятора, а второй может получать информацию либо из регистра произведения (PR) умножителя, либо загружаться из памяти через масштабирующий сдвиговый регистр.

 

Конвейерные операции

Конвейер команд состоит из последовательности операций обра­щения ко внешней шине, которые возникают в течении выполнения ко­манд. Конвейер "предвыборка-декодирование-выполнение" обычно неза­метен для пользователя, за исключением некоторых случаев, когда конвейер должен быть прерван (например, при ветвлении). Во время работы конвейера предвыборка, декодирование и выполнение команд независимы друг от друга. Это позволяет командам перекрываться. Так в течении одного цикла две или три команды могут быть активны, каждая на разных этапах работы. Поэтому получается двухуровневый конвейер для TMS32020 и трехуровневый для TMS320C25.

Количество уровней конвейера не всегда влияет на скорость вы­полнения команд. Большинство команд выполняется за одно и то же количество циклов вне зависимости от того, из какой памяти выбира­ются команды: внешней, внутренней RAM или внутренней ROM.

Добавочные аппаратные средства, имеющиеся на процессоре TMS320C25, позволяют расширить количество уровней конвейера до трех, что повышает производительность процессора. К этим средствам относятся счетчик предзахватов (PFC), 16-разрядный стек микровызо­вов (MCS), регистр команд (IR), и регистр очереди команд (QIR).

При трехуровневом конвейере PFC содержит адрес следующей ко­манды, которая должна быть предзахвачена. Как только предзахват осуществлен, команда загружается в IR. Если же IR хранит команду, которая еще не выполнена, то предзахваченная команда помещается в QIR. После этого PFC увеличивается на 1. Как только текущая коман­да будет выполнена, команда из QIR будет перегружена в IR, для дальнейшего исполнения.

Счетчик команд (PC) содержит адрес команды, которая должна быть выполнена следующей, и не используется для операций захвата.

Но обычно PC используется в качестве указателя на текущую позицию в программе. Содержимое PC увеличивается после каждой выполненной команды. Когда возникает прерывание или вызов подпрограммы, содер­жимое PC помещается в стек, чтобы в дальнейшем можно было выпол­нить возврат в нужное место программы.

Циклы предзахвата, декодирования и выполнения конвейера неза­висимы друг от друга, это позволяет перекрываться исполняемым ко­мандам во времени. В течении любого цикла три команды могут быть одновременно активны, каждая на разных стадиях завершения.