TLBとデータキャッシュはどのように機能しますか?


15

私は試験のために勉強しようとしていますが、TLBとデータキャッシュがどのように機能するかについて混乱していることに気付きました。

TLBは本質的に、最近使用した物理アドレスのキャッシュであることを理解しています。しかし、私は教科書の図(下図)を見ていましたが、何が起こっているのかわかりません。突然物理アドレスを分割し、それを使用してキャッシュのインデックスを作成すると、推測します。しかし、なぜキャッシュとデータを別々に表示するのですか?そして、なぜバイトオフセットがフローティングのままになっているのですか?キャッシュにはデータも保存されるはずです。唯一の目的は、その中にヒットまたはミスがあるかどうかを判断することではないと思います。

私は事前に私の無知をおaびしますが、本はかろうじてTLBを扱っており(ページに少し似ています)、TLBとキャッシュの関係を説明するのにあまり良い仕事をしていません。

図


この質問は長すぎます。これから狭い特定の質問を抽出し、質問を編集して特定の質問を1つだけに絞り込めますか?良い質問をすることの一部は、あなたが知る必要があるものの最小の本質は何であるかを慎重に考え、その質問に関連し不可欠なものだけを含めることを伴います。たとえば、TLBがどのように機能するかについて特定の質問がある場合、これらすべてをダンプするのではなく、TLBに関する1つの狭く作成された質問を組み立ててみてはどうでしょうか。
DW

スタック交換のほとんどの人は、質問者がある程度の努力を示すことなく質問に答えるのを嫌いだからです(理解できるように)。みんなを幸せにすることはできないと思う。たぶん、質問を太字か何かで編集します。
audiFanatic

@DWの方が良いですか?
audiFanatic

audiFanatic、あなたは私のコメントと「努力を見せて」という考え方を誤解したり、誤解したりしたかもしれません。私の提案は、狭い質問(「TLBがどのように機能するのか?よくわかりません」など)を特定し、その質問だけに焦点を合わせ直すことです。はい、あなたはその質問に答えるために真剣な努力をする必要があり、あなたはその特定の質問に答えるためにあなたがした努力を示す必要がありますが、無関係な主題の努力は関連していませんこの質問を考えさせた宿題の質問の進捗状況)。
DW

この背景を理解するのを助けてください。私たちは、(あなただけではなく)他の人にも役立つ質問と回答の高品質のアーカイブを構築したいと考えています。支援するためにできる最善のことは、特定の狭い、適切な質問を抽出し、その1つの質問だけに質問を集中させることです。あまり焦点を当てていない広大な自由回答形式の質問は、それにつまずくかもしれない他の人には役に立たない可能性が低くなります(また、読者があなたの質問の核心を理解して理解するのが難しくなります)あなたは良い答えを得る可能性が低くなります)。
DW

回答:


23

私はあなたの混乱を見ていると思います。TLBとデータキャッシュは2つの別個のメカニズムです。どちらも一種のキャッシュですが、異なるものをキャッシュします。

  • TLBは、仮想アドレスから物理アドレスへのルックアップ用のキャッシュです。ページテーブルは、仮想アドレスをマップする方法を提供します物理アドレス。ページテーブルで仮想アドレスを検索します。ただし、ページテーブルでのルックアップは低速です(2〜3のメモリロードが必要です)。命令がメモリにアクセスするたびにプロセッサがこのルックアップを実行する必要がある場合、これにより大幅な速度低下が発生します。

    したがって、TLBはこのルックアップの専用キャッシュとして機能します。TLBにはいくつかのTLBエントリがあり、各TLBエントリには仮想アドレスとそれに対応する物理アドレスの両方が含まれています。

    TLBにより、プロセッサは仮想アドレスを物理アドレスに非常に迅速に変換できます。命令が(仮想)アドレスでメモリ操作を行うようにプロセッサに要求すると、プロセッサは最初にTLBにその仮想アドレスのエントリが含まれているかどうかを確認します。存在する場合、それはTLBルックアップの「キャッシュヒット」と呼ばれ、TLBエントリには変換された物理アドレスも含まれているため、プロセッサは使用する物理アドレスをすぐに認識します。そうでない場合は、TLBルックアップのキャッシュミスであり、プロセッサはページテーブルをたどって仮想から物理への変換を手間をかけなければなりません。(その変換が完了すると、TLBにエントリが追加され、その仮想アドレスの将来の変換がより迅速に行われるようになります。)

  • データキャッシュは、メモリの内容のキャッシュです。メインメモリでは、物理アドレスを指定し、その物理アドレスの値を読み取ることができます。ただし、メインメモリは低速です。メモリ操作を行うたびにメインメモリに移動する必要がある場合、プロセッサは非常に遅くなります。

    したがって、データキャッシュはメモリ読み取り専用のキャッシュとして機能します。データキャッシュにはいくつかのキャッシュエントリがあり、各キャッシュエントリには物理アドレスとそのアドレスのメモリの値が含まれます。

    データキャッシュにより、プロセッサはメモリから非常に迅速に読み取ることができます。プロセッサが(物理)アドレスのメモリを読み取りたい場合、最初にデータキャッシュをチェックして、そのアドレスのキャッシュエントリが含まれているかどうかを確認します。存在する場合、これは「キャッシュヒット」(データキャッシュ内)と呼ばれ、プロセッサはメインキャッシュにアクセスすることなく、そのキャッシュエントリに格納されているデータ値をすぐに使用できます。そうでない場合、これは(データキャッシュの)「キャッシュミス」であり、プロセッサはメインメモリにアクセスする必要があります。(プロセッサがメインメモリからそのアドレスの値を受け取った後、データキャッシュにキャッシュエントリを追加して、同じアドレスを読み取ろうとするとデータキャッシュにヒットするようにします。)

