执行饱和或不执行饱和地累加多操作数的处理器还原单元的制作方法

文档序号:6487257阅读:245来源:国知局
专利名称:执行饱和或不执行饱和地累加多操作数的处理器还原单元的制作方法
技术领域
一般而言,本发明涉及数字数据处理器的领域,具体来说,涉及算术处理运算和用于数字信号处理器(DSP)或其他类型的数字数据处理器中的关联的处理电路。
背景技术
许多数字数据处理器,包括大多数DSP和多媒体处理器,都使用二进制定点运算,在这种运算中,对无符号的或二进制补码二进制格式的整数、分数或带分数执行操作。DSP和多媒体应用常常要求处理器被配置为对二进制数执行饱和算术和环绕算术操作。
在饱和算术中,太大而难以以指定的数字格式表示的计算结果被饱和处理到最大正数或最小的负数。当结果太大难以表示时,发生溢出。例如,在具有3位无符号数的十进位制中,733+444相加产生饱和结果999,因为真正的结果1177不能只用三个十进制数字来表示。饱和结果999对应于可以用三个十进制数字表示的最大的正数。饱和是有用的,因为它减少了当不能正确表示结果时发生的错误,并且它还保留了符号信息。
在环绕算术中,溢出的结果被环绕,以便不能适应指定的数字表示法的任意数字都被丢弃。例如,在具有3位无符号数的十进位制中,733+444相加产生了环绕结果177。由于真正的结果1177太大难以表示,前面的1被丢弃,产生结果177。环绕算术是有用的,因为,如果可以以指定格式表示多次环绕操作的真正的最终结果,最终结果将是正确的,即使中间操作溢出。
如上文所指出的,在二进位数制中,常常利用饱和算术和环绕算术。例如,在具有4比特数字的二进制补码分数系统中,二进制补码加法0.101+0.100(0.625+0.500)产生饱和结果0.111(0.875),对应于可以用四比特表示的最大的正的二进制补码数。如果使用环绕算术,则二进制补码加法0.101+0.100(0.625+0.500)产生结果1.001(-0.875)。
在B.Parhami,″Computer ArithmeticAlgorithms andHardware Designs,″Oxford University Press,New York,2000(ISBN0-19-512583-5)中可以找到有关数字数据处理器算术的这些及其他常规方面的补充细节,这里引用了该文作为参考。
许多数字信号处理和多媒体应用都需要饱和算术和环绕算术的功能。然而,许多传统的技术不能提供用于对饱和或环绕算术进行可控制的选择的有效的机制。
在许多应用中为点积的计算配置给定DSP、多媒体处理器或其他类型的数字数据处理器也是应该的。两个K元素矢量的点积X=[X[1],X[2],...,X[k-1],X[k]]和Y=[Y[1],Y[2],...,Y[k-l],Y[k]由下列公式给出Z=X[1]*Y[1]+X[2]*Y[2]+...+X[k-1]*Y[k-1]+X[k]*Y[k]如此,k元素点积需要k次乘法和(k-1)次加法。在数字信号处理和多媒体应用中频繁地发生这样的点积。
例如,支持GSM(全球移动通信系统)或EDGE(全局发展的增强的数据速率)标准的第二和第三代蜂窝电话充分地点积,通常在每一次加法和每一次乘法之后饱和。这些标准一般要求给定点积计算的最后的结果与当连续地执行操作时获得的结果相同(即,位精确(bit-exact)),每一操作之后执行饱和。由于饱和加法不是关联的,因此,点积所需要的加法通常是连续地执行的,这会对处理器性能产生不利的影响。
点积计算及其他矢量运算的传统的技术所存在的另一个问题是,这样的技术不能轻松地用于流水线处理器。例如,某些传统的技术可能难以扩展到具有两个以上的流水线阶段的流水线,因为这样做一般而言将会导致所需要的电路面积的显著增大。
此外,传统的技术一般也不能提供用于支持将操作数加到累加器值和从累加器值减去操作数的有效的机制。
相应地,需要能够在数字数据处理器中利用饱和或者环绕算术来提供对点积进行改善的计算及其他类型的矢量运算的技术。

发明内容
本发明在说明性实施例中提供了具有将m个输入操作数相加再加上累加器值的还原单元的处理器,并具有在每一次加法之后执行饱和或环绕每一次加法的结果的选项。还原单元还通过将输入操作数的位反转并将到多个还原加法器的进位设置为1来允许m个输入操作数从累加器值中减去。还原单元可以与m个并联乘法器一起使用,以快速利用饱和或者环绕算术来执行点积及其他矢量运算。
在多线程处理器实现方式中,还原单元可以被流水线化,以实现低的最坏情况延迟,每个时钟周期都可以累加点积的m个元素。
为了饱和点积,由还原单元产生的结果与当连续地执行操作时产生的结果相同,每一操作之后执行饱和。此功能在频繁地执行饱和点积操作的数字信号处理和多媒体应用中特别有用。
虽然说明性实施例的还原单元的一个用途是,在计算点积时,执行饱和或不执行饱和,有许多其他潜在的用途,包括将操作数的矢量求和,执行复合乘-累加(MAC)操作,以及从累加器值减去操作数。
当用于执行点积时,说明性实施例的还原单元可以与m个并联乘法器一起进行操作,其中,每一个乘法器计算积X[i]*Y[i],其中,i=1,2....m。然后,来自乘法器的m个积变为到还原单元的m个输入操作数,并与累加器值(该累加器值被设置为0,作为初始迭代)一起被求和。在下一次迭代中,来自前面的迭代的还原单元的输出变为累加器值,并计算m个新的积。如此,可以使用[k/m]迭代来计算k元素点积,其中,每一个迭代都包括m个并行乘法和(m+1)个输入加法。当在饱和模式下使用时,还原单元在每一次加法之后执行饱和,当发生溢出时,每一个乘法器都对其结果进行饱和处理。
相对于传统的技术,说明性实施例中的本发明提供了许多显著优点。例如,还原单元可以被轻松地流水线化,而不会有性能的损失,只是所需的电路面积稍微有点增大。此外,还原单元还直接支持饱和和环绕算术,并允许将操作数加到累加器值,以及从累加器值减去操作数。


图1显示了根据本发明的说明性实施例的包括了还原单元的示范性处理器的一部分,具体来说,显示了还原单元可以用于计算点积的方式。
图2显示了说明性实施例中的为m=4的情况实现的图1的还原单元的比较详细的视图。
图3显示了在图2的还原单元中利用的还原加法器的比较详细的视图。
图4显示了包括了图2的还原单元的多线程处理器的示例。
图5显示了适合于在图4的多线程处理器中执行的矢量-还原指令的示范性格式。
图6说明了利用图5所示的类型的指令格式的来自同一个线程的两个矢量-还原指令的流水性化执行。
具体实施例方式
下面将在示范性还原单元、累加器单元,以及算术单元,以及包括了这样的单元的多线程处理器的上下文中描述本发明。然而,应该理解,本发明不需要所示的特定的布局,可以使用其他类型的数字数据处理器和关联的处理电路来实现。
可以以一个或多个集成电路的形式来实现这里描述的给定处理器。
图1显示了根据本发明的说明性实施例配置的处理器100的一部分。处理器100包括被表示为104-1,104-2,...104-m的m个并联乘法器之间连接的(m+1)输入还原单元102,以及累加器寄存器文件106。
每一个乘法器104-i执行饱和处理地或不执行饱和处理地计算P[i]=X[i]*Y[i],1≤i≤m。然后,将m个乘法器输出作为输入操作数,与来自累加器寄存器文件106的被表示为P
的累加器值一起,馈送到(m+1)输入还原单元。还原单元102计算Acc=P
+P[1]+P[2]+...+P[m],其中,P
被设置为0,作为初始迭代。在下一次迭代中,X和Y的m个新的元素相乘,P
被设置为来自前面的迭代的累加器值Acc。此过程一直持续,直到计算出了整个点积。如此,可以使用[k/m]迭代来计算k元素点积,其中,每一个迭代都包括m个并行乘法和(m+1)个输入加法。当在饱和模式下使用时,还原单元在每一次加法之后执行饱和,当发生溢出时,每一个乘法器都对其结果进行饱和处理。
累加器寄存器文件106可以被视为通常被称为“累加器单元”的示例。如那些精通本技术的人所认识到的,在其他实施例中可以使用其他类型的累加器单元。此外,这里所使用的术语“单元”应该一般性地理解,以便给定单元的元素可以但不必彼此在一起,或以别的方式在彼此之间具有特定的物理关系。例如,给定单元的元件可以分布在整个集成电路中,而不是在在这样的电路中一起处于一个位置。
累加器寄存器文件106可以用来存储中间累加器值,这对于多线程处理器实现方式特别有用,其中,可以同时计算来自单个线程的多个点积。
图1的说明性实施例中的还原单元102也接收两个1位控制信号输入Invert和Satf。当Invert比较高时,到还原单元的输入操作数被反转,以便单元计算Acc=P
-P[1]-P[2]-...-P[w]。
当Invert比较低时,到还原单元的输入操作数不会被反转,以便单元计算Acc=P
+P[1]+P[2]+...+P[m]。
当Satf比较高时,还原单元处于饱和模式。这意味着,在还原单元中的每一次中间加法之后,进行检查,以判断结果是否产生了溢出。如果发生了溢出,结果被饱和处理到指定格式的最大的正数或最小的负数。当Satf比较低时,还原单元处于环绕模式,这意味着,溢出的结果不会被饱和处理。
在说明性实施例中使用乘法器104只作为示例。其他实施例可以使用乘-累加(MAC)单元。这里所使用的术语“乘法器”包括诸如MAC单元之类的运算单元,该单元执行乘法和一个或多个其他功能。
图2显示了适用于处理器100的示范性还原单元102′,是专门为m=4的情况配置的。此还原单元可以操作,以将四个输入操作数P[1]到P[4]求和,再加上累加器值P
。虽然该图显示了针对具体情况m=4的(m+1)输入还原单元,但是,如那些精通本技术的人所认识到的,该设计可以轻松地扩展到m的其他值。
还原单元102′使用四个2输入还原加法器,被表示200-1、200-2、200-3和200-4,如图所示,它们是串联的。每一个还原加法器都能够执行饱和处理地或不执行饱和处理地将其相应的输入操作数相加。这里所使用的术语“还原加法器”包括,例如,饱和加法器。当输入控制信号Invert比较低时,也被标识为还原加法器1的第一还原加法器200-1获取P
和P[1],将它们相加,以产生Z[1]=P
+P[1]。当输入控制信号Invert比较低时,也被标识为还原加法器i+1的每一个其余的还原加法器200-(i+1)获取两个输入操作数Z[i]和P[i+1],将它们相加,以产生一个和,Z[i+1]=Z[i]+P[i+1]。如此,当Invert比较低时,还原单元的输出是Acc=Z[4]=P
+P[1]+P[2]+P[3]+P[4]。
当输入控制信号Invert比较高时,到每一个还原加法器的第二输入被按位反转,到每一个还原加法器的进位-输入被设置为1。这使还原加法器1计算Z[1]=P
-P[1],使其余还原加法器计算Z[i+1]=Z[i]-P[i+1]。在此情况下,还原单元的输出是Acc=Z[4]=P
-P[1]-P[2]-P[3]-P[4]。
当输入控制信号Satf比较高时,当发生溢出时,饱和每一个加法(或减法)的结果。当Satf比较低时,每一个加法(或减法)的结果被折回。
还原单元102′被流水性化,以缩小其最坏情况延迟。具体来说,还原单元102′使用四级流水线来执行四个加法(或四个减法),其中,每一个中间加法(或减法)的结果Z[i]存储在流水线寄存器202-i中。为让P[i]操作数与对应的Z[i-1]操作数同时到达,到还原加法器i的P[i]穿过(i-1)个流水线寄存器204。如此,在到达它们的相应的还原加法器时,操作数P[1]不穿过流水线寄存器204,操作数P[2]穿过一个流水线寄存器204-21,操作数P[3]穿过两个流水线寄存器204-31和204-32,操作数P[4]穿过三个流水线寄存器204-41、204-42和204-43。
图3显示了还原单元102′的还原加法器200-i的给定一个还原加法器的一种可能的实现方式。还原加法器200-i使用2输入加法器300来将两个输入操作数A和B相加,再加上进位输入位,Cin来计算T=A+B+Cin。如果Satf和A和B的符号sa和sb比较高,临时结果的符号st比较低,输出Z被饱和处理到指定数字格式的最小的负数,以便Z=MIN_NEG。如果Satf和st比较高,并且sa和sb比较低,Z被饱和处理到指定数字格式的最大的正数,以便Z=MAX_POS。在所有其他情况下,来自加法器300的结果被用作结果,以便Z=T。
应该理解,图3所示的特定还原加法器设计只作为说明性示例。可以使用许多其他还原加法器设计,可以基于诸如输入操作数的格式之类的应用特定的因素,被选择用于给定实现方式的特定加法器也不同。
在流水线化的还原单元中,如下面所描述的,通过使用多线程,每个时钟周期都可以累加点积的m个元素。
应该注意,在非多线程处理器实现方式中,流水线化还原单元可以使计算每一个点积所需要的周期的数量的显著增大。例如,使用常规的m级流水线而不用多线程,会将计算每一个点积所需要的周期的数量增大大致m因子。
本发明的说明性实施例通过利用被称为令牌触发的线程的方法来解决此问题。在2002年10月11日提出的标题为“Method andApparatus for Token Triggered Multithreading”序列号为10/269,245的美国专利申请中描述了令牌触发的线程,这里引用了该申请作为参考。令牌触发的线程通常将不同的令牌分配到多线程处理器的多个线程中的每一个线程。例如,令牌触发的线程可以利用令牌来识别与当前处理器时钟周期相关联的将被允许为随后的时钟周期发出指令的处理器的特定的线程。虽然在说明性实施例中使用了令牌触发的线程,但是,本发明可以不需要此特定的多线程类型,也可以使用其他类型的多线程技术。
在说明性实施例中,由于流水线化而导致的上文所指出的循环计数的增大可以通过其他线程的处理来有效地隐藏,因为一个点积的乘法和减法与其他线程的操作并行地执行。为了通过线程的并行执行来完全地隐藏循环计数的增大,来自给定线程的指令的执行之间的周期的数量应该大于或等于还原单元中的流水线阶段的数量加上写入到累加器寄存器文件106和从累加器寄存器文件106读取所需要的任何额外的周期。
如前面所指出的,优选情况下,可以在多线程处理器中实现本发明。在2002年10月11日提出的标题为“Multithreaded ProcessorWith Efficient Processing For Convergence Device Applications”列号为10/269,372的美国专利申请序中描述了其中可以实现本发明的多线程处理器的比较具体的示例,这里引用了该申请作为参考。此多线程处理器可以被配置为执行基于RISC的控制代码、DSP代码、Java代码和网络处理代码。它包括单指令多数据(SIMD)矢量处理单元、还原单元,以及长指令字(LIW)复合指令执行。在上文所引用的序列号为10/269,245的美国专利申请中描述了适合与此示范性多线程处理器的线程和流水线技术的示例。
如参考图4所说明的,可以利用这里所描述的还原单元102或102′作为这样的多线程处理器中的还原单元。当然,也可以在其他多线程处理器中,或一般而言在其他类型的数字数据处理器中实现本发明。
图4显示了包括了图2的还原单元102′的多线程处理器400的示例。处理器400一般而言类似于在序列号为10/269,372的美国专利申请中所描述的处理器,但包括了如这里所描述的配置的还原单元102′和累加器寄存器文件106′。
多线程处理器400包括,除了其他元件,多线程高速缓冲存储器410、多线程数据存储器412、指令缓冲器414、指令解码器416、寄存器文件418,以及存储器管理单元(MMU)420。多线程高速缓存410包括多个线程高速缓存410-1、410-2,...410-N,其中,N一般表示多线程处理器400支持线程的数量,在此特定示例中,N=4。当然,如那些精通本技术的人所认识到的,可以使用N的其他值。
如此,每一个线程具有多线程高速缓存410与此关联的对应的线程高速缓存。类似地,数据存储器412包括N个不同的数据存储器实例,被表示为数据存储器412-1,412-2,...412-N,如图所示。
多线程高速缓存410通过MMU 420与处理器400外部的主存储器(未显示)连接。类似于高速缓存410,MMU 420包括处理器支持的N个线程中的每一个线程的单独的实例。MMU 420确保来自主存储器的适当的指令被加载到多线程高速缓存410中。
数据存储器412还通常直接连接到上文所提及的外部主存储器,虽然图形中还没有明确地显示此连接。与数据存储器412关联的还有数据缓冲区430。
一般而言,多线程高速缓存410用于存储被多线程处理器400执行的指令,而数据存储器412存储将被指令操作的数据。由指令解码器416从多线程高速缓存410获取指令,并进行解码。取决于指令类型,指令解码器416可以将给定指令或关联的信息转发到处理器内的各种其他单元,正如下文所描述的。
处理器400包括转移指令队列(IQ)440和程序计数器(PC)寄存器442。程序计数器寄存器442包括每一个线程的一个实例。转移指令队列440从指令解码器416接收指令,与此相关的,程序计数器寄存器442向加法器块444提供输入,加法器块444包括进位传送加法器(CPA)。元件440、442和444共同地构成了处理器400的分支单元。虽然在图形中未显示,辅助寄存器也可以包括在处理器400。
寄存器文件418提供了整数结果的临时存储。对从指令解码器416转发到整数指令队列(IQ)450的指令进行解码,并通过使用偏移单元452(显示为包括每一个线程的单独的实例)选择适当的硬件线程单元。偏移单元452将显式的位插入到寄存器文件地址中,以便独立的线程数据不会被损坏。对于给定线程,这些显式的位可以包括,例如,对应的线程标识符。
如图所示,寄存器文件418连接到输入寄存器RA和RB,输入寄存器RA和RB的输出连接到ALU块454,ALU块454可以包括加法器。输入寄存器RA和RB用于实现指令流水线。ALU块454的输出连接到数据存储器412。
寄存器文件418、整数指令队列450、偏移单元452、元件RA和RB,以及ALU块454共同地构成了示范性整数单元。
可以在处理器400中执行的指令类型包括Branch、Load、Store、Integer和Vector/SIMD指令类型。如果给定指令没有指定Branch、Load、Store或Integer操作,则它是Vector/SIMD指令。也可以使用其他指令类型。Integer和Vector/SIMD指令类型是分别是通常被称为整数和矢量指令类型的示例。
矢量IQ 456接收从指令解码器416转发的Vector/SIMD指令。显示为包括每一个线程的单独的实例的对应的偏移单元458用于插入适当的位,以确保独立的线程数据不会被损坏。
处理器400的矢量单元460被分成N个不同的平行部分,并包括类似地划分的矢量文件462。矢量文件462包括三十二个寄存器,被表示为VR00到VR31。矢量文件462基本上与寄存器文件418具有相同的用途,只是前者对Vector/SIMD指令类型进行操作。
矢量单元460包括矢量指令队列456、偏移单元458、矢量文件462,以及与此关联的算术和存储元件。
矢量单元460的操作如下。从矢量文件462中读取作为分数或整数数据类型编码的Vector/SIMD块,并存储到在体系结构上可见的寄存器VRA、VRB、VRC。从那里,流程沿着执行Vector/SIMD数据的并行并发乘法的乘法器(MPY)前进。包括进位-跳过加法器(CSA)和CPA的加法器单元可以执行额外的算术运算。例如,一个或多个CSA可以用于从向量寄存器文件中添加到累加值中,一个或多个CPA可以用于执行最后的相加,以便完成乘法操作,如那些精通本技术的人所认识到的。计算结果存储在结果寄存器464中,并作为输入操作数提供到还原单元102′中。还原单元102′以这样的方式将输入操作数相加,以便所产生的和结果与如果连续地执行每一个操作所获得的结果相同。还原的和存储在累加器寄存器文件106′以便进一步处理。
当执行矢量点积时时,MPY块并行地执行四次乘法,CSA和CPA单元执行额外的操作,或者只是传递乘法结果,以便存储在结果寄存器464中,还原单元102′将乘法结果,以及存储在累加器寄存器文件106′中的累加值相加。然后,以前面所描述的方式,将还原单元生成的结果存储在累加器寄存器文件中,以供下次迭代时使用。
矢量单元460的四个并联乘法器MPY可以被视为一般对应于图1的处理器100的乘法器104。此示例中的累加器寄存器文件106′总共包括由ACC00到ACC15表示的十六个累加器寄存器。
多线程处理器400可以利用对寄存器文件进行基于线程的访问的技术,如2002年10月11日提出的标题为“Method andApparatus for Register File Port Reduction in a MultithreadedProcessor”序列号为10/269,373的美国专利申请所描述,这里引用了该申请作为参考。
图5显示了适合于在图4的多线程处理器400中执行的矢量-还原指令的示范性格式。此指令用于指定由并联乘法器和还原单元执行的矢量-还原操作。在图形中,OPCODE指定要执行的操作,ACCD指定累加目标寄存器的累加器寄存器文件位置,ACCS指定累加源寄存器的累加器寄存器文件位置,VRSA指定一个矢量源操作数集的矢量寄存器文件位置,VRSB指定另一个矢量源操作数集的矢量寄存器文件位置。
使用图5所示的指令格式,具有m个并联乘法器和(m+1)输入还原单元的SIMD矢量处理单元可以执行矢量-乘法-和-还原-加法(vmulredadd)指令,该指令计算ACCD=ACCS+VRSA[1]*VRSB[1]+VSRA[2]*VSRB[2]+...+VSRA[m]*VSRB[m].
具体来说,参考示范性多线程处理器400,通过从矢量寄存器文件462中读取对应于VSRA[i]和VSRB[i]的值,使用四个并联乘法器MPY来计算VSRA[i]*VSRB[i],从累加器寄存器文件106′读取ACCS,使用还原单元102′来将积加到ACCS,将来自还原单元的结果写回累加器寄存器文件,使用ACCD指定的地址,可以为m=4执行此指令。
类似地,矢量-乘和还原-减(vmulredsub)指令可以执行计算ACCD=ACCS-VRSA[1]*VRSB[1]-VSRA[2]*VSRB[2]-...-VSRA[m]*VSRB[m]也可以在执行每一个操作执行饱和,之后再执行这些矢量-还原指令中的每一个指令。如那些精通本技术的人所认识到的,也可以定义执行如下操作的诸如矢量-加-还原-加之类的其他矢量-还原指令ACCD=ACCS+VRSA[1]+VRSB[1]+VSRA[2]+VSRB[2]+...+VSRA[m]+VSRB[m],图6说明了利用图5所示的类型的指令格式的来自同一个线程的两个矢量-还原指令的流水线化执行。在此示例中,假设,总共八个线程,使用令牌触发的线程,循环地调度。在此图中没有显示其他线程所发出的指令。此示例中的流水线包括13个级指令取出(IFE)、指令解码(DEC)、读取矢量寄存器文件(RVF)、两个乘法级(ML1和ML2),两个加法器级(AD1和AD2)、四个还原级(RE1到RE4),结果转让(XFR),以及写入累加器文件(WAF)。在具有第二加法器级(AD2)的同一个周期中,处理器还读取累加器寄存器文件(RAF)。如此,矢量-还原指令的给定的一个指令需要花13个周期来执行。
关于此示例,应该指出的是,如果从同一个线程中一个接一个地发出两个矢量-还原指令,在下一个矢量-还原指令需要从寄存器文件中读取其累加器源寄存器之前,第一矢量-还原指令已经将其目标累加结果写回累加器寄存器文件(在级WAF)中。如此,诸如vmulredadd acc0,acc0,vr1,vr2vmulredadd acc0,acc0,vr3,vr4
之类的使用图5所示的指令格式的两个指令,可以作为连续的指令发出,而不会使处理器由于数据依赖关系而停止。在使用不同的多线程处理器、流水线和还原单元配置,以及不同的指令格式,在替代实施例中可以提供这种功能。
相对于传统的技术,上文所描述的说明性实施例中的本发明提供了许多显著优点。例如,相对于传统的技术,还原单元可以被轻松地流水线化,而不会有性能的损失,只是所需的电路面积稍微有点增大。此外,还原单元还直接支持饱和和环绕算术,并允许将操作数加到累加器值,以及从累加器值减去操作数。
由于数字信号处理和多媒体应用可能需要饱和算术和环绕算术的功能,通过利用这里所描述的类型的基于控制位输入来执行饱和或环绕算术的还原单元来显著地降低成本。
应该注意,图1到4所示的特定电路布局只作为说明性示例,可以包括没有明确地显示的额外的或替代元素,如那些精通本技术的人所认识到的。
还应该强调,本发明不需要图4所示的特定多线程处理器配置。本发明可以以各式各样的其他多线程或非多线程处理器配置来实现。
如此,本发明的上文所描述的实施例只是说明性的,如那些精通本技术的人所认识到的,替代实施例在所附的权力要求的范围内。例如,在其他实施例中,可以改变所示的特定运算单元、还原单元和累加器单元配置。此外,如上所述,流水线配置、线程类型和指令格式可以变化,以适应给定应用的特定需求。
权利要求
1.一种处理器,包括多个算术单元;一个累加器单元;以及在多个算术单元和所述累加器单元之间连接的还原单元,所述还原单元被配置为从算术单元接收输入操作数,并从累加器单元接收第一累加器值;其中,还原单元可以操作,以将输入操作数和第一累加器值相加,并生成第二累加器值,以便传递到累加器单元;以及其中,还原单元可以被控制,以执行饱和处理地或不执行饱和处理地操作。
2.根据权利要求1所述的处理器,其中,多个算术单元包括彼此并行地排列的多个乘法器。
3.根据权利要求2所述的处理器,其中,多个乘法器包括彼此并行地排列的多个乘-累加单元。
4.根据权利要求1所述的处理器,其中,累加器单元包括累加器寄存器文件。
5.根据权利要求1所述的处理器,还原单元被配置为,响应施加的控制信号,至少在第一种计算和第二种计算之间提供可控制的选择,所述第一种计算在多个加法运算中的每一个之后进行饱和处理,所述第二种计算对加法运算的结果进行环绕处理。
6.根据权利要求1所述的处理器,其中,还原单元被进一步操作,以允许输入操作数从第一累加器值减去。
7.根据权利要求6所述的处理器,其中,通过将输入操作数的位反转并将到还原单元的多个还原加法器的每一个的进位设置为指定的逻辑值,从第一累加器值减去输入操作数。
8.根据权利要求1所述的处理器,其中,还原单元可以与m个算术单元和所述累加器单元一起使用,以计算点积的m个元素。
9.根据权利要求1所述的处理器,其中,还原单元包括m个串联的还原加法器,每一个还原加法器可以操作,以执行饱和处理地或不执行饱和处理地将其相应的输入操作数相加。
10.根据权利要求8所述的处理器,其中,m个算术单元包括m个乘法器,每一个乘法器都可以操作,以计算P[i]=X[i]*Y[i],1≤i≤m,m个乘法器的P[i]输出作为输入操作数,与来自累加器单元的累加器值P
一起,馈送到还原单元,所述还原单元被配置为计算Acc=P
+P[1]+P[2]+...+P[m],其中,P
被设置为0,作为初始迭代,在下一次迭代中,m个新的X和Y的元素相乘,P
被设置为来自前面的迭代的累加器值Acc,迭代一直持续,直到计算出m元素点积。
11.根据权利要求10所述的处理器,其中,还原单元可以在饱和模式下操作,在该模式下,还原单元在每一次加法运算之后执行饱和处理,当发生溢出时,m个乘法器中的每一个乘法器都对其结果进行饱和处理。
12.根据权利要求10所述的处理器,其中,还原单元可以在反转模式下操作,在该模式下,还原单元被配置为计算Acc=P
-P[1]-P[2]-...-P[m]。
13.根据权利要求8所述的处理器,其中,还原单元被配置为允许点积的m个元素在多个处理器时钟周期的每一个处理器时钟周期中累加。
14.根据权利要求1所述的处理器,其中,还原单元被流水线化。
15.根据权利要求1所述的处理器,其中,所述处理器包括多线程处理器。
16.根据权利要求15所述的处理器,其中,多线程处理器利用令牌触发的线程。
17.根据权利要求15所述的处理器,对为给定线程计算的点积的操作与来自其他线程的操作并行地执行,来自给定线程的指令的执行之间的周期的数量大于或等于还原单元中的流水线阶段的数量加上写入到累加器单元和从累加器单元读取所需要的任何额外的周期。
18.根据权利要求1所述的处理器,其中,还原单元在一个或多个矢量-还原指令的执行中可以利用,所述指令包括矢量-乘和还原-加指令、矢量-乘和还原-减指令,以及矢量-加-还原-加指令中的至少一个。
19.一种包括至少一个处理器的集成电路,所述处理器包括多个算术单元;一个累加器单元;以及在多个算术单元和所述累加器单元之间连接的一个还原单元,所述还原单元被配置为从算术单元接收输入操作数,并从累加器单元接收第一累加器值;其中,还原单元可以操作,以将输入操作数和第一累加器值相加,并生成第二累加器值,以便传递到累加器单元;以及其中,还原单元可以被控制,以执行饱和处理地或不执行饱和处理地操作。
20.在处理器中使用的设备,包括多个算术单元和一个累加器单元,该设备包括在多个算术单元和所述累加器单元之间连接的还原单元,所述还原单元被配置为从算术单元接收输入操作数,并从累加器单元接收第一累加器值;其中,还原单元可以操作,以将输入操作数和第一累加器值相加,并生成第二累加器值,以便传递到累加器单元;以及其中,还原单元可以被控制,以执行饱和处理地或不执行饱和处理地操作。
全文摘要
具有将m个输入操作数相加再加上累加器值的还原单元的处理器,并具有在每一次加法之后执行饱和处理或环绕每一次加法的结果的选项。还原单元还通过将输入操作数的位反转并将到多个还原加法器的进位设置为1来允许m个输入操作数从累加器值中减去。还原单元可以与m个并联乘法器一起使用,以快速利用饱和处理或者环绕算术来执行点积及其他矢量运算。
文档编号G06F7/00GK1820246SQ200480017082
公开日2006年8月16日 申请日期2004年5月7日 优先权日2003年5月9日
发明者迈克尔·J·舒尔特, 巴勃罗·I·巴尔索拉, 埃德姆·霍克奈克, 约翰·C·格洛斯纳 申请人:杉桥技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1