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

为何页面级局部性可提升L2缓存命中率?结合mimalloc设计分析

结论

页面级局部性提升确实可以显著提高L2缓存命中率,该结果并非随机效应,背后有明确的硬件机制和访问模式匹配的支撑,核心原理如下:

  • 缓存组相联冲突减少
    现代CPU的L2缓存普遍采用组相联映射规则,缓存行的索引位完全落在64KiB页的页内偏移范围内。如果采用全局空闲链表分配,同一时间分配的对象可能来自不同物理页,不同页但相同页内偏移的地址会被映射到同一个缓存组,很容易出现组内冲突导致缓存行被不必要地淘汰。而同一64KiB页内的地址天然不会出现这类跨页冲突,地址会均匀分布在所有缓存组中,大幅降低了无效冲突失效的概率。

  • 热数据的缓存驻留效率提升
    大多数业务场景(尤其是编译器这类数据结构密集型程序)存在明显的时间局部性聚类:同一阶段分配的对象,往往会在同一个时间窗口内被集中访问。优先使用同一页分配的策略,会让同一阶段访问的热对象尽可能集中在少数几个物理页中。典型的L2缓存容量在256KiB~1MiB区间,集中存储的热数据不需要加载大量不同页的零散缓存行,避免了有用缓存行被频繁换入换出,天然提升了命中率。

  • 同缓存行概率提升(次要贡献)
    连续分配的小对象如果落在同一页,相邻分配的对象大概率会被放到同一个64字节缓存行中,访问第一个对象时就会把后续相邻对象一起加载到缓存,减少了后续访问的缓存失效。如果是跨页分配,页边界会切断这种连续性,本来可以共享缓存行的对象会被拆分到两个不同缓存行,额外增加了缓存访问开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:39:03