一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据位数转换电路及方法与流程

2022-03-14 04:33:30 来源:中国专利 TAG:


1.本发明总的来说涉及集成电路领域,具体而言,涉及一种数据位数转换电路。此外,本发明还涉及一种用于转换输入数据的位数的方法。


背景技术:

2.在数据处理时,在一些对处理精度要求不高的场合,需要对输入数据的位数进行变换、尤其是降低输入数据的位数以降低计算开销。例如,在神经网络中,每一层(如输入层、隐藏层和输出层)的结果为多个神经单元的乘积结果之和,这就造成每一层的输出结果的位数与输入位数升高,因此必须进行数据位数降低。例如每一层的输入数据为8位二进制数,但是经过乘加运算以后,输出结果变为16位,此时必须将输出结果的位数降为8位,才能参与下一层的计算。另外,在存算一体的存储器中,在执行循环计算时,不同列的计算结果输入和输出的精度有可能不同,因此需要进行量化操作、即输入数据位数转换来统一输入输出精度,以便于后续的操作。
3.现有的输入数据位数转(m位量化后降为n位)例如包括下列几种方案:
4.1.直接进行移位:优点是电路简单,缺点是精度较低,这是因为诸如存内计算、神经网络之类的应用领域中的输入数据的最大可能值通常情况不是2
m-1,因此如果直接移位(即移除最后m-n位)至2
n-1个值,则结果无法与整除对应,由此造成输出结果精度大大降低,而且也不能按任意因子进行位数转换。
5.2.在片上直接植入传统的基于浮点数的量化电路:优点是片上集成度高,运算速度快,缺点是实现复杂,高功耗。专用硬件的实现需要用浮点计算单元,此种设计具有面积大,功耗高的缺点。例如存内计算处理器往往用于高能效低功耗的落地场景,传统的基于浮点数的量化的高功耗并不适用于高并行度(需要很巨大次数量化计算同时进行)的存内计算处理器中。
6.3.在片外(如存储器外)的处理器中进行基于浮点数的量化降位数计算:优点是,可通过软件对处理器进行编程来实现所述计算,从而降低硬件成本,缺点是实现复杂和超高延时,因为该方案不利用专用电路而是将存内计算的全部结果送到额外的外置处理器中进行基于浮点数的量化计算,除去消耗更大的带宽去传输数据以外(数据流为m位,而转换后仅需n位),每次结果都还需要经过外置处理器进行计算,由此带来相当大的额外的延时。
7.目前需要一种简单、低成本、高精度的数据位数降低或量化方案。


技术实现要素:

