一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种高带宽存储的CNN加速器的制作方法

2021-11-15 17:46:00 来源:中国专利 TAG:

一种高带宽存储的cnn加速器
技术领域
1.本发明属于神经网络领域,涉及一种高带宽存储的cnn加速器。


背景技术:

2.近年来,深度神经网络在人工智能领域中得到广泛的应用,文字识别、图像识别、目标跟踪以及人脸检测与识别等应用领域取得了显著的成果。随着应用场景的愈加复杂,深度神经网络的规模不断增大,需要存储和计算大量的参数,对计算平台的运算能力要求越来越高。因此,如何加速并在硬件上实现大规模的深度神经网络成为人工智能领域的重要问题。
3.目前的深度神经网络类智能计算高度依赖海量的数据,然而运算单元与内存间的性能差距越来越大,内存子系统已经成为芯片整体处理能力的障碍,进一步,为了在智能任务中获得足够高的精度,神经网络需要大量的网络层,而且每一层的数据访问量均很大。例如,卷积层需要大量多通道的卷积核,再加上卷积层内滑窗式的卷积运算,使得相同位置的数据需要多次重复参与运算,密切参与运算的时间不连续,导致访存量激增。alexnet有用的参数量达到6000万个,约228mb,vgg16拥有约1.3亿个参数。同时深度神经网络发展快速,模型不断迭代更换。
4.深度神经网络计算所需算力巨大,所需要的数据更大,存储瓶颈成为了主要的制约因素,如何克服存储带宽限制,提高加速器的对外数据交互效率是一个急待解决的问题。


技术实现要素:

5.本发明的目的在于克服上述现有技术的缺点,提供一种高带宽存储的cnn加速器。
6.为达到上述目的,本发明采用以下技术方案予以实现:
7.一种高带宽存储的cnn加速器,包括数据输入模块、计算单元、数据输出模块和取指控制模块;取指控制模块,用于获取配置信息,并发送至数据输入模块、计算单元以及数据输出模块;数据输入模块,用于根据配置信息,获取待计算数据和权值数据,通过二级缓存将待计算数据和权值数据扩展为并行数据,并输出给计算单元;计算单元,用于解析配置信息得到计算类型,根据计算类型得到线性运算组合,将待计算数据和权值数据进行线性运算组合计算,得到计算结果;数据输出模块,用于根据配置信息,输出计算结果或将计算结果进行预设处理后输出。
8.本发明进一步的改进在于:
9.所述通过二级缓存将待计算数据和权值数据扩展为并行数据,并输出给计算单元的具体方法为:将待计算数据并行的分发至预设的第一预设数量的第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中;从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;将各输出通道的输出数据以及权值发送至计算单元。
10.所述第一预设数量的第一ram设置两组,所述将待计算数据并行的分发至预设的
第一预设数量的第一ram中时,采用ping

pong输入机制。
11.所述第二预设数量的第二ram设置两组,所述将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中时,采用ping

