CN109074516B - 计算处理装置和计算处理方法 - Google Patents

计算处理装置和计算处理方法 Download PDF

Info

Publication number
CN109074516B
CN109074516B CN201780024236.0A CN201780024236A CN109074516B CN 109074516 B CN109074516 B CN 109074516B CN 201780024236 A CN201780024236 A CN 201780024236A CN 109074516 B CN109074516 B CN 109074516B
Authority
CN
China
Prior art keywords
data
arithmetic
arithmetic processing
bits
unit
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
Application number
CN201780024236.0A
Other languages
English (en)
Other versions
CN109074516A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN109074516A publication Critical patent/CN109074516A/zh
Application granted granted Critical
Publication of CN109074516B publication Critical patent/CN109074516B/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Neurology (AREA)
  • Hardware Redundancy (AREA)

Abstract

本技术涉及一种相对于执行更高可靠性的神经网络计算能够减小电路面积同时降低功耗的计算处理装置和计算处理方法。提供了一种计算处理装置,其相对于神经网络计算,使在计算中使用的加权系数和一部分输入数据的指定位冗余化,使得该冗余比除指定位以外的剩余位的冗余更大。因此,相对于执行更高可靠性的神经网络计算,可以减小电路面积同时降低功耗。例如,本技术可以应用于执行神经网络计算的计算处理装置。

Description