8.从现有技术出发,本发明的任务是提供一种数据位数转换电路及方法,通过所述转换电路和/或方法,可以以任意的转换因子ce对输入数据进行高精度的位数转换,其中通过转换因子ce可以对转换结果进行缩放。
9.在本发明的第一方面,该任务通过一种数据位数转换电路来解决,其中所述电路的输入数据x0为m位二进制整数,并且所述电路的输出数据y为n位二进制整数,m和n均为自
然数,且m》n,该电路包括n个计算单元,其中所述n个计算单元中的第i个计算单元包括下列部件,其中i为整数且1≤i≤n:
10.移位器,其被配置为将转换因子ce向右移位i位,其中ce为整数且ce≤2
m-1;;
11.多路复用器,其第一输入端输入输入数据x
i-1
并且与减法器的第一输入端连接,所述多路复用器的第二输入端与减法器的差值输出端连接,所述多路复用器的控制输入端与减法器的符号输出端连接,并且所述多路复用器的选择输出端输出输入数据xi;以及
12.减法器,其第二输入端与移位器的输出端连接,所述减法器的符号输出端输出输出数据y的第n-i位。
13.在本发明的一个扩展方案中规定,所述多路复用器为2路复用器。
14.在本发明的另一扩展方案中规定,所述转换因子ce是输入数据x0的最大可能值或者是根据应用场景定义的值。在本发明中,ce是可任意设置的整数、例如可以根据应用场景来设置。在一个优选实施例中,ce是输入数据x0的最大可能值,通过这样做,可以降低位数的同时,对输入数据x0进行归一化(normalization),这例如在神经网络的场景中是有利的。通过调节转换因子ce的大小,可以对转换结果进行缩放、即多大份额的x被转换成y。
15.在本发明的第二方面,前述任务通过一种用于神经网络计算的电路来解决,该电路包括:
16.多个层,每个层包括多个神经单元;以及
17.根据权利要求1至2之一所述的数据位数转换电路,所述数据位数转换电路被配置为从第一层的神经单元接收输入数据x0并且输出输出数据y以作为与第一层相邻的第二层的神经单元的输入数据。
18.在此,神经网络电路中的“神经网络”可以由软件、硬件、固件或其组合来实现。在神经网络为硬件时,根据本发明的数据位数转换电路从相应的神经网络硬件接收数据并处理数据,然后将数据发送给相应的神经网络硬件。在神经网络为软件或固件时,根据本发明的数据位数转换电路从运行该软件或固件的相应的硬件接收数据并处理数据,然后将数据发送给所述硬件,然后所述数据由所述硬件上运行的神经网络软件或固件进行进一步处理。
19.本发明还涉及一种存储器,其具有根据本发明的数据位数转换电路。所述存储器优选为存算一体存储器,其被配置为执行计算和存储功能二者。当所述存储器在执行计算功能、例如循环计算时,使用根据本发明的数据位数转换电路来进行数据位数转换,以便对中间计算结果进行数据整形。
20.在本发明的第三方面,前述任务通过一种用于转换输入数据的位数的方法来解决,其中输入数据x0为m位二进制整数,并且输出数据y为n位二进制整数,m和n均为自然数,且m》n,该方法包括下列步骤:
21.提供转换因子ce,其中ce为整数且ce≤2
m-1;以及
22.执行n次计算以分别算出输出数据y的第n-1位至第0位,其中所述n次计算中的第i次计算包括下列步骤,其中i为整数且1≤i≤n:
23.将ce除以2i以作为参考值ref;
24.将输入数据x
i-1
与参考值ref相比较;以及
25.如果输入数据x
i-1
大于参考值ref,则输出1作为输出数据y的第n-i位并且选择输
入数据x
i-1
作为输入数据xi,否则输出0作为输出数据y的第n-i位并且选择输入数据x
i-1
与参考值ref之间的差值作为输入数据xi。
26.在本发明的一个扩展方案中规定,所述转换因子ce是x0的最大可能值ce。
27.在本发明的另一扩展方案中规定,输入数据x的最大可能值ce通过下列步骤来确定:
28.设置ce=2
m-1;或者
29.根据经验设置ce,其中ce<2
m-1;或者
30.根据前后电路确定输入数据x的最大可能值以作为ce,其中ce<2
m-1。
31.在本发明的又一扩展方案中规定,将输入数据x
i-1
与参考值ref相比较包括:
32.将输入数据x
i-1
与参考值ref相减以获得差值和符号位;以及
33.根据符号位确定x
i-1
是否大于参考值ref。
34.在本发明的另一扩展方案中规定,将ce除以2i以作为参考值ref包括:
35.将ce向右移位i位以作为参考值ref。
36.在本发明的第四方面,前述任务通过一种用于在神经网络中转换输入数据的位数的方法来解决,其中所述神经网路包括多个层,每个层都包括多个神经单元,该方法包括下列步骤:
37.从第一层的神经单元接收输入数据x0;
38.确定输入数据x0的最大可能值ce,其中ce≤2
m-1;
39.执行n次计算以分别算出输出数据y的第n-1位至第0位,其中所述n次计算中的第i次计算包括下列步骤,其中i为整数且1≤i≤n:
40.将ce除以2i以作为参考值ref;
41.将输入数据x
i-1
与参考值ref相比较;以及
42.如果输入数据x
i-1
大于参考值ref,则输出1作为输出数据y的第n-i位并且选择输入数据x
i-1
作为输入数据xi,否则输出0作为输出数据y的第n-i位并且选择输入数据x
i-1
与参考值ref之间的差值作为输入数据xi;以及
43.将输出数据y输出到与第一层相邻的第二层的神经单元。
44.在本发明的一个扩展方案中规定,所述输入数据x0是第一层的多个神经单元的输出数据d之和,所述输出数据d的位数均为n。
45.在本发明的第五方面,前述任务通过一种数据位数转换电路来解决,其中所述电路的输入数据x0为m位二进制整数,并且所述电路的输出数据y为n位二进制整数,m和n均为自然数,且m》n,该电路包括:
46.一个或多个计算单元,其中每个计算单元包括下列部件:
47.移位器,其被配置为将转换因子ce向右移位i位,其中ce为整数且ce≤2
m-1,其中i为整数且1≤i≤n;
48.多路复用器,其第一输入端输入输入数据x
i-1
并且与减法器的第一输入端连接,所述多路复用器的第二输入端与减法器的差值输出端连接,所述多路复用器的控制输入端与减法器的符号输出端连接,并且所述多路复用器的选择输出端输出输入数据xi;以及
49.减法器,其第二输入端与移位器的输出端连接,所述减法器的符号输出端输出输出数据y的第n-i位;
50.控制器,其被配置为在计算单元完成每次计算以后使i递增1并且将计算单元输出的输入数据xi输送到计算单元。
51.在此,所述一个或多个计算单元优选地包括单个计算单元,其中由该计算单元执行n次运算,并且由控制器对运算次数i进行递增并将计算单元的当前计算结果重新输入到计算单元中以进行下一次迭代。由此,可以达到计算单元的最大利用,从而最小化芯片面积。然而,该方案与n个计算单元的方案相比,延迟时间更长,因为必须等到n次计算全部完成以后,才能输入下一个x0;而在n个计算单元的情况下,可以每次计算都持续地输入x0,并能连续地得出相应结果。
52.在本发明的一个优选方案中规定,所述控制器包括:
53.计数器,其被配置为在计算单元每次完成计算以后递增1,并且在达到上限值n以后复位;以及
54.暂存器,其被配置为存储计算单元输出的输入数据xi并且在计算单元的下一次计算时将其输送到计算单元。
55.本发明至少具有下列有益效果:
56.(1)本发明的方案通过避免浮点数计算电路而得到大大简化,由此最小化电路的设计面积;
57.(2)本发明的电路容易实现与输出电路布线对齐(pitch match),降低了版图设计的难度,这点在以大面积存储单元为主的存内计算设计中,非常重要;在存内计算输出信号处理需要进行重复多次的循环计算,使用特定的量化电路可大大降低每次计算结果输出的功耗;
58.(3)本发明的方案的转换精度与现有技术相比大大提高,保证了输出结果的准确性,例如,本发明的精度与模除法或量化电路的精度相当,但实现更加简单;
59.(4)本发明的方案中的转换位数可调节,例如输出位数可以通过命令信号,设置成从1至m位中的任意位数(1≤n≤m),更适合输入输出会产生不同位数的应用场合、如存内计算、神经网络等。
附图说明
60.下面结合具体实施方式参考附图进一步阐述本发明。
61.图1示出了根据本发明的数据位数转换电路的电路图;
62.图2示出了根据本发明的数据位数转换电路的计算单元的电路图;
63.图3示出了根据本发明的方案的原理图;
64.图4示出了根据本发明的方案在神经网络领域中的应用;以及
65.图5示出了根据本发明的方案在存内计算领域中的应用。
具体实施方式
66.应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
67.在本发明中,除非特别指出,“布置在

