gpt4 book ai didi

memory-management - 转储 x86 CPU 的 TLB 缓冲区的内容

转载 作者:行者123 更新时间:2023-12-04 07:46:22 25 4
gpt4 key购买 nike

是否可以从 TLB(翻译后备缓冲区,这是 CPU 中的特殊缓存)获取翻译列表(从虚拟页面到物理页面)。我的意思是现代 x86 或 x86_64;我想以编程方式完成,而不是使用 JTAG 并将所有 TLB 条目移出。

最佳答案

linux内核没有这样的dumper,linux内核有关于缓存和tlb的页面:https://www.kernel.org/doc/Documentation/cachetlb.txt 《Linux 下的缓存和 TLB 刷新》。大卫·米勒

在 80386DX(和 80486,可能在 1998 年的“嵌入式奔腾”100-166 MHz/“Embedded Pentium MMX200-233 MHz”中)有一个这样的 TLB 转储:

  • 1 - 书籍“微处理器:8086/8088、80186/80286、80386/80486 和奔腾家族”,ISBN 9788120339422,2010,第 579 页

这是通过测试寄存器 TR6 TR7 完成的:

  • 2 - Godse&Godse 所著的《Microprocessors & Microcontrollers》一书,2008 ISBN 9788184312973 页 SA3-PA19:“3.2.7.3 Test Registers”“目前只定义了两个测试寄存器(TR6-TR7)。......这些寄存器用于检查翻译后备分页单元的缓冲区 (TLB)。"
  • 3 “x86-Programmierung und -Betriebsarten (Teil 5). Die Testregister TR6 und TR7”,关于寄存器的德国文章:“Zur Prüfung des Translation-Lookaside-Buffers sind die zwei Testregister TR6 und TR7 vorhanden. Sie werden als Test-Command-Register (TR6) 和 Testdatenregister (TR7) bezeichnet。"
  • 4 Intel 的《Embedded Pentium® Processor Family Developer's Manual》,part "26 Model Specific Registers and Functions"page 8 "26.2.1.2 TLB Test Registers"

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/movrs.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

关于memory-management - 转储 x86 CPU 的 TLB 缓冲区的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com