CN113138748A - 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 - Google Patents

一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 Download PDF

Info

Publication number
CN113138748A
CN113138748A CN202110382102.4A CN202110382102A CN113138748A CN 113138748 A CN113138748 A CN 113138748A CN 202110382102 A CN202110382102 A CN 202110382102A CN 113138748 A CN113138748 A CN 113138748A
Authority
CN
China
Prior art keywords
bit
register
input
data
layer
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
Application number
CN202110382102.4A
Other languages
English (en)
Other versions
CN113138748B (zh
Inventor
胡湘宏
李学铭
黄宏敏
陈淘生
刘梓豪
熊晓明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN202110382102.4A priority Critical patent/CN113138748B/zh
Publication of CN113138748A publication Critical patent/CN113138748A/zh
Application granted granted Critical
Publication of CN113138748B publication Critical patent/CN113138748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,包括控制模块、输入特征图寄存器、权重寄存器、部分和寄存器、PE阵列以及输出特征图寄存器,其中:所述控制模块用于控制整个卷积计算的时序;输入特征图寄存器用于寄存输入特征图,并把输入特征图像素按照卷积顺序输出到PE阵列;权重寄存器用于为PE阵列提供输入权重;部分和寄存器是一个只有一层的寄存器阵列,PE阵列用于完成卷积计算,输出特征图寄存器用于寄存通过PE阵列完成计算后的值。本发明能加快CNN硬件加速器的设计与部署,简化设计流程。

Description

一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累 加器
技术领域
本发明涉及图像识别领域,具体涉及一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器。
背景技术
深度学习是近年来发展十分迅速的一个崭新的领域,作为深度学习最常用的模型之一的卷积神经网络因其优秀的特征学习能力被广泛应用在图像处理、人脸识别、音频检索等领域。随着卷积神经网络网络结构的发展,其网络深度不断加深,网络结构日新月异,网络的计算需要执行大量的算术运算;同时其应用场景不断拓展,对网络实现的实时性提出了更高的要求。此外,在网络量化方面取得的进展使得目前大多数CNN经过量化训练后都能在不损失太大精度的情况下用8bit的定点数量化整个网络;而即使不经过量化训练,也能用16bit的定点数量化权重和输入同时保持精度。因此,需要一种能够支持多种数据位宽,提供高吞吐率的,同时能适应不同网络结构的可配置的卷积核。
目前,能实现CNN的平台主要有CPU、GPU、FPGA和ASIC,CPU由于其出色的通用性能限制了其不适合用在计算CNN这种需要大量算术运算的场景;GPU由于其出色的并行计算能力被广泛用于人工神经网络的训练,但由于其本身的功率太大,不适合用在对功率有严格要求的场景;而且GPU的成本偏高,目前多应用在云端;ASIC无论在功耗性能方面还是在成本方面都表现出色,但是其设计门槛高、设计周期长;FPGA由于其可编程的特性以及贴近ASIC的设计,常常用于ASIC流片前的验证,虽然FPGA的能效比不及ASIC,但其能灵活地对设计进行修改。
现有的基于FPGA的可配置CNN乘法累加器只能加速一些重复性高的简单的计算,而CNN中一些复杂的运算或随机逻辑,比如后处理中需要计算自然数e的幂或者是一些随机性的优化操作如Dropout等很难用FPGA实现,或是需要耗费大量的资源,而获得的性能与资源投入不成正比。
发明内容
本发明的目的是提供一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器,用以加快CNN硬件加速器的设计与部署,简化设计流程。
为了实现上述任务,本发明采用以下技术方案:
一种基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,包括控制模块、输入特征图寄存器、权重寄存器、部分和寄存器、PE阵列以及输出特征图寄存器,其中:
所述控制模块用于控制整个卷积计算的时序;输入特征图寄存器用于寄存输入特征图,并把输入特征图像素按照卷积顺序输出到PE阵列;权重寄存器用于为PE阵列提供输入权重;部分和寄存器是一个只有一层的寄存器阵列,PE阵列用于完成卷积计算,输出特征图寄存器用于寄存通过PE阵列完成计算后的值;
在收到启动信号后,控制模块首先根据卷积配置信号产生从外部存储读取数据的使能信号与数据的地址;当完成输入特征图的读取后开始卷积计算,控制模块控制PE阵列开始计算卷积,同时还会继续未完成的权重与部分和读取;卷积计算过程中,控制模块产生移动信号,控制输入特征图寄存器与权重寄存器中数据的映射,以复用寄存的输入特征图数据与权重数据;当卷积计算完成后,控制模块控制输出特征图寄存器寄存PE阵列的计算结果,然后PE阵列开始下一次卷积计算,控制模块产生写使能信号与数据地址,将输出特征图寄存器里寄存的卷积结果写到外部存储。
进一步地,采用S形的遍历顺序,对于一个k*k大小的卷积核,仅用左移、右移和下移遍历其所有权值;从卷积核的左上角开始,先向右移遍历第一行的权值,然后下移到第二行,再向左遍历第二行,接着继续下移,交替变换左右移的方向直至遍历完整个卷积核。
进一步地,所述输入特征图寄存器具有三层结构,第一层用于寄存从外部存储读取的数据,第二层用于输入特征图的移动,第三层用于复用输入特征图的数据同时计算多个输出特征图通道。
进一步地,输入特征图寄存器中所有寄存器位宽为16bit,输入像素的位宽为16bit;当使用8bit模式时,输入数据的高8bit与低8bit分别属于不同输入特征图通道的相同位置的像素;当使用16bit模式时,每个输入数据即一个像素。
进一步地,输入特征图寄存器的第一层采取行并行方式寄存数据,从外部存储读取的数据从寄存器的左边输入,每个周期输入一列数据;读取数据的周期,除了直接与输入直接相连的最左列寄存器,其余寄存器都寄存其左侧寄存器上个周期寄存的值;在非读取数据的周期,每个寄存器都保持自己上一周期寄存的值。
进一步地,输入特征图寄存器的第二层采取了一种共享网络,每个寄存器能寄存其左、右以及下方的值,中间的一部分寄存器还能寄存输入特征图寄存器第一层相应位置寄存器的值;输入特征图寄存器第二层的宽比输入特征图寄存器第一层大k-1,k为支持的最大的卷积核尺寸,多出的这部分寄存器不需要寄存来自第一层的值,其作用是在输入特征图移动时,保护暂时用不到的像素。
进一步地,输入特征图寄存器第三层采用固定的映射方式,支持将输入特征图寄存器第二层输出的左边四分之一复制4份,或者将第二层输出左边十六分之一复制16份,或者直接寄存第二层的输出;输入特征图第三层的尺寸与PE阵列相同。
进一步地,所述权重寄存器具有两层结构,第一层用于将寄存的输入权重映射到计算同一个输出通道的PE,第二层用于寄存第一层的映射结果并为PE阵列提供稳定的输入权重;所有寄存器位宽为16bit;
在8bit模式下,每个寄存器寄存两个权重,分别属于两个不同的输出特征图通道;在16bit模式下,每个寄存器寄存一个权值。权重寄存器第一层与第二层的尺寸均与PE阵列相同。
进一步地,所述部分和寄存器的结构与输入特征图寄存器第一层相同,输入数据位宽为16bit;对于8bit模式,部分和输入的高8bit和低8bit分别代表不同输出特征图通道的部分和;对于16bit模式,输入即一个部分和。
进一步地,所述PE阵列中的每个PE内部由一个至少支持24bit*16bit的有符号乘法器与一个至少33bit的加法器以及其余数据选择逻辑构成;对于8bit模式,24bit*16bit的乘法器能一次乘法能算出两个8bit*8bit的结果,如下式:
d=(a*216+b)*c
其中a、b、c均为8bit符号数,d为计算结果;
对于16bit模式,24bit*16bit乘法器每次乘法只能算出一个16bit*16bit的结果;乘法器得出的结果会送到加法器进行累加,8bit模式时,加法器的低16bit和高16bit分别计算两个16bit+16bit的结果。
进一步地,所述输出特征图寄存器仅有一层结构,其结构与输入特征图寄存器第一层相同,控制模块每个周期将输出特征图寄存器最右的一列数据输出到外部存储,然后每个寄存器寄存其左方的寄存器的值,输入数据位宽为32bit;对于8bit模式,输出的高16bit和低16bit分别代表同一位置不同输出特征图通道的数据;对于16bit模式,输出即一个输出特征图数据。
与现有技术相比,本发明具有以下技术特点:
1.本发明提供的CNN乘法累加器,不仅支持目前业界用得最多的8bit量化的CNN,同时也能兼容一些新提出的,还未进行量化感知训练的CNN;本发明支持8bit与16bit两种数据位宽的卷积,目前8bit的CNN都要特殊的经过量化训练或者后训练,而当一个新网络架构提出或者是训练自定义的数据集时往往使用的是浮点数,16bit的定点数能在不经过额外训练的情况下量化浮点的网络,加快了新的硬件加速系统的部署,降低了设计的复杂度。
2.本发明主所采用的三层输入特征图寄存器结构,能够实现并行计算4、16或32个输出特征图通道;同时支持卷积核尺寸为1*1、2*2、3*3、5*5、7*7,卷积步长为1或2的卷积,这足以支持实现绝大多数网络的卷积。此外,在卷积步长为2时,如果不改变输入的映射方式,就会使PE阵列的部分计算结果是无效的,大大降低了卷积核的性能,而增加并行计算的输出特征图通道数能把那些没起作用的PE也用上;此外当输入特征图尺寸、输出特征图尺寸以及权重尺寸之间的数据量相差太大时,数据传输时就会有很长的等待时间,可以通过调整并行计算的输出特征图通道数来平衡数据量的差距,减少由数据传输产生的等待,减缓存储的压力。
附图说明
图1为本发明提出的CNN乘法累加器的结构示意图;
图2为3*3步长为1的二维卷积示例;
图3为卷积核的遍历示意图;
图4为输入特征图寄存器结构示意图;
图5为DSP结构示意图;
图6为PE的结构图。
具体实施方式
如图1所示,本发明提供了一种基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,包括控制模块、输入特征图寄存器、权重寄存器、部分和寄存器、PE阵列以及输出特征图寄存器,其中:
所述控制模块用于控制整个卷积计算的时序;在收到启动信号后,控制模块首先根据卷积配置信号产生从外部存储读取数据的使能信号与数据的地址,输入特征图、权重以及部分和是并行读取的,因此会产生三个读使能信号以及对应的三个地址信号;当完成输入特征图的读取后,卷积计算便开始,控制模块控制PE阵列开始计算卷积,同时还会继续未完成的权重与部分和读取;卷积计算过程中,控制模块产生移动信号,控制输入特征图寄存器与权重寄存器中数据的映射,以复用寄存的输入特征图数据与权重数据,减少数据的读取。当卷积计算完成后,控制模块控制输出特征图寄存器寄存PE阵列的计算结果,然后PE阵列开始下一次卷积计算,控制模块产生写使能信号与数据地址,将输出特征图寄存器里寄存的卷积结果写到外部存储。
输入特征图寄存器用于寄存输入特征图,并把输入特征图像素按照卷积顺序输出到PE阵列。以一个典型的3*3步长为1的二维卷积为例,如图2所示,O0的计算如下式:
O0=I0*K0+I1*K1+I2*K2+I4*K3+I5*K4+I6*K5+I8*K6
+I9*K7+I10*K8+B0
输出特征图的每一像素都需要9次乘法和9次加法,PE每个时钟能执行1次乘法和1次加法,所以需要将输入特征图与权重按顺序输入到PE阵列,本发明采用S形的遍历顺序。对于一个k*k大小的卷积核,仅用左移、右移和下移遍历其所有权值;如图3所示,从卷积核的左上角开始,先向右移遍历第一行的权值,然后下移到第二行,再向左遍历第二行,接着继续下移,交替变换左右移的方向直至遍历完整个卷积核。
根据上述移动规则,本发明设计了一种具有三层结构的输入特征图寄存器,分别记为IR1、IR2和IR3,第一层用于寄存从外部存储读取的数据,第二层用于输入特征图的移动,第三层用于复用输入特征图的数据同时计算多个输出特征图通道。
图4所示为输入特征图寄存器各层的结构,所有寄存器位宽为16bit,输入像素的位宽为16bit;当使用8bit模式时,输入数据的高8bit与低8bit分别属于不同输入特征图通道的相同位置的像素;当使用16bit模式时,每个输入数据即一个像素。
输入特征图寄存器的第一层采取行并行方式寄存数据,从外部存储读取的数据从寄存器的左边输入,每个周期输入一列数据;读取数据的周期,除了直接与输入直接相连的最左列寄存器,其余寄存器都寄存其左侧寄存器上个周期寄存的值;在非读取数据的周期,每个寄存器都保持自己上一周期寄存的值。输入特征图寄存器第二层的长宽比PE阵列大k-1,k为支持的最大的卷积核尺寸。
输入特征图寄存器的第二层采取了一种共享网络,每个寄存器能寄存其左、右以及下方的值,中间的一部分寄存器还能寄存输入特征图寄存器第一层相应位置寄存器的值。输入特征图寄存器第二层的宽比输入特征图寄存器第一层大k-1,k为支持的最大的卷积核尺寸,多出的这部分寄存器不需要寄存来自第一层的值,其作用是在输入特征图移动时,保护暂时用不到的像素。
对于8bit模式,输入特征图寄存器第二层会分别寄存输入第一层对应位置寄存数据的高8bit与低8bit;对于16bit模式,第二层会之际寄存第一层的数据。
输入特征图寄存器第三层采用固定的映射方式,支持将输入特征图寄存器第二层输出的左边四分之一复制4份,或者将第二层输出左边十六分之一复制16份,或者直接寄存第二层的输出。第三层的作用是当输入特征图数据量很大时复用输入特征图,缩短数据传输引起的等待时间。输入特征图第三层的尺寸与PE阵列相同。
所述权重寄存器用于为PE阵列提供输入权重;本发明设计了一种具有两层结构的权重寄存器,第一层用于将寄存的输入权重映射到计算同一个输出通道的PE,第二层用于寄存第一层的映射结果并为PE阵列提供稳定的输入权重;所有寄存器位宽为16bit。为了减少权重的读取次数,采用512位大位宽的输入权重;在8bit模式下,每个寄存器寄存两个权重,分别属于两个不同的输出特征图通道;在16bit模式下,每个寄存器寄存一个权值。权重寄存器第一层与第二层的尺寸均与PE阵列相同。
部分和寄存器是一个只有一层的寄存器阵列,其结构与输入特征图寄存器第一层相同,输入数据位宽为16bit;对于8bit模式,部分和输入的高8bit和低8bit分别代表不同输出特征图通道的部分和;对于16bit模式,输入即一个部分和。
本发明设计了一种支持8bit和16bit卷积计算的PE阵列,例化大量的PE组成阵列,能够提供大的数据吞吐量。每个PE内部由一个至少支持24bit*16bit的有符号乘法器与一个至少33bit的加法器以及其余数据选择逻辑构成。对于8bit模式,24bit*16bit的乘法器能一次乘法能算出两个8bit*8bit的结果,如下式:
d=(a*216+b)*c
其中a、b、c均为8bit符号数,由于b*c的结果最大只有16位,即使b*c的结果为负数影响到a*c的计算结果,也能通过后续计算将结果修正。对于16bit模式,24bit*16bit乘法器每次乘法只能算出一个16bit*16bit的结果。乘法器得出的结果会送到加法器进行累加,8bit模式时,加法器的低16bit和高16bit分别计算两个16bit+16bit的结果,第17bit用于防止低16bit加法溢出影响高16bit加法。
乘法器可以用Xilinx FPGA的DSP实现,图5为DSP的结构图。DSP内部有一个25bit*18bit的乘法器,满足同时计算两个8bit*8bit结果的要求,同时DSP内部的Pre-adder能够在不额外使用资源的情况下实现a*216+b。图6为PE的结构图,其中乘法器是用DSP实现的,A、B、D代表DSP的输入端口,加法器的实现可根据FPGA的资源来选择用DSP还是用LUT。输入特征图与权重数据都是16bit,因此需要根据运行在8bit模式还是16bit模式来决定是否进行数据拼接,当工作在8bit模式时需要将输入权重拆分成高8bit和低8bit,高8bit左移16位送到A输入端,低8bit扩展符号位到25bit输入到D输入端;当工作在16bit模式时,权重扩展符号位到25bit送到A输入端,D输入端输入0;输入特征图取低8bit扩展符号位到18bit输入到B输入端。乘法器的输出也需要根据工作模式尽心数据拼接,当工作在8bit模式时,乘法器输出的42bit数据中,P[15:0]与P[31:16]为两个有效结果,应将P[31:16]、P[15:0]拼接成33位送到加法器;当工作在16bit模式时,P[31:0]为有效结果,直接将P的低32位送到加法器即可。当工作在8bit模式,且乘法器低16位结果为负数时,高16位的结果会比正确结果少1,一次需要用一个计数器检查低16位的输出结果,为负数时计数器加一,最后将计数器的结果加到高16bit的累加值上。同样的,工作在8bit模式时,Bias与Psum也需要拆成高16bit与低16bit拼接成33位送到加法器。加法器的输入结果也需要将高16bit与低16bit拼接成32位后才输出到PE外。
本发明中的PE可用另外一种基于多个乘法器和加法树的结构实现,该结构能够实现卷积核内的乘法计算的并行,乘法器后接了一棵加法树将多个乘法器的结果累加起来。该结构最大支持的卷积核尺寸决定了其硬件资源的消耗量。但其缺点也很明显,当卷积核尺寸小于最大支持的尺寸时,硬件的利用率很低。若用最大支持11*11卷积核的乘法器-加法树结构PE计算3*3大小的卷积核的卷积,只用到了其中的9个乘法器,而且为了保证加法树的输出结果正确,其余的112个乘法器的输入需要置零,实际工作的乘法器只占了总乘法器数量的7.4%,超过90%的乘法器都处于不工作的状态,浪费了大量的硬件资源。
输出特征图寄存器在PE阵列完成卷积计算之后寄存PE阵列的值,然后控制模块逐列将输出特征图寄存器寄存的值输出到外部存储。
输出特征图寄存器仅有一层结构,其结构与输入特征图寄存器第一层相同,控制模块每个周期将输出特征图寄存器最右的一列数据输出到外部存储,然后每个寄存器寄存其左方的寄存器的值。输入数据位宽为32bit;对于8bit模式,输出的高16bit和低16bit分别代表同一位置不同输出特征图通道的数据;对于16bit模式,输出即一个输出特征图数据。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,包括控制模块、输入特征图寄存器、权重寄存器、部分和寄存器、PE阵列以及输出特征图寄存器,其中:
所述控制模块用于控制整个卷积计算的时序;输入特征图寄存器用于寄存输入特征图,并把输入特征图像素按照卷积顺序输出到PE阵列;权重寄存器用于为PE阵列提供输入权重;部分和寄存器是一个只有一层的寄存器阵列,PE阵列用于完成卷积计算,输出特征图寄存器用于寄存通过PE阵列完成计算后的值;
在收到启动信号后,控制模块首先根据卷积配置信号产生从外部存储读取数据的使能信号与数据的地址;当完成输入特征图的读取后开始卷积计算,控制模块控制PE阵列开始计算卷积,同时还会继续未完成的权重与部分和读取;卷积计算过程中,控制模块产生移动信号,控制输入特征图寄存器与权重寄存器中数据的映射,以复用寄存的输入特征图数据与权重数据;当卷积计算完成后,控制模块控制输出特征图寄存器寄存PE阵列的计算结果,然后PE阵列开始下一次卷积计算,控制模块产生写使能信号与数据地址,将输出特征图寄存器里寄存的卷积结果写到外部存储。
2.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,采用S形的遍历顺序,对于一个k*k大小的卷积核,仅用左移、右移和下移遍历其所有权值;从卷积核的左上角开始,先向右移遍历第一行的权值,然后下移到第二行,再向左遍历第二行,接着继续下移,交替变换左右移的方向直至遍历完整个卷积核。
3.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,所述输入特征图寄存器具有三层结构,第一层用于寄存从外部存储读取的数据,第二层用于输入特征图的移动,第三层用于复用输入特征图的数据同时计算多个输出特征图通道。
4.根据权利要求3所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,输入特征图寄存器的第一层采取行并行方式寄存数据,从外部存储读取的数据从寄存器的左边输入,每个周期输入一列数据;读取数据的周期,除了直接与输入直接相连的最左列寄存器,其余寄存器都寄存其左侧寄存器上个周期寄存的值;在非读取数据的周期,每个寄存器都保持自己上一周期寄存的值。
5.根据权利要求3所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,输入特征图寄存器的第二层采取了一种共享网络,每个寄存器能寄存其左、右以及下方的值,中间的一部分寄存器还能寄存输入特征图寄存器第一层相应位置寄存器的值;输入特征图寄存器第二层的宽比输入特征图寄存器第一层大k-1,k为支持的最大的卷积核尺寸,多出的这部分寄存器不需要寄存来自第一层的值,其作用是在输入特征图移动时,保护暂时用不到的像素。
6.根据权利要求3所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,输入特征图寄存器第三层采用固定的映射方式,支持将输入特征图寄存器第二层输出的左边四分之一复制4份,或者将第二层输出左边十六分之一复制16份,或者直接寄存第二层的输出;输入特征图第三层的尺寸与PE阵列相同。
7.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,所述权重寄存器具有两层结构,第一层用于将寄存的输入权重映射到计算同一个输出通道的PE,第二层用于寄存第一层的映射结果并为PE阵列提供稳定的输入权重;所有寄存器位宽为16bit;
在8bit模式下,每个寄存器寄存两个权重,分别属于两个不同的输出特征图通道;在16bit模式下,每个寄存器寄存一个权值。权重寄存器第一层与第二层的尺寸均与PE阵列相同。
8.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,所述部分和寄存器的结构与输入特征图寄存器第一层相同,输入数据位宽为16bit;对于8bit模式,部分和输入的高8bit和低8bit分别代表不同输出特征图通道的部分和;对于16bit模式,输入即一个部分和。
9.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,所述PE阵列中的每个PE内部由一个至少支持24bit*16bit的有符号乘法器与一个至少33bit的加法器以及其余数据选择逻辑构成;对于8bit模式,24bit*16bit的乘法器能一次乘法能算出两个8bit*8bit的结果,如下式:
d=(a*216+b)*c
其中a、b、c均为8bit符号数,d为计算结果;
对于16bit模式,24bit*16bit乘法器每次乘法只能算出一个16bit*16bit的结果;乘法器得出的结果会送到加法器进行累加,8bit模式时,加法器的低16bit和高16bit分别计算两个16bit+16bit的结果。
10.根据权利要求1所述的基于FPGA的支持8bit和16bit数据位宽的可配置的CNN乘法累加器,其特征在于,所述输出特征图寄存器仅有一层结构,其结构与输入特征图寄存器第一层相同,控制模块每个周期将输出特征图寄存器最右的一列数据输出到外部存储,然后每个寄存器寄存其左方的寄存器的值,输入数据位宽为32bit;对于8bit模式,输出的高16bit和低16bit分别代表同一位置不同输出特征图通道的数据;对于16bit模式,输出即一个输出特征图数据。
CN202110382102.4A 2021-04-09 2021-04-09 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 Active CN113138748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110382102.4A CN113138748B (zh) 2021-04-09 2021-04-09 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110382102.4A CN113138748B (zh) 2021-04-09 2021-04-09 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器

Publications (2)

Publication Number Publication Date
CN113138748A true CN113138748A (zh) 2021-07-20
CN113138748B CN113138748B (zh) 2023-08-29

Family

ID=76810716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110382102.4A Active CN113138748B (zh) 2021-04-09 2021-04-09 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器

Country Status (1)

Country Link
CN (1) CN113138748B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113705803A (zh) * 2021-08-31 2021-11-26 南京大学 基于卷积神经网络的图像硬件识别系统及部署方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828744A (zh) * 2019-01-18 2019-05-31 东北师范大学 一种基于fpga的可配置浮点向量乘法ip核
CN109902063A (zh) * 2019-02-01 2019-06-18 京微齐力(北京)科技有限公司 一种集成有二维卷积阵列的系统芯片
CN110688616A (zh) * 2019-08-26 2020-01-14 陈小柏 一种基于乒乓ram的条带阵列的卷积模块及其运算方法
US20200089472A1 (en) * 2018-09-19 2020-03-19 Xilinx, Inc. Multiply and accumulate circuit
US10678509B1 (en) * 2018-08-21 2020-06-09 Xilinx, Inc. Software-driven design optimization for mapping between floating-point and fixed-point multiply accumulators

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678509B1 (en) * 2018-08-21 2020-06-09 Xilinx, Inc. Software-driven design optimization for mapping between floating-point and fixed-point multiply accumulators
US20200089472A1 (en) * 2018-09-19 2020-03-19 Xilinx, Inc. Multiply and accumulate circuit
CN109828744A (zh) * 2019-01-18 2019-05-31 东北师范大学 一种基于fpga的可配置浮点向量乘法ip核
CN109902063A (zh) * 2019-02-01 2019-06-18 京微齐力(北京)科技有限公司 一种集成有二维卷积阵列的系统芯片
CN110688616A (zh) * 2019-08-26 2020-01-14 陈小柏 一种基于乒乓ram的条带阵列的卷积模块及其运算方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113705803A (zh) * 2021-08-31 2021-11-26 南京大学 基于卷积神经网络的图像硬件识别系统及部署方法
CN113705803B (zh) * 2021-08-31 2024-05-28 南京大学 基于卷积神经网络的图像硬件识别系统及部署方法

Also Published As

Publication number Publication date
CN113138748B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN108564168B (zh) 一种对支持多精度卷积神经网络处理器的设计方法
US11137981B2 (en) Operation processing device, information processing device, and information processing method
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
US20220012593A1 (en) Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization
CN109063825B (zh) 卷积神经网络加速装置
CN108171317B (zh) 一种基于soc的数据复用卷积神经网络加速器
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN108985450B (zh) 面向向量处理器的卷积神经网络运算向量化方法
CN111831254A (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
CN112465110A (zh) 一种卷积神经网络计算优化的硬件加速装置
CN109146065B (zh) 二维数据的卷积运算方法及装置
WO2021232843A1 (zh) 图像数据存储方法、图像数据处理方法、系统及相关装置
CN112950656A (zh) 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
Ding et al. A FPGA-based accelerator of convolutional neural network for face feature extraction
CN110555516A (zh) 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法
CN115423081A (zh) 一种基于fpga的cnn_lstm算法的神经网络加速器
CN113138748A (zh) 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器
CN110163793B (zh) 卷积计算加速方法和装置
CN112001492A (zh) 关于二值权重DenseNet模型的混合流水式加速架构及加速方法
Li et al. A high utilization FPGA-based accelerator for variable-scale convolutional neural network
Kang et al. Design of convolution operation accelerator based on FPGA
CN115293978A (zh) 卷积运算电路和方法、图像处理设备
CN114265801A (zh) 一种通用、可配置的高能效池化计算多行输出方法
Wang et al. An FPGA-based reconfigurable CNN training accelerator using decomposable Winograd
TWI856653B (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