在这篇文章的"示例"部分中,作者列出了所有内存组件寄存器/ 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"的可执行二进制文件.接下来,使用以下命令行:
Run Code Online (Sandbox Code Playgroud)taskset 0x1 ./lat_mem_rd –N [x] –P [y] [depth] [stride]其中[x]等于在报告延迟之前运行进程的次数.通常将其设置为"1"足以进行精确测量.对于'-P'选项,[y]等于调用运行基准的进程数.对此的建议总是"1".仅使用一个处理核心或线程来衡量访问延迟就足够了.[depth]规范指示实用程序将测量的内存量.为了确保准确的测量,请指定远远超出缓存的数量,以便它不会考虑延迟测量.
了解结果
由于L1和L2缓存延迟与核心时钟相关,因此CPU频率在内存访问实时发生的速度中起作用.这意味着核心时钟的数量保持不变,与核心频率无关.对于可比较的结果,最好将LMBench给出的延迟从纳秒转换为CPU时钟.为此,请将延迟乘以处理器频率.
Run Code Online (Sandbox Code Playgroud)Time(seconds) * Frequency(Hz) = Clocks of latency因此,如果2.4 GHz处理器需要17 ns才能访问某个级别的缓存,则转换为:
Run Code Online (Sandbox Code Playgroud)17 x 10-18 seconds * 2400000000 Hz = 17 ns * 2.4 GHz ? 41 Clocks
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |