Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс.DOC
Скачиваний:
25
Добавлен:
16.04.2019
Размер:
1.48 Mб
Скачать

9.2. Архитектуры с распределенной областью памяти

Ко второму важному классу параллельных машин относятся многопроцессорные системы с распределенной областью памяти (МРА). МРА используют законченные компьютеры, включающие микропроцессор, память и подсистему ввода/вывода, как узлы для построения системы, объединенные коммуникационной средой, обеспечивающую взаимодействие процессоров посредством простых операций ввода-вывода. Структура высокого уровня для МРА практически такая же, как и для MPA-машин, т. е. машин с разделяемой памятью, показанных на рис. 9.6. Первое отличие состоит в том, что коммуникации интегрированы в уровень ввода/вывода, а не в систему доступа к памяти. Этот стиль дизайна имеет много общего с сетями из рабочих станций или кластерными системами, за исключением того, что в МРА пакетирование узлов обычно более плотное, нет монитора и клавиатуры на каждом узле, а производительность сети намного выше стандартной. Интеграция между процессором и сетью имеет склонность быть более тесной, чем традиционные структуры ввода/вывода, которые поддерживают соединения с оборудованием, которое более медленное, чем процессор. Начиная с посылки сообщения МРА, есть фундаментальное взаимодействие «Процессор — Процессор».

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

Рис. 9.8. Принцип взаимодействия процессов в системах с распределенной областью памяти

Наиболее общие операции взаимодействия на пользовательском уровне есть варианты посылки(Send) и получения(Receive) сообщения.Совместный механизм Send и Receive вызванный передачей данных из одного процесса в другой, показан на рис 9.8.

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

С этой целью в большинстве систем с распределенной памятью сообщение специфицируется операцией Send, которая добавляет к сообщению специальный признак (tag), а операция Receive в этом случае выполняет проверку сравнения данного признака.

Сочетание посылки и согласованного приема сообщения (на основе совпадения признаков) выполняет логическую связку — синхронизацию события, т. е. копирования из памяти в память. Имеется несколько возможных вариантов синхронизации этих событий в зависимости от того, завершиться ли Send к моменту, когда Receive будет выполнен или нет (т. е. будет ли снова доступен буфер посылки для использования до момента получения подтверждения приема). Похожим образом Е может, в принципе, подождать до момента согласованной посылки (Send) или использовать "почтовый ящик" для получения сообщения. Каждый из этих вариантов имеет несколько различную интерпретацию и различные требования к реализации.

Механизм посылки сообщений долго использовался как средство коммуникации и синхронизации совокупности арбитрирующих взаимодействующих последовательных процессов, даже на одном процессоре. В качестве примеров можно привести языки программирования типа CSP и Occam, наиболее общие функции операционных систем типа Sockets.

Первые машины с распределенной областью памяти обеспечивали аппаратную поддержку примитивов (команд), которые очень напоминали простую абстракцию взаимодействия Send/ Receive на пользовательском уровне с некоторыми дополнительными ограничениями. Каждый узел системы соединялся с определенным (фиксированным) числом соседей по регулярной схеме (образцу) на основе связи «точка-точка» поведение которой, в свою очередь, описывалось простым FIFO. Такой тип конструкции для минимального 3D-куба показан на рис. 9.9, где каждый узел имеет связи с соседями по трем направлениям через буфер FIFO.

В ранних системах обычно использовалась структура гиперкуба (на 2 узлов), в которой каждый узел соединялся с n другими узлами, бинарные адреса которых отличались на один бит.Другие машины имели решетчатую структуру, где узлы соединялись с соседями по двум или трем измерениям. Такая технология для более ранних машин была важна, потому что только соседние процессоры могли быть использованы в качестве адресата в операциях приема/посылки. Процесс-отправитель посылал сообщение, а процесс-получатель получал сообщение через канал-link.FIFO было маленьким, так что отправитель не успевал закончить формирование сообщения до момента, когда получа тель начинал его читать, поэтому посылка блокировалась до момента начала приема (на современном языке это называется синхронной передачей сообщений, так как два собы тия совпадают по времени).Детали передачи данных были скрыты от программиста в специальной библиотеке, формирующей слой программного обеспечения между запросами на прием и передачу и реальным аппаратным обеспечением.

Такое внимание к сетевой топологии было значительно ослаблено в связи с появлением гораздо более универсальных сетей, которые поплайнизировали передачу сообщения через каждый коммутатор, формирующий внутреннюю сеть. В наиболее современных машинах с распределенной памятью нарастающая задержка, вносимая каждым этапом передачи (скачком), достаточно мала. Это существенно упрощает программную модель. Обычно процессор рассматривается как простой формирователь линейной последовательности с одинаковыми затратами на коммуникацию. другими словами, коммуникационная абстракция отражает главным образом организационную структуру, показанную на рис. 9.6. Один из важных примеров такой машины является IBM SP-2 (рис. 9.10).

Это масштабируемый параллельный компьютер, состоящий из узлов на базе рабочих станций RS6000 масштабируемой сети и сетевым интерфейсом NI (пе iп сагс — 1С), содержащим специализированный процессор (i860). NIC соединен с MicroChannel I/O и содержит драйнеры сетевого линка, память (О для буферирова ния сообщений. для реализации ОМА модуль содержит процессор i860, управляющий перемещением данных между памятью и сетью. Сеть представляет собой каскадное 8 х 8 коммутируемое перекрестное соединение (см. рис. 9.3, а). Скорость передачи сообщений по линкам составляет 40 Мб/с в каждом направлении.

Рис. 9.9. Типовая структура первых систем

с распределенной областью памяти

Рис. 9.10. Параллельный суперкомпьютер IBM SР-2

другим примером является параллельный компьютер Intel Paragon, показанный на рис. 9.11.

Intel Paragon иллюстрирует наиболее плотное аппаратное пакетирование в узлах. Каждая плата (узел) представляет собой SMP с двумя или более процессорами (i860) и кристалл сетевого интерфейса (NI) связанный с шиной памяти. Один из процессоров специализируется на обслуживании сети. Узел имеет механизм DMA для передачи блоков данных через сеть высокого уровня. Сеть представляет собой ЗD-куб, аналогичный структуре сети компьютера CRAY ТЗЕ. Линки имеют пропускную способностью 175 Мб/с в каждом направлении.

МРА и разделяемое адресное пространство являются двумя очевидно различными программными Моделями, каждая из которых обеспечивает ясную парадигму для разде- ления коммуникации и синхронизации. Тем не менее лежащие в основе данных машин базовые структуры постепенно объединяются в рамках общей организации, представляемой набором законченных компьютеров, усиленных специальным контроллером, со-

единяющим каждый узел с расширяемой коммуникационной сетью. Подробнее обоб

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

Рис. 9.11. Параллельный суперкомпьютер Intel Paragon