用于单指令多数据管理的方法和计算机程序的制作方法

文档序号:6353268阅读:97来源:国知局
专利名称:用于单指令多数据管理的方法和计算机程序的制作方法
技术领域
本发明涉及用于单指令多数据(SIMD)管理的方法和计算机程序。具体地说,本发明管理与单独的数据项相关的运算标志,使具有SIMD能力的处理器能够逻辑地组合这些运算标志,从而能够在同一时间以简单和有效的方式同时地处理多数据项。
背景技术
在计算机的迅速发展中,在处理器速度、吞吐量、通信及容错的领域取得了很多进步。初期的计算机系统是独立的装置,其中处理器、存储器和外设全部通过单总线通信。后来,为提高性能,使用一条或多条总路线将几个处理器互连到存储器和外设。而且,通过诸如共享存储器、串行及并行端口、局域网(LAN)和广域网(WAN)的不同通信结构将分离的计算机系统联接到一起。进一步,为提高处理器指令的处理,开发了流水线,使处理器能够按级来执行指令,而且一个处理器能够同时地执行不同执行级中的不同指令。
为提高处理器的性能,进一步的发展产生了被称为单指令多数据(SIMD)技术的使用。SIMD是一种在其中由处理器能够同时地访问和运算地控制几块不同数据的技术。这种能够同时控制几个数据段的能力大幅度地提高了处理器性能。但是,即使进行相同的运算操作,每个数据段的结果和状态也有可能不同。例如,数据可以为负、零、具有进位或形成溢出条件。因为SIMD处理器可以同时地控制8块或更多数据,因此要求处理器至少保持8组这些条件标志。而且,为获得SIMD处理的优点,必需逻辑地组合这些条件或运算标志,以在适当的条件下出现适当的操作。因为必需在很多可能结果的不同结合下,控制8块或更多数据,因此必须将逻辑设置于处理器内,微处理器的设计会非常复杂。而且,必须将微处理器内有价值的空间专用于该处理,从而严重地影响了处理器的速度、大小、所需功率、及产生的热量。
因此,需要一种以简单方式来组合运算或条件标志的方法和计算机程序,从而能够在适当的条件下进行适当的操作。而且,该方法和计算机程序应能允许立即以简单的方式测试所有运算功能和条件标志。另外,在必要时,该方法和计算机程序能够简单地提取单独数据项的单独运算标志。


