Appearance
concepts/cache/ —— 缓存子系统:怎么存、怎么找、多核怎么保持一致
属于知识金字塔 L3 — 内存子系统层。两条线:缓存组织与访问、缓存一致性协议族。共 16 篇。
全局地图见 ../../overview.md;上层 L4 见 ../microarch/(CPU 微架构)和 ../memory-ordering/(内存序);下层 L2 见 ../process/(进程调度)。
第一条线:缓存组织与访问(6 篇)
数据在缓存里怎么存、怎么找、怎么用——是理解缓存一致性协议的地基。
- cache-organization.md —— 缓存寻址与映射:物理地址三段、直接映射/全相联/组相联、命中判定、读写流程
- i-cache.md —— I-Cache 指令缓存:L1 拆分 I/D 的哈佛结构原因、取指路径(PC→L1I→L2→译码)、只读结构简化(无 dirty/不参与 MESI)、代码膨胀/布局对 I-cache 的影响
- tlb.md —— TLB 与地址翻译:VA→PA、四级页表、"改步长性能暴跌"之谜、大页
- page-table-translation.md —— 虚拟地址到物理地址的完整转换流程、多级页表、page walk 详细过程
- memory-alignment.md —— 内存对齐对性能的影响:未对齐代价、结构体 padding、SIMD 对齐
- cache-friendly-code.md —— 写出 cache-friendly 的代码:局部性、顺序访问、SoA/AoS、防伪共享
第二条线:缓存一致性协议族(8 篇)
多个核各有自己的 cache,怎么保证它们看到的数据一致——从问题到解法到硬件落地。

- msi.md —— 最基础三态协议,引出缓存一致性要解决什么
- mesi.md —— 主流四态协议 + 伪共享问题
- moesi.md / mesif.md / dragon.md —— 三种变体协议
- comparison.md —— 横向对比 + 各协议在真实 CPU 上的落地
- atomic.md —— 原子操作的底层实现:lock 前缀/总线锁→缓存锁/CAS
其他
- memory-model.md —— C/C++ 内存模型与原子操作:
std::atomic、内存序、内存屏障、x86/ARM 架构差异 - compile-options.md —— 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 缓存事件的基础。