質問

TLB (変換ルックアサイド バッファ、これは CPU 内の特別なキャッシュ) から変換 (仮想ページから物理ページへ) のリストを取得することは可能ですか。つまり、最新の x86 または x86_64 です。そして、JTAGを使用してすべてのTLBエントリをシフトアウトするのではなく、プログラム的な方法でこれを実行したいと考えています。

役に立ちましたか?

解決

Linux カーネルにはそのようなダンパーはありません。キャッシュと tlb に関する Linux カーネルのページがあります。 https://www.kernel.org/doc/Documentation/cachetlb.txt 「Linuxの下でフラッシングするキャッシュとTLB。」デビッド・S・ミラー

80386DX (および 80486、そしておそらく "Embedded Pentium" 100-166 MHz/") にもそのような TLB ダンプがありました。エンベデッド Pentium MMX 200-233 MHz」(1998 年):

  • 1 - 書籍「マイクロプロセッサ:「THE 8086/8088、80186/80286、80386/80486 AND THE PENTIUM FAMILY」、ISBN 9788120339422、2010 年、579 ページ

これは、テスト レジスタ TR6 TR7 を介して行われました。

  • 2 - 書籍『Microprocessors & Microcontrollers』Godse&Godse著、2008 ISBN 9788184312973 ページ SA3-PA19:「3.2.7.3 テスト レジスタ」 現在、2 つのテスト レジスタ (TR6 ~ TR7) のみが定義されています。...これらのレジスタは、ページング ユニットの変換ルックアサイド バッファ (TLB) をチェックするために使用されます。
  • 3 「x86-Programmierung und -Betriebsarten (Teil 5)。Die Testregister TR6 und TR7」、レジスタに関するドイツの記事:「TR6 と TR7 のテスト登録を行うには、翻訳のルックアサイド バッファを使用してください。テスト コマンド レジスタ (TR6) とテストデータ レジスタ (TR7) も利用できます。」
  • 4 Intel の『Embedded Pentium® Processor Family Developer's Manual』、パート「26 モデル固有のレジスタおよび関数」8 ページ「26.2.1.2 TLB テスト レジスタ」

TR6 はコマンドレジスタで、リニアアドレスが書き込まれます。TLB への書き込み、または TLB からのラインの読み取りに使用できます。TR7 は、TLB に書き込む、または TLB から読み出すデータです。

ウィキペディアにはこう書かれています https://en.wikipedia.org/wiki/Test_register TR6/TR7 を読み取ると、「80486 より新しい CPU では無効なオペコード例外が生成される」ということです。

mov tr6/tr7 のエンコードは特権レベル 0 でのみ利用可能でした。 http://www.fermimn.gov.it/linux/quarta/x86/mvrs.htm

0F 24 /r    movl tr6/tr7,r32    12  Move (test register) to (register)  
   movl %tr6,%ebx
   movl %tr7,%ebx
0F 26 /r    movl r32,tr6/tr7    12  Move (register) to (test register)  
   movl %ebx,%tr6
   movl %ebx,%tr7

他のヒント

TLBに保存されているVA-PA翻訳のリストを取得できますが、プロセッサエミュレータを使用する必要がある場合があります。 qemu. 。 QEMUをダウンロードしてインストールできます http://wiki.qemu.org/main_pageディスクイメージ(通常はQCOW2またはRAW形式)に保存されているカーネルを起動し、アプリケーションを実行できます。 TLBの内容を印刷するには、QEMUのコードを微調整する必要がある場合があります。見る tlb_* 機能します qemu/exec.c TLB_DUMP_FUNCTIONを追加して、TLBの内容を印刷することをお勧めします。私の知る限り、これはTLBの内容を捨てることに最も近いものです。

PS:私はこの質問に答え始め、それがそれが1歳であることに気付きました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top