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

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

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

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

Добавлен: 03.07.2023

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

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

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

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

2.2 Мультипроцессоры NC-NUMA с координатными коммутаторами

Характерная особенность мультипроцессоров NUМA (Non Uniform Memory Access – с неоднородным доступом к памяти) проявляется в следующем:

  • имеется одно адресное пространство, видимое для всех процессорных элементов (ПЭ);
  • обращение к удаленной памяти производится с использованием команд load и store;
  • доступ к удаленной памяти происходит медленнее, чем доступ к локальной памяти.

Рассмотрим два типа мультипроцессоров: без кэш-памяти и с кэш-памятью.

Мультипроцессоры NC-NUMA (No Caching NUMA). На рис. 2.2 приведена упрощенная схема одного из первых мультипроцессоров этого типа – Carnegie-Mellon Cm, построенного на основе процессорных блоков, каждый из которых состоит из процессорного элемента ПЭ, модуля памяти МП и контроллера управления памятью, связанных локальной шиной. Процессорные блоки связаны друг с другом системной шиной. [21, с. 158].

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

Запрос чтения/записи поступает в контроллер управления памятью, который выявляет наличие нужного слова в локальной памяти: [3, с. 169]

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

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

2.3 Мультипроцессор Stanford DASH

Состав. Этот мультипроцессор, созданный в Стэнфордском университете, служит примером конкретной реализации систем CC-NUMA на основе каталога. Система состоит из 16 кластеров, каждый из которых содержит (рис. 2.3,а):


  • 4 процессорных элемента ПЭ (MIPS R3000), при этом каждый ПЭ отслеживает только свою локальную шину;
  • модуль памяти МП объемом 16 Мбайт, который выполняет функции кэша, содержащего 1М = 220 строк длиной 16 байт. Общий объем памяти равен 16x16 = 256 Мбайт;
  • каталог из 1М элементов (рис. 2.3,б), который следит за тем, какие кластеры имеют копии своих строк. Каждый элемент содержит:
  • 16 бит (биты 0–15), по одному биту на кластер. Биты показывают, имеется ли в данный момент строка данного кластера в кэш-памяти;
  • 2-битное поле, которое сообщает о состоянии строки (Uncachcd – U, Shared – S, Modified – М).

Память всех каталогов 18×1М×16 несколько превышает 36 Мбайт, что составляет около 14% от 256 Мбайт. [6, с. 59].

Принцип функционирования. Кластеры в Stanford DASH имеют возможность обмениваться информацией друг с другом через межкластерный интерфейс по межкластерным каналам (рис. 2.3).

Рис. 2.3. Кластерный блок (а), каталог (б) и структура (в) DASH

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

  • Uncached (некэшированная) – строка находится только в памяти;
  • Shared (совместно используемая) – строка в памяти содержит новейшие данные; строка может находиться в нескольких блоках кэшпамяти;
  • Modified (измененная) – строка, содержащаяся в памяти, неправильная; строка находится только в одной кэш-памяти.

Владельцем строки в состоянии Uncached или Shared является собственный кластер, а в состоянии Modified – тот кластер, в котором содержится единственная копия этой строки. Прежде чем записать что-либо в строку в состоянии Shared, нужно найти и объявить недействительными все существующие копии. [3, с. 196]

Как уже отмечалось, состояние U, S или М каждой строки кэш-памяти фиксируется в поле "Состояние" в соответствующем элементе каталога (рис. 2.3,б).

Считывание из памяти. Рассмотрим выполняемые действия при считывании строки. В каждый момент у каждой строки имеется собственный (уникальный) владелец. [17, с. 625].

Сначала процессорный элемент ПЭ данного кластера проверяет свою кэш-память. Если там строки нет, на локальную шину кластера передается запрос для выявления, содержит ли какой-нибудь другой ПЭ этого же кластера нужную строку. [20, с. 557]. При наличии строки происходит передача ее из одной кэш-памяти в другую, при этом:

  • если строка находится в состоянии Shared, то создается ее копия;
  • если строка находится в состоянии Modified, нужно проинформировать исходный каталог, что строка перешла в состояние Shared.

В обоих случаях строка берется из какой-то кэш-памяти. Отметим, что каталог содержит 1 бит на кластер, а не 1 бит на каждый ПЭ, поэтому битовое отображение каталогов остается неизменным. [6, с. 122].

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

  • если нужная строка находится в состоянии Uncached или Shared, то аппаратные средства вызывают эту строку из глобальной памяти и посылают обратно в запрашивающий кластер. Затем обновляют свой каталог, помечая данную строку как сохраненную в кэш-памяти кластера запрашивающей стороны; [17, с. 652].
  • если нужная строка находится в состоянии Modified, аппаратные средства находят кластер, который содержит эту строку, и посылают в этот кластер запрос. Получив запрос, кластер посылает данную строку в запрашивающий кластер и помечает ее копию как Shared, поскольку теперь эта строка находится более чем в одной кэш-памяти. Он также посылает копию обратно в исходный кластер, чтобы обновить память и изменить состояние строки на Shared.

Запись в память. Перед тем как осуществить запись, процессорный элемент ПЭ должен выявить единственного обладателя данной строки кэш-памяти в системе. [16, с. 285].

При наличии в кэш-памяти данного ПЭ этой строки действия зависят от ее состояния:

  • если строка находится в состоянии Modified, то можно сразу же осуществить запись;
  • если строка находится в состоянии Shared, то предварительно в исходный кластер посылается пакет, чтобы объявить все остальные копии недействительными.

