CN110956257A - 神经网络加速器 - Google Patents
神经网络加速器 Download PDFInfo
- Publication number
- CN110956257A CN110956257A CN201811126322.5A CN201811126322A CN110956257A CN 110956257 A CN110956257 A CN 110956257A CN 201811126322 A CN201811126322 A CN 201811126322A CN 110956257 A CN110956257 A CN 110956257A
- Authority
- CN
- China
- Prior art keywords
- adder
- storage unit
- layer
- neural network
- adders
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 83
- 241001442055 Vipera berus Species 0.000 claims abstract description 202
- 230000004913 activation Effects 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 39
- 102100034033 Alpha-adducin Human genes 0.000 description 27
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 27
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 27
- 239000011159 matrix material Substances 0.000 description 27
- 101001030591 Homo sapiens Mitochondrial ubiquitin ligase activator of NFKB 1 Proteins 0.000 description 15
- 102100038531 Mitochondrial ubiquitin ligase activator of NFKB 1 Human genes 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000007792 addition Methods 0.000 description 10
- 238000000034 method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000013256 coordination polymer Substances 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000000946 synaptic effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 102100024348 Beta-adducin Human genes 0.000 description 2
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种神经网络加速器,包括控制器、功能部件、第一存储单元、第二存储单元和第三存储单元,功能部件包括至少两个第一乘法器、加法器树和激活函数处理器,第一存储单元和第二存储单元分别与每个第一乘法器的输入端连接;每个第一乘法器的输出端分别与加法器树中对应的输入端连接;加法器树的输出端与激活函数处理器的输入端连接,激活函数处理器的输出端与第三存储单元连接;控制器分别与功能部件、第一存储单元、第二存储单元及第三存储单元连接,用于控制第一存储单元、第二存储单元、功能部件及第三存储单元之间的数据流。提高了神经网络加速器的应用范围。
Description
技术领域
本发明实施例涉及神经网络领域,尤其涉及一种神经网络加速器。
背景技术
随着科学技术的发展,神经网络的应用越来越广泛,神经网络需要依附于软件算法和计算机硬件。
目前,制约神经网络发展的主要因素为计算机硬件,为了为神经网络提供更可靠的计算机硬件,通常在传统的中央处理器(CPU,Central Processing Unit,简称CPU)中加入神经网络加速器,由神经网络加速器辅助CPU实现神经网络中的计算需求。在实际应用过程中,不同的神经网络的运算过程不同,在现有技术中,为了满足神经网络模型的运算需求,通常为神经网络设计特定的神经网络加速器,导致现有技术中的神经网络加速器的应用范围较小。
发明内容
本发明实施例提供一种神经网络加速器,提高了神经网络加速器的应用范围。
第一方面,本发明实施例提供一种神经网络加速器,包括:控制器、功能部件、第一存储单元、第二存储单元和第三存储单元,所述功能部件包括至少两个第一乘法器、加法器树和激活函数处理器,其中,所述第一存储单元和所述第二存储单元分别与每个第一乘法器的输入端连接;
每个第一乘法器的输出端与所述加法器树的输入端连接;
所述加法器树的输出端与所述激活函数处理器的输入端连接,所述激活函数处理器的输出端与所述第三存储单元连接;
所述控制器分别与所述功能部件、所述第一存储单元、所述第二存储单元及所述第三存储单元连接,用于控制所述第一存储单元、所述第二存储单元、所述功能部件及所述第三存储单元之间的数据流。
在一种可能的实施方式中,所述神经网络加速器还包括第一直接内存存取DMA,其中,
所述第一DMA分别与所述控制器和所述第一存储单元连接。
在另一种可能的实施方式中,所述神经网络加速器还包括第二DMA,其中,
所述第二DMA分别与所述控制器和所述第二存储单元连接。
在另一种可能的实施方式中,所述神经网络加速器还包括第三DMA,其中,
所述第三DMA分别与所述控制器和所述第三存储单元连接。
在另一种可能的实施方式中,所述功能部件包括2M个第一乘法器,所述加法器树中包括M层第一加法器,其中,
第i层第一加法器中包括2M-i个第一乘法器,所述i为大于或等于1,且小于或等于所述M的正整数;
第一层加法器中的第一加法器的输入端为所述加法器树的输入端;
第M层加法器中的第一加法器的输出端为所述加法器树的输出端。
在另一种可能的实施方式中,其特征在于,
第一层加法器中的第一加法器的输入端与对应的第一乘法器的输出端连接,所述第一层加法器中的第一加法器的输出端与第二层加法器中对应的第一加法器的输入端连接;
第j层加法器中的第一加法器的输入端与第j-1层加法器中对应的第一加法器的输出端连接,所述第j层加法器中的第一加法器的输出端与第j+1层加法器中对应的第一加法器的输入端连接,所述j为大于1且小于M的正整数;
第M层加法器中的第一加法器的输入端与第M-1层加法器中对应的第一加法器的输出端连接,所述第M层加法器中的第一加法器的输出端与所述激活函数处理器的输入端连接。
在另一种可能的实施方式中,所述神经网络加速器还包括第四存储单元,其中,所述第四存储单元与所述第M层加法器的输出端连接。
在另一种可能的实施方式中,所述激活函数处理器为分段线插值函数处理器。
在另一种可能的实施方式中,所述激活函数处理器包括第二乘法器和第二加法器,所述神经网络加速器还包括第五存储单元,所述第五存储单元中存储有第一参数和第二参数,其中,
所述第二乘法器的输入端分别与所述加法器树的输出端和所述第五存储单元连接,用于将所述第五存储单元中的所述第一参数和所述加法器树的输出结果相乘;
所述第二加法器的输入端分别与所述第二乘法器的输出端和所述第五存储单元连接,用于将所述第五存储单元中的所述第二参数与所述第二乘法器的输出结果相加。
在另一种可能的实施方式中,所述第一乘法器的个数为16个,加法器树中包括的第一加法器的个数为15个,所述15个第一加法器构成4层加法器树,其中,
所述4层加法器树的第一层包括8个第一加法器,所述8个第一加法器的输入端与对应的两个乘法器的输出端连接;
所述4层加法器树的第二层包括4个第一加法器;
所述4层加法器树的第三层包括2个第一加法器;
所述4层加法器树的第四层包括1个第一加法器,所述1个第一加法器的输出端与所述激活函数处理器的输入端连接。
本发明实施例提供的神经网络加速器,包括:控制器、功能部件、第一存储单元、第二存储单元和第三存储单元,功能部件包括至少两个第一乘法器、加法器树和激活函数处理器,加法器树中包括至少一个第一加法器,其中,第一存储单元和第二存储单元分别与每个第一乘法器的输入端连接;每个第一乘法器的输出端分别与加法器树中对应的输入端连接;加法器树的输出端与激活函数处理器的输入端和第三存储单元连接,激活函数处理器的输出端与第三存储单元连接;控制器分别与功能部件、第一存储单元、第二存储单元及第三存储单元连接,用于控制第一存储单元、第二存储单元、功能部件及第三存储单元之间的数据流。在上述过程中,当神经网络发生变化时,只需要改变控制对第一存储单元、第二存储单元、功能部件及第三存储单元之间的数据流的控制即可,使得神经网络加速器可以适用于各种神经网络,进而提高神经网络加速器的应用范围。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的神经网络加速器的结构示意图一;
图2为本发明实施例提供的3层加法器树的结构示意图;
图3为本发明实施例提供的神经网络加速器的结构示意图二;
图4为本发明实施例提供的激活函数处理器的结构示意图;
图5为本发明实施例提供的控制指令类型及格式示意图;
图6为本发明实施例提供的控制指令示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请所示的神经网络加速器是以神经网络架构为基础进行设计的,为了便于对神经网络加速器的理解,首先对神经网络架构进行介绍。
在实际应用过程中,尽管神经网络的形式存在多样性,但是,每种神经网络均可以看成是多个网络层的堆叠,该多个网络层串行执行,且每个网络层相互独立。根据计算特征来分,可以将网络层分为三种:卷积层、归并层(或者称为二次抽样层)和分类层。每个网络层都有自己的输入特征阵列、权值阵列和输出特征阵列。分类层计算过程可以包括突触权值与输入数据的乘法、所有乘积的加法、归并操作。卷积层的计算过程可以包括突触权值与输入数据的乘法、所有乘积的加法、归并操作。归并层的计算过程可以包括输入数据的加法和归并操作。
由上可知,神经网络中的运算可以划分为三种通用的运算:突触权值与输入数据的乘法、所有乘积的加法和归并操作;基于此,本申请涉及的神经网络加速器包含的第一乘法器可以实现对突触权值与输入数据的乘法操作,加法器树可以实现对所有乘积的加法操作,激活函数处理器可以实现归并操作,即本申请涉及的神经网络加速器可以实现上述三种通用的运算,并且通过对第一乘法器数量和加法器树中第一加法器数量的更改,可以使神经网络加速器适用于各种神经网络,进而提高神经网络加速器的应用范围。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行重复说明。
图1为本发明实施例提供的神经网络加速器的结构示意图一。请参见图1,包括控制器11、功能部件12、第一存储单元13、第二存储单元14和第三存储单元15,其中,所述功能部件12包括至少两个第一乘法器MUL1、加法器树121和激活函数处理器F,其中,
第一存储单元13和第二存储单元14分别与每个第一乘法器MUL1的输入端连接。
每个第一乘法器MUL1的输出端分别与加法器树121中对应的输入端连接。
加法器树121的输出端与激活函数处理器F的输入端连接,激活函数处理器F的输出端与第三存储单元15连接。
控制器11分别与功能部件12、第一存储单元13、第二存储单元14及第三存储单元15连接,用于控制所述第一存储单元13、第二存储单元14、功能部件12及第三存储单元15之间的数据流。
可选的,第一存储单元13和第二存储单元14还可以与神经网络加速器对应的内存连接,以使控制器11可以将内存中的数据传输至第一存储单元和第二存储单元。
可选的,第一存储单元13用于存储输入数据,输入数据通常为矩阵。
可选的,第二存储单元14用于存储输入数据对应的权值数据。
例如,当输入数据为一个输入矩阵时,该输入矩阵对应的权值数据可以为一个数据,该一个数据表示输入矩阵中所有元素的权值。该矩阵对应的权值数据还可以为一个权值矩阵,权值矩阵的尺寸与输入矩阵的尺寸相同,权值矩阵中的元素分别表示输入矩阵中对应的元素的权值。
可选的,本发明实施例所示的数据流可以为神经网络加速器中任意两个部件之间传递的数据。例如,数据流可以为向第一存储单元13中存储的数据、向第二存储单元14中存储的数据、功能部件12中第一乘法器MUL1输出的数据等。
在控制器11从内存中向第一存储单元13中传输数据时,根据功能部件12中包括的第一乘法器MUL1的个数确定向第一存储单元13中传输数据的个数。例如,当功能部件12中包括16个乘法器,则控制器11每次最多可以向第一存储单元13中传输16个数据,当数据为矩阵时,则控制器11每次最多可以向第一存储单元13中传输16个矩阵。
可选的,控制器11同步向第一存储单元13和第二存储单元14中传输数据,且向第二存储单元14中传输的数据为向第一存储单元13中传输的数据对应的权值。
例如,假设控制器11同时向第一存储单元13中传输16个数据,则控制器11同时向第二存储单元14中传输该16个数据对应的权值。
可选的,控制器11将第一存储单元13和第二存储单元14中对应的不同组数据传输至不同的乘法器,以使一个乘法器对一组数据(一个第一存储单元13中的数据和一个第二存储单元14中的权值,该权值为第一存储单元13中数据相对应的权值)进行相乘操作。
例如,假设第一存储单元13中包括16个数据,分别记为数据1-数据16。第二存储单元14中包括该16个数据的权值,分别记为权值1-权值16,第一存储单元13中包括的任意一数据与第二存储单元14中包括的与该任意一数据拥有相同编号的权值相对应,如数据1对应的权值为权值1。功能部件12中包括的第一乘法器的个数为16个,分别记为乘法器1-乘法器16。则控制器11将数据1和权值1传输给乘法器1,以使乘法器1将数据1和权值1进行相乘操作,将数据2和权值2传输给乘法器2,以使乘法器2将数据2和权值2进行相乘操作,依次类推,直至将该16个数据和16个权值分别传输至不同的乘法器。
可选的,加法器树121中包括至少一个第一加法器ADD1。
可选的,当功能部件12包括2M个第一乘法器MUL1时,加法器树121中包括M层第一加法器ADD1,其中,第i层第一加法器ADD1中包括2M-i个第一加法器,i为大于或等于1,且小于或等于M的正整数;第一层加法器中的第一加法器ADD1的输入端为加法器树121的输入端;第M层加法器中的第一加法器ADD1的输出端为加法器树121的输出端。
其中,第一层加法器中的第一加法器ADD1的输入端与对应的第一乘法器MUL1的输出端连接,第一层加法器中的第一加法器ADD1的输出端与第二层加法器中对应的第一加法器ADD1的输入端连接。
第j层加法器中的第一加法器ADD1的输入端与第j-1层加法器中对应的第一加法器ADD1的输出端连接,第j层加法器中的第一加法器ADD1的输出端与第j+1层加法器中对应的第一加法器ADD1的输入端连接,j为大于1且小于M的正整数。
第M层加法器中的第一加法器ADD1的输入端与第M-1层加法器中对应的第一加法器ADD1的输出端连接,第M层加法器中的第一加法器ADD1的输出端与激活函数处理器F的输入端连接。
例如,假设第一乘法器MUL1的个数为16个,则加法器树121中包括4层第一加法器ADD1,其中,第一层包括8个第一加法器ADD1,第二层包括4个第一加法器ADD1,第三层包括2个第一加法器ADD1,第四层包括1个第一加法器ADD1。
例如,假设第一乘法器MUL1的个数为8个,则加法器树121中包括3层第一加法器ADD1,其中,第一层包括4个第一加法器ADD1,第二层包括2个第一加法器ADD1,第三层包括1个第一加法器ADD1。
下面,结合图2对该3层加法器树121的连接关系进行详细说明。
图2为本发明实施例提供的3层加法器树121的结构示意图。请参见图2,加法器树121中包括7个第一加法器ADD1,分别记为ADD1-1、ADD1-2、……、ADD1-7,第一层包括ADD1-1、ADD1-2、ADD1-3、ADD1-4,第二层包括ADD1-5、ADD1-6,第三层包括ADD1-7。
再假设神经网络加速器包括8个第一乘法器MUL1,分别记为MUL1-1、MUL1-2、……、MUL1-8,该8个第一乘法器MUL1与第一加法器ADD1的连接关系、以及第一加法器ADD1之间的连接关系可以如图2所示。
下面,通过具体示例,对图1实施例所示的神经网络加速器的运算过程进行详细说明。
示例性的,假设神经网络加速器中一共包括16个第一乘法器MUL1,分别记为乘法器1-乘法器16,加法器树121包括15个第一加法器ADD1,分别记为加法器1-加法器15,假设神经网络需要对数据依次进行乘法、加法和激活处理(sigmoid操作),则该神经网络加速器的运算过程可以如下:
控制器11将内存中的16个输入矩阵传输至第一存储单元13,该16个输入矩阵分别记为输入矩阵1-输入矩阵16。
控制器11将内存中的16个权值矩阵传输至第二存储单元14,该16个权值矩阵分别记为权值矩阵1-权值矩阵16。
控制器11将输入矩阵1和权值矩阵1传输给乘法器1,将输入矩阵2和权值矩阵2传输给乘法器2,以此类推,直至将输入矩阵16和权值矩阵16传输给乘法器16。需要说明的是,控制器11可以并行将不同的输入矩阵和权值矩阵传输至不同的第一乘法器MUL1。
乘法器1对输入矩阵1和权值矩阵1中的元素进行对应相乘,乘法器2对输入矩阵2和权值矩阵2中的元素进行对应相乘,以此类推,乘法器16对输入矩阵16和权值矩阵16中的元素进行对应相乘。
控制器11控制将乘法器的输出结果传输给加法器树121中的第一层加法器,例如,控制器11控制将乘法器1和乘法器2的输出结果传输给加法器1,将乘法器3和乘法器3的输出结果传输至加法器2,依次类推,将乘法器15和乘法器16的输出结果传输至加法器8。
加法器1对乘法器1和乘法器2的输出结果进行相加操作,加法器2对乘法器3和乘法器4的输出结果进行相加操作,依次类推,加法器8对乘法器15和乘法器16的输出结果进行相加操作。
控制器11还控制将第一层加法器的输出结果传输给第二层加法器,将第二层加法器的输出结果传输给第三层加法器,将第三层加法器的输出结果传输给第四层加法器,将第四层加法器的输出结果传输给激活函数处理器F。
激活函数处理器F将处理结果输出至第三存储单元15。
本发明实施例提供的神经网络加速器,包括控制器11、功能部件12、第一存储单元13、第二存储单元14和第三存储单元15,功能部件12包括至少两个第一乘法器MUL1、加法器树121和激活函数处理器F,加法器树121中包括至少一个第一加法器ADD1,其中,第一存储单元13和第二存储单元14分别与每个第一乘法器MUL1的输入端连接;每个第一乘法器MUL1的输出端与加法器树121中对应的输入端连接;加法器树121的输出端与激活函数处理器F的输入端连接,激活函数处理器F的输出端与第三存储单元15连接;控制器11分别与功能部件12、第一存储单元13、第二存储单元14及第三存储单元15连接,用于控制第一存储单元13、第二存储单元14、功能部件12及第三存储单元15之间的数据流。在上述过程中,当神经网络发生变化时,只需要改变控制器11对第一存储单元13、第二存储单元14、功能部件12及第三存储单元15之间的数据流的控制即可,使得神经网络加速器可以适用于各种神经网络,进而提高神经网络加速器的应用范围。
图3为本发明实施例提供的神经网络加速器的结构示意图二。在图1所示实施例的基础上,请参见图3,神经网络加速器还包括第一直接内存存取(Direct Memory Access,简称DMA)16、第二DMA17和第三DMA18。
其中,第一DMA16分别与控制器11和第一存储单元13连接;第二DMA17分别与控制器11和第二存储单元14连接;第三DMA18分别与控制器11和第三存储单元15连接。
通过第一DMA16控制第一存储单元13中数据的读写,通过第二DMA17控制第二存储单元14中数据的读写,通过第三DMA18控制第三存储单元15中数据的读写,不但可以减轻控制器11的负担,还可以提高数据的读写效率。
请参见图3,神经网络加速器还包括第四存储单元19,其中,
第四存储单元19与第M层加法器的输出端连接。这样,第四存储单元19可以存储第M层加法器的输出结果。
在上述任意一个实施例的基础上,可选的,激活函数处理器F可以通过第二乘法器和第二加法器实现。当激活函数处理器F通过第二乘法器和第二加法器实现时,神经网络加速器中还包括第五存储单元110,其中,在第五存储单元110中存储有第一参数和第二参数,其中,第一参数和第二参数为预设的。
下面,结合图4对激活函数处理器F的结构进行介绍。
图4为本发明实施例提供的激活函数处理器的结构示意图。请参见图4,激活函数处理器F包括第二乘法器MUL2和第二加法器ADD2,其中,
第二乘法器MUL2的输入端分别与加法器树121的输出端和第五存储单元110连接,用于将第五存储单元110中的第一参数和加法器树121的输出结果相乘。
第二加法器ADD2的输入端分别与第二乘法器MUL2的输出端和第五存储单元110连接,用于将第五存储单元110中的第二参数与第二乘法器的输出结果相加。
可选的,激活函数可以为分段插值函数。
例如,分段插值函数可以为f(x)=ax+b,其中,a为第一参数,b为第二参数,x为加法器的输出结果。
在上述任意一个实施例的基础上,通过将主要的存储区域划分为了第一存储单元13、第二存储单元14和第三存储单元15,实现了分块存储。通过分块存储,可以实现对静态随机存取存储器(Static Random-Access Memory,SRAM)的读写位宽进行定制。例如,可以将第一存储单元13和第三存储单元15的位宽设置为Tn*2个字节,将第二存储单元14的位宽设置为Tn*Tn*2个字节,其中,Tn为神经网络中神经元的个数。这样,在保证数据传输效率的前提下可以避免资源的浪费。
由于为了更高的效率和更低的功耗会将存储模块设计的非常小,那么访存数据时产生冲突就显得不可避免了。在本申请中,通过分块存储,可以避免缓存读写可能出现的冲突。
在上述任意一个实施例的基础上,在实际应用过程中,控制器11通过控制指令,对第一存储单元13、第二存储单元14、功能部件12及第三存储单元15之间的数据流进行控制时。
例如,假设处理器为CP,假设第一存储单元13为NBin,第二存储单元14为SB,第三存储单元15为NBOUT,功能部件12为NFU,功能部件12NFU中的乘法器为NFU-1,功能部件12NFU中的加法器为NFU-2,功能部件12NFU中的激活函数处理器F为NFU-3,则控制指令的类型及格式可以如图5所示。
图5为本发明实施例提供的控制指令类型及格式示意图。请参见图5,包括了CP、NBin、SB、NBOUT、和NFU对应的控制指令。
在实际应用过程中,控制指令可以如图6所示。图6为本发明实施例提供的控制指令示意图。请参见图6,包括了在神经网络加速器运行过程中,生成的CP、NBin、SB、NBOUT、和NFU对应的控制指令。
下面,对本申请提供的神经网络加速器的测试情况进行说明。
可以在神经网络专用Benchmark测试工具的10个测试程序上对三种平台进行神经网络处理的实验,该三种平台分别为:传统CPU的单指令多数据流(Single InstructionMultiple Data,简称SIMD)平台、图形处理器(Graphics Processing Unit,简称GPU)环境的统一计算设备架构(Compute Unified Device Architecture,简称CUDA)加速平台、以及专用神经网络加速器(Dedicated neural network accelerator,DNNA)平台。
最近一些大规模实际问题当中抽取出了深度神经网络以及卷积神经网络模型,包含了相当规模的分类层、卷积层以及归并层。这些神经网络层的详细信息及特点如表1所示:
表1
在传统CPU的SIMD实验平台中,采用GEM5+McPAT的组合。选用的模拟器配置是四发射超标量x86核心,拥有128位的SIMD功能部件,使用SSE/SSE2指令集,频率是2GHz。该核心有192路重排序缓存(Re-order Buffer,简称ROB),64路的load/store队列。其L1数据缓存是32KB,L2缓存是2MB,这两个缓存都是8路缓存行大小都是64字节。一级缓存的未命中延迟是10个cycle,二级缓存的未命中延迟是250个cycle,内存总线位宽是256位。对于程序的功耗分析我们采用的都是McPAT的功耗模型。
SIMD的实现方式是核心部分用汇编直接书写来保证指令性能的充分发挥,而不是通过函数调用方式实现。在编译阶段使用了-O的编译选项,来确保编译器不会对核心代码进行调整修改。为了进一步探究SIMD核心对于性能的影响,还实现了不同benchmark程序的普C++版本。在一般情况下SIMD核心能够实现3.92倍的执行时间的提升以及3.74倍的能量使用效率提升。这也证明了SIMD代码加速的有效性。
在GPU环境的CUDA加速平台中,可以选取了NVIDIA的fermi架构的C2070GPU平台。C2070的参数如表2所示:
表2
在DNNA平台中,可以确定Tn为16,即有16个神经元,每个神经元都有16个突触连接,这要求功能部件中中有256个16位截断乘法器(在卷积层和分类层使用的),且功能部件中的加法器能够做15个数加法,这样的加法器需要16个(如果归并层使用了平均归并,那么三种神经网络层都需要),以及16个移位器和最大值选择器(归并层需求),16个16位截断乘法器和16位加法器(分类层和卷积层使用)。对分类层和卷积层来说,第一乘法器和第二乘法器每个循环都工作,因此每个循环能够完成496个定点操作,在0.98GHz频率下的计算能力是452GOP/s,在有数据达到激活函数处理器时,第一乘法器和第一加法器当中依然有数据在计算,这个时候能够达到峰值性能,每个循环能执行528个定点操作,即482GOP/s。
由上实验数据表明,本申请所示的神经网络加速器在性能上相比于SIMD基准平台有平均107.87倍的提升,在功耗利用率上有平均21.08倍的提升,而面积则仅相当于IvyBridge架构的1.87%。相比于GPU,本申请所示的专用神经网络加速器在性能上有平均0.22倍的提升,而面积上则仅有GPUC2070片上面积的0.56%。
Claims (10)
1.一种神经网络加速器,其特征在于,包括:控制器、功能部件、第一存储单元、第二存储单元和第三存储单元,所述功能部件包括至少两个第一乘法器、加法器树和激活函数处理器,其中,
所述第一存储单元和所述第二存储单元分别与每个第一乘法器的输入端连接;
每个第一乘法器的输出端与所述加法器树的输入端连接;
所述加法器树的输出端与所述激活函数处理器的输入端连接,所述激活函数处理器的输出端与所述第三存储单元连接;
所述控制器分别与所述功能部件、所述第一存储单元、所述第二存储单元及所述第三存储单元连接,用于控制所述第一存储单元、所述第二存储单元、所述功能部件及所述第三存储单元之间的数据流。
2.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络加速器还包括第一直接内存存取DMA,其中,
所述第一DMA分别与所述控制器和所述第一存储单元连接。
3.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络加速器还包括第二DMA,其中,
所述第二DMA分别与所述控制器和所述第二存储单元连接。
4.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络加速器还包括第三DMA,其中,
所述第三DMA分别与所述控制器和所述第三存储单元连接。
5.根据权利要求1所述的神经网络加速器,其特征在于,所述功能部件包括2M个第一乘法器,所述加法器树中包括M层第一加法器,其中,
第i层第一加法器中包括2M-i个第一乘法器,所述i为大于或等于1,且小于或等于所述M的正整数;
第一层加法器中的第一加法器的输入端为所述加法器树的输入端;
第M层加法器中的第一加法器的输出端为所述加法器树的输出端。
6.根据权利要求5所述的神经网络加速器,其特征在于,
第一层加法器中的第一加法器的输入端与对应的第一乘法器的输出端连接,所述第一层加法器中的第一加法器的输出端与第二层加法器中对应的第一加法器的输入端连接;
第j层加法器中的第一加法器的输入端与第j-1层加法器中对应的第一加法器的输出端连接,所述第j层加法器中的第一加法器的输出端与第j+1层加法器中对应的第一加法器的输入端连接,所述j为大于1且小于M的正整数;
第M层加法器中的第一加法器的输入端与第M-1层加法器中对应的第一加法器的输出端连接,所述第M层加法器中的第一加法器的输出端与所述激活函数处理器的输入端连接。
7.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络加速器还包括第四存储单元,其中,所述第四存储单元与所述第M层加法器的输出端连接。
8.根据权利要求1-7任一项所述的神经网络加速器,其特征在于,所述激活函数处理器为分段线插值函数处理器。
9.根据权利要求8所述的神经网络加速器,其特征在于,所述激活函数处理器包括第二乘法器和第二加法器,所述神经网络加速器还包括第五存储单元,所述第五存储单元中存储有第一参数和第二参数,其中,
所述第二乘法器的输入端分别与所述加法器树的输出端和所述第五存储单元连接,用于将所述第五存储单元中的所述第一参数和所述加法器树的输出结果相乘;
所述第二加法器的输入端分别与所述第二乘法器的输出端和所述第五存储单元连接,用于将所述第五存储单元中的所述第二参数与所述第二乘法器的输出结果相加。
10.根据权利要求6所述的神经网络加速器,其特征在于,所述第一乘法器的个数为16个,加法器树中包括的第一加法器的个数为15个,所述15个第一加法器构成4层加法器树,其中,
所述4层加法器树的第一层包括8个第一加法器,所述8个第一加法器的输入端与对应的两个乘法器的输出端连接;
所述4层加法器树的第二层包括4个第一加法器;
所述4层加法器树的第三层包括2个第一加法器;
所述4层加法器树的第四层包括1个第一加法器,所述1个第一加法器的输出端与所述激活函数处理器的输入端连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126322.5A CN110956257A (zh) | 2018-09-26 | 2018-09-26 | 神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126322.5A CN110956257A (zh) | 2018-09-26 | 2018-09-26 | 神经网络加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110956257A true CN110956257A (zh) | 2020-04-03 |
Family
ID=69966173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811126322.5A Pending CN110956257A (zh) | 2018-09-26 | 2018-09-26 | 神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110956257A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1516070A (zh) * | 2003-01-08 | 2004-07-28 | 剑 王 | 一种联想记忆神经网络 |
CN105893159A (zh) * | 2016-06-21 | 2016-08-24 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
US20170011288A1 (en) * | 2015-07-10 | 2017-01-12 | Samsung Electronics Co., Ltd. | Neural network processor |
CN106485317A (zh) * | 2016-09-26 | 2017-03-08 | 上海新储集成电路有限公司 | 一种神经网络加速器以及神经网络模型的实现方法 |
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
US20180121796A1 (en) * | 2016-11-03 | 2018-05-03 | Intel Corporation | Flexible neural network accelerator and methods therefor |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
-
2018
- 2018-09-26 CN CN201811126322.5A patent/CN110956257A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1516070A (zh) * | 2003-01-08 | 2004-07-28 | 剑 王 | 一种联想记忆神经网络 |
US20170011288A1 (en) * | 2015-07-10 | 2017-01-12 | Samsung Electronics Co., Ltd. | Neural network processor |
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN105893159A (zh) * | 2016-06-21 | 2016-08-24 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN106485317A (zh) * | 2016-09-26 | 2017-03-08 | 上海新储集成电路有限公司 | 一种神经网络加速器以及神经网络模型的实现方法 |
US20180121796A1 (en) * | 2016-11-03 | 2018-05-03 | Intel Corporation | Flexible neural network accelerator and methods therefor |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107689948B (zh) | 应用于神经网络硬件加速系统的高效数据访存管理装置 | |
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN108427990A (zh) | 神经网络计算系统和方法 | |
CN112633505B (zh) | 一种基于risc-v的人工智能推理方法和系统 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
WO2021115208A1 (zh) | 神经网络处理器、芯片和电子设备 | |
CN113762493A (zh) | 神经网络模型的压缩方法、装置、加速单元和计算系统 | |
CN111859277B (zh) | 一种稀疏矩阵向量乘法向量化实现方法 | |
WO2022142479A1 (zh) | 一种硬件加速器、数据处理方法、系统级芯片及介质 | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
CN110490317B (zh) | 神经网络运算装置及运算方法 | |
CN114897133A (zh) | 一种通用可配置的Transformer硬件加速器及其实现方法 | |
US20190272460A1 (en) | Configurable neural network processor for machine learning workloads | |
CN117234720A (zh) | 动态可配置的存算融合数据缓存结构、处理器及电子设备 | |
CN110956257A (zh) | 神经网络加速器 | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
CN113705794B (zh) | 一种基于动态激活位稀疏的神经网络加速器设计方法 | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
CN220983883U (zh) | 矩阵计算装置、小芯片设备及人工智能加速器装置 | |
Chiu et al. | Design and Implementation of the Link-List DMA Controller for High Bandwidth Data Streaming |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200403 |