RISC-V技术论坛
直播中

云达贞

8年用户 957经验值
私信 关注
[经验]

NICE接口介绍

一、NICE接口简介

       在开发过程中,为了提高特定领域的性能,同时降低功耗,可以考虑利用定制的硬件协同单元,蜂鸟E203内核支持用户创建自定义指令,主处理器与协处理器通过NICE(Nuclei Instruction Co-unit Extension)接口通信



二、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信号持续拉高,在此期间不允许其他的内存访问。





更多回帖

发帖
×
20
完善资料,
赚取积分