假设我的数组是 32KB,L1 是 64KB。Windows 是否在程序运行时使用其中的一些?也许我无法使用 L1,因为 Windows 正在使其他程序工作?我应该设置程序的优先级以使用所有缓存吗?
for(int i=0;i<8192;i++)
{
array_3[i]+=clock()*(rand()%256);//clock() and rand in cache too?
//how many times do I need to use a variable to make it stay in cache?
//or cache is only for reading? look below plz
temp_a+=array_x[i]*my_function();
}
该程序使用 C/C++ 编写。
L2也一样。
功能是否也保存在缓存中?缓存是只读的?(如果我更改我的阵列,那么它会丢失缓存绑定?)
编译器是否创建 asm 代码以使用缓存更多产量?
谢谢