计算处理装置和计算处理方法
技术领域
本技术涉及一种算术处理装置和算术处理方法,并且更具体地,涉及一种能够在执行神经网络的更可靠的算术运算时减小电路面积同时降低功耗的算术处理装置和算术处理方法。
背景技术
近年来,已积极进行关于神经网络的研究和发展。作为与神经网络相关的技术,例如,专利文献1是已知的。
现有技术文献
专利文献
专利文献1:日本专利申请公开号2015-210709
发明内容
本发明要解决的问题是
顺便提及,在被配置为执行神经网络的算术运算的算术处理装置中,需要增强这种算术运算的可靠性,但是,由于使用了许多算术单元,所以在实现简单多路复用的情况下,功耗和电路面积变大。因此,期望在执行神经网络的更可靠的算术运算时实现减小电路面积、同时降低功耗。
已经鉴于这种情况提出了本技术,并且本技术旨在执行神经网络的更可靠的算术运算时减小电路面积同时降低功耗。
问题的解决方案
根据本技术的一个方面的算术处理装置包括执行神经网络的算术运算的算术处理单元,其中,在神经网络的算术运算中,用于算术运算的加权系数和输入数据的特定位部分被冗余化,使得特定位部分的冗余变得大于除了该特定位部分之外的剩余位的冗余。
算术处理装置可以是独立装置,或者可以是被配置为执行算术处理装置的算术处理的块体。根据本技术的一个方面的算术处理方法是对应于根据本技术的一个方面的上述算术处理装置的算术处理方法。
在根据本技术的一个方面的算术处理装置和算术处理方法中,执行神经网络的算术运算。另外,在神经网络的算术运算中,用于算术运算的加权系数和输入数据的特定位部分被冗余化,使得特定位部分的冗余变得大于除了该特定位部分之外的剩余位的冗余。
本发明的效果
根据本技术的一个方面,在执行更可靠的神经网络算术运算时,可以减小电路面积同时降低功耗。
注意,本文描述的效果不一定是限制性的,可以应用本公开中描述的任何效果。
附图说明
图1是示出三重模块冗余的配置示例的示图。
图2是示出多数表决器的逻辑电路的配置示例的示图。
图3是示出在提供多个多数表决器的情况下的配置示例的示图。
图4是示出在一的补数的乘法数据中未实现高阶位冗余的情况下的算术运算的示例的示图。
图5是示出在一的补数的乘法数据中实现高阶位冗余的情况下的算术运算的示例的示图。
图6是示出在一的补数的乘法数据中实现高阶位冗余和额外实现多数表决器冗余的情况的示例的示图。
图7是示出在二的补数的累积相加数据中实现高阶位冗余的情况下的算术运算的示例的示图。
图8是示出应用了本技术的算术处理装置的配置示例的示图。
图9是示出卷积神经网络的概念配置示例的示图。
图10是示出卷积算术运算单元的配置示例的示图。
图11是用于说明固定点形式和浮点形式的示图。
图12是示出计算机的配置示例的示图。
具体实施方式
在下文中,将参考附图描述本技术的实施方式。注意,将按以下顺序给出描述。
1、本技术的概述
2、神经网络的算术运算示例
3、系统配置
4、变形
5、计算机配置
<1、本技术的概述>
三重模块冗余(TMR)经常用作掩蔽由于辐射等原因而在单个电路中发生的故障的技术。三重模块冗余是其中为了实现系统的进一步可靠性的目的而将模块(单元)三重化的一种冗余配置技术。
在这种三重模块冗余中,配备了具有相同功能的三个单元,并且其处理结果通过多数表决元件(表决器),从而选择其中两个或更多个处理结果匹配的处理结果。通过这种配置,掩蔽在单个电路中发生的故障,并且从外部看似乎没有故障。
图1示出了三重模块冗余的配置示例。在图1中,单元(UNIT0)90-1、单元(UNIT1)90-2和单元(UNIT2)90-3被设置为具有相同功能的三个单元。每个单元对相同的输入执行处理,并将其处理结果输出到多数表决器(表决器)100。
多数表决器100通过对从单元90-1至90-3输入的三个处理结果执行多数表决运算来选择其中两个或更多个处理结果匹配的处理结果,并且输出所选择的处理结果作为输出结果。这使得可以掩蔽单个电路中发生的故障。
注意,尽管此处以三重模块冗余为例进行了描述,但通常,2m+1个多路复用模块化冗余可以掩蔽m个故障。在此处,m是等于或大于1的整数。此外,由于不能掩蔽m+1个或更多的故障,但是可以发现故障,所以可以在发现故障的情况下不使用输出结果。
顺便提及,同样在被配置为执行神经网络的算术运算的算术处理装置中,需要增强算术运算的可靠性。然而,同样在神经网络的算术运算中,如果将三重模冗余应用于所有位,则其电路面积和功耗同样变大。例如,当多路复用所有位时,电路面积和功耗与其多重性成比例地增加,并且假设变为三倍或更大。
此外,在被配置为执行神经网络的算术运算的算术处理装置中,由于使用了许多算术单元(例如,加法器和乘法器),所以作为成本,不能忽略简单的多路复用。因此,期望在执行神经网络的更可靠的算术运算时实现减小电路面积同时降低功耗。
因此,在本技术中,在神经网络的算术运算中,所有数据位中的特定位部分被冗余化,使得特定位部分的冗余变得大于除了该特定位部分之外的剩余位的冗余,由此在执行神经网络的更可靠算术运算时,可以减小电路面积同时降低功耗。
(多数表决器的配置示例)
图2是示出本技术中使用的多数表决器的逻辑电路的配置示例的示图。
在图2中,多数表决器100由与门101-1、与门101-2、与门101-3和或门102构成。在多数表决器100中,输入数据in_0[n]、输入数据in_1[n]和输入数据in_2[n]分别从三个单元输入,这三个单元具有在门的前一级中设置的相同功能。注意,n是等于或大于1的整数,并且在多数表决器100中,同时处理具有相同数量n的数据。
输入数据in_0[n]和输入数据in_1[n]被输入到与门101-1。与门101-1对两条输入数据的逻辑积执行算术运算,并将所得数据(例如,指示两个输入的最小值的数据)输出到或门102。
类似地,与门101-2对输入数据in_0[n]和输入数据in_2[n]的逻辑积执行算术运算,并将所得数据输出到或门102。此外,与门101-3对输入数据in_1[n]和输入数据in_2[n]的逻辑积执行算术运算,并将所得数据输出到或门102。
来自与门101-1至101-3的数据被输入到或门102。或门102对已经输入的数据的逻辑和执行算术运算,并将所得输出数据[n](例如,指示三个输入的最大值的数据)输出到后续级。
如上所述,在多数表决器100中,通过与门101-1至101-3和或门102执行逻辑操作,并且选择三条输入数据(in_0[n]、in_1[n]和in_2[n])中的两条或更多条输入数据匹配的输入数据(指示多数值的数据),以作为输出数据(out[n])输出。通过这个处理,可以掩蔽单个电路中发生的故障。
另外,如图3所示,可以设置多个多数表决器100,使得多数表决器100多路复用。即,在设置单个多数表决器100的情况下,多数表决器100可能成为单点故障。因此,通过设置多个多数表决器100,可以更可靠地掩蔽故障。图3例示了设置多数表决器100-1至100-7使得多数表决器100七次多路复用的情况。
<2、神经网络的算术运算示例>
接下来,将参考图4至图7描述应用了本技术的神经网络的算术运算方法的示例。注意,在此处,为了比较起见,将参考图4描述特定位(高阶位)不被冗余化的情况,并且随后将参考图5至图7描述特定位(高阶位)被冗余化的情况。
(未实现高阶位冗余的情况示例)
图4是示出在一的补数的乘法数据中未实现高阶位冗余的情况下的算术运算的示例的示图。
在图4中,在神经网络的算术运算中使用X数据和Y数据,并且在这些数据中,例如,X可以指定为输入数据,Y可以指定为加权系数。注意,在此处将描述输入数据(X)和加权系数(Y)的数据形式采取固定点形式的情况,作为示例。该数据形式同样适用于稍后描述的图5至图7。
在此处,作为15位数据的X[14:0],可以由高阶6位的X[14:9]和低阶9位的X[8:0]表示。此外,作为15位数据的Y[14:0],可以由高阶6位的Y[14:9]和低阶9位的Y[8:0]表示。此外,X[15]和Y[15]这两者都是1位数据,各自表示指示正或负号的最高有效的1位。
通过在乘法器111中将X[14:0]的高阶位乘以Y[14:0]的高阶位,获得12位X[14:9]·Y[14:9]。然后,通过将全部具有0(18’b0)的18位组合到由乘法器111获得的算术运算结果的低阶位,获得30位数据(X[14:9]·Y[14:9]和18’b0的组合)。
通过在乘法器112中将X[14:0]的低阶位乘以Y[14:0]的高阶位,获得X[8:0]·Y[14:9]。此外,通过在乘法器113中将Y[14:0]的低阶位乘以X[14:0]的高阶位,获得Y[8:0]·X[14:9]。
然后,通过在加法器114中将乘法器112获得的算术运算结果和乘法器113获得的算术运算结果相加,获得X[8:0]·Y[14:9]+Y[8:0]·X[14:9]。此外,通过将全部具有0(9’b0)的九位组合到通过上述算术运算获得的16位数据的低阶位,而获得25位数据(X[8:0]·Y[14:9]+Y[8:0]·X[14:9]和9’b0的组合)。
通过在乘法器115中将X[14:0]的低阶位乘以Y[14:0]的低阶位,获得X[8:0]·Y[8:0],作为18位数据。
在加法器116中,将通过乘法器111的算术运算获得的30位数据、通过乘法器112至加法器114的算术运算获得的25位数据和通过乘法器115的算术运算获得的18位数据相加。结果,获得Z[30:0],作为31位数据。
另外,在图4中,在逻辑运算符121中执行X[15]和Y[15](这两者都是最高有效位)之间的异或(EXOR)的算术运算,由此获得指示正或负号的Z[31],作为1位数据。
在此处,如果上述算术运算的关系由数学公式表示,则该关系可以由以下公式(1)和(2)表示。在这些公式中,在图4中,公式(1)表示由乘法器111对加法器116执行的乘积和运算。同时,在图4中,公式(2)表示由逻辑运算符121执行的逻辑运算。
Z[30:0]=X[14:0]·Y[14:0]
=(X[14:9]·2^9+X[8:0])(Y[14:9]·2^9+Y[8:0])
=X[14:9]·Y[14:9]·2^18+(X[8:0]·Y[14:9]+Y[8:0]·X[14:9])·2^9+X[8:0]·Y[8:0]…(1)
X[31]exor Y[31]…(2)
注意,在公式(1)中,“·”表示乘法,“^”表示取幂。此外,在公式(2)中,“exor”表示异或(EXOR)。
如上所述,在神经网络的算术运算中,例如,对输入数据(X)和加权系数(Y)执行乘积和运算,并且输出所得数据(Z)。
(实现高阶位冗余的情况示例)
图5是示出在一的补数的乘法数据中实现高阶位冗余的情况下的算术运算的示例的示图。
然而,在图5的配置中,与图4中的配置的部件类似的部件由相同的附图标记表示,并且将适当地省略其描述。注意,在图5的配置中,相对于图4中的配置增加的部分用粗线表示。
即,与图4中的配置相比,在图5的配置中,除了乘法器111、乘法器112、乘法器113、加法器114、乘法器115和加法器116之外,还另外设置了乘法器131、加法器132、乘法器133、加法器134和多数表决器(表决器)100A。注意,多数表决器100A具有图2所示的配置。
此外,与图4的配置相比,在图5的配置中,除了逻辑运算符121之外,还另外设置了逻辑运算符141、逻辑运算符142和多数表决器(表决器)100B。注意,多数表决器100B具有图2所示的配置。
此外,在图5的配置中,类似于图4的配置,在神经网络的算术运算中使用X数据和Y数据,并且在这些数据中,例如,X可以指定为输入数据,并且Y可以指定为加权系数。
在此处,在图5中,由于作为15位数据的X[14:0]的高阶位被冗余化,所以作为高阶位的X[14:9]被输入三次。同样,由于作为15位数据的Y[14:0]的高阶位被冗余化,所以作为高阶位的Y[14:9]被输入三次。此外,各自代表最高有效位的X[15]和Y[15]也被冗余化,并且X[15]和Y[15]各自被输入三次。
在图5中,如上所述,由乘法器111至加法器116对X[14:0](高阶位:X[14:9]、低阶位:X[8:0])和Y[14:0](高阶位:Y[14:9]、低阶位:Y[8:0])执行算术运算,由此获得31位数据。该31位数据被输入到多数表决器100A。
此外,通过将X[14:9]乘以Y[14:9](这两者都是冗余的高阶位),在乘法器131中,获得X[14:9]·Y[14:9]。此外,通过将全部具有0(18'b0)的18位组合到由乘法器131获得的算术运算结果的低阶位,获得30位数据(X[14:9]·Y[14:9]和18'b0的组合)。
然后,在加法器132中,将通过乘法器131的算术运算获得的30位数据、由乘法器112至加法器114的算术运算获得的25位数据、以及由乘法器115的算术运算获得的18位数据相加。所得到的31位数据被输入到多数表决器100A。
类似地,通过将X[14:9]乘以Y[14:9](这两者都是高阶位冗余的其他实例),在乘法器133中,获得X[14:9]·Y[14:9]。此外,通过将全部具有0(18'b0)的18位组合到由乘法器133获得的算术运算结果的低阶位,获得30位数据(X[14:9]·Y[14:9]和18'b0的组合)。
然后,在加法器134中,将通过乘法器133的算术运算获得的30位数据、通过乘法器112至加法器114的算术运算获得的25位数据、以及通过乘法器115的算术运算获得的18位数据相加。所得到的31位数据被输入到多数表决器100A。
通过加法器116的算术运算获得的31位数据、通过加法器132的算术运算获得的31位数据、以及通过加法器134的算术运算获得的31位数据被输入到多数表决器100A。通过执行多数表决运算,多数表决器100A选择已经输入的三条数据中的两条或更多条匹配的数据,并输出所得到的31位数据(Z[30:0])。
在图5中,如上所述,由逻辑运算符121执行对X[15]和Y[15](这两者都是最高有效位)之间的异或(EXOR)算术运算,由此获得1位数据。该1位数据被输入到多数表决器100B。
此外,在逻辑运算符141中执行X[15]和Y[15](这两者都是冗余的最高有效位)之间的异或算术运算,并且所得到的1位数据被输入到多数表决器100B。类似地,在逻辑运算符142中执行X[15]和Y[15](这两者都是冗余的最高有效位的其他示例)之间的异或算术运算,并且所得到的1位数据被输入到多数表决器100B。
通过逻辑运算符121的算术运算获得的1位数据、通过逻辑运算符141的算术运算获得的1位数据、以及通过逻辑运算符142的算术运算获得的1位数据被输入到多数表决器100B。通过执行多数表决运算,多数表决器100B选择已经输入的三条数据中的两条或更多条匹配的数据,并输出所得到的指示正或负号的1位数据Z[31]。
如上所述,例如,在实现输入数据(X)和加权系数(Y)的高阶位冗余的情况下,在神经网络的算术运算中,对输入数据(X)和加权系数(Y)执行乘积和运算,并且经由多数表决器100输出所得数据(Z)。在这种情况下,由于高阶位被冗余化,所以可以执行更可靠的算术运算。
此外,在神经网络的算术运算中,由于使用了许多算术单元(例如,加法器和乘法器),所以如果应用简单多路复用,则功耗、电路面积等的成本变得非常大。然而,在图5所示的算术运算的示例中,由于在所有位中仅高阶位被冗余化,因此与所有位被冗余化的情况相比,电路面积可以减小同时功耗降低。
在此处,根据本技术的发明人的模拟,例如,在16位中的高阶5位被冗余化三次的情况下,与所有位被冗余化三次的情况相比,获得的结果是电路面积可以减小到大约一半的尺寸。此外,如果该结果由数学公式表示,则该结果可以由以下公式(3)表示。
(16+2×5)/(16×3)=0.54…(3)
注意,在图5所示的算术运算的示例中,选择高阶位作为要被冗余化的特定位的原因在于,例如,与诸如低阶位的其他位相比,高阶位很可能是重要位,并且高阶位有可能是指示正和负号的位。
即,要被冗余化的位在此处被描述为高阶位,但不限于高阶位。可以使用另一位,只要该另一位是重要位。此外,只要一个更重要的位比其他位被更冗余化,则也可以使除了该重要位之外的其他位冗余。要被冗余化的位数也是任意的。此外,可以重新排列位串的顺序,使得预定位变得冗余。例如,可以重新排列位串的顺序,使得低阶位变得冗余。
(多数表决器被多路复用的情况示例)
图6是示出在一的补数的乘法数据中实现高阶位的冗余并且额外实现多数表决器的多路复用(冗余)的情况的示例的示图。
然而,在图6的配置中,与图4和图5的配置的部件类似的部件由相同的附图标记表示,并且将适当地省略其描述。注意,在图6的配置中,相对于图5中的配置增加的部分用粗线表示。
即,与图5的配置相比,在图6的配置中,除了乘法器111、乘法器112、乘法器113、加法器114、乘法器115、乘法器131、加法器132、乘法器133、加法器134、以及多数表决器100A(100A-1)之外,还额外设置多数表决器(表决器)100A-2和多数表决器(表决器)100A-3。注意,多数表决器100A-1至100A-3具有图2所示的配置。即,在图6的配置中,如图3所示,多数表决器100被多路复用。
此外,与图5的配置相比,在图6的配置中,除了逻辑运算符121、逻辑运算符141、逻辑运算符142和多数表决器100B(100B-1)之外,还额外设置多数表决器(表决器)100B-2和多数表决器(表决器)100B-3。注意,多数表决器100B-1至100B-3具有图2所示的配置。
此外,在图6的配置中,类似于图4和图5的配置,在神经网络的算术运算中使用X数据和Y数据,并且在这些数据中,例如,X可以指定为输入数据,并且Y可以指定为加权系数。
在图6中,如上所述,基于多数表决器100A-1从加法器116、加法器132和加法器134输入的数据执行多数表决运算,并且输出所得到的31位Z[30:0]。
另外,通过加法器116、加法器132和加法器134中的每一个的算术运算获得的数据被输入到多数表决器100A-2。通过执行多数表决运算,多数表决器100A-2选择已经输入的三条数据中的两条或更多条匹配的数据,并输出所得到的13位Z[30:18]。
类似地,通过加法器116、加法器132和加法器134中的每一个的算术运算获得的数据被输入到多数表决器100A-3,使得根据已经输入的数据执行多数表决运算,并且输出所得到的13位Z[30:18]。
在图6中,如上所述,基于由多数表决器100B-1从逻辑运算符121、逻辑运算符141和逻辑运算符142输入的1位数据执行多数表决运算,并且输出所得到的指示正或负号的1位Z[31]。
另外,通过逻辑运算符121、逻辑运算符141和逻辑运算符142中的每一个的算术运算获得的1位数据被输入到多数表决器100B-2。通过执行多数表决运算,多数表决器100B-2选择已经输入的三条数据中的两条或更多条匹配的数据,并输出所得到的表示正或负号的1位数据Z[31]。
类似地,通过逻辑运算符121、逻辑运算符141和逻辑运算符142中的每一个的算术运算获得的1位数据被输入到多数表决器100B-3,使得根据已经输入的数据执行多数表决运算,并且输出所得到的指示正或负号的1位Z[31]。
如上所述,例如,在实现输入数据(X)和加权系数(Y)的高阶位的冗余并且另外实现多数表决器100的多路复用(冗余)的情况下,在神经网络的算术运算中,对输入数据(X)和加权系数(Y)执行乘积和运算,并且经由多数表决器100输出所得数据(Z)。在这种情况下,由于高阶位和乘法单元100被冗余化,因此可以执行更可靠的算术运算。
此外,在神经网络的算术运算中,由于使用了许多算术单元(例如,加法器和乘法器),所以如果应用简单的多路复用,则功耗、电路面积等的成本会变得非常大。然而,在图6所示的算术运算的示例中,由于所有位中只有高阶位是冗余的,因此与所有位是冗余的情况相比,电路面积可以减小同时功耗降低。
(在二的补数的累积相加的数据中实现高阶位冗余的情况示例)
图7是示出在二的补数的累积相加数据中实现高阶位冗余的情况下的算术运算的示例的示图。
在此处,在图7中,由于Z[30:0]的高阶位(31位数据)被冗余化,所以Z[30:18]被分别输入三次。同样,Z[31](最高有效的1位数据)也被冗余化,所以Z[31]被分别输入三次。
在图7中,Z[30:18](Z[30:0]的高阶位)、Z[17:0](其低阶位)、以及Z[31](作为指示正或负号的最高有效位)作为一的补数的数据输入到转换器151。转换器151将已经输入的一的补数的数据转换成二的补数数据,以输出到加法器152。
加法器152将转换器151所转换的二的补数的数据和来自后续级的二的补数的数据相加(累积相加),并输出AC[31:0](AC[31:18]和AC[17:0]的组合),作为二的补数的累积相加的所得数据。通过该处理获得的二的补数的累积相加数据(AC[31:0])被输入到多数表决器100。
除了冗余Z[30:18]和Z[31]之外,Z[17:0](Z[30:0]的低阶位)作为一的补数的数据输入到转换器153。转换器153将已经输入的一的补数的数据转换成二的补数的数据,以输出到加法器154。
加法器154将转换器153转换的二的补数的数据和来自后续级的数据相加(累积相加)(AC[31:18]和AC[17:0]的组合),并输出二的补数的累积相加的所得数据(AC[31:18])。然后,从通过加法器154的算术运算获得的数据(AC[31:18])和通过加法器152的算术运算获得的数据(AC[17:0])中获得的二的补数的累积相加的数据(通过组合AC[31:18]和AC[17:0]获得的AC[31:0])被输入到多数表决器100。
除了冗余Z[30:18]和Z[31]的其他实例之外,Z[17:0](Z[30:0]的低阶位)作为一的补数的数据输入到转换器155。转换器155将已经输入的一的补数的数据转换成二的补数的数据,以输出到加法器156。
加法器156将转换器155转换的二的补数的数据和来自后续级的二的补数的数据相加(累积相加)(AC[31:18]和AC[17:0]的组合),并输出二的补数的累积相加的所得数据(AC[31:18])。然后,从通过加法器156的算术运算获得的数据(AC[31:18])和通过加法器152的算术运算获得的数据(AC[17:0])中获得的二的补数的累积相加的数据(通过组合AC[31:18]和AC[17:0]获得的AC[31:0])被输入到多数表决器100。
通过加法器152的累积相加获得的32位数据、通过加法器154的累积相加获得的32位数据、以及通过加法器156的累积相加获得的32位数据被输入到多数表决器100。通过执行多数表决运算,多数表决器100选择已经输入的三条数据中的两条或更多条匹配的数据,并输出所得到的32位数据(AC[31:0])。
如上所述,在实现二的补数的累积相加的数据(AC)的高阶位冗余的情况下,在神经网络的算术运算中,执行二的补数的累积相加,并且经由多数表决器100输出所得数据(AC)。在这种情况下,由于高阶位被冗余化,所以可以执行更可靠的算术运算。
此外,在神经网络的算术运算中,由于使用了许多算术单元(例如,加法器),所以如果应用简单的多路复用,则功耗、电路面积等的成本会变得非常大。然而,在图7所示的算术运算的示例中,由于在所有位中仅高阶位被冗余化,因此与所有位被冗余化的情况相比,电路面积可以减小同时功耗降低。
注意,在图7所示的算术运算的示例中,在转换成二的补数的数据之后,处理一的补数的数据。因此,与对一的补数的数据执行算术运算的上述情况不同,没有必要考虑正负号。此外,在神经网络的上述算术运算中,对一的补数的数据和二的补数的数据的算术运算已作为示例描述,但是其他形式的数据也可以以类似的方式处理。
<3、系统配置>
(算术处理装置的配置示例)
图8是示出应用了本技术的算术处理装置的配置示例的示图。
算术处理装置10是能够对已经输入的数据执行神经网络的算术运算的设备。算术处理装置10例如是具有成像功能的成像装置、诸如个人计算机或服务器的信息处理装置以及诸如现场可编程门阵列(FPGA)的电子设备。
在图8中,算术处理装置10由图像获取单元11、纠错单元12、存储器控制器13、外部动态随机存取存储器(DRAM)14、数据缓冲存储器15、纠错单元16、图像识别神经网络处理单元17、系数存储器18、纠错单元19和处理器20构成。
另外,图像获取单元11、纠错单元12、数据缓冲存储器15、系数存储器18和处理器20各自连接到三重化的三重总线21。注意,在算术处理装置10中,纠错单元12、纠错单元16和纠错单元19各自被三重化。
图像获取单元11获取图像数据,例如,通过例如从外部装置等对对象成像而获得的捕获图像。由图像获取单元11获取的图像数据经由三重总线21供应给纠错单元12或数据缓冲存储器15。
经由三重总线21向纠错单元12供应由图像获取单元11获取的图像数据。注意,在这种情况下,复制目标图像数据(所有位的相同数据),使得所得到的三条图像数据将经由三重总线21供应给纠错单元12。
纠错单元12使用多数表决器对来自图像获取单元11的三条图像数据执行多数表决运算,以选择其中两条或更多条图像数据匹配的图像数据。注意,在此处使用的多数表决器类似于上述图2中的多数表决器100。然后,纠错单元12对通过多数表决运算指定为单条数据的图像数据(其所有位)进行纠错编码的处理。作为这种情况下的纠错码,例如,可以使用汉明码、里德-所罗门码等。
由纠错单元12进行纠错编码的图像数据供应给存储器控制器13。存储器控制器13将图像数据从纠错单元12写入外部DRAM 14。通过该处理,图像数据存储在外部DRAM 14中。另一方面,在读取存储在外部DRAM 14中的图像数据的情况下,存储器控制器13从外部DRAM14读取图像数据,以供应给纠错单元12。然而,由存储器控制器13处理的所有数据位都是冗余的。
纠错单元12对从存储器控制器13供应的图像数据(经过纠错编码的图像数据)进行纠错解码的处理。然后,纠错单元12复制经过纠错解码的图像数据(所有位的相同数据),并且经由三重总线21输出通过复制获得的三条图像数据。
经由三重总线21向数据缓冲存储器15供应由图像获取单元11获取的图像数据。数据缓冲存储器15缓冲来自图像获取单元11的图像数据,以供应给纠错单元16。然而,假设由数据缓冲存储器15处理的图像数据具有冗余(三重的)高阶位。
纠错单元16对来自数据缓冲存储器15的图像数据(其高阶位)进行纠错编码的处理。作为这种情况下的纠错码,例如,可以使用汉明码、里德-所罗门码等。由纠错单元16进行纠错编码的图像数据供应给图像识别神经网络处理单元17。
例如,加权系数经由三重总线21从处理器20、外部装置等供应给系数存储器18。通过该处理,加权系数存储在系数存储器18中。然而,假设存储在系数存储器18中的加权系数(其数据)具有冗余(三重的)高阶位。存储在系数存储器18中的加权系数供应给纠错单元19。
纠错单元19对来自系数存储器18的加权系数(其高阶位)进行纠错编码的处理。作为这种情况下的纠错码,例如,可以使用汉明码、里德-所罗门码等。由纠错单元19进行纠错编码的加权系数供应给图像识别神经网络处理单元17。
向图像识别神经网络处理单元17供应来自纠错单元16的图像数据和来自纠错单元19的加权系数。图像识别神经网络处理单元17使用作为输入数据的图像数据和加权系数来执行用于图像识别的神经网络的算术运算。
作为神经网络的这些算术运算,例如,执行图5至7所示的上述算术运算。即,在图5和其他附图中的X数据和Y数据中,X(输入数据)指从数据缓冲存储器15读取的图像数据,并且Y(加权系数)指从系数存储器18读取的加权系数。然后,例如,通过对图像数据(X)和加权系数(Y)执行乘积和运算和累积相加而获得的数据(Z和AC)供应给纠错单元16。
注意,由于仅从数据缓冲存储器15读取的图像数据(X)和从系数存储器18读取的加权系数(Y)的高阶位被冗余(三重)化,因此,与所有位被冗余化的情况相比,如前所述,可以在降低功耗和减小电路面积的同时,执行更可靠的算术运算。
纠错单元16对来自图像识别神经网络处理单元17的数据(其高阶位)(经过纠错编码的数据)进行纠错解码的处理。纠错单元16将经过纠错解码的数据供应给数据缓冲存储器15。然后,数据缓冲存储器15经由三重总线21输出从纠错单元16供应的神经网络的算术运算的所得数据。
注意,要由图像识别神经网络处理单元17进行神经网络的算术运算的数据在此处已经被描述为由图像获取单元11获取的图像数据,但是,例如,诸如从外部DRAM 14读取的图像数据的其他数据可以经受神经网络的算术运算。
处理器20执行预定的算术处理和控制处理。然而,由处理器20处理的所有数据位都是冗余的。例如,处理器20控制算术处理装置10的每个单元的动作。
如上所述配置算术处理装置10。
(神经网络的算术运算示例)
接下来,将参考图9和图10描述由图像识别神经网络处理单元17(图8)执行算术运算的神经网络的配置示例。
(卷积神经网络的配置示例)
图9是示出卷积神经网络(CNN)的概念配置示例的示图。
图9中的卷积神经网络由三层构成,即,特征数量为三的第一层301、特征数量为二的第二层302和特征数量为一的第三层303。
在此处,图像I是例如光栅扫描的图像数据,并且指到卷积神经网络的输入数据。另外,特征平面F1-1至F1-3指示第一层301的特征平面。
注意,特征平面是指示在用预定特征提取滤波器(例如,卷积滤波器)扫描前一层的数据的同时通过执行算术运算而获得的处理结果的图像数据平面。由于该特征平面是光栅扫描图像数据的检测结果,因此检测结果由平面表示。
通过对图像I的二维卷积滤波器311-1至311-3的算术运算结果进行非线性变换,而生成特征平面F1-1至F1-3。注意,图像I中的图像区域A表示卷积滤波器311-1至311-3的卷积运算所必需的参考图像区域。
卷积滤波器311-1至311-3是系数彼此不同的卷积核。此外,卷积核的大小也因特征平面而异。
在卷积神经网络中,逐个像素地扫描多个滤波器核,同时重复乘积和运算,并且将最终的乘积和结果进行非线性变换,从而生成特征平面。例如,在计算第一层301中的特征平面F1-1的情况下,由于与前一层的组合数量是1,所以单卷积滤波器311-1用作滤波器核。
同时,在计算第二层302中的特征平面F2-1和F2-2的情况下,由于与前一层(其特征平面)的组合数量是三,所以分别对卷积滤波器312-1至312-3的算术运算结果和卷积滤波器312-4至312-6的算术运算结果执行累积相加。即,例如,通过累积相加卷积滤波器312-1至312-3的输出并最后执行非线性变换,来获得特征平面F2-1。
在此处,卷积滤波器312-1至312-6是具有各自不同滤波器系数的卷积核。另外,卷积滤波器312-1至312-3和卷积滤波器312-4至312-6具有不同的内核大小。
此外,用于累积相加和非线性变换处理的每个卷积滤波器312的基本配置类似于一般神经元的配置。在此处,例如,神经元由被配置为将输入数据(in_1至in_n)乘以加权系数(w_1至w_n)的乘法器、被配置为累积相加来自多个乘法器的算术运算结果的累积加法器、以及被配置为将来自累积加法器的算术运算结果非线性变换以输出的非线性变换单元构成。
即,卷积核的滤波器系数是指加权系数w_1至w_n。在特征平面与多个先前层(其特征平面)组合的情况下,与第二层302中的特征平面F2-1和F2-2以及第三层303中的特征平面F3中一样,多个卷积核的算术运算结果由累积加法器收集。即,组合的数量是指卷积核的大小×前一层中的特征平面的数量。
如上所述,在卷积神经网络中,结果基于图像平面保存,并且针对每个特征提取以分层的方式组合,由此在图像识别领域的许多任务中表现出优异的性能。
此外,在卷积神经网络中,如果输入数据和滤波器系数(加权系数)变得冗余(例如,三重),则可以实现数据的进一步可靠性。然而,在卷积滤波器中使用大量的算术单元,功耗、电路面积等的成本变得非常大。同时,如果将本技术应用于卷积神经网络,使得仅所有位中的更重要的特定位(例如,高阶位)被冗余化,则与所有位被冗余化的情况相比,可以在降低功耗的同时减小电路面积。
(卷积神经网络的配置示例)
图10是示出被配置为执行卷积神经网络(CNN)的算术运算的卷积算术运算单元的配置示例的示图。
图10中的卷积算术运算单元400包括脉动阵列400A和脉动阵列400B。在图10中,脉动阵列400A和脉动阵列400B通过将具有相同配置的多个运算单元相互连接来配置。各个算术单元从来自前一层的数据输入的输入侧到输出卷积算术运算结果数据的输出侧以三级排列。
脉动阵列400A具有四条算术线,每条算术线由三级的算术单元组成。图10中的示例示出了四条算术线中的两条算术线,即,由算术单元412-1至412-3组成的算术线和由算术单元423-1至423-3组成的算术线。
触发器电路411-1至411-3设置在由算术单元412-1至412-3组成的算术线上。另外,加权系数(W)输入到各个算术单元412-1至412-3。同样,触发器电路421-1至421-3设置在由算术单元423-1至423-3组成的算术线上。另外,加权系数(W)输入到各个算术单元423-1至423-3。注意,尽管未示出,但是剩余的两条算术线被配置为类似于图10中所示的算术线。
以这种方式,在四条算术线中的每一条中的每个算术周期,脉动阵列400A将每一级中的算术单元的算术运算结果顺序地传送到输出侧的算术单元,从而并行地执行卷积算术运算。然后,在脉动阵列400A中,由加法器401-1至401-4将从每条算术线获得的算术运算结果的数据相加,并作为卷积算术运算结果的数据而输出。
脉动阵列400B具有四条算术线,每条算术线由三级的算术单元组成。图10中的示例示出了四条算术线中的一条算术线,即,由算术单元422-1至422-3组成的算术线。
触发器电路421-1至421-3设置在由算术单元422-1至422-3组成的算术线上。另外,加权系数(W)输入到各个算术单元422-1至422-3。注意,尽管未示出,但是剩余的三条算术线的配置类似于图10所示的算术线。
以这种方式,在四条算术线中的每一条中的每个算术周期,脉动阵列400B将每一级中的算术单元的算术运算结果顺序地传送到输出侧的算术单元,从而并行地执行卷积算术运算。然后,在脉动阵列400B中,由加法器402-1至402-4将从每条算术线获得的算术运算结果的数据相加,并作为卷积算术运算结果的数据而输出。
来自脉动阵列400A的卷积运算结果的数据和来自脉动阵列400B的卷积运算结果的数据输入到比较器403。比较器403比较两条输入数据,并输出具有较大值的数据,作为最大卷积算术运算结果数据。
上面已经指示了卷积算术运算单元的配置示例。在该卷积算术运算单元中,由于构成脉动阵列的每条算术线的算术单元由诸如加法器和乘法器的算术单元构成,并且使用大量算术单元,所以如果输入数据和加权系数(W)的所有位被冗余化,则功耗、电路面积等的成本会变得非常大。同时,如果本技术也应用于这种类型的卷积算术运算单元,使得仅所有位中的更重要的特定位(例如,高阶位)被冗余化,则与所有位被冗余化的情况相比,可以在降低功耗的同时减小电路面积。
<4、变形>
(小数点形式)
在以上说明中,已将输入数据和加权系数的数据形式采取固定点形式的情况描述为图像识别神经网络处理单元17的神经网络的算术运算(图8)。然而,输入数据和加权系数的数据形式不限于固定点的形式,而是可以是浮点的形式。
在此处将参考图11描述固定点形式和浮点形式。图11的A示出了固定点形式的格式的示例。在图11的A中,“s”是表示带有一位的正号或负号的符号部分。例如,在“s”的值为“0”的情况下,表示符号为正,而在值为“1”的情况下,表示符号为负。“m”是数值部分,并且在小数点固定为例如最低有效位的情况下,它用作整数部分。
即,在固定点形式下,由于指定了小数点的位置,所以可以表示的值的范围比浮点形式窄,但是也有例如高速算术运算的一些优点。
同时,图11的B示出了浮点形式的格式的示例。在图11的B中,“s”是符号部分,表示带有一位的正号或负号。“e”是指数部分,表示浮点的幂部分。“m”是尾数部分,当写入指数部分时,用作包含有效字符的部分。例如,在A×10B的情况下,A是尾数部分。
即,在浮点形式中,通过定义尾数部分和指数部分,可以在比固定点形式更宽的范围内表示数值。注意,例如,由IEEE 754(用于浮点运算的IEEE标准)定义的浮点数可以用作浮点形式。
在本技术中,即使输入数据和加权系数的数据形式是浮点形式,与固定点形式的情况一样,更重要的位(例如,高阶位)被冗余(例如,三重)化,与所有位被冗余化的情况相比,可以在降低功耗的同时减小电路面积。
(多数表决运算的另一示例)
在上面的解释中,通过不同算术单元输入的三条数据(输入数据和加权系数)已被描述为要由多数表决器100进行多数表决运算的数据,但是其他数据可以用作要经受多数表决运算的数据。例如,虽然算术运算需要时间,但是可以重复相同的算术运算三次,并使用所得的三条数据执行多数表决运算。
然而,当如上所述重复算术运算时,希望通过改变放置数据的方式来通过不同的算术单元或路径执行算术运算。此外,在重复算术运算时,可以通过将诸如高阶位的重要位指定为要保存的位以用于随后执行的多数表决运算来抑制额外资源的消耗。
(用于查找故障)
上面的解释已经描述了可以通过使电路冗余并且由多数表决器100执行多数表决运算来掩蔽在单个电路中发生的故障。然而,多数表决运算可能会找到故障。即,在这种情况下,本技术的配置用作用于切换到备用电路的故障检测功能。
例如,虽然高阶位被三重化并且低阶位也双重化,但是当多数表决器100通过多数表决运算发现硬件错误时,执行切换到预先准备的备用算术单元。结果,备用算术单元可以继续正常动作。
另外,例如,在将本技术的上述配置应用于现场可编程门阵列(FPGA)的情况下,当多数表决器100通过多数表决运算发现硬件错误时,FPGA可以通过重新配置从而使用没有故障的逻辑单元来继续正常动作。
(应用于辐射工作环境)
在辐射工作环境中,在自主自动驱动装置具有例如基于通过使用神经网络的算术运算的图像识别处理而获得的信息来自主确定动作的功能的情况下,本技术的上述配置也可以应用于被配置为执行神经网络的这种算术运算的算术运算单元。即使在这种特殊情况下,也可以在降低功耗和减小电路面积的同时,执行神经网络的更可靠的算术运算。
(提高算术LSI的良率)
如上所述,可以通过多路复用电路(使电路冗余)并由多数表决器100执行多数表决运算来掩蔽在单个电路中发生的故障。如果从良率的角度理解这个事实,则例如,因为对于应用了本技术的上述配置的神经网络的算术运算,可以掩蔽在大规模集成(LSI)的单个电路中发生的故障,所以也可以说提高了良率。换言之,如果硬件错误是单一故障,则本技术的配置可以用作提高良率的措施。
(其他变形)
以上说明描述了算术处理装置10(图8)中的图像识别神经网络处理单元17使用由图像获取单元11获取的图像数据来执行神经网络的算术运算。然而,任何形式的图像数据,例如,从图像传感器输出的图像数据或具有预定文件格式的图像数据,可以指定为在神经网络的算术运算中使用的目标图像数据。此外,除了图像数据之外,任何形式的数据(例如,音频数据和文本数据)都可以指定为目标数据。
此外,在以上说明中,基本上,三重化的示例已经被描述为多路复用(冗余)的示例。然而,只要多路复用(冗余)是可能的,多路复用(冗余)就不限于三重化,而是可以采用例如通过提高多重性的其他多路复用(冗余)的模式。
<5、计算机的配置>
一系列上述处理也可以由硬件执行,并且也可以由软件执行。在一系列处理由软件执行的情况下,构成软件的程序安装在计算机中。在本文中,计算机包括内置于专用硬件中的计算机、当安装有各种程序时能够执行各种功能的计算机(例如,通用个人计算机)等。
图12是示出使用程序执行上述一系列处理的计算机的硬件配置示例的方框图。
在计算机1000中,中央处理单元(CPU)1001、只读存储器(ROM)1002和随机存取存储器(RAM)1003通过总线1004互连。另外,输入/输出接口1005连接到总线1004。输入单元1006、输出单元1007、记录单元1008、通信单元1009和驱动器1010连接到输入/输出接口1005。
输入单元1006包括键盘、鼠标、麦克风等。输出单元1007包括显示器、扬声器等。记录单元1008包括硬盘、非易失性存储器等。通信单元1009包括网络接口等。驱动器1010驱动可移动记录介质1011,例如,磁盘、光盘、磁光盘或半导体存储器。
在如上所述配置的计算机1000中,例如,以CPU 1001经由输入/输出接口1005和总线1004将存储在记录单元1008中的程序加载到RAM 1003以执行的方式来执行上述一系列处理。
例如,由计算机1000(CPU 1001)执行的程序可以通过记录在用作包装介质等的可移动记录介质1011中来提供。此外,可以经由有线或无线传输介质(例如,局域网、互联网或数字卫星广播)来提供该程序。
在计算机1000中,可以通过将可移动记录介质1011安装在驱动器1010中,而将程序经由输入/输出接口1005安装到记录单元1008。此外,当被通信单元1009接收时,该程序也可以经由有线或无线传输介质安装到记录单元1008。作为替代方式,该程序可以预先安装到ROM 1002或记录单元1008。
注意,由计算机1000执行的程序可以是根据本说明书中描述的顺序沿着时间序列执行处理的程序,或者可替代地,可以是并行或者在必要的定时(例如,当调用时)执行处理的程序。
此外,对于程序,可以采用单个计算机用于其处理,或者可替代地,可以采用多个计算机用于其分布式处理。此外,该程序可以传送到远程计算机并执行。
此外,在本说明书中,系统代表多个组成构件(例如,装置和模块(部件))的集合,并且是否所有组成构件都位于同一个机柜内并不认为是重要的。因此,容纳在独立机柜中以便经由网络彼此连接的多个装置和多个模块容纳在一个机柜中的一个装置都被视为系统。
注意,根据本技术的实施方式不限于前述实施方式,并且在不脱离本技术的范围的情况下,可以进行各种修改。例如,本技术可以采用云计算配置,在云计算配置中,一个功能被划分并分配给多个装置,以便经由网络在其间协调处理。
此外,也可以如下所述配置本技术。
(1)一种算术处理装置,包括执行神经网络的算术运算的算术处理单元,其中,
在神经网络的算术运算中,用于算术运算的加权系数和输入数据的特定位部分被冗余化,使得特定位部分的冗余变得大于除了该特定位部分之外的剩余位的冗余。
(2)根据(1)所述的算术处理装置,其中,
在神经网络的算术运算中,仅加权系数和输入数据的位中的特定位部分被冗余化。
(3)根据(2)所述的算术处理装置,其中,
在神经网络的算术运算中,仅加权系数和输入数据的位中的高阶位被冗余化。
(4)根据(1)至(3)中任一项所述的算术处理装置,其中,
所述加权系数和输入数据的数据形式是固固定点形式。
(5)根据(1)至(3)中任一项所述的算术处理装置,其中,
所述加权系数和输入数据的数据形式是浮点形式。
(6)根据(1)至(5)中任一项所述的算术处理装置,还包括纠错单元,该纠错单元对加权系数和输入数据的特定位部分执行纠错码的编码或解码。
(7)根据(6)所述的算术处理装置,还包括:
第一存储单元,存储要由算术处理单元处理的数据;以及
第二存储单元,存储加权系数,其中,
纠错单元包括:
第一纠错单元,设置在算术处理单元和第一存储单元之间;以及
第二纠错单元,设置在算术处理单元和第二存储单元之间。
(8)根据(6)或(7)所述的算术处理装置,其中,
纠错单元被多路复用。
(9)根据(1)至(8)中任一项所述的算术处理装置,其中,
算术处理单元包括:
算术单元,执行加权系数和输入数据的乘积和运算;以及
多数表决器,对从算术单元获得的数据执行多数表决运算,并输出作为多数表决运算的结果而获得的数据。
(10)根据(9)所述的算术处理装置,其中,
算术单元和多数表决器被多路复用。
(11)一种用于算术处理装置的算术处理方法,该算术处理装置包括执行神经网络的算术运算的算术处理单元,
该算术处理方法包括在神经网络的算术运算中由算术处理单元处理数据的步骤,该数据是以下数据:在该数据中,用于算术运算的加权系数和输入数据的特定位部分被冗余化,使得特定位部分的冗余变得大于除了该特定位部分之外的剩余位的冗余。
附图标记列表
10 算术处理装置
11 图像获取单元
12 纠错单元
13 存储器控制器
14 外部DRAM
15 数据缓冲存储器
16 纠错单元
17 图像识别神经网络处理单元
18 系数存储器
19 纠错单元
20 处理器
21 三重总线
100、100A、100A-1至100A-3、100B、100B-1至100B-3 多数表决器
111 乘法器
112 乘法器
113 乘法器
114 加法器
115 乘法器
116 加法器
121 逻辑运算符
131 乘法器
132 加法器
133 乘法器
134 加法器
141 逻辑运算符
142 逻辑运算符
151 转换器
152 加法器
153 转换器
154 加法器
155 转换器
156 加法器
1000 计算机
1001 CPU。

