CN1185606A - 面向算术/移位操作的单指令多数据校正电路 - Google Patents

面向算术/移位操作的单指令多数据校正电路 Download PDF

Info

Publication number
CN1185606A
CN1185606A CN97123134.6A CN97123134A CN1185606A CN 1185606 A CN1185606 A CN 1185606A CN 97123134 A CN97123134 A CN 97123134A CN 1185606 A CN1185606 A CN 1185606A
Authority
CN
China
Prior art keywords
circuit
instruction
shift
arithmetic
clock period
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.)
Granted
Application number
CN97123134.6A
Other languages
English (en)
Other versions
CN1108558C (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1185606A publication Critical patent/CN1185606A/zh
Application granted granted Critical
Publication of CN1108558C publication Critical patent/CN1108558C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Abstract

公开一种处理算术/移位功能的指令的微处理器电路,这种算术/移位功能可以在操作的第一个时钟周期内执行一条指令的标准操作(例如,ALU指令或移位指令),同时与算术/移位功能相关的校正电路用于把算术/移位功能提供的标准结果转换成执行一条SIMD指令所需要的结果形式。这种算术/移位功能是一条由算术逻辑单元(ALU)或是由一条移位指令所提供的指令。校正电路为逻辑指令不加改变地传送数据,但是根据SIMD指令提供条件代码。

Description

面向算术/移位操作的单指令多数据校正电路
本发明涉及微处理器中电路的数据寄存器,尤其涉及用于修正算术/移位操作结果的单指令多数据(SIMD)校正电路。
在此之前,逻辑电路被用于数据处理中提高算术/移位操作的性能。随着对高速处理大量数据的这种需要的不断增长,提高算术/移位操作的效率变得非常重要。特别是多媒体技术遇到的困难之一,尤其涉及到图形,则必须要处理大量的数据。单指令多数据(SIMD)的一个特性就是每个SIMD指令对一个64位的操作数可以独立的对每8位,16位,32位或64位字段进行操作。
例如,SIMD的加法指令,能够在寄存器操作数的第一个,第二个,第三和第四个16位字段上进行加运算,好象SIMD加法是4个独立的16位加法指令。SIMD的移位指令,举例说明,能够在寄存器操作数的第一个,第二个,第三和第四个16位字段上进行移位操作,好象SIMD移位指令是4个独立的16位移位指令。另外,移位操作包括左移,逻辑右移,算术右移。
随着Intel MMX扩展的发布,SIMD获得了广泛地承认。MMX是SIMD体系结构。在X86体系结构上实现MMX扩展需要附加的执行部件以符合MMX格式。转换标准的执行部件使其能够执行标准的和SIMD的操作将会遇到前所未遇的困难。首先,附加的执行部件增加了关键线路例如进位传输线路的延迟,因为在SIMD中,两个SIMD的子操作数(16位或32位字段)之间的进位是必须被删除的。第二,附加的执行部件需要占用附加的硅片区域。第三,由于该执行部件是高度专用的电路,所以附加的执行部件需要增加开发的时间和开销。
本发明包括了一种校正电路,可以把标准逻辑的执行部件转变为可执行标准操作和SIMD操作。本发明具有如下的优点,在关键路径例如进位传输线路的延迟上缓解了难度;与增加附加的执行部件相比,本发明需要更少的硅空间;同时不需要进一步开发高度专用的执行部件,若执行部件是高度专用的,因而对其进行修改将要耗费大量的劳动。本发明增强了在应用软件例如多媒体和信号处理中处理大量数据的能力。本发明排除了关键的线路,因为逻辑并不增加到关键路径中;因为只是重复使用相同的执行部件,所以节省了时间和硅区域;而且不需要重新构造具有附加逻辑的复杂部件。另一种在多媒体和信号处理中需要处理大量数据的操作是矩阵乘法。本发明可以应用于算术逻辑部件和移位逻辑中的算术/移位操作(例如,加,减,乘,除,移位)的标准逻辑。
本发明包括了一个带有执行部件的微处理器电路,用于执行算术/逻辑操作中的标准指令,以及一个与执行部件相关的校正电路,用于把执行部件提供的标准指令修正为正在执行的SIMD指令要求的结果。本发明提高了操作的效率,因为校正电路的修正可以在第二个时钟周期内执行,同时算术/移位操作又可以在第二个时钟周期内自由地执行第二条指令。算术/移位操作的结果可以通过执行算术逻辑部件或移位功能提供的指令而得到。校正电路对标准逻辑指令不加改变地传送数据,但是要根据SIMD指令提供条件代码。校正电路通过对标准数据进行基于有效位和子单元边界进位的处理修正算术操作。
在移位操作中,本发明包括一个移位装置,用于在操作的第一个时钟周期中执行指令的标准操作,一个掩码生成电路与移位装置电路并行执行,以及一个与移位装置和掩码生成电路相关的校正电路,用于把移位装置提供的标准结果修正为一个正在执行的SIMD移位操作所要求的结果。这种修正可以在第二时钟周期内通过地址覆盖掩码来实现,同时移位装置在第二时钟周期内可以自由地执行第二条指令。
本发明的示范性的最佳实施方式将在下文中结合附图加以说明,其中相同的符号代表相同的组成部分。
图.1中所示的框图是一个可执行算术/移位操作的执行部件和根据本发明提出的第一种最佳实施方式的校正电路。
图.2中所示的框图是一个可执行算术/移位操作的执行部件和根据本发明提出的第二种最佳实施方式的校正电路。
图.3所示的是根据本发明的最佳实施方式,一个SIMD操作的高层视图。
图.4所示的是根据本发明的一种最佳实施方式,公开校正单元的实施细节流程图。
图.5所示的是根据本发明的一种最佳实施方式,移位功能的流程图。
图.6所示的是图.5所示的根据本发明的掩码生成装置的细节。
图.7所示的是图.5中所示的根据本发明的与/或掩码(AOM)细节。
图.8所示的是根据本发明的第三种最佳实施方式的执行部件/校正单元和框图。
参考图1,显示了本发明的微处理器电路10与一个校正电路20。校正电路20把或者是ALU(图4)的标准操作或者是移位装置(图5-7)的标准操作的结果转变为一条将要执行的SIMD指令所需要的结果。标准执行部件16从保留站(s1)15接收一条将要执行的指令,而保留站用于保存该将要执行的指令14。执行部件16提供了访问寄存器12的途径,并可以执行ALU操作或者移位操作。结束级(s2)18中保存写回级中的指令14执行完毕时将要被写回的结果。
一个校正电路20,如图所示包括用于SIMD应用的校正单元22和结束级(S3)24。在图1所示的第一种实施方式中,执行部件被描述为两级流水线。流水线的第一级17进入校正电路20,流水线的第二级19绕过校正电路20而到达多路转换器MUX 26用于非SIMD操作。寄存器28中保留的二级流水线17,19的结果被送至寄存器12。
图2描述了本发明的第二种实施方式的校正电路30。除了去掉了MUX26部分,这种实施方式与图1非常相似。允许在同一个时钟周期内象执行非SIMD操作一样执行SIMD或校正操作。SIMD校正指令通过流程线29传送,非SIMD指令则通过流程线31绕过校正单元22。
然而在另外一种实现中,图8所示的是一种组合的执行部件/校正单元100。通过将ALU第一条通道的或者移位算子级的结果17,101反馈到ALU或者增加了适当的控制硬件的移位算子,ALU或者执行部件/校正单元100的移位算子可以实现校正级。对于已经熟悉了本发明的熟练的技术人员,这些实现应当是很明显的,因而它包括在该公开所要求的权利范围之内。
使用标准ALU实现SIMD
图3显示了一个SIMD操作40的高层视图。图中显示了一条指令14。一条简单SIMD指令44对寄存器12的分别为7,6,5,4,3,2,1,0的子集同时进行操作。如图所示,寄存器操作数(R2)44指向一个64位的寄存器12。操作数的指令OP具体指明了操作,例如,R1<-R1+R2加法指令。指令14将在从0到7的子集上独立的执行加操作。从0到7的每个子集可以是一个单独的字节,加指令可以使用64位寄存器操作数中8个字节的每一个即8个独立的加数进行加运算,子集可以是16位或32位。
参考图4,展示了图1和图2中校正电路20的具体内容,该图中使用了一个标准ALU。一个64位执行部件16有一个8字节的结果寄存器24。B7是高位字节,B(6),...B(0)是低位字节。每个字节都有三个附加的锁存C(n),CI(n),和ZB(n),C(n)是B(n)的最高位位的进位(本字节的进位),CI(n)是向B(n)最高位的进位,ZB(n)指示B(n)的所有位都是0。
这些B(n)寄存器中的每一个都与一个标记为F(n)的强制置码框(foreebox)相连。F(n)有两条输入控制线加上来自B(n)的数据。输入控制线是强制8(n)和0(n)。强制8(n)在该框的输出FB(n)强加16进制数‘80’,强制0(n)强加16进制数‘00’。如果两条控制线都关闭,输入总线就不加改变的传送到输出总线。FB(n)的输出字节传送到增量/减量框ID(n)。该框有两条控制输入IB(n)和DB(n)。IB(n)在输入总线上加1,DB(n)在输出总线上减1。两条控制线关闭时将输入总线不加改变地传送到输出总线。于是ID(n)有一个字节的输出总线和一条输出控制线CB(n)。该输出是进位/借位线而不是字节加1/减1线。即当DB(n)是有效的并且FB(n)=X’00’,或者IB(n)是有效的并且FB(n)=X’FF’,它应该是有效的。
下面将解释将要执行的操作的例子。本发明予期会包括各种可能性,而在当前的SIMD定义下组合所有的功能是不可能的。
校正级将被提供大量的指令参数。第一,字节(B),字(W),双字(DW)和四字(QW)数据尺寸(一个字是16位)将被提供。第二,提供加或者减指令。第三,指令可以是有符号和无符号格式。有符号数是标准的2的补码形式,而无符号数仅是正数。第四,指令可以在饱和或者非饱和状态下执行。非饱和是指如果结果超过了规定的大小,结果将发生绕回(wrap)。饱和是指如果结果超过了指定的大小,那么给定格式的最大或者最小的数将被插入。例如,一个无符号字节发生上溢出将会产生结果255或者16进制数‘FF’,而下溢出(仅发生在减法运算中)将产生0或者16进制数‘00’。对于有符号字节,发生上溢出将会产生结果127或者16进制数‘7F’,下溢出(可能出现在加法或者减法中)将会产生结果-128或者16进制数‘80’。图1-4中定义的结构允许实现校正上述所有指令参数方案的组合。注意当强制置码框直接产生16进制数‘00’和‘80’时,可以通过在16进制数‘00’和‘80’上减1产生16进制常数‘FF’和‘7F’。
最简单的方案,无符号字节加法运算(非饱和)中,低位字节B(0)不需要校正。如果C(0)=1,下一个字节B(1)需要减1。于是DB(1)=C(0)。通常如果C(n-1)=1或者DB(n)=C(n-1),B(n)应该减1。
在无符号字加法运算(非饱和)方案中,结果B(1)/B(0)不需要校正。如果C(1)=1,下一个字B(3)/B(2)需要减1。这意味着DB(2)=C(1)并且DB(3)=CB(2)。一般情况下,DB(n)=C(n-1)并且DB(n)=C(n-1)并且DB(n+1)=CB(n),其中n=2,4,6。
无符号双字加法运算采用相似的模式,而无符号四字加法不需要校正。显然对于有符号加法(非饱和)以上模式是相同的。
在饱和状态下的无符号字节加法中只可能发生上溢出,因此仅需要强制设置16进制数‘FF’。低位字节不需要减1,但是如果C(0)=1应当强制设置16进制数‘FF’。这可以通过设置F0(0)=1和DB(0)=1来实现。于是F0(0)=C(0)以及DB(0)=C(0)。如果C(0)=1下一个字节B(1)需要减1,如果C(1)=1将被强制设置成16进制数‘FF’。于是F0(1)=C(1)并且DB(1)=c(0)OR C(1)。注意如果由于C(0)=1导致C(1)=1,强制设置成16进制数‘FF’是可以接受的,因为忽略C(0)的结果应当是16进制数‘FF’。所以通常F0(n)=C(n)并且DB(n)=C(n)OR C(n-1)。
至于饱和状态下的无符号字加法运算,低位字B(1)/B(0)不需要减1,但如果C(1)=1则两个字节需要被强制设置成16进制数‘FF’。所以DB(1)=DB(0)=F0(0)=F0(1)=C(1)。如果C(1)=1下一个字B(3)/B(2)需要减1,如果C(3)=1需要将其强制设置成16进制数‘FFFF’。对于B(2),DB(2)=C(3)OR C(1),并且F0(2)=C(3)。对于B(3),F0(3)=C(3)并且DB(3)=C(3)OR C(2)。通常F0(n+1)=F0(n)=C(n+1),DB(n)=C(n+1)ORC(n-1),并且DB(n+1)=C(n+1)OR CB(n),其中n=2,4,6。
饱和状态下无符号双字/四字加法运算采用一种相似的模式。
在无符号加法中C(n)代表了上溢出,其中不可能出现下溢出。在有符号加法中上溢出和下溢出都可能出现,所以比较复杂。让OV(n)=C(n)NOTAND CI(n)代表上溢出,UV(n)=C(n)AND NOT CI(n)代表了下溢出,并且V(n)=UV(n)OR V(n)代表某些上溢出/下溢出条件。
饱和状态下有符号字节加法要求强制设置16进制数‘7F’或者‘80’。低位字节B(0)不需要减1,但如果OV(0)=1,则B(0)需要设置成16进制数‘7F’,而如果UV(0)=1,B(0)需要设置成16进制数‘80’,所以如果OV(1)=1应当是16进制数‘7F’。于是F8(1)=V(1)并且DB(1)=OV(1)OR C(0)。通常F8(n)=V(n)并且DB(n)=OV(n)OR C(n-1)。
饱和状态下有符号字加法增加了复杂性。当检测下溢出和上溢出必须分别把字设置成16进制数‘8000’和‘7FFF’。于是低位字节必须被设置成16进制数‘00’和‘FF’,而高位字节要设置成16进制数‘80’和‘7F’。低位字B(1)/B(0)不需要减1,但如果OV(1)=1,则B(1)/B(0)要设置成16进制数‘7FFF’,并且如果UV(1)=1那么B(1)/B(0)要设置成16进制数‘8000’。因此F8(1)=F0(0)=V(1),DB(0)=DB(1)=OV(1)。对于下一个字B3/B2,如果C(1)=1那么要减1,如果OV(3)=1要设置成16进制数‘7FFF’,如果UV(3)=1要设置成16进制数‘8000’。因此F(3)=F0(2)=V(3),DB(2)=OV(3)OR C(1)以及DB(3)=OV(3)OR DB(2)。通常F8(n-1)=F0(n)=V(n+1),DB(n)=OV(n-1)OR C(n),以及DB(n+1)=OV(n+1)OR DB(n),其中n=2,4,6。
饱和模式下有符号双字/四字加法采用一种相似的处理模式。减法处理方案与加法相同,除了当进位是1时,校正应当减1,进位是0(借位是1)时应当加1。下溢出和上溢出定义相同。
比较相等和比较大于需要取两个有符号的字节,字,双字或者四字的操作数进行比较。如果是真(true)结果域将全部设置成全1,如果是假(false)结果域将全部设置成全0。提供了ZB(n),C(n)和CI(n)信号后,比较字节,字,双字和四字的相等或大于将变得很容易。已经定义的结构中允许设置所有的位为全0或全1。
参考图4,进位逻辑可以按照本技术中已知的很多方式来实现。图中采用了一种行波进位(ripple)方案,但是在本发明涉及的领域内可以采用(例如)进位预测和先行进位技术。
用标准移位装置实现SIMD移位指令
如图1所示,一个保留站(s1)15存放将被执行的指令,执行部件16包括了一个移位装置(图5),可访问寄存器12,当在回写级指令运行完毕后,结束级(S2)18保存将被写回的结果。图2所示的是本发明的当前实施方式,其中执行部件16是一个两级流水线并且非SIMD指令将绕过SIMD校正电路。本实施方式在前文中已经详细阐述。SIMD级取得移位装置操作的结果,并且校正子单元以适应SIMD操作。
在本发明的另外一种实施方式中MUX26被删除,允许SIMD指令象执行单时钟周期指令一样在同一个时钟周期内完成。
在本发明的另外一种实施方式中,通过把移位装置级的第一条通道的结果反馈到增加了控制硬件的移位装置,移位装置级可实现校正级20。当了解了本发明后对于那些熟练的技术人员所有这些实现将变得很明显因而属于本发明范围之内。
图3所示的是SIMD操作的概念,一条SIMD指令同时在寄存器操作数的子集上进行操作。寄存器(R2)44指向一个64位的操作数12。OP代码指出了具体的操作(例如R1<-R2移位指令)。SIMD可独立地在每个子集上进行移位操作。子集可以是一个字节,于是使用64位寄存器操作数的8个字节可以执行8个独立的移位操作,或者子集也可以是16位和32位。
图5所示的是本发明最佳实施方式的移位装置60的高层视图。移位计数(SCNT)62,操作数64和结果寄存器82是非SIMD指令的标准移位功能的几个组成部分。掩码生成装置76使用操作数64和移位计数62能使掩码寄存器与标准移位结果并行生成与-或掩码(AOM)84。掩码生成装置,MR,和AOM是图1和图2中所示的校正电路。AOM84的结果被锁存到最终结果(第二级)寄存器。
图6所示是掩码生成装置的详细内容。移位计数寄存器(SCNT)62连冈左移或右移指示(L/R)66共冈产生移位计数掩码(SCNTM)62。字节移位掩码(BSM)78为64位掩码中的每一个字节产生移位掩码。如果字节左移移位的数目不超过8,该掩码将是正确的。将数据与掩码进行“与”运算将会得到左移的正确结果。表2描述了当移位计数等于或大于某一数字时所推导出的等式。例如,当SCNT大于或等于8时SCT8就是此等式。在表3中这些等式被用于定义在左移中强制设置16进制数‘00’(F0Sn)的功能,在右移中强制设置16进制数‘FF’(F1Sn)的功能。
至此,按照图7所定义的功能代码把MR中的掩码与结果寄存器中64位移位数据进行AND/OR操作,正确的结果将被产生。当数据要被保留左移产生的掩码有一些1,而数据要被清零时,掩码有一些0。在右移中0指出数据应当被保留,1则指出了根据移位种类的不同(算术的或逻辑的)0或1应当被添入,以及高位位的处理。
图4所示的是将被送入AOM的功能字段的产生。参考图7,AOM接收MR和结果寄存器中的每个字节,以及执行表5中指出的基于FN(X)字段的功能。
利用具体的实施方式本发明被详细地阐述。它应当被理解,但是这里的实施方式仅仅是说明,而且本发明不必要仅限于此。在其思想和权利要求的领域内接着对本发现进行完善和丰富将是很明显的,而且那些熟练的技术人员将会赞同这一点。
表1.字节移位掩码(BSM)功能         表2.移位计数等式移位计数器掩码  字节移位-掩码         SCT8 =S3+S4+S5+S6
                                  SCT16=S4+S5+S6
210         76543210              SCT24=S5+S6+(S3A S4)
                                  SCT32=S5+S6
000         11111111              SCT40=S6+S5A(S3+S4)
001         11111110              SCT48=S6+(S5A S4)
010         11111100              SCT56=S5A S4A S3
100         11110000              SCT64=S6
101         11100000
110         11000000
111         10000000
表3.左移和右移
   左   FOS7  FOS6  FOS5  FOS4  FOS3  FOS2  FOS1  FOS0
   右   F1S7  F1S5  F1S5  F1S4  F1S3  F1S2  F1S1  F1S1字节   左   0     0     0     0     0     0     0     0
   右   0     0     0     0     0     0     0     0字     左   SCT16 SCT8  SCT16 SCT8  SCT16 SCT8  SCT16 SCT8
   右   SCT8  SCTl6 SCT8  SCT16 SCT8  SCT16 SCT8  SCT16双字   左   SCT32 SCT24 SCT16 SCT8  SCT32 SCT24 SCT16 SCT8
   右   SCT8  SCT16 SCT24 SCT32 SCT8  SCT16 SCT24 SCT32四字   左   SCT64 SCT56 SCT48 SCT40 SCT32 SCT24 SCT16 SCT8
   右   SCT8  SCT16 SCT24 SCT32 SCT40 SCT48 SCT56 SCT64
表5.ADM功能FN(1∶0)         功能           表述01              RAND MR       左移10              RAND MR0.01  右移W/N11              ROR MR        右移W/O
表4.FN(X)的生成操作                FN7  FN6  FN5  FN4  FN3  FN2  FN1  FN0SL(B,W,DW,QW)    01   01   01   01   01   01   01   01SRL(B,W,DW,QW)   10   10   10   10   10   10   10   10SRA(B)*            R63  R55  R47  R39  R31  R23  R15  R7SRA(W)*            R63  R63  R47  R47  R31  R31  R15  R15SRA(DW)*           R63  R63  R63  R63  R31  R31  R31  R31SRA(QW)*           R63  R63  R63  R63  R63  R63  R63  R63
  SL=(左移)
  SRL=(逻辑右移)
  SRA=(算术右移)
  B-字节
  W=2字节
  DW=4字节
  QW=8字节
*算术右移(SRA),FN的两位代码是“1”R(y),其中y是一个2进制位的位量(即,R15是位15)

Claims (19)

1.一个微处理器电路,包括:
a).算术/移位功能,在操作的第一个时钟周期内执行指令的标准操作;及
b).一个与所述的算术/移位功能相关的校正电路,用于把所述算术/移位功能所提供的标准结果转换成将要执行的单指令多数据指令所需要的结果。
2.权利要求1的电路,其特征在于校正电路的转换在第二个时钟周期内执行。
3.权利要求2的电路,其特征在于算术/移位功能可在第二个时钟周期内自由地执行第二条指令。
4.权利要求1的电路,其特征在于算术/移位功能和校正电路能够在同一个时钟周期内各自执行一条指令。
5.权利要求1的电路,其特征在于算术/移位功能是算术逻辑单元所提供的一条指令。
6.权利要求1的电路,其特征在于校正电路为逻辑指令不改变地传送数据,但是根据SIMD指令提供条件代码。
7.权利要求5的电路,其特征在于通过对基于有效位和子单元边界进位的标准数据进行操作,校正电路实现算术操作的校正。
8.权利要求5的电路,其特征在于标准ALU包括加操作。
9.权利要求1的电路,其特征在于算术/移位功能是一条移位指令。
10.一个用于执行多媒体指令的微处理器包括:
a).一个算术逻辑单元,在操作的第一时钟周期内执行指令的标准操作。
b).一个与ALU相关的校正电路,用于把ALU提供的标准结果转换为单指令多数据所需要的结果。
11.权利要求1的电路,其特征在于校正电路的转换在第二个时钟周期内执行。
12.权利要求2的电路,其特征在于ALU在第二时钟周期内可自由地执行第二条指令。
13.权利要求1的电路,其特征在于ALU和校正电路可以在同一时钟周期内各自执行一条指令。
14.一个微处理器电路,包括:
a).移位装置,在操作的第一个时钟周期内执行指令的标准操作;
b).一个掩码生成电路,与移位装置电路并行工作;
c).一个与所述的移位装置和所述的掩码生成电路相关的校正电路,用于把所述的移位装置提供的标准结果转换成执行SIMD移位指令所需要的结果。
15.权利要求13中的电路,其特征在子在第二个时钟周期中实现转换。
16.权利要求14中的电路,其特征在于由一个地址覆盖掩码电路执行转换。
17.权利要求14中的电路,其特征在于移位装置在第二个时钟周期可自由地执行第二条指令。
18.权利要求13中的电路,其特征在于移位装置和校正电路可以在同一时钟周期内各自完成一条指令。
19.权利要求13中的电路,其特征在于移位装置执行移位操作。
CN97123134A 1996-12-20 1997-11-19 面向算术/移位操作的单指令多数据校正电路 Expired - Fee Related CN1108558C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US770349 1996-12-20
US08/770,349 US6006316A (en) 1996-12-20 1996-12-20 Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction

