【发布时间】:2017-10-23 09:54:05
【问题描述】:
有没有办法查明我请求的内存是否被缓存?如果是这样,了解该内存块存储在哪一级缓存中会很有帮助。
我有一个想法,指针的地址在缓存时可能会改变,但看起来这不起作用。
编辑:这是针对大学项目的,我可以访问具有不同操作系统的多台机器,因此几乎任何解决方案都会有所帮助。
【问题讨论】:
-
这在很大程度上取决于您使用的硬件和软件。请edit您的问题。
-
你在说什么级别的缓存?您不会找到任何尚未缓存在硬件中的现代 CPU,而且您真的不应该关心。这可能是XY problem。
-
你实际上想解决什么问题:阅读:XY Problem
-
如果你想研究缓存的使用,我可以推荐cachegrind(一个valgrind子系统)或“perf”,两者都可以在linux上使用
-
询问缓存中是否有某些东西是没有意义的,因为在您可以对它做任何事情之前,答案已经过时了。有些事情超出了您的控制范围,可能会更改缓存的状态,包括您运行以查找缓存中是否存在某些内容的代码。