Файл: Системы с распределенной разделяемой памятью (Классификация архитектур вычислительных систем).pdf
Добавлен: 03.07.2023
Просмотров: 433
Скачиваний: 6
СОДЕРЖАНИЕ
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ И КЛАССИФИКАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
1.1 Классификация архитектур вычислительных систем
1.2 Понятие и сущность вычислительной системы с распределенной памятью (distributed memory)
2. АНАЛИЗ СПОСОБОВ ПОСТРОЕНИЯ МИКРОПРОЦЕССОРОВ NUMA
2.2 Мультипроцессоры NC-NUMA с координатными коммутаторами
2.3 Мультипроцессор Stanford DASH
Об изменении строки необходимо сообщить в исходный процессорный блок даже в том случае, когда в кэш-памяти существует только одна копия строки. При наличии нескольких копий изменение одной из них требует объявления всех остальных копий недействительными.
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].
Однако с расширением кэша появляется две проблемы: