一种带宽自适应的数据传输的卷积神经网络加速计算系统的制作方法

文档序号:33473250发布日期:2023-03-15 09:14阅读:50来源:国知局
一种带宽自适应的数据传输的卷积神经网络加速计算系统的制作方法

1.本发明属于专用算法硬件电路设计领域,特别涉及一种带宽自适应的数据传输的卷积神经网络加速计算系统。


背景技术:

2.以卷积神经网络(convolutional neural network,cnn)为代表的深度学习算法在图像分类、目标检测等领域的性能不断提高。其海量的计算和存储,催生了很多基于asic或fpga的深度学习处理器或是更专用的cnn加速器。
3.cnn加速器的性能主要受限于片外存储带宽上限和片上计算资源上限,但由于存储技术的发展速度长期滞后于处理器技术,前者往往是限制cnn加速器性能的主要因素。
4.以计算cnn的单个卷积层为例,需要多次读写输入特征数据、权重偏置数据和输出特征数据,这些读写操作通常具有很强的突发性和聚集性,很容易造成片外存储带宽时而阻塞、时而空闲,导致有限的带宽未得到充分利用,从而拖慢系统的整体性能。


技术实现要素:

5.本发明正是基于现有技术的上述需求而提出的,本发明要解决的技术问题是提供一种带宽自适应的数据传输的卷积神经网络加速计算系统,以解决卷积神经网络加速计算系统中片外存储带宽利用效率不高的问题。
6.为了解决上述问题,本发明提供的技术方案包括:
7.一种带宽自适应的数据传输的卷积神经网络加速计算系统,其特征在于,包括卷积神经网络加速器,用于执行具体的数据计算;以及带宽自适应数据传输装置,设置在所述卷积神经网络加速器和外部存储装置之间,感知卷积神经网络加速器的数据消耗并生成速率、感知外部存储装置带宽的占用情况;根据感知数据确定卷积神经网络加速器和所述外部存储装置之间的数据传输策略;所述带宽自适应数据传输装置包括:数据加载模块,用于将片外外部存储单元中指定位置的数据加载至卷积神经网络加速器;数据卸载模块用于将卷积神经网络加速器计算产生的数据卸载至外部存储单元的指定位置。
8.优选地,所述卷积神经网络加速器和所述带宽自适应数据传输装置之间采用fifo数据接口连接;所述卷积神经网络加速器和外部存储装置之间采用axi数据接口连接。
9.优选地,所述卷积神经网络加速器,包括:计算单元,用于执行具体的数据计算;片上缓存单元,用于从外部存储装置获取用于计算的数据;寄存器组,设置在所述片上缓存单元和所述计算单元之间,寄存用于计算的数据。
10.优选地,所述数据加载单元包括:指令配置模块,从外部主控接收控制指令,将指令信息解析、运算之后生成各个其它模块的配置信息;地址自动生成模块,根据指令模块的配置信息生成指导驱动模块从外部存储单元读取数据块的地址信息;数据感知模块根据指令配置模块的配置信息,感知所述带宽自适应数据传输单元与卷积神经网络加速器以及外部存储单元之间的数据通道中的数据变化情况;自动插值模块,接收来自外部存储单元的
数据,并根据所述指令配置模块生成的配置信息将预定数值插入数据流的预定位置;数据驱动模块,根据指令配置模块的配置信息,驱动数据接口传输数据;当驱动模块接收到数据后,判断卷积神经网络加速器与带宽自适应数据传输单元之间的通信线路的full信号状态,在所述full信号不为高时,将插入预定数值的数据流输送至所述卷积神经网络加速器。
11.优选地,所述数据卸载单元包括:指令配置模块,从外部主控接收控制指令,将指令信息解析、运算之后生成各个其它模块的配置信息;地址自动生成模块,根据指令模块的配置信息生成指导驱动模块从外部存储单元读取数据块的地址信息;数据感知模块根据指令配置模块的配置信息,感知所述带宽自适应数据传输单元与卷积神经网络加速器以及外部存储单元之间的数据通道中的数据变化情况;数据驱动模块,根据指令配置模块的配置信息,驱动数据接口传输数据。
12.优选地,所述加载单元的所述数据驱动模块包括axi数据感知模块,根据指令配置模块的配置信息感知axi总线上数据传输带宽占用情况,并告知axi驱动模块;在数据加载模式下,检测axi总线rvalid信号的占空比dr,以及占空比的变化速率。
13.优选地,所述卸载单元的所述数据驱动模块包括axi数据感知模块,根据指令配置模块的配置信息感知axi总线上数据传输带宽占用情况,并告知axi驱动模块;在数据卸载模式下,该模块检测axi总线wready信号的占空比dw,以及占空比的变化速率。
14.优选地,所述加载单元的所述数据感知模块包括:axi数据感知模块,根据指令配置模块的配置信息,感知axi总线上数据传输带宽占用情况,并告知axi驱动模块;在数据加载模式下,检测axi总线rvalid信号的占空比dr,以及占空比的变化速率;fifo数据感知模块根据指令配置模块的配置信息,感知fifo中数据的变化情况,并告知数据axi驱动模块和fifo驱动模块;在数据加载模式下,感知fifo的占空率fe及占空率的变化速率。
15.优选地,所述卸载单元的所述数据感知模块包括:axi数据感知模块,根据指令配置模块的配置信息,感知axi总线上数据传输带宽占用情况,并告知axi驱动模块;在数据卸载模式下,检测axi总线wready信号的占空比dw,以及占空比的变化速率;fifo数据感知模块根据指令配置模块的配置信息,感知fifo中数据的变化情况,并告知数据axi驱动模块和fifo驱动模块;在数据卸载模式下,感知fifo的占用率ff,及占空率的变化速率。
16.优选地,所述外部存储装置包括ddr。
17.通过感知cnn加速器的数据消耗(生成)速率、感知片外存储带宽的占用情况、提高数据传输连续性等手段,提升卷积神经网络加速器的片外数据传输效率。此外,数据传输模块通过自动插值提高计算连续性,可降低卷积神经网络加速器计算单元的首次延时带来的效率损失。
附图说明
18.图1是本具体实施方式中卷积神经网络加速计算系统的结构图;
19.图2是本具体实施方式中数据加载单元的结构图;
20.图3是本具体实施方式中数据卸载单元的结构图;
21.图4是卷积层输入特征图的尺寸标注和分块示意图。
具体实施方式
22.本具体实施方式提供了一种带宽自适应的数据传输的卷积神经网络加速计算系统。其主要用于对卷积神经网络中大量的数据进行计算,例如计算卷积神经网络的卷积核等,起到加速计算卷积神经网络的作用。
23.如图1所示,本具体实施方式中的一种带宽自适应的数据传输的卷积神经网络加速计算系统包括卷积神经网络加速器,以及带宽自适应数据传输单元。
24.所述卷积神经网络加速器,包括计算单元,用于执行具体的数据计算,例如执行卷积核的计算等,数据计算单元可以包括一个或多个计算模块,采用不同种类的数据计算方法。
25.片上缓存单元,用于从外部存储装置,例如从ddr存储器中获取用于计算的数据。例如包括但不限于特征图数据、卷积核数据、权重数据等。
26.寄存器组,设置在所述片上缓存单元和所述计算单元之间,寄存用于计算的各种数据。
27.带宽自适应数据传输装置,与所述计算单元通过fito数据总线连接,包括数据加载单元和数据卸载单元,所述带宽自适应数据传输装置与ddr通过axi数据总线连接。所述数据加载单元用于将片外ddr中指定位置的数据加载至卷积神经网络加速器;所述数据卸载单元用于卷积神经网络加速器计算产生的数据卸载至片外ddr的指定位置。
28.数据加载单元的整体架构如图2所示,包括指令配置模块、地址自动生成模块、fifo数据感知模块、axi数据感知模块、axi驱动模块、fifo驱动模块和自动插值模块。
29.数据卸载单元,其整体架构如图3所示,主要由指令配置模块、地址自动生成模块、fifo数据感知模块、axi数据感知模块、axi驱动模块和fifo驱动模块组成。地址自动生成模块可工作在输出特征卸载模式下,fifo数据感知模块、axi数据感知模块、axi驱动模块和fifo驱动模块工作在数据卸载模式下。
30.指令配置模块,用于从外部主控接收控制指令,将指令信息解析、运算之后,配置地址自动生成模块的基地址a0、数据块长度生成相关信息和偏移地址生成相关信息等,配置axi驱动模块的数据突发读/写长度b、传输间隔单位时间t等,配置自动插值模块的插值点位和插入值等,配置axi数据感知模块和fifo数据感知模块的感知信号类型和信号融合方式等。
31.地址自动生成模块,根据指令模块的配置信息生成每次数据传输的首地址和数据块长度,用来指导axi驱动模块从ddr的特定位置读取数据块。在卷积神经网络加速器的应用场景中,地址自动生成模块具有输入特征加载模式、权重数据加载模式、输出特征卸载模式等多种模式,具体模式可根据应用需求进行添加或修改。
32.比如,在典型的输入特征加载模式下,每次传输的数据块长度l将根据输入特征图的宽度w、输入特征图高度方向分块数th、输入特征图行分块的默认高度h
t
、输入特征图行分块的最后高度h
t’,利用公式1计算得到;数据块首地址a将根据基地址a0、输入特征图的宽度w、输入特征图的高度h、输入特征图重叠区高度ho、数据宽度m,利用公式2计算得到。上述参数与符号的具体含义如图4所示。
33.34.a=a0+((id
ch-1)
×w×
h+(id
h-1)
×w×
(h
t-ho))
×mꢀꢀꢀ
(公式2)
35.其中,id
ch
和idh分别是输入特征图通道方向和高度方向的分块id。id
ch
从1开始计数,每完成一次数据传输,id
ch
自加1;当id
ch
达到输入特征图通道方向的分块数t
ch
时,id
ch
归1,同时idh自加1;当idh达到输入特征图高度方向的分块数th时,idh归1,至此整层的输入特征数据传输完毕。
36.其它模式下数据块长度l和数据块首地址a的计算方式,与上述例子类似。
37.axi数据感知模块根据指令配置模块的配置信息,感知axi总线上数据传输带宽占用情况,并告知axi驱动模块。在数据加载模式下,该模块检测axi总线rvalid信号的占空比dr,以及占空比的变化速率;在数据卸载模式下,该模块检测axi总线wready信号的占空比dw,以及占空比的变化速率。其中,rvalid信号占空比越小,表示ddr越处于读数据繁忙状态;wready信号占空比越小,表示ddr越处于写数据繁忙状态。占空比变化速率指单位时间内占空比的变化程度,为简化硬件逻辑,可仅统计数据开始传输后前k个时钟周期的占空比d1和后k个时钟周期的占空比d2,占空比变化速率vd可用1bit数据表示,计算方式由如下公式3得到。
[0038][0039]vd
等于1表示axi总线的带宽正在逐渐空闲,反之表示总线带宽正在逐渐繁忙。
[0040]
fifo数据感知模块根据指令配置模块的配置信息,感知fifo中数据的变化情况,并告知数据axi驱动模块和fifo驱动模块。在数据加载模式下,该模块感知fifo的占空率fe,及占空率的变化速率;在数据卸载模式下,该模块感知fifo的占用率ff,及占空率的变化速率。其中占空率表示未存储数据的深度占fifo总深度的比例;占用率表示数据存储深度占fifo总深度的比例。占用率/占空率的变化速率vf可用前f个时钟周期的占用率/占空率f1和后f个时钟周期的占用率/占空率f2计算,计算方式由如下公式4给出。
[0041][0042]vf
等于1表示数据传输速率小于计算速率,反之表示数据传输速率大于计算速率。
[0043]
axi驱动模块根据指令配置模块的配置信息,地址自动生成模块的数据传输首地址a和数据块长度l,axi数据感知模块的axi总线带宽占用情况(rvalid/wvalid信号的占空比dr和dw、和占空比变化速率vd),fifo数据感知模块的占用情况(占用率ff或占空率fe,占用率/占空率的变化速率vf),计算发起axi数据传输的时机和突发长度(burst length),并驱动axi接口进行数据传输。数据传输次数n由公式5计算得到。
[0044][0045]
其中,为向上取整运算,b为axi突发读写长度,上限是256。通常b值越大,数据传输效率越高。上式中l通常远大于b,因此可保证大部分数据传输请求的效率。即数据传输单元可通过该手段提高数据传输的连续性,从而提高传输效率。
[0046]
在数据加载模式下,两次数据传输请求间的时间间隔t
l
可由公式6计算得到。
[0047]
t
l
=t
×
(2-dr×vd-fe×vf
)
ꢀꢀ
(公式6)
[0048]
表示axi总线越空闲、接收数据的fifo越空,则传输间隔时间约短;反之则时间越长。
[0049]
在数据卸载模式下,两次数据传输请求间的时间间隔td可由公式7计算得到。
[0050]
td=t
×
(2-dw×vd-ff×vf
)
ꢀꢀ
(公式7)
[0051]
表示axi总线越空闲、接收数据的fifo越满,则传输间隔时间约短;反之则时间越长。
[0052]
自动插值模块,仅存在于数据加载单元。从axi驱动模块获得数据,根据指令配置单元的配置信息,将指定的数值插入到指定位置,并将插值后的数据打入fifo驱动模块。
[0053]
fifo驱动模块由数据进行驱动,无需配置信息。在数据加载模式下,接收自动插值模块的数据,并在fifo的full信号不为高的条件下将数据打入fifo。在数据卸载模式下,在fifo的empty信号不为高的条件下读取数据,并打入axi驱动模块。
[0054]
采用上述带宽自适应的数据传输的卷积神经网络加速计算系统的工作方法如下:
[0055]
第一步,通过主控向指令配置模块写入输入特征图的基本信息,包括特征图的高度h、特征图的宽度w等;特征图分块的基本信息,包括高度方向分块数th、通道方向分块个数t
ch
、输入特征图重叠区高度ho、数据宽度m等;数据传输相关信息,包括ddr基地址a0、axi突发读写长度b、传输间隔单位时间t等。
[0056]
第二步,地址自动生成模块根据配置信息生成每次传输的数据块长度l、首地址a、数据块通道方向的id id
ch
和高度方向的id idh,并将该信息告知axi驱动模块。
[0057]
第三步,axi驱动模块根据配置信息和地址自动生成模块的信息,发起首次数据块的读取操作。并将数据打入自动插值模块。
[0058]
第四步,axi接口开启数据传输后,axi数据感知模块变根据配置信息,对rvalid信号的占空比dr,以及占空比的变化速率vd进行检测,并将该信息反馈给axi驱动模块。
[0059]
第五步,自动插值模块接收到数据后,根据配置信息,将特定值插入数据流的特定位置,并将插值后的数据打入fifo驱动模块。
[0060]
第六步,fifo驱动模块接收到数据后,如果fifo的full信号为低,便将数据打入fifo。
[0061]
第七步,fifo驱动模块开始工作的同时,fifo数据感知模块根据配置信息,fifo的占空率fe,及占空率的变化速率vf进行检测。并将该信息反馈给axi驱动模块和fifo驱动模块。
[0062]
第八步,axi驱动模块完成首次数据读取后,根据配置信息、fifo占空率fe,占空率的变化速率vf、axi rvalid信号的占空比dr和占空比变化速率vd,计算传输请求间的时间间隔t
l
,并根据间隔时间t
l
启动下一次数据传输,直至完成n个数据块的传输。
[0063]
最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制。本领域的技术人员,依据本发明的思想,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1