CN1820246A - 执行饱和或不执行饱和地累加多操作数的处理器还原单元 - Google Patents
执行饱和或不执行饱和地累加多操作数的处理器还原单元 Download PDFInfo
- Publication number
- CN1820246A CN1820246A CNA2004800170825A CN200480017082A CN1820246A CN 1820246 A CN1820246 A CN 1820246A CN A2004800170825 A CNA2004800170825 A CN A2004800170825A CN 200480017082 A CN200480017082 A CN 200480017082A CN 1820246 A CN1820246 A CN 1820246A
- Authority
- CN
- China
- Prior art keywords
- reduction unit
- accumulator
- processor
- reduction
- processor according
- 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.)
- Pending
Links
- 230000009467 reduction Effects 0.000 title claims abstract description 114
- 238000009825 accumulation Methods 0.000 title description 2
- 229920006395 saturated elastomer Polymers 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 28
- 230000001960 triggered effect Effects 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 5
- 239000000654 additive Substances 0.000 claims 3
- 230000000996 additive effect Effects 0.000 claims 3
- 239000013598 vector Substances 0.000 abstract description 38
- 238000009738 saturating Methods 0.000 abstract 2
- 238000007792 addition Methods 0.000 description 28
- 238000005516 engineering process Methods 0.000 description 11
- 108091000130 1-aminocyclopropane-1-carboxylate deaminase Proteins 0.000 description 5
- 102100021283 1-aminocyclopropane-1-carboxylate synthase-like protein 1 Human genes 0.000 description 5
- 101000675558 Homo sapiens 1-aminocyclopropane-1-carboxylate synthase-like protein 1 Proteins 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 239000007799 cork Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 208000034630 Calculi Diseases 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 208000008281 urolithiasis Diseases 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
具有将m个输入操作数相加再加上累加器值的还原单元的处理器,并具有在每一次加法之后执行饱和处理或环绕每一次加法的结果的选项。还原单元还通过将输入操作数的位反转并将到多个还原加法器的进位设置为1来允许m个输入操作数从累加器值中减去。还原单元可以与m个并联乘法器一起使用,以快速利用饱和处理或者环绕算术来执行点积及其他矢量运算。
Description
相关申请
本申请要求2003年5月9日M.J.Schulte等人提出的标题为“Method and Apparatus to Accumulate Multiple Operands with orwithout Saturation in a Multithreaded Processor”序列号为60/469,253的美国临时申请,这里引用该申请作为参考。
技术领域
一般而言,本发明涉及数字数据处理器的领域,具体来说,涉及算术处理运算和用于数字信号处理器(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 Arithmetic:Algorithms 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[0]的累加器值一起,馈送到(m+1)输入还原单元。还原单元102计算
Acc=P[0]+P[1]+P[2]+...+P[m],
其中,P[0]被设置为0,作为初始迭代。在下一次迭代中,X和Y的m个新的元素相乘,P[0]被设置为来自前面的迭代的累加器值Acc。此过程一直持续,直到计算出了整个点积。如此,可以使用[k/m]迭代来计算k元素点积,其中,每一个迭代都包括m个并行乘法和(m+1)个输入加法。当在饱和模式下使用时,还原单元在每一次加法之后执行饱和,当发生溢出时,每一个乘法器都对其结果进行饱和处理。
累加器寄存器文件106可以被视为通常被称为“累加器单元”的示例。如那些精通本技术的人所认识到的,在其他实施例中可以使用其他类型的累加器单元。此外,这里所使用的术语“单元”应该一般性地理解,以便给定单元的元素可以但不必彼此在一起,或以别的方式在彼此之间具有特定的物理关系。例如,给定单元的元件可以分布在整个集成电路中,而不是在在这样的电路中一起处于一个位置。
累加器寄存器文件106可以用来存储中间累加器值,这对于多线程处理器实现方式特别有用,其中,可以同时计算来自单个线程的多个点积。
图1的说明性实施例中的还原单元102也接收两个1位控制信号输入Invert和Satf。当Invert比较高时,到还原单元的输入操作数被反转,以便单元计算
Acc=P[0]-P[1]-P[2]-...-P[w]。
当Invert比较低时,到还原单元的输入操作数不会被反转,以便单元计算
Acc=P[0]+P[1]+P[2]+...+P[m]。
当Satf比较高时,还原单元处于饱和模式。这意味着,在还原单元中的每一次中间加法之后,进行检查,以判断结果是否产生了溢出。如果发生了溢出,结果被饱和处理到指定格式的最大的正数或最小的负数。当Satf比较低时,还原单元处于环绕模式,这意味着,溢出的结果不会被饱和处理。
在说明性实施例中使用乘法器104只作为示例。其他实施例可以使用乘-累加(MAC)单元。这里所使用的术语“乘法器”包括诸如MAC单元之类的运算单元,该单元执行乘法和一个或多个其他功能。
图2显示了适用于处理器100的示范性还原单元102′,是专门为m=4的情况配置的。此还原单元可以操作,以将四个输入操作数P[1]到P[4]求和,再加上累加器值P[0]。虽然该图显示了针对具体情况m=4的(m+1)输入还原单元,但是,如那些精通本技术的人所认识到的,该设计可以轻松地扩展到m的其他值。
还原单元102′使用四个2输入还原加法器,被表示200-1、200-2、200-3和200-4,如图所示,它们是串联的。每一个还原加法器都能够执行饱和处理地或不执行饱和处理地将其相应的输入操作数相加。这里所使用的术语“还原加法器”包括,例如,饱和加法器。当输入控制信号Invert比较低时,也被标识为还原加法器1的第一还原加法器200-1获取P[0]和P[1],将它们相加,以产生Z[1]=P[0]+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[0]+P[1]+P[2]+P[3]+P[4]。
当输入控制信号Invert比较高时,到每一个还原加法器的第二输入被按位反转,到每一个还原加法器的进位-输入被设置为1。这使还原加法器1计算Z[1]=P[0]-P[1],使其余还原加法器计算Z[i+1]=Z[i]-P[i+1]。在此情况下,还原单元的输出是
Acc=Z[4]=P[0]-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,vr2
vmulredadd acc0,acc0,vr3,vr4
之类的使用图5所示的指令格式的两个指令,可以作为连续的指令发出,而不会使处理器由于数据依赖关系而停止。在使用不同的多线程处理器、流水线和还原单元配置,以及不同的指令格式,在替代实施例中可以提供这种功能。
相对于传统的技术,上文所描述的说明性实施例中的本发明提供了许多显著优点。例如,相对于传统的技术,还原单元可以被轻松地流水线化,而不会有性能的损失,只是所需的电路面积稍微有点增大。此外,还原单元还直接支持饱和和环绕算术,并允许将操作数加到累加器值,以及从累加器值减去操作数。
由于数字信号处理和多媒体应用可能需要饱和算术和环绕算术的功能,通过利用这里所描述的类型的基于控制位输入来执行饱和或环绕算术的还原单元来显著地降低成本。
应该注意,图1到4所示的特定电路布局只作为说明性示例,可以包括没有明确地显示的额外的或替代元素,如那些精通本技术的人所认识到的。
还应该强调,本发明不需要图4所示的特定多线程处理器配置。本发明可以以各式各样的其他多线程或非多线程处理器配置来实现。
如此,本发明的上文所描述的实施例只是说明性的,如那些精通本技术的人所认识到的,替代实施例在所附的权力要求的范围内。例如,在其他实施例中,可以改变所示的特定运算单元、还原单元和累加器单元配置。此外,如上所述,流水线配置、线程类型和指令格式可以变化,以适应给定应用的特定需求。
Claims (20)
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[0]一起,馈送到还原单元,所述还原单元被配置为计算
Acc=P[0]+P[1]+P[2]+...+P[m],
其中,P[0]被设置为0,作为初始迭代,在下一次迭代中,m个新的X和Y的元素相乘,P[0]被设置为来自前面的迭代的累加器值Acc,迭代一直持续,直到计算出m元素点积。
11.根据权利要求10所述的处理器,其中,还原单元可以在饱和模式下操作,在该模式下,还原单元在每一次加法运算之后执行饱和处理,当发生溢出时,m个乘法器中的每一个乘法器都对其结果进行饱和处理。
12.根据权利要求10所述的处理器,其中,还原单元可以在反转模式下操作,在该模式下,还原单元被配置为计算
Acc=P[0]-P[1]-P[2]-...-P[m]。
13.根据权利要求8所述的处理器,其中,还原单元被配置为允许点积的m个元素在多个处理器时钟周期的每一个处理器时钟周期中累加。
14.根据权利要求1所述的处理器,其中,还原单元被流水线化。
15.根据权利要求1所述的处理器,其中,所述处理器包括多线程处理器。
16.根据权利要求15所述的处理器,其中,多线程处理器利用令牌触发的线程。
17.根据权利要求15所述的处理器,对为给定线程计算的点积的操作与来自其他线程的操作并行地执行,来自给定线程的指令的执行之间的周期的数量大于或等于还原单元中的流水线阶段的数量加上写入到累加器单元和从累加器单元读取所需要的任何额外的周期。
18.根据权利要求1所述的处理器,其中,还原单元在一个或多个矢量-还原指令的执行中可以利用,所述指令包括矢量-乘和还原-加指令、矢量-乘和还原-减指令,以及矢量-加-还原-加指令中的至少一个。
19.一种包括至少一个处理器的集成电路,所述处理器包括:
多个算术单元;
一个累加器单元;以及
在多个算术单元和所述累加器单元之间连接的一个还原单元,所述还原单元被配置为从算术单元接收输入操作数,并从累加器单元接收第一累加器值;
其中,还原单元可以操作,以将输入操作数和第一累加器值相加,并生成第二累加器值,以便传递到累加器单元;以及
其中,还原单元可以被控制,以执行饱和处理地或不执行饱和处理地操作。
20.在处理器中使用的设备,包括多个算术单元和一个累加器单元,该设备包括:
在多个算术单元和所述累加器单元之间连接的还原单元,所述还原单元被配置为从算术单元接收输入操作数,并从累加器单元接收第一累加器值;
其中,还原单元可以操作,以将输入操作数和第一累加器值相加,并生成第二累加器值,以便传递到累加器单元;以及
其中,还原单元可以被控制,以执行饱和处理地或不执行饱和处理地操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46925303P | 2003-05-09 | 2003-05-09 | |
US60/469,253 | 2003-05-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1820246A true CN1820246A (zh) | 2006-08-16 |
Family
ID=33476668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800170825A Pending CN1820246A (zh) | 2003-05-09 | 2004-05-07 | 执行饱和或不执行饱和地累加多操作数的处理器还原单元 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7593978B2 (zh) |
EP (2) | EP2290525A3 (zh) |
JP (1) | JP2006529043A (zh) |
KR (1) | KR101005718B1 (zh) |
CN (1) | CN1820246A (zh) |
WO (1) | WO2004103056A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645881A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN104252331A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 乘累加器 |
CN106537330A (zh) * | 2014-07-25 | 2017-03-22 | 高通股份有限公司 | 通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体 |
CN107077416A (zh) * | 2014-11-03 | 2017-08-18 | Arm 有限公司 | 用于以选择性舍入模式进行向量处理的装置和方法 |
CN107741842A (zh) * | 2006-09-20 | 2018-02-27 | 英特尔公司 | 用于执行点积运算的指令和逻辑 |
CN114943057A (zh) * | 2016-09-15 | 2022-08-26 | 阿尔特拉公司 | 基于点积的处理元件 |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797363B2 (en) * | 2004-04-07 | 2010-09-14 | Sandbridge Technologies, Inc. | Processor having parallel vector multiply and reduce operations with sequential semantics |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
TW200625097A (en) * | 2004-11-17 | 2006-07-16 | Sandbridge Technologies Inc | Data file storing multiple date types with controlled data access |
US20060149804A1 (en) * | 2004-11-30 | 2006-07-06 | International Business Machines Corporation | Multiply-sum dot product instruction with mask and splat |
KR100837400B1 (ko) | 2006-07-20 | 2008-06-12 | 삼성전자주식회사 | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 |
KR20090078790A (ko) * | 2006-09-26 | 2009-07-20 | 샌드브리지 테크놀로지스, 인코포레이티드 | 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법 |
US9495724B2 (en) * | 2006-10-31 | 2016-11-15 | International Business Machines Corporation | Single precision vector permute immediate with “word” vector write mask |
US8332452B2 (en) * | 2006-10-31 | 2012-12-11 | International Business Machines Corporation | Single precision vector dot product with “word” vector write mask |
KR101545357B1 (ko) * | 2006-11-10 | 2015-08-18 | 퀄컴 인코포레이티드 | 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템 |
US8521800B1 (en) * | 2007-08-15 | 2013-08-27 | Nvidia Corporation | Interconnected arithmetic logic units |
US20100241834A1 (en) * | 2007-11-05 | 2010-09-23 | Sandbridge Technologies, Inc. | Method of encoding using instruction field overloading |
US8539188B2 (en) * | 2008-01-30 | 2013-09-17 | Qualcomm Incorporated | Method for enabling multi-processor synchronization |
CN102027456A (zh) * | 2008-03-13 | 2011-04-20 | 阿斯奔收购公司 | 用于通过停用有效阵列实现功率节省的方法 |
KR20110050665A (ko) | 2008-08-06 | 2011-05-16 | 아스펜 액퀴지션 코포레이션 | 정지가능하고 재시작가능한 dma 엔진 |
US9355068B2 (en) | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
US10095516B2 (en) | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
US9256480B2 (en) | 2012-07-25 | 2016-02-09 | Mobileye Vision Technologies Ltd. | Computer architecture with a hardware accumulator reset |
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US20150052330A1 (en) * | 2013-08-14 | 2015-02-19 | Qualcomm Incorporated | Vector arithmetic reduction |
CN114528022A (zh) * | 2015-04-24 | 2022-05-24 | 优创半导体科技有限公司 | 实现虚拟地址的预转换的计算机处理器 |
US20170046153A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Simd multiply and horizontal reduce operations |
US10108581B1 (en) * | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
US11294679B2 (en) | 2017-06-30 | 2022-04-05 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex values |
WO2019005115A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES |
US10795676B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US10664277B2 (en) | 2017-09-29 | 2020-05-26 | Intel Corporation | Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words |
US10514924B2 (en) | 2017-09-29 | 2019-12-24 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US11243765B2 (en) | 2017-09-29 | 2022-02-08 | Intel Corporation | Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements |
US11074073B2 (en) * | 2017-09-29 | 2021-07-27 | Intel Corporation | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements |
US10534838B2 (en) | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
US10795677B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values |
US10552154B2 (en) | 2017-09-29 | 2020-02-04 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US11256504B2 (en) | 2017-09-29 | 2022-02-22 | Intel Corporation | Apparatus and method for complex by complex conjugate multiplication |
US10802826B2 (en) | 2017-09-29 | 2020-10-13 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
CN109871236A (zh) * | 2017-12-01 | 2019-06-11 | 超威半导体公司 | 具有低功率并行矩阵乘法流水线的流处理器 |
US10678507B2 (en) * | 2017-12-22 | 2020-06-09 | Alibaba Group Holding Limited | Programmable multiply-add array hardware |
US12050552B2 (en) | 2018-10-03 | 2024-07-30 | Google Llc | Maintaining block level snapshots using free storage space |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4636942A (en) * | 1983-04-25 | 1987-01-13 | Cray Research, Inc. | Computer vector multiprocessing control |
JPH0640301B2 (ja) * | 1983-09-22 | 1994-05-25 | ソニー株式会社 | 並列乗算回路 |
US5032865A (en) * | 1987-12-14 | 1991-07-16 | General Dynamics Corporation Air Defense Systems Div. | Calculating the dot product of large dimensional vectors in two's complement representation |
KR920003494B1 (ko) * | 1989-06-20 | 1992-05-01 | 삼성전자 주식회사 | 디지탈 신호처리 시스템에서의 실시간 2's 콤플리멘트코드 숫자의 승산방법 및 회로 |
US5613114A (en) * | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
FR2725054B1 (fr) * | 1994-09-26 | 1997-01-17 | Suisse Electronique Microtech | Dispositif multitache de traitement de sequences d'instructions, a basse consommation d'energie |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
KR100291383B1 (ko) * | 1996-11-18 | 2001-09-17 | 윤종용 | 디지털신호처리를위한명령을지원하는모듈계산장치및방법 |
GB2330226B (en) * | 1997-08-30 | 2000-12-27 | Lg Electronics Inc | Digital signal processor |
US5889689A (en) * | 1997-09-08 | 1999-03-30 | Lucent Technologies Inc. | Hierarchical carry-select, three-input saturation |
US6377619B1 (en) * | 1997-09-26 | 2002-04-23 | Agere Systems Guardian Corp. | Filter structure and method |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6182105B1 (en) * | 1998-08-27 | 2001-01-30 | Lucent Technologies Inc. | Multiple-operand addition with intermediate saturation |
US6968445B2 (en) * | 2001-12-20 | 2005-11-22 | Sandbridge Technologies, Inc. | Multithreaded processor with efficient processing for convergence device applications |
US6842848B2 (en) * | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
US6904511B2 (en) | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
-
2004
- 2004-05-07 JP JP2006532846A patent/JP2006529043A/ja active Pending
- 2004-05-07 EP EP10011563A patent/EP2290525A3/en not_active Ceased
- 2004-05-07 EP EP04775953.5A patent/EP1623307B1/en not_active Expired - Lifetime
- 2004-05-07 KR KR1020057021308A patent/KR101005718B1/ko active IP Right Grant
- 2004-05-07 WO PCT/US2004/014257 patent/WO2004103056A2/en active Application Filing
- 2004-05-07 US US10/841,261 patent/US7593978B2/en active Active
- 2004-05-07 CN CNA2004800170825A patent/CN1820246A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107741842A (zh) * | 2006-09-20 | 2018-02-27 | 英特尔公司 | 用于执行点积运算的指令和逻辑 |
CN107741842B (zh) * | 2006-09-20 | 2021-08-06 | 英特尔公司 | 用于执行点积运算的指令和逻辑 |
CN104252331A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 乘累加器 |
CN104252331B (zh) * | 2013-06-29 | 2018-03-06 | 华为技术有限公司 | 乘累加器 |
CN103645881A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN103645881B (zh) * | 2013-12-13 | 2016-08-24 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN106537330A (zh) * | 2014-07-25 | 2017-03-22 | 高通股份有限公司 | 通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体 |
CN106537330B (zh) * | 2014-07-25 | 2019-02-05 | 高通股份有限公司 | 通过使用数据索引化累加器使标量操作并行化的方法和处理器 |
CN107077416A (zh) * | 2014-11-03 | 2017-08-18 | Arm 有限公司 | 用于以选择性舍入模式进行向量处理的装置和方法 |
CN107077416B (zh) * | 2014-11-03 | 2020-11-27 | Arm 有限公司 | 用于以选择性舍入模式进行向量处理的装置和方法 |
CN114943057A (zh) * | 2016-09-15 | 2022-08-26 | 阿尔特拉公司 | 基于点积的处理元件 |
Also Published As
Publication number | Publication date |
---|---|
US20050071413A1 (en) | 2005-03-31 |
EP1623307A2 (en) | 2006-02-08 |
JP2006529043A (ja) | 2006-12-28 |
WO2004103056A3 (en) | 2005-12-29 |
WO2004103056A2 (en) | 2004-12-02 |
US7593978B2 (en) | 2009-09-22 |
KR101005718B1 (ko) | 2011-01-10 |
EP1623307B1 (en) | 2015-07-01 |
KR20060011994A (ko) | 2006-02-06 |
EP2290525A3 (en) | 2011-04-20 |
EP1623307A4 (en) | 2006-07-26 |
EP2290525A2 (en) | 2011-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1820246A (zh) | 执行饱和或不执行饱和地累加多操作数的处理器还原单元 | |
US7797363B2 (en) | Processor having parallel vector multiply and reduce operations with sequential semantics | |
KR100291383B1 (ko) | 디지털신호처리를위한명령을지원하는모듈계산장치및방법 | |
RU2263947C2 (ru) | Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных | |
US6092094A (en) | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand | |
US9164763B2 (en) | Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction | |
WO2019005088A1 (en) | HETEROGENEOUS MULTIPLIER | |
US6601077B1 (en) | DSP unit for multi-level global accumulation | |
US20090100252A1 (en) | Vector processing system | |
EP3326060B1 (en) | Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
US12061910B2 (en) | Dispatching multiply and accumulate operations based on accumulator register index number | |
EP3842954A1 (en) | System and method for configurable systolic array with partial read/write | |
JP2006146644A (ja) | プロセッサ | |
US7167972B2 (en) | Vector/scalar system with vector unit producing scalar result from vector results according to modifier in vector instruction | |
CN1103957C (zh) | 生成小于、大于和等于条件的位的方法和装置 | |
GB2382886A (en) | Vector Processing System | |
CN109960486B (zh) | 二进制数据处理方法及其装置、介质和系统 | |
WO2008077803A1 (en) | Simd processor with reduction unit | |
CN115809094A (zh) | 一种实现一条指令对多组并行处理的数据处理方法 | |
US20090234866A1 (en) | Floating Point Unit and Cryptographic Unit Having a Shared Multiplier Tree | |
JPH1185469A (ja) | 並列演算装置 | |
JP2012155569A (ja) | ディジタル信号処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |