《多数据元素与多数据元素比较处理器、方法、系统和指令.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”。在一些。