6

我想尽可能避免我的代码从 L2 缓存中清除。

您将如何在 C++/C# 中实现这一目标,以及如何使其负责。

编辑:我可以收集 L2 缓存未命中的数量吗? :是的,我可以得到windows平台上每个进程的L2缓存未命中计数吗?

4

2 回答 2

3

似乎人们不愿意透露这方面的信息(c++ 或 c# 无关紧要)。所以我可能不得不创建自己的策略,这可能会使用一套方法,而不是一套严格的规则或食谱。

为了达到 Windows 应用程序的最大命中/未命中率,我可能会:

于 2013-01-21T14:41:00.720 回答
0

这个问题似乎是基于对现代 x86 CPU 上的缓存如何工作的误解。例如,它说“L2 而不是 L3”。在几乎所有现代 x86 CPU(包括 Intel 和 AMD)上,不可能在 L2 缓存而不是 L3 缓存中保存数据。这将导致缓存一致性失败,因为 L3 缓存中没有数据表明 L2 缓存中没有数据,并允许内核假设没有其他内核缓存它。

坦率地说,不太了解 CPU 工作原理的人不应该试图控制缓存中的数据。如果他们比最初设计这些 CPU 的人做得更好,那将是奇迹。

于 2013-01-17T15:09:09.783 回答