CN110489077A - 一种神经网络加速器的浮点乘法运算电路和方法 - Google Patents

一种神经网络加速器的浮点乘法运算电路和方法 Download PDF

Info

Publication number
CN110489077A
CN110489077A CN201910667528.7A CN201910667528A CN110489077A CN 110489077 A CN110489077 A CN 110489077A CN 201910667528 A CN201910667528 A CN 201910667528A CN 110489077 A CN110489077 A CN 110489077A
Authority
CN
China
Prior art keywords
unit
result
channel
multiplication
judgment
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
CN201910667528.7A
Other languages
English (en)
Other versions
CN110489077B (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.)
Fuzhou Rockchip Electronics Co Ltd
Original Assignee
Fuzhou Rockchip Electronics 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 Fuzhou Rockchip Electronics Co Ltd filed Critical Fuzhou Rockchip Electronics Co Ltd
Priority to CN201910667528.7A priority Critical patent/CN110489077B/zh
Publication of CN110489077A publication Critical patent/CN110489077A/zh
Application granted granted Critical
Publication of CN110489077B publication Critical patent/CN110489077B/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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

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

Abstract

本发明提供一种神经网络加速器的浮点乘法运算电路和方法,电路包括乘法运算单元,首通道判断直通单元,累加结果缓存单元,指数比较单元,指数对齐单元,加法运算单元,全通道运算结束判断单元以及通道乘法个数配置信息单元;所述乘法运算单元,首通道判断直通单元,指数比较单元,指数对齐单元,加法运算单元,以及全通道运算结束判断单元依次连接;所述累加结果缓存单元分别连接首通道判断直通单元,指数比较单元和全通道运算结束判断单元;且通道乘法个数配置信息单元分别连接首通道判断直通单元和全通道运算结束判断单元。本发明将浮点乘加运算运用于神经网络电路中,可以实现高效的大规模并行运算,同时还可以有效的降低运算过程的中的电路功耗。

Description

