多数据元素与多数据元素比较处理器、方法、系统和指令.pdf

上传人:00062****4422 文档编号:467827 上传时间:2018-02-18 格式:PDF 页数:62 大小:4.95MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410095614.2

申请日:

2014.03.14

公开号:

CN104049954A

公开日:

2014.09.17

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/38申请日:20140314|||公开

IPC分类号:

G06F9/38

主分类号:

G06F9/38

申请人:

英特尔公司

发明人:

S·J·阔

地址:

美国加利福尼亚州

优先权:

2013.03.14 US 13/828,274

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

张东梅

PDF下载: PDF下载
内容摘要

本发明公开了一种多数据元素与多数据元素比较处理器、方法、系统和指令。装置包括打包数据寄存器和执行单元。指令指示包括第一打包数据元素的第一源打包数据、包括第二打包数据元素的第二源打包数据、以及目的地存储位置。响应于该指令,执行单元将包括打包结果数据元素的打包数据结果存储在目的地存储位置中。每一结果数据元素对应于第二源打包数据的数据元素中的不同的一个数据元素。每一结果数据元素包括多位比较掩码,该多位比较掩码包括不同的比较掩码位,用于与第二源打包数据的对应数据元素相比较的第一源打包数据的每一不同的对应数据元素。

权利要求书

1.  一种处理指令的装置,包括:
多个打包数据寄存器;以及
与所述打包数据寄存器耦合的执行单元,响应于指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置的多元素与多元素的比较指令,所述执行单元可操作用于将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一结果数据元素对应于所述第二源打包数据的所述数据元素中的不同的一个数据元素,每一结果数据元素包括多位比较掩码,所述多位比较掩码包括不同的比较掩码位,用于与对应于所述结果数据元素的所述第二源打包数据的数据元素相比较的所述第一源打包数据的每一不同的对应数据元素,每一比较掩码指示对应比较的结果。

2.
  如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元存储所述打包数据结果,所述打包数据结果指示所述第一源打包数据的所有数据元素与所述第二源打包数据的所有数据元素的比较结果。

3.
  如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元将多位比较掩码存储在给定打包结果数据元素中,用于指示所述第一源打包数据的打包数据元素中的哪些等于与所述给定打包结果数据元素相对应的所述第二源的打包数据元素。

4.
  如权利要求1所述的装置,其特征在于,所述第一源打包数据具有N个打包数据元素且所述第二源打包数据具有N个打包数据元素,并且其中响应于所述指令,所述执行单元存储包括N个N位打包结果数据元素的所述打包数据结果。

5.
  如权利要求4所述的装置,其特征在于,所述第一源打包数据具有八个8位打包数据元素且所述第二源打包数据具有八个8位打包数据元素,并且其中响应于所述指令,所述执行单元存储包括八个8位打包结果数据元素的所述打包数据结果。

6.
  如权利要求4所述的装置,其特征在于,所述第一源打包数据具有十六个8位打包数据元素且所述第二源打包数据具有十六个8位打包数据元素,并且 其中响应于所述指令,所述执行单元存储包括十六个16位打包结果数据元素的所述打包数据结果。

7.
  如权利要求4所述的装置,其特征在于,所述第一源打包数据具有三十二个8位打包数据元素且所述第二源打包数据具有三十二个8位打包数据元素,并且其中响应于所述指令,所述执行单元存储包括三十二个32位打包结果数据元素的所述打包数据结果。

8.
  如权利要求1所述的装置,其特征在于,所述第一源打包数据具有N个打包数据元素且所述第二源打包数据具有N个打包数据元素,其中所述指令指示偏移量,其中响应于所述指令,所述执行单元存储包括N/2个N位打包结果数据元素的所述打包数据结果,并且其中N/2个N位打包结果数据元素中的最底有效的一个N位打包结果数据元素对应于由所述偏移量指示的所述第二源的打包数据元素。

9.
  如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元存储包括多位比较掩码的打包结果数据元素,其中每一掩码位具有二进制值1和二进制值0中的一个,
所述二进制值1指示所述第一源打包数据的对应打包数据元素等于与所述打包结果数据元素相对应的所述第二源的打包数据元素;并且
所述二进制值0指示所述第一源打包数据的对应打包数据元素不等于与所述打包结果数据元素相对应的所述第二源的所述打包数据元素。

10.
  如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元存储多位比较掩码,所述多位比较掩码指示所述第一和第二源打包数据中的一个的仅数据元素子集与所述第一和第二源打包数据中的另一个的数据元素的比较结果。

11.
  如权利要求1所述的装置,其特征在于,所述指令指示进行比较的所述第一和第二源打包数据中的一个的数据元素子集。

12.
  如权利要求1所述的装置,其特征在于,所述指令隐含地指示目的地存储位置。

13.
  一种处理指令的方法,包括:
接收多元素与多元素的比较指令,所述多元素与多元素的比较指令指示具有多个第一打包数据元素的第一源打包数据、以及具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置;以及
响应于所述多元素与多元素的比较指令,将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,所述多位比较掩码包括不同的掩码位,用于与对应于所述打包结果数据元素的所述第二源的所述打包数据元素相比较的所述第一源打包数据的每一不同的对应打包数据元素,以指示比较结果。

14.
  如权利要求13所述的方法,其特征在于,存储包括:存储指示所述第一源打包数据的所有数据元素与所述第二源打包数据的所有数据元素比较的结果的打包数据结果。

15.
  如权利要求13所述的方法,其特征在于,接收包括:接收指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素的所述第二源打包数据的指令;并且其中存储包括:存储包括N个N位打包结果数据元素的所述打包数据结果。

16.
  如权利要求15所述的方法,其特征在于,接收包括:接收指示具有十六个8位打包数据元素的所述第一源打包数据以及具有十六个8位打包数据元素的所述第二源打包数据的指令;并且其中存储包括:存储包括十六个16位打包结果数据元素的所述打包数据结果。

17.
  如权利要求13所述的方法,其特征在于,接收包括:接收指示具有N个打包数据元素的所述第一源打包数据、指示具有N个打包数据元素的所述第二源打包数据、且指示偏移量的指令;并且其中存储包括:存储包括N/2个N位打包结 果数据元素的所述打包数据结果,所述N/2个N位打包结果数据元素中的最低有效的一个N位打包结果数据元素对应于由所述偏移量指示的所述第二源的打包数据元素。

18.
  如权利要求13所述的方法,其特征在于,存储包括:存储多位比较掩码,所述多位比较掩码指示所述第一和第二源打包数据中的一个的仅数据元素子集与所述第一和第二源打包数据中的另一个的数据元素的比较结果。

19.
  如权利要求13所述的方法,其特征在于,接收包括:接收指示所述第一源打包数据且指示所述第二源打包数据的指令,所述第一源打包数据表示第一生物序列,所述第二源打包数据表示第二生物序列。

20.
  一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器;以及
与所述互连耦合的动态随机存取存储器(DRAM),所述DRAM存储多元素与多元素的比较指令,所述指令指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置,并且所述指令如果由所述处理器执行则可操作用于使所述处理器执行操作,所述操作包括:
将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,所述多位比较掩码指示所述第一源打包数据的多个打包数据元素与对应于所述打包结果数据元素的所述第二源的所述打包数据元素的比较结果。

21.
  如权利要求20所述的系统,其特征在于,所述指令如果由所述处理器执行则可操作用于使所述处理器存储所述打包数据结果,所述打包数据结果指示所述第一源打包数据的所有打包数据元素与所述第二源打包数据的所有数据元素的比较结果。

22.
  如权利要求20所述的系统,其特征在于,所述指令指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素的所述第二源打包数据,并且其中所述指令如果由所述处理器执行则可操作用于使所述处理器存储包括N个N位打包结果数据元素的所述打包数据结果。

23.
  一种提供指令的制品,包括:
存储指令的非瞬态机器可读存储介质;
所述指令指示具有多个第一打包数据元素的第一源打包数据、具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置,并且所述指令如果由机器执行则可操作用于使所述机器执行操作,所述操作包括:
将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,每一多位比较掩码指示所述第一源打包数据的多个打包数据元素与对应于具有所述多位比较掩码的所述打包结果数据元素的所述第二源的所述打包数据元素的比较结果。

24.
  如权利要求23所述的制品,其特征在于,所述指令指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素的所述第二源打包数据,并且其中所述指令如果由所述机器执行则可操作用于使所述机器存储包括N个N位打包结果数据元素的所述打包数据结果。

25.
  如权利要求23所述的制品,其特征在于,所述非瞬态机器可读存储介质包括非易失性存储器、DRAM、以及CD-ROM中的一个,并且其中所述指令如果由所述机器执行可则操作用于使所述机器存储指示所述第一源打包数据的所有打包数据元素中哪些等于所述第二源打包数据的所有数据元素中的哪些的所述打包数据结果。

说明书

