CN111767994B - 一种神经元计算装置 - Google Patents
一种神经元计算装置 Download PDFInfo
- Publication number
- CN111767994B CN111767994B CN201910259493.3A CN201910259493A CN111767994B CN 111767994 B CN111767994 B CN 111767994B CN 201910259493 A CN201910259493 A CN 201910259493A CN 111767994 B CN111767994 B CN 111767994B
- Authority
- CN
- China
- Prior art keywords
- unit
- data
- buffer
- image
- units
- 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.)
- Active
Links
- 210000002569 neuron Anatomy 0.000 title claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims abstract description 80
- 230000006835 compression Effects 0.000 claims description 59
- 238000007906 compression Methods 0.000 claims description 59
- 238000009825 accumulation Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 16
- 238000003491 array Methods 0.000 claims description 14
- 238000013528 artificial neural network Methods 0.000 claims description 13
- 230000003139 buffering effect Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 14
- 230000000630 rising effect Effects 0.000 description 6
- 238000000034 method Methods 0.000 description 5
- 241001504505 Troglodytes troglodytes Species 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101150111571 mreg gene Proteins 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000004575 stone Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/002—Image coding using neural networks
-
- 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)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Multimedia (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
一种神经元计算装置,用于图像的卷积或全连接计算,装置包括:多个缓存单元(100),用于缓存图像数据和卷积核计算的权值数据,并将图像数据和权值数据按预设规则依次发送至MAC单元(200);多个MAC单元(200),其与多个缓存单元(100)一一对应,用于依次对权值数据和图像数据进行乘累加计算,得到多个乘累加结果;缓存控制单元(300),用于控制缓存单元(100)调用寄存器的数量,并控制缓存单元(100)每次向MAC单元(200)发送的图像数据和权值数据的数量;求和树单元(400),用于对多个乘累加结果进行求和计算,得到图像的卷积计算结果。提供了一种多粒度、高并行、可扩展,用于不同尺寸卷积运算和全连接运算的神经元计算单元。
Description
技术领域
本发明涉及集成电路设计技术领域,尤其涉及一种神经元计算装置。
背景技术
在现代应用中,尤其是图像识别、目标跟踪、自然语言识别及处理、视频监控等领域,卷积神经网络(CNN)作为一种机器学习特别是深度学习的架构被广泛应用,其具有计算规模大、数据密集等特点,相对应的其硬件载体不仅需要满足海量计算的要求,还要满足实时性要求。超大规模集成电路以其高密度、高并行、低功耗的优势,成为大规模计算的优选载体,随着网络的复杂度越来越高、网络的数据量和计算量急剧增加,神经网络中的卷积运算和全连接计算都是实时的,对运算性能的数据吞吐量都有着很高的要求。神经元作为神经网络中的基本组成单元和运算核心,其计算原理如下表达式所示:
其中,x1~xn是神经元传入的输入信号,他们对应的连接权值分别为w1,w2,…,wn。所有的输入及对应的连接权值分别构成输入向量X和连接权向量W,b为偏置(bias),偏置的设置是为了正确对样本进行分类,是模型中一个重要的参数。F(·)为激活函数,激活函数的主要作用是加入非线性因素,解决线性模型的表达、分类不足的问题,y为当前神经元的输出。由上表达式可以看出,神经元计算的核心是乘累加计算,神经元作为人工神经网络的基本组成单元和运算核心,也是神经网络芯片功耗的主要贡献者,它的设计的可靠性直接决定整个神经网络芯片的性能,因此,一个多粒度、并行性高、可用于不同尺寸卷积运算和全连接运算的高性能神经元计算单元对神经网络芯片实时处理海量数据有着非常重要的意义。
发明内容
(一)要解决的技术问题
本发明提供了一种神经元计算装置,采用资源复用的方式,提供了一种多粒度、高并行、可扩展,用于不同尺寸卷积运算和全连接运算的神经元计算单元。
(二)技术方案
本发明提供了一种神经元计算装置,用于图像的卷积或全连接计算,装置包括多个缓存单元100、多个MAC单元200、缓存控制单元300以及求和树单元400,其中:多个缓存单元100,每一缓存单元100包括多个寄存器,用于缓存图像数据和卷积核计算的权值数据,并将图像数据和权值数据按预设时间依次发送至MAC单元200;多个MAC单元200,其与多个缓存单元100一一对应,用于依次对权值数据和图像数据进行乘累加计算或直接接收外部输入图像的数据并对数据进行乘累加计算,得到多个乘累加结果;缓存控制单元300,用于控制缓存单元100调用寄存器的数量,并控制缓存单元100每次向MAC单元200发送的图像数据和权值数据的数量;求和树单元400,用于对多个乘累加结果进行求和计算,得到图像的卷积计算结果。
可选地,缓存控制单元300还包括用于定义单位计算周期所包含的时钟周期数,并控制缓存单元100每次向MAC单元发送的图像数据和权值数据的数量,具体为:根据单位计算周期所述包含的时钟周期的个数确定缓存单元100每次向MAC单元发送的图像数据和权值数据的个数,以使图像数据和权值数据的个数分别与时钟周期数相同。
可选地,预设时间为单位计算周期。
可选地,缓存单元100包括权值缓存寄存器组101和图像缓存寄存器组102,分别用于缓存权值数据和图像数据,权值缓存寄存器组101和图像缓存寄存器组(102)均包括至少一个所述寄存器。
可选地,MAC单元200包括乘法子单元201和累加子单元202,其中,乘法子单元201包括改进型Booth编码单元2011、部分积产生单元2012、部分积结构矫正单元2013以及wallace压缩树单元2014,实现对权值数据和图像数据的乘法运算,得到两行部分积;累加子单元202包括4-2压缩阵列2021和两个寄存器MAReg2022,其中,每一时钟周期对应一组图像数据和权值数据,4-2压缩阵列2021用于一个单位计算周期内一组图像和权值数据的乘积结果与前一组图像和权值数据的乘累加结果的累加压缩运算,生成乘累加结果,两个寄存器MAReg2022用于存储4-2压缩阵列2021的乘累加结果,并在完成所述单位计算周期的最后一个时钟周期对应的权值数据和图像数据的乘累加计算后,将乘累加结果输入所述4-2压缩阵列2021。
可选地,多个缓存单元100的个数为4个或8个,若缓存单元100的个数为4个,则求和树单元400包括3个4-2压缩阵列2021以及一加法器401,若缓存单元100的个数为8个,则求和树单元400包括7个4-2压缩阵列2021以及一加法器401,其中,每两个MAC单元200对应一4-2压缩阵列2021,3个或7个4-2压缩阵列2021按树形排布,最底层的一4-2压缩阵列2021连接加法器401。可选地,4-2压缩阵列2021包括多个4-2压缩器,每一4-2压缩器包括32×R个晶体管,其中,R为4-2压缩阵列2021的位宽。
可选地,还包括扩展单元500,用于连接多个求和树单元400并实现多个求和树单元400输出结果的求和计算。
可选地,扩展单元500包括求和子单元、多路器以及Relu函数,其中,求和子单元用于对多个求和树单元400的结果进行求和运算,多路器用于根据神经网络结构选择是否对乘累加结果进行Relu非线性映射,Relu函数用于神经网络卷积层的非线性映射。
可选地,卷积核包括多种尺寸,缓存控制单元300根据卷积核的尺寸控制缓存单元100调用寄存器的数量。
(三)有益效果
本发明提供了一种神经元计算装置,至少具有如下技术效果:
(1)通过应用一定数量的寄存器构成的缓存单元,最大限度的利用卷积计算数据复用的特点,大幅度减少神经网络卷积层计算时从芯片上或芯片外存储单元重复读取数据,从而大幅降低功耗,同时减轻芯片的带宽压力;
(2)通过配置缓存单元的读取方式可实现不同尺寸卷积核的计算;
(3)本发明将图像数据和权值数据分割,神经元内的多个MAC可同步对图像的单一通道的多个块或多个通道进行卷积计算,最终将多个MAC的乘累加结果求和并通过Relu模块,直接输出下一层的特征图数据,这种方式一方面可以加快计算速度;另一方面大量降低甚至消除所需存储的中间数据,从而缓解芯片上存储空间不足而需要将中间数据存储在芯片外,继而大幅提高计算速度和效率;
(4)本发明在MAC单元使用4-2压缩阵列代替传统高位加法器实现累加操作,在求和树中使用多个4-2压缩阵列代替高位加法器,目前常见的并行高位加法器关键路径长,以最快的kogge stone加法器为例,位宽为2Nbit的kogge stone加法器从输入到输出要N+2级门延迟,而使用4-2压缩阵列,输入到输出只需要三级门延迟,且门延迟与数据位宽无关,关键路径短,此外相较于传统并行加法器,4-2压缩阵列所使用的硬件资源少。
附图说明
图1示意性示出了本公开实施例的神经元计算装置示意图;
图2A示意性示出了本公开实施例的基于异或门和选择器实现的4-2压缩器逻辑电路图;
图2B示意性示出了本公开实施例的基于传输门实现的4-2压缩器的原理图;
图2C示意性示出了本公开实施例的基于传输门的4-2压缩器实现的累加压缩阵列的一个位宽为Nbit的实施例结构框图;
图3A示意性示出了本公开实施例的3×3卷积运算时权值缓存寄存器组101中数据循环方式示意图;
图3B示意性示出了本公开实施例的3×3卷积运算时图像缓存寄存器组102的数据循环方式示意图;
图4示意性示出了本公开实施例的3×3卷积计算的一个实施例的示意图;
图5A示意性示出了本公开实施例的7×7卷积运算时权值缓存寄存器组101中数据循环方式示意图;
图5B示意性示出了本公开实施例的7×7卷积运算时图像缓存寄存器组102的数据循环方式示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提供了一种神经元计算装置,用于图像的卷积或全连接计算,装置包括多个缓存单元100、多个MAC单元200、缓存控制单元300以及求和树单元400,其中:多个缓存单元100,每一缓存单元包括多个寄存器,用于缓存图像数据和卷积核计算的权值数据,并将图像数据和权值数据按预设时间依次发送至MAC单元;多个MAC单元200,其与多个缓存单元100一一对应,用于依次对权值数据和图像数据进行乘累加计算或直接接收外部输入图像的数据并对数据进行乘累加计算,得到多个乘累加结果;缓存控制单元300,用于控制缓存单元100调用寄存器的数量,并控制缓存单元100每次向MAC单元200发送的图像数据和权值数据的数量;求和树单元400,用于对多个乘累加结果进行求和计算,得到图像的卷积计算结果。本发明实施例将以四个缓存单元100为例对该神经元计算装置进行详细介绍,参见图1,详细如下。
多个缓存单元100,每一缓存单元包括多个寄存器,用于缓存复用的图像数据和卷积核计算的权值数据,并将图像数据和权值数据按预设时间依次发送至MAC单元;
具体的,本发明实施例中采用四个缓存单元100,用于卷积层计算时缓存权值数据和图像数据,最大程度的实现数据复用,减少对芯片上和芯片外存储单元的访问和存储次数,每一缓存单元100均由多个寄存器组成,其中,部分寄存器组成权值缓存寄存器组101,用于缓存卷积核计算的权值数据,多个寄存器依次排列编号分别为wRegQ、wRegQ-1、……、wReg0;部分寄存器组成图像缓存寄存器组102,用于缓存图像数据,多个寄存器依次排列编号分别为pRegP、pRegP-1、……、pReg0。当处于工作状态时,每过一个时钟周期时,权值缓存寄存器组101和图像缓存寄存器组102中所述调用的寄存器中的数据向前传播,将处于最前排的寄存器wReg0和pReg0中的数据送至MAC单元中进行计算。
多个MAC单元200,其与多个缓存单元100一一对应,用于依次对权值数据和图像数据进行乘累加计算或直接接收外部输入图像的数据并对数据进行乘累加计算,得到多个乘累加结果;
具体的,MAC单元200与缓存单元100一一对应,因此本发明实施例中,MAC单元200的个数为四个,每接收一对权值数据Ai和图像数据Bi,就会对其进行乘累加计算。该MAC单元200包括乘法子单元201和累加子单元202,其中,乘法子单元201包括改进型Booth编码单元2011、部分积产生单元2012、部分积结构矫正单元2013以及wallace压缩树单元2014,工作过程中,输入的权值数据Ai作为乘数,图像数据Bi作为被乘数分别送入乘法子单元201中,经过Booth编码、部分积选择、部分积结构矫正以及Wallace树压缩产生压缩后的两行部分积Si和Ci,为了提高计算单元的工作速率,这里加入流水线设计方法,将所述得到的压缩后的两行部分积Si和Ci存入乘积寄存器MReg中,随后将MReg中的两行部分积送入累加子单元202中;累加子单元202包括4-2压缩阵列2021和两个寄存器MAReg2022,每一时钟周期对应一组图像数据和权值数据,4-2压缩阵列2021用于一个单位计算周期内一组图像和权值数据的乘积结果与前一组图像和权值数据的乘累加结果的累加压缩运算,生成乘累加结果,两个寄存器MAReg2022用于存储4-2压缩阵列2021的乘累加结果,并在完成单位计算周期的最后一个时钟周期对应的权值数据和图像数据的乘累加计算后,将乘累加结果输入4-2压缩阵列2021,用于下一组4-2压缩阵列2021的乘累加运算,具体的,工作过程中,累加子单元202将两行部分积Si和Ci以及两个寄存器MAReg2022存储的上一组的4-2压缩阵列2021的计算结果ASi-1和ACi-1一起送入4-2压缩阵列2021进行4-2压缩求和操作,所得到的压缩结果ASi与ACi的和就是乘数Ai和被乘数Bi的乘积与前面i-1组乘数与被乘数乘累加的结果。四个MAC单元的乘累加压缩结果分别为AS#1,AC#1,AS#2,AC#2,AS#3,AC#3,AS#4,AC#4,当收到外部给的使能信号wren信号,四个MAC单元的乘累加压缩结果将送入求和树单元400中进行求和计算,与传统乘累加器使用高位并行加法器实现累加操作相比,使用4-2压缩阵列来实现累加功能具有使用资源少、门延迟路径短、速度快的优点。
多个缓存单元100的个数为4个或8个,若缓存单元100的个数为4个,则求和树单元400包括3个4-2压缩阵列2021以及一加法器401,若缓存单元100的个数为8个,则求和树单元400包括7个4-2压缩阵列2021以及一加法器401,其中,每两个MAC单元200对应一4-2压缩阵列2021,3个或7个4-2压缩阵列2021按树形排布,最底层的一4-2压缩阵列2021连接加法器401。
具体的本发明实施例中,缓存单元100的个数是四个,对应的求和树单元400中的4-2压缩阵列2021的个数为三个,4-2压缩阵列2021按树形排列,其中,每两个MAC单元200对应一4-2压缩阵列2021,最底层为一个4-2压缩阵列2021,其用于对上层两个4-2压缩阵列2021的压缩求和结果再次压缩求和,而后将结果发送至加法器401,至此完成了对四个MAC单元200输出结果的求和,至此完成一个神经元计算单元在进行卷积或全连接计算时所需要进行的乘累加计算。
4-2压缩阵列2021可基于传输门来实现,实现累加压缩只需要3级门延迟,包括多个4-2压缩器,每一压缩器可通过基于如图2A所示的异或门和选择器实现或基于如图2B和图2C所示的传输门实现,本发明实施例中,每一所述4-2压缩器包括32×R个晶体管,以实现所述4-2压缩器的四个二输入异或门和两个2-1选择器的功能,其中,R为4-2压缩阵列2021的位宽。
缓存控制单元300,用于控制缓存单元100调用寄存器的数量,并控制缓存单元100每次向MAC单元200发送的图像数据和权值数据的数量;缓存控制单元300,还包括用于定义单位计算周期所包含的时钟周期个数。
具体的,缓存控制单元300根据卷积神经网络中选用的卷积核的尺寸控制缓存单元100调用所述寄存器的数量,并控制缓存单元100每次向MAC单元200发送的图像数据和权值数据的数量以及定义单位计算周期所包含的时钟周期数,根据时钟周期数确定缓存单元100每次向MAC单元200发送的图像数据和权值数据的个数,以使图像数据和权值数据的个数分别与时钟周期数相同。
图像进行卷积计算时,卷积核在图像上进行滑窗移动,首先卷积核所覆盖的图像数据与卷积核中相应位置的权值数据进行乘累加计算,完成当前窗口的计算后卷积核在图像上滑动,继续与所覆盖的图像数据进行乘累加计算。目前常用的卷积核的尺寸为3×3和7×7,以下将对本发明的神经元计算单元在进行这两种尺寸的卷积核卷积计算进行描述。
当卷积核大小为3×3,每个缓存单元100中所调用的权值缓存寄存器组101中的寄存器个数为9个,所调用的图像缓存寄存器组102的寄存器的个数为6个,参见图3A和图3B,其中,图3A为一个图像缓存寄存器在3×3卷积运算时的数据循环方式示意图,图3B为一个权值缓存寄存器在3×3卷积运算时的数据循环方式示意图,神经元计算装置中,每个MAC单元200可进行独立的单通道3×3卷积运算,如图4所示为一个通道在做3×3卷积的示例图,以该实例进行描述,具体为:本轮计算开始时,按照先列后排的顺序依次将输入图像的前三行前三列的九个数据送入MAC单元200进行计算,同时将这些数据写入到寄存器pReg5中,与此同时,将3×3的卷积核计算的权值数据也按照先列后排的顺序依次送入到MAC单元200中进行计算,同时按照该顺序依次将这九个权值数据写入到寄存器wReg8中。随着时钟翻转,数据在各自缓存寄存器组中前向传播,这一过程称为缓存单元100初始化状态,九个时钟周期后,缓存单元100初始化完毕,此时权值缓存寄存器组10I中的九个寄存器依次存放3×3卷积核该通道的权值数据,图像缓存寄存器组102中的六个寄存器,依次存放该通道输入特征图的p12、p22、p32、p13、p23以及p33这6个数据,即图像的第1~3行第2~3列的6个特征图数据。此时进入图像数据更新状态:此状态下,以九个时钟周期作为一个单位计算周期。此状态下外部不再向权值缓存寄存器写数据,权值缓存寄存器中的数据随时钟翻转进行内部循环,并将wReg0中的数据在时钟上升沿时送入到对应的MAC单元200中。而图像缓存寄存器则在一个单位计算周期中的前三个时钟周期向pReg5中依次写入当前卷积核在滑窗时要覆盖的下一列的三个新数据,若当前滑窗覆盖的是第i、i+1、i+2行,第j、j+1、j+2列的九个数据,那么要写入的则是第i、i+1、i+2行第j+3列的数据。在该单位计算周期的后六个时钟周期不再由外部向pReg5写数据,图像缓存寄存器中的数据随时钟翻转进行内部循环,并在每个时钟上升沿将pReg0的数据送入MAC单元200中进行计算。在每个单位时钟的最后一个时钟周期,外部送入输出使能信号wren,MAC单元200收到该信号时会将一个单位计算周期的九对数据的乘累加结果即卷积结果送入到求和树单元400中。
当卷积核大小为7×7,则所调用的权值缓存寄存器组中寄存器的个数为14个,所调用的图像缓存寄存器组的寄存器的个数为12个,参见图5A和图5B,其中,图5A为一个图像缓存寄存器在7×7卷积运算时的数据循环方式示意图,图5B为一个权值缓存寄存器在7×7卷积运算时的数据循环方式示意图,在此卷积模式下,由于卷积核窗口较大,若神经计算模块中每个MAC单元200都独立负责一个通道的卷积计算,势必需要缓存单元100调用大量的寄存器,功耗会大幅增加。因此每个神经元计算装置只计算一个通道的卷积计算。神经元计算装置中的每个MAC单元200分别负责7×7卷积窗口的两行数据的乘累加计算,第四个MAC只计算一行数据乘累加。具体的:本轮计算开始时,定义为缓存单元100初始化状态,该状态下,外部向缓存单元100#1,缓存单元100#2,缓存单元100#3,缓存单元100#4中分别按照先列后行的顺序依次写入图像数据和权值数据前七列的第一二行,第三四行,第五六行,第七行数据,写入的同时数据同步送入到相应的MAC单元200中进行第一个窗口的乘累加计算。14个时钟周期之后缓存单元100初始化完毕,同时也完成了第一个窗口的卷积计算,此时缓存单元100#1,缓存单元100#2,缓存单元100#3,缓存单元100#4内的各个权值缓存寄存器分别存储的是7×7卷积核的第一二行数据,第三四行数据,第五六行数据和第七行数据。缓存单元100#1,缓存单元100#2,缓存单元100#3,缓存单元100#4内的各个图像缓存寄存器分别存储的是图像第2~7列的第一二行数据,第三四行数据,第五六行数据和第七行数据。此时进入图像更新状态:此状态下,以14个时钟周期作为一个单位计算周期,各个缓存单元100内的权值缓存寄存器组101不再由外部向其写入数据,权值数据在该权值缓存寄存器组101中随时钟翻转内部前向循环,并在每个时钟上升沿将寄存器wReg0中的数据送入到相对应的MAC单元200中计算。各个缓存单元100内的图像缓存寄存器在单位计算周期的前两个时钟周期向pReg11中写入下一列的两个数据,后12个时钟周期不再由外部向该图像寄存器组102写入数据,图像数据在该图像寄存器组102中随时钟翻转前向循环,并在每个时钟上升沿将pReg0中的数据送入到相应的MAC单元200中计算。在每个单位时钟的最后一个时钟周期,外部送入输出使能信号wren,MAC单元200收到该信号时会将一个单位计算周期的14对数据的乘累加结果送入到求和树单元400中。经过求和树单元400的求和计算,所得到的求和结果就是一个通道的7×7卷积计算的结果。
当进行全连接计算时,芯片引入使能信号关闭缓存单元100,数据直接由外部存储模块送入到相应的MAC单元200中进行乘累加计算。在全连接计算时,如图3A和图3B中的输入1和输入2以及图5A和图5B中的输入3和输入4,数据直接输入MAC单元200不必输入缓存单元100。
神经元计算装置还包括扩展单元500,用于连接多个求和树单元400并实现多个求和树单元400输出结果的求和计算。扩展单元500为可选部分,当有多个神经元计算装置级联时,级联的多个神经元计算装置中只需要其中一个包含该扩展模块500即可,其余神经元计算装置可舍弃扩展模块500,从而节省资源与功耗。扩展单元500包括求和子单元、多路器以及Relu函数,其中,求和子单元用于对多个求和树单元400的结果进行求和运算,多路器用于根据神经网络结构选择是否对乘累加结果进行Relu非线性映射,,Relu函数用于神经网络卷积层的非线性映射。
以下通过一个3×3的卷积计算实施例,对本发明提出的神经元计算装置做进一步的详细说明。目前常用的卷积神经网络,3x3卷积核作用的卷积层的输入特征图像的通道数一般为4E,输出特征图的通道数一般为4F,因此就需要3×3×4E的卷积核4F个,因此在做输入特征图像通道数为4E的卷积运算时,本发明的一个神经元计算装置可并行对4个通道的3×3卷积核进行同步计算。使用F个本发明的神经元计算单元并行计算可直接生成输出特征图像的一个像素点。这里以一个本发明的神经元计算装置的计算为例,该实施例的神经元计算装置结构如图1所示。其中,输入的图像数据位宽为16bit,权值数据位宽为8bit,内部每个MAC单元200中存储Ai和Bi乘积结果的是两个24bit的寄存器MRegl、MReg2,每个MAC单元200中存储乘累加压缩结果的是两个32bit的寄存器MAReg1、MAReg2。求和树单元400中的三个4-2压缩阵列2021都是由32个4-2压缩器构成的,可进行4个32bit数据的压缩求和,求和树单元400中的加法器401位宽为32bit。激活函数部件使用的是Relu函数。
缓存单元100用于缓存输入数据,并根据缓存控制单元300按照一定的规则向对应的乘累加部件MAC单元200中输送数据。当进行3×3卷积计算时,缓存单元100中的权值缓存寄存器组101调用9个8bit寄存器,图像缓存寄存器组102调用6个16bit寄存器,未调用的寄存器不随时钟翻转,节省功耗。
当3×3卷积计算开始时,神经元计算装置中的四个缓存单元100首先处于初始化状态,此时外部按照先列后行的顺序依次向缓存单元100#1中写入输入特征图通道1前三行前三列的9个图像数据和当前3×3卷积核通道1的9个权值数据。同步地,分别按照这种规则向缓存单元100#2、缓存单元100#3、缓存单元100#4写入输入特征图通道2、通道3、通道4和当前卷积核通道2、通道3、通道4的图像和权值数据。各个缓存单元100中数据随时钟翻转的传播方式如图3A和3B所示。9个时钟周期后初始化完毕,此时缓存单元100#1中的权值缓存寄存器组101中存储有3×3卷积核通道1的权值数据,图像缓存寄存器组102中的6个16bit寄存器存储的是输入特征图通道1前三行第二列和第三列的6个图像数据。缓存单元100#2、缓存单元100#3、缓存单元100#4级权值缓存寄存器组101和图像缓存寄存器组102也分别存储通道2、通道3、通道4的相应位置的图像数据和权值数据。初始化完毕后进入图像数据更新状态,此状态下,以9个时钟周期作为一个单位计算周期。此状态下外部不再向权值缓存寄存器写数据,权值缓存寄存器中的数据随时钟翻转进行内部循环,并将各个缓存单元100的wReg0中的数据在时钟上升沿时送入对应的MAC单元200中。而图像缓存寄存器102在一个单位计算周期中的前三个时钟周期向pReg5中依次写入当前滑窗滑动后要覆盖的下一列的三个新数据,若当前滑窗覆盖的是第i、i+1、i+2行,第j、j+1、j+2列的9个数据,那么写入的则是第i、i+1、i+2行第j+3列的数据,在该单位计算周期的后6个时钟周期不再由外部向pReg5写数据,图像缓存寄存器中的数据随时钟翻转进行内部前向循环,并在每个时钟上升沿将寄存器pReg0的数据送入对应的MAC单元200中进行计算。在每个单位时钟的最后一个时钟周期,外部送入输出使能信号wren,神经元计算装置的四个MAC单元200收到该信号时会将一个单位计算周期内的9对数据的乘累加结果送入到求和树单元400中,其中,每个MAC单元200输出的一对数据的和,即是该MAC单元200所计算的图像通道滑窗内数据的乘累加结果,输出的乘累加结果ans可由如下表达式表示:
其中,c为通道,wkj为3×3卷积核当前通道的第k行第j列权值,pkj为卷积核窗口覆盖的图像区域的第k行第j列图像数据。
当人工智能芯片中有多个神经元计算装置级联时,需要其中一个神经元计算装置拥有扩展模块500。多个神经元的输出送入到扩展模块500中的求和树单元400中进行求和运算。对于当前实施例来说,若级联的神经元计算装置的个数为D,那么求和结果即是3×3×4D的卷积计算结果,根据需求有多路器选择,将该结果直接输出或送入到Relu激活函数中进行非线性映射,输出结果即是输出特征图的一个像素点。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种神经元计算装置,用于图像的卷积或全连接计算,所述装置包括多个缓存单元(100)、多个MAC单元(200)、缓存控制单元(300)以及求和树单元(400),其中:
多个缓存单元(100),每一所述缓存单元(100)包括多个寄存器,用于缓存图像数据和卷积核计算的权值数据,并将所述图像数据和权值数据按预设时间依次发送至所述MAC单元(200);
多个MAC单元(200),其与所述多个缓存单元(100)一一对应,用于依次对所述权值数据和图像数据进行乘累加计算或直接接收外部输入图像的数据并对所述数据进行乘累加计算,得到多个乘累加结果;其中,所述MAC单元(200)包括乘法子单元(201)和累加子单元(202),其中,所述乘法子单元(201)包括改进型Booth编码单元(2011)、部分积产生单元(2012)、部分积结构矫正单元(2013)以及wallace压缩树单元(2014),实现对所述权值数据和图像数据的乘法运算,得到两行部分积;所述累加子单元(202)包括4-2压缩阵列(2021)和两个寄存器MAReg(2022),其中,每一时钟周期对应一组图像数据和权值数据,所述4-2压缩阵列(2021)用于一个单位计算周期内一组图像和权值数据的乘积结果与前一组图像和权值数据的乘累加结果的累加压缩运算,生成乘累加结果,所述两个寄存器MAReg(2022)用于存储所述4-2压缩阵列(2021)的乘累加结果,并在完成所述单位计算周期的最后一个时钟周期对应的权值数据和图像数据的乘累加计算后,将所述乘累加结果输入所述4-2压缩阵列(2021);
缓存控制单元(300),用于控制所述缓存单元(100)调用所述寄存器的数量,控制所述缓存单元(100)每次向所述MAC单元(200)发送的图像数据和权值数据的数量以及定义单位计算周期所包含的时钟周期个数;所述控制所述缓存单元(100)每次向所述MAC单元发送的图像数据和权值数据的数量具体为:根据所述单位计算周期所述包含的时钟周期的个数确定所述缓存单元(100)每次向所述MAC单元(200)发送的图像数据和权值数据的个数,以使所述图像数据和权值数据的个数分别与所述时钟周期数相同;
求和树单元(400),用于对所述多个乘累加结果进行求和计算,得到所述图像的卷积计算结果。
2.根据权利要求1所述的神经元计算装置,其特征在于,所述预设时间为所述单位计算周期。
3.根据权利要求1所述的神经元计算装置,其特征在于,所述缓存单元(100)包括权值缓存寄存器组(101)和图像缓存寄存器组(102),分别用于缓存所述权值数据和图像数据,所述权值缓存寄存器组(101)和图像缓存寄存器组(102)均包括多个所述寄存器。
4.根据权利要求1所述的神经元计算装置,其特征在于,所述多个缓存单元(100)的个数为4个或8个,若所述缓存单元(100)的个数为4个,则所述求和树单元(400)包括3个4-2压缩阵列(2021)以及一加法器(401),若所述缓存单元(100)的个数为8个,则所述求和树单元(400)包括7个4-2压缩阵列(2021)以及一加法器(401),其中,每两个所述MAC单元(200)对应一4-2压缩阵列(2021),所述3个或7个4-2压缩阵列(2021)按树形排布,最底层的一4-2压缩阵列(2021)连接所述加法器(401)。
5.根据权利要求1或4所述的神经元计算装置,其特征在于,所述4-2压缩阵列(2021)包括多个4-2压缩器,每一所述4-2压缩器包括32×R个晶体管,其中,R为4-2压缩阵列(2021)的位宽。
6.根据权利要求1所述的神经元计算装置,其特征在于,还包括扩展单元(500),用于连接多个所述求和树单元(400)并实现多个所述求和树单元(400)输出结果的求和计算。
7.根据权利要求6所述的神经元计算装置,其特征在于,所述扩展单元(500)包括求和子单元、多路器以及Relu函数,其中,所述求和子单元用于对多个所述求和树单元(400)的结果进行求和运算,所述多路器用于根据神经网络结构选择是否对乘累加结果进行Relu非线性映射,Relu函数用于神经网络卷积层的非线性映射。
8.根据权利要求1所述的神经元计算装置,其特征在于,所述卷积核包括多种尺寸,所述缓存控制单元(300)根据所述卷积核的尺寸控制所述缓存单元(100)调用所述寄存器的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910259493.3A CN111767994B (zh) | 2019-04-01 | 2019-04-01 | 一种神经元计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910259493.3A CN111767994B (zh) | 2019-04-01 | 2019-04-01 | 一种神经元计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767994A CN111767994A (zh) | 2020-10-13 |
CN111767994B true CN111767994B (zh) | 2024-06-11 |
Family
ID=72718139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910259493.3A Active CN111767994B (zh) | 2019-04-01 | 2019-04-01 | 一种神经元计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767994B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382094B (zh) * | 2018-12-29 | 2021-11-30 | 深圳云天励飞技术有限公司 | 一种数据处理方法及装置 |
CN112612447B (zh) * | 2020-12-31 | 2023-12-08 | 安徽芯纪元科技有限公司 | 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法 |
CN113328998B (zh) * | 2021-05-14 | 2023-02-21 | 维沃移动通信有限公司 | 影像数据传输的方法和电子设备 |
CN113642724B (zh) * | 2021-08-11 | 2023-08-01 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
TWI796977B (zh) * | 2021-11-22 | 2023-03-21 | 旺宏電子股份有限公司 | 記憶體裝置及其操作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406812A (zh) * | 2015-10-02 | 2017-02-15 | 上海兆芯集成电路有限公司 | 微处理器和微处理器内的执行融合复合算术运算的方法 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN108701236A (zh) * | 2016-01-29 | 2018-10-23 | 快图有限公司 | 卷积神经网络 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10546211B2 (en) * | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
TWI634490B (zh) * | 2016-11-14 | 2018-09-01 | 美商耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
-
2019
- 2019-04-01 CN CN201910259493.3A patent/CN111767994B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406812A (zh) * | 2015-10-02 | 2017-02-15 | 上海兆芯集成电路有限公司 | 微处理器和微处理器内的执行融合复合算术运算的方法 |
CN108701236A (zh) * | 2016-01-29 | 2018-10-23 | 快图有限公司 | 卷积神经网络 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
Non-Patent Citations (1)
Title |
---|
一种基于FPGA的卷积神经网络加速器设计与实现;仇越;马文涛;柴志雷;;微电子学与计算机(第08期);第74-78、83页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111767994A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767994B (zh) | 一种神经元计算装置 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN108090560A (zh) | 基于fpga的lstm递归神经网络硬件加速器的设计方法 | |
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
CN107766935B (zh) | 多层人造神经网络 | |
US20220164663A1 (en) | Activation Compression Method for Deep Learning Acceleration | |
CN113298237B (zh) | 一种基于fpga的卷积神经网络片上训练加速器 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
US11797830B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
CN113033794B (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
CN111340198A (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
CN113313252B (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN114219699A (zh) | 匹配代价处理方法及电路和代价聚合处理方法 | |
Guo et al. | A high-efficiency fpga-based accelerator for binarized neural network | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN113240101A (zh) | 卷积神经网络软硬件协同加速的异构SoC实现方法 | |
CN107783935A (zh) | 基于动态精度可配运算的近似计算可重构阵列 | |
CN112906886B (zh) | 结果复用的可重构bnn硬件加速器及图像处理方法 | |
CN110751263B (zh) | 一种高并行度的卷积运算取数方法和电路 | |
US10908879B2 (en) | Fast vector multiplication and accumulation circuit | |
Solovyev et al. | Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations |
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 |