Является ли барьер памяти значимым только в SMP? - PullRequest
0 голосов
/ 08 марта 2012

Я понимаю, зачем нужны барьеры памяти, но я не понимаю, что касается Uniprocessor.

Должен ли я иметь дело с барьерами, даже когда я использую UP? Каждый документ объясняет их с помощью SMP, но не UP.

В следующем коде есть ли вероятность, что r2 == 0 в точке а?

// the location 0xdeadbeef has a zero initial value
ldr r0, =0xdeadbeef
ldr r1, =0xdeadbeef
ldr r2, =1
str r2, [r0]
ldr r2, [r1]
// point a

Ответы [ 2 ]

2 голосов
/ 22 сентября 2012

Существуют барьеры памяти и барьеры компилятора.

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

0 голосов
/ 08 марта 2012

Барьеры памяти должны использоваться только для «глобальных переменных». Поскольку локальные (в стеке) и регистры автоматически сохраняются при переключении потоков.

Может быть, универсальность лучше, чем предположение, что вы всегда имеете дело с UP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...