Причины появления многопроцессорных систем
Топологии многопроцессорных систем
Доступ к памяти в многопроцессорных системах
Причины появления многопроцессорных систем
В настоящее время предельная производительность системы определяется
мощностью ЦП и подсистемы памяти (контроллера памяти, который может быть
встроен как в набор микросхем, так и непосредственно в процессор). Поэтому
наиболее эффективное масштабирование по производительности обеспечивают
именно многопроцессорные системы. Хотя кластерные решения, объединяющие
несколько вычислительных узлов, как правило, при пересчете на один ЦП
оказываются дешевле, но из-за накладных расходов на организацию их
взаимодействия удельная производительность многопроцессорных машин все же
заметно выше. Кроме того, использование многопроцессорных серверов
позволяет минимизировать дублирование вспомогательных подсистем
вычислительной машины - контроллеров ввода-вывода, дисковых массивов и т.
п.
Нельзя не отметить и конструктивные преимущества многопроцессорных
серверов: они обеспечивают максимальную удельную производительность при
пересчете не только на один ЦП, но и на единицу объема, что в серверных
платформах весьма важно.
Благодаря указанным преимуществам многопроцессорные платформы
пользуются популярностью практически во всех сегментах серверного рынка.
Двух- и четырехпроцессорные серверы младшего и среднего уровня имеют
хорошее соотношение цена/производительность, и с точки зрения организации
охлаждения они ненамного сложнее однопроцессорных. Решения с восемью и
более процессорами имеют более сложную архитектуру, но и позволяют
добиться максимальной производительности и надежности.
Топологии многопроцессорных систем
Типы многопроцессорных систем различаются прежде всего подходом к
организации системной шины, связывающей, как и в однопроцессорных
системах, ЦП и НМС. В настоящее время наиболее распространены три варианта
архитектуры многопроцессорных систем:
общая шина (shared bus);
звездообразная топология (star topology), или топология
"точка-точка" (point-to-point topology);
коммутируемая топология (switch-based topology).
Наиболее
простая - топология общей шины. Как следует из названия, все ЦП в системе
подключаются последовательно к общей системной шине и соответственно
вынуждены делить между собой ее полосу пропускания. Этим определяются как
преимущества, так и недостатки этой архитектуры. Одновременно с экономией
на количестве проводников и общей стоимости разработки возникает проблема
недостатка пропускной способности системной шины, который столь
существенен, что при большом количестве ЦП (начиная с восьми) такая
топология просто неприменима, так как задержки при обращении к памяти
слишком велики из-за очереди на обращение к шине. Компенсацией
недостаточной пропускной способности системной шины может служить
добавление значительных локальных объемов кэш-памяти к каждому ЦП. Общая
шина наиболее оправданна в системах с двумя процессорами. В
четырехпроцессорных системах объемы кэш-памяти каждого ЦП приходится
увеличивать в 2-4 раза, что приводит к существенному росту стоимости
конечной системы.
В звездообразной топологии каждый ЦП располагает выделенной системной
шиной, а поэтому отсутствует необходимость в разделении доступа. Системные
шины всех ЦП подключаются непосредственно к набору микросхем. Хотя такая
архитектура и позволяет минимизировать зависимость производительности ЦП
от пропускной способности системной шины, но налагает очень высокие
требования на НМС и системную плату в целом, усложняя их проектирование и
увеличивая стоимость производства. Тем не менее и этот подход не позволяет
подключить большое количество ЦП - звездообразная топология применяется,
как правило, в системах с двумя или четырьмя процессорами.
Довольно интересный пример звездообразной топологии -
четырехпроцессорные серверы Fujitsu PRIME-POWER 450. В их основу положен
принцип скоростного универсального коммутатора, работающего на тактовой
частоте 220 МГц, который и выполняет все основные функции набора
микросхем. К нему по выделенным 128-бит 220-МГц шинам (ПО МГц с
применением технологии DDR) подключаются ЦП SPARC64 V с тактовой частотой
2 ГГц и выше. Далее к нему же подключаются два контроллера оперативной
памяти (DDR SDRAM ПО МГц), каждый из которых располагает своим 128-бит
каналом данных, и два моста шины PCI - по 110-МГц 64-бит каналам. Эта
схема обеспечивает скоростной обмен данными между всеми узлами, но
добавление, например, еще четырех ЦП и двух контроллеров оперативной
памяти потребует серьезной перепроектировки коммутатора.
У систем с коммутируемой топологией нет проблем масштабируемости,
свойственных вышеперечисленным шинным архитектурам. В этой архитектуре ЦП
подключаются не к НМС (который может отсутствовать), а к коммутатору,
соединенному с другими коммутаторами. Механизм подключения может быть как
простым (широкая общая шина), так и иерархическим (древовидная
иерархическая структура). На основании такой топологии можно проектировать
системы с большим количеством ЦП (до 1024).
Рассмотрим коммутируемую топологию на примере 16-процессорных серверов
HP AlphaServer GS160. В основе архитектуры лежит так называемый Quad
Building Block (QBB), содержащий четыре ЦП Alpha 21264B (EV68C) с тактовой
частотой до 1,22 ГГц, до 16 Мбайт B-cache на каждый ЦП, четыре модуля
регистровой SDRAM ECC общим объемом до 32 Гбайт, два модуля стабилизатора
питания, два 64-бит 33-МГц РСI-интерфейса, собственно коммутатор и
интерфейс GlobalPort для связи с другими коммутаторами.
Четыре таких QBB объединяют в двухуровневую древовидную структуру через
главный коммутатор, находящийся на отдельном модуле и обеспечивающий
пропускную способность между двумя отдельно взятыми QBB по 1,75 Гбайт/с в
каждом направлении.
Особняком стоят системы, в которых контроллер оперативной памяти, а
часто и контроллеры периферийных шин интегрированы в ядро ЦП, а поэтому
необходимость в системной шине отпадает. Такие системы строятся по
NUMA-архитектуре, о которой пойдет речь дальше. Их можно рассматривать как
представителей коммутируемой топологии.
Доступ к памяти в многопроцессорных системах
Независимо от количества ЦП в системе и топологии системной шины, им
придется разделять доступ к общему пространству оперативной памяти, за
исключением случаев, когда используется сегментирование аппаратных
ресурсов некоторого сервера или суперкомпьютера для запуска нескольких
копий ОС. В настоящее время существуют три типа доступа к оперативной
памяти в многопроцессорных системах:
классический SMP (Symmetrical Multi-Processing, симметричная
многопроцессорность);
раcпределенный SMP (distributed SMP);
NUMA (Non-Uniform Memory Access, неоднородный доступ к памяти).
Первоначальная модель симметричной многопроцессорности, теперь
называемая классической, предусматривала, что все ЦП в системе имеют
доступ к физически единому пространству оперативной памяти, обслуживаемому
специальным контроллером. Все ЦП равнозначны по уровню прав доступа,
какие-либо механизмы приоритетности отсутствуют, системная логика
обрабатывает запросы в порядке поступления, и только на нее возложены все
функции по работе с оперативной памятью. Соответственно задержки при
доступе к памяти одинаковы для всех ЦП при обращении к любой области
памяти. Это наиболее простая модель организации доступа к памяти в
многопроцессорных системах, но не самая производительная и не позволяющая
подключать большое количество ЦП из-за объективных проектировочных
ограничений.
Принцип распределенной многопроцессорности предполагает формирование из
имеющихся в системе ЦП логических групп, каждая из которых располагает
своим (локальным) объемом оперативной памяти. Естественно, что для
обеспечения целостности и нормального функционирования всего пространства
оперативной памяти эти логические группы должны быть как-то связаны между
собой. Задержки при доступе к памяти будут соответственно различны в
зависимости от того, происходит обращение к локальной или удаленной
области памяти.
Следует понимать, что, несмотря на некоторое сходство, распределенная
SMP - не частный случай коммутируемой архитектуры: в последней могут быть
реализованы как SMP, так и NUMA. Например, в вычислительном комплексе
Intel Profusion восемь ЦП Intel Xeon разделены на две группы по четыре ЦП
и связаны коммутатором, к которому подключается НМС с контроллером
оперативной памяти. Таким образом, при обращении к памяти все процессоры
равноправны и Intel Profusion представляет собой классическую SMP-систему.
А вот описанный выше сервер HP AlphaServer GS160 спроектирован по принципу
распределенной многопроцессорности.
Принцип неоднородного доступа (NUMA) состоит в явном разделении на
локальную и удаленную память для каждого ЦП. Так как главный недостаток
коммутируемой архитектуры - относительно низкая скорость обмена
информацией между коммутаторами, возникла идея интегрировать контроллер
памяти в ядро ЦП. Модули оперативной памяти в этом случае подключаются
напрямую к ЦП (без НМС). В многопроцессорной системе такому ЦП придется
запрашивать информацию из оперативной памяти других ЦП и отвечать на их
запросы. Модель памяти называется неоднородной, потому что скорость
доставки данных из локальной оперативной памяти ЦП будет значительно выше,
чем из оперативной памяти, подключенной к другому ЦП, причем разница будет
все более ощутимой с увеличением количества ЦП в системе.
Модели с распределенной многопроцессорностью и неоднородным доступом
позволяют создавать более масштабируемые решения, чем классическая SMP.
Однако они предъявляют некоторые специфические требования к ОС, которая
должна оптимизировать загрузку процессоров таким образом, чтобы процесс,
выполняемый на одном ЦП, как можно реже использовал информацию,
находящуюся в локальной оперативной памяти другого ЦП.
|