一种神经网络加速器的浮点乘法运算电路和方法
技术领域
本发明涉及一种人工智能的神经网络技术,特别涉及一种神经网络加速器的浮点乘法运算电路和方法。
背景技术
IEEE二进制浮点数算术标准(IEEE754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormalnumber)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
一个浮点数(Value)可以这样表示:
yalue=sign×exponent×fraction
也就是浮点数的实际值,等于符号位(signbit)乘以指数偏移值(exponent bias)再乘以分数值(fraction)。最高位为符号位,接着是指数位,最后是精度位。
随着人工智能神经网络技术的快速发展,以及消费者对神经网络计算速度的快速提升,因此对神经网络加速电路提出了极大的挑战,而乘加运算作为神经网络运算过程中最重要的计算之一,由于其计算量巨大因此所产生的功耗也是神经网络电路中的最大比例。同时由于运算难度和功耗考虑,目前技术中通常采用的运算精度为整形8bit或者16bit,很少使用浮点运算。因此本发明提出了一种神经网络加速器的浮点乘法运算电路和方法,将浮点乘加运算运用于神经网络电路中,可以实现高效的神经网络浮点乘加运算,同时可以有效的降低运算过程的中的电路功耗。
发明内容
本发明要解决的技术问题,在于提供一种神经网络加速器的浮点乘法运算电路和方法,将浮点乘加运算运用于神经网络电路中,可以实现高效的大规模并行运算,同时还可以有效的降低运算过程的中的电路功耗。
一方面,本发明电路是这样实现的:一种神经网络加速器的浮点乘法运算电路,包括乘法运算单元,首通道判断直通单元,累加结果缓存单元,指数比较单元,指数对齐单元,加法运算单元,全通道运算结束判断单元以及通道乘法个数配置信息单元;
所述乘法运算单元,所述首通道判断直通单元,所述指数比较单元,所述指数对齐单元,所述加法运算单元,以及所述全通道运算结束判断单元依次连接;
所述累加结果缓存单元分别连接所述首通道判断直通单元,所述指数比较单元和所述全通道运算结束判断单元;且
所述通道乘法个数配置信息单元分别连接所述首通道判断直通单元和所述全通道运算结束判断单元。
进一步的,本发明电路还包括时钟关闭控制单元,或逻辑电路单元,通路选择单元以及两个NaN判断单元;
任一所述NaN判断单元均连接所述时钟关闭控制单元和所述或逻辑电路单元;
所述时钟关闭控制单元连接所述乘法运算单元;
所述或逻辑电路单元和一低电平连接所述通路选择单元,且所述通路选择单元连接于所述乘法运算单元和所述首通道判断直通单元之间。
进一步的,任一所述NaN判断单元包括一个与逻辑电路组、一个或逻辑电路组以及一个与逻辑电路单元,所述与逻辑电路组和所述或逻辑电路组均连接所述与逻辑电路单元。
另一方面,本发明方法是这样实现的:一种神经网络加速器的浮点乘法运算方法,采用上述本发明上述的神经网络浮点乘加运算电路,并进行下述步骤:
S1、所述通道乘法个数配置信息单元接收单个通道乘法的计算个数的配置信息;
S2、所述乘法运算单元接收两个待运算的浮点数据,并进行乘法运算后将结果数据送往所述首通道判断直通单元,其中,乘法运算具体是将两个浮点数据的精度位进行乘法操作得到结果数据的精度位,将两个浮点数据的指数位进行加法操作得到结果数据的指数位,将待运算数据的符号位进行异或操作得到结果数据的符号位;
S3、所述首通道判断直通单元每收到一个结果数据就累加一个值,直到结果数据个数达到所述配置信息的计算个数,开始下一通道乘法累加运算,且若收到的数据是当前通道的第一个结果数据时,则让该结果数据直接存入所述累加结果缓存单元,否则将该结果数据送往所述指数比较单元;
S4、所述指数比较单元每接收到一个结果数据时,将当前结果数据和之前累加的结果数据进行指数位大小的比较判断,得到判断结果并计算指数差值,并把判断结果和指数差值送往所述指数对齐单元;
S5、所述指数对齐单元根据指数比较结果,将指数值较小的那个结果数据按照指数差值,将精度位进行对齐操作后送往所述加法运算单元;
S6、所述加法运算单元对当前结果数据和之前累加的结果数据进行相加,然后将相加结果送往所述全通道运算结束判断单元;
S7、所述全通道运算结束判断单元根据通道乘法个数配置信息单元中存储的通道乘法的计算个数,判断当前通道的累加是否已经结束,如果结束则将所述相加结果送出,否则将所述相加结果继续送往所述累加结果缓存单元,准备下一个乘法结果的累加。
进一步的,所述步骤S1和步骤S2之间还包括:
S11、两个待运算的浮点数据分别送入一所述NaN判断单元进行NaN判断,如果NaN判断结果为无效,则把NaN判断结果置为1,如果NaN判断结果为有效,则不改变NaN判断结果,然后把NaN判断结果送往所述或逻辑电路单元和所述时钟关闭控制单元;
S12、所述时钟关闭控制单元根据两个所述NaN判断单元的NaN判断结果对所述乘法运算单元的时钟进行关闭控制,当收到的两个NaN判断结果的任意之一为无效时,就对所述乘法运算单元的时钟进行关闭操作,否则,保持所述乘法运算单元的时钟正常供给;
同时,所述或逻辑电路单元负责对两个NaN判断结果进行或逻辑判断后送往通路选择单元;
且所述步骤S2和步骤S3之间还包括:
S21、所述通路选择单元根据所述或逻辑电路单元输出的NaN判断结果对所述乘法运算单元的结果数据和低电平信号进行选通,当NaN判断结果为无效数时直接选通低电平输出,否则选通乘法运算单元的结果数据输出,然后将输出送往所述首通道判断直通单元。
进一步的,所述S11中的任一所述NaN判断单元包括一个与逻辑电路组、一个或逻辑电路组以及一个与逻辑电路单元,则NaN判断的具体过程是:
Sa1、浮点数据输入所述NaN判断单元后,指数位数据送往所述与逻辑电路组,将精度位数据送往所述或逻辑电路组单元;
Sa2、所述与逻辑电路组将指数位数据的每个bit都按位进行与逻辑处理,当指数位每bit都为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;同时
所述或逻辑电路组将精度位的每个bit都按位进行或逻辑处理,当精度位任意bit为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;
Sa3、所述与逻辑电路单元将指数位和精度位的输出结果进行与逻辑处理,当两者都为1时,输出结果为1,即NaN判断结果为无效,否则输出结果为0,即NaN判断结果为有效。
进一步的,所述步骤S5中,所述指数对齐单元将精度位进行对齐操作的过程是:根据指数差值对指数值较小的数据的精度位进行右移操作,右移bit位为指数差值,比如指数差值为3,则对指数值较小的数据的精度位进行右移3bit操作,以到达两个运算数的指数位对齐。
本发明具有如下优点:
1.本发明将浮点乘加运算运用于神经网络电路中,神经网络运算具有多通道特点,可以通过通道乘法个数配置信息单元对通道乘法个数进行配置,做卷积运算时,可通过累加结果缓存单元将浮点乘法运算后再对每个通道的值进行累加,在所有通道算完后再写出,节省带宽提高了效率;而目前现有技术中一般浮点乘法运算是在每通道算完时就将值写出去,等待下通道算完后再读回来相加,再写出去,再等下一通道算完,如此循环,需占用大量带宽;
2.本发明在浮点乘加运算过程中,是通过指数位的比较来对齐精度位后完成后通道之间的相加,相较于直接相加,大大简化了运算电路设计;
3.本发明还利用神经网络数据具有的稀疏性特征,采用时钟关闭控制单元,或逻辑电路单元,通路选择单元以及两个NaN判断单元,对待计算数据进行NaN(无效数)判断,在任何一个浮点数被判定为无效数据时关闭运算电路时钟可以大幅减少运算功耗,从而适应巨大的计算量。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明的电路一实施例的原理框图。
图2为本发明的电路另一实施例的原理框图。
图3为本发明的NaN判断单元的电路原理框图。
具体实施方式
一方面,以下针对本发明的神经网络加速器的浮点乘法运算电路,提供两个实施例,以对本发明作进一步的说明。
实施例一
请参阅图1所示,本发明的神经网络加速器的浮点乘法运算电路的一实施例,包括乘法运算单元,首通道判断直通单元,累加结果缓存单元,指数比较单元,指数对齐单元,加法运算单元,全通道运算结束判断单元以及通道乘法个数配置信息单元;
所述乘法运算单元,所述首通道判断直通单元,所述指数比较单元,所述指数对齐单元,所述加法运算单元,以及所述全通道运算结束判断单元依次连接;
所述累加结果缓存单元分别连接所述首通道判断直通单元,所述指数比较单元和所述全通道运算结束判断单元;且
所述通道乘法个数配置信息单元分别连接所述首通道判断直通单元和所述全通道运算结束判断单元。
上述电路中各个单元的作用如下:
所述乘法运算单元,负责对乘数和被乘数进行乘法运算,具体是将待运算的浮点数据weight(权重)和feature_Data(特征值)的精度位进行乘法操作得到结果数据的精度位,将指数位进行加法操作得到结果数据的指数位,将符号位进行异或操作得到结果数据的符号位,然后将结果数据输出到通路选择单元;
所述首通道判断直通单元,负责判断当前输入的数据是否为该组通道的第一个结果数据(神经网络运算具有多通道特点,神经网络的卷积运算是多通道结果累加的结果,因此本发明将每次卷积运算所用到的通道归为一组),如果是,则让该结果数据直接存入累加结果缓存单元;如果不是,则将该结果数据送往所述指数比较单元;
所述累加结果缓存单元,负责缓存通道内之前乘法结果的累加值,在一组通道第一个结果数据时直接存储该结果数据,在一组通道非第一个结果数据时将之前的累加结果送往所述指数比较单元进行指数比较操作,然后在累加结束后存储之前累加结果和最新乘法结果的累加值,并在下一个新的乘法结果到来时继续送出之前的累加值;
所述指数比较单元,负责对当前乘法的结果数据和之前乘法的累加结果数据进行指数位的大小比较,得到判断结果并计算指数差值,并把判断结果和指数差值送往所述指数对齐单元;
所述指数对齐单元,负责根据指数比较的判断结果,将指数值较小的那个数字按照指数差值,将精度位进行对齐操作后送往所述加法运算单元(因为加法需要在相同的指数等级下进行),对齐方法为根据指数差值对指数值较小的数据的精度位进行右移操作,右移bit位为指数差值,比如指数差值为3,则对指数值较小的数据的精度位进行右移3bit操作,以到达两个运算数的指数位对齐;
所述加法运算单元,负责对当前乘法结果和之前累加结果进行相加,然后将结果送往所述全通道运算结束判断单元;
所述全通道运算结束判断单元,根据通道乘法个数配置信息单元中存储的通道乘法的计算个数,判断当前通道的累加是否已经结束,如果结束则将结果送出,否则将结果继续送往累加结果缓存单元,准备下一个乘法结果的累加。
实施例二
请参阅图2所示,其为本发明电路的较佳实施例,是在实施例一的基础上再加上时钟关闭控制单元,或逻辑电路单元,通路选择单元以及两个NaN判断单元;其中,
任一所述NaN判断单元均连接所述时钟关闭控制单元和所述或逻辑电路单元;
所述时钟关闭控制单元连接所述乘法运算单元;
所述或逻辑电路单元和一低电平连接所述通路选择单元,且所述通路选择单元连接于所述乘法运算单元和所述首通道判断直通单元之间。
本实施例电路中新增的各个单元的作用如下:
所述NaN判断单元,负责对待运算的浮点数据进行NaN(无效数)判断,如果NaN判断结果为无效,则把NaN判断结果置为1,如果NaN判断结果为有效,则不改变NaN判断结果,然后把NaN判断结果送往所述或逻辑电路单元和所述时钟关闭控制单元;
所述时钟关闭控制单元,负责根据两个所述NaN判断单元的NaN判断结果,对所述乘法运算单元的时钟进行关闭控制,当收到的两个NaN判断结果的任意之一为无效时,就对所述乘法运算单元的时钟进行关闭操作,否则,保持所述乘法运算单元的时钟正常供给;由于电路的动态功耗由电路状态翻转产生,关闭时钟后可以使电路状态翻转停止,将动态功耗降到最低;
所述或逻辑电路,负责对两个NaN判断单元的NaN判断结果进行或逻辑判断后送往所述通路选择单元;
所述通路选择单元,负责根据所述或逻辑电路输出的NaN判断结果对乘法运算单元的数据和低电平信号进行选通,以达到NaN无效数时直接选择低电平输出以降低电路的功耗。
另一方面,以下针对本发明的神经网络加速器的浮点乘法运算方法同样提供如下两个实施例,以对本发明方法作进一步的说明。
实施例三
本实施例三是采用上述实施例一中的神经网络浮点乘加运算电路,并进行下述步骤:
S1、所述通道乘法个数配置信息单元接收单个通道乘法的计算个数的配置信息;
S2、所述乘法运算单元接收两个待运算的浮点数据,并进行乘法运算后将结果数据送往所述首通道判断直通单元,其中,乘法运算具体是将两个浮点数据的精度位进行乘法操作得到结果数据的精度位,将两个浮点数据的指数位进行加法操作得到结果数据的指数位,将待运算数据的符号位进行异或操作得到结果数据的符号位;
S3、所述首通道判断直通单元每收到一个结果数据就累加一个值,直到结果数据个数达到所述配置信息的计算个数,开始下一通道乘法累加运算,且若收到的数据是当前通道的第一个结果数据时,则让该结果数据直接存入所述累加结果缓存单元,否则将该结果数据送往所述指数比较单元;
S4、所述指数比较单元每接收到一个结果数据时,将当前结果数据和之前累加的结果数据进行指数位大小的比较判断,得到判断结果并计算指数差值,并把判断结果和指数差值送往所述指数对齐单元;
S5、所述指数对齐单元根据指数比较结果,将指数值较小的那个结果数据按照指数差值,将精度位进行对齐操作后送往所述加法运算单元;具体过程是:根据指数差值对指数值较小的数据的精度位进行右移操作,右移bit位为指数差值,比如指数差值为3,则对指数值较小的数据的精度位进行右移3bit操作,以到达两个运算数的指数位对齐。
S6、所述加法运算单元对当前结果数据和之前累加的结果数据进行相加,然后将相加结果送往所述全通道运算结束判断单元;
S7、所述全通道运算结束判断单元根据通道乘法个数配置信息单元中存储的通道乘法的计算个数,判断当前通道的累加是否已经结束,如果结束则将所述相加结果送出,否则将所述相加结果继续送往所述累加结果缓存单元,准备下一个乘法结果的累加。
实施例四
本实施例四是采用上述实施例二中的神经网络浮点乘加运算电路,并进行下述步骤:
S1、所述通道乘法个数配置信息单元接收单个通道乘法的计算个数的配置信息;
S11、两个待运算的浮点数据分别送入一所述NaN判断单元进行NaN判断,如果NaN判断结果为无效,则把NaN判断结果置为1,如果NaN判断结果为有效,则不改变NaN判断结果,然后把NaN判断结果送往所述或逻辑电路单元和所述时钟关闭控制单元;
S12、所述时钟关闭控制单元根据两个所述NaN判断单元的NaN判断结果对所述乘法运算单元的时钟进行关闭控制,当收到的两个NaN判断结果的任意之一为无效时,就对所述乘法运算单元的时钟进行关闭操作,否则,保持所述乘法运算单元的时钟正常供给;
同时,所述或逻辑电路单元负责对两个NaN判断结果进行或逻辑判断后送往通路选择单元;
S2、所述乘法运算单元接收两个待运算的浮点数据,并进行乘法运算后将结果数据送往所述首通道判断直通单元,其中,乘法运算具体是将两个浮点数据的精度位进行乘法操作得到结果数据的精度位,将两个浮点数据的指数位进行加法操作得到结果数据的指数位,将待运算数据的符号位进行异或操作得到结果数据的符号位;
S21、所述通路选择单元根据所述或逻辑电路单元输出的NaN判断结果对所述乘法运算单元的结果数据和低电平信号进行选通,当NaN判断结果为无效数时直接选通低电平输出,否则选通乘法运算单元的结果数据输出,然后将输出送往所述首通道判断直通单元。
S3、所述首通道判断直通单元每收到一个结果数据就累加一个值,直到结果数据个数达到所述配置信息的计算个数,开始下一通道乘法累加运算,且若收到的数据是当前通道的第一个结果数据时,则让该结果数据直接存入所述累加结果缓存单元,否则将该结果数据送往所述指数比较单元;
S4、所述指数比较单元每接收到一个结果数据时,将当前结果数据和之前累加的结果数据进行指数位大小的比较判断,得到判断结果并计算指数差值,并把判断结果和指数差值送往所述指数对齐单元;
S5、所述指数对齐单元根据指数比较结果,将指数值较小的那个结果数据按照指数差值,将精度位进行对齐操作后送往所述加法运算单元;具体过程是:根据指数差值对指数值较小的数据的精度位进行右移操作,右移bit位为指数差值,比如指数差值为3,则对指数值较小的数据的精度位进行右移3bit操作,以到达两个运算数的指数位对齐。
S6、所述加法运算单元对当前结果数据和之前累加的结果数据进行相加,然后将相加结果送往所述全通道运算结束判断单元;
S7、所述全通道运算结束判断单元根据通道乘法个数配置信息单元中存储的通道乘法的计算个数,判断当前通道的累加是否已经结束,如果结束则将所述相加结果送出,否则将所述相加结果继续送往所述累加结果缓存单元,准备下一个乘法结果的累加。
由于浮点数据的NaN类型无效数据表示fp16格式下,指数位为全一,同时精度位为非零的一种状态,则为了对浮点数据的进行NaN判断,本发明专门设计了如图3所示的NaN判断单元。
如图3所示,本发明中任一所述NaN判断单元包括一个与逻辑电路组、一个或逻辑电路组以及一个与逻辑电路单元,所述与逻辑电路组和所述或逻辑电路组均连接所述与逻辑电路单元。则NaN判断的具体过程是:
Sa1、浮点数据输入所述NaN判断单元后,指数位数据送往所述与逻辑电路组,将精度位数据送往所述或逻辑电路组单元;
Sa2、所述与逻辑电路组将指数位数据的每个bit都按位进行与逻辑处理,当指数位每bit都为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;同时
所述或逻辑电路组将精度位的每个bit都按位进行或逻辑处理,当精度位任意bit为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;
Sa3、所述与逻辑电路单元将指数位和精度位的输出结果进行与逻辑处理,当两者都为1时,输出结果为1,即NaN判断结果为无效,否则输出结果为0,即NaN判断结果为有效。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

