RoCC 是通过向 RISC-V 处理器添加扩展的半官方1方案,最早用于 BSD 的 Rocket-core。

RoCC 规定的扩展指令

RoCC 使用了 RISCV 标准中预留的所有四个扩展槽位,并规定了如下指令格式:

RoCC inst

其中 xdxs1xs2 分别表示对应的寄存器是否被使用到了。

RoCC 和 CPU 之间的交互

RoCC 主要通过如下接口和 CPU 进行交互:

  • CPU 通过 Cmd 接口将指令和相关寄存器的值发送给 RoCC 加速器

  • RoCC 加速器通过 Resp 接口将计算结果(要写入的寄存器号和值)返回到 CPU

  • RoCC 通过 busy 标记加速器是否处于忙状态

  • RoCC 自身也可以访问内存、引发中断等

1

指由 RISC-V 亲爹 BSD 研发。