用于执行逻辑比较操作的方法和装置的制作方法

文档序号:6424328阅读:99来源:国知局
专利名称:用于执行逻辑比较操作的方法和装置的制作方法
技术领域
本公开内容总体上涉及处理器领域。特别地,本公开内容涉及使用单个控制信号对多位数据上执行多个逻辑比较操作。
背景技术
在典型的计算机系统中,处理器被实现为使用产生一个结果的指令对由许多位 (例如,64个)表示的值进行操作。例如,执行加法指令将会把第一个64位的值和第二个 64位的值加在一起,并将结果存储为第三个64位的值。多媒体应用程序(例如,以计算机支持协作(CSC-具有混合的媒体数据处理的电信会议集合)、2D/3D图形、图像处理、视频压缩/解压缩、识别算法和音频处理为目标的应用程序)要求处理大量数据。所述数据可以用单个大值(例如,64位或1 位)表示,或者作为代替,可以用少量的位(例如,8或16 或32位)表示。例如,图形数据可以由8或16位表示,声音数据可以由8或16位表示,整数数据可以由8、16或32位表示,而浮点数据可以由32或64位表示。为了提高多媒体应用程序(以及其它具有相同特征的应用程序)的效率,处理器可以提供打包数据(packed data)格式。典型地,打包数据格式是这样的格式其中,将通常用来表示单个值的多个位划分成多个固定大小的数据元素,每个数据元素表示一个单独的值。例如,1 位寄存器可以分成四个32位元素,每个元素表示单独的32位值。用这种方式,这些处理器可以更有效地处理多媒体应用程序。


