- •Векторные процессоры и Cray-2
- •Векторный процессор
- •Иллюстрация скалярной обработки
- •Иллюстрация векторной обработки
- •Размещение в памяти матрицы 4x4
- •Векторный процессор (векторно-параллельная обработка)
- •Векторный процессор (векторно- конвейерная обработка)
- •Параллельная обработка несколькими
- •Векторная обработка память-память
- •Векторная обработка регистр-регистр
- •Регистр максимальной длины вектора
- •Регистр маски
- •Операции уплотнения / развертывания
- •Регистр вектора индексов
- •Операции упаковки/распаковки
- •Примеры векторно-
- •Cray 2
- •История Cray 2
- •Характеристики
- •Использование
- •Программное обеспечение
Векторные процессоры и Cray-2
Выполнил ст. гр. 9307 Джабаров Р.Р.
Векторный процессор
2
Векторный процессор — это процессор, в котором операндами некоторых команд могут выступать упорядоченные массивы данных — векторы. Отличается от скалярных процессоров, которые могут работать только с одним операндом в единицу времени.
Иллюстрация скалярной обработки
3
Простой пример попарного сложения двух наборов по 10 чисел. При "обычном" программировании используется цикл, который берёт пары чисел последовательно, и складывает их:
•Повторить цикл 10 раз
•прочитать следующую инструкцию и декодировать
•получить первое слагаемое
•получить второе слагаемое
•сложить
•сохранить результат
•конец цикла
Иллюстрация векторной обработки
4
•прочитать следующую инструкцию и декодировать
•получить 10 первых слагаемых
•получить 10 вторых слагаемых
•сложить
•сохранить результат
Таким образом, математические операции выполняются гораздо быстрее, основным ограничивающим фактором становится время, необходимое для извлечения данных из памяти.
Размещение в памяти матрицы 4x4
5
• Размещение в памяти по строкам
|
k |
k+1 |
k+2 |
k+3 k+4 k+5 |
k+6 |
k+7 |
k+8 |
|
k+9 k+10k+11 k+12 k+13 k+14 k+15 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а11 |
а12 |
а13 |
а14 |
а21 |
а22 |
|
а23 |
|
а24 |
а21 |
|
а22 |
а23 |
а24 |
а31 |
а32 |
а33 |
а34 |
|
Перемещение по строке |
|
|
|
|
|
Перемещение по столбцам |
||||||||||||||
(шаг по индексу =1) |
|
|
|
|
|
(шаг по индексу =4) |
• Размещение в памяти по столбцам
k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9 k+10k+11 k+12 k+13 k+14 k+15
а11 |
а21 |
а31 |
а41 |
а12 |
а22 |
а32 |
а42 |
а13 |
а23 |
а33 |
а43 |
а14 |
а24 |
а34 |
а44 |
Перемещение по строке |
|
|
Перемещение по столбцам |
||||||||||||
(шаг по индексу =4) |
|
|
(шаг по индексу =1) |
Векторный процессор (векторно-параллельная обработка)
6
Векторно-параллельный процессор. Используется n операционных блоков
Память |
|
C=A+B |
|
a0 |
+ |
||
|
|||
a1 |
|
A=(a0, a1,…an-1) |
|
|
|
||
an-1 |
|
B=(b0, b1, … bn-1) |
|
+ |
Операнды – массивы |
||
b |
|
||
b01 |
|
данных |
|
bn-1 |
|
Векторно-параллельные системы |
|
|
+ |
– несколько Floating point EU. |
|
c0 |
|
Векторно-конвейерные – один |
|
c1 |
|
Floating point EU. |
|
Cn-1 |
|
|
Векторный процессор (векторно- конвейерная обработка)
7
Используется один конвейерный блок для выполнения операций с плавающей запятой
Память |
t |
|
|
Память |
t+1 |
|
|
|
Память |
t+2 |
|
|
a0 |
|
|
a0 |
|
|
|
a0 |
|
||||
|
|
|
|
|
|
|
|
|
||||
a1 |
|
|
|
a1 |
|
|
|
|
a1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
a2 |
|
|
an-1 |
+ |
a ,b |
0 |
an-1 |
|
+ |
a1,b1 |
an-1 |
+ |
a3b3 |
||
b0 |
|
0 |
b0 |
|
|
a ,b |
|
b0 |
|
a ,b |
||
|
|
|
|
|
|
|
||||||
b |
|
|
|
|
b |
|
|
0 |
0 |
b |
|
2 2 |
|
1 |
|
|
|
1 |
|
|
|
|
b12 |
|
a1,b1 |
bn-1 |
|
|
|
bn-1 |
|
|
|
|
bn-1 |
c0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c0 |
|
|
|
c0 |
|
|
|
|
c0 |
|
|
|
c1 |
|
|
|
c1 |
|
|
|
|
c1 |
|
|
|
Cn-1 |
|
|
|
Cn-1 |
|
|
|
|
Cn-1 |
|
|
Параллельная обработка несколькими
конвейерными устройствами
8
а41 |
b41 |
a42 |
b42 |
a43 |
b43 |
a44 |
b44 |
||||||||||||||||
а31 |
b31 |
a32 |
b32 |
a33 |
b33 |
a34 |
b34 |
||||||||||||||||
а21 |
b21 |
a22 |
b22 |
a23 |
b23 |
a24 |
b24 |
||||||||||||||||
а11 |
b11 |
a12 |
b12 |
a13 |
b13 |
a14 |
|
b14 |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
+ |
+ |
+ |
c0 |
c1 |
c2 |
c3 |
Это наиболее распространенные системы
Векторная обработка память-память
9
Элементы векторов поочередно вызываются из памяти и срaзу направляются на EU. Результаты, появляющиеся на выходе, сразу же заносятся в память.
Vector register
Base Increment
+
v0 |
v1 |
v3 |
|
v7 |
a0 |
|
a1 |
|
a2 |
|
|
|
|
|
|
|
|
|
|
|
a7 |
b0 |
|
b1 |
|
b2 |
|
|
|
|
|
|
|
|
|
|
|
b7 |
c0 |
c1 |
c2 |
c7 |
Address |
Memory with interleaving |
Векторная обработка регистр-регистр
10
Операнды снaчала загружаются из памяти в векторные регистры (v- registers). V-register – группа скалярных регистров, объединенных в очередь типа FIFO. Хранит 500 – 100 FP-чисел (часто 64).
Операция выполняется над векторами, находящимися в v-регистрах. Результат заносится в v-регистр.
Преимущества векторных процессоров типа “память-память” – возможность обработки длинных векторов.
Недостаток – интервал между инициализацией команды и появлением первого результата на выходе EU (время запуска).
Время работы T= s + N s – время запуска,
- константа, зависящая от команды (1/2, 1, 2) N – длина вектора
В современных системах доминирует обработка “регистр - регистр”.