CN108256644B - 微处理器电路以及执行神经网络运算的方法 - Google Patents
微处理器电路以及执行神经网络运算的方法 Download PDFInfo
- Publication number
- CN108256644B CN108256644B CN201810012336.8A CN201810012336A CN108256644B CN 108256644 B CN108256644 B CN 108256644B CN 201810012336 A CN201810012336 A CN 201810012336A CN 108256644 B CN108256644 B CN 108256644B
- Authority
- CN
- China
- Prior art keywords
- parameters
- sub
- parameter
- output
- neural network
- 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 89
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000010586 diagram Methods 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 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
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- 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/08—Learning methods
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
本发明提出一种微处理器电路以及一种执行神经网络运算的方法。所述微处理器电路适用于执行神经网络运算。所述微处理器电路包括参数产生模块、运算模块以及比较逻辑。所述参数产生模块并行接收所述神经网络运算的多个输入参数以及多个权重参数。所述参数产生模块依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数。所述运算模块并行接收所述多个子输出参数。所述运算模块加总所述多个子输出参数,以产生加总参数。所述比较逻辑接收所述加总参数。所述比较逻辑依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数。
Description
技术领域
本发明是有关于一种单指令流多数据流(Single Instruction Multiple Data,SIMD)架构的应用,且特别是有关于一种应用此架构的微处理器电路以及执行神经网络运算的方法。
背景技术
一般而言,传统的处理器执行神经网络运算(Neural network operation)需要利用大量的储存空间。在一般的情况下,神经网络运算将在静态随机存取存储器(StaticRandom Access Memory,SRAM)中占用大量的储存空间,或是在静态随机存取存储器与动态随机存取存储器(Dynamic Random Access Memory,DRAM)之间进行大量的数据交换。并且,当处理器例如执行二值神经网络
(Binary Neural Network,BNN)运算或三值神经网络(Ternary Neural Network,TNN)运算时,输出参数其中wi为一位(1-bit)或二位(2-bit)的权重参数,xi为与wi位宽相等的输入数据,y为输出参数,其中一位(1-bit)或二位(2-bit)的权重参数wi以及输入数据xi还需配合八位(8-bit)单指令流多数据流(SIMD)通道(Lane)进行处理。当处理器例如执行二值权重网络(Binary Weight Network,BWN)运算或三值权重网络(TernaryWeight Network,TWN)运算时,输出参数其中wi为一位(1-bit)或二位(2-bit)权重参数,xi为八位(8-bit)输入数据,y为输出参数,其中一位(1-bit)或二位(2-bit)的权重参数wi需配合八位(8-bit)单指令流多数据流(SIMD)通道(Lane)进行处理。因此,传统的处理器执行神经网络运算的方式会造成运算资源的浪费。有鉴于此,以下将提出几个解决方案。
发明内容
本发明提供一种微处理器电路以及执行神经网络运算(Neural networkoperation)的方法,可有效节省神经网络运算的运算资源。
本发明的一种微处理器电路适用于执行神经网络运算。所述微处理器电路包括参数产生模块、运算模块以及比较逻辑。所述参数产生模块用以并行接收所述神经网络运算的多个输入参数以及多个权重参数。所述参数产生模块依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数。所述运算模块耦接所述参数产生模块。所述运算模块用以并行接收所述多个子输出参数。所述运算模块加总所述多个子输出参数,以产生加总参数。所述比较逻辑耦接所述运算模块。所述比较逻辑用以接收所述加总参数。所述比较逻辑依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数。
本发明的一种执行神经网络运算的方法适用于微处理器电路。所述微处理器电路包括参数产生模块、运算模块以及比较逻辑。所述方法包括以下步骤:透过所述参数产生模块并行接收所述神经网络运算的多个输入参数以及多个权重参数,并且依据所述多个输入参数以及所述多个权重参数来产生多个子输出参数。透过所述运算模块并行接收所述多个子输出参数,并且加总所述多个子输出参数,以产生加总参数。透过所述比较逻辑并行接收所述加总参数,并且依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数。
基于上述,本发明的微处理器电路以及执行神经网络运算的方法可应用单指令流多数据流(Single Instruction Multiple Data,SIMD)架构,并且当执行二值神经网络(Binary Neural Network,BNN)运算或三值神经网络(Ternary Neural Network,TNN)运算时,可实现非常高的并行性(Parallelism),以有效节省神经网络运算的运算资源。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1是依照本发明的一实施例的微处理器电路的示意图。
图2是依照本发明的第一实施例的微处理器电路的示意图。
图3是依照本发明的第一实施例的执行神经网络运算的方法的流程图。
图4是依照本发明的第二实施例的微处理器电路的示意图。
图5是依照本发明的第二实施例的执行神经网络运算的方法的流程图。
图6是依照本发明的第三实施例的微处理器电路的示意图。
图7是依照本发明的第三实施例的执行神经网络运算的方法的流程图。
具体实施方式
为了使本发明的内容可以被更容易明了,以下特举实施例做为本发明确实能够据以实施的范例。另外,凡可能之处,在图式及实施方式中使用相同标号的组件/构件/步骤,代表相同或类似部件。
图1是依照本发明的一实施例的微处理器电路的示意图。参考图1,微处理器电路100包括参数产生模块110、运算模块120以及功能逻辑(Logic)130。参数产生模块110耦接运算模块120。运算模块120耦接功能逻辑130。在本实施例中,微处理器电路100例如是一种通用处理器(General Purpose Processor,GPP),并且微处理器电路100整合一个或多个处理单元来执行对应的运算工作。在本实施例中,微处理器电路100是以单指令流多数据流(Single Instruction Multiple Data,SIMD)架构来执行神经网络运算(Neural NetworkComputing)的微指令(micro-instruction或μop)以完成对应的神经网络运算,微处理器电路100为包含于处理器核心(core)的执行单元(execution unit)中的硬件电路。值得注意的是,本实施例所提及的微指令是指微处理器电路100所属的微处理器能直接执行的指令。所述微处理器可例如是复杂指令集计算机(CISC)指令集架构的超标量乱序执行处理器、精简指令集计算机(RISC)指令集架构的处理器、为执行神经网络运算而设计的专有架构处理器或是其它架构的处理器。
在本实施例中,当微处理器电路100执行神经网络运算工作时,参数产生模块110并行接收神经网络运算的输入数据X以及权重数据W,并且参数产生模块110依据输入数据X以及权重数据W来产生子输出数据Y至运算模块120。在本实施例中,输入数据X、权重数据W以及子输出数据Y可分别包括多个数值。在本实施例中,输入数据X包括多个并行的输入参数(x1、x2~xn)。权重数据W包括多个并行的权重参数(w1、w2~wn)。子输出数据Y包括多个并行的子输出参数(y1、y2~yn)。在本实施例中,参数产生模块110例如透过查找表(Look-uptable)或特定逻辑电路来依据并行的多个输入参数(x1、x2~xn)以及并行的多个权重参数(w1、w2~wn),来并行产生多个并行的子输出参数(y1、y2~yn)。
在本实施例中,运算模块120并行接收参数产生模块110提供的包括多个子输出参数(y1、y2~yn)的子输出数据Y,并且对多个子输出参数(y1、y2~yn)进行运算。运算模块120对具有多个数值的子输出数据Y进行并行运算(parallel computing)。举例来说,运算模块120包括一个或多个加法器(Adder),以透过加法器来加总子输出参数Y的多个数值(y1、y2~yn),并且产生加总参数Ay。也就是说,在本实施例中,运算模块120对具有多个数值的子输出参数(y1、y2~yn)并行执行加法运算,以有效率地产生加总参数Ay。
在本实施例中,功能逻辑130为一个或多个运算逻辑组成的硬件架构。功能逻辑130例如是比较逻辑(compare logic)或截位逻辑(truncation logic)等诸如此类的逻辑。功能逻辑130接收运算模块120提供的加总参数Ay,其中加总参数Ay可以为单一笔数值。功能逻辑130对加总参数Ay进行特定功能运算,以产生神经网络运算的输出参数y。也就是说,本实施例的微处理器电路100透过直接执行一条微指令(micro-instruction或μop),即可有效率地产生神经网络运算的输出参数y。
举例而言,上述的微指令可例如是“MAC,Dst,Scr1,Scr2,size 1,size 2,size3”。在一实施例中,微处理器电路100可执行单一的一条这样的微指令即可完成特定神经网络运算其中字段MAC为操作码。微处理器电路100识别此操作码以得知由自己来处理此微指令。需注意的是,微处理器电路100仅为微处理器的执行单元(execution unit)的一部分,所述微处理器的执行单元可进一步包含执行其它类型指令的其它执行电路。在上述的微指令中,字段“Scr1”用于指示微指令的一源操作数(source operand),并且包括上述多个输入参数(x1、x2~xn)。字段“Scr2”用于指示微指令的另一源操作数,并且包括上述多个权重参数(w1、w2~wn)。字段“Dst”用于指示微指令的目的操作数(destinationoperand),并且取得上述神经网络运算的输出参数y。字段“size 1”用于指示每个输入参数(x1、x2~xn)的位宽(bit width)。字段“size 2”用于指示每个权重参数(w1、w2~wn)的位宽。字段“size 3”用于指示输出参数y的位宽。然而,上述的微指令的格式仅为本发明的其中一种实施范例,本发明并不限于此。
进一步来说,本实施例的微处理器电路100的实施架构可例如适用于执行二值神经网络(Binary Neural Network,BNN)运算、三值神经网络(Ternary Neural Network,TNN)运算、二值权重网络(Binary Weight Network,BWN)运算以及三值权重网络(TernaryWeight Network,TWN)运算等诸如此类的神经网络运算。在BNN运算和TNN运算中,每个输入参数(x1、x2~xn)的位宽等于每个权重参数(w1、w2~wn)的位宽,例如为2bit,而输出参数y的位宽例如为8bit。在BWN运算和TWN运算中,每个权重参数wi的位宽例如为2bit,并且每个输入参数(x1、x2~xn)的位宽大于每个权重参数(w1、w2~wn)的位宽,例如皆为8bit。也就是说,BNN运算和TNN运算的两个源操作数的位宽“size 1”和“size 2”相等。BWN运算和TWN运算的两个源操作数的位宽“size 1”和“size 2”不相等,并且“size 1”大于“size 2”。对此,本发明的微处理器电路100的位宽(例如为256/128bit)大于所述多个输入参数(x1、x2~xn)及所述多个权重参数(w1、w2~wn)的位宽总和。
以使微处理器电路100可适应神经网络运算具有数据量大且数据位宽短的特点,并且实现并行运算。因此,本实施例的微处理器电路100可有效节省运算周期,并且提高运算效率。为了更进一步说明本发明的微处理器电路的多种的实施架构,以下各范例实施例的微处理器电路将分别搭配执行对应的神经网络运算方法来说明之。
图2是依照本发明的第一实施例的微处理器电路的示意图。图3是依照本发明的第一实施例的执行神经网络运算的方法的流程图。参考图2以及图3,微处理器电路200包括参数产生模块210、运算模块220以及比较逻辑230。在本实施例中,微处理器电路200适用于执行BNN运算,并且微处理器电路200欲实现的BNN运算如以下公式(1)。在本实施例中,输入参数x1、x2~xn、权重参数w1、w2~wn及输出参数y的取值范围为{-1,1}。并且,依据BNN运算的算法规定,若输入参数x1、x2~xn以及权重参数w1、w2~wn的求和结果大于或等于0(y≥0),则y=1。反之,则y=-1。
首先,在步骤S310中,微处理器电路200透过参数产生模块210并行接收神经网络运算的多个输入参数x1、x2~xn以及多个权重参数w1、w2~wn。参数产生模块210依据输入参数x1、x2~xn以及权重参数w1、w2~wn来产生多个子输出参数y1、y2~yn,其中n为大于0的正整数。在本实施例中,输入参数x1、x2~xn以及权重参数w1、w2~wn的取值范围为{-1,1}。在本实施例中,参数产生模块210预先对输入参数x1、x2~xn以及权重参数w1、w2~wn进行编码,其中编码结果例如以下表1。并且,在本实施例中,编码后的输入参数x1、x2~xn、编码后的权重参数w1、w2~wn以及对应的子输出参数y1、y2~yn的数值如以下表2(第一查找表),其中i∈{1,2,3,…,n}。
w<sub>i</sub>,x<sub>i</sub> | w<sub>i</sub>,x<sub>i</sub>(编码后) |
-1 | 0 |
1 | 1 |
表1
表2
在本实施例中,参数产生模块210依据上述表2来并行取得所有的子输出参数y1、y2~yn,但本发明并不限于此。在一实施例中,参数产生模块210可以采用其它编码方式来产生子输出参数y1、y2~yn,例如1编码为1,-1编码为0。在一实施例中,参数产生模块210也可依据以下公式(2)对应的数字逻辑电路(第一逻辑电路)来取得对应的子输出参数y1、y2~yn。如图2所示,参数产生模块210可包括第一逻辑电路。在本实施例中,以下公式(2)当中的符号“~”以及符号“^”为操作数(operator)的符号,其中可分别代表“取反(INV)”以及“异或(XOR)”。注意本发明不限于此,例如在将数值为1的输入参数xi或权重参数wi编码为1,将数值为-1的输入参数xi或权重参数wi编码为0的实施方式中,可采用另一公式yi=wi^xi对应的数字逻辑电路来取得对应的子输出参数y1、y2~yn。
yi=~(wi^xi)......公式(2)
接着,在步骤S320中,微处理器电路200透过运算模块220并行接收子输出参数y1、y2~yn,并且加总子输出参数y1、y2~yn,以产生加总参数Ay。在本实施例中,运算模块220包括多个加法器221。运算模块220对子输出参数y1、y2~yn同时进行加法运算。举例来说,加法器221的第一层对子输出参数y1、y2~yn的每四个数据进行相加的运算,并且提供至这些加法器221的第二层。以此类推,这些加法器221的最后一层可输出加总参数Ay。在本实施例中,每个加法器221可由基本的4:2进位保留加法器(Carry Save Adder,CSA)实现,每个CSA加法器包括4个输入和2个输出(包括总和Sum和进位Carry)。然而,运算模块220的这些加法器221的数量及层数可依据子输出参数y1、y2~yn的数量来对应设计,本发明的运算模块220的这些加法器221的配置方式不限于图2所示。
在本实施例中,由于BNN运算的算法中输入参数x1、x2~xn以及权重参数w1、w2~wn的取值范围为{-1,1},即取值仅两种数值“-1”和“1”。因此,参数产生模块210采用1-bit编码方式对输入参数x1、x2~xn以及权重参数w1、w2~wn进行编码后产生的编码后数值为“0”或“1”。换句话说,运算模块220经由多个加法器221运算输出参数y1、y2~yn,以取得加总参数Ay,其目的在于取得子输出参数y1、y2~yn当中的第一数值类型(“1”)的数量。加总参数Ay即对应上述公式(1)的乘加求和运算的结果。
最后,在步骤S330中,微处理器电路200透过比较逻辑230接收加总参数Ay,并且比较逻辑230依据加总参数Ay执行比较运算,以产生神经网络运算的输出参数y。在本实施例中,比较逻辑230依据加总参数Ay来判断子输出参数y1、y2~yn当中的第一数值类型(“1”)的数量以及第二数值类型(“0”)的数量,以决定输出参数y为“1”或“0”。举例来说,比较逻辑230可执行如以下公式(3)的判断。
因此,在BNN运算中,若n=8,则比较逻辑430可将加总参数Ay与数值“4”作比较(大于、等于或小于),以决定输出参数y为“0”(原始取值-1)或“1”(原始取值1)。在此例中,若加总参数Ay大于或等于数值“4”,则表示子输出参数y1、y2~yn当中的第一数值类型“1”的数量大于或等于第二数值类型“0”的数量。也就是说,由于子输出参数y1、y2~yn的原始数值为“1”的数量大于或等于原始数值为“-1”的数量,因此子输出参数y1、y2~yn求和所得的输出参数y为非负值,并且依据公式(3)取值“1”(原始取值1)。
然而,在此例中,若加总参数Ay小于数值“4”,则表示子输出参数y1、y2~yn当中的第一数值类型“1”的数量小于第二数值类型“0”的数量。也就是说,由于子输出参数y1、y2~yn的原始数值为“1”的数量小于原始数值为“-1”的数量,因此对子输出参数y1、y2~yn求和所得的输出参数y为负值,并且依据公式(3)取值“0”(原始取值-1)。比较逻辑230产生的输出参数y即为BNN运算的结果。
据此,基于上述步骤S310~S330以及图2的微处理器电路200的架构,本实施例的微处理器电路200可采用较节省处理资源并且高效(本实施例可并行实现多个二值的乘法和累加运算)的方式来有效执行低精度的BNN运算。另外,关于上述表1、表2、公式(2)以及公式(3)的编码方式以及判断条件可依据不同运算需求来对应调整其内容,本发明并不限于此。
图4是依照本发明的第二实施例的微处理器电路的示意图。图5是依照本发明的第二实施例的执行神经网络运算的方法的流程图。参考图4以及图5,微处理器电路400包括参数产生模块410、运算模块421、422以及比较逻辑430。参数产生模块410包括子参数产生模块411、412。在本实施例中,微处理器电路400适用于执行TNN运算,并且微处理器电路400欲实现的神经网络运算如同上述公式(1)。相较于上述实施例的微处理器电路200,不同之处在于本实施例的输入参数x1、x2~xn、权重参数w1、w2~wn及输出参数y的取值范围为{-1,0,1}。
首先,在步骤S510中,微处理器电路400透过两个子参数产生模块411、412分别并行接收神经网络运算的多个输入参数x1、x2~xn以及多个权重参数w1、w2~wn。此两个子参数产生模块411、412依据输入参数x1、x2~xn以及权重参数w1、w2~wn来分别产生多个子输出参数y1[1]、y2[1]~yn[1]、y1[0]、y2[0]~yn[0],其中n为大于1的正整数。在本实施例中,输入参数x1、x2~xn以及权重参数w1、w2~wn的取值集合为{-1,0,1}。在本实施例中,子参数产生模块411、412可分别先对输入参数x1、x2~xn以及权重参数w1、w2~wn进行编码,编码结果例如以下表3。并且,在本实施例中,编码后的输入参数x1、x2~xn、编码后的权重参数w1、w2~wn以及对应的子输出参数y1、y2~yn的数值可如以下表4(第二查找表),其中i∈{1,2,3,…,n}。
表3
表4
也就是说,在本实施例中,子参数产生模块411、412预先对输入参数x1、x2~xn以及权重参数w1、w2~wn进行编码,并且依据上述表4来快速地取得对应的子输出参数y1、y2~yn。在本实施例中,子参数产生模块411输出查表所得的子输出参数y1、y2~yn的第一位(例如高位)y1[1]、y2[1]~yn[1],以表示子输出参数y1、y2~yn的数值为第一数值类型(“10”)的数量。子参数产生模块412输出查表所得的子输出参数y1、y2~yn的第二位(例如低位)y1[0]、y2[0]~yn[0],以表示子输出参数y1、y2~yn的数值为第二数值类型(“01”)的数量。
另外,在一实施例中,子参数产生模块411也可依据编码后的输入参数x1、x2~xn以及编码后的权重参数w1、w2~wn来透过以下公式(4)对应的数字逻辑电路(第一子逻辑电路),来取得对应的子输出参数y1、y2~yn的高位y1[1]、y2[1]~yn[1]。并且,子参数产生模块412也可依据编码后的输入参数x1、x2~xn以及编码后的权重参数w1、w2~wn来透过以下公式(5)对应的数字逻辑电路(第二子逻辑电路),来取得对应的子输出参数y1、y2~yn的低位y1[0]、y2[0]~yn[0]。如图4所示,参数产生模块411可包括第一子逻辑电路,并且参数产生模块412可包括第二子逻辑电路。在本实施例中,以下公式(4)以及公式(5)当中的符号“~”以及符号“&”为操作数的符号,分别代表“取反(INV)”以及“按位与(AND)”。
yi[1]=wi[1]&~xi[1]&xi[0]+~wi[1]&wi[0]&xi[1]......公式(4)
yi[0]=wi[1]&xi[1]+~wi[1]&wi[0]&~xi[1]&xi[0]......公式(5)
接着,在步骤S520中,微处理器电路400透过子运算模块421、422分别并行接收对应的子输出参数的第一位y1[1]、y2[1]~yn[1]以及第二位y1[0]、y2[0]~yn[0]。子运算模块421、422分别加总子输出参数的第一位y1[1]、y2[1]~yn[1]以及第二位y1[0]、y2[0]~yn[0],以产生两个加总参数Ay[1]、Ay[0]。在本实施例中,子运算模块421包括多个加法器421_1,并且子运算模块422包括多个加法器422_1。在本实施例中,子运算模块421、422分别对子输出参数y1[1]、y2[1]~yn[1]、y1[0]、y2[0]~yn[0]同时进行加法运算。举例来说,这些加法器421_1、422_1的第一层可对子输出参数y1[1]、y2[1]~yn[1]、y1[0]、y2[0]~yn[0]的每四个数据进行相加的运算,并且提供至这些加法器421_1、422_1的第二层。以此类推,这些加法器421_1、422_1的最后一层可输出两个加总参数Ay[1]、Ay[0]。在本实施例中,每个加法器421_1、422_1可由基本的4:2进位保留加法器(Carry Save Adder,CSA)实现,每个CSA加法器包括4个输入和2个输出(包括总和Sum和进位Carry)。
在本实施例中,加总参数Ay[1]代表子输出参数y1[1]、y2[1]~yn[1]为第一数值类型(“10”)的数量,并且加总参数Ay[0]代表子输出参数y1[1]、y2[1]~yn[1]为第二数值类型(“01”)的数量。然而,运算模块421、422的这些加法器421_1、422_1的数量及层数可依据子输出参数y1、y2~yn的数量来对应设计,本发明的运算模块421、422的这些加法器421_1、422_1的配置方式不限于图4所示。
在本实施例中,由于TNN算法中输入参数x1、x2~xn以及权重参数w1、w2~wn的取值范围为{-1,0,1},即取值仅三种数值“-1”、“0”和“1”,因此子参数产生模块411、412采用2-bit编码方式对输入参数x1、x2~xn以及权重参数w1、w2~wn进行编码后产生的编码后数值为“1X”、“00”、“01”。在一实施例中,数值“1X”也可代表“10”或“11”,本发明并不加以限制。换句话说,子运算模块421、422经由这些加法器421_1、422_1分别操作数输出参数的第一位y1[1]、y2[1]~yn[1]以及第二位y1[0]、y2[0]~yn[0],以取得两个加总参数Ay[1]、Ay[0],其目的在于取得子输出参数y1、y2~yn当中的第一数值类型(“10”)的数量以及第二数值类型(“01”)的数量。
为了便于统计第一数值类型(“10”)以及第二数值类型(“01”)的数量,在一实施例中,子参数产生模块411、412输出的子输出参数y1、y2~yn中,数值“01”代表“1”,数值“00”代表“0”,数值“10”代表“-1”。参考表4,子输出参数y1、y2~yn的第一位y1[1]、y2[1]~yn[1]为“1”的数量(即加总参数Ay[1])可表示子输出参数y1、y2~yn的原始数值为“-1”的数量。子输出参数y1、y2~yn的第二位y1[0]、y2[0]~yn[0]为“1”的数量(即加总参数Ay[0])可表示子输出参数y1、y2~yn的原始数值为“1”的数量。
最后,在步骤S530中,微处理器电路400透过比较逻辑430接收两个加总参数Ay[1]、Ay[0],并且微处理器电路400依据此两个加总参数Ay[1]、Ay[0]执行比较运算,以产生神经网络运算的输出参数y。在本实施例中,比较逻辑430比较此两个加总参数Ay[1]、Ay[0],以判断子输出参数y1、y2~yn当中的第一数值类型(“10”)的数量以及第二数值类型(“01”)的数量,并且决定输出参数y为“01”、“00”或“10”。举例来说,比较逻辑430可执行如以下公式(6)的判断。
if the count of(yi[1]=1)>(yi[0]=1),y=10;
if the count of(yi[1]=1)<(yi[0]=1),y=01;...公式(6)
else,y=00
因此,在TNN中,若子输出参数y1、y2~yn当中的第一数值类型“10”(对应原始取值-1)的数量大于第二数值类型“01”(对应原始取值1)的数量,则对所有子输出参数y1、y2~yn求和所得的输出参数y为负值,并且依据公式(6)取值“10”(对应原始取值-1)。若子输出参数y1、y2~yn当中的第一数值类型“10”(对应原始取值-1)的数量小于第二数值类型“01”(对应原始取值1)的数量,则对所有子输出参数y1、y2~yn求和所得的输出参数y为正值,并且依据公式(6)取值“01”(对应原始取值1)。否则,输出参数y取值“00”(对应原始取值0)。比较逻辑430产生的输出参数y即为上述公式(1)的TNN运算的结果。
据此,基于上述步骤S510~S530以及图4的微处理器电路400的架构,本实施例的微处理器电路400可采用较节省处理资源并且高效(本实施例可并行实现多个三值的乘法和累加运算)的方式来有效执行低精度的TNN运算。另外,关于上述表3、表4、公式(4)、公式(5)以及公式(6)的编码方式以及判断条件可依据不同运算需求来对应调整其内容,本发明并不限于此。
图6是依照本发明的第三实施例的微处理器电路的示意图。图7是依照本发明的第三实施例的执行神经网络运算的方法的流程图。参考图6以及图7,微处理器电路600包括参数产生模块610、运算模块620以及比较逻辑630。在本实施例中,微处理器电路600适用于执行BWN运算以及TWN运算,并且微处理器电路400欲实现的神经网络运算如同上述公式(1)。在BWN运算中,权重参数w1、w2~wn的位宽为1~2bit,并且权重参数w1、w2~wn的取值范围为{-1,1}。输入参数x1、x2~xn与输出参数y的位宽相同。输入参数x1、x2~xn与输出参数y皆为微处理器电路600所在处理器普通算术运算的全位宽(例如为8/16bit)。输入参数x1、x2~xn与输出参数y的位宽大于权重参数w1、w2~wn的位宽。需注意的是,TWN运算与BWN运算不同之处在于,权重参数w1、w2~wn的取值范围为{-1,0,1},并且微处理器电路600的位宽大于多个输入参数x1、x2~xn及多个权重参数w1、w2~wn的位宽总和。
首先,在步骤S710中,微处理器电路600透过参数产生模块610并行接收神经网络运算的多个输入参数x1、x2~xn以及多个权重参数w1、w2~wn。参数产生模块610依据输入参数x1、x2~xn以及权重参数w1、w2~wn来产生多个子输出参数y1’、y2’~yn’,其中n为大于0的正整数。在本实施例中,输入参数x1、x2~xn为八位(8-bit)或十六位(16-bit)等诸如此类的全位(full-bit)参数。BWN运算的权重参数w1、w2~wn的取值范围为{-1,1}。TWN运算的权重参数w1、w2~wn的取值范围为{-1,0,1}。
在本实施例中,参数产生模块610预先对权重参数w1、w2~wn进行编码。参数产生模块610藉由依据权重参数w1、w2~wn的取值范围来对权重参数w1、w2~wn进行对应的编码。在本实施例中,若权重参数w1、w2~wn的取值范围为{-1,1},则权重参数w1、w2~wn的编码结果例如以下表5。其中i∈{1,2,3,…,n}。
表5
在一实施例中,若权重参数w1、w2~wn的取值范围为{-1,0,1},则权重参数w1、w2~wn的编码结果例如以下表6,其中i∈{1,2,3,…,n}。
表6
在本实施例中,参数产生模块610接着依据编码后的输入参数x1、x2~xn及权重参数w1、w2~wn来决定子输出参数y1’、y2’~yn’。在本实施例中,若权重参数w1、w2~wn的取值范围为{-1,1},则参数产生模块610依据以下公式(7)(第四条件式)来产生对应的子输出参数y1’、y2’~yn’。需先说明的是,以下公式(7)以及公式(8)当中的符号“[]”为操作数的符号,其中代表“补码”。
在一实施例中,若权重参数w1、w2~wn的取值范围为{-1,0,1},则参数产生模块610依据以下公式(8)(第五条件式)来产生对应的子输出参数y1’、y2’~yn’。
if wi=01,yi'=xi;
if wi=1X,yi'=[xi];......公式(8)
else,yi'=00
也就是说,当参数产生模块610判断权重参数w1、w2~wn的取值范围包含两种数值类型时,参数产生模块610将子输入参数x1、x2~xn各别的原始码或补码作为子输出参数y1’、y2’~yn’。当参数产生模块610判断权重参数w1、w2~wn的取值范围包含三种数值类型时,参数产生模块610将零码或子输入参数x1、x2~xn各别的原始码或补码作为多个子输出参数y1’、y2’~yn’。
接着,在步骤S720中,微处理器电路600透过运算模块620并行接收子输出参数y1’、y2’~yn’,并且加总子输出参数y1’、y2’~yn’,以产生加总参数Ay’。在本实施例中,运算模块620包括多个加法器621,并且运算模块620对子输出参数y1’、y2’~yn’同时进行加法运算。举例来说,这些加法器621的第一层可对子输出参数y1’、y2’~yn’的每四个数据进行相加的运算,并且提供至这些加法器621的第二层。以此类推,这些加法器621的最后一层可输出加总参数Ay’。在本实施例中,每个加法器621可由基本的4:2进位保留加法器(CarrySave Adder,CSA)实现,并且每个CSA加法器包括4个输入和2个输出(包括总和Sum和进位Carry)。然而,运算模块620的这些加法器621的数量及层数可依据子输出参数y1’、y2’~yn’的数量来对应设计,本发明的运算模块620的这些加法器621的配置方式不限于图6所示。加总参数Ay’即对应上述公式(1)的乘加求和运算的结果。
最后,在步骤S730中,微处理器电路600透过截位逻辑630接收加总参数Ay’,并且截位逻辑630对加总参数Ay’执行截位运算,以产生神经网络运算的输出参数y’。在本实施例中,截位逻辑630依据加总参数Ay’来进行近似运算,输出参数y’可等于或近似于公式(1)的输出参数y。换句话说,在精度允许的范围内,截位逻辑630可将加总参数Ay’当中的数值截位,以取得精度足够的计算结果。关于截位运算的方式具体而言包括:根据小数点的位置,对加总参数Ay’移位。对移位后的数值做饱和进位(saturation and round)处理,使得对普通数据宽度不会出现溢出的情况。当加总参数Ay’大于普通数据宽度的最大值或小于最小值时,加总参数Ay’会被饱和成普通数据宽度的最大值或最小值。
因此,截位逻辑630产生的输出参数y’即为上述公式(1)的神经网络运算的结果(或近似结果)。据此,基于上述步骤S710~S730以及图6的微处理器电路600的架构,本实施例的微处理器电路600可采用较节省处理资源的方式来有效执行高精度的BWN运算以及TWN运算。另外,关于上述表5、表6、公式(7)以及公式(8)的编码方式以及判断条件可依据不同运算需求来决定,本发明并不限于此。
综上所述,本发明的微处理器电路以及执行神经网络运算的方法透过参数产生模块对神经网络运算的输入数据以及权重数据的至少其中之一进行编码,并且依据编码后的数据产生对应的子输出参数。接着,本发明的微处理器电路以及执行神经网络运算可透过运算模块以及功能逻辑可计算此对应的子输出参数,以产生神经网络运算的输出参数。并且,本发明的功能逻辑的类型可依据不同的神经网络运算的类型来选择。因此,本发明的微处理器电路以及执行神经网络运算的方法,相较于一般的微处理器电路中的算术逻辑单元(ALU)以普通乘法器和加法器实现乘累加运算来产生神经网络运算的输出参数的技术方案相比,可有效节省神经网络运算的运算资源。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视权利要求所界定者为准。
Claims (18)
1.一种支持单指令流多数据流架构的微处理器电路,适用于执行神经网络运算,其特征在于,包括:
参数产生模块,用以并行接收所述神经网络运算的多个输入参数以及多个权重参数,并且所述参数产生模块依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数,其中,所述参数产生模块依据所述多个输入参数及所述多个权重参数的取值范围对所述多个输入参数以及所述多个权重参数采用相同方式进行编码,以产生多个编码后的输入参数以及多个编码后的权重参数,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来产生所述多个子输出参数;
运算模块,耦接所述参数产生模块,并且用以并行接收所述多个子输出参数,其中所述运算模块加总所述多个子输出参数,以产生加总参数;以及
比较逻辑,耦接所述运算模块,并且用以接收所述加总参数,其中所述比较逻辑依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数;
其中,所述神经网络运算为二值神经网络运算、三值神经网络运算、二值权重网络运算或三值权重网络运算。
2.根据权利要求1所述的微处理器电路,其特征在于,所述比较逻辑依据所述加总参数来比较所述多个子输出参数的第一数值类型的数量以及第二数值类型的数量,以决定所述输出参数。
3.根据权利要求1所述的微处理器电路,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围分别包括两种数值类型,则所述参数产生模块采用第一编码方式对所述多个输入参数以及所述多个权重参数进行编码,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第一查找表或第一逻辑电路来产生所述多个子输出参数。
4.根据权利要求1所述的微处理器电路,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围分别包括三种数值类型,则所述参数产生模块采用第二编码方式对所述多个输入参数以及所述多个权重参数编码,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第二查找表或第二逻辑电路来产生所述多个子输出参数。
5.根据权利要求4所述的微处理器电路,其特征在于,所述运算模块包括:
第一子运算模块,用以加总所述多个子输出参数的第一位的数值,以产生第一加总参数;以及
第二子运算模块,用以加总所述多个子输出参数的第二位的数值,以产生第二加总参数,
其中所述比较逻辑比较所述第一加总参数与所述第二加总参数,以决定所述输出参数。
6.根据权利要求4所述的微处理器电路,其特征在于,所述第二逻辑电路包括:
第一子逻辑电路,用以依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第一位;以及
第二子逻辑电路,用以依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第二位。
7.根据权利要求4所述的微处理器电路,其特征在于,所述运算模块计算所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数。
8.根据权利要求4所述的微处理器电路,其特征在于,所述比较逻辑比较所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数来决定所述输出参数。
9.根据权利要求1所述的微处理器电路,其特征在于,所述微处理器电路执行微指令以完成所述神经网络运算,所述微指令的源操作数包括上述多个输入参数及上述多个权重参数,并且所述微指令的目的操作数包括所述神经网络运算的所述输出参数。
10.根据权利要求1所述的微处理器电路,其特征在于,每一所述多个输入参数的位宽等于每一所述多个权重参数的位宽,并且所述微处理器电路的位宽大于所述多个输入参数及所述多个权重参数的位宽总和。
11.一种执行神经网络运算的方法,适用于支持单指令流多数据流架构的微处理器电路,其特征在于,所述微处理器电路包括参数产生模块、运算模块以及比较逻辑,所述方法包括:
透过参数产生模块并行接收所述神经网络运算的多个输入参数以及多个权重参数,并且依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数;
透过运算模块并行接收所述多个子输出参数,并且加总所述多个子输出参数,以产生加总参数;以及
透过比较逻辑接收所述加总参数,并且依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数;
其中,依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数的步骤包括:透过所述参数产生模块依据所述多个输入参数及所述多个权重参数的取值范围对所述多个输入参数以及所述多个权重参数采用相同方式进行编码,以产生多个编码后的输入参数以及多个编码后的权重参数;以及透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来产生所述多个子输出参数;
其中,所述神经网络运算为二值神经网络运算、三值神经网络运算、二值权重网络运算或三值权重网络运算。
12.根据权利要求11所述的神经网络运算的方法,其特征在于,依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数的步骤包括:
透过所述比较逻辑依据所述加总参数来比较所述多个子输出参数的第一数值类型的数量以及第二数值类型的数量,以决定所述输出参数。
13.根据权利要求11所述的神经网络运算的方法,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围分别包括两种数值类型,则所述参数产生模块采用第一编码方式对所述多个输入参数以及所述多个权重参数进行编码,并且依据所述多个输入参数以及所述多个权重参数来并行产生所述多个子输出参数的步骤包括:
透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第一查找表或第一逻辑电路来产生所述多个子输出参数。
14.根据权利要求11所述的神经网络运算的方法,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围分别包括三种数值类型,则所述参数产生模块采用第二编码方式对所述多个输入参数以及所述多个权重参数编码,并且依据所述多个输入参数以及所述多个权重参数来并行产生所述多个子输出参数的步骤包括:
透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第二查找表或第二逻辑电路来产生所述多个子输出参数。
15.根据权利要求14所述的神经网络运算的方法,其特征在于,所述运算模块包括第一子运算模块以及第二子运算模块,并且加总所述多个子输出参数,以产生加总参数的步骤包括:
透过所述第一子运算模块加总所述多个子输出参数的第一位的数值,以产生第一加总参数;以及
透过所述第二子运算模块加总所述多个子输出参数的第二位的数值,以产生第二加总参数,
其中依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数的步骤包括:
透过所述比较逻辑比较所述第一加总参数与所述第二加总参数,以决定所述输出参数。
16.根据权利要求14所述的神经网络运算的方法,其特征在于,所述第二逻辑电路包括第一子逻辑电路以及第二子逻辑电路,并且透过第二查找表或第二逻辑电路来产生所述多个子输出参数的步骤包括:
透过所述第一子逻辑电路依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第一位;以及
透过所述第二子逻辑电路依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第二位。
17.根据权利要求14所述的神经网络运算的方法,其特征在于,所述运算模块计算所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数。
18.根据权利要求14所述的神经网络运算的方法,所述比较逻辑比较所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数来决定所述输出参数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810012336.8A CN108256644B (zh) | 2018-01-05 | 2018-01-05 | 微处理器电路以及执行神经网络运算的方法 |
US15/928,114 US11604970B2 (en) | 2018-01-05 | 2018-03-22 | Micro-processor circuit and method of performing neural network operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810012336.8A CN108256644B (zh) | 2018-01-05 | 2018-01-05 | 微处理器电路以及执行神经网络运算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108256644A CN108256644A (zh) | 2018-07-06 |
CN108256644B true CN108256644B (zh) | 2021-06-22 |
Family
ID=62725736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810012336.8A Active CN108256644B (zh) | 2018-01-05 | 2018-01-05 | 微处理器电路以及执行神经网络运算的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11604970B2 (zh) |
CN (1) | CN108256644B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190303763A1 (en) * | 2018-03-29 | 2019-10-03 | Ca, Inc. | Trinary neural network and back-propagation methodology |
WO2020191573A1 (en) * | 2019-03-25 | 2020-10-01 | Hangzhou Fabu Technology Co. Ltd | Acceleration method, apparatus and system on chip |
CN112132272B (zh) * | 2020-09-22 | 2023-09-12 | 中国科学院计算技术研究所 | 神经网络的计算装置、处理器和电子设备 |
CN112132273B (zh) * | 2020-09-22 | 2022-11-29 | 中国科学院计算技术研究所 | 计算装置、处理器、电子设备和计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019656A (zh) * | 2012-12-04 | 2013-04-03 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理系统 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN107256424A (zh) * | 2017-05-08 | 2017-10-17 | 中国科学院计算技术研究所 | 三值权重卷积网络处理系统及方法 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098332B1 (en) * | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US20160026912A1 (en) * | 2014-07-22 | 2016-01-28 | Intel Corporation | Weight-shifting mechanism for convolutional neural networks |
CN105654176B (zh) * | 2014-11-14 | 2018-03-27 | 富士通株式会社 | 神经网络系统及神经网络系统的训练装置和方法 |
US9582726B2 (en) * | 2015-06-24 | 2017-02-28 | Qualcomm Incorporated | Systems and methods for image processing in a deep convolution network |
US11029949B2 (en) * | 2015-10-08 | 2021-06-08 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Neural network unit |
US10311342B1 (en) * | 2016-04-14 | 2019-06-04 | XNOR.ai, Inc. | System and methods for efficiently implementing a convolutional neural network incorporating binarized filter and convolution operation for performing image classification |
KR102120396B1 (ko) * | 2016-05-26 | 2020-06-08 | 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 | 심층 신경망용 가속기 |
US10643126B2 (en) * | 2016-07-14 | 2020-05-05 | Huawei Technologies Co., Ltd. | Systems, methods and devices for data quantization |
US10891538B2 (en) * | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10810484B2 (en) * | 2016-08-12 | 2020-10-20 | Xilinx, Inc. | Hardware accelerator for compressed GRU on FPGA |
US10936941B2 (en) * | 2016-08-12 | 2021-03-02 | Xilinx, Inc. | Efficient data access control device for neural network hardware acceleration system |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
US10698657B2 (en) * | 2016-08-12 | 2020-06-30 | Xilinx, Inc. | Hardware accelerator for compressed RNN on FPGA |
WO2018119785A1 (en) * | 2016-12-28 | 2018-07-05 | Intel Corporation | Method and apparatus for a binary neural network mapping scheme utilizing a gate array architecture |
KR102592721B1 (ko) * | 2017-01-11 | 2023-10-25 | 한국전자통신연구원 | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 |
CN106909970B (zh) * | 2017-01-12 | 2020-04-21 | 南京风兴科技有限公司 | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置 |
CN106875011B (zh) * | 2017-01-12 | 2020-04-17 | 南京风兴科技有限公司 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
IT201700047044A1 (it) * | 2017-05-02 | 2018-11-02 | St Microelectronics Srl | Rete neurale, dispositivo, apparecchiatura e procedimento corrispondenti |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
CN107169563B (zh) * | 2017-05-08 | 2018-11-30 | 中国科学院计算技术研究所 | 应用于二值权重卷积网络的处理系统及方法 |
KR102526650B1 (ko) * | 2017-05-25 | 2023-04-27 | 삼성전자주식회사 | 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치 |
US9916531B1 (en) * | 2017-06-22 | 2018-03-13 | Intel Corporation | Accumulator constrained quantization of convolutional neural networks |
CN107679618B (zh) * | 2017-07-28 | 2021-06-11 | 赛灵思电子科技(北京)有限公司 | 一种静态策略定点化训练方法及装置 |
US11481218B2 (en) * | 2017-08-02 | 2022-10-25 | Intel Corporation | System and method enabling one-hot neural networks on a machine learning compute platform |
EP3679524A4 (en) * | 2017-09-05 | 2020-10-28 | Panasonic Intellectual Property Corporation of America | EXECUTION PROCESS, EXECUTION DEVICE, LEARNING PROCESS, LEARNING DEVICE AND DEEP NEURONAL NETWORK PROGRAM |
WO2019051658A1 (en) * | 2017-09-13 | 2019-03-21 | Intel Corporation | INCREMENTAL NETWORK QUANTIFICATION |
US10839286B2 (en) * | 2017-09-14 | 2020-11-17 | Xilinx, Inc. | System and method for implementing neural networks in integrated circuits |
CN109521994B (zh) * | 2017-09-19 | 2020-11-10 | 华为技术有限公司 | 乘法硬件电路、片上系统及电子设备 |
US11170292B2 (en) * | 2017-09-21 | 2021-11-09 | The Trustees Of Columbia University In The City Of New York | Static random-access memory for deep neural networks |
US10943039B1 (en) * | 2017-10-17 | 2021-03-09 | Xilinx, Inc. | Software-driven design optimization for fixed-point multiply-accumulate circuitry |
US11270187B2 (en) * | 2017-11-07 | 2022-03-08 | Samsung Electronics Co., Ltd | Method and apparatus for learning low-precision neural network that combines weight quantization and activation quantization |
WO2019113603A1 (en) * | 2017-12-08 | 2019-06-13 | Zytek Communications Corporation | State machine block for high-level synthesis |
US10474430B2 (en) * | 2017-12-29 | 2019-11-12 | Facebook, Inc. | Mixed-precision processing elements, systems, and methods for computational models |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
CN108256638B (zh) * | 2018-01-05 | 2021-06-22 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
US11429862B2 (en) * | 2018-03-20 | 2022-08-30 | Sri International | Dynamic adaptation of deep neural networks |
US10628124B2 (en) * | 2018-03-22 | 2020-04-21 | Advanced Micro Devices, Inc. | Stochastic rounding logic |
-
2018
- 2018-01-05 CN CN201810012336.8A patent/CN108256644B/zh active Active
- 2018-03-22 US US15/928,114 patent/US11604970B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019656A (zh) * | 2012-12-04 | 2013-04-03 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理系统 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN107256424A (zh) * | 2017-05-08 | 2017-10-17 | 中国科学院计算技术研究所 | 三值权重卷积网络处理系统及方法 |
Non-Patent Citations (2)
Title |
---|
Recurrent Neural Network Model on an SIMD Parallel Architecture;M.Kemal Ciliz等;《Proceedings of 1993 International Joint Conference on Neural Networks》;20020806;第1923-1926页 * |
循环神经网络语言模型定点化优化算法研究;王敏等;《软件导刊》;20170228;第16卷(第2期);第63-66页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108256644A (zh) | 2018-07-06 |
US11604970B2 (en) | 2023-03-14 |
US20190213478A1 (en) | 2019-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256644B (zh) | 微处理器电路以及执行神经网络运算的方法 | |
CN110221808B (zh) | 向量乘加运算的预处理方法、乘加器及计算机可读介质 | |
CN107451658B (zh) | 浮点运算定点化方法及系统 | |
CN108256638B (zh) | 微处理器电路以及执行神经网络运算的方法 | |
JP5475746B2 (ja) | 命令に応じた丸め処理の実行 | |
CN111522528B (zh) | 乘法器、乘法运算方法、运算芯片、电子设备及存储介质 | |
CN108416431A (zh) | 神经网络微处理器与宏指令处理方法 | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
JP2021525403A (ja) | 改良された低精度の2進浮動小数点形式設定 | |
CN111538473A (zh) | 一种Posit浮点数处理器 | |
CN113590195B (zh) | 支持浮点格式乘加的存算一体化dram计算部件 | |
CN112540743A (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN111936965A (zh) | 随机舍入逻辑 | |
TW202319909A (zh) | 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 | |
US20200192633A1 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
CN113608718B (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
US7219117B2 (en) | Methods and systems for computing floating-point intervals | |
CN112558920A (zh) | 有/无符号乘累加装置及方法 | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN102929575B (zh) | 一种模(2n+3)乘法器 | |
CN112861154A (zh) | 面向数据流架构的sha算法执行方法、存储介质、电子装置 | |
CN118394300B (zh) | 近似加法器树设计方法、加法器树电路结构以及芯片 | |
CN111857651B (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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |