CN110222833A - 一种用于神经网络的数据处理电路 - Google Patents
一种用于神经网络的数据处理电路 Download PDFInfo
- Publication number
- CN110222833A CN110222833A CN201810171695.8A CN201810171695A CN110222833A CN 110222833 A CN110222833 A CN 110222833A CN 201810171695 A CN201810171695 A CN 201810171695A CN 110222833 A CN110222833 A CN 110222833A
- Authority
- CN
- China
- Prior art keywords
- circuit
- data
- input
- calculation
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
-
- 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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Optimization (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Logic Circuits (AREA)
Abstract
一种数据处理电路,涉及数字电路领域,包括第一计算电路和输入控制电路。第一计算电路包括一个或多个子计算电路,每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路,和第一非线性运算电路,其中,第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个。输入控制电路用于控制第一计算电路读取输入数据和输入参数,以及根据接收的第一指令控制第一计算电路包括的子计算电路中的上述运算电路,对输入数据和输入参数进行运算。数据处理电路不仅能够实现基本的乘和累加运算,还能通过第一非线性运算电路实现对数运算、指数运算或幂运算等更加复杂的运算,从而适应更多神经网络层的计算。
Description
技术领域
本发明涉及数字电路领域,尤其涉及神经网络的数据处理。
背景技术
神经网络处理器主要包括计算引擎、控制和存储三个模块。为了适应神经网络的高密度计算量,计算引擎通常与承载了神经网络90%以上计算量的卷积层和全连接层相适配,即计算引擎适用于大数据量的乘和累加运算。对于其他类型的运算,神经网络处理器将需要处理的数据上报给CPU(Central Processing Unit,中央处理器),CPU在计算完毕后,将得到的数据结果下发至神经网络处理器。对于每一次除卷积层和全连接层以外的其他神经网络层的计算,数据都需要在神经网络处理器和CPU之间来回传输,因此而产生的传输时延极大地降低了神经网络处理器进行神经网络相关计算的效率。
发明内容
本发明的实施例提供了一种数据处理电路,可以用于神经网络计算,以适应更多种类神经网络层的计算,进而可以减少因数据处理电路与CPU之间数据交互而产生的时延。
为了详细描述本发明,将使用以下术语、缩写或符号:
PLD:Programmable Logic Device,可编程逻辑器件;
FPGA:Field Programmable Gate Array,现场可编程门阵列;
LRN:Local Response Normalization,局部响应归一化层;
ROM:Read-Only Memory,只读存储器;
RAM:Random Access Mmemory,随机存取存储器;
IO:Input and Output,输入输出;
IP核:Intellectual Property core,知识产权核,用于专用集成电路或FPGA中的预先设计好的电路功能模块。
本发明实施例中的运算包括对数据或参数进行乘法运算、加法运算、对数运算等,比较运算,或直通。
本发明实施例中的直通包括通过导通电路将数据或参数直接输出,例如导线或者半导体开关,或通过寄存器、锁存器等存储器件将数据或参数存储并输出。
本发明实施例中的可编程逻辑器件包括GAL(Generic Array Logic,通用阵列逻辑),CPLD(Complex PLD,复杂型PLD),FPGA。
第一方面,在本发明的实施例中提供一种数据处理电路,包括:第一计算电路和输入控制电路;其中,第一计算电路包括一个或多个子计算电路,每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,和第一非线性运算电路,其中,第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个;输入控制电路用于控制第一计算电路读取输入数据和输入参数,以及接收第一指令,并根据第一指令控制第一计算电路中的一个或多个子计算电路,使用上述运算电路中的一个或多个的组合对输入数据和输入参数进行数据运算,并输出第一运算结果。
由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
在一种实施方式中,输入控制电路将接收的第一指令转换为控制信号,并通过控制信号来控制第一计算电路进行数据运算。
在一种实施方式中,输入数据包括第一输入数据和第二输入数据。
在一种实施方式中,第一非线性运算电路用于对第一输入数据进行对数运算或指数运算;第一直通电路用于直接输出第一输入数据;乘法运算电路用于对输入参数和第一非线性运算电路的运算结果进行乘法运算,或对输入参数和第一直通电路输出的结果进行乘法运算;第一加法运算电路用于将乘法运算电路的运算结果与第二输入数据进行加法运算;第一比较运算电路用于将乘法运算电路的运算结果与第二输入数据进行比较运算。多种运算方式的组合使得子计算电路对数据的运算方式更加灵活,适应更复杂的运算方式。
在一种实施方式中,输入控制电路用于根据第一指令使能第一非线性运算电路和第一直通电路之一参与所述数据运算,以及使能第一加法运算电路与第一比较运算电路之一参与数据运算。
在一种实施方式中,每个子计算电路还包括第二非线性运算电路和第二直通电路;其中,第二非线性运算电路包括指数运算电路和对数运算电路中的至少一个;第二直通电路用于直接输出第一加法运算电路的运算结果或第一比较运算电路的运算结果;第二非线性运算电路用于对第一加法运算电路的运算结果或第一比较运算电路的运算结果进行对数运算或指数运算;所述输入控制电路还用于根据第一指令使能所述第二非线性运算电路和第二直通电路之一参与数据运算。结合第二非线性运算电路和第二直通电路,子计算电路可以在一次计算中将数据做两次对数运算和/或指数运算,大大增加了子计算电路的运算能力。
在一种实施方式中,第一非线性运算电路为对数运算电路,第二非线性运算电路为指数运算电路。子计算电路先对第一输入数据进行对数运算,再对比较运算电路或加法运算电路的输出结果进行指数运算,可以在一次计算中实现较为常见的运算,例如幂运算,提高计算效率。
在一种实施方式中,对数运算电路为编码器。对数运算电路通过对数据进行编码实现对数运算,简化了对数运算电路的结构。
在一种实施方式中,指数运算电路为译码器。指数运算电路通过对数据进行译码实现指数运算,简化了指数运算电路的结构。
在一种实施方式中,第一计算电路还包括屏蔽电路,用于在输入控制电路的控制下接收一个或多个子计算电路的运算结果,并输出经过屏蔽处理后的一个或多个子计算电路的运算结果。屏蔽电路可以实现局部求和的运算,以适应更复杂的运算方式。
在一种实施方式中,屏蔽电路为选择器。
在一种实施方式中,第一计算电路还包括输出计算电路,包括第二加法运算电路、第二比较运算电路和第三直通电路;其中,第二加法运算电路用于将屏蔽电路输出的结果进行加法运算,并输出一个加法运算结果;第二比较运算电路将屏蔽电路输出的结果进行比较运算,并输出一个比较运算结果;第三直通电路用于直接输出屏蔽电路输出的结果;输入控制电路还用于根据第一指令使能第二加法运算电路、第二比较运算电路和第三直通电路之一对屏蔽电路输出的结果进行处理。
在一种实施方式中,数据处理电路还包括:数据缓存电路和参数缓存电路;其中,数据缓存电路用于缓存输入数据,并将输入数据输出至第一计算电路;参数缓存电路用于缓存输入参数,并将输入参数输出至第一计算电路。数据缓存电路和参数缓存电路可以提高第一计算电路读取数据和参数的速度。
在一种实施方式中,数据处理电路还包括输出控制电路,用于缓存第一计算电路输出的第一运算结果,并输出第一运算结果。
在一种实施方式中,数据处理电路还包括第二计算电路,用于乘和累加运算;其中,输入控制电路控制第二计算电路读取输入数据和输入参数;输入控制电路还用于接收第二指令,并根据第二指令控制第二计算电路进行乘和累加运算,输出第二运算结果;输出控制电路还用于缓存第二计算电路输出的第二运算结果,并输出第二运算结果。将第二计算电路专门用于乘和累加运算,充分利用了硬件资源,提高了数据处理电路的计算效率。
第二方面,在本发明的实施例中提供一种数据处理方法,应用于第一方面中及其可能的实施方式中的数据处理电路,所述数据处理方法包括:
输入控制电路控制第一计算电路读取输入数据和输入参数;
输入控制电路接收第一指令,并根据第一指令控制第一计算电路中的一个或多个子计算电路,使用第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,以及第一非线性运算电路中的一个或多个的组合对输入数据和输入参数进行数据运算,并输出第一运算结果。
由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
在一种实施方式中,输入控制电路将接收的第一指令转换为控制信号,并通过控制信号来控制第一计算电路进行数据运算。
在一种实施方式中,输入控制电路根据第一指令控制第一计算电路对输入数据和输入参数进行数据运算,其步骤包括:输入控制电路根据第一指令控制第一计算电路对第一输入数据做非线性运算或直接输出第一输入数据,其中非线性运算包括对数运算和指数运算;输入控制电路根据第一指令控制第一计算电路对上述结果和输入参数做乘法运算;输入控制电路根据第一指令控制第一计算电路对上述结果和第二输入数据做加法运算或比较运算。
在一种实施方式中,输入控制电路根据第一指令控制第一计算电路对上述加法运算或比较运算的运算结果做非线性运算或直接输出上述结果,其中非线性运算包括对数运算和指数运算。
在一种实施方式中,输入控制电路根据第一指令控制第一计算电路对第一输入数据做对数运算,对上述加法运算或比较运算的运算结果做指数运算。
在一种实施方式中,上述对数运算为编码运算。
在一种实施方式中,上述指数运算为译码运算。
在一种实施方式中,输入控制电路根据第一指令控制第一计算电路对输入数据和输入参数进行数据运算的步骤还包括:输入控制电路根据所述第一指令控制屏蔽电路接收一个或多个子计算电路的运算结果,对运算结果进行屏蔽,并输出经过屏蔽处理后的一个或多个子计算电路的运算结果。
在一种实施方式中,输入控制电路根据第一指令控制选择器对一个或多个子计算电路的运算结果进行选择。
在一种实施方式中,输入控制电路根据第一指令控制第一计算电路对输入数据和输入参数进行数据运算的步骤还包括:输入控制电路根据第一指令控制输出计算电路对上述屏蔽电路输出的运算结果做加法运算、比较运算或直接输出上述屏蔽电路输出的运算结果。
在一种实施方式中,输入控制电路将输入数据缓存在数据缓存电路中,第一计算电路从数据缓存电路中读取输入数据;输入控制电路将输入参数缓存在参数缓存电路中,第一计算电路从参数缓存电路中读取输入参数。
在一种实施方式中,输出控制电路缓存第一计算电路输出的第一运算结果,并输出第一运算结果。
在一种实施方式中,输入控制电路控制第二计算电路读取输入数据和输入参数;输入控制电路还用于接收第二指令,并根据第二指令控制第二计算电路对输入数据和输入参数进行乘和累加运算,输出第二运算结果;输出控制电路还用于缓存第二计算电路输出的第二运算结果,并输出第二运算结果。将第二计算电路专门用于乘和累加运算,充分利用了硬件资源,提高了数据处理电路的计算效率。
第三方面,在本发明的实施例中提供一种数据处理装置,包括可编程逻辑器件和存储器件,其中存储器件用于存储配置数据,可编程逻辑器件用于读取存储器件中的配置数据,并根据配置数据对可编程逻辑器件中的多个逻辑块进行配置,其中多个逻辑块被配置为第一方面中及其可能的实施方式中的数据处理电路。
由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
第四方面,在本发明的实施例中提供一种存储介质,用于存储配置数据,其中,可编程逻辑器件读取存储介质中的配置数据,并根据配置数据对可编程逻辑器件中的多个逻辑块进行配置,其中多个逻辑块被配置为第一方面中及其可能的实施方式中的数据处理电路。
由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
第五方面,在本发明的实施例中提供一种存储介质,用于存储源文件,其中,源文件被读取,并通过集成电路设计及生产设备被转换为如第一方面中及其可能的实施方式中的数据处理电路。由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中一种用于神经网络的电子设备的示意图;
图2为本发明实施例中一种神经网络处理器的示意图;
图3为本发明实施例中一种第一计算电路的示意图;
图4为本发明实施例中一种子计算电路的示意图;
图5为本发明实施例中另一种子计算电路的示意图;
图6为本发明实施例中又一种子计算电路的示意图;
图7为本发明实施例中另一种神经网络处理器的示意图;
图8为本发明实施例中一种神经网络处理器的工作流程图;
图9为本发明实施例中另一种用于神经网络的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例以图1所示的一种用于神经网络计算的电子设备100为例。电子设备100包括处理器102、存储器103和神经网络处理器200。电子设备100可以为一个印制电路板(Printed Circuit Board,PCB),集成电路(Integrated Circuit,IC),或者一种通讯设备,例如移动电话、便携式电脑等。在一种实现方式中,处理器102、存储器103和神经网络处理器200作为三个分立器件被设置于PCB板上;在另一种实现方式中,处理器102、存储器103和神经网络处理器200被集成或封装于一个IC上。可以理解上述三部分可以根据需要进行集成或分立,例如可以将处理器102与神经网络处理器200集成或封装于一个专用集成电路(Application-Specific Integrated Circuit,ASIC)上,再与存储器103一起设置于PCB板上。处理器102、存储器103和神经网络处理器200之间互相通信耦合,并存在高速数据传输连接,该高速数据传输连接可以通过分别通信连接处理器102、存储器103和神经网络处理器200的总线101来实现,总线101可以为AXI(Advanced eXtensible Interface)总线协议,或其他总线协议。处理器102可以是中央处理器(Central Processing Unit,CPU),用于运行存储在存储器103中的软件程序和/或指令,以执行电子设备100的各种功能,上述CPU可以是基于X86架构、基于ARM架构和基于cortex-A架构的CPU。存储器103可以包括易失性存储器,例如随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器,例如闪存(flash memory),硬盘或固态硬盘(Solid-State Drive,SSD),也可以是上述种类的存储器的组合。神经网络处理器200可以是一个单独的硬件芯片,也可以是一个与处理器102集成在一个硬件芯片中的计算电路,例如IP(Intellectual Property,知识产权)核。上述的一个或多个硬件芯片可以是ASIC、可编程逻辑器件(Programmable Logic Device,PLD)或上述种类的硬件芯片的组合,其中PLD可以是现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)等。
可选的,电子设备100还包括显示设备104、输入设备105、射频电路106和通信模块107。其中,显示设备104用于输出可视的文本、图形、视频及其任意的组合,显示设备104可以是LCD(Liquid Crystal Display,液晶显示器)或LPD(Lighting Power Density,发光聚合物显示器);用户可以通过输入设备105输入命令和信息至电子设备100中,例如待识别的图像数据或声音数据,其中输入设备105可以是鼠标、键盘、扫描仪或摄像头等;射频电路106用于接收和发送电磁波,将电信号变换成电磁波,或是将电磁波变换成电信号,并且通过电磁波与通信网络或其他通信设备进行通信;通信模块107用于处理通信数据,例如射频电路106接收的电磁波并变换成的电信号所表示的通信数据。
在一种实施方式中,电子设备100中的总线101将处理器102、存储器103和神经网络处理器200通信连接,形成数据通路。处理器102通过总线101控制神经网络处理器200启动神经网络计算;当神经网络处理器200完成神经网络计算,则通过总线101通知处理器102计算结束。神经网络处理器200通过总线101从存储器103中获取用于神经网络计算的输入数据、输入参数和指令,其中输入数据包括需要计算的神经网络数据,如待识别的图像数据、声音数据;输入参数包括用于神经网络计算的参数,如离线训练好的神经网络参数;指令包括指示神经网络层的信息,神经网络处理器200根据指令,配置对应的神经网络层的计算模式,这些计算模式可以包括乘、累加、开方等运算,或者这些运算的组合。本发明实施例中的一种神经网络处理器200可以处理多种神经网络层的计算,如卷积(Convolution)层、全连接(Full Connected)层、池化(Pooling)层、归一化(Normalize)层等神经网络层。
一个神经网络可以包括多种神经网络层,并且同一种神经网络层可以多次出现在一个神经网络中,例如,识别一个图像需要的神经网络层包括:卷积层、sigmoid层、池化层、sigmoid层、池化层和全连接层,上述的神经网络层包括了2层sigmoid层和2层池化层。在神经网络计算中,神经网络处理器200依次对每一层神经网络层进行计算,其中,对当前神经网络层的计算结果可以作为下一层神经网络层计算的输入。在上面的例子中,卷积层的输入数据为图像的输入数据和输入参数,对卷积层进行计算后得到的计算结果被用于sigmoid层的输入数据。
在对一层神经网络进行一次完整的计算过程中,神经网络处理器200先通过总线101从存储器103中读取需要处理的输入数据、输入参数和指令。由于计算不同的神经网络层需要对数据做不同模式的计算,因此读取的输入参数和指令与具体的神经网络层的种类有关。神经网络处理器200根据对应的指令对输入数据和输入参数进行计算,得到的计算结果通过总线101写入存储器103,这些计算结果作为后续的神经网络层的计算所需要的数据。在下一层神经网络层的计算中,神经网络处理器200再次通过总线101从存储器103中读取输入数据和输入参数,其中读取的输入数据可以包括上一层神经网络层的计算结果或者尚未经过计算的数据。
如图2所示的是根据本发明实施例的一种神经网络处理器200,包括输入控制电路202、数据存储电路203、参数存储电路204、输出控制电路205和第一计算电路300。输入控制电路202接收输入数据、输入参数和第一指令,这些输入数据、输入参数和第一指令可以是来自存储器103的,具体的,可以经由存储器103与神经网络处理器200之间的数据通路(如总线101)传输。在一种实施方式中,输入控制电路202分别将接收到的输入数据和输入参数缓存在数据存储电路203和参数存储电路204中,并控制第一计算电路300读取数据存储电路203中的输入数据和参数存储电路204中的输入参数;在另一种实施方式中,输入控制电路202直接控制第一计算电路300读取存储器103中的输入数据和输入参数。输入控制电路202还通过其包括的指令解析电路将第一指令转换为控制信号,以控制第一计算电路300使用与第一指令对应的神经网络层的计算模式进行计算。
数据存储电路203中缓存的输入数据可以为在当前神经网络层的计算中所需要计算的数据,如输入的待识别的图像数据、声音数据等;参数存储电路204中缓存的输入参数为参与当前神经网络层计算的参数,如离线训练好的神经网络参数。数据存储电路203和参数存储电路204可以为BRAM(Block Random-Access Memory,块RAM)、DRAM(distributedRandom-Access Memory,分布式RAM)或其他类型的存储电路。
输出控制电路205接收第一计算电路300输出的第一运算结果,将第一运算结果输出至存储器103。具体的,如果存储器103被设计为置于神经网络处理器200之外,输出控制电路205可以通过总线101将第一运算结果存储至存储器103中。在一种实施方式中,输入控制电路202和输出控制电路205还可以包括独立的存储电路,如分布式的寄存器,用于缓存电路内部计算产生的临时结果。例如,输出控制电路205接收并缓存第一计算电路300产生的第一运算结果,并输出第一运算结果。
一个神经网络模型通常包括多个神经网络层,例如卷积层、全连接层、LRN(LocalResponse Normalization,局部响应归一化)层、归一化层、池化层等。其中,卷积层和全连接层的计算模式固定,通常为大量的乘和累加运算;而其他神经网络层,如LRN层、归一化层、池化层等,需要更加灵活、复杂的计算,如幂运算、除法运算和局部求和等。而神经网络处理器200中的第一计算电路300不仅可以实现大量的乘和累加运算,同时也能够实现幂运算、除法运算和局部求和等其他模式的计算,满足了神经网络处理器200计算更多种神经网络层的需求,从而节省大量的神经网络处理器200和处理器102进行数据交互的时间,提高了计算神经网络应用的运行速度。
如图3所示的是根据本发明实施例的第一计算电路300。第一计算电路300包括多个子计算电路310、屏蔽电路320和输出计算电路330。其中多个子计算电路310包括子计算电路0,子计算电路1…子计算电路N-1。多个子计算电路310接收输入数据、输入参数和输入控制电路202输出的控制信号,对输入数据或计算产生的中间数据进行对数运算和/或指数运算。多个子计算电路310可以对输入数据和输入参数实行并行计算,被并行处理的输入数据和输入参数可以为向量或向量的子集。
第一计算电路300包括多个子计算电路,其中多个子计算电路中的每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,和第一非线性运算电路,其中第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个。输入控制电路202接收第一指令,并根据第一指令产生控制信号,以控制第一计算电路300中的多个子计算电路,并使用第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,以及第一非线性运算电路中的一个或多个的组合对输入数据和输入参数进行运算。根据控制信号,第一计算电路300将加法运算、乘法运算、比较运算、对数运算和指数运算进行组合,以实现更加复杂的运算方式,例如开方、求平方等运算。
由于输入控制电路可以通过第一指令控制第一计算电路实现对数运算、指数运算、直通、加法运算、比较运算和乘法运算中的一种运算或多种运算的组合,数据处理电路可以完成更复杂的运算模式,例如幂运算、除法运算和局部求和等,使得更多种类的神经网络层可以在数据处理电路中进行计算,相应地减少了CPU需要处理的神经网络层的种类,因此减少了数据处理电路与CPU进行数据交互的频率,进而减少由此产生的时延,提升了神经网络的计算效率。
第一加法运算电路可以是加法器,例如串行加法器、行波进位加法器、超前进位加法器,或者其他通过二进制的设计方法进行优化的加法器。乘法运算电路可以是移位相加乘法器,或者通过查找表(Look-Up Table,LUT)来实现乘法运算。第一比较运算电路可以根据不同的组合逻辑来实现。第一直通电路可以通过导通电路将数据或参数直接输出,例如导线或者半导体开关,或通过寄存器、锁存器等存储器件将数据或参数存储并输出,或者是其他提供通信连接的数据通路。
第一计算电路300用于根据控制信号计算输入数据和输入参数,其中,输入数据包括第一输入数据和第二输入数据。具体的,第一非线性运算电路用于对第一输入数据进行对数运算或指数运算,并输出运算结果;第一直通电路用于直接输出第一输入数据;乘法运算电路用于对输入参数和第一非线性运算电路的运算结果进行乘法运算,或对输入参数和第一直通电路输出的结果进行乘法运算,并输出运算结果;第一加法运算电路用于将乘法运算电路的运算结果与第二输入数据进行加法运算,并输出运算结果;第一比较运算电路用于将乘法运算电路的运算结果与第二输入数据进行比较运算,并输出运算结果。输入控制电路根据第一指令转换成的控制信号使能第一非线性运算电路和第一直通电路之一参与运算,以及使能第一加法运算电路与第一比较运算电路之一参与运算。
本发明的所有实施例中的对数运算和指数运算都以2为底数,但需要注意的是,根据本发明的所有实施例中的对数运算和指数运算的底数也可以采用其它大于0且不等于1的值。
如图4所示的子计算电路400是根据本发明实施例的子计算电路310的一种具体的实施方式。子计算电路400包括第一转换电路410、乘法运算电路420和求和比较电路430。其中,第一转换电路410包括第一非线性运算电路412和第一直通电路414,第一转换电路410根据控制信号对第一输入数据x做指数运算或对数运算,或直接输出x;乘法运算电路420将第一转换电路410输出的结果与输入参数a相乘;求和比较电路430包括第一加法电路和第一比较电路,求和比较电路430根据控制信号对乘法运算电路420输出的结果和第二输入数据y做加法运算或比较运算。
第一非线性运算电路412可以包括编码器、译码器、移位寄存器和查找表之一或多种的组合,以对数据进行x和log2x之间的转换。例如,第一非线性运算电路412包括指数运算电路和对数运算电路,其中,对数运算电路为一个4线-2线的编码器,指数运算电路为一个2线-4线的译码器。对于对数运算电路,当输入的x分别为二进制表示的0001、0010、0100、1000,即十进制表示的1、2、4、8,则对数运算电路输出的log2x的值分别为二进制表示的00、01、10、11,即十进制表示的0、1、2、3,因此对数运算电路实现了x到log2x之间的转换。同样的,指数运算电路可以实现log2x到x之间的转换。
求和比较电路430包括第一加法运算电路和第一比较运算电路。具体来说,求和比较电路430还可以包括一个选择器,通过接收的控制信号使能第一加法运算电路或第一比较运算电路对乘法运算电路420输出的结果和第二输入数据y做加法运算或比较运算,并输出运算结果。
以对数据x求x3的运算为例来说明子计算电路400的工作方式,其中子计算电路400需要对数据做两次计算。在第一次计算中,第一转换电路410对x做对数运算,数据y为0,参数a为3。此时,第一转换电路410输出的结果为log2x,乘法运算电路420输出的结果为3log2x,求和比较电路430做加法运算,输出的结果为3log2x,即log2x3。在第二次计算中,第一转换计算电路410对输入log2x3做指数运算,数据y为0,参数a为1。此时,第一转换电路410输出的结果为x3,乘法电路420输出的结果为x3,求和比较电路430做加法运算,输出的结果为x3。
子计算电路还可以包括第二非线性运算电路和第二直通电路,其中,第二非线性运算电路包括指数运算电路和对数运算电路中的至少一个;第二直通电路用于直接输出第一加法运算电路的运算结果或第一比较运算电路的运算结果;第二非线性运算电路用于对第一加法运算电路的运算结果或第一比较运算电路的运算结果进行对数运算或指数运算,并输出运算结果;输入控制电路根据第一指令转换成的控制信号使能第二非线性运算电路和第二直通电路之一参与运算。与第一非线性运算电路412相同,第二非线性运算电路可以包括编码器、译码器、移位寄存器和查找表,以对数据进行x和log2x之间的转换。与第一直通电路相同,第二直通电路可以通过导通电路将数据或参数直接输出,例如导线或者半导体开关,或通过寄存器、锁存器等存储器件将数据或参数存储并输出,或者是其他提供通信连接的数据通路。如图5所示的子计算电路500是根据本发明实施例的子计算电路310提供的另一种具体的实施方式,子计算电路500的结构与子计算电路400类似,不同的是,子计算电路500还包括第二转换电路440。其中,第二转换电路440包括第二非线性运算电路442和第二直通电路444,第二转换电路440根据控制信号对求和比较电路430输出的结果做指数运算或对数运算,或直接输出该结果。通过第一转换电路410和第二转换电路440,子计算电路500能够一次完成更为复杂的计算。例如,在上述对x求x3的计算中,第二转换电路440直接对log2x3做指数运算并得到x3,而子计算电路需要先缓存第一次计算的结果log2x3,然后重新读取该结果并进行计算。因此,与子计算电路400相比,子计算电路500节约了缓存、重新读取第一次计算的结果的时间,提升了对输入数据和输入参数的计算效率。
如图6所示的子计算电路600是根据本发明实施例的子计算电路310提供的又一种具体的实施方式,子计算电路600的结构与子计算电路400类似,不同的是,第一非线性运算电路412为对数运算电路,第二非线性运算电路442为指数运算电路,即子计算电路600对第一输入数据x进行对数运算或直接输出x,并对求和比较电路430输出的结果做指数运算或直接输出该结果。对于最为常见的计算,例如求x的n次方,通常需要先后进行一次对数运算和一次指数运算。因此,相对于子计算电路500,子计算电路600实现了最为常见的计算,同时减少了第一转换电路410和第二转换电路440的硬件面积,节省了神经网络处理器200的硬件资源。
屏蔽电路320接收多个子计算电路310的计算结果,并根据输入控制电路202输出的控制信号决定是否屏蔽多个子计算电路310中的部分子计算电路的计算结果,其中被屏蔽的多个子计算电路的部分计算结果不会被传输至输出计算电路330。例如,当屏蔽电路320选择屏蔽子计算电路1和子计算电路2,则子计算电路1和子计算电路2输出的计算结果通过屏蔽电路320后的值为0。屏蔽电路320可以是选择器,或其它具有类似功能的组合逻辑电路。
输出计算电路330包括第二加法运算电路、第二比较运算电路和第三直通电路。其中,第二加法运算电路用于将多个屏蔽结果相加,并输出一个运算结果;第二比较运算电路用于将多个屏蔽结果相比较,并输出一个运算结果,第三直通电路用于直接输出多个屏蔽结果;第三直通电路用于直接输出多个屏蔽结果。输入控制电路根据第一指令使能第二加法运算电路、第二比较运算电路和第三直通电路之一对多个屏蔽结果进行运算。
第二加法运算电路可以是加法器,例如串行加法器、行波进位加法器、超前进位加法器,或者其他通过二进制的设计方法进行优化的加法器。第二比较运算电路可以根据不同的组合逻辑来实现。与第一直通电路相同,第三直通电路可以是寄存器、锁存器,也可以是其他存储电路,或者其他提供通信连接的数据通路。
输出计算电路330中的第二加法运算电路可以为一个树形电路,包括多级并联的加法器,其中每一级加法器将每两个数据相加,通过多级加法器得到一个计算结果;同样,输出计算电路330的第二比较运算电路可以为一个树形电路,包括多级并联的比较器,其中每一级比较器将每两个数据相比较,通过多级比较器得到一个计算结果。
以识别一个256*256*1bit的灰度图为例来说明第一计算电路300以及其子计算电路600的工作流程,其中需要计算的神经网络层分别为卷积层、sigmoid层1、池化层1、sigmoid层2、池化层2和全连接层。
首先对图像数据作卷积层的计算。图像数据被转换为256*256的第一数据矩阵,其中每一个元素代表一个像素点的值;神经网络参数被转换为128*128的第二数据矩阵,其中每一个元素代表经过离线训练的神经网络参数;第一计算电路300中包括128个并行计算的子计算电路600。在卷积层的计算中,第一数据矩阵中每一个大小为128*128的子矩阵都需要依次和第二数据矩阵相乘,得到的计算结果作为129*129的结果矩阵中的一个元素,且子矩阵在第一数据矩阵中的位置对应于计算结果在结果矩阵中的位置。对于每一次的第一数据矩阵中的子矩阵与第二数据矩阵相乘,相当于2个维度为128的向量做129次乘积运算。对于每次向量的乘积运算,其计算步骤如下:
1)子计算电路600的参数a被配置为1,x为第一数据矩阵中维度为128的向量数据xi,y为0。第一转换电路410对xi做对数运算,输出为log2xi;乘法运算电路420的输出为log2xi;求和比较电路430做加法运算,输出为log2xi;第二转换电路440直接输出log2xi。
2)屏蔽电路320不屏蔽任何输出,输出计算电路330直接输出log2xi。因此,第一计算电路300输出的计算结果为log2xi。
3)子计算电路600的参数a被配置为1,x为第二数据矩阵中维度为128的向量数据yi,y为步骤2)的计算结果log2xi。第一转换电路410对yi做对数运算,输出为log2yi;乘法运算电路420的输出为log2yi;求和比较电路430对log2xi和log2yi做加法运算,输出为log2xiyi;第二转换电路440对log2xiyi做指数运算,结果为xiyi。
4)屏蔽电路320不屏蔽任何输出,输出计算电路330将128个子计算单元600输出的结果xiyi相加。因此,第一计算电路300输出的计算结果为
在完成卷积层的计算后,以卷积层的计算结果,即一个128*128的矩阵作为输入进行sigmoid层1的计算。Sigmoid层1对矩阵中的每个元素做sigmoid函数计算,即最终得到一个129*129的矩阵。第一计算电路300需要对128*128的矩阵做128次运算,其中每次运算的输入为1个维度为128的向量。对于每个向量的计算,其计算步骤如下:
1)子计算电路400的参数a被配置为-log2e,x为维度为128的向量数据xi,y为0。第一转换电路410直接输出xi;乘法运算电路420对-log2e和xi做乘法运算,结果为求和比较电路430做加法运算,输出为第二转换电路440对做指数运算,结果为
2)屏蔽电路320不屏蔽任何输出,输出计算电路330直接输出因此,第一计算电路300输出的计算结果为
3)子计算电路400的参数a被配置为1,x为步骤2)的计算结果y为1。第一非线性运算电路410直接输出乘法运算电路420的输出为求和比较电路430对和1做加法运算,结果为第二转换电路440被直接输出
4)屏蔽电路320不屏蔽任何输出,输出计算电路330被配置为直接输出因此,第一计算电路300输出的计算结果为
5)子计算电路400的参数a被配置为-1,x为步骤4)的计算结果y为0。第一转换电路410对做对数运算,结果为乘法运算电路420对和-1做乘法运算,结果为求和比较电路430的输出为第二转换电路440对做指数运算,结果为
6)屏蔽电路320不屏蔽任何输出,输出计算电路330直接输出因此,第一计算电路300输出的计算结果为
在完成了卷积层和sigmoid层1的计算后,再对剩下的池化层1、sigmoid层2、池化层2和全连接层依次做计算,最终输出表达识别结果的向量。
在神经网络的计算中,乘和累加运算需要的计算量占据较大的比例,而幂运算、除法运算和局部求和等复杂运算需要的计算量则占据较小的比例。对于数据的乘和累加运算,神经网络处理器200可以通过更加简单的电路实现,不需要对数据进行指数运算和对数运算。通过第一计算电路300来完成乘和累加的运算,会造成硬件资源和计算时间的浪费。因此,本发明实施例提供第二计算电路,专门用于大量的、高速的乘和累加计算,而第一计算电路300用于完成第二计算电路无法处理的复杂计算,如幂运算、除法运算和局部求和等,以充分利用硬件资源,提高神经网络处理器200的计算效率。
如图7所示的是根据本发明实施例的神经网络处理器700。其中,神经网络处理器700的结构与神经网络处理器200相似。不同的是,神经网络处理器700还包括第二计算电路301,用于乘和累加运算。在一种实施方式中,输入控制电路202分别将接收到的输入数据和输入参数缓存在数据存储电路203和参数存储电路204中,并控制第二计算电路301读取数据存储电路203中的输入数据和参数存储电路204中的输入参数;在另一种实施方式中,输入控制电路202直接控制第二计算电路301读取存储器103中的输入数据和输入参数。输入控制电路202还可以通过其包括的指令解析电路将第二指令转换为控制信号,以控制第二计算电路301使用与第二指令对应的神经网络层的计算模式进行计算。
具体的,第二计算电路301接收输入控制电路202产生的控制信号,并读取数据存储电路203中需要计算的数据和参数存储电路204中的参数,经过计算后得到的第二运算结果由输出控制电路205缓存并控制输出。在神经网络处理器500中,第二计算电路320主要完成乘和累加运算,如对神经网络中卷积层和全连接层的计算,而第一计算电路300主要通过对数据进行对数运算和指数运算,完成幂运算、除法运算和局部求和等复杂运算,如对神经网络中LRN层、归一化层的计算。第二计算电路301为现有技术中的神经网络处理器中常用的计算电路,包括多个累加器和多个乘法器,以实现矩阵之间的乘法运算,例如谷歌公司的专利US9710748中揭示的一种矩阵运算单元。
在神经网络处理器700中,输入控制电路202接收来自用户的第二指令并将其转换为控制信号,以控制第一计算电路300和第二计算电路301。具体来说,输入控制电路202通过判断当前神经网络层的类型决定使用第一计算电路300还是第二计算电路301来完成当前神经网络层的计算。如果当前神经网络层为卷积层或全连接层,则输入控制电路202将产生的控制信号输出至第二计算电路301,由第二计算电路301读取输入数据和输入参数、计算并输出第二运算结果;如果当前神经网络层不是卷积层或全连接层,则输入控制电路202将产生的控制信号输出至第一计算电路300,由第一计算电路300读取输入数据和输入参数、计算并输出第一运算结果。
如图8所示的是根据本发明实施例的神经网络处理器700的工作流程图800。神经网络处理器500被总线101启动并开始计算(步骤801)。输入控制电路202根据接收的指令判断当前神经网络层的类型是否为卷积层或全连接层(步骤810),如果是,则输入控制电路202控制第二计算电路301读取输入数据和输入参数(步骤811),等待第二计算电路301完成计算后(步骤812),将第二运算结果输出至输出控制电路205(步骤813)。如果当前神经网络层的类型不是卷积层或全连接层,则输入控制电路202进一步判断当前神经网络层是否可以由第一计算电路300完成计算(步骤820),如果是,则输入控制电路202控制第一计算电路300读取输入数据和输入参数(步骤821),等待第一计算电路300完成计算后(步骤822),将第一运算结果输出至输出控制电路(823)。如果当前神经网络层不能由第一计算电路300完成计算(步骤820),则将判断结果、输入数据和输入参数上报给CPU(步骤830),由CPU完成计算(831)。在完成了步骤813、步骤823和步骤831后,输入控制电路202判断是否还有下一层神经网络需要计算(步骤840),如果是,则跳转到步骤810,如果否,则跳转到步骤850并结束计算。
如图9所示的是另一种用于神经网络的电子设备900,包括IO口910、存储介质920和PLD 930。电子设备900通过IO口910读取其他设备输出的配置数据,例如,电子设备900通过JTAG(Joint Test Action Group,联合测试行为组织)接口从PC读取经过布局布线后的设计网表。存储介质920可以包括RAM或ROM,或者二者的组合,用于存储读取的配置数据;PLD 930可以为FPGA或其他可编程逻辑器件。存储介质920与PLD 930可以进行双向的数据传输。PLD 930从存储介质920中读取配置数据,并根据配置数据对其内部的多个逻辑块进行配置,例如对其中的多个查找表的连接方式进行配置,以形成神经网络处理器200或神经网络处理器700。存储介质920还可以存储用于计算的数据,例如输入数据和输入参数,以及存储PLD 930的计算结果。
本发明的实施例提供的电路可以以源文件的形式被存储于存储介质中。具体来说,源文件可以是硬件描述语言描述的功能块,以源代码的形式保存,例如软IP核;源文件还可以是被布线的上述功能块,这些功能块中的某些特定信号被布线,或者特定的布线资源被分配,以满足特定的时序要求,并以网表的形式保存,例如固IP核。上述源文件中的功能块可以作为独立的系统,也可以与其他功能模块进行耦合,进而被硬件设计工具转换为神经网络处理器200或神经网络处理器700,其中上述转换的过程包括使用逻辑综合工具对上述源文件进行综合,以形成门级网表,以及使用布局布线工具对门级网表进行布局布线,以形成具体的电路结构。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
Claims (28)
1.一种数据处理电路,其特征在于,包括:
第一计算电路和输入控制电路;
其中,所述第一计算电路包括一个或多个子计算电路,所述一个或多个子计算电路中的每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,和第一非线性运算电路,其中,所述第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个;
所述输入控制电路用于控制所述第一计算电路读取输入数据和输入参数;
所述输入控制电路还用于接收第一指令,并根据所述第一指令控制所述第一计算电路中的所述一个或多个子计算电路,使用所述第一加法运算电路、所述乘法运算电路、所述第一比较运算电路、所述第一直通电路,以及所述第一非线性运算电路中的一个或多个的组合对所述输入数据和所述输入参数进行数据运算,并输出第一运算结果。
2.如权利要求1所述的数据处理电路,其特征在于,所述输入数据包括第一输入数据和第二输入数据;
其中,所述第一非线性运算电路用于对所述第一输入数据进行对数运算或指数运算;
所述第一直通电路用于直接输出所述第一输入数据;
所述乘法运算电路用于对所述输入参数和所述第一非线性运算电路的运算结果进行乘法运算,或对所述输入参数和所述第一直通电路输出的结果进行乘法运算;
所述第一加法运算电路用于将所述乘法运算电路的运算结果与所述第二输入数据进行加法运算;
所述第一比较运算电路用于将所述乘法运算电路的运算结果与所述第二输入数据进行比较运算;
所述输入控制电路用于根据所述第一指令使能所述第一非线性运算电路和所述第一直通电路之一参与所述数据运算,使能所述乘法运算电路参与所述数据运算,以及使能所述第一加法运算电路与所述第一比较运算电路之一参与所述数据运算。
3.如权利要求2所述的数据处理电路,其特征在于,所述每个子计算电路还包括第二非线性运算电路和第二直通电路;
其中,所述第二非线性运算电路包括指数运算电路和对数运算电路中的至少一个;
所述第二直通电路用于直接输出所述第一加法运算电路的运算结果或所述第一比较运算电路的运算结果;
所述第二非线性运算电路用于对所述第一加法运算电路的运算结果或所述第一比较运算电路的运算结果进行对数运算或指数运算;
所述输入控制电路还用于根据所述第一指令使能所述第二非线性运算电路和所述第二直通电路之一参与所述数据运算。
4.如权利要求3所述的数据处理电路,其特征在于,所述第一非线性运算电路为对数运算电路,所述第二非线性运算电路为指数运算电路。
5.如权利要求1至4中任意一项所述的数据处理电路,其特征在于,所述对数运算电路为编码器。
6.如权利要求1至5中任意一项所述的数据处理电路,其特征在于,所述指数运算电路为译码器。
7.如权利要求1至6中任意一项所述的数据处理电路,其特征在于,所述第一计算电路还包括屏蔽电路,所述屏蔽电路用于在所述输入控制电路的控制下接收所述一个或多个子计算电路的运算结果,对所述运算结果进行屏蔽处理,并输出经过屏蔽处理后的一个或多个子计算电路的运算结果。
8.如权利要求7所述的数据处理电路,其特征在于,所述屏蔽电路为选择器。
9.如权利要求7或8所述的数据处理电路,其特征在于,所述第一计算电路还包括输出计算电路,其中所述输出计算电路包括第二加法运算电路、第二比较运算电路和第三直通电路;
其中,所述第二加法运算电路用于将所述屏蔽电路输出的结果进行加法运算,并输出一个加法运算结果;
所述第二比较运算电路将所述屏蔽电路输出的结果进行比较运算,并输出一个比较运算结果;
所述第三直通电路用于直接输出所述屏蔽电路输出的结果;
所述输入控制电路还用于根据所述第一指令使能所述第二加法运算电路、所述第二比较运算电路和所述第三直通电路之一对所述屏蔽电路输出的结果进行处理。
10.如权利要求1至9中任意一项所述的数据处理电路,其特征在于,所述数据处理电路还包括:
数据缓存电路和参数缓存电路;
其中,所述数据缓存电路用于缓存所述输入数据,并将所述输入数据输出至所述第一计算电路;
所述参数缓存电路用于缓存所述输入参数,并将所述输入参数输出至所述第一计算电路。
11.如权利要求1至10中任意一项所述的数据处理电路,其特征在于,所述数据处理电路还包括输出控制电路,用于缓存所述第一计算电路输出的所述第一运算结果,并输出所述第一运算结果。
12.如权利要求1至11任意一项所述的数据处理电路,其特征在于,所述数据处理电路还包括第二计算电路,所述第二计算电路用于乘和累加运算;
其中,所述输入控制电路还用于控制所述第二计算电路读取所述输入数据和所述输入参数;所述输入控制电路还用于接收第二指令,并根据所述第二指令控制所述第二计算电路进行所述乘和累加运算,输出第二运算结果;所述输出控制电路还用于缓存所述第二计算电路输出的所述第二运算结果,并输出所述第二运算结果。
13.一种数据处理装置,包括可编程逻辑器件和存储器件,所述存储器件用于存储配置数据,所述可编程逻辑器件用于读取所述配置数据,并根据所述配置数据对所述可编程逻辑器件中的多个逻辑块进行配置,所述多个逻辑块被配置为包括:第一计算电路和输入控制电路;
其中,所述第一计算电路包括一个或多个子计算电路,所述一个或多个子计算电路中的每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,和第一非线性运算电路,其中,所述第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个;
所述输入控制电路用于控制所述第一计算电路读取输入数据和输入参数;
所述输入控制电路还用于接收第一指令,并根据所述第一指令控制所述第一计算电路中的所述一个或多个子计算电路,使用所述第一加法运算电路、所述乘法运算电路、所述第一比较运算电路、所述第一直通电路,以及所述第一非线性运算电路中的一个或多个的组合对所述输入数据和所述输入参数进行数据运算,并输出第一运算结果。
14.如权利要求13所述的数据处理装置,其特征在于,所述输入数据包括第一输入数据和第二输入数据;
其中,所述第一非线性运算电路用于对所述第一输入数据进行对数运算或指数运算;
所述第一直通电路用于直接输出所述第一输入数据;
所述乘法运算电路用于对所述输入参数和所述第一非线性运算电路的运算结果进行乘法运算,或对所述输入参数和所述第一直通电路输出的结果进行乘法运算;
所述第一加法运算电路用于将所述乘法运算电路的运算结果与所述第二输入数据进行加法运算;
所述第一比较运算电路用于将所述乘法运算电路的运算结果与所述第二输入数据进行比较运算;
所述输入控制电路用于根据所述第一指令使能所述第一非线性运算电路和所述第一直通电路之一参与所述数据运算,使能所述乘法运算电路参与所述数据运算,以及使能所述第一加法运算电路与所述第一比较运算电路之一参与所述数据运算。
15.如权利要求14所述的数据处理装置,其特征在于,所述每个子计算电路还包括第二非线性运算电路和第二直通电路;
其中,所述第二非线性运算电路包括指数运算电路和对数运算电路中的至少一个;
所述第二直通电路用于直接输出所述第一加法运算电路的运算结果或所述第一比较运算电路的运算结果;
所述第二非线性运算电路用于对所述第一加法运算电路的运算结果或所述第一比较运算电路的运算结果进行对数运算或指数运算;
所述输入控制电路还用于根据所述第一指令使能所述第二非线性运算电路和所述第二直通电路之一参与所述数据运算。
16.如权利要求15所述的数据处理装置,其特征在于,所述第一非线性运算电路为对数运算电路,所述第二非线性运算电路为指数运算电路。
17.如权利要求13至16中任意一项所述的数据处理装置,其特征在于,所述对数运算电路为编码器。
18.如权利要求13至17中任意一项所述的数据处理装置,其特征在于,所述指数运算电路为译码器。
19.如权利要求13至18中任意一项所述的数据处理装置,其特征在于,所述第一计算电路还包括屏蔽电路,所述屏蔽电路用于在所述输入控制电路的控制下接收所述一个或多个子计算电路的运算结果,对所述运算结果进行屏蔽,并输出经过屏蔽处理后的一个或多个子计算电路的运算结果。
20.如权利要求19所述的数据处理装置,其特征在于,所述屏蔽电路为选择器。
21.如权利要求19或20所述的数据处理装置,其特征在于,所述第一计算电路还包括输出计算电路,其中所述输出计算电路包括第二加法运算电路、第二比较运算电路和第三直通电路;
其中,所述第二加法运算电路用于将所述屏蔽电路输出的结果进行加法运算,并输出一个加法运算结果;
所述第二比较运算电路将所述屏蔽电路输出的结果进行比较运算,并输出一个比较运算结果;
所述第三直通电路用于直接输出所述屏蔽电路输出的结果;
所述输入控制电路还用于根据所述第一指令使能所述第二加法运算电路、所述第二比较运算电路和所述第三直通电路之一对所述屏蔽电路输出的结果进行处理。
22.如权利要求13至21中任意一项所述的数据处理装置,其特征在于,所述多个逻辑块还被配置为包括:
数据缓存电路和参数缓存电路;
其中,所述数据缓存电路用于缓存所述输入数据,并将所述输入数据输出至所述第一计算电路;
所述参数缓存电路用于缓存所述输入参数,并将所述输入参数输出至所述第一计算电路。
23.如权利要求13至22中任意一项所述的数据处理装置,其特征在于,所述多个逻辑块还被配置为包括输出控制电路,用于缓存所述第一计算电路输出的所述第一运算结果,并输出所述第一运算结果。
24.如权利要求13至23任意一项所述的数据处理装置,其特征在于,所述多个逻辑块还被配置为包括第二计算电路,所述第二计算电路用于乘和累加运算;
其中,所述输入控制电路还用于控制所述第二计算电路读取所述输入数据和所述输入参数;所述输入控制电路还用于接收第二指令,并根据所述第二指令控制所述第二计算电路进行所述乘和累加运算,输出第二运算结果;所述输出控制电路还用于缓存所述第二计算电路输出的所述第二运算结果,并输出所述第二运算结果。
25.一种数据处理方法,其特征在于,应用于数据处理电路,其中所述数据处理电路包括第一计算电路和输入控制电路,其中所述第一计算电路包括一个或多个子计算电路,所述一个或多个子计算电路中的每个子计算电路包括第一加法运算电路、乘法运算电路、第一比较运算电路、第一直通电路,和第一非线性运算电路,其中,所述第一非线性运算电路包括指数运算电路和对数运算电路中的至少一个,所述方法包括:
所述输入控制电路控制所述第一计算电路读取输入数据和输入参数;
所述输入控制电路接收第一指令,并根据所述第一指令控制所述第一计算电路中的所述一个或多个子计算电路,使用所述第一加法运算电路、所述乘法运算电路、所述第一比较运算电路、所述第一直通电路,以及所述第一非线性运算电路中的一个或多个的组合对所述输入数据和所述输入参数进行数据运算,并输出第一运算结果。
26.如权利要求25所述的数据处理方法,其特征在于,所述输入数据包括第一输入数据和第二输入数据;所述输入控制电路根据所述第一指令控制所述第一计算电路对所述输入数据和所述输入参数进行数据运算的步骤包括:
所述输入控制电路根据所述第一指令使能所述第一非线性运算电路和所述第一直通电路之一参与所述数据运算,使能所述乘法运算电路参与所述数据运算,以及使能所述第一加法运算电路与所述第一比较运算电路之一参与所述数据运算;其中,
所述输入控制电路根据所述第一指令使能所述第一非线性运算电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第一非线性运算电路对所述第一输入数据进行对数运算或指数运算;
所述输入控制电路根据所述第一指令使能所述第一直通电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第一直通电路直接输出所述第一输入数据;
所述输入控制电路根据所述第一指令使能所述乘法运算电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第一乘法运算电路对所述输入参数和所述第一非线性运算电路的运算结果进行乘法运算,或对所述输入参数和所述第一直通电路输出的结果进行乘法运算;
所述输入控制电路根据所述第一指令使能所述第一加法运算电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第一加法运算电路将所述乘法运算电路的运算结果与所述第二输入数据进行加法运算;
所述输入控制电路根据所述第一指令使能所述第一比较运算电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第一比较运算电路将所述乘法运算电路的运算结果与所述第二输入数据进行比较运算。
27.如权利要求26所述的数据处理方法,其特征在于,所述每个子计算电路还包括第二非线性运算电路和第二直通电路,所述第二非线性运算电路包括指数运算电路和对数运算电路中的至少一个,所述方法还包括:
所述输入控制电路根据所述第一指令使能所述第二非线性运算电路和所述第二直通电路之一参与所述数据运算;其中,
所述输入控制电路根据所述第一指令使能所述第二非线性运算电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第二非线性运算电路,对所述加法运算电路的运算结果或所述第一比较运算电路的运算结果进行对数运算或指数运算;
所述输入控制电路根据所述第一指令使能所述第二直通电路参与所述数据运算,包括:所述输入控制电路根据所述第一指令控制所述第二直通电路直接输出所述加法运算电路的运算结果或所述第一比较运算电路的运算结果。
28.如权利要求27所述的数据处理方法,其特征在于,所述输入控制电路根据所述第一指令使能所述第一非线性运算电路参与所述数据运算的步骤为:所述输入控制电路根据所述第一指令控制所述第一非线性运算电路对所述第一输入数据进行对数运算;
所述输入控制电路根据所述第一指令使能所述第二非线性运算电路参与所述数据运算的步骤为:所述输入控制电路根据所述第一指令控制所述第二非线性运算电路对所述加法运算电路的运算结果或所述第一比较运算电路的运算结果进行指数运算。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171695.8A CN110222833B (zh) | 2018-03-01 | 2018-03-01 | 一种用于神经网络的数据处理电路 |
PCT/CN2019/076443 WO2019165989A1 (zh) | 2018-03-01 | 2019-02-28 | 一种用于神经网络的数据处理电路 |
EP19761361.5A EP3751470A4 (en) | 2018-03-01 | 2019-02-28 | DATA PROCESSING CIRCUIT FOR USE IN AN ARTIFICIAL NEURON NETWORK |
US17/005,488 US12014264B2 (en) | 2018-03-01 | 2020-08-28 | Data processing circuit for neural network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171695.8A CN110222833B (zh) | 2018-03-01 | 2018-03-01 | 一种用于神经网络的数据处理电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222833A true CN110222833A (zh) | 2019-09-10 |
CN110222833B CN110222833B (zh) | 2023-12-19 |
Family
ID=67804824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810171695.8A Active CN110222833B (zh) | 2018-03-01 | 2018-03-01 | 一种用于神经网络的数据处理电路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12014264B2 (zh) |
EP (1) | EP3751470A4 (zh) |
CN (1) | CN110222833B (zh) |
WO (1) | WO2019165989A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860784A (zh) * | 2020-07-24 | 2020-10-30 | 上海仪电(集团)有限公司中央研究院 | 基于arm和fpga的卷积神经识别系统及方法 |
CN111949211A (zh) * | 2020-07-10 | 2020-11-17 | 深圳宏芯宇电子股份有限公司 | 存储装置及存储控制方法 |
CN113128673A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 数据处理方法、存储介质、神经网络处理器及电子设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110751263B (zh) * | 2019-09-09 | 2022-07-01 | 瑞芯微电子股份有限公司 | 一种高并行度的卷积运算取数方法和电路 |
US20210200539A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Generic linear unit hardware accelerator |
US20220413590A1 (en) * | 2021-06-23 | 2022-12-29 | Maxim Integrated Products, Inc. | Systems and methods for reducing power consumption in compute circuits |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434951A (en) * | 1988-10-06 | 1995-07-18 | Kabushiki Kaisha Toshiba | Neural network system having minimum energy function value |
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理系统、处理数据的方法和装置 |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225323B2 (en) * | 2004-11-10 | 2007-05-29 | Nvidia Corporation | Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines |
US9753695B2 (en) * | 2012-09-04 | 2017-09-05 | Analog Devices Global | Datapath circuit for digital signal processors |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
CN105892989B (zh) * | 2016-03-28 | 2017-04-12 | 中国科学院计算技术研究所 | 一种神经网络加速器及其运算方法 |
CN108416436B (zh) | 2016-04-18 | 2021-06-01 | 中国科学院计算技术研究所 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
CN106228238B (zh) * | 2016-07-27 | 2019-03-22 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN109521994B (zh) | 2017-09-19 | 2020-11-10 | 华为技术有限公司 | 乘法硬件电路、片上系统及电子设备 |
CN107832845A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
-
2018
- 2018-03-01 CN CN201810171695.8A patent/CN110222833B/zh active Active
-
2019
- 2019-02-28 EP EP19761361.5A patent/EP3751470A4/en active Pending
- 2019-02-28 WO PCT/CN2019/076443 patent/WO2019165989A1/zh unknown
-
2020
- 2020-08-28 US US17/005,488 patent/US12014264B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434951A (en) * | 1988-10-06 | 1995-07-18 | Kabushiki Kaisha Toshiba | Neural network system having minimum energy function value |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理系统、处理数据的方法和装置 |
Non-Patent Citations (2)
Title |
---|
H.DJAHANSHAHI等: "A Modular Architecture for Hybrid VLSI Neural Networks and its Application in a Smart Photosensor", pages 868 - 873, Retrieved from the Internet <URL:IEEE> * |
JIHONG LIU等: "A Survey of FPGA-Based Hardware Implementation of ANNs", pages 915 - 918, XP010906380, Retrieved from the Internet <URL:IEEE> DOI: 10.1109/ICNNB.2005.1614769 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113128673A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 数据处理方法、存储介质、神经网络处理器及电子设备 |
CN113128673B (zh) * | 2019-12-31 | 2023-08-11 | Oppo广东移动通信有限公司 | 数据处理方法、存储介质、神经网络处理器及电子设备 |
CN111949211A (zh) * | 2020-07-10 | 2020-11-17 | 深圳宏芯宇电子股份有限公司 | 存储装置及存储控制方法 |
CN111949211B (zh) * | 2020-07-10 | 2023-05-09 | 深圳宏芯宇电子股份有限公司 | 存储装置及存储控制方法 |
CN111860784A (zh) * | 2020-07-24 | 2020-10-30 | 上海仪电(集团)有限公司中央研究院 | 基于arm和fpga的卷积神经识别系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110222833B (zh) | 2023-12-19 |
US20200394507A1 (en) | 2020-12-17 |
EP3751470A4 (en) | 2021-05-05 |
EP3751470A1 (en) | 2020-12-16 |
WO2019165989A1 (zh) | 2019-09-06 |
US12014264B2 (en) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222833B (zh) | 一种用于神经网络的数据处理电路 | |
US10929746B2 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
Samimi et al. | Res-DNN: A residue number system-based DNN accelerator unit | |
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
Vun et al. | A new RNS based DA approach for inner product computation | |
CN110688158A (zh) | 计算装置以及神经网络的处理系统 | |
KR20190107766A (ko) | 계산 장치 및 방법 | |
Venkatachalam et al. | Approximate sum-of-products designs based on distributed arithmetic | |
TWI808259B (zh) | 具有壓縮進位之數位電路 | |
Hussain et al. | An efficient and fast softmax hardware architecture (EFSHA) for deep neural networks | |
Meher et al. | High-throughput memory-based architecture for DHT using a new convolutional formulation | |
Seiler et al. | Accelerated image processing through IMPLY-based nocarry approximated adders | |
CN107783935B (zh) | 基于动态精度可配运算的近似计算可重构阵列 | |
CN111222090B (zh) | 卷积计算模块、神经网络处理器、芯片和电子设备 | |
Pandey et al. | Unsupervised image thresholding: hardware architecture and its usage for FPGA-SoC platform | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
Alzaq et al. | A comparative performance of discrete wavelet transform implementations using multiplierless | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
Wang et al. | Acceleration and implementation of convolutional neural network based on fpga | |
CN111930674A (zh) | 乘累加运算装置及方法、异构智能处理器及电子设备 | |
CN111930670B (zh) | 异构智能处理量化装置、量化方法、电子设备及存储介质 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
Poornima et al. | Memory efficient high speed systolic array architecture design with multiplexed distributive arithmetic for 2D DTCWT computation on FPGA |
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 |