CN105512724A - 加法器装置、数据累加方法及数据处理装置 - Google Patents

加法器装置、数据累加方法及数据处理装置 Download PDF

Info

Publication number
CN105512724A
CN105512724A CN201510863726.2A CN201510863726A CN105512724A CN 105512724 A CN105512724 A CN 105512724A CN 201510863726 A CN201510863726 A CN 201510863726A CN 105512724 A CN105512724 A CN 105512724A
Authority
CN
China
Prior art keywords
adder
module
data
output data
input
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
CN201510863726.2A
Other languages
English (en)
Other versions
CN105512724B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201510863726.2A priority Critical patent/CN105512724B/zh
Publication of CN105512724A publication Critical patent/CN105512724A/zh
Priority to PCT/CN2016/086110 priority patent/WO2017092284A1/zh
Priority to US15/773,974 priority patent/US10416964B2/en
Application granted granted Critical
Publication of CN105512724B publication Critical patent/CN105512724B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/50Adding; Subtracting
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开一种加法器装置、数据累加方法及数据处理装置,所述加法器装置包括:第一加法器模块,具有由多级加法器阵列构成的加法树单元和第一控制单元,加法树单元基于第一控制单元的控制信号采用逐级累加的方式累加数据;第二加法器模块,包括两输入加减操作单元和第二控制单元,对输入数据进行加法或减法运算;移位操作模块,用于对第一加法器模块的输出数据进行左移位操作;与操作模块,用于对移位操作模块的输出数据和第二加法器模块的输出数据进行与操作;控制器模块,用于控制第一加法器模块及第二加法器模块的数据输入,控制移位操作模块的移位操作,以及控制第一控制单元及第二控制单元的控制信号的发射。由此,实现数据快速累加。

Description