Claims (9)

1.一种算术处理装置,用于掩蔽电路中发生的故障,所述算术处理装置包括执行神经网络的算术运算的算术处理单元,其中,
在所述神经网络的算术运算中,仅加权系数和输入数据的位中的高阶位被冗余化,使得所述高阶位的冗余变得大于除了所述高阶位之外的剩余位的冗余,
其中,所述高阶位被冗余化使得所述高阶位被输入多次。
2.根据权利要求1所述的算术处理装置,其中,
所述加权系数和所述输入数据的数据形式是固定点形式。
3.根据权利要求1所述的算术处理装置,其中,
所述加权系数和输入数据的数据形式是浮点形式。
4.根据权利要求1所述的算术处理装置,还包括纠错单元,所述纠错单元对所述加权系数和所述输入数据的所述高阶位执行纠错码的编码或解码。
5.根据权利要求4所述的算术处理装置,还包括:
第一存储单元,存储要由所述算术处理单元处理的数据;以及
第二存储单元,存储所述加权系数,其中,
所述纠错单元包括:
第一纠错单元,设置在所述算术处理单元和所述第一存储单元之间;以及
第二纠错单元,设置在所述算术处理单元和所述第二存储单元之间。
6.根据权利要求4所述的算术处理装置,其中,
所述纠错单元输出的数据被多路复用。
7.根据权利要求1所述的算术处理装置,其中,
所述算术处理单元包括:
算术单元,执行所述加权系数和所述输入数据的乘积和运算;以及
多数表决器,对从所述算术单元获得的数据执行多数表决运算,并输出作为所述多数表决运算的结果而获得的数据。
8.根据权利要求7所述的算术处理装置,其中,
所述算术单元和所述多数表决器均被设置为多个。
9.一种用于算术处理装置的算术处理方法,所述算术处理装置用于掩蔽电路中发生的故障,所述算术处理装置包括执行神经网络的算术运算的算术处理单元,
所述算术处理方法包括在所述神经网络的算术运算中由所述算术处理单元处理数据的步骤,所述数据是以下数据:在所述数据中,用于所述算术运算的加权系数和输入数据的位中的仅高阶位被冗余化,使得所述高阶位的冗余变得大于除了所述高阶位之外的剩余位的冗余,
其中,所述高阶位被冗余化使得所述高阶位被输入多次。
CN201780024236.0A 2016-05-24 2017-05-10 计算处理装置和计算处理方法 Active CN109074516B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016-103002 2016-05-24
JP2016103002A JP2017211735A (ja) 2016-05-24 2016-05-24 演算処理装置、及び、演算処理方法
PCT/JP2017/017616 WO2017203975A1 (ja) 2016-05-24 2017-05-10 演算処理装置、及び、演算処理方法

