Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Танненбаум Е. Архітектура компютера [pdf]

.pdf
Скачиваний:
114
Добавлен:
02.05.2014
Размер:
5.59 Mб
Скачать

Мультикомпьютеры с передачей сообщений

63

она сделает вызов позднее, когда у нее будет время. В результате отправитель в обще не блокируется. Недостаток этого метода состоит в том, что когда отправ тель продолжает работу после совершения операции send, он не может снова и пользовать буфер сообщений, так как есть вероятность, что сообщение еще н отправлено. Отправитель каким-то образом должен определять, когда он мож снова использовать буфер. Например, можно опрашивать систему или соверша прерывание, когда буфер имеется в наличии. В обоих случаях программное обе печение очень сложное.

В следующих двух разделах мы рассмотрим две популярные системы с перед чей сообщений, которые применяются во многих мультикомпьютерах: PVM и MP Существуют и другие системы, но эти две наиболее распространенные.

PVM — виртуальная машина параллельного действия

PVM (Parallel Virtual Machine — виртуальная машина параллельного действия)

это система с передачей сообщений, изначально разработанная для машин CO с операционной системой UNIX [45, 142]. Позднее она стала применяться в др гих машинах, в том числе в системах МРР. Это самодостаточная система с упра лением процессами и системой ввода-вывода.

PVM состоит из двух частей: библиотеки, вызываемой пользователем, и «ст рожевого» процесса, который работает постоянно на каждой машине в мульт компьютере. Когда PVM начинает работу, она определяет, какие машины должн быть частью ее виртуального мультикомпьютера. Для этого она читает конфиг рационный файл. «Сторожевой» процесс запускается на каждой из этих маши Машины можно добавлять и убирать, вводя команды на консоли PVM.

Можно запустить п параллельных процессов с помощью команды spawn -count n prog

Каждый процесс запустит prog. PVM решает, куда поместить процессы, н пользователь может сам подменять их с помощью аргументов команды spawn. Пр цессы могут запускаться из работающего процесса — для этого нужно вызвать пр цедуру Pvm_spawn. Процессы могут быть организованы в группы, причем сост групп может меняться во время выполнения программы.

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

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

6 3 4 Глава 8. Архитектуры компьютеров параллельного действия

определенный промежуток времени, и если подходящего сообщения за эт не пришло, он разблокируется. Процедура нужна для того, чтобы не заблок процесс навсегда. Третий вариант — процедура pvmjirecv, которая сразу вращает значение — это может быть либо сообщение, либо указание на отс сообщений. Вызов можно повторять, чтобы опрашивать входящие сообще

Помимо всех этих примитивов PVM поддерживает широковещание (п раpvm_bcast) и мультивещание (процедураpvm_mcasi). Первая процедура ляет сообщение всем процессам в группе, вторая посылает сообщение тол которым процессам, входящим в определенный список.

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

MPI — интерфейс с передачей сообщений

Следующий пакет для программирования мультикомпьютеров — MPI (M Passing Interface — интерфейс с передачей сообщений). MPI гораздо сл чем PVM. Он содержит намного больше библиотечных вызовов и намного параметров накаждый вызов. Первая версия MPI, которая сейчас называется была дополнена второй версией, MPI-2, в 1997 году. Ниже мы в двух сло скажем о MPI-1, а затем посмотрим, что нового появилось в MPI-2. Бо дробную информацию об MPI см. в книгах [52, 134].

MPI-1, в отличие от PVM, никак не связана с созданием процессов и упр ем процессами. Создавать процессы должен сам пользователь с помощью ных системных вызовов. После создания процессы организуются в группы рые уже не изменяются. Именно с этими группами и работает MPI.

В основе MPI лежат 4 понятия: коммуникаторы, типы передаваемых операции коммуникации и виртуальные топологии. Коммуникатор — это процессов плюс контекст. Контекст — это метка, которая идентифицируетч (например, фазу выполнения). В процессе отправки и получения сообщен текст может использоваться для того, чтобы несвязанные сообщения не друг другу.

