Samsung Austin R&D Center(SARC)自 2011 年末开始研发 Exynos 自研高性能核:M1–M5 五代已量产;M6 是第六个已经完成的设计,但未量产; M7 并未有相关资料,只在 LinkIn 出现过(可能是相关部门被撤裁)

微架构演进:

  1. M1/M2:4-wide baseline
    M1 建立 4-wide、约 100 项乱序窗口、分布式调度器、分层神经网络分支预测器和共享 L2。M2 基本保留微架构参数,以制程迁移、队列加深和内部效率改进为主。
  2. M3:第一次扩张
    Decode/Rename/Dispatch/Retire 从 4-wide 增至 6-wide,ROB 从 100 增至 228,整数与浮点 PRF 均翻倍,执行峰值可达 11 ops/cycle;cache 改为每核私有 512 KB L2 加 4 MB 共享 L3。代价是增加 DP2、RR2 两级流水,并把误预测代价从 14 cycle 提高至 16 cycle
  3. M4/M5:固定 6-wide/228-ROB baseline 上的路径优化
    M4 面向更大代码/数据工作集和主存延迟,扩大 L2BTB、增加私有 L2、采用 data-less MAB、Buddy 预取、DRAM 快速返回路径和 load-load cascading。M5 加入 384-µop UOC、ZAT/ZOT、MRB、更大 SHP、下层独立预取器、推测性缓存旁路和早期 DRAM page activate。
  4. M6:第二次扩宽流水线
    M6 面向 5 nm 设计、目标频率 2.8 GHz,Decode/Rename/Retire 扩至 8-wide,ROB 仅增至 256;L1I/L1D 均增至 128 KB,L2 带宽翻倍到 64 B/cycle,整数端变为 4S+2CD+2BR,FP 变为 4×FMAC。分支侧以更大 mBTB/L2BTB 和“短 VPC + 独立间接目标哈希表”应对 JavaScript 的多目标间接调用

统一 2.6 GHz、相同 4,026 workload slices 的模型中,M1→M6 的 Decode/Retire 宽度从 4 增至 8,ROB 从 96 增至 256(2.67×),分支预测逻辑存储从 98.9 KB 增至 561.5 KB(5.68×),平均 load latency 从 14.9 cycle 降至 8.3 cycle(约降低 44.3%),平均 IPC 从 1.06 增至 2.71

CPU、SoC 映射表:

微架构 代表 SoC 大核簇/异构拓扑 制程 论文/产品频率
M1 Exynos 8890 4×M1 + 4×Cortex-A53 14 nm 2.6 GHz
M2 Exynos 8895 4×M2 + 4×Cortex-A53 10 nm LPE 2.3 GHz
M3 Exynos 9810 4×M3 + 4×Cortex-A55 10 nm LPP 2.7 GHz
M4 Exynos 9820 / 9825 2×M4 + 2×Cortex-A75 + 4×A55 8 nm LPP / 7 nm EUV 2.7 GHz
M5 Exynos 990 2×M5 + 2×Cortex-A76 + 4×A55 7 nm EUV 2.8 GHz
M6 无量产 SoC 论文只说明 L2 每 2 核共享 5 nm(设计节点) 2.8 GHz(target)
参数 M1 M2 M3 M4 M5 M6
制程 14 nm 10 nm LPE 10 nm LPP 8 nm LPP 7 nm 5 nm(设计节点)
代表/目标频率 2.6 GHz 2.3 GHz 2.7 GHz 2.7 GHz 2.8 GHz 2.8 GHz target
L1 I$ 64 KB,4-way 64 KB,4-way 64 KB,4-way 64 KB,4-way 64 KB,4-way 128 KB,4-way
L1 D$ 32 KB,8-way 32 KB,8-way 64 KB,8-way 64 KB,4-way 64 KB,4-way 128 KB,8-way
L2 2 MB,16-way 2 MB,16-way 512 KB,8-way 1 MB,8-way 2 MB,8-way 2 MB,8-way
L2 共享关系 4 核共享 4 核共享 每核私有 每核私有 每 2 核共享 每 2 核共享
L2 BW(论文表口径) 16 B/c 16 B/c 32 B/c 32 B/c 32 B/c 64 B/c
L3 4 MB,16-way,4 bank 3 MB,16-way,3 bank 3 MB,12-way,2 bank 4 MB,16-way,2 bank
L1 ITLB 覆盖 256 pages 256 512 512 512 512
L1 DTLB 32 pages 32 32 48 48 128 pages
L1.5 DTLB 512 pages 512 512 512
Shared L2 TLB 1K pages 1K 4K 4K 4K 8K pages
参数 M1 M2 M3 M4 M5 M6
Decode / Rename / Retire 4 / 4 / 4 4 / 4 / 4 6 / 6 / 6 6 / 6 / 6 6 / 6 / 6 8 / 8 / 8
Integer units 2S+1CD+BR 2S+1CD+BR 2S+1CD+1C+BR 同 M3 4S+1CD+1C+BR 4S+2CD+2BR
LSU pipes 1L+1S 1L+1S 2L+1S 1L+1S+1G 1L+1S+1G 1L+1S+1G
FP pipes 1 FMAC+1 FADD 同 M1 3 FMAC 3 FMAC 3 FMAC 4 FMAC
Integer PRF 96 96 192 192 192 224
FP PRF 96 96 192 176 176 224
ROB 96 100 228 228 228 256
分支误预测代价 14 c 14 c 16 c 16 c 16 c 16 c
L1 load hit 4 c 4 c 4 c 3 c(级联)或 4 c 同 M4 同 M4
平均 L2 命中延迟 22 c 22 c 12 c 12 c 13.5 c 13.5 c
平均 L3 命中延迟 37 c 37 c 30 c 30 c
FP FMAC / FMUL / FADD 5 / 4 / 3 c 5 / 4 / 3 c 4 / 3 / 2 c 同 M3 同 M3 同 M3

