Согласованность процессора
Согласованность процессора — это одна из моделей согласованности, используемых в области параллельных вычислений (например, в распределенной общей памяти , распределенных транзакциях и т. д.).
Система демонстрирует согласованность процессора, если порядок, в котором другие процессоры видят записи от любого отдельного процессора, совпадает с порядком, в котором они были выполнены. По этой причине согласованность процессоров применима только к системам с несколькими процессорами. Она слабее, чем модель причинной согласованности , поскольку не требует, чтобы операции записи со всех процессоров выполнялись в одном и том же порядке, но сильнее, чем модель согласованности PRAM , поскольку требует согласованности кэша . [1] Еще одно различие между причинной согласованностью и согласованностью процессора заключается в том, что согласованность процессора устраняет требования к загрузке, ожидающей завершения сохранения, а также к атомарности записи . [1] Согласованность процессора также сильнее, чем согласованность кэша , поскольку согласованность процессора требует, чтобы все записи процессора были видны по порядку, а не только записи в одну и ту же ячейку памяти. [1]
Примеры согласованности процессора
[ редактировать ]PП1 | Вт(х)1 | Вт(х)3 | ||
---|---|---|---|---|
П 2 | Р(х)1 | Р(х)3 | ||
PP3 | Вт(у)1 | Вт(у)2 | ||
PP4 | Р(у)1 | Р(у)2 |
PП1 | Вт(х)1 | Вт(х)3 | ||
---|---|---|---|---|
П 2 | Р(х)3 | Р(х)1 | ||
PP3 | Вт(у)1 | Вт(у)2 | ||
PP4 | Р(у)2 | Р(у)1 |
В примере 1 справа простая система следует принципам согласованности процессоров, поскольку все записи каждого процессора отображаются в том порядке, в котором они происходили другими процессорами, и транзакции являются согласованными.
Пример 2 не является согласованным с процессором, поскольку записи P1 и P3 рассматриваются как неупорядоченные P2 и P4 соответственно.
Пример 3 является согласованным по процессору и не является причинно-согласованным, поскольку R(y)3,R(x)1
в P3: для причинно-следственной связи должно быть R(y)3,R(x)2
поскольку W(x)2 в P1 причинно предшествует W(y)3 в P2.
Пример 4 несовместим с процессором, поскольку R(y)3,R(x)1
в P2: для согласованности процессора должно быть R(y)3,R(x)2
потому что W(x)2 — это последняя запись в x, предшествующая W(y)3 в P1.
В этом примере кэш согласован, поскольку P2 видит записи в отдельные ячейки памяти в том порядке, в котором они были выполнены в P1.
PП1 | Вт(х)1 | Вт(х)2 | ||||
---|---|---|---|---|---|---|
П 2 | Р(х)2 | Вт(у)3 | ||||
PP3 | Р(у)3 | Р(х)1 |
PП1 | Вт(х)1 | Вт(х)2 | Вт(у)3 | ||
---|---|---|---|---|---|
П 2 | Р(у)3 | Р(х)1 |
Согласованность процессора и последовательная согласованность
[ редактировать ]Согласованность процессора (ПК) ослабляет порядок между старыми хранилищами и более молодыми загрузками, который обеспечивается последовательной согласованностью (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]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с Дэвид Мосбергер (1992). «Модели согласованности памяти» (PDF) . Университет Аризоны . Проверено 1 апреля 2015 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Курош Гарачорлоо; Дэниел Леноски; Джеймс Лаудон; Филипп Гиббонс; Ануп Гупта; Джон Хеннесси (1 августа 1998 г.). «Согласованность памяти и порядок событий в масштабируемых мультипроцессорах с общей памятью» (PDF) . 25 лет международным симпозиумам по компьютерной архитектуре (Избранные статьи) . АКМ. стр. 376–387. дои : 10.1145/285930.285997 . ISBN 1581130589 . S2CID 47089892 . Проверено 1 апреля 2015 г.
- ^ Jump up to: а б с д и ж г час я дж к Солихин, Ян (2009). Основы параллельной компьютерной архитектуры: многокристальные и многоядерные системы . Солихин Паб. стр. 297–299. ISBN 978-0-9841630-0-7 .
- ^ Jump up to: а б с д и ж Курош Гарачорлоо (1995). «Модели согласованности памяти для мультипроцессоров с общей памятью» (PDF) . Западная исследовательская лаборатория . Проверено 7 апреля 2015 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Jump up to: а б Скотт Оуэнс; Сумит Саркар; Питер Сьюэлл (2009). «Лучшая модель памяти x86: x86-TSO (расширенная версия)» (PDF) . Кембриджский университет. дои : 10.48456/tr-745 . Проверено 8 апреля 2015 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь )