【发布时间】:2026-02-14 22:05:02
【问题描述】:
我正在学习缓存行,以及循环步长对缓存的影响。我遇到了this 页面,它显示了循环的执行时间与循环步幅。根据基准,增加循环步幅会减少执行时间,这让我很困惑。据我了解,如果缓存行是 64 字节,并且假设在第一种情况下循环步长仅为 1,这意味着循环按顺序遍历数组元素,那么执行时间应该最短,因为 16 个整数(4 字节 x 16 = 64bytes) 被加载到缓存中。由于所有 16 个元素都加载到同一个高速缓存行中,因此执行时间应该最短,最大跨度为 16。当步幅增加到 16 以上时,应该会增加执行时间,因为数组元素不会在缓存行中,但页面上的图形完全相反。
【问题讨论】:
标签: arrays caching cpu-architecture cpu-cache