Сообщения могут быть разныхтипов: символьные, целочисленные (short и long integers), с обычной и удвоенной точностью, с плавающей точко Можно образовать новые типы сообщений из уже существующих.

MPI поддерживает множество операций коммуникации. Ниже приведе

Мультикомпьютеры с передачей сообщений

6

сообщение только с данным тегом. Последнее поле показывает, к какой груп процессов относится целевой процесс (поле destination — это просто индекс спи ка процессов из определенной группы). Соответствующий вызов для получен сообщения таков:

MPI_Recv(&buffer, count, datajtype, source, tag. communicator, Sstatus)

В нем сообщается, что получатель ищет сообщение определенного типа определенного источника с определенным тегом.

MPI поддерживает 4 основных типа коммуникации. Первый тип синхронны В нем отправитель не может начать передачу данных, пока получатель не вызов процедуру MPI_Recv. Второй тип — коммуникация с использованием буфера. Огр ничение для первого типа здесь недействительно. Третий тип стандартный.

зависит от реализации и может быть либо синхронным, либо с буфером. Четве тый тип сходен с первым. Здесь отправитель требует, чтобы получатель был д ступен, но без проверки. Каждый из этих примитивов бывает двух видов: блокир ющим и неблокирующим, что в сумме дает 8 примитивов. Получение может бы только в двух вариантах: блокирующим и неблокирующим.

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

Четвертое основное понятие в MPI — виртуальная топология, когда процес могут быть организованы в дерево, кольцо, решетку, тор и т. д. Такая организац процессов обеспечивает способ наименования каналов связи и облегчает комм никацию.

В MPI-2 были добавлены динамические процессы, доступ к удаленной памя неблокирующая коллективная коммуникация, расширяемая поддержка процесс ввода-вывода, обработка в режиме реального времени и многие другие особеннос В научном сообществе идет война между лагерями MPI и PVM. Те, кто поддерж вают PVM, утверждают, что эту систему проще изучать и легче использовать. Те, к на стороне MPI, утверждают, что эта система выполняет больше функций и, кро того, она стандартизована, что подтверждается официальным документом.

Совместно используемая память на прикладном уровне

Из наших примеров видно, что мультикомпьютеры можно расширить до гораз

6 3 6 Глава 8. Архитектуры компьютеров параллельного действия

Однако мультикомпьютеры не имеют совместно используемой памят хитектурном уровне. Это и привело к появлению таких систем с передач щений, как PVM и MPI. Большинство программистов предпочитают и совместно используемой памяти, даже если ее на самом деле не существу удастся достичь этой цели, мы сразу получим дешевое аппаратное обес больших размеров плюс обеспечим легкость программирования.

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

Распределенная совместно используемая память

Один из классов систем с общей памятью на прикладном уровне — это сис страничной организацией памяти. Такая система называется DSM (Di

Shared Memory — распределенная совместно используемая память). Идея

ряд процессоров в мультикомпьютере разделяет общее виртуальное адрес странство со страничной организацией. Самый простой вариант — когда страница содержится в ОЗУ ровно для одного процессора. На рис. 8.34, а м общее виртуальное адресное пространство, которое состоит из 16 страни пространяется на 4 процессора.

Когда процессор обращается к странице в своем локальном ОЗУ, чтен пись происходят без задержки. Однако если процессор обращается к стра другого ОЗУ, происходит ошибка из-за отсутствия страницы. Только в это отсутствующая страница берется не с диска. Вместо этого операционная посылает сообщение в узел, в котором находится данная страница, чтобы п зовать ее и отправить к процессору. После получения страницы она преоб в исходное состояние, а приостановленная команда выполняется заново, к обычной ошибке из-за отсутствия страницы. На рис. 8.34, б мы видим с после того, как процессор 0 получил ошибку из-за отсутствия страницы 10, была передана из процессора 1 в процессор 0.

