Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Техехин - Системное программное обеспечение - взаимодействие процессов (1114927), страница 23
Текст из файла (страница 23)
«Механизм (или интерфейс)передачи сообщений»145Очевидно, что главное отличие любой параллельнойвычислительной системы от классической фон-неймановскойархитектуры заключается в наличии нескольких процессоров, накоторых одновременно могут выполняться независимые иливзаимодействующие между собой задачи. При этом параллельноработающие процессы конкурируют между собой за остальныересурсы системы, а также могут осуществлять взаимодействиеаналогично тому, как это происходит в однопроцессорной системе.Рассматриваяподробнееособенностиразличныхмногопроцессорных систем, мы обратим особое внимание на темеханизмы, которые позволяют организовать на них взаимодействиепараллельных процессов.Основным параметром, позволяющим разбить все множествомногопроцессорных архитектур на некоторые классы, являетсядоступ к памяти.
Существуют системы с общей памятью,обладающие определенным массивом блоков памяти, которыеодинаково доступны всем процессорам, и системы сраспределенной памятью, в которых у каждого процессораимеется в наличии только локальная память, доступ в которуюдругих процессоров напрямую невозможен. Существует ипромежуточный вариант между этими двумя классами – это такназываемые системы с неоднородным доступом к памяти, илиNUMA-системы. Далее мы подробнее остановимся на каждом изэтих классов архитектур.Системы с распределенной памятью – MPP.Примером системы с распределенной памятью может служитьмассивно-параллельная архитектура – MPP15. Массивнопараллельные системы состоят из однородных вычислительныхузлов, каждый из которых включает в себя:- один или несколько процессоров- локальную память, прямой доступ к которой с другихузлов невозможен- коммуникационный процессор или сетевой адаптер- устройства ввода/выводаСхема MPP системы, где каждый вычислительный узел (ВУ)имеет один процессорный элемент (например, RISC-процессор,15Аббревиатура MPP представляет собой сокращение от «Massive Parallel Processing»146одинаковый для всех ВУ), память и коммуникационное устройство,изображена на рисунке.ЦППамятьЦППамятькоммуникац.устр-воВУкоммуникац.устр-воВУЦППамятьЦППамятькоммуникац.устр-воУправляющийузел (узлы)ВУкоммуникац.устр-воУзел (узлы)ввода-выводаВУРис.
22 Архитектура MPP.Помимо вычислительных узлов, в систему могут входитьспециальные узлы ввода-вывода и управляющие узлы. Узлы связанымежду собой посредством высокоскоростной среды передачиданных определенной топологии. Число процессоров в MPPсистемах может достигать нескольких тысяч.Поскольку в MPP-системе каждый узел представляет собойотносительно самостоятельную единицу, то, как правило,управлениемассивно-параллельнойсистемойвцеломосуществляется одним из двух способов:1.
На каждом узле может работать полноценная операционнаясистема, функционирующая отдельно от других узлов. Приэтом, разумеется, такая ОС должна поддерживатьвозможность коммуникации с другими узлами в соответствиис особенностями данной архитектуры.2. «Полноценная» ОС работает только на управляющей машине,а на каждом из узлов MPP-системы работает некоторыйсильно «урезанный» вариант ОС, обеспечивающий работузадач на данном узле.Вмассивно-параллельнойархитектуреотсутствуетвозможность осуществлять обмен данными между ВУ напрямуючерез память, поэтому взаимодействие между процессорамиреализуется с помощью аппаратно и программно поддерживаемогомеханизма передачи сообщений между ВУ.
Соответственно, ипрограммы для MPP-систем обычно создаются в рамках моделипередачи сообщений.147Системы с общей памятью – SMP.В качестве наиболее распространенного примера систем собщей памятью рассмотрим архитектуру SMP16 – симметричнуюмультипроцессорную систему.SMP-системысостоят изнескольких однородных процессоров и массива общей памяти,который обычно состоит из нескольких независимых блоков. Слово«симметричный» в названии данной архитектуры указывает на то,что все процессоры имеют доступ напрямую (т.е. возможностьадресации) к любой точке памяти, причем доступ любогопроцессора ко всем ячейкам памяти осуществляется с одинаковойскоростью.
Общая схема SMP-архитектуры изображена на Рис. 23.Общая памятьВысокоскоростная среда передачи данныхЦПЦП.…..ЦПЦПРис. 23 Архитектура SMPПроцессоры подключены к памяти либо с помощью общейшины, либо с помощью коммутатора. Отметим, что в любой системес общей памятью возникает проблема кэширования: так как кнекоторой ячейке общей памяти имеет возможность обратитьсякаждый из процессоров, то вполне возможна ситуация, когданекоторое значение из этой ячейки памяти находится в кэше одногоили нескольких процессоров, в то время как другой процессоризменяет значение по данному адресу. В этом случае, очевидно,значения, находящиеся в кэшах других процессоров, больше немогут быть использованы и должны быть обновлены.
В SMPархитектурах обычно согласованность данных в кэшахподдерживается аппаратно.Очевидно, что наличие общей памяти в SMP-архитектурахпозволяет эффективно организовать обмен данными междузадачами,выполняющимисянаразныхпроцессорах,сиспользованием механизма разделяемой памяти. Однако сложностьорганизации симметричного доступа к памяти и поддержаниясогласованности кэшей накладывает существенное ограничение наколичество процессоров в таких системах – в реальности их число16Аббревиатура SMP является сокращением фразы «Symmetric Multi Processing»148обычно не превышает 32 – в то время, как стоимость таких машинвесьмавелика.Некоторымкомпромиссоммеждумасштабируемостью и однородностью доступа к памяти являютсяNUMA-архитектуры, которые мы рассмотрим далее.Системы с неоднородным доступом к памяти – NUMA.Системы с неоднородным доступом к памяти (NUMA17)представляют собой промежуточный класс между системами собщей и распределенной памятью.
Память в NUMA-системахявляется физически распределенной, но логически общедоступной.Это означает, что каждый процессор может адресовать как своюлокальную память, так и память, находящуюся на других узлах,однако время доступа к удаленным ячейкам памяти будет внесколько раз больше, нежели время доступа к локальной памяти.Заметим, что единой адресное пространство и доступ к удаленнойпамятиподдерживаютсяаппаратно.Обычноаппаратноподдерживается и когерентность (согласованность) кэшей во всейсистемеСистемы с неоднородным доступом к памяти строятся изоднородных базовых модулей, каждый из которых содержитнебольшое число процессоров и блок памяти.
Модули объединенымежду собой с помощью высокоскоростного коммутатора. Обычновся система работает под управлением единой ОС. Посколькулогически программисту предоставляется абстракция общей памяти,то модель программирования, используемая в системах NUMA,обычно в известной степени аналогична той, что используется насимметричных мультипроцессорных системах, и организациямежпроцессного взаимодействия опирается на использованиеразделяемой памяти.Масштабируемость NUMA-систем ограничивается объемомадресного пространства, возможностями аппаратуры поддержкикогерентности кэшей и возможностями операционной системы поуправлению большим числом процессоров.Кластерные системы.Отдельным подклассом систем с распределенной памятьюявляются кластерные системы, которые представляют собойнекоторый аналог массивно-параллельных систем, в котором в17Аббревиатура NUMA расшифровывается как «Non-Unified Memory Access», что вбуквальном переводе и означает «неоднородный доступ к памяти».
Часто используется такжеобозначение «ccNUMA», что означает «cache-coherent NUMA», или система с неоднороднымдоступом к памяти с поддержкой когерентности (т.е. согласованности) кэшей149качестве ВУ выступают обычные рабочие станции общегоназначения, причем иногда узлы кластера могут даже одновременноиспользоваться в качестве пользовательских рабочих станций.Кластер, объединяющий компьютеры разной мощности или разнойархитектуры, называют гетерогенным (неоднородным).
Для связиузлов используется одна из стандартных сетевых технологий,например, Fast Ethernet.Главными преимуществами кластерных систем, благодарякоторым они приобретают все большую популярность, являются ихотносительная дешевизна,возможность масштабированияивозможность использования при построении кластера техвычислительных мощностей, которые уже имеются в распоряжениитой или иной организации.При программировании для кластерных систем, как и длядругих систем с распределенной памятью, используется модельпередачи сообщений.7.2.2 Модель программирования MPI.Как мы видим, при написании программ для параллельныхархитектур выбор модели программирования сильно зависит отконкретной архитектуры, на которой предполагается выполнятьпрограмму.
Например, если целевой архитектурой является системас общей памятью, то для обмена данными между процессамицелесообразно использовать механизм разделяемой памяти, если жепрограмма пишется для работы на системе с распределеннойпамятью, то необходимо организовывать обмен с помощьюсообщений. Таким образом, если программист имеет возможностьдоступа к системе с общей памятью и с распределенной памятью,ему придется создавать отдельную версии своей программы дляработы на каждой из этих систем, осваивая при этом различныемодели программирования.В то же время, хотелось бы иметь некоторый единыймеханизм взаимодействия, который был бы реализован, и притомэффективно, для большинства или хотя бы для многих конкретныхпараллельных систем.