1

如何查看或转储基于 x86 架构的 cpu 缓存内容?每次缓存刷新时,我怎样才能看到刷新了什么/在哪里?

4

2 回答 2

1

有一些选项,但实施起来并不简单。

这个想法是您需要转储缓存而不破坏其状态。说起来容易做起来难,但原则上它很简单:从触发最后一次 L3 缓存更改的地址中写出所有内容,然后移动整个 L3 缓存宽度,直到您读取所有值,而不触及外部值。然后,您可以从那里向上到更高级别的缓存。我在那篇论文中并没有真正看到他们如何处理这个问题,但似乎暗示他们通过缓存自上而下而不是自下而上地工作,正如我所建议的那样。同样,所有这一切的关键部分是不破坏任何缓存。

尽管如此,它还是大大降低了应用程序的性能,降低了 100-1000 倍。该论文涉及的一个方面是硬件压缩,因为数据量很大。

于 2014-04-15T09:17:38.043 回答
1

你不能,真的。CPU 缓存被设计为对 CPU 上运行的代码透明。它具有加快代码执行速度的效果,但是 CPU 管理有关缓存的所有内容:保留什么,从其中驱逐什么,何时读取,一切。它不是为程序员设计的(尽管 Intel/AMD 可能提供调试工具,可以检查特殊的调试寄存器以查询诸如此类的信息)

于 2013-10-16T18:21:17.393 回答