pong输入机制。
12.所述数据输入模块还用于当将各输出通道的输出数据以及权值发送至计算单元后,生成第一反馈信息并发送至取指控制模块,取指控制模块根据第一反馈信息将配置信息发送至计算单元;计算单元还用于在得到计算结果并发送至数据输出模块后,生成第二反馈信息并发送至取指控制模块,取指控制模块根据第二反馈信息将配置信息发送至数据输出模块。
13.所述计算类型为乘累加计算、累加计算或比较大小。
14.所述预设处理为存储、累加、累加并存储或非线性运算。
15.所述数据输出模块还用于将计算结果作为待计算数据发送至数据输入模块。
16.与现有技术相比,本发明具有以下有益效果:
17.本发明高带宽存储的cnn加速器,利用卷积计算参数量大,但其运算具有规律性且重复使用大量数据的特点,通过二级缓存将待计算数据和权值数据扩展为并行数据后,输出给计算单元,提高卷积神经网络运算效率,降低整个系统所需能耗。通过内部的数据冗余解决了访存位宽受限的情况,避免了现有神经网络加速器数据传输受限的情况,将外部受限的访存位宽转化为内部高度并行的位宽。
18.进一步的,通过二级缓存将待计算数据和权值数据扩展为并行数据,并输出给计算单元的具体方法为:将待计算数据并行的分发至预设的第一预设数量的第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中;从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;将各输出通道的输出数据以及权值发送至计算单元。通过将待计算数据并行的分发至预设的第一预设数量的第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中实现数据复用,提高卷积神经网络运算效率,降低整个系统所需能耗。从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;数据在内部高位宽的基础上还支持数据复用,进一步提高数据的输入数据并行性;可支持多种卷积尺寸,不同步长的卷积计算,在提高数据复用的同时也可适用于更多应用场景。
附图说明
19.图1为本发明的高带宽存储的cnn加速器结构框图;
20.图2为本发明的配置信息更新流程图;
21.图3为本发明的配置信息更新原理示意图;
22.图4为本发明的数据冗余原理示意图;
23.图5为本发明的输入数据并行输入的示意图;
24.图6为本发明的权值数据并行输入的示意图;
25.图7为本发明的高带宽存储的cnn加速系统结构框图;
26.图8为本发明的数据的展开复用原理示意图。
具体实施方式
27.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.下面结合附图对本发明做进一步详细描述:
30.参见图1,本发明一实施例中,提供一种高带宽存储的cnn加速器,利用cnn模型中卷积计算过程中滑窗造成的数据复用特性,采用多bank ram重复映射技术,将单一特征图像输入重复映射至多个独立的ram bank上,在充分利用数据的卷积复用的同时,对内实现面向高密度计算核所需的高带宽数据吞吐,从而提升cnn加速器的计算效能。为智能化的计算提供硬件支撑,也更好地推动了智能化的计算在相关应用领域的发展。
31.具体的,包括该高带宽存储的cnn加速器包括数据输入模块、计算单元、数据输出模块和取指控制模块。
32.其中,取指控制模块用于获取配置信息,并发送至数据输入模块、计算单元以及数据输出模块。具体的,取指控制模块用于向数据输入模块、计算单元和数据输出模块发送命令,并设计有外部接口,用于和外部系统进行通信。
33.数据输入模块用于根据配置信息,获取待计算数据和权值数据,通过二级缓存将待计算数据和权值数据扩展为并行数据,并输出给计算单元。其中,通过二级缓存将待计算数据和权值数据扩展为并行数据,并输出给计算单元的具体方法为:将待计算数据并行的分发至预设的第一预设数量的第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中;从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;将各输出通道的输出数据以及权值发送至计算单元。
34.具体的,包括输入处理模块和权值处理模块。输入处理模块用于读取并存储来自片外ddr存储器的输入数据或者计算中产生的中间数据,并根据不同的计算层类型,如cnn网络中的卷积、全连接计算类型,将数据按照这些计算层需要的顺序,通过数据冗余和复用的方式输入到计算单元中进行计算;权值处理模块用于读取并存储来自片外ddr存储器的权值数据,并根据不同的计算层类型(cnn的常见计算,如卷积及全连接等)采用不同的权值加载模式。
35.具体的,通过将待计算数据并行的分发到第一预设数量的第一ram中,将权值数据并行的分发至第二预设数量的第二ram中,进行数据冗余,这一方法有效的扩大了内部加速器的数据位宽。不同的是,待计算数据是将同样的数据同时输入各第一ram中;权值数据是
将不同的输出通道的权值输入到对应的第二ram中。在复用时,从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;将各输出通道的输出数据以及权值发送至计算单元,极大的提高了数据的并行度,使得加速器的计算效率获得提升。
36.计算单元用于解析配置信息得到计算类型,根据计算类型得到线性运算组合,将各输出通道的输出数据以及权值根据线性运算组合进行计算,得到计算结果并发送至数据输出模块。具体的,用于接收来自输入处理模块和权值处理模块的数据,进行mac,add,还有比较大小等操作,计算单元为现有常规计算模块构成,如加法器、乘法器等,处理后传输至数据输出模块。其中,计算类型为乘累加计算、累加计算或比较大小等线性运算组合。
37.数据输出模块用于根据配置信息,输出计算结果或将计算结果进行预设处理后输出。具体的,用于接收来自计算单元的数据,根据输出通道数目进行通道累加操作,并将输出数据存储到片外。优选的,还可以将计算结果作为待计算数据发送至数据输入模块。其中,所述预设处理为存储、累加、累加并存储或非线性运算等处理方式,根据具体计算到的部分,主要是由配置信息拆解。
38.本发明高带宽存储的cnn加速器,总体的工作流程可分为三个阶段,数据输入阶段(pre),计算阶段(exe)以及数据输出阶段(out)。
39.1)首先,取指控制模块根据获取指令数据,然后对指令数据进行读取与解析,并将解析得到的配置信息发送给数据输入模块;配置信息一般是cnn常见计算层的计算类型的配置参数。
40.2)然后,进入数据输入阶段,主要由数据输入模块根据配置信息进行待计算数据(图像/中间数据)以及对应权值数据的载入,取指控制模块会将配置信息继续向后一级传递至计算单元。
41.其中,cnn模型中的权值数据是很多的,根据每一个计算层有不同的的权值数据,而输入图像经过一层计算层会形成中间数据,中间数据不断计算输出中间数据作为下一层的输入,直到最后输出。
42.3)然后进入计算阶段,由计算单元根据数据输入模块的数据输入进行计算,然后将计算结果或者层中间结果数据传输给数据输出模块。
43.4)最后是数据输出阶段,由数据输出模块将计算模块传输的结果(中间数据)进行对应操作后输出。
44.优选的,所述数据输入模块还用于当将各输出通道的输出数据以及权值发送至计算单元后,生成第一反馈信息并发送至取指控制模块,取指控制模块根据第一反馈信息将配置信息发送至计算单元;计算单元还用于在得到计算结果并发送至数据输出模块后,生成第二反馈信息并发送至取指控制模块,取指控制模块根据第二反馈信息将配置信息发送至数据输出模块。
45.参见图2和3,具体过程如下:首先取指控制模块获取一组指令数据并进行解析后,先将配置信息更新至数据输入阶段,在数据输入阶段结束后,指令被传输至计算阶段,数据输入阶段的模块可以接收新的一组指令信息,依次类推。由于前一阶段的输出将作为下一阶段的输入,因此每一个阶段开始进行配置信息更新前必须保证它上一个阶段执行完毕且本阶段上次任务执行完毕。
46.优选的,所述第一预设数量的第一ram和第二预设数量的第二ram均设置两组,将
待计算数据并行的分发至预设的第一预设数量的第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中时,采用ping