Впервые идея была реализована в машине IVY [83, 84]. В результате тикомпьютере появилась память совместного использования, согласова последовательности. В целях улучшения производительности возможны зации. Первая оптимизация, появившаяся в IVY, — страницы, предназн только для чтения, могли присутствовать в нескольких узлах одновременн чае ошибки из-за отсутствия страницы в запрашивающую машину пос копия этой страницы, но оригинал остается на месте, поскольку нет никак ности конфликтов. На рисунке 8.34, в показана ситуация, когда два про делят общую страницу, предназначенную только для чтения (это страниц

Мультикомпьютеры с передачей сообщений

63

ницы, страница постоянно должна передаваться туда и обратно. Эта ситуация на зываетсяложнымсовместнымиспользованием.

Глобальнаявиртуальнаяпамятьсовместногоиспользования,состоящаяиз16страниц

-Память

 

 

 

 

 

Сеть

0

2 5

1

3 6

4 | 7 | 11

рГаГ] 15

9

10

8

 

12

 

Процессор 0

Процессор 1

Процессор 2

Процессор 3

Рис.8.34.Виртуальноеадресноепространство,состоящееиз16страниц,которые распределенымеждучетырьмяузламивмультикомпьютере:исходноеположение(а); положение после обращения процессора0 кстранице 10 (б); положение после обращения процессора 0 к странице 10 (в); в данном случае эта страница предназначена только для чтения

Проблему ложного совместного использования можно разрешить по-разному Например, можно отказаться от согласованности по последовательности в польз

6 38 Глава 8. Архитектуры компьютеров параллельного действия

никаких копий до тех пор, пока не будет совершена операция rel ease и по страница снова станет общей.

Второй способ оптимизации — изначально преобразовывать каждую ваемую страницу в режим «только для чтения». Когда в страницу запись дится впервые, система создает копию страницы, называемую двойнико страница преобразуется в формат «для чтения и записи», и последующи могут производиться на полной скорости. Если позже произойдет ошиб отсутствия страницы и страницу придется туда доставлять, между текущ ницей и двойником производится пословное сравнение. Пересылаются т слова, которые были изменены, что сокращает размер сообщений.

Если возникает ошибка из-за отсутствия страницы, нужно определить ходится отсутствующая страница. Возможны разные способы, в том числ ги, которые используются в машинах NUMA и СОМА. Многие средства, используются в DSM, применимы к машинам NUMA и СОМА, поскольку это программная реализация машины NUMA или СОМА, в которой каж ница трактуется как строка кэш-памяти.

DSM — это обширная область для исследования. Большой интерес п ляют системы CASHMERE [76, 141], CRL [68], Shata [124] и Treadmarks

Linda

Системы DSM со страничной организацией памяти (например, IVY и Tre используют аппаратный блок управления памятью, чтобы закрывать дос сутствующим страницам. Хотя пересылка только отдельных слов вместо в ницы и влияет на производительность, страницы неудобны для совмест пользования, поэтому применяются и другие подходы.

Один из таких подходов — система Linda, в которой процессы на нес машинах снабжены структурированной распределенной памятью совмест пользования [21, 22]. Доступ к такой памяти осуществляется с помощью шого набора примитивных операций, которые можно добавить к сущест языкам (например, С или FORTRAN), в результате чего получатся парал языки, в данном случае C-Linda и FORTRAN-Linda.

В основе системы Linda лежит понятие абстрактного пространства к которое глобально по отношению ко всей системе и доступно всем процес системы. Пространство кортежей похоже на глобальную память совмест пользования, только с определенной встроенной структурой. Пространств жит ряд кортежей, каждый из которых состоит из одного или нескольки Для C-Linda поля могут содержать целые числа, числа типа long integer с плавающей точкой, а также массивы (в том числе цепочки) и структур другие кортежи). В листинге 8.4. приведено 3 примера кортежей.

Над кортежами можно совершать 4 операции. Первая из них, out, п

кортеж в пространство кортежей. Например, операция

Мультикомпьютеры с передачей сообщений

6 3 9

Это выражение помещает в пространство кортеж с четырьмя полями, причем второе и третье поля определяются по текущим значениям переменных i и j.

