CN110991630A - 一种面向边缘计算的卷积神经网络处理器 - Google Patents
一种面向边缘计算的卷积神经网络处理器 Download PDFInfo
- Publication number
- CN110991630A CN110991630A CN201911091701.XA CN201911091701A CN110991630A CN 110991630 A CN110991630 A CN 110991630A CN 201911091701 A CN201911091701 A CN 201911091701A CN 110991630 A CN110991630 A CN 110991630A
- Authority
- CN
- China
- Prior art keywords
- input
- unit
- bit
- data
- calculation
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 130
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 47
- 238000011176 pooling Methods 0.000 claims abstract description 45
- 230000004913 activation Effects 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 30
- 238000010586 diagram Methods 0.000 claims description 69
- 230000010349 pulsation Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 7
- 238000004260 weight control Methods 0.000 claims description 6
- 230000003213 activating effect Effects 0.000 claims description 2
- 239000011159 matrix material Substances 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 27
- 238000013507 mapping Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 239000002360 explosive Substances 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一种面向边缘计算的卷积神经网络处理器,提出一种简易的针对卷积神经网络的控制指令,可以实现卷积层、池化层、ReLU激活函数以及全连接层等卷积神经网络基本运算,并通过指令的组合排序,实现加速器面向卷积神经网络的的适用性。加速器实现一种高效的脉动计算阵列,可以实现在数据读取过程中,最大限度增加数据的重用性,减少脉动计算阵列对数据缓存单元的访问次数。加速器同时支持16位定点数和8位定点数两种数据精度的计算,并可以实现同一个网络不同层混合精度的计算,极大降低加速器功耗。本发明的加速器保证了最少的数据在缓存部分的调度次数,降低功耗,同时,卷积层计算和全连接层计算共用同一个脉动计算阵列,极大提高了资源利用率。
Description
技术领域
本发明涉及一种卷积神经网络处理器。特别是涉及一种面向边缘计算的卷积神经网络处理器。
背景技术
近些年来,云计算已经成为一种越来越主流的趋势。云计算使得公司能够在自己的物理硬件之外,通过远程服务器网络(俗称“云”)存储和处理数据(以及其他的计算任务)。云计算的整合和集中化性质被证明具有较高的成本效益和灵活性,但物联网和移动计算的兴起给网络带宽带来了不小的压力。最终,并不是所有的智能设备都需要利用云计算来运行。在某些情况下,这种数据的往返传输需要尽量减少或避免。同时,随着IoT(物联网)的蓬勃发展和无线网络的普及,网络边缘设备(移动终端、传感器等)数量和产生的数据都在快速增长,根据IDC预测,到2020年全球数据总量将大于40ZB(zettabyte),而物联网产生数据的45%都将在网络边缘处理。在这种情况下,以云计算模型为核心的集中式处理模式将无法高效处理边缘设备产生的数据。在万物互联的背景下,集中式云计算处理模型(传统云计算)主要有4个不足:实时性差、带宽不足、能耗较大、不利于数据安全和隐私[2-4]。为了解决以上问题,面向边缘设备所产生海量数据计算的边缘计算模型应运而生,边缘计算是在网络边缘执行计算的一种新型计算模型,其所操作的对象包括来自云服务的下行数据和来自万物互联服务的上行数据,而边缘计算的边缘是指从数据源到云计算中心路径之间的任何计算和网络资源。边缘计算模型具有3个明显优势:在网络边缘处理大量临时数据,不再全部上传云端,极大减轻了网络带宽和数据中心功耗的压力;在靠近数据生产者处处理数据,大大减少了***延迟,缩短了服务响应时间;边缘计算将用户隐私数据不再上传,保护了用户数据安全和隐私。
随着边缘计算时代的到来,人工智能(AI)逐渐从云端向边缘设备迁移。例如,自动驾驶汽车,它需要通过大量的传感器来收集数据,Intel在2016年的报告中指出,一辆自动驾驶车辆一天产生的数据为4TB。为了使得车辆能够安全可靠地运行,自动驾驶***需要立即对周围的环境做出反应。这种场景下,任何延迟都有可能是致命的,考虑到中央服务器来回传送数据可能需要几秒钟的时间,这些数据无法全部上传至云端处理器,需要在边缘计算节点中存储和计算。又如,计算机视觉的迅猛发展,对图像传感器提出了智能处理的挑战,即图像传感器不再仅仅是图像采集设备,同时还需要做出本地的、实时的、智能的决策、例如分类、识别、跟踪等任务、识别、跟踪等任务。如今,从消费者到企业应用程序,AI无处不在。随着连接设备的***式增长,再加上对隐私/机密性、低延迟和带宽限制的需求,在云中训练的AI模型越来越需要在边缘上运行。在众多AI模型中,深度学习模型由于拥有多重表现层的特征,已被广泛应用在了图像识别、语音识别、自然语言处理及智能管理等领域,而这些应用领域也是边缘设备上最为常见的应用。
卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法,其独特的网络结构可以有效地降低反馈神经网络的复杂性,特别是在模式分类领域,由于卷积神经网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。一般地,卷积神经网络的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。
发明内容
本发明所要解决的技术问题是,提供一种能够极大提高资源利用率面向边缘计算的卷积神经网络处理器。
本发明所采用的技术方案是:一种面向边缘计算的卷积神经网络处理器,包括有:
指令缓存单元,用于存储面向卷积神经网络的指令集;
译码器,用于从指令缓存单元读取指令,并根据指令类型,读取指令类型对应长度的参数,根据参数类型输出相应类型的启动信号;
控制单元,接收译码器输出的启动信号,并根据启动信号的类型,启动相应类型的控制子单元输出控制信号;
输入特征图缓存单元,保存有卷积计算过程中所需要的输入特征图数据,根据所接收的控制单元输出的控制信号,输出相应的输入特征图数据;
中间结果缓存单元,保存有计算过程中所产生的中间数据,根据所接收的控制单元输出的控制信号,进行读取和输出相应的中间数据;
权重缓存单元,保存有卷积计算过程中所需要的权重数据,根据所接收的控制单元输出的控制信号,输出相应的权重数据;
处理单元,根据所接收的控制单元输出的控制信号,从输入特征图缓存单元接收输入特征图数据,从中间结果缓存单元接收中间数据,以及从权重缓存单元接收权重数据,并对输入特征图数据、中间数据以及权重数据进行相应的处理,并将处理后的输入特征图数据存入输入特征图缓存单元,将处理后的中间数据存入中间结果缓存单元。
本发明的一种面向边缘计算的卷积神经网络处理器,为了支持现有的多种卷积神经网络,提出一种简易的针对卷积神经网络的控制指令,可以实现卷积层、池化层、ReLU激活函数以及全连接层等卷积神经网络基本运算,并通过指令的组合排序,实现加速器面向卷积神经网络的的适用性。加速器实现一种高效的脉动计算阵列,可以实现在数据读取过程中,最大限度增加数据的重用性,减少脉动计算阵列对数据缓存单元的访问次数。加速器同时支持16位定点数和8位定点数两种数据精度的计算,并可以实现同一个网络不同层混合精度的计算,极大降低加速器功耗。本发明的加速器保证了最少的数据在缓存部分的调度次数,降低功耗,同时,卷积层计算和全连接层计算共用同一个脉动计算阵列,极大提高了资源利用率。
附图说明
图1是本发明的一种面向边缘计算的卷积神经网络处理器的整体构成框图;
图2是本发明中脉动计算阵列的整体构成框图;
图3是脉动计算阵列中乘加计算单元的整体构成框图;
图4是本发明中激活函数计算单元的整体构成框图;
图5是本发明中池化计算单元的整体构成框图。
其中
1:指令缓存单元 2:译码器
3:控制单元 3.1:输入特征图控制子单元
3.2:权重控制子单元 3.3:脉动计算阵列控制子单元
3.4:激活函数控制子单元 3.5:池化控制子单元
3.6:中间结果控制子单元 4:输入特征图缓存单元
5:中间结果缓存单元 6:权重缓存单元
7:处理单元 7.1:移位寄存器组
7.1.1:输入特征图移位寄存器组 7.1.2:权重移位寄存器组
7.2:脉动计算阵列 7.2.1:乘加计算单元
7.3:激活函数计算单元 7.3.1:比较器
7.3.2:零值寄存器 7.3.3:多路选择器
7:池化计算单元 7.4.1:比较器
7.4.2:结果寄存器 7.4.3:乘法器
7.4.4:加法器 7.4.5:平均值常数寄存器
具体实施方式
下面结合实施例和附图对本发明的一种面向边缘计算的卷积神经网络处理器做出详细说明。
本发明的一种面向边缘计算的卷积神经网络处理器,在该架构中,1)提出一种简单的指令集架构,包含了卷积神经网络中的常见计算模式:卷积计算、池化操作、全连接计算、激活函数,通过多条指令完成卷积神经网络运算。2)设计一种脉动计算阵列,同时支持卷积层计算与全连接层计算。3)设计池化计算单元,完成池化层计算。4)设计激活函数计算单元,完成卷积神经网络中激活函数计算。
如图1所示,本发明的一种面向边缘计算的卷积神经网络处理器,包括有:指令缓存单元1、译码器2、控制单元3、输入特征图缓存单元4、中间结果缓存单元5、权重缓存单元6和处理单元7。其中,
(一)指令缓存单元1,用于存储面向卷积神经网络的指令集。
卷积神经网络包含卷积层、池化层和全连接层这3类常见的层结构以及激活函数运算,为了让本发明的加速器支持所有的卷积神经网络,需要指令缓存单元1中存储一组面向卷积神经网络的指令集,所述的指令缓存单元1中存储的面向卷积神经网络的指令集包括:
卷积计算指令参数,包括指令类型参数,输入特征图大小参数,权重大小参数,填充大小参数,跨步大小参数,乘加单元使用数参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前6个参数均为8bit,后2个参数为16bit;
全连接计算指令参数,包括指令类型参数,输入特征图大小参数,权重大小参数,乘加单元使用数参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前4个参数均为8bit,后2个参数为16bit;
池化计算指令参数,包括指令类型参数,池化类型参数,输入特征图大小参数,权重大小参数,跨步大小参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前5个参数均为8bit,后2个参数为16bit;
所述的面向卷积神经网络的指令集是以二进制格式保存到指令缓存单元1中;由于本加速器只用于神经网络前馈过程,因此加速器指令经过确定不会更改,指令缓存单元在加速器运行过程中不会更新数据,只有数据读取过程。所述的指令缓存单元1是大小为64KB,位宽为8bit的静态随机存取存储器(SRAM),具有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号、1bit读写信号与1bit开始信号。
(二)译码器2,用于从指令缓存单元1读取指令,并根据指令类型,读取指令类型对应长度的参数,根据参数类型输出相应类型的启动信号。
所述的译码器2用于实现对指令的读取功能。开始运行时,译码器2首先从指令缓存单元读取指令,并根据指令类型,读取指令类型对应长度的参数,并给控制单元3中相应指令的控制子单元一个开始信号,使其进行工作。当相应运算完成后,译码器2接收到一个结束信号,译码器2再从指令缓存单元1中读取下一条指令及相应参数,重复上述过程,直到全部指令运行完成。
所述的译码器2是以8bit的指令缓存单元1的输出作为输入,所述的译码器2的输出有:输出6个1bit数据,分别为输入特征图控制子单元开始信号,权重控制子单元开始信号,脉动计算阵列控制子单元开始信号,激活函数控制子单元开始信号,池化子单元开始信号,中间结果控制子单元开始信号;输出6个8bit数据,分别为:输入特征图大小,权重大小,填充大小,跨步大小,乘加单元使用数,池化类型;输出2个16bit数据,分别为输入特征图缓存单元首地址,中间结果缓存单元首地址。
(三)控制单元3,接收译码器2输出的启动信号,并根据启动信号的类型,启动相应类型的控制子单元输出控制信号。所述的控制单元3包括有:
(1)输入特征图控制子单元3.1,接收来自译码器2的输入特征图控制子单元开始信号,用来控制输入特征图缓存单元4中数据的读取写入顺序,向输入特征图缓存单元4输出1bit使能信号、1bit读写信号和16bit输入特征图地址信号;
输入特征图控制子单元3.1内部有一个8bit行位置寄存器和一个8bit列位置寄存器。为了充分利用数据重用性,输入特征图控制子单元3.1以行优先的方式读取输入特征图。输入特征图地址的计算公式为:
Addr_c=Addr_a+Row×N+Col 1
其中,Addr_c表示输入特征图地址;Addr_a表示来自指令缓存单元1的指令参数中的输入特征图缓存单元首地址;N表示来自指令缓存单元1的指令参数中的输入特征图大小;Row表示行位置寄存器;Col表示列位置寄存器;
(2)权重控制子单元3.2,接收来自译码器2的权重控制子单元开始信号,输出1bit使能信号、1bit读写信号和16bit权重地址到权重缓存单元6,用来控制权重缓存单元6中数据的读取顺序,在开始信号中,权重地址在每个周期内加1;
(3)脉动计算阵列控制子单元3.3,接收来自译码器2的脉动计算阵列控制子单元开始信号,输出3个1bit信号,分别为输入特征图移位寄存器组开始信号,权重移位寄存器组开始信号,脉动计算阵列开始信号,用来控制处理单元7中移位寄存器组的数据移位过程和脉动计算过程;脉动计算阵列控制子单元3.3首先通过权重移位寄存器组开始信号,控制移位寄存器组7.1接收权重数据,并按周期逐渐传递到每一个乘加计算单元的权重寄存器中。然后通过移位寄存器组开始信号,控制移位寄存器组7.1接受输入特征图数据。最后,通过脉动计算阵列开始信号,使脉动计算阵列7.2开始计算。
(4)激活函数控制子单元3.4,接收来自译码器2的激活函数控制子单元开始信号,输出1个1bit信号,用来控制处理单元7中的激活函数计算单元的实现。
(5)池化控制子单元3.5,接收来自译码器的2的池化子单元开始信号,输出1个1bit,用来控制处理单元7中池化计算单元的实现;
(6)中间结果控制子单元3.6,接收来自译码器的2中间结果控制子单元开始信号,输出1bit使能信号、1bit读写信号和16bit中间结果地址到处理单元7中的中间结果缓存单元,用来控制处理单元7中的中间结果缓存单元中数据的读取写入顺序;中间结果控制子单元3.6内部有一个8bit行位置寄存器和一个8bit列位置寄存器。中间结果地址计算公式如下:
Addr_w=Addr_i+Row×M+Col 2
M=(N+2×P-K)/(S+1) 3
其中,Addr_w表示中间结果地址;Addr_i表示中间结果首地址;M为一个参数;N表示来自指令参数中的输入特征图大小;K表示来自指令参数中的权重大小;P表示来自指令参数中的填充大小;S表示来自指令参数中的跨步大小;Row表示行位置寄存器;Col表示列位置寄存器。
(四)输入特征图缓存单元4,保存有卷积计算过程中所需要的输入特征图数据,根据所接收的控制单元3输出的控制信号,输出相应的输入特征图数据。
所述的输入特征图缓存单元4在运行过程中,输出给处理单元7中的移位寄存器组7.1所需要的输入特征图数据,并保存处理单元7中的激活函数计算单元7.3的计算结果;考虑到输入特征图缓存单元容量存在限制芯片内部高速缓存大小有限,所述的输入特征图缓存单元4在有需要的情况下,还通过数据总线8连接外部存储单元9进行数据交换。即通过数据总线8将计算需要的输入特征图数据传入输入特征图缓存单元4,进行接下来的计算。因此,该输入特征图缓存单元4同时保持有数据输入和输入接口。本发明中,输入特征图缓存单元4是大小为64KB,位宽为8bit的静态随机存取存储器SRAM,输入特征图缓存单元4的接口有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号接口、1bit读写信号接口和1bit开始信号接口。
(五)中间结果缓存单元5,保存有计算过程中所产生的中间数据,根据所接收的控制单元3输出的控制信号,进行读取和输出相应的中间数据。
所述的中间结果缓存单元5,在运行过程中,向处理单元7中的池化计算单元7.4输入池化计算所需的数据,并且保存处理单元7中的激活函数计算单元7.3的激活函数计算结果;考虑到中间结果缓存单元容量存在限制芯片内部高速缓存大小有限),所述的中间结果缓存单元5在有需要的情况下,通过数据总线8连接外部存储单元9进行数据交换,将计算需要的中间结果传入中间结果缓存单元5,进行接下来的计算;中间结果缓存单元5同时保持有数据输入和输出接口,所述的中间结果缓存单元5是大小为64KB,位宽为8bit的静态随机存取存储器SRAM,接口有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号接口、1bit读写信号接口与1bit开始信号接口。
(六)权重缓存单元6,保存有卷积计算过程中所需要的权重数据,根据所接收的控制单元3输出的控制信号,输出相应的权重数据。
所述的权重缓存单元6,在运行过程中,向处理单元7中的移位寄存器组7.1输入需要的权重数据;在运行中,权重缓存单元6不需要接受数据更新,只需要输出相应地址的权重数据。但是,考虑到权重缓存单元6容量存在限制,所述的权重缓存单元6在有需要的情况下,通过数据总线8连接外部存储单元9进行数据交换,将计算需要的权重数据传入权重缓存单元6,进行接下来的计算;该权重缓存单元同时保持有数据输入和输出接口。所述的权重缓存单元6是大小为64KB,位宽为8bit的静态随机存取存储器SRAM,接口有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号接口、1bit读写信号与1bit开始信号接口。
(七)处理单元7,根据所接收的控制单元3输出的控制信号,从输入特征图缓存单元4接收输入特征图数据,从中间结果缓存单元5接收中间数据,以及从权重缓存单元6接收权重数据,并对输入特征图数据、中间数据以及权重数据进行相应的处理,并将处理后的输入特征图数据存入输入特征图缓存单元4,将处理后的中间数据存入中间结果缓存单元5。所述的处理单元7,包括有:
(1)移位寄存器组7.1,根据控制单元3中的脉动计算阵列控制子单元3.3的控制指令,实现输入特征图数据与权重数据的串行输入和并行输出;移位寄存器组7.1包括有1个8bit输入,200bit输出的输入特征图移位寄存器组7.1.1,以及一个8bit输入,48bit输出的权重移位寄存器组7.1.2。
其中,根据输入特征图移位寄存器组7.1.1在每个周期内接受一个8bit的输入数据,经过25个周期后,将25个周期内接受的所有数据,共200bit,在下一周期内一起输出。权重移位寄存器组7.1.2在每个周期内接受一个8bit的输入数据,经过6个周期后,将6个周期内接受的所有数据,共48bit,在下一周期内一起输出。
(2)脉动计算阵列7.2,根据控制单元3中的脉动计算阵列控制子单元3.3的控制指令,接收移位寄存器组7.1中的输入特征图移位寄存器组输出的输入特征图和权重移位寄存器组输出的权重数据做内积计算;如图2所示,脉动计算阵列7.2是由150个乘加计算单元7.2.1按照6×25的方式排列为一个矩阵,每行25个,共6行;其中,每行的乘加计算单元7.2.1依次串接,每行的首个乘加计算单元7.2.1的输入连接权重移位寄存器组7.1.2,最后一个乘加计算单元7.2.1连接激活函数计算单元7.3;每列的乘加计算单元7.2.1依次串接,每列的首个乘加计算单元7.2.1的输入连接输入特征图移位寄存器组7.1.1。脉动计算阵列7.2实现了5x5大小权重的并行计算,提高了加速器运行速度。
脉动计算阵列7.2是一种将数据流同步流过相邻的二维阵列单元的计算结构。针对卷积运算来说,脉动计算阵列需要将卷积计算的输入特征图(输入)与权重由二维或多维数组展开为多个一维数组,输入特征图展开的每一个一维数组代表卷积计算中,权重窗口每一次滑动过程所对应的输入特征图。在该脉动计算阵列中,预先将权重展开的一维数组固定到对应的每一个计算单元的寄存器中,将输入特征图展开的一维数组按顺序从上至下的流动,每一个计算得到的中间结果则从左向右流动,当对应的一维数组的数据全部相乘并累加后,得到的最终结果即是一个卷积窗口的卷积计算结果。
如图3所示,每一个乘加计算单元7.2.1都包括有一个8bit的输入特征图寄存器a、一个16bit的中间结果寄存器b、一个8bit的权重寄存器c、一个乘法器d和一个加法器e,其中,所述的输入特征图寄存器a的输入端与同一列前一个乘加计算单元7.2.1中的输入特征图寄存器a的输出端连接,所述的权重寄存器c的输入端与同一行前一个乘加计算单元7.2.1中的权重寄存器c的输出端连接,所述中间结果寄存器b的输入端与同一行前一个乘加计算单元7.2.1中的中间结果寄存器b的输出端连接,所述输入特征图寄存器a输出的数据与所述权重寄存器c输数的据通过乘法器d相乘后的结果再与中间结果寄存器b输出的数据通过加法器e相加后输出到下一个乘加计算单元7.2.1的中间结果寄存器b,所述输入特征图寄存器a的输出还连接同一列下一个乘加计算单元7.2.1中的输入特征图寄存器a的输入端,所述权重寄存器c的输出端还连接同一行下一个乘加计算单元7.2.1中的权重寄存器c的输入端。
(3)激活函数计算单元7.3,用于实现卷积神经网络的Relu激活函数计算,包括有:一个比较器7.3.1、一个16bit零值寄存器7.3.2和一个多路选择器7.3.3,其中,所述比较器7.3.1的一个输入端分别连接脉动计算阵列7.2和池化计算单元7.4的输出端,另一个输入端连接零值寄存器7.3.2的输出端,所述多路选择器7.3.3的输入端分别连接接脉动计算阵列7.2和池化计算单元7.4的输出端、零值寄存器7.3.2的输出端以及比较器7.3.1的输出端,所述多路选择器7.3.3的输出端连接分别连接输入特征图缓存单元4和中间结果缓存单元5的输入端,其中,所述比较器7.3.1和多路选择器7.3.3的控制信号输入端连接控制单元3中的激活函数控制子单元3.4,根据激活函数控制子单元3.4的控制指令进行卷积神经网络的Relu激活函数计算,计算过程中,比较器7.3.1判断特征图缓存单元4和中间结果缓存单元5输入的数据是否小于零,是则多路选择器7.3.3将零值寄存器7.3.2的输出作为输出,否则,多路选择器7.3.3直接将特征图缓存单元4和中间结果缓存单元5的输入作为输出;
(4)池化计算单元7.4,用于进行平均值池化和最大值池化计算,如图4所示,包括有一个比较器7.4.1、一个乘法器7.4.3、一个加法器7.4.4、一个用于保存中间结果的32bit结果寄存器7.4.2和一个用于保存平均值常数的16bit平均值常数寄存器7.4.5;其中,结果寄存器7.4.2控制信号输入端连接控制单元3中的池化控制子单元3.5,比较器7.4.1的一个输入端连接中间结果缓存单元5的输出端,另一个输入端连接结果寄存器7.4.2的一个输出端,比较器7.4.1的输出端连接结果寄存器7.4.2的一个输入端,所述乘法器7.4.3分别连接中间结果缓存单元5的输出端和平均值常数寄存器7.4.5的输出端,所述加法器7.4.4的输入端分别连接乘法器7.4.3的输出端以及结果寄存器7.4.2的一个输出端,所述结果寄存器7.4.2的另一输入端连接加法器7.4.4的输出端,结果寄存器7.4.2的最终输出端连接激活函数计算单元7.3的输入端;结果寄存器7.4.2根据池化控制子单元3.5池化指令中的池化类型参数,进行平均值计算或最大值比较。如果池化类型参数为最大值池化,则比较器7.4.1接收结果寄存器7.4.2的输出数据并与中间结果缓存单元5输入的数据进行比较,再将最大值存入结果寄存器7.4.2,并由结果寄存器7.4.2输出给激活函数计算单元7.3;如果池化类型参数为平均值池化,则中间结果缓存单元5输入数据与平均值常数寄存器7.4.5输出的数据通过乘法器7.4.3相乘后,再通过加法器7.4.4与结果寄存器7.4.2输出的数据相加,相加后的结果再存入结果寄存器7.4.2中,并由结果寄存器7.4.2输出给激活函数计算单元7.3。
Claims (10)
1.一种面向边缘计算的卷积神经网络处理器,其特征在于,包括有:
指令缓存单元(1),用于存储面向卷积神经网络的指令集;
译码器(2),用于从指令缓存单元(1)读取指令,并根据指令类型,读取指令类型对应长度的参数,根据参数类型输出相应类型的启动信号;
控制单元(3),接收译码器(2)输出的启动信号,并根据启动信号的类型,启动相应类型的控制子单元输出控制信号;
输入特征图缓存单元(4),保存有卷积计算过程中所需要的输入特征图数据,根据所接收的控制单元(3)输出的控制信号,输出相应的输入特征图数据;
中间结果缓存单元(5),保存有计算过程中所产生的中间数据,根据所接收的控制单元(3)输出的控制信号,进行读取和输出相应的中间数据;
权重缓存单元(6),保存有卷积计算过程中所需要的权重数据,根据所接收的控制单元(3)输出的控制信号,输出相应的权重数据;
处理单元(7),根据所接收的控制单元(3)输出的控制信号,从输入特征图缓存单元(4)接收输入特征图数据,从中间结果缓存单元(5)接收中间数据,以及从权重缓存单元(6)接收权重数据,并对输入特征图数据、中间数据以及权重数据进行相应的处理,并将处理后的输入特征图数据存入输入特征图缓存单元(4),将处理后的中间数据存入中间结果缓存单元(5)。
2.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的指令缓存单元(1)中存储的面向卷积神经网络的指令集包括:
卷积计算指令参数,包括指令类型参数,输入特征图大小参数,权重大小参数,填充大小参数,跨步大小参数,乘加单元使用数参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前6个参数均为8bit,后2个参数为16bit;
全连接计算指令参数,包括指令类型参数,输入特征图大小参数,权重大小参数,乘加单元使用数参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前4个参数均为8bit,后2个参数为16bit;
池化计算指令参数,包括指令类型参数,池化类型参数,输入特征图大小参数,权重大小参数,跨步大小参数,输入特征图缓存单元首地址参数,中间结果缓存单元首地址参数,并且,前5个参数均为8bit,后2个参数为16bit。
3.根据权利要求2所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的面向卷积神经网络的指令集是以二进制格式保存到指令缓存单元(1)中;所述的指令缓存单元(1)是大小为64KB,位宽为8bit的静态随机存取存储器,具有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号、1bit读写信号与1bit开始信号。
4.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的译码器(2)开始运行时,译码器(2)首先从指令缓存单元读取指令,并根据指令类型,读取指令类型对应长度的参数,并给控制单元(3)中相应指令的控制子单元一个开始信号,当相应运算完成后,译码器(2)接收到一个结束信号,译码器(2)再从指令缓存单元(1)中读取下一条指令及相应参数,直到全部指令运行完成。
5.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的控制单元(3)包括有:
输入特征图控制子单元(3.1),接收来自译码器(2)的输入特征图控制子单元开始信号,用来控制输入特征图缓存单元(4)中数据的读取写入顺序,向输入特征图缓存单元(4)输出1bit使能信号、1bit读写信号和16bit输入特征图地址信号;
输入特征图地址的计算公式为:
Addr_c=Addr_a+Row×N+Col (1)
其中,Addr_c表示输入特征图地址;Addr_a表示来自指令缓存单元(1)的指令参数中的输入特征图缓存单元首地址;N表示来自指令缓存单元(1)的指令参数中的输入特征图大小;Row表示行位置寄存器;Col表示列位置寄存器;
权重控制子单元(3.2),接收来自译码器(2)的权重控制子单元开始信号,输出1bit使能信号、1bit读写信号和16bit权重地址到权重缓存单元(6),用来控制权重缓存单元(6)中数据的读取顺序,在开始信号中,权重地址在每个周期内加1;
脉动计算阵列控制子单元(3.3),接收来自译码器(2)的脉动计算阵列控制子单元开始信号,输出3个1bit信号,分别为输入特征图移位寄存器组开始信号,权重移位寄存器组开始信号,脉动计算阵列开始信号,用来控制处理单元(7)中的数据移位过程和脉动计算过程;
激活函数控制子单元(3.4),接收来自译码器(2)的激活函数控制子单元开始信号,输出1个1bit信号,用来控制处理单元(7)中的激活函数计算;
池化控制子单元(3.5),接收来自译码器的(2)的池化子单元开始信号,输出1个1bit,用来控制处理单元(7)中池化计算;
中间结果控制子单元(3.6),接收来自译码器的(2)的中间结果控制子单元开始信号,用来控制处理单元(7)中的中间结果缓存数据的读取写入顺序;中间结果控制子单元(3.6)的中间结果地址计算公式如下:
Addr_w=Addr_i+Row×M+Col (2)
M=(N+2×P-K)/(S+1) (3)
其中,Addr_w表示中间结果地址;Addr_i表示中间结果首地址;M为一个参数;N表示来自指令参数中的输入特征图大小;K表示来自指令参数中的权重大小;P表示来自指令参数中的填充大小;S表示来自指令参数中的跨步大小;Row表示行位置寄存器;Col表示列位置寄存器。
6.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的输入特征图缓存单元(4)在运行过程中,输出给处理单元(7)所需要的输入特征图数据,并保存处理单元(7)中的激活函数计算结果;所述的输入特征图缓存单元(4)还通过数据总线(8)连接外部存储单元(9)进行数据交换。
7.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的中间结果缓存单元(5),在运行过程中,向处理单元(7)中输入池化计算所需的数据,并且保存处理单元(7)中激活函数计算结果;所述的中间结果缓存单元(5)还通过数据总线(8)连接外部存储单元(9)进行数据交换,将计算需要的中间结果传入中间结果缓存单元(5),所述的中间结果缓存单元(5)是大小为64KB,位宽为8bit的静态随机存取存储器(SRAM),接口有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号接口、1bit读写信号接口与1bit开始信号接口。
8.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的权重缓存单元(6),用于向处理单元(7)输入需要的权重数据;所述的权重缓存单元(6)还通过数据总线(8)连接外部存储单元(9)进行数据交换,所述的权重缓存单元(6)是大小为64KB,位宽为8bit的静态随机存取存储器,接口有8bit输入接口、8bit输出接口、16bit地址接口、1bit时钟信号接口、1bit读写信号与1bit开始信号接口。
9.根据权利要求1所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,所述的处理单元(7),包括有:
(1)移位寄存器组(7.1),根据控制单元(3)中的脉动计算阵列控制子单元(3.3)的控制指令,实现输入特征图数据与权重数据的串行输入和并行输出;移位寄存器组(7.1)包括有1个8bit输入,200bit输出的输入特征图移位寄存器组(7.1.1),以及一个8bit输入,48bit输出的权重移位寄存器组(7.1.2);
(2)脉动计算阵列(7.2),根据控制单元(3)中的脉动计算阵列控制子单元(3.3)的控制指令,接收移位寄存器组(7.1)中的输入特征图移位寄存器组输出的输入特征图和权重移位寄存器组输出的权重数据做内积计算;脉动计算阵列(7.2)是由150个乘加计算单元(7.2.1)按照6×25的方式排列为一个矩阵,每行25个,共6行;其中,每行的乘加计算单元(7.2.1)依次串接,每行的首个乘加计算单元(7.2.1)的输入连接权重移位寄存器组(7.1.2),最后一个乘加计算单元(7.2.1)连接激活函数计算单元(7.3);每列的乘加计算单元(7.2.1)依次串接,每列的首个乘加计算单元(7.2.1)的输入连接输入特征图移位寄存器组(7.1.1);
(3)激活函数计算单元(7.3),用于实现卷积神经网络的Relu激活函数计算,包括有:一个比较器(7.3.1)、一个16bit零值寄存器(7.3.2)和一个多路选择器(7.3.3),其中,所述比较器(7.3.1)的一个输入端分别连接脉动计算阵列(7.2)和池化计算单元(7.4)的输出端,另一个输入端连接零值寄存器(7.3.2)的输出端,所述多路选择器(7.3.3)的输入端分别连接接脉动计算阵列(7.2)和池化计算单元(7.4)的输出端、零值寄存器(7.3.2)的输出端以及比较器(7.3.1)的输出端,所述多路选择器(7.3.3)的输出端连接分别连接输入特征图缓存单元(4)和中间结果缓存单元(5)的输入端,其中,所述比较器(7.3.1)和多路选择器(7.3.3)的控制信号输入端连接控制单元(3)中的激活函数控制子单元(3.4),根据激活函数控制子单元(3.4)的控制指令进行卷积神经网络的Relu激活函数计算,计算过程中,比较器(7.3.1)判断特征图缓存单元(4)和中间结果缓存单元(5)输入的数据是否小于零,是则多路选择器(7.3.3)将零值寄存器(7.3.2)的输出作为输出,否则,多路选择器(7.3.3)直接将特征图缓存单元(4)和中间结果缓存单元(5)的输入作为输出;
(4)池化计算单元(7.4),用于进行平均值池化和最大值池化计算,包括有一个比较器(7.4.1)、一个乘法器(7.4.3)、一个加法器(7.4.4)、一个用于保存中间结果的32bit结果寄存器(7.4.2)和一个用于保存平均值常数的16bit平均值常数寄存器(7.4.5);其中,结果寄存器(7.4.2)控制信号输入端连接控制单元(3)中的池化控制子单元(3.5),比较器(7.4.1)的一个输入端连接中间结果缓存单元(5)的输出端,另一个输入端连接结果寄存器(7.4.2)的一个输出端,比较器(7.4.1)的输出端连接结果寄存器(7.4.2)的一个输入端,所述乘法器(7.4.3)分别连接中间结果缓存单元(5)的输出端和平均值常数寄存器(7.4.5)的输出端,所述加法器(7.4.4)的输入端分别连接乘法器(7.4.3)的输出端以及结果寄存器(7.4.2)的一个输出端,所述结果寄存器(7.4.2)的另一输入端连接加法器(7.4.4)的输出端,结果寄存器(7.4.2)的最终输出端连接激活函数计算单元(7.3)的输入端;结果寄存器(7.4.2)根据池化控制子单元(3.5)池化指令中的池化类型参数,进行平均值计算或最大值比较。
10.根据权利要求9所述的一种面向边缘计算的卷积神经网络处理器,其特征在于,每一个所述的乘加计算单元(7.2.1)都包括有一个8bit的输入特征图寄存器(a)、一个16bit的中间结果寄存器(b)、一个8bit的权重寄存器(c)、一个乘法器(d)和一个加法器(e),其中,所述的输入特征图寄存器(a)的输入端与同一列前一个乘加计算单元(7.2.1)中的输入特征图寄存器(a)的输出端连接,所述的权重寄存器(c)的输入端与同一行前一个乘加计算单元(7.2.1)中的权重寄存器(c)的输出端连接,所述中间结果寄存器(b)的输入端与同一行前一个乘加计算单元(7.2.1)中的中间结果寄存器(b)的输出端连接,所述输入特征图寄存器(a)输出的数据与所述权重寄存器(c)输数的据通过乘法器(d)相乘后的结果再与中间结果寄存器(b)输出的数据通过加法器(e)相加后输出到下一个乘加计算单元(7.2.1)的中间结果寄存器(b),所述输入特征图寄存器(a)的输出还连接同一列下一个乘加计算单元(7.2.1)中的输入特征图寄存器(a)的输入端,所述权重寄存器(c)的输出端还连接同一行下一个乘加计算单元(7.2.1)中的权重寄存器(c)的输入端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911091701.XA CN110991630A (zh) | 2019-11-10 | 2019-11-10 | 一种面向边缘计算的卷积神经网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911091701.XA CN110991630A (zh) | 2019-11-10 | 2019-11-10 | 一种面向边缘计算的卷积神经网络处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110991630A true CN110991630A (zh) | 2020-04-10 |
Family
ID=70083761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911091701.XA Pending CN110991630A (zh) | 2019-11-10 | 2019-11-10 | 一种面向边缘计算的卷积神经网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110991630A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111726625A (zh) * | 2020-06-17 | 2020-09-29 | 苏州甫腾智能科技有限公司 | 一种智能视觉感知处理方法、装置及智能视觉感知物联网终端 |
CN112100118A (zh) * | 2020-08-05 | 2020-12-18 | 中科驭数(北京)科技有限公司 | 神经网络计算方法、装置和存储介质 |
CN112257843A (zh) * | 2020-09-23 | 2021-01-22 | 浙江大学 | 一种基于MobileNetV1网络推理任务的扩展指令集的*** |
CN112329910A (zh) * | 2020-10-09 | 2021-02-05 | 东南大学 | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 |
CN113065032A (zh) * | 2021-03-19 | 2021-07-02 | 内蒙古工业大学 | 一种面向边缘网络集成学习的自适应数据感知与协同缓存方法 |
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
TWI823408B (zh) * | 2022-05-27 | 2023-11-21 | 國立成功大學 | 機械設備雲端控制系統 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3153996A2 (en) * | 2015-10-07 | 2017-04-12 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
US20180307976A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with separate computation units |
CN108805274A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及*** |
CN109948774A (zh) * | 2019-01-25 | 2019-06-28 | 中山大学 | 基于网络层捆绑运算的神经网络加速器及其实现方法 |
-
2019
- 2019-11-10 CN CN201911091701.XA patent/CN110991630A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3153996A2 (en) * | 2015-10-07 | 2017-04-12 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
US20180307976A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with separate computation units |
CN108805274A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及*** |
CN109948774A (zh) * | 2019-01-25 | 2019-06-28 | 中山大学 | 基于网络层捆绑运算的神经网络加速器及其实现方法 |
Non-Patent Citations (2)
Title |
---|
卢冶;陈瑶;李涛;蔡瑞初;宫晓利;: "面向边缘计算的嵌入式FPGA卷积神经网络构建方法" * |
肖皓;祝永新;汪宁;田犁;汪辉;: "面向卷积神经网络的FPGA硬件加速器设计" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111726625A (zh) * | 2020-06-17 | 2020-09-29 | 苏州甫腾智能科技有限公司 | 一种智能视觉感知处理方法、装置及智能视觉感知物联网终端 |
CN112100118A (zh) * | 2020-08-05 | 2020-12-18 | 中科驭数(北京)科技有限公司 | 神经网络计算方法、装置和存储介质 |
CN112257843A (zh) * | 2020-09-23 | 2021-01-22 | 浙江大学 | 一种基于MobileNetV1网络推理任务的扩展指令集的*** |
CN112257843B (zh) * | 2020-09-23 | 2022-06-28 | 浙江大学 | 一种基于MobileNetV1网络推理任务的扩展指令集的*** |
CN112329910A (zh) * | 2020-10-09 | 2021-02-05 | 东南大学 | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 |
CN112329910B (zh) * | 2020-10-09 | 2024-06-04 | 东南大学 | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 |
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
CN113065032A (zh) * | 2021-03-19 | 2021-07-02 | 内蒙古工业大学 | 一种面向边缘网络集成学习的自适应数据感知与协同缓存方法 |
TWI823408B (zh) * | 2022-05-27 | 2023-11-21 | 國立成功大學 | 機械設備雲端控制系統 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
US11341399B2 (en) | Reducing power consumption in a neural network processor by skipping processing operations | |
US20230418610A1 (en) | Deep vision processor | |
CN109104876B (zh) | 一种运算装置及相关产品 | |
CN107169563B (zh) | 应用于二值权重卷积网络的处理***及方法 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
US20210224125A1 (en) | Operation Accelerator, Processing Method, and Related Device | |
US11775430B1 (en) | Memory access for multiple circuit components | |
CN109409510B (zh) | 神经元电路、芯片、***及其方法、存储介质 | |
CN110348574B (zh) | 一种基于zynq的通用卷积神经网络加速结构及设计方法 | |
CN111401406B (zh) | 一种神经网络训练方法、视频帧处理方法以及相关设备 | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速*** | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN112163601B (zh) | 图像分类方法、***、计算机设备及存储介质 | |
CN111210019B (zh) | 一种基于软硬件协同加速的神经网络推断方法 | |
CN117501245A (zh) | 神经网络模型训练方法和装置、数据处理方法和装置 | |
CN110490317B (zh) | 神经网络运算装置及运算方法 | |
CN112966729A (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN110458285B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN116185937B (zh) | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 | |
CN109993286A (zh) | 稀疏神经网络的计算方法及相关产品 | |
CN112766475B (zh) | 处理部件及人工智能处理器 | |
CN112101537B (zh) | Cnn加速器和电子设备 | |
US20210224632A1 (en) | Methods, devices, chips, electronic apparatuses, and storage media for processing data |
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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20231208 |
|
AD01 | Patent right deemed abandoned |