Последовательная согласованность - Sequential consistency
Последовательная согласованность один из модели согласованности используется в области параллельные вычисления (например, в распределенная разделяемая память, распределенные транзакции, так далее.).
Сначала оно было определено как свойство, требующее, чтобы
- «... результат любого выполнения такой же, как если бы операции всех процессоров выполнялись в некотором последовательном порядке, и операции каждого отдельного процессора появляются в этой последовательности в порядке, указанном его программой».[1]
Чтобы понять это утверждение, важно понимать одно ключевое свойство последовательной согласованности: порядок выполнения программы в том же процессоре (или потоке) такой же, как порядок выполнения программы, в то время как порядок выполнения программы между процессорами (или потоками) не определен. . В таком примере:
процессор 1: <- запуск A1 -> <- запуск B1 -> <- запуск C1 -> процессор 2: <- запуск A2 -> <- запуск B2 -> время --- -------------------------------------------------- ---------------->
порядок выполнения между A1, B1 и C1 сохраняется, то есть A1 выполняется перед B1, а B1 перед C1. То же самое для A2 и B2. Но поскольку порядок выполнения между процессорами не определен, B2 может выполняться до или после C1 (B2 может физически запускаться до C1, но эффект B2 может быть замечен после того, как C1, что совпадает с «B2 запускается после C1»)
Концептуально существует единственная глобальная память и «переключатель», который подключает произвольный процессор к памяти на любом временном шаге. Каждый процессор выполняет операции с памятью в заказ программы а коммутатор обеспечивает глобальную сериализацию всех операций с памятью[2]
Последовательная согласованность слабее, чем строгая последовательность, который требует чтения из местоположения, чтобы вернуть значение последней записи в это место; Строгая последовательность требует, чтобы операции отображались в том порядке, в котором они были фактически выполнены.
Смотрите также
использованная литература
- ^ Лесли Лэмпорт, «Как создать многопроцессорный компьютер, который правильно выполняет многопроцессорные программы», IEEE Trans. Comput. С-28,9 (сентябрь 1979 г.), 690-691.
- ^ Сарита В. Адве, Курош Гарачорлоо, «Модели согласованности общей памяти: Учебное пособие»