实现缓存建模框架

时间:2013-12-07 13:01:30

标签: c caching architecture simulation cpu-cache

我想模拟英特尔架构中的缓存行为(LRU,包括在内,K-Way Associative等)。我读过维基百科,Ulrich Drepper关于内存的精彩论文,以及英特尔手册第3A卷:系统编程指南(第11章,但它不是很有用,因为它们只解释了在软件级别可以操作的内容)。我还阅读了一堆学术论文,但像往常一样,他们不会让他们的代码可用于复制......即使在提出要求之后。我的问题是,是否已有一个公开可用的框架来模拟缓存行为?如果没有,是否有一份文件详细说明英特尔最深层次的缓存行为?我找不到一个。

1 个答案:

答案 0 :(得分:2)

有很多缓存模拟器,例如 Dinero (双关语显然是有意的)应该相当简单,通常用于教育目的 请注意,此模拟器是跟踪驱动,这意味着它以内存访问地址列表为基础,它不知道如何运行二进制文件。您可以通过使用二进制检测工具模拟它们来生成此类跟踪,例如,

等。请注意,其中一些已经提供内部缓存模拟器,并且可以使用。

其他模拟器可以模拟完整的CPU /系统行为,而不仅仅是缓存,因此可以支持运行二进制文件。其中大多数都包含模拟缓存系统。例如:

和其他许多人

另一方面,编写自己的缓存模拟器非常简单 - 如果你可以处理内存跟踪(写一个实际的fronend更复杂)。您无法获得有关Intel / AMD产品中实际缓存的详细规范,但基本功能在任何计算机体系结构教科书甚至维基百科中都有详细说明,参数(大小,关联性,一致性策略)主要是已发布的指南中记录了这些内容,并且可能经常在产品代之间进如果您遇到任何具体问题,可以随时询问:)

编辑:

关于问题的第二部分 - 没有关于英特尔CPU的确切缓存实现的公开文档,但是干的规范" (大小,关联性,政策)在optimization guide中: Haswell caches 现在,对这些缓存建模应该是直截了当的,但可能存在一些隐藏的警告,例如断电功能或专门的LRU行为。可以在这里找到一个这样的报告示例 - http://blog.stuffedcow.net/2013/01/ivb-cache-replacement/(如果这是真的,可能值得实现准确性),但除此之外我认为整体行为不应该受到这些细节的影响太多,任何实际用途。