多数据元素与多数据元素比较处理器、方法、系统和指令
背景技术
技术领域
本文中所描述的实施例一般涉及处理器。具体而言,本文中所描述的实施例一般涉及响应于指令比较多个数据元素与多个其他数据元素的处理器。
背景信息
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指令、矢量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令以同时或并行地执行多个操作。
多个数据元素可在一个寄存器或存储器位置内被打包为打包数据或矢量数据。在打包数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,256位宽打包数据寄存器可具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。每一数据元素可表示单一独立的一段数据(例如,像素颜色等),该段数据可单独地操作和/或与其他数据独立地操作。
打包数据元素的比较是常用且普遍的操作,该操作以许多不同的方式使用。用于执行打包数据元素、矢量数据元素或SIMD数据元素的比较的各种矢量、打包数据或者SIMD指令在本领域中是已知的。例如,在因特尔架构(IA)方面的MMXTM技术包括各种打包比较指令。最近,IntelStreaming SIMD Extensions4.2(SSE4.2)引入了若干字符串和文本处理指令。
附图说明
可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中:
图1是具有指令集的处理器的一个实施例的方框图,该指令集包括一个或多个多数据元素与多数据元素的比较指令。
图2是具有执行单元的指令处理装置的一个实施例的方框图,该执行单元可操作用于执行多数据元素与多数据元素的比较指令的一个实施例。
图3是一种处理多数据元素与多数据元素的比较指令的一个实施例的方法的一个实施例的方框流程图。
图4是示出具有合适打包数据格式的示例实施例的方框图。
图5是示出可响应于指令的一个实施例而执行的操作的一个实施例的方框图。
图6是示出可响应于指令的一个实施例对具有16位宽字元素的128位宽打包源执行的操作的示例实施例的方框图。
图7是示出可响应于指令的一个实施例对具有8位字节元素的128位宽打包源执行的操作的示例实施例的方框图。
图8是示出可响应于可操作用于选择比较掩码子集以在打包数据结果中报告的指令的一个实施例而执行的操作的示例实施例的方框图。
图9是适于实施例的微架构细节的方框图。
图10是一组合适的打包数据寄存器的示例实施例的方框图。
图11A示出示例性AVX指令格式,包括VEX前缀、实操作码字段、MoDR/M字节、SIB字节、位移字段以及IMM8。
图11B示出来自图11A的哪些字段构成完整操作码字段和基础操作字段。
图11C示出来自图11A的哪些字段构成寄存器索引字段。
图12A是示出根据本发明的实施例的通用矢量友好指令格式及其A类指令模板的方框图。
图12B是示出根据本发明的实施例的通用矢量友好指令格式及其B类指令模板的方框图。
图13A是示出根据本发明的实施例的示例性专用矢量友好指令格式的方框图。
图13B是示出根据本发明的实施例的构成完整操作码字段的具有专用矢量友好指令格式的字段的方框图。
图13C是示出根据本发明的实施例的构成寄存器索引字段的具有专用矢量友好指令格式的字段的方框图。
图13D是示出根据本发明的实施例的构成扩充(augmentation)操作字段的具有专用矢量友好指令格式的字段的方框图。
图14是根据本发明的一个实施例的寄存器架构的方框图。
图15A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的方框图。
图15B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的方框图。
图16A是根据本发明的实施例的连接到管芯上(on-die)互联网络且具有第二级(L2)高速缓存的本地子集的单一处理器核的方框图。
图16B是根据本发明的实施例的图16A中的处理器核的一部分的展开图。
图17是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器的方框图。
图18示出根据本发明的实施例的系统的方框图。
图19示出根据本发明的实施例的第一更具体的示例性系统的方框图。
图20示出根据本发明的实施例的第二更具体的示例性系统的方框图。
图21示出根据本发明的实施例的片上系统(SoC)的方框图。
图22是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的方框图。
实施例的详细描述
在以下描述中,阐述了大量具体细节(例如,专用指令操作、打包数据格式、掩码类型、指示操作数的方式、处理器配置、微架构细节、操作顺序等)。然而,在没有这些具体细节的情况下,可实践实施例。在其他实例中,在细节方面未示出公知电路、结构和技术,以避免混淆对该描述的理解。
在本文中公开了各种多数据元素与多数据元素的比较指令、执行这些指令的处理器、由处理器在处理或执行这些指令时执行的方法、以及结合一个或多个处理器 以处理或执行这些指令的系统。图1是具有指令集102的处理器100的一个实施例的方框图,该指令集102包括一个或多个多数据元素与多数据元素的比较指令103。在一些实施例中,处理器可以是通用处理器(例如,具有在台式、膝上型等计算机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、上述处理器的各种混合、或者完全其他类型的处理器中的任一个。
处理器具有指令集架构(ISA)101。ISA表示与编程相关的处理器的架构的一部分,并且通常包括处理器的本机指令、架构寄存器、数据类型、寻址模式、存储器架构等。ISA与微架构不同,微架构通常表示选择用于实现ISA的特定处理器设计技术。
ISA包括架构可视的寄存器(例如,架构寄存器文件)107。架构寄存器还可在本文中被简称为寄存器。短语“架构寄存器”、“寄存器文件”以及“寄存器”在本文中用于表示对软件和/或编程器和/或通用宏指令指定来标识操作数的寄存器而言可视的寄存器,除非另外或明显指定。这些寄存器与给定微架构(例如,由指令使用的临时寄存器、重排序缓冲器、退役(retirement)寄存器等)中的其他非架构或非架构可视的寄存器形成对比。寄存器通常表示管芯上的处理器存储位置。所示的寄存器包括可操作用于存储打包数据、矢量数据或者SIMD数据的打包数据寄存器108。架构寄存器还可包括通用寄存器109,在一些实施例中,这些通用寄存器109任选地由多元素与多元素的比较指令指示以提供源操作数(例如,指示数据元素子集以提供指示包括在目的地中的比较结果的偏移量等)。
所示的ISA包括指令集102。与微指令或微操作(例如,由解码宏指令得到的那些)不同,指令集的指令表示宏指令(例如,提供给处理器以供执行的汇编语言或机器级指令)。指令集包括一个或多个多数据元素与多数据元素的比较指令103。在下文中将进一步公开多数据元素与多数据元素的比较指令的各种不同实施例。在一些实施例,指令103可包括一个或多个所有数据元素与所有数据元素的比 较指令104。在一些实施例,指令103可包括一个或多个指定子集与所有子集、或者指定子集与指定子集的比较指令105。在一些实施例,指令103可包括可操作用于选择(例如,指示偏移量以选择)要存储在目的地中的比较的一部分的一个或多个多元素与多元素的比较指令。
处理器还包括执行逻辑110。执行逻辑可操作用于执行或处理指令集的指令(例如,多数据元素与多数据元素的比较指令103)。在一些实施例中,执行逻辑可包括特定逻辑(例如,可能与固件组合的特定电路或硬件)以执行这些指令。
图2是具有执行单元210的指令处理装置200的一个实施例的框图,该执行单元210可操作用于执行多数据元素与多数据元素的比较指令203的一个实施例。在一些实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器,或者可被包括在图1的处理器中。替换地,指令处理装置可被包括在类似或不同的处理器中。此外,图1的处理器可包括类似或不同的指令处理装置。
装置200可接收多数据元素与多数据元素的比较指令203。例如,可从指令提取单元、指令队列等接收该指令。多数据元素与多数据元素的比较指令可表示机器代码指令、汇编语言指令、宏指令、或者该装置的ISA的控制信号。多数据元素与多数据元素的比较指令可明确地指定(例如,通过一个或多个字段或者位集)或者以其他方式指定(例如,隐含地指示)第一源打包数据213(例如,在第一源打包数据寄存器212中),可指定或者以其他方式指定第二源打包数据215(例如,在第二源打包数据寄存器214中),并且可指定或者以其他方式指定(例如,隐含地指示)将存储打包数据结果217的目的地存储位置216。
所示的指令处理装置包括指令解码单元或解码器211。解码器可接收和解码相对较高级的机器代码或汇编语言指令或宏指令,并且输出一个或多个相对较低级的微指令、微操作、微代码入口点、或者反映、表示和/或源自较高级指令的其他相对较低级的指令或控制信号。一个或多个较低级指令或控制信号可通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令。可使用各种不同的机构来实现解码器,这些机构包括但不限于,微代码只读存储器(ROM)、查找表、硬件 实现、可编程逻辑阵列(PLA)、以及用于实现在本领域中已知的解码器的其他机构。
在其他实施例中,可使用指令仿真器、翻译器、变形器(morpher)、解释器、或者其他指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿真、翻译、变形、解释、或者以其他方式将指令转换成一个或多个对应的导出指令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,该装置可具有将接收到的机器代码指令转换成一个或多个中间指令的指令转换逻辑、以及将一个或多个中间指令解码成可由该装置的本机硬件(例如执行单元)执行的一个或多个较低级指令或控制信号的解码器。指令转换逻辑的部分或全部可位于指令处理装置外部,诸如举例而言在单独的管芯上和/或在存储器中。
装置200还包括一组打包数据寄存器208。每一打包数据寄存器可表示可操作用于存储打包数据、矢量数据、或SIMD数据的管芯上的存储位置。在一些实施例中,第一源打包数据213可被存储在第一源打包数据寄存器212中,第二源打包数据215可被存储在第二源打包数据寄存器214中,并且打包数据结果217可被存储在可以是第三打包数据寄存器的目的地存储位置216中。替换地,存储器位置或者其他存储位置可用作这些位置中的一个或多个。打包数据寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。各种不同类型的寄存器是合适的。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。
再次参考图2,执行单元210与解码器211和打包数据寄存器208耦合。作为示例,执行单元可包括算术逻辑单元、执行算术和逻辑运算的数字电路、逻辑单元、包括用于比较数据元素的比较逻辑的执行单元或功能单元等。执行单元可接收一个或多个经解码的或者以其他方式转换的指令或控制信号,这些指令或控制信号表示和/或源自多数据元素与多数据元素的比较指令203。该指令可指定或者以其他方式指示包括多个第一打包数据元素的第一源打包数据213(例如,指定或者以其他方式指示第一打包数据寄存器212),指定或者以其他方式指示包括多个第二打 包数据元素的第二源打包数据215(例如,指定或者以其他方式指示第二打包数据寄存器214),并且指定或者以其他方式指示目的地存储位置216。
响应于和/或由于多数据元素与多数据元素的比较指令203,执行单元可操作用于将存储打包数据结果217存储在目的地存储位置216中。执行单元和/或指令处理装置可包括专用或特定逻辑(例如,电路或者可能与固件和/或软件组合的其他硬件),该逻辑可操作用于执行多数据元素与多数据元素的比较指令203并且响应于该指令(例如,响应于从该指令解码或者以其他方式得到的一个或多个指令或控制信号)存储结果217。
打包数据结果217可包括多个打包结果数据元素。在一些实施例中,每一打包结果数据元素可具有多位比较掩码。例如,在一些实施例中,每一打包结果数据元素可对应于第二源打包数据215的打包数据元素中的不同的一个打包数据元素。在一些实施例中,每一打包结果数据元素可包括多位比较掩码,该多位比较掩码指示第一源打包数据的多个打包数据元素与对应于打包结果数据元素的第二源的打包数据元素的比较结果。在一些实施例中,每一打包结果数据元素可包括多位比较掩码,该多位比较掩码对应于且指示第二源打包数据215的对应打包数据元素的比较结果。在一些实施例中,每一多位比较掩码可包括不同的比较掩码位,用于将与第二源打包数据215的关联/对应打包数据元素相比较的第一源打包数据213的每一不同的对应打包数据元素。在一些实施例中,每一比较掩码位可指示对应比较的结果。在一些实施例中,每一掩码指示在第一源打包数据中发生匹配的位置处与来自第二源打包数据的对应数据元素有多少匹配。
在一些实施例中,给定打包结果数据元素中的多位比较掩码可指示第一源打包数据213的哪一个打包数据元素等于与给定打包结果数据元素相对应的第二源打包数据215的打包数据元素。在一些实施例中,比较可用于等同性,并且每一比较掩码位可具有指示比较的数据元素相等的第一二进制值(例如,根据一种可能的协定被设为二进制1)、或者具有指示比较的数据元素不相等的第二二进制值(例如,被清除为二进制0)。在其他实施例中,可任选地使用其他比较(例如,大于、小于等)。
在一些实施例中,打包数据结果可指示第一源打包数据的所有数据元素与第二源打包数据的所有数据元素的比较结果。在其他实施例中,打包数据结果可指示源打包数据中的一个的仅数据元素子集与源打包数据中的另一个的所有数据元素或仅数据元素子集的比较结果。在一些实施例中,该指令可指定或者以其他方式指示要比较的一个或多个子集。例如,在一些实施例中,该指令可任选地明确地指定或隐含地指示例如通用寄存器209的隐含寄存器中的第一子集218、以及任选地例如通用寄存器209的隐含寄存器中的第二子集219,以用于限制第一和/或第二源打包数据的仅子集的比较。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置200。在其他实施例中,该装置可任选地包括在处理器中找到的其他公知组件。这些组件的示例包括但不限于,分支预测单元、指令提取单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(translation lookaside buffer)、预提取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、总线接口单元、第二或更高级高速缓存、退役单元、包括在处理器中的其他组件、以及上述的各种组合。实际上,处理器中的组件有大量不同的组合和配置,并且实施例不限于任何特定的组合或配置。实施例可被包括在具有多个核的处理器、逻辑处理器或者执行引擎中,其中至少一个具有可操作用于执行本文中所公开的指令的一个实施例的执行逻辑。
图3是一种处理多数据元素与多数据元素的比较指令的一个实施例的方法325的一个实施例的方框流程图。在各种实施例中,该方法由通用、专用处理器、或者其他指令处理装置或数字逻辑设备执行。在一些实施例中,图3的操作和/或方法可由图1的处理器和/或图2的装置执行,和/或在图1的处理器和/或图2的装置内执行。本文中所描述的用于图1-2的处理器和装置的组件、特征、以及具体的任选细节还任选地应用于图3的操作和/或方法。替换地,图3的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图1的处理器和/或图2的装置可执行与图3相同、相似或者完全不同的操作和/或方法。
在方框326,该方法包括接收多数据元素与多数据元素的比较指令。在各个方面,该指令可在处理器、指令处理装置或者其一部分(例如,指令提取单元、解码 器、指令转换器等)处接收。在各个方面,该指令可从管芯外的源(例如,从主存储器、盘、或互连)或者从管芯上的源(例如,从指令高速缓存)接收。多元素与多元素的比较指令可指定或者以其他方式指示具有多个第一打包数据元素的第一源打包数据、以及具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置。
在方框327,响应于和/或由于多数据元素与多数据元素的比较指令,可将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中。代表性地,执行单元、指令处理装置或者通用或专用处理器可执行由该指令指定的操作并且存储打包数据结果。在一些实施例中,每一打包结果数据元素可对应于第二源打包数据的打包数据元素中的不同的一个打包数据元素。在一些实施例中,每一打包结果数据元素可包括多位比较掩码。在一些实施例中,每一多位比较掩码可包括不同的掩码位,用于与对应于打包结果数据元素的第二源的打包数据元素相比较的第一源打包数据的每一不同的对应打包数据元素。在一些实施例中,每一掩码位可指示对应比较的结果。以上结合图2提及的其他任选细节还可任选地被包括在可任选地处理相同指令和/或任选地在相同装置内执行的方法中。
所示方法涉及架构可视操作(例如,从软件角度可视的操作)。在其他实施例中,该方法可任选地包括一个或多个微架构操作。作为示例,可提取、解码、可能无序地调度该指令,可存取源操作数,可启用执行逻辑以执行微架构操作从而实现该指令,执行逻辑可执行微架构操作,可任选地将结果重新排序回到程序次序等。构想执行该操作的不同微架构方式。例如,在一些实施例中,可任选地执行比较掩码位零扩展操作、打包左移逻辑操作以及逻辑或操作,诸如将结合图9描述的那些。在其他实施例中,这些微架构操作中的任一个可任选地增加到图3的方法,但是该方法还可通过其他不同的微架构操作来实现。
图4是示出具有合适打包数据格式的若干示例实施例的方框图。128位打包字节格式428是128位宽,并且包括从最低有效到最高有效位位置的示图中所标记的十六个8位宽字节数据元素,如B1-B16。256位打包字格式429是256位宽,并且包括从最低有效到最高有效位位置的示图中所标记的十六个16位宽字数据元素,如 W1-W16。256位格式被示为分成两段以适合页面,但是在一些实施例中,完整的格式可被包括在单一物理寄存器或逻辑寄存器中。这些格式只是数个说明性示例。
其他打包数据结果也是合适的。例如,其他合适的128位打包数据格式包括128位打包16位字格式和128位打包32位双字格式。其他合适的256位打包数据格式包括256位打包8位字节格式和256位打包32位双字格式。比128位少的打包数据格式也是合适的,诸如64位宽打包数据8位字节格式。比256位多的打包数据格式也是合适的,诸如512位宽或者更宽的8位字节、16位字、或32位双字格式。通常,打包数据操作数中的打包数据元素的数量等于打包数据操作数的位的大小除以打包数据元素的位的大小。
图5是示出多数据元素与多数据元素的比较操作539的一个实施例的方框图,该比较操作539可响应于多数据元素与多数据元素的比较指令的一个实施例而执行。该指令可指定或者以其他方式指示包括N个打包数据元素540-1至540-N的第一集合的第一源打包数据513,并且可指定或者以其他方式指示包括N个打包数据元素541-1至541-N的第二集合的第二源打包数据515。在所示的示例中,在第一源打包数据513中,第一最低有效数据元素540-1存储表示值A的数据,第二数据元素540-2存储表示值B的数据,第三数据元素540-3存储表示值C的数据,并且第N个最高有效数据元素540-N存储表示值B的数据。在所示的示例中,在第二源打包数据515中,第一最低有效数据元素541-1存储表示值B的数据,第二数据元素541-2存储表示值A的数据,第三数据元素541-3存储表示值B的数据,并且第N个最高有效数据元素541-N存储表示值A的数据。
数字N可等于源打包数据的位的大小除以打包数据元素的位的大小。通常,数字N可以是常常从约4到约64的数量级的范围内的、或者甚至更大的整数。N的特定示例包括但不限于,4、8、16、32、以及64。在各种实施例中,源打包数据的宽度可以是64位、128位、256位、512位或者甚至更宽,但是本发明的范围不限于仅仅这些宽度。在各种实施例中,打包数据元素的宽度可以是8位字节、16位字、或32位双字,但是本发明的范围不限于仅仅这些宽度。通常,在该指令用于字符串和/或文本片段比较的实施例中,数据元素的宽度通常可以是8位字节或16位字,因为大多数感兴趣的字母数字值可以8位字节或至少以16位字表示,但是如果需要(例 如,为了与其他操作兼容以避免格式转换,为了效率等),则可使用更宽的格式(例如,32位双字格式)。在一些实施例中,第一和第二源打包数据中的数据元素可以是带符号或无符号的整数。
响应于该指令,处理器或者其他装置可操作用于生成打包数据结果517并将其存储在由该指令指定或者以其他方式指示的目的地存储位置516中。在一些实施例中,该指令可使处理器或者其他装置生成所有数据元素与所有数据元素的比较掩码542作为中间结果。所有数据元素与所有数据元素的比较掩码542可包括在第一源打包数据的N个数据元素中的每一个/全部与第二源打包数据的N个数据元素中的每一个/全部之间执行的NxN个比较的NxN个比较结果。即,可执行所有元素与所有元素的比较。
在一些实施例中,该掩码中的每一比较结果可指示被比较数据元素是否相等的比较结果,并且每一比较结果可以是单独的一位,该位可具有指示被比较数据元素相等的第一二进制值(例如,被设为二进制1或逻辑真),或者具有被比较数据元素不相等的第二二进制值(例如,被清除为二进制0或逻辑假)。其他协定也是可能的。如所示的,在用于比较第一源打包数据513的第一数据元素540-1(表示值“A”)与第二源打包数据515的第一数据元素541-1(表示值“B”)的所有数据元素与所有数据元素的比较掩码的右上角示出二进制0,因为这些值不相等。相反,在用于比较第一源打包数据513的第一数据元素540-1(表示值“A”)与第二源打包数据515的第二数据元素541-2(表示值“A”)的所有数据元素与所有数据元素的比较掩码的该位置左边的一个位置处示出二进制1,因为这些值相等。沿着对角线如一组圆形对角线匹配值序列所示,匹配值序列在所有数据元素与所有数据元素的比较掩码中表现为二进制1。所有数据元素与所有数据元素的比较掩码是任选地在一些实施例中生成的微架构方面,但是无需在其他实施例中生成。相反,可在没有中间结果的情况下生成和存储目的地中的结果。
再次参考图5,在一些实施例中,要存储在目的地存储位置516中的打包数据结果517可包括N个N位比较掩码的集合。例如,打包数据结果可包括N个打包结果数据元素544-1至544-N的集合。在一些实施例中,N个打包结果数据元素544-1至544-N中的每一个可与对应相关位置中的第二源打包数据515的N个打包数据元 素541-1至541-N中的一个相对应。例如,第一打包结果数据元素544-1可对应于第二源的第一打包数据元素541-1,第三打包结果数据元素544-3可对应于第二源的第三打包数据元素541-3,以此类推。在一些实施例中,N个打包结果数据元素544中的每一个可具有N位比较掩码。在一些实施例中,每一N位比较掩码可对应于且指示第二源打包数据515的对应打包数据元素541的比较结果。在一些实施例中,每一N位比较掩码可包括不同的比较掩码位,用于将与第二源打包数据515的关联/对应打包数据元素相比较的第一源打包数据513的N个不同的对应打包数据元素中的每一个。
在一些实施例中,每一比较掩码位可指示相应比较的结果(例如,如果被比较值相等则为二进制1,或者如果他们不相等则为二进制0)。例如,N位比较掩码的位k可表示用于比较第一源打包数据的第k个数据元素与整个N位比较掩码对应的第二源打包数据的数据元素的比较结果。至少在概念上,每一掩码位可表示从所有数据元素与所有数据元素的比较掩码542的单独一列起的掩码位序列。例如,第一结果打包数据元素544-1包括值(从右到左)“0、1、0、…1”,这些值可指示第二源515的第一数据元素541-1(对应于N位掩码)中的值“B”不等于第一源的第一数据元素540-1中的值“A”,等于第一源的第二数据元素540-2中的值“B”,不等于第一源的第三数据元素540-3中的值“C”,并且等于第一源的第N个数据元素540-N中的值“B”。在一些实施例中,每一掩码指示在第一源打包数据中发生匹配的位置处与来自第二源打包数据的对应数据元素有多少匹配。
图6是示出可响应于指令的实施例对具有16位宽字元素的128位宽打包源执行的比较操作639的示例实施例的方框图。该指令可指定或者以其他方式指示包括八个打包16位字数据元素640-1至640-8的第一集合的第一源128位宽打包数据613,并且可指定或者以其他方式指示包括八个打包16位字数据元素641-1至641-8的第二集合的第二源128位宽打包数据615。
在一些实施例中,该指令可任选地指定或者以其他方式指示任选的第三源647(例如,隐含的通用寄存器)以指示要比较第一源打包数据的多少数据元素(例如,子集)和/或任选的第四源648(例如,隐含的通用寄存器)以指示要比较第二源打包数据的多少数据元素(例如,子集)。替换地,该指令的一个或多个立即数 (immediate)可用于提供该信息。在所示的示例中,第三源647提供了仅比较第一源打包数据的八个数据元素中的最低有效的五个,并且第四源648提供了要比较第二源打包数据的所有八个数据元素,但是这只是一个说明性示例。
响应于该指令,处理器或者其他装置可操作用于生成打包数据结果617并将其存储在由该指令指定或者以其他方式指示的目的地存储位置616中。在一个或多个子集由第三源647和/或第四源648指示的一些实施例中,该指令可使处理器或者其他装置生成所有有效数据元素与所有有效数据元素的比较掩码642作为中间结果。所有有效数据元素与所有有效数据元素的比较掩码642可包括根据第三和第四源中的值而执行的比较子集的比较结果。在该特定示例中,生成四十个比较结果(即,8x5)。在一些实施例中,可迫使不被执行比较的比较掩码位(例如,第一源的最高有效的三个数据元素的比较掩码位)为预定值,例如迫使其为二进制0,如在示图中由“F0”所示的。
在一些实施例中,要存储在目的地存储位置616中的打包数据结果617可包括八个8位比较掩码的集合。例如,打包数据结果可包括八个打包结果数据元素644-1至644-N的集合。在一些实施例中,这些八个打包结果数据元素641中的每一个可对应于在对应的相对位置中第二源打包数据615的八个打包数据元素641中的一个。在一些实施例中,八个打包结果数据元素644中的每一个可具有8位比较掩码。在一些实施例中,每一8位比较掩码可对应于且指示第二源打包数据615的对应打包数据元素641的比较结果。在一些实施例中,每一8位比较掩码可包括不同的比较掩码位,用于与第二源打包数据615的关联/对应打包数据元素相比较的(例如,根据第三源中的值)第一源打包数据613的八个不同的对应打包数据元素中的每一有效打包数据元素。可迫使8位中的其他位为(例如,F0)多位。如上,至少在概念上,每一8位掩码可表示来自掩码642的单独一列的掩码位序列。
图7是示出可响应于指令的一个实施例对具有8位字节元素的128位宽打包源执行的比较操作739的示例实施例的方框图。该指令可指定或者以其他方式指示包括十六个打包8位字节数据元素740-1至740-16的第一集合的第一源128位宽打包数据713,并且可指定或者以其他方式指示包括十六个打包8位字节数据元素741-1至741-16的第二集合的第二源128位宽打包数据715。
在一些实施例中,该指令可任选地指定或者以其他方式指示任选的第三源747(例如,隐含的通用寄存器)以指示要比较第一源打包数据的多少数据元素(例如,子集),和/或该指令可任选地指定或者以其他方式指示任选的第四源748(例如,隐含的通用寄存器)以指示要比较第二源打包数据的多少数据元素(例如,子集)。在所示的示例中,第三源747提供了只要比较第一源打包数据的十六个数据元素中的最低有效的十四个,并且第四源748提供了只要比较第二源打包数据的十六个数据元素中的最低有效的十五个,但是这只是一个说明性示例。在其他实施例中,任选地还可使用最高有效或者中间范围。这些值可以不同的方式指定,诸如数字、位置、索引、中间范围等。
响应于该指令,处理器或者其他装置可操作用于生成打包数据结果717并将其存储在由该指令指定或者以其他方式指示的目的地存储位置716中。在一个或多个子集由第三源747和/或第四源748指示的一些实施例中,该指令可使处理器或者其他装置生成所有有效数据元素与所有有效数据元素的比较掩码742作为中间结果。这可与先前描述的类似或者不同。
在一些实施例中,打包数据结果717可包括十六个16位比较掩码的集合。例如,打包数据结果可包括十六个打包结果数据元素744-1至744-16的集合。在一些实施例中,目的地存储位置可表示256位寄存器或者其他存储位置,这是第一和第二源打包数据中的每一个的两倍宽。在一些实施例中,可使用隐含的目的地寄存器。在其他实施例中,可例如使用因特尔架构矢量扩展(VEX)编码方案来指定目的地寄存器。作为另一选项,可任选地使用两个128位寄存器或者其他存储位置。在一些实施例中,这些十六个打包结果数据元素744中的每一个可对应于对应的相关位置中第二源打包数据715的十六个打包数据元素741中的一个。在一些实施例中,十六个打包结果数据元素744中的每一个可具有16位比较掩码。在一些实施例中,每一16位比较掩码可对应于且指示第二源打包数据715的对应打包数据元素741的比较结果。在一些实施例中,每一16位比较掩码可包括不同的比较掩码位,用于与第二源打包数据715(例如,根据第四源中的值)的关联/对应打包数据元素中的每一有效打包数据元素相比较的(例如,根据第三源中的值)第一源打包数据 713的十六个不同的对应打包数据元素中的每一有效打包数据元素。可迫使16位中的其他位为(例如,F0)多位。
构想另外的其他实施例。例如,在一些实施例中,第一源打包数据可具有八个8位打包数据元素,第二源打包数据可具有八个8位打包数据元素,并且打包数据结果可具有八个8位打包结果数据元素。在另外的其他实施例中,第一源打包数据可具有三十二个8位打包数据元素,第二源打包数据可具有三十二个8位打包数据元素,并且打包数据结果可具有三十二个32位打包结果数据元素。即,在一些实施例中,在目的地中可具有与每一源操作数中的源数据元素一样多的掩码,并且每一掩码可具有与每一源操作数中的源数据元素一样多的位。
在一方面,以下伪码可表示图7的指令的操作。在该伪码中,EAX和EDX分别是用于指示第一和第二源的子集的隐含的通用寄存器。

图8是示出比较操作839的示例实施例的方框图,响应于其中指令可操作用于指定或者指示偏移量850以选择比较掩码子集而在打包数据结果818中报告的该指令的一个实施例,该比较操作839可对具有8位字节元素的128位宽打包源进行操作。该操作类似于针对图7示出和描述的操作,并且针对图7描述的操作细节和方面可任选地与图8的实施例一起使用。为了避免混淆描述,将描述不同或附加的方面,不再重复任选的类似处。
如在图7中,第一和第二源中的每一个是128位宽,并且各自包括十六个8位字节数据元素。这些操作数的所有数据元素与所有数据元素的比较将产生256位的比较位(即,16x16)。在一方面,这可被排列为十六个16位比较掩码,如在本文中其他地方所述的。
在一些实施例中,例如为了使用128位寄存器或者其他存储位置而非256位寄存器或者其他存储位置,该指令可任选地指定或者以其他方式指示任选的偏移量850。在一些实施例中,该偏移量可由源操作数(例如,经由隐含寄存器)、或者该指令的立即数等指定。在一些实施例中,该偏移量可选择整个所有数据元素与所有数据元素的比较结果的子集或一部分在结果打包数据中报告。在一些实施例中,该偏移量可指示起点。例如,它可指示包括在打包数据结果中的第一比较掩码。如所示示例、实施例显示的,该偏移量可指示值2以指定跳过最初两个比较掩码且在结果中不报告它们。如所示的,基于该偏移量2,打包数据结果818可存储十六个可能的16位比较掩码的第三个744-3至第十个744-10。在一些实施例中,第三16位比较掩码744-3可对应于第二源的第三打包数据元素741-3,并且第十16位比较掩码744-10可对应于第二源的第十打包数据元素741-10。在一些实施例中,目的地是隐含寄存器,但是这不是必需的。
图9是示出可任选地用于实现实施例的微架构方法的一个实施例的方框图。示出执行逻辑910的一部分。执行逻辑包括所有有效元素与所有有效元素的比较逻辑960。所有有效元素与所有有效元素的比较逻辑可操作用于比较所有有效元素与所有其他有效元素。这些比较可并行、串行、或者部分并行和部分串行地进行。这些比较中的每一个可使用例如类似于用于在打包比较指令中执行的比较的基本常规的比较逻辑来进行。所有有效元素与所有有效元素的比较逻辑可生成所有有效元素与所有有效元素的比较掩码942。作为示例,掩码942的一部分可表示图6的掩码642的最右边两列。所有有效元素与所有有效元素的比较逻辑还可表示所有有效元素与所有有效元素的比较掩码生成逻辑的一个实施例。
执行逻辑还包括与比较逻辑960耦合的掩码位零扩展逻辑962。掩码位零扩展逻辑可操作用于零扩展所有有效元素与所有有效元素的比较掩码942的单独一位比较结果中的每一个。如所示的,在最终生成8位掩码的情况下,在一些实施例,可 在更高有效的7位中的每一位中填充零。现在,来自掩码942的单独一位的掩码位占据最低有效位,而所有更重要的位变成零。
执行逻辑还包括与掩码位零扩展逻辑962耦合的左移逻辑掩码位对准逻辑964。左移逻辑掩码位对准逻辑可操作用于逻辑地左移零扩展掩码位。如所示的,在一些实施例中,零扩展掩码位可逻辑地左移不同的位移量以有助于实现对准。具体而言,第一行可逻辑地左移7位,第二行可逻辑地左移6位,第三行可逻辑地左移5位,第四行可逻辑地左移4位,第五行可逻辑地左移3位,以此类推。经移位的元素可在最低有效端上针对移出的所有位零扩展。这有助于实现结果掩码的掩码位的对准。
执行逻辑还包括与左移逻辑掩码位对准逻辑964耦合的列或逻辑966。列或逻辑可操作用于对来自对准逻辑964的一列逻辑左移和对准的元素进行逻辑或。该列或操作可将来自该列内的不同行中的每一行的所有单个掩码位组合到在这种情况下作为8位掩码的单个结果数据元素中的其现在对准的位置中。该操作有效地将原始比较掩码942的列中的设定掩码位“转置”成不同的比较结果掩码数据元素。
应当理解这只是合适微架构的一个说明性示例。其他实施例可使用其他操作来实现类似的数据处理或重新排列。例如,可任选地执行矩阵转置型操作,或者可将位只路由到期望位置。
本文中所公开的指令是通用比较指令。本领域技术人员将设计这些指令用于各种各样的目的/算法的各种用途。在一些实施例中,本文中所公开的指令可用于帮助加速对两种文本图案的子图案关系的标识。
有利地,与在本领域中已知的其他指令相比,至少在特定实例中,本文中所公开的指令的实施例对子图案检测可能相对更有用。为了进一步示出,考虑一示例可以是有帮助的。考虑以上针对图6示出和描述的实施例。在本实施例中,对于该数据,存在:(1)在位置1的具有长度3的一个前缀匹配;(2)在位置5的具有长度3的一个中缀匹配;(3)在位置7的具有长度1的一个前缀匹配;以及(4)具有长度1的附加非前缀匹配。如果由SSE4.2指令PCMPESTRM处理相同数据,则可检测到较少匹配。例如,PCMPESTRM可能只检测在位置7的具有长度1的一个前缀匹配。为了使PCMPESTM能够检测(1)的子图案,src2可能需要位移一且重 新加载到寄存器中,并且执行另一PCMESTRM指令。为了使PCMPESTM能够检测(2)的子图案,src1可能需要位移一个字节且重新加载,并且执行另一PCMESTRM指令。更一般地,对于m字节的针以及寄存器中的n字节的干草堆(haystack)(其中m<n),PCMPESTRM可仅检测到:(1)在位置1至n-m-1的m字节匹配;(2)在位置n-m至n-1的分别具有长度m-1、…、1的子前缀匹配。相反,在本文中示出和描述的各种实施例能够检测更多组合,并且在一些实施例中能够检测所有可能的组合。由此,本文中所公开的指令的实施例可有助于增加在本领域中已知的各种不同的图案和/或子图案检测算法的速度和效率。在一些实施例中,本文中所公开的指令可用于比较分子和/或生物序列。这些序列的示例包括但不限于,DNA序列、RNA序列、蛋白序列、氨基酸序列、核苷酸序列等。蛋白质、DNA、RNA以及其他这种排序一般趋于作为计算密集型任务。这种序列常常涉及针对目标或参考DNA/RNA/蛋白序列/氨基酸或核苷酸的片段/氨基酸或核苷酸的关键字的搜索基因序列数据库或文库。针对数据库中的数百万已知序列的基因片段/关键字的对准通常始于发现输入图案与存档序列之间的空间关系。具有给定大小的输入图案通常被视为字母的子图案集合。字母的子图案可表示“针”。这些字母可被包括在具有本文中所公开的指令的第一源打包数据中。在指令的不同实例中,数据库/文库的不同部分可被包括在第二源打包数据操作数中。
文库或数据库可表示搜索的“干草堆”,作为算法的一部分以试图在干草堆中定位针。该指令的不同实例可使用相同的针和干草堆的不同部分,直至试图找到针搜索了整个干草堆。基于输入与每一存档序列的匹配和非匹配的子图案,评估给定空间对准关系的对准分数。序列对准工具可使用比较结果作为评估DNA/RNA以及其他氨基酸序列的大家庭之间的功能、结构和演变的一部分。在一方面,对准工具可评估从仅数个字母的子图案开始的对准分数。双嵌套循环可以特定粒度(诸如字节粒度)覆盖二维搜索空间。有利地,本文中所公开的指令可有助于显著地加速这种搜索/排序。例如,当前认为与图7类似的指令可有助于使嵌套循环结构减少16x16的数量级,并且与图8类似的指令可有助于使嵌套循环结构减少16x8的数量级。
本文中所公开的指令可具有包括操作码或opcode的指令格式。操作码可表示可操作用于标识指令和/或要执行的操作的多个位或者一个或多个字段。该指令格式还可包括一个或多个源指定符和目的地指定符。作为示例,这些指定符中的每一个可包括多个位或者一个或多个字段以指定寄存器的地址、存储器位置或者其他存储位置。在其他实施例中,代替明确的指定符,源或目的地相反对于指令是隐含的。在其他实施例中,相反可通过指令的立即数来指定在源寄存器或者其他源存储位置中指定的信息。
图10是一组合适的打包数据寄存器1008的示例实施例的方框图。所示打包数据寄存器包括三十二个512位打包数据或矢量寄存器。这些三十二个512位寄存器被标记为ZMM0至ZMM31。在所示实施例中,这些寄存器中的较低十六个的较低阶256位(即,ZMM0-ZMM15)被混叠或者覆盖在相应256位打包数据或矢量寄存器(标记为YMM0-YMM15)上,但是这不是必需的。同样,在所示实施例中,YMM0-YMM15的较低阶128位被混叠或者覆盖在相应128位打包数据或矢量寄存器(标记为XMM0-XMM1)上,但是这也不是必需的。512位寄存器ZMM0至ZMM31可操作用于保持512位打包数据、256位打包数据或者128位打包数据。256位寄存器YMM0-YMM15可操作用于保持256位打包数据或者128位打包数据。128位寄存器XMM0-XMM1可操作用于保持128位打包数据。每一寄存器可用于存储打包浮点数据或打包整数数据。支持不同数据元素大小,包括至少8位字节数据、16位字数据、32位双字或单精度浮点数据、以及64位四倍字或双精度浮点数据。打包数据寄存器的替换实施例可包括不同数量的寄存器、不同大小的寄存器,并且可以或者可以不将较大寄存器混叠在较小寄存器上。
指令集包括一种或多种指令格式。给定指令格式定义各个字段(位的数量、位的位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作码等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可被定义为具有指令格式的字段(所包括的字段通常在相同的阶中,但是至少一些字段具有不同的位位置,因为包括更少的字段)的不同子集,和/或被定义为具有不同解释的给定字段。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达,并且包括用于指定操作 和操作码的字段。例如,示例性ADD指令具有专用操作码以及包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。已经发布和/或公布了涉及高级矢量扩展(AVX)(AVX1和AVX2)且使用矢量扩展(VEX)编码方案的SIMD扩展集(例如,参见2011年10月的Intel64和IA-32架构软件开发手册,并且参见2011年6月的Intel高级矢量扩展编程参考)。
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。
VEX指令格式
VEX编码允许指令具有两个以上操作数,并且允许SIMD矢量寄存器比128位长。VEX前缀的使用提供了三个操作数(或者更多)句法。例如,先前的两个操作数指令执行改写源操作数的操作(诸如A=A+B)。VEX前缀的使用使操作数执行非破坏性操作,诸如A=B+C。
图11A示出示例性AVX指令格式,包括VEX前缀1102、实操作码字段1130、MoD R/M字节1140、SIB字节1150、位移字段1162以及IMM81172。图11B示出来自图11A的哪些字段构成完整操作码字段1174和基础操作字段1142。图11C示出来自图11A的哪些字段构成寄存器索引字段1144。
VEX前缀(字节0-2)以三字节形式进行编码。第一字节是格式字段1140(VEX字节0,位[7:0]),该格式字段1140包含明确的C4字节值(用于区分C4指令格式的唯一值)。第二-第三字节(VEX字节1-2)包括提供专用能力的大量位字段。具体地,REX字段1105(VEX字节1,位[7-5])由VEX.R位字段(VEX字节1,位[7]–R)、VEX.X位字段(VEX字节1,位[6]–X)以及VEX.B位字段(VEX字节1,位[5]–B)组成。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三位(rrr、xxx以及bbb)进行编码,由此Rrrr、Xxxx以及Bbbb可通过增加VEX.R、VEX.X以及VEX.B来形成。操作码映射字段1115(VEX字节1,位 [4:0]–mmmmm)包括对隐含的领先操作码字节进行编码的内容。W字段1164(VEX字节2,位[7]–W)由记号VEX.W表示,并且取决于该指令提供了不同的功能。VEX.vvvv1120(VEX字节2,位[6:3]–vvvv)的作用可包括如下:1)VEX.vvvv对以颠倒(1(多个)补码)的形式指定第一源寄存器操作数进行编码,且对具有两个或两个以上源操作数的指令有效;2)VEX.vvvv针对特定矢量位移对以1(多个)补码的形式指定的目的地寄存器操作数进行编码;或者3)VEX.vvvv不对任何操作数进行编码,保留该字段,并且应当包含1111b。如果VEX.L1168大小的字段(VEX字节2,位[2]–L)=0,则它指示128位矢量;如果VEX.L=1,则它指示256位矢量。前缀编码字段1125(VEX字节2,位[1:0]–pp)提供了用于基础操作字段的附加位。
实操作码字段1130(字节3)还被称为操作码字节。操作码的一部分在该字段中指定。
MOD R/M字段1140(字节4)包括MOD字段1142(位[7-6])、Reg字段1144(位[5-3])、以及R/M字段1146(位[2-0])。Reg字段1144的作用可包括如下:对目的地寄存器操作数或源寄存器操作数(Rfff中的rrr)进行编码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段1146的作用可包括如下:对参考存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
缩放索引基址(SIB)-缩放字段1150(字节5)的内容包括用于存储器地址生成的SS1152(位[7-6])。先前已经针对寄存器索引Xxxx和Bbbb参考了SIB.xxx1154(位[5-3])和SIB.bbb1156(位[2-0])的内容。
位移字段1162和立即数字段(IMM8)1172包含地址数据。
通用矢量友好指令格式
矢量友好指令格式是适于矢量指令(例如,存在专用于矢量操作的特定字段)的指令格式。尽管描述了其中通过矢量友好指令格式支持矢量和标量运算两者的实施例,但是替换实施例只通过矢量友好指令格式使用矢量运算。
图12A-12B是示出根据本发明的实施例的通用矢量友好指令格式及其指令模板的方框图。图12A是示出根据本发明的实施例的通用矢量友好指令格式及其A类指 令模板的方框图,而图12B是示出根据本发明的实施例的通用矢量友好指令格式及其B类指令模板的方框图。具体地,针对通用矢量友好指令格式1120定义A类和B类指令模板,两者包括无存储器存取1205的指令模板和存储器存取1220的指令模板。在矢量友好指令格式的上下文中的术语“通用”指不绑定到任何专用指令集的指令格式。
尽管将描述其中矢量友好指令格式支持以下:64字节矢量操作数长度(或大小)与32位(4字节)或64位(8字节)数据元素宽度(或大小)(并且由此,64字节矢量由16双字大小的元素或者替换地8双字大小的元素组成)、64字节矢量操作数长度(或大小)与16位(2字节)或8位(1字节)数据元素宽度(或大小)、32字节矢量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或大小)、以及16字节矢量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或大小)的本发明的实施例,但是替换实施例可支持更大、更小、和/或不同的矢量操作数大小(例如,256字节矢量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
图12A中的A类指令模板包括:1)在无存储器存取1205的指令模板内,示出无存储器存取的全部取整(round)控制型操作1210的指令模板、以及无存储器存取的数据变换型操作1215的指令模板;以及2)在存储器存取1220的指令模板内,示出存储器存取的时间1225的指令模板和存储器存取的非时间1230的指令模板。图12B中的B类指令模板包括:1)在无存储器存取1205的指令模板内,示出无存储器存取的写掩码控制的部分取整控制型操作1212的指令模板以及无存储器存取的写掩码控制的vsize型操作1217的指令模板;以及2)在存储器存取1220的指令模板内,示出存储器存取的写掩码控制1227的指令模板。
通用矢量友好指令格式1200包括以下列出以在图12A-12B中示出顺序的如下字段。
格式字段1240-该字段中的特定值(指令格式标识符值)唯一地标识矢量友好指令格式,并且由此标识指令在指令流中以矢量友好指令格式出现。由此,该字段在无需只有通用矢量友好指令格式的指令集的意义上是任选的。
基础操作字段1242-其内容区分不同的基础操作。
寄存器索引字段1244-其内容直接或者通过地址生成指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)个寄存器文件选择N个寄存器。尽管在一个实施例中N可高达三个源和一个目的地寄存器,但是替换实施例可支持更多或更少的源和目的地寄存器(例如,可支持高达两个源,其中这些源中的一个源还用作目的地,可支持高达三个源,其中这些源中的一个源还用作目的地,可支持高达两个源和一个目的地)。
修饰符(modifier)字段1246-其内容将以指定存储器存取的通用矢量指令格式出现的指令与不指定存储器存取的通用矢量指令格式出现的指令区分开;即在无存储器存取1205的指令模板与存储器存取1220的指令模板之间。存储器存取操作读取和/或写入到存储器等级(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器存取操作不这样(例如,源和/或目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替换实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段1250-其内容区分除基础操作以外要执行各种不同操作中的哪一个操作。该字段是上下文专用的。在本发明的一个实施例中,该字段被分成类字段1268、α字段1252、以及β字段1254。扩充操作字段1250允许在单一指令而非2、3或4个指令中执行多组共同的操作。
缩放字段1260-其内容允许用于存储器地址生成(例如,用于使用2倍缩放*索引+基址的地址生成)的索引字段的内容的缩放。
位移字段1262A-其内容用作存储器地址生成的一部分(例如,用于使用2倍缩放*索引+基址+位移的地址生成)。
位移因数字段1262B(注意,位移字段1262A直接在位移因数字段1262B上的并置指示使用一个或另一个)-其内容用作地址生成的一部分,它指定由存储器存取的大小(N)缩放的位移因数,其中N是存储器存取中的字节数量(例如,用于使用2倍缩放*索引+基址+缩放的位移的地址生成)。忽略冗余的低阶位,并且因此位移因数字段的内容乘以存储器操作数总大小以生成在计算有效地址中使用的最 终位移。N的值由处理器硬件在运行时基于完整操作码字段1274(稍候在本文中描述)和数据操纵字段1254C确定。位移字段1262A和位移因数字段1262B在它们不用于无存储器存取1205的指令模板和/或不同的实施例可实现两者中的仅一个或均未实现的意义上是任选的。
数据元素宽度字段1264-其内容区分使用大量数据元素宽度中的哪一个(在一些实施例中用于所有指令,在其他实施例中只用于一些指令)。该字段在如果支持仅一个数据元素宽度和/或使用操作码的某一方面支持数据元素宽度则不需要的意义上是任选的。
写掩码字段1270-其内容在每一数据元素位置的基础上控制目的地矢量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码,而B类指令模板支持合并写掩码和归零写掩码两者。当合并的矢量掩码允许在执行任何操作(由基础操作和扩充操作指定)期间保护目的地中的任何元素集免于更新时,在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零矢量掩码允许在执行任何操作(由基础操作和扩充操作指定)期间使目的地中的任何元素集归零时,在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制执行的操作的矢量长度的能力(即,从第一个到最后一个要修改的元素的跨度),然而,修改的元素连续是不必要的。由此,写掩码字段1270允许部分矢量操作,包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段1270的内容选择大量写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此写掩码字段1270的内容间接地标识要执行的那个掩码)的本发明的实施例,但是替换实施例相反或另外允许掩码写字段1270的内容直接地指定要执行的掩码。
立即数字段1272-其内容允许对立即数的规范。该字段在实现不支持立即数的通用矢量友好格式中不存在且在不使用立即数的指令中不存在的意义上是任选的。
类字段1268-其内容在指令的不同的类之间进行区分。参考图12A-B,该字段的内容在A类和B类指令之间进行选择。在图12A-B中,圆角方形用于指示专用值存在于字段中(例如,在图12A-B中分别用于类字段1268的A类1268A和B类1268B)。
A类指令模板
在A类非存储器存取1205的指令模板的情况下,α字段1252被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器存取的取整型操作1210和无存储器存取的数据变换型操作1215的指令模板分别指定取整1252A.1和数据变换1252A.2)的RS字段1252A,而β字段1254区分要执行指定类型的操作中的哪一种。在无存储器存取1205的指令模板中,缩放字段1260、位移字段1262A、以及位移缩放字段1262B不存在。
无存储器存取的指令模板-全部取整控制型操作
在无存储器存取的全部取整控制型操作1210的指令模板中,β字段1254被解释为其内容提供静态取整的取整控制字段1254A。尽管在本发明的所述实施例中取整控制字段1254A包括抑制所有浮点异常(SAE)字段1256和取整操作控制字段1258,但是替换实施例可支持、可将这些概念两者都编码成相同的字段或者只有这些概念/字段中的一个或另一个(例如,可只有取整操作控制字段1258)。
SAE字段1256-其内容区分是否停用异常事件报告;当SAE字段1256的内容指示启用抑制时,给定指令不报告任何种类的浮点异常标志且不提起任何浮点异常处理器。
取整操作控制字段1258-其内容区分执行一组取整操作中的哪一个(例如,向上取整、向下取整、向零取整、以及就近取整)。由此,取整操作控制字段1258允许在每一指令的基础上改变取整模式。在其中处理器包括用于指定取整模式的控制寄存器的本发明的一个实施例中,取整操作控制字段1250的内容覆盖该寄存器值。
无存储器清除的指令模板-数据变换型操作
在无存储器存取的数据变换型操作1215的指令模板中,β字段1254被解释为数据变换字段1254B,其内容区分要执行大量数据变换中的哪一个(例如,无数据变换、拌和、广播)的。
在A类存储器存取1220的指令模板的情况下,α字段1252被解释为驱逐提示字段1252B,其内容区分要使用驱逐提示中的哪一个(在图12A中,为存储器存取时间1225指令模版和存储器存取非时间1230的指令模版分别指定时间1252B.1和非时间1252B.2)、而β字段1254被解释为数据操纵字段1254C,其内容区分要执 行大量数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换、以及目的地的向下转换)。存储器存取1220的指令模版包括缩放字段1260、以及任选的位移字段1262A或位移缩放字段1262B。
矢量存储器指令使用转换支持来执行来自存储器的矢量负载并将矢量存储到存储器。如同有规律的矢量指令,矢量存储器指令以数据元素式的方式与存储器来回传输数据,其中实际传输的元素由选为写掩码的矢量掩码的内容阐述。
存储器存取的指令模版-时间
时间数据是可能很快地重新使用足以从高速缓存受益的数据。然而,这是提示且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
存储器存取的指令模版-非时间
非时间数据是不可能很快地重新使用足以从第一级高速缓存中的高速缓存受益且应当给予驱逐优先级的数据。然而,这是提示且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段1252被解释为写掩码控制(Z)字段1252C,其内容区分由写掩码字段1270控制的写掩码应当是合并还是归零。
在B类非存储器存取1205的指令模板的情况下,β字段1254的一部分被解释为RL字段1257A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器存取的写掩码控制部分取整控制类型操作1212的指令模版和无存储器存取的写掩码控制VSIZE型操作1217的指令模板分别指定取整1257A.1和矢量长度(VSIZE)1257A.2),而β字段1254的其余部分区分要执行指定类型的操作中的哪一种。在无存储器存取1205指令模板中,缩放字段1260、位移字段1262A以及位移缩放字段1262B不存在。
在无存储器存取的写掩码控制的部分取整控制型操作1210的指令模版中,β字段1254的其余部分被解释为取整操作字段1259A,并且停用异常事件报告(给定指令不报告任何种类的浮点异常标志且不提起任何浮点异常处理器)。
取整操作控制字段1259A-只作为取整操作控制字段1258,其内容区分执行一组取整操作中的哪一个(例如,向上取整、向下取整、向零取整、以及就近取 整)。由此,取整操作控制字段1259A允许在每一指令的基础上改变取整模式。在其中处理器包括用于指定取整模式的控制寄存器的本发明的一个实施例中,取整操作控制字段1250的内容覆盖该寄存器值。
在无存储器存取的写掩码控制VSIZE型操作1217的指令模版中,β字段1254的其余部分被解释为矢量长度字段1259B,其内容区分要执行大量数据矢量长度中的哪一个(例如,128字节、256字节、或512字节)。
在B类存储器存取1220的指令模版的情况下,β字段1254的一部分被解释为广播字段1257B,其内容区分是否要执行广播型数据操纵操作,而β字段1254的其余部分被解释为矢量长度字段1259B。存储器存取1220的指令模版包括缩放字段1260、以及任选的位移字段1262A或位移缩放字段1262B。
针对通用矢量友好指令格式1200,示出完整操作码字段1274,包括格式字段1240、基础操作字段1242以及数据元素宽度字段1264。尽管示出了其中完整操作码字段1274包括所有这些字段的一个实施例,但是完整操作码字段1274包括在不支持所有这些字段的实施例中的少于所有的这些字段。完整操作码字段1274提供操作码(opcode)。
扩充操作字段1250、数据元素宽度字段1264以及写掩码字段1270允许这些特征在每一指令的基础上以通用矢量友好指令格式指定。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,其中这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内找到的各种指令模版在不同的情形下是有益的。在本发明的一些实施例中,不同处理器或者处理器内的不同核可只有支持仅A类、仅B类、或者可支持两类。举例而言,期望用于通用计算的高性能通用无序核可只支持B类,期望主要用于图形和/或科学(吞吐量)计算的核可只支持A类,并且期望用于两者的核可支持两者(当然,具有来自两类的模版和指令的一些混合的核,但是并非来自两类的所有模版和指令都在本发明的权限内)。同样,单一处理器可包括多个核,所有核支持相同的类或者其中不同的核支持不同的类。举例而言,在具有分离的图形和通用核的处理器中,图形核中的期望主要用于图形和/或科学计算的一个核可只支持A类,而通用核中的一个或多个可以是和期望用于通用计算的支持B类的 无序执行和寄存器重命名的高性能通用核。没有分离的图形核的另一处理器可包括支持A类和B类两者的一个或多个通用有序或无序核。当然,在本发明的不同实施例中,来自一类的特征还可在其他类中实现。以高级语言撰写的程序可被输入(例如,仅仅按时间编译或者统计编译)到各种不同的可执行形式,包括:1)只有用于执行的目标处理器支持的类的指令的形式;或者2)具有使用所有类的指令的不同组合而撰写的替换例程且具有选择这些例程以基于由当前正在执行代码的处理器支持的指令而执行的控制流代码的形式。
示例性专用矢量友好指令格式
图13A是示出根据本发明的实施例的示例性专用矢量友好指令格式的方框图。图13A示出在其指定位置、大小、解释和字段的次序、以及那些字段中的一些字段的值的意义上是专用的专用矢量友好指令格式1300。专用矢量友好指令格式1300可用于扩展x86指令集,并且由此一些字段类似于在现有x86指令集及其扩展(例如,AVX)中使用的那些字段或与之相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段、以及立即数字段一致。示出来自图13A的字段映射到的来自图12的字段。
应当理解,虽然出于说明的目的在通用矢量友好指令格式1200的上下文中,本发明的实施例参考专用矢量友好指令格式1300进行了描述,但是本发明不限于专用矢量友好指令格式1300,声明的地方除外。例如,通用矢量友好指令格式1200构想各种字段的各种可能的大小,而专用矢量友好指令格式1300被示为具有专用大小的字段。作为具体示例,尽管在专用矢量友好指令格式1300中数据元素宽度字段1264被示为一位字段,但是本发明不限于此(即,通用矢量友好指令格式1200构想数据元素宽度字段1264的其他大小)。
通用矢量友好指令格式1200包括以下列出以在图13A中示出的顺序的如下字段。
EVEX前缀(字节0-3)1302-以四字节形式进行编码。
格式字段1240(EVEX字节0,位[7:0])-第一字节(EVEX字节0)是格式字段1240,并且它包含0x62(在本发明的一个实施例中用于区分矢量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的大量位字段。
REX字段1305(EVEX字节1,位[7-5])-由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及(1257BEX字节1,位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应VEX位字段相同的功能,并且使用(多个)1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三位(rrr、xxx、以及bbb)进行编码,由此Rrrr、Xxxx以及Bbbb可通过增加EVEX.R、EVEX.X以及EVEX.B来形成。
REX’字段1210-这是REX’字段1210的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本发明的一个实施例中,该位与以下指示的其他位一起以位颠倒的格式存储以(在公知x86的32位模式下)与其实操作码字节是62的BOUND指令进行区分,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11;本发明的替换实施例不以颠倒的格式存储该指示的位以及其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R、以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段1315(EVEX字节1,位[3:0]–mmmm)–其内容对隐含的领先操作码字节(0F、0F38、或0F3)进行编码。
数据元素宽度字段1264(EVEX字节2,位[7]–W)-由记号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(大小)。
EVEX.vvvv1320(EVEX字节2,位[6:3]–vvvv)-EVEX.vvvv的作用可包括如下:1)EVEX.vvvv对以颠倒((多个)1补码)的形式指定的第一源寄存器操作数进行编码且对具有两个或两个以上源操作数的指令有效;2)EVEX.vvvv针对特定矢量位移对以(多个)1补码的形式指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv不对任何操作数进行编码,保留该字段,并且应当包含1111b。由此,EVEX.vvvv字段1320对以颠倒((多个)1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于将指定符大小扩展到32个寄存器。
EVEX.U1268类字段(EVEX字节2,位[2]–U)-如果EVEX.U=0,则它指示A类或EVEX.U0,如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段1325(EVEX字节2,位[1:0]–pp)-提供了用于基础操作字段的附加位。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有的压缩SIMD前缀的益处(EVEX前缀只需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以EVEX前缀格式的SIMD前缀(66H、F2H、F3H)的传统SSE指令,这些传统SIMD前缀被编码成SIMD前缀编码字段;并且在运行时在提供给解码器的PLA之前被扩展成传统SIMD前缀(因此PLA可执行传统和EVEX格式的这些传统指令,而无需修改)。虽然较新的指令可将EVEX前缀编码字段的内容直接作为操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定不同的含义。替换实施例可重新设计PLA以支持2位SIMD前缀编码,并且由此不需要扩展。
α字段1252(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N,还被示为具有α)-如先前所述的,该字段是上下文专用的。
β字段1254(EVEX字节3,位[6:4]–SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还被示为具有βββ)-如先前所述的,该字段是内容专用的。
REX’字段1210-这是REX’字段1210的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16寄存器进行编码的EVEX.R’位字段(EVEX字节3,位[3]–V’)。该位以位颠倒的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写掩码字段1270(EVEX字节3,位[2:0]–kkk)-其内容指定写掩码寄存器中的寄存器索引,如先前所述的。在本发明的一个实施例中,专用值EVEX.kkk=000具有隐含着没有写掩码用于特定指令(这可以各种方式(包括使用硬连线到所有的写掩码或者旁路掩码硬件的硬件)实现)的特别行为。
实操作码字段1330(字节4)还被称为操作码字节。操作码的一部分在该字段中指定。
MOD R/M字段1340(字节5)包括MOD字段1342、Reg字段1344、以及R/M字段1346。如先前所述的,MOD字段1342的内容在存储器存取和非存储器存取的操作之间进行区分。Reg字段1344的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段1346的作用可包括如下:对参考存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
缩放索引基址(SIB)字节(字节6)-如先前所述的,缩放字段1250的内容用于存储器地址生成。SIB.xxx1354和SIB.bbb1356-先前已经针对寄存器索引Xxxx和Bbbb参考了这些字段的内容。
位移字段1262A(字节7-10)-当MOD字段1342包含10时,字节7-10是位移字段1262A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
位移因数字段1262B(字节7)-当MOD字段1342包含01时,字节7是位移因数字段1262B。该字段的位置与传统x86指令集8位位移(disp8)的位置相同,它以字节粒度工作。由于disp8是符号扩展的,因此它可只在-128和127字节偏移量之间寻址,在64字节的高速缓存线的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段1262B是disp8的重新解释;当使用位移因数字段1262B时,实际位移通过位移因数字段的内容乘以存储器操作数存取的大小(N)确定。该类型的位移被称为disp8*N。这减小了平均指令长度(用于位移但具有大得多的范围的单一字节)。这种压缩位移基于有效位移是存储器存取的粒度的倍数的假设,并且由此地址偏移量的冗余低阶位不需要被编码。换句话说,位移因数字段1262B替代传统x86指令集8位位移。由此,位移因数字段1262B以与x86指令集8位位移相同的方式(因此在ModRM/SIB编码规则中没有变化)进行编码,唯一的不同在于,disp8超载至disp8*N。换句话说,在编码规则中没有变化,或者只在通过硬件对位移值的解释中有编码长度(这需要使位移缩放存储器操作数的大小以获得字节式地址偏移量)。
立即数字段1272如先前所述地操作。
完整操作码字段
图13B是示出根据本发明的实施例的构成完整操作码字段1274的具有专用矢量友好指令格式1300的字段的方框图。具体地,完整操作码字段1274包括格式字段1240、基础操作字段1242、以及数据元素宽度(W)字段1264。基础操作字段1242包括前缀编码字段1325、操作码映射字段1315以及实操作码字段1330。
寄存器索引字段
图13C是示出根据本发明的一个实施例的构成寄存器索引字段1244的具有专用矢量友好指令格式1300的字段的方框图。具体地,寄存器索引字段1244包括REX字段1305、REX’字段1310、MODR/M.reg字段1344、MODR/M.r/m字段1346、VVVV字段1320、xxx字段1354以及bbb字段1356。
扩充操作字段
图13D是示出根据本发明的一个实施例的构成扩充操作字段1250的具有专用矢量友好指令格式1300的字段的方框图。当类(U)字段1268包含0时,它表达EVEX.U0(A类1268A);当它包含1时,它表达EVEX.U1(B类1268B)。当U=0且MOD字段1342包含11(表达无存储器存取操作)时,α字段1252(EVEX字节3,位[7]–EH)被解释为rs字段1252A。当rs字段1252A包含1(取整1252A.1)时,β字段1254(EVEX字节3,位[6:4]–SSS)被解释为取整控制字段1254A。取整控制字段1254A包括一位SAE字段1256和两位取整操作字段1258。当rs字段1252A包含0(数据变换1252A.2)时,β字段1254(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段1254B。当U=0且MOD字段1342包含00、01或10(表达存储器存取操作)时,α字段1252(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段1252B且β字段1254(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段1254C。
当U=1时,α字段1252(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段1252C。当U=1且MOD字段1342包含11(表达无存储器存取操作)时,β字段1254的一部分(EVEX字节3,位[4]–S0)被解释为RL字段1257A;当它包含1(取整1257A.1)时,β字段1254的其余部分(EVEX字节3,位bit[6-5]–S2-1)被解释为取整操作字段1259A,而当RL字段1257A包含0(VSIZE 1257.A2)时,β字段1254的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为矢量长度字段1259B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD字段1342包含00、01或10(表达存储器存取操作)时,β字段1254(EVEX字节3,位[6:4]–SSS)被解释为矢量长度字段1259B(EVEX字节3,位[6-5]–L1-0)和广播字段1257B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图14是根据本发明的一个实施例的寄存器架构1400的方框图。在所示的实施例中,存在512位宽的32个矢量寄存器1410,这些寄存器被参考为zmm0至zmm31。较低16个zmm寄存器的较低阶256位覆盖在寄存器ymm0-16上。较低16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)覆盖在寄存器xmm0-15上。专用矢量友好指令格式1300对这些覆盖的寄存器文件操作,如在以下表格中所示的。

换句话说,矢量长度字段1259B在最大长度与一个或多个其他较短长度之间进行选择,其中每一这种较短长度是前一长度的一半,并且没有矢量长度字段1259B的指令模版对最大矢量长度操作。此外,在一个实施例中,专用矢量友好指令格式1300的B类指令模版对打包或标量单/双精度浮点数据以及打包或标量整数数据操作。标量操作是在zmm/ymm/xmm寄存器中的最低阶数据元素位置上执行的操作;取决于本实施例,较高阶数据元素位置保持与在指令之前相同或者归零。
写掩码寄存器1415-在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的大小是64位。在替换实施例中,写掩码寄存器1415的大小是16位。如先前所述的,在本发明的一个实施例中,矢量掩码寄存器k0无法用作写掩码;当正常可指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码。
通用机床电器1425-在所示的实施例中,存在与现有x86寻址模式一起使用以对存储器操作数寻址的十六个64位通用寄存器。通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R15来引用这些寄存器。
混叠MMX打包整数平坦寄存器文件1450的标量浮点栈寄存器文件(x87栈)1445-在所示的实施例中,x87栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的8元素栈;而MMX寄存器用于对64位打包整数数据执行操作、以及保留操作数用于在MMX和XMM寄存器之间执行的一些操作。
本发明的替换实施例可使用更宽或更窄的寄存器。另外,本发明的替换实施例可使用更多、更少、或不同的寄存器文件和寄存器。
示例性核架构、处理器、以及计算机架构
处理器核可以不同的方式、出于不同的目的、并且在不同的处理器中实现。举例而言,这些核的实现可包括:1)期望用于通用计算的通用有序核;2)期望用于通用计算的高性能通用无序核;3)期望主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括期望用于通用计算的一个或多个通用有序核和/或期望用于通用计算的一个或多个通用无序核的CPU;以及2)包括期望主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这些不同的处理器导致不同的计算机系统架构,这些处理器可包括:1)来自CPU的单独芯片上的协处理器;2)与CPU相同的封装中的单独管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,这种协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑、或者专用核);以及4)在相同管芯上可包括所述CPU(有时被称为应用核或应用处理器)、上述协处理器、以及附加功能的芯片上的系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核方框图
图15A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的方框图。图15B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的方框图。图15A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。假设有序方面是无序方面的子集,将描述无序方面。
在图15A中,处理器流水线1500包括提取级1502、长度解码级1504、解码级1506、分配级1508、重命名级1510、调度(也称为分派或发布)级1512、寄存器读取/存储器读取级1514、执行级1516、回写/存储器撰写级1518、异常处理级1522、以及提交级1524。
图15B示出处理器核1590,该核1590包括耦合到执行引擎单元1550的前端单元1530,并且两者耦合到存储器单元1570。核1590可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替换核类型。作为另一选项,核1590可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1530包括耦合到指令高速缓存单元1534的分支预测单元1532,该指令高速缓存单元1534耦合到指令翻译后备缓冲器(TLB)1536,该指令TLB1536耦合到指令提取单元1538,该指令提取单元1538耦合到解码单元1540。解码单元1540(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元1540可使用各种不同的机构来实现。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1590包括微代码ROM或者存储用于特定宏指令的微代码(例如,在解码单元1540中或者在前端单元1530内)的其他介质。解码单元1540耦合到执行引擎单元1550中的重命名/分配器单元1552。
执行引擎单元1550包括耦合到退役单元1554的重命名/分配器单元1552、以及一组一个或多个调度器单元1556。调度器单元1556表示任意数量的不同调度器,包括保留站、中央指令窗口等。调度器单元1556耦合到物理寄存器文件单元1558。每一物理寄存器文件单元1558表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1558包括矢量寄存器单元、写掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可提供架构矢量寄存器,矢量掩码寄存器以及通用寄存器。物理寄存器文件单元1558与退役单元1554重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和回退寄存器文件;使用未来文件、历史缓冲器、以及退役寄存器文件;使用寄存器映射和寄存器池等)的各种方式。回退单元1554和物理寄存器文件单元1558耦合到执行集群1560。执行集群1560包括一组一个或多个执行单元1562以及一组一个或多个存储器存取单元1564。执行单元1562可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行。尽管一些实施例可包括专属于专用功能或功能集的大量执行单元,但是其他实施例可包括全部都执行所有功能的仅一个执行单元或者多个执行单元。调度器单元1556、物理寄存器文件单元1558、以及执行集群1560被示为可能是多个单元,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元1564的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,而其他流水线可以是有序的。
一组存储器存取单元1564耦合到存储器单元1570,该存储器单元1570包括耦合到数据高速缓存单元1574的数据TLB单元1572,该数据高速缓存单元1574耦合到第二级(L2)高速缓存单元1576。在一个示例性实施例中,存储器存取单元1564 可包括负载单元、存储地址单元、以及存储数据单元,这些单元中的每一个耦合到存储器单元1570中的数据TLB单元1572。指令高速缓存单元1534还耦合到存储器单元1570中的第二级(L2)高速缓存单元1576。L2高速缓存单元1576耦合到一种或多种其他级别的高速缓存,并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可如下地实现流水线1500:1)指令提取1538执行提取和长度解码级1502和1504;2)解码单元1540执行解码级1506;3)重命名/分配器单元1552执行分配级1508和重命名级1510;4)调度器单元1556执行调度级1512;5)物理寄存器文件单元1558和存储器单元1570执行寄存器读取/存储器读取级1514;执行集群1560执行执行级1516;6)存储器单元1570和物理寄存器文件单元1558执行回写/存储器撰写级1518;7)各个单元可在异常处理级1522中涉及;以及8)退役单元1554和物理寄存器文件单元1558执行提交级1524。
核1590可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集、加利福尼亚州森尼维耳市的ARM holding的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核1590包括逻辑以支持打包数据指令集扩展(例如,AVX1、AVX2),由此允许许多多介质应用所使用的操作使用打包数据来执行。
应当理解,该核可支持多线程(执行两组或两组以上的平行操作或线程),并且可以包括分时多线程、同时多线程(其中单一物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时提取和解码以及此后诸如在IntelHyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元1534/1574以及共享的L2高速缓存单元1576,但是替换实施例可具有用于指令和数据两者的单一内部高速缓存,诸如举例而言,第一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存 的组合,该外部高速缓存在核和/或处理器外部。替换地,所有高速缓存可在核和/或处理器外部。
专用示例性有序核架构
图16A-B示出更专用的示例性有序核架构的方块图,该核可以是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、以及其他存储器I/O逻辑进行通信。
图16A是根据本发明的实施例的连接到片上互联网络1602且具有第二级(L2)高速缓存1604的本地子集的单一处理器核的方框图。在一个实施例中,指令解码器1600支持具有打包数据指令集扩展的x86指令集。L1高速缓存1606允许对高速缓存存储器进行低延迟存取标量和矢量单元。尽管在一个实施例中(为了简化设计)标量单元1608和矢量单元1610使用分离的寄存器集合(分别是标量寄存器1612和矢量寄存器1614)并且在两者之间传输的数据被写入存储器且随后读取回到第一级(L1)高速缓存1606或从L1高速缓存1606中读取,但是本发明的替换实施例可使用不同的方法(例如,使用单一寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信路径)。
L2高速缓存1604的本地子集是分成分离的本地子集(每一处理器核一个本地子集)的全局L2高速缓存的一部分。每一处理器核具有到L2高速缓存1604的其自己的本地子集的直接存取路径。由处理器核读取的数据被存储在其L2高速缓存子集1604中,并且可与存取其自己的本地L2高速缓存子集的其他处理器核平行地快速存取。由处理器核写入的数据被存储在其自己的L2高速缓存子集1604中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的以允许在芯片内诸如处理器核、L2高速缓存、以及其他逻辑块之类的代理相互通信。每一环形数据路径是每一方向1012位宽。
图16B是根据本发明的实施例的图16A中的处理器核的一部分的展开图。图16B包括L1高速缓存1604的L1数据高速缓存1606A部分、以及关于矢量单元1610和矢量寄存器1614的更多细节。具体地,矢量单元1610是16宽矢量处理单元(VPU)(参见16宽ALU1628),该矢量处理单元执行整数、单精度浮动和双精 度浮动的指令中的一个或多个。VPU支持使用拌和单元1620拌和寄存器输入、使用数字转换单元1622A-B数字转换、以及使用存储器输入上的复制单元1624复制。写掩码寄存器1626允许断定所得矢量撰写。
具有集成存储器控制器和图形的处理器
图17是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器1700的方框图。图17中的实线框示出具有单一核1702A、系统代理1710、一组一个或多个总线控制器单元1716的处理器1700,而任选增加的虚线框示出具有多个核1702A-N、系统代理单元1710中的一组一个或多个集成存储器控制器单元1714、以及专用逻辑1708的替换处理器1700。
由此,处理器1700的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑1708、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1702A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核1702A-N的协处理器;以及3)具有作为大量通用有序核的核1702A-N的协处理器。由此,处理器1700可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1700可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1706、以及耦合到一组集成存储器控制器单元1714的外部存储器(未示出)。一组共享高速缓存单元1706可包括一个或多个中级高速缓存(诸如第二级(L2)、第三级(L3)、第四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元1712使集成图形逻辑1708、一组共享高速缓存单元1706、以及系统代理单元1710/集成存储器控制器单元1714互连,但是替换实施例可使用任意数量的公知技术来互连这 些单元。在一个实施例中,在一个或多个高速缓存单元1706与核1702A-N之间维持一致性。
在一些实施例中,核1702A-H中的一个或多个核能够多线程。系统代理1710包括协调的那些组件和操作核1702A-N。系统代理单元1710可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调整核1702A-N的功率状态必需的的逻辑和组件、以及集成图形逻辑1708。显示单元用于驱动一个或多个外部连接的显示器。
核1702A-N在架构指令集方面可以是同质的或者异质的,即核1702A-N中的两个或两个以上核能够执行相同的指令集,而其他核可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图18-21是示例性计算机架构的方块图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合本文中公开的处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
现在参考图18,示出了根据本发明的一个实施例的系统1800的方框图。系统1800可包括一个或多个处理器1810、1815,这些处理器耦合到控制器中枢1820。在一个实施例中,控制器中枢1820包括图形存储器控制器中枢(GMCH)1890和输入/输出中枢(IOH)1850(它们可在分离的芯片上);GMCH1890包括耦合到存储器1840和协处理器1845的存储器和图形控制器;IOH1850使输入/输出(I/O)设备1860耦合到GMCH1890。替换地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1840和协处理器1845直接耦合到处理器1810、以及单一芯片中的具有IOH1850的控制器中枢1820。
附加处理器1815的任选本质在图18中用虚线指示。每一处理器1810、1815可包括本文中所描述的处理核中的一个或多个,并且可以是一些版本的处理器1700。
存储器1840可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器中枢1820经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接与处理器1810、1815进行通信。
在一个实施例中,协处理器1845是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1820可包括集成图形加速器。
在包括架构、微架构、热、功耗特性等的优点度量的范围方面,在物理资源1810之间可存在各种差异。
在一个实施例中,处理器1810执行控制具有通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器1810识别如具有应当由附连的协处理器1845执行的类型的这些协处理器指令。因此,处理器1810在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1845。协处理器1845接受和执行接收到的协处理器指令。
现在参考图19,示出了根据本发明的一个实施例的第一更专用的示例性系统1900的方框图。如图19所示,多处理器系统1900是点对点互连系统,并且包括经由点对点互连1950耦合的第一处理器1970和第二处理器1980。处理器1970和1980中的每一个可以是一些版本的处理器1700。在本发明的一个实施例中,处理器1970和1980分别是处理器1810和1815,而协处理器1938是协处理器1845。在另一实施例中,处理器1970和1980分别是处理器1810和协处理器1845。
处理器1970和1980分别被示为包括集成存储器控制器(IMC)单元1972和1982。处理器1970还包括点对点(P-P)接口1976和1978作为其总线控制器单元的一部分;类似地,第二处理器1980包括P-P接口1986和1988。处理器1970、1980可使用P-P接口电路1978、1988经由点对点(P-P)接口1950交换信息。如图 19所示,IMC1972和1982使处理器耦合到相应的存储器,即存储器1932和存储器1934,这些存储器可以是在本地附连到各个处理器的主存储器的部分。
处理器1970、1980可各自使用点对点接口电路1976、1994、1986、1998经由各个P-P接口1952、1954与芯片组1990交换信息。芯片组1990可任选地经由高性能接口1939与协处理器1938交换信息。在一个实施例中,协处理器1938是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1990可经由接口1996耦合到第一总线1916。在一个实施例中,第一总线1916可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图19所示,各种I/O设备1914可与总线桥1918一起耦合到第一总线1916,该总线桥1918使第一总线1916耦合到第二总线1920。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器之类的一个或多个附加处理器1915耦合到第一总线1916。在一个实施例中,第二总线1920可以是低引脚数(LPC)总线。各种设备可耦合到第二总线1920,包括例如键盘和/或鼠标1922、通讯设备1927、以及存储单元1928,诸如在一个实施例中可包括指令/代码和数据1930的盘驱动或者其他大容量存储设备。此外,音频I/O1924可耦合到第二总线1920。注意,其他架构是可能的。例如,代替图19的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图20,示出了根据本发明的一个实施例的第二更专用的示例性系统2000的方框图。图19和20中的相似元件具有相似的附图标记,并且图19的特定方面已经从图20中省略以避免混淆图20的其他方面。
图20示出处理器1970、1980可分别包括集成存储器和I/O控制逻辑(“CL”)1972和1982。由此,CL1972、1982包括集成存储器控制器单元并且包 括I/O控制逻辑。图20示出不仅存储器1932、1934耦合到CL1972、1982,而且I/O设备2014也耦合到控制逻辑1972、1982。传统I/O设备2015耦合到芯片组1990。
现在参考图21,示出了根据本发明的一个实施例的SoC2100的方框图。图17中的类似元件具有相似的附图标记。同样,虚线框是更多高级SoC上的任选的特征。在图21中,互连单元2102耦合到:包括一组一个或多个核202A-N和共享高速缓存单元1706的应用处理器2110;系统代理单元1710;总线控制器单元1716;集成存储器控制器单元1714;可包括集成图形逻辑、图形处理器、音频处理器以及视频处理器的一组或者一个或多个协处理器2120;静态随机存取存储器(SRAM)单元2130;直接存储器存取(DMA)单元2132;以及用于耦合到一个或多个外部显示器的显示单元2140。在一个实施例中,协处理器2120包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机构的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图19所示的代码1930之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以高级过程或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在 有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,这些非瞬态有形排列包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或者包含设计数据的诸如硬件描述语言(HDL)之类的非瞬态有形机器可读介质,该非瞬态有形机器可读介质定义本文中所描述的结构、电路、装置、处理器和/或系统特征。这些实施例还可被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目的地指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由核处理的一个或多个其他指令。指令转换器可以软件、硬件、固件、或者其组合实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
图22是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目的地指令集中的二进制指令的方框图。在所示的实施例中,指令转换器是软件指令转换器,但是替换的指令转换器可以软件、固件、硬件、或者其各种组合实现。图22示出以高级语言2202的程序可使用x86编译器2204进行编译以生成x86二进制代码2206,该x86二进制代码2206可由具有至少一个x86指令集核2216的处理器在本机上执行。具有至少一个x86指令集核2216的处理器表示可通过兼容地执行或者以其他方式处理(1)因特尔x86指令集核的指令集的实质部分或者(2)以在具有至少一个x86指令集核的因特尔处理器上运行为目标的对象代码版本 的应用或其他软件来执行与具有至少一个x86指令集核的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果的任何处理器。x86编译器2204表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核2216的处理器上执行的x86二进制代码2206(例如,对象代码)的编译器。类似地,图22示出以高级语言2202的程序可使用替换指令集编译器2208进行编译,以生成可由不具有至少一个x86指令集核2214的处理器(例如,具有执行加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集和/或执行加利福尼亚州森尼维耳市ARM Holdings的ARM指令集的核的处理器)在本机上执行的替换指令集二进制代码2210。指令转换器2212用于将x86二进制代码2206转换成可由不具有x86指令集核2214的处理器在本机上执行的代码。该经转换的代码不可能与替换指令集二进制代码2210相同,因为难以制作能够这样做的指令转换器;然而,经转换的代码将完成一般操作并且由来自替换指令集的指令构成。由此,指令转换器2212表示通过仿真、模拟、或者任何其他处理允许不具有x86指令集处理器或核的处理器或者其他电子设备执行x86二进制代码2206的软件、固件、硬件、或者其组合。
针对图4-9中的任一图所描述的组件、特征以及细节还可任选地用于图1-3中的任一图中。图4的格式可由本文中所公开的任一指令或任一实施例使用。图10的寄存器可由本文中所公开的任一指令或任一实施例使用。此外,本文中针对任一装置所描述的组件、特征以及细节还可任选地用于本文中所描述的在实施例中可由这种装置和/或使用这种装置执行的任一方法中。
示例实施例
以下示例涉及进一步的实施例。这些示例中的特性可用于一个或多个实施例中的任何地方。
示例1是一种处理指令的装置。该装置包括多个打包数据寄存器。该装置还包括与打包数据寄存器耦合的执行单元,响应于指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置的多元素与多元素的比较指令,该执行单元可操作用于将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中。每一结果数据元素对应于第二源打 包数据的数据元素中的不同一个数据元素,每一结果数据元素包括多位比较掩码,多位比较掩码包括不同的比较掩码位,用于与对应于结果数据元素的第二源打包数据的数据元素相比较的第一源打包数据的每一不同的对应数据元素,每一比较掩码指示对应比较的结果。
示例2包括示例1的主题,并且任选地其中响应于该指令,执行单元存储打包数据结果,该打包数据结果指示第一源打包数据的所有数据元素与第二源打包数据的所有数据元素的比较结果。
示例3包括示例1的主题,并且任选地其中响应于该指令,执行单元将多位比较掩码存储在给定打包结果数据元素中,用于指示第一源打包数据的打包数据元素中的哪些等于与给定打包结果数据元素相对应的第二源的打包数据元素。
示例4包括示例1-3中的任一个的主题,并且任选地其中第一源打包数据具有N个打包数据元素且第二源打包数据具有N个打包数据元素,并且其中响应于该指令,执行单元存储包括N个N位打包结果数据元素的打包数据结果。
示例5包括示例4的主题,并且任选地其中第一源打包数据具有八个8位打包数据元素且第二源打包数据具有八个8位打包数据元素,并且其中响应于该指令,执行单元存储包括八个8位打包结果数据元素的打包数据结果。
示例6包括示例4的主题,并且任选地其中第一源打包数据具有十六个8位打包数据元素且第二源打包数据具有十六个8位打包数据元素,并且其中响应于该指令,执行单元存储包括十六个16位打包结果数据元素的打包数据结果。
示例7包括示例4的主题,并且任选地其中第一源打包数据具有三十二个8位打包数据元素且第二源打包数据具有三十二个8位打包数据元素,并且其中响应于该指令,执行单元存储包括三十二个32位打包结果数据元素的打包数据结果。
示例8包括示例1-3中的任一个的主题,并且其中第一源打包数据具有N个打包数据元素且第二源打包数据具有N个打包数据元素,其中该指令指示偏移量,其中响应于该指令,执行单元存储包括N/2个N位打包结果数据元素的打包数据结果,并且其中N/2个N位打包结果数据元素中的最低有效的一个N位打包结果数据元素对应于由偏移量指示的第二源的打包数据元素。
示例9包括示例1-3中的任一个的主题,并且任选地其中响应于该指令,执行单元存储包括多位比较掩码的打包结果数据元素,其中每一掩码位具有二进制值1和二进制值0,二进制值1指示第一源打包数据的对应打包数据元素等于与打包结果数据元素相对应的第二源的打包数据元素,二进制值0指示第一源打包数据的对应打包数据元素不等于与打包结果数据元素相对应的第二源的打包数据元素。
示例10包括示例1-3中的任一个的主题,并且任选地其中响应于该指令,执行单元存储多位比较掩码,这些多位比较掩码指示第一和第二源打包数据中的一个的仅数据元素子集与第一和第二源打包数据中的另一个的数据元素的比较结果。
示例11包括示例1-3中的任一个的主题,并且任选地其中该指令指示进行比较的第一和第二源打包数据中的一个的数据元素子集。
示例12包括示例1-3中的任一个的主题,并且任选地其中该指令隐含地指示目的地存储位置。
示例13是一种处理指令的方法。该方法包括:接收多元素与多元素的比较指令,该多元素与多元素的比较指令指示具有多个第一打包数据元素的第一源打包数据、以及具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置。该方法还包括:响应于多元素与多元素的比较指令,将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中。每一打包结果数据元素对应于第二源打包数据的打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,该多位比较掩码包括不同的掩码位,用于与对应于打包结果数据元素的第二源的打包数据元素相比较的第一源打包数据的每一不同的对应打包数据元素,以指示比较结果。
示例14包括示例13的主题,并且任选地其中存储包括:存储指示第一源打包数据的所有数据元素与第二源打包数据的所有数据元素比较的结果的打包数据结果。
示例15包括示例13的主题,并且任选地其中接收包括:接收指示具有N个打包数据元素的第一源打包数据以及具有N个打包数据元素的第二源打包数据的指令;并且其中存储包括:存储包括N个N位打包结果数据元素的打包数据结果。
示例16包括示例15的主题,并且任选地其中接收包括:接收指示具有十六个8位打包数据元素的第一源打包数据以及具有十六个8位打包数据元素的第二源打包数据的指令;并且其中存储包括:存储包括十六个16位打包结果数据元素的打包数据结果。
示例17包括示例13的主题,并且任选地其中接收包括:接收指示具有N个打包数据元素的第一源打包数据、指示具有N个打包数据元素的第二源打包数据、且指示偏移量的指令;并且其中存储包括:存储包括N/2个N位打包结果数据元素的打包数据结果,N/2个N位打包结果数据元素中的最低有效的一个N位打包结果数据元素对应于由偏移量指示的第二源的打包数据元素。
示例18包括示例13中的任一个的主题,并且任选地其中接收包括:接收指示具有N个打包数据元素的第一源打包数据、指示具有N个打包数据元素的第二源打包数据、且指示偏移量的指令;并且其中存储包括:存储包括N/2个N位打包结果数据元素的打包数据结果,N/2个N位打包结果数据元素中的最低有效的一个N位打包结果数据元素对应于由偏移量指示的第二源的打包数据元素。
示例19包括示例13中的任一个的主题,并且任选地其中接收包括:接收指示第一源打包数据且指示第二源打包数据的指令,该第一源打包数据表示第一生物序列,该第二源打包数据表示第二生物序列。
示例20是一种处理指令的装置。该系统包括互连。该系统还包括与互连耦合的处理器。该系统还包括与互连耦合的动态随机存取存储器(DRAM),该DRAM存储多元素与多元素的比较指令,该指令指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置。该指令如果由处理器执行则可操作用于使处理器执行操作,这些操作包括将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中,每一打包结果数据元素对应于第二源打包数据的打包数据元素中的不同的一个打包数据元素。每一打包结果数据元素包括多位比较掩码,该多位比较掩码指示第一源打包数据的多个打包数据元素与对应于打包结果数据元素的第二源的打包数据元素的比较结果。
示例21包括示例20的主题,并且任选地其中该指令如果由处理器执行则可操作用于使处理器存储打包数据结果,该打包数据结果指示第一源打包数据的所有打包数据元素与第二源打包数据的所有数据元素的比较结果。
示例22包括示例20-21中的任一个的主题,并且任选地其中该指令指示具有N个打包数据元素的第一源打包数据以及具有N个打包数据元素的第二源打包数据,并且其中该指令如果由处理器执行则可操作用于使处理器存储包括N个N位打包结果数据元素的打包数据结果。
示例23是一种提供指令的制品。该制品包括存储指令的非瞬态机器可读存储介质。该制品还包括该指令,该指令指示具有多个第一打包数据元素的第一源打包数据、具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置,并且该指令如果由机器执行则可操作用于使机器执行操作,这些操作包括:将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中,每一打包结果数据元素对应于第二源打包数据的打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,每一多位比较掩码指示第一源打包数据的多个打包数据元素与对应于具有多位比较掩码的打包结果数据元素的第二源的打包数据元素的比较结果。
示例24包括示例23的主题,并且任选地其中该指令指示具有N个打包数据元素的第一源打包数据以及具有N个打包数据元素的第二源打包数据,并且其中该指令如果由机器执行则可操作用于使机器存储包括N个N位打包结果数据元素的打包数据结果。
示例25包括示例23-24的主题,并且任选地其中非瞬态机器可读存储介质包括非易失性存储器、DRAM、以及CD-ROM中的一个,并且其中该指令如果由机器执行可则操作用于使机器存储指示第一源打包数据的所有打包数据元素中哪些等于第二源打包数据的所有数据元素中的哪些的打包数据结果。
示例26包括一种执行示例13-19中的任一个的方法的装置。
示例27包括一种用于执行示例13-19中的任一个的方法的装置。
示例28包括一种用于执行示例13-19中的任一个的方法的装置,该装置包括解码手段和执行手段。
示例29包括存储指令的机器可读存储介质,该指令如果由机器执行则使机器执行示例13-19中的任一个的方法。
示例30包括一种执行基本如本文中所描述的方法的装置。
示例31包括一种执行基本如本文中所描述的指令的装置。
示例32包括一种包括用于执行基本如本文中所描述的方法的手段的装置。
在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派生词。应当理解,这些术语不旨在作为彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或两个以上元件彼此直接物理或电接触。“耦合”可意味着两个或两个以上元件直接物理或电接触。然而,“耦合”还可意味着两个或两个以上元件彼此不直接接触,但是仍然彼此协同操作或交互。例如,执行单元可通过一个或多个中间组件与寄存器或解码器耦合。在附图中,箭头用于示出连接和耦合。
在该描述和权利要求中,可使用了术语“逻辑”。如本文中所使用的,逻辑可包括硬件、固件、软件或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在一些实施例中,硬件逻辑可包括可能与其他电路组件一起的晶体管和/或门。
在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在附图中显示且在说明书中描述的关系的所有等效关系都被涵盖在实施例内。在其他实例中,以方块图的形式或者在没有细节的情况下,示出了公知电路、结构、设备、以及操作,以避免混淆对该描述的理解。在示出和描述了多个组件的一些情况下,它们可被一起集成到单一组件中。在示出和描述了单一组件的一些情况下,该单一组件可被分成两个或两个以上组件。
描述了各种操作和方法。在流程图中以相对基础的形式描述了这些方法中的一些方法,但是操作可被任选地增加到这些方法和/或从这些方法移除。另外,尽管流程图示出根据示例实施例的操作的特定次序,但是特定次序是示例性的。替换实施例可任选地以不同的次序执行操作,组合特定操作,重叠特定操作等。
特定操作可由硬件组件执行,或者可以机器可执行或电路可执行指令体现,这些操作可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的一部分、电路等)通过执行操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路、或硬件可包括可操作用于执行和/或处理指令且响应于该指令存储结果的专用或特定电路或者其他逻辑(例如,可能与固件和/或软件组合的硬件)。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以可由机器读取的形式提供(例如,存储)信息的机构。机器可读介质可提供指令或指令顺序或者在其上存储了指令或者令顺序,该指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或导致机器执行本文中所公开的一种或多种操作、方法、或技术。机器可读介质可提供(例如,存储)本文中所公开的指令的一个或多个实施例。
在一些实施例中,机器可读介质可包括有形和/或非瞬态机器可读存储介质。例如,有形和/或非瞬态机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁电-光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储设备、非易失性存储器、非易失性数据存储设备、非瞬态存储器、非瞬态数据存储设备等。非瞬态机器可读存储介质不由瞬态传播信号组成。在另一实施例中,机器可读介质可包括瞬态机器可读通信介质,例如电、光、声、或者其他形式的传播信号,诸如载波、红外信号、数字信号等。
合适的机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的其他示例包括计算设备、以及结合这些处理器、指令处理装置、数字逻辑电路、或集成电路的其他电子设备。这些技术设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和 交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒、以及视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、及其描述中。然而,公开的该方法不被解释为反映本发明需要多于在每一权利要求中明确叙述的特征的意图。相反,如所附权利要求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,该详细描述之后的权利要求由此被明确地结合到该详细描述中,其中,每一权利要求本身代表本发明的单独实施例。

