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

尾随或前导数字预测器的制作方法

2022-08-13 14:05:15 来源:中国专利 TAG:

尾随或前导数字预测器
1.本技术是申请日为2016年9月5日,申请号为201610802627.8,发明名称为“尾随或前导数字预测器”的申请的分案申请。
2.背景
3.存在许多情况,其中从左手侧(即,以最高有效位(msb)开始)或从右手侧(即,以最低有效位(lsb))开始计数二进制数中的连续的一或零的数量是有用的。当从最高有效位计数时,这可以被称为计数前导一或零(例如,二进制数0111具有一个前导零而二进制数1100具有两个前导一)。当从最低有效位计数时,这可以被称为计数尾随一或零(例如,二进制数1100具有两个尾随零而二进制数1000具有三个尾随零)。
4.计数前导或尾随零包括分别从msb或lsb检测二进制数中的第一个一;或者换言之,从msb或lsb检测第一个从零至一的第一转换。同样地,计数前导或尾随一包括分别从msb或lsb检测二进制数中的第一个零;或者换言之,从msb或lsb检测第一个从一至零的转换。
5.计数前导零的数量的前导零计数器(lzc)例如可以用于在浮点运算(例如,浮点加法)中的规格化。然而,将认识到,计数尾随零的尾随零计数器(tzc)可以通过连接输入使得输入二进制数的真正msb被连接到尾随零计数器或前导零计数器的lsb输入来用作前导零计数器,并且反之亦然。
6.下面描述的实施例仅作为示例被提供且不是解决已知的尾随或前导零预测器的任何或所有缺点的实现的限制。
7.概述
8.本概述被提供来引入下面在详细描述中进一步描述的以简化形式的一系列概念。该概述并不旨在识别所要求保护的主题的关键特征或本质特征,其也不旨在用于帮助确定所要求保护的主题的范围。
9.本文描述的是用于估计在定点算术运算的结果中的前导零的数量的方法和前导零预测器,其关于任何带符号的定点数精确到一位之内。前导零预测器包括输入编码电路,其从定点数生成编码的输入字符串;基于窗口的代理字符串生成电路,其通过检查编码的输入字符串的连续窗口并且基于检查设置代理字符串的对应位来生成代理字符串,该代理字符串的前导一是对算术运算的结果中的前导一的估计;以及计数器电路,其被配置为基于代理字符串中的前导一估计算术运算的结果中的前导零的数量。
10.第一方面提供前导零预测器,该前导零预测器被配置为估计在两个或更多个定点数上执行的算术运算的结果中的前导零的数量,该前导零预测器包括:输入编码电路,其被配置为从两个或更多个定点数生成编码输入字符串;基于窗口的代理字符串生成电路,其被配置为通过检查编码输入字符串的连续窗口并且基于检查设置代理字符串的对应位来生成该代理字符串,该代理字符串的前导一是对算术运算的结果中的前导一的估计,前导一的估计在关于任何带符号的定点数的算术运算的实际结果中的前导一的一个数位位置之内;以及计数器电路,其被配置为基于代理字符串中的前导一估计算术运算的结果中的前导零的数量。
11.第二方面提供估计在两个或更多个定点数上执行的算术运算的结果中的前导零的数量的方法,该方法包括:使用输入编码电路从两个或更多个定点数生成编码输入字符串;使用基于窗口的代理字符串生成电路通过检查编码输入字符串的连续窗口并且基于检查设置代理字符串的对应位来生成该代理字符串,该替代字符串的前导一是对算术运算的结果中的前导一的估计,前导一的估计在关于任何带符号的定点数的算术运算的实际结果中的前导一的一个数位位置之内;以及使用计数器电路基于代理字符串中的前导一来估计算术运算的结果中的前导零的数量。
12.对技术人员将明显的是,优选的特征可被适当地组合,并可与本发明的任何方面组合。
13.本技术提供了如下内容:
14.1)一种前导零预测器(300),其被配置为估计在对两个或更多个定点数执行的算术运算的结果中的前导零的数量,所述前导零预测器包括:
15.输入编码电路(402),其被配置为从所述两个或更多个定点数生成编码输入字符串;
16.基于窗口的代理字符串生成电路(404),其被配置为通过检查所述编码输入字符串的连续窗口并且基于所述检查设置代理字符串的对应位来生成所述代理字符串,所述代理字符串的前导一是对所述算术运算的结果中的前导一的估计,所述前导一的估计是在关于任何带符号的定点数的所述算术运算的实际结果中的前导一的一个数位位置之内;以及
17.计数器电路(304),其被配置为基于所述代理字符串中的所述前导一来估计所述算术运算的结果中的前导零的数量。
18.2)根据1)所述的前导零预测器(300),其中,所述编码输入字符串的窗口包括所述编码输入字符串的预定数量的连续位置。
19.3)根据2)所述的前导零预测器(300),其中,所述预定数量大于或等于三。
20.4)根据2)或3)所述的前导零预测器(300),其中,所述基于窗口的代理字符串生成电路(404)被配置为基于所述编码输入字符串的第i窗口来生成所述代理字符串的第i位,所述第i窗口包括所述编码输入字符串的从所述编码输入字符串的第i位置开始且包括所述第i位置的所述预定数量的连续位置。
21.5)根据1)至3)中任一项所述的前导零预测器(300),其中,所述基于窗口的代理字符串生成电路被配置为当所述编码输入字符串的对应窗口包括始终指示所述算术运算的结果的第i位和第i 1位中的一个将为高的模式时,将所述代理字符串的第i位设置为高值。
22.6)根据1)至3)中任一项所述的前导零预测器(300),其中,所述输入编码电路(402)被配置为基于所述定点数的第i位中多少个为高,将所述编码输入字符串的第i位设置到z、p或g中的一个。
23.7)根据6)所述的前导零预测器(300),其中,有两个定点数并且所述输入编码电路(402)被配置为:当所述定点数的第i位的两者均为低时,将所述编码输入字符串的第i位置设置为z;当所述定点数的第i位中只有一个为高时,将所述编码输入字符串的第i位置设置为p;以及当所述定点数的第i位的两者均为高时,将所述编码输入字符串的第i位置设置为g。
24.8)根据6)所述的前导零预测器(300),其中,所述编码输入字符串的窗口包括所述
编码输入字符串的三个连续的位置,并且所述基于窗口的代理字符串生成电路被配置为当所述编码输入字符串的对应窗口包括ggz、gpg、gpp、gpz、gzg、pgg、pzz、zgz、zpg、zpp、zpz或zzg时,将所述代理字符串的第i位设置为高值,以及所述基于窗口的代理字符串生成电路被配置为当所述编码输入字符串的所述对应窗口包括ggg、ggp、gzp、gzz、pgp、pgz、ppg、ppp、ppz、pzg、pzp、zgg、zgp、zzp或zzz时,将所述代理字符串的第i位设置为低值。
25.9)根据6)所述的前导零预测器(300),其中,所述基于窗口的代理字符串生成电路(404)被配置为根据下面的方程式设置所述代理字符串e_y的第i位:
[0026][0027]
10)根据6)所述的前导零预测器(300),其中,所述基于窗口的代理字符串生成电路被配置为根据下面的方程式设置求反的代理字符串的第i位:
[0028][0029]
11)一种估计在两个或更多个定点数上执行的算术运算的结果中的前导零的数量的方法,所述方法包括:
[0030]
使用输入编码电路从所述两个或更多个定点数生成编码输入字符串;
[0031]
使用基于窗口的代理字符串生成电路来通过检查所述编码输入字符串的连续窗口并且基于所述检查设置代理字符串的对应位来生成所述代理字符串,所述代理字符串的前导一是对所述算术运算的结果中的前导一的估计,所述前导一的所述估计是在关于任何带符号的定点数的所述算术运算的实际结果中的前导一的一个数位位置之内(600,700);以及
[0032]
基于所述代理字符串中的所述前导一,使用计数器电路来估计所述算术运算的结果中的前导零的数量。
[0033]
12)根据11)所述的方法,其中,所述编码输入字符串的窗口包括所述编码输入字符串的预定数量的连续位置并且所述预定数量大于或等于三。
[0034]
13)根据12)所述的方法,其中,生成所述代理字符串包括基于所述编码输入字符串的第i窗口来设置所述代理字符串的第i位,所述第i窗口包括所述编码输入字符串的从所述编码输入字符串的第i位置开始并且包括所述第i位置的所述预定数量的连续位置。
[0035]
14)根据11)至13)中任一项所述的方法,其中,生成所述代理字符串包括当所述编码输入字符串的对应窗口包括始终指示所述算术运算的结果的第i位和第i 1位中的一个将为高的模式时,将所述代理字符串的第i位设置为高值。
[0036]
15)根据11)至13)中任一项所述的方法,其中,生成所述编码输入字符串包括基于所述定点数的第i位中多少个为高,将所述编码输入字符串的第i位置设置到z、p或g中的一个。
[0037]
16)根据15)所述的方法,其中,有两个定点数并且生成所述编码输入字符串包括:当所述定点数的第i位的两者均为低时,将所述编码输入字符串的第i位置设置为z;当所述定点数的第i位中只有一个为高时,将所述编码输入字符串的第i位置设置为p;以及当所述定点数的第i位的两者均为高时,将所述编码输入字符串的第i位置设置为g。
[0038]
17)根据15)所述的方法,其中,所述编码输入字符串的窗口包括所述编码输入字符串的三个连续的位置,并且生成所述代理字符串包括当所述编码输入字符串的对应窗口
包括ggz、gpg、gpp、gpz、gzg、pgg、pzz、zgz、zpg、zpp、zpz或zzg时,将所述代理字符串的第i位设置为高值,以及当所述编码输入字符串的所述对应窗口包括ggg、ggp、gzp、gzz、pgp、pgz、ppg、ppp、ppz、pzg、pzp、zgg、zgp、zzp或zzz时,将所述代理字符串的第i位设置为低值。
[0039]
18)根据15)所述的方法,其中,生成所述代理字符串包括根据下面的方程式设置所述代理字符串e_y的第i位:
[0040][0041]
19)根据15)所述的方法,其中,生成所述代理字符串包括根据下面的方程式设置求反的代理字符串的第i位:
[0042][0043]
附图简述
[0044]
将参考下面的附图以示例的方式描述本发明的实施例,在附图中:
[0045]
图1是包括前导零计数器的示例定点加法电路的方框图;
[0046]
图2是包括前导零预测器的示例定点加法电路的方框图;
[0047]
图3是示例前导零预测器的方框图;
[0048]
图4是图3的示例代理字符串生成电路的方框图;
[0049]
图5是图示从两个示例二进制输入生成示例编码输入字符串的示意图;
[0050]
图6是用于生成图4的代理字符串的示例方法的流程图;
[0051]
图7是用于设置代理字符串的第i位的示例方法的流程图;
[0052]
图8是根据图6和图7的方法图示示例代理字符串的生成的示意图;
[0053]
图9是图示定点加法电路的示例输出与根据图6和图7的方法生成的示例代理字符串的比较的示意图;以及
[0054]
图10是示出对于包括本文描述的定点加法电路的不同的单精度浮点加法电路权衡的面积对时延的曲线图。
[0055]
在全部附图中使用共同的参考数字来指示类似的特征。
[0056]
详细描述
[0057]
下面仅以示例的方式描述本发明的实施例。这些示例代表申请人当前已知的实践本发明的最佳方式,但是它们不是可实现本发明的仅有方式。该描述阐述了示例的功能和用于构造和操作示例的步骤的顺序。然而,可通过不同的示例来实现相同或等效的功能和顺序。
[0058]
如上所述,存在许多的应用,其中知道二进制数或字符串中的前导或尾随数字(例如,零或一)的数量是有用的,诸如当执行作为浮点算术运算的一部分的规格化时,诸如浮点加法运算。
[0059]
如本领域的技术人员已知的,定点数表示是在小数点(例如,十进制小数点或二进制小数点)后具有固定数量的数字的表示。相反地,数字的浮点数表示是其中小数点不是固定的(即,它可以“浮动”)的数字的表示。换言之,小数点可以被放置在该表示内的任何位置。
[0060]
最常见的浮点格式是电气与电子工程师协会(ieee)的关于浮点运算的标准(ieee-754)。ieee-754规定浮点数由三个数表示:符号、指数和尾数(s、exp、mant)。通常,这
三个数(s、exp、mant)对于固定的整数bias,如公式(1)所示被解译:
[0061]
(-1)
s2exp-bias
1.mant
ꢀꢀꢀꢀꢀꢀꢀ
(1)
[0062]
参考图1,其图示使用前导零计数器(lzc)来将结果进行规格化的定点加法电路100的示例。特别地,定点加法电路100包括加法逻辑102,其将两个定点输入a和b相加以产生输出y。定点加法电路100可以形成浮点加法电路的一部分。在这些情况下,这两个输入a和b是转换为带符号的定点数的、两个浮点输入的尾数。
[0063]
在a和b是相似的情况下,输出y可能是小的,从而经由lzc 104和左移位电路106执行规格化操作以补偿任何前导一的取消。特别地,lzc 104计数输出y中的前导零的数量。该计数被提供到左移位电路106,其向左移位输出y以产生规格化的输出n_y。
[0064]
定点加法电路100还可以包括小移位电路108,其用于将输入a和b与可选的求反电路110对准。如果输入a和b是负的,则它们的加法(一旦对准)可以产生负的定点结果,该负的定点结果在规格化之前通过可选的求反电路110被求反。
[0065]
使得加法逻辑102与lzc 104串联意味着左移位不能开始直到完成加法运算并且加法输出中的前导零已经被计数之后。
[0066]
前导零预测器(lza)已经被开发以估计来自输入的定点算术运算(例如,加法运算)的输出中的前导零的数量,使得前导零的数量可以与算术运算并行地估计。现在参考图2,其图示使用lza而不是lzc来将结果进行规格化的定点加法电路200的示例。特别地,定点加法电路200包括图1的加法逻辑102、左移位电路106、小移位电路108以及可选的求反电路110,然而,图1的lzc 104被替换为lza 202。
[0067]
由于lza从对齐且带符号的输入a和b生成输出中的前导零的数量的估计(e_count),因此lza 202可以与加法逻辑102并联地放置。这意味着lza 202不具有对加法逻辑102的输出y的访问权以帮助估计。特别地,lza 202在估计前导零的数量中不具有对输出y的符号的访问权。
[0068]
在lza 202可以在比加法逻辑102产生输出花费的时间更短的时间内估计前导零的数量的情况下,一旦加法逻辑102产生输出y,左移位电路106就可以开始向左移位,其与图1的定点加法电路100相比,减少了产生规格化输出的时间。在某些情况下,定点加法电路200还可以包括第二左移位电路204以对估计的规格化输出(e_n_y)执行小的左移位,以考虑到由lza 202生成的估计的计数(e_count)中的任何误差。然而,第二左移位电路204通常将比lzc快,因此,图2的定点加法电路200将比图1的定点加法电路100具有更短的关键路径,并且更快地产生规格化的输出。
[0069]
如同图1的定点加法电路100,图2的定点加法电路200可以形成浮点加法电路的一部分。如上所述,在这些情况下,两个输入a和b是转换为带符号的定点数的、两个浮点输入的尾数。
[0070]
本文所描述的是改进的lza,其以一位的精度估计在任何两个带符号的定点数上执行的定点算术运算的结果或输出中的前导零的数量。特别地,改进的lza生成代理字符串,其前导一提供算术运算的结果中的前导一的估计,这是通过评估或分析定点输入从msb开始的三个或更多个连续位置的窗口,并且基于该分析设置代理字符串的对应位;并且然后从由代理字符串指示的前导一的估计位置确定前导零的数量。具体地,改进的lza确定窗口中的输入的位置是否包括指示结果或输出中的前导一的模式,并且如果包括该模式,则
将代理字符串的对应位设置为一,并且否则将代理字符串的对应位设置为零。通常,第i个窗口用于确定所估计的代理字符串的第i位是高还是低。在某些情况下,代替直接使用定点输入a和b,从输入中生成编码输入字符串c,并且编码输入字符串的连续位置或字母的窗口被评估。
[0071]
应注意的是,字符串和数字的位和/或位置在这个文档中从最高有效位/位置至最低有效位/位置以数字零开始进行编号,使得最高有效位/位置是位/位置零。然而,对本领域的技术人员将明显的是,这是仅仅是识别字符串或数字的特定位/位置的机制,以及位/位置可以以另一个方式进行编号而没有影响本文描述的技术和方法的操作。例如,在其他情况下,字符串或数字的位/位置可以从最低有效位/位置至最高有效位/位置进行编号。
[0072]
现在参考图3,其图示改进的lza 300的示例实现。在此示例中,lza 300包括从输入a和b生成代理字符串的代理字符串生成电路302。代理字符串的前导一提供实际结果中的前导一的估计。lza还包括计数代理字符串中的零的数量的lzc 304,以提供对输入的加法的绝对值中的前导零的数量的估计。
[0073]
代理字符串生成电路302被配置为通过基于输入a和b的数位位置的子集或窗口设置代理字符串的特定位从定点输入a和b生成位的代理字符串e_y。通常,代理字符串生成电路302被配置为基于输入的窗口生成或设置代理字符串的第i位,该窗口在输入的第i位置处开始并且在输入的第(i w-1)位置结束,其中,w是窗口的大小。例如,当w=3时,代理字符串e_y的第1位是基于在输入的第1位置处开始并且在第三位置处结束的输入的窗口。参考图4描述了示例代理字符串生成电路302。
[0074]
lzc 304接收由代理字符串生成电路302生成的代理字符串e_y,并且计算或计数代理字符串e_y中的前导零的数量。lzc 304可以是任何合适的lzc。由lzc 304生成的计数e_count然后可以被提供到诸如图2的左移位电路106的左移位电路,以将由定点算术电路生成的实际结果或输出向左移位。
[0075]
现在参考图4,其图示图3的代理字符串生成电路302的示例实现。图4的示例代理字符串生成电路302包括输入编码电路402,其被配置为生成表示两个输入a和b的编码输入字符串c;以及基于窗口的代理字符串生成电路404,其通过分析编码输入字符串c的窗口或子集从编码输入字符串c生成代理字符串e_y。如上所述,代理字符串e_y的前导零计数提供对输入a和b的加法的绝对值中的前导零的数量的估计。
[0076]
输入编码电路402接收输入a和b,并且生成字母的编码输入字符串c,其表示两个定点输入a和b中的信息。特别地,由于对于加法和减法运算,其是在每个数位位置中相关的高位(即,设置为一的位)的数量是有关的,因此输入编码电路402生成编码输入字符串c,其中字符串c的第i位置指示输入a和b的第i数位位置中的高位的数量。例如,字符串c的第7位置指示输入a的第7位和输入b的第7位中多少个是高的(即,一)。
[0077]
在存在两个输入的情况下,只有三个可能的高比特数:零(两个输入的第i位均为低);一(输入中的一个的第i位为高);或者二(两个输入的第i位均为高)。对于两个输入a和b,这些可能性可以分别由如公式(2)所示的零函数zi;如公式(3)所示的传递函数pi;以及如公式(4)所示的生成函数gi来表示。
[0078]
[0079][0080]gi
=ai∧biꢀꢀꢀ
(4)
[0081]
编码输入字符串c的每个位置i然后基于公式(2)、(3)和(4)中哪一个对于该位置为高被分配字母z,p,和g中的一个。
[0082]
在某些情况下,输入a和b中的每一个被假定为具有被设置为零的附加位。在这些情况下,编码输入字符串c将具有相对于输入a和b的附加位置,其总是被设置为z。例如,如果输入a和b具有八位,则编码输入字符串c将具有九个位置。如下所述,代理字符串的第i位从编码输入字符串c的第i窗口生成,其包括从第i位置开始的编码输入字符串的三个连续位置,因此将附加位置添加到编码输入字符串c允许代理字符串的附加位将被生成。
[0083]
例如,如果a=100101110并且b=011101100,则编码输入字符串c将是pppgzggpzz,如图5和表格1所示。
[0084]
表1
[0085][0086]
一旦编码输入字符串c已经通过输入编码电路402生成,其被提供给基于窗口的代理字符串生成电路404。基于窗口的代理字符串生成电路404然后通过分析编码输入字符串c的窗口或子字符串生成代理字符串e_y。如上所述,代理字符串e_y的前导零计数提供对定点输入a和b的加法的绝对值的前导零计数的估计。
[0087]
编码输入字符串的窗口或子字符串是编码输入字符串c的位置的连续的集合,其具有比整个编码输入字符串c更少的位置(即,是编码输入字符串c的子集)。例如,对于c=pppgzggpz,大小为三的窗口或子字符串可以包括ppp,ppg,pgz,gzg,zgg,ggp和gpz中的任何一个。
[0088]
基于窗口的代理字符串生成电路404基于编码输入字符串c的第i窗口或子集设置
代理字符串e_y的第i位或位置。第i窗口被认为是在编码输入字符串c的第i位置开始并且包括该位置的窗口。
[0089]
在某些情况下,如果编码输入字符串c的第i窗口或子集包括被认为是算术运算的结果或输出中的前导一的预测器的模式,则基于窗口的代理字符串生成电路404被配置为将代理字符串e_y的第i位或位置设置为高(例如,设置为一)。在某些情况下,如以下更详细地描述,如果第i窗口中的模式指示定点算术运算的结果或输出的第i或第i 1位置或位肯定为高(例如,一),则该模式被认为是算术运算的结果或输出中的前导一的预测器。代理字符串e_y还可以在本文中被称为定点运算电路的掩码或代表性输出。
[0090]
为使代理字符串中的前导一的位置在一位或位置之内准确,使用大小w为三或更大的窗口。窗口大小指示编码输入字符串c中的由该窗口包含或覆盖的位置的数量。因此,大小为三的窗口包括编码输入字符串c的三个位置。如上所述,由于lza旨在与定点运算电路(例如,加法电路)并联地放置,因此定点运算电路的输出y的符号对lza不可用于帮助输出的估计。这使得使用大小为二的窗口来针对所有可能的输入a和b以一位的精度估计前导一的位置是不可能的。
[0091]
例如,表2、表3和表4示出输入a和b,其分别产生编码输入字符串ppzgg、ppgz和ppzgzp。在表2中,窗口zg并不指示前导一。同样地,在表3中,窗口或子字符串gz并不指示前导一。然而,在表4中,如果估计将是精确到一位之内,则窗口或子字符串gz或者zg一定指示前导一。因此,大小为二的窗口不能以一位的精度预测在带符号的定点数上执行的定点算术运算的结果或输出的前导零或前导一。
[0092]
表2
[0093][0094]
表3
[0095][0096]
表4
[0097][0098]
然而,至少三个位置或字母的窗口可以用于实现在两个带符号的定点数上执行的定点算术运算的输出中的前导一的位置的估计,其精确到一位(即,前导一的估计的位置与前导一的实际位置最大相差一位)。由于评估位置或字母的最小数量是有利的,因此大小为三的窗口将在本文中进行描述,但对本领域的技术人员将明显的是本文描述的原理和技术可以被延伸到具有大小大于三的窗口。
[0099]
编码输入字符串c的每个窗口从msb开始依次进行评估,以确定字母的模式或子字
符串是否预测前导一。例如,如果两个输入a和b产生编码输入字符串c=p0p1p2z3g4g5…
并且w=3,则评估的第一窗口(第0窗口)包括p0p1p2,评估的第二窗口(第1窗口)包括p1p2z3,评估的第三窗口(第2窗口)包括p2z3g4等。如果第i窗口中的编码输入字符串的字母的模式或子字符串被认为预测结果中的前导一,则代理字符串e_y的第i位被设置为高(例如,被设置为一);否则代理字符串的第i位被设置为低(例如,被设置为零)。
[0100]
为了确定第i窗口中的编码输入字符串c的特定模式或子字符串是否预测定点算术运算的结果中的前导一,做出窗口中的字母的特定模式是否将导致算术运算的结果或输出的第i或第i 1位中的高位的确定。
[0101]
对于定点加法运算,可以基于关于窗口中字母的模式的总和是否将在前两个位置中的一个中具有高位以及该总和加进位(即,总和 1)的结果是否将在前两个位置中的一个中具有高位(由于先前的位的总和可以产生进位),做出特定模式或子字符串是否预测结果上的前导一的确定。对于字母(例如,g、p和z)的特定组合或模式(被称为子字符串),只有当总和及总和加进位(即,总和 1)两者在前两个位置中的一个(但不是两者)中产生具有高位的结果,可以确定的是g、p和z的特定组合(即,子字符串)指示在前两个位置中的一个中预测或预期前导一。表5示出g、p和z的每个可能的模式或组合的所得到的总和及总和加进位(即,总和 1)。
[0102]
表5
[0103][0104][0105]
从表5可以看出g、p和z的大多数的模式或组合(即,子字符串)产生一致的结果,
即,总和及总和加进位(即,总和 1)两者在前两个位置之一中具有一,或者总和及总和加进位(即,总和 1)两者在前两个位置之一中不具有一。对于g、p和z的这些组合,它们是否指示前导一是明显的。然而,有许多的g、p和z的模式或组合并不产生一致的结果,即,只有总和及总和加进位(即,总和 1)中的一个在前两个位置之一中具有一。特别地,在表5中可以看出g、p和z的下列组合(即,子字符串)产生不一致的结果:ggp、gzp、pgp、pzp、zgp和zzp。这些将在本文中被称为模糊的组合或子字符串并且在表6中进行总结。
[0106]
表6
[0107][0108]
由于模糊的组合或子字符串(即,ggp、gzp、pgp、pzp、zgp和zzp)可以在前两个位置之一中产生前导一,因此问题是如果g、p和z的这些组合被视为不指示前导一,则可能丢失前导一(即,没有被正确地识别)。然而,可以示出,对于模糊的组合或子字符串中的每一个,结果(即,总和或总和 1)中的任何一个不指示前导一;或者如果它确实指示前导一,则它将通过前面或后面的窗口被识别为前导一(所以不需要在这个特定的窗口中识别)。因此,模糊的组合或子字符串它们本身在识别算术运算的结果或输出中的前导一中并不相关。
[0109]
具体地,如果假设输入是符号扩展的,使得前导窗口是zzz、ppp或ggg中的一个,则按照这些前导窗口或子集中的每一个的组合将如表7所示。
[0110]
表7
[0111][0112]
从表5我们可以看出,子字符串gzp、pgp或zzp都不产生在第一位中具有一的结果(总和或总和 1)。换言之,这些组合中的每一个产生在第二位中具有1的结果(总和或总和 1)。由于第二位由随后的窗口覆盖,因此如果随后的窗口指示前导一,则发生在gzp、pgp、或zzp组合中的任何前导零将在前导一中被识别。从表6可以看出,跟随gzp、pgp或zzp的窗口或子集将是gpx或zpx中的一个,其中x指示z、p或g中的任何一个。从表4和表7可以看出,gpx和zpx始终指示前导一。因此,发生在gzp、pgp或zzp组合中的任何前导一将通过随后的窗口或子集识别并且将不会没有被检测到。
[0113]
参考ggp子字符串,它不能是第一子字符串或窗口,因此它必须在ggg、zgg或pgg的后面。如果ggp是在pgg的后面,则前导零将通过前面的pgg组合识别。然而,如果它是在zgg或pgg的后面,则输出的前面位置/位将始终是一,因此,如果结果为负,则gpp只可以指示前
导数字。当结果为负时,将位进行反转,因此,在这种情况下,前导一将会发生在窗口的第二位中。由于随后的窗口将是gpx,其始终指示前导一,其中x指示z、p或g中的任何一个,因此发生在跟随zgg或pgg子字符串的ggp组合中的任何前导一将通过随后的窗口或子集识别并且将不会没有被检测到。这示于表8中。
[0114]
表8
[0115][0116]
参考pzp子字符串,它也不能是第一窗口或子字符串,因此pzp组合必须在gpz、ppz或zpz子字符串的后面。如果pzp在gpz或zpz的后面,则前导零将通过前面的gpz或zpz组合(看表4)识别,并且因此gpz组合与检测前导一是不相关的。然而,如果pzp是在ppz组合的后面,则如果结果为负,则gpz组合将只指示前导数字。在这种情况下,相关的位是在窗口的第二位中,其将被包括在随后的窗口中。从表6可以看出,随后的窗口将是zpx,其始终指示前导一,其中x指示z、p或g中的任何一个。因此,发生在跟随ppz组合的pzp组合中的任何前导一将通过随后的窗口或子集识别。这示于表9中。
[0117]
表9
[0118][0119]
参考zgp,它也不能是第一窗口,因此zgp组合必须在gzg,pzg或zzg组合的后面。如果pzp在gzg或zpz的后面,则前导零将通过前面的gzg或zzg组合(看表4)识别,并且随后的zgp组合是不相关的。然而,如果zgp模式是在pzg组合的后面,则如果结果为负的,则zzg组合将只指示前导数字。在这种情况下,相关的位是在窗口的第二位中,其将被包括在随后的窗口中。从表6可以看出,随后的窗口将是gpx,其始终指示前导一,其中x指示z、p或g中的任何一个。因此,从跟随zzg组合的zgp组合中发生的任何前导一将通过随后的窗口或子集识别。这示于表10中。
[0120]
表10
[0121][0122][0123]
因此,定点加法的输出的前导一的位置对于任何输入a和b可以由基于窗口的代理字符串生成电路404通过从msb开始识别编码输入字符串c的第一窗口的位置以一位内的精度进行预测,该第一窗口包括将始终在结果中的窗口的前两个位置之一中产生一的模式。所有其他的模式或组合(即,那些从不在前两位中之一产生一的模式或组合或者那些只是有时在前两个位之一中产生一的模式或组合)被忽略。特别地,定点加法的结果或输出中的前导一的位置可以通过基于窗口的代理字符串生成电路404被预测到一位的精度之内,其通过只有当第i窗口包括字母的组合或模式(其始终在结果的第i位或第i 1位中产生一)时,将代理字符串e_y的第i位设置为高(例如,一);否则,将代理字符串e_y的第i位设置为低(例如,零)。这示于表11中,该表11在本文中被称为真值表。
[0124]
表11
[0125]
[0126][0127]
在某些情况下,代理字符串的位/位置可以连续地被识别或确定(例如,确定代理字符串的第0位/位置;然后,确定替代字符串的第1位/位置;等等)。在这些情况下,一旦代理字符串的位/位置已经被设置为高,则不需要确定另外的位。在其他情况下,代理字符串的位可以并行地被识别或确定以提高lza的速度。
[0128]
公式(5)描述了用于根据表11确定当第0位是最高有效位时代理字符串e_y的第i位的方程式,其可以通过基于窗口的代理字符串生成电路404实现:
[0129][0130]
在第0位是最低有效位的情况下,则公式(5)可以重写为公式(6):
[0131]
可选地,代理字符串e_y可以被反转来计数前导一而不是前导零,如公式(7)所示:
[0132][0133]
在第0位是最低有效位的情况下,公式(7)可以写为公式(8):
[0134][0135]
对本领域的技术人员将明显的是,这些仅是示例并且其他的方程式及公式可以用于实现在表11中列出的真值表。例如,公式(5)、公式(6)、公式(7)和/或公式(8)可以以各种的方式被扩展且设定系数。
[0136]
现在参考图6,图7和图8,其图示用于生成代理字符串的示例方法,该代理字符串可以通过基于窗口的代理字符串生成电路404执行或实现。特别地,图6图示用于生成代理字符串的示例方法600的流程图;图7图示用于生成或设置代理字符串的第i位的示例方法;以及图8图示对于示例编码输入字符串c如何分别地使用图6的方法600和图7的方法700生成代理字符串。
[0137]
方法600在方框602处开始,其中基于窗口的代理字符串生成电路404接收编码输入字符串c。例如,如图8所示,基于窗口的代理字符串生成电路404可以接收编码输入字符串c=pppgzggpzz。一旦接收到编码输入字符串c,方法600进行到方框6040至604
x-1
,其中x是输入a和b中的位的数量减去1。例如,如果在输入a和b中有8位,则x等于8-1=7。每个方框604i基于编码输入字符串c的第i窗口设置代理字符串的第i位。例如,方框6040基于编码输
入字符串c的第0窗口设置代理字符串的第0位。以下参考图7将对用于设置代理字符串的第i位的示例方法进行描述。一旦已经设置代理字符串的位/位置,方法600结束606。
[0138]
现在参考图7,其图示用于设置代理字符串的第i位的方法700。方法700可以在方法600的任何和/或所有的方框6040至604
x-1
处执行。方法700在方框702处开始,其中基于窗口的代理字符串生成电路404识别编码输入字符串c的第i窗口。如上所述,编码输入字符串的第i窗口包括或包含编码输入字符串的第i位置到编码输入字符串c包括的第(i w-1)位置,其中w是窗口的大小。例如,如果编码输入字符串的位置从0到n进行编号,其中第0位置是最高有效位以及n是编码输入字符串的位置的数量,则第i窗口包括位置ci....c
i w-1
。例如,在i=0且w=3的情况下,第0窗口包括位置c0c1c2。
[0139]
在如图8所示编码输入字符串是pppgzggpzz的情况下,则如图8的表802所示,第0窗口包括ppp;第1窗口包括ppg;第2窗口包括pgz;等。
[0140]
一旦第i窗口已经被识别,则方法700进行到方框704。
[0141]
在方框704处,基于窗口的代理字符串生成电路404确定在方框702中识别的第i窗口中的字母的模式是否是算术运算的结果或输出中的前导零的预测器。基于窗口的代理字符串生成电路404可以根据真值表确定该模式是否指示它是前导零的预测器。例如,基于窗口的代理字符串生成电路404可以在硬件逻辑中实现表11的真值表。表11的副本在图8中被示出为表804。
[0142]
如上所述,表11的真值表只在第i窗口中的模式将始终在算术运算的结果或输出的第i位或第i 1位(但不是两者)中产生一时,才将该模式视为算术运算的结果或输出中的前导一的预测器。使用表11的真值表允许算术运算的输出的结果中的前导一的位置对于任何两个带符号的定点数以一位的精度进行估计。
[0143]
如果确定第i窗口中的模式不是在算术运算的结果或输出中的前导一的预测器,则方法700进行到方框706。然而,如果确定第i窗口中的模式是在算术运算的结果或输出中的前导一的预测器,则方法700进行到方框708。
[0144]
在方框706处,代理字符串的第i位/位置被设置为零,以指示输出的第i位不被估计为前导零的位置。例如,如图8所示,如果第0窗口包括ppp并且使用表11的真值表(例如,表804),则模式(ppp)不是前导一的预测器。相应地,代理字符串的第0位(e_y0)被设置为零。一旦代理字符串的第i位已经被设置为零,方法700结束。
[0145]
在方框708处,代理字符串的第i位/位置被设置为一,其指示算术运算的结果或输出的第i位置被估计为一。例如,在图8中,第3窗口包括模式gzg,该模式根据表11的真值表(例如,表804)是预测模式,因此代理字符串(e_y3)的第3位被设置为一,以指示其估计到算术运算的结果或输出的第3位/位置将包括一。一旦代理字符串的第i位已经被设置为1,则方法700结束。
[0146]
现在参考图9,其图示根据本文描述的方法针对示例的一组输入a和b生成的输出的示例及相应的代理字符串。在此示例中,两个输入a和b分别是100101110和011101100,其如图5所示,导致了pppgzggpzz的编码输入字符串。如图8所示,这导致了00010011的代理字符串e_y,其具有三个前导零(即,前导一被预测或被估计为从左开始的第四位)。a和b的加法的绝对值是000011010,其具有四个前导零(即,前导一是在从左开始第五位)。因此,前导一的估计的位置是偏差一位,其是在可接受的公差之内。
[0147]
现在参考图10,其图示曲线图1000,该曲线图1000示出浮点加法电路中的性能改进,该浮点加法电路包括定点加法电路200,相比于包括使用lzc的定点加法电路100的浮点加法电路,该定点加法电路200使用lza与实现公式(5)或(7)的基于窗口的代理字符串生成电路。特别地,曲线图1000示出浮点加法电路的面积相比于以纳秒为单位的收敛时间(即,用于将产生的浮点结果或输出的时间)。
[0148]
曲线1002示出包括图1的使用lzc的定点加法电路100的单精度浮点加法电路的面积和收敛时间;曲线1004示出包括图2的具有lza的定点加法电路200的单精度浮点加法电路的面积和收敛时间,其具有实现公式(5)的基于窗口的代理字符串生成电路;以及曲线1006示出包括图2的具有lza的定点加法电路200的单精度浮点加法电路的面积和收敛时间,其具有实现公式(7)的基于窗口的代理字符串生成电路。
[0149]
因此,具有带有基于窗口的代理字符串生成电路404的lza的定点加法电路200不管实现公式(5)还是公式(7)都产生比使用具有lzc的定点加法电路100的传统浮点加法电路快15%的浮点加法电路。然而,这是以额外的面积为代价来实现电路。因此,本文描述的方法及原理可以特别地适用于时间关键的应用。
[0150]
术语“处理器”和“计算机”在本文用于指代具有处理能力使得其能够执行指令的任何设备或其部分。术语“处理器”例如可以包括中央处理单元(cpu)、图形处理单元(gpu或vpu)、物理处理单元(ppu)、无线电处理单元(rpu)、数字信号处理器(dsp)、通用处理器(例如,通用gpu)、微处理器、被设计为在cpu外加速任务的任何处理单元等。本领域的技术人员将认识到这样的处理能力被并入到许多不同的设备,并且因此,术语“计算机”包括机顶盒、媒体播放器、数字收音机、pc、服务器、移动电话、个人数字助理以及许多其他的设备。
[0151]
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段,或在本地终端处执行一些软件指令且在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如dsp、可编程逻辑阵列等执行。
[0152]
本文描述的方法可由配置有软件的计算机执行,软件以机器可读的形式存储在有形存储介质上,例如,当程序在计算机上运行时且在计算机程序可实现在计算机可读存储介质上的情况下,以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式、或以包括适合于执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式。有形(或非暂时性)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播的信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序执行或同时执行。
[0153]
本文描述的硬件部件可由在其上具有计算机可读程序代码的非暂时性计算机可读存储介质生成。
[0154]
其还旨在包括“描述”或定义实现上面描述的模块、功能、部件或逻辑的硬件配置的软件,诸如用于设计集成电路或用于配置可编程芯片的hdl(硬件描述语言)软件,以执行期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的用于生成被配置成执行本文描述的任何方法的处理单元或用于生成包括本文描述的任何装置的处理单元的
计算机可读程序代码。也就是说,计算机系统可配置成根据电路元件的定义和定义用于组合那些电路元件的规则的数据来生成数字电路的表示,其中非暂时性计算机可读存储介质可具有在其上存储的处理器可执行指令,当指令在这样的计算机系统处被执行时使计算机系统生成如本文描述的处理单元。例如,非暂时性计算机可读存储介质可具有其上存储的计算机可读指令,当在用于生成集成电路的表现的计算机系统处进行处理时,使该计算机系统生成如本文的示例所述的前导零预测器的表现,或者生成配置为执行如本文的示例所述的方法的前导零预测器的表现。前导零预测器的表现可以是前导零预测器本身,或者前导零预测器的表示(例如,掩码),其可以用于生成前导零预测器。
[0155]
存储用于实现所公开的方面的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,诸如sram或dram。可用于实现非易失性存储器的技术的示例包括光学和磁性存储器技术、闪存、相变存储器、电阻性ram。
[0156]
对“逻辑”的特定引用涉及执行一种或多种功能的结构。逻辑的示例包括布置成执行那些功能的电路系统。例如,这样的电路系统可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(诸如寄存器、触发器或锁存器)、逻辑运算器(诸如布尔运算)、数学运算器(诸如加法器、乘法器或移位器)和互连的电路系统或结构。这样的元件可被提供为定制电路或标准单元库、宏或提供在其它抽象层级处。这样的元件可以在特定的布置中互连。逻辑可包括固定功能的电路系统,且电路系统可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被标识为执行一种功能的逻辑也可包括实现组成部分功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路系统。
[0157]
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效果,这对技术人员将是明显的。
[0158]
将理解,上面描述的益处和优点可涉及一个实施例或可涉及几个实施例。实施例不限于解决任何或所有所陈述的问题的那些实施例或具有任何或全部所陈述的益处和优点的那些实施例。
[0159]
对“一个”项目的任何引用指那些项目中的一个或多个。术语“包括”在本文用于意指包括所标识的方法框或元件,但这样的框或元件并不包括排他列表,且装置可包含附加框或元件,而且方法可包含附加操作或元件。此外,框、元件和操作是它们本身而不是隐含地封闭。
[0160]
本文所描述的方法的步骤可以以任何合适的顺序执行或在适当时同时执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行地执行多个步骤。此外,单独的框可从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可与所描述的其它示例中的任一个示例的方面组合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的情况下,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流向。元件之间的流向可以在任一方向上或在两个方向上。
[0161]
应该理解的是,优选实施例的上述描述仅作为示例给出,并且各种修改可由本领域中的技术人员做出。虽然上面以特定的详细程度或参考一个或多个单独的实施例描述了
各种实施例,但是本领域中的技术人员可对所公开的实施例进行很多变更而不偏离本发明的精神或范围。
再多了解一些

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

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

相关文献