AMD Zen 系列微架构参数

  1. 前端
    • BTB, RAS, ITA, Mop Cache 容量逐代上升
  2. 访存
    • 访存宽度稳步上升: L1DCache 带宽,LSU
    • L2/L3 Cache 容量逐代增加
    • 大幅提升 L1D/L2D TLB 和 L2 ITLB 容量
    • 大幅提升 MSHR 容量
    • 后端指令窗口稳步加深,PRF、in-flight macro-ops、store/load tracking 持续增加,Zen5 的 8-wide dispatch 和 448 in-flight macro-ops 是明显跃迁。

分支预测与前端

BTB

Arch L0 BTB L0 Bubble L1 BTB L1 Bubble L2 BTB L2 Bubble RAS ITA
Zen1 4 forward + 4 backward 0 bubbles 256 1 bubbles 4096 4 bubbles 32/15(SMT) 512
Zen2 8 forward + 8 backward 0 bubbles 512 1 bubbles 7168 4 bubbles 32/15(SMT) 1024
Zen3 N/A N/A 1024 直接分支 0 bubbles, call/ret/indirect 1 bubble 6656 3 bubbles 64/32(SMT) 1536
Zen4 N/A N/A 1536 直接分支 0 bubbles, call/ret/indirect 1 bubble 7680 3 bubbles 64/32(SMT) 3072
Zen5 N/A N/A 16K direct calls、same-target indirect、条件和非条件直接分支: 0 bubbles,ret 和多目标 indirect: 2 bubbles 8K 8 bubbles 104/52(SMT) 3072

可能考量是前端越来越依赖更大的近端预测结构来支撑更宽、更深的后端。

  • Zen1/Zen2 的小 L0 适合低延迟捕获热点短分支
  • Zen3 之后将容量集中到更大的 L1/L2,降低复杂控制流和大代码 footprint 下的 BTB miss
  • Zen5 的 L1 BTB 跳到 16K,说明 AMD 更重视把大量活跃分支直接留在低气泡预测路径中,以喂饱更宽的 8 dispatch 后端

BTB 预测气泡反映出不同代在“容量”和“低延迟”之间的取舍:

  • Zen3/Zen4 取消小 L0 后,用较大的 L1 提供零气泡直接分支预测,同时降低 L2 校正代价
  • Zen5 的 L1 容量极大,但复杂间接/返回分支气泡增加,L2 代价也更高

RAS 加深主要服务于更深调用链、C++/Rust/大型框架等现代软件形态,减少 return mispredict。Zen5 继续增加 RAS,与其更大的 BTB、fetch window 一起,表明前端目标是减少控制流恢复和重定向造成的后端饥饿。

ITA 间接分支目标数增加,通常对应虚函数、解释器、JIT、switch jump table、动态语言 runtime 等代码模式。容量翻倍说明 AMD 在减少多目标 indirect branch 的误预测上持续投入,尤其 Zen4/Zen5 面向服务器和客户端混合负载时,这类控制流更常见。

L1 I-cache

  • Zen1 的 L1 I-cache 是 64KB/4-way
  • Zen2 起变为 32KB/8-way,并一直保持到 Zen5
  • Zen5 的 L1 I-cache fetch width 从此前 32B/cycle 提高到 64B/cycle。

Zen1 到 Zen2 的变化是容量减半但相联度翻倍,可能是通过更高相联度缓解冲突,同时降低访问能耗和面积,把更多前端容量交给 Op Cache。Zen5 提高取指带宽,是为了喂两个 decode pipeline,并减少从传统 I-cache 路径取指时的瓶颈。

Decode Width

Zen1 到 Zen4 均为 4 instructions/cycle。Zen5 仍是 4 instructions/cycle per thread,但配合 64B/cycle 取指和两个 decode pipelines。

表面宽度没有变成 8-wide decode,但 Zen5 通过 per-thread 描述和双 decode pipeline 改善 SMT 或前端供给弹性。可能考量是直接扩大通用 decode 宽度成本很高,AMD 更倾向于用 Op Cache、更宽取指和更大预测结构提升有效前端吞吐。

