2017-10-09 3 views
1

異なるコアのL1キャッシュラインプロトコルから状態情報を取得することは可能ですか?

はのは、このシナリオを想定してみましょうなど MSI、MESI、MOSI、MOESI、と、周りがいくつかのキャッシュ・コヒーレンス・プロトコルがあります:CPUは、 4コアのL1プライベートキャッシュ(L1キャッシュと が含まれていますサイズはここでは関係ありません)。ここでのメモリアドレスは例示的なものである。

  1. コア00x1111に対処するためにメモリ・アクセスを要求し、従って値は、メインメモリからのL1キャッシュラインにロードされます。

  2. コア10x2222に対処するためにメモリ・アクセスを要求し、従って値は、メインメモリからのL1キャッシュラインにロードされます。

  3. コア2は(以前にコア0によってアクセス)0x1111に対処するためにメモリ・アクセスを要求します。この参照は既にCore-0のキャッシュラインにロードされているため、キャッシュ一貫性プロトコルは参照を含むCore-0のキャッシュラインをコピーし、最後にCore-2のキャッシュラインに格納します。

質問1:コア-2は、メモリアクセスではなく、メインメモリの中核-0のキャッシュラインによって提供されていることを知っていますか?また、キャッシュ・コヒーレンス・プロトコルは、データが取得された場所を透過的に示しますか?

質問2:コア-0、およびコア2共有状態でそのキャッシュラインを持って、手順3の後しかし、コア2から現在の状態を取得することが可能です異なるコアから与えられたメモリ参照?この場合、可能ですコア-2は、このメモリ参照のために0x1111 コア-キャッシュラインがであることを知っています共有?

答えて

1

core-2は、メモリアクセスがメインメモリの代わりにCore-0のキャッシュラインによって処理されていることを知っていますか?

はい、説明したシナリオでは、キャッシュラインは「共有」状態(つまり、キャッシュラインは少数のコアで共有されている)である必要があります。しかし、下記を参照してください...

キャッシュ・コヒーレンス・プロトコルは、データが取得された場所に透過的ですか?

はい、キャッシュコヒーレンスプロトコルはコアに対して透過的であり、キャッシュラインの状態は内部にあります。いくつかのアーキテクチャでは、キャッシュ状態の直接アクセスのための命令があるかもしれませんが、私はそれを疑います。ほとんどのアーキテクチャーはプリフェッチ/ゼロ/フラッシュ/無効化命令を持っています...

ので、次の質問について答えは明白です:コア-2は、現在取得ししかし、可能であるコア0

、およびCore-2は、ステップ3の後に共有状態でそのキャッシュラインをしています別のコアからの特定のメモリ参照からの状態?

いくつかのアーキテクチャでは可能かもしれませんが、x86ではむしろ不可能です。

この場合、可能性はありますか?このメモリ参照では、0x1111 Core-0キャッシュラインがShared状態になっていますか?

と同じです。キャッシュは一貫性があり、ほとんどのアーキテクチャではキャッシュに対する命令レベルのインターフェイスは非常に簡単です。

全体として、XY Problemのように見えます。キャッシュライン状態認識コアで何を達成しようとしていますか?

関連する問題