Согласованность процессора - одна из моделей согласованности, используемых в области параллельных вычислений (например, в распределенной разделяемой памяти , распределенных транзакциях и т. Д.).
Система демонстрирует согласованность процессора, если порядок, в котором другие процессоры видят записи от любого отдельного процессора, совпадает с порядком, в котором они были отправлены. Из-за этого Processor Consistency применима только к системам с несколькими процессорами. Она слабее, чем модель причинной согласованности, поскольку не требует, чтобы записи от всех процессоров выполнялись в одном и том же порядке, но более сильная, чем модель согласованности PRAM, поскольку требует согласованности кэша . [1] Еще одно различие между причинной согласованностью и согласованностью процессора заключается в том, что согласованность процессора устраняет требования к загрузкам, ожидающим завершения сохранения, и атомарности записи . [1]Согласованность процессора также сильнее, чем согласованность кэша, поскольку согласованность процессора требует, чтобы все операции записи, выполняемые процессором, просматривались по порядку, а не только записи в одну и ту же область памяти. [1]
Примеры согласованности процессора
П 1 | Вт (х) 1 | Вт (х) 3 | ||
---|---|---|---|---|
P 2 | R (х) 1 | R (х) 3 | ||
P 3 | Вт (г) 1 | Вт (г) 2 | ||
Стр. 4 | R (у) 1 | R (у) 2 |
П 1 | Вт (х) 1 | Вт (х) 3 | ||
---|---|---|---|---|
P 2 | R (х) 3 | R (х) 1 | ||
P 3 | Вт (г) 1 | Вт (г) 2 | ||
Стр. 4 | R (у) 2 | R (у) 1 |
В примере 1 справа простая система следует за согласованностью процессора, поскольку все операции записи каждым процессором видны в том порядке, в котором они выполнялись другими процессорами, и транзакции согласованы. Пример 2 НЕ согласован с процессором, так как записи P1 и P3 видны не по порядку для P2 и P4 соответственно.
В примере 3 ниже самой сильной применимой моделью согласованности является согласованность процессора. Это легко определить, потому что на процессор выполняется не более одной записи. Этот пример не является причинно непротиворечивым, однако, поскольку R (x) 1 в P2 может потенциально вызвать W (x) 2 в P2, мы можем установить, что W (x) 1 в P1 причинно предшествует W (x) 2 в P2. Однако P3 и P4 не согласны с порядком записи этих двух записей P1 и P2.
Система в примере 4 несовместима с процессором, потому что некоторые операции записи, выполняемые одним и тем же процессором, воспринимаются другими процессорами не по порядку. Более конкретно, записи в одно место видны по порядку, но W (x) 2 на P1 не видится перед W (y) 4 на P2. Тот факт, что единственные записи, видимые по порядку, - это записи в одну и ту же область памяти, ограничивает этот пример согласованностью кэша.
П 1 | Вт (х) 1 | ||||
---|---|---|---|---|---|
P 2 | R (х) 1 | Вт (х) 2 | |||
P 3 | R (х) 1 | R (х) 2 | |||
Стр. 4 | R (х) 2 | R (х) 1 |
П 1 | Вт (х) 2 | Вт (г) 4 | Вт (х) 3 | Вт (г) 1 | ||
---|---|---|---|---|---|---|
P 2 | R (у) 4 | R (х) 2 | R (у) 1 | R (х) 3 |
Согласованность процессора и последовательная согласованность
Согласованность процессора (ПК) ослабляет порядок между старыми хранилищами и более молодыми загрузками, что обеспечивается в последовательной согласованности (SC). [2] Это позволяет загружать в кэш и потенциально завершаться раньше, чем старые хранилища, что означает, что хранилища могут быть поставлены в очередь в буфере записи без необходимости реализации предположений о загрузке (загрузка может продолжаться свободно). [3] В этом отношении ПК работает лучше, чем SC, потому что в методах восстановления после неудачных спекуляций нет необходимости, что означает меньшее количество сбросов конвейера. [3] предварительная выборка оптимизации, SC системы используют также применимы к системам ПК. [3] Предварительная выборка - это процесс заблаговременной выборки данных для предстоящих загрузок и сохранений до того, как они действительно понадобятся, чтобы сократить задержку загрузки / сохранения. Поскольку ПК снижает задержку загрузки, позволяя переупорядочивать нагрузки перед соответствующими хранилищами, потребность в предварительной выборке несколько снижается, поскольку предварительно выбранные данные будут использоваться больше для хранилищ, чем для загрузок. [3]
Интуиция программиста
С точки зрения того, насколько хорошо система ПК следует интуиции программиста, оказывается, что в правильно синхронизированных системах результаты ПК и SC одинаковы. [3] Интуиция программиста - это, по сути, то, как программист ожидает выполнения инструкций, обычно в том, что называется «программным порядком». Порядок выполнения программ в многопроцессорной системе - это выполнение инструкций, приводящее к тому же результату, что и последовательное выполнение. Тот факт, что ПК и SC следуют этому ожиданию, является прямым следствием того факта, что соответствующие загрузки и хранилища в системах ПК по-прежнему упорядочены относительно друг друга. [3] Например, при синхронизации блокировок единственной операцией, поведение которой не полностью определяется ПК, является хранилище блокировки-получения, где последующие загрузки находятся в критической секции, и их порядок влияет на результат. [3] Эта операция, однако, обычно реализуется с помощью условной или атомарной инструкции сохранения, так что, если операция не удалась, она будет повторена позже, и все младшие загрузки также будут повторены. [3] Все загрузки, происходящие до этого хранилища, по-прежнему упорядочены с учетом нагрузок, возникающих в критической секции, и поэтому все старые загрузки должны завершиться до того, как загрузки в критической секции смогут работать.
Согласованность процессора и другие модели упрощенной согласованности
Согласованность процессора, хотя и слабее, чем последовательная, в большинстве случаев все же является более сильной моделью согласованности, чем это необходимо. Это связано с количеством точек синхронизации, присущих программам, работающим в многопроцессорных системах. [4] Это означает, что не может произойти никаких гонок данных (гонка данных - это множественные одновременные обращения к участку памяти, где по крайней мере один доступ является записью). [3] Имея это в виду, становится ясно, что модель может допускать реорганизацию всех операций с памятью до тех пор, пока ни одна операция не пересекает точку синхронизации [3], а одна это делает, что называется слабым порядком. Однако слабый порядок налагает некоторые из тех же ограничений, что и согласованность процессора, а именно: система должна оставаться согласованной, и, таким образом, все записи в одну и ту же ячейку памяти должны просматриваться всеми процессорами в одном и том же порядке. [4] Подобно слабому упорядочиванию, модель согласованности выпуска позволяет переупорядочивать все операции с памятью, но она становится еще более конкретной и разбивает операции синхронизации, чтобы позволить большее ослабление переупорядочения. [3] Обе эти модели предполагают правильную синхронизацию кода и в некоторых случаях поддержку аппаратной синхронизации, поэтому согласованность процессора является более безопасной моделью, которой следует придерживаться, если кто-то не уверен в надежности программ, которые будут запускаться с использованием этой модели.
Сходство с моделями памяти SPARC V8 TSO, IBM-370 и x86-TSO
Одним из основных компонентов согласованности процессора является то, что если за записью следует чтение, то разрешается выполнение вне программного порядка. По сути, это приводит к сокрытию задержки записи, когда загрузка может идти впереди магазина. Поскольку многие приложения правильно работают с этой структурой, системы, реализующие этот тип ослабленного упорядочивания, обычно кажутся последовательными. Две другие модели, соответствующие этой спецификации, - это SPARC V8 TSO (Total Store Ordering) и IBM-370. [4]
Модель IBM-370 следует спецификации, разрешающей выполнение записи с последующим чтением вне программного порядка, за некоторыми исключениями. Во-первых, если операции выполняются в одном месте, они должны выполняться в программном порядке. Во-вторых, если любая операция является частью инструкции сериализации или между двумя операциями есть инструкция сериализации, то операции должны выполняться в программном порядке. [4] Эта модель, пожалуй, самая строгая из трех рассматриваемых моделей, поскольку модель TSO устраняет одно из упомянутых исключений.
Модель SPARC V8 TSO очень похожа на модель IBM-370 с тем ключевым отличием, что она позволяет выполнять операции в одном и том же месте вне программного порядка. При этом возможно, что загрузка вернет произошедшее хранилище, которое «устарело» с точки зрения программного порядка. [4] Эти модели похожи на согласованность процессора, но в то время как эти модели имеют только одну копию памяти, согласованность процессора не имеет такого ограничения. Это предполагает систему, в которой каждый процессор имеет свою собственную память, что подчеркивает при согласованности процессора «требование согласованности». [4] "
Модель x86-TSO имеет несколько различных определений. Общая модель магазина, как следует из названия, очень похожа на SPARC V8. Другое определение основано на локальных буферах записи. Различия моделей x86 и SPARC TSO заключаются в отсутствии одних инструкций и включении других, но сами модели очень похожи. [5] Определение буфера записи использует различные состояния и блокировки, чтобы определить, может ли конкретное значение быть прочитано / записано. Кроме того, эта конкретная модель для архитектуры x86 не страдает от проблем предыдущих (более слабой согласованности) моделей и предоставляет программистам более интуитивно понятную основу для дальнейшего развития. [5]
Смотрите также
Рекомендации
- ^ а б в Дэвид Мосбергер (1992). «Модели согласованности памяти» (PDF) . Университет Аризоны . Проверено 1 апреля 2015 . Цитировать журнал требует
|journal=
( помощь ) - ^ Курош Гарачорлоо; Даниэль Леноски; Джеймс Лаудон; Филип Гиббонс; Ануп Гупта; Джон Хеннесси (1 августа 1998 г.). «Согласованность памяти и порядок событий в масштабируемых мультипроцессорах с общей памятью» (PDF) . ACM . Проверено 1 апреля 2015 . Цитировать журнал требует
|journal=
( помощь ) - ^ Б с д е е г ч я J K Солихин, Ян (2009). Основы параллельной компьютерной архитектуры: многокристальные и многоядерные системы . Солихин Паб. С. 297–299. ISBN 978-0-9841630-0-7.
- ^ а б в г д е Курош Гарачорлоо (1995). «Модели согласованности памяти для мультипроцессоров с общей памятью» (PDF) . Западная исследовательская лаборатория . Проверено 7 апреля 2015 . Цитировать журнал требует
|journal=
( помощь ) - ^ а б Скотт Оуэнс; Сусмит Саркар; Питер Сьюэлл (2009). «Лучшая модель памяти x86: x86-TSO (расширенная версия)» (PDF) . Кембриджский университет . Проверено 8 апреля 2015 . Цитировать журнал требует
|journal=
( помощь )