3.1.1. Структура многопроцессорных ВС

3.1.2. Способы управления вычислительным процессом в многопроцессорных ВС.

3.1.2. Особенности управления процессами в многопроцессорных ЭВМ. Семафоры.

В соответствии с классификацией Флинна к многопроцессорным ЭВМ можно отнести ЭВМ типа МКМД. Процессоры в таких ЭВМ имеют собственное УУ. Они способны выполнять последовательную программу и обрабатывать независимые ветви одной задачи.

Управление вычислительным процессом в МКМД-ЭВМ может быть организовано асинхронным и синхронным способами.

Асинхронный способ позволяет инициировать начало очередного

Рис. 3.1. Развертка во времени для t=3 синхронного

вычислительного процесса с независимыми ветвями

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

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

На МКМД-ЭВМ могут решаться и векторные задачи.

Тогда все ПЭ выполняют одну и ту же программу. Однако для решения подобных задач более эффективными являются ОКМД-ЭВМ. Больший интерес для МКМД-ЭВМ представляют асинхронные задачи. При их решении в каждом процессоре выполняются различные по составу команд ветви и предусмотрены специальные точки для синхронизации вычислительного процесса.

Развертка вычислительного процесса во времени изображена на рис. 3.1

Рассмотрим более детально исполнение одной ветви программы для МКМД-ЭВМ:

….

FORK M1,M2,…,Mn

M1: X1(K+1)=F1(X1(k),…,X(k)n)

IF (ABS(X1(k+1)-X1(k))-)K,1,1

  1. WAIT (ожидание окончания всех Mj без M1)

GO TO M1

Другие ветви

K Join (R)

Оператор FORK {M1} производит одновременный запуск на выполнение ветвей некоторой параллельной программы. Все вычислительные процессы в действительности начинаются одновременно, если для этого есть ресурсы.

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

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

  1. передача вычислительного в данной ветви Xi(k+1) в другие ветви;

  2. получение из других ветвей новых новых значений переменных; если они еще не вычесленны, ветвь Mj переходит в состояние ожидания.

  3. Повторный запуск оператором WAIT ветви Mj­ по окончании ожидаемых событий

Часто оператор WAIT обозначают, как оператор ОБМЕН.

Основные причины снижения эффективности при обработке ветвей на многопроцессорных ЭВМ (см. Рис 3.1) – потери времени на обмен и простои вследствии ожидания.

Если в какой-либо ветви достигнута заданная точность, то управление передается на оператор JOIN, который может иметь различный смысл. В простом случае оператор JOIN вычитает их ячейки R единицу. В начальный момент времени в ячейке записано число ветвей l. После того, как завершится последняя ветвь и в ячейке окажется нуль, оператор JOIN передаст управление следующему за ним по списку оператору. Им может оказаться оператор FORK или любой другой.

Оператор JOIN иногда имеет более сложную форму. Например, он может вычислять логическую функцию F от некоторых переменных Si, определяемых в ветвях, и осуществлять в зависимости от значения F групповой переход к той или иной группе адресов {A}1, {A}2, т.е. действовать аналогично такому оператору:

IF (F(S­1,S2,…,S­l)) {Ai}1, {Aj}2

Операторы FORK, WAIT, JOIN вызывают появление а аппатратуре и ОС средств для синхронизации нескольких процессов. Синхронизацией называется установление правильной очередности исполнения процессов. Необходимость в синхронизации вызывается либо распределением общего ресурса между процессорами (операторы FORK и WAIT), либо логической зависомостью процессов друг от друга (операторы WAIT и JOIN).

Для синхронизации процессов чаще всего используется механизм семафоров. Семафором называется переменная S, связанная, например с некоторым ресурсом и принимающая два состояния: “0” (запрещено обращение) и “1” (резрешено обращение). Над S определены две операции: V и P. Операция V изменяет значение S семафора на значение S+1. Действие операции P таково:

  1. если S0, то P уменьшает значение на единицу;

  2. если S=0, то P не изменяет значения S и не завершается до тех пор, пока некоторый другой процесс не изменит значение S с помошью операции V. Операции P и V считаются неделимыми, т.е. не могут испольняться одновременно.

Приведем пример синхронизации двух процессов:

Begin semaphore S; S:=1;

Parbegin

Process 1: begin L1: P(S);

Критический участок 1;

V(S);

Остаток цикла, go to L1

End

Process 2: begin L2: P(S);

