在c/c++语言代码中,哪些数据将从内存加载到缓存?是否会在频繁使用时将其加载到缓存中?例如,当我用C语言编写For循环时,我经常使用变量i, j, and k。这些也会被加载到缓存中吗?C语言的局部变量一般都放在堆栈区,全局变量会放在数据区吗?当它们被使用时,它们会首先被加载到缓存中吗?数据是否必须通过高速缓存才能到达寄存器,然后到达CPU?
指针变量p存储数据的地址。
我刚刚读了一篇博文,并尝试做类似的事情,下面是我的代码来检查示例1和2中的内容: long k; for(k=0;k<numLoop;k++){ for (i = 0; i < 1000000; i+=cacheSize) arr[i] = arr[i];}
正如博文中所说,doSomething(1000,2)和doSomething(1000,1)的执行时间应该几乎相同
long max = 1024*1024;for(i = 1; i < max; i++) ARM Cortex A9是四路组相联的,每个高速缓存线为32字节,总高速缓存为32kb。总共有1024条高速缓存线。为了执行上述计算,必须移位一个高速缓存线。当要计算a(i)时,b(i)将被去掉。然后,当循环迭代时,需要b(i)