pong输入机制。通过采用ping

pong的ram组,可以有效提高与外部存储的数据交互策略。
47.本发明的核心技术包括以下两点。在进行核心技术的详细叙述前,定义一些变量参数方便进行后续叙述,其中,外部存储带宽大小记为w,内部数据冗余的ram组,输入数据一组为m个ram,权值数据一组为n个ram,单个数据所占位宽为b,数据是按输入通道的顺序在外部存储接口上并行排列进入加速器,所以可以并行进入的通道数记为p=w/b,下文具体叙述本发明的核心技术。
48.1)克服存储带宽限制,通过数据冗余进行高并行的数据内部传输,提高数据的并行度。
49.通过将输入数据(待计算数据)或者权值数据并行的分发到多个bank ram中,进行数据冗余,这一方法有效的扩大了内部加速器的数据位宽。不同的是,输入数据是将同样的数据同时输入m个ram中;权值数据是将不同的输出通道的权值输入到对应的ram中,n个ram代表着n个输出通道并行。
50.参见图4,这是一个数据冗余方法的示意图,将待计算数据同步复制到一组大小为m的第一ram组上,相当于将原有的外部带宽扩大了m倍,同时采用ping

pong的第一ram组,可以有效提高与外部存储的数据交互策略。
51.当向计算单元进行数据输出时,内部数据传输带宽扩展为m*w位,在行方面按照输入数据通道并行,在列方面按照中间(输出)数据的元素顺序并行,极大的提高了数据的并行度,使得加速器的计算效率获得提升。
52.2)通过数据冗余进行数据展开或数据复用,提高计算效率。
53.a)输入数据的复用。
54.参见图5,为将输入数据进行复用进而并行输出的结构。如图5所示,在列方向上,为待计算数据的p个输入通道,对应内部数据位宽w(p*b)的并行加载。在行方向上,对应m个不同的第一ram,每个第一ram内装载同样的待计算数据(复制m份),同一周期内,每个第一ram对应不同卷积计算窗口的同样位置的数据并行进行寻址,实现数据的并行加载,以此类推,直到所有输出数据遍历完毕。
55.b)权值数据的展开复用。
56.权值数据的展开是通过将权值数据重复输入,对应输入数据的数据复用方式进行展开,通过权值数据的展开,可以有效地适应不同尺度、不同步长的卷积计算。具体的加载方式如图6所示,在行方向上,为单个卷积核内上的输入的p个通道,对应内部数据位宽w(p*b)并行加载;在列方向上,对应n个不同的卷积核数据并行,在权值缓存的设计中,设计n个不同的第二ram缓存n个不同输出通道的卷积核,在数据输入载入第二ram时,权值数据根据寻址将不同输出通道对应的的n个卷积核数据顺序缓存至n个不同的第二ram,设计两组第二ram进行乒乓缓存,以隐藏权值加载的时间;数据从第二ram加载到计算接口的reg时,n个第二ram同时并行读出数据,并行加载至weight reg中,其中n个第二ram的地址寻址一致,均按照卷积核的行列顺寻周期读出。
57.综上所述,本发明高带宽存储的cnn加速器,利用卷积计算参数量大,但其运算具有规律性且重复使用大量数据的特点,将待计算数据并行的分发至预设的第一预设数量的
第一ram中,将权值数据中的各输出通道的权值分发至第二预设数量的第二ram中实现数据复用,提高卷积神经网络运算效率,降低整个系统所需能耗。通过内部的数据冗余解决了访存位宽受限的情况,避免了现有神经网络加速器数据传输受限的情况,将外部受限的访存位宽转化为内部高度并行的位宽。同时,从各第一ram中并行读取各输出通道的输出数据,从各第二ram中获取各输出通道的权值;数据在内部高位宽的基础上还支持数据复用,进一步提高数据的输入数据并行性;可支持多种卷积尺寸,不同步长的卷积计算,在提高数据复用的同时也可适用于更多应用场景。
58.参见图7,本发明再一实施例中,提供一种高带宽存储的cnn加速系统,包括上述的高带宽存储的cnn加速器、arm处理器以及ddr存储器。
59.arm处理器与ddr存储器连接,arm处理器获取待计算数据、权值数据以及指令数据,并发送至ddr存储器存储;取指控制模块与arm处理器以及ddr存储器均连接,取指控制模块用于接收arm处理器发送的指令长度以及指令起始地址,根据指令长度以及指令起始地址,从ddr存储器中读取指令数据并解析,得到配置信息;数据输入模块根据配置信息从ddr存储器中读取待计算数据和权值数据;ddr存储器接收数据输出模块输出的计算结果并储存。
60.优选的,所述arm处理器与ddr存储器通过axi接口连接,取指控制模块通过axi_lite接口与arm处理器连接,取指控制模块、数据输入模块以及数据输出模块均通过axi接口与ddr存储器连接。
61.为了使本发明的技术手段、创作特征、工作流程、使用方法达成目的与功效易于明白了解,下面结合具体实施例,进一步阐述本发明。
62.这里以一个卷积层为例:假设进行一个卷积层的计算,输入图像大小为20x20,步长strip为1,权值矩阵大小为3x3,输入通道大小为16,输出通道大小为8。假设神经网络加速器输入数据列方向上对应的通道数为p=8,在行方向的展开m=8。权值的输出通道对应的参数为n=8。在上述基础上,通过本发明高带宽存储的cnn加速器,进行卷积的计算流程如下所示:
63.1)配置信息解析更新:arm处理器首先通过axi接口将输入数据,权值数据,指令数据放置到ddr存储器中,然后通过axi_lite接口将指令相关控制信息发送给取指控制模块,取指控制模块根据控制信息通过axi接口从dd存储器中读取指令数据,然后对指令进行读取与解析,并将解析得到的配置信息发送给数据输入模块,配置信息主要为卷积层计算的参数相关信息。
64.2)数据输入阶段:输入处理模块和权值处理模块均接收到配置信息,通过对外访存ddr存储器将有效数据读入对应fifo并进行相应处理。
65.a)输入处理模块:读取输入数据至输入数据fifo中,当数据读取完毕,通过数据冗余的方法,将数据同时输入8个第一ram中,每个第一ram中存入一样的20x20的8输入通道并行的输入数据,假设记ram地址为0

