26

TLB (Translation lookaside buffer) ミスとキャッシュミスの違いを誰か説明してもらえますか?

TLBがある種の仮想メモリアドレスを参照していることがわかったと思いますが、これが実際に何を意味するのかあまり明確ではありませんでしたか?

メモリのブロック (キャッシュ ラインのサイズ) が (L3?) キャッシュにロードされ、必要なアドレスが現在のキャッシュ ライン内に保持されていない場合、キャッシュ ミスが発生することを理解しています。これはキャッシュ ミスです。

4

3 に答える 3

33

さて、今日の最新のオペレーティング システムはすべて、仮想メモリと呼ばれるものを使用しています。CPU によって生成されるすべてのアドレスは仮想です。このような仮想アドレスを物理アドレスにマップするページ テーブルがあります。また、TLB はページ テーブル エントリの単なるキャッシュです。

一方、L1、L2、L3 はキャッシュメインメモリの内容をキャッシュします。

virtual memory address => physical memory addressCPU が要求した仮想アドレスのマッピングが TLB にない場合、TLB ミスが発生します。次に、そのエントリをページ テーブルから TLB にフェッチする必要があります。

CPU がキャッシュにないものを要求すると、キャッシュ ミスが発生します。その後、データは一次メモリ (RAM) で検索されます。存在しない場合は、二次記憶装置 (ハードディスク) からデータをフェッチする必要があります。

于 2012-05-04T09:39:45.900 に答える
2

最初の命令アドレス (つまり仮想アドレス) を PC にロードした後の次のシーケンスでは、TLB ミスとキャッシュ ミスの概念が非常に明確になります。

最初の命令 • 最初の命令へのアクセス

  • 開始 PC を取る
  • PC から抽出した VPN で iTLB にアクセス: iTLBmiss
  • iTLBmiss ハンドラーを呼び出す
  • PTE アドレスを計算する
  • PTE が L1 データと L2 キャッシュにキャッシュされている場合は、PTE アドレスで検索してください。
  • メイン メモリのページ テーブルへのアクセス: PTE が無効です: ページ フォールト
  • ページ フォールト ハンドラを呼び出す
  • ページ フレームの割り当て、ディスクからのページの読み取り、PTE の更新、iTLB への PTE のロード、フェッチの再開 • これで物理アドレスが得られました

  • アクセス Icache: ミス

  • より高いレベルに補充要求を送信します。どこでも逃します
  • リクエストをメモリ コントローラ (ノース ブリッジ) に送信する
  • メインメモリへのアクセス
  • キャッシュ ラインの読み取り
  • キャッシュ ラインがプロセッサに戻るときに、すべてのレベルのキャッシュを補充します。
  • ブロック オフセットを使用してキャッシュ ラインから適切な命令を抽出します。これは、命令/データ アクセスで可能な最長のレイテンシです。

ソースhttps://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

于 2014-05-02T17:26:09.700 に答える
0

両方のプロセスのHOWが記載されているように。パフォーマンスに関しては、キャッシュ ミスによって必ずしも CPU が停止するわけではありません。少数のキャッシュ ミスは、アルゴリズムのプリフェッチ技術を使用して許容できます。ただし、TLB ミスは、TLB が新しいアドレスで更新されるまで、CPU をストールさせます。つまり、プリフェッチはキャッシュ ミスをマスクできますが、TLB ミスはマスクできません。

于 2014-06-20T07:54:57.810 に答える