ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6709
Скачиваний: 8
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
Строго говоря, использование термина «вектор» в данном контексте неправомочно, хотя уже много
лет говорят именно «вектор». Дело в том, что вектор, в отличие от одномерной матрицы, имеет метри-
ку, тогда как одномерный массив представляет собой просто определенным образом упорядоченный
набор значений, характеризующих некоторый объект. —
Примеч. научн. ред.
Компьютеры 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
.
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, поэтому его очень
удобно применять в учебных целях, и к тому же его архитектуру можно встретить
во многих современных векторных суперкомпьютерах.
Компьютеры 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-битной команде можно сложить, вычесть или умножить два
вектора. Операция деления невозможна, но можно вычислить обратную величи-
ну. Векторные регистры могут загружаться из памяти, сохраняться в память, но
такие перемещения выполнять очень невыгодно, поэтому их следует свести к мини-
муму. Во всех векторных операциях используются регистровые операнды.
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 можно разделить на мультипроцессоры
и мультикомпьютеры. В этом разделе мы рассмотрим мультипроцессоры, а в сле-
дующем — мультикомпьютеры. Мультипроцессор — это компьютерная система,
которая содержит несколько процессоров и одно адресное пространство, видимое
для всех процессоров. Он запускает одну копию операционной системы с одним
набором таблиц, в том числе таблицами, которые следят, какие страницы памяти
заняты, а какие свободны. Когда процесс блокируется, его процессор сохраняет
свое состояние в таблицах операционной системы, а затем просматривает эти таб-
лицы для нахождения другого процесса, который нужно запустить. Именно нали-
чие одного отображения и отличает мультипроцессор от мультикомпьютера.
Мультипроцессор, как и все компьютеры, должен содержать устройства ввода-
вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах
только определенные процессоры имеют доступ к устройствам ввода-вывода и,
следовательно, имеют специальную функцию ввода-вывода. В других мультипро-