You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据变更时CPU缓存行为:两次循环的缓存重新加载次数探究

数据变更对CPU缓存的影响及代码分析

首先明确前提:假设CPU缓存行大小为64字节(主流CPU的常见配置),int类型占4字节,因此代码中的arr[16]刚好占用1个完整的缓存行;同时基于单线程执行场景,不存在其他CPU核心对该内存区域的干扰。

第一个循环的重新加载次数:0

for (int i = 1; i < 16; i++) {
  arr[i] = arr[i] + arr[i-1];
}

循环首次执行时,读取arr[0]和arr[1]会触发缓存不命中,CPU会将整个arr所在的64字节缓存行加载到L1缓存中。后续所有的arr[i]读取与写入操作都命中缓存:写入时缓存行已处于可修改状态,无需重新加载任何缓存数据。因此这个循环中,没有因写入操作导致的缓存重新加载。

第二个循环的重新加载次数:0

for (int i = 0; i < 16; i++) {
 arr[i] += arr[i];
}

第一个循环执行完毕后,arr的缓存行仍驻留在CPU缓存中(无被替换的触发条件)。此循环中所有的arr[i]读取和写入操作均命中缓存,写入时无需重新加载缓存数据,因此同样没有因写入操作导致的缓存重新加载。

内容的提问来源于stack exchange,提问作者scasci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:30:47