我想尽可能避免我的代码从 L2 缓存中清除。
您将如何在 C++/C# 中实现这一目标,以及如何使其负责。
编辑:我可以收集 L2 缓存未命中的数量吗? 答:是的,我可以得到windows平台上每个进程的L2缓存未命中计数吗?
我想尽可能避免我的代码从 L2 缓存中清除。
您将如何在 C++/C# 中实现这一目标,以及如何使其负责。
编辑:我可以收集 L2 缓存未命中的数量吗? 答:是的,我可以得到windows平台上每个进程的L2缓存未命中计数吗?
似乎人们不愿意透露这方面的信息(c++ 或 c# 无关紧要)。所以我可能不得不创建自己的策略,这可能会使用一套方法,而不是一套严格的规则或食谱。
为了达到 Windows 应用程序的最大命中/未命中率,我可能会:
这个问题似乎是基于对现代 x86 CPU 上的缓存如何工作的误解。例如,它说“L2 而不是 L3”。在几乎所有现代 x86 CPU(包括 Intel 和 AMD)上,不可能在 L2 缓存而不是 L3 缓存中保存数据。这将导致缓存一致性失败,因为 L3 缓存中没有数据表明 L2 缓存中没有数据,并允许内核假设没有其他内核缓存它。
坦率地说,不太了解 CPU 工作原理的人不应该试图控制缓存中的数据。如果他们比最初设计这些 CPU 的人做得更好,那将是奇迹。