掌桥专利:专业的专利平台
掌桥专利
首页

一种优化带宽降低共享缓存开销的矩阵乘加计算加速系统

文献发布时间:2023-06-19 19:30:30


一种优化带宽降低共享缓存开销的矩阵乘加计算加速系统

技术领域

本发明属于加速矩阵乘加计算的集成电路设计方案,具体涉及一种优化带宽降低共享缓存开销的矩阵乘加计算加速系统。

背景技术

目前,主流的矩阵乘加计算加速器采用脉动阵列的结构。对于一个矩阵乘加计算Y=AB+C,上述结构固定权重数据B在计算单元PE(Processing Engine)内然后脉动输入被乘矩阵A作为输入数据给PE,同时将输出数据脉动输出并累加到C上。计算单元PE组成一个二维阵列,输入矩阵数据从左侧随时钟脉动输入,则输出计算结果从所述阵列下方随时钟脉动输出。但是,上述的加速器需要在每个时钟周期都输入被乘矩阵A的一个数据向量作为脉动输入,同时输出AB计算结果的一个数据向量作为部分和进行累加。上述数据向量需要访问全局缓存来获取就造成片上存储读写访问拥塞,同时消耗额外能量用于片上存储器访问,且对于矩阵运算的数据复用利用不足。

如图1所示,现有的矩阵乘加计算加速器从SA(Systolic Array)上方预加载系数矩阵B,其中的SA是由r行c列PE构成的二维计算阵列,并且预加载的B矩阵在之后的脉动输入A矩阵的整个过程中保持在PE阵列内部不动。为了掩盖加载B矩阵带来的延迟,PE内部使用了两个寄存器来保存B矩阵,当其中一个寄存器工作在预加载模式时其接收来自SA上方脉动输入的B矩阵对应位置的系数值,另一个寄存器内则保存着当前预加载操作的上一次预加载对应的B矩阵内对应位置的系数值并且将这个值输出给PE内部的乘加单元MAC。从SA左侧脉动输入被乘矩阵A并且每个时钟脉冲需要提供r个输入数据。对于SA的输出侧则通过一个累加器完成对C矩阵的加法并输出Y矩阵,其中C矩阵和Y矩阵存储在同一个存储器的物理地址空间内,且每个时钟脉冲SA输出c个计算得到的部分和,与c个从C缓冲内读取的值相加后保存到Y缓冲,上述保存过程则产生c次写操作。上述的现有矩阵乘加计算加速器结构需要全局缓存来保存Y矩阵、C矩阵和A矩阵,并且这个全局缓存需要每个时钟脉冲提供r+c次读操作和c次写操作对应的带宽,这部分带宽是现有的矩阵乘加计算加速器的主体部分带宽,造成了带宽瓶颈,也使得SA的规模在有限的全局缓存带宽下难以提高。

现有的针对这个问题的解决方案包括了:对全局缓存使用多级缓存的结构来提高初级缓存能够提供的带宽;给矩阵乘加计算加速器的SA单独设立一个私有缓存,这通常包含了一个保存Y矩阵、A矩阵和C矩阵的可同时读写的多通道缓存,以及一个矩阵乘加计算加速器内部缓存和外部数据交互的数据搬移模块。上述方案都没能从SA需要的高带宽的根源解决带宽问题,对于上述的前一个方案而言增加的缓存系统复杂度是一个高额度的开销,而对于上述的后一个方案而言建立的私有缓存通常容量也需要满足存下整个Y矩阵和A矩阵的大小,这导致现有的矩阵乘加计算加速器的私有缓存容量过大的问题,这也是一个高额度的开销,对于私有缓存大小受限的场合,现有的矩阵乘加计算加速器单次计算能够计算的矩阵大小也会被限制,这限制了数据复用性的提升。

发明内容

为了克服现有的矩阵乘加计算加速器的数据传输带宽瓶颈同时优化数据复用性,本发明提供一种优化带宽降低共享缓存开销的矩阵乘加计算加速系统,该方案不仅能够减少脉动阵列对片上全局缓存访问带宽的需求,同时提高了数据复用性减少片上存储器中消耗的能量。

本发明解决其技术问题所采用的技术方案是:

