【2021.04.04】TLB(Translation Lookaside Buffer)

TLB (Translation Lookaside Buffer) とは何ですか?

  1. 物理ページはリニア アドレスを通じてアクセスされます。たとえば、DWORD は実際には 4 バイトを読み取れない場合があります。最初に PDE が読み取られ、次に PTE が読み取られ、最後に 4 バイトのページが読み取られます。
  2. 2-9-9-12 ページングでは 24 バイトが読み取られますが、ページにまたがる場合はさらに多くのバイトが読み取られる可能性があります。
  • 効率を上げるため、記録だけを作成することもできます。
  • CPU は、これらのことを記録するために内部テーブルを作成しました。このテーブルは CPU 内に保存されます。読み取りおよび書き込み速度はレジスタと同じくらい高速です。TLB (Translation Lookaside)バッファ)

TLB構造

LA(リニアアドレス) PA(物理アドレス) ATTR(属性) LRU (統計)
0x12345678      
  1. ATTR (属性): 属性は PDPE (PDPT: ページ ディレクトリ ポインタ テーブル)、PDE の 3 つの属性 AND (AND 演算) です。 、および PTE )、10-10-12 ページング形式の場合は、PDE と (AND 演算) PTE です。
  2. このテーブルのサイズは CPU ごとに異なります。
  3. CR3 (現在のプロセス ページ テーブルを指す) が変更される限り、TLB はすぐに更新され、1 つのコアには 1 セットの TLB が含まれます。

OS の上位 2G マッピングは基本的に変更されていませんが、CR3 が変更されると TLB が更新され、上位 2G 以上の再構築が無駄になります。したがって、PDE コアの PTE には G フラグ ビットがあり、G ビットが 1 の場合、TLB がリフレッシュされたときに、PDE/PTE の G ビットが 1 であるページはリフレッシュされません。

TLB がいっぱいになると、統計情報に基づいて使用頻度の低いアドレスが破棄され、最後に使用されたアドレスが保持されます。

TLBタイプ

x86系CPUにおけるTLBの実用化はIntelの486CPUから始まり、x86系CPUでは一般的に以下の4組のTLBが存在します。

  1. 一般的なページテーブル(4KBバイトページ)をキャッシュする命令ページテーブルキャッシュ(命令TLB)。
  2. 一般的なページテーブル(4KBバイトページ)をキャッシュするデータページテーブルキャッシュ(Data-TLB)。
  3. 大きなサイズのページテーブル(2MB/4MBバイトページ)をキャッシュする命令ページテーブルキャッシュ(命令TLB)。
  4. 大きなサイズのページ テーブル (2MB/4MB バイト ページ) をキャッシュするデータ ページ テーブル キャッシュ (Data-TLB)。

通常のページは 4KB です。 10-10-12 ページング モードの場合、ラージ ページは 4MB です。 2-9-9-12 ページング形式の場合、ラージ ページは 2MB です。

練習する

  • TLB の存在を体験してください
  1. 物理ページをリニア アドレス (リニア アドレス A など) に接続します。物理ページ B をマウントします。物理ページをマウントした後、リニアアドレスAからCの物理ページを変更します。
  2. C に変更してこのリニア アドレスの内容を読み取ると、C 物理ページの値ではなく、B 物理ページの値が依然として読み取られていることがわかります。
  3. なぜ? CPU がこのリニア アドレスを初めて使用するとき、そのマッピング関係が TLB に保存されるため、このリニア アドレスが使用されなくなった場合、CPU は元のアドレスを再度キャッシュします。
  4. リニア アドレス A の物理ページは C に変更されますが、リニア アドレス A は読み書きされませんが、システムはそれを認識しないため、古いものを使用します。
  • グローバルページの意味
  1. TLB 内でグローバル ページと非グローバル ページがどのように見えるかを理解するには、G ビットを 1 に変更します。
  • INVLPG命令の意味
  1. TLB 内の特定の値、つまり線形アドレスと物理アドレスの間のマッピング関係を削除したり、一部の不要なマッピング関係を削除したりできます。

おすすめ

転載: blog.csdn.net/qq_18120361/article/details/115431172