多数据元素与多数据元素比较处理器、方法、系统和指令.pdf_第1页
第1页 / 共62页
多数据元素与多数据元素比较处理器、方法、系统和指令.pdf_第2页
第2页 / 共62页
多数据元素与多数据元素比较处理器、方法、系统和指令.pdf_第3页
第3页 / 共62页
点击查看更多>>
资源描述

《多数据元素与多数据元素比较处理器、方法、系统和指令.pdf》由会员分享,可在线阅读,更多相关《多数据元素与多数据元素比较处理器、方法、系统和指令.pdf(62页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104049954A43申请公布日20140917CN104049954A21申请号201410095614222申请日2014031413/828,27420130314USG06F9/3820060171申请人英特尔公司地址美国加利福尼亚州72发明人SJ阔74专利代理机构上海专利商标事务所有限公司31100代理人张东梅54发明名称多数据元素与多数据元素比较处理器、方法、系统和指令57摘要本发明公开了一种多数据元素与多数据元素比较处理器、方法、系统和指令。装置包括打包数据寄存器和执行单元。指令指示包括第一打包数据元素的第一源打包数据、包括第二打包数据元素的第二源打包数据、以。

2、及目的地存储位置。响应于该指令,执行单元将包括打包结果数据元素的打包数据结果存储在目的地存储位置中。每一结果数据元素对应于第二源打包数据的数据元素中的不同的一个数据元素。每一结果数据元素包括多位比较掩码,该多位比较掩码包括不同的比较掩码位,用于与第二源打包数据的对应数据元素相比较的第一源打包数据的每一不同的对应数据元素。30优先权数据51INTCL权利要求书3页说明书34页附图24页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书34页附图24页10申请公布号CN104049954ACN104049954A1/3页21一种处理指令的装置,包括多个打包数据寄存器;以及与所述打。

3、包数据寄存器耦合的执行单元,响应于指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置的多元素与多元素的比较指令,所述执行单元可操作用于将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一结果数据元素对应于所述第二源打包数据的所述数据元素中的不同的一个数据元素,每一结果数据元素包括多位比较掩码,所述多位比较掩码包括不同的比较掩码位,用于与对应于所述结果数据元素的所述第二源打包数据的数据元素相比较的所述第一源打包数据的每一不同的对应数据元素,每一比较掩码指示对应比较的结果。2如权利要求1所述的装置,其特征在于,响应于所述指。

4、令,所述执行单元存储所述打包数据结果,所述打包数据结果指示所述第一源打包数据的所有数据元素与所述第二源打包数据的所有数据元素的比较结果。3如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元将多位比较掩码存储在给定打包结果数据元素中,用于指示所述第一源打包数据的打包数据元素中的哪些等于与所述给定打包结果数据元素相对应的所述第二源的打包数据元素。4如权利要求1所述的装置,其特征在于,所述第一源打包数据具有N个打包数据元素且所述第二源打包数据具有N个打包数据元素,并且其中响应于所述指令,所述执行单元存储包括N个N位打包结果数据元素的所述打包数据结果。5如权利要求4所述的装置,其特征在于。

5、,所述第一源打包数据具有八个8位打包数据元素且所述第二源打包数据具有八个8位打包数据元素,并且其中响应于所述指令,所述执行单元存储包括八个8位打包结果数据元素的所述打包数据结果。6如权利要求4所述的装置,其特征在于,所述第一源打包数据具有十六个8位打包数据元素且所述第二源打包数据具有十六个8位打包数据元素,并且其中响应于所述指令,所述执行单元存储包括十六个16位打包结果数据元素的所述打包数据结果。7如权利要求4所述的装置,其特征在于,所述第一源打包数据具有三十二个8位打包数据元素且所述第二源打包数据具有三十二个8位打包数据元素,并且其中响应于所述指令,所述执行单元存储包括三十二个32位打包结果。

6、数据元素的所述打包数据结果。8如权利要求1所述的装置,其特征在于,所述第一源打包数据具有N个打包数据元素且所述第二源打包数据具有N个打包数据元素,其中所述指令指示偏移量,其中响应于所述指令,所述执行单元存储包括N/2个N位打包结果数据元素的所述打包数据结果,并且其中N/2个N位打包结果数据元素中的最底有效的一个N位打包结果数据元素对应于由所述偏移量指示的所述第二源的打包数据元素。9如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元存储包括多位比较掩码的打包结果数据元素,其中每一掩码位具有二进制值1和二进制值0中的一个,所述二进制值1指示所述第一源打包数据的对应打包数据元素等于与所。

7、述打包结果数据元素相对应的所述第二源的打包数据元素;并且所述二进制值0指示所述第一源打包数据的对应打包数据元素不等于与所述打包结果数据元素相对应的所述第二源的所述打包数据元素。权利要求书CN104049954A2/3页310如权利要求1所述的装置,其特征在于,响应于所述指令,所述执行单元存储多位比较掩码,所述多位比较掩码指示所述第一和第二源打包数据中的一个的仅数据元素子集与所述第一和第二源打包数据中的另一个的数据元素的比较结果。11如权利要求1所述的装置,其特征在于,所述指令指示进行比较的所述第一和第二源打包数据中的一个的数据元素子集。12如权利要求1所述的装置,其特征在于,所述指令隐含地指示。

8、目的地存储位置。13一种处理指令的方法,包括接收多元素与多元素的比较指令,所述多元素与多元素的比较指令指示具有多个第一打包数据元素的第一源打包数据、以及具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置;以及响应于所述多元素与多元素的比较指令,将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,所述多位比较掩码包括不同的掩码位,用于与对应于所述打包结果数据元素的所述第二源的所述打包数据元素相比较的所述第一源打包数据的每一不同的对应打包数据元素。

9、,以指示比较结果。14如权利要求13所述的方法,其特征在于,存储包括存储指示所述第一源打包数据的所有数据元素与所述第二源打包数据的所有数据元素比较的结果的打包数据结果。15如权利要求13所述的方法,其特征在于,接收包括接收指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素的所述第二源打包数据的指令;并且其中存储包括存储包括N个N位打包结果数据元素的所述打包数据结果。16如权利要求15所述的方法,其特征在于,接收包括接收指示具有十六个8位打包数据元素的所述第一源打包数据以及具有十六个8位打包数据元素的所述第二源打包数据的指令;并且其中存储包括存储包括十六个16位打包结果数据元素。

10、的所述打包数据结果。17如权利要求13所述的方法,其特征在于,接收包括接收指示具有N个打包数据元素的所述第一源打包数据、指示具有N个打包数据元素的所述第二源打包数据、且指示偏移量的指令;并且其中存储包括存储包括N/2个N位打包结果数据元素的所述打包数据结果,所述N/2个N位打包结果数据元素中的最低有效的一个N位打包结果数据元素对应于由所述偏移量指示的所述第二源的打包数据元素。18如权利要求13所述的方法,其特征在于,存储包括存储多位比较掩码,所述多位比较掩码指示所述第一和第二源打包数据中的一个的仅数据元素子集与所述第一和第二源打包数据中的另一个的数据元素的比较结果。19如权利要求13所述的方法。

11、,其特征在于,接收包括接收指示所述第一源打包数据且指示所述第二源打包数据的指令,所述第一源打包数据表示第一生物序列,所述第二源打包数据表示第二生物序列。20一种处理指令的系统,包括互连;与所述互连耦合的处理器;以及权利要求书CN104049954A3/3页4与所述互连耦合的动态随机存取存储器(DRAM),所述DRAM存储多元素与多元素的比较指令,所述指令指示包括多个第一打包数据元素的第一源打包数据、包括多个第二打包数据元素的第二源打包数据、以及目的地存储位置,并且所述指令如果由所述处理器执行则可操作用于使所述处理器执行操作,所述操作包括将包括多个打包结果数据元素的打包数据结果存储在所述目的地存。

12、储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,所述多位比较掩码指示所述第一源打包数据的多个打包数据元素与对应于所述打包结果数据元素的所述第二源的所述打包数据元素的比较结果。21如权利要求20所述的系统,其特征在于,所述指令如果由所述处理器执行则可操作用于使所述处理器存储所述打包数据结果,所述打包数据结果指示所述第一源打包数据的所有打包数据元素与所述第二源打包数据的所有数据元素的比较结果。22如权利要求20所述的系统,其特征在于,所述指令指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素。

13、的所述第二源打包数据,并且其中所述指令如果由所述处理器执行则可操作用于使所述处理器存储包括N个N位打包结果数据元素的所述打包数据结果。23一种提供指令的制品,包括存储指令的非瞬态机器可读存储介质;所述指令指示具有多个第一打包数据元素的第一源打包数据、具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置,并且所述指令如果由机器执行则可操作用于使所述机器执行操作,所述操作包括将包括多个打包结果数据元素的打包数据结果存储在所述目的地存储位置中,每一打包结果数据元素对应于所述第二源打包数据的所述打包数据元素中的不同的一个打包数据元素,每一打包结果数据元素包括多位比较掩码,每一多位比较掩码指示所。

14、述第一源打包数据的多个打包数据元素与对应于具有所述多位比较掩码的所述打包结果数据元素的所述第二源的所述打包数据元素的比较结果。24如权利要求23所述的制品,其特征在于,所述指令指示具有N个打包数据元素的所述第一源打包数据以及具有N个打包数据元素的所述第二源打包数据,并且其中所述指令如果由所述机器执行则可操作用于使所述机器存储包括N个N位打包结果数据元素的所述打包数据结果。25如权利要求23所述的制品,其特征在于,所述非瞬态机器可读存储介质包括非易失性存储器、DRAM、以及CDROM中的一个,并且其中所述指令如果由所述机器执行可则操作用于使所述机器存储指示所述第一源打包数据的所有打包数据元素中哪。

15、些等于所述第二源打包数据的所有数据元素中的哪些的所述打包数据结果。权利要求书CN104049954A1/34页5多数据元素与多数据元素比较处理器、方法、系统和指令背景技术技术领域0001本文中所描述的实施例一般涉及处理器。具体而言,本文中所描述的实施例一般涉及响应于指令比较多个数据元素与多个其他数据元素的处理器。0002背景信息0003许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指令、矢量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令以同时或并行地执行多个操作。0004多个数据元素可。

16、在一个寄存器或存储器位置内被打包为打包数据或矢量数据。在打包数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,256位宽打包数据寄存器可具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。每一数据元素可表示单一独立的一段数据(例如,像素颜色等),该段数据可单独地操作和/或与其他数据独立地操作。0005打包数据元素的比较是常用且普遍的操作,该操作以许多不同的方式使用。用于执行打包数据元素、矢量数据元素或SIMD数据元素的比较的各种矢量、打包数据或者SIMD指令在本领域中是已知的。例如,在因特尔架构(IA)方面的MMXTM技术包括各种打包比较指令。最近,INTEL。

17、STREAMINGSIMDEXTENSIONS42(SSE42)引入了若干字符串和文本处理指令。附图说明0006可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中0007图1是具有指令集的处理器的一个实施例的方框图,该指令集包括一个或多个多数据元素与多数据元素的比较指令。0008图2是具有执行单元的指令处理装置的一个实施例的方框图,该执行单元可操作用于执行多数据元素与多数据元素的比较指令的一个实施例。0009图3是一种处理多数据元素与多数据元素的比较指令的一个实施例的方法的一个实施例的方框流程图。0010图4是示出具有合适打包数据格式的示例实施例的方框图。0011图5是示出可。

18、响应于指令的一个实施例而执行的操作的一个实施例的方框图。0012图6是示出可响应于指令的一个实施例对具有16位宽字元素的128位宽打包源执行的操作的示例实施例的方框图。0013图7是示出可响应于指令的一个实施例对具有8位字节元素的128位宽打包源执行的操作的示例实施例的方框图。0014图8是示出可响应于可操作用于选择比较掩码子集以在打包数据结果中报告的说明书CN104049954A2/34页6指令的一个实施例而执行的操作的示例实施例的方框图。0015图9是适于实施例的微架构细节的方框图。0016图10是一组合适的打包数据寄存器的示例实施例的方框图。0017图11A示出示例性AVX指令格式,包括。

19、VEX前缀、实操作码字段、MODR/M字节、SIB字节、位移字段以及IMM8。0018图11B示出来自图11A的哪些字段构成完整操作码字段和基础操作字段。0019图11C示出来自图11A的哪些字段构成寄存器索引字段。0020图12A是示出根据本发明的实施例的通用矢量友好指令格式及其A类指令模板的方框图。0021图12B是示出根据本发明的实施例的通用矢量友好指令格式及其B类指令模板的方框图。0022图13A是示出根据本发明的实施例的示例性专用矢量友好指令格式的方框图。0023图13B是示出根据本发明的实施例的构成完整操作码字段的具有专用矢量友好指令格式的字段的方框图。0024图13C是示出根据本。

20、发明的实施例的构成寄存器索引字段的具有专用矢量友好指令格式的字段的方框图。0025图13D是示出根据本发明的实施例的构成扩充(AUGMENTATION)操作字段的具有专用矢量友好指令格式的字段的方框图。0026图14是根据本发明的一个实施例的寄存器架构的方框图。0027图15A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的方框图。0028图15B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的方框图。0029图16A是根据本发明的实施例的连接到管芯上(ONDIE)互联网络且具有第二。

21、级(L2)高速缓存的本地子集的单一处理器核的方框图。0030图16B是根据本发明的实施例的图16A中的处理器核的一部分的展开图。0031图17是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器的方框图。0032图18示出根据本发明的实施例的系统的方框图。0033图19示出根据本发明的实施例的第一更具体的示例性系统的方框图。0034图20示出根据本发明的实施例的第二更具体的示例性系统的方框图。0035图21示出根据本发明的实施例的片上系统(SOC)的方框图。0036图22是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中。

22、的二进制指令的方框图。0037实施例的详细描述0038在以下描述中,阐述了大量具体细节(例如,专用指令操作、打包数据格式、掩码类型、指示操作数的方式、处理器配置、微架构细节、操作顺序等)。然而,在没有这些具体细节的情况下,可实践实施例。在其他实例中,在细节方面未示出公知电路、结构和技术,以避免混淆对该描述的理解。说明书CN104049954A3/34页70039在本文中公开了各种多数据元素与多数据元素的比较指令、执行这些指令的处理器、由处理器在处理或执行这些指令时执行的方法、以及结合一个或多个处理器以处理或执行这些指令的系统。图1是具有指令集102的处理器100的一个实施例的方框图,该指令集1。

23、02包括一个或多个多数据元素与多数据元素的比较指令103。在一些实施例中,处理器可以是通用处理器(例如,具有在台式、膝上型等计算机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、上述处理器的各种混合、或者完全其他类型的处理器中的任一个。0040处理器具有指令集架构(ISA)101。ISA表。

24、示与编程相关的处理器的架构的一部分,并且通常包括处理器的本机指令、架构寄存器、数据类型、寻址模式、存储器架构等。ISA与微架构不同,微架构通常表示选择用于实现ISA的特定处理器设计技术。0041ISA包括架构可视的寄存器(例如,架构寄存器文件)107。架构寄存器还可在本文中被简称为寄存器。短语“架构寄存器”、“寄存器文件”以及“寄存器”在本文中用于表示对软件和/或编程器和/或通用宏指令指定来标识操作数的寄存器而言可视的寄存器,除非另外或明显指定。这些寄存器与给定微架构(例如,由指令使用的临时寄存器、重排序缓冲器、退役(RETIREMENT)寄存器等)中的其他非架构或非架构可视的寄存器形成对比。。

25、寄存器通常表示管芯上的处理器存储位置。所示的寄存器包括可操作用于存储打包数据、矢量数据或者SIMD数据的打包数据寄存器108。架构寄存器还可包括通用寄存器109,在一些实施例中,这些通用寄存器109任选地由多元素与多元素的比较指令指示以提供源操作数(例如,指示数据元素子集以提供指示包括在目的地中的比较结果的偏移量等)。0042所示的ISA包括指令集102。与微指令或微操作(例如,由解码宏指令得到的那些)不同,指令集的指令表示宏指令(例如,提供给处理器以供执行的汇编语言或机器级指令)。指令集包括一个或多个多数据元素与多数据元素的比较指令103。在下文中将进一步公开多数据元素与多数据元素的比较指令。

26、的各种不同实施例。在一些实施例,指令103可包括一个或多个所有数据元素与所有数据元素的比较指令104。在一些实施例,指令103可包括一个或多个指定子集与所有子集、或者指定子集与指定子集的比较指令105。在一些实施例,指令103可包括可操作用于选择(例如,指示偏移量以选择)要存储在目的地中的比较的一部分的一个或多个多元素与多元素的比较指令。0043处理器还包括执行逻辑110。执行逻辑可操作用于执行或处理指令集的指令(例如,多数据元素与多数据元素的比较指令103)。在一些实施例中,执行逻辑可包括特定逻辑(例如,可能与固件组合的特定电路或硬件)以执行这些指令。0044图2是具有执行单元210的指令处。

27、理装置200的一个实施例的框图,该执行单元210可操作用于执行多数据元素与多数据元素的比较指令203的一个实施例。在一些实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器,或者可被包括在图1的处理器中。替换地,指令处理装置可被包括在类似或不同的处理器中。此外,图1的处理器可包括类似或不同的指令处理装置。说明书CN104049954A4/34页80045装置200可接收多数据元素与多数据元素的比较指令203。例如,可从指令提取单元、指令队列等接收该指令。多数据元素与多数据元素的比较指令可表示机器代码指令、汇编语言指令、宏指令、或者该装。

28、置的ISA的控制信号。多数据元素与多数据元素的比较指令可明确地指定(例如,通过一个或多个字段或者位集)或者以其他方式指定(例如,隐含地指示)第一源打包数据213(例如,在第一源打包数据寄存器212中),可指定或者以其他方式指定第二源打包数据215(例如,在第二源打包数据寄存器214中),并且可指定或者以其他方式指定(例如,隐含地指示)将存储打包数据结果217的目的地存储位置216。0046所示的指令处理装置包括指令解码单元或解码器211。解码器可接收和解码相对较高级的机器代码或汇编语言指令或宏指令,并且输出一个或多个相对较低级的微指令、微操作、微代码入口点、或者反映、表示和/或源自较高级指令的。

29、其他相对较低级的指令或控制信号。一个或多个较低级指令或控制信号可通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令。可使用各种不同的机构来实现解码器,这些机构包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及用于实现在本领域中已知的解码器的其他机构。0047在其他实施例中,可使用指令仿真器、翻译器、变形器(MORPHER)、解释器、或者其他指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿真、翻译、变形、解释、或者以其他方式将指令转换成一个或多个对应的导出指。

30、令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,该装置可具有将接收到的机器代码指令转换成一个或多个中间指令的指令转换逻辑、以及将一个或多个中间指令解码成可由该装置的本机硬件(例如执行单元)执行的一个或多个较低级指令或控制信号的解码器。指令转换逻辑的部分或全部可位于指令处理装置外部,诸如举例而言在单独的管芯上和/或在存储器中。0048装置200还包括一组打包数据寄存器208。每一打包数据寄存器可表示可操作用于存储打包数据、矢量数据、或SIMD数据的管芯上的存储位置。在一些实施例中,第一源打包数据213可被存储在第一源打包数据寄存器212中,第二源打包数据215可被存储在第二源。

31、打包数据寄存器214中,并且打包数据结果217可被存储在可以是第三打包数据寄存器的目的地存储位置216中。替换地,存储器位置或者其他存储位置可用作这些位置中的一个或多个。打包数据寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。各种不同类型的寄存器是合适的。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。0049再次参考图2,执行单元210与解码器211和打包数据寄存器208耦合。作为示例,执行单元可包括算术逻辑单元、执行算术和逻辑运算的数字电路、逻辑单元、包括用于比较数据元素的比较逻辑的执行单元或功能单。

32、元等。执行单元可接收一个或多个经解码的或者以其他方式转换的指令或控制信号,这些指令或控制信号表示和/或源自多数据元素与多数据元素的比较指令203。该指令可指定或者以其他方式指示包括多个第一打包数据元素的第一源打包数据213(例如,指定或者以其他方式指示第一打包数据寄存器212),指定或者以其他方式指示包括多个第二打包数据元素的第二源打包数据215(例如,指定或者以其他方式指示第二打包数据寄存器214),并且指定或者以其他方式指示目的地存储位置说明书CN104049954A5/34页9216。0050响应于和/或由于多数据元素与多数据元素的比较指令203,执行单元可操作用于将存储打包数据结果21。

33、7存储在目的地存储位置216中。执行单元和/或指令处理装置可包括专用或特定逻辑(例如,电路或者可能与固件和/或软件组合的其他硬件),该逻辑可操作用于执行多数据元素与多数据元素的比较指令203并且响应于该指令(例如,响应于从该指令解码或者以其他方式得到的一个或多个指令或控制信号)存储结果217。0051打包数据结果217可包括多个打包结果数据元素。在一些实施例中,每一打包结果数据元素可具有多位比较掩码。例如,在一些实施例中,每一打包结果数据元素可对应于第二源打包数据215的打包数据元素中的不同的一个打包数据元素。在一些实施例中,每一打包结果数据元素可包括多位比较掩码,该多位比较掩码指示第一源打包。

34、数据的多个打包数据元素与对应于打包结果数据元素的第二源的打包数据元素的比较结果。在一些实施例中,每一打包结果数据元素可包括多位比较掩码,该多位比较掩码对应于且指示第二源打包数据215的对应打包数据元素的比较结果。在一些实施例中,每一多位比较掩码可包括不同的比较掩码位,用于将与第二源打包数据215的关联/对应打包数据元素相比较的第一源打包数据213的每一不同的对应打包数据元素。在一些实施例中,每一比较掩码位可指示对应比较的结果。在一些实施例中,每一掩码指示在第一源打包数据中发生匹配的位置处与来自第二源打包数据的对应数据元素有多少匹配。0052在一些实施例中,给定打包结果数据元素中的多位比较掩码可。

35、指示第一源打包数据213的哪一个打包数据元素等于与给定打包结果数据元素相对应的第二源打包数据215的打包数据元素。在一些实施例中,比较可用于等同性,并且每一比较掩码位可具有指示比较的数据元素相等的第一二进制值(例如,根据一种可能的协定被设为二进制1)、或者具有指示比较的数据元素不相等的第二二进制值(例如,被清除为二进制0)。在其他实施例中,可任选地使用其他比较(例如,大于、小于等)。0053在一些实施例中,打包数据结果可指示第一源打包数据的所有数据元素与第二源打包数据的所有数据元素的比较结果。在其他实施例中,打包数据结果可指示源打包数据中的一个的仅数据元素子集与源打包数据中的另一个的所有数据元。

36、素或仅数据元素子集的比较结果。在一些实施例中,该指令可指定或者以其他方式指示要比较的一个或多个子集。例如,在一些实施例中,该指令可任选地明确地指定或隐含地指示例如通用寄存器209的隐含寄存器中的第一子集218、以及任选地例如通用寄存器209的隐含寄存器中的第二子集219,以用于限制第一和/或第二源打包数据的仅子集的比较。0054为了避免混淆描述,已示出和描述了相对简单的指令处理装置200。在其他实施例中,该装置可任选地包括在处理器中找到的其他公知组件。这些组件的示例包括但不限于,分支预测单元、指令提取单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(TRANSLATIONLOOKASID。

37、EBUFFER)、预提取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、总线接口单元、第二或更高级高速缓存、退役单元、包括在处理器中的其他组件、以及上述的各种组合。实际上,处理器中的组件有大量不同的组合和配置,并且实施例不限于任何特定的组合或配置。实施例可被包括在具有多个核的处理器、逻辑处理器或者执行引擎中,其中至少一个具有可操作用于执行本文中所公开的指令的一个实施例的执行逻辑。说明书CN104049954A6/34页100055图3是一种处理多数据元素与多数据元素的比较指令的一个实施例的方法325的一个实施例的方框流程图。在各种实施例中,该方法由通用、专用处理器、或者其他指。

38、令处理装置或数字逻辑设备执行。在一些实施例中,图3的操作和/或方法可由图1的处理器和/或图2的装置执行,和/或在图1的处理器和/或图2的装置内执行。本文中所描述的用于图12的处理器和装置的组件、特征、以及具体的任选细节还任选地应用于图3的操作和/或方法。替换地,图3的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图1的处理器和/或图2的装置可执行与图3相同、相似或者完全不同的操作和/或方法。0056在方框326,该方法包括接收多数据元素与多数据元素的比较指令。在各个方面,该指令可在处理器、指令处理装置或者其一部分(例如,指令提取单元、。

39、解码器、指令转换器等)处接收。在各个方面,该指令可从管芯外的源(例如,从主存储器、盘、或互连)或者从管芯上的源(例如,从指令高速缓存)接收。多元素与多元素的比较指令可指定或者以其他方式指示具有多个第一打包数据元素的第一源打包数据、以及具有多个第二打包数据元素的第二源打包数据、以及目的地存储位置。0057在方框327,响应于和/或由于多数据元素与多数据元素的比较指令,可将包括多个打包结果数据元素的打包数据结果存储在目的地存储位置中。代表性地,执行单元、指令处理装置或者通用或专用处理器可执行由该指令指定的操作并且存储打包数据结果。在一些实施例中,每一打包结果数据元素可对应于第二源打包数据的打包数据。

40、元素中的不同的一个打包数据元素。在一些实施例中,每一打包结果数据元素可包括多位比较掩码。在一些实施例中,每一多位比较掩码可包括不同的掩码位,用于与对应于打包结果数据元素的第二源的打包数据元素相比较的第一源打包数据的每一不同的对应打包数据元素。在一些实施例中,每一掩码位可指示对应比较的结果。以上结合图2提及的其他任选细节还可任选地被包括在可任选地处理相同指令和/或任选地在相同装置内执行的方法中。0058所示方法涉及架构可视操作(例如,从软件角度可视的操作)。在其他实施例中,该方法可任选地包括一个或多个微架构操作。作为示例,可提取、解码、可能无序地调度该指令,可存取源操作数,可启用执行逻辑以执行微。

41、架构操作从而实现该指令,执行逻辑可执行微架构操作,可任选地将结果重新排序回到程序次序等。构想执行该操作的不同微架构方式。例如,在一些实施例中,可任选地执行比较掩码位零扩展操作、打包左移逻辑操作以及逻辑或操作,诸如将结合图9描述的那些。在其他实施例中,这些微架构操作中的任一个可任选地增加到图3的方法,但是该方法还可通过其他不同的微架构操作来实现。0059图4是示出具有合适打包数据格式的若干示例实施例的方框图。128位打包字节格式428是128位宽,并且包括从最低有效到最高有效位位置的示图中所标记的十六个8位宽字节数据元素,如B1B16。256位打包字格式429是256位宽,并且包括从最低有效到最。

42、高有效位位置的示图中所标记的十六个16位宽字数据元素,如W1W16。256位格式被示为分成两段以适合页面,但是在一些实施例中,完整的格式可被包括在单一物理寄存器或逻辑寄存器中。这些格式只是数个说明性示例。0060其他打包数据结果也是合适的。例如,其他合适的128位打包数据格式包括128位打包16位字格式和128位打包32位双字格式。其他合适的256位打包数据格式包括256位打包8位字节格式和256位打包32位双字格式。比128位少的打包数据格式也是合适说明书CN104049954A107/34页11的,诸如64位宽打包数据8位字节格式。比256位多的打包数据格式也是合适的,诸如512位宽或者更。

43、宽的8位字节、16位字、或32位双字格式。通常,打包数据操作数中的打包数据元素的数量等于打包数据操作数的位的大小除以打包数据元素的位的大小。0061图5是示出多数据元素与多数据元素的比较操作539的一个实施例的方框图,该比较操作539可响应于多数据元素与多数据元素的比较指令的一个实施例而执行。该指令可指定或者以其他方式指示包括N个打包数据元素5401至540N的第一集合的第一源打包数据513,并且可指定或者以其他方式指示包括N个打包数据元素5411至541N的第二集合的第二源打包数据515。在所示的示例中,在第一源打包数据513中,第一最低有效数据元素5401存储表示值A的数据,第二数据元素5。

44、402存储表示值B的数据,第三数据元素5403存储表示值C的数据,并且第N个最高有效数据元素540N存储表示值B的数据。在所示的示例中,在第二源打包数据515中,第一最低有效数据元素5411存储表示值B的数据,第二数据元素5412存储表示值A的数据,第三数据元素5413存储表示值B的数据,并且第N个最高有效数据元素541N存储表示值A的数据。0062数字N可等于源打包数据的位的大小除以打包数据元素的位的大小。通常,数字N可以是常常从约4到约64的数量级的范围内的、或者甚至更大的整数。N的特定示例包括但不限于,4、8、16、32、以及64。在各种实施例中,源打包数据的宽度可以是64位、128位、。

45、256位、512位或者甚至更宽,但是本发明的范围不限于仅仅这些宽度。在各种实施例中,打包数据元素的宽度可以是8位字节、16位字、或32位双字,但是本发明的范围不限于仅仅这些宽度。通常,在该指令用于字符串和/或文本片段比较的实施例中,数据元素的宽度通常可以是8位字节或16位字,因为大多数感兴趣的字母数字值可以8位字节或至少以16位字表示,但是如果需要(例如,为了与其他操作兼容以避免格式转换,为了效率等),则可使用更宽的格式(例如,32位双字格式)。在一些实施例中,第一和第二源打包数据中的数据元素可以是带符号或无符号的整数。0063响应于该指令,处理器或者其他装置可操作用于生成打包数据结果517并。

46、将其存储在由该指令指定或者以其他方式指示的目的地存储位置516中。在一些实施例中,该指令可使处理器或者其他装置生成所有数据元素与所有数据元素的比较掩码542作为中间结果。所有数据元素与所有数据元素的比较掩码542可包括在第一源打包数据的N个数据元素中的每一个/全部与第二源打包数据的N个数据元素中的每一个/全部之间执行的NXN个比较的NXN个比较结果。即,可执行所有元素与所有元素的比较。0064在一些实施例中,该掩码中的每一比较结果可指示被比较数据元素是否相等的比较结果,并且每一比较结果可以是单独的一位,该位可具有指示被比较数据元素相等的第一二进制值(例如,被设为二进制1或逻辑真),或者具有被比。

47、较数据元素不相等的第二二进制值(例如,被清除为二进制0或逻辑假)。其他协定也是可能的。如所示的,在用于比较第一源打包数据513的第一数据元素5401(表示值“A”)与第二源打包数据515的第一数据元素5411(表示值“B”)的所有数据元素与所有数据元素的比较掩码的右上角示出二进制0,因为这些值不相等。相反,在用于比较第一源打包数据513的第一数据元素5401(表示值“A”)与第二源打包数据515的第二数据元素5412(表示值“A”)的所有数据元素与所有数据元素的比较掩码的该位置左边的一个位置处示出二进制1,因为这些值相等。沿着对角线如一组圆形对角线匹配值序列所示,匹配值序列在所有数据元素与所有。

48、数据元素的比说明书CN104049954A118/34页12较掩码中表现为二进制1。所有数据元素与所有数据元素的比较掩码是任选地在一些实施例中生成的微架构方面,但是无需在其他实施例中生成。相反,可在没有中间结果的情况下生成和存储目的地中的结果。0065再次参考图5,在一些实施例中,要存储在目的地存储位置516中的打包数据结果517可包括N个N位比较掩码的集合。例如,打包数据结果可包括N个打包结果数据元素5441至544N的集合。在一些实施例中,N个打包结果数据元素5441至544N中的每一个可与对应相关位置中的第二源打包数据515的N个打包数据元素5411至541N中的一个相对应。例如,第一打。

49、包结果数据元素5441可对应于第二源的第一打包数据元素5411,第三打包结果数据元素5443可对应于第二源的第三打包数据元素5413,以此类推。在一些实施例中,N个打包结果数据元素544中的每一个可具有N位比较掩码。在一些实施例中,每一N位比较掩码可对应于且指示第二源打包数据515的对应打包数据元素541的比较结果。在一些实施例中,每一N位比较掩码可包括不同的比较掩码位,用于将与第二源打包数据515的关联/对应打包数据元素相比较的第一源打包数据513的N个不同的对应打包数据元素中的每一个。0066在一些实施例中,每一比较掩码位可指示相应比较的结果(例如,如果被比较值相等则为二进制1,或者如果他。

50、们不相等则为二进制0)。例如,N位比较掩码的位K可表示用于比较第一源打包数据的第K个数据元素与整个N位比较掩码对应的第二源打包数据的数据元素的比较结果。至少在概念上,每一掩码位可表示从所有数据元素与所有数据元素的比较掩码542的单独一列起的掩码位序列。例如,第一结果打包数据元素5441包括值(从右到左)“0、1、0、1”,这些值可指示第二源515的第一数据元素5411(对应于N位掩码)中的值“B”不等于第一源的第一数据元素5401中的值“A”,等于第一源的第二数据元素5402中的值“B”,不等于第一源的第三数据元素5403中的值“C”,并且等于第一源的第N个数据元素540N中的值“B”。在一些。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1