缓存关联性指的是数据如何映射到缓存内存中,以及CPU如何搜索这些数据。它决定了一个特定的内存地址可以存储在缓存集中的多少个位置(或“路”)。较高的关联性通常会减少缓存未命中,但可能会略微增加延迟。
缓存关联性的类型:
1. 直接映射缓存(1路组关联)---(Direct Mapped)
每个内存块只能存储在缓存中的一个位置。
速度非常快,但容易发生缓存冲突(更多的缓存未命中)。
示例:较旧的CPU、嵌入式系统。
2. N路组关联缓存(2路、4路、8路等)---(N-way Set-Associative)
缓存被分为组,每组有N个“路”(槽)。
每个内存块可以存储在组中的任意N个位置。
在速度和缓存命中率之间取得平衡。
常见于现代CPU中。
组关联缓存的示例:
2路组关联:每组有2个槽 → 中等冲突。
4路组关联:每组有4个槽 → 更好的性能。
8路组关联:常见于现代CPU的L1和L2缓存中。
16路组关联:常见于L3缓存中(例如Intel、AMD Ryzen)。
32路、48路、64路组关联:用于服务器/工作站CPU的大型共享L3缓存中。
3. 全关联缓存---(Fully Associative)
内存块可以存储在缓存中的任何位置(无固定映射)。
消除了冲突,但需要更多的硬件复杂性。
用于转换后备缓冲区(TLB)和小型缓存中。
较低的关联性(直接映射、2路) → 查找速度更快,但冲突更多。
较高的关联性(16路、32路、64路) → 冲突更少,但延迟略高。
全关联 → 最高的灵活性,但需要复杂的搜索。