我对此有一个大致的想法,具体如下:
首先,找出将要使用的L1缓存的大小。然后创建一个数组(字节数足够大以适应L1缓存),编写一个程序访问数组的每个元素,然后在每个循环的几个时间戳中创建。
对于L2缓存的延迟,可以使数组更大以达到L2缓存。
但实际上我不知道如何开始。我没有清楚的想法,每个缓存应该有多大的数组以及如何根据上述想法编写这个C程序。
能否有人帮助我写这个C程序?任何帮助都将不胜感激!
非常感谢!
我对此有一个大致的想法,具体如下:
首先,找出将要使用的L1缓存的大小。然后创建一个数组(字节数足够大以适应L1缓存),编写一个程序访问数组的每个元素,然后在每个循环的几个时间戳中创建。
对于L2缓存的延迟,可以使数组更大以达到L2缓存。
但实际上我不知道如何开始。我没有清楚的想法,每个缓存应该有多大的数组以及如何根据上述想法编写这个C程序。
能否有人帮助我写这个C程序?任何帮助都将不胜感激!
非常感谢!
在我的情况下(Intel Core i7),它显示L1 D缓存为32KB,因此您的数组大小也应该是相同的;例如,假设x = 32 * 1024 / sizeof(int) 然后创建一个包含x个整数的数组,占用正好32KB 在这种情况下,它是int [32 * 1024/4]grep . /sys/devices/system/cpu/cpu1/cache/index*/*
已经有一个名为LMbench的工具可以完全做到这一点。
它是一个开源工具,因此您甚至可以查看源代码并了解他是如何实现的。