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

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

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

Добавлен: 24.12.2021

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

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

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

5 8 8 Глава 8. Архитектуры компьютеров параллельного действия

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

Второй вопрос — как связываются обрабатывающие элементы друг с другом.

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

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

Третий вопрос — какую локальную автономию имеют обрабатывающие элемен-

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

Векторные процессоры

Второй тип машины SIMD —

 векторный процессор.

 Он более популярен на рын-

ке. Машины, разработанные Сеймуром Креем (Seymour Cray) для Cray Research
(сейчас это часть Silicon Graphics), — Сгау-1 в 1976 году, а затем С90 и Т90 доми-
нировали в научной сфере на протяжении десятилетий. В этом разделе мы рас-
смотрим основные принципы, которые используются при создании таких высоко-
производительных компьютеров.

Типичное приложение для быстрой переработки больших объемов цифровых

данных полно таких выражений, как:

for(i=0: i<n: i++) a[i]-b[i]+c[i];

где a, b и с — это

 векторы

1

 (массивы чисел), обычно с плавающей точкой. Цикл

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

На рис. 8.13 изображено векторное АЛУ. Такая машина на входе получает два

n-элементных вектора и обрабатывает соответствующие элементы параллельно,
используя векторное АЛУ, которое может оперировать п элементами одновремен-
но. В результате получается вектор. Входные и выходные векторы могут сохра-
няться в памяти или в специальных векторных регистрах.

Векторные компьютеры применяются и для скалярных (невекторных) опера-

ций, а также для смешанных векторно-скалярных операций. Основные типы век-
торных операций приведены в табл. 8.3. Первая из них,

 U,

 выполняет ту или иную

операцию (например, квадратный корень или косинус) над каждым элементом од-
ного вектора. Вторая, f

2

, на входе получает вектор, а на выходе выдает скалярное

значение. Типичный пример — суммирование всех элементов. Третья, f3, выпол-

няет бинарную операцию над двумя векторами, например сложение соответствую-

1

 Строго говоря, использование термина «вектор» в данном контексте неправомочно, хотя уже много

лет говорят именно «вектор». Дело в том, что вектор, в отличие от одномерной матрицы, имеет метри-
ку, тогда как одномерный массив представляет собой просто определенным образом упорядоченный
набор значений, характеризующих некоторый объект. —

 Примеч. научн. ред.


background image

Компьютеры SIMD

589

щих элементов. Наконец, четвертая,

 U,

 соединяет скалярный операнд с векторным.

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

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

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

3

), а за-

тем сложить полученные результаты (f

2

).

Входные векторы

Векторное АЛУ

Рис. 8.13. Векторное АЛУ

Таблица 8.3.

 Комбинации векторных и скалярных операций

Операция

Примеры

A=f,(B,)

Cкaляp=f2(A)

A,=f

3

(B,, С)

А^

4

(скаляр, В,)

f 1 _ косинус, квадратный корень
f2 — сумма, минимум
f3 — сложение, вычитание
f

4

_ умножение В, на константу

На практике суперкомпьютеры редко строятся по схеме, изображенной на

рис. 8.13. Причина не техническая — такую машину вполне можно построить, а
экономическая. Создание компьютера с 64 высокоскоростными АЛУ слишком
дорого обойдется.

Обычно векторные процессоры сочетаются с конвейерами. Операции с плаваю-

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

Рассмотрим табл. 8.4. В данном примере нормализованное число имеет ман-

тиссу больше 1, но меньше 10 или равную 1. Здесь требуется вычесть 9,212x10"
из 1,082хЮ

12

.


background image

5 9 0

 Глава 8. Архитектуры компьютеров параллельного действия

Таблица 8.4.

 Вычитание чисел с плавающей точкой

Номер шага Название шага Значения

1 Вызов операндов 1,082х10

12

-9,212x10"

2 Выравнивание экспоненты 1,082хЮ

12

-0,9212хЮ'

2

3 Вычитание 0,1608x10

12

4 Нормализация результата 1,608x10"

Чтобы из одного числа с плавающей точкой вычесть другое число с плавающей

точкой, сначала нужно подогнать их таким образом, чтобы их экспоненты имели
одно и то же значение. В нашем примере мы можем либо преобразовать уменьша-
емое (число, из которого производится вычитание) в 10,82x10", либо преобразо-
вать вычитаемое (число, которое вычитается) в 0,9212х10

12

. При любом преобра-

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

(исчезновению значащих разрядов) мантиссы, а уменьшение экспоненты может

вызвать переполнение мантиссы. Антипереполнение менее опасно, поскольку число
с антипереполнением можно округлить нулем. Поэтому мы выбираем первый путь.

Приведя обе экспоненты к 12, мы получаем значения, которые показаны в табл. 8.4
на шаге 2. Затем мы выполняем вычитание, а потом нормализуем результат.

Конвейеризацию можно применять к циклу for, приведенному в начале раздела.

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

Таблица 8.5.

 Работа конвейеризированного сумматора с плавающей точкой

Цикл