Publications (2)

Publication Number Publication Date
CN109074516A CN109074516A (zh) 2018-12-21
CN109074516B true CN109074516B (zh) 2023-09-19

Family

ID=60412185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780024236.0A Active CN109074516B (zh) 2016-05-24 2017-05-10 计算处理装置和计算处理方法

Country Status (4)

Country Link
US (1) US10817773B2 (zh)
JP (1) JP2017211735A (zh)
CN (1) CN109074516B (zh)
WO (1) WO2017203975A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073118A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US11055613B2 (en) * 2016-12-28 2021-07-06 Intel Corporation Method and apparatus for a binary neural network mapping scheme utilizing a gate array architecture
US11599795B2 (en) * 2017-11-08 2023-03-07 International Business Machines Corporation Reducing the cost of n modular redundancy for neural networks
KR102463532B1 (ko) * 2018-01-16 2022-11-08 한국전자통신연구원 신경망 컴퓨팅 장치 및 그것의 동작 방법
JP6977864B2 (ja) 2018-03-02 2021-12-08 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
KR102590505B1 (ko) * 2018-04-09 2023-10-19 한국전자통신연구원 방사선원을 포함하는 스파이크 뉴럴 네트워크 회로
JP2020009317A (ja) * 2018-07-11 2020-01-16 ソニー株式会社 信号処理回路、信号処理装置及び信号処理方法
WO2020188755A1 (ja) * 2019-03-19 2020-09-24 Tdk株式会社 積和演算器、論理演算デバイス、ニューロモーフィックデバイス及び積和演算方法
DE102019209293A1 (de) 2019-06-26 2020-12-31 Infineon Technologies Ag Erzeugung eines Ausgangssignalwerts aus Sensorsignalwerten von zumindest drei redundanten Sensoren
KR20210100277A (ko) 2020-02-06 2021-08-17 삼성전자주식회사 전력 최적화 스케쥴러의 동작 방법 및 전력 최적화 스케쥴러를 포함하는 컴퓨팅 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101477172A (zh) * 2009-02-18 2009-07-08 湖南大学 一种基于神经网络的模拟电路故障诊断方法
CN101819253A (zh) * 2010-04-20 2010-09-01 湖南大学 一种基于概率神经网络的容差电路故障诊断方法
CN103778467A (zh) * 2014-01-16 2014-05-07 天津大学 一种选择电力系统暂态稳定评估输入特征量的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706400A (en) 1995-03-08 1998-01-06 Nec Research Institute, Inc. Fault-tolerant implementation of finite-state automata in recurrent neural networks
JP3568181B2 (ja) * 1997-06-23 2004-09-22 株式会社東芝 ニューラルネット分析装置、記憶媒体
JP6314628B2 (ja) 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
JP2019057249A (ja) * 2017-09-22 2019-04-11 富士通株式会社 演算処理装置および演算処理方法
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101477172A (zh) * 2009-02-18 2009-07-08 湖南大学 一种基于神经网络的模拟电路故障诊断方法
CN101819253A (zh) * 2010-04-20 2010-09-01 湖南大学 一种基于概率神经网络的容差电路故障诊断方法
CN103778467A (zh) * 2014-01-16 2014-05-07 天津大学 一种选择电力系统暂态稳定评估输入特征量的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《A Learning Algorithm for Fault-Tolerant Neural Networks using Maximum-Error Prediction》;Teruyasu TSUZUKI;《IEICE Technical Report》;19980608;全文 *