加法器装置、数据累加方法及数据处理装置
技术领域
本发明属于数据数据处理系统的领域,涉及加法器装置的数据处理,特别涉及一种加法器装置、数据累加方法及包括该加法器装置的数据处理装置。
背景技术
近年来,基于M-P神经元模型的神经网络算法广泛用于产品推荐、图像识别等领域。M-P神经元模型是一种加型神经元模型,神经元输出值等于神经元输入的加权和值再累加偏置值后经过非线性变换的结果。即,神经网络算法中需要大量的累加运算以及加法运算。同时,在神经网络算大的训练过程中,不仅包含大量累加运算,还包含减法运算。
采用传统通用处理处理器运算神经网络算法或者是对一个神经网络训练时,每次只能对两个数据相加,这种方法效率较低。而且若是采用定点数据进行运算时还需处理加法溢出的情况。
发明内容
本发明的目的在于,解决上述传统处理器在运行神经网络算法或训练神经网络时存在的缺陷,提供一种加法器装置、数据累加方法及包括该加法器装置的数据处理装置,能够进行快速累加以及对批量数据向量进行加/减操作。从而使程序员可快速实现神经网络算法中的累加运算以及加/减法运算,同时能够同一时钟周期内实现加法溢出判断以及溢出处理从而既不影响神经网络算法执行速度又提高神经网络算法的预测结果的正确率。
本发明提供的加法器装置,用于对输入数据流进行快速累加,包括:
第一加法器模块,包括至少一个由多级加法器阵列构成的加法树单元和第一控制单元,所述多级加法器阵列的每一级加法器阵列包含多个加法器构成的加法器组,每一所述加法器组对输入数据进行累加而构成一组部分和数据并作为下一级加法器阵列的输入数据,所述加法树单元基于来自所述第一控制单元的控制信号采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为所述第一加法器模块的输出数据;
第二加法器模块,包括两输入加减操作单元和第二控制单元,所述两输入加减操作单元基于第二控制单元的控制信号选择性地对输入数据进行加法或减法运算,并将加减运算结果作为所述第二加法器模块的输出数据;
连接于所述第一加法器模块的移位操作模块,用于对所述第一加法器模块的输出数据进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据;
与操作模块,连接于所述移位操作模块和所述第二加法器模块,用于对所述移位操作模块的输出数据和所述第二加法器模块的输出数据进行与操作,并将所述与操作结果作为所述加法器装置的输出数据;
控制器模块,用于控制所述第一加法器模块及所述第二加法器模块的数据输入,控制所述移位操作模块的移位操作,以及控制所述第一控制单元及所述第二控制单元的控制信号的发射。
本发明的加法器装置,其中,在所述加法树单元中,在所述多级加法器阵列中的位于中间级位置的加法器阵列的输出端设置一寄存器,用于对来自所述位于中间级位置的加法器阵列的输出端的输出数据进行缓存。
本发明的加法器装置,其中,所述第一加法器模块还具有多个用于寄存所述加法器组算出的部分和数据的寄存器,根据所述第一控制单元的控制信号确定所述部分和数据寄存在哪一个寄存器中,并确定从所述多个寄存器中选择一个部分和数据与所述加法树单元的所述累加和数据相加并作为所述第一加法器模块的输出数据。
本发明的加法器装置,其中,还包括溢出检测及溢出处理的电路,用于检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;
其中,所述向上溢出是指,对多个定点正数进行加法运算时,运算结果超出了该定点数格式的正数表达范围;所述向下溢出是指,对多个定点复数进行加法运算时,运算结果超出了该定点数格式的复数表达范围。
本发明的加法器装置,其中,所述控制器模块进一步包括:
操作码控制单元,用于控制所述第一加法器模块及所述第二加法器模块的数据输入;
设备号控制单元,用于确定所述移位操作模块的移位值;
累加源操作数序号控制单元,用于确定从多个部分和寄存器选择一个与加法树输出结果相加;
使能信号控制单元,用于使所述加法器装置在当前有效;
标志信号控制单元,用于将所述第一加法器模块的输出数据作为所述加法器装置的输出数据。
另外,本发明还提供一种使用上述加法器装置对输出数据流进行快速累加的方法,包括以下步骤:
步骤1,控制器模块向第一加法器模块及第二加法器模块发送控制信号,确定所述第一加法器模块及所述第二加法器模块的输入数据的取值、控制移位操作模块的移位操作,以及控制第一控制单元及第二控制单元的控制信号的发射;
步骤2,所述第一加法器模块及所述第二加法器模块分别接收到来自所述控制器模块的控制信号后,基于该控制信号,所述第一加法器模块的加法树单元采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为该第一加法器模块的输出数据,其中所述第一加法器模块由多级加法器阵列构成;所述第二加法器模块选择性地对输入数据进行加法或减法运算,并将加减运算结果作为该第二加法器模块的输出数据;
步骤3,移位操作模块基于所述控制信号对所述第一加法器模块的输出数据进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据;
步骤4,与操作模块对所述移位操作模块的输出数据和所述第二加法器模块的输出数据进行与操作,并将所述与操作结果作为所述加法器装置的输出数据。
本发明的累加方法,其中,所述步骤2还包括,在所述加法树单元中,使用设置于所述多级加法器阵列中的位于中间级位置的加法器阵列的输出端的寄存器来对来自所述位于中间级位置的加法器阵列的输出端的输出数据进行缓存的步骤。
本发明的累加方法,其中,所述步骤2还包括如下步骤,所述第一加法器模块的用于寄存部分和数据的寄存器,根据所述第一控制单元的控制信号确定所述部分和数据寄存在哪一个寄存器中,并确定从所述多个寄存器中选择一个部分和数据与所述加法树单元的所述累加和数据相加并作为所述第一加法器模块的输出数据。
本发明的累加方法,其中,还包括如下步骤,使用溢出检测及溢出处理的电路检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;其中,所述向上溢出是指,对多个定点正数进行加法运算时,运算结果超出了该定点数格式的正数表达范围;所述向下溢出是指,对多个定点复数进行加法运算时,运算结果超出了该定点数格式的复数表达范围。
另外,本发明还提供一种包括上述加法器装置的数据处理装置。
本发明至少包括以下效果或收益:
本装置及方法可快速实现神经网络算法中的累加运算以及加/减法运算;支持不同精度的定点数据的加/减法运算,提高运算结果的精度;同时能够同一时钟周期内实现加法溢出判断以及溢出处理从而既不影响神经网络算法执行速度又提高神经网络算法的预测结果的正确率。
附图说明
图1示出了本发明的加法器装置的概要构成图。
图2示出了本发明的一实施方式的加法器装置的结构图。
图3示出了本发明的一实施方式的第一加法器模块的结构图。
图4示出了本发明的一实施方式的第二加法器模块的结构图。
图5示出了本发明的一实施方式的加法树单元的结构图。
图6示出了本发明的累加方法的流程图。
图7示出本发明的实施方式的数据处理装置的结构图。
附图标记说明
100、200...加法器装置;110、210...第一加法器模块;120、220...第二加法器模块;130...移位操作模块;140...与操作模块;150...控制器模块;1...加法器装置200的时钟信号输入端口(clock);2...加法器装置200的复位信号输入端口(reset);3...操作码控制信号端口(adds_op);4...设备号控制信号端口(tile_id);5...累加源操作数序号控制信号端口(addend_id);6...标志信号控制信号端口(flag);7...使能信号控制信号端口(pipeline_en);8...加法器装置200的输出端口(results);9...加法器装置200的输入数据a(inputa);10...加法器装置200的输入数据b(inputb);11...第一加法器模块210的时钟信号输入端口(clock);12...第一加法器模块210的复位信号输入端口(reset);13...第一加法器模块210的输入数据端口(partial_sum);14...第一加法器模块210的输出数据端口(results_0);15...复位标志信号端口(reset_flag);16...被累加数序号端口(addend_id_0);17...(累加结果序号端口result_id_0);18...使能信号端口(en_0);19...第二加法器模块220的输入数据端口a(inputa_1);20...第二加法器模块220的输入数据端口b(inputb_1);21...加减判断标志信号端口(sub_flag);22...第二加法器模块220的输出数据端口results_1);300...一级加法树流水;400...二级加法树流水;500...加法器。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的加法器装置、数据累加方法及包括该加法器装置的数据处理装置进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明的加法器装置100,支持不同精度的定点数据的加/减法运算,包括:第一加法器模块110,包括一个由多级加法器阵列构成的加法树单元和第一控制单元,每一级所述加法器阵列包含多个加法器构成的加法器组,每一所述加法器组对输入数据进行累加而构成一组部分和数据并作为下一级所述加法器阵列的输入数据,所述加法树单元基于来自所述第一控制单元的控制信号采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为所述第一加法器模块的输出数据115;第二加法器模块120,包括两输入加减操作单元和第二控制单元,所述两输入加减操作单元基于第二控制单元的控制信号选择性地对输入数据113、114进行加法或减法运算,并将加减运算结果作为所述第二加法器模块的输出数据116;连接于所述第一加法器模块的移位操作模块130,用于对所述第一加法器模块的输出数据115进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据117;与操作模块140,连接于所述移位操作模块和所述第二加法器模块,用于对所述移位操作模块的输出数据117和所述第二加法器模块的输出数据116进行与操作,并将所述与操作结果作为所述加法器装置的输出数据118;控制器模块150,用于控制所述第一加法器模块及所述第二加法器模块的数据输入112、113、114(即能够选择性地将输入数据流111分配为第一加法器模块110及第二加法器模块120的数据输入112、113、114而分别输入到第一加法器模块110及第二加法器模块120),控制所述移位操作模块的移位操作,以及控制所述第一控制单元及所述第二控制单元的控制信号的发射。
图2示出本发明的一实施方式的加法器装置200的结构图。该加法器装置1包含若干个输入与1个输出。该加法器模块由图3中的子模块adds_0(相当于第一加法器模块)与图4中的子模块adds_1(相当于第二加法器模块)组成,两个子模块相互协调共同完成输入数据的加法操作。所述的加法器装置主要输入输出接口设有,时钟信号输入端口1(clock)、复位信号输入端口2(reset)、主要数据输入端口9(inputa)和10(inputb),主要数据输出端口8(results),控制信号端口主要包括:操作码3(adds_op)、设备号4(tile_id)、累加源操作数序号5(addend_id)、标志位6(flag)、使能信号7(pipeline_en),上述控制信号端口主要对若干组输入数据进行处理的控制,并输出对应的处理结果,这些控制信号来自上述的控制器模块。所述的数据输入端口9(inputa)和10(inputb),它们由若干个若干位的数据组成,得到若干位的输出数据8(results)。所述的数据输入端口9(inputa)和10(inputb),输入数据9(inputa)为向量化的输入数据数据,输入数据10(inputb)则根据操作码设定为外界输入的向量化输入数据或者选择上一周期寄存上一周期向量化数据作为输入。所述的加法器装置控制信号3(adds_op)的作用为:选择向量化的部分和值13(partial_sum)、19(inputa_1)、20(inputb_1)的数据输入源,控制信号4(tile_id)的作用为:确定模块210(adds_0)输出结果14(results_0)的移位值以便和其它设备协同处理,控制信号5(addend_id)的作用为:确定从多个部分和寄存器选择一个与加法树输出结果相加,控制信号6(flag)的作用为:将adds_0模块210的输出结果result_0作为整个adds模块(即加法器装置220)的结果8(result),控制信号7(pipeline_en)的作用为,使整个adds模块在当前有效。
此外,应当说明的是,本发明的加法器装置的若干级加法树都是由相同的加法矩阵构成,每个加法矩阵为一个全加器。加法矩阵的输入为两队输入为若干位宽的数据,输出为一组若干位宽的数据。且本发明的加法器芯片能够基于任一普通的加法器芯片进行改进,例如市面上较为常见的74、74HC、74LS系列加法器芯片。
图3示出了本发明的一实施方式的第一加法器模块的结构图。子模块adds_0(相当于第一加法器模块)含有若干输入与1个输出,输入接口主要设有:时钟信号输入端口11(clock)、复位信号输入端口12(reset)、以及控制信号端口,其中控制信号端口包括输入数据端口13(partial_sum)、输出数据端口14(results_0),控制信号15(reset_flag)、被累加数序号16(addend_id_0)、累加结果序号17(result_id_0)、使能信号18(en_0),这些控制信号来自上述的第一控制单元。其中,输入数据13(partial_sum)由若干个若干位的数据组成,表示若干个若干位宽数据的部分和,来自加法器输入信号9(inputa)。15(reset_flag)、18(en_0)、16(addend_id_0)、17(result_id_0)为子模块adds_0的控制信号,其中18(en_0)为使能信号,16(addend_id_0)用于选择加法数结果累计的寄存器索引,17(result_id_0)为结果寄存器索引。
第一加法器模块的主要结构为一个若干级加法器500组成的加法树,如图5所示,每一级中每一加法阵列将两组输入部分和值数据相加构成一组部分和数据,加法树采用逐级累加的方式最终将包含多个部分和的输入数据(partial_sum)累加为一个累加和数据输出。对于加法树的构成,现以5级加法器矩阵进行说明,如:第一级加法器可由16个加法阵列构成,能对32个若干位宽的输入数据进行加法操作,输出16个若干位宽的数据。第二级加法树由8个加法整列构成,对第一级加法树的16个若干位数据进行加法操作输出8个若干位宽的数据。第三级加法树由4个加法阵列构成,对第二级加法树的8个若干位宽数据进行加法操作,输出4个若干位宽数据,并将4个若干位宽的数据缓存在一个寄存器(reg)中。第四级加法树由2个加法整列,对寄存器(reg)中若干个若干位宽数据进行加法操作,输出若干个若干位宽数据,第五级加法树由一个加法阵列构成,对第四级加法树的2个若干位宽数据进行加法操作,输出1位若干位宽数据。另外,在第若干级加法器位置设有一寄存器(reg)用以缓存输出数据,在此位置切若干级流水,减小了加法树的路径延迟。采用上述方案能够很好的解决现有技术中运算频率不高以及运算吞吐量不大等问题。第一加法器模块中设有若干个用于寄存部分和结果的寄存器,如上所述,18(en_0)为使能信号,根据使能信号18(en_0)与控制信号17(result_id_0)确定运算结果14(result_0)寄存在哪一个寄存器中,18(en_0)无效则不能将运算结果寄存。控制信号15(reset_flag)与16(addend_id_0)用于确定从若干个寄存中选择一个和加法树的结果相加并作为模块(adds_0)的结果输出。
如图4所示,第二加法器模块主要含有两组向量化数据输入与1个向量化数据输出组成,其主要信号为若干位宽输入数据19(inputa_1)、20(inputb_1),控制信号21(sub_flag),若干位宽输出数据22(results_1)。控制信号21(sub_flag)来自上述的第二控制单元,用于控制输入数据进行何种操作,即根据控制信号21(sub_flag)选择需要进行的是19(inputa_1)和20(inputb_1)进行向量加法或者减法。例如,若控制信号21(sub_flag)有效(例如值为1),则模块输入19(inputa_1)减去模块输出20(inputb_1),并作为子模块adds_1的输出结果22(results_1)。反之,将模块输入19(inputa_1)加上模块输入20(inputb_1),并作为子模块adds_1的输出结果22(rsults_1)。
以下介绍加法器模块的具体实施过程。
在时钟信号1(clock)、复位信号2(reset)与3(adds_op)、4(tile_id)、5(addend_id)、6(flag)、7(pipeline_en)等控制信号的协同下,加法器模块进行如下的操作:由控制信号3(adds_op)确定子模块adds_0与子模块adds_1输入信号的取值。
对于第一加法器模块adds_0控制流程,当控制信号3(adds_op)取1或2,信号13(partial_sum)的值取自信号9(adds_inputa),其他情况则13(partial_sum)为0。当信号3(adds_op)取2时则信号6(flag)为1,其它情况为0。当信号3(adds_op)取1或2时且信号7(pipeline_en)有效,信号18(en_0)取1否则取0。
对于第一加法器模块(adds_0)控制流程,第一加法器模块(adds_0)主要由若干级加法树构成,考虑到加法树路径太长与造成的时延和加法器工作频率的要求。将前若干级加法树构成一级流水,并将加法树计算的若干位宽数据进行缓存,将缓存结果寄存在一个若干位宽寄存器,下一级流水由加法数的后若干加法阵列构成,对若干位宽寄存器里面的数据继续进行处理,最后的到一个若干位宽的数据输出。
对于第一加法器模块(adds_0)控制流程,在模块内部设有若干个若干位宽寄存器,现以3个寄存器的情况为例进行说明:reg0、reg1、reg2,这三个寄存器主要用于缓存部分和结果,对于部分和的缓存作如下的处理操作。输入信号18(en_0)有效且17(result_id_0)为0时,部分和赋值给reg0,输入信号18(en_0)有效且17(result_id_0)为1时,部分和赋值给reg1。输入信号18(en_0)有效且17(result_id_0)为2时,部分和赋值给reg2。对于结果的输出,adds_0模块根据信号16(addend_id_0),16(addend_id_0)用于选择从三个若干位宽数据的寄存器选择一个数与加法树若干位宽输出结果相加。若信号15(reset_flag)无效,则不能选择3个若干位宽的寄存器中任一个与加法树输出的若干位宽数据相加。
对于第二加法器模块(adds_1)控制流程,当控制信号3(adds_op)取3或4或5或6时,信号19(inputa_1)取值来自信号9(inputa),其它情况下信号19(inputa_1)取值为0。当信号3(adds_op)的取值3或4或6时,信号20(inputb_1)取值来自信号10(inputb)其它情况下信号20(inputb_1)为0。
根据输入数据与控制信号,通过加法器子模块adds_0得到一个若干位宽输出数据14(result_0)。子模块adds_1输出若干位宽数据22(results_1)。将子模块adds_0的若干位宽数据14(result_0)进行左移移位操作使其具有与子模块(adds_1)的输出数据相同的位宽度后,并与子模块adds_1的若干位宽输出数据22(results_1)进行与操作,最后得到若干位宽输出数据8(results)。
另外,本发明的加法器装置还包括溢出检测及溢出处理的电路,用于检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;其中,所述向上溢出是指,向上溢出:两个定点正数(符号位为“0”)相加,结果超出了此定点数格式的正数表达范围,因而发生了对符号位的进位,使得结果定点数的符号位变为“1”。所述向下溢出是指,两个定点负数(符号位为“1”)相加,结果超出了此定点数据个数的负数表达范围,因而发生了符号位的翻转,结果定点数的符号位变为“0”。通过采用这种溢出处理模式能使得神经网络算法的训练更快收敛以及获得更好的预测结果。
此外,本发明还提供一种使用上述加法器装置对输出数据流进行快速累加的方法,其流程图如图6所示,包括以下步骤:
步骤1,控制器模块向第一加法器模块及第二加法器模块发送控制信号,确定所述第一加法器模块及所述第二加法器模块的输入数据的取值、控制移位操作模块的移位操作,以及控制第一控制单元及第二控制单元的控制信号的发射;
步骤2,所述第一加法器模块及所述第二加法器模块分别接收到来自所述控制器模块的控制信号后,基于该控制信号,所述第一加法器模块的加法树单元采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为该第一加法器模块的输出数据,其中所述第一加法器模块由多级加法器阵列构成;所述第二加法器模块选择性地对输入数据进行加法或减法运算,并将加减运算结果作为该第二加法器模块的输出数据;
步骤3,移位操作模块基于所述控制信号对所述第一加法器模块的输出数据进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据;
步骤4,与操作模块对所述移位操作模块的输出数据和所述第二加法器模块的输出数据进行与操作,并将所述与操作结果作为所述加法器装置的输出数据。
本发明的累加方法,其中,所述步骤2还包括,
在所述加法树单元中,使用设置于所述多级加法器阵列中的位于中间级位置的加法器阵列的输出端的寄存器来对来自所述位于中间级位置的加法器阵列的输出端的输出数据进行缓存的步骤。
本发明的累加方法,其中,所述步骤2还包括如下步骤,
所述第一加法器模块的用于寄存部分和数据的寄存器,根据所述第一控制单元的控制信号确定所述部分和数据寄存在哪一个寄存器中,并确定从所述多个寄存器中选择一个部分和数据作为所述第一加法器模块的输出数据。
本发明的累加方法,其中,还包括如下步骤,
使用溢出检测及溢出处理的电路检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;
其中,所述向上溢出是指,对多个定点正数进行加法运算时,运算结果超出了该定点数格式的正数表达范围;
所述向下溢出是指,对多个定点复数进行加法运算时,运算结果超出了该定点数格式的复数表达范围。
另外,如图7所示,本发明还提供一种包括上述加法器装置100的数据处理装置600。该数据处理装置600可以为例如信号处理器、信号处理芯片、图形处理器等,应用于图形处理、多媒体播放、网络交易处理、模式识别等领域。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上对本发明所提供的一种加法器装置及使用该加法器装置进行累加的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限值。

