CN110688616A - 一种基于乒乓ram的条带阵列的卷积模块及其运算方法 - Google Patents
一种基于乒乓ram的条带阵列的卷积模块及其运算方法 Download PDFInfo
- Publication number
- CN110688616A CN110688616A CN201910791842.6A CN201910791842A CN110688616A CN 110688616 A CN110688616 A CN 110688616A CN 201910791842 A CN201910791842 A CN 201910791842A CN 110688616 A CN110688616 A CN 110688616A
- Authority
- CN
- China
- Prior art keywords
- sub
- ram
- weight
- feature
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000009825 accumulation Methods 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims description 31
- 239000011159 matrix material Substances 0.000 claims description 20
- 101150000909 ramB gene Proteins 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 15
- 238000013527 convolutional neural network Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000010349 pulsation Effects 0.000 description 2
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 1
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 1
- 102100031584 Cell division cycle-associated 7-like protein Human genes 0.000 description 1
- 101000777638 Homo sapiens Cell division cycle-associated 7-like protein Proteins 0.000 description 1
- 101150046378 RAM1 gene Proteins 0.000 description 1
- -1 RAM3 Proteins 0.000 description 1
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于乒乓RAM的条带阵列卷积模块及其运算方法,其中所述卷积模块包括直接内存访问模块DMA、DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;所述由DMA控制器用于控制DMA从内存中读取数据,所述数据包括特征feature、权重weight;数据经过数据分流模块将特征feature和权重weight分离,然后存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征feature和权重weight给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;所述寄存器模块用于接收来自中央处理器配置的寄存器控制所述的卷积模块运算。本发明能提高乘法器的利用率,同时能兼容不同大小的卷积核。
Description
技术领域
本发明涉及人工智能技术领域,更具体的,涉及一种基于乒乓RAM的条带 阵列的卷积模块及其运算方法。
背景技术
卷积神经网络(CNN)是深度学习的重要算法,在计算机视觉特别是图像识 领域有着非常广泛的应用。目前几乎所有的识别和检测问题都把卷积神经网络作 为首选方法,世界上各个IT巨头也都争相展开了相关研究。
从计算机的角度来看,图像实际上是一个二维矩阵,卷积神经网络所做的工 作就是采用卷积、池化等操作从二维数组中提取特征,并对图像进行识别。理论 上来说,只要是能转换成二维矩阵的数据,都可以利用卷积神经网络来识别和检 测。比如声音文件,可以分割成很短的分段,每段音阶的高低可以转换成数字, 这样整段的声音文件就可以转换为二维矩阵,类似的还有自然语言中的文本数 据,医药实验中的化学数据等等,都可以利用卷积神经网络来实现识别和检测。
卷积是卷积神经网络最核心的概念,也是其名称的由来。卷积用来提取图像 的局部特征,它是一个数学计算方法,如图1、图2所示,图中不带有×1、×0 的网格组成的矩阵是输入图像叫做输入特征feature,带有×1、×0的网格组成的 矩阵是卷积核叫做权重weight,图1、图2中的右子图表示的矩阵是计算得到的 卷积特征叫做输出特征feature。卷积操作实际上用卷积核在图像矩阵上滑动,对 卷积核矩阵与图像矩阵中对应位置做以下计算:对应元素相乘后求和。
输入特征的矩阵以一定的步长在权重的矩阵上滑动,每次卷积计算的结果填 入输出特征的矩阵,最后得到特征矩阵。
传统的卷积方式有脉动阵列,脉动阵列固定一个卷积核大小的乘法阵列,然 后兼容比它更小的卷积核运算,该方法结构简单,但是缺陷也很明显,结构太固 化,改变卷积核大小时,乘法器利用率很低,无法兼容更多的卷积核大小。
发明内容
本发明为了解决传统的卷积模块乘法器利用率低下,无法兼容更多的卷积核 大小的问题,提供了一种基于乒乓RAM的条带阵列卷积模块及其运算方法,其 能提高乘法器的利用率,同时能兼容不同大小的卷积核。
为实现上述本发明目的,采用的技术方案如下:一种基于乒乓RAM的条带 阵列卷积模块,包括直接内存访问模块DMA、DMA控制器、数据分流模块、 乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;
所述DMA控制器用于控制DMA从存储器中读取数据,所述数据包括特征 feature、权重weight;数据经过数据分流模块将特征feature和权重weight分离, 然后分别存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征feature和 权重weight给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;
所述寄存器模块用于接收来自中央处理器配置的寄存器控制所述的卷积模 块运算。
优选地,所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元 包括Tk*Tk/2个乘法器;所述条带阵列模块一共设有Mk*Tk*Tk/2个乘法器。
进一步地,所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包 括两个连续输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括 Mk个子RAM;所述权重RAM包括ramA′、ramB′。
基于以上所述的基于乒乓RAM的条带阵列卷积模块,本发明还提供一种基 于乒乓RAM的条带阵列卷积模块的运算方法,所述运算方法包括步骤如下:
S1:设置权重weight单个卷积核寸尺为size×size;其中,size=1、2、3….n, 条带阵列的PE运算单元的数量为Mk;
S2:特征Feature和权重weight按照N通道排列方式预先存储在存储器中, 其中存储器存储的特征为三维矩阵,其宽度为Wi,高度为Hi,总通道数量为C, 即特征的所有N通道累加和等于C,且设置每个N通道的特征Feature在存储器 里面按连续地址存储;
S3:DMA从高度H方向、通道C方向对特征Feature进行分割,得到对应 Cm×Hm份子特征,其中m为正整数;
S4:所述DMA控制器计算每一份子特征的地址、权重的地址,并通过DMA 从内存读取子特征、权重,通过数据分流模块将子特征、权重进行分离;
S5:将子特征分成Mk份,缓存在连续输出RAM中的Mk个子RAM中, 其中,每个子RAM中存有1/Mk份子特征的数据;同时权重缓存在权重RAM 中;
S6:RAM读取模块根据地址计算公式计算连续输出RAM中Mk个子RAM 中的数据,顺序读取并组成一份子特征;同时RAM读取模块读取在权重RAM 中的权重;
S7:所述PE运算单元获取RAM读取模块输入的子特征、权重;PE运算单 元中的乘法器对输入的子特征、权重进行乘法运算,得到相应的运算结果;
S8:块累加模块对高度H方向子特征的运算结果进行累加后输出。
优选地,所述N为2的次幂。
进一步地,步骤S5,所述子特征缓存在特征RAM的具体步骤如下:
A1:所述DMA读取上个地址的子特征分成Mk份,分别存入ramA中Mk 个子RAM中,其中每个子RAM存有1/Mk份子特征的数据;
A2:在RAM读取模块根据地址计算公式,顺序读取出ramA中Mk个子RAM 中数据,组成子特征的同时,DMA将下个地址的子特征分成Mk份,分别存入 ramB中Mk个子RAM,其中每个子RAM存有1/Mk份子特征的数据;
A3:当RAM读取模块读取完ramA中的子特征后,接着RAM读取模块根 据地址计算公式,顺序读取ramB中Mk个子RAM中数据,组成子特征;
A4:重复以上步骤,直到读取完子特征。
进一步地,步骤S5,所述权重缓存在权重RAM中的具体步骤如下:
B1:所述DMA读取上个地址的权重存入ramA′;
B2:在PE运算单元通过RAM读取模块读取ramA′中的权重的同时,DMA 将下个地址的权重存入ramB′;
B3:当PE运算单元读取完ramA′中的权重后,接着读取ramB′中的权重;
B4:重复以上步骤,直到读取完权重。
进一步地,步骤S6,所述地址计算公式如下:
将address=(wr_addr/Mk)
Wri-1_en=((wr_addr%Mk)=i-1)
写入第i-1个子RAM中;
其中i=1、2、…、Mk;wr_addr表示写进子RAM的地址,Wri-1_en表示第 i-1个子RAM的写使能信号;
条带列阵读取数据,即连续输出RAM连续输出Mk个连续数据地址和与地 址对应的数据具体如下:
address=(rd_addr/Mk)+((rd_addr/Mk)>0)
rdi-1_en=i-1
其中,rd_addr表示读子RAM的地址,rdi-1_en表示第i-1个子RAM的读使 能信号。
在进一步地,步骤S8,所述乘法器运算法则如下:对权重C左移16位再加 上下一个地址的权重B,然后再跟子特征A相乘,得到的结果低16bit是特子征 A*权重B的结果,高位则是子特征A*权重C的结果,最后将这两个乘法结果分 离出来各自累加;所述的权重C、权重B表示RAM读取模块输入到乘法器的权 重数据;所述子特征A表示根据地址计算公式输入到乘法器的子特征数据。
在进一步地,所述RAM读取模块每个时钟周期读取Mk个子特征、Tk个权 重,分别输入到Mk个PE运算单元进行乘法运算,对应每个PE运算单元一个 时钟周期获取一个子特征、Tk个权重,实现每个PE运算单元一个时钟周期运算 一个子特征、Tk个权重,从而得到Tk个结果;所述Mk个PE运算单元并行运 算,实现一个计算周期输出Mk*Tk个运算结果;所述一个计算周期为size*size 个时钟周期,因此计算一个输入子特征feature的时间为:
Time=W*H*C*(size*size)/(Mk*Tk),单位:时钟周期
其中W为输入子特征feature长度,H为输入子特征feature高度,C为输入 子特征feature通道数量;size为权重的大小。
由此可见,当Mk和Tk越大时,计算时间越小。
本发明所述每个PE运算单元对乘法器运算结果各自累加,经过每个卷积核 大小size×size时钟周期,Mk个PE运算单元得到Mk个运算结果,因此所述条 带阵列模块每个计算周期得到Tk*Mk个运算结果。
本发明的有益效果如下:
1.本发明所述的乘法器运算方法能实现一个乘法器做2个乘法运算,大大的 提升了乘法器的利用效率。同时通过条带阵列运算操作,对卷积核大小为size× size时,条带阵列经过size×size个时钟周期得到Tk*Mk个运算结果,从而实现 条带阵列运算支持任意卷积核大小,并且能实现乘法器的利用率100%。
2.本发明通过使用乒乓RAM缓存子特征feature和权重weight,使条带阵列 运算无缝衔接,大大提升运算效率。
3.本发明所述的卷积模块通过DMA控制器控制DMA从存储器中读取数据, 相比传统中央处理控制DMA的方式,速度更快更高效。
4.本发明采用乒乓RAM+条带列阵的组合,使得卷积运算达到了高效率,乘 法器高调用率和高利用率。
附图说明
图1是卷积操作计算示意图一。
图2是卷积操作计算示意图二。
图3是本实施例所述卷积模块的结构示意图。
图4是本实施例所述N通道排列示意图。
图5是本实施例所述特征feature分割示意图。
图6是本实施例所述乒乓RAM缓存示意图。
图7是本实施例所述连续输出RAM地址输出、输出示意图。
图8是本实施例所述乘法器运算示意图。
图9是本实施例所述条带阵列模块运算示意图。
图10是本实施例所述条带阵列模块累加示意图。
图11是本实施例所述Tk方向并行运算示意图。
图12是本实施例所述Mk方向并行运算示意图。
图13是本实施例所述条带阵列模块运算示意图。
具体实施方式
下面结合附图和具体实施方式对本发明做详细描述。
实施例1
如图3所示,一种基于乒乓RAM的条带阵列卷积模块,包括直接内存访问 模块DMA、DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带 列阵模块、块累加模块、寄存器模块;
所述由DMA控制器用于控制DMA从存储器中读取数据,本实施例所述的 存储器为DDR3;所述数据包括特征feature、权重weight;数据经过数据分流模 块将特征feature和权重weight分离,然后存入乒乓RAM;所述RAM读取模块 从乒乓RAM读取特征feature和权重weight给到条带阵列模块进行运算处理, 运算结果经过块累加模块输出;
所述寄存器模块用于接收来自中央处理器配置的寄存器控制所述的卷积模 块运算。
所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元包括Tk*Tk/2 个乘法器;所述条带阵列模块一共设有Mk*Tk*Tk/2个乘法器。本实施例所述设 有5个PE运算单元。
所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包括两个连续 输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括Mk个子RAM; 所述权重RAM包括ramA′、ramB′。
本实施例基于以上所述的基于乒乓RAM的条带阵列卷积模块,还提供了一 种基于乒乓RAM的条带阵列卷积模块的运算方法,所述运算方法包括步骤如下:
S1:设置权重weight单个卷积核寸尺为size×size;其中,size=1、2、3….n, 条带阵列的PE运算单元的数量为Mk;本实施例设Mk=5;
S2:如图4所示,特征Feature和权重weight按照N通道排列方式预先存储 在存储器中,其中DDR3存储的特征为三维矩阵,其宽度为Wi,高度为Hi,所 述特征Feature总通道数量为C,按N通道排列,每N个通道的特征feature在 DDR3里面按照连续地址存储。所述N累加和等于C。所述的N通常为2的次 幂,例如2、4、8、16、32等。本实施例按N通道排列的好处如下:
第一、DDR3读写操作时突发传输的,必须要字节对齐,通常为8字节、16 字节、32字节对齐,单个特征feature数量有时不是字节对齐,但N通道的特征 feature总和一定是字节对齐的;
第二、卷积运算可以并行运算N个数据,有利于算法的加速。
S3:由于特征feature太大无法一次性加载至乒乓RAM,因此需要对特征 feature进行分割,分割示意图如图5所示,本实施例需要对两个方向进行分割。 第一个是高度H方向分割,分割成m份,m为正整数;例如本实施例分成4分, 那么H0+H1+H2+H3=H;第二是通道方向分割,分割成m份,本实施例一共将 特征feature分割成m*m份。例如本实施例分成4份,那么C0+C1+C2+C3=C, 整个特征feature分割成4×4=16份子特征;
S4:所述DMA控制器计算每一份子特征的地址、权重的地址,并通过DMA 从存储器中读取子特征、权重,通过数据分流模块将子特征、权重进行分离;
S5:将每一份子特征分成Mk份,缓存在连续输出RAM中的Mk个子RAM 中,其中,每个子RAM中存有1/Mk份子特征的数据;
其中所述子特征缓存在特征RAM中的具体步骤如下:
A1:所述DMA读取上个地址的子特征分成Mk份,分别存入ramA中Mk 个子RAM中,其中每个子RAM存有1/Mk份子特征的数据;
A2:在RAM读取模块根据地址计算公式,顺序读取出ramA中Mk个子RAM 中数据,组成子特征的同时,DMA将下个地址的子特征分成Mk份,分别存入 ramB中Mk个子RAM,其中每个子RAM存有1/Mk份子特征的数据;
A3:当RAM读取模块读取完ramA中的子特征后,接着RAM读取模块根 据地址计算公式,顺序读取ramB中Mk个子RAM中数据,组成子特征;
A4:重复以上步骤,直到读取完子特征。
本实施例以子特征feature为例,首先DMA读取子特征feature0存入ramA, 然后条带阵列计算子特征feature0,此时DMA同时将子特征feature1存入ramB, 当条带阵列计算完子特征feature0之后,接着计算子特征feature1,特征RAM缓 存示意图6所示,整个运算无缝衔接,有效提高效率。
本实施例在RAM读取模块读取每个连续输出RAM子特征时,能同时读取 Mk个子RAM中的数据,实现快速读取。
同时DMA将权重缓存在权重RAM中;
其中,所述权重缓存在权重RAM中的具体步骤如下:
B1:所述DMA读取上个地址的权重存入ramA′;
B2:在PE运算单元通过RAM读取模块读取ramA′中的权重的同时,DMA 将下个地址的权重存入ramB′;
B3:当PE运算单元读取完ramA′中的权重后,接着读取ramB′中的权重;
B4:重复以上步骤,直到读取完权重。
同理,本实施例实现无缝衔接的读取权重,实现有效的提高运算效率。
S6:RAM读取模块根据地址计算公式计算连续输出RAM中Mk个子RAM 中的数据,顺序读取并组成一份子特征;同时RAM读取模块读取在权重RAM 中的权重;
本实施例所述地址计算公式如下:
将address=(wr_addr/Mk)
Wri-1_en=((wr_addr%Mk)=i-1)
写入第i-1个ram中;
其中i=1、2、…、Mk;wr_addr表示写进子RAM的地址,Wri-1_en表示第 i-1个子RAM的写使能信号;
所述条带列阵读取数据,即连续输出RAM连续输出Mk个连续数据地址和 与地址对应的数据具体如下:
address=(rd_addr/Mk)+((rd_addr/Mk)>0)
rdi-1_en=i-1
其中,rd_addr表示读子RAM的地址,rdi-1_en表示第i-1个子RAM的读使 能信号。
本实施例以条带阵列的输入是连续5个数据,即Mk=5;这就需要乒乓RAM 可以一个时钟周期输出任意5个连续地址数据,因此需要快速的从特征RAM中 读取子特征,本实施例以其中一个连续输出RAM为例说明子特征缓存入5个子 RAM,并读取子特征的过程,如图7所示,所述连续输出RAM能实现一进连续 多出,原理是连续输出RAM包括5个RAM,分别记为ram0、ram1、ram2、ram3、 ram4,根据以上地址计算公式,将子特征分成5份分别写入这5个子RAM,其 中,每个子RAM中存有1/5份子特征,读取的时候5个子RAM会同时,通过 顺序组合输出一个子特征数据,达到输出连续地址的数据效果。
S7:所述PE运算单元获取RAM读取模块输入的子特征、权重;PE运算单 元中的乘法器对输入的子特征、权重进行乘法运算,得到相应的运算结果;
本实施例所述的子特征feature是8位,权重weight是8位,因此卷积运算 是8*8。现有技术Xilinx FPGA内部乘法器位宽通常是18*25,实现两个乘法运 算A*B和A*C传统上需要2个乘法器。
本实施例所述PE运算单元中乘法器对输入的子特征、权重进行乘法运算, 如图8所示,本实施例所述乘法器运算法则如下:对权重C左移16位再加上下 一个地址的权重B,然后再跟子特征A相乘,得到的结果低16bit是特子征A* 权重B的结果,高位则是子特征A*权重C的结果,最后将这两个乘法结果分离 出来各自累加;通过这种方法,本实施例实现了一个乘法器做2个乘法运算,大 大提升了乘法器的利用效率。所述的权重C、权重B表示输入到乘法器的权重数 据;所述子特征A表示根据地址计算公式输入到乘法器的子特征数据。
S8:块累加模块对高度H方向子特征的运算结果进行累加后输出。
本实施例所述RAM读取模块每个时钟周期读取Mk个子特征、Tk个权重, 分别输入到Mk个PE运算单元进行乘法运算,对应每个PE运算单元一个时钟 周期获取一个子特征、Tk个权重,实现每个PE运算单元一个时钟周期运算一个 子特征、Tk个权重,从而得到Tk个结果;所述Mk个PE运算单元并行运算, 实现一个计算周期输出Mk*Tk个运算结果;所述一个计算周期为size*size个时 钟周期,因此计算一个输入子特征feature的时间为:
Time=W*H*C*(size*size)/(Mk*Tk),单位:时钟周期
其中W为输入子特征feature长度,H为输入子特征feature高度,C为输入 子特征feature通道数量;size为权重的大小。
由此可见,当Mk和Tk越大时,计算时间越小。
本实施例所述条带阵列模块如图9所示,包括多个PE运算单元,每个PE 单元对Tk个输入特征feature和Tk个权重weight的运算操作。由于一个PE运 算单元包括Tk*Tk/2个乘法器,因为一个乘法器可以完成两个乘法运算,因此一 个PE运算单元一个时钟周期可以完成Tk*Tk个乘法运算。所述条带阵列模块包 括Mk个PE运算单元,因此整个条带阵列模块一共设有Mk*Tk*Tk/2个乘法器, 一个时钟周期可以完成Mk*Tk*Tk个乘法运算。
本实施例以xilinxZU4CG芯片为例,该芯片总共有728个乘法器,我们将 Mk配置成5,Tk配置成16,那么条带阵列消耗5*16*16/2=640个乘法器,调用 率达到87.9%,非常高。
本实施例条带阵列PE运算单元的数量Mk可以任意配置,因为所有的PE 运算单元用来计算同一行数据,如图9、图10所示,每个PE运算单元将乘法器 运算结果进行累加,经过每个卷积核大小size*size时钟周期,Mk个运算单元得 到Mk个运算结果。
本实施例每一个PE运算单元对输入子特征feature并行与权重 weight0~weight(Tk-1)进行乘法器运算,实现一个计算周期得到Tk个运算结果; 图11所示;
本实施例设有5个PE运算单元,其中5个PE单元并行计算输入子特征 feature并行与权重weight,每个计算周期得出5个运算结果;因此每个计算周期 得到Tk*5个运算结果;如图12所示;
如图13所示,为本实施例由Mk个PE运算单元构成的条带阵列运算示意图, 本实施例以10*10的特征feature为例,设权重weight单个卷积核size为3*3, Mk=5,clk为时钟信号,1~9表示9个时钟周期,第1个时钟周期PE0计算0*w0, PE1计算1*w0,PE2计算2*w0,PE3计算3*w0,PE4计算4*w0;第2个时钟 周期PE0计算1*w1,PE1计算2*w1,PE2计算3*w1,PE3计算4*w1,PE4计 算5*w1;第3个时钟周期PE0计算2*w2,PE1计算3*w2,PE2计算4*w2,PE3 计算5*w2,PE4计算6*w2;依次类推,每个PE运算单元将每个时钟周期运算 结果进行累加,最终9个时钟周期后得出5个运算结果F0~F4。
上述实例卷积核是3*3,条带阵列经过9个时钟周期后得出5个结果F0~F4; 当权重weight单个卷积核size是5*5时,条带阵列经过25个时钟周期得出5个 结果F0~F4;当权重weight单个卷积核size是7*7时,条带阵列经过49个时钟 周期得出5个结果F0~F4;因此利用此方法可以支持任意的卷积核大小,并且无 论何种卷积核,所有的乘法器都能用上,利用率100%。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非 是对本发明的实施方式的限定。凡在本发明的精神和原则之内所作的任何修改、 等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于乒乓RAM的条带阵列卷积模块,其特征在于:包括直接内存访问模块DMA、DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;
所述DMA控制器用于控制DMA从存储器中读取数据,所述数据包括特征feature、权重weight;数据经过数据分流模块将特征feature和权重weight分离,然后存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征feature和权重weight给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;
所述寄存器模块用于接收来自中央处理器配置的寄存器控制所述的卷积模块运算。
2.根据权利要求1所述的基于乒乓RAM的条带阵列卷积模块,其特征在于:所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元包括Tk*Tk/2个乘法器。
3.根据权利要求2所述的基于乒乓RAM的条带阵列卷积模块,其特征在于:所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包括两个连续输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括Mk个子RAM;所述权重RAM包括ramA′、ramB′。
4.一种基于权利要求1~3任一项所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:所述运算方法包括步骤如下:
S1:设置权重weight单个卷积核寸尺为size×size;其中,size=1、2、3….n,条带阵列的PE运算单元的数量为Mk;
S2:特征Feature和权重weight按照N通道排列方式预先存储在存储器中,其中存储器存储的特征为三维矩阵,其宽度为Wi,高度为Hi,总通道数量为C,即特征的所有N通道累加和等于C,且设置每个N通道的特征Feature在存储器里面按连续地址存储;
S3:DMA从高度H方向、通道C方向对特征Feature进行分割,得到对应Cm×Hm份子特征,其中m为正整数;
S4:所述DMA控制器计算每一份子特征的地址、权重的地址,并通过DMA从内存读取子特征、权重,通过数据分流模块将子特征、权重进行分离;
S5:将子特征分成Mk份,缓存在连续输出RAM中的Mk个子RAM中,其中,每个子RAM中存有1/Mk份子特征的数据;同时权重缓存在权重RAM中;
S6:RAM读取模块根据地址计算公式计算连续输出RAM中Mk个子RAM中的数据,顺序读取并组成一份子特征;同时RAM读取模块读取在权重RAM中的权重;
S7:所述PE运算单元获取RAM读取模块输入的子特征、权重;PE运算单元中的乘法器对输入的子特征、权重进行乘法运算,得到相应的运算结果;
S8:块累加模块对高度H方向子特征的运算结果进行累加后输出。
5.基于权利要求4所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:所述N为2的次幂。
6.根据权利要求4所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:步骤S5,所述子特征缓存在特征RAM的具体步骤如下:
A1:所述DMA读取上个地址的子特征分成Mk份,分别存入ramA中Mk个子RAM中,其中每个子RAM存有1/Mk份子特征的数据;
A2:在RAM读取模块根据地址计算公式,顺序读取出ramA中Mk个子RAM中数据,组成子特征的同时,DMA将下个地址的子特征分成Mk份,分别存入ramB中Mk个子RAM,其中每个子RAM存有1/Mk份子特征的数据;
A3:当RAM读取模块读取完ramA中的子特征后,接着RAM读取模块根据地址计算公式,顺序读取ramB中Mk个子RAM中数据,组成子特征;
A4:重复以上步骤,直到读取完子特征。
7.根据权利要求4所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:步骤S5,所述权重缓存在权重RAM中的具体步骤如下:
B1:所述DMA读取上个地址的权重存入ramA′;
B2:在PE运算单元通过RAM读取模块读取ramA′中的权重的同时,DMA将下个地址的权重存入ramB′;
B3:当PE运算单元读取完ramA′中的权重后,接着读取ramB′中的权重;
B4:重复以上步骤,直到读取完权重。
8.根据权利要求6所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:步骤S6,所述地址计算公式如下:
将address=(wr_addr/Mk)
Wri-1_en=((wr_addr%Mk)=i-1)
写入第i-1个ram中;
其中i=1、2、…、Mk;wr_addr表示写进子RAM的地址,Wri-1_en表示第i-1个子RAM的写使能信号;
条带列阵读取数据,即连续输出RAM连续输出Mk个连续数据地址和与地址对应的数据具体如下:
address=(rd_addr/Mk)+((rd_addr/Mk)>0)
rdi-1_en=i-1
其中,rd_addr表示读子RAM的地址,rdi-1_en表示第i-1个子RAM的读使能信号。
9.根据权利要求4所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:步骤S8,所述乘法器运算法则如下:对权重C左移16位再加上下一个地址的权重B,然后再跟子特征A相乘,得到的结果低16bit是特子征A*权重B的结果,高位则是子特征A*权重C的结果,最后将这两个乘法结果分离出来各自累加;所述的权重C、权重B表示RAM读取模块输入到乘法器的权重数据;所述子特征A表示根据地址计算公式输入到乘法器的子特征数据。
10.根据权利要求5~9任一项所述的基于乒乓RAM的条带阵列卷积模块的运算方法,其特征在于:所述RAM读取模块每个时钟周期读取Mk个子特征、Tk个权重,分别输入到Mk个PE运算单元进行乘法运算,对应每个PE运算单元一个时钟周期获取一个子特征、Tk个权重,实现每个PE运算单元一个时钟周期运算一个子特征、Tk个权重,从而得到Tk个结果;所述Mk个PE运算单元并行运算,实现一个计算周期输出Mk*Tk个运算结果;所述一个计算周期为size*size个时钟周期,因此计算一个输入子特征feature的时间为:
Time=W*H*C*(size*size)/(Mk*Tk),单位:时钟周期
其中W为输入子特征feature长度,H为输入子特征feature高度,C为输入子特征feature通道数量;size为权重的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910791842.6A CN110688616B (zh) | 2019-08-26 | 2019-08-26 | 一种基于乒乓ram的条带阵列的卷积模块及其运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910791842.6A CN110688616B (zh) | 2019-08-26 | 2019-08-26 | 一种基于乒乓ram的条带阵列的卷积模块及其运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688616A true CN110688616A (zh) | 2020-01-14 |
CN110688616B CN110688616B (zh) | 2023-10-20 |
Family
ID=69108611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910791842.6A Active CN110688616B (zh) | 2019-08-26 | 2019-08-26 | 一种基于乒乓ram的条带阵列的卷积模块及其运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688616B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112215342A (zh) * | 2020-09-28 | 2021-01-12 | 南京俊禄科技有限公司 | 一种船用气象雷达照相装置多通道并行cnn加速器 |
CN112486901A (zh) * | 2020-11-30 | 2021-03-12 | 清华大学 | 基于乒乓缓冲的存内计算系统及方法 |
CN113138748A (zh) * | 2021-04-09 | 2021-07-20 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
CN113448624A (zh) * | 2021-07-15 | 2021-09-28 | 安徽聆思智能科技有限公司 | 数据存取方法及装置、系统、ai加速器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
US20180181857A1 (en) * | 2016-12-27 | 2018-06-28 | Texas Instruments Incorporated | Reduced Complexity Convolution for Convolutional Neural Networks |
CN109034373A (zh) * | 2018-07-02 | 2018-12-18 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
-
2019
- 2019-08-26 CN CN201910791842.6A patent/CN110688616B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180181857A1 (en) * | 2016-12-27 | 2018-06-28 | Texas Instruments Incorporated | Reduced Complexity Convolution for Convolutional Neural Networks |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
CN109034373A (zh) * | 2018-07-02 | 2018-12-18 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
Non-Patent Citations (2)
Title |
---|
LIN BAI: "A CNN Accelerator on FPGA Using Depthwise Separable Convolution", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
陆维娜 等: "面向卷积神经网络加速器吞吐量优化的FPGA自动化设计方法", 《计算机辅助设计与图形学学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112215342A (zh) * | 2020-09-28 | 2021-01-12 | 南京俊禄科技有限公司 | 一种船用气象雷达照相装置多通道并行cnn加速器 |
CN112215342B (zh) * | 2020-09-28 | 2024-03-26 | 南京俊禄科技有限公司 | 一种船用气象雷达照相装置多通道并行cnn加速器 |
CN112486901A (zh) * | 2020-11-30 | 2021-03-12 | 清华大学 | 基于乒乓缓冲的存内计算系统及方法 |
CN113138748A (zh) * | 2021-04-09 | 2021-07-20 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
CN113138748B (zh) * | 2021-04-09 | 2023-08-29 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
CN113448624A (zh) * | 2021-07-15 | 2021-09-28 | 安徽聆思智能科技有限公司 | 数据存取方法及装置、系统、ai加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN110688616B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110688616A (zh) | 一种基于乒乓ram的条带阵列的卷积模块及其运算方法 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN108416422B (zh) | 一种基于fpga的卷积神经网络实现方法及装置 | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
CN106970896B (zh) | 面向向量处理器的二维矩阵卷积的向量化实现方法 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN105260773B (zh) | 一种图像处理装置以及图像处理方法 | |
CN111758107B (zh) | 用于基于硬件的池化的系统和方法 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN108388537B (zh) | 一种卷积神经网络加速装置和方法 | |
CN110135554A (zh) | 一种基于fpga的卷积神经网络硬件加速架构 | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
US11494623B2 (en) | Processing element and operating method thereof in neural network | |
CN108717571B (zh) | 一种用于人工智能的加速方法和装置 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
JP7261226B2 (ja) | 演算処理装置 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN111984189A (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
CN113762480B (zh) | 一种基于一维卷积神经网络的时间序列处理加速器 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN104869284B (zh) | 一种双线性插值放大算法的高效率fpga实现方法和装置 | |
CN111222090B (zh) | 卷积计算模块、神经网络处理器、芯片和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |