RISC-V MCU中文社区

【分享】 NICE接口介绍

发表于 全国大学生集成电路创新创业大赛 2021-03-24 18:49:22
0
8176
24

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






喜欢24
用户评论
clever

clever 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板