本发明首先提供了一种优化带宽降低共享缓存开销的矩阵乘加计算加速系统,其包括矩阵乘加计算加速器、全局缓存、低延迟访问链路、数据总线、片外存储和处理器核CPU,所述片外存储、处理器核CPU、全局缓存、矩阵乘加计算加速器分别与数据总线相连,所述的全局缓存中分配一部分存储空间作为第一运行缓存用于矩阵乘加过程中中间数据的存储,所述矩阵乘加计算加速器通过低延迟访问链路连接全局缓存并访问第一运行缓存;所述低延迟访问链路具有高于数据总线访问全局缓存的优先级,

所述矩阵乘加计算加速器包含脉动阵列SA、矩阵A加载模块、矩阵B加载模块、矩阵C加载模块、矩阵Y保存模块以及PB缓冲,

其中,所述脉动阵列SA由r行c列的计算单元PE以二维阵列的形式构成,在脉动阵列SA中的每个PE内均包含一个用于缓冲B矩阵元素的第一缓冲器;PB缓冲设置在脉动阵列SA的输出侧,其包含有一个累加器,PB缓冲用于缓存相邻时钟脉冲内SA的输出相互累加产生的部分和;所述矩阵A加载模块从数据总线获得输入矩阵A的值并脉动输入到SA,矩阵B加载模块通过数据总线将预先存储在片外存储或者全局缓存内的系数矩阵B加载到SA内;矩阵C加载模块通过数据总线将片外存储或者全局缓存内的矩阵C加载到第一运行缓存内;所述矩阵Y保存模块用于将第一运行缓存内的计算结果Y矩阵保存到片外存储或者全局缓存内;所述低延迟访问链路用于脉动阵列SA输出侧累加器对第一运行缓存的读写访问、矩阵C加载模块对第一运行缓存的写访问、矩阵Y保存模块对第一运行缓存的读访问。

作为本发明的优选方案,脉动阵列SA中,每列PE对应脉动阵列SA每个时钟脉冲输出的c个输出结果中的一个值,上述的输出值通过脉动的形式从一列PE的顶端开始传播直至这列PE的底部;每行PE共享输入A矩阵的列向量中的一个值,共享的数据也以脉动的形式从这行PE的最左侧开始传播直至传播到这行PE的最右侧;PE阵列中每个PE都保存了m*n个B矩阵中的m*n个矩阵元素值,因此PE内包含有一个容量至少为m*n个B矩阵元素的第一缓冲器用于保存这一部分数据。

作为本发明的优选方案,对于需要掩盖预加载B矩阵延迟的场合,可约束m*n的值为第一缓冲器容量的一半以下,这样在这一轮计算对应的B矩阵已经存在PE内并用于计算的同时,下一轮计算需要的B矩阵可以预加载到剩余的PE内第一缓冲器的空间内从而实现将预加载B矩阵的延迟掩盖在SA计算消耗的时钟脉冲内的目的。

作为本发明的优选方案,所述第一缓冲器是可同时读写的双端口存储器。

作为本发明的优选方案,所述的矩阵A加载模块将m个输入通道对应的m个A矩阵各自以列方向划分为k个列向量,并依次序先遍历m个A矩阵中相同列的列向量,再按照列方向遍历每个A矩阵中的k个列向量,从而完成m组k个列向量的输出遍历,上述A加载模块遍历m个A矩阵后输出的列向量则被以脉动输入的形式提供给SA的输入侧,其中上述m个A矩阵的每一个列向量都被n个输出通道的B矩阵共享,使得从A矩阵读取的每一列数据都能经过n个时钟脉冲后才失效。

作为本发明的优选方案,当SA内的第一缓冲器构成的阵列保存了m个输入通道n个输出通道的总计m*n个B矩阵时,加载的A矩阵向量在同一个时间段也就是n个时钟脉冲内保持不变,SA输出的部分和在m个时间段内做累加的时候只有在第0个时间段需要从全局缓存读取n个C矩阵的n个行向量,且只有在第m-1个时间段需要向全局缓存写入n个Y矩阵的n个行向量,余下时间段内的SA输出侧累加器的输入输出数据全都从PB缓冲读取或者向PB缓冲写入。

