TLB (Translation lookaside buffer) ミスとキャッシュミスの違いを誰か説明してもらえますか?
TLBがある種の仮想メモリアドレスを参照していることがわかったと思いますが、これが実際に何を意味するのかあまり明確ではありませんでしたか?
メモリのブロック (キャッシュ ラインのサイズ) が (L3?) キャッシュにロードされ、必要なアドレスが現在のキャッシュ ライン内に保持されていない場合、キャッシュ ミスが発生することを理解しています。これはキャッシュ ミスです。
TLB (Translation lookaside buffer) ミスとキャッシュミスの違いを誰か説明してもらえますか?
TLBがある種の仮想メモリアドレスを参照していることがわかったと思いますが、これが実際に何を意味するのかあまり明確ではありませんでしたか?
メモリのブロック (キャッシュ ラインのサイズ) が (L3?) キャッシュにロードされ、必要なアドレスが現在のキャッシュ ライン内に保持されていない場合、キャッシュ ミスが発生することを理解しています。これはキャッシュ ミスです。
さて、今日の最新のオペレーティング システムはすべて、仮想メモリと呼ばれるものを使用しています。CPU によって生成されるすべてのアドレスは仮想です。このような仮想アドレスを物理アドレスにマップするページ テーブルがあります。また、TLB はページ テーブル エントリの単なるキャッシュです。
一方、L1、L2、L3 はキャッシュメインメモリの内容をキャッシュします。
virtual memory address => physical memory addressCPU が要求した仮想アドレスのマッピングが TLB にない場合、TLB ミスが発生します。次に、そのエントリをページ テーブルから TLB にフェッチする必要があります。
CPU がキャッシュにないものを要求すると、キャッシュ ミスが発生します。その後、データは一次メモリ (RAM) で検索されます。存在しない場合は、二次記憶装置 (ハードディスク) からデータをフェッチする必要があります。
最初の命令アドレス (つまり仮想アドレス) を PC にロードした後の次のシーケンスでは、TLB ミスとキャッシュ ミスの概念が非常に明確になります。
最初の命令 • 最初の命令へのアクセス
ページ フレームの割り当て、ディスクからのページの読み取り、PTE の更新、iTLB への PTE のロード、フェッチの再開 • これで物理アドレスが得られました
アクセス Icache: ミス
ソースhttps://software.intel.com/en-us/articles/recap-virtual-memory-and-cache
両方のプロセスのHOWが記載されているように。パフォーマンスに関しては、キャッシュ ミスによって必ずしも CPU が停止するわけではありません。少数のキャッシュ ミスは、アルゴリズムのプリフェッチ技術を使用して許容できます。ただし、TLB ミスは、TLB が新しいアドレスで更新されるまで、CPU をストールさせます。つまり、プリフェッチはキャッシュ ミスをマスクできますが、TLB ミスはマスクできません。