8.2.2.2 预取指令使用 8.2.2.2 预取指令使用:当 在 L3 缓存边界上“踩空”——一个被忽略的 stride 陷阱与三行修复代码 你有没有遇到过这样的场景? 一段看似规整的循环,遍历一块连续分配的 ,每轮处理 64 个元素,用 AVX-512 加载、计算、写回。性能剖析显示:L2 缓存命中率高达 98%,但整体 CPI 却卡在 2.7——远高于理论下限; 报出一个刺眼的信号: 每千条指令激增 142 次,而 却只占 的 3.1%。 不是缺页,不是 TLB miss,不是分支预测失败。 是预取失效——不是没发,而是发得“太准”,准到刚好落在缓存行(cache line)的裂缝里。 这不是教科书里的理想模型。