
- •7. Система команд и адресация данных
- •7.2. Непосредственная и прямая адресации данных
- •Addi @bcdEh, r7
- •К содержимому регистра a1 прибавляется (add) константа –13. Результат помещается в регистр a6. Операция выполняется в функциональном блоке l1.
- •Mpyu .M1 a1, a2, a3;
- •Cmpy .M1 a0, a1, a3:a2;
- •В качестве адреса может быть указана метка в программе. Например, jump fir_start. Метке fir_start соответствует исполняемый адрес команды, в которой указана эта метка.
- •B .S1 loop, b .S2 b10.
- •Рассмотрим программную организацию цикла в процессоре tms320c64xx.
- •Filtr: . . . . . . . . . .
7. Система команд и адресация данных
7.1.Формат и структура слова команды
Команда представляет собой описание действия, которое должен выполнить процессор.
Такими действиями являются:
операции над данными (арифметические и логические операции, пересылки данных),
управление последовательностью выполнения команд (организация циклов, ветвления программы, вызов подпрограмм),
общее управление работой процессора (переход в состояние ожидания, возврат из прерывания, переход к началу выполнения программы).
Совокупность команд, в целом обеспечивающая выполнение указанных функций, называется системой команд процессора.
Команды размещаются в n – разрядных ячейках памяти программ.
Под форматом команды понимается количество слов и длина слова команды в битах.
Формат команды в общем случае представляет собой два слова одинаковой длины n, соответствующие двум соседним n – разрядным ячейкам памяти. Первое слово называют словом команды, второе – словом расширения.
Слово команды хранит код операции, указания на операнды и другую информацию, например, информацию о предварительном сдвиге операнда.
Слово расширения хранит указание на тот операнд, для которого недостаточно места в команде.
В процессорах с однословным форматом слово расширения отсутствует. В процессорах с двухсловным форматом слово расширения может отсутствовать.
Например, процессор TMS320C3x использует однословные команды с длиной слова в 32 бита, процессор ADSP2181 – однословные с длиной слова в 24 бита, процессор TMS320C28 использует однословные команды длиной 16 бит и двухсловные длиной 32 бита.
Структурой слова команды называется условное разделение слова команды на поля, например, поле операции, поле операндов, поле условия выполнения команды.
Структура слова команды зависит от архитектуры процессора. Чем больше узлов содержит процессор и чем выше параллелизм выполнения операций, тем сложнее структура слова команды.
Поле условия содержит код условия выполнения операции, указанной в поле операции.
Например, команда IF MV SAT MR процессора ADSP2181 содержит условие выполнения операции насыщения (SAT) содержимого регистра умножителя MR: если бит переполнения MV=1, то операция выполняется.
В поле операции записывается операция, которую должен выполнить процессор. Операциями являются сложение, вычитание, умножение, логическое «И», логическое «ИЛИ» и т.д.
Поле операции всегда присутствует в слове команды, а других полей может не быть. Например, команда NOP – нет операции. Но подавляющее большинство команд содержит наряду с полем операции поле операндов.
В поле операндов дается указание на операнд.
Операнды могут указываться:
адресом ячейки памяти данных, в которой хранится операнд,
именем регистра процессора, в котором находится операнд,
константой, хранящейся в слове команды или в слове расширения.
В поле операндов указываются источники (источник) и приемник результата.
Пример:
MR=MR+MX1*MF (SS)
Источниками являются регистры MX1, MF, MR, а приёмником результата – регистр MR. В данном случае MR и источник, и приёмник результата. Символ SS означает, что осуществляется перемножение чисел со знаком.
Пример команды процессора ADSP 2181, в которой имеются параллельные пересылки,
MR=MR+MX0*MY0 (SS), MX0=DM(0x000A), MY0=PM(0x000B),
0x –префикс, указывающий на то, что адрес задается в 16-ричной системе счисления
0x000A 0000 0000 0000 1010
0x000B 0000 0000 0000 1011
Эта команда выполняет накапливающее суммирование произведений с предварительной пересылкой сомножителей из памяти данных (DM) и памяти программ (PM) во входные регистры умножителя MX0 и MY0 соответственно.
Результат накапливающего суммирования содержится в выходном регистре умножителя MR. В этой команде осуществляется перемножение операндов, которые были загружены в регистры MX0 и MY0 в предыдущем цикле.
Запись двух последних команд выполнена с использованием алгебраического ассемблерного синтаксиса, который отличается привычной и легко читаемой записью вычислительных операций.
Второй вид ассемблерного синтаксиса является мнемоническим. Мнемонический синтаксис представляет символическую запись информации, содержащейся в каждом поле команды.
В качестве примера использования мнемонического синтаксиса рассмотрим команду процессора TMS320C30
ADDF3 R0, R2, R3.
В поле операции указана операция ADDF3. Рассмотрим элементы обозначения операции: ADD (addition – сложение), F (floating-point – плавающая точка), 3 (в операции участвуют 3 операнда). Таким образом, данная команда выполняет операцию сложения двух чисел с плавающей точкой, находящихся в регистрах R0 и R2, и записью результата в R3.
Рассмотрим структуру слова команды в процессорах с одновременным выполнением группы команд.
Возможность одновременного выполнения группы команд обеспечивается за счет специальной архитектуры процессора, при которой различные команды выполняются независимо функционирующими блоками. Типичными представителями этой группы являются процессоры TMS320C6xxx.
Структура слова команды в процессорах
с одновременным выполнением группы команд
В поле устройства задаётся устройство, например, одно из 6 АЛУ или один из 2 умножителей, в которых выполняется операция, задаваемая командой.
В поле признака группировки указывается, выполняется ли данная команда параллельно с другими командами.
Рассмотрим, как осуществляется группировка команд.
В процессорах платформы С6000 команды выбираются из памяти не по одной, а пакетами.
Пакет выборки содержит 8 команд. На рисунке показан формат пакета выборки. Длина слова команды составляет 32 бита. Нулевой бит слова, обозначенный на рисунке через p, является битом признака группировки команд.
Формат пакета выборки процессоров TMS320C6000
Если во всех командах пакета выборки p = 0, то все 8 команд выполняются последовательно одна за другой.
Если во всех командах кроме последней p = 1, то все 8 команд выполняются одновременно в разных блоках.
Возможно параллельно-последовательное выполнение команд в пределах одной выборки. Состояние p = 1 в слове i – ой команды означает, что она будет объединена с (i+1) –ой командой для одновременного выполнения.
Формат пакета выборки при последовательно-параллельном выполнении команд
Первая единица при просмотре пакета выборки слева направо означает, что с данной командой будут группироваться следующие за ней команды, включая ближайший нуль (C, D, E). Исполняться параллельно будут также команды F, G, H.
Следовательно, 8 команд будут выполнены за 4 цикла.
Выполнение последовательно-параллельных команд во времени
Циклы
|
Команды
|
1 |
A |
2 |
B |
3 |
C D E |
4 |
F G H |
Команды пакета выборки, выполняемые одновременно, образуют исполняемый пакет. Например, в таблице таких исполняемых пакетов четыре.
Структура команд на ассемблере при наличии группировки выглядит следующим образом:
Две вертикальные параллельные черты в начале команды означают, что эти команды выполняются параллельно с ближайшей предыдущей, у которой этот знак не указан.
Необходимым условием параллельного выполнения команд является выполнение их в разных устройствах.
Обратимся к примеру двух параллельных команд, записанных на ассемблере
ADD .L1 A0, A1, A2;
|| SHR .S1 A3, 15, A4;
В блоке .L1 выполняется операция сложения A0 и A1. Сумма помещается в A2. В блоке .S1 операнд A3 сдвигается на 15 разрядов вправо. Результат помещается в A4.