1. Здесь нужна DSB, а не ISB. ISB может понадобиться, например, при выполнении действий типа remap, работе с MPU и т.п.
2. Опять-таки DSB, а не ISB в большинстве случаев.
3. На ARM7, например, так и делалось.
4. Не нужна, если x не является периферийным регистром.
5. Нет, если x не является периферийным регистром.
6. Нет.
ISB сбрасывает конвейер. Ставится после инструкции, выполнение которой может повлечь нарушение нормальной работы конвейера.
DSB заставляет ядро закончить все текущие операции с памятью до выполнения следующей инструкции.
DMB позволяет определить последовательность обращений к памяти, т.е. обращения, стоящие до барьера, будут гарантированно выполнены перед теми, что стоят после.
Цитата(adnega @ Feb 24 2015, 23:55)

Хотелось бы начать с более-менее внятного и повторяемого примера, где замена барьерной инструкции на NOP будет отличаться поведением.
Кто-нить писал самомодифицирующийся код для Cortex-M ? Может, без ISB не заработает?
Одного NOP'а мало - конвейер длиннее. Самомодифицирующияся код без ISB работать не должен (хотя, если честно, не приходило в голову писать его для CM).