CN108256644A - 微处理器电路以及执行神经网络运算的方法 - Google Patents

微处理器电路以及执行神经网络运算的方法 Download PDF

Info

Publication number
CN108256644A
CN108256644A CN201810012336.8A CN201810012336A CN108256644A CN 108256644 A CN108256644 A CN 108256644A CN 201810012336 A CN201810012336 A CN 201810012336A CN 108256644 A CN108256644 A CN 108256644A
Authority
CN
China
Prior art keywords
parameter
sub
output
neural network
weight
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
Application number
CN201810012336.8A
Other languages
English (en)
Other versions
CN108256644B (zh
Inventor
李晓阳
陈静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN201810012336.8A priority Critical patent/CN108256644B/zh
Priority to US15/928,114 priority patent/US11604970B2/en
Publication of CN108256644A publication Critical patent/CN108256644A/zh
Application granted granted Critical
Publication of CN108256644B publication Critical patent/CN108256644B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

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并行接收神经网络运算的多个较短的输入参数(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}。
wi,xi wi,xi(编码后)
-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 (20)

1.一种微处理器电路,适用于执行神经网络运算,其特征在于,包括:
参数产生模块,用以并行接收所述神经网络运算的多个输入参数以及多个权重参数,并且所述参数产生模块依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数;
运算模块,耦接所述参数产生模块,并且用以并行接收所述多个子输出参数,其中所述运算模块加总所述多个子输出参数,以产生加总参数;以及
比较逻辑,耦接所述运算模块,并且用以接收所述加总参数,其中所述比较逻辑依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数。
2.根据权利要求1所述的微处理器电路,其特征在于,所述比较逻辑依据所述加总参数来比较所述多个子输出参数的第一数值类型的数量以及第二数值类型的数量,以决定所述输出参数。
3.根据权利要求1所述的微处理器电路,其特征在于,所述参数产生模块依据所述多个权重参数的取值范围对所述多个输入参数以及所述多个权重参数进行编码,以产生多个编码后的输入参数以及多个编码后的权重参数,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来产生所述多个子输出参数。
4.根据权利要求1所述的微处理器电路,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围各别包括两种数值类型,则所述参数产生模块采用第一编码方式对所述多个输入参数以及所述多个权重参数进行编码,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第一查找表或第一逻辑电路来产生所述多个子输出参数。
5.根据权利要求1所述的微处理器电路,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围各别包括三种数值类型,则所述参数产生模块采用第二编码方式对所述多个输入参数以及所述多个权重参数编码,并且所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第二查找表或第二逻辑电路来产生所述多个子输出参数。
6.根据权利要求5所述的微处理器电路,其特征在于,所述运算模块包括:
第一子运算模块,用以加总所述多个子输出参数的第一位的数值,以产生第一加总参数;以及
第二子运算模块,用以加总所述多个子输出参数的第二位的数值,以产生第二加总参数,
其中所述比较逻辑比较所述第一加总参数与所述第二加总参数,以决定所述输出参数。
7.根据权利要求5所述的微处理器电路,其特征在于,所述第二逻辑电路包括:
第一子逻辑电路,用以依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第一位;以及
第二子逻辑电路,用以依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第二位。
8.根据权利要求5所述的微处理器电路,其特征在于,所述运算模块计算所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数。
9.根据权利要求5所述的微处理器电路,其特征在于,所述比较逻辑比较所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数来决定所述输出参数。
10.根据权利要求1所述的微处理器电路,其特征在于,所述微处理器电路执行微指令以完成所述神经网络运算,所述微指令的源操作数包括上述多个输入参数及上述多个权重参数,并且所述微指令的目的操作数包括所述神经网络运算的所述输出参数。
11.根据权利要求1所述的微处理器电路,其特征在于,每一所述多个输入参数的位宽等于每一所述多个权重参数的位宽,并且所述微处理器电路的位宽大于所述多个输入参数及所述多个权重参数的位宽总和。
12.一种执行神经网络运算的方法,适用于微处理器电路,其特征在于,所述微处理器电路包括参数产生模块、运算模块以及比较逻辑,所述方法包括:
透过参数产生模块并行接收所述神经网络运算的多个输入参数以及多个权重参数,并且依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数;
透过运算模块并行接收所述多个子输出参数,并且加总所述多个子输出参数,以产生加总参数;以及
透过比较逻辑接收所述加总参数,并且依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数。
13.根据权利要求12所述的神经网络运算的方法,其特征在于,依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数的步骤包括:
透过所述比较逻辑依据所述加总参数来比较所述多个子输出参数的第一数值类型的数量以及第二数值类型的数量,以决定所述输出参数。
14.根据权利要求12所述的神经网络运算的方法,其特征在于,依据所述多个输入参数以及所述多个权重参数来并行产生多个子输出参数的步骤包括:
透过所述参数产生模块依据所述多个权重参数的取值范围对所述多个输入参数以及所述多个权重参数进行编码,以产生多个编码后的输入参数以及多个编码后的权重参数;以及
透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来产生所述多个子输出参数。
15.根据权利要求12所述的神经网络运算的方法,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围各别包括两种数值类型,则所述参数产生模块采用第一编码方式对所述多个输入参数以及所述多个权重参数进行编码,并且依据所述多个输入参数以及所述多个权重参数来并行产生所述多个子输出参数的步骤包括:
透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第一查找表或第一逻辑电路来产生所述多个子输出参数。
16.根据权利要求12所述的神经网络运算的方法,其特征在于,若所述多个输入参数以及所述多个权重参数的取值范围各别包括三种数值类型,则所述参数产生模块采用第二编码方式对所述多个输入参数以及所述多个权重参数编码,并且依据所述多个输入参数以及所述多个权重参数来并行产生所述多个子输出参数的步骤包括:
透过所述参数产生模块依据所述多个编码后的输入参数以及所述多个编码后的权重参数来透过第二查找表或第二逻辑电路来产生所述多个子输出参数。
17.根据权利要求16所述的神经网络运算的方法,其特征在于,所述运算模块包括第一子运算模块以及第二子运算模块,并且加总所述多个子输出参数,以产生加总参数的步骤包括:
透过所述第一子运算模块加总所述多个子输出参数的第一位的数值,以产生第一加总参数;以及
透过所述第二子运算模块加总所述多个子输出参数的第二位的数值,以产生第二加总参数,
其中依据所述加总参数执行比较运算,以产生所述神经网络运算的输出参数的步骤包括:
透过所述比较逻辑比较所述第一加总参数与所述第二加总参数,以决定所述输出参数。
18.根据权利要求16所述的神经网络运算的方法,其特征在于,所述第二逻辑电路包括第一子逻辑电路以及第二子逻辑电路,并且透过第二查找表或第二逻辑电路来产生所述多个子输出参数的步骤包括:
透过所述第一子逻辑电路依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第一位;以及
透过所述第二子逻辑电路依据编码后的所述神经网络运算的所述多个输入参数以及编码后的所述多个权重参数来产生所述多个子输出参数的第二位。
19.根据权利要求16所述的神经网络运算的方法,其特征在于,所述运算模块计算所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数。
20.根据权利要求16所述的神经网络运算的方法,所述比较逻辑比较所述多个子输出参数的第一位为第一数值的个数以及所述多个子输出参数的第二位为所述第一数值的个数来决定所述输出参数。
CN201810012336.8A 2018-01-05 2018-01-05 微处理器电路以及执行神经网络运算的方法 Active CN108256644B (zh)

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 true CN108256644A (zh) 2018-07-06
CN108256644B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112132272A (zh) * 2020-09-22 2020-12-25 中国科学院计算技术研究所 神经网络的计算装置、处理器和电子设备
CN112132273A (zh) * 2020-09-22 2020-12-25 中国科学院计算技术研究所 计算装置、处理器、电子设备和计算方法
CN113396425A (zh) * 2019-03-25 2021-09-14 杭州飞步科技有限公司 加速方法、装置和片上系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN105654176A (zh) * 2014-11-14 2016-06-08 富士通株式会社 神经网络系统及神经网络系统的训练装置和方法
US20160379073A1 (en) * 2015-06-24 2016-12-29 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN106909970A (zh) * 2017-01-12 2017-06-30 南京大学 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理系统及方法
CN107256424A (zh) * 2017-05-08 2017-10-17 中国科学院计算技术研究所 三值权重卷积网络处理系统及方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
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
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
KR102459854B1 (ko) * 2016-05-26 2022-10-27 삼성전자주식회사 심층 신경망용 가속기
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
US10698657B2 (en) * 2016-08-12 2020-06-30 Xilinx, Inc. Hardware accelerator for compressed RNN on FPGA
US10810484B2 (en) * 2016-08-12 2020-10-20 Xilinx, Inc. Hardware accelerator for compressed GRU on FPGA
CN107239823A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种用于实现稀疏神经网络的装置和方法
US10936941B2 (en) * 2016-08-12 2021-03-02 Xilinx, Inc. Efficient data access control device for neural network hardware acceleration system
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 한국전자통신연구원 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법
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
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 赛灵思电子科技(北京)有限公司 一种静态策略定点化训练方法及装置
WO2019023984A1 (en) * 2017-08-02 2019-02-07 Intel Corporation SYSTEM AND METHOD FOR INCLUSION OF NEURAL NETWORKS 1 AMONG N ON AN AUTOMATIC LEARNING COMPUTER PLATFORM
EP3679524A4 (en) * 2017-09-05 2020-10-28 Panasonic Intellectual Property Corporation of America EXECUTION METHOD, EXECUTION DEVICE, LEARNING METHOD, LEARNING DEVICE AND PROGRAM FOR A DEEP NEURONAL NETWORK
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN105654176A (zh) * 2014-11-14 2016-06-08 富士通株式会社 神经网络系统及神经网络系统的训练装置和方法
US20160379073A1 (en) * 2015-06-24 2016-12-29 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN106909970A (zh) * 2017-01-12 2017-06-30 南京大学 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理系统及方法
CN107256424A (zh) * 2017-05-08 2017-10-17 中国科学院计算技术研究所 三值权重卷积网络处理系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
M.KEMAL CILIZ等: "Recurrent Neural Network Model on an SIMD Parallel Architecture", 《PROCEEDINGS OF 1993 INTERNATIONAL JOINT CONFERENCE ON NEURAL NETWORKS》 *
王敏等: "循环神经网络语言模型定点化优化算法研究", 《软件导刊》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113396425A (zh) * 2019-03-25 2021-09-14 杭州飞步科技有限公司 加速方法、装置和片上系统
CN113396425B (zh) * 2019-03-25 2023-08-22 杭州飞步科技有限公司 加速方法、装置和片上系统
CN112132272A (zh) * 2020-09-22 2020-12-25 中国科学院计算技术研究所 神经网络的计算装置、处理器和电子设备
CN112132273A (zh) * 2020-09-22 2020-12-25 中国科学院计算技术研究所 计算装置、处理器、电子设备和计算方法
CN112132273B (zh) * 2020-09-22 2022-11-29 中国科学院计算技术研究所 计算装置、处理器、电子设备和计算方法
CN112132272B (zh) * 2020-09-22 2023-09-12 中国科学院计算技术研究所 神经网络的计算装置、处理器和电子设备

Also Published As

Publication number Publication date
US11604970B2 (en) 2023-03-14
US20190213478A1 (en) 2019-07-11
CN108256644B (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN108256644A (zh) 微处理器电路以及执行神经网络运算的方法
CN108256638A (zh) 微处理器电路以及执行神经网络运算的方法
CN107819569B (zh) 登录信息的加密方法及终端设备
CN107861916A (zh) 一种用于针对神经网络执行非线性运算的方法和装置
CN104468412B (zh) 基于rss的网络会话数据包分发方法及系统
CN105824974B (zh) 数据分析处理的方法和系统
Kong et al. A class of 2n+ 1 dimensional simplest hamiltonian conservative chaotic systems and fast image encryption schemes
CN114117549A (zh) 一种后量子多节点门限签名方法及系统
CN108809520A (zh) 一种基于边缘计算环境的编码分布式计算方法及装置
Zhang et al. Cloud-assisted privacy-conscious large-scale Markowitz portfolio
CN107547201A (zh) 一种提高椭圆曲线密码体制中的标量乘计算效率的方法
CN106682258A (zh) 一种高层次综合工具中的多操作数加法优化方法及系统
CN114003194A (zh) 一种基于乘法器的运算方法、装置和计算机可读存储介质
CN111970112B (zh) 基于zynq异构计算平台的以太坊部署方法及系统
WO2022174733A1 (zh) 一种神经元加速处理方法、装置、设备及可读存储介质
US11157672B1 (en) System and method for determining hybrid-manufacturing process plans for integrated circuits based on satisfiability modulo difference logic solver
CN110555519B (zh) 一种基于符号随机计算的低复杂度卷积神经网络架构
CN114154631A (zh) 一种基于fpga的卷积神经网络量化实现方法以及装置
CN117313135B (zh) 一种基于属性划分的可高效重构的个人隐私保护方法
CN112558920A (zh) 有/无符号乘累加装置及方法
CN115660035B (zh) 一种用于lstm网络的硬件加速器及lstm模型
CN117724851B (zh) 数据处理方法、装置、存储介质及设备
Wang et al. TransFRU: Efficient Deployment of Transformers on FPGA with Full Resource Utilization
CN115857873B (zh) 乘法器、乘法计算方法、处理系统及存储介质
CN108075889A (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