Вы находитесь на странице: 1из 5

3.

Системы МКМД с неоднородным доступом к памяти (NUMA), основные


характеристики. NC-NUMA - система без кэширования.
Системы с неоднородным доступом к памяти (NUMА) представляют собой промежуточный класс
между системами с общей и распределенной памятью. Память в NUMA-системах является
физически распределенной, но логически общедоступной.

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

Заметим, что единой адресное пространство и доступ к удаленной памяти поддерживаются


аппаратно. Обычно аппаратно поддерживается и когерентность (согласованность) кэшей во всей
системе

Системы с неоднородным доступом к памяти строятся из однородных базовых модулей, каждый


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

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

+Масштабируемость NUMA-систем ограничивается объемом адресного пространства,


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

Мультипроцессоры NC-NUMA (No Caching NUMA). На рис. 18.8 приведена упрощенная схема


одного из первых мультипроцессоров этого типа – Carnegie-Mellon Cm, построенного на основе
процессорных блоков, каждый из которых состоит из процессорного элемента ПЭ, модуля памяти
МП и контроллера управления памятью, связанных локальной шиной. Процессорные блоки
связаны друг с другом системной шиной. Запрос чтения/записи поступает в контроллер
управления памятью, который выявляет наличие нужного слова в локальной памяти:

• при наличии слова запрос отправляется по локальной шине;

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

• при отсутствии слова запрос направляется по системной шине к процессорному блоку, который


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

В связи с отсутствием кэш-памяти каждое слово находится в определенном (фиксированном)


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

4.Системы МКМД типа СС-NUMA. Обеспечение согласования информации


в КЭШ-ах узлов и в ОЗУ с помощью отображения номеров узлов, с
помощью битового отображения узлов и с помощью связанных списков.

CC-NUMA

Рассмотрим широко распространенный способ построения больших мультипроцессоров CC-NUMA


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

Состав. Для понимания сути и особенностей мультипроцессоров на основе каталога рассмотрим


систему (рис. 18.9) из 256 процессорных блоков, которые связаны через сеть межсоединений в
виде решетки, гиперкуба или другой топологии. Каждый процессорный блок состоит из
процессорного элемента ПЭ, модуля памяти МП, связанного с ПЭ через локальную шину,
контроллера и каталога. Модуль памяти размером 224 = 16М байт используется в качестве кэша,
содержащего 218 строк по 64 байта каждая. Таким образом, общий объем памяти ОЗУ,
составляющий 256×224 = 232 байта, разделен на 226 строк

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

кэш-памяти по 26 (64) байта каждая. Каталог каждого процессорного блока содержит 218
элементов длиной в 9 бит с записями для каждой строки кэша, т.е. объем памяти каталога равен
9×218 бит, что составляет 1,76% от объема памяти одного процессорного блока.
Принцип работы. Рассмотрим, как работает мультипроцессор на основе каталога, предполагая,
что:

• процессорный блок обращается к памяти с помощью команды load;

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

В этом случае выполняется следующая последовательность действий:

• процессорный блок (исходный узел А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.

Недостатком рассмотренного мультипроцессора является то, что строка может быть кэширована


только в одном процессорном блоке (узле). Для его устранения предлагается [16]:

• предоставить каждому элементу каталога k полей для определения других процессорных


блоков;

• заменить номер процессорного блока битовым отображением: один бит на процессорный блок;

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

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


недостатки.

Контроль состояния строк кэш-памяти и операции с обновленными строками. Запрос на


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

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

5. Системы COMA, их особенности. Структурная схема. Различия между


COMA и CC-NUMA.
Архитектура только с кэш-памятью COMA (Cache Only Memory Architecture) - архитектура
памяти системы, в которой у каждого процессора есть часть общей разделяемой памяти,
реализованной в виде кэш-памяти. Это требует перемещения данных к процессору, который их
затребовал. В COMA отсутствует иерархия памяти, а адресное пространство составлено из
адресных пространств всех кэшей.

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

Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального


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

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


системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для
организации такого режима используют так называемые справочники (СПР), хранящие
информацию о текущем расположении всех переменных.

Последняя копия элемента данных никогда из кэш-памяти не удаляется.


Поскольку в архитектуре COMA данные перемещаются в локальную кэш-память процессора,
запросившего их последним, по производительности ВС с COMA-памятью существенно
превосходят ВС с NUMA-памятью.

С другой стороны, если единственная переменная или две различные переменные, хранящиеся в
одном блоке одной и той же кэш-памяти, требуются двум процессорам, этот блок должен
перемещаться между процессорами туда и обратно при каждом доступе к данным. Такие
эффекты могут зависеть от деталей распределения памяти и приводить к непредсказуемым
ситуациям.
Архитектура COMA реализована в целом ряде ВС, в частности в системах KSR-1 и DDM.

Ниже приведены различия между COMA и CC-NUMA.

 COMA имеет тенденцию быть более гибким, чем CC-NUMA, потому что COMA прозрачно
поддерживает миграцию и репликацию данных без необходимости в ОС.
 Машины COMA дороги и сложны в сборке, потому что им требуется нестандартное
оборудование для управления памятью, а протокол когерентности сложнее реализовать.
 Удаленный доступ в COMA часто медленнее, чем в CC-NUMA, поскольку для поиска
данных необходимо пройти через древовидную сеть.