Файл: Системы с распределенной разделяемой памятью (Классификация архитектур вычислительных систем).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 03.07.2023

Просмотров: 427

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Упрощенная схема системы с общей памятью представлена на Рис. 1.3.

Рис.1.3. Архитектура параллельной вычислительной системы с общей памятью

Разумеется, в реальности все сложнее, поскольку сама архитектура процессоров, допускающих использование их в многопроцессорных системах значительно сложнее, чем у процессоров, используемых в однопроцессорных системах. С этим связана непропорционально высокая стоимость SMP систем по сравнению с обычными персональными компьютерами. Как компромиссный вариант некоторые производители процессоров стали выпускать специализированные процессоры для 2-х, 4-х и 8-ми процессорных систем. [6, с. 102].

Второй способ создания многопроцессорной вычислительной системы состоит в объединении в единую вычислительную систему множества традиционных однопроцессорных вычислительных систем с помощью коммуникационного оборудования. [16, с. 221].

Таким образом, в системах этого типа каждый процессор имеет прямой доступ только к собственной оперативной памяти, а обмен с памятью других процессоров возможен только через коммуникационные каналы посредством передачи сообщений. Вычислительные системы этого типа получили название систем с массовым параллелизмом (Massively-Parallel Processing - MPP). Поскольку память распределена между процессорами, то системы этого типа называют системами с распределенной памятью. Архитектура вычислительных систем с распределенной памятью представлена на Рис. 1.4.

Рис.1.4. Архитектура параллельной вычислительной системы с распределенной памятью

Первоначально системы MPP типа тоже строились с использованием специальных процессоров, со встроенным коммуникационным оборудованием, однако, с появлением высокоскоростного коммуникационного оборудования общего назначения, надобность в этом отпала и в настоящее время такие системы создаются на базе общедоступного серийного коммуникационного оборудования. [13 с. 68].

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

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


1.2 Понятие и сущность вычислительной системы с распределенной памятью (distributed memory)

Вычислительная система с распределенной памятью (distributed memory) – система, в которой каждый процессор обладает собственной локальной памятью, а общая память отсутствует. Обмен информацией между составляющими системы обеспечивается с помощью коммуникационной сети посредством обмена сообщениями. [14 с. 71].

Системы с распределенной памятью изначально конструировались как системы, призванные преодолеть ограничения свойственные системам с общей памятью. Было предложено строить многопроцессорные вычислительные системы как набор независимых вычислительных узлов, состоящих из процессора, локальной оперативной памяти, и коммуникационного оборудования для взаимодействия узлов. Такая архитектура вычислительной системы снимала проблемы, связанные с пропускной способность шины памяти и с необходимостью поддержки когерентности кэш-памяти всех процессоров. Это значительно расширило возможности по наращиванию числа процессоров в вычислительной системе, которое ограничивалось теперь только возможностями коммуникационного оборудования. [3, с. 122]

Системы с общей (разделяемой) оперативной памятью образуют современный класс ВС — многопроцессорных супер-ЭВМ. Одинаковый доступ всех процессоров к программам и данным представляет широкие возможности организации параллельного вычислительного процесса (параллельных вычислений). Отсутствуют потери реальной производительности на межпроцессорный (между задачами, процессами и т.д.) обмен данными (рис. 1.5a).

Рис. 1.5. ВС с общей (а) и распределённой (б) памятью

Системы с распределенной памятью образуют вычислительные комплексы (ВК) — коллективы ЭВМ с межмашинным обменом для совместного решения задач (рис. 1.5б). В ВК объединяются вычислительные средства систем управления, решающие специальные наборы задач, взаимосвязанных по данным. Принято говорить, что такие ВК выполняют распределенные вычисления, а сами ВК называют распределенными ВК. [16, с. 117].

В настоящее время функционируют вычислительные системы с распределенной памятью, состоящие из нескольких сотен тысяч процессоров (IBM Blue Gene/L). При построении таких систем используются высокоскоростные коммутаторы, соединяемые в топологию «толстого дерева». [3, с. 122]


Первоначально, системы с распределенной памятью появились как дорогие специализированные вычислительные системы. Однако, с появлением недорого высокоскоростного коммуникационного оборудования, вычислительные системы с распределенной памятью стали создавать на базе стандартных системных блоков. Это значительно снизило стоимость многопроцессорных вычислительных систем и сделало их общедоступными. Такие вычислительные системы получили название вычислительных кластеров. Не составляет большого труда создать вычислительный кластер из компьютеров учебного класса или лаборатории. Законченные, хорошо сбалансированные решения предлагаются сегодня практически всеми фирмами - производителями компьютерного оборудования. [1, с. 189]

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

Взаимосвязь между узлами осуществляется с помощью механизма передачи сообщений. Этот механизм реализуется в виде прикладных библиотек, которые должны подключаться к параллельной программе. Каждый производитель многопроцессорных систем с распределенной памятью поставлял такие библиотеки в составе системного программного обеспечения своих компьютеров. Например, среда параллельного программирования (PSE) многопроцессорной системы nCUBE2 включала в себя 5 встроенных функций и небольшую вспомогательную библиотеку. [18, с. 136].

В настоящее время в качестве стандарта коммуникационной библиотеки принята платформенно-независимая библиотека MPI. Эта библиотека предоставляет широкий набор средств для создания параллельных программ, однако программирование на уровне вызовов коммуникационных библиотечных функций остается довольно трудоемким. [19, с. 88].

