用于减小求和寻址移位器的延迟的设备和方法

文档序号:6546129阅读:174来源:国知局
专利名称:用于减小求和寻址移位器的延迟的设备和方法
技术领域
本发明一般涉及移位器,特别涉及求和寻址移位器(sum-addressedshifter)。
背景技术
在数据处理中,存在各种用于操纵数和数据的装置。这些装置之一是“浮点单元”(FPU),其典型地用于相加和相乘浮点数。然而,设计和操作FPU存在复杂性。一个这样的问题涉及数的对齐。对于要相加的数,它们应该与附加的指数(exponent)信息一起以易于相加的形式来表达。例如,如果将指数值为3的数11100011加到指数值为-2的数11000111,则将如下相加这两个数。在可将第一个数加到第二个数之前,以5个零在最低有效位上扩展所使用的第一个数。
在以合并-乘法-加法指令为特征的FPU中,通过R=A*B+C将3个浮点操作数A,B和C组合成一个结果“R”。另外,诸如乘法或加法的操作分别通过强制C=0或A=1来获得。浮点操作数以IEEE格式给出。在该格式中,每个数具有符号位、指数和小数,对于操作数A,其分别以sa、ea、fa表示。对于操作数B和C,分别以sb、eb、fb、sc、ec和fc表示。例如,A的值以((-1)sa*2ea*fa)给出。A和B的乘积以由sp、ep和fp组成的P表示。
该FPU设计的一个主要元件是对齐移位器,其根据C和P的指数将操作数“c”的小数与中间乘积“P”的小数对齐。该对齐移位将在相加这两个数之前产生C和P的二进制小数点的对齐。为了该对齐,对小数fc进行移位。移位量“sha”被计算为sha=ea+eb-ec+常量。该常量根据系统设计而产生。如果移位量在给定范围之内,则由实际移位器执行对齐。如果移位量在给定范围之外,则把这些其他情况作为“特殊”情况来处理,也就是,移位量(sha)分别下溢和上溢。
通常,在传统乘法-加法FPU中,有3个相加的指数。这三个数又生成2个数,其又由2:1加法器相加,从而产生移位量。在传统技术中,将移位量(“sha”)发送给解码器,例如1b解码器、2b解码器和3b解码器。然后,这些解码器确定要对加数的小数部分即小数fc进行移位的比特数。典型地,该移位被分解成若干移位级。
然而,存在与该技术相关联的问题。具体地说,移位量加法器和解码器都位于对齐器的用时关键性路径上。
因此,需要一种解决了与传统对齐器相关联的问题中的至少一些问题的对齐器。

发明内容
本发明提供了作为多个数的函数计算移位量。至少一个解码器和至少一个加法器并行耦接。移位器被配置成在多个移位级中计算值,并且其中可采用移位量的比特组来影响多个移位级中的至少一个。