MOp Cache

Arch Size Assoc Entry Throughput
Zen1 2K insts 32 sets x 8 ways 8 insts 8 insts/cycles
Zen2 4K ops 64 sets x 8 ways - 8 insts/cycles
Zen3 4K ops 64 sets x 8 ways 8 macro-ops 8 ops/cycles
Zen4 6.75K ops 64 sets x 12 ways 9 macro-ops 9 ops/cycles
Zen5 6K (fused) insts 64 sets x 16 ways 6 (fused) insts 12 insts/cycles

Op Cache 是 Zen 前端演进的核心。Zen2 将容量翻倍,降低重复解码压力;Zen4 进一步提高容量和每 entry 容纳能力,以支持 AVX-512、更多融合和更大热代码区。Zen5 虽标称从 6.75K ops 变成 6K instructions/fused instructions,但计数单位改变,强调 fused instruction 密度,可能是用更贴近前端真实消耗的格式提升有效容量和取出效率。

Zen1 到 Zen4 的 Op Cache Throught 基本上和每个 Entry 的容量一致,即每周期最多取一个 entry;Zen5 提高到每 entry 的两倍,这意味着 Zen5 的 MOp Cache 可能也支持了双端口设计以满足 2-fetch pipeline

Cache

L1 D-cache

Arch Size Assoc BandWidth
Zen1 32KB 8 ways 2x128b load + 1x128b store/cycle
Zen2 32KB 8 ways 2x256b load + 1x256b store/cycle
Zen3 32KB 8 ways 3 memory ops/cycle (最多 2x256b load / 1x256b store)
Zen4 32KB 8 ways 3 memory ops/cycle (最多 2x256b load / 1x256b store)
Zen5 48KB 12 ways 4 memory ops/cycle (最多 2x256b load / 1x256b store)

Zen1 到 Zen5 load-to-use 延迟保持不变:整数 4-5 cycles,FP 7-8 cycles。

访存带宽的提升和 SIMD 宽度演进一致:Zen2 原生支持 256-bit load/store,Zen4 引入 512-bit 操作但通过 256-bit 数据路径分两拍完成,Zen5 则提供更完整的 512-bit load path。设计考量是让向量计算、内存拷贝、数据库扫描、AI/媒体等带宽敏感代码不被 L1D 端口限制。

L2

Arch Size Assoc Load-to-use Latency L2-to-L1 data path
Zen1 512KB 8 ways 12 cycles 32B
Zen2 512KB 8 ways 12 cycles 32B
Zen3 512KB 8 ways 12 cycles 32B
Zen4 512KB/1MB 8 ways 14 cycles 32B
Zen5 1MB 16 ways 14 cycles 64B

L2 从 512KB 到 1MB 是典型的容量换延迟:Zen4/Zen5 接受至少 2 cycles 的 L2 延迟增加,以换取更低 L2 miss 和更好的大工作集表现。Zen5 把相联度和 L2-to-L1 带宽翻倍,说明它不只是增大容量,还要降低冲突和提高 refill 速度,匹配更大的 L1D 和更高访存并行度。

L3

Arch Size Assoc Load-to-use Latency cores per CCX
Zen1 4MB/8MB 16 ways 35 cycles 4
Zen2 4MB/16MB 16 ways 39 cycles 4
Zen3 32MB 16 ways 46 cycles 8
Zen4 96MB 16 ways 50 cycles 8
Zen5 96MB 16 ways 46 cycles 8

L3 容量扩大和共享核心数增加,是面向多核、大工作集和服务器负载的明显选择。代价是 L3 平均延迟上升,尤其 Zen3/Zen4。Zen5 将平均 L3 延迟从 Zen4 的 50 降到 46,可能是缓存层级路径、物理实现或互连访问优化后的结果。

TLB 与地址翻译