Шаг 1 2 3 4 5 6 7

Вызов операндов В,, С, В

2

, С

2

 В

3

, С

3

 В

4

, С

4

 В

5

, С

5

 В

6

, С

б

 В

7

, С

7

Выравнивание экспоненты В,, С, В

2

, С

2

 В

3

, С

3

 В

4

, С

4

 В

5

, С

6

 В

б

, С

6

Вычитание Bi+Ci В

2

2

 В

3

3

 В

4

4

 В

6

5

Нормализация результата B,+Ci B

2

+C

2

 В

3

3

 В

4

4

Существенное различие между использованием конвейера для операций над

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

Векторный суперкомпьютер Сгау-1

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

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


background image

Компьютеры SIMD

5 9 1

Машина Сгау-1 регистровая (что типично для машин типа RISC), большин-

ство команд 16-битные, состоят из 7-битного кода операции и трех 3-битных но-
меров регистров для трех операндов. Имеется пять типов регистров (рис. 8.14).
Восемь 24-битных регистров А используются для обращения к памяти. 64 24-бит-
ных регистра В используются для хранения регистров А, когда они не нужны,
чтобы не записывать их обратно в память. Восемь 64-битных регистров S предна-

значены для хранения скалярных величин (целых чисел и чисел с плавающей точ-

кой). Значения этих регистров можно использовать в качестве операндов как для
операций с целыми числами, так и для операций над числами с плавающей точ-
кой. 64 64-битных регистра Т — это регистры для хранения регистров S, опять-
таки для сокращения количество операций LOAD и STORE.

64 элемента

В

8 24-битных

адресных

регистров

Блок

сложения

Блок

умножения

64

24-битных

регистра

для

хранения

адресов

8 64-битных

скалярных

регистров

Блок

сложения

Блок

логических

операций

Блоки адресов

Схема

сдвига

Блок

вычисления

генеральной

совокупности

64

64-битных

регистра

для

хранения

скалярных

величин

8 64-битных

векторных

регистров

Блок

сложения

Блок

умножения

Блок

вычисления

обратной

величины

Блок

сложения

Блок

логических

операций

Схема

сдвига

Блоки вычисления

генеральной

совокупности

Блок скалярных

чисел/векторов

с плавающей

точкой

Блоки векторов

целых чисел

Рис. 8.14.

 Регистры и функциональные блоки машины Сгау-1

Самый интересный набор регистров — это группа из восьми векторных регист-

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

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


background image

5 9 2 Глава 8. Архитектуры компьютеров параллельного действия

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

пример, машина CDC Cyber 205 выполняла операции над векторами в памяти.
Такой подход позволял работать с векторами произвольной длины, но это сильно
снижало скорость работы машины.

Сгау-1 содержит 12 различных функциональных блоков (см. рис. 8.14). Два из

них предназначены для арифметических действий с 24-битными адресами. Четы-
ре нужны для операций с 64-битными целыми числами. Сгау-1 не имеет блока для
целочисленного умножения (хотя есть блок для перемножения чисел с плаваю-
щей точкой). Оставшиеся шесть блоков работают над векторами. Все они конвейе-
ризированы. Блоки сложения, умножения и вычисления обратной величины рабо-
тают как над скалярными числами с плавающей точкой, так и над векторами.

Как и многие другие векторные компьютеры, Cray-1 допускает операции сцеп-

ления. Например, чтобы вычислить выражение

R1=R1*R2+R3

где Rl, R2 и R3 — векторные регистры, машина выполнит векторное умножение
элемент за элементом, сохранит результат где-нибудь, а затем выполнит вектор-
ное сложение. При сцеплении, как только первые элементы перемножены, произ-
ведение сразу направляется в сумматор вместе с первым элементом регистра R3.
Сохранения промежуточного результата не требуется. Такая технология значи-
тельно улучшает производительность.

Интересно рассмотреть абсолютную производительность Сгау-1. Тактовый ге-

нератор работает с частотой 80 МГц, а объем основной памяти составляет 8 Мбайт.
В то время (в середине — конце 70-х) это был самый мощный компьютер в мире.
Сегодня вряд ли кто-нибудь сможет купить компьютер с таким медленным такто-
вым генератором и такой маленькой памятью — их уже никто не производит. Это
наблюдение показывает, как быстро развивается компьютерная промышленность.

Мультипроцессоры с памятью

совместного использования

Как показано на рис. 8.12, системы MIMD можно разделить на мультипроцессоры
и мультикомпьютеры. В этом разделе мы рассмотрим мультипроцессоры, а в сле-

дующем — мультикомпьютеры. Мультипроцессор — это компьютерная система,

которая содержит несколько процессоров и одно адресное пространство, видимое

для всех процессоров. Он запускает одну копию операционной системы с одним

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

Мультипроцессор, как и все компьютеры, должен содержать устройства ввода-

вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах
только определенные процессоры имеют доступ к устройствам ввода-вывода и,
следовательно, имеют специальную функцию ввода-вывода. В других мультипро-