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

Система с распределенной памятью, часто называемая мультикомпьютером , состоит из нескольких независимых вычислительных узлов с локальными модулями памяти, которые соединены общей сетью взаимосвязей. Программные системы DSM могут быть реализованы в операционной системе или в виде библиотеки программирования и могут рассматриваться как расширения базовой архитектуры виртуальной памяти . При реализации в операционной системе такие системы прозрачны для разработчика; это означает, что базовая распределенная память полностью скрыта от пользователей. Напротив, программные системы DSM, реализованные на уровне библиотеки или языка, непрозрачны, и разработчикам обычно приходится программировать их по-другому. Однако эти системы предлагают более портативный подход к реализации системы DSM. Система DSM реализует модель общей памяти в физически распределенной системе памяти.
DSM может быть достигнут как с помощью программного, так и аппаратного обеспечения. Примеры аппаратного обеспечения включают схемы когерентности кэша и контроллеры сетевых интерфейсов . Существует три способа реализации DSM:
- Страничный подход с использованием виртуальной памяти
- Подход с общими переменными, использующий процедуры для доступа к общим переменным
- Объектно-ориентированный подход, в идеале доступ к общим данным через объектно-ориентированную дисциплину.
Преимущества [ править ]
- Хорошо масштабируется с большим количеством узлов.
- Передача сообщений скрыта
- Может обрабатывать сложные и большие базы данных без репликации или отправки данных в процессы.
- Как правило, дешевле, чем использование многопроцессорной системы.
- Обеспечивает большое пространство виртуальной памяти
- Программы более портативны благодаря общим программным интерфейсам.
- Защитите программистов от отправки или получения примитивов
Недостатки [ править ]
- Доступ обычно медленнее, чем к нераспределенной общей памяти.
- Должен обеспечивать дополнительную защиту от одновременного доступа к общим данным.
- Может повлечь за собой штраф за производительность
- Небольшой контроль программиста над фактическими генерируемыми сообщениями.
- Программистам необходимо понимать модели согласованности, чтобы писать правильные программы.
Сравнение с передачей сообщений [ править ]
Передача сообщений | Распределенная общая память |
---|---|
Переменные должны быть упорядочены | Переменные доступны напрямую |
Стоимость связи очевидна | Стоимость связи невидима |
Процессы защищены наличием частного адресного пространства. | Процессы могут вызвать ошибку из-за изменения данных |
Процессы должны выполняться одновременно | Выполнение процессов может происходить с непересекающимися сроками жизни. |
Программные системы DSM также обладают гибкостью в организации области общей памяти различными способами. При страничном подходе общая память организуется в страницы фиксированного размера. Напротив, объектно-ориентированный подход организует область общей памяти как абстрактное пространство для хранения общих объектов переменных размеров. Другая распространенная реализация использует пространство кортежей , в котором единицей совместного использования является кортеж .
Архитектура общей памяти может включать разделение памяти на общие части, распределенные между узлами и основной памятью; или распределение всей памяти между узлами. Протокол согласованности , выбранный в соответствии с моделью согласованности , поддерживает согласованность памяти .
Согласованность памяти каталогов [ править ]
Когерентность памяти необходима для того, чтобы система, которая организует DSM, могла отслеживать и поддерживать состояние блоков данных в узлах памяти, составляющей систему. Каталог — это один из таких механизмов, который поддерживает состояние блоков кэша, перемещающихся по системе.
Штаты [ править ]