Arch L1I L1D L2I L2D PTW Walkers
Zen1 64 64 512 1536/12-way 2
Zen2 64 64 512 2048/16-way 2
Zen3 64 64 512 2048/16-way 2
Zen4 64 72 512 3072/24-way 6
Zen5 64 96 2048 4096/16-way + 1G page 1024/4-way 6
  • L1 DTLB 增大直接减少数据访问地址翻译 miss。随着 L1D、load queue、miss tracking 和内存并行度扩大,DTLB 容量必须同步增加,否则更宽的访存 pipelines 会被页表翻译限制; (之前测试 AMD Zen5 并不支持跨页预取, 所以此处增加 TLB 容量可能不是基于跨页预取的考虑 )
  • Zen5 大幅增加 L2 ITLB,和更大的 BTB、Op Cache、fetch window 一起指向更强的前端大代码 footprint 支持。大型服务端程序、浏览器、JIT 和虚拟化环境都会受益于更大的二级指令翻译缓存。
  • L2 DTLB 持续增大,说明 AMD 在缓解大内存工作集、随机访问和服务器负载中的页表翻译瓶颈。Zen4 的 24-way 偏向降低冲突,Zen5 则进一步增大总容量,并为 1G page 增设专门结构,有利于数据库、虚拟化和大页内存应用。
  • PTW Walker 从 2 到 6 是 Zen3 的重要变化。它允许更多 TLB miss 并行处理,减少多个 load miss 或 instruction miss 同时发生时的串行化。这与 Zen3 起增强的 load tracking、L3 容量和服务器定位相吻合

流水线后端

乱序宽度

Arch Int PRF Flag PRF Dispatch Width Retire Width Inflight Mops
Zen1 168 - 6 macro-ops/cycle 8 macro-ops/cycle 192
Zen2 180 - 6 macro-ops/cycle 8 macro-ops/cycle 224
Zen3 192 - 6 macro-ops/cycle 8 macro-ops/cycle 256/128 (SMT)
Zen4 224 108 6 macro-ops/cycle 8 entries/cycle 320/160 (SMT)
Zen5 240 192 8 macro-ops/cycle 8 entries/cycle 448/224 (SMT)
  • 更大的物理寄存器文件支持更多重命名和更深乱序窗口,减少因寄存器资源耗尽导致的前端/rename stall。Zen4 起单独记录 Flag PRF,Zen5 大幅增加 flag rename 资源,可能是为了降低条件码密集整数代码、分支融合和更宽后端下的 flag 依赖压力。
  • Zen5 扩宽 dispatch 是后端吞吐升级的核心。单纯扩大执行单元不够,如果 dispatch 仍是 6-wide,就无法持续填满 6 ALU、4 AGU 和更宽 FP/LS 资源
  • Retire Width: Zen1 到 Zen3 为 8 macro-ops/cycle,从 Zen4/Zen5 开始描述为 8 retire queue entries/cycle,说明一个 ROB entry 可能存多个 macro-op (ROB 压缩)
  • 乱序窗口持续加深,是 Zen 系列后端性能提升的主线之一。更大的在途窗口能覆盖更长 cache miss、分支恢复、执行延迟和内存乱序,提升内存级并行和指令级并行

Int 执行流水线

Arch Int ALU AGU Int IQ/Scheduler
Zen1 4 2 4x14-entry ALU + 2x14-entry AGU
Zen2 4 3 4x16-entry ALU + 2x28-entry AGU
Zen3 4 3 4x2 macro-ops / cycle
Zen4 4 3 4x2 macro-ops / cycle
Zen5 6 4 6 uops ALU + 4 uops AGU / cycle
  • Zen5 的 6 ALU 是整数后端宽度的明显跃迁。它可以提高通用整数、分支、移位、PDEP/PEXT、multiply 等操作的并行吞吐,尤其适合编译器生成的混合整数代码和服务器逻辑负载。
  • AGU 增加反映访存地址生成需求持续上升。Zen2 从 2 到 3 支撑 2 load + 1 store 的常见模式;Zen5 增到 4,配合 4 memory pipelines 和 4 memory ops/cycle,目标是减少 load/store 地址生成对更宽 LS 的限制。
  • 调度器从分散的小队列逐步演进到更高 issue 能力的组织。Zen2 增大 ALU scheduler 并统一 AGU scheduler,可能是为了提高 3 AGU 后的资源利用率。Zen5 直接以 6 ALU issue 和 4 AGU issue 描述,说明调度能力随执行宽度一起扩展。
  • Integer Multiply Latency: Zen1 到 Zen5 均为 3 cycles,没有变化。

