CN109325590B - 用于实现计算精度可变的神经网络处理器的装置 - Google Patents

用于实现计算精度可变的神经网络处理器的装置 Download PDF

Info

Publication number
CN109325590B
CN109325590B CN201811071801.1A CN201811071801A CN109325590B CN 109325590 B CN109325590 B CN 109325590B CN 201811071801 A CN201811071801 A CN 201811071801A CN 109325590 B CN109325590 B CN 109325590B
Authority
CN
China
Prior art keywords
bit
data
output
bits
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.)
Active
Application number
CN201811071801.1A
Other languages
English (en)
Other versions
CN109325590A (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 CN201811071801.1A priority Critical patent/CN109325590B/zh
Publication of CN109325590A publication Critical patent/CN109325590A/zh
Application granted granted Critical
Publication of CN109325590B publication Critical patent/CN109325590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供一种用于神经网络处理器的数据压缩装置、配套的数据解压装置,以及一种精度可变的神经网络处理器。所述数据压缩装置包括:一个舍入单元、一个第一比较器、一个第二比较器、和一个第一多路选择器,用于将m位的待压缩数据转换为n位的压缩结果O,n<m。通过所述数据压缩装置,使得神经网络处理器可在神经网络不同层采用不同的数据精度参与计算,在保证计算精度的前提下,减少了片上存储量,降低了数据传输能量损耗,尤其适合于片上资源有限的应用。

Description

用于实现计算精度可变的神经网络处理器的装置
技术领域
本发明涉及一种专用的电路运算装置,尤其涉及一种计算精度可变的神经网络专用处理器。
背景技术
神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层地对数据特征进行描述,为图像、视频和音频等大数据处理任务的应用带来了突破性进展。由于神经网络模型对环境噪声及信号完整性问题具有足够的鲁棒性,因此计算数据的部分丢失不会对计算结果产生灾难性影响。
基于上述原因,用于执行神经网络运算的专用处理器,即神经网络处理器,可以采用能够实现近似计算的硬件装置来实现。在一些应用场景中,例如图像分类、语音识别、智能机器人等人工智能领域,可以通过采集海量数据集对神经网络进行有效的训练使其能够完成诸如识别、预测、分类等功能,这些应用场景凭借其庞大的数据体量在采用近似计算时均能够表现出良好的性能。然而,对于另外一些不满足上述条件的应用场景而言,例如在嵌入式设备、可穿戴设备、及小规模数据中心中,受***结构和应用领域的限制,处理器在实际工作时难以依托海量数据来实现高准确度计算。这是由于,对于基于近似计算的思想的神经网络处理器而言,其利用的是神经网络模型内在的精度容忍性,而处理器的计算精度、片上资源、能耗之间存在制约的关系,提升计算精度势必会消耗更多的片上资源(例如需要更大的存储容量)、增加硬件规模、以及造成更大的能耗,对于具有相对有限的片上资源以及能耗储备的应用,在现有技术中尚不存在非常行之有效的解决方案。
绝大多数现有的神经网络处理器为了优先确保能够获得较高的计算精度,均优先考虑确保计算数据具有一定的数据位宽。正如前文中所分析地,这样的现有技术在能耗和所需要消耗的片上资源上存在短板。
还有一些现有技术,提出以软件的方式根据神经网络中不同网络层的参数和数据来量化各个网络层所需的精度,并且控制各个网络层所采用的数据位宽。然而,这类技术的程序依旧运行在通用的处理器上,其能够减少所需的存储容量,但是对于能耗和运算速度并没有显著的提升。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于神经网络处理器的数据压缩装置,包括:
一个舍入单元,其以m位的待压缩数据P为输入,输出n位的中间压缩数据P’,n<m;以及
一个第一比较器,其以所述舍入单元的输出P’为输入,用于比较P’和Omax的大小,Omax为n位所能表示的最大值;以及
一个第二比较器,其以所述舍入单元的输出P’为输入,用于比较P’和Omin的大小,Omin为n位所能表示的最小值;以及
一个第一多路选择器,其以所述舍入单元的输出P’、Omax、和Omin分别作为其三个输入值,以所述第一比较器和所述第二比较器的输出作为其两个控制位,用于根据所述两个控制位从所述三个输入值中进行选择,以在P’不大于Omax且P’不小于Omin时输出P’,在P’大于Omax时输出Omax,在小于Omin时输出Omin,以作为针对所述待压缩数据P的压缩结果O。
优选地,根据所述数据压缩装置,其中,
所述第一比较器,输出P’>Omax是否为真的结果;
所述第二比较器,输出P’<Omin是否为真的结果;
所述第一多路选择器,根据所述两个控制位从所述三个输入值中进行选择,在所述第一比较器和所述第二比较器的输出均为非真时输出P’,在所述第一比较器的输出为真、且所述第二比较器的输出为非真时输出Omax,在所述第一比较器的输出为非真、且所述第二比较器的输出为真时输出Omin
优选地,根据所述数据压缩装置,其中所述舍入单元为移位器,用于将输入的m位的待压缩数据P向右移动m-n位以输出n位的中间压缩数据P’。
优选地,根据所述数据压缩装置,其中所述舍入单元包括:
一个移位器,用于将输入的m位的待压缩数据P向右移动m-n位以输出n位的中间压缩数据P0
一个加法器,其以所述移位器的输出P0作为其输入,输出P0+1;
一个第三比较器,其用于比较待压缩数据P的第m-n-1位是否等于0;
一个第二多路选择器,其以所述移位器的输出P0以及所述加法器的输出P0+1分别作为其两个输入值,以所述第三比较器的输出作为其控制位,用于根据所述控制位从所述两个输入值中进行选择,以在P的第m-n-1位为0时输出P0,在P的第m-n-1位不为0时输出P0+1。
优选地,根据所述数据压缩装置,其中,
所述第三比较器,输出P的第m-n-1位等于0是否为真的结果;
所述第二多路选择器,在所述第三比较器的输出为真时输出P0,在所述第三比较器的输出为真时输出P0+1。
一种与前述任意一项所述的数据压缩装置相匹配的用于神经网络处理器的数据解压装置,所述数据解压装置以n位的待解压数据Q作为其输入、输出m位解压数据R,包括:
q个具有两个输入接口以及一个控制接口的第一级多路选择器、q-1个具有两个输入接口以及一个控制接口的第二级多路选择器、q-1个具有两个输入接口以及一个控制接口的第三级多路选择器;
其中,所述每个第二级多路选择器的第一输入接口分别连接至所述第一级多路选择器中最高位的q-1个多路选择器的对应的输出,所述每个第三级多路选择器的第一输入接口分别连接至所述第二级多路选择器的对应的输出,并且
所述第一级多路选择器中最低位的n个多路选择器的第一输入接口分别连接至n位的待解压数据Q的对应位,所述第一级多路选择器中最低位的m个多路选择器的第二输入接口连接至固定输入值0,所述第一级多路选择器中最低位的m个多路选择器的控制接口分别连接至拼接控制信号C中的对应位,使得所述第一级多路选择器根据所述拼接控制信号C输出m位的第一中间解压结果,所述第一中间解压结果的最低n位为Q、最高m-n位为0;
所述第二级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值0,所述第二级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位屏蔽信号B中的对应位,使得所述第二级多路选择器根据所述符号位屏蔽信号B输出m-1位的第二中间解压结果,所述第二中间解压结果的第n-1位为0,其余位与所述第一中间解压结果的相应部分保持一致;
所述第三级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值1,所述第三级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位控制信号S中的对应位,使得所述第三级多路选择器根据所述符号位控制信号S输出m-1位的第三中间解压结果,若是所述n位的待解压数据Q的最高位为1,则所述第三中间解压结果的最高位为1,否则所述第三中间解压结果的最高位为0,所述第三中间解压结果的其余位与所述第二中间解压结果保持一致;
所述数据解压装置以所述第一中间解压结果的最低位、以及所述第三中间解压结果作为其输出。
优选地,根据所述数据解压装置,还包括解压控制信号产生装置,其用于根据待解压数据的位宽n以及期望输出的解压数据的位宽m产生所述拼接控制信号C的、以及根据所述待解压数据的位宽n产生所述符号位屏蔽信号B、以及根据所述待解压数据的第n位是否为1以及期望输出的解压数据的位宽m产生所述符号位控制信号S。
一种神经网络处理器,包括所述的数据压缩装置。
优选地,根据所述神经网络处理器,还包括所述数据解压装置。
优选地,根据所述神经网络处理器,还包括数据存储单元,用于对经由所述数据压缩装置压缩的数据进行存储。
优选地,根据所述神经网络处理器,还包括计算单元,用于对经由所述数据解压装置解压缩的数据执行加法、乘法、卷积、池化计算中的至少一种。
优选地,根据所述神经网络处理器,还包括乘法器和乘法器关断控制装置;其中,所述乘法器由多个低位宽的乘法器单元级联而成,各个乘法器单元的开或关由所述乘法器关断控制装置所控制,以通过相应的乘法器单元或它们的级联构成具有不同位宽的乘法器的拓扑结构。
优选地,根据所述神经网络处理器,所述乘法器包括:四个N-bit的乘法器单元、三个用于朝向高位移动N-bit的移位器、三个N-bit的加法器,用于实现对2N-bit的数值A和数值B的乘法运算;
其中,第一乘法器单元以数值A的最高N-bit、和数值B的最低N-bit为输入,第二乘法器单元以数值A的最低N-bit、和数值B的最低N-bit为输入,第三乘法器单元以数值A的最高N-bit、和数值B的最高N-bit为输入,第四乘法器单元以数值A的最低N-bit、和数值B的最高N-bit为输入,并且所述第一乘法器单元的输出经过第一移位器的结果与所述第二乘法器的输出被共同用作第一加法器的输入,所述第四乘法器单元的输出经过第二移位器的结果与所述第三乘法器的输出被共同用作第二加法器的输入,所述第二加法器的输出经过第三移位器的结果与所述第一加法器的输出被共同用作第三加法器的输入,所述第三加法器的输出被用作为所述乘法器的运算结果。
与现有技术相比,本发明的优点在于:
提供了一种具有多计算精度的神经网络处理器,使该处理器可在神经网络不同层采用不同的数据精度参与计算,在保证计算精度的前提下,减少了片上存储量,降低了数据传输能量损耗,尤其适合于片上资源有限的应用。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1是根据本发明的一个实施例的用于神经网络处理器的数据压缩装置的电路结构示意图;
图2a是根据本发明的一个实施例的针对图1中舍入单元的电路结构示意图,其采用直接取舍的方式将待压缩数据转换为位宽更小的数据;
图2b是根据本发明的又一个实施例的针对图1中舍入单元的电路结构示意图,其采用舍入进位的方式将待压缩数据转换为位宽更小的数据;
图3是根据本发明的一个实施例的用于神经网络处理器的数据解压装置的电路结构示意图,所述数据解压装置具有三级结构,包括8个第一级多路选择器、7个第二级多路选择器、7个第三级多路选择器;
图4a是根据本发明的一个实施例的用于神经网络处理器的16-bit乘法器的结构示意图,所述乘法器包括4个8-bit乘法器拓扑结构,每个8-bit乘法器拓扑结构中包括4个4-bit乘法器拓扑结构,每个4-bit乘法器拓扑结构中包括4个基本的2-bit乘法器单元;
图4b是根据本发明的一个实施例的乘法器的具体结构,其示意性地示出了以四个2-bit的乘法器联成一个4-bit的乘法器的结构。
具体实施方式
发明人经过研究后发现,神经网络各个网络层对精度的需求并不相同,若是针对每个网络层无差别地采用原始数据的精度进行存储和计算,是对计算资源以及能耗的一种浪费。即便如背景技术中所提到的现有技术通过软件量化各个网络层所需的精度,然而若是不改变处理器的硬件结构,则不能显著地改善硬件能耗和运算速度。因而,发明人认为,为了解决现有技术所存在问题,需要提供一种计算精度可变的专用神经网络处理器,提供相应的硬件结构以实现对神经网络数据精度的调节。
基于神经网络算法的特殊性,其对计算过程中产生的中间数据的准确度存在一定程度的容忍性。即便某个网络层计算所使用的中间数据与准确数值之间存在偏差,经过多个神经网络层的迭代计算,神经网络依旧能够获得具有高准确度的结果。在降低神经网络数据的计算精度时可以直接以较少的位宽来表示原本具有较大位宽的数据,例如以6bit表示原本8bit的数据。可以首先针对每个网络层确定该网络所需的计算精度,或者直接设置预计采用的低精度,采用本发明所提供的硬件电路将该网络层输入的数据的精度降低到低精度来进行存储。当针对给网络层进行计算时,从存储装置中读取该低精度的数据进行计算。
下面结合附图和具体实施方式对本发明所提供的用于神经网络处理器的硬件电路作详细说明。
图1示出了根据本发明的一个实施例的用于神经网络处理器的数据压缩装置,其用于将需要降低计算精度的m位的待压缩数据P的位宽减少到n位。如图1所示,该数据压缩装置中包括一个舍入单元、一个比较器0、一个比较器1、以及一个具有三路输入值和两路控制位的多路选择器。所述舍入单元以m位的待压缩数据P为输入,输出n位的中间压缩数据P’。中间压缩数据P’被输入到该多路选择器的第一路输入值,其还被输入到比较器0和比较器1中以进行相应的真值判断。在比较器0中,中间压缩数据P’与n位所能表示的最大值Omax进行大小比较,在本实施例中比较器0输出P’是否大于Omax的真值,即若P’>Omax为真,则输出1,否则比较器0的输出值为0。在比较器1中,中间压缩数据P’与n位所能表示的最小值Omin进行大小比较,若P’<Omin为真,则输出1,否则比较器1的输出值为0。比较器0和比较器1的输出被用于多路选择器的两个选择位。当比较器0和比较器1的输出为“00”时,多路选择器选择其第一个输入值(即P’)作为压缩后的结果,当比较器0和比较器1的输出为“10”时,多路选择器选择输出Omax,当比较器0和比较器1的输出为“01”时,多路选择器选择输出Omin
图1所示出的实施例采用了简单的电路元件来实现对神经网络数据降低精度的操作。其相比于针对一个通用的处理器采用软件实现调节数据精度,能够大大提升处理速度、改善能耗。
优选地,还可以在神经网络处理器中设置针对n位的Omax和Omin的查找表。在确定需要将原本高位宽的数据的精度降低到n位时,可以通过查找表来提供用于图1所示出的数据压缩装置的Omax和Omin
优选地,将经过上述数据压缩装置所获得的n位的压缩数据O提供给相应的计算单元进行诸如加法、乘法、卷积、池化等计算,和/或将压缩数据O存储在存储装置中以在需要执行计算时提供给相应的计算单元。
在本发明中,在决定需要将原数据的位宽减少到多少位时,可以通过查找预设的映射表来确定,也可以采用任意恰当的现有算法通过计算当前神经网络层对数据精度的需求而确定。
图2a示出了根据本发明的一个实施例的图1中的舍入单元。所述舍入单元采用的是移位截断器,即其被配置为对输入其中的m位的数据向右移动m-n位,并将移动后的结果截断成n位的数据,以作为舍入单元的输出。例如,假设m=8,n=6,输入的数据P为00101011,则经过图2a所示出的舍入单元后,输出的数据P’为001010。对于数据的最高位为最右位的情况,则移位截断器被配置为为对输入其中的m位的数据向左移动m-n位
上述舍入单元仅采用一个移位截断器,以非常简单的电路结构实现将大位宽的数据的精度降低到设置的低位宽。
根据本发明的又一个实施例,还提供了另一种针对图1中舍入单元的电路。如图2b所示,该舍入单元包括一个移位截断器、一个加法器、一个比较器2、以及一个具有两个输入接口的多路选择器。移位截断器和加法器的输出被分别用作为多路选择器的两个输入值,比较器2的输出被用作为多路选择器的控制位。通过比较待压缩数据P第m-n-1位(数据的最低位被记作第0位)的取值与0的大小,来控制多路选择器的输出。
参考图2b,移位截断器以m位的待压缩数据P为输入,输出将数据P向右移动m-n位的n位的中间结果P0,P0被用作多路选择器的第一路输入值以及加法器的输入。加法器计算P0+1的结果,并将该结果提供为多路选择器的第二路输入值。比较器2比较P的第m-n-1位是否为0的真值,并将该真值用作多路选择器的控制位,当P的第m-n-1位等于0时,比较器2的输出值为1,多路选择器输出P’=P0,当P的第m-n-1位不等于0时,比较器2的输出值为0,多路选择器输出P’=P0+1。
上述舍入单元基于待压缩数据被截断部分中的最高位选择直接舍去或者加1,例如若P为00101011,考虑到向右移动2位后,“11”的部分将被移除,被移除部分的最高位为“1”,则输出P’=1010+1=1011。其相较于前一实施例所提供的舍入单元,以增加简单的电路结构来换取更高的舍入精度。
经由本发明所提供的上述数据压缩装置,可以降低数据的位宽,减少数据所占用的存储空间、减少在部件之间进行数据传输所消耗的电能。进一步地,也可以对通过上述数据压缩装置所获得的压缩后的数据进行计算。
根据本发明的另一方面,出于硬件复用率的考虑,处理器通常不会针对不同的位宽需求而设置不同的硬件计算装置。以较大位宽的计算单元对较小位宽的数据进行计算时,还需要考虑区分出原本数据中的符号位和数值部分。在此情况下,有必要提供一种用于神经网络处理器的数据解压装置。
图3示出了根据本发明的一个实施例的用于神经网络处理器的数据解压装置,其具有三级结构,每级结构均具有多个多路选择器,在第一级结构中设置有8个多路选择器,在第二级以及第三级结构中均设置有7个多路选择器,每个多路选择器均具有两个输入接口、一个控制接口、以及一个输出接口。由图3所示出的结构,可以被用于对将n位的待解压数据Q解压为m位的数据R,m≥8,n<m。该数据解压装置可以用于将n位的待解压数据Q解压为m位的数据R,其可以将待解压数据解压为最多q=8-bit的数据,其在三级结构中分别设置了8、7、7个多路选择器。其中,第一级多路选择器用于将输入的n-bit待解压数据转换为前m-n bit为0的中间结果,第二级多路选择器用于将所述第一级多路选择器的中间结果中第n bit的值强制设置为0,第三级多路选择器用于将第二级多路选择器的中间结果中被屏蔽的符号位调整到第m位。
具体地,如图3所示,在三级结构中的每个多路选择器均具有两个输入接口以及一个控制接口,每个第二级多路选择器的第一输入接口分别连接至第一级多路选择器中最高位的q-1个多路选择器的对应的输出,每个第三级多路选择器的第一输入接口分别连接至所述第二级多路选择器的对应的输出。
其中,第一级多路选择器中最低位的n个多路选择器的第一输入接口分别连接至n位的待解压数据Q的对应位,第一级多路选择器中最低位的m个多路选择器的第二输入接口连接至固定输入值0,第一级多路选择器中最低位的m个多路选择器的控制接口分别连接至拼接控制信号C中的对应位,使得第一级多路选择器根据拼接控制信号C输出m位的第一中间解压结果,所述第一中间解压结果的最低n位为Q、最高m-n位为0。
假设,待解压数据Q为110110,期望将其解压为8-bit的数据R,则需要生成取值为11000000的拼接控制信号C。通过第一级结构后,拼接控制信号C控制多路选择器向结果中拼接了两位0以作为最高两位,由此获得的第一中间解压结果为00110110。
第二级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值0,第二级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位屏蔽信号B中的对应位,使得第二级多路选择器根据符号位屏蔽信号B输出m-1位的第二中间解压结果,第二中间解压结果的第n-1位为0,其余位与所述第一中间解压结果的相应部分保持一致。
在图3的示例中,第一中间解压结果中除去其最低位0以外的部分均被输入到第二级结构中,即0011011。需要生成的符号位屏蔽信号B为0010000。通过第二级结构后,符号位屏蔽信号B控制多路选择器将第二中间解压结果中代表符号位的值强制设置为0,由此获得的第二中间解压结果为0001011。
第三级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值1,第三级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位控制信号S中的对应位,使得第三级多路选择器根据符号位控制信号S输出m-1位的第三中间解压结果,若是所述n位的待解压数据Q的最高位为1,则第三中间解压结果的最高位为1,否则第三中间解压结果的最高位为0,第三中间解压结果的其余位与第二中间解压结果保持一致。
在图3的示例中,第二中间解压结果被输入到第三级结构中,此时需要生成取值为1000000的符号位控制信号S。根据符号位控制信号S的控制,第三级结构的多路选择器将待解压数据原本的符号位1设置为第三中间解压结果的最高位,由此获得取值为1001011的第三中间解压结果。
数据解压装置以第一中间解压结果的最低位R0、以及第三中间解压结果R1,…,R7作为其输出。
图3中数据解压装置最终输出10010110作为解压结果,其中最高位1为符号位,10110为数值部分。不难理解,在执行诸如乘法、除法等运算时,针对较高位的计算会消耗更多的计算资源。而经过本发明的解压装置的处理,解压结果中的较高位,例如图3中解压结果的第5、6位均为0,针对该解压结果进行乘法计算的计算速度和能耗都可以获得改善。
为了进一步配合本发明减少执行计算时的能耗,在本发明中还可以采用通过改变各个乘法器单元间连接而构成的拓扑结构而关断不必要的乘法器单元,从而减少计算所占用的硬件资源。
考虑到信号处理和神经网络计算中的数据位宽大多采用“二的幂次方”,因此可以通过将多个低位宽的乘法器单元级联成具有较高位宽的乘法器。例如图4a所示出地,可以将四个2-bit的乘法器级联成一个4-bit的乘法器,将四个4-bit的乘法器级联成一个8-bit的乘法器,将四个8-bit的乘法器级联成一个16-bit的乘法器。每个乘法器单元均连接有选通信号,在需要执行不同精度的计算时,通过选通信号控制相应拓扑结构的乘法器单元参与到计算中,并且关断未参与计算的乘法器单元。
图4b提供了一种具体的结构,以将四个2-bit的乘法器联成一个4-bit的乘法器为例,来介绍上述乘法器的连接方式及使用方法。如图4b所示,其包括四个分别被标识为①②③④的2-bit的乘法器、三个向左移动两位的移位器、以及三个2-bit的加法器,用于实现对4-bit的A和B的乘法运算。其中,乘法器①以A的最高两位(即A32)以及B的最低两位(即B10)为输入,乘法器②以A的最低两位(即A10)以及B的最低两位(即B10)为输入,乘法器③以A的最高两位(即A32)以及B的最高两位(即B32)为输入,乘法器④以A的最低两位(即A10)以及B的最高两位(即B32)为输入。乘法器①的输出经过第一移位器的结果与乘法器②的输出被共同输入到第一加法器,乘法器④的输出经过第二移位器的结果a1与乘法器③的输出被共同输入到第二加法器,第二加法器的输出经过第三移位器的结果与第一加法器的输出a2被共同输入到第三加法器。该第三加法器的输出即为4-bit的乘法器对于4-bit的A和B的乘法运算结果。
采用与上述类似的连接方式,还可以将四个4-bit的乘法器(不限于本发明所提供的具有特定结构的4-bit的乘法器)级联成8-bit的乘法器,以此类推来实现各种精度的乘法器结构。
假设,经过本发明的数据压缩装置的处理,发现无需使用长位宽的乘法器单元(例如16-bit的乘法器),而只需使用较短位宽的乘法器单元(例如4-bit的乘法器),这时可以产生相应的针对每个乘法器单元的选通信号,仅选通与4-bit乘法器对应拓扑结构中的乘法器单元,并关闭其余的乘法器单元,仅由被选通的4-bit的乘法器来实现相应的乘法运算,以减少不必要的对硬件资源的占用。
通过上述实施例,本发明提供一款具有多计算精度的神经网络处理器,使该处理器可在神经网络不同层采用不同的数据精度参与计算,在保证计算精度的前提下,减少了片上存储量,降低了数据传输能量损耗。
需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (14)

1.一种用于神经网络处理器的数据压缩装置,包括:
一个舍入单元,其以m位的待压缩数据P为输入,输出n位的中间压缩数据P’,n<m;以及
一个第一比较器,其以所述舍入单元的输出P’为输入,用于比较P’和Omax的大小,Omax为n位所能表示的最大值;以及
一个第二比较器,其以所述舍入单元的输出P’为输入,用于比较P’和Omin的大小,Omin为n位所能表示的最小值;以及
一个第一多路选择器,其以所述舍入单元的输出P’、Omax、和Omin分别作为其三个输入值,以所述第一比较器和所述第二比较器的输出作为其两个控制位,用于根据所述两个控制位从所述三个输入值中进行选择,以在P’不大于Omax且P’不小于Omin时输出P’,在P’大于Omax时输出Omax,在小于Omin时输出Omin,以作为针对所述待压缩数据P的压缩结果O。
2.根据权利要求1所述的数据压缩装置,其中,
所述第一比较器,输出P’>Omax是否为真的结果;
所述第二比较器,输出P’<Omin是否为真的结果;
所述第一多路选择器,根据所述两个控制位从所述三个输入值中进行选择,在所述第一比较器和所述第二比较器的输出均为非真时输出P’,在所述第一比较器的输出为真、且所述第二比较器的输出为非真时输出Omax,在所述第一比较器的输出为非真、且所述第二比较器的输出为真时输出Omin
3.根据权利要求1所述的数据压缩装置,其中所述舍入单元为移位器,用于将输入的m位的待压缩数据P向右移动m-n位以输出n位的中间压缩数据P’。
4.根据权利要求1所述的数据压缩装置,其中所述舍入单元包括:
一个移位器,用于将输入的m位的待压缩数据P向右移动m-n位以输出n位的中间压缩数据P0
一个加法器,其以所述移位器的输出P0作为其输入,输出P0+1;
一个第三比较器,其用于比较待压缩数据P的第m-n-1位是否等于0;
一个第二多路选择器,其以所述移位器的输出P0以及所述加法器的输出P0+1分别作为其两个输入值,以所述第三比较器的输出作为其控制位,用于根据所述控制位从所述两个输入值中进行选择,以在P的第m-n-1位为0时输出P0,在P的第m-n-1位不为0时输出P0+1。
5.根据权利要求4所述的数据压缩装置,其中,
所述第三比较器,输出P的第m-n-1位等于0是否为真的结果;
所述第二多路选择器,在所述第三比较器的输出为真时输出P0,在所述第三比较器的输出为真时输出P0+1。
6.一种与权利要求1-5中任意一项所述的数据压缩装置相匹配的用于神经网络处理器的数据解压装置,所述数据解压装置以n位的待解压数据Q作为其输入、输出m位解压数据R,包括:
q个具有两个输入接口以及一个控制接口的第一级多路选择器、q-1个具有两个输入接口以及一个控制接口的第二级多路选择器、q-1个具有两个输入接口以及一个控制接口的第三级多路选择器;
其中,每个所述第二级多路选择器的第一输入接口分别连接至所述第一级多路选择器中最高位的q-1个多路选择器的对应的输出,每个所述第三级多路选择器的第一输入接口分别连接至所述第二级多路选择器的对应的输出,并且
所述第一级多路选择器中最低位的n个多路选择器的第一输入接口分别连接至n位的待解压数据Q的对应位,所述第一级多路选择器中最低位的m个多路选择器的第二输入接口连接至固定输入值0,所述第一级多路选择器中最低位的m个多路选择器的控制接口分别连接至拼接控制信号C中的对应位,使得所述第一级多路选择器根据所述拼接控制信号C输出m位的第一中间解压结果,所述第一中间解压结果的最低n位为Q、最高m-n位为0;
所述第二级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值0,所述第二级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位屏蔽信号B中的对应位,使得所述第二级多路选择器根据所述符号位屏蔽信号B输出m-1位的第二中间解压结果,所述第二中间解压结果的第n-1位为0,其余位与所述第一中间解压结果的相应部分保持一致;
所述第三级多路选择器中最低位的m-1个多路选择器的第二输入接口连接至固定输入值1,所述第三级多路选择器中最低位的m-1个多路选择器的控制接口分别连接至符号位控制信号S中的对应位,使得所述第三级多路选择器根据所述符号位控制信号S输出m-1位的第三中间解压结果,若是所述n位的待解压数据Q的最高位为1,则所述第三中间解压结果的最高位为1,否则所述第三中间解压结果的最高位为0,所述第三中间解压结果的其余位与所述第二中间解压结果保持一致;
所述数据解压装置以所述第一中间解压结果的最低位、以及所述第三中间解压结果作为其输出。
7.根据权利要求6所述的数据解压装置,还包括解压控制信号产生装置,其用于根据待解压数据的位宽n以及期望输出的解压数据的位宽m产生所述拼接控制信号C的、以及根据所述待解压数据的位宽n产生所述符号位屏蔽信号B、以及根据所述待解压数据的第n位是否为1以及期望输出的解压数据的位宽m产生所述符号位控制信号S。
8.一种神经网络处理器,包括如权利要求1-5中任意一项权利要求所述的数据压缩装置。
9.根据权利要求8所述的神经网络处理器,还包括如权利要求6所述的数据解压装置。
10.根据权利要求8所述的神经网络处理器,还包括数据存储单元,用于对经由所述数据压缩装置压缩的数据进行存储。
11.根据权利要求9所述的神经网络处理器,还包括计算单元,用于对经由所述数据解压装置解压缩的数据执行加法、乘法、卷积、池化计算中的至少一种。
12.根据权利要求8所述的神经网络处理器,还包括乘法器和乘法器关断控制装置;其中,所述乘法器由多个低位宽的乘法器单元级联而成,各个乘法器单元的开或关由所述乘法器关断控制装置所控制,以通过相应的乘法器单元或它们的级联构成具有不同位宽的乘法器的拓扑结构。
13.根据权利要求12所述的神经网络处理器,其中所述乘法器包括:四个N-bit的乘法器单元、三个用于朝向高位移动N-bit的移位器、三个N-bit的加法器,用于实现对2N-bit的数值A和数值B的乘法运算;
其中,第一乘法器单元以数值A的最高N-bit、和数值B的最低N-bit为输入,第二乘法器单元以数值A的最低N-bit、和数值B的最低N-bit为输入,第三乘法器单元以数值A的最高N-bit、和数值B的最高N-bit为输入,第四乘法器单元以数值A的最低N-bit、和数值B的最高N-bit为输入,并且所述第一乘法器单元的输出经过第一移位器的结果与所述第二乘法器的输出被共同用作第一加法器的输入,所述第四乘法器单元的输出经过第二移位器的结果与所述第三乘法器的输出被共同用作第二加法器的输入,所述第二加法器的输出经过第三移位器的结果与所述第一加法器的输出被共同用作第三加法器的输入,所述第三加法器的输出被用作为所述乘法器的运算结果。
14.根据权利要求8所述的神经网络处理器,还包括:设置针对n位的Omax和Omin的查找表,当确定需要将原本高位宽的数据的精度降低到n位时,通过查询所述查找表来确定所述数据压缩装置的Omax和Omin
CN201811071801.1A 2018-09-14 2018-09-14 用于实现计算精度可变的神经网络处理器的装置 Active CN109325590B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811071801.1A CN109325590B (zh) 2018-09-14 2018-09-14 用于实现计算精度可变的神经网络处理器的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811071801.1A CN109325590B (zh) 2018-09-14 2018-09-14 用于实现计算精度可变的神经网络处理器的装置

Publications (2)

Publication Number Publication Date
CN109325590A CN109325590A (zh) 2019-02-12
CN109325590B true CN109325590B (zh) 2020-11-03

Family

ID=65265216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811071801.1A Active CN109325590B (zh) 2018-09-14 2018-09-14 用于实现计算精度可变的神经网络处理器的装置

Country Status (1)

Country Link
CN (1) CN109325590B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110728365B (zh) * 2019-09-12 2022-04-01 东南大学 多位宽pe阵列计算位宽的选择方法及计算精度控制电路
CN112990449B (zh) * 2019-12-12 2022-10-25 上海交通大学 一种面向神经网络的可变计算精度的simt***
CN113392954B (zh) * 2020-03-13 2023-01-24 华为技术有限公司 终端网络模型的数据处理方法、装置、终端以及存储介质
CN114330749A (zh) * 2021-12-30 2022-04-12 中国石油大学(华东) 数字信号处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0615892A1 (en) * 1993-03-17 1994-09-21 Mitsubishi Jidosha Kogyo Kabushiki Kaisha Vehicle slip angle measuring method and a device therefor
CN106056628A (zh) * 2016-05-30 2016-10-26 中国科学院计算技术研究所 基于深度卷积神经网络特征融合的目标跟踪方法及***
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN107423816A (zh) * 2017-03-24 2017-12-01 中国科学院计算技术研究所 一种多计算精度神经网络处理方法和***
CN107590533A (zh) * 2017-08-29 2018-01-16 中国科学院计算技术研究所 一种用于深度神经网络的压缩装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0615892A1 (en) * 1993-03-17 1994-09-21 Mitsubishi Jidosha Kogyo Kabushiki Kaisha Vehicle slip angle measuring method and a device therefor
CN106056628A (zh) * 2016-05-30 2016-10-26 中国科学院计算技术研究所 基于深度卷积神经网络特征融合的目标跟踪方法及***
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN107423816A (zh) * 2017-03-24 2017-12-01 中国科学院计算技术研究所 一种多计算精度神经网络处理方法和***
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN107590533A (zh) * 2017-08-29 2018-01-16 中国科学院计算技术研究所 一种用于深度神经网络的压缩装置

Also Published As

Publication number Publication date
CN109325590A (zh) 2019-02-12

Similar Documents

Publication Publication Date Title
CN109325590B (zh) 用于实现计算精度可变的神经网络处理器的装置
US11222254B2 (en) Optimized neuron circuit, and architecture and method for executing neural networks
CN110689125A (zh) 计算装置
CN111832719A (zh) 一种定点量化的卷积神经网络加速器计算电路
US5506797A (en) Nonlinear function generator having efficient nonlinear conversion table and format converter
KR20190062129A (ko) 컨볼루션 신경망 계산을 위한 저전력 하드웨어 가속 방법 및 시스템
CN108647779B (zh) 一种低位宽卷积神经网络可重构计算单元
CN111581593B (zh) 可配置重用的分段式查找表激活函数实现装置
CN109816105B (zh) 一种可配置的神经网络激活函数实现装置
CN113298245B (zh) 一种基于数据流架构的多精度神经网络计算装置以及方法
CN108255777B (zh) 用于fpga的嵌入式浮点型dsp硬核结构
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
CN111507465B (zh) 一种可配置的卷积神经网络处理器电路
Venkatachalam et al. Approximate sum-of-products designs based on distributed arithmetic
US11354097B2 (en) Compressor circuit, Wallace tree circuit, multiplier circuit, chip, and device
Yang et al. Approximate adder with hybrid prediction and error compensation technique
JP2022512211A (ja) 画像処理方法、装置、車載演算プラットフォーム、電子機器及びシステム
Wang et al. PL-NPU: An energy-efficient edge-device DNN training processor with posit-based logarithm-domain computing
Rekha et al. FPGA implementation of exponential function using cordic IP core for extended input range
KR102340412B1 (ko) 스토캐스틱 연산을 위한 로그-양자화된 곱셈 및 누적기와 이를 포함하는 가속기
CN111930673A (zh) 异构智能处理量化装置、量化方法、电子设备及存储介质
Kumar et al. Complex multiplier: implementation using efficient algorithms for signal processing application
CN111930670B (zh) 异构智能处理量化装置、量化方法、电子设备及存储介质
CN110084362B (zh) 一种面向神经网络的对数量化装置及方法
KR20220018199A (ko) 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법

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