作为本发明的优选方案,当SA内的第一缓冲器构成的阵列保存了m个输入通道n个输出通道的总计m*n个B矩阵时,矩阵A加载模块平均每n个时钟脉冲才需要从全局缓存加载一个A矩阵向量输入给SA,SA输出侧累加器的读取侧平均每m个时钟脉冲才需要通过低延迟访问链路从全局缓存中加载一个C矩阵向量提供给PB缓冲的累加器,PB缓冲累加器的写入侧平均每m个时钟脉冲才需要通过低延迟访问链路向全局缓存中写入一个Y矩阵向量。

作为本发明的优选方案,当SA内的第一缓冲器构成的阵列保存了m个输入通道n个输出通道的总计m*n个B矩阵时,其在m*n个相邻时钟脉冲内遍历B矩阵时,先在相邻n个时钟脉冲内遍历同一行的n个B矩阵,完成后继续下一行n个B矩阵的遍历,上述以n个相邻时钟脉冲为一组的时间段一共有m个,其中m个时间段内第i个时钟脉冲中SA内第一缓冲器阵列输出的B矩阵构成的集合对应第i列的m个B矩阵构成的集合,其中i=0,1,…,n-1。

与现有技术相比,本发明的有益效果是,可以在一个处理器核CPU和矩阵乘加计算加速器共享缓存的系统内优化矩阵乘加计算加速器对共享缓存的访问带宽,同时提高上述加速器的数据复用性,以达到减少加速器核在共享缓存访问上消耗的能量的目的。

附图说明

图1是现有矩阵乘加计算加速器的结构图。

图2是本发明实例中矩阵乘加计算加速器的结构图。

图3是本发明实例中脉动阵列SA的结构图。

图4是本发明实例中包含矩阵乘加计算加速器的系统。

图5是本发明实例中B矩阵预加载到SA内部PE的示意图。

图6是本发明实例中矩阵乘加计算加速器数据流示意图。

图7是本发明实例中数据流对应矩阵分割的示意图。

具体实施方式

下面结合具体实施方式对本发明做进一步阐述和说明。所述实施例仅是本公开内容的示范且不圈定限制范围。本发明中各个实施方式的技术特征在没有相互冲突的前提下,均可进行相应组合。

如图2和4所示,本实施例提供的优化带宽降低共享缓存开销的矩阵乘加计算加速系统主要包括矩阵乘加计算加速器、全局缓存、低延迟访问链路、数据总线、片外存储和处理器核CPU,所述片外存储、处理器核CPU、全局缓存、矩阵乘加计算加速器分别与数据总线相连,所述的全局缓存中分配一部分存储空间作为第一运行缓存用于矩阵乘加过程中中间数据的存储,所述矩阵乘加计算加速器通过低延迟访问链路连接全局缓存并访问第一运行缓存;所述低延迟访问链路具有高于数据总线访问全局缓存的优先级,

本实施例所述矩阵乘加计算加速器包含脉动阵列SA、矩阵A加载模块、矩阵B加载模块、矩阵C加载模块、矩阵Y保存模块以及PB缓冲,其中,所述脉动阵列SA由r行c列的计算单元PE以二维阵列的形式构成,在脉动阵列SA中的每个PE内均包含一个用于缓冲B矩阵元素的第一缓冲器;PB缓冲设置在脉动阵列SA的输出侧,其包含有一个累加器,PB缓冲用于缓存相邻时钟脉冲内SA的输出相互累加产生的部分和;所述矩阵A加载模块从数据总线获得输入矩阵A的值并脉动输入到SA,矩阵B加载模块通过数据总线将预先存储在片外存储或者全局缓存内的系数矩阵B加载到SA内;矩阵C加载模块通过数据总线将片外存储或者全局缓存内的矩阵C加载到第一运行缓存内;所述矩阵Y保存模块用于将第一运行缓存内的计算结果Y矩阵保存到片外存储或者全局缓存内;所述低延迟访问链路用于脉动阵列SA输出侧累加器对第一运行缓存的读写访问、矩阵C加载模块对第一运行缓存的写访问、矩阵Y保存模块对第一运行缓存的读访问。

