RISC-V MCU中文社区

【分享】 基于E203 NICE协处理器扩展指令

发表于 开源蜂鸟E203 2023-05-31 17:03:52
2
4271
3

【分享】 基于E203 NICE协处理器扩展指令

1 队伍介绍

报名编号: CICC1649
团队名称: 巴巴托斯

实现功能:基于官方提供的demo nice的硬件代码,设计一个基于e203 nice协处理的加法器。

2 NICE协处理器理论学习

nice协处理器的作用主要是用于控制通路的管理

去年国一的协处理器应用

(1)  概念

领域特定架构(Domain Specific ArchitectureDSA,使用特定的硬件做特定的事情[18],也就是说,将主处理器和协处理器加速器适当扩展到某些特定领域可以非常明显地提高能效比。NICE协处理器Nuclei Instruction Co-unit Extension,蜂鸟内核指令协处理器扩展机制)是一个独立于蜂鸟E203内核的一块运算单元[24],它能根据指令去控制系统内的资源去实现一些操作,例如利用协处理器源操作数实现内存与缓存的数据交换、累加值、乘法、加密等操作,从而提高RISC-V处理器特定领域的性能,同时降低功耗NICE协处理器的调用需要创建用户自定义RISC-V的指令

(2)  如何调用NICE协处理器

调用NICE接口有4个通道,请求通道存储器请求通道反馈通道、和存储器反馈通道请求通道:主处理器在流水线的EXU级时,将指令的编码信息和源操作数传输到协处理器。反馈通道:协处理器告诉主处理器其已完成了该指令,并将结果反馈到主处理器。存储器请求通道:协处理器向主处理器发起存储器读写请求。存储器反馈通道:主处理器向协处理器写回存储器读写结果。

Nice请求通道(request channel)

Nice存储器请求通道(memory request channel)

Nice存储器反馈通道(memory response channel)

Nice 反馈通道(response channel)

调用协处理器的方法:扩展一个用RTL级代码编写的协处理器,想个办法调用这个独立于流水线的计算单元,即在MCU层面,在编译器里编写C语言主函数中包含指定汇编指令的调用,完成驱动的配置。在nuclei-board-labs-master\e203_hbirdv2\common\demo_nice里的insc.h给了调用的示例。

(3)  如何设计NICE协处理器扩展指令

1.     思路

官方提供的demo nice的硬件代码,难以阅读,这里可以删除掉了lbufsbuf仅保留rowsum指令,等该代码成功运行后,以此为模板,设计加法器

对于nice demonice请求通道 和 nice相应通道的波形如下:

该波形发送的是rowsum指令:

rowsum的信息实际应该是  opcode1111011 fun3 110  fun7 0000110与波形相匹配。

2.     对于芯来比赛而言,所有的nice指令最好都只用于控制,相关信号可仅有rs1rs2(写)和rd(读)传递,不需要读取存储器的数据(这样可精简化协处理器的控制代码)

在官方案例的基础上 新增一个简单的add指令 c= a + b(主要是将内联汇编弄清楚,使用rs2)

屏幕截图 2023-04-12 144101

喜欢3
用户评论 (2)
11111

11111 实名认证

11111

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