用于执行缩小和舍入算术运算的数据处理装置和方法

文档序号:6552484阅读:182来源:国知局
用于执行缩小和舍入算术运算的数据处理装置和方法
【专利摘要】本发明涉及一种用于执行缩小和舍入算术运算的数据处理装置和方法。所述缩小和舍入算术运算响应于每个都包括至少一个W位数据元的两个操作数来生成包括至少一个X位结果数据元的结果值,其中每个X位结果数据元都表示被舍入到X位值的所述两个操作数的对应W位数据元的和或差(W>X)。所述算术运算使用许多N位加法(N<W)来实现,其中来自N位加法的第一级的进位值在N位加法的第二级处被相加以用于将舍入值加到所述第一级加法的结果。这种技术减少用于执行所述缩小和舍入算术运算所需要的时间量。
【专利说明】用于执行缩小和舍入算术运算的数据处理装置和方法

【技术领域】
[0001]本发明涉及数据处理领域。更特别地,本发明涉及一种用于执行缩小和舍入算术运算的数据处理装置和方法。

【背景技术】
[0002]数据处理装置可以执行缩小和舍入算术运算,其中两个数据值被相加或者相减并且加法或减法的结果被舍入以产生具有比原始数据值更少的位的数据值。本技术寻求加速这样的运算的实施方式。


【发明内容】

