誤解擬似共有のための

昨日は偽の共有、しゃべりの基本的な理解を学びました:

1は、データ変数の基本単位は、キャッシュラインに格納されている、すべてが現代のコンピュータはメインメモリとCPU(主の主にCPU-預金比率とはるかに高速に実行するための速度差を解決することを知っているベースのコンピュータのオペレーティングシステムがあります)、キャッシュの概念は、キャッシュがあり、一般的にマルチレベルキャッシュ、言ってこれだけが存在します。しかし、キャッシュラインサイズが1行であることができるように、例えば64バイトなので、キャッシュラインが、そのような長い変数型は8バイトであるように、複数の変数を格納することができる、これらは一般的に非常に大きくなってい長い8を投げます。

、2。だから今、CPUがデータを読み込むキャッシュラインのデータを読み取ることで、今の質問は、理由は何MESIプロトコル(CV以上)のうち、

MESIプロトコル

マルチコアCPUは、CPUのキャッシュ・スロット(一般L3)との間で共有プライベートキャッシュ(通常L1、L2)、及び等核を有しています。異なるコアCPUのキャッシュは必然的にロードされ、同じデータになり、その後、データの整合性を確保する方法、それは、MESIプロトコルです。
MESIプロトコルでは、各状態はビット2が利用可能で示し、4本のキャッシュラインを有し、それらは:
M(変更):このデータの行は、データが変更され、有効であり、データメモリ内の不整合は、データのみに存在しますキャッシュを提示し、
E(排他):このデータの行は、有効な、一貫性のあるデータであり、メモリ、データがキャッシュ内にのみ存在し;
S(共有):このデータの行は、有効な、一貫性のあるデータであり、メモリのデータが存在しますキャッシュ内の多くの;
I(無効):この行のデータが無効です。

次に、I = 3(キャッシュブロックを含むことは、変数i、キャッシュ・ライン・サイズのブロックサイズでなければならない)変数を考慮し、既にキャッシュ場合にマルチコア(A、B、C)にロードされ、キャッシュラインの状態でありますS;ここでiは変更される変数の値のコアは、コア内のキャッシュ・ラインの現在の状態がM、Bとなるであろう場合、キャッシュラインの現在の状態のCは、コアとなるであろうI

今のCPUよりも多いマルチコアコンピュータでは、CPUが重要な問題で、その結果、キャッシュラインの変数、それが失敗し、このキャッシュラインの将来をお読みください。

3.問題は何ですか?CPU2がある今のようには、キャッシュ・ラインは、bが隣にあり、がある以上にすることができ、その後、CPU1は今変数を読めば、その変数bはまた、このBを使用する、使用することはできませんされて、それはその後、確かにマナ(そうでない場合は、なぜキャッシュを追加)になり、唯一のメインメモリに入ることができ、キャッシュを使用することはできません。私はここで同じの、特に揮発性の修正であることのように感じます。

4. この問題を解決するためには、私はより多くを語ることはありません。私は論外考えて、私はそれが揮発性の修正を加えられているので、それは確かに、なぜそれが遅くなり、メインメモリのデータああに取ることを考えて、私の心は良い質問ではない、と述べましたか?それは何を問題ではないと長い時間の後、私は問題を見、ちょうど修正揮発性、そしてCPU2のために、彼はただ、Bを望んでいますか?彼は、キャッシュahから取ることができますが、また、揮発性のない変数に対して、あなたも、偽の共有が発生しますが、変更は揮発性ではないので、後に、メインメモリの1ということに触れていないだろう、それは常にではないでしょう正しい結果があるだろう、他のカーネルはキャッシュラインを更新する必要がある場合でも、可視性の問題があり、彼はメインメモリ内の普通の変数である後の値が更新され、変更、それよりも対応する率は、揮発修正しました高速、JVMがスレッド・スタックでこれらの値を格納するので、書き込まれるバック時にメインメモリにはならないであろう、それはスレッド間で互いに干渉しないであろう。

5.私は右だと思うかわからないが、あなたは問題がある、または間違い、あなたは私のコメントを伝えることができれば、これは、私のブログは、多くの締結後に見えた見つけることです。

おすすめ

転載: www.cnblogs.com/cold-windy/p/11746630.html