为了更完全地理解本发明及其优点,现在参考下面结合附图的详细描述,其中图1示意性地示出现有技术的双精度对齐器;图2示出双精度求和寻址对齐器;图3A示出移位量的加法。
图3B示出分解成多个比特组的移位量加法、以及这些比特组的相加。
图3C示出简化进位网络的接口;以及图4是示出用于计算移位量的方法的流程图。
具体实施例方式
在下面的讨论中,阐述了众多具体细节,以提供对本发明的彻底理解。然而,本领域的技术人员应当理解,本发明可以在没有这些具体细节的情况下实施。此外,为了不让本发明在不必要的细节中变得模糊,以示意图或方框图的形式示出了公知单元。另外,一般地,省略了关于网络通信、电磁信令技术等等的细节,因为这些细节对于获得对本发明的彻底理解而言不被认为是必要的,并且它们被认为是在相关领域的普通技术人员的理解范围之内。
还需要注意,除非另有说明,否则在此描述的所有功能可采用硬件或软件或者其某种组合来执行。然而,在优选实施例中,除非另有说明,否则这些功能根据诸如计算机程序代码、软件的代码由诸如计算机或电子数据处理器的处理器和/或由被编码成执行这些功能的集成电路来执行。
参照图1,其示出了现有技术的双精度FPU对齐器100的核心。输入Ea、Eb和Ec的LSB被供给3:2计数器(counter)110。从3:2计数器110,生成两个数并且将其输入到8比特加法器120中。8比特加法器120的输出耦接到解码器126-129。这些解码器的每一个考虑(look at)8B加法器120的输出的单独部分。然后,每个解码器分别输出信号到移位器120-150。如果解码器指示其,则以特定值例如第一级中的0、1,第二级中的0、2、4、6等等对C值的小数部分进行移位。
在3:2计数器中组合指数ea、eb和ec。中间结果S和T是sha的进位-保存(carry-save)冗余形式,也就是,s+t等于ea+eb-ec+1对256取模。在系统100中,-ec+1等于NOT(ec)。S和T被供给加法器120,从而产生sha的二进制补码表示,然后分段地将该表示解码成热一选择信号(hot-one select-signal),其控制执行实际移位量fc的多路复用器120-150。在系统100中,移位器由4个级组成。第一移位器级120以0或1移位,第二移位器级130以0、2、4或6移位,第三移位器级140以0、8、16或24移位,并且第四移位器级以0、32、64、92、-32或-64移位。这些常量典型地是设计相关的,例如对齐移位器的分割。现在参照图2,其示出了双精度求和寻址对齐移位器200的核心,其中从3:2计数器110与解码器126-129之间的路径中去除了8比特指数加法器。相反,FPU 200直接从s和t计算多路复用器选择信号。
在系统200中,3:2计数器210耦接到简化8b进位加法器215。3:2计数器210还耦接到解码器226-229。简化8b加法器的进位输出仅仅是块进位信号。然后,每个进位比特耦接到多路复用器231-233。根据进位比特是1值还是0值,这些多路复用器231-233以1比特旋转(rotate)解码器226-229的输出。然后,将这些多路复用器的输出输入到四个移位器级241-244中,并且来自2B求和解码器(sum decoder)226-229的信号表示是否应该发生移位。这些信号是热一选择信号。
在下面表示中,如果存在比特索引,则比特索引0是最高有效比特。索引是顺序的,并且索引号越高,比特的有效位就越低。在FPU对齐器200中,两个向量S和T被分割成多个段,并且对齐器为每个段计算S与T之和的一元解码(unary decode)。在系统200中,对第一多路复用器级241的比特7的s与t之和进行解码,对第二级242的比特5:6进行解码。另外,对第三级243的比特3:4进行解码。最后,对第四多路复用器级244的比特0:2进行解码。
例如,对于第三级求和解码器228,根据“完全和”中这些比特的加权,确定2比特和s(3:4)+t(3:4)是等于0、1、2还是3,其中0、1、2或3对应于移位量0、8、16或24。该解码与任何进位比特无关地执行,其中进位比特必须由简化8b加法器单进位网络215从完全和的低位比特传播到高位比特。因此,该解码只是近似的,并且必须在下面步骤3中加以纠正。
s(3:4)+t(3:4)是0、1、2还是3的问题可以容易地采用硬件来确定。具有4个输入比特s(3:4)和t(3:4)以及表示s(3:4)+t(3:4)是0、1、2还是3的4个输出比特的小型电路例如可从具有16个条目的真值表获得。表1示例性地示出了该真值表。