Publications (2)

Publication Number Publication Date
CN1185606A true CN1185606A (zh) 1998-06-24
CN1108558C CN1108558C (zh) 2003-05-14

Family

ID=25088262

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97123134A Expired - Fee Related CN1108558C (zh) 1996-12-20 1997-11-19 面向算术/移位操作的单指令多数据校正电路

Country Status (5)

Country Link
US (1) US6006316A (zh)
KR (1) KR19980063501A (zh)
CN (1) CN1108558C (zh)
GB (1) GB2321547B (zh)
TW (1) TW364097B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102918495A (zh) * 2010-01-07 2013-02-06 线性代数技术有限公司 用于执行算术运算的硬件
CN103377031A (zh) * 2012-04-27 2013-10-30 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
CN106445469A (zh) * 2011-12-22 2017-02-22 英特尔公司 打包数据操作掩码移位处理器、方法、系统及指令

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6211892B1 (en) * 1998-03-31 2001-04-03 Intel Corporation System and method for performing an intra-add operation
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6338135B1 (en) * 1998-11-20 2002-01-08 Arm Limited Data processing system and method for performing an arithmetic operation on a plurality of signed data values
GB2362732B (en) 2000-05-23 2004-08-04 Advanced Risc Mach Ltd Parallel processing of multiple data values within a data word
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
JP3779602B2 (ja) * 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
US7565514B2 (en) * 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
US10915319B2 (en) 2017-05-15 2021-02-09 Google Llc Two dimensional masked shift instruction

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4139899A (en) * 1976-10-18 1979-02-13 Burroughs Corporation Shift network having a mask generator and a rotator
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
EP0820005B1 (en) * 1990-08-24 2001-11-07 Matsushita Electric Industrial Co., Ltd. Method and apparatus for computing floating point data
US5408670A (en) * 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5689592A (en) * 1993-12-22 1997-11-18 Vivo Software, Inc. Parallel processing of digital signals in a single arithmetic/logic unit
EP0661624A1 (en) * 1994-01-04 1995-07-05 Sun Microsystems, Inc. Pseudo-superscalar technique for video processing
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102918495A (zh) * 2010-01-07 2013-02-06 线性代数技术有限公司 用于执行算术运算的硬件
CN102918495B (zh) * 2010-01-07 2016-08-31 线性代数技术有限公司 用于执行算术运算的硬件
CN106445469A (zh) * 2011-12-22 2017-02-22 英特尔公司 打包数据操作掩码移位处理器、方法、系统及指令
CN106445469B (zh) * 2011-12-22 2019-03-08 英特尔公司 处理器、机器可读存储介质和计算机实现的系统
US10564966B2 (en) 2011-12-22 2020-02-18 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
CN103377031A (zh) * 2012-04-27 2013-10-30 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
CN103377031B (zh) * 2012-04-27 2017-09-26 腾讯科技(深圳)有限公司 一种多数据处理方法和装置

