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

Я не понимаю этого. Допустим, у меня есть значение 10 по адресу памяти x.

Если у нас есть

thread1:
Read(x)
x+=5
Write(x)

а потом:

thread2:
Read(x)
x+=2
Write(x)

Я не понимаю, что является допустимым последовательным или строгим соответствием.

Например, здесь, является ли это действительным строго последовательным результатом операций?

T1: R(x), found 10                W(x), x is now 15
T2                 R(x),found 10                     W(x), x is now 12

Это кажется таким бесполезным. x имеет неправильное значение... оно не было аддитивным. При этом доступы, выполняемые каждым процессором, сохранялись в порядке, и один и тот же порядок был виден всем. Это критерий строгой согласованности, верно? Неважно, что результат был раздавлен.

А для последовательной последовательности... Я не вижу разницы между ней и строгой.


person PinkElephantsOnParade    schedule 04.12.2014    source источник


Ответы (1)


Частично отвечая на ваш вопрос:

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

Но они по-прежнему последовательно согласованы. Моя собственная интерпретация заключается в том, что изменение порядка операций в ячейке памяти после их выполнения нарушит требование согласованности. Это как если бы глобальный билет был получен во время выдачи, и механизм выполнения учитывает заказ билетов.

«Проблема», если можно так выразиться, заключается в самой выдаче инструкций — в том, что T1 и T2 могут выдавать их в любом порядке. Если приложение устраивает такой уровень согласованности, оно должно с удовольствием его использовать.

Гипотетическая ситуация: допустим, мы хотим, чтобы некоторое место в памяти обновлялось несколькими потоками, и читатель после завершения всех потоков должен прочитать последнее записанное значение — вам нужно только последнее, чтобы выиграть в порядке их выдачи. Конечно, это узкая ситуация, но в некоторых случаях желательная.

person KalyanS    schedule 04.12.2014