どちらもキャッシュですが、目的は異なります。プロセッサは、各メモリ操作に両方を使用します。最初にTLBを使用して仮想アドレスから物理アドレスに変換し、次にデータキャッシュをチェックして、そのアドレスのメモリに格納されている値の読み取りプロセスを高速化します。

詳細については、TLBに関するWikipediaの記事をご覧ください。検索を行うと、TLBおよびデータキャッシュで利用可能な他の多くの情報があります。「TLB」と「L1キャッシュ」または「L2キャッシュ」を検索することをお勧めします(後者2はデータキャッシュの一種です)。

(今後の参考のために、ここで質問する前に質問を調査し、標準のインターネットソースを確認することを期待しています。答えがウィキペディアで見つかる場合は、自分で十分な調査を行っていない可能性があります。ここで質問する前にTLBの方法についてインターネットソースを確認した方が幸運です。また、Stack Overflowユーザーにどの程度の研究努力が期待されますか?を参照してください。研究スキル-あなたのキャリアを通じてあなたにとって価値のあるもの。)


1
ありがとうございました!それはほとんどすべてをクリアしました。私はこれを研究するのに多くの時間を費やしました(数日)、それをすべて結び付ける明確で簡潔な情報を見つけることができませんでした(そして、私の混乱はおそらく私の検索を助けませんでした)。類推として、私は薬局で診断されていない病気の治療法を探しているように感じました。症状のみをガイドとして使用します。
audiFanatic

とはいえ、もう1つ質問があります。それらがキャッシュである場合、キャッシュのデータ部分とタグ部分を分離しているのはなぜですか(地獄、データ部分はタグと有効なビット部分よりもさらに高いです)?キャッシュがタグをチェックする以外の役割を果たしていないように見えます(データを保存していないかのように)。そのデータブロックはキャッシュの画像部分の右下隅にありますか、それともメインメモリの部分ですか?
audiFanatic

1
(1)「タグ」は、変換されるアドレスの一部です。TLBが単一の仮想アドレスを単一の物理アドレスに変換するのではなく、ページ全体の粒度の価値を変換します。ページの長さが4096バイトの場合、仮想から物理へのルックアップは仮想アドレスの上位20ビットのみを調べます。仮想アドレスの場合V 物理アドレスに変換します P (そして、それらはページに揃えられます)、その後 V+1 に変換する P+1V+2P+2、...、 V+4095P+4095
DW

(2)データキャッシュは、画像の下部全体です(左下のブロック+右下のブロック)。概念的には、データキャッシュのエントリは、 左下のブロックの行 右下のブロックの行。この図がなぜそれらを分離したものとして示しているのか分かりません。概念的には、必要に応じてグループ化して扱うことができます。
DW

いいですね ありがとう。私が最も混乱させたのは分離だったと思います。
audiFanatic
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.