CPU 多级缓存

张开发
2026/4/20 11:41:32 15 分钟阅读

分享文章

CPU 多级缓存
CPU 内部一层一层的高速临时存储器越靠近核心越快、越小、越贵越远离越慢、越大、越便宜用来解决 CPU 极快、内存极慢的速度鸿沟。典型三级结构现代 CPU 基本都是L1 → L2 → L3 → 内存四层数据通路1. L1 Cache一级缓存位置每个核心内部和执行单元紧挨着速度1~3 个时钟周期几乎和寄存器一样快大小很小一般每个核心32KB / 64KB结构通常分开成两部分L1i指令缓存存代码L1d数据缓存存变量、数组特点核心独享延迟最低但容量极小2. L2 Cache二级缓存位置仍然在单个核心内部比 L1 远一点速度~10 个周期大小每个核心256KB ~ 1MB特点核心独享作为 L1 和 L3 之间的缓冲3. L3 Cache三级缓存位置所有核心共享在 CPU 芯片内但不在单个核心里速度~30~50 个周期大小很大几 MB ~ 几十 MB比如 32MB、64MB作用减少多核访问内存的冲突让核心之间共享数据更快4. 内存DRAM速度~100~200 个周期比 L1 慢几十倍大小GB 级别地位真正的 “仓库”但对 CPU 来说太慢了速度与容量直观对比层级延迟 (周期)典型大小谁在用寄存器0~1几百字节执行单元L11~332~64KB / 核单核L2~10256KB~1MB / 核单核L330~50几十 MB全部核心共享内存100~200GB 级整个系统差距L1 比内存快 50~100 倍。物理位置与归属L1 缓存位置完全嵌入 CPU 核心内部与取指、译码、执行单元在同一块核心 die 区域物理距离最近。归属单核独享每个核心有自己独立的 L1i指令和 L1d数据互不干扰。布局L1i 靠近前端取指单元L1d 靠近加载 / 存储单元Load/Store Unit物理上紧邻执行通路。L2 缓存位置仍在单个核心 die 内部但比 L1 更靠外通常环绕核心或在核心旁边的独立区域。归属单核独享现代主流设计部分老架构为小簇核心共享。布局作为核心内部的 “第二仓库”与 L1 之间有专用、短距离的内部总线连接。L3 缓存位置CPU 芯片上独立的大区域不在任何单个核心内部位于所有核心之间、内存控制器之前。归属全芯片所有核心共享是多核间数据共享的物理枢纽。布局通常采用分布式切片Slice架构分成多个物理块散布在芯片各处通过片上高速互连网络如 Intel Ring Bus、AMD Infinity Fabric连接所有核心与内存控制器。存储介质与 SRAM 物理结构所有缓存都用SRAM静态随机存储器但每级的 SRAM 单元、密度、电路设计完全不同。6T-SRAM6T-SRAM 6 Transistor SRAM就是用6 个 MOS 管实现 1bit 静态存储单元是 CPU 缓存L1/L2/L3最标准、最通用的存储单元结构。标准 6T 单元由两类管子组成2 个交叉耦合反相器4 个 NMOS PMOS→ 构成锁存器用来锁存 0/1 电平2 个访问管Access NMOS→ 控制读写连接到位线 BL / BLB结构简图 VDD | -------- | | PF1 PF2 | | --NL1-----NL2-- | | -PD1---PD2- | GND NL1、NL2交叉耦合反相器 PD1、PD2访问管接 BL、BLB简化记忆4 管 锁存器保持数据2 管 开关读写控制6T-SRAM 的关键特性完全静态不需要刷新不像 DRAM 每 64ms 必须刷新读操作不破坏数据不用读后重写→ 适合 CPU 高速随机访问访问速度极快读写都是纯组合逻辑 锁存延迟可以做到1~3 个时钟周期→ 完美匹配 L1 缓存需求差分位线 BL / BLB抗干扰强小信号就能可靠读出→ 适合低电压、高频环境结构规则适合高密度阵列6T 单元形状非常规整能像瓷砖一样铺满芯片→ 适合做大规模缓存阵列面积巨大1bit 需要6 个晶体管DRAM 只需要1T1C1 个管 1 个电容→6T-SRAM 面积是 DRAM 的 8~10 倍所以只能做小容量缓存不能做主存。漏电大、静态功耗高交叉耦合反相器始终有静态电流通路→ 功耗比 DRAM 高很多L1 缓存SRAM 类型高速、低密度 6T-SRAM甚至定制化高速单元。物理特点每个存储位用 6 个晶体管速度最快但面积大、密度低同容量下占芯片面积最大。电路设计追求最低延迟允许更大功耗、更宽松的时序约束不追求极致面积。为了极致速度L1i 与 L1d 物理完全分离哈佛架构两套独立的 SRAM 阵列与控制逻辑可同时并行访问指令与数据。L2 缓存SRAM 类型平衡型 6T-SRAM密度高于 L1速度略低。物理特点采用更紧凑的 SRAM 布局单位面积容量更大成本 / 面积更优。通常为统一缓存Unified Cache指令与数据共用一套 SRAM 阵列物理上不再分离。电路在速度与面积间折中延迟比 L1 高但远低于 L3。L3 缓存SRAM 类型高密度、低功耗 SRAM如 8T/10T 或高密度 6T 优化版。物理特点极致追求密度与容量单位面积容量最大适合做几十 MB 级缓存。速度让步于容量电路时序更紧、访问路径更长延迟最高。分布式切片设计每个 Slice 是独立的 SRAM 模块 目录 控制逻辑物理上分散在芯片降低全局布线压力。6T-SRAM 与 L1/L2/L3 的物理区别同样是 6T但每级缓存的 6T 单元物理设计完全不同L1 缓存用的 6T追求速度优先管子尺寸更大、驱动更强单元面积大、密度低位线更短、更少负载→ 延迟 1~3 周期L2 缓存用的 6T速度与密度折中管子尺寸缩小阵列更大位线更长→ 延迟10 周期L3 缓存用的 6T追求密度优先最小化单元面积位线很长分段、复用可能用高密度低功耗 6T 或 8T/10T→ 延迟 30~50 周期一句话L1 用 “大而快” 的 6TL3 用 “小而密” 的 6T。物理布局与互连决定延迟的关键L1互连与核心执行单元之间是极短、专用、全并行的内部通路无共享总线无路由延迟。延迟1–3 周期物理距离几乎为零。L2互连与本核心 L1 之间是核心内部专用总线距离短、带宽高不与其他核心共享。延迟约 10 周期核心内部布线延迟可控。L3互连核心到 L3 Slice通过片上全局互连网络环形 / 网格需要路由、仲裁物理路径长。L3 内部多个 Slice 之间通过全局网络通信维护数据一致性。延迟30–50 周期物理距离与互连复杂度是主要原因。关联度与物理结构组相联的物理实现L1关联度通常4–8 路组相联。物理实现路数少、每组行数少比较电路Comparator简单、面积小、速度快。L2关联度8–16 路组相联。物理实现路数更多每组容量更大比较电路更复杂速度略降但命中率提升。L3关联度16–24 路甚至更高部分服务器 CPU 达 32 路。物理实现路数极多比较电路规模大、延迟高但命中率显著提升。分布式 Slice 架构每个 Slice 管理部分地址空间目录Directory记录数据位置物理上更复杂但可扩展到大容量。缓存一致性Coherence的物理差异L1/L2一致性范围仅在单个核心内部维护无需跨核心通信物理上无一致性总线开销。L3一致性范围全芯片所有核心必须实现复杂的缓存一致性协议如 MESI/MOESI。物理开销每个 L3 Slice 包含目录Directory硬件记录数据在哪些核心的 L1/L2 中有副本。核心间通过 L3 传递嗅探Snoop/ 失效Invalidate消息物理上需要大量互连与控制逻辑。缓存物理差异总览表物理维度L1 缓存L2 缓存L3 缓存芯片位置核心内部紧邻执行单元核心内部L1 外侧芯片独立区域核心之间归属单核独享L1i/L1d 分离单核独享全芯片多核共享SRAM 类型高速低密度 6T-SRAM平衡型 6T-SRAM高密度低功耗 SRAM物理密度最低面积最大中等最高面积最小互连方式核心内部专用极短通路核心内部专用总线片上全局互连网络环形 / 网格关联度4–8 路8–16 路16–24 路一致性单核内部无开销单核内部无开销全芯片目录 协议硬件复杂典型延迟1–3 周期~10 周期30–50 周期典型容量32–64KB / 核256KB–1MB / 核几十 MB全芯片共享工作逻辑CPU 要读一个数据先找 L1命中hit直接用极快不命中miss去 L2 找还 miss去 L3 找还 miss才去读内存同时把一整块数据回填到各级缓存关键单位Cache Line缓存不是按字节搬而是按 ** 一行Cache Line** 搬一般64 字节。所以连续访问数组特别快空间局部性循环访问一小段数据也快时间局部性多级缓存设计的意义平衡速度与成本全用 L1 速度的存储太贵做不大全用内存CPU 会一直等数据性能暴跌匹配 CPU 流水线速度流水线要不停吞指令、吞数据必须靠 L1/L2 持续喂数据。多核场景下减少冲突L3 共享让核心之间不用每次都走内存通信。L1 追求极致速度物理上 “贴紧核心、分离设计、短距直连”L2 平衡速度与容量核心内部做中继L3 追求大容量与多核共享物理上 “分布式切片 全局互连 复杂一致性”牺牲速度换容量与多核效率。

更多文章