Also Published As

Publication number Publication date
GB9724532D0 (en) 1998-01-21
GB2321547A (en) 1998-07-29
GB2321547B (en) 2001-10-24
US6006316A (en) 1999-12-21
CN1108558C (zh) 2003-05-14
KR19980063501A (ko) 1998-10-07
TW364097B (en) 1999-07-11

Similar Documents

Publication Publication Date Title
CN1108558C (zh) 面向算术/移位操作的单指令多数据校正电路
US7685408B2 (en) Methods and apparatus for extracting bits of a source register based on a mask and right justifying the bits into a target register
US6116768A (en) Three input arithmetic logic unit with barrel rotator
US5960193A (en) Apparatus and system for sum of plural absolute differences
US5600847A (en) Three input arithmetic logic unit with mask generator
US5680339A (en) Method for rounding using redundant coded multiply result
US5696959A (en) Memory store from a selected one of a register pair conditional upon the state of a selected status bit
US6098163A (en) Three input arithmetic logic unit with shifter
US5485411A (en) Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs
US5446651A (en) Split multiply operation
US5596763A (en) Three input arithmetic logic unit forming mixed arithmetic and boolean combinations
US5640578A (en) Arithmetic logic unit having plural independent sections and register storing resultant indicator bit from every section
US6032170A (en) Long instruction word controlling plural independent processor operations
US5727225A (en) Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US5420809A (en) Method of operating a data processing apparatus to compute correlation
US5493524A (en) Three input arithmetic logic unit employing carry propagate logic
JP3244506B2 (ja) 小型乗算器
US6067613A (en) Rotation register for orthogonal data transformation
US5596519A (en) Iterative division apparatus, system and method employing left most one's detection and left most one's detection with exclusive OR
US6026484A (en) Data processing apparatus, system and method for if, then, else operation using write priority
CN1020806C (zh) 使用跳跃阵列和变形华莱士树的并行乘法器
US5712999A (en) Address generator employing selective merge of two independent addresses
US5442581A (en) Iterative division apparatus, system and method forming plural quotient bits per iteration
Leiserson et al. Using de Bruijn sequences to index a 1 in a computer word
CN1826580A (zh) 具有初步饱和检测的加法或者减法运算单元

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20030514

Termination date: 20091221