Claims (10)

1.一种加法器装置,用于对输入数据流进行快速累加,其特征在于,包括:
第一加法器模块,包括至少一个由多级加法器阵列构成的加法树单元和第一控制单元,所述多级加法器阵列的每一级加法器阵列包含多个加法器构成的加法器组,每一所述加法器组对输入数据进行累加而构成一组部分和数据并作为下一级加法器阵列的输入数据,所述加法树单元基于来自所述第一控制单元的控制信号采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为所述第一加法器模块的输出数据;
第二加法器模块,包括两输入加减操作单元和第二控制单元,所述两输入加减操作单元基于第二控制单元的控制信号选择性地对输入数据进行加法或减法运算,并将加减运算结果作为所述第二加法器模块的输出数据;
连接于所述第一加法器模块的移位操作模块,用于对所述第一加法器模块的输出数据进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据;
与操作模块,连接于所述移位操作模块和所述第二加法器模块,用于对所述移位操作模块的输出数据和所述第二加法器模块的输出数据进行与操作,并将所述与操作结果作为所述加法器装置的输出数据;
控制器模块,用于控制所述第一加法器模块及所述第二加法器模块的数据输入,控制所述移位操作模块的移位操作,以及控制所述第一控制单元及所述第二控制单元的控制信号的发射。
2.根据权利要求1所述的加法器装置,其特征在于,
在所述加法树单元中,在所述多级加法器阵列中的位于中间级位置的加法器阵列的输出端设置一寄存器,用于对来自所述位于中间级位置的加法器阵列的输出端的输出数据进行缓存。
3.根据权利要求1所述的加法器装置,其特征在于,
所述第一加法器模块还具有多个用于寄存所述加法器组算出的部分和数据的寄存器,根据所述第一控制单元的控制信号确定所述部分和数据寄存在哪一个寄存器中,并确定从所述多个寄存器中选择一个部分和数据与所述加法树单元的所述累加和数据相加并作为所述第一加法器模块的输出数据。
4.根据权利要求1~3任一项所述的加法器装置,其特征在于,
还包括溢出检测及溢出处理的电路,用于检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;
其中,所述向上溢出是指,对多个定点正数进行加法运算时,运算结果超出了该定点数格式的正数表达范围;
所述向下溢出是指,对多个定点复数进行加法运算时,运算结果超出了该定点数格式的复数表达范围。
5.根据权利要求1~3任一项所述的加法器装置,其特征在于,所述控制器模块进一步包括:
操作码控制单元,用于控制所述第一加法器模块及所述第二加法器模块的数据输入;
设备号控制单元,用于确定所述移位操作模块的移位值;
累加源操作数序号控制单元,用于确定从多个部分和寄存器选择一个与加法树输出结果相加;
使能信号控制单元,用于使所述加法器装置在当前有效;
标志信号控制单元,用于将所述第一加法器模块的输出数据作为所述加法器装置的输出数据。
6.一种使用上述权利要求1~5任一项所述的加法器装置对输出数据流进行快速累加的方法,其特征在于,包括以下步骤:
步骤1,控制器模块向第一加法器模块及第二加法器模块发送控制信号,确定所述第一加法器模块及所述第二加法器模块的输入数据的取值、控制移位操作模块的移位操作,以及控制第一控制单元及第二控制单元的控制信号的发射;
步骤2,所述第一加法器模块及所述第二加法器模块分别接收到来自所述控制器模块的控制信号后,基于该控制信号,所述第一加法器模块的加法树单元采用逐级累加的方式将每一级的输入数据累加为一个累加和数据作为该第一加法器模块的输出数据,其中所述第一加法器模块由多级加法器阵列构成;所述第二加法器模块选择性地对输入数据进行加法或减法运算,并将加减运算结果作为该第二加法器模块的输出数据;
步骤3,移位操作模块基于所述控制信号对所述第一加法器模块的输出数据进行左移位操作,从而使所述第一加法器模块的输出数据具有与所述第二加法器模块的输出数据相同的位宽度并将移位后的结果作为所述移位操作模块的输出数据;
步骤4,与操作模块对所述移位操作模块的输出数据和所述第二加法器模块的输出数据进行与操作,并将所述与操作结果作为所述加法器装置的输出数据。
7.根据权利要求6所述的累加方法,其特征在于,所述步骤2还包括,
在所述加法树单元中,使用设置于所述多级加法器阵列中的位于中间级位置的加法器阵列的输出端的寄存器来对来自所述位于中间级位置的加法器阵列的输出端的输出数据进行缓存的步骤。
8.根据权利要求6所述的累加方法,其特征在于,所述步骤2还包括如下步骤,
所述第一加法器模块的用于寄存部分和数据的寄存器,根据所述第一控制单元的控制信号确定所述部分和数据寄存在哪一个寄存器中,并确定从所述多个寄存器中选择一个部分和数据与所述加法树单元的所述累加和数据相加并作为所述第一加法器模块的输出数据。
9.根据权利要求6~8任一项所述的加法器装置,其特征在于,还包括如下步骤,
使用溢出检测及溢出处理的电路检测定点数的累加结果是否发生向上溢出或向下溢出,若发生向上溢出,则将运算结果置为该定点数格式能表达的最大正数,若发生向下溢出,则将运算结果置为该定点数格式能表达的最小负数;
其中,所述向上溢出是指,对多个定点正数进行加法运算时,运算结果超出了该定点数格式的正数表达范围;
所述向下溢出是指,对多个定点复数进行加法运算时,运算结果超出了该定点数格式的复数表达范围。
10.一种包括权利要求1~5任一项所述加法器装置的数据处理装置。
CN201510863726.2A 2015-12-01 2015-12-01 加法器装置、数据累加方法及数据处理装置 Active CN105512724B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201510863726.2A CN105512724B (zh) 2015-12-01 2015-12-01 加法器装置、数据累加方法及数据处理装置
PCT/CN2016/086110 WO2017092284A1 (zh) 2015-12-01 2016-06-17 加法器装置、数据累加方法及数据处理装置
US15/773,974 US10416964B2 (en) 2015-12-01 2016-06-17 Adder device, data accumulation method and data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510863726.2A CN105512724B (zh) 2015-12-01 2015-12-01 加法器装置、数据累加方法及数据处理装置

