Архитектура многопроцессорных вычислительных систем
В процессе развития суперкомпьютерных технологий идею повышения производительности вычислительной системы за счет увеличения числа процессоров использовали неоднократно. Если не углубляться в исторический экскурс и обсуждение всех этих попыток, то можно кратко описать развитие событий.
Экспериментальные разработки по созданию многопроцессорных вычислительных систем начались в 70-х годах 20 века. Одной из первых таких систем стала разработанная в университете Иллинойса МОС ILLIAC IV, которая включала 64 (в проекте до 256) процессорных элементов (ПЭ), работающих по единой программе, которая применяется к содержимому собственной оперативной памяти каждого ПЭ.
Обмен данными между процессорами осуществлялся через специальную матрицу коммуникационных каналов. Указанная особенность коммуникационной системы дала название''Матричные суперкомпьютеры''соответствующему классу МОС.
Отметим, что более широкий класс МОС с распределенной памятью и с произвольной коммуникационной системой получил в дальнейшем название "Многопроцессорные системы с массовым параллелизмом", или МОС с MPP-архитектурой (MPP - Massively Parallel Processing).
При этом, как правило, каждый из ПЭ MPP системы является универсальным процессором, действующим по своей собственной программе (в отличие от общей для всех ПЭ матричной МВД).
Первые матричные МОС выпускались буквально поштучно, поэтому их стоимость была фантастически высокой. Серийные же образцы подобных систем, такие как ICL DAP, включавшие до 8192 ПЭ, появились значительно позже, однако не получили широкого распространения, учитывая сложность программирования МОС с одним потоком управления (с одной программой, общей для всех ПЭ).
Первые промышленные образцы мультипроцессорных систем появились на базе векторно-конвейерных компьютеров в середине 80-х годов.
Наиболее распространенными МОС такого типа были суперкомпьютеры фирмы Cray. Однако такие системы были чрезвычайно дорогими и производились небольшими сериями. Как правило, в подобных компьютерах объединялось от 2 до 16 процессоров, которые имели равноправный (симметричный) доступ к общей оперативной памяти. В связи с этим они получили название симметричные мультипроцессорные системы (Symmetric Multi-Processing - SMP).
Как альтернатива таким дорогим мультипроцессорным системам на базе векторно-конвейерных процессоров была предложена идея строить эквивалентные по мощности многопроцессорные системы из большого количества дешевых микропроцессоров выпускаемых серийно.
Однако очень скоро оказалось, что SMP архитектура имеет достаточно ограниченные возможности по наращиванию количества процессоров в системе из-за резкого увеличения числа конфликтов при обращении к общей шине памяти.
В связи с этим оправданной представлялась идея обеспечить каждый процессор собственной оперативной памятью, превращая компьютер в объединение независимых вычислительных узлов.
Такой подход значительно увеличил меру масштабируемости многопроцессорных систем, но в свою очередь потребовал разработки специального способа обмена данными между вычислительными узлами, реализуемый обычно в виде механизма передачи сообщений (Message Passing).
Компьютеры с такой архитектурой является наиболее яркими представителями MPP систем. В настоящее время эти два направления (или какие их комбинации) являются доминирующими в развитии суперкомпьютерных технологий.
Нечто среднее между SMPи MPP представляют NUMA-архитектуры (Non Uniform Memory Access), в которых память физически разделена, но логически общедоступна. При этом время доступа к различным блокам памяти становится неодинаковым. В одной из первых систем этого типа Cray T3D время доступа к памяти другого процессора был в 6 раз больше, чем к своей собственной.
В настоящее время развитие суперкомпьютерных технологий идет по четырем основным направлениям:
- векторно-конвейерные суперкомпьютеры;
- SMP системы;
- MPP системы;
- кластерные системы.
Рассмотрим основные особенности перечисленных архитектур.
Векторно-конвейерные суперкомпьютеры
Первый векторно-конвейерный компьютер Cray-1 появился в 1976 году. Архитектура его оказалась настолько удачной, что он положил начало целому семейству компьютеров.
Название этому семейству компьютеров дали два принципа, заложенные в архитектуру процессоров:
- конвейерная организация обработки потока команд,
- введение в систему команд набора векторных операций, которые позволяют оперировать с целыми массивами данных.
Длина векторов, обрабатываемых одновременно, в современных векторных компьютерах составляет, как правило, 128 или 256 элементов. Очевидно, что векторные процессоры должны иметь намного более сложную структуру и по сути дела содержать множество арифметических устройств.
Основное назначение векторных операций состоит в распараллеливании выполнения операторов цикла, в которых в основном и сосредоточена большая часть вычислительной работы. Для этого циклы подвергаются процедуре векторизации с тем, чтобы они могли реализовываться с использованием векторных команд.
Как правило, это выполняется автоматически компиляторами при изготовлении ими выполняемого кода программы. Поэтому векторно-конвейерные компьютеры не требовали какой-то специальной технологии программирования, что и оказалось решающим фактором их успеха на компьютерном рынке. Однако, требовалось соблюдение некоторых правил при написании циклов с тем, чтобы компилятор мог их эффективно векторизировать.
Исторически это были первые компьютеры, к которым в полной мере можно было применить понятие суперкомпьютер. Как правило, несколько векторно-конвейерных процессоров (2-16) работают в режиме с общей памятью (SMP), образуя вычислительный узел, а несколько таких узлов объединяются с помощью коммутаторов, образуя или NUMA, или MPP систему.
Типичными представителями такой архитектуры является компьютеры CRAY J90/t90, CRAY Sv1, NEC Sx-4/sx-5.
Уровень развития микроэлектронных технологий не позволяет в настоящее время производить однокристальные векторные процессоры, поэтому эти системы довольно громоздки и чрезвычайно дороги.
В связи с этим, начиная с середины 90-х годов, когда появились достаточно мощные суперскалярных микропроцессоры, интерес к этому направлению был в значительной степени ослаблен. Суперкомпьютеры с векторно-конвейерной архитектурой стали проигрывать системам с массовым параллелизмом.
Однако в марте 2002 г. корпорация NEC представила систему Earth Simulator с 5120 векторно-конвейерными процессорами, которая в 5 раз превысила производительность предыдущего обладателя рекорда - MPP системы ASCI White с 8192 суперскалярными микропроцессорами. Это, конечно же, заставило многих по-новому взглянуть на перспективы векторно-конвейерных систем.
Симметричные мультипроцессорные системы (SMP)
Характерной чертой многопроцессорных систем SMP архитектуры является то, что все процессоры имеют прямой и равноправный доступ к любой точки общей памяти.
Первые системы SMP состояли из нескольких однородных процессоров и массива общей памяти, к которой процессоры подключались через общую системную шину. Однако очень скоро оказалось, что такая архитектура непригодна для создания масштабных систем.
Первая возникшая проблема – большое количество конфликтов при обращении к общей шине. Остроту этой проблемы удалось частично снять разделением памяти на блоки, подключение к которым с помощью коммутаторов позволило распараллелить обращения от различных процессоров. Однако и в таком подходе неприемлемо большими казались накладные расходы для систем с более чем с 32-мя процессорами.
Современные системы SMP архитектуры состоят, как правило, из нескольких серийно выпускаемых однородных микропроцессоров и массива общей памяти, подключение к которой выполняется либо с помощью общей шины, либо с помощью коммутатора.
Наличие общей памяти значительно упрощает организацию взаимодействия процессоров между собой и программирование, поскольку параллельная программа работает в едином адресном пространстве.
Однако за этой простотой скрываются большие проблемы, присущие системам этого типа. Все они так или иначе связаны с оперативной памятью. Дело в том, что сейчас даже в однопроцессорных системах самым узким местом является оперативная память, скорость работы которой значительно отстала от скорости работы процессора.
Чтобы сгладить этот разрыв, современные процессоры обеспечиваются скоростной буферной памятью (кэш-памятью), скорость работы которой значительно выше, чем скорость работы основной памяти.
Очевидно, что при проектировании многопроцессорных систем эти проблемы еще более обостряются. Кроме хорошо известной проблемы конфликтов при обращении к общей шине памяти возникла и новая проблема, связанная с иерархической структурой организации памяти современных компьютеров.
В многопроцессорных системах, построенных на базе микропроцессоров со встроенной кэш-памятью, нарушается принцип равноправного доступа к любой точки памяти. Данные, находящиеся в кэш-памяти некоторого процессора, недоступны для других процессоров. Это означает, что после каждой модификации копии некоторой переменной, находящейся в кэш-памяти какого-либо процессора, необходимо выполнять синхронную модификацию этой переменной, расположенной в памяти.
С большим или меньшим успехом эти проблемы решаются в рамках общепринятой в настоящее время архитектуры ccNUMA (cache coherent Non Uniform Memory Access). В этой архитектуре память физически распределена, но логически общедоступна.
Это, с одной стороны, позволяет работать с единым адресным пространством, а с другой, увеличивает масштабируемость систем. Когерентность кэш-памяти поддерживается на аппаратном уровне, что, однако, не освобождает от накладных расходов на ее поддержку.
В отличие от классических систем SMP память становится трехуровневой:
- кэш-память процессора;
- локальная оперативная память;
- удаленная оперативная память.
Время обращения к различным уровням может отличаться на порядок, что сильно усложняет написание эффективных программ для таких систем. Перечисленные обстоятельства ограничивают возможности по наращиванию производительности ccNUMA систем путем простого увеличения числа процессоров.
Неприятным свойством SMP систем является то, что их стоимость растет быстрее, чем производительность при увеличении количества процессоров в системе. Кроме того, из-за задержек при обращении к общей памяти неизбежно взаимное торможение при параллельном выполнении даже независимых программ.
Системы с массовым паралеллизмом (МРР)
Проблемы, присущие многопроцессорным системам с общей памятью, простым и естественным образом устраняются в системах с массовым параллелизмом. Компьютеры этого типа являются многопроцессорными системами с распределенной памятью, в которых с помощью некой коммуникационной среды объединяются однородные вычислительные узлы.
Каждый из узлов состоит из одного или нескольких процессоров, собственной оперативной памяти, коммуникационного оборудования, подсистемы ввода/вывода, то есть имеет все необходимое для независимого функционирования.
При этом на каждом узле может функционировать или полноценная операционная система (как в системе RS/6000 SP2) или урезанный вариант, поддерживающий только базовые функции ядра, а полноценная ОС работает на специальном руководящем компьютере (как в системах Cray T3E, nCUBE2 ).
Процессоры в таких системах имеют прямой доступ только к своей локальной памяти. Доступ к памяти других узлов реализуется обычно с помощью механизма передачи сообщений. Такая архитектура вычислительной системы устраняет одновременно как проблему конфликтов при обращении к памяти, так и проблему когерентности кэш-памяти.
Это дает возможность практически неограниченного наращивания количества процессоров в системе, увеличивая тем самым ее производительность. Успешно функционируют MPP с сотнями и тысячами процессоров (ASCI White - 8192, Blue Mountain - 6144).
Важным свойством MPP систем является их высокая степень масштабируемости. Зависимости от вычислительных потребностей для достижения требуемой производительности нужно просто собрать систему с нужным количеством узлов.
На практике все, конечно, гораздо сложнее. Устранение одних проблем, как это обычно бывает, порождает другие. Для MPP систем на первый план выходит проблема эффективности коммуникационной среды.
Различные производители MPP систем использовали различные топологии. В компьютерах Intel Paragon процессоры образовывали прямоугольную двумерную сетку. Для этого в каждом узле достаточно четырех коммуникационных каналов.
В компьютерах Cray T3D/T3E использовалась топология трехмерного тора. Соответственно, в узлах этого компьютера было шесть коммуникационных каналов. Фирма nCUBE использовала в своих компьютерах топологию n-мерного гиперкуба.
Каждая из рассмотренных топологий имеет свои преимущества и недостатки.
Заметим, что при обмене данными между процессорами, которые не являются близкими соседями, происходит трансляция данных через промежуточные узлы. Очевидно, что в узлах должны быть предусмотрены какие-то аппаратные средства, которые освобождали бы центральный процессор от участия в трансляции данных.
В последнее время для соединения вычислительных узлов чаще используется иерархическая система высокоскоростных коммутаторов, как это впервые было реализовано в компьютерах IBM SP2. Такая топология дает возможность прямого обмена данными между любыми узлами, без участия в этом промежуточных узлов.
Системы с распределенной памятью идеально подходят для пареллельного выполнения независимых программ, поскольку при этом каждая программа выполняется на своем узле и никоим образом не влияет на выполнение других программ. Однако при разработке параллельных программ приходится учитывать более сложную, чем в SMP системах, организацией памяти.
Оперативная память в MPP системах имеет 3-х уровневую структуру:
- кэш-память процессоров;
- локальная оперативная память;
- оперативная память других узлов.
При этом отсутствует возможность прямого доступа к данным, расположенным в других узлах. Для их использования эти данные должны быть предварительно переданы в тот узел, который в данный момент в них нуждается. Это значительно усложняет программирование.
Кроме того, обмен данными между узлами выполняется значительно медленнее, чем обработка данных в локальной оперативной памяти узлов. Поэтому написание эффективных параллельных программ для таких компьютеров является более сложной задачей, чем для SMP систем.
Кластерные системы
Кластерные технологии стали логическим продолжением развития идей, заложенных в архитектуре MPP систем.
Если процессорный модуль в MPP системе является законченной вычислительной системой, то следующий шаг напрашивается сам собой: почему бы в качестве вычислительных узлов не использовать обычные компьютеры, которые выпускаются серийно.
Развитие коммуникационных технологий, а именно, появление высокоскоростного сетевого оборудования и специального программного обеспечения, такого как система MPI, реализующая механизм передачи сообщений над стандартными сетевыми протоколами, сделали кластерные технологии общедоступными.
Сегодня не составляет большого труда создать небольшую кластерную систему, объединив вычислительные мощности компьютеров отдельной лаборатории или учебного класса. Привлекательной чертой кластерных технологий является то, что они позволяют для достижения необходимой производительности объединять в единые вычислительные системы компьютеры разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами.
Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно снижает стоимость вычислительной системы.
В частности, одним из первых был реализован проект COCOA, в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка $ 100000 была создана система с производительностью, эквивалентной 48-процессорному Cray T3d стоимостью несколько миллионов долларов США.
Конечно, о полной эквивалентности этих систем говорить не приходится. Как указывалось в предыдущем разделе, производительность системы с распределенной памятью очень сильно зависит от производительности коммуникационной среды.
Коммуникационную среду можно достаточно полно охарактеризовать двумя параметрами: латентностью – время задержки при отправке сообщения и пропускной способностью – скорость передачи информации. Так вот для компьютера Cray T3D эти параметры составляют соответственно 1 мкс и 480 мб/с, а для кластера, в котором в качестве коммуникационной среды использована сеть Fast Ethernet, 100 мкс и 10 мб/с.
Это частично объясняет очень высокую стоимость суперкомпьютера. При таких параметрах, как у рассматриваемого кластера, найдутся не так много задач, которые можно эффективно решать на довольно большом количестве процессоров.
Если говорить кратко, то кластер - это связанный набор полноценных компьютеров, который используется как единый вычислительный ресурс. Преимущества кластерной системы перед набором независимых компьютеров очевидны.
Во-первых, разработано множество диспетчерских систем пакетной обработки заданий, позволяющих отправить задание на обработку кластеру в целом, а не каком-то отдельном компьютере. Эти диспетчерские системы автоматически распределяют задания по свободным вычислительными узлами или буферизирует их при отсутствии таковых, что позволяет обеспечить более равномерную и эффективную загрузку компьютеров.
Во-вторых, появляется возможность совместного использования вычислительных ресурсов нескольких компьютеров для решения одной задачи. Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двух- или четырехпроцессорные SMP-серверы.
При этом не накладывается никаких ограничений на состав и архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. Чаще всего используются стандартные ОС: Linux, FreeBSD, Solaris, Tru64 Unix, Windows.
В тех случаях, когда узлы кластера неоднородны, говорят о гетерогенных кластерах.
При создании кластера можно выделить два подхода. Первый подход применяется при создании небольшого кластерной системы. В кластер объединяются полнофункциональные компьютеры, которые также продолжают работать как самостоятельная единица, например, компьютеры учебного класса или рабочие станции лаборатории.
Второй подход применяется в тех случаях, когда целенаправленно создается мощный вычислительный ресурс. Тогда системные блоки компьютеров компактно размещаются в специальных стойках, а для управления системой и для запуска задач выделяется один или несколько полнофункциональных компьютеров, так называемых хост-компьютеров.
В этом случае нет необходимости обеспечивать компьютеры вычислительных узлов графическими картами, мониторами, дисковыми накопителями и другим периферийным оборудованием, что значительно снижает стоимость системы.


