二、NICE指令格式
NICE指令格式如下:
其中各个部分的意思如下表
注:RISC-V ISA在32位指令集中提供了四组custom指令:custom0、custom1、custom2、custom3,它们的opcode分别为:0001011、1101011、1011011、1111011。
三、接口定义
注:Direction是针对E203 core的。
四、指令处理
指令的处理主要有以下几步:
1、E203内核先取指,译码,如果识别到是一条NICE指令,则通过request channel将这条指令交给协处理器处理,并根据funct3判断是否将源寄存器的值传递给协处理器。
2、如果NICE指令和前一条未完成的指令间存在联系,则需要停顿流水线直到联系解除,就不用考虑数据前递之类的问题,和E203内核的一般指令一样。
3、采用握手机制,E203内核发出的request信号持续拉高,直到协处理器ready信号拉高,握手成功,信息传递给协处理器。
4、协处理器处理完毕,通过response channel将数据发送给E203内核。
五、NICE接口内存的访问
内存访问和指令的处理基本一致,也是采用握手机制,步骤如下:
1、协处理器发送ICB请求,如果E203 ICB ready信号拉高,握手成功,E203将利用LSU(load/store unit)进行内存的访问。
2、E203内核在访存完成后,通过response channel将valid信号以及读取到的数据(如果是读操作)发送给系处理器,当协处理器ready信号拉高,握手成功,数据传输完毕。
3、为防止死锁的发生,在协处理器访问内存时,需要将nice_mem_holdup信号持续拉高,在此期间不允许其他的内存访问。