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