Введение

В информатике распределенная общая память (DSM) — это форма архитектуры памяти, при которой физически разделенные модули памяти могут адресоваться как единое общее адресное пространство. Термин «общий» не означает, что существует единая централизованная память, а то, что адресное пространство является общим, то есть один и тот же физический адрес на двух процессорах указывает на одно и то же место в памяти. Распределенное глобальное адресное пространство (DGAS) — это схожий термин, используемый для обозначения широкого класса программных и аппаратных реализаций, в которых каждый узел кластера имеет доступ к общей памяти в дополнение к собственной (т.е. не общей) памяти каждого узла.

Когерентность каталога памяти

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

Государства

Базовый DSM отслеживает как минимум три состояния узлов для любого заданного блока в каталоге. Предусмотрено состояние, указывающее на то, что блок не находится в кэше (U), состояние, указывающее на исключительное владение или модификацию блока (EM), и состояние, указывающее на совместное использование блока (S). По мере поступления блоков в структуру каталога они переходят из состояния U в состояние EM (владения) в исходном узле. Состояние может перейти в S, когда другие узлы начинают читать этот блок. Существует два основных метода, позволяющих системе отслеживать, где блоки кэшированы и в каком состоянии, на каждом узле. В архитектуре, ориентированной на домашний узел, домашний узел обрабатывает запросы и управляет состояниями, в то время как в архитектуре, ориентированной на запрашивающий узел, каждый узел самостоятельно управляет своими запросами через домашний узел.

Запрос и ответ, ориентированные на домашний уровень

В системе с централизованным домашним узлом (home centric), DSM избежит гонок при обмене запросами и ответами между узлами, допуская выполнение только одной транзакции за раз, пока домашний узел не определит, что транзакция завершена – обычно, когда домашний узел получит ответы от всех участвующих процессоров на запрос. Примером этого является режим домашнего источника QPI от Intel. Преимущество этого подхода – простота реализации, однако его стратегия обработки запросов и ответов медленная и требует буферизации из-за ограничений домашнего узла.

Запрос и ответ, ориентированные на заявителя

В системе, ориентированной на запросы, DSM позволит узлам свободно взаимодействовать друг с другом через домашний узел. Это означает, что несколько узлов могут попытаться инициировать транзакцию, однако это требует дополнительных мер для обеспечения когерентности. Например, если один узел обрабатывает блок, и получает запрос на этот блок от другого узла, он отправит NAck (отрицательное подтверждение), чтобы сообщить инициатору, что узел, выполняющий обработку, не может выполнить этот запрос немедленно. Примером подобного подхода является режим QPI с подглядыванием источника от Intel. Этот метод быстрый, но он не предотвращает возникновение гонок данных и генерирует больше трафика шины.

Модели согласованности

DSM должен следовать определенным правилам для обеспечения согласованности в трактовке порядка чтения и записи между узлами, что называется моделью согласованности системы. Предположим, у нас есть n процессов и Mi операций памяти для каждого процесса i, при этом все операции выполняются последовательно. Из этого следует, что существует (M1 + M2 + … + Mn)!/(M1! M2! … Mn!) возможных переплетений операций. Однако сложность заключается в определении корректности этих переплетенных операций. Когерентность памяти в DSM определяет, какие переплетения допустимы.

Консистенция выпуска и входа

Последовательность выпуска: когда процесс покидает критическую секцию, новые значения переменных распространяются во все узлы. Последовательность входа: когда процесс входит в критическую секцию, он автоматически обновляет значения общих переменных. Согласованность на основе представления: это вариант последовательности входа, за исключением того, что общие переменные критической секции автоматически определяются системой. Реализация согласованности на основе представления – VODCA, которая демонстрирует сопоставимую производительность с MPI на кластерных компьютерах.