Базовый DSM будет отслеживать как минимум три состояния узлов для любого данного блока в каталоге. [2] Будет некоторое состояние, определяющее блок как некэшируемый (U), состояние, определяющее блок как единолично принадлежащий или измененный (EM), и состояние, определяющее блок как общий (S). По мере поступления блоков в структуру каталогов они переходят из U в EM (состояние владения) в начальном узле. Состояние может перейти в S, когда другие узлы начнут читать блок.
Существует два основных метода, позволяющих системе отслеживать, где и в каком состоянии кэшируются блоки на каждом узле. Запрос-ответ, ориентированный на дом, использует дом для обслуживания запросов и управления состояниями, тогда как ориентированный на запрашивающего позволяет каждому узлу управлять своими собственными запросами через дом.
Домашний запрос и ответ [ править ]
В системе, ориентированной на дом, DSM избегает необходимости обрабатывать гонки запрос-ответ между узлами, позволяя выполнять только одну транзакцию за раз, пока домашний узел не решит, что транзакция завершена - обычно, когда домашний узел получил все ответные сообщения. ответ процессора на запрос. Примером этого является Intel QPI . режим домашнего источника [3] Преимущества этого подхода в том, что его просто реализовать, но его стратегия запроса-ответа медленная и буферизованная из-за ограничений домашнего узла.
Запрос и ответ, ориентированный на запрашивающую сторону [ править ]
В системе, ориентированной на запросчика, DSM позволит узлам по своему желанию общаться друг с другом через дом. Это означает, что несколько узлов могут попытаться начать транзакцию, но это требует дополнительных соображений для обеспечения согласованности. Например: когда один узел обрабатывает блок, если он получает запрос на этот блок от другого узла, он отправляет NAck (отрицательное подтверждение), чтобы сообщить инициатору, что обрабатывающий узел не может выполнить этот запрос сразу. Примером этого является режим отслеживания источника QPI от Intel. [3] Этот подход является быстрым, но естественным образом не предотвращает состояния гонки и генерирует больше автобусного трафика.
Модели согласованности [ править ]
Предположим, у нас есть n процессов и Mi операций с памятью для каждого процесса i , и что все операции выполняются последовательно. Можно заключить, что ( M1 + M2 + … + Mn )!/( M1 ! M2 !… Mn !) являются возможными чередованиями операций. Проблема с этим выводом заключается в определении правильности чередующихся операций. Когерентность памяти для DSM определяет, какие чередования разрешены.

Репликация [ править ]
Существует два типа алгоритмов репликации. Репликация чтения и репликация записи. При репликации чтения несколько узлов могут читать одновременно, но только один узел может писать. При репликации записи несколько узлов могут читать и писать одновременно. Запросы на запись обрабатываются секвенсором. Репликация общих данных в целом имеет тенденцию:
- Уменьшите сетевой трафик
- Содействие увеличению параллелизма
- Результат: меньше ошибок на страницах
Однако сохранение согласованности и последовательности может оказаться более сложной задачей.
Согласованность выпуска и ввода [ править ]
- Согласованность выпуска: когда процесс выходит из критического раздела , новые значения переменных распространяются на все сайты.
- Согласованность ввода: когда процесс входит в критическую секцию, он автоматически обновляет значения общих переменных.
- Согласованность на основе представлений: это вариант согласованности ввода, за исключением того, что общие переменные критического раздела автоматически обнаруживаются системой. Реализацией согласованности на основе представлений является VODCA, заархивированная 15 февраля 2016 г. на Wayback Machine , которая имеет производительность, сравнимую с MPI на кластерных компьютерах.
Примеры [ править ]
- Керринесс
- Открытый SSI
- МОСИКС
- Следы протектора
- ВОДКА. Архивировано 15 февраля 2016 г. в Wayback Machine.
- ДИПК
См. также [ править ]
- Распределенный кэш — тип компьютерного кэша.
- Виртуализация памяти - термин информатики
- Образ одной системы — операционная система, выделенная для кластера.
- Удаленный прямой доступ к памяти — прямой аппаратный доступ к памяти низкого уровня.
Ссылки [ править ]
- ^ Паттерсон, Дэвид А .; Хеннесси, Джон Л. (2006). Компьютерная архитектура: количественный подход (4-е изд.). Берлингтон, Массачусетс: Морган Кауфманн. ISBN 978-01-2370490-0 .
- ^ Солихин, Ян (2015). Основы параллельной многоядерной архитектуры . Бока-Ратон, Флорида: Чепмен и Холл / CRC. стр. 339–340. ISBN 9781482211184 .
- ^ Jump up to: Перейти обратно: а б Сорин, Дэниел Дж.; Хилл, Марк Д.; Вуд, Дэвид А. (2011). Учебник по согласованности памяти и согласованности кэша . Морган и Клейпул. п. 174. ИСБН 978-16-0845564-5 .
Внешние ссылки [ править ]
- Распределенный общий кэш
- Когерентность памяти в системах общей виртуальной памяти Кай Ли и Пола Худака, опубликованная в журнале ACM Transactions on Computer Systems, том 7, выпуск 4, ноябрь 1989 г.