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

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

Info

Publication number
CN1108558C
CN1108558C CN97123134A CN97123134A CN1108558C CN 1108558 C CN1108558 C CN 1108558C CN 97123134 A CN97123134 A CN 97123134A CN 97123134 A CN97123134 A CN 97123134A CN 1108558 C CN1108558 C CN 1108558C
Authority
CN
China
Prior art keywords
simd
data
circuit
result
operand
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.)
Expired - Fee Related
Application number
CN97123134A
Other languages
English (en)
Other versions
CN1185606A (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移位操作所要求的结果。这种修正可以在第二时钟周期内通过地址覆盖掩码来实现,同时移位装置在第二时钟周期内可以自由地执行第二条指令。
本发明提供一种用于对单指令多数据(SIMD)操作数执行SIMD算术指令的微处理器电路,其中,SIMD操作数含有n个子运算数,每个子运算数含有一个独立的数据集合,该电路输出一个由n个独立的子结果组成的SIMD格式的结果,该电路包含:
标准执行单元,用于接收SIMD运算数,并在第一时钟周期对SIMD操作数执行一个非SIMD运算,其中,非SIMD运算对SIMD运算数整体进行单一的算术运算,产生的非SIMD中间结果包含n个独立的子结果,每个子结果对应于n个SIMD运算数的其中之一;
校正部件,用于接收中间结果以及用于把非SIMD中间结果修改成SIMD格式的结果,使得n个子结果的每个都从非SIMD形式转换成一个好象是对SIMD运算数中对应的子运算数单独进行过算术运算而得出的结果。
本发明还提供一种用于对单指令多数据(SIMD)数据执行SIMD算术指令的微处理器电路,SIMD数据有多个数据域,每个数据域中含有一个要对其进行算术运算的独立值,该电路包含:
标准执行单元,用于接收SIMD算术指令,在第一时钟周期对SIMD数据整体执行单一的算术运算,并输出一个非SIMD中间结果,中间结果包含非独立的相关数据子集,每个数据子集对应于SIMD数据的多个数据域的其中之一;
寄存器,用于存储非SIMD中间结果的数据子集,其中每个数据子集进一步包括一个在单一算术运算期间算出的有关进位数据的集合;
校正部件,包含多个校正电路,其中每个校正电路对各数据子集的唯一一个数据子集操作,使得每个数据子集都从非SIMD形式转换成一个好象是对SIMD数据中对应数据域单独进行过算术运算而得出的结果,校正电路输出的SIMD结果,包含多个数据域的每个数据域的独立算术结果。
一种用于对单指令多数据SIMD操作数执行SIMD移位指令的微处理器电路,SIMD操作数由多个数据子操作数组成,该电路包含:
标准执行单元,用于接收SIMD移位指令,并在第一时钟周期对SIMD运算数执行一个非SIMD移位操作,并输出一个由该非SIMD移位操作产生的非SIMD结果,其中,非SIMD移位操作对SIMD运算数整体移位;
寄存器,用于存储包含多个数据子集的非SIMD结果,每个数据子集对应于SIMD的多个数据子操作数的其中之一;和
校正部件,用于把非SIMD结果转换成SIMD结果,使得每个数据子集都从非SIMD形式转换成一个好象是对SIMD数据中对应数据子操作数单独进行过移位操作而得出的结果,校正部件包含一个掩码生成电路和一个“与-或”掩码(AOM)。
本发明的示范性的最佳实施方式将在下文中结合附图加以说明,其中相同的符号代表相同的组成部分。
附图说明
图.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而到达多路转换器MUX26用于非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)=FO(0)=FO(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),并且FO(2)=C(3)。对于B(3),FO(3)=C(3)并且DB(3)=C(3) ORC(2)。通常FO(n+1)=FO(n)=C(n+1),DB(n)=C(n+1) OR C(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) ORC(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+S6210               76543210             SCT24=S5+S6+(S3 A S4)
                                   SCT32=S5+S6000               11111111             SCT40=S6+S5 A(S3+S4)001               11111110             SCT48=S6+(S5 A S4)010               11111100             SCT56=S5 A S4 A S3100               11110000             SCT64=S6101               11100000110               11000000111               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   SCT16  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               R AND MR         左移10               R AND MR001      右移W/111               R OR 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.一种用于对单指令多数据(SIMD)操作数执行SIMD算术指令的微处理器电路,其中,SIMD操作数含有n个子运算数,每个子运算数含有一个独立的数据集合,该电路输出一个由n个独立的子结果组成的SIMD格式的结果,该电路包含:
标准执行单元,用于接收SIMD运算数,并在第一时钟周期对SIMD操作数执行一个非SIMD运算,其中,非SIMD运算对SIMD运算数整体进行单一的算术运算,产生的非SIMD中间结果包含n个独立的子结果,每个子结果对应于n个SIMD运算数的其中之一;
校正部件,用于接收中间结果以及用于把非SIMD中间结果修改成SIMD格式的结果,使得n个子结果的每个都从非SIMD形式转换成一个好象是对SIMD运算数中对应的子运算数单独进行过算术运算而得出的结果。
2.权利要求1所述的电路,特征在于,校正部件在第二时钟周期修正非SIMD中间结果。
3.权利要求1所述的电路,特征在于,标准执行单元是一个移位器。
4.权利要求1所述的电路,特征在于,标准执行单元包含一个算术逻辑单元(ALU)。
5.权利要求4所述的电路,特征在于,ALU包括一个加法电路。
6.权利要求4所述的电路,特征在于,校正部件包含:
一个寄存器,用于存储含有非SIMD中间结果的数据;
多个与该寄存器相连的校正电路,每个校正电路对存储在该寄存器中的一部分数据进行操作。
7.权利要求6所述的电路,特征在于,每一部分数据包含非SIMD中间结果的一个子集和多个进位数据,其中进位数据是在非SIMD操作的执行期间计算的。
8.权利要求7所述的电路,特征在于,多个校正电路中的每个包含一个强制电路,强制电路能根据进位数据把相应的子集强制设定为至少一个预定值。
9.权利要求8所述的电路,特征在于,多个校正电路每个包含一个能递增和递减强制电路的输出的递增/递减电路。
10.一种用于对单指令多数据(SIMD)数据执行SIMD算术指令的微处理器电路,SIMD数据有多个数据域,每个数据域中含有一个要对其进行算术运算的独立值,该电路包含:
标准执行单元,用于接收SIMD算术指令,在第一时钟周期对SIMD数据整体执行单一的算术运算,并输出一个非SIMD中间结果,中间结果包含非独立的相关数据子集,每个数据子集对应于SIMD数据的多个数据域的其中之一;
寄存器,用于存储非SIMD中间结果的数据子集,其中每个数据子集进一步包括一个在单一算术运算期间算出的有关进位数据的集合;
校正部件,包含多个校正电路,其中每个校正电路对各数据子集的唯一一个数据子集操作,使得每个数据子集都从非SIMD形式转换成一个好象是对SIMD数据中对应数据域单独进行过算术运算而得出的结果,校正电路输出的SIMD结果,包含多个数据域的每个数据域的独立算术结果。
11.权利要求10所述的微处理器电路,特征在于,校正部件在第二时钟周期修正非SIMD中间结果。
12.权利要求10所述的微处理器电路,特征在于,每个校正电路包含:
一个强制电路,强制电路能根据相关的进位数据把相应的子集强制设定为至少一个预定值;和
一个递增/递减电路,递增/递减电路能根据相关的进位数据递增和递减强制电路的输出。
13.权利要求12所述的微处理器电路,特征在于,算术运算是加法操作。
14.权利要求12所述的微处理器电路,特征在于,有关的进位数据包含:
一个包含相应数据子集的高位位的进位值的位;
一个包含相应数据子集的高位位的借位值的位;
一个表示是否相应数据子集的所有位都是零的位。
15.权利要求14所述的微处理器电路,特征在于,每个递增/递减电路包含一个DB输入,如果DB=1,表明强制电路的输出应当被递减,对应于数据子集之一并对应于不饱和的无符号字节加操作的DB的值,等于含有另一个数据的进位值的位;对应于数据子集之一并对应于饱和的无符号字节加操作的DB的值,等于含有另一个数据的进位值的位,与含有这个数据子集的进位值的位的逻辑“或”。
16.一种用于对单指令多数据SIMD操作数执行SIMD移位指令的微处理器电路,SIMD操作数由多个数据子操作数组成,该电路包含:
标准执行单元,用于接收SIMD移位指令,并在第一时钟周期对SIMD运算数执行一个非SIMD移位操作,并输出一个由该非SIMD移位操作产生的非SIMD结果,其中,非SIMD移位操作对SIMD运算数整体移位;
寄存器,用于存储包含多个数据子集的非SIMD结果,每个数据子集对应于SIMD的多个数据子操作数的其中之一;和
校正部件,用于把非SIMD结果转换成SIMD结果,使得每个数据子集都从非SIMD形式转换成一个好象是对SIMD数据中对应数据子操作数单独进行过移位操作而得出的结果,校正部件包含一个掩码生成电路和一个“与-或”掩码(AOM)。
17.权利要求16所述的微处理器电路,特征在于,掩码生成电路生成一个包含多个字节的数据掩码,其中每个子集对应于SIMD操作数的其中一个数据子集。
18.权利要求17所述的微处理器电路,特征在于,数据掩码的每个子集是一个BSM(字节移位掩码),每个字节移位掩码根据一个SCNTM(移位计数掩码)而确定,如果SCNTM是0,BSM是FFh(十六进制);如果SCNTM是1,BSM是FEh;如果SCNTM是2,BSM是FCh;如果SCNTM是4,BSM是F0h;如果SCNTM是5,BSM是E0h;如果SCNTM是6,BSM是C0h;如果SCNTM是7,BSM是80h。
19.权利要求17所述的微处理器电路,特征在于,掩码生成电路包括多个强制电路,强制电路能把多个字节的每个字节强制设定为FFh或00h的值。
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 CN1185606A (zh) 1998-06-24
CN1108558C true 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)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6211892B1 (en) * 1998-03-31 2001-04-03 Intel Corporation System and method for performing an intra-add operation
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with 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
GB2476800A (en) * 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations
WO2013095513A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
CN103377031B (zh) * 2012-04-27 2017-09-26 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
US10915319B2 (en) * 2017-05-15 2021-02-09 Google Llc Two dimensional masked shift instruction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
EP0661624A1 (en) * 1994-01-04 1995-07-05 Sun Microsystems, Inc. Pseudo-superscalar technique for video processing

