Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 要求CPU使用偏移量缓存数据(非等效)_Caching - Fatal编程技术网

Caching 要求CPU使用偏移量缓存数据(非等效)

Caching 要求CPU使用偏移量缓存数据(非等效),caching,Caching,我们都知道以下代码的性能很低,因为在每次迭代中,CPU都会从RAM加载新元素s #define N a very large number struct{ float m; int x[N] } S; void main(){ struct S s[elements]; ... //working with data for (i=0; i<elements;i++){ total+=s[i].m; } ... }

我们都知道以下代码的性能很低,因为在每次迭代中,CPU都会从RAM加载新元素
s

#define N a very large number
struct{
    float m;
    int x[N]
} S;

void main(){
  struct S s[elements];
  ...
     //working with data
     for (i=0; i<elements;i++){
         total+=s[i].m;
     }
 ...
}
#定义一个非常大的数字
结构{
浮动m;
整数x[N]
}S;
void main(){
结构[元素];
...
//处理数据

对于(i=0;i这是现代CPU能够识别的模式。请阅读:

硬件预取器:硬件预取器操作透明,无需程序员干预,将数据流和指令流从内存中提取到统一的二级缓存中。预取器能够向前或向后处理多个流。在连续缓存时触发未命中发生在最后一级缓存中,并且检测到访问模式中的跨步,例如在访问数组元素的循环迭代的情况下