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

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

Info

Publication number
CN104346134B
CN104346134B CN201410320394.9A CN201410320394A CN104346134B CN 104346134 B CN104346134 B CN 104346134B CN 201410320394 A CN201410320394 A CN 201410320394A CN 104346134 B CN104346134 B CN 104346134B
Authority
CN
China
Prior art keywords
addition
carry
order
level
value
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
CN201410320394.9A
Other languages
English (en)
Other versions
CN104346134A (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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN104346134A publication Critical patent/CN104346134A/zh
Application granted granted Critical
Publication of CN104346134B publication Critical patent/CN104346134B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/503Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

用于执行缩小和舍入算术运算的数据处理装置和方法
技术领域
本发明涉及数据处理领域。更特别地,本发明涉及一种用于执行缩小和舍入(narrowing-and-rounding)算术运算的数据处理装置和方法。
背景技术
数据处理装置可以执行缩小和舍入算术运算,其中两个数据值被相加或者相减并且加法或减法的结果被舍入以产生具有比原始数据值更少的位的数据值。本技术寻求加速这样的运算的实施方式。
发明内容
从一个方面看,本发明提供了一种数据处理装置,其包括:
处理电路,其被配置为处理数据;以及
控制电路,其被配置为控制所述处理电路响应于标识两个操作数(每个都包括至少一个W位数据元)的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W>X;
其中所述控制电路被配置为控制所述处理电路通过如下各项来生成所述结果值的每个X位结果数据元:
(a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W=J*N并且J>1以及N和J是整数;
(b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值,来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分,所述前面的第一级加法用于相较所述对应第一级加法加上较不有效的所述对应W位数据元的N位部分
(c)从由所述一个或多个N位第二级加法中的至少一个所生成的N位结果部分形成所述X位结果数据元。
缩小和舍入算术运算通过加上或者减去对应W位值并且将结果舍入到X位值来生成结果值,其中W>X。实现这种运算的一个方式可能是执行W位加法或减法并且然后执行X位加法以将舍入值加到W位加法或减法的结果的高X位。然而,W可以是大的(例如32或64),并且甚至针对W的相对低的值(例如16),执行W位加法可能花费很长时间,因为直到前面的位已被计算并且已确定了是否存在来自前面的位的进位为止才能够计算加法的每个连续位。当进位可以从最低有效位到最高有效位一直行波传送时,执行W位加法可能花费很长时间。因此,缩小和舍入算术运算的这种实施方式将是缓慢的。
为了解决这个问题,本技术将W位加法分解成许多N位第一级加法,所述N位第一级加法都通过加上或者减去两个操作数的对应W位数据元的N位部分来生成相应的N位中间值。如果W位加法被执行则将会在和的相应的N位部分之间传递的进位值在第一级加法中未被相加。这意味着能够与彼此并行执行相应的N位第一级加法,因为在执行另一第一级加法之前没有必要等待第一级加法中之一的进位输出。因此,能够更迅速地执行缩小和舍入算术运算。因为相应的N位第一级加法之间的进位位未通过第一级加法被相加,所以N位中间值不表示对应W位数据元的真实和或差的部分。然而,本发明人认识到了这不是问题,因为将N位和或差舍入到X位值可以通过加上舍入值来执行,所以加法的第二级针对舍入来说可能已经是需要的。能够在至少一个N位第二级加法中与舍入值同时加上来自第一级加法的任何进位值。每个第二级加法都可以将来自对应第一级加法的N位中间值加到舍入值和表示前面的N位第一级加法的进位输出的进位值。然后能够从由一个或多个第二级加法所生成的N位结果部分形成X位结果数据元。以这种方式,能够减少通过用于执行缩小和舍入算术运算的处理电路的关键定时路径。即便当W是大的(例如32或64位)时,加法也仍然能够使用许多N位第一和第二级加法(例如,其中N=8)来执行,从而允许增加的并行性并且因此减少用于执行该运算所需要的时间。
通过将W位运算分解成许多N位块所提供的性能改进可以允许处理电路在单个处理周期中执行缩小和舍入算术运算。相比之下,如果已执行了全W位加法则这无法一直是可能的。
一般而言,输入数据元尺寸W可以是大于输出数据元尺寸X的任何值。然而,在实践中数据元尺寸W将常常是二的幂(8、16、32、64等),并且W将典型地是N的两倍的幂(即J=2Z,其中Z≥1)。
并且,X可以具有小于W的任何值。如果X也是N的倍数则运算的实施方式可能是更高效的。常常,结果将被舍入到为原始数据元的尺寸一半的数据元,即X=W/2。处理电路的一些示例也许能舍入到任意尺寸的结果数据元,然而其它形式的处理电路可能被限制于仅舍入到特定尺寸,例如W/2位数据元。
缩小和舍入算术运算可以具有不同的形式,包括缩小和舍入加法指令和缩小和舍入减法指令。响应于加法指令控制电路可以控制第一级加法加上对应W位数据元的N位部分,以及响应于减法指令可以在第一级加法处减去N位部分。
在以与将针对缩小和舍入加法指令的情况确切地相同的方式对二的补码和另一个W位数据元执行缩小和舍入加法运算之前,实现缩小和舍入减法运算的一个方式可能将形成W位数据元中之一的二的补码。二的补码可以通过反转W位数据元的所有位并且加上1来形成。然而,如果在第一级加法之前生成二的补码,则这需要将增加执行运算所需要的时间的额外的加法。因此,实施缩小和舍入减法指令的一个更高效方式可能是控制处理电路执行N位第一级加法,其中每个第一级加法都将N位部分中的一个加到通过反转N位部分中的另一个、以及然后控制第一级加法或第二级加法递增其输出所获得的反转的N位部分,这对于缩小和舍入加法指令将不发生。递增第一或第二级加法中的一个的输出同时执行缩小和舍入算术运算实现与如果1在执行缩小和舍入算术运算之前被加到经反转的N位部分相同的效果。将这种递增与第一或第二级加法中的一个组合节省一个加法周期。因此,除了输入值中的一个被反转并且确切的递增在N位加法中的一个处被相加,可以以几乎与缩小和舍入加法指令相同的方式实现缩小和舍入减法指令。
缩小和舍入算术运算可以被应用于每个都具有仅一个W位数据元的两个操作数。然而,还可以在支持被应用于具有多个数据元的操作数的单指令多数据(SIMD)运算的系统中使用缩小和舍入算术运算。例如,64位操作数可以支持四个16位数据元、两个32位数据元或一个64位数据元,其中处理的并行通道被应用于每个数据元。因此,如果缩小和舍入算术指令标识两个操作数每个都具有多个W位数据元,则控制电路可以控制处理电路并行生成结果值的多个X位结果数据元。对于处理的每个通道,可以执行所述多个N位第一级加法和至少一个N位第二级加法来产生对应的X位结果数据元。处理电路然后可以从由处理的每个通道中的加法所生成的X位结果数据元形成结果值。
控制电路可以根据缩小和舍入算术运算的可变参数来选择数据元的数目和数据元的数据元尺寸W。例如,指令可以包括标识数据元尺寸W的字段,并且可以从这个推导出数据元的数目,或者反之亦然。
处理电路可以包括多个N位第一加法单元和多个N位第二加法单元。控制电路可以根据缩小和舍入算术指令的可变参数(诸如控制数据元的数据元尺寸或数目的一个)来控制使用哪些第一加法单元和哪些第二加法单元来生成每个X位结果数据元。例如,对于每个相应的数据元尺寸,可以存在提供一个或多个处理通道以用于处理两个输入操作数的相应的数据元的N位加法单元的对应配置。
对于每个X位结果数据元,处理电路可以执行W/N第一级操作和与第一级加法的X/N相对应的X/N第二级加法。典型地,X/N第二级加法将对应于加上原始W位数据元的X/N最高有效部分的第一级加法。然后能够从由X/N第二级加法所生成的N位结果部分形成X位结果数据元。每个第一或第二级加法可以由相应的N位加法单元来执行。因为电路可以支持不同的数据元尺寸,所以对于特定的缩小和舍入算术运算可能不需要所有加法单元。特别地,可以存在不对X位结果作出贡献的一些第二加法单元。可以使这样的第二加法单元闲置以节省能量。替换地,从控制观点看每个第二加法单元即使其输出将不被用来形成X位结果数据元,可无论如何执行加法可能是较简单的。
每个W位数据元都可以包括W位[W-1:0]并且每个X位结果数据元可以包括X位[X-1:0]。记号[R:S]表示从在位位置R处的最高有效位扩展到在位位置S处的最低有效位的一组位。针对给定处理通道的W/N第一级加法和X/N第二级加法可以被执行使得:
所述W/N第一级加法的第i个第一级加法加上所述对应W位数据元的位[a+N-1:a]以生成第i个N位中间值,其中0≤i≤(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。
在这里,计数值i和j通过针对应用于两个操作数的对应W位数据元的处理的单个通道所执行的加法进行计数以生成结果值的对应结果N位数据元。如果两个操作数据每个都具有一个以上的数据元,则将针对每对W位数据元重复这些加法。因此,对于处理的每个通道,i和j将计数直到W/N-1并且然后对于下一个通道再一次在0处开始。
如上面所讨论的那样,第一级加法被分解成N位块并且进位在相应的第一级加法之前未被传递以及替代地在第二级处被相加。这允许N位第一级加法被并行执行以加速运算。然而,仍然可能花费一些时间来确定N位第一级加法中的一些的进位值,因为较高的第一级加法的进位仍然取决于较低的第一级加法的结果。如果进位通过从值的最低有效端到最高有效端一直行波传送进位而被确定,则这可能花费很长时间,使得难以在单个处理周期中执行缩小和舍入运算。针对至少一个第二级加法,所述进位网络包括用于提供较早的第一级加法的进位输出作为所述进位值的进位转发路径,所述较早的第一级加法用于相较所述前面的第一级加法加上较不有效的所述对应W位数据元的N位部分。
因此,为了加速进位确定,处理装置可以具有被配置为确定在第二级加法处要被相加的进位值。对于至少一个第二级加法,进位网络可以具有用于提供较早的第一级加法的进位输出作为所述进位值的进位转发路径(较早的第一级加法用于相较所述前面的第一级加法加上较不有效的所述对应W位数据元的N位部分)。进位转发路径允许进位值绕过前面的第一级加法,以便进位没有必要通过前面的第一级加法一直被行波传送。这减少进位传播延迟。因此,虽然在第二级加法处相加的进位值表示前面的第一级加法的进位输出,但是它不必是前面的第一级加法的实际进位输出,因为该进位值替代地可以使用进位网络来预测。
进位网络可以具有为至少一个第二级加法选择是否将前面的第一级加法的进位输出或在进位转发路径上正被转发的较早的第一级加法的进位输出作为进位输入值来提供的选择电路。进位网络可以做出前面的第一级加法的进位输出是否被预期取决于第一级加法的进位输出并且具有与第一级加法的进位输出相同的值的预测。如果是这样的话,则较早的第一级加法的进位输出能够被转发到第二级加法,然而否则可以选择前面的第一级加法的进位输出。例如,如果由前面的第一级加法所加上的值的和全部具有等于一的位值(这能够通过执行正被相加的值的异或来确定),则前面的第一级加法的进位输出将取决于较早的第一级加法的进位输出,并且具有与较早的第一级加法的进位输出相同的值。如果所有和位值都是一,则前面的第一级加法的任何进位输入将引起同一位值的进位输出,所以能够通过将较早的第一级加法的进位输出直接地转发到第二级加法而不用通过前面的第一级加法一直行波传送进位来节省时间。
通过对于在同一W位处理通道内的每个连续第一级加法执行类似的进位预测,能够基于与彼此并行执行的许多N位加法来预测第一级加法的进位输出而无需来自一个第一级加法的进位输出被输入到另一第一级加法。进位值能够被转发使得它们绕过若干加法单元。这意味着通过处理电路的关键路径能够被减少到一个N位第一级加法和一个N位第二级加法,其中必要时多个第一或第二级加法被与彼此并行执行。因此,进位网络使得运算能够被加速并且减少用于执行缩小和舍入算术运算所需要的时间。
可以以各种方式生成舍入值。一般而言,舍入值可以被生成使得它具有使X位结果数据元相当于与对应于对应W位数据元的和或差的W位值最近的X位值(这个W位值实际上不是由处理电路计算的)。如果和或差几乎位于两个X位数据值之间,则各种舍入方案可以被用来确定是向上舍入还是向下舍入。例如,相持总是能够被向上舍入,或者能够被舍入远离零,或者能够视需要而定被舍入到最近的奇数或偶数值。
为了舍入到最近的X位值,在相持被向上舍入情况下,实现此的简单方式是加上具有与在最近的X位值(被称为“最高有效位排除位”)中不具有对应有效位的位的W位值和或差的最高有效位相同的位值的舍入值。如果加上或者减去两个W位数据元将产生W位和或差值[W-1:0],则最高有效排除位将是位[W-X-1]。虽然W位和值或差值因为W位加法被实际上分解成若干N位第一级加法而实际上未被生成,但是如果W位加法被实际上执行则处理电路能够确定最高有效排除位的值将是什么,并且相应地设置舍入位。
对于每个处理通道,在该通道中用于最低有效第二级加法的舍入位可以基于前面的第一级加法的结果而被确定。额外的第二级加法将有可能被执行以用于加上这些第一级加法的N位中间值和进位输出,以便能够确定和或差的最高有效排除位的值。然而,这可能增加处理时间,因为它可能需要进位通过若干第二级加法器被行波传送以确定最高有效排除位将是1还是0。因此,为了加速事情的进展,可以根据第一级加法的中间值和进位输出直接地确定舍入值,所述第一级加法加上与最低有效第二级加法相对应的相较第一级加法较不有效的N位部分。这避免了对于沿着第二级加法的进位输出到进位输入路径的任何需要,从而允许运算被更迅速地执行。
如果X大于N则可能在同一处理通道内需要多个第二级运算。对于用于生成比最低有效端位部分更有效的X位结果数据元的N位部分的更有效的第二级加法,人们可能认为没有必要加上舍入值(通常,舍入值将仅在结果值的最低有效端处被相加并且然后进位可以行波传送到结果值的更有效的端)。然而,在这种情况下第二级加法将有效地是具有多于N个位的相加值,并且进位将使处理时间增加。为了改进性能,第二级加法被分成N位部分。更有效的第二级加法的舍入值用表示在最低有效第二级加法处加上的舍入值是否将使进位传遍到如果舍入值未被最低有效第二级加法加上则将不会发生的更有效的第二级加法来生成。因此,处理电路可以确定这样的进位是否将发生,以及如果发生则可以相应地为第二级加法的更有效的N位块设置舍入值。用于更有效的第二级加法的舍入值可以基于至少一个第一级加法的中间值和进位输出被直接地确定,而不用实际上将进位从最低有效第二级加法传播到更有效的第二级加法。消除沿着第二级加法的这些进位输出到进位输入路径使得性能能够被改进。
从另一方面看,本发明提供了一种数据处理装置,其包括:
处理装置,其用于处理数据;以及
控制装置,其用于控制所述处理装置响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W>X;
其中所述控制装置被配置为控制所述处理装置通过以下各项来生成所述结果值的每个X位结果数据元:
(a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W=J*N并且J>1以及N和J是整数;
(b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值以便加上相较所述对应第一级加法较不有效的所述W位数据元的N位部分来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分;以及
(c)从由所述一个或多个N位第二级加法中的至少一个所生成的N位结果部分形成所述X位结果数据元。
从另一个方面看,本发明提供了一种用于数据处理装置的数据处理方法,包括:
响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令,执行缩小和舍入运算以生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W>X;
其中每个X位结果数据元都通过以下各项来生成:
(a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W=J*N并且J>1以及并且N和J是整数;
(b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值以便加上相较所述对应第一级加法较不有效的所述W位数据元的N位部分来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分;以及
(c)从由所述一个或多个N位第二级加法中的至少一个所生成的N位结果部分形成所述X位结果数据元。
本发明的上述内容和其它目的、特征以及优点根据将结合附图一起阅读的说明性实施例的以下具体描述将是显而易见的。
附图说明
图1示意性地图示了数据处理装置的一部分;
图2示意性地图示了缩小和舍入算术运算;
图3图示了缩小和舍入算术运算的潜在实施方式;
图4图示了其中来自第一级加法的进位值在第二级加法处被输入以用于舍入的缩小和舍入算术运算的实施方式;
图5图示了用于对两对16位数据元上执行并行缩小和舍入算术运算的电路;
图6图示了对一对32位数据元所执行的缩小和舍入算术运算的潜在实施方式;
图7图示了用于对两对16位数据元或一对32位数据元执行缩小和舍入算术运算的处理电路的一部分;
图8图示了用于对四对16位数据元、两对32位数据元或一对64位数据元执行缩小和舍入运算的电路;以及
图9示出了执行缩小和舍入算术运算的方法。
具体实施方式
图1示意性地图示了用于处理数据的数据处理装置2的一部分。装置2具有处理器4,所述处理器4包括用于对包括一个或多个数据元的操作数执行SIMD处理运算的单指令多数据(SIMD)处理单元6。SIMD指令解码器8被提供用于对SIMD指令进行解码并且控制SIMD处理单元6响应于指令来执行SIMD运算。在一个示例中,SIMD解码器8可以是同样对非SIMD指令进行解码以便执行非SIMD运算的组合式解码器。替换地,能够提供单独的非SIMD解码器。装置2同样具有用于存储数据值的寄存器10。响应于指令,处理电路4可以从寄存器10读取要被处理的操作数并且可以将结果值存储到寄存器10。将了解的是,装置2还可以包括为了简洁目的在图1中未被图示的许多其它组件。
图2示意性地图示了对每个都包括四个数据元a0-a3、b0-b3的两个操作数所执行的缩小和舍入算术运算。每个数据元都具有W个位。在缩小和舍入算术运算中,操作数a、b的对应数据元被相加或者相减以在中间数据值c的每个数据元中产生和或差值a±b。中间值c的每个数据元然后被舍入到结果值d中的X位值。最后,在值d的每个数据元内的X位部分被集合在一起并且放入第二结果值e的相邻部分。在图2中从d到e的集合步骤是可选的,并且在其它示例中,缩小和舍入算术运算的结果可以是结果值d。
图2示出了针对缩小和舍入算术运算的数学运算。在实践中,处理电路4无法实际上执行这些确切的数学运算,并且以其它方式生成相同的结果值d或e可能是更高效的。图3示出了用于对单对16位元执行缩小和舍入算术运算的电路的示例。图3的电路可以对应于图2中所示的处理通道之一中的处理。如图3所示,16位加法器20可以加上或者减去两个16位数据元a[15:0]和b[15:0]。如果缩小和舍入减法将被执行,则b输入被反转并且被连接到16位加法器20的进位输入的值sub被设置为1以便有效地形成操作数b的二的补码。对于加法,sub被设置为0。不管a和b将被相加还是相减,加法器20输出16位值s[15:0]。第二8位加法器22然后取第一和的高8位s[15:8]并且加上与第一加法器20的输出的已排除部分的最高有效位相对应的舍入值s[7]。舍入值和16位和的非排除部分s[15:8]的和然后作为8位舍入的结果值r[7:0]被输出。
因此,在图3中缩小和舍入运算使用与图2中所示相同的数学运算来执行。然而,使用加法器20执行16位加法是缓慢的,因为如果需要从前面的位传播进位,加法的每个连续位在被相加之前都必须等待将可用的前面的位的结果。因此,图3中所示的电路具有24个位的有效关键路径,因为16位加法必须首先被加法器20执行,并且然后一旦16位加法完成了另一8位加法就需要被加法器22执行。
图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位第二级加法。通过在第二级而不是第一级处加上进位位,能够减少总体处理时间。
如图5所示,图4中所示的电路能够被复制以便能够对两对16位数据元并行执行缩小和舍入运法以生成具有两个8位数据元的结果值。在处理的每个通道内,运算是与图4中所示相同的。
如图6所示,可以对一对32位数据元执行缩小和舍入算术运算以生成16位结果数据元。除了每个8位加法器都已被用16位加法器代替图6与图4类似(其中每个16位加法器都由两个8位加法器形成,其中一个8位加法器的进位输出端被连接到另一个8位加法器的进位输入端)。然而,这意味着关键路径横跨两个16位加法器(或四个8位加法器),这是冗长的并且可能意味着不能够在单个处理周期中执行运算。
因此,32位缩小和舍入运算能够通过提供如图7中所示的电路来加速。图7中所示的SIMD处理单元6的部分能够被用来对两对16位数据元a[31:16]、b[31:16]和a[15:0]、b[15:0]或一对32位数据元a[31:0]、b[31:0]执行舍入和缩小算术运算。控制信号nrw8控制数据元尺寸并且基于标识数据元尺寸的缩小和舍入算术指令的参数被设置。当数据元尺寸W=16(即16位至8位缩小)时,那么控制信号nrw8被设置为1,以及当W=32(即32位至16位缩小)时,那么控制信号nrw8被设置为0。
如图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-1)的进位输出co[j]的进位值ci[j],以便生成N位结果部分r,其中j=1、2或3。当nrw8是1(16位至8位缩小)时,那么结果值是从由第二级加法单元32-3、32-1所输出的8位结果部分r[31:24]、r[15:8]形成的。当nrw8是0(32位至16位缩小)时,那么结果值是从由第二级加法单元32-3、32-2所输出的结果部分r[31:24]、r[23:16]形成的。
乘法器38控制是否基于控制信号nrw8执行16位或32位缩小。如果nrw8等于1(16位至8位缩小),则在第二级加法器32-2的进位输入端处输入sub值,以便如果减法被执行(sub=1)则结果将被递增以反映操作数之一的二的补码,如以上针对图3所讨论的那样。另一个处理通道的sub输入在第一级加法器30-0处被相加。因此,值sub能够在第一级或第二级处被相加。另一方面当控制信号nrw8是0(32位至16位缩小)时,那么能够在第二级加法器32-2的进位输入端ci[2]处输入进位值。因此,乘法器38控制SIMD处理电路6是否当作一个32位处理通道或两个独立的16位处理通道。
图7中所示的SIMD处理电路6具有包括进位转发路径40-1、40-2和选择电路42-1、42-2的进位网络。进位网络用于通过预测第一级加法器30-1、30-2的进位输出co[2]、co[3]的值来使处理加速,而无需进位在实际上从下部第一级加法器被行波传送。最低有效第一级加法单元30-0的进位输出co[1]被直接地作为进入输入ci[1]输入到最低第二级加法单元32-1。加法单元30-0的进位输出co[1]同样经由转发路径40-1被转发到下一最高第二级加法单元32-2。选择电路42-1选择下一最高第二级加法器32-2的进位输入ci[2]是否应该等于在转发路径40-1上接收到的第一级加法器30-0的进位输出co[1],或下一第一级加法单元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)运算,并且如果异或运算的结果使它所有位等于1则p[2]可以等于1,否则p[2]可以等于0。如果p[2]等于1,则这意味着如果进位被输入到第一加法单元30-1,则其进位输出co[2]将具有与进位输入相同的值。因此,能够根据前面的第一级加法单元30-0的进位输出co[1]来预测co[2]的值。因此,当p[2]等于1时,那么前面的进位输出co[1]被转发到第二级加法单元32-2并且没有必要等待下一第一级加法单元30-1的进位输出co[2]被生成。选择电路42-1包括与门43和或门44。与门43只有当传播位p[2]的值是1才转发进位输出co[1]。或门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[1]或co[2]。
进位网络因此生成如下的进位值ci[1]至ci[3]:
●ci[1]=co[1]
●ci[2]=nrw8&sub|!nrw8&co[2]|!nrw8&p[2]&co[1]
●ci[3]=co[3]|p[3]&ci[2]。
(其中&指逻辑与,|指逻辑或,以及!nrw8指nrw8的反-即如果nrw8=0则!nrw8=1以及如果nrw8=1则!nrw8=0)。
第二级加法器32-1至32-3的舍入值rnd[n]被确定如下:
●rnd[1]=nrw8&r[7]
●rnd[2]=!nrw8&r[15]
●rnd[3]=nrw8&r[23]|!nrw8&r[15]&((s[23:17]==7’h7f)&(ci[2]XOR s[16])
对于rnd[3],以上的表达能够被理解如下:
“如果将s[31:16]+ci[2]缩小至r[31:24],则如果r[23]是高则设置rnd[3]为高;
否则,如果将s[31:0]缩小至r[31:16],则考虑到当s[23:16]+ci[2]引起进位的情况已经被进位加速网络覆盖时,只有当rnd[2]引起进位输出进入位部分r[24]中才设置rnd[3]为高”。
有效地,对于16位或32位缩小,在每个处理通道内的最低有效第二级加法器具有与最高有效排除位的值相对应的舍入位(对于16位至8位缩小来说为r[7],以及对于32位至16位缩小来说为r[15])。在32位缩小的情况下,存在接收舍入值的更有效的第二级加法32-3,所述舍入值表示在最低有效第二级加法32-2处输入的舍入值rnd[2]是否将使进位向前行波传送到更有效的第二级加法器32-3,如果该舍入值尚未被输入则这将不会发生。这由以上的rnd[3]来表示。
如上所示,舍入值rnd[1]至rnd[3]取决于由第二级加法器32-1、32-2所生成的位r[15]、r[23]的值。在用第二级加法器32-2、32-3执行后续加法之前等待这些位变得可用将使处理延迟,这是不期望的。因此,能够通过预测由第一级加法器30根据以下表达式所生成的基于中间值s和进位输出co的r[15]和r[23]的值来进一步加速处理:
r[15]=s[15]XOR((s[14:8]==7’h7f)&co[1])
r[23]=s[23]XOR((s[22:16]==7’h7f)&ci[2]),
其中如果s[14:8]或s[22:16]的所有位都是1,则(s[14:8]==7’h7f)和(s[22:16]==7’h7f)等于1。
这允许所有舍入值rnd基于第一级加法的结果被确定,而在第一级或第二级处的8位加法器之间无需任何进位输出到进位输入路径。这允许合成引擎来优化处理逻辑以实现最高性能。因此,用于32位至16位舍入和16位至8位舍入两者的通过图7中所示的电路的关键定时路径对应于通过两个8位加法器和很少附加的进位转发电路的路径,这比图6中少得多。
图8示出了其中支持64位至32位缩小和舍入算术运算的另一个实施例。SIMD处理电路6接收每个都可以包括四个16位数据元、两个32位数据元或一个64位数据元的两个64位操作数a[63:0]、b[63:0]。两个控制信号sel1、sel2被用来选择缩小的相应类型。在图8底部处的表示出了针对每个类型的缩小的控制信号sel1、sel2的值,以及最后的结果值n[31:0]如何从第二级加法器32的输出形成。因此,存在由SIMD处理单元6所支持的若干不同的数据元配置。若干乘法器38被提供用于控制加法单元30、32是在相同的处理通道内处理不同的部分还是在不同的处理通道中对不同的数据元进行操作。sub值在使用加法器30-0、32-3、32-4、32-6中的一个或多个(取决于数据元尺寸)的每个处理通道的下端处被输入。
此外,处理单元具有包括转发路径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[n]中的每一个都等于1。选择电路42和乘法器38共同提供用于根据以下逻辑表达式为每个第二级加法单元32确定进位输入的电路:
●ci[1]=co[1]
●ci[2]=!sel1&sub|sel1&(co[2]|p[2]&co[1]).
●ci[3]=co[3]|p[3]&ci[2]
●ci[4]=!sel2&sub|sel1&(co[4]|p[4]&co[3]|p[4]&p[3]&ci[2])
●ci[5]=co[5]|p[5]&ci[4]
●ci[6]=!sel1&sub|sel1&(co[6]|p[6]&co[5]|p[6]&p[5]&ci[4])
●ci[7]=co[7]|sel1&p[7]&(co[6]|p[6]&co[5])|
!sel1&p[7]&sub|sel1&p[7]&p[6]&p[5]&ci[4]。
如果初始缩小的结果将被递增则被设置为高的舍入值rnd[1]至rnd[7]根据以下表达式被确定:
●rnd[1]=nrw8&r[7]
●rnd[2]=nrw16&r[15]
●rnd[3]=nrw8&r[23]|nrw16&r[15]&((s[23:17]==7’h7f)&(ci[2]XOR s[16]))
●rnd[4]=nrw32&r[31]
●rnd[5]=nrw8&r[39]|nrw32&r[31]&((s[39:33]==7’h7f)&(ci[4]XOR s[32]))
●rnd[6]=nrw16&r[47]|
nrw32&r[31]&((s[39:33]==7’h7f)&(ci[4]XOR s[32]))&
((s[47:41]==7’h7f)&(ci[5]XOR s[40]))
●rnd[7]=nrw8&r[55]|
nrw16&r[47]&((s[55:49]==7’h7f)&(ci[6]XOR s[48]))|
nrw32&r[31]&((s[39:33]==7’h7f)&(ci[4]XOR s[32]))&
((s[47:41]==7’h7f)&(ci[5]XOR s[40]))&
((s[55:49]==7’h7f)&(ci[6]XOR s[48])),
其中nrw8=!sel2&!sel1,nrw16=!sel2&sel1,以及nrw32=sel2&sel1分别表示用于“缩小至8个位”(nrw8)、“缩小至16个位”(nrw16)以及“缩小至32个位”(nrw32)的控制信号sel1、sel2的不同组合,
并且对于n={15,23,31,39,47,55,63},r[n]能够被有利地替换如下:
●r[15]=s[15]XOR(s[14:8]==7’h7f)&ci[1]
●r[23]=s[23]XOR(s[22:16]==7’h7f)&ci[2]
●r[31]=s[31]XOR(s[30:24]==7’h7f)&ci[3]
●r[39]=s[39]XOR(s[38:32]==7’h7f)&ci[4]
●r[47]=s[47]XOR(s[46:40]==7’h7f)&ci[5]
●r[55]=s[55]XOR(s[54:48]==7’h7f)&ci[6]
●r[63]=s[63]XOR(s[62:55]==7’h7f)&ci[7]。
通过以这种方式为第二级加法32确定进位值ci[n]和舍入值rnd[n],即便当数据元尺寸和64位一样大,这种方案也允许缩小和舍入加法和减法迅速地完成,其中关键路径横跨8位加法器加上一些重叠进位逻辑(即16位加法)中的仅2个。相比之下,如果全64位加法在后面是32位加法的第一级加法处被执行以加上舍入值(如果图3的技术被按比例扩大到64位则情况将是如此),则关键路径将是96位的加法,这将是更缓慢的。通过将运算分解成能够被与彼此并行执行的8位块,缩小和舍入加法或减法运算能够被执行得足够快以在单个处理周期内进行拟合。
这对于待在第一级处和在第二级处执行的8位加法来说不是必要的。例如,能够使用一些处理器仍然也许能在一个周期中执行的16位加法来执行64位至32位缩小。然而,一般而言如果使用了较小的加法器则性能改进将是最大的。最一般地,可以使用N位加法器对一个或多个W位数据元执行缩小和舍入运算,其中N<W。
类似地,对于已舍入结果来说具有原始W位数据元一半数目的位不是必要的。可以使用任意的结果数据元尺寸X,其中X<W。如果X是N的倍数以便结果是从一定数量的第二级加法器的全输出形成的,则这可能是最方便的。例如,在图8的加法器32-7、32-6的输出r[63:48]被用来在最后的结果值n[16:0]中生成16位数据元的情况下能够执行64位至16位缩小。
图9示出了用于执行缩小和舍入算术运算的方法。在步骤50处,确定了要被执行的下一条指令是否是缩小和舍入算术指令。如果不是,则指令是另一类型的指令并且被相应地处理。当在步骤50处遇到缩小和舍入指令时,那么方法进行到步骤52,其中确定了该指令是缩小和舍入加法指令还是缩小和舍入减法指令。如果指令是缩小和舍入加法指令则在步骤54处处理电路的sub输入被设置为0,然而如果指令是缩小和舍入减法指令则在步骤56处第二操作数b被反转并且sub输入被设置为1。
在步骤58处,处理电路6使用N位第一级加法单元30来执行N位第一级加法。取决于输入操作数a、b中的数据元的数目,处理的一个或多个通道被执行。每个数据元都具有W个位[W-1:0],所以W/N第一级加法在每个处理通道中被执行。每个处理通道的第i个第一级加法加上对应W位数据元的位[a+N-1:a]以生成第i个N位中间值,其中0≤i≤(W/N-1)并且a=i*N。
在步骤60处,用于第二级加法32的进位值和舍入值使用以上针对图7或8所示出的关系基于第一级加法30的结果来确定。在步骤62处,至少一个N位第二级加法由N位第二级加法单元32来执行以生成N位结果部分r。在每个处理通道内,X/N第二级加法被执行,其中X是要被包括在每个结果数据元中的位的数目。每个处理通道的第j个第二级加法将由第j个第一级加法所生成的第j个N位中间值加到表示第(j-1)个第一级加法的进位输出的舍入值和进位值,以生成包括X位结果数据元的位[c+N-1:c]的N位结果部分,其中(W-X)/N≤j≤W/N-1并且c=j*N。
在步骤64处,结果值是从第二级加法的N位结果部分形成的。SIMD处理单元6可以将选择的第二级加法器的输出放入结果值的对应位部分(以生成与图2中的结果d类似的结果值)。替换地,SIMD处理单元6可以将所选择的第二级加法器32的输出集合在一起,以便它们被放入结果值(与图2中的结果值e类似)的相邻部分。在图8的底部处的表示出了第二级加法器32的输出如何能够被映射到最后的结果值n的示例。
因此,本技术提供了允许处理性能被改进的缩小和舍入算术运算的高效实施方式。
尽管已经参考附图在本文中详细地描述了本发明的说明性实施例,但应当理解的是,本发明不限于那些精确的实施例,并且在不背离如由所附权利要求所限定的本发明的范围和精神的情况下,可以由本领域的技术人员在其中实现各种改变和修改。

Claims (21)

1.一种数据处理装置,包括:
处理电路,该处理电路被配置为处理数据;以及
控制电路,该控制电路被配置为控制所述处理电路响应于标识每个都包括至少一个W位数据元的两个操作数的缩小和舍入算术指令来执行缩小和舍入算术运算,所述缩小和舍入算术运算生成包括至少一个X位结果数据元的结果值,每个X位结果数据元都表示舍入到X位值的所述两个操作数的对应W位数据元的和或差,其中W和X是整数并且W>X;
其中所述控制电路被配置为控制所述处理电路通过以下各项来生成所述结果值的每个X位结果数据元:
(a)执行多个N位第一级加法以通过加上或者减去所述对应W位数据元的N位部分来生成相应的N位中间值,其中W=J*N并且J>1以及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位中间值,其中0≤i≤(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>1以及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>1以及N和J是整数;
(b)执行一个或多个N位第二级加法,每个第二级加法都用于通过加上舍入值和表示前面的第一级加法的进位输出的进位值来将由对应第一级加法所生成的所述N位中间值转换成所述X位结果数据元的N位舍入的结果部分,所述前面的第一级加法用于相对于所述对应第一级加法加上较不有效的所述W位数据元的N位部分;以及
(c)从由所述一个或多个N位第二级加法中的至少一个所生成的所述N位结果部分形成所述X位结果数据元。
CN201410320394.9A 2013-07-31 2014-07-07 用于执行缩小和舍入算术运算的数据处理装置和方法 Active CN104346134B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/955,324 US9262123B2 (en) 2013-07-31 2013-07-31 Data processing apparatus and method for performing a narrowing-and-rounding arithmetic operation
US13/955,324 2013-07-31

Publications (2)

Publication Number Publication Date
CN104346134A CN104346134A (zh) 2015-02-11
CN104346134B true CN104346134B (zh) 2018-10-19

Family

ID=50980616

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410320394.9A Active CN104346134B (zh) 2013-07-31 2014-07-07 用于执行缩小和舍入算术运算的数据处理装置和方法

Country Status (4)

Country Link
US (1) US9262123B2 (zh)
KR (1) KR102286101B1 (zh)
CN (1) CN104346134B (zh)
GB (1) GB2517539B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720646B2 (en) * 2015-11-12 2017-08-01 Arm Limited Redundant representation of numeric value using overlap bits
US11829756B1 (en) * 2021-09-24 2023-11-28 Apple Inc. Vector cumulative sum instruction and circuit for implementing filtering operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444647A (en) * 1993-03-22 1995-08-22 Mitsubishi Denki Kabushiki Kaisha Multiplier circuit and division circuit with a round-off function
CN1818851A (zh) * 2005-02-09 2006-08-16 国际商业机器公司 用于执行浮点算术运算的系统和方法
US7822799B1 (en) * 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3487783B2 (ja) * 1999-03-17 2004-01-19 富士通株式会社 加算回路、それを利用した積分回路、及びそれを利用した同期確立回路
JP3613396B2 (ja) * 2001-06-25 2005-01-26 日本電気株式会社 機能ブロック
JP3727301B2 (ja) * 2002-11-22 2005-12-14 Necエレクトロニクス株式会社 加算回路および加算回路を備えた半導体装置
KR20060067128A (ko) * 2004-12-14 2006-06-19 한국전자통신연구원 가산기

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444647A (en) * 1993-03-22 1995-08-22 Mitsubishi Denki Kabushiki Kaisha Multiplier circuit and division circuit with a round-off function
CN1818851A (zh) * 2005-02-09 2006-08-16 国际商业机器公司 用于执行浮点算术运算的系统和方法
US7822799B1 (en) * 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device

Also Published As

Publication number Publication date
US9262123B2 (en) 2016-02-16
KR102286101B1 (ko) 2021-08-05
US20150039665A1 (en) 2015-02-05
GB2517539B (en) 2020-12-16
KR20150015369A (ko) 2015-02-10
CN104346134A (zh) 2015-02-11
GB201407923D0 (en) 2014-06-18
GB2517539A (en) 2015-02-25

Similar Documents

Publication Publication Date Title
CN106325810B (zh) 微处理器
Nowick et al. Speculative completion for the design of high-performance asynchronous dynamic adders
Kuang et al. Low-cost high-performance VLSI architecture for Montgomery modular multiplication
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
CN109716287A (zh) 降低的浮点精度的算术电路
CN107077415A (zh) 用于执行转换运算的装置和方法
US9678716B2 (en) Apparatus and method for performing absolute difference operation
US6754689B2 (en) Method and apparatus for performing subtraction in redundant form arithmetic
Sivanandam et al. Design and performance analysis of reconfigurable modified Vedic multiplier with 3-1-1-2 compressor
US20140358979A1 (en) GENERATING A FAST 3x MULTIPLAND TERM FOR RADIX-8 BOOTH MULTIPLICATION
Bajard et al. Double level Montgomery Cox-Rower architecture, new bounds
US5528529A (en) Electronic multiplying and adding apparatus and method
US8892615B2 (en) Arithmetic operation circuit and method of converting binary number
Giorgi et al. Parallel modular multiplication on multi-core processors
CN104346134B (zh) 用于执行缩小和舍入算术运算的数据处理装置和方法
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
CN104090737A (zh) 一种改进型部分并行架构乘法器及其处理方法
CN107810473B (zh) 混合基数超前进位加法器架构
Wu et al. Fast, compact and symmetric modular exponentiation architecture by common-multiplicand Montgomery modular multiplications
US5957999A (en) Booth multiplier with squaring operation accelerator
US6813628B2 (en) Method and apparatus for performing equality comparison in redundant form arithmetic
Little An algorithm for high-speed digital filters
Patronik et al. Design of RNS reverse converters with constant shifting to residue datapath channels
KR20040045152A (ko) 모듈러 곱셈 장치
Moayedi et al. Design and evaluation of novel effective Montgomery modular multiplication architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant