【问题标题】:A program to calculate Cache Hit and Miss计算缓存命中和未命中的程序
【发布时间】:2014-09-29 19:26:30
【问题描述】:

我的任务是编写一个软件工具来测量不同级别高速缓存(L1、L2、L3)的命中和未命中。 该程序应该用我熟悉的 c/c++ 编写,但从未对硬件做过如此低级的事情。 我不是在寻找解决方案,只是在寻找我可以使用哪些工具、库和函数的方向。

【问题讨论】:

  • 缓存管理在硬件中完成,而不是由操作系统完成。因此,这是非常特定于平台的,但您可以使用库来解决这个问题。你的目标是什么硬件?这个问题可能会有所帮助(如果您使用的是英特尔):stackoverflow.com/questions/8091182/…
  • 我使用的是 Windows 8 和 Intel,我会尽快查看您建议的链接。谢谢
  • 您的程序是要在 L1 / L2 / L3 中发生缓存未命中时通知您,还是您的程序是要测量 L1 / L2 / L3 中缓存未命中的惩罚?
  • 该程序旨在测量不同级别的击球时间和未命中时间(罚分)。

标签: c++ caching computer-architecture hit


【解决方案1】:

在假设的缓存配置上运行二进制文件时,您是否只是在寻找统计数据(缓存命中率)?如果是这样,请查看Cachegrind。该页面上有一个实现部分链接到具有一些详细信息的博士学位。它可能很有用。

【讨论】:

    【解决方案2】:

    有几个开源模拟器可以将缓存层次结构实现到合理的细节(例如,MArss86、Simics、M5,实际上还有其他几个)。从您的问题中清楚地注意到您的需求是什么。请用谷歌搜索它们 - 我相信你会找到很多。

    而且,还有一个著名的缓存访问建模模拟器 - CACTI。这些应该会给你一些关于如何开始你自己的实现的想法。

    使用这些工具的优势在于它们还允许您执行一些建筑空间探索(改变参数/配置并查看它们的影响)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-05
      • 2012-04-21
      • 2019-07-04
      • 2014-10-18
      • 1970-01-01
      • 2018-07-22
      • 2014-11-25
      • 1970-01-01
      相关资源
      最近更新 更多