Claims (7)

1.一种神经网络加速器的浮点乘法运算电路,其特征在于:包括乘法运算单元,首通道判断直通单元,累加结果缓存单元,指数比较单元,指数对齐单元,加法运算单元,全通道运算结束判断单元以及通道乘法个数配置信息单元;
所述乘法运算单元,所述首通道判断直通单元,所述指数比较单元,所述指数对齐单元,所述加法运算单元,以及所述全通道运算结束判断单元依次连接;
所述累加结果缓存单元分别连接所述首通道判断直通单元,所述指数比较单元和所述全通道运算结束判断单元;且
所述通道乘法个数配置信息单元分别连接所述首通道判断直通单元和所述全通道运算结束判断单元。
2.根据权利要求1所述的一种神经网络加速器的浮点乘法运算电路,其特征在于:还包括时钟关闭控制单元,或逻辑电路单元,通路选择单元以及两个NaN判断单元;
任一所述NaN判断单元均连接所述时钟关闭控制单元和所述或逻辑电路单元;
所述时钟关闭控制单元连接所述乘法运算单元;
所述或逻辑电路单元和一低电平连接所述通路选择单元,且所述通路选择单元连接于所述乘法运算单元和所述首通道判断直通单元之间。
3.根据权利要求1所述的一种神经网络加速器的浮点乘法运算电路,其特征在于:任一所述NaN判断单元包括一个与逻辑电路组、一个或逻辑电路组以及一个与逻辑电路单元,所述与逻辑电路组和所述或逻辑电路组均连接所述与逻辑电路单元。
4.一种神经网络加速器的浮点乘法运算方法,其特征在于:采用如权利要求1或2所述的神经网络浮点乘加运算电路,并进行下述步骤:
S1、所述通道乘法个数配置信息单元接收单个通道乘法的计算个数的配置信息;
S2、所述乘法运算单元接收两个待运算的浮点数据,并进行乘法运算后将结果数据送往所述首通道判断直通单元,其中,乘法运算具体是将两个浮点数据的精度位进行乘法操作得到结果数据的精度位,将两个浮点数据的指数位进行加法操作得到结果数据的指数位,将两个浮点数据的符号位进行异或操作得到结果数据的符号位;
S3、所述首通道判断直通单元每收到一个结果数据就累加一个值,直到结果数据个数达到所述配置信息的计算个数,开始下一通道乘法累加运算,且若收到的数据是当前通道的第一个结果数据时,则让该结果数据直接存入所述累加结果缓存单元,否则将该结果数据送往所述指数比较单元;
S4、所述指数比较单元每接收到一个结果数据时,将当前结果数据和之前累加的结果数据进行指数位大小的比较判断,得到判断结果并计算指数差值,并把判断结果和指数差值送往所述指数对齐单元;
S5、所述指数对齐单元根据指数比较结果,将指数值较小的那个结果数据按照指数差值,将精度位进行对齐操作后送往所述加法运算单元;
S6、所述加法运算单元对当前结果数据和之前累加的结果数据进行相加,然后将相加结果送往所述全通道运算结束判断单元;
S7、所述全通道运算结束判断单元根据通道乘法个数配置信息单元中存储的通道乘法的计算个数,判断当前通道的累加是否已经结束,如果结束则将所述相加结果送出,否则将所述相加结果继续送往所述累加结果缓存单元,准备下一个乘法结果的累加。
5.根据权利要求4所述的一种神经网络加速器的浮点乘法运算方法,其特征在于:所述步骤S1和步骤S2之间还包括:
S11、两个待运算的浮点数据分别送入一所述NaN判断单元进行NaN判断,如果NaN判断结果为无效,则把NaN判断结果置为1,如果NaN判断结果为有效,则不改变NaN判断结果,然后把NaN判断结果送往所述或逻辑电路单元和所述时钟关闭控制单元;
S12、所述时钟关闭控制单元根据两个所述NaN判断单元的NaN判断结果对所述乘法运算单元的时钟进行关闭控制,当收到的两个NaN判断结果的任意之一为无效时,就对所述乘法运算单元的时钟进行关闭操作,否则,保持所述乘法运算单元的时钟正常供给;
同时,所述或逻辑电路单元负责对两个NaN判断结果进行或逻辑判断后送往通路选择单元;
且所述步骤S2和步骤S3之间还包括:
S21、所述通路选择单元根据所述或逻辑电路单元输出的NaN判断结果对所述乘法运算单元的结果数据和低电平信号进行选通,当NaN判断结果为无效数时直接选通低电平输出,否则选通乘法运算单元的结果数据输出,然后将输出送往所述首通道判断直通单元。
6.根据权利要求4或5所述的一种神经网络加速器的浮点乘法运算方法,其特征在于:所述S11中的任一所述NaN判断单元包括一个与逻辑电路组、一个或逻辑电路组以及一个与逻辑电路单元,则NaN判断的具体过程是:
Sa1、浮点数据输入所述NaN判断单元后,指数位数据送往所述与逻辑电路组,将精度位数据送往所述或逻辑电路组单元;
Sa2、所述与逻辑电路组将指数位数据的每个bit都按位进行与逻辑处理,当指数位每bit都为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;同时
所述或逻辑电路组将精度位的每个bit都按位进行或逻辑处理,当精度位任意bit为1时,输出结果为1,否则输出结果为0;然后将输出结果送往所述与逻辑电路单元;
Sa3、所述与逻辑电路单元将指数位和精度位的输出结果进行与逻辑处理,当两者都为1时,输出结果为1,即NaN判断结果为无效,否则输出结果为0,即NaN判断结果为有效。
7.根据权利要求4或5所述的一种神经网络加速器的浮点乘法运算方法,其特征在于:所述步骤S5中,所述指数对齐单元将精度位进行对齐操作的过程是:根据指数差值对指数值较小的数据的精度位进行右移操作,右移bit位为指数差值,比如指数差值为3,则对指数值较小的数据的精度位进行右移3bit操作,以到达两个运算数的指数位对齐。
CN201910667528.7A 2019-07-23 2019-07-23 一种神经网络加速器的浮点乘法运算电路和方法 Active CN110489077B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910667528.7A CN110489077B (zh) 2019-07-23 2019-07-23 一种神经网络加速器的浮点乘法运算电路和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910667528.7A CN110489077B (zh) 2019-07-23 2019-07-23 一种神经网络加速器的浮点乘法运算电路和方法

