我想对Intel体系结构中缓存的行为进行建模(LRU、包容性、K-Way关联等等)。我阅读过wikipedia、Ulrich Drepper关于内存的伟大论文和Intel手册第3A卷:系统编程指南(第11章,但这并不是很有帮助,因为它们只解释了在软件级别上可以操作的内容)。我也读过一堆学术论文,但和往常一样,他们没有把代码用于复制.即使是在要求之后。我的问题是,是否已经有一个公共可用的框架来建模缓存行为?如果没有,是否有一份文件详细描述了英特尔在最深层次上的缓存行为?我找不到一个。
发布于 2013-12-07 13:20:41
这里有大量的缓存模拟器,例如,用于迪涅罗 (双关语显然是有意的)应该相当简单,并且经常用于教育目的。
请注意,这个模拟器是跟踪驱动的,这意味着它提供了一个内存访问地址列表,它不知道如何运行二进制文件。您可以通过使用二进制工具来模拟这些跟踪。
等等。请注意,其中一些已经提供了内部缓存模拟器,可能还可以使用。
其他模拟器可以模拟完整的CPU/系统行为,而不仅仅是缓存,因此可以支持运行二进制文件。其中大多数都包括一个模拟的缓存系统。例如:
和其他许多人
另一方面,编写自己的缓存模拟器相当简单--如果您可以处理内存跟踪(编写实际的前端要复杂得多)。您将无法获得关于Intel/AMD产品中实际缓存的过于详细的规范,但是基本功能在任何计算机体系结构教科书甚至wikipedia中都有详细说明,参数(大小、相关性、一致性策略)主要记录在已出版的指南中,并且可能在产品代际之间经常发生变化。如果遇到任何特定的问题,您总是可以在这里问:)
编辑:
关于问题的第二部分--没有关于英特尔CPU的确切缓存实现的公开文档,但是“规范”(大小、关联性、策略)在优化指南中:
现在,对这些缓存进行建模应该是简单的,但是可能会有一些隐藏的警告,比如关机特性或专门的LRU行为。在这里可以找到这样一个报告的例子- http://blog.stuffedcow.net/2013/01/ivb-cache-replacement/ (如果是这样的话,它可能是值得实现的准确性),但除此之外,我认为总体行为不应该受到这些细节的太大影响,为任何实际用途。
https://stackoverflow.com/questions/20441667
复制相似问题