- •I умножение полиномов
- •Цель работы и задание:
- •1.1 Цель работы:
- •1.2 Задание
- •2.1 Краткая информация о работе ячейки:
- •2.2 Краткая информация о работе процессора
- •4.1 Рассчитаем коэффициенты результирующего полинома:
- •II умножение матриц
- •Цель работы и задание:
- •1.1 Цель работы:
- •2 Провести экспериментальные исследования работы такого процессора.
- •1.2 Задание
- •2.1 Краткая информация о работе ячейки
- •Ход работы
- •3.2 Изменение содержимого ячеек процессора на каждом такте работы:
- •Аналитическое решение
- •2.2 Краткая информация о работе процессора
- •Ход работы
- •3.1 Вводим в программу cyst_mm размерность матриц (4х6 и 6х4) и исходные данные:
- •3.2 Изменение содержимого ячеек процессора на каждом такте работы:
- •Аналитическое решение
2.2 Краткая информация о работе процессора
Для синхронизации операндов в данном матричном систолическом процессоре целесообразно выбрать следующий способ ввода исходных операндов. Элементы строк матрицы А вводятся слева направо в каждый векторный процессор с пропуском одного синхротакта по S и по синхротакту S1, т.е. через один синхротакт Ts:
... a13 0 a12 0 a11 -----> ,
... a23 0 a22 0 a21 -----> ,
... a33 0 a32 0 a31 -----> .
Ввод элементов bij задерживается относительно начала ввода элементов aij на время (2N-1) такта в ячейке ОЭn произошла первая встреча первой пары операндов a11 и b11, т.е. в течение первых 2(N-1) тактов осуществляется начальная загрузка процессора элементами аij. Потоки элементов bij организуются для каждой ячейки в отдельности и вводятся в них ортоганально сверху вниз. Первым на (2N-1) такте вводится в ячейку ОЭn элемент b11. Ввод других элементов bij осуществляется в другие ячейки позже с пропуском одного синхротакта по S, а в одну и ту же ячейку - позже и с пропуском трех синхротактов по S. Элементы матрицы B вводятся в ячейки потоками элементов диагональной матрицы, начиная с bn1 - в ячейку ОЭ1, затем bn2, bn-1,1 - в ячейку ОЭ2 и так далее слева направо, завершая b1n - в ячейку ОЭ2n-1. Так как число диагоналей в матрице размером N x N равно 2N-1, в состав каждого из N векторных процессоров, формирующих строки результатов, необходимо каскадно включать по 2N-1 ячеек ОЭ. Структурная схема матричного систолического процессора при N=6 приведена на рисунке 3.
Рисунок 3 – Схема матричного систолического процессора
Схемы ячеек операционных элементов выполнены одинаково, располагаются каскадо, на схеме обозначены прямоугольниками. Внутри каждого прямоугольника показаны три строки содержимого каждого ОЭ (сверху-вниз):
1я строка – содержимое RG1;
2я строка – содержимое RG2;
3я строка – содержимое RG3.
Стрелки, направленные вниз, означают направление продвижения матрицы {В}. Окрашены в желтый цвет в активном состоянии, и в серый – в пассивном.
Стрелки, направленные вправо, означают направление продвижения элементов матрицы {А}. Окрашены в желтый цвет в активном состоянии, и в серый – в пассивном.
Стрелки, направленные влево, означают направление продвижения элементов матрицы {С}. Окрашены в желтый цвет в активном состоянии, и в серый – в пассивном.
Проведем пространственно-временную интерпретацию систолического алгоритма умножения двух квадратных матриц (3х3) по временным диаграммам. Так как функционирование строчных векторных процессоров одинаковое, достаточно составить таблицу временной диаграммы одного из них, например процессора первой строки.
Рисунок 4 – Организация вычислений в матричной систолической структуре
Временная диаграмма состояний регистров ячеек первого векторного процессора строки в матричном систолическом процессоре.
Входная последовательность {a} |
0 0 0 0 0 b31 0 0 0 |
0 0 0 b32 0 0 0 b21 0 |
0 B33 0 0 0 b22 0 0 0 |
0 0 0 b23 0 0 0 b12 0 |
0 0 0 0 0 b13 0 0 0 |
||
№ такта |
N N P2 |
Входная последова-тельность |
Состояние содержимого регистров ОЭ |
||||
ОЭ1 |
ОЭ2 |
ОЭ3 |
ОЭ4 |
ОЭ5 |
|||
5 |
1 2 3 |
a |
А12 0 0 |
0 0 0 |
А11 B11 C111 |
0 0 0 |
0 0 0 |
6 |
1 2 3 |
a13 0 |
A12 0 0 |
0 0 C111 |
A11 0 0 |
0 0 0 |
0 0 0 |
7 |
1 2 3 |
a13 |
0 0 0 |
A12 B21 C112 |
0 0 0 |
A11 A12 C121 |
0 0 |
8 |
1 2 3 |
a13 |
0 0 C112 |
A12 0 0 |
0 0 C121 |
A11 0 0 |
0 0 0 |
9 |
1 2 3 |
0 |
A13 B31 C11 |
0 0 0 |
A12 B22 C122 |
0 0 0 |
A11 B13 C131 |
10 |
1 2 3 |
0
C11 |
A13 0 0 |
0 0 C122 |
A12 0 0 |
0 0 C131 |
A11 0 0 |
11 |
1 2 3 |
0 |
0 0 0 |
A13 B32 C12 |
0 0 0 |
A12 B23 C132 |
0 0 0 |
12 |
1 2 3 |
0 |
0 0 C12 |
A13 0 0 |
0 0 C132 |
A12 0 0 |
0 0 0 |
13 |
1 2 3 |
0 |
0 0 C12 |
0 0 0 |
A13 B33 C13 |
0 0 0 |
A12 0 0 |
14 |
1 2 3 |
0
c12 |
0 0 0 |
0 0 C13 |
A13 0 0 |
0 0 0 |
A12 0 0 |
15 |
1 2 3 |
0 |
0 0 0 |
0 0 C13 |
0 0 0 |
A13 0 0 |
0 0 0 |
16 |
1 2 3 |
0 |
0 0 C13 |
0 0 0 |
0 0 0 |
A13 0 0 |
0 0 0 |
17 |
1 2 3 |
0 |
0 0 C13 |
0 0 0 |
0 0 0 |
0 0 0 |
A13 0 0 |
18 |
1 2 3 |
c13 |
0 0 0 |
0 0 0 |
0 0 0 |
0 0 0 |
A13 0 0 |

13
0