加载中...

缓存行(Cache Line)是 CPU 缓存管理与数据传输的基本单位:内存数据不是按字节而是按整行加载进缓存,主流 x86 处理器的缓存行为 64 字节,部分 ARM 平台为 64 或 128 字节。
按行加载利用了空间局部性——访问某个变量时,其相邻数据大概率随后也会被用到,一次载入整行可摊薄访存成本。缓存一致性协议(如 MESI)也以缓存行为粒度维护各核心间的数据状态。
顺序遍历数组远快于随机访问链表,原因之一就是前者能充分利用已加载的缓存行;结构体字段按访问热度排布、数据按缓存行对齐,都是常见优化。反面典型是伪共享:两个核心频繁写同一缓存行内的不同变量,导致该行在核心间来回失效,性能骤降,需用填充(padding)把热点变量隔离到独立缓存行。
Linux 下可通过 getconf LEVEL1_DCACHE_LINESIZE 查询行大小;高性能库(如 Disruptor)的源码中充斥着针对缓存行的精细布局。

登录 后参与讨论
暂无讨论,来发表第一条评论吧