2017-05-07 1 views
3

簡単な質問:キャッシュされていないメモリ、つまりページテーブルに非キャッシュとしてマークされているページでLOCK CMPXCHGが可能ですか?非キャッシュメモリのLOCK CMPXCHG?

+0

なぜですか?私はマニュアルに何も言及していないと言っています。何かあれば、特別に扱われるキャッシュ可能なメモリです。 –

+0

これは可能ですが、遅いです。 – harold

+0

キャッシュコヒーレンシーが簡単だと思います。キャッシュ一貫性を使用すると、コアは、操作が完了するまで、キャッシュラインをキャッシュに保持することができます。 「バス」をロックするよりも現実的な方法は想像できません。 –

答えて

2

この回答の内容は密接に特に私がのQuickPathインターコネクト(QPI)のロックを理解するために相談し、「ロック」セクションには、システムを有効にし、this Dr Dobbs' articleの内容に似ています。
この投稿は「コミュニティウィキ」としてマークされています。

はい、可能です。

8086にはキャッシュがありませんでしたが、perform atomic operationsにアクセスできました。
これは、FSB#lockシグナルが導入されたことにより達成されました。この信号がアサートされたときには、新しいトランザクションはどのエージェントによっても開始できませんでした。ロックのみが実行されました(実際にはnot even the locking one sometimes)--hereby quiescingシステムです。

キャッシュの導入により、バス・ロックの必要性が軽減されました。プロセッサは、ロックの間、他のエージェントからsnooping requestを遅延させることによってキャッシュを操作できます。
しかし、下位互換性と、保護された変数がspan two cache rowsになる可能性があるため、従来のバスロックは保持されていました。

FSBはQPIの賛成(マルチソケット・システムハブアーキテクチャのとの放棄を考える)に滴下した場合には、#lock信号があまりにも、滴下しました。

ここで、QPIエージェントの1つは、Quiesce Master(QM)として設計されています。プロセッサはロックを必要とするとき、QMに尋ねて、他のエージェント(DMAエージェントを含む)に将来の要求を停止するように通知します。
すべてのエージェントは、QMに対して確認応答を受け取ると、ロック要求者にシステムがロックされていることを通知します。その後、原子操作が実行され、完了すると、要求されたロック解除がQMに提示される。最後に、QMは、新しいトランザクションが再び許可されたことを他のエージェントに通知することに進む。
このようにして、メモリサブシステム全体をロックするためのメカニズムは、現代の設計では依然として存在し、機能しています。

+0

良い答え。 QPIとキャッシングプロトコルの相互作用についての議論は、シングルソケットシステムにも当てはまりますか?それは私には分かりません。議論されているメカニズムの多くは、複数のソケット(QPIがそれらの間のパス)間の一貫性を維持することですが、L3はほとんどがアービターとして機能することができるので、データは、キャッシュの第1の共有レベルであるL3を介して)。私は、ビデオカードやストアのようなDMA対応エージェントについて知らない。たぶん彼らはそれを使うだろうか? – BeeOnRope

+0

@BeeOnRope、正直に分かりません。マイクロソフトの[このドキュメント](http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/pcie_lockedoperations.doc)は、PCIeルートコンプレックスがPCIeバスをロックします。 L3キャッシュ(QMとして動作)によって制御されるか、またはQM自体(QPIを介して接続されたPCIeルートコンプレックス)が制御されている可能性があります。 –

関連する問題