Предпринимаются попытки создания средств для автоматического и полуавтоматического распараллеливания программ. Одним из наиболее законченных решений такого рода является язык HPF (High Performance Fortran). Имеются как коммерческие версии компиляторов (PGHPF - Portland Group Inc., xlhpf - IBM, Absoft Pro Fortran - Absoft Corporation), так и открытые продукты (Adaptor - GMD-SCAI, DVM - ИПМ им Келдыша РАН).

Таким образом, можно сделать следующий вывод.

Вычислительные системы бывают двух видов

1.Компьютерные с общей памятью (мультипроцессорные системы)

2.Компьютерные с распределенной памятью (мультикомпьютерные системы) классы архитектур параллельных систем: с распределенной памятью (MPP) и с общей памятью (SMP).


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

2. АНАЛИЗ СПОСОБОВ ПОСТРОЕНИЯ МИКРОПРОЦЕССОРОВ NUMA

2.1 Мультипроцессоры CC-NUMA

Архитектура неоднородного доступа к памяти с обеспечением когерентности кэшей ccNUMA (Cache Coherent Non-Uniform Memory) реализуется на базе шины. Аппаратные средства следят за процессами на шине, главным образом, относящимися к операциям записи в кэш-память. При попытке какого-то процессора модифицировать содержимое в одном из блоков своей кэш-памяти, эти аппаратные средства либо таким же образом обновляют содержимое аналогичных блоков в кэш-памяти других процессоров, либо помечают эти блоки как недостоверные. Примерами ВС с архитектурой системы памяти типа ccNUMA являются: SGI Origin 2000, Origin 3000, Cray ТЗЕ, HP Exemplar, IBM/Sequent NUMA-Q 2000. [16, с. 224].

Рассмотрим широко распространенный способ построения больших мультипроцессоров CC-NUMA (Cache Coherent NUMA – NUMA с согласованной кэш-памятью) на основе каталога. [18, с. 142].

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

Рис. 2.1 Мультипроцессор CC-NUMA

Состав. Для понимания сути и особенностей мультипроцессоров на основе каталога рассмотрим систему (рис. 2.1) из 256 процессорных блоков, которые связаны через сеть межсоединений в виде решетки, гиперкуба или другой топологии. Каждый процессорный блок состоит из процессорного элемента ПЭ, модуля памяти МП, связанного с ПЭ через локальную шину, контроллера и каталога. Модуль памяти размером 224 = 16М байт используется в качестве кэша, содержащего 218 строк по 64 байта каждая. Таким образом, общий объем памяти ОЗУ, составляющий 256×224 = 232 байта, разделен на 226 строк кэш-памяти по 26 (64) байта каждая. Каталог каждого процессорного блока содержит 218 элементов длиной в 9 бит с записями для каждой строки кэша, т.е. объем памяти каталога равен 9×218 бит, что составляет 1,76% от объема памяти одного процессорного блока. [3, с. 136]


Принцип работы. Рассмотрим, как работает мультипроцессор на основе каталога, предполагая, что:

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

В этом случае выполняется следующая последовательность действий: [16, с. 251].

  • процессорный блок (исходный узел А1) передает команду load в контроллер;
  • контроллер переводит команду в физический адрес, разделяя его на три части – адресуемый узел А2 (8 бит), адресуемая строка S1 (18 бит) и смещение С (6 бит);
  • поскольку в исходном узле А1 строка отсутствует, то узлу А2 через сеть направляется запрос;
  • запрос поступает в каталог, аппаратные средства которого индексируют таблицу из 218 элементов;
  • если строка S1 отсутствует в кэш-памяти, то аппаратное обеспечение вызывает строку S1 из локального ОЗУ, отправляет в исходный узел А1 и обновляет элемент каталога S1, чтобы показать, что эта строка находится в кэш-памяти узла А1.

Рассмотрим другую ситуацию, когда из узла А1 запрашивается строка S2, а в каталоге узла А2 указано, что строка S2 находится в кэш-памяти узла А3. В этом случае выполняются следующие действия:

  • из узла А2 посылается сообщение в узел А3, чтобы строка S2 из него была передана в узел А1;
  • затребованная строка S2 передается в А1;
  • строка S2 в кэш-памяти узла А3 объявляется недействительной;
  • обновляется элемент каталога S2 узла А3, чтобы зафиксировать, что строка уже находится в узле А1.

Недостатком рассмотренного мультипроцессора является то, что строка может быть кэширована только в одном процессорном блоке (узле). Для его устранения предлагается: [18, с. 152].

  • предоставить каждому элементу каталога k полей для определения других процессорных блоков;
  • заменить номер процессорного блока битовым отображением: один бит на процессорный блок;
  • хранить в каждом элементе каталога 8-битное поле, чтобы связать все копии строки всех кэшей.

На практике используются все три возможности, хотя каждая из них имеет свои достоинства и недостатки. [17, с. 596].

Контроль состояния строк кэш-памяти и операции с обновленными строками. Запрос на считывание строки кэш-памяти, которая не изменилась, может быть удовлетворен из основной памяти, поэтому его можно не направлять в кэш-память. [3, с. 147]

Запрос на считывание строки кэш-памяти, которая была изменена, направляется в тот процессорный блок (узел), в котором находится ее действительная копия. Если разрешается иметь только одну копию строки кэш-памяти, то отсутствует необходимость в отслеживании изменений в строках кэш-памяти. Это обусловлено тем, что любой новый запрос должен пересылаться к существующей копии, чтобы объявить ее недействительной. [1, с. 195]