1

メインメモリにアクセスするために仮想アドレスを物理アドレスに変換する方法を理解しています。私はまた、キャッシュメモリがどのように機能するかも理解しています。キャッシュメモリを考慮した仮想アドレスから物理アドレスへの変換

私の問題は、2つの概念をまとめて、プロセスがメモリにアクセスする方法と、キャッシュミスが発生した場合に起こることを大きく理解することです。ので、私は私を助けるこの図は、次の質問を持っている:

click to see the image (assume one-level cache)

の1-プロセスは、メインメモリ内のバイトの位置を表すまったく同じ物理アドレスとキャッシュにアクセスしていますか?

2 TLBは実際にキャッシュの第1レベルにありますか、またはCPUチップ内で変換専用の別のメモリですか?

3-キャッシュミスがあるときは、ブロック全体を取得してキャッシュに割り当てる必要がありますが、フレーム(ページ)で構成されるメインメモリはブロックしません。それで、プロセスページは、ミスの場合にキャッシュに持ち込むことができるキャッシュブロックに分割されますか?

4- TLBミスがあると仮定すると、メインメモリにすべて移動してページを参照する必要があるか、またはページウォークがキャッシュ内で行われますか?

5-キャッシュミスがTLBミスで保証されますか?

6-私が理解しようとしている大きな画像を説明する資料がある場合、私はそれを私と共有していただければ幸いです。

おかげで、私ははい

答えて

1
  1. を求めている任意の単一の質問にお答えして自由に感じます。キャッシュは、別々にアドレス指定できるメモリではありません。キャッシュマッピングは物理アドレスをキャッシュのアドレスに変換しますが、このマッピングはプロセスが通常制御するものではありません。一部のCPUアーキテクチャでは、ハードウェア(例えば、Intel x86)によって完全に制御される。他の人にとって、オペレーティングシステムはマッピングをプログラムすることが期待されます。

  2. 図のTLBは、仮想アドレスから物理アドレスへのマッピングです。おそらくキャッシュ用ではありません。やはりいくつかのアーキテクチャでは、TLBはプログラムされているが、他のアーキテクチャではTLBはハードウェアによって制御される。

  3. ページサイズとキャッシュラインサイズは、仮想メモリに関連するものと物理メモリに関連するものと同じである必要はありません。プロセスが仮想アドレスにアクセスするとき、そのアドレスはページサイズを考慮してTLBを使用して物理アドレスに変換されます。それが完了したら、ページのサイズは問題ではありません。アクセスは物理アドレスのバイト/ワードに対するものです。これによりキャッシュミスが発生すると、読み取られるキャッシュブロックは、アクセスされている物理メモリアドレスをカバーするキャッシュブロックのサイズになります。

  4. TLBミスは、他のメモリを読み取ることによってページ変換が必要になります。このプロセスは、一部のCPU(Intel x86/x64など)のハードウェアで実行するか、ソフトウェアで処理する必要があります。ページ変換が完了すると、TLBはページ変換とともに再ロードされます。

  5. TLBミスはキャッシュミスを意味しません。 TLBミスは、仮想アドレスから物理アドレスへのマッピングが分からず、ページアドレスの変換が必要であることを意味します。キャッシュミスは、物理メモリの内容をすぐに提供できなかったことを意味します。要約すると

  • TLBはすぐに物理アドレスに仮想アドレスを変換することです。仮想メモリから物理メモリへのマッピングを迅速にキャッシュすることがあります。物理メモリの内容とは関係ありません。
  • キャッシュは、メモリへのより高速なアクセスを可能にすることです。物理メモリの内容をより速く提供するのはそこだけです。

キャッシュという用語は、多くの目的で使用できます(TLBを記述するときにキャッシュの使用方法など)。 TLBはもう少し具体的で、普遍的ではありませんが、通常は仮想メモリの変換を意味します。例えば、一部のDMAコントローラにはTLBもありますが、TLBは必ずしも仮想アドレスを物理アドレスに変換するのではなく、ブロックアドレスを物理アドレスに変換するために使用されます。

+0

この精巧な回答のために@Robinありがとう –

関連する問題