0

メモリバリアが必要な理由は理解できますが、ユニプロセッサの場合はわかりません。

UPを使用してもバリアに対処する必要がありますか?すべてのドキュメントはSMPでそれらを説明していますが、UPでは説明していません。

r2 == 0次のコードでは、ポイントaにある可能性はありますか?

// 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
4

2 に答える 2

2

メモリバリアとコンパイラバリアがあります。

単一のプロセッサではメモリバリアは必要ありませんが(ハイパースレッディングが複数のプロセッサとしてカウントされるかどうかはわかりません)、コンパイラのバリアは必要です-コンパイラは、失敗するように異なるスレッドでコードを並べ替えることができます。

于 2012-09-21T22:10:53.423 に答える
0

メモリバリアは、「グローバル変数」にのみ使用する必要があります。ローカル(スタック内)とレジスタは、スレッドが切り替わるときに自動的に保存されるためです。

普遍性はあなたが常にUPに対処するという仮定よりも優れているかもしれません

于 2012-03-08T08:38:56.797 に答える