《打包数据重新安排控制索引前体生成处理器、方法、系统及指令.pdf》由会员分享,可在线阅读,更多相关《打包数据重新安排控制索引前体生成处理器、方法、系统及指令.pdf(81页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104126168A43申请公布日20141029CN104126168A21申请号201180076416622申请日20111222G06F9/06200601G06F9/30200601G06F13/1420060171申请人英特尔公司地址美国加利福尼亚州72发明人S阿布拉罕R凡伦天E乌尔德阿迈德瓦尔Z斯波伯A格雷德斯廷74专利代理机构上海专利商标事务所有限公司31100代理人张欣54发明名称打包数据重新安排控制索引前体生成处理器、方法、系统及指令57摘要一个方面的方法包括接收指示目的地存储位置的指令。响应于该指令,将结果存储在该目的地存储位置中。该结果包括包括至少四个。
2、非负整数的序列的结果。一方面,该至少四个非负整数的值不是使用在前指令的结果来计算的。公开了其它方法、装置、系统和指令。85PCT国际申请进入国家阶段日2014082186PCT国际申请的申请数据PCT/US2011/0670132011122287PCT国际申请的公布数据WO2013/095563EN2013062751INTCL权利要求书3页说明书42页附图35页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书42页附图35页10申请公布号CN104126168ACN104126168A1/3页21一种方法,包括接收指令,所述指令指示目的地存储位置;以及响应于所述指令,将。
3、结果存储在所述目的地存储位置中,所述结果包括至少四个非负整数的序列,其中所述至少四个非负整数的值不是使用在前指令的结果计算的。2如权利要求1所述的方法,其特征在于,接收包括接收未指示在架构可见存储位置中具有多个打包数据元素的源打包数据操作数的指令。3如权利要求1所述的方法,其特征在于,存储结果包括存储具有数值模式的至少八个非负整数的序列,并且所述数值模式主要基于所述指令的操作码。4如权利要求1所述的方法,其特征在于,接收包括接收指示一个或多个数值模式限定参数的指令,其中所述一个或多个数值模式限定参数中的每一个影响所述至少四个非负整数中每一个的值。5如上一权利要求所述的方法,其特征在于,存储结果。
4、包括存储具有数值模式的至少八个非负整数的序列,所述数值模式主要基于所述指令的操作码以及所述一个或多个数值模式限定参数。6如权利要求1所述的方法,其特征在于,接收包括接收指示整数偏移量的指令,并且存储包括存储至少四个非负整数的序列,所述至少四个非负整数中的最小整数与零相差所述整数偏移量。7如权利要求1所述的方法,其特征在于,接收包括接收指示恒定整数跨度的指令,并且存储包括存储至少四个非负整数的序列,其中所有连续整数相差所述恒定整数跨度。8如权利要求1所述的方法,其特征在于,存储包括存储至少四个非负整数的序列,其中所有连续整数相差恒定跨度,并且接收包括接收具有固定所有所述连续整数相差所述恒定跨度的。
5、操作码的指令。9如权利要求1所述的方法,其特征在于,存储包括存储在所述指令执行之前已预先确定的至少四个非负整数的序列。10如权利要求1所述的方法,其特征在于,存储包括存储包含至少三十二个非负整数的序列的结果。11如权利要求1所述的方法,其特征在于,还包括从与正在执行所述指令的执行单元一起位于管芯上的非架构可见存储位置访问所述至少四个非负整数的序列。13一种装置,包括目的地存储位置;以及与所述目的地存储位置耦合的执行单元,所述执行单元响应于指示所述目的地存储位置的指令而将结果存储在所述目的地存储位置中,所述结果包括至少四个非负整数的序列,其中所述执行单元存储包含所述至少四个非负整数的序列的所述结。
6、果,而无需从在前指令的结果来计算所述至少四个非负整数的值。14如权利要求13所述的装置,其中所述执行单元响应于指令而存储所述结果,该指令未指示在架构可见的存储位置中具有多个打包数据元素的源打包数据操作数。15如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储具权利要求书CN104126168A2/3页3有数值模式的至少八个非负整数的序列,并且所述数值模式主要基于所述指令的操作码。16如权利要求13所述的装置,其特征在于,所述执行单元响应于指令而存储所述结果,该指令指示一个或多个数值模式限定参数,所述一个或多个数值模式限定参数中的每一个影响所述至少四个非负整数中每一个的值。1。
7、7如上一权利要求所述的装置,其特征在于,所述执行单元响应于所述指令而存储具有数值模式的至少八个非负整数的序列,所述数值模式主要基于所述指令的操作码以及所述一个或多个数值模式限定参数。18如权利要求13所述的装置,其特征在于,所述指令用于指示整数偏移量,并且所述执行单元响应于所述指令而存储至少四个非负整数的序列,所述至少四个非负整数中的最小整数与零相差所述整数偏移量。19如权利要求13所述的装置,其特征在于,所述指令用于指示恒定整数跨度,并且所述执行单元响应于所述指令而存储至少四个非负整数的序列,其中所有连续整数相差所述恒定整数跨度。20如权利要求13所述的装置,其特征在于,所述执行单元响应于所。
8、述指令的操作码而存储相差恒定跨度的所述至少四个非负整数的所述序列中的所有连续整数。21如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储在所述指令的执行之前已被预先确定的至少四个非负整数的序列。22如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储包含至少32个非负整数的序列的结果。23如权利要求13所述的装置,其特征在于,还包括与所述执行单元一起位于管芯上的存储有所述至少四个XXXXXXXXXXX的非架构可见的存储位置,并且所述执行单元响应于所述指令而从所述非架构可见的存储位置访问所述XXXXXXX。24一种系统,包括互连;与所述互连耦合的处理器,所述。
9、处理器包括目的地寄存器,所述处理器响应于指示所述目的地寄存器的指令而在所述目的地寄存器中存储结果,所述结果包含至少四个非负整数的序列,其中所述处理器响应于未指示在架构可见的存储位置中具有打包数据元素的源打包数据操作数的指令而存储所述结果;以及与所述互连相耦合的动态随机存取存储器DRAM。25如权利要求24所述的系统,其特征在于,所述至少四个非负整数的序列具有数值模式,所述数值模式主要基于所述指令的操作码以及由所述指令指示的一个或多个数值模式限定参数中的一个或多个。26如权利要求24所述的系统,其特征在于,所述处理器响应于指示一个或多个数值模式限定参数的指令而存储所述结果。27一种制品,包括机器。
10、可读存储介质,包括一个或多个固态存储材料,所述机器可读存储介质存储指令,所述指令用于指示目的地存储位置,并且所述指令如果由机器执行则使所述机器执行包括以下的操作权利要求书CN104126168A3/3页4确定至少四个非负整数的序列;以及将结果存储在所述目的地存储位置中,所述结果包括所述至少四个非负整数的序列,其中所述指令未指示在架构可见存储位置中具有打包数据元素的源打包数据操作数。28如权利要求27所述的制品,其特征在于,所述指令未指示在架构可见存储位置中的源操作数。29如权利要求27所述的制品,其特征在于,所述指令指示一个或多个数值模式限定参数。权利要求书CN104126168A1/42页5。
11、打包数据重新安排控制索引前体生成处理器、方法、系统及指令0001背景技术领域0002实施例涉及处理器。具体而言,实施例涉及具有指令集的处理器,该指令集包括使用控制索引的指令。0003背景信息0004许多处理器具有单指令多数据SIMD架构。在SIMD架构中,打包数据指令、向量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令来同时或并行地执行多个操作。0005多个数据元素可在一个寄存器或存储器位置内被打包为打包数据或向量数据。在打包数据中,寄存器或者其他存储位置的位可逻辑地分成多个数据元素的序列。例如,256位宽打。
12、包数据寄存器可具有四个64位宽打包数据元素、八个32位宽打包数据元素、十六个16位宽打包数据元素等。每一打包数据元素可表示单独的各段数据例如,像素的红色、绿色、蓝色或颜色分量、或复数的实部或虚部等等,各段数据可单独地操作或与其他数据独立地操作。0006一些SIMD架构具有用于根据控制索引在一个或多个源打包数据内灵活地重新安排打包数据元素的指令。此类指令的示例是置换指令和混洗指令。控制索引控制这些指令如何重新安排打包数据元素。0007附图的若干视图的简要说明0008通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中0009图1是用于处理可用来生成控制索引的指令的处理器的。
13、示例实施例的框图。0010图2是打包数据重新安排控制索引生成指令的示例实施例的处理方法的示例实施例的流程框图。0011图3是打包数据重新安排控制索引前体产生指令的示例实施例的处理方法的示例实施例的流程框图。0012图4是用于处理可用来产生控制索引的指令的指令处理装置的示例实施例的框图。0013图5是存储遵循数值模式的至少四个非负整数的序列的指令的处理方法的示例实施例的流程框图。0014图6是可用来产生控制索引的指令的指令格式的实施例的框图。0015图7A为框图,示出在一些实施例中通过指令存储的整数序列可具有主要或完全基于指令的操作码的数值模式。0016图7B为框图,示出在一些实施例中通过指令存。
14、储的整数序列可具有部分地基于说明书CN104126168A2/42页6指令的操作码并且部分地基于由该指令指示的一个或多个数值模式限定参数的数值模式。0017图8是存储按照数值顺序的至少四个非负整数的序列的指令的处理方法的示例实施例的流程框图。0018图9是示出打包数据重新安排操作的示例实施例的框图,该打包数据重新安排操作使用具有按照数值顺序的偏移连续整数的值的打包数据重新安排控制索引,来从两个经对齐的打包数据中提取未对齐的打包数据以避免需要执行未对齐加载。0019图10是存储按照数值顺序的至少四个非负整数的序列的指令的处理方法的示例实施例的流程框图,其中连续位置中的所有整数相差至少为2的恒定整。
15、数跨度。0020图11是存储按照数值顺序的至少四个非负相同奇偶性例如均为偶数或均为奇数整数的序列的指令的处理方法的示例实施例的流程框图。0021图12是示出打包数据重新安排操作的示例实施例的框图,该打包数据重新安排操作使用打包数据重新安排控制索引以将实数R与虚数IM分开,该打包数据重新安排控制索引具有按照递增数值顺序的连续偶数的值。0022图13是存储按照数值顺序的至少四个整数的序列的指令的处理方法的示例实施例的流程框图,其中整数中的最小整数从零偏移一偏移量,并且其中连续位置中的所有整数彼此相差一跨度。0023图14是用于存储按照数值顺序的连续非负整数的序列的第一控制索引前体产生指令和向每一整。
16、数应用跨度和偏移量的第二指令的处理方法的示例实施例的流程框图。0024图15是存储红、绿、蓝、四元数据的源打包数据的框图。0025图16是包括存储一个或多个整数序列的只读存储器ROM的处理器的示例实施例的框图。0026图17A的框图示出用于存储控制索引和控制索引前体的适当格式的第一示例实施例。0027图17B的框图示出用于存储控制索引和控制索引前体的适当格式的第二示例实施例。0028图18是一组合适的打包数据寄存器的示例实施例的框图。0029图19是包括存储可用来产生控制索引的指令的机器可读存储介质的制品的框图。0030图20A示出示例性AVX指令格式,包括VEX前缀、实操作码字段、MODR/。
17、M字节、SIB字节、位移字段以及IMM8。0031图20B示出来自图20A的哪些字段构成完整操作码字段和基础操作字段。0032图21A是示出根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图。0033图21B是示出根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。0034图22是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。0035图22B是示出根据本发明的实施例的构成完整操作码字段的具有专用向量友好指令格式的字段的框图。0036图22C是示出根据本发明的一个实施例的构成寄存器索引字段的具有专用向量说明书CN104126168A3/42页7友好指令格式的字。
18、段的框图。0037图22D是示出根据本发明的一个实施例的构成扩充操作字段的具有专用向量友好指令格式的字段的框图。0038图23是根据本发明的一个实施例的寄存器架构的框图。0039图24A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。0040图24B示出了包括耦合到执行引擎单元的前端单元的处理器核,且执行引擎单元和前端单元两者都耦合到存储器单元。0041图25A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络的连接及其二级L2高速缓存的本地子集的框图。0042图25B是根据本发明的各实施例的图25A中的处理器核的一部分的展开图。0043。
19、图26是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。0044图27所示的是根据本发明的一个实施例的系统的框图。0045图28所示的是根据本发明的实施例的第一更具体的示例性系统的框图。0046图29所示的是根据本发明的实施例的第二更具体的示例性系统的框图。0047图30所示的是根据本发明的实施例的SOC的框图。0048图31是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。0049详细说明0050在以下描述中,陈述了诸多特定细节例如特定处理器、方法、操作、指令、数值模式以及数据格式。。
20、然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。0051典型地,通过执行对具有源打包数据元素的源打包数据操作数进行操作的一系列通用指令,来从头开始渐进地建立用于置换指令和混洗指令的控制索引。例如,产生控制索引的方法的一部分可包括执行一系列通用打包数据算术指令以对源打包数据元素执行一系列打包数据算术操作,以将源打包数据元素最终转换为控制索引。0052趋向于制约置换和混洗指令以及笼统的其它打包数据重新安排指令的有用性的一个因素是为了产生置换控制索引、混洗控制索引或其它打包数据重新安排控制索引而通常需要按顺序执行。
21、的指令的数量。可能需要若干指令例如大约4到10个指令或甚至更多指令来产生一组控制索引。此外,所需的指令的数量一般趋于随着打包数据元素的总数量增加而增加随着打包数据寄存器的位宽增加,这渐趋成为问题。0053执行这些指令在处理时间、处理器资源使用率以及功耗方面是趋于昂贵的。此外,这些花费渐趋于损或减少由打包数据重新安排指令提供的整体益处。在一些情况下,在已经产生和使用控制索引之后可能丢弃控制索引,在此情况下,如果需求出现,则可能需要从头开始重新产生控制索引。在其它情况下,在已经产生和使用控制索引之后,可将控制索引存储在主存储器中,然后稍后在需要它们时经由系统总线将它们从主存储器取出。这可以有助于避。
22、免每当需要控制索引时从头开始产生控制索引,但从主存储器取出控制索引也趋向于花费大量时间。说明书CN104126168A4/42页80054本申请中公开了可用来产生用于其它指令例如置换指令、混洗指令、其它打包数据重新安排指令以及使用控制索引的其它指令的控制索引的指令。还公开了用于执行上述指令的处理器,在处理或执行上述指令时由处理器执行的方法,以及包含用于处理或执行上述指令的一个或多个处理器的系统。本申请中别处公开的各种处理器和系统是合适的。有利地,这些指令、处理器、方法和系统可有助于减少为了产生控制索引而需要执行的指令的处理时间量和/或数量。0055图1是用于处理可用来产生控制索引的指令的处理器。
23、100的示例实施例的框图。该处理器可以是各种复杂指令集计算CISC处理器、各种精简指令集计算RISC处理器、各种超长指令字VLIW处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,该处理器可以是通用处理器例如通用微处理器,不过这不是必须的。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器DSP以及控制器例如,微控制器,此处仅是列举数例。0056处理器具有指令集架构ISA101。ISA表示处理器的架构中涉及编程的那部分。ISA通常包括原生指令、架构寄存器、数据类型、寻。
24、址模式、存储器架构、中断和异常处理以及处理器的外部输入和输出I/O。ISA与微架构不同,微架构通常表示被选择用于实现ISA的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的ISA。0057ISA包括架构可见的或架构的寄存器例如,架构寄存器组102。架构寄存器表示处理器上的存储位置。架构寄存器此处也可以被简称为寄存器。短语架构寄存器、寄存器组、以及寄存器在本申请中用于表示对软件和/或编程者可见例如,软件可见的的寄存器和/或由通用宏指令指定用来标识操作数的寄存器,除非另外指定或清楚明显可知。这些寄存器与给定微架构中的其他非架构的或在架构上不可见的寄存器例如,指令所使用的临时寄存器、重新排。
25、序缓冲器、引退寄存器、由微指令使用的微架构只读寄存器、等等不同。所示出的架构可见的寄存器包括打包数据寄存器103。每个打包数据寄存器可操作用于存储打包数据、向量数据或者SIMD数据。0058所示出的ISA包括处理器支持的指令集104。指令集的这些指令表示宏指令例如,提供给处理器以供执行的指令,与微指令或微操作例如,处理器的解码器解码宏指令而得到的微指令或微操作不同。该处理器可包括用于执行该指令集的指令的专用或特定逻辑例如可能具有某些固件或软件的电路系统。0059该指令集包括使用控制索引的一个或多个指令105。如上所述,在一些实施例中,这些指令可包括一个或多个置换指令、混洗指令或其它打包数据重新。
26、安排指令106。作为另一选项,如将在下文中进一步讨论,在一些实施例中,这些指令可包括一个或多个聚集指令或加载指令107,该一个或多个聚集指令或加载指令107可操作用于使用控制索引从处理器外的存储器聚集或加载非连续的数据。0060根据本发明的实施例,该指令集还包括分别可用来产生控制索引的一个或多个指令108。在一些实施例中,这些指令可包括一个或多个控制索引产生指令109,其可操作用于产生实际控制索引。每个控制索引产生指令可以可操作用于完全在单个宏指令的执行范围CONNE内产生控制索引。相反,常规地,通常需要执行一系列通用宏指令来逐渐或渐进地从头开始建立控制索引。说明书CN104126168A5/。
27、42页90061在一些实施例中,指令可包括一个或多个控制索引前体产生指令110,所述指令不产生实际控制索引,而产生控制索引前体。每个控制索引前体产生指令可操作用于完全在单个宏指令的执行范围内产生控制索引前体。不同于需要从头开始产生实际控制索引,控制索引前体可用作有用的起始点或起步HEADSTART值,通过一个或多个其它指令可将该起始点或起步值高效地转换成实际控制索引。有利地,与从头开始相比,前体的使用可允许更迅速地和/或利用更少指令来产生实际控制索引。0062处理器还包括执行逻辑111。执行逻辑可操作用于执行或处理指令集的指令。0063图2是打包数据重新安排控制索引产生指令的示例实施例的处理方。
28、法212的示例实施例的流程框图。在框213接收打包数据重新安排控制索引产生指令。所接收的指令指定或以其它方式指示第一目的地存储位置。在一些方面中,可通过该指令的编码的多个位或一个或多个字段来明确地指定第一目的地存储位置。在其它方面中,第一目的地存储位置可以是对该指令隐含的。0064在框214,响应于打包数据重新安排控制索引产生指令和/或作为其结果,将结果存储在第一目的地存储位置中。该结果包括表示打包数据重新安排控制索引的至少四个非负整数的序列。上述至少四个整数典型地具有多个不同的值即它们不全是相同的整数值。在多个实施例中,该序列可包括表示打包数据重新安排控制索引的至少8个、至少16个、至少32。
29、个、或至少64个非负整数。该结果和/或整数序列可以是本申请中别处公开的结果和/或整数序列中的任一个。在一些实施例中,可完全在单个宏指令的执行的范围内产生该结果和/或整数序列例如,整数的值可能不依赖于该程序流中的任何先前指令。0065为了进一步说明某些概念,并且虽然本发明不限于此方面,在框215处接收打包数据重新安排指令。在多个方面中,该指令可以是置换指令、混洗指令、或可操作用于根据打包数据重新安排控制索引来重新安排一个或多个源打包数据中的数据元素的另一类型的打包数据重新安排指令。该指令指示打包数据重新安排控制索引例如指定第一目的地存储位置。该指令还指定或以其它方式指示具有打包数据元素的至少一个。
30、源打包数据,并指定或以其它方式指示第二目的地存储位置。0066在框216,响应于打包数据重新安排指令和/或作为其结果,将打包数据结果存储在第二目的地存储位置中。打包数据结果包括来自至少一个源打包数据的根据打包数据重新安排控制索引重新安排的数据元素。在一些实施例中,如同许多置换和混洗指令的情况,打包数据重新安排控制索引可标识、选择或以其它方式对至少一个源打包数据内的特定数据元素建立索引。可将有索引的数据元素存储在与索引在位置上对应的结果数据元素中。0067图3是打包数据重新安排控制索引前体产生指令的示例实施例的处理方法317的示例实施例的流程框图。在框318接收打包数据重新安排控制索引前体产生指。
31、令。所接收的指令指定或以其它方式指示目的地存储位置。0068在框319,响应于打包数据重新安排控制索引前体产生指令和/或作为其结果,将结果存储在目的地存储位置中。该结果包括表示打包数据重新安排控制索引前体的至少四个非负整数的序列。上述至少四个整数典型地具有多个不同的值。在多个实施例中,该序列可包括表示打包数据重新安排控制索引前体的至少8个、至少16个、至少32个、或至少64个非负整数。该结果和/或整数序列可以是本申请中别处公开的结果和/或整数序列中的任一个。在一些实施例中,可完全在单个宏指令的执行的范围内产生该结果和/或整数说明书CN104126168A6/42页10序列例如,整数的值可能不依。
32、赖于该程序流中的任何先前指令。0069为了进一步说明某些概念,并且虽然本发明不限于此方面,但在框320,执行至少一个附加指令例如至少一个通用算术指令的执行,以将打包数据重新安排控制索引前体转换成打包数据重新安排控制索引。至少一个附加指令中的第一指令可将目的地存储位置指示为打包数据重新安排控制索引前体的源。0070然后,在框321,可执行指示打包数据重新安排控制索引的打包数据重新安排指令。打包数据重新安排指令的操作可以类似于先前描述的操作。0071在图2和3中,已经示出了框215、216、320和321处的操作,以更好地说明某些概念。然而,应理解本发明不限于在这些框处执行的操作。其它实施例涉及各。
33、个打包数据重新安排控制索引产生指令的方法和操作,另外的其它实施例涉及各个打包数据重新安排控制索引前体产生指令的方法和操作,这些方法和操作不限于其它后续指令的操作。0072图4是指令处理装置400的示例实施例的框图。指令处理装置可以是处理器,或可以是处理器的部分。例如,在一些实施例中,指令处理装置可以是图1的处理器100或类似设备,或者可以是图1的处理器100或类似设备的部分。替代地,指令处理装置可被包括在不同的处理器或电子系统例如本申请中公开的其它处理器或系统之一之中。0073指令处理装置可接收可用来产生控制索引的指令408。该指令可表示本申请别处公开的可用来产生控制索引的指令的多个实施例中的。
34、任一个实施例。该指令可表示机器指令、宏指令或类似的控制信号。指令处理装置可具有专用的或特定的电路或其它逻辑例如,可能与固件和/或软件相结合的硬件,其可操作用于处理指令和/或响应于该指令、作为该指令的结果和/或根据该指令来存储结果。0074所示出的指令处理装置包括指令解码器422。解码器可接收和解码高级机器指令或宏指令,并且输出一个或多个较低级的微操作、微代码入口点、微指令或者反映和/或源自于原始较高级指令的其他较低级的指令或控制信号。这一个或多个较低级指令或控制信号可通过一个或多个较低级例如,电路级或硬件级操作来实现较高级指令的操作。解码器可以使用各种不同的机制来实现,包括但不限于,微代码只读。
35、存储器ROM、查找表、硬件实现、可编程逻辑阵列PLA和本领域已知的用于实现解码器的其他机制。0075替换地,代替具有解码器422,在一个或多个其它实施例中,该装置可具有指令仿真器、转换器、变形器MORPHER、解释器或者其他指令变换逻辑。各种不同类型的指令变换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令变换逻辑可接收指令,并且仿真、转换、变形、解释、或者以其他方式将该指令转换成一个或多个对应的衍生指令或控制信号。在又一个其它实施例中,指令处理装置可具有指令变换逻辑和解码器二者。例如,该指令处理装置可具有用于将接收到的指令变换成一个或多个中间指令的指令变换逻辑、以及用。
36、于将一个或多个中间指令解码成可由该指令处理装置的原生硬件执行的一个或多个较低级指令或控制信号的解码器。指令变换逻辑中的一些或全部可位于其余指令处理装置的管芯外,诸如在单独的管芯上或在管芯外的存储器中。0076再次参考图4,可用来产生控制索引的指令408明确地例如通过一个或多个字段指定或以其它方式例如隐含地指示指示目的地存储位置427。如所示,在一些实施例中,目的地存储位置可以在指令处理装置的一组打包数据寄存器403内。替换地,目的地存储位置可以是另一个寄存器或存储器位置。打包数据寄存器是架构可见的位于处理器上说明书CN104126168A107/42页11的存储位置,其可通过使用公知技术以不同。
37、方式实现于不同的微架构中,并且不限于任何已知的特定类型的电路。各种不同类型的寄存器是适用的,只要它们能够存储并提供在本申请中描述的数据。合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、及其组合。0077指令处理装置还包括执行单元423。执行单元与解码器422和目的地存储位置427耦合。执行单元可从解码器接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了指令408或者是从指令408导出的。作为示例,执行单元可包括算术逻辑单元、逻辑单元、算术单元、功能单元或类似物。执行单元可包括可能带有其它逻辑例如软件、固件或组合的专用或特定硬。
38、件逻辑例如集成电路,其可操作用于执行指令例如执行一个或多个微指令和/或存储响应于该指令的结果。0078执行单元用于响应于指令408和/或作为指令408的结果将结果428存储在目的地存储位置427中。如图所示,在多个实施例中,该结果可包括至少四个整数的序列。在指令408是控制索引产生指令的实施例中,每个整数可表示控制索引。在指令408是控制索引前体产生指令的实施例中,每个整数可表示控制索引前体。0079在一些实施例中,执行单元可包括用于计算至少四个整数的序列的计算逻辑424。这些计算逻辑可以是专用或特定电路例如,用于使用列扫描方法来计算整数、迭代地计算整数等等。在其它实施例中,执行单元可响应于该。
39、指令从存储器426例如与执行单元一起在管芯上的非架构可见的只读存储器ROM访问至少四个整数的序列的已有副本425。例如,参见下文对图16的讨论。在这些实施例中的任一实施例中,通常不从管芯外的主存储器或经由系统总线来访问该整数序列。0080在一些实施例中,该结果可包括遵循数值模式的至少4个、至少8个、至少16个、至少32个或至少64个非负整数的序列。在一些实施例中,遵循数值模式的这些整数可以是按照数值顺序的连续非负整数例如0、1、2、3、4、5、6和7。在其它实施例中,遵循数值模式的这些整数可以是按照数值顺序的非负整数,其中处于连续位置的所有整数相差至少为2的恒定整数跨度。在一些实施例中,该跨度。
40、可等于2,并且整数序列可以是按照数值顺序的连续相同奇偶性整数的序列。例如,连续相同奇偶性整数可以是连续的偶数例如0、2、4、6、8、10、12和14或连续的奇数例如1、3、5、7、9、11、13和15。在其它实施例中,跨度N可以大于2例如跨度可以是3、4、8、16等等,并且整数序列可包括该跨度的连续整数倍数例如0、N、2N、3N、4N、5N、6N和7N。0081在一些实施例中,该指令可明确地指定或以其它方式指示一个或多个数值模式限定参数例如整数偏移量、恒定整数跨度、整数轮换量INTEGERROTATIONAMOUNT、整数偏移量和恒定整数跨度、等等。在一些实施例中,该指令可指示正整数偏移量K,。
41、并且整数中的最小整数可从零偏移该整数偏移量例如在连续整数K、K1、K2、K3、K4、K5、K6和K7的情况下。在一些实施例中,该指令可指示正整数偏移量K和恒定的整数跨度N,并且这些整数可以是从零偏移的该跨度的连续整数倍数例如K、NK、2NK、3NK、4NK、5NK、6NK以及7NK。替代地,结果和/或至少四个整数的序列可以是本申请中别处针对可用来产生控制索引的指令的多个实施例所公开的结果和/或至少四个整数的序列中的任一个。在一些实施例中,数值模式完全或至少主要基于指令的操作码或操作码及一个或多个数值模式限定参数,或通过操作码或操作码及一个或多个数值模式限定参数而说明书CN104126168A1。
42、18/42页12被固定。在另外的实施例中,整数序列不需要遵循数值模式例如它们可能看起来是随机的。0082为了避免混淆描述,已示出和描述了相对简单的指令处理装置400。在其他实施例中,该指令处理装置可任选地包括其他公知组件,诸如举例而言,指令取出单元、指令调度单元、分支预测单元、指令和数据的高速缓存、指令和数据的转换后备缓冲器TRANSLATIONLOOKASIDEBUFFER、预取缓冲器、微指令队列、微指令定序器、总线接口单元、二级或更高级高速缓存、引退单元、寄存器重命名单元、处理器中包含的其他组件、以及上述的各种组合。实施例可具有多个核、逻辑处理器或执行引擎。可操作用于执行本申请中公开的指令。
43、实施例的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。应理解,实际上在处理器中存在这些组件的多种不同的组合和配置,并且本发明的范围不限于任何特定的组合或配置。0083图5是用于产生控制索引的指令的处理方法530的示例实施例的流程框图,该指令存储遵循数值模式的至少四个非负整数的序列。在框531,接收该指令。该指令指定或以其它方式指示目的地存储位置。0084在框532,响应于该指令和/或作为其结果,将结果存储在目的地存储位置中。该结果包括遵循数值模式的至少四个整数的序列。在多个实施例中,该结果可包括遵循数值模式的至少8个、至少16个、至少32个、至少64个或甚至。
44、更多个非负整数的序列。该整数序列可以是遵循本申请中别处公开的多种数值模式的整数序列中的任一个。通常,上述整数中的至少两个、至少四个、至少一半或甚至全部具有不同的值即上述整数典型地不全相同。0085图6是可用来产生控制索引的指令608的指令格式的实施例的框图。该指令格式包括操作码633。操作码可表示该指令格式的用于标识该指令的多个位或一个或多个字段。该指令格式还可包括目的地存储位置634。在所示实施例中,该指令格式包括该指令格式中的用于明确地指定目的地存储位置的多个位或一个或多个字段。替代地,该目的地存储位置可以是对该指令隐含的。0086在一些实施例中,该指令格式未明确地指定、隐含地指示或以其它。
45、方式指示具有将要由指令635操作的打包数据元素的架构可见的源存储位置例如打包数据寄存器或主存储器位置。在本发明的实施例中,由本申请中公开的指令存储的整数序列、控制索引以及控制索引前体不是从架构可见的源存储位置中的打包数据元素计算得出或以其它方式导出的。作为对比,如背景技术部分中所讨论,常规地,典型地通过执行对架构可见的源打包数据寄存器中的打包数据元素进行操作、直到将打包数据元素最终转换成置换或混洗控制索引的一系列通用指令例如通用打包数据算术指令,来从头开始逐渐建立置换和混洗控制索引。在本发明的实施例中,由本申请中公开的指令存储的整数序列、控制索引以及控制索引前体完全在单个指令的执行范围内产生,。
46、并且不基于按照程序顺序的任何先前指令的结果。0087在一些实施例中,该指令格式可具有用于明确地指定一个或多个数值模式限定参数636的一个或多个源操作数和/或一个或多个立即数。替代地,一个或多个数值模式限定参数可由该指令隐含地指示例如通过由该指令隐含地指示的寄存器来提供。一个或多个模式限定参数中的每一个可影响作为指令的结果而存储的结果或整数序列的数值模式。说明书CN104126168A129/42页13一个或多个模式限定参数中的每一个可影响该序列或结果中的每个整数的值。一个或多个模式限定参数中的每一个可用于对该指令隐含的数值模式限定方程或关系进行求值。合适的数值模式限定参数的几个代表性示例包括但。
47、不限于从零的整数偏移量、整数跨度、整数轮换量以及上述参数的组合例如从零的整数偏移量以及整数跨度。0088在其它实施例中,该指令可不指定或以其它方式指示任何数值模式限定参数。在一些实施例中例如在该指令不指定或以其它方式指示任何数值模式限定参数的实施例中,该指令可不具有例如指定或以其它方式指示任何源操作数637。0089图7A是框图,示出在一些实施例中,通过指令708A存储在目的地存储位置727A中的结果728A中的整数序列740A可具有完全或至少主要基于738该指令的操作码733A的数值模式。该指令具有操作码和用于指定目的地存储位置727A的位或一个或多个字段734A。注意,本实施例的指令不指定。
48、或以其它方式指示任何数值模式限定参数,或用于该目的的任何源操作数。该指令的执行导致在目的地存储位置中存储该结果。该结果包括具有该数值模式的整数序列。在这些实施例中,整数序列的数值模式完全地或至少主要地基于该指令的操作码。在这些实施例中,整数序列的数值模式对于该指令的操作码是固定或恒定的。例如,该序列中的连续整数之间的差可完全地或至少主要地基于该指令的操作码,和/或对于该指令的操作码是固定或恒定的。在标识操作码之后,整数序列和它们的数值模式可为固定的即可不依赖于该指令的任何源操作数。在一些实施例中,该指令/操作码可仅能够存储一个特定的整数序列和/或一个特定的数值模式。作为比较,当通用算术指令对源。
49、打包数据进行操作以产生置换或混洗控制索引时,置换或混洗控制索引不具有完全或甚至主要基于通用算术指令的操作数的数值模式,而是具有基于源打包数据的数值模式。0090图7B是框图,示出由指令708B存储在目的地存储位置727B中的结果728B中的整数序列740B可具有部分地基于该指令的操作码733B并且部分地基于739由该指令指示的一个或多个数值模式限定参数736的数值模式。该数值模式完全地或至少主要地基于操作码和一个或多个数值模式限定参数。该指令具有操作码、用于指定目的地存储位置727B的位或一个或多个字段734B,并且指定或以其它方式指示一个或多个数值模式限定参数736。该指令的执行导致在目的地存储位置中存储该结果。该结果包括具有该数值模式的整数序列。在这些实施例中,整数序列的数值模式部分地基于指令的操作码并且部分地基于由该指令指示的一个或多个数值模式限定参数,但完全地或至少主要地基于操作码和一个或多个数值模式限定参数即,不基于由先前指令作为结果存储的源打包数据。0091图8是处理可用于产生控制索引的指令的方法830的示例实施例的流程框图,该指令存储按照数值顺序的至少四个连续非负整数的序列。在框831,接收该指令。该指令指定或以其它方式指示目的地存储位置。0092在框832,响应于该指令和/或作为其结果,将结果存储在目的地存储位置中。该结果包括按照数值顺序的至少四个连续非负整数。