399。然后是进行数据的展开复用,每一个第一ram输出的数,据如图8所示,第一次并行读数,第一个第一ram取数地址为0,1,2,20,21,22;第二个第一ram取数地址1,2,3,21,22,23,41,42,43;第三个第一ram为2,3,4,22,23,24,42,43,44,
……
,第八个第一ram为7,8,9,27,28,29,47,48,49。第二次并行读数时第一个第一ram取数地址为8,9,10,28,29,30,28,49,50,以此类推。
66.b)权值处理模块:权值处理模块按照权值数据对应的输出通道参数n=8,读取相应大小的权值数据,这里的数据量大小为3x3x8的8输入通道数据。
67.数据读取完毕,通过选择写入的方式,将不同输出通道的权值数据分别写入第二ram,每个第二ram写入数据数为3x3,第二ram地址可记录为0

8。然后进行卷积核的展开复用,每一个第二ram输出的地址在0

8中循环,分别对应不同的输出通道数据。
68.3)计算阶段:计算单元将进行计算的64个输入数据和参与计算的64个weight数据进行载入,并完成乘累加计算。每个时钟周期内,计算单元完成一次m*n(这里具体参数为8*8)的矩阵计算。
69.4)数据输出阶段:每个时钟周期,将数据缓存至输出缓存psum ram中,然后重复1)

4)过程,将对应输入通道的输入数据和权值数据载入,计算,并在输出时根据需要对数据进行累加,以实施例的假设条件,需要累加2次得到最终结果,根据需要经过对应的激活函数后,最后输出结果到ddr存储器中。
70.在此基础上,若对多层神经网络计算层进行计算时,第一ram、第二ram以及缓存ram,均采用ping

pong的数据交互方式,提高与外部的ddr交互效率,完成多计算层计算。
71.以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献