私はデュアル Cortex-A9 システムで作業しており、スピンロック関数が DMB を使用する必要がある理由を正確に理解しようとしています。マージ ストア バッファーがフラッシュされている限り、ロック値はロック解除コアの L1 で終了し、SCU は他のコアの L1 の値を無効にするか更新する必要があるようです。これは、一貫性と安全なロックを維持するのに十分ですか? とにかく、STREX はマージ ストア バッファをスキップしないのでしょうか。つまり、フラッシュは必要ないのでしょうか?
DMB は、特にシステム ドメインにデフォルト設定されているため、鈍いハンマーのように見えます。これは、コストがかかる可能性があるメイン メモリへの書き込みを意味する可能性が高いためです。
smp_mb を適切に使用しないドライバーの回避策として、ロック内の DMB はありますか?
現在、パフォーマンス カウンターに基づいて、システム サイクルの約 5% が DMB によるストールで消失していることがわかります。