ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.12.2021

Просмотров: 2449

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

5 5 6 Глава 13. Вычислительные системы класса SIMD

сравнению порядков, сдвигу мантиссы меньшего из чисел, сложению мантисс

и нормализации результата (рис. 13.5,

 а).

 Каждый этап может быть реализован

с помощью отдельной ступени конвейерного АЛУ (рис. 13.5,6). Очередной эле-
мент вектора подается на вход конвейера, как только освобождается первая ступень
(рис. 13.5, в). Ясно, что такой вариант вполне годится для обработки векторов.

Одновременные операции над элементами векторов можно проводить и с по-

мощью нескольких параллельно используемых АЛУ, каждое из которых отвечает

за одну пару элементов (см. рис. 13.4,

6).

 Такого рода обработка, когда каждое из

АЛУ является конвейерным, показана на рис. 13.5,

 г.

Если параллельно используются конвейерные АЛУ, то возможен еще один уро-

вень конвейеризации, что иллюстрирует рис. 13.5,

 д.

 Вычислительные системы, где

реализована эта идея, называют

 векторно-конвейерными.

 Коммерческие вектор-

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

 суперЭВМ.

Структура векторного процессора

Обобщенная структура векторного процессора приведена на рис. 13.6. На схеме
показаны основные узлы процессора, без детализации некоторых связей между
ними.

Рис, 13.6. Упрощенная структура векторного процессора

Обработка всех

 п

 компонентов векторов-операндов задается одной

 векторной

командой.

 Общепринято, что элементы векторов представляются числами в фор-

ме с плавающей запятой (ПЗ). АЛУ векторного процессора может быть реализо-

вано в виде единого конвейерного устройства, способного выполнять все преду-
смотренные операции над числами с ПЗ. Более распространена, однако, иная


background image

Векторные и векторно-конвейерные вычислительные системы  5 5 7

структура, — в ней АЛУ состоит из отдельных блоков сложения и умножения,
а иногда и блока для вычисления обратной величины, когда операция деления

 реализуется в виде

 Х(1/Y)

. Каждый из таких блоков также конвейеризирован.

Кроме того, в состав

 векторной вычислительной системы

 обычно включают и ска-

лярный процессор, что позволяет параллельно выполнять векторные и скалярные

команды.

Для хранения векторов-операндов вместо множества скалярных регистров ис-

пользуют так называемые

 векторные регистры,

 которые представляют собой со-

вокупность скалярных регистров, объединенных в очередь типа FIFO, способную

хранить 50-100 чисел с плавающей запятой. Набор векторных регистров (V

a

, V

b

, V

c

,...)

имеется в любом векторным процессоре. Система команд векторного процессора

поддерживает работу с векторными регистрами и обязательно включает в себя

команды:
* загрузки векторного регистра содержимым последовательных ячеек памяти,

указанных адресом первой ячейки этой последовательности;

-

 выполнения операций над всеми элементами векторов, находящихся в вектор-

ных регистрах;

-

 сохранения содержимого векторного регистра в последовательности ячеек па-

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

Примером одной из наиболее распространенных операций, возлагаемых на век-

торный процессор, может служить операция перемножения матриц [161]. Рассмот-

рим перемножение двух матриц А и В размерности  3 x 3 .

Элементы матрицы результата С связаны с соответствующими элементами ис-

ходных матриц А и В операцией скалярного произведения:

Так, элемент с

11

 вычисляется как

Это требует трех операций умножения и (после инициализации с

11

 нулем) трех

операций сложения. Общее число умножений и сложений для рассматриваемого
примера составляет 9 х 3 = 27. Если рассматривать связанные операции умноже-
ния и сложения как одну кумулятивную операцию с +

 а

 х b

,

 то для умножения двух

матриц

 п х п

 необходимо

 п

3

 операций типа «умножение-сложением»Вся процеду-

ра сводится к получению

 п

2

 скалярных произведений, каждое из которых являет-

ся итогом « операций «умножение-сложение», учитывая, что перед вычислением
каждого элемента с

ij

 его необходимо обнулить. Таким образом, скалярное произ-

ведение состоит из

 k

 членов:


background image

5 5 8 Глава 13. Вычислительные системы класса SIMD

Рис. 13.7. Векторный процессор для вычисления скалярного произведения

Векторный процессор с конвейеризированными блоками обработки для вычис-

ления скалярного произведения показан на рис. 13.7.

Векторы А и В, хранящиеся в памяти начиная с адресов adr

A

 u adr

B

, загружаются

в векторные регистры V

A

 и V

B

 соответственно. Предполагается, что конвейерные

умножитель и сумматор состоят из четырех сегментов, которые вначале инициа-

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

не заполнятся, на выходе сумматора будет 0. Пары (А

i

, В

i

) подаются на вход умно-

жителя и перемножаются в темпе одна пара за цикл. После первых четырех цик-

лов произведения начинают суммироваться с данными, поступающими с выхода
сумматора. В течение следующих четырех циклов на вход сумматора поступают

суммы произведений из умножителя с нулем. К концу восьмого цикла в сегментах

сумматора находятся четыре первых произведения A

1

B

1

, ..., А

4

В

4

, а в сегментах

умножителя — следующие четыре произведения: А

5

В

5

,..., A

8

B

8

. К началу девятого

цикла на выходе сумматора будет А

1

В

1

, а на выходе умножителя — А

5

В

5

. Таким

образом, девятый цикл начнется со сложения в сумматоре А

1

В

1

 и А

5

В

5

. Десятый