Publications (2)

Publication Number Publication Date
CN110489077A true CN110489077A (zh) 2019-11-22
CN110489077B CN110489077B (zh) 2021-12-31

Family

ID=68548011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910667528.7A Active CN110489077B (zh) 2019-07-23 2019-07-23 一种神经网络加速器的浮点乘法运算电路和方法

Country Status (1)

Country Link
CN (1) CN110489077B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022111014A1 (zh) * 2020-11-27 2022-06-02 中科寒武纪科技股份有限公司 累加装置、方法及可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174200A (zh) * 2007-05-18 2008-05-07 清华大学 一种浮点乘加融合单元的五级流水线结构
CN106355246A (zh) * 2015-10-08 2017-01-25 上海兆芯集成电路有限公司 三配置神经网络单元
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
CN108459840A (zh) * 2018-02-14 2018-08-28 中国科学院电子学研究所 一种simd结构浮点融合点乘运算单元
US20190042513A1 (en) * 2018-06-30 2019-02-07 Kermin E. Fleming, JR. Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US20190138891A1 (en) * 2017-11-09 2019-05-09 Samsung Electronics Co., Ltd. Apparatus and method with neural network
CN109784489A (zh) * 2019-01-16 2019-05-21 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
US20190156242A1 (en) * 2017-11-21 2019-05-23 Microsoft Technology Licensing, Llc Quantum circuit libraries for floating-point arithmetic
CN109828744A (zh) * 2019-01-18 2019-05-31 东北师范大学 一种基于fpga的可配置浮点向量乘法ip核

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174200A (zh) * 2007-05-18 2008-05-07 清华大学 一种浮点乘加融合单元的五级流水线结构
CN106355246A (zh) * 2015-10-08 2017-01-25 上海兆芯集成电路有限公司 三配置神经网络单元
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
US20190138891A1 (en) * 2017-11-09 2019-05-09 Samsung Electronics Co., Ltd. Apparatus and method with neural network
US20190156242A1 (en) * 2017-11-21 2019-05-23 Microsoft Technology Licensing, Llc Quantum circuit libraries for floating-point arithmetic
CN108459840A (zh) * 2018-02-14 2018-08-28 中国科学院电子学研究所 一种simd结构浮点融合点乘运算单元
US20190042513A1 (en) * 2018-06-30 2019-02-07 Kermin E. Fleming, JR. Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN109784489A (zh) * 2019-01-16 2019-05-21 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
CN109828744A (zh) * 2019-01-18 2019-05-31 东北师范大学 一种基于fpga的可配置浮点向量乘法ip核

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王思阳: "基于FPGA的卷积神经网络加速器设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022111014A1 (zh) * 2020-11-27 2022-06-02 中科寒武纪科技股份有限公司 累加装置、方法及可读存储介质