表格1与求和解码器226-229所执行的解码并行,进位网络计算表示如果将在完全8比特宽度上相加s和t则是否必须越过分割点传播进位的信号。例如,这可以使用快速进位预见网络(carry-lookahead network)来计算。在系统200中,进位网络计算在s和t的真实相加中,s(7)+t(7)是否产生进位到该相加的比特6中。在s(3:7)+t(3:7)中将需要该信息,以纠正从比特5:6计算的选择信号。s(5:7)+t(5:7)将产生进位到该相加的比特4中。这将用于纠正从比特3:4计算的选择信号。s(3:7)+t(3:7)将产生进位到比特2中,这对于纠正比特0:2是所需的。
在系统200中,为了纠正比特,考虑从比特7(最低有效位)开始直到切割点的s与t的完全和。系统200分别以c7、c5和c3表示算出的进位比特。在选择信号计算的第三步骤中,使用来自步骤2的进位信号纠正来自上面的预解码信号。通过上面给出的定义,sha(0:7)=s(0:7)+t(0:7),因此sha(7)=s(7)+(7),sha(6:5)=s(5:6)+t(5:6)+c7 mod 4sha(3:4)=s(3:4)+t(3:4)+c5 mod 4sha(0:2)=s(0:2)+c3 mod 8上面,已经计算了分别忽略c7、c5和c3的部分和的一元解码。现在,这可以通过如果对应的进位信号为1则简单地将每个解码掩码旋转一个位置来纠正(有效地表示c7、c5或c3分别与一元解码部分和的一元模加法)。
所述方案至少具有下面优点解码和进位信号的计算可以并行执行。纠正步骤仅涉及一个多路复用器。因此,与首先计算s与t的完全和然后执行移动量的分段解码相比,该方案更快。此外,与完全加法器相比,只需计算3个切割点的进位比特。仅计算进位比特降低了有关指数逻辑的加法器的硬件成本。
计算对齐移位量的系统200类型的方案也适用于仅支持加法指令而非合并-乘法-加法的FPU设计。该方案也适用于支持其他精度而非仅仅双精度的FPU设计。另外,该方案不限于从具体8比特的指数计算移位量的设计,或者不限于用于部分解码的具体分割点。在系统200中,实际移位量应该被计算为sha=ea+eb+!ec+2 mod 256,其中+2来自于常量。在第一次多路复用之前执行2位的常量移位,而不采用任何逻辑电路。可选地,由于存在2的常量,因此可以将常量移位集成到移位级之一中。其他设计可具有不同的常量。
现在参照图3A,其示出了移位量的加法。相加s值310和t值320以创建移位量“sha”325和进位输出值330。
现在参照图3B,其示出了分解成多个比特组的s值0到7。例如,比特0-2 340、比特3-4 350、比特5-6 360以及比特370是各个比特组。t值0到7被分解成比特0-2 342、比特3-4 352、比特5-6 362以及比特7372,每个集合对应于一个比特组。s和t值的这些比特组分别由加法器344、354、364和374相加,从而产生组进位信号c3、c5和c7。它们还生成sha(0:2)、sha(3:4)、sha(5:6)和sha(7)值。这些值是与移位量相关的比特组部分。
现在参照图3C,生成c3、c5、c7的简化进位网络380由图2的进位器(carrier)使用。系统200对解码之后的值进行进位。
现在参照图4,标号400在总体上表示用于计算移位量的方法。在步骤402,将多个输入数均分割成两个或更多比特组。在步骤403,复制所分割的数,并且将其分到不同处理部分的两个单独并行路径中。在步骤404,将这些比特组传送到多个求和解码器。与步骤404并行,在步骤406,将这些比特组复制到进位网络。在步骤408,使用求和解码器为多个移位器级之一生成一个选择信号或一组选择信号。在步骤410,并行地,作为所分割的输入数的函数生成组进位信号。在步骤412,作为从步骤408和步骤410接收的组进位信号的函数纠正解码器输出。在步骤414,使用纠正的输出信号作为移位器级的选择信号。
应当理解,本发明可采取不同的形式和实施例。因此,在不脱离本发明的精神和范围的情况下可以进行若干变动。这里概述的能力允许各种编程模型的可能性。该公开内容不应当作为优选任何特定编程模型来阅读,而是涉及可作为这些编程模型的基础的底层机制。
虽然已经参考本发明的特定优选实施例描述了本发明,但是应当注意的是,所公开的实施例本质上是示例性而非限制性的,并且在前面公开内容中可考虑较宽范围的变动、修改、更改和替换,并且在一些情况下,可采用本发明的一些特征而无需对应地使用其他特征。通过阅读前面对优选实施例的描述,本领域的技术人员可以认为很多这样的变动和修改是期望的。
因此,以与本发明的范围相符的方式宽广地解释所附权利要求是适当的。
权利要求
1.一种用于作为多个数的函数计算解码移位量的系统,包括至少一个解码器;至少一个加法器,其中该至少一个解码器和该至少一个加法器并行耦接;移位器,被配置成在多个移位级中计算值,并且其中可采用移位量的比特组来影响该多个移位级中的至少一个。
2.如权利要求1所述的系统,其中该系统被配置成生成解码移位量而不首先计算移位量的二进制型式。
3.如权利要求1所述的系统,其中作为三个数的函数计算作为多个数的函数而计算的移位量。
4.如权利要求1所述的系统,其中解码器的输出由该至少一个加法器所提供的组进位信号纠正。
5.如权利要求1所述的系统,其中加法器由生成多个组进位信号的进位网络采用。
6.如权利要求2所述的系统,其中加法器是8比特加法器。
7.如权利要求1所述的系统,其中解码器包括1比特求和解码器。
8.如权利要求1所述的系统,其中解码器包括2比特求和解码器。
9.如权利要求1所述的系统,其中解码器包括3比特求和解码器。
10.如权利要求1所述的系统,其中使用至少一个组进位来纠正解码移位量。
11.如权利要求10所述的系统,还包括旋转元件,其被配置成基于组进位旋转解码器输出。
12.如权利要求5所述的系统,还包括移位器,其耦接到旋转元件的输出。
13.一种用于计算解码移位量的方法,包括将多个输入数分割成多个比特组;将该多个比特组传送到至少一个求和解码器,其中每个输入数的该多个比特组分布在至少一个求和解码器上,并且其中该至少一个求和解码器从每个输入数获得比特组;将该多个比特组的副本传送到进位网络;采用该至少一个求和解码器对多个移位器级之一的一组选择信号进行解码;作为所分割的输入数的函数生成多个组进位信号;作为组进位信号的函数纠正解码器的至少一个输出;以及采用校正的输出信号作为移位器级的选择信号。
14.如权利要求13所述的方法,还包括对移位量进行解码而不首先计算移位量的二进制型式。
15.如权利要求13所述的方法,还包括作为多个数的函数计算移位量是作为三个数的函数来计算。
16.如权利要求13所述的方法,其中解码还包括采用1比特求和解码器。
17.如权利要求13所述的方法,其中解码还包括采用2比特求和解码器。
18.如权利要求13所述的方法,其中解码还包括采用3比特求和解码器。
19.一种用于计算移位量的计算机程序产品,该计算机程序产品具有包含在其上的计算机程序,该计算机程序包括用于将多个输入数分割成多个比特组的计算机代码;用于将该多个比特组传送到至少一个求和解码器的计算机代码,其中每个输入数的该多个比特组分布在至少一个求和解码器上,并且其中该至少一个求和解码器从每个输入数获得比特组;用于将该多个比特组的副本传送到进位网络的计算机代码;用于采用该至少一个求和解码器对多个移位器级之一的一组选择信号进行解码的计算机代码;用于作为所分割的输入数的函数生成多个组进位信号的计算机代码;用于作为组进位信号的函数纠正解码器的至少一个输出的计算机代码;以及用于采用校正的输出信号作为移位器级的选择信号的计算机代码。
20.一种用于计算移位量的处理器,该处理器包括一种计算机程序,该计算机程序包括用于将多个输入数分割成多个比特组的计算机代码;用于将该多个比特组传送到至少一个求和解码器的计算机代码,其中每个输入数的该多个比特组分布在至少一个求和解码器上,并且其中该至少一个求和解码器从每个输入数获得比特组;用于将该多个比特组的副本传送到进位网络的计算机代码;用于采用该至少一个求和解码器对多个移位器级之一的一组选择信号进行解码的计算机代码;用于作为所分割的输入数的函数生成多个组进位信号的计算机代码;用于作为组进位信号的函数纠正解码器的至少一个输出的计算机代码;以及用于采用校正的输出信号作为移位器级的选择信号的计算机代码。
全文摘要
本发明提供了作为多个数的函数计算移位量。至少一个解码器和至少一个加法器并行耦接。移位器被配置成在多个移位级中计算值,并且其中可采用移位量的比特组来影响多个移位级中的至少一个,从而减小处理时间。
文档编号G06F7/48GK1728083SQ20051006529
公开日2006年2月1日 申请日期2005年4月19日 优先权日2004年7月29日
发明者桑获东, 克里斯蒂安·雅科比, 希尔维娅·梅里塔·穆勒, 洋雄西河, 吴和埈 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1