8

ARM1176JZF-SコアでTLB(トランスレーションルックアサイドバッファ)テーブルを使用する方法を説明する適切なガイドはありますか?

そのARMプラットフォームの技術文書を調べても、TLBが何であるか、またはどのように見えるかはまだわかりません。私が理解している限り、各TLBエントリは仮想ページを物理ページにマップし、メモリのアクセス許可を再マップおよび制御できるようにします。

それを除けば、私はそれらをどのように使用するかについて全く手がかりがありません。

  • TLBエントリにはどのような構造がありますか?新しいエントリを作成するにはどうすればよいですか?
  • ユーザースペーススレッドのコンテキストスイッチでVMを処理するにはどうすればよいですか?それらのスレッドが親プロセスに割り当てられた特定のページにのみアクセスできるようにするにはどうすればよいですか(メモリ保護を適用します)。コンテキストごとにTLB状態を保存しますか?
  • なぜ2つのTLBがあるのですか?MicroTLBが10エントリしかない場合、何に使用できますか?確かに、10個以上必要です。
  • メインTLBの一部の1つは、「ロック可能な8つの要素の完全な連想配列」であると書かれています。それは何ですか?メインTLBのエントリは8つしかありませんか?

前もって感謝します。誰かがTLBとは何かについて説明してくれたら本当にうれしいです。私は現在、カーネルのメモリマッパーに取り組んでおり、ほとんど行き詰まっています。

4

1 に答える 1

17

ARM1176JZF-SのテクニカルリファレンスマニュアルはDDI0301のようです。このドキュメントには、その特定のARMコアの特定の詳細がすべて含まれています。

TLBが何であるか、またはどのように見えるかはまだわかりません。私が理解している限り、各TLBエントリは仮想ページを物理ページにマップし、メモリのアクセス許可を再マップおよび制御できるようにします。

TLBは、ページテーブルのキャッシュです。一部のプロセッサは、ページテーブルについて何も知らずにTLBに直接アクセスできますが(例:MIPS)、他のプロセッサはページテーブルについて知っており、プログラマーがほとんど見ないTLBを内部的に使用します(例:x86)。この場合、TLBはハードウェアによって管理され、システム・プログラマーは、TTB(変換テーブル・ベース)レジスターがページ・テーブルを指すようにし、適切な場所でTLBを無効にするだけで済みます。

TLBエントリにはどのような構造がありますか?新しいエントリを作成するにはどうすればよいですか?

ハードウェアによって行われます。TLBミスの場合、MMUはページテーブルをウォークし、そこからTLBを埋めます。

ユーザースペーススレッドのコンテキストスイッチでVMを処理するにはどうすればよいですか?

一部のプラットフォームには、仮想アドレスを物理アドレスに単純にマップするTLBがあります(例:x86)。これらのプラットフォームでは、各コンテキストスイッチで完全なTLBフラッシュを実行する必要があります。他のプラットフォーム(MIPS、この特定のARMコア)は、(ASID、仮想アドレス)ペアを物理アドレスにマップします。ASIDは、アプリケーション固有の識別子、つまりプロセスの識別子です。MMUはレジスタを使用して、使用するASIDを認識します(この場合はコンテキストIDレジスタだと思います)。ASIDよりも多くのプロセスが存在する可能性があるため、ASIDをリサイクルして(別のプロセスに割り当てる)、TLBフラッシュを実行する必要がある場合があります(これが、ASIDによるTLBの無効化操作の目的です)。

なぜ2つのTLBがあるのですか?MicroTLBが10エントリしかない場合、何に使用できますか?確かに、10個以上必要です。

これは、命令とデータ用に小さな個別のレベル1キャッシュがあるのとまったく同じ理由です。これらはキャッシュであるため、10個を超える必要はありません(ただし、これを超えるとパフォーマンスが向上する可能性があります)。

メインTLBの一部の1つは、「ロック可能な8つの要素の完全な連想配列」であると書かれています。それは何ですか?メインTLBのエントリは8つしかありませんか?

一部のメモリページ(例:カーネルの一部)は非常に頻繁にアクセスされます。それらをロックすることは理にかなっているので、TLBから投げ出されることはありません。また、リアルタイムシステムでは、TLBミスまたはキャッシュミスにより、望ましくない予測不能性が生じる可能性があります。したがって、多数のTLBエントリをロックするオプションがあります。メインTLBにはさらに多くのエントリがありますが、ロックできるのはそのうちの8つだけです。

于 2012-01-24T20:42:14.617 に答える