Пр о ц е с с о р TMS 3 2 0C4 x
86
Подпрограмма умножения матрицы на вектор
; Входные параметры подпрограммы:
;
AR0 - адрес первого элемента первой строки матрицы M
;
AR1 - адрес первого элемента вектора-множителя V
;
AR2 - адрес первого элемента вектора-произведения P
;
AR3 - количество строк матрицы минус единица (K-1)
;
IR0 - количество колонок матрицы (N)
; Используемые регистры: AR0,AR1,AR2,AR3,IR0,R0,R2,RC,RE,RS
; Выходные данные в массиве P[ ]
; Характеристики:
время выполнения в циклах - K(N + 11) + 4
;
память - 11 слов
.global
MATR
MATR
ROWS SUBI3
2, IR0, RC
RPTBD
DOT
; внутренний цикл по N до метки DOT
LDF
0.0, R2
; 0,0
R2
MPYF3
AR0++(1),
AR1++(1), R0
; m[i,0]v[0]
R0
NOP
; (см. команду RPTBD)
DOT MPYF3
AR0++(1),
AR1++(1),R0
; m[i,j]v[j]
R0
||
ADDF3
R0, R2, R2
; m[i,j-1]v[j-1]+R2
R2
; добавление последнего произведения к сумме в R2
ADDF
R0, R2
; сохранение вычисленного элемента выходного вектора
STF
R2,
AR2++(1)
; возврат указателя AR1 на начальный адрес вектора v[0]
NOP
- -AR1(IR0)
; внешний цикл по K, AR3-1
AR3, переход на ROWS, если AR3
0
DB
AR3, ROWS
RETS
; возврат из п/п
.end
2.4.2. Умножение комплексных матриц
Пусть матрица
X
размерностью
N
×
K
умножается на матрицу
Y
размерно-
стью
K
×
M
и обе матрицы являются комплексными. Результирующая матрица
Z
будет иметь размерность
N
×
M
и каждый элемент ее будет вычисляться
по формуле
z
[
i
,
j
] =
x
[
i
,0]
y
[0,
j
] +
x
[
i
,1]
y
[1,
j
] + ... +
x
[
i
,
K
-1]
y
[
K
-1,
j
],
где
i
= 0, 1, ...,
N
-1;
j
= 0, 1, ...,
M
-1.
Для лучшей организации вычислений матрица
X
располагается в памяти
по строкам, а матрицы
Y
и
Z
- по столбцам. Комплексные элементы матриц за-
нимают две соседние ячейки памяти, действительная часть числа расположена
в ячейке с меньшим адресом. Для адресации массивов (матриц)
X
,
Y
и
Z
будем
использовать вспомогательные регистры AR0, AR1 и AR2 соответственно. Ор-
ганизация данных в памяти показана на рис.2.15. Вычисления будут состоять из
трех вложенных циклов (рис.2.14). В качестве счетчиков циклов используются
I...,76,77,78,79,80,81,82,83,84,85 87,88,89,90,91,92,93,94,95,96,...186