符号定义:

  • S:add/shift/logical;
  • C:S 类能力加 multiply 与 indirect branch;
  • CD:C 类能力再加 divide;
  • BR:仅 direct branch;
  • G:可执行 load 或 store 的 generic LSU pipe。

M6 的 1L+1S+1G 与 M5 相同:LSU 流水线可生成两个 load 或两个 store-address 候选,但不能同时形成 2 load + 2 store


前端——分支预测

M 系列前端是 Samsung 特有的分层 BTB + perceptron 体系:

  • µBTB:低容量、图式链接的零气泡预测路径,内含 local-history hashed perceptron(LHP)
  • mBTB:更大但通常有 1–2 bubble 的主 BTB,结合完整 Scaled Hashed Perceptron(SHP)
  • L2BTB:容量层,采用更致密、较慢的 SRAM 宏
  • vBTB:当一个 128 B code cacheline中发现超过主 BTB 可容纳的 8 个顺序分支时,保存溢出分支(针对分支密集型场景的冲突失效)
  • RAS:带推测 push/pop 修复机制
  • 间接分支:M1–M5 实现为 VPC(Virtual Program Counter)链式预测

[S1] [S2] [P1]


分支方向预测器:SHP / LHP

项目 M1 M2 M3 M4 M5
主方向预测器 8 表 × 1024 个 sign-magnitude 权重的 SHP;BTB 项内含 local BIAS 无显著结构变化 SHP 行数/总权重容量约翻倍;置信度与历史配置调优 公开重点在 L2BTB,SHP 容量与 M3 同为 16 KB 16 表 × 2048 个 8-bit 权重;GHIST 长度再增 25%
µBTB 方向预测 LHP + 图式 taken/not-taken 链 基本同 M1 更长 local history、权重表容量翻倍、置信度调优 ND 与 ZAT/ZOT 仲裁;µBTB 项数为面积效率而缩减
SHP 存储 8.0 KB 8.0 KB 16.0 KB 16.0 KB 32.0 KB 32.0 KB
M1 已知历史长度 GHIST 165 bit;PHIST 80 bit 基本沿用 具体全局历史长度 ND ND 相对上一代 GHIST +25%,绝对长度 ND
训练策略 误预测或低置信正确预测时更新;阈值采用 O-GEHL 式训练;always-taken 不训练 SHP 以减小 aliasing 基本同 M1 更大表降低 aliasing ND 更多表、更长历史并重平衡 hash interval

M1 SHP 索引与求和机制

  1. 每个权重表的索引由 GHIST 区间哈希、PHIST 区间哈希和分支 PC 异或组合;
  2. BTB 中的 BIAS 权重按 2×加入各表权重和;
  3. 总和非负预测 taken,否则预测 not-taken;
  4. 仅在误预测或绝对和低于训练阈值时更新;
  5. unconditional 和“迄今始终 taken”的 conditional branch 不污染 SHP 权重表。

分析

  • M1 的设计目标不是单纯追求最低 MPKI,而是同时支持 每周期最多两个分支预测,尤其优化“前一分支 not-taken 后继续看第二分支”的高吞吐场景
  • M3 将机器加宽后,分支错一次会浪费更大的后端窗口,因此增加 SHP 容量、µBTB 容量和 1AT 提前重定向;其 4800 条 trace 上 MPKI 从 3.92 降至 3.29,约下降 16%
  • M5 的 SHP 由 8 表扩为 16 表,而 Decode/ROB 不变,说明前端投资从“喂饱更宽机器”转向“减少无效 µop 和恢复空洞”

[S1] [S3] [S4]


BTB:µBTB、mBTB、L2BTB、vBTB

结构 M1 M2 M3 M4 M5 M6
µBTB 64 项 无显著变化 128 项 精确项数 ND 项数相对前代缩减;精确值 ND
mBTB 4K 项 4K 项 4K 项 精确项数未单列 精确项数未单列;项内增加 ZAT/ZOT 复制目标信息
L2BTB 约 8K 项 约 8K 项 16K 项 约 32K 项 精确项数 ND;存储 225.5 KB
vBTB 有,容纳稠密分支行溢出 同类结构 保留 保留 保留
L1 BTB 总存储 32.5 KB 32.5 KB 49.0 KB 50.5 KB 53.3 KB 78.5 KB
L2BTB 存储 58.4 KB 58.4 KB 110.8 KB 221.5 KB 225.5 KB 451.0 KB
全部分支预测存储 98.9 KB 98.9 KB 175.8 KB 288.0 KB 310.8 KB 529.5 KB

µBTB 组织细节

  • 每个图节点对应热代码区中的一个分支,保存 taken 与 not-taken 指向下一节点的 link;
  • 小 CAM 发现热点“seed”,图建立后可关闭 CAM;
  • 热 kernel 完整落入 µBTB 且预测可靠时,µBTB 可 lock 并连续提供 0-bubble 重定向;
  • 极高置信时可以 clock-gate mBTB 与 SHP,兼顾吞吐和前端功耗;
  • 专利实施例给出 64-entry graph、16-entry seed CAM、最多每周期两个分支,但只有 64-entry M1 是量产演讲明确确认值。

M3/M4/M5 的演进重点

  • M3:µBTB 扩为 128 项;mBTB 加入 1AT(one-bubble always-taken);L2BTB 容量和回填带宽翻倍。
  • M4:L2BTB 再翻倍,回填延迟略降、带宽再翻倍;单独对 BBench 带来约 2.8% 性能提升。
  • M5:在 predecessor 的 mBTB 记录中复制后继 always-/often-taken 目标,形成 ZAT/ZOT(zero-bubble always/often-taken);由启发式仲裁器在 µBTB 与 ZAT/ZOT 间选择

[S1] [S3] [P1]