FPU 流水线

Arch Dispatch/Rename Width IQ/Scheduler Capacity Load Store Width Non-Scheduling Queue
Zen1 4 uops/cycle 36 uops 128b N/A
Zen2 4 uops/cycle 36 uops 256b N/A
Zen3 6 mops/cycle 2x32 mops 256b N/A
Zen4 6 mops/cycle 2x32 mops 256b 64
Zen5 dispatch 8, rename 6 mops/cycle 3x38 mops 512b 96
  • FPU 前端供给能力逐步提高。Zen5 允许 dispatch 8 但 rename 6,并通过 NSQ 接住溢出,说明它希望整体核心保持 8-wide dispatch,同时承认 FP rename/调度仍有实际资源边界。
  • FPU scheduler 容量扩大是为了支撑更长向量、更大窗口和更多并行 FP 操作。Zen5 的 3x38 明显增强,有助于 AVX-512 和混合 FP/访存代码维持更多在途操作。
  • SIMD 数据路径宽度每隔几代翻倍
    • Zen4 支持 AVX-512 但 FPU load/store path 仍是 256b,更多通过分拍完成
    • Zen5 则把路径扩到 512b,使 512-bit 代码不再主要受半宽数据路径限制。
  • FPU execution pipes 数量保持 4。执行 pipe 数不变,说明 AMD 更重视每条 pipe 的数据宽度和调度供给,而不是增加 FP pipe 数
  • NSQ 用来在 FP scheduler 满时继续接收 macro-op,尤其帮助 load/store address calculation 先行。Zen5 扩大 NSQ,匹配 8-wide dispatch 和更大的 FP/LS 压力,减少 FP scheduler 满导致的全局阻塞。

Load-Store Unit

Arch Load Queue Store Queue Outstanding Cache Misses/MSHR LS Pipelines
Zen1 44 44 22 2 load + 1 store
Zen2 44 48 22 2 load + 1 store
Zen3 72 64 24 3 memory
Zen4 48 uncompleted + 88 completed 64 24 3 memory
Zen5 64 uncompleted loads,completed loads 无特定限制 104 124 4 memory

load tracking 变得更细化、更大

  • Zen3 的 72 OOO loads 增强内存级并行
  • Zen4 区分 completed/uncompleted loads,说明实现上更精细地管理已完成 load 的顺序和依赖
  • Zen5 取消 completed loads 的特定限制并增加 uncompleted loads,有利于深窗口下保留更多 load 状态,同时说明 completed loads 可能不再保存到 LDQ 中

store queue 增大能支持更多在途 store、store-to-load forwarding 和乱序执行,避免写密集代码中过早阻塞 rename/dispatch。Zen5 增到 104,与 4 memory pipelines、2 store/cycle 和 512-bit store handling 相匹配。

Zen5 的 outstanding miss tracking 是最大幅变化之一

  • 显著提高 memory-level parallelism,能更好覆盖 L2/L3/DRAM 延迟
  • 代价是 MAB/MSHR 等结构面积和功耗增加,但对服务器、多线程、随机访问和大工作集非常关键
  • 相比于 AGU/LSU 而言,提升也过于巨大,所以可能是对预取的考量

LS pipeline 的演进和 AGU、L1D 带宽一致。Zen3/Zen4 将 pipeline 抽象为 3 memory ops/cycle,提升调度弹性;Zen5 增到 4,匹配 4 AGU、4 memory ops/cycle 和更高 MLP