RoCC 是通过向 RISC-V 处理器添加扩展的半官方1方案,最早用于 BSD 的 Rocket-core。
RoCC 规定的扩展指令
RoCC 使用了 RISCV 标准中预留的所有四个扩展槽位,并规定了如下指令格式:
其中 xd
、xs1
、xs2
分别表示对应的寄存器是否被使用到了。
RoCC 和 CPU 之间的交互
RoCC 主要通过如下接口和 CPU 进行交互:
-
CPU 通过
Cmd
接口将指令和相关寄存器的值发送给 RoCC 加速器 -
RoCC 加速器通过
Resp
接口将计算结果(要写入的寄存器号和值)返回到 CPU -
RoCC 通过
busy
标记加速器是否处于忙状态 -
RoCC 自身也可以访问内存、引发中断等
1
指由 RISC-V 亲爹 BSD 研发。