RAS

项目 M1 M2 M3 M4 M5
公开容量 64 项 call/return stack 继承类设计;精确值未重新披露 64 项 ND ND
机制 推测 push/pop,并支持错误推测后的多步修复 无显著 BP 变化 保留 保留类结构 增加上下文相关目标加密方案的公开技术,但首次量产代际未明确
与 µBTB 关系 µBTB 热图内仍配合返回预测 同 M1 µBTB 描述明确含 RAS ND ND

[S1] [S2] [S4]


间接分支:VPC

M1 首次引入 VPC:把一个多目标 indirect 转换为多个“虚拟条件分支”并复用 SHP (每个 indirect branch 16 个目标)

M1–M5 的 VPC 对每个间接分支构建目标链。若一个 JavaScript call site 出现数百个目标,完整 VPC 会产生两个问题:

  1. 训练和逐个虚拟条件分支预测的成本随目标数近似按 O(n) 增长
  2. 目标链大量占用 vBTB,挤压其他分支的容量

M6 保留 VPC 对少目标场景的准确率优势,同时并行启动独立的 indirect target hash table:

实现:

  • 大表访问需要数个周期,因此短 VPC 与 hash-table lookup 并行,而不是先把 VPC 链走完再访问大表;
  • Figure 8 将 VPC 链缩到 5 个目标,并标出 256 sets × 4 ways 的间接目标存储
  • 索引不使用普通 SHP 的 GHIST/PHIST/PC 组合,因为前驱条件分支与 indirect target 的相关性较弱
  • 专用 hash 基于 近期间接分支目标历史
  • 该结构把“小目标集合”和“大目标集合”分流:VPC 负责小集合的高准确率与低延迟,大表负责高基数 call site 的容量;
  • M6 的 8-wide 后端对前端断流更敏感,因此 target capacity 的边际价值高于再扩大已达 32 KB 的 SHP;

[S1]


误预测恢复:M5 MRB

M5 增加 Mispredict Recovery Buffer(MRB)

  • 对低置信分支记录最可能的后续 3 个 fetch address
  • 当真实误预测重定向命中 MRB 时,连续周期给出这些地址,绕过常规分支预测流水的逐级等待;
  • 论文示例中,连续三个短基本块共 14 条指令,传统路径需要 9 cycle 才能取完,MRB 路径只需 5 cycle;
  • 第三级仍用正常预测结果校验 MRB 地址,错误时可纠正

[S1] [P2]


分支预测安全

SARC 公开的后期安全方案对 BTB/RAS 中的 target address 做 context-specific 可逆扰乱/加密

  • 密钥混合软件熵、硬件熵、ASID/VMID、安全状态与 Exception Level;
  • context switch 时生成 CONTEXT_HASH,只需少量周期;
  • 写 BTB/RAS 时将 target 与 hash 做流密码式 XOR,并可增加可逆 substitution;
  • 其他进程用不同上下文读出时得到无意义地址,从而缓解 cross-training 与 replay;
  • 相比每次上下文切换清空整个预测器,可避免全部重新训练的性能成本

[S1] [P4]



前端——取指与 µop 供应

ICache

参数 M1 M2 M3 M4 M5 M6
容量/相联度 64 KB / 4-way 64 KB / 4-way 64 KB / 4-way 64 KB / 4-way 64 KB / 4-way 128 KB / 4-way
line size 128 B [A] ND ND ND ND
I$→Decode 读取带宽 24 B/c 约 24 B/c [B:结构继承] 48 B/c ND 常规路径 ND;UOC 可 6 µop/c
L2→前端带宽 16 B/c 级 L2 链路 同 M1 32 B/c 32 B/c L2 总带宽 32 B/c L2 总带宽
保护 parity [A] ND ND ND ND
ITLB 256 pages 256 512 512 512 512

分析

  • M3 的 ICache 容量不变,ICache→decoder 带宽翻倍到 48 B/c,同时 InstQ 接近加深一倍;
  • M4/M5 没继续增大 Icache,而是分别投资 L2BTB 与 UOC,说明大代码工作集的首要瓶颈被判断为 目标/µop 供应与功耗

[S1] [S2] [S3] [S4]


AddrQ、InstQ 与 FTQ

结构 M1 M2 M3 M4-M6
取值地址解耦 AddrQ,将 branch prediction 与 I$ 解耦 继承类设计 AddrQ;宽前端仍明确使用 ND
指令队列 InstQ,解耦 I$ 与 Decode 队列有加深类改进,精确容量 ND InstQ 接近 M2 的 2× 深度 ND
  • AddrQ/UAQ 承担现代前端中 FTQ 的一部分作用:保存预测产生的 fetch address 并解耦预测、I$ 和后级

[S2] [S3] [S4]


MOP/µop Cache

参数 M1-M4 M5-M6
UOC 384 µop,最多 6 µop/c
目标 对可重复、可预测且能装入有限资源的 kernel 节省 fetch/decode 功耗
模式 FilterMode / BuildMode / FetchMode
FetchMode 关闭单元 I$ 和 Decode;µBTB 足够准确时还可关闭 mBTB
admission µBTB 检查可预测性与 footprint,built bit + BuildEdge/FetchEdge/Timer 判定收益
  • BuildMode 在 µBTB 项中维护 built bit;基本块写入 UOC 后将状态反向传播给 µBTB;
  • FetchMode 中由 µBTB 经 UAQ 给 UOC 地址,UOC 直接向后级提供 µop;
  • 该设计不是遇到 decode 过的代码就尽量缓存,而是先证明 kernel 可预测、可驻留、可复用,再允许关闭前端

[S1] [P3]


Decode、Rename、Dispatch 与 Issue

Decode 与 µop cache

