缓存组织与策略
缓存组织涉及缓存如何将内存块映射到存储——其放置方式和关联性——以及管理替换和写入的策略,这些共同决定了缓存的命中频率以及它与主内存的交互方式。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
缓存组织和策略是缓存的结构和管理选择——块可以放置在哪里,当发生缺失时哪个块被逐出,以及写入如何传播到较低级别——它们共同决定了缓存的命中率和行为。
Scope
本主题涵盖单个缓存的内部设计:直接映射、组相联和全相联放置;替换策略,例如LRU及其近似算法;写入策略(直写与回写)和写分配;块大小;以及将缺失分类为强制性、容量性和冲突性。它不包括多缓存一致性(缓存一致性协议)和地址转换(虚拟内存和分页)。
Core questions
- 直接映射、组相联和全相联放置在成本和冲突行为上有何不同?
- 当发生缺失时,应采用何种替换策略来逐出块,以及如何廉价地近似实现?
- 直写和回写策略在流量和复杂性上有何不同?
- 缺失是如何分类的,以及哪些设计更改可以减少每种类型的缺失?
Key concepts
- 直接映射缓存
- 组相联缓存
- 全相联缓存
- 最近最少使用(LRU)替换
- 直写与回写
- 写分配
- 块(行)大小
- 强制性、容量性和冲突性缺失
Key theories
- 三C缺失模型
- 缓存缺失可以分为强制性(首次访问)、容量性(缓存对于工作集来说太小)和冲突性(关联性太低),这个框架将每个设计参数——大小、块大小、关联性——与其减少的缺失类型联系起来。
Mechanisms
内存地址被分成标签、索引和偏移字段。索引选择一个组,标签识别组内的块,关联性设置有多少块共享一个组。当发生缺失时,缓存会获取该块并逐出由替换策略(通常是最近最少使用(LRU)的近似算法)选择的另一个块。写入要么立即更新主内存(直写),要么将块标记为脏并推迟更新(回写)。
Clinical relevance
缓存组织决定了有效性能,因为缺失惩罚相对于命中而言是很大的。程序员通过数据布局、分块和提高局部性的访问模式来改善缓存行为,而架构师则调整关联性、块大小和写入策略,以平衡命中率与面积、功耗和带宽。
History
Wilkes于1965年提出了从属(缓存)内存,缓存很快被商业采用。Alan Jay Smith在1982年的调查综合了对放置、替换和写入策略的广泛测量,建立了至今仍在使用的设计词汇。三C模型后来提供了一种结构化的方式来推理缺失的原因和补救措施。
Key figures
- Maurice Wilkes
- Alan Jay Smith
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- smith1982cache
- hennessy2019
Frequently asked questions
- 直写缓存和回写缓存有什么区别?
- 直写缓存每次写入时都会更新缓存和主内存,保持内存最新但会产生更多流量。回写缓存只更新缓存,将块标记为脏,并且只有在块被逐出时才将其写入内存,从而减少流量,但代价是需要额外的簿记开销。
- 为什么使用组相联缓存而不是直接映射缓存?
- 直接映射缓存允许每个块只有一个位置,因此映射到相同槽位的块会发生冲突。组相联缓存为每个块在组内提供了几个可能的位置,从而减少了冲突缺失,但代价是需要更多的比较硬件和稍微慢的命中速度。