1

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

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

“没有一种编程语言可以直接访问 CPU 缓存。读取和写入缓存是由硬件自动完成的;没有办法编写将缓存视为任何类型的单独实体的指令。对缓存的读取和写入是边发生的- 对所有触及记忆的指令有效。”

从这条消息来看,似乎没有办法读取/写入 CPU cahce/TLB 的内容。

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

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

4

1 回答 1

1

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

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

来自 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 上的一些类似功能。不幸的是,我没有找到任何相关文件。如果有人有这样的信息,请告诉我。

于 2016-01-21T19:02:36.480 回答