项目 M1 M2 M3 M4 M5 M6
指令解码宽度 4 inst/c 4 6 6 6 8
Rename/Dispatch 4 µop/c 4 6 6 6 8
复杂指令 multi-µop sequencer 同类 少数指令 cracking;A32 LDM 主要拆为 load-pair µop ND ND
Fusion 未具体披露 ND 支持多种 fusion idiom ND ND

分析

  • Samsung 文献在 M3 论文中使用 mop,ISCA 论文使用 µop;本文统一称 µop
  • M5 UOC 的主要能效价值来自**完全关闭**decode

M6 8-wide rename/dispatch 会显著增加:

  1. 同周期目的寄存器分配和 free-list 带宽;
  2. dependency-map 读写端口与同组 intra-cycle dependency bypass;
  3. 向多个分布式 scheduler 的 credit 检查和 steering;
  4. PRF 读端口、writeback 与 bypass 交叉连接;
  5. branch checkpoint 和异常元数据写入带宽。

[S2] [S3] [S4] [S1]


Rename、物理寄存器堆与恢复

参数 M1 M2 M3 M4 M5 M6
Integer PRF 96×64 bit 96×64 bit 192×64 bit 192 192 224
FP/Vector PRF 96 项 96 项 192×128 bit 176 项 176 项 224
Rename 宽度 4 4 6 6 6 8
Integer reg-reg move elimination 未披露 未披露 0-cycle:rename remap + reference count 保留 保留
map recovery fast map recovery 同类,细节 ND 支持更大窗口;checkpoint 数 ND ND ND
PRF bank/port ND ND ND ND ND
  • M3+ 的 0-cycle integer move elimination 可以减轻 issue/execute/bypass 压力,并提高有效调度窗口利用率
  • M4 把 FP PRF 从 192 缩到 176,而整数 PRF、ROB、3×FMAC 都不变

[S1] [S2] [S4]


Issue Queue / Scheduler

项目 M1 M2 M3 M4/M5
整数调度组织 7 个分布式 scheduler;总 58 项 7 个;总容量未单列,存在队列加深 9 个分布式 scheduler;总 126 µop 精确队列分区/容量 ND
M3 分区 4 ALU、1 branch、3 AGU、1 store-data scheduler 执行单元数公开,队列映射 ND
FP scheduler 32 项 约为前代规模;精确值未重新披露 62 项 ND
峰值 issue 整数侧演讲称最多 7 µop/c ND 全核峰值 11 ops/c ND
multidispatch store address/store data 分送等 同类可能性高,细节 ND 明确支持;dispatcher 需检查各 scheduler credit ND

M3 的峰值 11 ops/c 由:

  • 4 ALU;
  • 1 branch;
  • 2 load;
  • 1 store;
  • 3 FP/vector

M3 的 scheduler 总容量从 58 级增长到 126,约与 ROB 96/100→228 的扩张一致,避免 ROB 变大而 issue window 不变。
[S2] [S3] [S4]


M3 新增流水级的代价

flowchart LR
    BP["B0/B1<br/>分支预测"] --> F["F2/F3/F4<br/>取值"]
    F --> D["D1/D2/D3<br/>解码"]
    D --> RN["RN1/RN2<br/>重命名"]
    RN --> DP2["DP2<br/>M3 新增:调度器路由"]
    DP2 --> SCH["Schedule"]
    SCH --> RR1["RR1"]
    RR1 --> RR2["RR2<br/>M3 新增:大 PRF 读/解耦"]
    RR2 --> EX["Execute"]
    EX --> WB["Writeback"]
  • DP2 解决 6-wide dispatch 到更多分布式 scheduler 的布线与分配时序;
  • RR2 解决更大 PRF 的读取和 scheduler→ALU 环路时序;
  • 结果是 branch mispredict penalty 从 14 c 变为 16 c;
  • M3 用更强 predictor(MPKI 下降)、更大窗口和更快执行/缓存来抵偿这两级开销

[S3] [S4]


Execution:执行单元

整数执行

项目 M1/M2 M3 M4 M5 M6
简单整数 S pipe 2 2 2 4 4
C/CD pipe 1×CD 1×CD + 1×C 同 M3 同 M3 2CD
直接分支 pipe 1 1 1 1 2
总算术类整数 pipe 3 4 4 6 6
整数乘法 M1 block diagram 有 ALUC 内 iMUL; 增加第二乘法能力 ND ND
整数除法 radix-4 radix-16 具体是否再变 ND ND
0-cycle move 无确认
  • M3 的执行宽度与 6-wide 前端同步扩张;第二 multiplier 和 radix-16 divider主要降低特定运算的结构冲突与长延迟。
  • M5 在 decode/retire 仍为 6-wide 时,将简单整数 pipe 从 2 增至 4。可在 load/branch/复杂整数混合下减少 ALU contention
  • BR 仅负责 direct branch;indirect branch 可由 C/CD 类执行资源处理
  • M6 把 direct-branch-only pipe 从 1 条增至 2 条,同时复杂整数端仍能处理 indirect branch

[S1] [S2] [S3] [S4]


浮点、SIMD 与加密

参数 M1/M2 M3 M4 M5 M6
主 FP pipes 1×128b FMAC + 1×128b FADD 3×128b FMAC/FADD 3×FMAC 3×FMAC 4×FMAC
FP dispatch/issue/execute 2 ops/c 级 3 ops/c ND ND
FP scheduler 32 62 ND ND
FP PRF 96 192 176 176
FMAC / FMUL / FADD latency 5 / 4 / 3 c 4 / 3 / 2 c 4 / 3 / 2 c 4 / 3 / 2 c 4 / 3 / 2 c
FDIV radix-4 radix-64,6 bit/c ND ND
峰值 FLOP 1 FMAC + 1 FADD 饱和 24 SP 或 12 DP FLOP/c 同为 3 FMAC 级理论资源 同为 3 FMAC 级理论资源
Crypto throughput 1 2 ND ND
  • M3 FPU 从异构的 FMAC + FADD 变成三条更对称的 128-bit FMAC/FADD 能力,降低调度端口偏置
  • 第二 load port 对 M3 FPU 至关重要,否则 3×128b FMAC 很容易被 operand feed 限制
  • M6 3→4 FMAC 对应 6→8-wide 的 33.3% 增幅。假设每条均保持 128-bit FMAC 能力,单周期理论峰值可相对 M5 增加三分之一

