СИСТОЛИЧЕСКИЕ МАССИВЫ

2.1. Общие сведения

Систолические матрицы были предложены в 1978 г. и его коллегами из Университета Карнеги-Меллона. Они были разработаны для высокоскоростной числовой обработки и ориентированы на реализацию преимуществ СБИС, содержащих множество простейших распределенных арифметических элементов (АЕ – Arithmetic Elements). На рис. 2.1. показана структура одного из простейших арифметических элементов, предназначенного для получения внутреннего произведения. Этот арифметический элемент принимает до трех входных данных (А’=А), а в выходном регистре В’ – значение выходных данных (В’=В). Над входными данными А, В и С элемент выполняет вычисления по формуле С+АхВ из заносит в выходной регистр С значение результата С’.

А’,В’ и С’ получаются через один временной интервал после ввода А, В и С.

А

+ С

С’ С’

Х

В В’ В’

А’

А’

.Рис.

На основные операционные элементы, расположенные на периферии матрицы, регулярно подается поток данных, а управление всей систолической матрицей производится по конвейерному принципу. Другими словами, введенный поток данных, проходя все ступени конвейера, обрабатывается каждым операционным устройством и после обработки выводится. Чем больше ступеней конвейера, тем легче добиться более высокой скорости обработки при определенной скорости потока входных данных (ширине полосы потока данных). Таким образом, каждая ячейка выполняет операции, ритмично чередуя прием и передачу данных в ходе обмена с окружающими ее ячейками (подобно биению сердца), что делает данную структуру удобной для реализации в виде СБИС.

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

2.1.2. Примеры применения систолических массивов

2.1.2.1. Пример применения систолического массива для умножения типа Y=AX

Систолический массив применяется для умножения типа Y=AX, где A-ленточная матрица (матрица nxn), ширина полосы =p+q-1, а Х – вектор (см. рис.)

В данном случае p=2 и q=3. Управление операциями производится следующим образом. В начальном состоянии значения всех yi равно нулю. На основные операционные элементы РЕ с интервалом в два такта в порядке возрастания индекса i подаются xi и yi соответственно вправо и влево с интервалом в один такт. Элементы а ленточной матрицы перемещаются сверху вниз. Таким образом, в следующем по отношению к показанному на рисунке состоянию (через один такт) y1 перемещается в РЕ2, у2- в РЕ4, х1- в РЕ2, а11 –в РЕ2. В процессорных элементах поступившие значения х и а перемножаются, а результаты суммируются с поступившими значениями у (т. е. имеет место операция умножения с суммированием).

а11 а12 х1 y1

а21 а22 а23 . . . х2 y2

а31 а32 а33 а34 х х3 = y3

а42 а43 а44 . . . х4 y4

а53 . . . . . .

0

а34 а43

а33 а42

а23 а32

а22 а31

а12 а21

а11

y1 y2

x2 x1

1 2 3 4

Рис.

2.1.2.2. Пример применения систолического массива для выполнения операции D=C+AB

Пусть требуется создать устройство для вычисления матрицы D=C+AB, где

а11 а12 0 b11 b12 b 13 0 с11 с12 с 13 с 14 0

а21 а22 а23 . . b21 b22 … …. с21 с22 с23 … …

A = а31 а32 … В = b32 … С = с31 с32 … …

а42 . . . … с41

. . . . .

0 0 0

Здесь все матрицы - ленточные, порядка n. Матрица А имеет одну диагональ выше и две диагонали ниже главной; матрица В – одну диагональ ниже и две диагонали выше главной; матрица С – по три диагонали выше и ниже главной.

Пусть каждый ПЭ может выполнять скалярную операцию c+ab и одновременно осуществлять передачу данных. Каждый ПЭ, следовательно, должен иметь три входа: a, b, c и три выхода a, b, c. Входные (in) и выходные (out) данные связаны соотношениями

aout=ain, bout=bin, cout=cin

Если в момент выполнения операции какие-то данные не поступили будем считать, что они доопределяются нулями. Предположим далее, что все ПЭ расположены на плоскости и каждый из них соединен с шестью соседними (см. рис.). Если расположить данные как показано на рис, то схема будет вычислять матрицу D.

Поясним работу массива. Массив работает по тактам. За каждый такт все данные перемещаются в соседние узлы по направлениям, указанным стрелками.

На рисунке показано состояние систолического массива в некоторый момент времени. В следующий такт все данные переместятся на один узел и элементы a11, b11, с11 окажутся в одном ПЭ, находящемся на пересечении штриховых линий.

Следовательно, будет вычислено выражение c11+a11b11. В этот же такт данные а12 и b21 вплотную приблизятся к ПЭ, находящемуся в вершине систолического массива. В следующий такт все данные снова переместятся на один узел в направлении стрелок и в верхнем ПЭ окажутся а12 и b21 и результат предыдущего срабатывания процесорного элемента, находящегося внизу., т.е. с1111b11. Следовательно, будет вычислено выражение с1111b11+ а12b21. Это и будет элемент d11 матрицы D.

Продолжая рассмотрение процесса по тактам, можно убедиться, что на выходах ПЭ, соответствующих верхней границе систолического массива, периодически через три такта выдаются элементы матрицы D, причем на каждом выходе появляются элементы одной и той же диагонали. Примерно через 3n тактов будет закончено вычисление всей матрицы D. При этом загруженность каждой систолической ячейки асимптотически равна 1/3.

Анализ функционирования систолических массивов показывает, что такие массивы имеют черты как процессорных матриц (совокупность связанных ПЭ, выполняющих единую команду, так и явные признаки конвейерного вычислителя. (потактное получение результата).

а12 b21 b22

а22

а31 а21 а11 b11 b12 b13

с11

с21 с12

с31 с22 с13

с41 с32 с23 с14

с42 с33 с24