Publications (2)

Publication Number Publication Date
CN105512724A true CN105512724A (zh) 2016-04-20
CN105512724B CN105512724B (zh) 2017-05-10

Family

ID=55720687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510863726.2A Active CN105512724B (zh) 2015-12-01 2015-12-01 加法器装置、数据累加方法及数据处理装置

Country Status (3)

Country Link
US (1) US10416964B2 (zh)
CN (1) CN105512724B (zh)
WO (1) WO2017092284A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017092284A1 (zh) * 2015-12-01 2017-06-08 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN106873940A (zh) * 2016-12-30 2017-06-20 青岛朗思信息科技有限公司 一种定点加法结果位宽限制的处理方法和装置
CN108549933A (zh) * 2018-04-23 2018-09-18 北京旷视科技有限公司 一种数据处理方法、装置、电子设备和计算机可读介质
CN109121435A (zh) * 2017-04-19 2019-01-01 上海寒武纪信息科技有限公司 处理装置和处理方法
CN109146059A (zh) * 2018-08-03 2019-01-04 济南浪潮高新科技投资发展有限公司 一种卷积数据处理电路及数据处理方法
WO2019174263A1 (zh) * 2018-03-15 2019-09-19 华为技术有限公司 用于随机计算的多加数加法电路
CN110874628A (zh) * 2018-09-03 2020-03-10 三星电子株式会社 人工神经网络及其中控制定点的方法
CN111753962A (zh) * 2020-06-24 2020-10-09 国汽(北京)智能网联汽车研究院有限公司 一种加法器、乘法器、卷积层结构、处理器及加速器
CN114200822A (zh) * 2021-12-09 2022-03-18 常州同惠电子股份有限公司 全精度数字积分控制器的fpga实现方法
TWI788220B (zh) * 2021-02-11 2022-12-21 台灣積體電路製造股份有限公司 加法器樹電路以及加法器電路及其操作方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630733B (zh) * 2015-12-24 2017-05-03 中国科学院计算技术研究所 分形树中向量数据回传处理单元的装置、方法、控制装置及智能芯片
CN110427171B (zh) * 2019-08-09 2022-10-18 复旦大学 可扩展的定点数矩阵乘加运算的存内计算设备和方法
CN113283251B (zh) * 2021-06-11 2023-05-30 西安微电子技术研究所 一种基于二维流水线的n邻域累加/或的运算装置
CN114937470B (zh) * 2022-05-20 2023-04-07 电子科技大学 基于多比特sram单元的定点全精度存内计算电路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801082A (zh) * 1995-08-31 2006-07-12 英特尔公司 在分组数据上执行乘-加运算的装置
US20110029471A1 (en) * 2009-07-30 2011-02-03 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN103279322A (zh) * 2013-06-13 2013-09-04 福州大学 Set/mos混合电路构成的阈值逻辑型超前进位加法器
US20140214913A1 (en) * 2013-01-28 2014-07-31 Samsung Electronics Co., Ltd. Adder capable of supporting addition and subtraction of up to n-bit data and method of supporting addition and subtraction of a plurality of data type using the adder

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3515344A (en) * 1966-08-31 1970-06-02 Ibm Apparatus for accumulating the sum of a plurality of operands
DE58906476D1 (de) * 1988-07-05 1994-02-03 Siemens Ag In integrierter Schaltungstechnik ausgeführtes digitales neuronales Netz.
JP2746350B2 (ja) * 1990-05-22 1998-05-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 学習機械シナプス・プロセッサ・システム装置
CN104090737B (zh) * 2014-07-04 2017-04-05 东南大学 一种改进型部分并行架构乘法器及其处理方法
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801082A (zh) * 1995-08-31 2006-07-12 英特尔公司 在分组数据上执行乘-加运算的装置
US20110029471A1 (en) * 2009-07-30 2011-02-03 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
US20140214913A1 (en) * 2013-01-28 2014-07-31 Samsung Electronics Co., Ltd. Adder capable of supporting addition and subtraction of up to n-bit data and method of supporting addition and subtraction of a plurality of data type using the adder
CN103279322A (zh) * 2013-06-13 2013-09-04 福州大学 Set/mos混合电路构成的阈值逻辑型超前进位加法器

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10416964B2 (en) 2015-12-01 2019-09-17 Institute Of Computing Technology, Chinese Academy Of Sciences Adder device, data accumulation method and data processing device
WO2017092284A1 (zh) * 2015-12-01 2017-06-08 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN106873940B (zh) * 2016-12-30 2019-05-17 青岛专用集成电路设计工程技术研究中心 一种定点加法结果位宽限制的处理方法和装置
CN106873940A (zh) * 2016-12-30 2017-06-20 青岛朗思信息科技有限公司 一种定点加法结果位宽限制的处理方法和装置
CN109121435A (zh) * 2017-04-19 2019-01-01 上海寒武纪信息科技有限公司 处理装置和处理方法
WO2019174263A1 (zh) * 2018-03-15 2019-09-19 华为技术有限公司 用于随机计算的多加数加法电路
US11119732B2 (en) 2018-03-15 2021-09-14 Huawei Technologies Co., Ltd. Multi-addend adder circuit for stochastic computing
CN108549933A (zh) * 2018-04-23 2018-09-18 北京旷视科技有限公司 一种数据处理方法、装置、电子设备和计算机可读介质
CN109146059A (zh) * 2018-08-03 2019-01-04 济南浪潮高新科技投资发展有限公司 一种卷积数据处理电路及数据处理方法
CN110874628A (zh) * 2018-09-03 2020-03-10 三星电子株式会社 人工神经网络及其中控制定点的方法
CN111753962A (zh) * 2020-06-24 2020-10-09 国汽(北京)智能网联汽车研究院有限公司 一种加法器、乘法器、卷积层结构、处理器及加速器
CN111753962B (zh) * 2020-06-24 2023-07-11 国汽(北京)智能网联汽车研究院有限公司 一种加法器、乘法器、卷积层结构、处理器及加速器
TWI788220B (zh) * 2021-02-11 2022-12-21 台灣積體電路製造股份有限公司 加法器樹電路以及加法器電路及其操作方法
CN114200822A (zh) * 2021-12-09 2022-03-18 常州同惠电子股份有限公司 全精度数字积分控制器的fpga实现方法