[S1] [S3] [S4]


Load/Store 执行端口

代际 端口组织 峰值含义
M1/M2 1L + 1S 1 load/c + 1 store/c
M3 2L + 1S 2 load/c + 1 store/c
M4/M5/M6 1L + 1S + 1G G 可作 load 或 store:LSU pipe 层面可形成 2L+1S 1L+2S,不能同时 2L+2S;持续 store-data/commit 带宽 ND
  • M3 面向 FP/SIMD feed,选择固定第二 load pipe;
  • M4/M5 改为 generic pipe,提高对 store-heavy、copy/memset 和混合访存的适应性;
  • 该策略以更复杂的 steering、端口冲突仲裁和可能更高的通用 pipe 成本换取 workload mix 灵活性。
  • M6 8-wide 机器仍只有 1L+1S+1G。这表明团队可能优先通过 128 KB D$、40 个 outstanding misses、64 B/c L2 和更大 TLB 降低访存停顿,而不是再增加 AGU/cache ports

[S1]

访存

DCache

参数 M1 M2 M3 M4 M5 M6
容量 32 KB 32 KB 64 KB 64 KB 64 KB 128 KB
相联度 8-way 8-way 8-way 4-way 4-way 8-way
line size 64 B ND 默认数据 line 64 B 64 B 级 64 B 级
load hit 4 c 4 c 4 c 4 c;load-load cascade 可等效 3 c 同 M4
load throughput 1/c 1/c 2/c LSU pipe 层面最多 2 个 load 候选/c(含 G) 同 M4
store throughput 1/c 1/c 1/c LSU pipe 层面最多 2 个 store-address 候选/c;持续 data/commit ND 同 M4
保护 ECC ND ND ND ND

load-load cascading

当第一条 load 的结果仅用于生成下一条依赖 load 的地址时,M4+ 可提前一个周期把结果转发给后续 load,使该依赖链中的第一条 load 体现为 3-cycle 有效延迟。普通 consumer 并不都获得 3-cycle L1 hit,因此应写成“3 或 4 cycle”

相联度分析

M4 在容量仍为 64 KB 时把 8-way 降为 4-way,可能是为了控制 tag/data 访问时序、功耗和端口复杂度

[S1] [S2] [S3]


DTLB 与地址翻译

层级 M1 M2 M3 M4 M5 M6
L1 DTLB 总 pages 32 32 32 48 48 128
组织(entries/ways/sectors) 32/32/1 32/32/1 32/32/1 48/48/1 48/48/1 128/128/1
L1.5 DTLB 总 pages 512 512 512 512
L1.5 组织 128/4/4 128/4/4 128/4/4 128/4/4
Shared L2 TLB 总 pages 1K 1K 4K 4K 4K 8K
L2 组织 1K/4/1 1K/4/1 1K/4/4 1K/4/4 1K/4/4 2K/4/4
  • M3 保留极低延迟的 32-entry L1 DTLB,不直接扩容以免影响 load critical path,而是在后面增加 512-page L1.5 DTLB;
  • 共享 L2 TLB 的 page coverage 扩为 4×
  • L1 data prefetcher 在虚拟地址域工作并可跨页,因而也会提前触发下一页翻译,形成弱式 TLB prefetch 效果;
  • M6 L2 容量不变,但带宽翻倍(64B/c),以支持更宽前端、128 KB L1 refill 与更多并发 miss;

[S1] [S3] [S4]


L2/L3 Cache

flowchart TB
    subgraph A["M1/M2:4 个大核"]
        A0["M core 0<br/>L1I/L1D"]
        A1["M core 1<br/>L1I/L1D"]
        A2["M core 2<br/>L1I/L1D"]
        A3["M core 3<br/>L1I/L1D"]
        AL2["2 MB shared L2<br/>16-way / 4 banks<br/>22 c"]
        A0 --> AL2
        A1 --> AL2
        A2 --> AL2
        A3 --> AL2
    end

    subgraph B["M3:4 个大核"]
        B0["M3 core + 512 KB pL2"]
        B1["M3 core + 512 KB pL2"]
        B2["M3 core + 512 KB pL2"]
        B3["M3 core + 512 KB pL2"]
        BL3["4 MB shared L3<br/>4×1 MB slices<br/>exclusive / NUCA"]
        B0 --> BL3
        B1 --> BL3
        B2 --> BL3
        B3 --> BL3
    end

    subgraph C["M4/M5:2 个自研大核"]
        C4["M4:每核 1 MB pL2<br/>3 MB L3"]
        C5["M5:双核共享 2 MB L2<br/>3 MB L3"]
    end
项目 M1/M2 M3 M4 M5 M6
L2 2 MB/16w,四核共享 512 KB/8w,每核私有 1 MB/8w,每核私有 2 MB/8w,双核共享 2 MB/8w,双核共享
L2 latency 22 c 12 c 12 c 13.5 c 13.5 c
L3 4 MB/16w/4 bank 3 MB/16w/3 bank 3 MB/12w/2 bank 4 MB/16w/2 bank
L3 latency 37 c typical 37 c 30 c
L3 关系 对 L2 exclusive 外层独占管理类设计 外层独占管理类设计
BIU 并发事务 56 80 ND ND

协同 exclusive cache 管理

M3+ 的外层 L3 采用 exclusive hierarchy。简单 exclusive cache 会在上下层交换数据时丢失“真实复用程度”,Samsung 的方案是让 L2 记录:

  • L2 中的命中频度;
  • 从 L3 重新分配回来的行为;
  • demand 与 prefetch 的不同 reuse/dead 元数据