Вторая операция, in, извлекает кортеж из пространства. Обращение к кортежам ирогаъодатся. wo содержанию, л we wo жлтан vura адресу. Х\оля операнда Vi шэтут содержать выражения или формальные параметры. Рассмотрим операцию

m C a b c " . 2, ? i ) ;

Эта операция отыскивает кортеж, состоящий из цепочки «abc», целого числа и третьего поля, которое может содержать любое целое число (предполагаетс что i — это целое число). Найденный кортеж удаляется из пространства кортеже а переменной i приписывается значение третьего поля. Когда два процесса выпо няют одну и ту же операцию in одновременно, успешно выполнит эту операци только один из них, если нет двух и более подходящих кортежей. Пространств кортежей может содержать много копий одного кортежа.

Листинг8.4.ТрикортежасистемыLinda

("abc".2.5) Cmatrix-1".1.6.3.14)

("family", "is sister". Carolyn, Elinor)

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

1.Шаблон и кортеж имеют одинаковое количество полей.

2.Типы соответствующих полей совпадают.

3.Каждая константа или переменная в шаблоне совпадает с полем кортежа.

Формальные параметры, указываемые знаком вопроса, за которым следует им переменной или типа, не участвуют в сравнении (за исключением проверки типа хотя тем параметрам, которые содержат имя переменной, присваиваются значе ния после совпадения.

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

Третья операция, read, сходна с in, только она не удаляет кортеж из простран ства. Четвертая операция, eval, параллельно оценивает свои параметры, а полу ченный в результате кортеж копируется в пространство кортежей. Этот механиз можно использовать для выполнения любых вычислений. Именно так создаютс параллельные процессы в системе Linda.

Основной принцип программирования в системе Linda — это модель replicate

6 4 0 Глава 8. Архитектуры компьютеров параллельного действия

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

in("Task-bag". ?job):

Затем он выполняет эту задачу. По выполнении задачи он получает щую. Новая задача тоже может быть помещена в пакет задач во время в ния. Таким образом, работа динамически распределяется среди рабочих сов, и каждый рабочий процесс занят постоянно.

Существуют различные реализации Linda в мультикомпьютерных сис всех реализациях ключевым является вопрос о том, как распределить ко машинам и как их находить. Возможные варианты — широковещание и Дублирование — это тоже важный вопрос. Подробнее об этом см. [16].

Огса

Несколько другой подход к совместно используемой памяти на прикладно в мультикомпьютере — в качестве общейсовместно используемойединицы и вать полные объекты, а не просто кортежи. Объекты состоят из внутреннего го) состояния и процедур для оперирования этим состоянием. Поскольку мист не имеет прямого доступа к состоянию, появляется возможность сов использования ресурсов машинами, которые не имеют общей физическо

Одна из таких систем называется Огса [11, 13, 14]. Огса — это тради язык программирования (основанный на Modula 2), к которому добав особенности — объекты и возможность создавать новые процессы. Объек это стандартный тип данных, аналогичный объекту в языкеJava или паке ке Ada. Объект заключает в себе внутренние структуры данных и нап пользователем процедуры, которые называются операциями. Объекты п то есть они не содержат потоков, которым можно посылать сообщения. П получают доступ к внутренним данным объекта путем вызова его проце

