stringtranslate.com

Согласованность процессора

Согласованность процессора — это одна из моделей согласованности, используемых в области параллельных вычислений (например, в распределенной общей памяти , распределенных транзакциях и т. д.).

Система демонстрирует согласованность процессора, если порядок, в котором другие процессоры видят записи от любого отдельного процессора, совпадает с порядком, в котором они были выполнены. По этой причине согласованность процессоров применима только к системам с несколькими процессорами. Она слабее, чем модель причинной согласованности, поскольку не требует, чтобы операции записи со всех процессоров выполнялись в одном и том же порядке, но сильнее, чем модель согласованности PRAM, поскольку требует согласованности кэша . [1] Еще одно различие между причинной согласованностью и согласованностью процессора заключается в том, что согласованность процессора устраняет требования к загрузке, ожидающей завершения сохранения, а также к атомарности записи . [1] Согласованность процессора также сильнее, чем согласованность кэша, поскольку согласованность процессора требует, чтобы все записи процессора были видны по порядку, а не только записи в одну и ту же ячейку памяти. [1]

Примеры согласованности процессора

В примере 1 справа простая система следует принципам согласованности процессоров, поскольку все записи каждого процессора отображаются в том порядке, в котором они происходили другими процессорами, и транзакции являются согласованными.

Пример 2 не является согласованным с процессором, поскольку записи P1 и P3 рассматриваются как неупорядоченные P2 и P4 соответственно.

Пример 3 является последовательным для процессора, а не причинно-согласованным, потому что в P3: для причинно-следственной согласованности так и должно быть , поскольку W(x)2 в P1 причинно предшествует W(y)3 в P2. R(y)3,R(x)1 R(y)3,R(x)2

Пример 4 не является согласованным с процессором, потому что в P2: для согласованности процессора это должно быть так, потому что W(x)2 — это последняя запись в x, предшествующая W(y)3 в P1. В этом примере кэш согласован, поскольку P2 видит записи в отдельные ячейки памяти в том порядке, в котором они были выполнены в P1. R(y)3,R(x)1 R(y)3,R(x)2

Согласованность процессора и последовательная согласованность

Согласованность процессора (ПК) ослабляет порядок между старыми хранилищами и более молодыми загрузками, который обеспечивается последовательной согласованностью (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]

Смотрите также

Рекомендации

  1. ^ abc Дэвид Мосбергер (1992). «Модели согласованности памяти» (PDF) . Университет Аризоны . Проверено 1 апреля 2015 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  2. ^ Курош Гарачорлоо; Дэниел Леноски; Джеймс Лаудон; Филипп Гиббонс; Ануп Гупта; Джон Хеннесси (1 августа 1998 г.). «Согласованность памяти и порядок событий в масштабируемых мультипроцессорах с общей памятью» (PDF) . 25 лет международным симпозиумам по компьютерной архитектуре (Избранные статьи) . АКМ. стр. 376–387. дои : 10.1145/285930.285997. ISBN 1581130589. S2CID  47089892 . Проверено 1 апреля 2015 г.
  3. ^ abcdefghijk Солихин, Ян (2009). Основы параллельной компьютерной архитектуры: многокристальные и многоядерные системы . Солихин Паб. стр. 297–299. ISBN 978-0-9841630-0-7.
  4. ^ abcdef Курош Гарачорлоо (1995). «Модели согласованности памяти для мультипроцессоров с общей памятью» (PDF) . Западная исследовательская лаборатория . Проверено 7 апреля 2015 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  5. ^ аб Скотт Оуэнс; Сумит Саркар; Питер Сьюэлл (2009). «Лучшая модель памяти x86: x86-TSO (расширенная версия)» (PDF) . Кембриджский университет. дои : 10.48456/tr-745 . Проверено 8 апреля 2015 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )