Расслабленная атомика и буфер переупорядочения - PullRequest
1 голос
/ 20 сентября 2019

Современные процессоры выполняют команды не по порядку согласно Алгоритму Томасуло , поэтому цель буфера переупорядочения состоит в том, чтобы гарантировать, что результаты инструкций записывается в программном порядке через указатели ISSUE и COMMIT.Поэтому, если у меня есть инструкции X, Y, Z, фактический порядок выполнения мог бы быть Y, Z, X, но порядок, в котором любые результаты записываются обратно (зафиксирован / удален), равен X, Y, Z.

Теперь, Я не понимаю, как это связано с C ++ 11 расслабленной атомикой. Википедия говорит мне, во-первых, что (выделено мое)

Упорядочение памяти описывает порядок доступа к памяти компьютера процессором.Термин может относиться либо к упорядочению памяти, сгенерированному компилятором во время компиляции, , либо к упорядочению памяти, сгенерированному ЦП во время выполнения.

... и это срасслабленная согласованность:

Грузы могут быть переупорядочены после нагрузок (для лучшей работы согласованности кэша, лучшего масштабирования)

Грузы могут быть переупорядочены после магазинов

Магазины могут бытьпереупорядочение после хранения Магазины можно переупорядочить после загрузки

Так что я не понимаю, что на самом деле дает мне расслабленная атомика, поскольку любая инструкция может быть выполнена не по порядку, , но всегда имеетбыть «переданным / удаленным» в порядке, указанном в буфере переупорядочения .

ПОЛОЖЕНИЕ: Конечно, не может быть, чтобы расслабленная согласованность позволяла буферу переупорядочения фиксировать/ удалите инструкции действительно вне порядка, который сборка диктует (с тех пор, почему есть буфер переупорядочения?), так что единственное, о чем я могу думать - о чем я прочитал множествовремя (и разумное понимание) - это то, что это влияет на порядок, в котором другие ядра «видят» записи в ячейки памяти. Так что в качестве простого примера, расслабленная запись в переменную X на Core1 может быть не сразу видна в Core2;тогда как при приобретении / выпуске или последовательной последовательной записи это будет.


1) Может кто-то уточнить, верно ли мое предположение здесь?

2) Когда инструкция «store word» удаляется из буфера переупорядочения, какая разница на аппаратном уровне в том, что происходит, когда это хранилище «расслаблено» по сравнению с «последовательной последовательностью»?Это должно быть связано с кешами, конечно?Вид ", когда вам это нравится, передайте это значение в другие кэши ", в отличие от ", вытолкните это значение во все другие кэши теперь " (или это неправильно?)


Я много раз искал информацию по этому вопросу, прежде чем опубликовать свой вопрос, к вашему сведению.

...