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