上”、“布置在

上方”以及“布置在

之上”并未排除二者之间存在中间物的情况。此外,“布置在

上或上方”仅仅表示两个部件之间
的相对位置关系,而在一定情况下、如在颠倒产品方向后,也可以转换为“布置在

下或下方”,反之亦然。
68.在本发明中,各实施例仅仅旨在说明本发明的方案,而不应被理解为限制性的。
69.在本发明中,除非特别指出,量词“一个”、“一”并未排除多个元素的场景。
70.在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。另外,除非另行说明,本发明的不同实施例中的特征可以相互组合。例如,可以用第二实施例中的某特征替换第一实施例中相对应或功能相同或相似的特征,所得到的实施例同样落入本技术的公开范围或记载范围。
71.在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
72.另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
73.首先,阐述本发明的原理。在本技术中,数据位数转换电路或方法将位数为m的输入数据x(可表示为x[m-1:0])转换成位数为n的输出数据y(可表示为y[n-1:0]),其中m》n。在此,转换因子为ce,其中ce为整数且ce≤2
m-1,ce可以被视为缩放系数,即ce决定多大份额的x被转换为y。在此,在根据本发明的方案中,x、y和ce之间的理想数学关系如下:
[0074][0075]
在本技术中,通过由n个计算单元逐次执行下列计算来逼近上述公式(在此y为y的某一位、即y=y[0],y[1],....y[n-1]):
[0076][0077]
从上面的公式可以得知,本发明的方案可以在采用简单电路的情况下实现较高转换精度,且可以通过调整ce的大小对转换结果进行缩放。且转换原理可以具体参阅图3。如图3所示,本发明的方案是将位数为m的输入数据x分成2
m-n
份(在本示例中,m-n=4,但是其它数值也是可设想的),其结果即为n位输出数据。
[0078]
下面结合具体实施方式参考附图进一步阐述本发明。
[0079]
图1示出了根据本发明的数据位数转换电路100的电路图。
[0080]
如图1所示,根据本发明的数据位数转换电路100用于将输入数据x0转换成输出数据y,其中输入数据x0为m位二进制整数,并且所述电路的输出数据y为n位二进制整数,m和n均为自然数,且m》n。在本实施例中,m=16,n=8,但是应当指出,在本发明的教导下其它数目的m和n也是可设想的,例如m=16、20、32、40、128、200、256、500、512,n=16、20、32、40、128、200、256、500、512等等。数据位数转换电路100包括n个计算单元101、在此为8个计算单元。在此,第一计算单元101接收输入信号x0以及转换因子ce,经计算后输出y的第8位、即y[7]和x1;第二计算单元101接收输入信号x1以及转换因子ce,经计算后输出y的第7位、即y
[6]和x2;....依次类推,直到得出y的全部位、即y[0]至y[7]。从图1可以得知,输出的y为8位二进制数。x0从16位二进制数转换成了8位的二进制数y。
[0081]
在一个优选的方案中,根据本发明的数据位数转换电路100仅仅包括单个计算单元,其中该计算单元被配置为执行n次计算,并且每次计算中的输入数据x是上一次计算的结果,并且每次计算输出y的一位。在该优选方案中,根据本发明的数据位数转换电路100还包括控制器(未示出),其被配置为在计算单元完成每次计算以后使i递增1并且将计算单元输出的输入数据xi输送到计算单元。控制器例如可以包括计数器和暂存器(如锁存器等)。由此,可以达到计算单元的最大利用,从而最小化芯片面积。然而,该方案与n个计算单元的方案相比,延迟时间更长,因为必须等到n次计算全部完成以后,才能输入下一个x0;而在n个计算单元的情况下,可以每次计算都持续地输入x0,并能连续地得出相应结果。
[0082]
图2示出了根据本发明的数据位数转换电路100的计算单元101的电路图。
[0083]
如图2所示,每个数据位数转换电路100包括下列部件:
[0084]
·
移位器(未示出),其被配置为将转换因子ce向右移位i位,其中ce为整数且ce≤2
m-1,i∈[1,2,....8]。在本实施例中,每个计算单元均具有移位器,但是在其它实施例中,全部计算单元可以共用单个移位器。
[0085]
·
多路复用器202,其第一输入端(1)输入输入数据x
i-1
并且与减法器的第一输入端( )连接,所述多路复用器的第二输入端(0)与减法器的差值输出端(s)连接,所述多路复用器的控制输入端与减法器的符号输出端(c)连接,并且所述多路复用器的选择输出端输出输入数据xi。多路复用器优选为2路复用器,即根据控制输入的信号(0或1)选择性地输出两个输入端中的一个。
[0086]
·
减法器201,其第二输入端(-)与移位器的输出端连接,所述减法器的符号输出端(c)输出输出数据y的第n-i位。减法器201被配置为将第一输出端与第二输出段的数据相减,并输出差值和符号位。
[0087]
图4示出了根据本发明的方案在神经网络领域中的应用。
[0088]
如图4所示,神经网络400包括输入层401、隐藏层402和输出层403。神经网络400可以由软件、硬件或其组合来实现。输入层401包括3个神经单元401a-401c,隐藏层402包括4个神经单元402a-402d,并且输出层包403包括2个神经单元403a-403b。在此应当指出,所述层数目和神经单元的数目仅仅是示意性的,在其它实施例中,可以存在不同数目的层和神经单元。在神经网络400中,每个神经单元都对来自上一层的多个神经单元的多个输出数据进行加权求和,即将每个输出数据乘以某个系数以后再求和,这就导致:每个输出结果的位数与输入结果的位数相比增加,这就需要增加额外的软件或硬件开销来处理位数增加的数据。为了避免上述开销,可以在相邻两层之间布置根据本发明的数据位数转换电路100,由此将神经单元的输出结果转换为统一的位数,从而省去额外的开销。在此,在隐藏层402与输出层403之间布置有多个数据位数转换电路100,从而将隐藏层402的每个神经单元402a-402b的输出数据的位数转换成统一位数的数据,所述数据然后在被输送给输出层403的神经单元403a-403b。
[0089]
图5示出了根据本发明的方案在存内计算领域中的应用。
[0090]
如图5所示,在存算一体存储器的应用中,输入数据首先在存内计算阵列或存储器501中进行运算,然后通过读取放大器或模数转换器502被放大和/或模数转换,经处理的数
据然后被输送到移位累加器503。在此处理过程中,输入数据的位数很可能发生变化、尤其是增加。如果降低输入数据的位数,则需要额外的软件或硬件开销来处理位数增加的数据。在此,通过在移位累加器503之后布置根据本发明的数据位数转换电路100,可以将移位累加器503输出的数据进行位数转换、即降低到例如与输入数据相同的位数。最后,经位数转换的数据继续参与后续运算,例如通过存内计算阵列或存储器501进行循环运算。
[0091]
虽然本发明的一些实施方式已经在本技术文件中予以了描述,但是本领域技术人员能够理解,这些实施方式仅仅是作为示例示出的。本领域技术人员在本发明的教导下可以想到众多的变型方案、替代方案和改进方案而不超出本发明的范围。所附权利要求书旨在限定本发明的范围,并由此涵盖这些权利要求本身及其等同变换的范围内的方法和结构。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献