meidoufu

导航

E203协处理器模块

异构计算:不同指令集架构的几种处理器组合在一起进行计算 举例:GPU(侧重于专用的图像处理)+CPU(侧重于通用的控制和计算)
DSA(domain specific architecture):领域特定架构
RISC-V的可扩展性:预留的指令编码空间;预定义的指令
总体上来说用户可使用的编码空间有三类:
没有使用的编码空间
没有实现指令类型的编码空间
未定义的指令类型组
除此之外,RISC-V架构在32位指令中预定义了4组Custom指令类型,每种Custom均有自己的Opcode,用户可利用这四种指令类型扩展成为自定义的协处理器指令,蜂鸟E203也使用了Custom指令类型来扩展协处理器指令。
一、蜂鸟E203处理器的协处理扩展机制——NICE(nuclei instruction co-unit extension,核指令协同单元扩展)
1、NICE指令的编码
R-type指令:

  • opcode段
    使用RISC-V架构中定义的Custom-1到4的指令组
  • xs1、xs2、xd比特位
    用于控制是否需要读源寄存器rs1、rs2和写目标寄存器rd
    如果xs1=1,表示该指令需要读取rs1比特位索引的通用寄存器作为源操作数1;如果xs1=0,则表示不需要源操作数1
    如果xs2=1,表示该指令需要读取rs2比特位索引的通用寄存器作为源操作数2;如果xs2=0,则表示不需要源操作数2
    如果xd=1,表示该指令需要写回结果到rd比特位指示的目标寄存器;如果xd=0,则表示不需要写回结果
  • funct7区间
    可用作额外的编码空间,用于编码更多的指令
    一种Custom指令组可以使用这一区间编码出128条指令,四组Custom指令则可以编码出512条两读一写指令

2、NICE的接口信号
EAI接口主要包含4个通道

  • 请求通道:用于主处理器在EXU级将指令信息和源操作数派发给协处理器
  • 反馈通道:用于协处理器反馈主处理器告知其已经完成了该指令,并将结果写回主处理器
  • 存储器请求通道:主要用于协处理器向主处理器发起存储器读写请求
  • 存储器反馈通道:主要用于主处理器向协处理器返回存储器读取结果

3、NICE的流水线接口
EAI协处理器在蜂鸟E203流水线中处于和LSU同级位置,如果需要写回操作则还会占据写回操作对应的流水线位置
指令流程如下:

  • 主处理器译码单元在EXU级队指令的Opcode进行译码,判断其是否属于任意一种Custom指令组
  • 判断指令属于Custom指令组后,再根据指令编码的xs1和xs2位判断是否需要读取源寄存器,如需读取则在EXU级立即读取通用寄存器组并取出源操作数
  • 如果当前读取的源寄存器与其他指令存在RAW先读后写依赖性,则暂停流水线直至该RAW解除;主处理器还会根据指令编码的xd位判断是否需要将结果写回通用寄存器组
  • 如果需要写回,则将目标寄存器的索引信息存储在主处理器的流水线控制模块中直到写回完成,以供后序指令进行数据依赖性判断
  • 完成以上步骤后,主处理器在EXU级通过EAI接口的请求通道派发以下内容给协处理器电路:指令编码信息、两个源操作数rs1、rs2的值(均为32位宽)、指令的派发标号(Dispatch ITag)——这个派发标号主要用于追踪指令的派发顺序,协处理器收取到ITag后应当携带该ITag直至写回结果,并将ITag连同结果一并返还给主处理器
  • 协处理器接收到指令后,进一步对指令进行译码并执行既定操作(从点亮LED到连接WiFi,只要电路能实现就能通过主处理器控制)。协处理器可以单拍或多拍返回结果,对于多拍后返回结果的指令,可以是阻塞式的也可以是流水线式的
  • 协处理器和主处理器之间的请求通道采用Valid-Ready方式的同步握手接口,只要协处理器能够接受指令,就可以将Ready信号拉高。只要协处理器能够先后连续接受多条指令,主处理器就可以先后连续发送多条指令到协处理器
  • 协处理器完成执行后,通过NICE接口的反馈通道将结果反馈给主处理器。如果协处理器接收并执行了多条指令,需要保证其在Response Channel反馈结果的顺序与其在请求通道接受指令时一致(按序写回)
  • 反馈通道需要包括指令的ITag并遵循其顺序,如果是需要写回结果的指令,则反馈通道还要包含返回结果的值
  • 主处理器在收到反馈通道的反馈结果后,将此指令从流水线中退出并将结果写回寄存器组(如果有写回需求)
    Custom指令被派发到协处理器到协处理器反馈结果并退役之间的这段时间称为滞外时间

蜂鸟E203最多能支持不超过4条以上的滞外指令,如果协处理器是流水线执行的方式,但其需要超过4个周期以上才能反馈结果,那么流水线会出现空泡。
4、NICE的存储器接口
在处理器的LSU中为NICE协处理器预留了专用的访问接口,协处理器能够访问主处理器能够寻址的数据存储器资源(包括ITCM、DTCM、系统存储总线、系统设备总线、快速IO接口等)
NICE指令访问存储器资源的实现机制如下所示:

  • 专用访问通道基于ICB总线标准
  • 协处理器在接收到EAI的请求通道发送过来的指令后立即译码,如果发现需要访问存储器,则立即将存储器独占信号拉高,主处理器将会阻止后续的指令继续访问存储器资源
  • 协处理器访问存储器需要通过ICB的存储器请求通道向主处理器的LSU发起请求,LSU在完成存储器读写操作后通过ICB的存储器反馈通道向协处理器反馈。
  1. 读操作:对主处理器进行32位对齐的一次读操作,返回读取的数据和本次读操作是否发生了错误
  2. 写操作:通过存储器请求通道中的写数据和字节掩码控制写操作的数据和粒度,返回本次写操作是否发生了错误
  • 协处理器和主处理器LSU接口的ICB总线野草去Valid-Ready方式进行同步握手,协处理器完成访存后需要将存储器独占信号拉低,主处理器将会释放LSU允许后续指令继续访问存储器资源

5、NICE的接口时序
见书上P287时序图
二、蜂鸟协处理器的参考示例
1、实现需求
3*3的矩阵按行累加、按列累加并分别输出结果
2、自定义指令示例
3、硬件实现
4、软件驱动
5、性能分析

posted on 2025-02-20 11:09  霉豆腐  阅读(245)  评论(0)    收藏  举报