concepts/cache/ —— 缓存子系统:怎么存、怎么找、多核怎么保持一致
属于知识金字塔 L3 — 内存子系统层。两条线:缓存组织与访问、缓存一致性协议族。共 20 篇。
全局地图见 overview;上层 L4 见 ../microarch/(CPU 微架构)和 ../memory-ordering/(内存序);下层 L2 见 ../process/(进程调度)。
第一条线:缓存组织与访问(9 篇)
数据在缓存里怎么存、怎么找、怎么用——是理解缓存一致性协议的地基。
- cache-organization(导读) —— 缓存寻址与映射总览(三拆分篇:寻址与命中 · 映射结构 · 访问流程与开销)
- i-cache —— I-Cache 指令缓存:L1 拆分 I/D 的哈佛结构原因、取指路径(PC→L1I→L2→译码)、只读结构简化(无 dirty/不参与 MESI)、代码膨胀/布局对 I-cache 的影响
- tlb —— TLB 与地址翻译:VA→PA、四级页表、"改步长性能暴跌"之谜、大页
- page-table-translation —— 虚拟地址到物理地址的完整转换流程、多级页表、page walk 详细过程
- memory-alignment —— 内存对齐对性能的影响:未对齐代价、结构体 padding、SIMD 对齐
- cache-friendly-code —— 写出 cache-friendly 的代码:局部性、顺序访问、SoA/AoS、防伪共享
第二条线:缓存一致性协议族(7 篇)
多个核各有自己的 cache,怎么保证它们看到的数据一致——从问题到解法到硬件落地。
- msi —— 最基础三态协议,引出缓存一致性要解决什么
- mesi(导读) —— 主流四态协议 + 伪共享问题(拆分篇:协议机制 · 伪共享)
- mesi-variants —— MOESI / MESIF / Dragon 三路变体合一:O(脏可共享)、F(指定应答)、写更新
- comparison —— 横向对比 + 各协议在真实 CPU 上的落地
- atomic —— 原子操作的底层实现:lock 前缀/总线锁→缓存锁/CAS
其他
- memory-model(导读) —— C/C++ 内存模型与原子操作(拆分篇:内存序 · 屏障与架构差异)
- compile-options —— GCC 编译选项与汇编优化
与周边目录的关系
| 相关目录 | 关系 |
|---|---|
| ../microarch/ | 上层(L4):缓存未命中是流水线停顿的主要原因,理解 cache 才能看懂 perf stat 的 stall 指标 |
| ../memory-ordering/ | 上层(L4):MESI 协议是内存重排的硬件基础,store buffer/invalidate queue 是对缓存一致性优化的进一步放宽 |
| ../cpu/ | 并行:L3 Cache 是 Uncore 基础设施,互联拓扑决定一致性协议的性能 |
| ../elf/ | 下层(L5):程序内存布局、mmap 映射影响缓存利用 |
一句话总结:缓存是数据怎么存的(第一条线),一致性是多个缓存怎么同步的(第二条线)。从 cache-organization 理解物理存取的机制,从 MSI→MESI→MOESI/MESIF/Dragon 理解多核正确的协议——两者是读懂 perf 缓存事件的基础。