цикл начнется со сложения А

2

В

2

 +

 A

6

B

6

 и т. д. Процесс суммирования в четырех

секциях выглядит так:

Когда больше не остается членов для сложения, система заносит в умножитель

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

веденным в четырех строках показанного выше уравнения. Далее четыре частич-
ных суммы складываются для получения окончательного результата.

Программа для вычисления скалярного произведения векторов А и В, храня-

щихся в двух областях памяти с начальными адресами adr

A

 и adr

B

, соответственно

может выглядеть так:


background image

Векторные и векторно-конвейерные вычислительные системы  5 5 9

Первые две векторные команды V_load загружают векторы из памяти в вектор-

ные регистры V

A

 и V

B

. Векторная команда умножения V_multiply вычисляет произ-

ведение для всех пар одноименных элементов векторов и записывает полученный

вектор в векторный регистр V

c

.

Важным элементом любого векторного процессора (ВП) является

 регистр длины

вектора.

 Этот регистр определяет, сколько элементов фактически содержит обра-

батываемый в данный момент вектор, то есть сколько индивидуальных операций
с элементами нужно сделать. В некоторых ВП присутствует также

 регистр макси-

мальной длины вектора,

 определяющий максимальное число элементов вектора,

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

ратурой за один прием.

Достаточно часто приходится выполнять такие операции, в которых должны

участвовать не все элементы векторов. Векторный процессор обеспечивает дан-
ный режим с помощью регистре

 маски вектора.

 В этом регистре каждому элемен-

ту вектора соответствует один бит. Установка бита в единицу разрешает запись
соответствующего элемента вектора результата в выходной векторный регистр,
а сброс в ноль — запрещает.

Как уже упоминалось, элементы векторов в памяти расположены регулярно,

и при выполнении векторных операций достаточно указать значение шага по ин-

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

ВП предусмотрены операции

 упаковки/распаковки

 (gather/scatter). Операция упа-

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

 регистр вектора индексов,

 по структуре аналогичный регистру мас-

ки. В векторе индексов каждому элементу исходного вектора соответствует один

бит. Нулевое значение бита свидетельствует, что соответствующий элемент ис-

ходного вектора равен нулю.

Использование векторных команд окупается благодаря двум качествам. Во-

первых, вместо многократной выборки одних и тех же команд достаточно произ-

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

 п

 пар операндов, расположенных в памяти регулярным образом. Таким

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

получены со скоростью одной пары за цикл процессора и направлены для обра-

ботки в конвейеризированный функциональный блок. При отсутствии чередова-


background image

5 6 0 Глава 13. Вычислительные системы класса SIMD

ния адресов или других средств извлечения операндов с высокой скоростью преи-

мущества обработки векторов существенно снижаются.

Структуры типа «память-память»

и «регистр-регистр»

Принципиальное различие архитектур векторных процессоров проявляется в том,

каким образом осуществляется доступ к операндам. При организации

 «память-

память*

 элементы векторов поочередно извлекаются из памяти и сразу же на-

правляются в функциональный блок. По мере обработки получающиеся элементы
вектора результата сразу же заносятся в память. В архитектуре типа

 «регистр-ре-

гистр»

 операнды сначала загружаются в

 векторные регистры,

 каждый из которых

может хранить сегмент вектора, например 64 элемента. Векторная операция реа-

лизуется путем извлечения операндов из векторных регистров и занесения резуль-
тата в векторные регистры.

Преимущество ВП с режимом -«память-память» состоит в возможности обра-

ботки длинных векторов, в то время как в процессорах типа -«регистр-регистр»

приходится разбивать длинные векторы на сегменты фиксированной длины. К со-
жалению, за гибкость режима «память-память» приходится расплачиваться отно-
сительно большими издержками, известными как

 время запуска,

 представляющее

собой временной интервал между инициализацией команды и моментом, когда

первый результат появится на выходе конвейера. Большое время запуска в про-
цессорах типа -«память-память» обусловлено скоростью доступа к памяти, кото-
рая намного больше скорости доступа к внутреннему регистру. Однако когда кон-
вейер заполнен, результат формируется в каждом цикле. Модель времени работы

векторного процессора имеет вид:

где s — время запуска, — константа, зависящая от команды (обычно 1/2,1 или 2)
и

 N—

 длина вектора.

Архитектура типа «память-память» реализована в векторно-конвейерных вы-

числительных системах Advanced Scientific Computer фирмы Texas Instruments Inc.,
семействе вычислительных систем фирмы Control Data Corporation, прежде все
го, Star 100, серии Cyber 200 и ВС типа ЕТА-10. Все эти вычислительные системы
появились в середине 70-х прошлого века после длительного цикла разработки, но

к середине 80-х годов от них отказались. Причиной послужило слишком большое

время запуска — порядка 100 циклов процессора. Это означает, что операции с ко-
роткими векторами выполняются очень неэффективно, и даже при длине векто-
ров в 100 элементов процессор достигал только половины потенциальной произ-
водительности.

В вычислительных системах типа «регистр-регистр» векторы имеют сравни-

тельно небольшую длину (в ВС семейства Cray — 64), но время запуска значи-
тельно меньше чем в случае «память-память». Этот тип векторных систем гораздо
более эффективен при обработке коротких векторов, но при операциях над длин-

ными векторами векторные регистры должны загружаться сегментами несколько

раз. В настоящее время ВП типа «регистр-регистр» доминируют на компьютер-

ном рынке. Это вычислительные системы фирмы Cray Research Inc., в частности


Смотрите также файлы