本发明借助于示例进行说明,但并不局限于附图中的示图。图Ia-Ic说明根据本发明可选择实施例的示例计算机系统。图2a_2b说明根据本发明可选择实施例的处理器的寄存器堆。图3说明由用于处理数据的处理器所执行的处理的至少一个实施例的流程图。图4说明根据本发明可选择实施例的打包数据类型。图5说明根据本发明至少一个实施例的寄存器内打包字节和寄存器内打包字的数据表示。图6说明根据本发明至少一个实施例的寄存器内打包双字和寄存器内打包四字的数据表示。图7a_7d是说明用于执行逻辑-比较(logical-compare)、设置-零-和-进位-标志(set-zero-and-carry-flag)操作的处理的各种实施例的流程图。图8a-8c说明用于执行逻辑_比较、设置_零-禾Π _进位-标志操作的电路的可选择实施例。
图9是说明处理器指令的操作码格式的各种实施例的框图。细节描述这里所公开的是包括在响应于单个控制信号而对多位数据执行逻辑比较操作的处理器指令中的方法、系统和电路的多个实施例。该逻辑比较操作中所涉及的数据可以是打包或非打包数据。对于至少一个实施例而言,处理器耦合到存储器。该存储器中已经存储了第一数据和第二数据。处理器响应于所接收的指令,对在第一数据和第二数据中的数据元素执行逻辑比较操作。逻辑比较操作可以包括第一和第二数据的数据元素的位AND,并且还可以包括第一数据的数据元素的反码和第二数据的数据元素的位AND。根据该逻辑比较操作的结果,修改处理器的至少两个状态标志。这两个状态标志可以包括零标志(zero flag)和进位标志(carry flag)。这些标志可以在体系上对应用程序可见,并且可以是更大标志值的一部分,比如体系上可见的扩展标志(EFLAGQ寄存器。本发明的这些和其它实施例可以根据下面的教导实现,并且显而易见的是,可以用下面的教导进行各种修改和改变而不背离本发明宽泛的精神和范围。相应地,说明书和附图被看成是说明性的而不具有限制性意义,并且本发明仅根据权利要求来确定。为了提供用于理解本发明实施例的描述的基础,提供以下定义。位X到位Y 定义二进制数的子字段。例如,字节001110102 (以二进制示出)的位6到位0代表子字段1110102。在二进制数后的‘2’表示二进制。因此,IOOO2等于Sltl,而Fni等于151(1。是寄存器。寄存器是任何能够存储和提供数据的设备。寄存器的进一步的功能在下面描述。寄存器不是必需与处理器包括在相同的芯片中或相同的封装中。SRC 禾口 DEST 用于标识存储区域(例如,存储器地址、寄存器等)源l_i和结果l_i以及 Destin 表示数据。总概本申请描述了包括在用于打包或非打包数据的逻辑比较操作的处理器指令中的方法、装置和系统的实施例。更具体而言,所述指令可以用于对数据进行逻辑比较,并且随后根据该比较设置零标志和进位标志。对于至少一个实施例,使用下面表Ia和表Ib中所示的单个指令执行两个逻辑比较操作。所述比较操作包括目标操作数和源操作数的逐位逻辑AND以及目标操作数的反码与源操作数的逐位逻辑AND。表Ia示出所公开的逻辑比较操作的一个实施例的简化表示,而表Ib示出所公开的逻辑比较指令的实施例的在位级别上的示例,给出了一些样本值。对于在表Ia和Ib中所示出的实施例,虽然源操作数和目标操作数中的数据可以是打包数据,但是其可以是任何数据表示,而并非必须是打包数据。在源和/或目标操作数的数据是128-位的单个实体且由此并不将其认为是“打包”数据的情况下,在这里将其称为“非打包(unpacked) ”数据,其简单地表示该数据不需要被再分割成组分(component)表示,并且可以被认为是单个数据值。虽然为了简化说明,表Ia中的数据被表示为32-位的值,但本领域技术人员将认识到,在表Ia和Ib中所说明的概念可以应用于任何长度的数据,包括更小的数据长度(例如,4-位、8-位和16-位的长度)以及更大的数据长度(例如,64-位和128-位的长度)。表 Ia逻辑比较Dest,Source
权利要求
1.一种处理器(109,310),包括解码器(165),用于对SIMD协处理器(226)第一比较指令和第二比较指令进行解码,所述第一比较指令和所述第二比较指令均具有用于指定各自的第一源操作数(831)的第一字段和用于指定各自的第二源操作数(833)的第二字段;多个寄存器,包括整数寄存器(201)和浮点计算器O09);执行单元(130),其与所述多个寄存器相耦合,所述执行单元用于响应于所述第一比较指令被解码为打包相等比较(PCMPEQ)指令,对所述第一比较指令的第一源操作数和第二源操作数的打包数据组分的相应对进行第一多个比较,以生成包括相应的掩码数据组分的第一打包结果,以及响应于所述解码器对所述第二比较指令进行解码,对所述第二比较指令的第一源操作数和第二源操作数的打包数据组分的相应对进行第二多个比较,并且基于所述第二多个比较来执行分支支持;状态寄存器O08),用于存储多个状态位,所述多个状态位包括一个或多个架构上可见的状态标志值,作为所述执行单元响应于所述第二比较指令而执行的比较的结果。
2.根据权利要求1所述的处理器,其中,所述第二多个比较是针对所述第二比较指令的第一源操作数和第二源操作数的打包单精度浮点数据组分的相应对来进行的。
3.根据权利要求2所述的处理器,其中,执行所述分支支持包括基于所述比较中的至少一个,修改状态标志的值。
4.根据权利要求2所述的处理器,其中,执行所述分支支持包括基于所述比较中的至少一个,分支到一代码位置。
5.根据权利要求4所述的处理器,其中,不设置任何状态标志作为所执行的比较的结^ ο
6.根据权利要求4所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括陷阱位。
7.根据权利要求4所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括使能位。
8.根据权利要求4所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括溢出位。
9.根据权利要求2所述的处理器,其中,执行所述分支支持包括基于所述比较中的一个,修改所述状态寄存器的第一状态位,以及基于所述比较中的另一个,修改所述状态寄存器的第二状态位。
10.根据权利要求9所述的处理器,其中,执行所述分支支持包括基于所述第一状态位的值,执行第一分支操作,以及基于所述第二状态位的值,执行第二分支操作。
11.根据权利要求1所述的处理器,其中,所述第一多个比较是针对所述第一比较指令的第一源操作数和第二源操作数的打包32位数据组分的相应对来进行的。
12.根据权利要求11所述的处理器,其中,包括相应的掩码数据组分的所述第一打包结果被存储为所述第二比较指令的第一源操作数或第二源操作数中的一个。
13.根据权利要求12所述的处理器,其中,所述第二多个比较是针对所述第二比较指令的第一源操作数和第二源操作数的打包单精度浮点数据组分的相应对来进行的。
14.一种处理器(109,310),包括解码器(165),用于对SIMD协处理器(226)第一、第二和第三比较指令进行解码,所述第一比较指令、所述第二比较指令和所述第三比较指令中的每一个具有用于指定各自的第一源操作数(831)的第一字段和用于指定各自的第二源操作数(833)的第二字段;多个寄存器,包括整数寄存器(201)和浮点计算器O09);执行单元(130),其与所述多个寄存器相耦合,所述执行单元包括比较电路(145),用于响应于所述第一比较指令被解码为打包相等比较(PCMPEQ)指令,对所述第一比较指令的第一源操作数和第二源操作数的打包数据组分的相应对进行第一多个比较,以生成包括相应的掩码数据组分的第一打包结果,以及响应于对所述第二比较指令和所述第三比较指令进行解码,对所述第二比较指令和所述第三比较指令的第一源操作数和各自的第二源操作数的打包数据组分的相应对分别进行第二多个比较和第三多个比较;所述执行单元还包括分支电路(145),该分支电路用于基于所述比较电路响应于所述第二比较指令而执行的比较来进行控制跳转;状态寄存器O08),用于存储多个状态位,所述多个状态位包括一个或多个架构上可见的状态标志值,作为所述比较电路响应于所述第三比较指令而执行的比较的结果。
15.根据权利要求14所述的处理器,其中,响应于对所述第二比较指令和所述第三比较指令进行解码而执行的所述第二多个比较和所述第三多个比较分别是针对第一源操作数的打包单精度浮点数据组分和各自的第二源操作数的打包单精度浮点数据组分的相应对来进行的。
16.根据权利要求14所述的处理器,其中,存储在所述状态寄存器中的一架构上可见的状态标志的值是基于响应于所述第三比较指令而执行的比较中的至少一个来设置的。
17.根据权利要求16所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括架构上可见的溢出状态标志。
18.根据权利要求14所述的处理器,其中,不设置任何状态标志作为响应于所述第二比较指令而执行的比较的结果。
19.根据权利要求18所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括陷阱位。
20.根据权利要求18所述的处理器,其中,所述状态寄存器要存储的所述多个状态位包括使能位。
21.根据权利要求14所述的处理器,其中,响应于所述第三比较指令,基于所述第三多个比较中的第一个来修改所述状态寄存器的第一状态位,并且基于所述第三多个比较中的第二个来修改所述状态寄存器的第二状态位。
22.根据权利要求14所述的处理器,其中,所述第一多个比较是针对所述第一比较指令的第一源操作数和第二源操作数的打包32位数据组分的相应对来进行的。
23.根据权利要求22所述的处理器,其中,包括相应的掩码数据组分的所述第一打包结果被存储为所述第三比较指令的第一源操作数或第二源操作数中的一个。
24.根据权利要求23所述的处理器,其中,所述第三多个比较是针对所述第三比较指令的第一源操作数和第二源操作数的打包单精度浮点数据组分的相应对来进行的。
全文摘要
一种用于包含在对打包或非打包数据执行逻辑比较和分支支持操作的处理器指令中的方法和装置。在一个实施例中,处理器耦合到存储器。存储器中已经存储了第一数据和第二数据。该处理器对该第一和第二数据执行逻辑比较。该逻辑比较可以对该第一和第二数据的每个位执行,或者可以只对某些位执行。对于至少一个实施例,至少第一数据包括打包数据元素,并且该逻辑比较对该打包数据元素的最高有效位执行。该逻辑比较可以包括对第一和第二数据的相同的各个位的比较,并且还包括对第一数据的位与第二数据的相应位的反码的逻辑比较。基于这些比较,可以进行分支支持动作。这样的分支支持动作可以包括设置一个或多个标志,其进而可以被所述分支单元使用。可选择地,分支支持动作可以包括分支到所指示的目标代码位置。
文档编号G06F9/30GK102207849SQ20111012783
公开日2011年10月5日 申请日期2007年9月21日 优先权日2006年9月21日
发明者K·戈特利布, M·巴克斯顿, R·卡普尔, R·祖海尔, Z·斯佩贝尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1