L2 castout 时据此选择:

  1. 以较高 replacement priority 分配到 L3
  2. 普通优先级分配
  3. 完全不分配

分析

  • M3 的 512 KB 私有 L2 + 4 MB L3 是用层次复杂度换取 “12-cycle 近端容量 + 大共享容量”
  • M5 的 L3 延迟降到 30 c,而 L2 变为双核共享且略慢

[S1] [S3] [S4] [P9]


数据预取器

L1 预取算法

  • 对 demand load miss 训练
  • 在虚拟地址域识别多分量 multi-stride
  • 允许跨页预取,并顺带提前 load 翻译
  • 多 load pipe 产生的乱序地址先经类似 ROB 的结构重排回程序顺序;(可能影响 timeliness)
  • 同 cache-line 地址用 filter 去重
  • 用 confirmation 与内存延迟动态调整 prefetch degree
  • demand 追上 prefetch 流时跳过 late 请求
代际 主要演进
M1 multi-stride;动态 degree;one-pass/two-pass;stream/copy 优化
M2 主结构延续
M3 enhanced/hybrid multi-stride;新增 SMS;integrated confirmation;更多 outstanding miss
M4 L2 加 Buddy;MAB 扩大 miss concurrency
M5 在下层缓存旁增 standalone prefetcher,观察 I+D 全局流,并采用低/高置信两态自适应

One-pass / Two-pass

Two-pass 首次预取只向 L2 发 fill,不占 L1 miss buffer;同一地址第二次预取时,待 L1 buffer 空闲后再从 L2 填入 L1。若检测到大量第一次请求本就在 L2 命中,则切到 one-pass,避免浪费 L2 带宽和功耗

flowchart LR
    P["L1 prefetch 生成"] --> MODE{"模式"}
    MODE -->|"two-pass"| L2F["先填 L2<br/>不占 L1 miss buffer"]
    L2F --> Q["second-pass queue"]
    Q --> L1F["buffer 可用后填 L1"]
    MODE -->|"one-pass"| Q2["先记录地址"]
    Q2 --> L1F2["buffer 可用时直接发 L1 fill"]

M3: SMS

SMS(Spatial Memory Streaming):

  • 记录 region 的 primary load;
  • 把同区域、不同 PC 的关联 miss offset 挂接到 primary load;
  • primary PC 再出现时重放高置信 offset;
  • 低置信时只发 first-pass L2 prefetch;
  • multi-stride 已覆盖时抑制 SMS 重复训练

M4: Buddy

  • L2 tag 以 128 B sector 组织,数据仍为两个 64 B sector;
  • demand miss 时预取相邻 64 B buddy;
  • tag sector 已存在,不会因 buddy 数据无效产生额外 tag pollution;
  • filter 观察“是否经常跳过邻居”,无收益时关闭,以控制 DRAM 带宽

M5: standalone lower-level prefetcher

  • 观察 lower cache level 的 instruction、data、demand 与 core-prefetch 全局流;
  • 在物理地址上训练,采用更大结构识别长而复杂的 stream;
  • 通过跨 4 KB 页复用学习结果,缓解物理页边界截断;
  • 低置信时只生成“phantom prefetch”到 filter,不积极发内存请求
  • 高置信后积极请求,并用 cache tag metadata 追踪 prefetched/used 状态
  • 应用 phase 变化或准确率下降时退回低置信模式

[S1] [P5] [P6] [P7] [P8] [P9]


LSQ、Store Buffer 与访存违例队列

结构 M1 M2 M3 M4 M5
Store Buffer 约 16 [B] 约 16 [B] 32 [A,官方称 doubled] ND ND
Load/store hazard queue ND ND 32 项 [A] ND ND
OoO load/store 支持 支持 支持且窗口更深 支持类设计 支持类设计

[S2] [S3] [S4]


MSHR、Fill Buffer 与 MAB

参数 M1 M2 M3 M4 M5 M6
公开 outstanding L1 misses 8 未单列 12 32 未单列 40
机制 fill buffer 同类 扩大 miss 能力 data-less MAB;fill data 仅留在 D$ ND 40 并发能力
  • fill buffer 可能同时保存地址、状态和数据,面积随并发增长很快;
  • M4 改成 data-less Memory Address Buffer(MAB),数据只落在 D$,因此能把并发能力扩到 32;

[S1] [S2] [S3]


Write Buffer / Writeback

项目 公开状态
Store Buffer M3=32;M1/M2 约 16
store commit→cache 的 drain 带宽 M1/M3: 1 store/c

主存访问延迟优化

Exynos 路径含 core、coherent interconnect、memory controller 三个电压/频率域,往返通常跨越四次异步边界。M4/M5 用不同手段缩短关键 read;

M4:DRAM→CPU Cluster Fast Path

  • 为返回数据提供专用旁路;
  • 绕过若干 cache return path 与 interconnect queue;
  • 把返回方向经过两个 interconnect 异步 crossing 的路径压缩为一个直接 crossing

M5:Speculative Cache Lookup Bypass

类似于 Cache Level Prediction

  • demand load miss、I$ miss、page walk 等 latency-critical request,在本地 cache tag search 同时就向 coherent interconnect 推测发出;
  • interconnect snoop-filter directory 作为第二级“纠错预测器”;
  • 若目录表明数据可能仍在被旁路的 cache 中,则取消推测 DRAM request;
  • 对关键 read 还通过 sideband 提前发 page activate hint;内存控制器在高负载时可忽略。