Family Cites Families (5)

* 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
EP0973089B1 (en) * 1990-08-24 2002-07-17 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
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
EP0661624A1 (en) * 1994-01-04 1995-07-05 Sun Microsystems, Inc. Pseudo-superscalar technique for video processing

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1108558C (zh) 面向算术/移位操作的单指令多数据校正电路
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
US5509129A (en) Long instruction word controlling plural independent processor operations
US5696959A (en) Memory store from a selected one of a register pair conditional upon the state of a selected status bit
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
US5995748A (en) Three input arithmetic logic unit with shifter and/or mask generator
US6098163A (en) Three input arithmetic logic unit with shifter
US5606677A (en) Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US5805913A (en) Arithmetic logic unit with conditional register source selection
US5640578A (en) Arithmetic logic unit having plural independent sections and register storing resultant indicator bit from every section
JP3244506B2 (ja) 小型乗算器
US5634065A (en) Three input arithmetic logic unit with controllable shifter and mask generator
US5465224A (en) Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs
US5694348A (en) Method apparatus and system for correlation
US5420809A (en) Method of operating a data processing apparatus to compute correlation
US5493524A (en) Three input arithmetic logic unit employing carry propagate logic
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) 使用跳跃阵列和变形华莱士树的并行乘法器
US5442581A (en) Iterative division apparatus, system and method forming plural quotient bits per iteration
US5512896A (en) Huffman encoding method, circuit and system employing most significant bit change for size detection
Leiserson et al. Using de Bruijn sequences to index a 1 in a computer word

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