2016-05-18 7 views
0

インテル64/IA-32でこの質問に対する答えを探してみましたが、決定的な答えが見つかりませんでした。質問:SFENCEなどのメモリ注文命令は、ローカルプロセッサのみに影響を与えるか、隣接ソケット(マルチソケットシステム)のCPUなど、キャッシュコヒーレンスドメイン全体に広がっていますか?x86/x86_64複数ソケット上のメモリ注文命令の影響

答えて

1

SFENCEは、ローカルCPUのストアが同じソケットおよび他のソケット上の他のコア、またはメモリマップドI/Oに対してグローバルに表示される順序に影響します。

他のコアでは、SFENCEを実行したかどうかを知ることはできません。これらのコアでは、メモリ操作の順序がわかります。 (つまり、sfenceの実装は、コアとそのストアキューの内部にあります)。

sfenceは、最初のマルチコアCPUの前に、PIIIとともにSSE1に導入されました。その時、唯一のSMPシステムはマルチソケットでした。

weakly-orderedストア(movnt*または書き込み結合メモリ領域に格納)で有用なものだけを実行することにも注意してください。ノーマルストアは、すでにx86上に"release" semanticsを持っています。 x86ではto prevent StoreLoad reorderingの通常のメモリ操作ではmfence(およびlock ed命令)のみが重要です。

+0

お返事ありがとうございます。非常に役立ちます。 – dsaada

+0

@dsaada:あなたの質問に答えた場合は、投票矢印の下にあるチェックマークを使用してそれを受け入れることができます。 –

+0

ありがとうございます。それをしました。ちょっと補足的な質問 - あなたは他の_cores_が** SFENCE **のようなフェンスの指示を知らないと言っていました。これは同じコアの他のスレッドにも適用されますか? – dsaada

関連する問題