Критический участок 2;

V(S);

Остаток цикла, go to L2

End

Parend

End

В 3.2 операторы parbegin и parend обрамляют блоки process 1 и process 2, которые могут выполняться параллельно. Под критическим участком понимается такой участок процесса, где данный процесс не может выполняться без использования ресурса, защищаемого семафором S. Процесс может захватить ресурс только тогда, когда S:=1.

После захвата процесс захватывает семафор (P(S)) и открывает его вновь после прохождения критической секции (V(S)).

Недостатком предложенной схемы семафора в плане его технической реализации является необходимость постоянного и многократного опроса закрытого семафора процессом, чтобы определить момент открытия семафора. Это снижает производительность МКМД-ЭВМ, в связи с чем для технической реализации

a

P

V

S

Блок анализа очереди

0.1

Блок очереди процессов

Запросы

Блок разрешения доступа

I j k l - -

Блок очереди процессов

Ресурс R

Запросы от процессов

Ожидание

Нет

Да

Нет

S=1

S=0

Поставить в очередь

Нет

Да

Сообщить процессу об ожидании

Установить S=0

Сообщить процессу о разрешении ?

Продвинуть очередь

Рис. 3.2 Функционирование монитора семафора с очередями

разработаны более экономные схемы семафоров: семафоры с очередями и многозначные семафоры.

Так на рис. 3.2, а изображена схема доступа к некоторому ресурсу R ряда процессов I,j,k,l, а на рис. 3.2, б – блок-схема алгоритма функционирования монитора, управляющего данным семафором S. Под монитором обычно понимают некоторую спецаилизированную программу операционной системы, предназначенную для сбора информации о событиях заданного типа и управления другими программами.

Рис. 3.3. Структура многопроцессорных ЭВМ:

ПВВ-процессор ввода вывода (канал); ЦП содержит УУ, АЛУ, ОП; процессор П содержит УУ, АЛУ, и файл регистров

Тогда при наличии мониторов операторы FORK, JOIN, WAIT и аналогичные им после трансляции исходного текста программы на Ассемблере преобразуются в вызовы соответствующих мониторов операционной системы.

Многозадачный семафор имеет более двух состояний. В момент запуска группы процессов такому семафору присваивается некоторое значение, например S=l. Заканчивается каждый процесс из S вычитанием единицы. После того как наступит момент S=0, некоторое событие (в данном случае окончание всех ветвей группового процесса) считается наступившим. В такой интерпритации многозначный семафор напоминает работу оператора JOIN.

Многопроцессорная система, построенная путем соединения процессоров, каждый из которых содержит локальную память, представлена на рис. 3.3,а. МКМД-ЭВМ с общедоступной для всех процессоров памятью изображена на рис. 3.3.б. Обычно число блоков памяти больше числа процессоров, например N=4, L=32, поэтому задержки при обращении к блокам памяти малы, а общедоступность памяти не требует пересылки данных между отдельными блоками памяти. На практике используются схемы обоих типов.

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

Для многопроцессорной системы в самом простом случае характерны задачи синхронного типа (3.1) и использование системы с центральными процессорами (см. Рис. 3.3.а) при этом управление процессорами централизованное.

При трансляции программы (3.1) на ЯВУ транслятор формирует для ОС ряд таблиц и семафоров. Проанализируем ситуацию, когда число процессоров N меньше чем число вервей L. В этом случае в одном ЦП должно обрабатываться несколько ветвей.

Оператор FORK вызывает распределение ресурсов, т.е. закрепление ветвей M за процессорами. На стадии планирования после анализа исходных сведений о времени исполнения каждой отдельной ветви производится грубое распределение ветвей по процессорам таким образом, чтобы суммарное время работы каждого процессора над ветвями было примерно равным. На данном этапе составляются таблицы распределения ветвей. Каждая m-я строка в такой таблице отведена для ЦП и в ней перечислены имена (и адрес в памяти ветвей). Если в ветвях оператора FORK в свою очередь встречаются операторы FORK, то формируются новые таблицы такого же состава. Для удобства пользования каждая таблица может быть реализована разными способами, в том числе и для ассоциативного поиска. С помошью этих таблиц устанавливается связь между именами ветвей и их физическим расположением при передаче нужных слов в нужные процессоры.

Динамическое распределение ресурсов производится в процессе выполнения ветвей с помощью семафоров с очередями.

3.1.3. Основные характеристики многопроцессорных ВС.