Каждая процедура в Огса состоит из списка пар (предохранитель (gua операторов). Предохранитель — это логическое выражение, которое мо нимать значение «истина» (true) или «ложь (false). Когда вызывается о все ее предохранители оцениваются в произвольном порядке. Если все он (false), вызывающий процесс приостанавливается до тех пор, пока один примет значение true. При нахождении предохранителя со значением полняется следующий за ним блок выражений. В листинге 8.5 показан об с двумя операциями push и pop.

Листинг 8.5. Упрощенный объект stack в системе Огса с внутренними дан и двумя операциями

Object implementation stack;

 

top:integer;

#хранилище для стека

stack:array[integer O..N-l]of

integer;

 

Мультикомпьютеры с передачей сообщений

641

operation popО integer.

#функция, которая возвращает

 

begin

#целое число

 

guard top>0 do

Приостанавливает работу, если стек пуст

 

top =top-l.

#уменьшает указатель стека

 

return stack[top]:

# возвращает вершину стека

 

od.

 

 

end

 

 

begin

 

 

top =0,

Инициализация

 

end

 

 

Как только определен объект stack, нужно объявить переменные этого типа: s, t stack.

Такая запись создает два стековых объекта и устанавливает переменную top в каждом объекте на 0. Целочисленную переменную к можно поместить в стек s с помощью выражения

s$push(k)

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

Осга содержит оператор ветвления (fork statement) для создания нового процесса в процессоре, определяемом пользователем. Новый процесс запускает процедуру, названную в команде ветвления. Параметры, в том числе объект, могут передаваться новомупроцессу. Именно так объекты распределяются среди машин. Например, выражение

for I in I n do fork foobar(s) on I; od;

порождает новый процесс на каждой из машин с 1 по п, запуская программу foobar в каждой из них. Поскольку эти п новых процессов (а также исходный процесс) работают параллельно, они все могут помещать элементы в общий стек s и выталкивать элементы из общего стека s, как будто все они работают на мультипроцессоре с памятью совместного использования.

Операции в объектах совместного использования атомарны и согласованы по последовательности. Если несколько процессов выполняют операции над одним общим объектом практически одновременно, система выбирает определенный порядок выполнения, и все процессы «видят» этот же порядок.

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

полнялись последовательно одна за другой. В этом отношении объект Огса похож

6 4 2 Глава 8. Архитектуры компьютеров параллельного действия

денном в листинге 8.5, процесс, который пытается вытолкнуть элемент из стека, блокируется до появления в стеке элементов.

В системе Огса допускается копирование объектов, миграция и вызо ций. Каждый объект может находиться в одном из двух состояний: он мож единственным, а может быть продублирован. В первом случае объект сущ только на одной машине, поэтому все запросы отправляются туда. Прод ванный объект присутствует на всех машинах, которые содержат процесс, зующий этот объект. Это упрощает операцию чтения (поскольку ее можно водить локально), но усложняет процесс обновления. При выполнении оп которая изменяет продублированный объект, сначала нужно получить от це ного процесса порядковый номер. Затем в каждую машину, содержащую объекта, отправляется сообщение о необходимости выполнить эту операц скольку все такие обновления обладают порядковыми номерами, все маши сто выполняют операции в порядке номеров, что гарантирует согласованн последовательности.

Globe

Большинство систем DSM, Linda и Огса работают в пределах одного зда предприятия. Однако можно построить систему с совместно используемо тью на прикладном уровне, которая может распространяться на весь мир. ме Globe объект может находиться в адресном пространстве нескольких сов одновременно, возможно, даже на разных континентах [72,154]. Чтобы п доступ к данным общего объекта, пользовательские процессы должны пр рез его процедуры, поэтому для разных объектов возможны разные спосо лизации. Например, можно иметь один экземпляр данных, который запра ся по мере необходимости (это удобно для данных, часто обновляемых владельцем). Другой вариант — когда все данные находятся в каждой копи та, а сигналы об обновлении посылаются каждой копии в соответствии с ным протоколом широковещания.

Цель системы Globe — работать на миллиард пользователей и содержа лион объектов — делает эту систему амбициозной. Ключевыми моментам ются размещение объектов, управление ими, а также расширение системы ма Globe содержит общую сеть, в которой каждый объект может иметь собс стратегию дублирования, стратегию защиты и т. д.

Среди других широкомасштабных систем можно назвать Globus [40,41] [50,51], но они, в отличие от Globe, не создают иллюзию совместного испо нияпамяти.

Краткое содержание главы

Компьютеры параллельной обработки можно разделить на две основные

Соседние файлы в предмете Аппаратное обеспечение ЭВМ, средств телекоммуникаций и сетей