RISC-V MCU中文社区

【分享】 E203在基于wallace树+booth编码的乘法器优化后的跑分结果

发表于 开源蜂鸟E203 2023-04-17 20:53:00
6
3048
6

报名编号:CICC1355

团队名称:有点难

学校名称:深圳大学

队伍成员:倪家哲,贾东轩,邹泓高

指导老师:钟世达,张沛昌

优化思路
E203为了实现低功耗的要求,乘法器为基于booth编码和移位加法器结合的思路,优点是只需要一个加法器,而且该加法器还和除法器复用,可以说是将面积缩小到了极致。缺点也很明显,即使通过booth编码后部分积缩小为一半,仍有17个部分积,需要17个周期才能完成一次乘法指令(也不能说是缺点,只是为了减小资源消耗所做出的妥协。说实话,这个乘法器的代码写的很漂亮,我都不想改)。
修改后的乘法器将booth编码与wallace树算法相结合,电路框图如下:
booth编码模块生成部分积,将部分积送入wallce模块中进行压缩计算,算出最终的乘法结果,将一个乘法指令缩减到2个周期(1th:rs1和rs2寄存器输入乘法操作数,乘法器进行乘法操作,2th输出乘法结果)。
目前优化后的乘法器输出结果是64位的,后面会继续优化算法,改为32位的(减小资源消耗),根据乘法指令的不同选择输出低32位还是高32位。

跑分结果
在基于vcs+verdi联合仿真没有问题之后,将代码下载进FPGA进行跑分测试,通过NucleiStudio烧写程序并通过串口打印到屏幕。

开发板:ALINX 7103
开发环境:vivado2021.2+NucleiStudio2022.08

coremark跑分

dhrystone跑分

whetstone跑分

可以看到,优化乘法器对于提升跑分有着很大作用。

喜欢6
用户评论 (6)
  • dsjdx

    2023-05-09 21:41:56 dsjdx 1#

    LANxg

    请问“乘法器不触发back2back”怎么理解呢,是您的测试用例不涉及b2b指令吗?还是说在乘法器代码上做了什么修改吗?谢谢。

    把e203_ifu_ifetch 里面的b2b_nxt信号关于乘法触发的条件注释掉,然后乘法就不会被看做b2b了

  • LANxg

    2023-05-09 21:12:40 LANxg 2#

    dsjdx

    你是想知道怎么把修改好的乘法器放进e203对吧,首先得修改e203_exu_alu_muldiv里面的乘法控制状态机,就是最开始的那些代码,根据你自己的乘法器周期进行更改,然后把e203那个17周期booth乘法器注释或者ifdefine了,放进你自己的乘法器就行了,注意使能端口的设置,得根据你自己的乘法器来定义,写回基本不需要修改什么的,就是back2back那里需要注意一下,我不知道怎样进行合适的修改,所以我直接让我的乘法器不触发back2back,你可以试试能不能把这里修改好

    请问“乘法器不触发back2back”怎么理解呢,是您的测试用例不涉及b2b指令吗?还是说在乘法器代码上做了什么修改吗?谢谢。

  • LGD_AME

    2023-05-09 13:41:18 LGD_AME 3#

    dsjdx

    你是想知道怎么把修改好的乘法器放进e203对吧,首先得修改e203_exu_alu_muldiv里面的乘法控制状态机,就是最开始的那些代码,根据你自己的乘法器周期进行更改,然后把e203那个17周期booth乘法器注释或者ifdefine了,放进你自己的乘法器就行了,注意使能端口的设置,得根据你自己的乘法器来定义,写回基本不需要修改什么的,就是back2back那里需要注意一下,我不知道怎样进行合适的修改,所以我直接让我的乘法器不触发back2back,你可以试试能不能把这里修改好

    哦哦哦谢谢哥,那我先从头开始弄!

  • dsjdx

    2023-05-08 18:22:11 dsjdx 4#

    LGD_AME

    哥,有详细的更改思路之类的吗,纯新手想学习一下怎么改e203_exu_alu_muldiv这部分

    你是想知道怎么把修改好的乘法器放进e203对吧,首先得修改e203_exu_alu_muldiv里面的乘法控制状态机,就是最开始的那些代码,根据你自己的乘法器周期进行更改,然后把e203那个17周期booth乘法器注释或者ifdefine了,放进你自己的乘法器就行了,注意使能端口的设置,得根据你自己的乘法器来定义,写回基本不需要修改什么的,就是back2back那里需要注意一下,我不知道怎样进行合适的修改,所以我直接让我的乘法器不触发back2back,你可以试试能不能把这里修改好

  • LGD_AME

    2023-05-08 17:12:01 LGD_AME 5#

  • dsjdx

    2023-04-18 21:33:05 dsjdx 6#

    优化后的乘法器框图


    消耗的FPGA资源对比:

    e203原始资源消耗:

    修改乘法器后的资源消耗:


dsjdx

dsjdx 实名认证

懒的都不写签名

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