При отсутствии нужной строки в кэш-памяти данного ПЭ он посылает запрос на локальную шину, чтобы узнать, нет ли этой строки в соседних ПЭ: [21, с. 185].

  • если данная строка там есть, то она передается из одной кэш-памяти в другую. Если эта строка в состоянии Shared, то все остальные копии должны быть объявлены недействительными;
  • если строка находится в других кластерах, в исходный кластер посылается пакет. При этом возможно три варианта:
  • если строка находится в состоянии Uncached, она помечается как Modified и отправляется к запрашивающему процессору;
  • если строка находится в состоянии Shared, все копии объявляются недействительными и после этого над строкой совершается та же процедура, что и над Uncached строкой;
  • если строка находится в состоянии Modified, то запрос направляется в тот кластер, в котором строка содержится в данный момент. Этот кластер удовлетворяет запрос, а затем объявляет недействительной свою собственную копию.

2.4 Мультипроцессор Sequent NUMA-Q

Особенностью этой системы является то, что в ней реализован масштабируемый когерентный интерфейс (Scalable Coherent Interface – SCI) со стандартным протоколом когерентности кэширования, который используется в ряде других компьютерных систем CC-NUMA. [17, с. 668].

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

Состав и структура мультипроцессора. Основой системы служит процессорный блок, содержащий (рис. 2.4,а):

  • 4 процессорных элемента ПЭ, в качестве которых используются процессоры Pentium Pro. Каждый процессор содержит два уровня кэш-памяти. Размер строки кэш-памяти равен 64 байтам. Непротиворечивость кэшей поддерживается путем отслеживания локальной шины;
  • модуль памяти МП емкостью до 4 Гбайт;
  • сетевой контроллер, поддерживающий протокол MESI. В его состав входят:
  • кэш-память емкостью 32 Мбайт;
  • каталог, который следит за тем, что находится в кэш-памяти;
  • интерфейс с локальной шиной;
  • информационное ядро (ИЯ) для соединения двух процессорных блоков. Оно передает данные от входа к выходу, оставляя те данные, которые предназначены для своего процессорного блока. [18, с. 352].

Конструктивно процессорный блок состоит из стандартной платы quad board (с ПЭ и МП) и платы сетевого контроллера IQ-Link. Для объединения процессорных блоков в систему плата quad board имеет гнездо, предназначенное для установки контроллеров сети. Все платы 1Q-Link микроконтроллера с помощью ИЯ соединяются друг с другом, образуя кольцевую структуру (рис. 2.4,б). [21, с. 195].

В рассматриваемом микроконтроллере реализуется два уровня протокола когерентности кэширования с использованием протокола MES1:

  • поддержка непротиворечивости кэшей всех плат IQ-Link в кольце;
  • сохранение непротиворечивости в каждом процессорном блоке между кэшами четырьмя ПЭ и кэш-памятью на 32 Мбайт сетевого контроллера.

Кольцо, соединяющее платы IQ-Link, можно представить как отдельные двухточечные кабели. Ширина кабеля составляет 18 бит: 1 бит синхронизации, 1 флаговый бит и 16 бит данных. Все биты передаются параллельно. Каналы синхронизируются с тактовой частотой 500 МГц, при этом скорость передачи данных составляет 1 Гбайт/с. По каналам передаются пакеты. Каждый пакет содержит заголовок из 14 байт; 0, 16, 64 или 256 байт данных и контрольную сумму на 2 байта. Трафик состоит из запросов и ответов. [3, с. 201]


Каждая плата quad board содержит 226 строк кэш-памяти по 64 байта. Неиспользуемая строка всегда находится в собственной памяти. Так как строки могут находиться в разных кэшах, для каждого процессорного блока существует таблица локальной памяти из 226 элементов, по которой можно находить местоположение строк. Для этого все копии строки кэш-памяти собираются в дважды связанный список. Элемент в таблице локальной памяти исходного процессорного блока показывает, в каком процессорном блоке содержится головная часть списка. [17, с. 685].

В машине NUMA-Q 2000 используется 6-битный номер, поскольку в ней может быть максимум 63 узла. Для системы SCI максимального размера достаточно будет 16-битного номера. Такая схема подходит для больших систем гораздо лучше, чем битовое отображение. Именно это свойство делает SCI более расширяемой по сравнению с системой DASH. [12, с. 98].

Поскольку размер кэш-памяти составляет 32 Мбайт (225), а строка кэш-памяти включает 64 байта (26), каждая плата 1Q-Link может содержать до 219 строк кэш-памяти. Поэтому каждый каталог также содержит 219 элементов, по одному элементу на каждую строку кэш-памяти. [14, с. 72].

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

2.5 Мультипроцессоры СОМА

Основной недостаток компьютерных систем NUMA и CC-NUMA состоит в том, что обращения к удаленной памяти (которые происходят гораздо медленнее, чем обращения к локальной памяти) снижают производительность и препятствуют расширению системы. [21, с. 125].

В системах СОМА (Cache Only Memory Access – архитектура с доступом только к кэш-памяти) основная память каждого процессора используется как кэш-память. В ней физическое адресное пространство делится на строки (а не на страницы, как в системах NUMA и CC-NUMA), которые при необходимости перемещаются по системе. Память, которая привлекает строки, называется attraction memory. Использование основной памяти в качестве кэш-памяти большой емкости увеличивает частоту успешных к ней обращений, что сопутствует повышению производительности. [20, с. 560].

Однако с расширением кэша появляется две проблемы: