内存层次结构延迟信息

时间:2011-12-27 15:02:03

标签: memory latency

this post的“示例”部分,作者列出了所有内存组件寄存器/ L1 / L2 / RAM的延迟...我的问题是:你如何衡量(在线查找)真实内容延迟适用于任何给定的芯片?我们说

model name  : Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz
stepping    : 13
cpu MHz     : 1200.000

我也尝试过从英特尔手册中获取信息,但对于我的生活,这些事情是巨大的,我不知道在哪里寻找信息。

感谢。

3 个答案:

答案 0 :(得分:11)

一个简单的google query(“英特尔CPU缓存延迟”)揭示了英特尔的一项有趣的研究:Measuring Cache and Memory Latency and CPU to Memory Bandwidth。在本文中,作者使用LMbench来执行测量。

  

如何进行测量

     

使用名为“lat_mem_rd”的可执行二进制文件   在实用程序的目录的“bin”文件夹中找到。接下来,使用以下内容   命令行:

taskset 0x1 ./lat_mem_rd –N [x] –P [y] [depth] [stride]
     

其中[x]等于在报告之前运行流程的次数   潜伏。通常将其设置为“1”足以进行精确测量。   对于'-P'选项,[y]等于调用运行的进程数   基准。对此的建议总是“1”。这就足够了   仅使用一个处理核心或线程来衡量访问延迟。该   [depth]规范指示实用程序将在多大程度上测量内存。   为了确保准确的测量,请指定将要进行的数量   远远超出缓存,因此它不会考虑延迟   测量

     

了解结果

     

由于L1和L2缓存延迟与核心时钟相关,因此CPU频率在如何发挥作用   快速内存访问实时发生。这意味着核心数量   时钟保持不变,与核心频率无关。对于可比的   结果,最好将LMBench给出的延迟从纳秒转换   进入CPU时钟。为此,请将延迟乘以处理器频率。

Time(seconds) * Frequency(Hz) = Clocks of latency
     

因此,如果2.4 GHz处理器需要17 ns才能访问某个级别   缓存,转换为:

17 x 10-18 seconds * 2400000000 Hz = 17 ns * 2.4 GHz ≈ 41 Clocks

答案 1 :(得分:1)

要进行测量,您需要尽早在裸机上进行测量,因为您不需要任何干扰(即时钟频率变化,总线争用等)。

你必须在x86上编写一些汇编程序代码......步骤如下:

  • 执行序列化指令
  • 阅读时间戳计数器
  • 执行序列化指令
  • 做记忆阅读
  • 执行序列化指令
  • 再次阅读时间戳计数器
  • 执行序列化指令
  • 做数学

完成所有操作后,您只需要开始计划并使用缓存。请记住,缓存大小和体系结构在这里发挥着重要作用,因此您需要根据相关主题定制测量值。此外,您可能希望使用预取来使填充更容易。

答案 2 :(得分:1)

快速解决方案,您可以破解以满足您的需求: http://code.google.com/p/mem-latency/

它通过加载不同大小的链表来衡量延迟。