CN116702852B - 基于多阶段事件驱动的动态重构神经网络加速电路及*** - Google Patents
基于多阶段事件驱动的动态重构神经网络加速电路及*** Download PDFInfo
- Publication number
- CN116702852B CN116702852B CN202310961883.1A CN202310961883A CN116702852B CN 116702852 B CN116702852 B CN 116702852B CN 202310961883 A CN202310961883 A CN 202310961883A CN 116702852 B CN116702852 B CN 116702852B
- Authority
- CN
- China
- Prior art keywords
- neural network
- circuit
- weight
- layer
- interaction
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 221
- 230000001133 acceleration Effects 0.000 title claims abstract description 35
- 238000003062 neural network model Methods 0.000 claims abstract description 31
- 230000002093 peripheral effect Effects 0.000 claims abstract description 4
- 230000003993 interaction Effects 0.000 claims description 73
- 238000004364 calculation method Methods 0.000 claims description 70
- 238000001514 detection method Methods 0.000 claims description 43
- 238000005192 partition Methods 0.000 claims description 37
- 238000009826 distribution Methods 0.000 claims description 34
- 230000015654 memory Effects 0.000 claims description 25
- 238000010586 diagram Methods 0.000 claims description 24
- 238000009825 accumulation Methods 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 16
- 230000004913 activation Effects 0.000 claims description 12
- 238000011176 pooling Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 11
- 238000005520 cutting process Methods 0.000 claims description 9
- 238000007493 shaping process Methods 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 21
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000005457 optimization Methods 0.000 abstract description 4
- 238000007781 pre-processing Methods 0.000 abstract description 3
- 230000035945 sensitivity Effects 0.000 abstract description 3
- 239000010410 layer Substances 0.000 description 90
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012850 discrimination method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/10—Pre-processing; Data cleansing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/16—Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2218/00—Aspects of pattern recognition specially adapted for signal processing
- G06F2218/02—Preprocessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2218/00—Aspects of pattern recognition specially adapted for signal processing
- G06F2218/12—Classification; Matching
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于多阶段事件驱动的动态重构神经网络加速电路及***,属于信号处理技术领域。本发明的基于多阶段事件驱动的动态重构神经网络加速电路包括动态可重构计算电路和***的数据流控制电路,动态可重构计算电路在数据流控制电路的控制下完成神经网络模型的层级重构计算,获取神经网络模型各层的计算输出结果。该加速电路基于可扩展宏指令集实现了对不同神经网络算法在硬件上的动态重构,并结合低功耗电路优化技术实现电路的低功耗处理。基于该动态重构神经网络加速电路本发明还公开了一种基于多阶段事件驱动神经网络加速***,其结合信号预处理和多阶段神经网络推理实现细粒度的事件驱动,切换灵敏度高且无需大量额外硬件开销。
Description
技术领域
本发明属于信号处理技术领域,具体涉及一种基于多阶段事件驱动的动态重构神经网络加速电路及***。
背景技术
在信号处理领域,常常存在多种信号事件并存的情况,比如雷达信号、声音信号和生理信号等信号中噪声干扰的有无、以及目标信号的有无等等信号事件,此外还有多种任务(也可以看作不同事件)的信号处理,如语音识别需要先进行语音唤醒再进行语音关键词识别或者语言识别,往往单一算法难以同时处理各类事件下的信号,而采用多种算法并行处理的方式会带来很大的冗余运算、硬件开销和功耗等等,这在能源和算力受限的边缘处理设备领域是不可接受的。但是这类场景往往可以被拆分成若干个时间独立的子事件(如噪声只可能存在或不存在、强或弱,且很多噪声往往具有一定的短时平稳性),因此,这类情况会使用事件驱动型算法,通过根据信号事件动态切换不同处理算法来同时实现高处理性能和低运算复杂度。此外,近年来随着神经网络的兴起,越来越多算法通过结合神经网络或者完全基于神经网络达到了更好的处理效果或准确率,同时神经网络带来了一个新的优势:基于神经网络的算法有着类似的算子(如卷积层、全连接层、池化层、激活层等),在基于神经网络的事件驱动型算法的硬件实现方面,能使用更少的硬件资源实现不同阶段事件处理算法的加速处理。
为了满足基于神经网络的事件驱动型算法的实时性、高能效和高准确率要求,存在以下几大挑战:
1)神经网络算法准确率高但是带来了大量的运算复杂度,为满足实时性要求需要消耗大量硬件资源,而单纯降低数据精度来节省资源又会造成准确率的大幅度下降;
2)事件驱动型算法意味着多种神经网络结构需要在硬件层面兼容和动态切换,通过可重构设计可以达到该要求,但是可重构往往意味着更多资源消耗和更低处理能效;
3)针对不同的应用场景,事件驱动的策略大不相同、能够容忍的硬件资源消耗也各不相同,设计的硬件架构需要有较好的扩展性。而市面上常见的神经网络边缘处理硬件的解决方案是基于神经网络硬件加速器,通过专用集成电路(ASIC)技术设计专用的神经网络加速器,但这类神经网络加速器需要仅支持静态可重构,即复位后配置一次,之后一直加速当前配置神经网络,直到下次复位,这类方案需要结合一个处理器内核才能实现动态可重构,但需要花费大量时间实现神经网络切换,并且需要占用处理器核心大量时钟周期。
发明内容
本发明提供了一种基于多阶段事件驱动的动态重构神经网络加速电路及***,以实现对不同神经网络算法在硬件上的动态重构和电路的低功耗处理,以及实现事件驱动切换灵敏度高且无需大量额外硬件开销。
一方面,本发明提供了一种基于多阶段事件驱动的动态重构神经网络加速电路,包括动态可重构计算电路和***的数据流控制电路;
所述动态可重构计算电路用于在数据流控制电路的控制下完成神经网络模型的层级重构计算,获取神经网络模型的每一神经网络层的计算输出结果;
所述数据流控制电路包括:总数据流控制器、指令地址控制器、宏指令随机存取存储器和宏指令解码器;
所述总数据流控制器接收动态可重构计算电路发送的电路重构请求信号,并基于该电路重构请求信号生成发送给指令地址控制器的指令;所述电路重构请求信号中携带有神经网络模型的神经网络层标识;
指令地址控制器基于当前接收到的指令生成读取地址,所述读取地址用于从宏指令随机存取存储器读取出当前神经网络层对应的宏指令,并将读取到的宏指令送入宏指令解码器。
宏指令解码器对当前收到的宏指令进行解码,并将解码结果送入总数据流控制器,总数据流控制器生成对应的运算模块控制信号并返回给动态可重构计算电路,以控制动态可重构计算电路的工作模式。
进一步的,所述动态可重构计算电路包括:乒乓特征图随机存取存储器、输入层特征图随机存取存储器、权重和偏置值乒乓交互存储电路、输入数据和权重门控分配电路、输出数据累加和整型分配电路、激活函数/池化层控制电路,以及至少两个运算引擎;
所述输入数据和权重门控分配电路用于从输入层特征图随机存取存储器或乒乓特征图随机存取存储器中读取当前神经网络层运算所需的输入数据,从权重和偏置值乒乓交互存储电路中读取当前网络运算所需的网络权重和偏置值,并将读取到的输入数据和权重和偏置值根据当前神经网络层结构和计算复杂度分配到不同的运算引擎中,实现神经网络层运算的并行计算;
如果当前神经网络层的层级为输入层,则输入数据和权重门控分配电路将从输入层特征图随机存取存储器中读取神经网络模型的输入数据作为当前神经网络层的输入,否则从乒乓特征图随机读取存储器的指定分区中读取上一层的计算输出结果作为当前神经网络层的输入数据;
各运算引擎的运算输出结果将并行发送到输出数据累加和整型分配电路中,输出数据累加和整型分配电路按照设置的控制信号对多个运算输出结果进行合并累加与整型分配;输出数据累加和整型分配电路将根据当前神经网络层的后级神经网络层类型执行不同的数据传输:若后级神经网络层类型包含激活函数或池化层,则将输出数据累加和整型分配电路的输出数据送入激活函数/池化层控制电路;否则,输出数据累加和整型分配电路的输出数据被作为当前神经网络层的计算输出结果并写入乒乓特征图随机存取存储器的指定分区中。
进一步的,所述乒乓特征图随机存取存储器包括第一分区和第二分区,其中,第一分区用于存储上一神经网络层的计算输出结果,第二分区用于存储当前神经网络层的计算输出结果,在当前神经网络层的运算过程中,第一分区的读写状态为读,第二分区的读写状态为写;当前神经网络层的计算结束并准备进行下一神经网络层的计算时,乒乓特征图随机存取存储器将内部两个分区的读写状态翻转。
进一步的,所述权重和偏置值乒乓交互存储电路包括:权重和偏置值乒乓交互随机存储器、交互状态控制电路、片下交互请求控制电路,以及信号解码和存储电路;
所述权重和偏置值乒乓交互随机存储器包括两个分区,通过乒乓操作实现当前神经网络层的权重和偏置值的读取和下一神经网络层的权重和偏置值写入交替进行;
所述权重和偏置值乒乓交互随机存储器通过交互状态控制电路控制权重和偏置值乒乓交互随机存储器与片外的交互以及存储器读写状态的切换,在交互当前神经网络层的网络权重和偏置值的同时,片下交互请求控制电路会向外部的神经网络参数交互控制模块产生神经网络参数的交互请求信号;所述神经网络参数包括权重和偏置值;
所述神经网络参数交互控制模块基于收到的神经网络参数的交互请求信号将下一神经网络层所需的权重和偏置值送入权重和偏置值乒乓交互存储电路,经信号解码和存储电路执行信号解码操作后存储到权重和偏置值乒乓交互随机存储器的指定分区。
进一步的,每个运算引擎包括:数据缓存器、权重缓存器、近零检测定点乘法器阵列、加法树与累加器,以及移位与截位电路;
所述数据缓存器用于存储输入数据和权重门控分配电路送入的输入数据;
所述权重缓存器用于存储输入数据和权重门控分配电路送入的权重与偏置值;
当数据缓存器和权重缓存器缓存的数据量满足设定的计算量时,将数据缓存器中的输入数据和权重缓存器中的权重与偏置值输入到近零检测定点乘法器阵列;
所述近零检测定点乘法器阵列包括若干个近零检测乘法计算单元,每个近零检测乘法计算单元包括一个近零检测单元和一个定点乘法器,执行计算时,近零检测单元对乘数因子进行近零检测,再由定点乘法器进行定点乘法计算;
所述近零检测定点乘法器阵列的计算结果送入加法树与累加器中,将计算结果和神经网络层的偏置值进行逐级累加,得到的累加结果输入移位与截位电路;
所述移位与截位电路用于执行定点运算的移位和截位操作,得到每个运算引擎的运算输出结果。
进一步的,所述运算引擎的数量设置为4个,若当前神经网络层的卷积核大小少于近零检测定点乘法器阵列的近零检测乘法计算单元的个数时,4个运算引擎同时进行当前神经网络层的四路并行计算;若当前神经网络层的卷积核大小大于或等于近零检测乘法计算单元的个数时,同时使用2个或4个运算引擎进行双路或单路计算。
另一方面,基于本发明的基于多阶段事件驱动的动态重构神经网络加速电路,本发明还提供了一种基于多阶段事件驱动神经网络加速***,其包括:神经网络参数交互控制模块、信号预处理器、分类结果判别器、网络切换控制器,若干个神经网络参数存储器,以及本发明的基于多阶段事件驱动的动态重构神经网络加速电路;
每个神经网络参数存储器用于存储不同神经网络模型的神经网络参数(权重和偏置值);
所述神经网络参数交互控制模块用于从当前神经网络模型取出对应层的神经网络参数,并将当前神经网络层计算所需的输入数据和神经网络参数传输给基于多阶段事件驱动的动态重构神经网络加速电路,以存入权重和偏置值乒乓交互随机存储器中,实现当前神经网络模型的网络层级切换;
所述信号预处理器用于生成信号活动检测结果并输入至分类结果判别器;
基于多阶段事件驱动的动态重构神经网络加速电路对当前神经网络模型的最后一层的计算输出结果获取神经网络模型的分类结果,并将分类结果输入至分类结果判别器;
所述分类结果判别器基于预置的事件判别规则(可采用任意事件判别算法实现)确定事件判别结果并输入至网络切换控制器;
所述网络切换控制器根据事件判别结果生成相应的网络模型切换指令,并发送至基于多阶段事件驱动的动态重构神经网络加速电路,所述网络模型切换指令携带有目标神经网络模型标识;基于多阶段事件驱动的动态重构神经网络加速电路基于收到的网络模型切换指令切换内部工作状态并向神经网络参数交互控制模块发送携带有目标神经网络模型的请求信号,以控制神经网络参数交互控制模块从目标网络模型所对应的神经网络参数存储器中读取对应的网络参数并传入至基于多阶段事件驱动的动态重构神经网络加速电路。
本发明提供的技术方案至少带来如下有益效果:
本发明的基于多阶段事件驱动的动态重构神经网络加速电路是一种基于可扩展宏指令集的动态重构神经网络加速电路,利用可配置的宏指令集来定义神经网络的层操作,定义当前参与计算的神经网络层的计算模式,从而实现对不同神经网络算法在硬件上的动态重构,并结合一系列低功耗电路优化技术,实现电路的低功耗处理。同时,本发明的动态重构神经网络加速电路利用乒乓交互实现任意深度的神经网络加速,能以较低的硬件开销实现深度神经网络的加速,并且融合了一系列低功耗电路优化技术实现低功耗处理。
本发明的基于多阶段事件驱动神经网络加速***,其结合信号预处理和多阶段神经网络推理实现细粒度的事件驱动,切换灵敏度高且无需大量额外硬件开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的基于多阶段事件驱动的动态重构神经网络加速电路的结构框图;
图2是本发明实施例的动态可重构计算电路的结构框图;
图3是本发明实施例的动态可重构计算电路的权重和偏置值乒乓交互存储电路的结构示意框图;
图4是本发明实施例的动态可重构计算电路的运算引擎的结构框图;
图5是本发明实施例提供的基于多阶段事件驱动神经网络加速***的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
通常来说,事件驱动型算法往往需要根据当前的状态和输入来动态切换不同的处理算法以确保高处理性能和低运算复杂度。而常见的神经网络加速电路仅支持静态重构,即只在复位后配置一次;或者依托处理器内核的调度来实现不同神经网络的动态重构,但这种方式却需要消耗大量的时钟周期来进行神经网络的切换,难以达到事件驱动型算法所要求的高实时性要求。为了解决这一技术问题,本发明实施例提供的基于多阶段事件驱动的动态重构神经网络加速电路利用可配置的宏指令集来定义当前神经网络层的计算模式,从而实现对不同神经网络算法在硬件上的动态重构,并结合一系列低功耗电路优化技术,实现电路的低功耗处理。
作为一种可能的实现方式,本发明实施例提供的基于多阶段事件驱动的动态重构神经网络加速电路(简称动态重构神经网络加速电路)包括:动态可重构计算电路和***的数据流控制电路,如图1所示。其中,数据流控制电路包括总数据流控制器、指令地址控制器、宏指令随机存取存储器和宏指令解码器;其中,数据流控制电路的核心是总数据流控制器,当动态可重构计算电路进行输入层初始化或前一层神经网络计算完成后,动态可重构计算电路会向总数据流控制器发送电路重构请求信号,接收到电路重构请求信号的总数据流控制器会向指令地址控制器发送指令,指令地址控制器接收到指令后产生读取地址,该读取地址用于从宏指令随机存取存储器读取出当前神经网络层对应的宏指令;随后将读取到的宏指令通过宏指令解码器进行解码,解码结果被送入总数据流控制器并产生相应的运算模块控制信号返回给动态可重构计算电路,以控制动态可重构计算电路中各个模块的工作模式,实现动态可重构计算电路对神经网络不同神经网络层的重构计算。
优选的,本发明实施例中,所述动态可重构计算电路的模块具体包括:乒乓特征图随机存取存储器、输入层特征图随机存取存储器、权重和偏置值乒乓交互存储电路、输入数据和权重门控分配电路、运算引擎、输出数据累加和整型分配电路,以及激活函数/池化层控制电路;为了减小神经网络计算延迟,通常动态可重构计算电路中会配置多个运算引擎并行计算,优选的,本实施例中选择使用4个运算引擎,编号以#0、#1、#2、#3表示。
所述输入数据和权重门控分配电路负责从输入层特征图随机存取存储器或乒乓特征图随机存取存储器中读取当前神经网络层运算所需的输入数据(输入特征图值),从权重和偏置值乒乓交互存储电路中读取当前网络运算所需的网络权重和偏置值(即读取对应神经网络层的网络参数),并将读取到的输入特征图值和权重和偏置值根据当前神经网络层结构和计算复杂度分配到不同的运算引擎中,实现神经网络的并行计算。如果当前神经网络层的层级为输入层,则输入数据和权重门控分配电路将从输入层特征图随机存取存储器中读取神经网络的输入特征图值作为当前神经网络层的输入,否则从相应的乒乓特征图随机读取存储器中读取上一层的计算输出结果作为当前神经网络层的输入特征图值。
在乒乓特征图随机存取存储器中,通过乒乓操作实现存储器内部不同分区的读写交替进行。单层神经网络的计算中乒乓特征图随机存取存储器的读写过程如下:
乒乓特征图随机存取存储器包括两个分区,本实施中分别定义为#0分区和#1分区(即图2中的乒乓特征图随机存取存储器框图中的“#0”和“#1”为两个分区的分区编号。其中,#0分区用于存储上一层神经网络的计算结果,在当前层的神经网络计算中,将#0分区的读写状态设置为读;#1分区用于存储当前神经网络层的计算输出结果,#1分区的读写状态设置为写。
在进行当前神经网络层的计算时,首先输入数据和权重门控分配电路从乒乓特征图随机存取存储器中的#0分区读取出上一层神经网络的计算输出结果作为当前神经网络层的输入数据;然后将读取到的数据分发到各个运算引擎中进行神经网络计算;最后将激活函数/池化层控制电路计算得到的当前神经网络层计算输出结果写入到乒乓特征图随机存取存储器的#1分区中;当前神经网络层计算结束并准备进行下一层网络的计算时,乒乓特征图随机存取存储器将内部两个分区的读写状态翻转,即#1的读写状态变更为读、#0的读写状态变更为写,并重复上述操作。
权重和偏置值乒乓交互存储电路如图3所示,包括:权重和偏置值乒乓交互随机存储器、交互状态控制电路、片下交互请求控制电路和信号解码和存储电路;其中,权重和偏置值乒乓交互随机存储器内部分为编号分别为#0和#1的两个分区,通过乒乓操作实现当前神经网络层参数的读取和下一层网络参数的写入交替进行,该权重和偏置值乒乓交互随机存储器通过一个交互状态控制电路来控制权重和偏置值乒乓交互随机存储器与片外的交互以及存储器读写状态的切换。在交互当前神经网络层的网络权重和偏置值的同时,片下交互请求控制电路会向片下的神经网络参数交互控制模块产生神经网络参数的交互请求信号;随后,片下的神经网络参数交互控制模块接收到请求信号之后,会将下一层所需的网络权重和偏置值发送到片内;发送到片内的网络权重和偏置值经过片内的信号解码操作后存储到权重和偏置值乒乓交互随机存储器中。
本发明中,动态可重构计算电路利用多个相同的运算引擎完成数据的并行运算,每个运算引擎如图4所示,包括:数据缓存器、权重缓存器、近零检测定点乘法器阵列、加法树与累加器、移位与截位电路。前一级的输入数据和权重门控分配电路将根据当前神经网络层的所需的参数量和网络结构将输入特征图和网络权重与偏置值分配到不同的运算引擎中。当神经网络的卷积核大小少于近零检测定点乘法器阵列的阵元个数M时,4个运算引擎将同时进行神经网络的四路并行计算;当神经网络的卷积核大小大于阵元个数M时,电路将同时使用2个或4个运算引擎进行双路或单路计算。
前一级的输入数据和权重门控分配电路将输入特征图和网络权重与偏置值交互到对应的运算引擎,特征图数据和网络权重分别写入到运算引擎中的数据缓存器和权重缓存器中缓存。当缓存到指定的计算量后,特征图数据和网络权重数据会输入到近零检测定点乘法器阵列中执行数据的近零值检测和对应的定点乘法计算。近零检测定点乘法器阵列由M个近零检测乘法计算单元构成M行一列的阵列,每个近零检测乘法计算单元包括一个近零检测单元和定点乘法器,在进行乘法计算时,首先近零检测单元对乘数因子进行近零检测,随后定点乘法器进行定点乘法计算。M值大小由进行计算的神经网络的输入通道数和卷积核大小决定,典型值为16-32。其中,触发数据缓存器和权重缓存器向近零检测定点乘法器阵列输入对应数据的计算量可基于实际应用时的硬件资源进行设定,一般设置为当前神经网络层的卷积核宽度,根据网络结构的不同,该计算量的最大值可设置为:运算引擎数量×M。近零检测定点乘法器阵列的计算结果会送到加法树与累加器中,将计算结果和神经网络的偏置值进行逐级累加,然后将累加结果输入到移位与截位电路中执行定点运算的移位和截位操作,移位和截位后的输出结果即为运算引擎最终的运算输出结果。
多路运算引擎的运算输出结果将并行发送到输出数据累加和整型分配电路中,输出数据累加和整型分配电路按照数据流控制电路发出的控制信号将多个运算引擎并行计算得到的运算输出结果进行合并累加与整型分配。当数据累加和整型分配运算完成后,数据将根据当前神经网络层后级是否包含激活函数或池化层,送到对应的电路(激活函数/池化层控制电路)执行激活函数操作或池化操作,并作为整个神经网络层的运算结果(即整个神经网络层的计算输出结果)。最后,神经网络层的计算输出结果将写入到乒乓特征图随机存取存储器单元的对应的分区中。
事件驱动型算法往往需要多个神经网络模型,并且会根据神经网络模型的推理分类结果而触发不同的事件,进而激活不同的神经网络模型,因此本发明实施例还提出了一种基于多阶段事件驱动神经网络加速***,如图5所示,其包括:动态重构神经网络加速电路、信号预处理器,分类结果判别器、网络切换控制器、神经网络参数交互控制模块(对动态重构神经网络加速电路可简称为核外交互控制模块),以及若干个神经网络参数存储器,用于存储不同神经网络模型的参数。其中,N表示本***所能存储的神经网络模型的数量上限。首先,本发明的动态重构神经网络加速电路在模块级和层级都具备可重构能力且支持动态网络切换,在层级可重构方案上,动态重构神经网络加速电路在运算时,会向外部的神经网络参数交互控制模块请求第t层的神经网络参数,其中t=1,2,…,L,而L用于表征神经网络模型的总层数。核外交互控制模块会从当前神经网络模型取出对应层的参数,并依次传输参数量、权重和偏置值进入动态重构神经网络加速电路内,当前接收到的层参数缓存于动态重构神经网络加速电路的权重和偏置值乒乓交互随机存储器中,在内部实现神经网络层级的切换。其次,在模型级可重构策略上,本发明利用信号预处理阶段(由信号预处理器执行)的信号活动检测结果(如利用信号能量检测确认信号是否存在)和神经网络的分类结果(经动态重构神经网络加速电路计算得到的模型最后一层的计算输出结果)综合进行事件判别,即将神经网络的分类结果和信号活动检测结果送入分类结果判别器进行事件判别,所采用的事件判别方法可以根据不同事件驱动型信号处理算法的需求定制化设计,然后将分类结果判别器输出的事件的判别结果送到网络切换控制器,网络切换控制器会根据事件判别结果发出相应的网络模型切换指令,以便于切换到匹配的神经网络模型的运算处理,具体为:网络切换控制器向动态重构神经网络加速电路发送网络模型切换指令,随后动态重构神经网络加速电路切换内部工作状态并向神经网络参数交互控制模块发送对应网络模型(目标网络模型)的请求信号,从而使得神经网络参数交互控制模块从目标网络模型所对应的神经网络参数存储器中读取对应的网络参数并传入至动态重构神经网络加速电路内。即对于动态可重构神经网络加速电路而言,模型级切换相当于切换神经网络层级,并且额外重置为当前层为输入层。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (6)
1.基于多阶段事件驱动的动态重构神经网络加速电路,其特征在于,包括动态可重构计算电路和***的数据流控制电路;
所述动态可重构计算电路用于在数据流控制电路的控制下完成神经网络模型的层级重构计算,获取神经网络模型的每一神经网络层的计算输出结果;
所述数据流控制电路包括:总数据流控制器、指令地址控制器、宏指令随机存取存储器和宏指令解码器;
所述总数据流控制器接收动态可重构计算电路发送的电路重构请求信号,并基于该电路重构请求信号生成发送给指令地址控制器的指令;所述电路重构请求信号中携带有神经网络模型的神经网络层标识;
所述指令地址控制器基于当前接收到的指令生成读取地址,所述读取地址用于从宏指令随机存取存储器读取出当前神经网络层对应的宏指令,并将读取到的宏指令送入宏指令解码器;
所述宏指令解码器对当前收到的宏指令进行解码,并将解码结果送入总数据流控制器,总数据流控制器生成对应的运算模块控制信号并返回给动态可重构计算电路,以控制动态可重构计算电路的工作模式;
所述动态可重构计算电路包括:乒乓特征图随机存取存储器、输入层特征图随机存取存储器、权重和偏置值乒乓交互存储电路、输入数据和权重门控分配电路、输出数据累加和整型分配电路、激活函数/池化层控制电路,以及至少两个运算引擎;
所述输入数据和权重门控分配电路用于从输入层特征图随机存取存储器或乒乓特征图随机存取存储器中读取当前神经网络层运算所需的输入数据,从权重和偏置值乒乓交互存储电路中读取当前网络运算所需的网络权重和偏置值,并将读取到的输入数据和权重和偏置值根据当前神经网络层结构和计算复杂度分配到不同的运算引擎中进行并行计算;如果当前神经网络层的层级为输入层,则输入数据和权重门控分配电路将从输入层特征图随机存取存储器中读取神经网络模型的输入数据作为当前神经网络层的输入数据,否则从乒乓特征图随机读取存储器的指定分区中读取上一神经网络层的计算输出结果作为当前神经网络层的输入数据;
各运算引擎的运算输出结果将并行发送到输出数据累加和整型分配电路中,输出数据累加和整型分配电路按照设置的控制信号对多个运算输出结果进行合并累加与整型分配;输出数据累加和整型分配电路将根据当前神经网络层的后级神经网络层类型执行不同的数据传输:若后级神经网络层类型包含激活函数或池化层,则将输出数据累加和整型分配电路的输出数据送入激活函数/池化层控制电路;否则,输出数据累加和整型分配电路的输出数据被作为当前神经网络层的计算输出结果并写入乒乓特征图随机存取存储器的指定分区中。
2.如权利要求1所述的基于多阶段事件驱动的动态重构神经网络加速电路,其特征在于,所述乒乓特征图随机存取存储器包括第一分区和第二分区;
其中,第一分区用于存储上一神经网络层的计算输出结果,第二分区用于存储当前神经网络层的计算输出结果,在当前神经网络层的运算过程中,第一分区的读写状态为读,第二分区的读写状态为写;当前神经网络层的计算结束并准备进行下一神经网络层的计算时,乒乓特征图随机存取存储器将内部两个分区的读写状态翻转。
3.如权利要求1所述的基于多阶段事件驱动的动态重构神经网络加速电路,其特征在于,所述权重和偏置值乒乓交互存储电路包括:权重和偏置值乒乓交互随机存储器、交互状态控制电路、片下交互请求控制电路,以及信号解码和存储电路;
所述权重和偏置值乒乓交互随机存储器包括两个分区,通过乒乓操作实现当前神经网络层的权重和偏置值的读取与下一神经网络层的权重和偏置值写入的交替进行;
所述权重和偏置值乒乓交互随机存储器通过交互状态控制电路控制权重和偏置值乒乓交互随机存储器与片外的交互以及存储器读写状态的切换,在交互当前神经网络层的网络权重和偏置值的同时,片下交互请求控制电路向外部的神经网络参数交互控制模块产生神经网络参数的交互请求信号,所述神经网络参数包括权重和偏置值;
所述神经网络参数交互控制模块基于收到的神经网络参数的交互请求信号将下一神经网络层所需的权重和偏置值送入权重和偏置值乒乓交互存储电路,经信号解码和存储电路执行信号解码操作后存储到权重和偏置值乒乓交互随机存储器的指定分区。
4.如权利要求1所述的基于多阶段事件驱动的动态重构神经网络加速电路,其特征在于,每个运算引擎包括:数据缓存器、权重缓存器、近零检测定点乘法器阵列、加法树与累加器,以及移位与截位电路;
所述数据缓存器用于存储输入数据和权重门控分配电路送入的输入数据;
所述权重缓存器用于存储输入数据和权重门控分配电路送入的权重与偏置值;
当数据缓存器和权重缓存器缓存的数据量满足设定的计算量时,将数据缓存器中的输入数据和权重缓存器中的权重与偏置值输入到近零检测定点乘法器阵列;
所述近零检测定点乘法器阵列包括若干个近零检测乘法计算单元,每个近零检测乘法计算单元包括一个近零检测单元和一个定点乘法器,执行计算时,近零检测单元对乘数因子进行近零检测,再由定点乘法器进行定点乘法计算;
所述近零检测定点乘法器阵列的计算结果送入加法树与累加器中,将计算结果和神经网络层的偏置值进行逐级累加,得到的累加结果输入移位与截位电路;
所述移位与截位电路用于执行定点运算的移位和截位操作,得到每个运算引擎的运算输出结果。
5.如权利要求4所述的基于多阶段事件驱动的动态重构神经网络加速电路,其特征在于,所述运算引擎的数量设置为4个,若当前神经网络层的卷积核大小少于近零检测定点乘法器阵列的近零检测乘法计算单元的个数时,4个运算引擎同时进行当前神经网络层的四路并行计算;若当前神经网络层的卷积核大小大于或等于近零检测乘法计算单元的个数时,同时使用2个或4个运算引擎进行双路或单路计算。
6.基于多阶段事件驱动神经网络加速***,其特征在于,包括:神经网络参数交互控制模块、信号预处理器、分类结果判别器、网络切换控制器,若干个神经网络参数存储器,以及如权利要求1至5任一项所述的基于多阶段事件驱动的动态重构神经网络加速电路;
每个神经网络参数存储器用于存储不同神经网络模型的神经网络参数,所述神经网络参数包括权重和偏置值;
所述神经网络参数交互控制模块用于从当前神经网络模型取出对应层的神经网络参数,并将当前神经网络层计算所需的输入数据和神经网络参数传输给基于多阶段事件驱动的动态重构神经网络加速电路,以存入其权重和偏置值乒乓交互随机存储器中;
所述信号预处理器用于生成信号活动检测结果并输入至分类结果判别器;
根据所述基于多阶段事件驱动的动态重构神经网络加速电路对当前神经网络模型的最后一层的计算输出结果获取神经网络模型的分类结果,并将分类结果输入至分类结果判别器;
所述分类结果判别器基于预置的事件判别规则确定事件判别结果并输入至网络切换控制器;
所述网络切换控制器根据事件判别结果生成相应的网络模型切换指令,并发送给基于多阶段事件驱动的动态重构神经网络加速电路,所述网络模型切换指令携带有目标神经网络模型标识;
所述基于多阶段事件驱动的动态重构神经网络加速电路基于收到的网络模型切换指令切换内部工作状态并向神经网络参数交互控制模块发送携带有目标神经网络模型的请求信号,以控制神经网络参数交互控制模块从目标网络模型所对应的神经网络参数存储器中读取对应的网络参数并传入至基于多阶段事件驱动的动态重构神经网络加速电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310961883.1A CN116702852B (zh) | 2023-08-02 | 2023-08-02 | 基于多阶段事件驱动的动态重构神经网络加速电路及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310961883.1A CN116702852B (zh) | 2023-08-02 | 2023-08-02 | 基于多阶段事件驱动的动态重构神经网络加速电路及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116702852A CN116702852A (zh) | 2023-09-05 |
CN116702852B true CN116702852B (zh) | 2023-10-20 |
Family
ID=87839559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310961883.1A Active CN116702852B (zh) | 2023-08-02 | 2023-08-02 | 基于多阶段事件驱动的动态重构神经网络加速电路及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116702852B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117892224B (zh) * | 2024-03-14 | 2024-05-31 | 电子科技大学 | 一种具备唤醒机制的混合特征神经网络信号处理硬件电路 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111105023A (zh) * | 2019-11-08 | 2020-05-05 | 中国科学院深圳先进技术研究院 | 数据流重构方法及可重构数据流处理器 |
CN111832720A (zh) * | 2020-09-21 | 2020-10-27 | 电子科技大学 | 一种可配置神经网络推理与在线学习融合计算电路 |
CN112990444A (zh) * | 2021-05-13 | 2021-06-18 | 电子科技大学 | 一种混合式神经网络训练方法、***、设备及存储介质 |
CN113033765A (zh) * | 2019-12-24 | 2021-06-25 | 英特尔公司 | 用于实现卷积神经网络的可配置处理器元件阵列 |
CN113032013A (zh) * | 2021-01-29 | 2021-06-25 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
CN113468102A (zh) * | 2021-07-22 | 2021-10-01 | 无锡沐创集成电路设计有限公司 | 混合粒度的计算电路模块和计算*** |
EP3934254A1 (en) * | 2020-06-29 | 2022-01-05 | Nokia Technologies Oy | Encoding and decoding of extracted features for use with machines |
WO2022251741A1 (en) * | 2021-05-28 | 2022-12-01 | Google Llc | Generating learned representations of digital circuit designs |
CN115705480A (zh) * | 2021-08-03 | 2023-02-17 | 辉达公司 | 神经网络循环检测 |
CN116227565A (zh) * | 2023-02-20 | 2023-06-06 | 南京大学 | 一种编译优化***及精度可变的神经网络加速器 |
CN116391207A (zh) * | 2020-08-17 | 2023-07-04 | 英特尔公司 | 用于包括光线追踪的高效图形处理的设备和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180181503A1 (en) * | 2015-08-02 | 2018-06-28 | Wave Computing, Inc. | Data flow computation using fifos |
-
2023
- 2023-08-02 CN CN202310961883.1A patent/CN116702852B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111105023A (zh) * | 2019-11-08 | 2020-05-05 | 中国科学院深圳先进技术研究院 | 数据流重构方法及可重构数据流处理器 |
CN113033765A (zh) * | 2019-12-24 | 2021-06-25 | 英特尔公司 | 用于实现卷积神经网络的可配置处理器元件阵列 |
EP3934254A1 (en) * | 2020-06-29 | 2022-01-05 | Nokia Technologies Oy | Encoding and decoding of extracted features for use with machines |
CN116391207A (zh) * | 2020-08-17 | 2023-07-04 | 英特尔公司 | 用于包括光线追踪的高效图形处理的设备和方法 |
CN111832720A (zh) * | 2020-09-21 | 2020-10-27 | 电子科技大学 | 一种可配置神经网络推理与在线学习融合计算电路 |
CN113032013A (zh) * | 2021-01-29 | 2021-06-25 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
CN112990444A (zh) * | 2021-05-13 | 2021-06-18 | 电子科技大学 | 一种混合式神经网络训练方法、***、设备及存储介质 |
WO2022251741A1 (en) * | 2021-05-28 | 2022-12-01 | Google Llc | Generating learned representations of digital circuit designs |
CN113468102A (zh) * | 2021-07-22 | 2021-10-01 | 无锡沐创集成电路设计有限公司 | 混合粒度的计算电路模块和计算*** |
CN115705480A (zh) * | 2021-08-03 | 2023-02-17 | 辉达公司 | 神经网络循环检测 |
CN116227565A (zh) * | 2023-02-20 | 2023-06-06 | 南京大学 | 一种编译优化***及精度可变的神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN116702852A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储***及加速计算方法 | |
CN109409510B (zh) | 神经元电路、芯片、***及其方法、存储介质 | |
CN111176727A (zh) | 计算装置以及计算方法 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN116702852B (zh) | 基于多阶段事件驱动的动态重构神经网络加速电路及*** | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN111339027A (zh) | 可重构的人工智能核心与异构多核芯片的自动设计方法 | |
WO2021259098A1 (zh) | 一种基于卷积神经网络的加速***、方法及存储介质 | |
CN116521380A (zh) | 一种资源自适应协同的模型训练加速方法、装置及设备 | |
CN109993293A (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN111401543A (zh) | 一种全片上存储的神经网络加速器及其实现方法 | |
CN111353586A (zh) | 一种基于fpga实现cnn加速的*** | |
CN114005458A (zh) | 基于流水线架构的语音降噪方法、***及存储介质 | |
Santoro et al. | Design-space exploration of pareto-optimal architectures for deep learning with dvfs | |
CN116822600A (zh) | 一种基于risc-v架构的神经网络搜索芯片 | |
Liu et al. | A cloud server oriented FPGA accelerator for LSTM recurrent neural network | |
CN115238879A (zh) | 深度神经网络的架构搜索方法及硬件加速器 | |
CN114595813A (zh) | 异构加速处理器及数据计算方法 | |
KR20230063791A (ko) | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
Chang et al. | Accuracy vs. efficiency: Achieving both through hardware-aware quantization and reconfigurable architecture with mixed precision | |
CN113469365B (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 |