[0003]从一个方面看,本发明提供了一种数据处理装置,其包括:
[0004]处理电路,其被配置为处理数据;以及
[0005]控制电路,其被配置为控制所述处理电路响应于标识两个操作数(每个都包括至少一个I位数据元)的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应I位数据元的和或差,其中I和X是整数并且I ? X ;
[0006]其中所述控制电路被配置为控制所述处理电路通过如下各项来生成所述结果值的每个X位结果数据元:
[0007](幻执行多个~位第一级加法以通过加上或者减去所述对应I位数据元的~位部分来生成相应的~位中间值,其中1 = 了柳并且了 ? 1以及~和了是整数;
[0008](^)执行一个或多个~位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值,来将由对应第一级加法所生成的所述~位中间值转换成所述X位结果数据元的~位舍入的结果部分,所述前面的第一级加法用于相较所述对应第一级加法加上较不有效的所述对应胃位数据元的~位部分
[0009](0)从由所述一个或多个~位第二级加法中的至少一个所生成的~位结果部分形成所述X位结果数据元。
[0010]缩小和舍入算术运算通过加上或者减去对应I位值并且将结果舍入到X位值来生成结果值,其中1?父。实现这种运算的一个方式可能是执行I位加法或减法并且然后执行X位加法以将舍入值加到I位加法或减法的结果的高X位。然而,I可以是大的(例如32或64),并且甚至针对I的相对低的值(例如16),执行I位加法可能花费很长时间,因为直到前面的位已被计算并且已确定了是否存在来自前面的位的进位为止才能够计算加法的每个连续位。当进位可以从最低有效位到最高有效位一直行波传送时,执行I位加法可能花费很长时间。因此,缩小和舍入算术运算的这种实施方式将是缓慢的。
[0011]为了解决这个问题,本技术将I位加法分解成许多~位第一级加法,所述~位第一级加法都通过加上或者减去两个操作数的对应I位数据元的X位部分来生成相应的X位中间值。如果I位加法被执行则将会在和的相应的~位部分之间传递的进位值在第一级加法中未被相加。这意味着能够与彼此并行执行相应的~位第一级加法,因为在执行另一第一级加法之前没有必要等待第一级加法中之一的进位输出。因此,能够更迅速地执行缩小和舍入算术运算。因为相应的~位第一级加法之间的进位位未通过第一级加法被相加,所以~位中间值不表示对应I位数据元的真实和或差的部分。然而,本发明人认识到了这不是问题,因为将~位和或差舍入到X位值可以通过加上舍入值来执行,所以加法的第二级针对舍入来说可能已经是需要的。能够在至少一个~位第二级加法中与舍入值同时加上来自第一级加法的任何进位值。每个第二级加法都可以将来自对应第一级加法的~位中间值加到舍入值和表示前面的~位第一级加法的进位输出的进位值。然后能够从由一个或多个第二级加法所生成的~位结果部分形成X位结果数据元。以这种方式,能够减少通过用于执行缩小和舍入算术运算的处理电路的关键定时路径。即便当I是大的(例如32或64位)时,加法也仍然能够使用许多~位第一和第二级加法(例如,其中^ = 8)来执行,从而允许增加的并行性并且因此减少用于执行该运算所需要的时间。
[0012]通过将I位运算分解成许多~位块所提供的性能改进可以允许处理电路在单个处理周期中执行缩小和舍入算术运算。相比之下,如果已执行了全I位加法则这无法一直是可能的。
[0013]一般而言,输入数据元尺寸I可以是大于输出数据元尺寸X的任何值。然而,在实践中数据元尺寸I将常常是二的幂〈8、16、32、64等),并且I将典型地是~的两倍的幂(即了 = 22,其中2彡1〉。
[0014]并且,X可以具有小于I的任何值。如果X也是~的倍数则运算的实施方式可能是更高效的。常常,结果将被舍入到为原始数据元的尺寸一半的数据元,即^ = 1/2.处理电路的一些示例也许能舍入到任意尺寸的结果数据元,然而其它形式的处理电路可能被限制于仅舍入到特定尺寸,例如1/2位数据元。
[0015]缩小和舍入算术运算可以具有不同的形式,包括缩小和舍入加法指令和缩小和舍入减法指令。响应于加法指令控制电路可以控制第一级加法加上对应I位数据元的~位部分,以及响应于减法指令可以在第一级加法处减去~位部分。
[0016]在以与将针对缩小和舍入加法指令的情况确切地相同的方式对二的补码和另一个评位数据元执行缩小和舍入加法运算之前,实现缩小和舍入减法运算的一个方式可能将形成I位数据元中之一的二的补码。二的补码可以通过反转I位数据元的所有位并且加上1来形成。然而,如果在第一级加法之前生成二的补码,则这需要将增加执行运算所需要的时间的额外的加法。因此,实施缩小和舍入减法指令的一个更高效方式可能是控制处理电路执行~位第一级加法,其中每个第一级加法都将~位部分中的一个加到通过反转~位部分中的另一个、以及然后控制第一级加法或第二级加法递增其输出所获得的反转的~位部分,这对于缩小和舍入加法指令将不发生。递增第一或第二级加法中的一个的输出同时执行缩小和舍入算术运算实现与如果1在执行缩小和舍入算术运算之前被加到经反转的~位部分相同的效果。将这种递增与第一或第二级加法中的一个组合节省一个加法周期。因此,除了输入值中的一个被反转并且确切的递增在~位加法中的一个处被相加,可以以几乎与缩小和舍入加法指令相同的方式实现缩小和舍入减法指令。
[0017]缩小和舍入算术运算可以被应用于每个都具有仅一个I位数据元的两个操作数。然而,还可以在支持被应用于具有多个数据元的操作数的单指令多数据(310)运算的系统中使用缩小和舍入算术运算。例如,64位操作数可以支持四个16位数据元、两个32位数据元或一个64位数据元,其中处理的并行通道被应用于每个数据元。因此,如果缩小和舍入算术指令标识两个操作数每个都具有多个I位数据元,则控制电路可以控制处理电路并行生成结果值的多个X位结果数据元。对于处理的每个通道,可以执行所述多个~位第一级加法和至少一个~位第二级加法来产生对应的X位结果数据元。处理电路然后可以从由处理的每个通道中的加法所生成的X位结果数据元形成结果值。
[0018]控制电路可以根据缩小和舍入算术运算的可变参数来选择数据元的数目和数据元的数据元尺寸I。例如,指令可以包括标识数据元尺寸I的字段,并且可以从这个推导出数据元的数目,或者反之亦然。
[0019]处理电路可以包括多个則立第一加法单元和多个則立第二加法单元。控制电路可以根据缩小和舍入算术指令的可变参数(诸如控制数据元的数据元尺寸或数目的一个)来控制使用哪些第一加法单元和哪些第二加法单元来生成每个X位结果数据元。例如,对于每个相应的数据元尺寸,可以存在提供一个或多个处理通道以用于处理两个输入操作数的相应的数据元的^位加法单元的对应配置。
[0020]对于每个X位结果数据元,处理电路可以执行1/?第一级操作和与第一级加法的靡相对应的靡第二级加法。典型地,靡第二级加法将对应于加上原始I位数据元的靡最高有效部分的第一级加法。然后能够从由靡第二级加法所生成的~位结果部分形成X位结果数据元。每个第一或第二级加法可以由相应的~位加法单元来执行。因为电路可以支持不同的数据元尺寸,所以对于特定的缩小和舍入算术运算可能不需要所有加法单元。特别地,可以存在不对X位结果作出贡献的一些第二加法单元。可以使这样的第二加法单元闲置以节省能量。替换地,从控制观点看每个第二加法单元即使其输出将不被用来形成X位结果数据元,可无论如何执行加法可能是较简单的。
[0021〕 每个I位数据元都可以包括I位[1-1:0]并且每个X位结果数据元可以包括X位^-1:0]。记号0:8]表示从在位位置I?处的最高有效位扩展到在位位置3处的最低有效位的一组位。针对给定处理通道的1/?第一级加法和靡第二级加法可以被执行使得:
[0022]所述1/?第一级加法的第1个第一级加法加上所述对应I位数据元的位〔計~-1:£1]以生成第1个?位中间值,其中0彡1彡(1/^-1)并且£1 = 1*1以及
[0023]所述乂州第二级加法的第』个第二级加法将第』个^位中间值加到舍入值和表示第0-1)个第一级加法的进位输出的进位值以生成包括X位结果数据元的位^+^-1:0]的?位结果部分,其中(14)/?彡』彡1/^-1并且0 =』柳。
[0024]在这里,计数值1和』通过针对应用于两个操作数的对应I位数据元的处理的单个通道所执行的加法进行计数以生成结果值的对应结果~位数据元。如果两个操作数据每个都具有一个以上的数据元,则将针对每对I位数据元重复这些加法。因此,对于处理的每个通道,1和』将计数直到1/^-1并且然后对于下一个通道再一次在0处开始。
[0025]如上面所讨论的那样,第一级加法被分解成~位块并且进位在相应的第一级加法之前未被传递以及替代地在第二级处被相加。这允许~位第一级加法被并行执行以加速运算。然而,仍然可能花费一些时间来确定~位第一级加法中的一些的进位值,因为较高的第一级加法的进位仍然取决于较低的第一级加法的结果。如果进位通过从值的最低有效端到最高有效端一直行波传送进位而被确定,则这可能花费很长时间,使得难以在单个处理周期中执行缩小和舍入运算。针对至少一个第二级加法,所述进位网络包括用于提供较早的第一级加法的进位输出作为所述进位值的进位转发路径,所述较早的第一级加法用于相较所述前面的第一级加法加上较不有效的所述对应I位数据元的~位部分。
[0026]因此,为了加速进位确定,处理装置可以具有被配置为确定在第二级加法处要被相加的进位值。对于至少一个第二级加法,进位网络可以具有用于提供较早的第一级加法的进位输出作为所述进位值的进位转发路径(较早的第一级加法用于相较所述前面的第一级加法加上较不有效的所述对应胃位数据元的~位部分)。进位转发路径允许进位值绕过前面的第一级加法,以便进位没有必要通过前面的第一级加法一直被行波传送。这减少进位传播延迟。因此,虽然在第二级加法处相加的进位值表示前面的第一级加法的进位输出,但是它不必是前面的第一级加法的实际进位输出,因为该进位值替代地可以使用进位网络来预测。
[0027]进位网络可以具有为至少一个第二级加法选择是否将前面的第一级加法的进位输出或在进位转发路径上正被转发的较早的第一级加法的进位输出作为进位输入值来提供的选择电路。进位网络可以做出前面的第一级加法的进位输出是否被预期取决于第一级加法的进位输出并且具有与第一级加法的进位输出相同的值的预测。如果是这样的话,贝0较早的第一级加法的进位输出能够被转发到第二级加法,然而否则可以选择前面的第一级加法的进位输出。例如,如果由前面的第一级加法所加上的值的和全部具有等于一的位值(这能够通过执行正被相加的值的异或来确定),则前面的第一级加法的进位输出将取决于较早的第一级加法的进位输出,并且具有与较早的第一级加法的进位输出相同的值。如果所有和位值都是一,则前面的第一级加法的任何进位输入将引起同一位值的进位输出,所以能够通过将较早的第一级加法的进位输出直接地转发到第二级加法而不用通过前面的第一级加法一直行波传送进位来节省时间。
[0028]通过对于在同一 I位处理通道内的每个连续第一级加法执行类似的进位预测,能够基于与彼此并行执行的许多~位加法来预测第一级加法的进位输出而无需来自一个第一级加法的进位输出被输入到另一第一级加法。进位值能够被转发使得它们绕过若干加法单元。这意味着通过处理电路的关键路径能够被减少到一个~位第一级加法和一个~位第二级加法,其中必要时多个第一或第二级加法被与彼此并行执行。因此,进位网络使得运算能够被加速并且减少用于执行缩小和舍入算术运算所需要的时间。
[0029]可以以各种方式生成舍入值。一般而言,舍入值可以被生成使得它具有使X位结果数据元相当于与对应于对应I位数据元的和或差的I位值最近的X位值(这个I位值实际上不是由处理电路计算的)。如果和或差几乎位于两个X位数据值之间,则各种舍入方案可以被用来确定是向上舍入还是向下舍入。例如,相持总是能够被向上舍入,或者能够被舍入远离零,或者能够视需要而定被舍入到最近的奇数或偶数值。
[0030]为了舍入到最近的X位值,在相持被向上舍入情况下,实现此的简单方式是加上具有与在最近的X位值(被称为“最高有效位排除位”)中不具有对应有效位的位的I位值和或差的最高有效位相同的位值的舍入值。如果加上或者减去两个I位数据元将产生I位和或差值〔胃-1:0],则最高有效排除位将是位[胃-父-1〕。虽然评位和值或差值因为评位加法被实际上分解成若干~位第一级加法而实际上未被生成,但是如果I位加法被实际上执行则处理电路能够确定最高有效排除位的值将是什么,并且相应地设置舍入位。
[0031]对于每个处理通道,在该通道中用于最低有效第二级加法的舍入位可以基于前面的第一级加法的结果而被确定。额外的第二级加法将有可能被执行以用于加上这些第一级加法的N位中间值和进位输出,以便能够确定和或差的最高有效排除位的值。然而,这可能增加处理时间,因为它可能需要进位通过若干第二级加法器被行波传送以确定最高有效排除位将是I还是O。因此,为了加速事情的进展,可以根据第一级加法的中间值和进位输出直接地确定舍入值,所述第一级加法加上与最低有效第二级加法相对应的相较第一级加法较不有效的N位部分。这避免了对于沿着第二级加法的进位输出到进位输入路径的任何需要,从而允许运算被更迅速地执行。
[0032]如果X大于N则可能在同一处理通道内需要多个第二级运算。对于用于生成比最低有效端位部分更有效的X位结果数据元的N位部分的更有效的第二级加法,人们可能认为没有必要加上舍入值(通常,舍入值将仅在结果值的最低有效端处被相加并且然后进位可以行波传送到结果值的更有效的端)。然而,在这种情况下第二级加法将有效地是具有多于N个位的相加值,并且进位将使处理时间增加。为了改进性能,第二级加法被分成N位部分。更有效的第二级加法的舍入值用表示在最低有效第二级加法处加上的舍入值是否将使进位传遍到如果舍入值未被最低有效第二级加法加上则将不会发生的更有效的第二级加法来生成。因此,处理电路可以确定这样的进位是否将发生,以及如果发生则可以相应地为第二级加法的更有效的N位块设置舍入值。用于更有效的第二级加法的舍入值可以基于至少一个第一级加法的中间值和进位输出被直接地确定,而不用实际上将进位从最低有效第二级加法传播到更有效的第二级加法。消除沿着第二级加法的这些进位输出到进位输入路径使得性能能够被改进。
[0033]从另一方面看,本发明提供了一种数据处理装置,其包括:
[0034]处理装置,其用于处理数据;以及
[0035]控制装置,其用于控制所述处理装置响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W > X ;
[0036]其中所述控制装置被配置为控制所述处理装置通过以下各项来生成所述结果值的每个X位结果数据元:
[0037](a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W = J*N并且J > I以及N和J是整数;
[0038](b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值以便加上相较所述对应第一级加法较不有效的所述W位数据元的N位部分来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分;以及
[0039](c)从由所述一个或多个N位第二级加法中的至少一个所生成的N位结果部分形成所述X位结果数据元。
[0040]从另一个方面看,本发明提供了一种用于数据处理装置的数据处理方法,包括:
[0041]响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令,执行缩小和舍入运算以生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且w>x;
[0042]其中每个X位结果数据元都通过以下各项来生成:
[0043](a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W = J*N并且J > I以及并且N和J是整数;
[0044](b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值以便加上相较所述对应第一级加法较不有效的所述W位数据元的N位部分来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分;以及
[0045](c)从由所述一个或多个N位第二级加法中的至少一个所生成的N位结果部分形成所述X位结果数据元。
[0046]本发明的上述内容和其它目的、特征以及优点根据将结合附图一起阅读的说明性实施例的以下具体描述将是显而易见的。

【专利附图】

【附图说明】
[0047]图1示意性地图示了数据处理装置的一部分;
[0048]图2示意性地图示了缩小和舍入算术运算;
[0049]图3图示了缩小和舍入算术运算的潜在实施方式;
[0050]图4图示了其中来自第一级加法的进位值在第二级加法处被输入以用于舍入的缩小和舍入算术运算的实施方式;
[0051]图5图示了用于对两对16位数据元上执行并行缩小和舍入算术运算的电路;
[0052]图6图示了对一对32位数据元所执行的缩小和舍入算术运算的潜在实施方式;
[0053]图7图示了用于对两对16位数据元或一对32位数据元执行缩小和舍入算术运算的处理电路的一部分;
[0054]图8图示了用于对四对16位数据元、两对32位数据元或一对64位数据元执行缩小和舍入运算的电路;以及
[0055]图9示出了执行缩小和舍入算术运算的方法。

【具体实施方式】
[0056]图1示意性地图示了用于处理数据的数据处理装置2的一部分。装置2具有处理器4,所述处理器4包括用于对包括一个或多个数据元的操作数执行SMD处理运算的单指令多数据(SMD)处理单元6。SMD指令解码器8被提供用于对SMD指令进行解码并且控制SMD处理单元6响应于指令来执行SMD运算。在一个示例中,SMD解码器8可以是同样对非SMD指令进行解码以便执行非SMD运算的组合式解码器。替换地,能够提供单独的非SMD解码器。装置2同样具有用于存储数据值的寄存器10。响应于指令,处理电路4可以从寄存器10读取要被处理的操作数并且可以将结果值存储到寄存器10。将了解的是,装置2还可以包括为了简洁目的在图1中未被图示的许多其它组件。
[0057]图2示意性地图示了对每个都包括四个数据元a0-a3、b0_b3的两个操作数所执行的缩小和舍入算术运算。每个数据元都具有W个位。在缩小和舍入算术运算中,操作数a、b的对应数据元被相加或者相减以在中间数据值C的每个数据元中产生和或差值a±b。中间值c的每个数据元然后被舍入到结果值d中的X位值。最后,在值d的每个数据元内的X位部分被集合在一起并且放入第二结果值e的相邻部分。在图2中从d到e的集合步骤是可选的,并且在其它示例中,缩小和舍入算术运算的结果可以是结果值d。
[0058]图2示出了针对缩小和舍入算术运算的数学运算。在实践中,处理电路4无法实际上执行这些确切的数学运算,并且以其它方式生成相同的结果值d或e可能是更高效的。图3示出了用于对单对16位元执行缩小和舍入算术运算的电路的示例。图3的电路可以对应于图2中所示的处理通道之一中的处理。如图3所示,16位加法器20可以加上或者减去两个16位数据元a[15:0]和b[15:0]。如果缩小和舍入减法将被执行,则b输入被反转并且被连接到16位加法器20的进位输入的值sub被设置为I以便有效地形成操作数b的二的补码。对于加法,sub被设置为O。不管a和b将被相加还是相减,加法器20输出16位值s[15:0]。第二 8位加法器22然后取第一和的高8位s[15:8]并且加上与第一加法器20的输出的已排除部分的最高有效位相对应的舍入值s [7]。舍入值和16位和的非排除部分s [15:8]的和然后作为8位舍入的结果值r [7:0]被输出。
[0059]因此,在图3中缩小和舍入运算使用与图2中所示相同的数学运算来执行。然而,使用加法器20执行16位加法是缓慢的,因为如果需要从前面的位传播进位,加法的每个连续位在被相加之前都必须等待将可用的前面的位的结果。因此,图3中所示的电路具有24个位的有效关键路径,因为16位加法必须首先被加法器20执行,并且然后一旦16位加法完成了另一 8位加法就需要被加法器22执行。
[0060]图3中所示的电路能够通过观察到初始16位加法器20能够被分解成如图4中所示的两个8位第一级加法器30-0、30-1来加速。这意味着表示为S,[15:8]的初始和的高8位在与低8位s[7:0]同时是可用的。然而,下部加法器30-0的进位输出位c[8]仍然尚未被加到高8位s’ [15:8]中所以中间值s’ [15:8]不表示a[15:0]和b[15:0]的真实和的高8位。然而,这不是问题,因为舍入加法仍然需要被8位加法器32执行,并且能够使用加法器32与舍入值s [7]同时加上进位位c [8]。因此,第二级加法器32加上中间值s’ [15:8]、舍入值s[7]以及进位值c[8]以形成最后舍入的结果r[7:0]。因此,关键路径被从24个位减少到16个位,因为第一级加法已被分解成被与彼此并行执行的两个8位块30-0、30-1,所以关键路径是一个8位第一级加法和一个8位第二级加法。通过在第二级而不是第一级处加上进位位,能够减少总体处理时间。
[0061]如图5所示,图4中所示的电路能够被复制以便能够对两对16位数据元并行执行缩小和舍入运法以生成具有两个8位数据元的结果值。在处理的每个通道内,运算是与图4中所示相同的。
[0062]如图6所示,可以对一对32位数据元执行缩小和舍入算术运算以生成16位结果数据元。除了每个8位加法器都已被用16位加法器代替图6与图4类似(其中每个16位加法器都由两个8位加法器形成,其中一个8位加法器的进位输出端被连接到另一个8位加法器的进位输入端)。然而,这意味着关键路径横跨两个16位加法器(或四个8位加法器),这是冗长的并且可能意味着不能够在单个处理周期中执行运算。
[0063]因此,32位缩小和舍入运算能够通过提供如图7中所示的电路来加速。图7中所示的SMD处理单元6的部分能够被用来对两对16位数据元a[31:16]、b[31:16]和a[15:O]、b[15:0]或一对32位数据元a[31:0]、b[31:0]执行舍入和缩小算术运算。控制信号nrw8控制数据元尺寸并且基于标识数据元尺寸的缩小和舍入算术指令的参数被设置。当数据元尺寸W = 16(即16位至8位缩小)时,那么控制信号nrw8被设置为1,以及当W =32 (即32位至16位缩小)时,那么控制信号nrw8被设置为O。
[0064]如图7所示,SIMD处理单元6具有每个都加上输入操作数a、b的对应8位部分以产生相应的8位中间值s[31:24]、s[23:14]、s[15:8]、s[7:0]的四个第一级加法单元30-0至30-3。提供了若干8位第二级加法器32-1至32-3。每个第二级加法器32_j都加上由对应第一级加法器30-j所生成的中间值S、舍入值rnd[j]以及表示前面的加法单元30-(j-l)的进位输出co[j]的进位值ci [j],以便生成N位结果部分r,其中j = 1、2或3。当nrw8是I (16位至8位缩小)时,那么结果值是从由第二级加法单元32_3、32_1所输出的8位结果部分r[31:24]、r[15:8]形成的。当nrw8是O (32位至16位缩小)时,那么结果值是从由第二级加法单元32-3、32-2所输出的结果部分r[31:24]、r[23:16]形成的。
[0065]乘法器38控制是否基于控制信号nrw8执行16位或32位缩小。如果nrw8等于I (16位至8位缩小),则在第二级加法器32-2的进位输入端处输入sub值,以便如果减法被执行(sub = I)则结果将被递增以反映操作数之一的二的补码,如以上针对图3所讨论的那样。另一个处理通道的sub输入在第一级加法器30-0处被相加。因此,值sub能够在第一级或第二级处被相加。另一方面当控制信号nrw8是O (32位至16位缩小)时,那么能够在第二级加法器32-2的进位输入端ci [2]处输入进位值。因此,乘法器38控制SMD处理电路6是否当作一个32位处理通道或两个独立的16位处理通道。
[0066]图7中所示的SMD处理电路6具有包括进位转发路径40_1、40_2和选择电路42-1,42-2的进位网络。进位网络用于通过预测第一级加法器30-1、30-2的进位输出Co[2],Co[3]的值来使处理加速,而无需进位在实际上从下部第一级加法器被行波传送。最低有效第一级加法单元30-0的进位输出Co [I]被直接地作为进入输入ci [I]输入到最低第二级加法单元32-1。加法单元30-0的进位输出Co [I]同样经由转发路径40-1被转发到下一最高第二级加法单元32-2。选择电路42-1选择下一最高第二级加法器32-2的进位输入ci [2]是否应该等于在转发路径40-1上接收到的第一级加法器30-0的进位输出Co [I],或下一第一级加法单元30-1的进位输出Co [2]。选择电路42-1从第一加法单元30-1接收指示由加法器30-1所产生的所有8个输出和位s[15:8]是否将是高的传播信号P[2]。能够在和值s[15:8]它本身实际上是可用的之前生成传播信号p[2]。例如,能够使用与加法器30-1相关联的异或电路对a[15:8]和b[15:8]执行异或(XOR)运算,并且如果异或运算的结果使它所有位等于I则P[2]可以等于1,否则p[2]可以等于O。如果p[2]等于1,则这意味着如果进位被输入到第一加法单元30-1,则其进位输出co[2]将具有与进位输入相同的值。因此,能够根据前面的第一级加法单元30-0的进位输出Co [I]来预测co[2]的值。因此,当P [2]等于I时,那么前面的进位输出Co [I]被转发到第二级加法单元32-2并且没有必要等待下一第一级加法单元30-1的进位输出co[2]被生成。选择电路42-1包括与门43和或门44。与门43只有当传播位p[2]的值是I才转发进位输出co[l]。或门44传递加法器30-1的进位输出Co[2]或与门43的输出。因此,进位网络允许第二级加法器32-2的进位输入ci [2]基于由第一级加法器30-0、30-1所执行的8位加法的结果被确定,而无需在这些加法器之间传递进位。类似地,第一级加法器30-2以与加法器30-1相同的方式生成传播位P [3],并且选择电路42-2基于P [3]来确定第二级加法器32-3的进位输入ci [3]应该是第一级加法器30-2的进位输出Co [3]还是经由转发路径40-2所转发的较早的进位Co [I]或Co [2]。
[0067]进位网络因此生成如下的进位值Ci [I]至Ci [3]:
[0068]# ci [I] =co [I]
[0069]# ci [2] = nrw8&sub ! nrw8&co[2] ! nrw8&p[2]&co[I]
[0070]# ci [3] = co [3] I p [3]&ci [2]。
[0071](其中&指逻辑与,I指逻辑或,以及!nrw8指nrw8的反-即如果nrw8 = O则!nrw8 = I 以及如果 nrw8 = I 则! nrw8 = O)。
[0072]第二级加法器32-1至32-3的舍入值rnd[n]被确定如下:
[0073]# rnd[l] = nrw8&r[7]
[0074]# rnd[2] = ! nrw8&r [15]
[0075]# rnd[3] = nrw8&r [23] | ! nrw8&r [15]&((s [23: 17] = = 7,h7f)&(ci [2]X0Rs[16])
[0076]对于rnd[3],以上的表达能够被理解如下:
[0077]“如果将s[31:16]+ci[2]缩小至r[31:24],则如果r [23]是高则设置rnd[3]为闻;
[0078]否则,如果将s[31:0]缩小至r[31:16],则考虑到当s [23:16]+ci[2]引起进位的情况已经被进位加速网络覆盖时,只有当rnd[2]引起进位输出进入位部分r [24]中才设置rnd[3]为高”。
[0079]有效地,对于16位或32位缩小,在每个处理通道内的最低有效第二级加法器具有与最高有效排除位的值相对应的舍入位(对于16位至8位缩小来说为r[7],以及对于32位至16位缩小来说为r[15])。在32位缩小的情况下,存在接收舍入值的更有效的第二级加法32-3,所述舍入值表示在最低有效第二级加法32-2处输入的舍入值rnd[2]是否将使进位向前行波传送到更有效的第二级加法器32-3,如果该舍入值尚未被输入则这将不会发生。这由以上的rnd[3]来表示。
[0080]如上所示,舍入值rnd[l]至rnd[3]取决于由第二级加法器32_1、32_2所生成的位r[15]、r[23]的值。在用第二级加法器32_2、32_3执行后续加法之前等待这些位变得可用将使处理延迟,这是不期望的。因此,能够通过预测由第一级加法器30根据以下表达式所生成的基于中间值s和进位输出co的r[15]和r[23]的值来进一步加速处理:
[0081]r[15] = s[15]X0R((s[14:8] = = 7,h7f)&co[I])
[0082]r[23] = s [23]XOR((s [22:16] = = 7’ h7f)&ci [2]),
[0083]其中如果s[14:8]或s[22:16]的所有位都是1,则(s[14:8] = = 7,h7f)和(s[22:16] ==7’ h7f)等于 I。
[0084]这允许所有舍入值rnd基于第一级加法的结果被确定,而在第一级或第二级处的8位加法器之间无需任何进位输出到进位输入路径。这允许合成引擎来优化处理逻辑以实现最高性能。因此,用于32位至16位舍入和16位至8位舍入两者的通过图7中所示的电路的关键定时路径对应于通过两个8位加法器和很少附加的进位转发电路的路径,这比图6中少得多。
[0085]图8示出了其中支持64位至32位缩小和舍入算术运算的另一个实施例。SMD处理电路6接收每个都可以包括四个16位数据元、两个32位数据元或一个64位数据元的两个64位操作数a[63:0]、b[63:0]。两个控制信号sell、sel2被用来选择缩小的相应类型。在图8底部处的表示出了针对每个类型的缩小的控制信号sell、sel2的值,以及最后的结果值n[31:0]如何从第二级加法器32的输出形成。因此,存在由SMD处理单元6所支持的若干不同的数据元配置。若干乘法器38被提供用于控制加法单元30、32是在相同的处理通道内处理不同的部分还是在不同的处理通道中对不同的数据元进行操作。sub值在使用加法器30-0、32-3、32-4、32-6中的一个或多个(取决于数据元尺寸)的每个处理通道的下端处被输入。
[0086]此外,处理单元具有包括转发路径40-1至40-6和选择电路42_1至42_6以用于加速确定要被输入到第二级加法器32-2至32-7的进位值ci [2]至ci [7]的进位网络。在图8中,选择电路42-3、42-5、42-6中的一些比在图7中更复杂,因为一些转换路径中允许进位值跳过若干加法单元,所以确定这是否是可能的需要中间传播位P [η]中的每一个都等于I。选择电路42和乘法器38共同提供用于根据以下逻辑表达式为每个第二级加法单元32确定进位输入的电路:
[0087]# ci [I] =co [I]
[0088]# ci [2] = ! sell&sub I sell&(co [2] IP [2]&co [I]).
[0089]# ci [3] = co [3] I p [3]&ci [2]
[0090]# ci [4] = ! sel2&sub | sel 1& (co [4] | p [4] &co [3] | p [4] &p [3] &ci [2])
[0091]# ci [5] = co [5] I p [5]&ci [4]
[0092]# ci [6] = ! sell&sub I sell&(co[6] |p[6]&co[5] |p[6]&p[5]&ci [4])
[0093]# ci [7] = co [7] sell&p [7]&(co [6] p[6]&co[5])
[0094]! sell&p [7]&sub I sell&p [7]&p [6]&p [5]&ci [4]。
[0095]如果初始缩小的结果将被递增则被设置为高的舍入值rnd[l]至rnd[7]根据以下表达式被确定:
[0096]# rnd[l] = nrw8&r[7]
[0097]# rnd[2] = nrwl6&r[15]
[0098]# rnd[3] = nrw8&r[23] |nrwl6&r[15]&((s[23:17] = = 7,h7f)&(ci [2]X0Rs[16]))
[0099]# rnd[4] = nrw32&r[31]
[0100]# rnd[5] = nrw8&r[39] |nrw32&r[31]&((s[39:33] = = 7,h7f)&(ci [4]X0Rs [32]))
[0101]# rnd[6] = nrwl6&r [47]
[0102]nrw32&r[31]&((s[39:33] == 7,h7f)&(ci [4]X0R s[32]))&
[0103]((s[47:41] == 7’ h7f)&(ci [5]X0R s[40]))
[0104]# rnd[7] = nrw8&r[55]
[0105]nrwl6&r[47]&((s[55:49] == 7’ h7f)&(ci [6]X0R s[48]))
[0106]nrw32&r[31]&((s[39:33] == 7,h7f)&(ci [4]X0R s[32]))&
[0107]((s[47:41] == 7,h7f)&(ci [5]X0R s[40]))&
[0108]((s[55:49] = = 7,h7f)&(ci [6]X0R s[48])),
[0109]其中nrw8 = ! sel2& ! sell, nrwl6 = ! sel2&sell,以及 nrw32 = sel2&sell分别表示用于“缩小至8个位”(nrw8)、“缩小至16个位”(nrwl6)以及“缩小至32个位”(nrw32)的控制信号sell、sel2的不同组合,
[0110]并且对于η = {15,23,31,39,47,55,63},r[n]能够被有利地替换如下:
[0111].r[15] = s[15]X0R(s[14:8] == 7’ h7f)&ci[l]
[0112].r[23] = s [23]XOR(s [22:16] = = 7,h7f)&ci [2]
[0113].r[31] = s[31]X0R(s[30:24] = = 7,h7f)&ci [3]
[0114].r[39] = s [39]X0R(s [38:32] = = 7,h7f)&ci [4]
[0115]# r [47] = s [47]XOR(s [46:40] = = 7,h7f)&ci [5]
[0116].r[55] = s [55]XOR(s [54:48] = = 7,h7f)&ci [6]
[0117].r[63] = s [63]X0R(s [62:55] = = 7’h7f)&ci [7]。
[0118]通过以这种方式为第二级加法32确定进位值ci [n]和舍入值rnd[n],即便当数据元尺寸和64位一样大,这种方案也允许缩小和舍入加法和减法迅速地完成,其中关键路径横跨8位加法器加上一些重叠进位逻辑(即16位加法)中的仅2个。相比之下,如果全64位加法在后面是32位加法的第一级加法处被执行以加上舍入值(如果图3的技术被按比例扩大到64位则情况将是如此),则关键路径将是96位的加法,这将是更缓慢的。通过将运算分解成能够被与彼此并行执行的8位块,缩小和舍入加法或减法运算能够被执行得足够快以在单个处理周期内进行拟合。
[0119]这对于待在第一级处和在第二级处执行的8位加法来说不是必要的。例如,能够使用一些处理器仍然也许能在一个周期中执行的16位加法来执行64位至32位缩小。然而,一般而言如果使用了较小的加法器则性能改进将是最大的。最一般地,可以使用N位加法器对一个或多个W位数据元执行缩小和舍入运算,其中N < W。
[0120]类似地,对于已舍入结果来说具有原始W位数据元一半数目的位不是必要的。可以使用任意的结果数据元尺寸X,其中X < W。如果X是N的倍数以便结果是从一定数量的第二级加法器的全输出形成的,则这可能是最方便的。例如,在图8的加法器32-7、32-6的输出r[63:48]被用来在最后的结果值n[16:0]中生成16位数据元的情况下能够执行64位至16位缩小。
[0121]图9示出了用于执行缩小和舍入算术运算的方法。在步骤50处,确定了要被执行的下一条指令是否是缩小和舍入算术指令。如果不是,则指令是另一类型的指令并且被相应地处理。当在步骤50处遇到缩小和舍入指令时,那么方法进行到步骤52,其中确定了该指令是缩小和舍入加法指令还是缩小和舍入减法指令。如果指令是缩小和舍入加法指令则在步骤54处处理电路的sub输入被设置为0,然而如果指令是缩小和舍入减法指令则在步骤56处第二操作数b被反转并且sub输入被设置为I。
[0122]在步骤58处,处理电路6使用N位第一级加法单元30来执行N位第一级加法。取决于输入操作数a、b中的数据元的数目,处理的一个或多个通道被执行。每个数据元都具有W个位[W-1:0],所以W/N第一级加法在每个处理通道中被执行。每个处理通道的第i个第一级加法加上对应W位数据元的位[a+N-1:a]以生成第i个N位中间值,其中
(W/N-1)并且 a = i*N。
[0123]在步骤60处,用于第二级加法32的进位值和舍入值使用以上针对图7或8所示出的关系基于第一级加法30的结果来确定。在步骤62处,至少一个N位第二级加法由N位第二级加法单元32来执行以生成N位结果部分r。在每个处理通道内,X/N第二级加法被执行,其中X是要被包括在每个结果数据元中的位的数目。每个处理通道的第j个第二级加法将由第j个第一级加法所生成的第j个N位中间值加到表示第(j-Ι)个第一级加法的进位输出的舍入值和进位值,以生成包括X位结果数据元的位[c+N-1:c]的N位结果部分,其中(W-X) /N ( j ( W/N-1 并且 c = j*N。
[0124]在步骤64处,结果值是从第二级加法的N位结果部分形成的。SMD处理单元6可以将选择的第二级加法器的输出放入结果值的对应位部分(以生成与图2中的结果d类似的结果值)。替换地,SMD处理单元6可以将所选择的第二级加法器32的输出集合在一起,以便它们被放入结果值(与图2中的结果值e类似)的相邻部分。在图8的底部处的表示出了第二级加法器32的输出如何能够被映射到最后的结果值η的示例。
[0125]因此,本技术提供了允许处理性能被改进的缩小和舍入算术运算的高效实施方式。
[0126]尽管已经参考附图在本文中详细地描述了本发明的说明性实施例,但应当理解的是,本发明不限于那些精确的实施例,并且在不背离如由所附权利要求所限定的本发明的范围和精神的情况下,可以由本领域的技术人员在其中实现各种改变和修改。
【权利要求】
1.一种数据处理装置,包括: 处理电路,该处理电路被配置为处理数据;以及 控制电路,该控制电路被配置为控制所述处理电路响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W > X ; 其中所述控制电路被配置为控制所述处理电路通过以下各项来生成所述结果值的每个X位结果数据元: (a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W = J*N并且J > I以及N和J是整数; (b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值,来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分,所述前面的第一级加法用于相较所述对应第一级加法加上较不有效的所述对应W位数据元的N位部分;以及 (c)从由所述一个或多个N位第二级加法中的至少一个所生成的所述N位结果部分形成所述X位结果数据元。
2.如权利要求1所述的数据处理装置,其中所述控制电路被配置为控制所述处理电路在单个处理循环中执行所述缩小和舍入算术运算。
3.如权利要求1所述的数据处理装置,其中X= W/2。
4.如权利要求1所述的数据处理装置,其中所述缩小和舍入算术指令包括缩小和舍入加法指令和缩小和舍入减法指令; 响应于所述缩小和舍入加法指令,所述控制电路被配置为控制所述第一级加法加上所述对应W位数据元的所述N位部分;以及 响应于所述缩小和舍入减法指令,所述控制电路被配置为控制所述第一级加法减去所述对应W位数据元的所述N位部分。
5.如权利要求4所述的数据处理装置,其中响应于所述缩小和舍入减法指令,所述控制电路被配置为: (a)控制所述处理电路执行所述多个第一级加法,其中每个第一级加法都将所述N位部分中的一个加到通过反转所述N位部分中的另一个所获得的反转的N位部分;以及 (b)控制所述处理电路递增所述多个第一级加法中的一个或所述一个或多个第二级加法中的一个的输出。
6.如权利要求1所述的数据处理装置,其中响应于标识每个都包括多个W位数据元的所述两个操作数的所述缩小和舍入算术指令,所述控制电路被配置为控制所述处理电路并行生成所述结果值的多个X位结果数据元。
7.如权利要求6所述的数据处理装置,其中所述控制电路被配置为根据所述缩小和舍入算术指令的可变参数来选择数据元的数目和所述数据元的数据元尺寸W。
8.如权利要求1所述的数据处理装置,其中所述处理电路包括用于执行所述N位第一级加法的多个N位第一级加法单元和用于执行所述至少一个N位第二级加法的多个N位第二加法单元。
9.如权利要求8所述的数据处理装置,其中所述控制电路被配置为根据所述缩小和舍入算术指令的可变参数来控制用于生成每个X位结果数据元的第一加法单元和第二加法单元的选择。
10.如权利要求1所述的数据处理装置,其中所述控制电路被配置为控制所述处理电路通过以下各项来生成所述结果值的每个X位结果数据元: (a)执行W/N第一级加法; (b)执行与所述W/N第一级加法的X/N第一级加法相对应的X/N第二级加法;以及 (c)从由所述X/N第二级加法所生成的N位结果部分形成所述X位结果数据元。
11.如权利要求10所述的数据处理装置,其中每个W位数据元都包括W个位[W-1:0]并且每个X位结果数据元都包括X个位[X-1:0];以及 所述W/N第一级加法的第i个第一级加法加上所述对应W位数据元的位[a+N-1:a]以生成第i个N位中间值,其中(W/N-1)并且a = i*N ; 所述X/N第二级加法的第j个第二级加法将第j个N位中间值加到舍入值和表示第(j-1)个第一级加法的进位输出的进位值以生成包括所述X位结果数据元的位[c+N-1:c]的N位结果部分,其中(W-X)/N ( j ( W/N-1并且c = j*N。
12.如权利要求1所述的数据处理装置,包括被配置为确定所述进位值的进位网络; 针对至少一个第二级加法,所述进位网络包括用于提供较早的第一级加法的进位输出作为所述进位值的进位转发路径,所述较早的第一级加法用于相较所述前面的第一级加法加上较不有效的所述对应W位数据元的N位部分。
13.如权利要求12所述的数据处理装置,其中所述进位网络包括选择电路,所述选择电路被配置为:选择是否提供所述前面的第一级加法的进位输出或在所述进位转发路径上所转发的所述较早的第一级加法的进位输出作为所述进位值。
14.如权利要求13所述的数据处理装置,其中所述选择电路被配置为:如果所述前面的第一级加法的所述进位输出被预期取决于所述较早的第一级加法的所述进位输出、并且具有与所述较早的第一级加法的所述进位输出相同的值,则选择所述较早的第一级加法的所述进位输出,否则选择所述前面的第一级加法的所述进位输出。
15.如权利要求1所述的数据处理装置,其中针对用于生成所述X位结果数据元的最低有效N位部分的最低有效第二级加法,所述处理电路被配置为以用于将所述X位结果数据元舍入到与对应于所述对应W位数据元的所述和或差的W位值最近的X位值的值来生成所述舍入值。
16.如权利要求15所述的数据处理装置,其中所述处理电路被配置为以与所述W位值的最高有效排除位的值相对应的值来生成所述舍入值,所述最高有效排除位包括:在所述最近的X位值中不具有对应有效性的位的所述W位值的最高有效位。
17.如权利要求15所述的数据处理装置,其中所述处理电路被配置为:基于至少一个第一级加法的进位输出和N位中间值中的至少一个为所述最低有效第二级加法,来确定所述舍入值,所述第一级加法用于相较与所述最低有效第二级加法相对应的所述对应第一级加法加上较不有效的所述对应W位数据元的N位部分。
18.如权利要求15所述的数据处理装置,其中针对用于生成比所述最低有效N位部分更有效的所述X位结果数据元的N位部分的更有效的第二级加法,所述处理电路被配置为:用表示由所述最低有效第二级加法所加上的舍入值是否将使进位传到所述更有效的第二级加法的值来生成所述舍入值,如果所述舍入值未被所述最低有效第二级加法加上则上述操作将不会发生。
19.如权利要求18所述的数据处理装置,其中所述处理电路被配置为基于至少一个第一级加法的N位中间值和进位输出中的至少一个为所述更有效的第二级加法确定所述舍入值,而不用实际上将所述进位从所述最低有效第二级加法传播到所述更有效的第二级加法。
20.一种数据处理装置,包括: 处理装置,该处理装置用于处理数据;以及 控制装置,该控制装置用于控制所述处理装置响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W > X ; 其中所述控制装置被配置为控制所述处理装置以通过以下各项来生成所述结果值的每个X位结果数据元: (a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W = J*N并且J > I以及N和J是整数; (b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分,所述前面的第一级加法用于相较所述对应第一级加法加上较不有效的所述对应W位数据元的N位部分;以及 (c)从由所述一个或多个N位第二级加法中的至少一个所生成的所述N位结果部分形成所述X位结果数据元。
21.一种用于数据处理装置的数据处理方法,包括: 响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令,执行缩小和舍入运算以生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W > X ; 其中每个X位结果数据元都通过以下各项来生成: (a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W = J*N并且J > I以及N和J是整数; (b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分,所述前面的第一级加法用于相较所述对应第一级加法加上较不有效的所述W位数据元的N位部分;以及 (c)从由所述一个或多个N位第二级加法中的至少一个所生成的所述N位结果部分形成所述X位结果数据元。
【文档编号】G06F9/38GK104346134SQ201410320394
【公开日】2015年2月11日 申请日期:2014年7月7日 优先权日:2013年7月31日
【发明者】内尔·伯吉斯, 大卫·雷蒙德·鲁茨 申请人:Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1