Also Published As

Publication number Publication date
CN110489077B (zh) 2021-12-31

Similar Documents

Publication Publication Date Title
CN109828744B (zh) 一种基于fpga的可配置浮点向量乘法ip核
CN107153522B (zh) 一种面向人工神经网络计算的动态精度可配近似乘法器
CN100570552C (zh) 一种并行浮点乘加单元
US5493520A (en) Two state leading zero/one anticipator (LZA)
CN102722352B (zh) 一种Booth乘法器
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
CN105930128B (zh) 一种利用浮点数计算指令实现大整数乘法计算加速方法
CN109863476A (zh) 动态变量精度计算
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
US20080263120A1 (en) Method and system for optimizing floating point conversion between different bases
CN102799411B (zh) 浮点数累加电路及其实现方法
CN105045560A (zh) 一种定点乘加运算方法和装置
CN110489077B (zh) 一种神经网络加速器的浮点乘法运算电路和方法
CN116594590A (zh) 一种浮点数据的多功能运算装置及方法
CN102567254B (zh) 采用dma控制器进行数据归一化处理的方法
CN116820393A (zh) 支持深度学习指令的多精度乘加单元及其应用方法
CN117648959B (zh) 支持神经网络运算的多精度操作数运算装置
WO2023070997A1 (zh) 利用比特级稀疏性的深度学习卷积加速方法及处理器
JPH04332036A (ja) 浮動小数点乗算器とその乗算方式
CN113837365A (zh) 实现sigmoid函数逼近的模型、FPGA电路及工作方法
CN116384455A (zh) 一种非均匀分段线性化激活函数硬件实现方法
CN114201140B (zh) 指数函数处理单元、方法和神经网络芯片
CN106547514B (zh) 一种基于时钟拉伸技术的高能效二进制加法器
CN110751259A (zh) 深度神经网络中的网络层运算方法及装置
CN113591031A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 350000 building 18, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province

Applicant after: Ruixin Microelectronics Co., Ltd

Address before: 350000 building 18, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province

Applicant before: FUZHOU ROCKCHIP ELECTRONICS Co.,Ltd.

GR01 Patent grant
GR01 Patent grant