flowchart LR
    R["Latency-critical read"] --> L["本地 L2/L3 tag search"]
    R --> S["并行推测发往 coherent interconnect"]
    S --> DIR{"Snoop-filter directory<br/>可能在缓存?"}
    DIR -->|"是"| CANCEL["取消 DRAM 推测请求"]
    DIR -->|"否"| DRAM["继续 DRAM read"]
    R --> ACT["Sideband early page activate hint"]
    ACT --> DRAM

同频下平均 load latency

M1 M2 M3 M4 M5 M6
14.9 c 13.8 c 12.8 c 11.1 c 9.5 c 8.3 c

数据来自所有核心固定 2.6 GHz 的 trace-driven cycle-accurate model

[S1] [P10]


Commit、ROB 与异常

ROB 与 Retire

参数 M1 M2 M3 M4 M5 M6
ROB 96 100 228 228 228 256
Retire 4 µop/c 4 6 6 6 8 µop/c
Decode/Rename/Retire 4/4/4 4/4/4 6/6/6 6/6/6 6/6/6 8/8/8
fast map recovery 明确有 细节 ND 支持大窗口,细节 ND ND ND ND
branch penalty 14 c 14 c 16 c 16 c 16 c 16 c
  • M3 ROB 变为 M1 的 2.375×,同时 scheduler、PRF、TLB、缓存和 BP 都扩张,否则单独加 ROB 难以获得同等收益;
  • M6 retire width 增长 33.3%,ROB 只增长 12.3%。在持续 8-wide retire 的理想条件下,整个 ROB 可在 32 cycle 排空,少于 M5 的 38 cycle。这表明 M6 更偏向提升峰值吞吐

[S1] [S2] [S3]


功耗管理

  • µBTB 高置信时 clock-gate mBTB/SHP;
  • M5 UOC FetchMode 关闭 I$、decode,必要时关闭 mBTB;
  • M5 Empty Line Optimization 跳过无分支 BTB line;
  • prefetch 动态 degree、one/two-pass、低置信 phantom mode 控制无效请求;
  • Buddy filter 与推测 DRAM cancel 机制控制带宽;
  • M3 设计明确大量使用 clock gating。
  • M6 没有硅后功耗、频率或热持续性数据;8-wide、双 128 KB L1 和 561.5 KB BP 的 PPA 只能视为设计目标,不能据模型 IPC 判定能效

分代分析

M1

M1 的目标是 clean-sheet、可量产、性能/功耗平衡。其最特色的设计是将:

  • 小热 kernel:交给零气泡 µBTB;
  • 中等代码:交给 mBTB + SHP;
  • 大 footprint:交给 L2BTB;
  • 稠密分支行:交给 vBTB

这种按工作集分层的前端在第一代已经很成熟,并通过关闭主预测器来直接节能。Hot Chips 资料还给出每核低于约 3 W

[S2] [S1] [S10]


M2

  • 14 nm→10 nm LPE;
  • ROB 96→100;
  • 同频模型平均 load latency 14.9→13.8 c

M2 最初计划为 M1 shrink;在 M3 开发推进后,团队把一部分可控的新特性提前拉入 M2

[S1] [S4] [S5]


M3

  • 4→6-wide throughout;
  • ROB 100→228;
  • Int/FP PRF 96→192;
  • 整数 scheduler 约 58→126,7→9 个分区;
  • 峰值 11 ops/c;
  • 1L+1S→2L+1S;
  • FPU 1 FMAC+1 FADD→3 FMAC;
  • D$ 32→64 KB;
  • 新增 512-page L1.5 DTLB,L2 TLB 1K→4K;
  • 共享 2 MB L2→每核 512 KB L2 + 4 MB L3;
  • 分支 MPKI 3.92→3.29;
  • 新增 DP2、RR2,误预测代价 14→16

M3 明确选择:接受两级额外流水,用 predictor、窗口与低延迟 cache 抵偿

[S3] [S4]


M4

  • L2BTB 容量再翻倍,fill latency 略降、fill bandwidth 2×;
  • DTLB 32→48;
  • D$ 保持 64 KB,但 8-way→4-way;
  • LSU 由 2L+1S 改为 1L+1S+1G;
  • 私有 L2 512 KB→1 MB;
  • L3 4 MB→3 MB,对应大核簇 4→2;
  • load-load cascading;
  • outstanding miss 12→32,使用 data-less MAB;
  • Buddy L2 prefetcher;
  • DRAM→CPU cluster fast path;
  • 平均 load latency 12.8→11.1 c

M4 更侧重优化 更大代码 footprint、更多并发 cache miss 和跨电源域主存路径

[S1] [S7] [S8]


M5

  • 简单整数 S pipe 2→4;
  • 双核共享 2 MB L2,3 MB L3 延迟降到 30 c;
  • SHP 16→32 KB,16×2048 权重;
  • ZAT/ZOT、Empty Line Optimization、µBTB/mBTB 启发式仲裁;
  • MRB;
  • 384-entry UOC;
  • standalone lower-level I+D prefetcher;
  • speculative cache lookup bypass;
  • early page activate hint;
  • 平均 load latency 11.1→9.5 c

M5 更侧重于设计预测驱动的路径编排

[S1] [S9]


M6

M6 没有产品化

  • 5 nm 设计节点、2.8 GHz target;
  • 8-wide Decode/Rename/Retire;
  • ROB 256,Integer/FP PRF 均 224;
  • 4S + 2CD + 2BR,4×FMAC
  • 128 KB 4-way I$ ,128 KB 8-way D $;
  • 双核共享 2 MB 8-way L2,64 B/c;
  • 4 MB 16-way、2-bank L3;
  • 128-page L1 DTLB,512-page L1.5 DTLB,8K-page shared L2 TLB;
  • mBTB +50%,L2BTB 451.0 KB,BP 总逻辑存储 561.5 KB;
  • 短 VPC + 1,024-slot indirect target hash table;
  • 40 outstanding L1 misses;
  • 模型平均 load latency 8.3 c,平均 IPC 2.71

参考资料

