用地址中位作为缓存行索引的原因
用地址中部的位作为缓存行的索引原因(对比高位作为索引的优劣)
- 用内存地址的高位作为缓存行的索引,会导致连续的数据存储在同一个缓存行中。因此,每次新地址被加载时,都会替换掉之前的地址,导致频繁的缓存替换和冲突。
- 即使访问了数组的几个连续元素,缓存只使用了一个行,其它剩余行未被使用,导致缓存利用率非常低。
优势:
- 均匀分布:
- 地址中部的位更频繁地变化,使得访问更均匀地分布在缓存的所有行中,避免特定行的过度使用和其他行的未使用。
- 减少冲突:
- 由于访问模式的局部性,连续或邻近的内存地址会映射到不同的缓存行,减少冲突替换,提高缓存命中率。
- 更高的缓存命中率:
- 当程序访问连续内存时,中位索引将这些访问分散到多个缓存行,减少不必要的替换,保持更多有用的数据在缓存中。
本文作者:上山砍大树
本文链接:https://www.cnblogs.com/shangshankandashu/p/18306639
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步