Caching 关于cache算法

Caching 关于cache算法,caching,optimization,cpu,Caching,Optimization,Cpu,假设某个数组位于某个固定内存地址中,并且经常被访问和更新(更新的频率比访问频率低得多),那么如果数组的大小很小,现代CPU通常可以缓存整个数组吗?阵列的更新/访问是否可以完全在缓存中而不是在主存中完成 根据我过去的经验,我测试过的几个英特尔CPU可能都是这样,但我需要更多关于缓存算法的详细信息(对于任何远程最新的CPU型号来说,都很难找到缓存算法)来优化我的算法。写操作可以是回写,也可以是直写,具体取决于具体的CPU。大多数现代CPU都支持写回 可以从缓存中执行多次读取,这取决于几个因素,包括

假设某个数组位于某个固定内存地址中,并且经常被访问和更新(更新的频率比访问频率低得多),那么如果数组的大小很小,现代CPU通常可以缓存整个数组吗?阵列的更新/访问是否可以完全在缓存中而不是在主存中完成


根据我过去的经验,我测试过的几个英特尔CPU可能都是这样,但我需要更多关于缓存算法的详细信息(对于任何远程最新的CPU型号来说,都很难找到缓存算法)来优化我的算法。

写操作可以是回写,也可以是直写,具体取决于具体的CPU。大多数现代CPU都支持写回

可以从缓存中执行多次读取,这取决于几个因素,包括

  • 计算机上正在进行的其他处理(其他操作可能会从缓存中取出阵列)
  • 是否有多个内核正在访问阵列。每个核心通常都有自己的缓存
有关英特尔缓存体系结构的信息,请参阅

  • (英特尔CPU)
  • (AMD64 CPU)
  • (PowerPC CPU)

所以我们不能像使用快速内存缓冲区那样使用缓存,因为任何写操作都会导致昂贵的内存写操作,这意味着CPU的缓存不能像nvidia GPU的缓存那样工作,这太糟糕了。@user1748356:我更正了这句话。大多数现代CPU除了直写之外还支持写回缓存。但是缓存到内存的写操作是否可以与缓存访问同时发生?我的意思是,一个操作是将数据x从缓存复制到主存,而另一个操作是将数据x从缓存复制到寄存器等,这两个操作同时/并行进行,因此数据访问操作不需要等到内存写入完成?