在图2所示本发明实例中矩阵乘加计算加速器的结构图中,类似图1中的B矩阵预加载的方式,对应到m个输入通道和n个输出通道的m*n个B矩阵在同一个批次被加载到SA的PE阵列内部。m个输入通道对应的m个A矩阵被交错的读取并以脉动输入的形式提供给SA的输入侧。其中上述m个A矩阵的每一列输入向量都被n个输出通道的B矩阵共享,使得从A矩阵读取的每一列数据都能经过n个时钟脉冲后才失效,这使得A矩阵输入侧的带宽从每个时钟脉冲r个数据降低到每个时钟脉冲

在图3所示本发明实例中SA的结构图中,r行c列的PE以二维阵列的形式构成了SA,其中每列PE对应SA每个时钟脉冲输出的c个输出结果中的一个值,上述的输出值通过脉动的形式从一列PE的顶端开始传播直至这列PE的底部。每行PE共享输入A矩阵的列向量中的一个值,共享的数据也以脉动的形式从这行PE的最左侧开始传播直至传播到这行PE的最右侧。PE阵列中每个PE都保存了图2中m*n个B矩阵中的m*n个矩阵元素值,因此PE内需要一个容量至少为m*n个B矩阵元素的寄存器文件用于保存这一部分数据。对于需要掩盖预加载B矩阵延迟的场合,可以约束m*n的值为寄存器文件容量的一半以下,这样在这一轮计算对应的B矩阵已经存在PE内并用于计算的同时,下一轮计算需要的B矩阵可以预加载到剩余的PE内寄存器文件的空间内从而实现将预加载B矩阵的延迟掩盖在SA计算消耗的时钟脉冲内的目的。由于上述一边预加载B矩阵一边提供预加载好的B矩阵给PE内MAC单元需求的存在,PE内寄存器文件需要是可同时读写的双端口存储器。

在图4所示本发明实例中包含矩阵乘加计算加速器的系统中,得益于本发明实例针对SA的低带宽设计,通过提供SA内每个PE内部的寄存器文件开销和PB缓冲的开销,本发明实例能够将A矩阵、C矩阵和Y矩阵都保存在全局缓存内,其中对于C矩阵和Y矩阵的访问都通过一个低延迟访问链路绕过数据总线直接访问全局缓存,上述访问链路具有最高的优先级从而实现低延迟,上述链路的带宽选择应当根据系统全局缓存带宽来选取,对于低带宽场景可以适当约束m的值使其较大从而减少SA内流水线产生的气泡。图4中A加载从数据总线获取A矩阵数据并提供给SA。B加载也从数据总线获取B矩阵并预加载到SA内PE的寄存器文件内。C加载和Y保存模块负责全局缓存内的C矩阵和Y矩阵的数据搬运,来满足初始化全局缓存内的C矩阵以及搬移Y矩阵的需求。上述系统中全局缓存不但用作本发明实例中矩阵乘加计算加速器的数据缓存,也同时作为一个处理器核CPU的主缓存,可以保存其指令和数据,对于需要CPU和矩阵乘加计算加速器协同工作的复杂算法CPU可以直接访问矩阵乘加计算加速器的Y矩阵做进一步处理,且得益于本发明实例针对SA的低带宽设计,CPU的运行时对全局缓存的指令和数据请求带宽能够被充分满足。通常而言上述的处理器核CPU可以是一个对称多核处理子系统,也可以是一个带有单指令多数据指令集扩展的高位宽向量处理器,也可以是一个异构多核子系统。上述包含矩阵乘加计算加速器的系统中的片外存储通常用于保存常量数据例如矩阵乘法中的系数矩阵,上述系数矩阵通常是B矩阵。对于PE内寄存器文件和PB的开销,假定PE内寄存器文件大小为f个矩阵元素,则SA内包含的全部寄存器文件容量总和为f*r*c,PB内需要保存n个输出通道的值,其大小不应小于n*c个矩阵元素,而由于m*n≤f且m为正整数,通常设定PB大小为f*c个矩阵元素,由于其小容量特性,通常也用寄存器文件实现PB。

综上本发明实例中的额外存储开销为fc(r+1)个矩阵元素。一个常用的f取值为16,则整体的带宽优化幅度可以表示为

