缓存 - RAM访问时间

caching - RAM access times

本文关键字:时间 访问 RAM 缓存      更新时间:2023-10-16

在数组上考虑两个循环:

int *arr = new int[1024 * 1024];
// Loop1
for (int i = 0; i < n; i++) arr[i] *= 3;
// Loop2
for (int i = 0; i < n; i += 16) arr[i] *= 3;

,由于它们在大符号中都是o(n),但是它们具有相同数量的RAM访问权限。即相同数量的缓存遗漏。

为什么他们会具有相同数量的RAM访问权限?循环2是否会根据每次访问后的RAM访问较少,我被16?

递增

始终使用线路的粒度访问/管理。缓存线中将有多个元素。我认为您的缓存线可以容纳16个或更多的元素,因此,一个RAM访问将加载所有相邻的元素以缓存,并且下一个16个字节不需要进一步的RAM访问。