Руководство пользователя по сигнальным процессорам Sharc
.pdfНабор команд А
|
0 |
Нет извлечения данных из стека |
|
1 |
Извлечения данных из стека |
PPU |
Код помещения данных в стек РС |
|
|
0 |
Нет помещения данных в стек |
|
1 |
Помещения данных в стек |
RELADDR Поле адреса относительно РС
SPO Код извлечения данных из стека состояния
0Нет извлечения данных из стека
1Извлечение данных из стека
SPU Код помещения данных в стек состояния
0Нет помещения данных в стек
1Помещения данных в стек
SREG Коды системных регистров
0 15 (см. «Коды универсальных регистров» далее)
TERM Коды условий завершения
0 31
UОбновление, индексный регистр I
0 Пред модификация без обновления
1 Пост модификация с обновлением
UREG |
Код универсальных регистров |
|
0 256 (смотри «Коды универсальных регистров» далее) |
RA, RM, |
Регистры регистрового файла для операндов и результатов вычисления |
RN, RS, |
0 15 |
RX, RY |
|
RXA |
Регистр регистрового файла для Х&операнда ALU при |
|
многофункциональных вычислениях |
|
8 11 |
RXM |
Регистр регистрового файла для Х&операнда умножителя при |
|
многофункциональных вычислениях |
|
0 3 |
RYA |
Регистр регистрового файла для Y&операнда ALU при |
|
многофункциональных вычислениях |
|
12 15 |
RYM |
Регистр регистрового файла для Y&операнда умножителя при |
|
многофункциональных вычислениях |
|
4 7 |
451
А Набор команд
А.4. Коды универсальных регистров
Карта 1 регистров
PC |
Счетчик команд (РС) |
|
Системные регистры |
|
||||
PCSTK |
Вершина стека РС |
|
MODE1 |
Управление режимом 1 |
||||
PCSTKP |
Указатель стека РС |
|
MODE2 |
Управление режимом 2 |
||||
FADDR |
Адрес выборки |
|
|
IRPTL |
Фиксация прерываний |
|||
DADDR |
Адрес декодирования |
|
IMASK |
Маскирование прерываний |
||||
LADDR |
Адрес завершения цикла |
|
IMASKP |
Указатель маски |
||||
|
|
|
|
|
|
|
прерываний |
|
CURLCNTR Счетчик текущего цикла |
|
ASTAT |
Арифметическое состояние |
|||||
LCNTR |
Счетчик цикла |
|
|
STKY |
«Залипшее» состояние |
|||
R15 R0 |
Ячейки памяти регистрового файла USTAT1 |
Регистр определяемого |
||||||
|
|
|
|
|
|
|
пользователем состояния |
|
I15 I0 |
Индексные регистры DAG1 и DAG2 USTAT2 |
Регистр определяемого |
||||||
|
|
|
|
|
|
|
пользователем состояния |
|
M15 M0 |
Регистры модификации DAG1 и DAG2 |
|
|
|
||||
L15 L0 |
Регистры длины DAG1 и DAG2 |
|
|
|
|
|||
B15 B0 |
Регистры базового адреса DAG1 и DAG2 |
|
|
|
||||
(b7=0) |
|
|
|
|
|
|
Системные регистры |
|
b7 b6 b5 b4 |
|
|
|
|
|
|
|
|
|
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
b3 b2 b1 b0 |
|
|
|
|
|
|
|
|
0000 |
R0 |
I0 |
M0 |
L0 |
B0 |
|
FADDR |
USTAT1 |
0001 |
R1 |
I1 |
M1 |
L1 |
B1 |
|
DADDR |
USTAT2 |
0010 |
R2 |
I2 |
M2 |
L2 |
B2 |
|
|
|
0011 |
R3 |
I3 |
M3 |
L3 |
B3 |
|
PC |
|
0100 |
R4 |
I4 |
M4 |
L4 |
B4 |
|
PCSTK |
|
0101 |
R5 |
I5 |
M5 |
L5 |
B5 |
|
PCSTKP |
|
0110 |
R6 |
I6 |
M6 |
L6 |
B6 |
|
LADDR |
|
0111 |
R7 |
I7 |
M7 |
L7 |
B7 |
|
CURLCNTR |
|
1000 |
R8 |
I8 |
M8 |
L8 |
B8 |
|
LCNTR |
|
1001 |
R9 |
I9 |
M9 |
L9 |
B9 |
|
|
IRPTL |
1010 |
R10 |
I10 |
M10 |
L10 |
B10 |
|
|
MODE2 |
1011 |
R11 |
I11 |
M11 |
L11 |
B11 |
|
|
MODE1 |
1100 |
R12 |
I12 |
M12 |
L12 |
B12 |
|
|
ASTAT |
1101 |
R13 |
I13 |
M13 |
L13 |
B13 |
|
|
IMASK |
1110 |
R14 |
I14 |
M14 |
L14 |
B14 |
|
|
STKY |
1111 |
R15 |
I15 |
M15 |
L15 |
B15 |
|
|
IMASKP |
Рис. А.1. Карта 1 кодов универсальных регистров
452
Набор команд А
Карта 2 регистров
РХ |
48 разрядная комбинация РХ1 и РХ2 |
|
|
|
||||
РХ1 |
обмен между шинами (16 разрядов) |
|
|
|
||||
РХ2 |
обмен между шинами (32 разряда) |
|
|
|
||||
TPERIOD |
период таймера |
|
|
|
|
|
||
TCOUNT |
счетчик таймера |
|
|
|
|
|
||
|
(b7=1) |
|
|
|
|
|
|
|
|
b7 b6 b5 b4 |
|
|
|
|
|
|
|
|
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
b3 b2 b1 b0 |
|
|
|
|
|
|
|
|
0000 |
|
|
|
|
|
|
|
|
0001 |
|
|
|
|
|
|
|
|
0010 |
|
|
|
|
|
|
|
|
0011 |
|
|
|
|
|
|
|
|
0100 |
|
|
|
|
|
|
|
|
0101 |
|
|
|
|
|
|
|
|
0110 |
|
|
|
|
|
|
|
|
0111 |
|
|
|
|
|
|
|
|
1000 |
|
|
|
|
|
|
|
|
1001 |
|
|
|
|
|
|
|
|
1010 |
|
|
|
|
|
|
|
|
1011 |
|
|
|
|
|
PX |
|
|
1100 |
|
|
|
|
|
PX1 |
|
|
1101 |
|
|
|
|
|
PX2 |
|
|
1110 |
|
|
|
|
|
TPERIOD |
|
|
1111 |
|
|
|
|
|
TCOUNT |
|
|
Рис. А.2. Карта 2 кодов универсальных регистров
453
А Набор команд
Группа I. Команды вычисления и пересылки
1.Параллельная пересылка данных между памятью данных и памятью программы с использованием регистрового файла, необязательная операция вычисления 455
2.Операция вычисления, необязательное условие 456
3.Пересылка между памятью данных или памятью программы и универсальным регистром, необязательное условие, необязательная операция вычисления 457
4.Пересылка данных между памятью данных или памятью программы и регистровым файлом относительно РС, необязательное условие, необязательная операция вычисления 459
5.Пересылка между двумя универсальными регистрами, необязательное условие, необязательная операция вычисления 461
6.Операция непосредственного сдвига, необязательное условие, необязательная пересылка данных между памятью данных или памятью программы и регистровым файлом 464
7.Модификация индексного регистра, необязательное условие, необязательная операция вычисления 465
454
Набор команд А
1. Параллельная пересылка данных между памятью данных и памятью программы с использованием регистрового файла, необязательная операция вычисления
Синтаксис:
compute, |
DM(Ia,Mb)=dreg1 , |
PM(Ic,Md)=dreg2 ; |
|
dreg1= DM(Ia,Mb) |
dreg2=PM(Ic,Md) |
Функция:
Параллельный доступ к памяти данных и памяти программы из регистрового файла. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I пост модифицируется и обновляется значением определенного регистра М. Пред модификация адреса со смещением не поддерживается.
Замечание: см. раздел 4.4.1 «Ограничения на передачу данных с использованием регистров DAG» в главе 4 Передача данных.
Примеры:
R7=BSET R6 BY R0, DM(I0,M3)=R5, PM(I11,M15)=R4;
R8=DM(I4,M1), PM(I12,M12)=R0;
Код операции:
47 |
46 |
45 |
44 |
43 |
42 41 |
40 |
39 |
38 |
37 |
36 |
35 34 33 |
32 |
31 30 |
29 28 27 |
26 25 |
24 23 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
P |
|
DM |
|
|
|
|
|
|
|
|
PM |
|
|
001 |
|
M |
|
|
DMI |
|
DMM |
M |
DREG |
|
|
PMI |
|
PMM |
DREG |
|||||||
|
|
|
D |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
|
|
|
|
22 |
21 |
20 19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 10 9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 1 |
0 |
|
|
|||
COMPUTE
Тип обращения (чтение или запись) выбирается DMD и PMD. Ячейка памяти регистрового файла определяется DMDREG и PMDREG. DMI и PMI определяют регистр I для памяти данных и памяти программы. DMM и PMM определяют регистр М, используемый для обновления регистра I. Поле COMPUTE определяет операцию вычисления, выполняемую параллельно с доступом к данным. Если операция вычисления не задана в команде, то это операция NOP.
455
А Набор команд
2. Операция вычисления, необязательное условие
Синтаксис:
IF условие вычисление ;
Функция:
Условная команда вычисления. Команда выполняется, если при проверке определенное условие верно.
Примеры:
IF MS MRF=0;
F6=(F2+F3)/2;
Код операции:
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
39 |
38 |
37 |
36 |
35 34 33 |
32 |
31 30 |
29 28 27 |
26 25 |
24 23 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
000 |
|
|
00001 |
|
|
|
|
|
COND |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
21 |
20 19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 10 9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 1 |
0 |
|
|
|||
COMPUTE
Если заданное полем COND условие верно, то определенная в поле COMPUTE операция выполняется. Если условие в команде не определено, то COND является условием TRUE, и вычисление выполняется всегда.
456
Набор команд А
3. Пересылка данных между памятью данных или памятью программы и универсальным регистром, необязательное условие, необязательная операция вычисления
Синтаксис: |
|
|
|
|
|
|
|
|
|
|
|
|
|
а. |
IF условие |
вычисление, |
|
DM(Ia,Mb) |
|
= ureg ; |
|
||||||
|
|
|
|||||||||||
|
|
|
|
|
PM(Ic,Md) |
|
|
|
|
|
|||
b. |
IF условие |
вычисление, |
|
|
DM(Mb,Ia) |
|
|
= ureg ; |
|
||||
|
|
|
|
|
|||||||||
|
|
|
|
|
PM(Md,Ic) |
|
|
|
|
|
|
||
c. |
IF условие |
вычисление, |
|
ureg = |
|
DM(Ia,Mb) |
|
|
; |
||||
|
|
|
|||||||||||
|
|
|
|
|
|
|
PM(Ic,Md) |
|
|
|
|||
d. |
IF условие |
вычисление, |
|
ureg = |
|
DM(Mb,Ia) |
|
|
; |
||||
|
|
|
|||||||||||
|
|
|
|
|
|
|
PM(Md,Ic) |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функция:
Обращения между памятью данных или памятью программы и универсальным регистром. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I либо пред модифицируется (M, I) либо пост модифицируется (I, M) значением определенного регистра М. При пост модификации значение регистра I обновляется модифицированным значением. Если определена операция вычисления, то она выполняется параллельно с доступом к данным. Если условие определено, то оно влияет на выполнение всей команды.
Замечания:
1.Универсальный регистр (ureg) может находиться не в том же самом DAG (т. е. DAG1 или DAG2), что и Ia/Mb или Ic/Md.
2.См. раздел 4.4.1 «Ограничения на передачу данных с использованием регистров DAG» в главе 4 Передача данных.
Примеры:
R6=R3-R11, DM(I0,M1)=ASTAT;
IF NOT SV F8=CLIP F2 BY F14, PX=PM(I12,M12);
457
А Набор команд
Код операции:
47 46 |
45 |
44 |
43 42 41 40 39 38 37 36 |
35 34 33 32 31 |
30 |
29 28 27 |
26 25 |
24 23 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 21 20 19 |
18 17 |
16 15 14 13 12 11 10 9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
СOND определяет условие для проверки. Если условие в команде не определено, то COND является условием TRUE, и команда выполняется всегда.
Тип доступа (чтение или запись) выбирается D. G выбирает память данных или память программы. UREG определяет универсальный регистр. I определяет индексный регистр I, М – регистр модификации М. U выбирает либо пред модификацию без обновления либо пост модификацию с обновлением. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOP.
458
Набор команд А
4. Пересылка данных между памятью данных или памятью программы и регистровым файлом относительно РС, необязательное условие, необязательная операция вычисления
Синтаксис: |
|
|
|
|
|
|
|
|
|
|
|
|
a. |
IF условие |
вычисление, |
|
DM(Ia,<data6>) |
|
= dreg ; |
|
|||||
|
|
|
||||||||||
|
|
|
|
|
PM(Ic,<data6>) |
|
|
|
|
|
||
b. |
IF условие |
вычисление, |
|
DM(<data6>,Ia) |
|
|
= dreg ; |
|
||||
|
|
|
|
|||||||||
|
|
|
|
|
PM(<data6>,Ic) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
c. |
IF условие |
вычисление, |
|
|
dreg = |
DM(Ia,<data6>) |
|
|
; |
|||
|
|
|
|
|
PM(Ic,<data6>) |
|
|
|
|
|
||
d. |
IF условие |
вычисление, |
|
|
dreg = |
DM(<data6>,Ia) |
|
|
; |
|||
|
|
|
||||||||||
|
|
|
|
|
PM(<data6>,Ic) |
|
|
|
|
|
||
Функция: |
|
|
|
|
|
|
|
|
|
|
|
|
Обращения между памятью данных или памятью программы и регистровым файлом. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I либо пред модифицируется (data, I), либо пост модифицируется (I, data) непосредственным значением данных. При пост модификации регистр I обновляется модифицированным значением. Если определена операция вычисления, то она выполняется параллельно с доступом к данным. Если условие определено, то оно влияет на выполнение всей команды.
Замечание: см. раздел 4.4.1 «Ограничения на передачу данных с использованием регистров DAG» в главе 4 Передача данных.
Примеры:
IF FLAG0_IN F1=F15*F12, F11=PM(I10,40);
R12=R3 AND R1, DM(6,I1)=R6;
459
А Набор команд
Код операции:
47 46 |
45 |
44 |
43 42 41 40 39 38 37 36 |
35 34 33 32 31 |
30 |
29 28 27 |
26 25 |
24 23 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 21 20 19 |
18 17 |
16 15 14 13 12 11 10 9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
COND определяет условие для проверки. Если условие в команде не определено, то COND является условием TRUE, и команда выполняется всегда.
D выбирает тип обращения (чтение или запись). G выбирает память данных или память программ. DREG определяет регистр регистрового файла. I определяет индексный регистр I. DATA определяет 6 разрядное значение модификации в виде двоичного дополнения. U определяет либо пред модификацию без обновления, либо пост модификацию с обновлением. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOP.
460