Also Published As

Publication number Publication date
CN105512724B (zh) 2017-05-10
US20180321911A1 (en) 2018-11-08
US10416964B2 (en) 2019-09-17
WO2017092284A1 (zh) 2017-06-08

Similar Documents

Publication Publication Date Title
CN105512724A (zh) 加法器装置、数据累加方法及数据处理装置
CN101452571B (zh) 积和熔加功能单元
CN102629189B (zh) 基于fpga的流水浮点乘累加方法
CN104484703A (zh) 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN101729463A (zh) 一种实现快速傅立叶变换、反变换的硬件装置及方法
CN102622207B (zh) 定点化处理方法及装置
CN107291419A (zh) 用于神经网络处理器的浮点乘法器及浮点数乘法
CN104423926A (zh) 浮点加法器电路
CN101847087A (zh) 一种支持定浮点可重构的横向求和网络结构
CN101174200A (zh) 一种浮点乘加融合单元的五级流水线结构
CN110717583B (zh) 卷积电路、处理器、芯片、板卡和电子设备
CN102566967A (zh) 一种采用多级流水线结构的高速浮点运算器
Lou et al. Delay-dependent criteria for global robust periodicity of uncertain switched recurrent neural networks with time-varying delay
Latt Application of feedforward artificial neural network in Muskingum flood routing: a black-box forecasting approach for a natural river system
CN109543821A (zh) 一种限制权重分布提高量化效果的卷积神经网络训练方法
CN104991757A (zh) 一种浮点处理方法及浮点处理器
CN109284083A (zh) 一种乘法运算装置及方法
CN102375721A (zh) 一种矩阵乘法运算方法、图形处理器和电子设备
CN104407836A (zh) 利用定点乘法器进行级联乘累加运算的装置和方法
CN108055041A (zh) 一种数据类型转换电路单元及装置
CN105224577A (zh) 一种多标签文本分类方法及系统
CN102253822B (zh) 一种模(2^n-3)乘法器
CN105786444B (zh) 一种浮点数尾数前导零检测方法及装置
Wang et al. Novel pinning control strategy for coupled neural networks with communication column graphs
CN212569855U (zh) 一种激活函数的硬件实现装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Zhou Longyuan

Inventor after: Li Zhen

Inventor after: Liu Shaoli

Inventor after: Zhang Shijin

Inventor after: Luo Tao

Inventor after: Qian Cheng

Inventor after: Chen Yunji

Inventor after: Chen Tianshi

Inventor before: Li Zhen

Inventor before: Liu Shaoli

Inventor before: Zhang Shijin

Inventor before: Luo Tao

Inventor before: Qian Cheng

Inventor before: Chen Yunji

Inventor before: Chen Tianshi

CB03 Change of inventor or designer information