主要论文、演讲与产品页

文献 覆盖 最有价值内容
ISCA 2020《Evolution of the Samsung Exynos CPU Microarchitecture》 M1–M6;M1–M5 量产,M6 completed design 代际总表;M6 8-wide/L1/TLB/端口;SHP/BTB/Hybrid indirect;MRB;安全 target encryption;UOC;prefetch/MAB/DRAM;IPC 与 load latency 模型
Hot Chips 28《Samsung Exynos M1 Processor》 M1 精确前端、scheduler、PRF、D$/L2、端口、流水级
Hot Chips 30《Samsung M3 Processor》 M3 4→6-wide、前端带宽、scheduler、FPU、LSU、cache hierarchy、面积
IEEE Micro 2019《Samsung M3 Processor》 M1/M2 开发史与 M3 POR/M3+ 方法、hazard queue 时序取舍、RTL/模型相关性、功耗哲学
Samsung Exynos 产品页 SoC 映射 制程、核心拓扑、产品级频率/定位

[S1] Brian Grayson et al., Evolution of the Samsung Exynos CPU Microarchitecture, ISCA 2020 Industry Track. 论文注明所有作者在相关核心开发期间任职于 Samsung SARC,并获 Samsung 支持发表。

[S2] Brad Burgess, Samsung Exynos M1 Processor, Hot Chips 28, 2016.

[S3] Jeff Rupley, Samsung M3 Processor, Hot Chips 30, 2018.

[S4] Jeff Rupley, Brad Burgess, Brian Grayson, Gerald Zuraski Jr., Samsung M3 Processor, IEEE Micro 39(2), 2019, DOI: 10.1109/MM.2019.2897556.

[S5] Samsung Semiconductor, Exynos 8895 产品页.

[S6] Samsung Semiconductor, Exynos 9810 产品页.

[S7] Samsung Semiconductor, Exynos 9820 产品页.

[S8] Samsung Semiconductor, Exynos 9825 产品页.

[S9] Samsung Semiconductor, Exynos 990 产品页.

[S10] Samsung Semiconductor, Exynos 8890 官方访谈/产品说明,确认 4×2.6 GHz Samsung custom CPU + 4×Cortex-A53、14 nm 与 Samsung Coherent Interconnect。

[S11] Yonhap News Agency, Samsung shuts down custom CPU development project in U.S., 2019-11-05。报道引用 Samsung 官员,确认停止美国 custom CPU core 开发,并披露 Austin/San Jose 团队裁撤安排。

[S12] Samsung Global Newsroom, Samsung Sets New Standard for Flagship Mobile Processors With Exynos 2100, 2021-01-12。官方确认 Exynos 2100 采用 Cortex-X1、Cortex-A78 与 Cortex-A55,并进入量产。

[S13] Samsung Global Newsroom, Samsung Introduces Game Changing Exynos 2200 Processor With Xclipse GPU Powered by AMD RDNA 2 Architecture, 2022-01-18。官方确认 Exynos 2200 采用 Cortex-X2、Cortex-A710 与 Cortex-A510。

报道

[R1] Hadlee Simons, Android Authority, Samsung was working on at least two new custom CPUs before shutdown, 2020-04-15。报道记录四份 LinkedIn 履历均提到 Mongoose M6,其中一份提到 Mongoose M7;其 2021/2022 产品年份判断为媒体推测,不是 Samsung 官方路线图。

Samsung 专利

专利 对应技术 机制要点 对应 Arch
US10402200B2 零气泡 µBTB 图节点保存 T/N link;seed CAM 发现热循环;decoupling queue;可关主前端 M1
US10846097B2 MRB 保存误预测恢复后的候选 fetch address 序列,连续重启取值 M5
US11169810B2 Predictive UOC allocation 只为可重复、可预测、可装入的代码段建立 UOC;允许关闭 I$/decode M5
US20200210626A1 Secure branch predictor context-specific key 加密 BTB/RAS target,防跨上下文训练与 replay -
US10031851B2 Prefetch address reordering 以程序序分配 tag,OoO 地址到达后链接/重排,过滤同 line 重复 M 系列 L1 prefetch 基线
US9665491B2 Adaptive prefetch degree 按确认率、延迟和压力动态调节预取距离/degree M1 起
US9569361B2 Prefetch chaining 虚拟地址预测、翻译后按层次选择请求,支持跨页与多级填充
US10417130B2 SMS training primary load + associated offset + confidence M3
US10387320B2 Integrated confirmations 由最后确认地址和 pattern 生成小窗口确认项,替代巨大队列 M3
US10606752B2 Exclusive cache coordination 上下层传递 reuse/dead、demand/prefetch 元数据,指导 L3 分配优先级 M3+
US11055221B2 Speculative DRAM read cache lookup 与 DRAM 请求并行;互连目录负责取消错误推测 M5

[P1] Samsung Electronics, US10402200B2 — High performance zero bubble conditional branch prediction using micro branch target buffer.

[P2] Samsung Electronics, US10846097B2 — Mispredict recovery apparatus and method for branch and fetch pipelines.

[P3] Samsung Electronics, US11169810B2 — Micro-operation cache using predictive allocation.

[P4] Samsung Electronics, US20200210626A1 — Secure branch predictor with context-specific learned instruction target address encryption.

[P5] Samsung Electronics, US10031851B2 — Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor.

[P6] Samsung Electronics, US9665491B2 — Adaptive mechanism to tune the degree of pre-fetch streams.

[P7] Samsung Electronics, US9569361B2 — Pre-fetch chaining.

[P8] Samsung Electronics, US10417130B2 — System and method for spatial memory streaming training.

[P9] Samsung Electronics, US10387320B2 — Integrated confirmation queues; US10606752B2 — Coordinated cache management policy for an exclusive cache hierarchy.

[P10] Samsung Electronics, US11055221B2 — Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory