如何使用C测量L1,L2和L3缓存潜伏期



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

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

对于L2缓存中的延迟,我可以使数组更大以达到L2缓存。

,但实际上我不知道该怎么开始。我对每个缓存的数组应该有多大以及如何使用上述想法编写此C程序。

有人可以帮我这个C程序吗?任何帮助将不胜感激!

非常感谢!

您可以使用Linux中的命令看到缓存大小:

grep。/sys/devices/system/cpu/cpu1/cache/index*/*

在我的情况下(Intel Core i7),它显示L1 D Cahe为32KB,因此您的数组大小也应该相同;例如说x = 32*1024/sizeof(int)然后创建一个X整数的数组,该整数恰好占32kb在这种情况下,它是int [32*1024/4]

您可以申请L2和L3

测量缓存潜伏期

您可以推荐这篇文章,该帖子将为您提供一些见识。

已经有一个称为lmbench的工具,可以做到这一点。

这是一个开源工具,因此您甚至可以查看源代码并查看他的工作方式。

最新更新