打包数据重新安排控制索引前体生成处理器、方法、系统及指令的制作方法

文档序号:6485510阅读:171来源:国知局
打包数据重新安排控制索引前体生成处理器、方法、系统及指令的制作方法
【专利摘要】一个方面的方法包括接收指示目的地存储位置的指令。响应于该指令,将结果存储在该目的地存储位置中。该结果包括:包括至少四个非负整数的序列的结果。一方面,该至少四个非负整数的值不是使用在前指令的结果来计算的。公开了其它方法、装置、系统和指令。
【专利说明】打包数据重新安排控制索引前体生成处理器、方法、系统及 指令
[0001] 背景

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

【权利要求】
1. 一种方法,包括: 接收指令,所述指令指示目的地存储位置;以及 响应于所述指令,将结果存储在所述目的地存储位置中,所述结果包括至少四个非负 整数的序列, 其中所述至少四个非负整数的值不是使用在前指令的结果计算的。
2. 如权利要求1所述的方法,其特征在于,接收包括:接收未指示在架构可见存储位置 中具有多个打包数据元素的源打包数据操作数的指令。
3. 如权利要求1所述的方法,其特征在于,存储结果包括:存储具有数值模式的至少八 个非负整数的序列,并且所述数值模式主要基于所述指令的操作码。
4. 如权利要求1所述的方法,其特征在于,接收包括:接收指示一个或多个数值模式限 定参数的指令,其中所述一个或多个数值模式限定参数中的每一个影响所述至少四个非负 整数中每一个的值。
5. 如上一权利要求所述的方法,其特征在于,存储结果包括:存储具有数值模式的至 少八个非负整数的序列,所述数值模式主要基于所述指令的操作码以及所述一个或多个数 值模式限定参数。
6. 如权利要求1所述的方法,其特征在于,接收包括:接收指示整数偏移量的指令,并 且存储包括:存储至少四个非负整数的序列,所述至少四个非负整数中的最小整数与零相 差所述整数偏移量。
7. 如权利要求1所述的方法,其特征在于,接收包括:接收指示恒定整数跨度的指令, 并且存储包括:存储至少四个非负整数的序列,其中所有连续整数相差所述恒定整数跨度。
8. 如权利要求1所述的方法,其特征在于,存储包括:存储至少四个非负整数的序列, 其中所有连续整数相差恒定跨度,并且接收包括:接收具有固定所有所述连续整数相差所 述恒定跨度的操作码的指令。
9. 如权利要求1所述的方法,其特征在于,存储包括:存储在所述指令执行之前已预先 确定的至少四个非负整数的序列。
10. 如权利要求1所述的方法,其特征在于,存储包括:存储包含至少三十二个非负整 数的序列的结果。
11. 如权利要求1所述的方法,其特征在于,还包括从与正在执行所述指令的执行单元 一起位于管芯上的非架构可见存储位置访问所述至少四个非负整数的序列。
13. -种装置,包括: 目的地存储位置;以及 与所述目的地存储位置耦合的执行单元,所述执行单元响应于指示所述目的地存储 位置的指令而将结果存储在所述目的地存储位置中,所述结果包括至少四个非负整数的序 列, 其中所述执行单元存储包含所述至少四个非负整数的序列的所述结果,而无需从在前 指令的结果来计算所述至少四个非负整数的值。
14. 如权利要求13所述的装置,其中所述执行单元响应于指令而存储所述结果,该指 令未指示在架构可见的存储位置中具有多个打包数据元素的源打包数据操作数。
15. 如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储具 有数值模式的至少八个非负整数的序列,并且所述数值模式主要基于所述指令的操作码。
16. 如权利要求13所述的装置,其特征在于,所述执行单元响应于指令而存储所述结 果,该指令指示一个或多个数值模式限定参数,所述一个或多个数值模式限定参数中的每 一个影响所述至少四个非负整数中每一个的值。
17. 如上一权利要求所述的装置,其特征在于,所述执行单元响应于所述指令而存储具 有数值模式的至少八个非负整数的序列,所述数值模式主要基于所述指令的操作码以及所 述一个或多个数值模式限定参数。
18. 如权利要求13所述的装置,其特征在于,所述指令用于指示整数偏移量,并且所述 执行单元响应于所述指令而存储至少四个非负整数的序列,所述至少四个非负整数中的最 小整数与零相差所述整数偏移量。
19. 如权利要求13所述的装置,其特征在于,所述指令用于指示恒定整数跨度,并且所 述执行单元响应于所述指令而存储至少四个非负整数的序列,其中所有连续整数相差所述 恒定整数跨度。
20. 如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令的操作码 而存储相差恒定跨度的所述至少四个非负整数的所述序列中的所有连续整数。
21. 如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储在 所述指令的执行之前已被预先确定的至少四个非负整数的序列。
22. 如权利要求13所述的装置,其特征在于,所述执行单元响应于所述指令而存储包 含至少32个非负整数的序列的结果。
23. 如权利要求13所述的装置,其特征在于,还包括与所述执行单元一起位于管芯上 的存储有所述至少四个XXXXXXXXXXX的非架构可见的存储位置,并且所述执行单元响应于 所述指令而从所述非架构可见的存储位置访问所述XXXXXXX。
24. -种系统,包括: 互连; 与所述互连耦合的处理器,所述处理器包括目的地寄存器,所述处理器响应于指示所 述目的地寄存器的指令而在所述目的地寄存器中存储结果,所述结果包含至少四个非负整 数的序列, 其中所述处理器响应于未指示在架构可见的存储位置中具有打包数据元素的源打包 数据操作数的指令而存储所述结果;以及 与所述互连相耦合的动态随机存取存储器(DRAM)。
25. 如权利要求24所述的系统,其特征在于,所述至少四个非负整数的序列具有数值 模式,所述数值模式主要基于所述指令的操作码以及由所述指令指示的一个或多个数值模 式限定参数中的一个或多个。
26. 如权利要求24所述的系统,其特征在于,所述处理器响应于指示一个或多个数值 模式限定参数的指令而存储所述结果。
27. 一种制品,包括: 机器可读存储介质,包括一个或多个固态存储材料,所述机器可读存储介质存储指令, 所述指令用于指示目的地存储位置,并且所述指令如果由机器执行则使所述机器执行 包括以下的操作: 确定至少四个非负整数的序列;以及 将结果存储在所述目的地存储位置中,所述结果包括所述至少四个非负整数的序列, 其中所述指令未指示在架构可见存储位置中具有打包数据元素的源打包数据操作数。
28. 如权利要求27所述的制品,其特征在于,所述指令未指示在架构可见存储位置中 的源操作数。
29. 如权利要求27所述的制品,其特征在于,所述指令指示一个或多个数值模式限定 参数。
【文档编号】G06F9/30GK104126168SQ201180076416
【公开日】2014年10月29日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】S·阿布拉罕, R·凡伦天, E·乌尔德-阿迈德-瓦尔, Z·斯波伯, A·格雷德斯廷 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1