🔍 搜索帖子 / 资讯 / 芯片型号…
论坛/开源蜂鸟E203/E203在基于wallace树+booth编码的乘法器优化后的跑分结果
E203在基于wallace树+booth编码的乘法器优化后的跑分结果
开源蜂鸟E203 作者 dsjdx 发布于 2023-04-17 20:53(1271 天前) 6474 浏览

报名编号: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
d
dsjdx1249 天前 · 1 楼
回复 LANxg:

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

把e203_ifu_ifetch 里面的b2b_nxt信号关于乘法触发的条件注释掉,然后乘法就不会被看做b2b了
L
LANxg1249 天前 · 2 楼
回复 dsjdx:

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

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

L
LGD_AME1249 天前 · 3 楼
回复 dsjdx:

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

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

d
dsjdx1250 天前 · 4 楼
回复 LGD_AME:

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

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

L
LGD_AME1250 天前 · 5 楼

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

d
dsjdx1270 天前 · 6 楼

优化后的乘法器框图


消耗的FPGA资源对比:

e203原始资源消耗:

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


💡 请 登录 后参与讨论(微信扫码即登录/注册)