我可以转储/修改x86 CPU缓存/ TLB的内容

时间:2013-11-20 14:21:53

标签: caching cpu tlb

任何应用程序或系统内核都可以访问甚至修改CPU内容和/或TLB?

我从这个网站找到了关于CPU缓存的简短描述:

“没有编程语言可以直接访问CPU缓存。读取和写入缓存是由硬件自动完成的;没有办法编写将缓存视为任何类型的独立实体的指令。读取和写入缓存对所有触摸内存的指令都会产生副作用。“

从这条消息中,似乎无法读取/写入CPU cahce / TLB的内容。

但是,我还得到了与上述信息冲突的其他信息。该信息意味着调试工具可能能够转储/显示CPU缓存的内容。

目前我很困惑。所以请帮助我。

1 个答案:

答案 0 :(得分:1)

我从另一篇文章中得到了一些答案:dump the contents of TLB buffer of x86 CPU。谢谢adamdunson。

人们可以阅读有关测试寄存器的文档,但它只适用于非常旧的x86机器test registers

wiki https://en.wikipedia.org/wiki/Test_register的另一个描述:

  

Intel 80486处理器中的测试寄存器是一个使用的寄存器   处理器,通常是做自我测试。大多数这些寄存器是   没有文档,并由专业软件使用。测试记录   被命名为TR3至TR7。普通课程通常不需要这些课程   注册工作。使用Pentium,测试寄存器被替换   通过各种型号专用寄存器(MSR)。

     

提供了两个测试寄存器TR6和TR7   测试。 TR6是测试命令寄存器,TR7是测试数据   寄存器。这些寄存器由MOV的变体访问   指令。测试寄存器可以是源操作数或   目的地操作数。 MOV指令在两者中都有定义   实地址模式和保护模式。测试寄存器是   特权资源。在保护模式下,MOV指令即可   访问它们只能在特权级别0执行。尝试   在执行任何其他权限时读取或写入测试寄存器   级别导致一般保护异常。还有那些说明   在任何比80486更新的CPU上生成无效的操作码异常。

事实上,我仍然期待英特尔i7或i5上的某些类似功能。不幸的是,我没有找到任何相关的相关文件。如果有人有这样的信息,请告诉我。