0

x86 アーキテクチャでわかっているように、取得と解放の一貫性が自動的に提供されます。つまり、すべての操作はフェンスなしで自動的に順序付けられ、異なる場所からの最初の保存操作と次の読み込み操作は除外されます。(34ページでハーブ・サッターが言ったように: https://onedrive.live.com/view.aspx?resid=4E86B0CF20EF15AD!24884&app=WordPdf&authkey=!AMtj_EflYn2507c )

FSB を介してリモートのWC マーク付きメモリに書き込む場合、CPU はサイズが 64 バイトの一時バッファ (WCB (Write Combined Buffer)/BIU (Bus Interface Unit)) を使用します。また、「WCB が最終的に FSB を介して外部メモリにダンプされるとき、データは、以前のプログラムによるストアが実行された順序と同じ順序でメモリに書き込まれるとは限りません。」つまり、自動的に取得と解放の一貫性はありません-メモリを WC(Write Combined) としてマークした場合、一貫性は自動的に得られますか?からの引用 詳細については、1080 ページの「WCB FSB トランザクション」を参照してください。

しかし、リモートのWC マーク付きメモリに PCI Express 経由で書き込むとどうなるでしょうか? MOV または SSE を使用すると、自動的に取得と解放の一貫性が保たれるのでしょうか?

4

1 に答える 1

1

そのような書き込みには元の順序がないため (同期メソッドによって明示的に維持されるものは別として)、異なるコンテキスト間での並べ替えなどはありません。つまり、core1 と core2 がそれぞれ 1 つの行を書き込む場合、これらの行は一貫性を損なうことなく任意の順序で観察できます。禁止事項は、これら 2 つの行の異なる順序を観察する異なるコアにあります (つまり、core3 は最初に core1 からの行を認識し、core4 は最初に core2 を認識します)。それが他のコアに限定されていても、core1 と 2 はそれぞれ、グローバルな順序より先に独自の書き込みを確認する場合があります (これは、コア内転送を可能にするために、順次整合性と比較して x86 が行う緩和です)。

並べ替えられる可能性があるのは、特定のプログラム コンテキスト内のストアです。ここではもちろん順序が重要なので、プログラムは -

     thread 0     |   thread 1
 store [x] <-- 1  |   load [y] 
 store [y] <-- 1  |   load [x]

通常の x86 メモリ モデル (TSO のようなものと見なされる) では、ストアが並べ替えられたことを意味するため、x==0 と y==1 の結果が不可能であることを保持する必要があります (両方とも最初はゼロであると仮定します)。それを避けるために、ストアはコアの内部キューによって維持されている順序でディスパッチされます。たとえ実行が順不同で行われたとしても、ストアはコミットされた後にのみ外部から見ることができます (並べ替えが行われる段階)。 buffer は元のプログラム順序を復元します)。これにより、以前の命令に予期しない例外または分岐予測ミスがあった場合、ストアが表示されないことも保証されます。

一方、書き込み結合では、より寛大なメモリ順序付けモデルが可能になるため、書き込み結合バッファーが満杯になるたびに、ストアを結合してコミットすることができます。これにより帯域幅が減少しましたが、ストアは再注文できます。

store [x] <-- ..
store [z] <-- ..
store [x+8] <-- ..
store [x+16] <-- ..
...

2 番目のストアは 1 番目よりも先に並べ替えられる可能性があります。バッファーがいっぱいになると (強制的な制限はありませんが)、移動するパスに関係なく、行はメモリに送信されます。

その他の回答のFSBに関するコメントは、それが具体的であることを意味するものではありません.Pentium 4ガイドにさかのぼるため、最後のレベルのキャッシュを通過した後、彼らはあなたがFSBに行くと仮定しています. 今日では用語は異なりますが、とにかく - 誰も行の順序を気にしません。私が言ったように、いったんコア内にいなくなると、順序の概念はなくなり、一貫性だけが残ります. 彼らは、ラインがアウトになるとそれが観察される可能性があることを意味し、それがオーダーブレイクが目に見えるようになるポイントです.

于 2014-12-23T15:28:11.873 に答える