ИНФОРМАЦИЯ |
© Воеводин Вл.В.
Курс лекций
"Параллельная
обработка данных"
План лекции:
Общая структура компьютера CRAY Y-MP C90.CRAY Y-MP C90 - это векторно-конвейерный компьютер, объединяющий в максимальной конфигурации 16 процессоров, работающих над общей памятью. Время такта компьютера CRAY Y-MP C90 равно 4.1 нс, что соответствует тактовой частоте почти 250MHz. |
Оперативная память этого компьютера разделяется всеми процессорами и секцией
ввода/вывода. Каждое слово состоит из 80-ти разрядов: 64 для хранения данных и
16 для коррекции ошибок. Для увеличения скорости выборки данных память разделена
на множество банков, которые могут работать одновременно.
Каждый процессор имеет доступ к ОП через четыре порта с пропускной способностью два слова за один такт каждый, причем один из портов всегда связан с секций ввода/вывода и по крайней мере один из портов всегда выделен под операцию записи.
В максимальной конфигурации вся память разделена на 8 секций, каждая секция
на 8 подсекций, каждая подсекция на 16 банков. Адреса идут с чередованием по
каждому из данных параметров:
адрес 0 - в 0-й секции, 0-подсекции, 0-м банке, адрес 1 - в 1-й секции, 0-подсекции, 0-м банке, адрес 2 - в 2-й секции, 0-подсекции, 0-м банке, ... адрес 8 - в 0-й секции, 1-подсекции, 0-м банке, адрес 9 - в 1-й секции, 1-подсекции, 0-м банке, ... адрес 63 - в 7-й секции, 7-подсекции, 0-м банке, адрес 64 - в 0-й секции, 0-подсекции, 1-м банке, адрес 65 - в 1-й секции, 0-подсекции, 1-м банке, ...
При одновременном обращении к одной и той же секции из разных портов
возникает задержка в 1 такт, а при обращении к одной и той же подсекции одной
секции задержка варьируется от 1 до 6 тактов. При выборке последовательно
расположенных данных или при выборке с любым нечетным шагом конфликтов не
возникает.
Компьютер поддерживает три типа каналов, которые различаются скоростью передачи:
Секция межпроцессорного взаимодействия содержит разделяемые регистры и семафоры, предназначенные для передачи данных и управляющей информации между процессорами. Регистры и семафоры разделены на одинаковые группы (кластеры), каждый кластер содержит 8 (32-разрядных) разделяемых адресных (SB) регистра, 8 (64-разрядных) разделяемых скалярных (ST) регистра и 32 однобитовых семафора.
Все процессоры имеют одинаковую вычислительную секцию, состоящую из
регистров, функциональных устройств (ФУ) и сети коммуникаций. Регистры и ФУ
могут хранить и обрабатывать три типа данных: адреса (A-регистры,
B-регистры), скаляры (S-регистры, T-регистры) и
вектора (V-регистры).
Каждый процессор имеет три набора основных регистров (A, S, V), которые имеют связь как с памятью, так и с ФУ. Для регистров A и S существуют промежуточные наборы регистров B и T, играющие роль буферов для основных регистров.
Адресные регистры: A-регистры, 8 штук по 32 разряда, для хранения и вычисления адресов, индексации, указания величины сдвигов, числа итераций циклов и т.д. B-регистры, 64 штуки по 32 разряда.
Скалярные регистры: S-регистры, 8 штук по 64 разряда, для хранения аргументов и результатов скалярной арифметики, иногда содержат операнд для векторных команд. T-регистры, 64 штуки по 64 разряда. Скалярные регистры используются для выполнения как скалярных, так и векторных команд.
Векторные регистры: V-регистры, 8 штук на 128 64-разрядных слова каждый. Векторные регистры используются только для выполнения векторных команд.
Регистр длины вектора: 8 разрядов.
Регистр маски вектора: 128 разрядов.
ФУ исполняют свой набор команд и могут работать одновременно друг с другом. Все ФУ конвейерные и делятся на четыре группы: адресные, скалярные, векторные и для работы с плавающей точкой.
Адресные ФУ (2): целочисленное сложение/вычитание, целочисленное умножение.
Скалярные ФУ (4): целочисленное сложение/вычитание, логические поразрядные операции, сдвиг, число единиц/число нулей до первой единицы.
Векторные ФУ (5-7): целочисленное сложение/вычитание, сдвиг, логические поразрядные операции (1-2), число единиц/число нулей до первой единицы (1-2), умножение битовых матриц (0-1). Предназначены для выполнения только векторных команд.
ФУ с плавающей точкой (3): сложение/вычитание, умножение, нахождение обратной величины. Предназначены для выполнения как векторных, так и скалярных команд.
Векторные ФУ и ФУ с плавающей точкой продублированы: векторные команды разбивают 128 элементов векторных регистров на четные и нечетные, обрабатываемые одновременно двумя конвейерами (pipe 0, pipe 1). Когда завершается выполнение очередной пары операций результаты записываются на соответствующие четные и нечетные позиции выходного регистра. В полностью скалярных операциях, использующих ФУ с плавающей точкой, работает только один конвейер.
ФУ имеют различное число ступеней конвейера, но каждая ступень срабатывает за один такт, поэтому при полной загрузке все ФУ могут выдавать результат каждый такт.
Команды выбираются из ОП блоками и заносятся в буфера команд, откуда они затем выбираются для исполнения. Если необходимой для исполнения команды нет в буферах команд, то происходит выборка очередного блока.
Команды имеют различный формат и могут занимать 1 пакет (16 разрядов), 2 пакета или 3 пакета (в одном слове 64 разряда, следовательно, в слове содержится 4 пакета). Максимальная длина программы на CRAY C90 равна 1 Гигаслову.
Все основные операции, выполняемые процессором: обращения в память, обработка команд и выполнение инструкций являются конвейерными.
Большинство ФУ в CRAY C90 являются независимыми, поэтому несколько операций
могут выполняться одновременно. Для операции A=(B+C)*D*E порядок
выполнения может быть следующим (все аргументы загружены в S регистры).
Генерируются три инструкции: умножение D и E, сложение
B и C и умножение результатов двух предыдущих операций. Первые
две операции выполняются одновременно, затем третья.
Векторная обработка увеличивает скорость и эффективность обработки за счет того, что обработка целого набора (вектора) данных выполняется одной командой. Скорость выполнения операций в векторном режиме приблизительно в 10 раз выше скорости скалярной обработки. Для фрагмента типа
Do i = 1, n A(i) = B(i)+C(i) End Do
в скалярном режиме потребуется сгенерировать целую последовательность команд: прочитать элемент B(I), прочитать элемент C(I), выполнить сложение, записать результат в A(I), увеличить параметр цикла, проверить условие цикла. В векторном режиме этот фрагмент преобразуется в: загрузить порцию массива B, загрузить порцию массива C (эти две операции будут выполняться со сдвигом в один такт, т.е. практически одновременно), векторное сложение, запись порции массива в память, если размер массивов больше длины векторных регистров, то повторить эту последовательность некоторое число раз.
Перед тем, как векторная операция начнет выдавать результаты, проходит некоторое время (startup), связанное с заполнением конвейера и подкачкой аргументов. Чем больше длина векторов, тем менее заметным оказывается влияние данного начального промежутка времени на все время выполнения программы.
Векторные операции, использующие различные ФУ и регистры, могут выполняться параллельно.
Архитектура CRAY Y-MP C90 позволяет использовать регистр результатов векторной операции в качестве входного регистра для последующей векторной операции, т.е. выход сразу подается на вход. Это называется зацеплением векторных операций. Вообще говоря, глубина зацепления может быть любой, например, чтение векторов, выполнение операции сложения, выполнение операции умножения, запись векторов.
Multiprogramming - выполнение нескольких независимых программ на различных процессорах.
Multitasking - выполнение одной программы на нескольких процессорах.
Пиковая производительность компьютера CRAY Y-MP C90 вычисляется так: функциональные устройства выдают два результата каждый такт (сдвоенные конвейеры), зацепление сложения и умножения дает четыре операции за такт, что составляет почти 1 Гфлопс (109 опер/с). Если работают все 16 процессоров, то 16 Гфлопс.
Содержание курса | Далее: Лекция 3. Легко ли достичь пиковой производительности компьютера CRAY C90? |
© Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