Also Published As

Publication number Publication date
JP2017211735A (ja) 2017-11-30
US20190130245A1 (en) 2019-05-02
US10817773B2 (en) 2020-10-27
WO2017203975A1 (ja) 2017-11-30
CN109074516A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
CN109074516B (zh) 计算处理装置和计算处理方法
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN112860475B (zh) 基于rs纠删码的校验块恢复方法、装置、系统及介质
US20210349692A1 (en) Multiplier and multiplication method
WO2018113597A1 (zh) 矩阵乘加运算装置、神经网络运算装置和方法
Cai et al. Rapid robust principal component analysis: CUR accelerated inexact low rank estimation
JP4290202B2 (ja) ブース乗算の装置および方法
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
Chervyakov et al. The architecture of a fault-tolerant modular neurocomputer based on modular number projections
CN111381808A (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
Wong et al. Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic
Kuchukov et al. The application of modular arithmetic for matrix calculations
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN210109863U (zh) 乘法器、装置、神经网络芯片及电子设备
CN113033799B (zh) 数据处理器、方法、装置及芯片
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN209879493U (zh) 乘法器
US20170052846A1 (en) Processor-in-memory-and-storage architecture
CN110378477B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258542A (zh) 乘法器、数据处理方法、芯片及电子设备
CN110378478B (zh) 乘法器、数据处理方法、芯片及电子设备
Kao et al. An efficient fault-tolerant Winograd convolution for convolutional neural networks

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