fpga实现cnn之脉动乘法理论篇

 

本次文章分为几个部分,主要细致介绍脉动,

何为脉动,脉动的数据是什么样子的,下图可以看做是简单的脉动单元,共有P11到P33 9个计算单元,行列数据并不是同时刻到达计算单元,而是依次进入,说白了就是像FPGAer经常说的pipiline,这里面有个关键点是cnn的乘加操作,p11计算单元会在3个节拍进来6个数据,3个节拍后,p11=3*3+2*4+2*3=23,每个计算单元在计算的同时,数据会流入下一个计算单元。

 

 

脉动的好处,我认为主要有3点

(1)增加了fpga内dsp的效率,

增加了效率是指,dsp的计算效率会提升,计算单元其实在大部分时间都是闲置的,因为会有大量的时间在进行读数据写数据的操作,而数据一旦脉动起来,则会让dsp无时无刻的都处于计算状态,这也相当于在工作频率不变的情况下,大大的增加了dsp的利用效率。

(2)布局布线更加容易

为什么说布局布线更加容易,当所有的计算单元都需要同一时刻处理数据时,eda编译器肯定会将相关PE都放在一起,至少也是保证数据到他们的时刻相同,这就对编译器具有较高的要求,而数据是脉动过来的话,则可以让编译器有更加宽裕的时间处理,布局布线也会更容易。

 

(3)节省资源,主要是节省lut资源

节省lut资源主要是指cnn的加操作,如果不是用脉动形式,结果会在一个周期内同时出来,如果feature map是3*3则会有9个数据同时出来,需要在同时刻将9个数据求和。这里就需要lut搭建加法树完成操作。而如果是脉动的数据方式,数据脉动出来,可以利用dsp的后加器完成计算,节省lut资源

脉动的实现部分,如何实现

后面我又在写一篇博文,专门介绍如何用verilog实现脉动计算。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brank_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值