如何使用 C 测量 L1、L2 和 L3 缓存延迟?

Zip*_*Zip 6 c arrays caching

我对此有一个总体的想法。这就是我的想法:

首先,找出我将使用的 L1 缓存的大小。然后创建一个数组(字节数足够大以适合 L1 缓存),编写一个程序来访问数组的每个元素。然后在每几个循环中创建时间戳。

对于 L2 缓存中的延迟,我可以增大阵列以到达 L2 缓存。

但实际上我不知道如何开始。我不清楚每个缓存的数组应该有多大,以及如何用上面的想法编写这个 C 程序。

谁能帮我写一下这个C程序吗?任何帮助将不胜感激!

多谢!

小智 0

已经有一个名为LMbench的工具可以做到这一点。

它是一个开源工具,所以你甚至可以查看源代码,看看他是如何做到的。