在图5所示的预加载B矩阵示意图中描述了PE的构造,其中每个PE内包含了:保存B矩阵一部分内容的B缓冲及其控制逻辑;一个乘加单元MAC;脉动输入的A矩阵的一个元素;脉动输入的来自同一列PE中上方PE的输入数据;脉动输出到同一列PE中下方PE的输出数据。其中B缓冲的写入依赖于从SA上方脉动输入的B加载模块的输入。PE内部的MAC的B矩阵输入可以在每个时钟脉冲内在B缓冲包含的数据中切换,上述PE构成的二维阵列SA发生B缓冲输出切换时其结果相当于输入的A矩阵中的向量在和mn个B矩阵中的某一个做向量和矩阵的乘法运算并输出一个部分和,如图6所示,在每个时间段的n个时钟脉冲内A加载模块提供的A矩阵向量保持不变,而SA提供的B矩阵在n个输出通道间遍历,从而生成n个输出通道的部分和暂存在PB内部或者直接输出到全局缓存中的Y矩阵的空间。对PE内B缓冲的预加载如图5所示是与PE在SA中的物理位置相对应的,图3中的最左上角PE对应了图5中的PE,如图5所示,其B缓冲内的mn个矩阵元素对应mn个B矩阵中最左上角的值构成的集合。图7则解释了对矩阵的组合和向量切割,m个A矩阵对应的是m组输入通道的I输入矩阵,因此这m个矩阵在图7中以一列的方式排布,且其中的每一个A矩阵都按照列切分成了k个向量,处于相同列的m个向量构成了图6中遍历的A向量集合。对于图7中的W矩阵,mn个矩阵排列成了m行n列的形式,相当于把mn个B矩阵构成的大矩阵W分成m行n列个B矩阵,其中每个矩阵是r行c列的,对于同一行的n个子矩阵构成的集合,其在图6中同一个时间段内遍历,而对于m行上述集合的遍历则是在图6中m个时间段内完成的。对于O矩阵而言其具有n个Y矩阵,其中每个子矩阵的同一行构成的集合在图6中的同一个时间段内完成读写访问,而图6这个遍历过程总计进行k次,完成了k行上述集合的生成并最终生成整个O矩阵。

图7中描述的m个A矩阵和m*n个B矩阵相乘输出n个Y矩阵的运算过程可以表达如下:

综上,本发明在系统架构层面,主控处理器核CPU和矩阵乘加计算加速器共享了全局缓存,矩阵乘加计算加速器通过一个低延迟的链路访问全局缓存,上述链路用于连接PB输入和输出,而矩阵乘加计算加速器也可以通过数据总线访问全部存储空间,上述链接为矩阵乘加计算加速器内部各加载和保存模块提供带宽。当需要B矩阵预加载到SA内的PE时,B加载模块通过数据总线将预先存储在片外存储或者全局缓存内的系数矩阵加载到SA内。其中上述预加载过程加载的权重矩阵B的系数包含了多个通道的值,从而使得SA可以在相邻时钟脉冲间复用A加载模块提供的输入,提高矩阵运算的数据复用性并降低A加载模块使用的数据总线带宽。而上述的A加载模块从数据总线获得输入矩阵A的值,并且获取的矩阵本身也是多通道的,使得SA的输出数据在相邻时钟脉冲内存在互相求和的可能,这部分求和操作在一个小型的缓冲PB内进行,而PB也使得SA的输入输出对全局缓存的访问带宽进一步减少。上述的带宽减少类似前述的A加载模块消耗的带宽减少的过程,是依赖于对SA输出数据的复用性提高来完成的,这部分复用性提高与SA中PE内预加载的多通道B矩阵相关,同时其也利用了PB结构对复用部分的数据进行读写从而避免从开销更高的全局缓存读写这部分数据。综上所述,通过充分挖掘SA计算矩阵运算时的数据复用性,本设计从输入输出两个层面降低了访问全局缓存的带宽,提高了矩阵乘加计算整体的数据复用性,降低了加速器核访问全局缓存的能量开销。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

相关技术
  • FPGA硬件加速器中非乘加类计算操作的优化方法和优化系统
  • 一种降低Wi-Fi无源感知系统带宽开销的方法
技术分类

06120115938788