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
2
3
4
5
vset
vector_op
branch
vset
vector_op

如果:

  • 第二个 vset 在错误预测路径上
  • 分支回滚

问题出现在:如何恢复正确的控制状态?

如果处理不好:

  • vector 指令会使用错误的 vtype
  • pipeline 需要复杂回滚
  • 硬件结构膨胀

传统解法

  1. ROB / rename 结构中保存控制状态

缺点:

  • 状态复制多
  • 恢复成本高
  1. 每个分支 checkpoint 控制寄存器

缺点:

  • checkpoint 数量多
  • 存储成本大

解法: BST + CIB

Tenstorrent 提出一种专门的数据结构:

  1. Branch Status Table(BST)
    • 保存每个分支在 CIB 中对应的指针
  2. 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 发生:

  1. 根据 Branch ID 找到 BST 中对应 entry, 拿到对应 CIB 的指针
  2. 从 CIB 中开始搜索:P2 → P2+1 → P2+2 ...
  3. 找到最后一个 offset 小于 branch offset 的控制指令
    举例:(正确的控制指令应该是 4)
    1
    2
    branch offset = 8
    control offsets = {2,4,12}
  4. 将 CIB head pointer 回退到:P2+1 完成恢复

技术优势

  1. 控制状态 checkpoint 成本低: 只保存指针 (O(branch))
    • 传统方案:每个 branch 保存完整 control state O(branch × control_state)
  2. misprediction recovery 非常快: 只需修改指针
    • 复杂度:O(k), k = 同一 fetch group 的控制指令数量
  3. 适合 RVV 向量处理器: vsetvl 指令
  4. 减少 pipeline flush 代价: 无需重算配置状态