内存层次结构延迟信息

Der*_*unk 5 memory latency

这篇文章的"示例"部分中,作者列出了所有内存组件寄存器/ L1/L2/RAM的延迟...我的问题是:如何测量(在线查找)任何给定芯片的实际延迟?让我们说吧

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

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

谢谢.

Eld*_*mov 11

一个简单的谷歌查询("英特尔CPU缓存延迟")揭示了英特尔的一项有趣研究:测量缓存和内存延迟以及CPU到内存带宽.在本文中,作者使用LMbench进行测量.

如何进行测量

使用实用程序目录的"bin"文件夹中名为"lat_mem_rd"的可执行二进制文件.接下来,使用以下命令行:

taskset 0x1 ./lat_mem_rd –N [x] –P [y] [depth] [stride]
Run Code Online (Sandbox Code Playgroud)

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

了解结果

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

Time(seconds) * Frequency(Hz) = Clocks of latency
Run Code Online (Sandbox Code Playgroud)

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

17 x 10-18 seconds * 2400000000 Hz = 17 ns * 2.4 GHz ? 41 Clocks
Run Code Online (Sandbox Code Playgroud)