我对此有一个一般的想法。这就是我的想法:
首先,找出我将使用的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的工具,可以做到这一点。
这是一个开源工具,因此您甚至可以查看源代码并查看他的工作方式。