通过以下对解释性实施例的描述,以及结合附图对权利要求进行的阅读,本发明的上述内容将变得显而易见,且能够更好地被理解,所述上述内容的全部构成了本发明的公开。上述内容、以下内容、及示出的公开内容关注的是本发明的示例实施例,但是,应该清楚地理解以上仅作说明和举例之用,不会限制本发明的内容。本发明的精神和范围仅由所附权利要求所限定。
以下是附图的简要说明,其中图1A是用于本发明示例性实施例的一个具体例子,其示出了存储于处理器状态寄存器(PSR)中8个数据项的SIMD字中的运算标志;图1B是用于本发明示例性实施例的一个具体例子,其示出了存储于PSR中4个数据项的SIMD字中的运算标志;图1C是用于本发明示例性实施例的一个具体例子,其示出了存储于PSR中2个数据项的SIMD字中的运算标志;图1D是用于本发明示例性实施例的一个具体例子,其示出了存储于PSR中1个数据项的SIMD字中的运算标志;图2是根据本发明一个示例性实施例的系统图;图3是根据本发明一般实施例的流程的例子;
图4是用于本发明一个示例性实施例的“与(AND)”功能的流程图;图5是用于本发明一个示例性实施例的“或(OR)”功能的流程图;图6是用于本发明一个示例性实施例的“提取(EXTRACT)”功能的流程图。
具体实施例方式
在开始详细地描述本发明前,先提及以下内容。当适合时,在不同的附图中,使用相同的编号来标注相同、对应或相似组件。而且,在以下详细描述中,虽然本发明不局限于此,但可能提供一些示例性的大小/模式/值/范围。最后需要注意的是,为说明和讨论的简明起见,以及不使本发明变得模糊不清,在附图中未示出计算机网络的已知组件。
图1A-1D是根据本发明一个示例性实施例的SIMD字的代表例子,该SIMD字被用于指示与由具有SIMD能力处理器控制的数据项相关的运算标志。图1A表示具有标号为120、125、130、135、140、145、150和155的8组SIMD标志的SIMD字。每个SIMD组(120、125、130、135、140、145、150和155)有指定为N、Z、C和V的4个变量。N代表具有负值的数据项。Z代表具有零值的数据项。C代表数据项中的进位条件,在具有符号位的字节或字溢出的情况下出现该进位条件。V代表溢出条件,在相关数据项出现时出现该溢出条件。应注意,N、Z、C和V仅是运算标志的例子。对于本领域普通技术人员来说,可为运算功能产生的结果创建很多这样的标志或条件。因此,图1A-1D中示出的标志仅作为举例,不应认为本发明局限于仅使用这些标志或条件。
参照图1A,所示8组运算标志(120、125、130、135、140、145、150和155)中,每组标志与一个单独的数据项相关。因此,包括了N、Z、C和V的第一组标志与第一数据项120相关,第二组125,第三组130,第四组135,至第八组155与图2进一步所示的和以上讨论的第一、第二、第三、第四至第八数据项相关。应注意,本特定SIMD字包括32位。但是,本发明不应局限于使用32位SIMD字。有可能使用64位SIMD字,其中本发明的实施例可以使用该64位SIMD字来操作。
参照图1B,注意,它所示出的SIMD字与图1A所示的SIMD字类似,但是,仅设置了4组运算标志(120、125、130和135)。与图1A相同,使用相同的N、Z、C和V标识,除了每个字节的最低有效位被零值占用。
参照图1C,本图与图1A和图1B类似,不同的是,仅表示了2组运算标志(120和125)。因此,在每个半字中不使用的每个最低有效位被填为零值。
参照图1D,本图与图1A、1B和1C类似,不同的是,仅表示了1组运算标志(120)。因此,在每个字中不使用的每个最低有效位被填为零值。
图2是根据本发明一个示例性实施例的系统图。如图1B所示,在图2中示出了运算标志120、125、130和135。但是,运算标志120、125、130和135中的每个都分别与数据项100、105、110和115相关。如上所讨论的,为了使诸如处理器165的具有SIMD能力处理器能够有效地控制多块数据(100至115),有必要逻辑地组合运算标志100、125、130、135所示的数学操作结果。使用以下参照图3至图6进行的说明和进一步讨论的方法和操作,通过组合功能模块160完成该功能。由组合功能模块160进行的组合功能结果是组合的运算标志变量170。然后,利用条件检查模块175确定根据组合运算标志变量170进行的下一操作。以下将更为详细地讨论。
再参照图2,如上所讨论的,流水线是计算机体系结构的通用形式。在处理器165中,至少示出了3级流水线。第一级流水线是取操作180,在该操作从存储器(未图示)检索执行指令。该流水线第二级是解码操作185,在该操作由处理器对该指令解码。最后,本例的最后一级处理器流水线是执行190级,在该操作根据来自条件检查模块175的输入来执行指令。本领域普通技术人员应理解,图2所示的示例性处理器流水线仅是举例。可能有更多级流水线。
在对本发明使用的逻辑进行详细讨论前,应该指出,图3-6所示的流程图包含对应于以下各项的软件、固件、硬件、处理或操作例如,配备在诸如软盘、CD-Rom(光盘只读存储器)、EP-Rom(可擦除可编程只读存储器)、RAM(随机访问存储器)、硬盘等存储媒介上的计算机程序的编码、编码的部分、指令、命令、对象、硬件之类。而且,可以以诸如C++的任何语言来编写计算机程序,但不局限于此。而且,由图2所示的处理器165执行图3至6所示的逻辑。
图3是根据本发明通常实施例的流程的例子。可将图3所示流程图使用的逻辑用于组合、分组或提取图1A至1B所示的运算标志。可由条件检查模块175执行的功能包括,但不仅限于以下条件1.如果任何字段有溢出;2.如果任何字段无溢出;3.如果任何字段为正(或为零);4.如果任何字段为负;5.如果任何字段为零;6.如果任何字段不为零;7.如果任何字段有进位;8.如果任何字段没有进位;9.如果所有字段有溢出10.如果所有字段无溢出;
11.如果所有字段为正(或为零);12.如果所有字段为负;13.如果所有字段为零;14.如果所有字段不为零;15.如果所有字段有进位;16.如果所有字段没有进位;本领域普通技术人员应该理解,可以增加上述功能,以包括任何数学功能,包括小于、大于、小于等于、大于等于。而且,可将数学操作符和功能与本发明相结合。
再参照图3,在操作200处理开始,并立即进行操作210。在操作210中,根据提取或组合功能来确定字段大小。字段大小可以是,但不仅限于半字节、字节、半字、字或双字。提取和/或组合功能可包括上述讨论的16项中的任何一项、或描述数学操作状态或结果的任何其他功能,该数学操作是由计算机或处理器进行的。然后,处理进行到操作220,其中它确定是否进行提取过程。如果进行提取过程,则处理进行到操作230。在操作230中,根据在操作210中确定的字段大小,来提取图1A-1D所示的标志和所需特定的数据项。然后,处理进行到操作270,其中在目标寄存器中存储提取的信息。一旦存储后,处理进行到操作280,其中处理终止。以下将详细讨论图6所示示例性实施例中的提取过程。
如果在操作220确定了提取过程不是所需的,则处理进行到操作240。在操作240中确定由条件检查模块175执行的组合过程对于图1A-1D所示运算标志来说是否需要。如果组合过程不是所需的,则处理进行到操作280,其中处理再次终止。但是,如果由条件检查模块175执行的组合过程对于与图1A-1D所示几个数据项相关的标志来说是所需的,则处理进行到操作250。在操作250中,根据在操作210确定的字段大小,来提取SIMD PSR寄存器中每个数据项的标志。然后,处理进行到操作260,其中根据所需功能,来组合提取的每个数据项标志。图4和图5分别进一步详细地讨论了“与”操作和“或”操作组合功能的特定例子。然后,处理进行到操作270,其中通过处理器访问,在目标寄存器中存储组合标志的结果。然后,处理进行到操作280。
图4是用于本发明一个示例性实施例的“与”功能的流程图,并可由条件检查模块175执行。处理“与”操作开始于操作300,并立即进行到操作310。在操作310中,确定数据字段大小是否为4位(一个半字节)长度。如果数据段大小是4位长度,则处理进行到操作320。在操作320,将目标寄存器的31至28位设置为等于SIMD PSR寄存器的第31位至28位“与”27位至24位、“与”23位至20位、“与”19位至16位、“与”15位至12位、“与”11位至8位、“与”7位至4位、“与”3位至0位。然后,处理过程进行到操作320,其中将目标寄存器的其余第27位到0位设置为0。然后,处理过程进行到操作395,其中处理终止。
再参照图4,如果在操作310确定4位数据字段没有指定,则处理过程进行到操作340。在操作340,确定8位(字节)数据字段是否指定。如果图1B所示的SIMD数据字中指定了8位数据字段,则处理过程进行到操作350。在操作350,将目标寄存器的31至24位设置为等于SIMD PSR寄存器的31位至24位“与”23位至16位、“与”15位至8位、“与”7位至0位。然后,处理进行到操作360,其中将目标寄存器的第23位至0位设置为0。然后,处理终止于操作395。
再参照图4,如果在操作340确定8位数据字段没有指定,则处理进行到操作370。在操作370,确定16位(半字)数据字段是否指定。如果指定了如图1C所示的16位数据字段,则处理进行到操作380。在操作380,将目标寄存器的31至16位设置为等于SIMD PSR寄存器的31位至16位“与”15位至0位。然后,处理进行到操作390,其中将目标寄存器的15位至0位设置为0。然后,在操作395,处理终止。
图5是用于本发明一个示例性实施例的“或”功能的流程图,并可由条件检查模块175执行。处理“或”操作开始于操作400,并立即进行到操作410。在操作410中,确定数据字段大小是否为4位(一个半字节)长度。如果数据段大小是4位长度,则处理进行到操作420。在操作420,将目标寄存器的31至28位设置为等于SIMD PSR寄存器的31位至28位“或(ORD)”27位至24位、“或”23位至20位、“或”19位至16位、“或”15位至12位、“或”11位至8位、“或”7位至4位、“或”3位至0位。然后,处理过程进行到操作420,其中将目标寄存器的其余第27位到0位设置为0。然后,处理过程进行到操作495,其中处理终止。
再参照图5,如果在操作410确定4位数据字段不是指定的,则处理过程进行到操作440。在操作440,确定是否指定了8位(字节)数据字段。如果指定了图1B所示SIMD数据字的8位数据字段,则处理过程进行到操作450。在操作450,将目标寄存器的31至24位设置为等于SIMD PSR寄存器的31位至24位“或”23位至16位、“或”15位至8位、“或”7位至0位。然后,处理进行到操作460,其中将目标寄存器第23位至0位设置为0。然后,处理终止于操作495。
再参照图5,如果在操作440确定没有指定8位数据字段,则处理进行到操作470。在操作470,确定是否指定了16位(半字)数据字段。如果如图1C所示的16位数据字段是指定的,则处理进行到操作480。在操作480,将目标寄存器的31至16位设置为等于SIMD PSR寄存器的31位至16位“或”15位至0位。然后,处理进行到操作490,其中将目标寄存器的15位至0位设置为0。然后,在操作495,处理终止。
图6是用于本发明一个示例性实施例的“提取(EXTRACT)”功能的流程图,并可由条件检查模块175执行。提取功能的执行开始于操作500,并立即进行到操作510。在操作510中,确定图1A所示SIMD字的数据字段大小是否为4位(一个半字节)长度。如果在操作510,确定数据段是4位长度,则处理进行到操作520。在操作520,将目标寄存器的31至28位设置为等于SIMD PSRP寄存器的半字节2至0。然后,处理过程进行到操作570,其中处理终止。
但是,如果在操作510确定数据字段不等于4位长度,则处理过程进行到操作530。在操作530,确定数据字段是否为8位(一个字节)长度。如果SIMD字中的数据字段是如图1B所示的8位长度,则处理过程进行到操作540。在操作540,将目标寄存器的31至24位设置为等于SIMD PSR寄存器的字节1至0。再一次,处理进行到操作570,其中操作终止。
再参照图6,如果在操作530确定SIMD字中数据字段不是一个字节长度,则处理进行到操作550。在操作550,确定SIMD字中数据字段是否为16位(半字)。如果SIMD字中数据字段为16位长度,则处理进行到操作560。在操作560,将目标寄存器的31至16位设置为等于SIMD PSR寄存器的半字0。然后,处理进行到操作570,其中处理终止。而且,如果在操作550中确定SIMD字中数据段长度不是16位,则处理进行到操作570,其中处理终止。
本发明得到的有益效果是,提供了简单、可靠、快速的方法和计算机程序,其允许具有SIMD能力处理器提取和/或组合运算标志,该运算标志与作为数学操作对象的多数据项相关。所述方法和计算机程序的特征为,不需要复杂的逻辑,从而节省了空间、功率需求和由处理器产生的热量。而且,由于所需逻辑简单,因此所述方法和计算机程序允许具有SIMD能力处理器以最大效率运行。
如我们所知,以上描述和图示仅作为举例,本领域普通技术人员应该理解,本发明的示例性实施例可进行若干变化与修改。因此,我们不希望局限于本文所图示的和所描述的,所附权利要求的范围内包括了上述所有变化与修改。
权利要求
1.一种用于组合多个运算标志的设备,其包括组合功能模块,其检验多个运算标志,确定多个运算标志的字段大小,并根据确定的字段大小,将多个运算标志组合为单一的组合运算标志变量,其中所述多个运算标志代表由处理器进行数学操作后的多个数据项上的多个数据项状态。
2.如权利要求1所述的设备,其进一步包括条件检查模块,其确定所述组合运算标志变量的状态,并使所述处理器根据所述状态执行适当的操作。
3.如权利要求1所述的设备,其中所述字段大小是基于半字节、字节、半字或字长度的其中之一。
4.如权利要求3所述的设备,其中所述多个运算标志进一步包括在所述多数据项中一个数据项的负数据值、零数据值、数据值的进位取值、或溢出条件。
5.如权利要求4所述的设备,其中所述组合功能模块执行“与”或“或”操作。
6.如权利要求2所述的设备,其中由所述条件确定的所述状态进一步包括任何字段有溢出;任何字段无溢出;任何字段为正或为零;任何字段为负;任何字段为零;任何字段不为零;任何字段有进位;任何字段没有进位;所有字段有溢出所有字段无溢出;所有字段为正或为零;所有字段为负;所有字段为零;所有字段不为零;所有字段有进位;所有字段没有进位。
7.一种组合多个运算标志向处理器提交的方法,其包括确定作为组合过程基础的多个运算标志的字段大小,其中所述多个运算标志代表由处理器进行数学操作后的多个数据项上的多个数据项状态;根据所述字段大小,来提取所述多个运算标志;当选择了组合过程时,根据所选择的功能,来组合所述多个运算标志;以及在目标寄存器中存储多个运算标志的组合结果,供处理器进行访问。
8.如权利要求7所述的方法,其中所述字段大小是基于半字节、字节、半字、字长度的其中之一。
9.如权利要求8所述的方法,其中所述多个运算标志进一步包括在所述多数据项中一个数据项的负数据值、零数据值、数据值的进位取值、或溢出条件。
10.如权利要求9所述的方法,其中所述功能进一步包括“与”或“或”操作。
11.如权利要求10所述的方法,其中所述功能可用于确定所述多个数据项的状态,所述状态包括任何字段有溢出;任何字段无溢出;任何字段为正或为零;任何字段为负;任何字段为零;任何字段不为零;任何字段有进位;任何字段没有进位;所有字段有溢出所有字段无溢出;所有字段为正或为零;所有字段为负;所有字段为零;所有字段不为零;所有字段有进位;所有字段没有进位。
12.一种包括数据存储媒介的装置,其中该存储媒介用于存储当处理器执行时产生的指令,所述装置包括确定作为组合过程基础的多个运算标志的字段大小,其中所述多个运算标志代表由处理器进行数学操作后的多个数据项上的多个数据项状态;根据所述字段大小,来提取所述多个运算标志;当选择了组合过程时,根据所选择的功能,来组合所述多个运算标志;以及在目标寄存器中存储多个运算标志的组合结果,供处理器进行访问。
13.如权利要求12所述的装置,其中所述字段大小是基于半字节、字节、半字、字长度的其中之一。
14.如权利要求13所述的装置,其中所述多个运算标志进一步包括在所述多数据项中一个数据项的负数据值、零数据值、数据值的进位取值、或溢出条件。
15.如权利要求14所述的装置,其中所述功能进一步包括“与”或“或”操作。
16.如权利要求15所述的装置,其中所述功能可用于确定所述多个数据项的状态,所述状态包括任何字段有溢出;任何字段无溢出;任何字段为正或为零;任何字段为负;任何字段为零;任何字段不为零;任何字段有进位;任何字段没有进位;所有字段有溢出所有字段无溢出;所有字段为正或为零;所有字段为负;所有字段为零;所有字段不为零;所有字段有进位;所有字段没有进位。
17.一种提取多个运算标志向处理器提交的方法,其包括确定作为组合过程基础的多个运算标志的字段大小,其中所述多个运算标志代表由处理器进行数学操作后的多个数据项上的多个数据项状态;根据所述字段大小,来提取所述多个运算标志;以及在目标寄存器中存储多个运算标志的提取结果,供处理器进行访问。
18.如权利要求17所述的方法,其中所述字段大小是基于半字节、字节、半字、字长度的其中之一。
19.如权利要求17所述的方法,其中所述多个运算标志进一步包括在所述多数据项中一个数据项的负数据值、零数据值、数据值的进位取值、或溢出条件。
20.一种提取向处理器显示的多个运算标志的方法,其包括确定作为组合过程基础的多个运算标志的字段大小,其中所述多个运算标志代表由处理器进行数学操作后的多个数据项上的多个数据项状态;根据所述字段大小,来提取所述多个运算标志;以及在目标寄存器中存储多个运算标志的提取结果,用于由处理器进行访问。
21.根据权利要求20所述方法,其中所述字段大小是基于半字节、字节或半字长度的其中之一。
22.根据权利要求21所述方法,其中所述多个运算标志进一步包括在所述多数据项中一个数据项的负数据值、零数据值、出现数据值输出、或溢出条件。
全文摘要
在能够处理单指令多数据(SIMD)的处理器处理多数据项中使用的一种用于提取组合运算标志的方法和计算机程序。在SIMD处理器中,可通过相同的指令在任何特定的时间控制几块数据。但是,执行所述指令的结果根据被控制的数据项而改变。所述方法和计算机程序允许一种简单的结构,其能够提取和组合这些运算标志,从而使处理器效率最高,并节省了空间,降低了存储的功率需求和产生的热量。
文档编号G06F9/302GK1816798SQ02803348
公开日2006年8月9日 申请日期2001年11月21日 优先权日2000年12月27日
发明者奈杰尔·C·帕韦里 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1