Tenstorrent Patent(US20250328350A1): Branch Status Table and Control Instruction Buffer for Processor Instruction Pipeline
| Patents | Inc. | Title |
|---|---|---|
| US20250328350A1 | Tenstorrent | Branch Status Table and Control Instruction Buffer for Processor Instruction Pipeline |
Tenstorrent 2025 年发布了 Ascalon CPU ,在其公布的架构图中可以看到该 CPU 的分支预测单元中采用了一个 Branch State Table 的设计,
可能就是这篇专利提到的 Branch Status table。
问题: 分支预测 + 控制指令
处理器流水线中“控制类指令(control instruction)”在分支预测与回滚情况下的正确性与效率问题。
这里的控制类指令在支持向量扩展的 RISC-V CPU 中主要指 vsetvl 指令
现代 CPU 会:
- 提前预测分支
- 提前执行 vsetvl 指令(speculative execution)
假设:
1 | vset |
如果:
- 第二个
vset在错误预测路径上 - 分支回滚
问题出现在:如何恢复正确的控制状态?
如果处理不好:
- vector 指令会使用错误的 vtype
- pipeline 需要复杂回滚
- 硬件结构膨胀
传统解法
- 在 ROB / rename 结构中保存控制状态
缺点:
- 状态复制多
- 恢复成本高
- 每个分支 checkpoint 控制寄存器
缺点:
- checkpoint 数量多
- 存储成本大
解法: BST + CIB
Tenstorrent 提出一种专门的数据结构:
- Branch Status Table(BST)
- 保存每个分支在 CIB 中对应的指针
- Control Instruction Buffer(CIB)
- 保存控制指令的数据
当发生分支错误预测:只需要回滚指针即可恢复控制状态
Branch Status Table(BST)
BST 是一个寄存器表结构
每个 entry 包含:
- branch identifier
- branch metadata
- pointer: 指向 CIB 代表当前分支之前的控制指令状态
跟踪对象
BST 不一定只跟踪单个 branch,也可以追踪一整个 Fetch Bundle / Fetch Group:
对 Fetch Group 的约束:
- 一组顺序指令
- 可能包含多个 branch
- 最多一个 taken branch
Control Instruction Buffer(CIB)
CIB 保存控制指令的执行状态
例如:
| Buffer Addr | Control Instr | Offset |
|---|---|---|
| P1 | vset1 | X+8 |
| P2 | vset2 | X+16 |
| P3 | vset3 | Y+4 |
offset:相对于 fetch group 开始地址的 PC offset
记录 offset 的原因:同一 fetch group 内可能有多个控制指令
Buffer结构
循环缓冲区(circular buffer)
特点:
- FIFO
- 可以覆盖旧 entry
当 branch commit:
- 对应 entry 被删除或覆盖
Update Login
- 当 decode 阶段遇到控制指令,写入 CIB,并更新 BST 的 Pointer
- 当执行普通指令:
- 如果 Fetch Bundle 内存在 control instruction ,使用该 instruction 的配置
- 否则使用 CIB 中最新 entry
Branch Misprediction
假设一个 Fetch groups:
1 | X → Y → Z → Z' |
预测路径:
1 | A → B → C → D |
实际路径:
1 | A → C |
当 misprediction 发生:
- 根据 Branch ID 找到 BST 中对应 entry, 拿到对应 CIB 的指针
- 从 CIB 中开始搜索:
P2 → P2+1 → P2+2 ... - 找到最后一个 offset 小于 branch offset 的控制指令
举例:(正确的控制指令应该是 4)1
2branch offset = 8
control offsets = {2,4,12} - 将 CIB head pointer 回退到:
P2+1完成恢复
技术优势
- 控制状态 checkpoint 成本低: 只保存指针 (
O(branch))- 传统方案:每个 branch 保存完整 control state
O(branch × control_state)
- 传统方案:每个 branch 保存完整 control state
- misprediction recovery 非常快: 只需修改指针
- 复杂度:
O(k), k = 同一 fetch group 的控制指令数量
- 复杂度:
- 适合 RVV 向量处理器: vsetvl 指令
- 减少 pipeline flush 代价: 无需重算配置状态
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.