《打包选择处理器、方法、系统和指令.pdf》由会员分享,可在线阅读,更多相关《打包选择处理器、方法、系统和指令.pdf(61页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104011652 A (43)申请公布日 2014.08.27 C N 1 0 4 0 1 1 6 5 2 A (21)申请号 201180075974.0 (22)申请日 2011.12.30 G06F 9/06(2006.01) G06F 9/30(2006.01) G06F 13/14(2006.01) (71)申请人英特尔公司 地址美国加利福尼亚州 (72)发明人 E乌尔德-阿迈德-瓦尔 R凡伦天 J考博尔圣阿德里安 S赛尔 BL托尔 Z斯波伯 A格雷德斯廷 A鲁本斯坦 (74)专利代理机构上海专利商标事务所有限公 司 31100 代理人张东梅 (54) 发。
2、明名称 打包选择处理器、方法、系统和指令 (57) 摘要 一方面,方法包括接收经掩码的打包旋转指 令。指令指示包括多个打包数据元素的第一源打 包数据、具有多个掩码元素的打包数据操作掩码、 至少一个旋转量和目的地存储位置。响应于指令, 将结果打包数据存储在目的地存储位置。结果打 包数据包括结果数据元素,每个结果数据元素对 应于掩码元素中处于相应的相关位置中的不同的 一个。未被相应掩码元素掩码掉的结果数据元素 包括第一源打包数据的数据元素中处于相应位置 中的已经被旋转的一个数据元素。被相应掩码元 素掩码掉的结果数据元素包括被掩码掉的值。公 开了其它方法、装置、系统和指令。 (85)PCT国际申请进。
3、入国家阶段日 2014.06.26 (86)PCT国际申请的申请数据 PCT/US2011/068242 2011.12.30 (87)PCT国际申请的公布数据 WO2013/101232 EN 2013.07.04 (51)Int.Cl. 权利要求书3页 说明书29页 附图28页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书29页 附图28页 (10)申请公布号 CN 104011652 A CN 104011652 A 1/3页 2 1.一种方法,包括: 接收经掩码的打包旋转指令,所述经掩码的打包旋转指令指示包括多个打包数据元素 的第一源打包数据,指示。
4、具有多个掩码元素的打包数据操作掩码,指示至少一个旋转量,以 及指示目的地存储位置;以及 响应于所述经掩码的打包旋转指令将结果打包数据存储在目的地存储位置,所述结果 打包数据包括多个结果数据元素,每个所述结果数据元素对应于掩码元素中处于相应的相 对位置中的不同的一个,其中未被相应掩码元素掩码掉的结果数据元素包括第一源打包数 据的数据元素中处于相应位置中的已经被旋转的一个数据元素,且其中被相应掩码元素掩 码掉的结果数据元素包括被掩码掉的值。 2.如权利要求1所述的方法,其特征在于,存储包括存储结果打包数据,其中被掩码掉 的结果数据元素包括填零值。 3.如权利要求1所述的方法,其特征在于,存储包括存。
5、储结果打包数据,其中被掩码掉 的结果数据元素包括已经从相应位置中的源数据元素合并的合并值。 4.如权利要求1所述的方法,其特征在于,接收包括接收指示具有掩码元素的打包数 据操作掩码的指令,每个所述掩码元素包括单个位。 5.如权利要求1所述的方法,其特征在于,接收包括接收指示包括第二多个打包数据 元素的第二源打包数据的指令,所述第二多个打包数据元素中的每个数据元素表示旋转 量。 6.如权利要求1所述的方法,其特征在于,接收包括接收具有指示单个旋转量的立即 数的指令。 7.如权利要求1所述的方法,其特征在于,接收包括接收具有旋转量的数据元素广播 的指令的经掩码的打包旋转指令,并且其中所述指令指示表。
6、示旋转量的第二源单个数据元 素。 8.如权利要求7所述的方法,其特征在于,存储包括存储未被掩码掉结果数据元素,所 述结果数据元素包括第一源打包数据的数据元素中处于相应位置中的所述一个数据元素, 所述一个数据元素已经按来自第二源单个数据元素的旋转量的广播复本进行旋转。 9.如权利要求1所述的方法,其特征在于,存储包括存储至少四个结果数据元素,且其 中所述结果数据元素包括四字。 10.如权利要求1所述的方法,其特征在于,存储包括存储至少十六个结果数据元素, 且其中所述结果数据元素各自包括至少32位。 11.一种装置,包括: 多个打包数据寄存器;以及 与所述多个打包数据寄存器耦合的执行单元,所述执行。
7、单元响应于经掩码的打包旋转 指令操作用于将结果打包数据存储在目的地存储位置,所述经掩码的打包旋转指令指示包 括多个打包数据元素的第一源打包数据,指示具有多个掩码元素的打包数据操作掩码,指 示至少一个旋转量,以及指示目的地存储位置,所述结果打包数据包括多个结果数据元素, 每个所述结果数据元素对应于掩码元素中处于相应的相对位置中的不同的一个,其中未被 相应掩码元素掩码掉的结果数据元素包括第一源打包数据的数据元素处于相应位置中的 已经被旋转的一个数据元素,且其中被相应掩码元素掩码掉的结果数据元素包括被掩码掉 权 利 要 求 书CN 104011652 A 2/3页 3 的值。 12.如权利要求11所。
8、述的装置,其特征在于,所述掩码元素中的每一个包括单个位。 13.如权利要求11所述的装置,其特征在于,所述指令指示包括表示旋转量的多个打 包数据元素的第二源打包数据。 14.如权利要求11所述的装置,其特征在于,所述指令包括用于指示单个旋转量的立 即数。 15.如权利要求11所述的装置,其特征在于,所述指令包括具有旋转量的数据元素广 播的指令的经掩码的打包旋转指令,其中所述指令指示表示要广播的旋转量的第二源单个 数据元素。 16.如权利要求15所述的装置,其特征在于,所述执行单元响应于所述指令存储未被 掩码掉的结果数据元素,所述结果数据元素包括第一源打包数据的数据元素中处于相应位 置中的所述一。
9、个数据元素,所述一个数据元素已经按来自第二源单个数据元素的旋转量的 广播复本进行旋转。 17.如权利要求11所述的装置,其特征在于,所述执行单元响应于指令将合并值存储 在要掩码掉的结果数据元素中。 18.如权利要求11所述的装置,其特征在于,所述执行单元响应于指令将零存储在要 掩码掉的结果数据元素中。 19.如权利要求11所述的装置,其特征在于,所述执行单元响应于所述指令存储至少 四个结果数据元素,且其中所述结果数据元素包括四字。 20.如权利要求11所述的装置,其特征在于,所述执行单元响应于指令存储至少十六 个结果数据元素,且其中所述结果数据元素各自包括至少32位。 21.一种系统,包括: 。
10、互连; 与所述互连耦合的处理器,所述处理器处理经掩码的打包旋转指令,所述经掩码的打 包旋转指令指示包括多个打包数据元素的第一源打包数据,指示具有多个掩码元素的打包 数据操作掩码,指示至少一个旋转量,以及指示目的地存储位置,所述处理器响应于所述经 掩码的打包旋转指令操作用于将结果打包数据存储在目的地存储位置,所述结果打包数据 包括多个结果数据元素,每个所述结果数据元素对应于掩码元素中的处于相应的相对位置 中的不同的一个,其中未被相应掩码元素掩码掉的结果数据元素包括第一源打包数据的数 据元素中处于相应位置中的已经被旋转的一个数据元素,且其中被相应掩码元素掩码掉的 结果数据元素包括不是经旋转的源数据。
11、元素的值;以及 与所述互连耦合的动态随机存取存储器(DRAM)。 22.如权利要求21所述的系统,其特征在于,所述掩码元素各自包括单个位,且其中不 是经旋转的源数据元素的值包括填零值或合并值之一。 23.如权利要求21所述的系统,其特征在于,指令包括具有旋转量的数据元素广播的 指令的经掩码的打包旋转指令,所述指令指示表示旋转量的第二源单个数据元素,其中所 述指令导致处理器创建单个数据元素的多个复本。 24.一种制品,包括: 包括一种或多种固体存储材料的机器可读存储介质,所述机器可读存储介质存储有经 权 利 要 求 书CN 104011652 A 3/3页 4 掩码的打包旋转指令, 所述经掩码的。
12、打包旋转指令指示包括多个打包数据元素的第一源打包数据,指示具有 多个掩码元素的打包数据操作掩码,指示至少一个旋转量,以及指示目的地存储位置,并且 所述经掩码的打包旋转指令如果由机器执行导致机器则执行以下操作,包括: 将结果打包数据存储在目的地存储位置,所述结果打包数据包括多个结果数据元素, 每个所述结果数据元素对应于掩码元素中处于相应的相对位置中的不同的一个,其中未被 相应掩码元素掩码掉的结果数据元素包括第一源打包数据的数据元素中处于相应位置中 的已经被旋转的一个数据元素,且其中被相应掩码元素掩码掉的结果数据元素包括不是经 旋转的源数据元素的值。 25.如权利要求24所述的制品,其特征在于,所。
13、述指令包括掩码操作指定符的类型。 26.如权利要求24所述的制品,其特征在于,所述指令包括数据元素广播控制。 27.一种方法,包括: 接收带旋转量的数据元素广播的打包旋转指令,所述指令指示包括多个打包数据元素 的第一源打包数据,指示表示旋转量的第二源单个数据元素,以及指示目的地存储位置; 广播第二源单个数据元素,以创建若干广播的数据元素,广播的数据元素的数量等于 第一源打包数据的打包数据元素的数量;以及 响应于所述指令,将结果打包数据存储在目的地存储位置,所述结果打包数据包括多 个结果数据元素,每个所述结果数据元素对应于第一源打包数据的数据元素中处于相应位 置中的不同的一个,其中所述结果数据元。
14、素中的每一个包括已经按广播的数据元素中的相 应一个旋转的第一源打包数据的相应数据元素。 28.如权利要求27所述的方法,其特征在于,所述指令还指示打包数据操作掩码。 29.如权利要求27所述的方法,其特征在于,所述结果包括至少四个数据元素,且其中 所述结果数据元素各自包括64位。 权 利 要 求 书CN 104011652 A 1/29页 5 打包选择处理器、 方法、 系统和指令 背景技术 技术领域 0001 实施例涉及处理器。具体地,实施例涉及响应于打包选择指令执行打包选择操作 的处理器。 0002 背景信息 0003 许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指。
15、令、向 量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理 器可具有并行执行硬件,该并行执行硬件响应于打包数据指令来同时或并行地执行多个操 作。 0004 多个数据元素可在一个寄存器或存储器位置内被打包为打包数据或向量数据。在 打包数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,256位宽打 包数据寄存器可具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。 每一数据元素可表示单一独立的一段数据(例如,像素颜色、复数的组成部分等),该段数 据可单独地操作和/或与其他数据独立地操作。 附图说明 0005 可通过参考以下描述以及用于。
16、示出实施例的附图最佳地理解本发明。在附图中: 0006 图1是具有含一个或多个打包旋转指令的指令集的处理器的示例实施例的框图。 0007 图2是具有执行单元的指令处理装置的示例实施例的框图,该执行单元可操作用 于执行包含打包旋转指令的示例实施例的指令。 0008 图3是示出可响应于打包旋转指令的实施例执行的打包旋转操作的实施例的框 图。 0009 图4是示出可响应于经掩码的打包旋转指令的实施例执行的经掩码的打包旋转 操作的实施例的框图。 0010 图5是处理经掩码的打包旋转指令的实施例的方法的实施例的流程框图。 0011 图6是示出带旋转量的数据元素广播的打包旋转操作的实施例的框图。 0012。
17、 图7是一种处理带有旋转量的数据元素广播的打包旋转指令的实施例的方法的 实施例的流程框图。 0013 图8是示出带旋转量的数据元素广播的经掩码的打包旋转操作的实施例的框图。 0014 图9是示出任选的经掩码的打包旋转操作的实施例的框图,该经掩码的打包旋转 操作带有要旋转的数据元素的数据元素广播和由立即数指定的旋转量。 0015 图10是具有数据元素广播的经掩码的打包选指令的指令格式的实施例的框图。 0016 图11是一组合适的打包数据操作掩码寄存器的示例实施例的框图。 0017 图12是一组合适的打包数据寄存器的示例实施例的框图。 0018 图13是包括存储一个或多个打包旋转指令的机器可读存储。
18、介质的制品的框图。 说 明 书CN 104011652 A 2/29页 6 0019 图14A是示出根据本发明的实施例的通用矢量友好指令格式及其A类指令模板的 方框图。 0020 图14B是示出根据本发明的实施例的通用矢量友好指令格式及其B类指令模板的 方框图。 0021 图15是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。 0022 图15B是示出根据本发明的实施例的构成完整操作码字段的具有专用矢量友好 指令格式的字段的方框图。 0023 图15C是示出根据本发明的实施例的构成寄存器索引字段的具有专用矢量友好 指令格式的字段的框图。 0024 图15D是示出根据本发明的一个实施。
19、例的构成扩充(augmentation)操作字段的 具有专用矢量友好指令格式的字段的框图。 0025 图16是根据本发明的一个实施例的寄存器架构的方框图。 0026 图17A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。 0027 图17B示出处理器核,该核包括耦合到执行引擎单元的前端单元,并且两者耦合 到存储器单元。 0028 图18A是根据本发明的实施例的连接到管芯上(on-die)互联网络且具有第二级 (L2)高速缓存的本地子集的单处理器核的方框图。 0029 图18B是根据本发明的各实施例的图18A中的处理器核的一部分的展开图。 00。
20、30 图19是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并 且可具有集成图形的处理器的方框图。 0031 图20示出根据本发明的实施例的系统的方框图。 0032 图21示出根据本发明的实施例的第一更具体的示例性系统的方框图。 0033 图22示出根据本发明的实施例的第二更具体的示例性系统的方框图。 0034 图23示出根据本发明的实施例的片上系统(SoC)的方框图。 0035 图24是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制 指令变换成目标指令集中的二进制指令的框图。 具体实施方式 0036 本文中公开的是打包旋转指令,用于执行该打包旋转指令的处理器,。
21、在处理或执 行该打包旋转指令时处理器执行的方法,以及合并一个或多个处理器以执行该打包旋转指 令的系统。在以下描述中,阐述众多具体细节(例如,具体处理器配置、操作序列、指令格 式、数据格式、特定的系统配置、微架构细节等)。然而,在没有这些具体细节的情况下,也可 实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理 解。 0037 图1是具有含一个或多个打包旋转指令103的指令集102的处理器100的示例 实施例的框图。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算 (RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的。
22、处理器中 的任何处理器。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型等计算 说 明 书CN 104011652 A 3/29页 7 机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器 的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入 式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。 0038 处理器具有指令集架构(ISA)101。ISA表示处理器的架构中涉及编程的那部分。 ISA通常包括本地指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以 及处理器的外部输入和输出(I/。
23、O)。ISA与微架构不同,微架构通常表示选择用于实现ISA 的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的ISA。 0039 ISA包括架构可视的寄存器(例如,架构寄存器文件)107。架构寄存器通常表示 管芯上的处理器存储位置。架构寄存器此处也可以被简称为寄存器。短语架构寄存器、寄 存器组、以及寄存器在本申请中用于表示对软件和/或编程者可见(例如,软件可见的)的 寄存器和/或由通用宏指令指定用来标识操作数的寄存器,除非另外指定或清楚地明显可 知。这些寄存器与给定微架构中的其他非架构的或非在架构上可见的寄存器(例如,指令 所使用的临时寄存器,重新排序缓冲器,引退寄存器等等)不同。所。
24、示出的架构寄存器包括 打包数据寄存器108。每个打包数据寄存器可操作用于存储打包数据、矢量数据或者SIMD 数据。在一些实施例中,架构寄存器可任选地包括打包数据操作掩码寄存器,也被简单地称 为掩码寄存器109。 0040 所示出的ISA包括处理器支持的指令集102。指令集的这些指令表示宏指令(例 如,提供给处理器以供执行的指令),与微指令或微操作(例如,处理器的解码器解码宏指 令得到的微指令或微操作)不同。指令集包括一个或多个打包数据旋转指令103。在一些 实施例中,打包旋转指令可包括一个或多个经掩码的打包旋转指令104。在一些实施例中, 打包旋转指令可包括一个或多个带数据元素广播的打包旋转指。
25、令105。在一些实施例中,打 包旋转指令可包括一个或多个带数据元素广播的经掩码的打包旋转指令106。以下进一步 公开打包旋转指令的这些不同类型的各种不同实施例。 0041 处理器还包括执行逻辑110。执行逻辑可操作用于执行或处理指令集的指令(例 如,打包旋转指令104)。 0042 图2是具有执行单元210的指令处理装置200的示例实施例的框图,该执行单元 210可操作用于执行包含打包旋转指令203的示例实施例的指令。在一些实施例中,指令 处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置 200可以是图1的处理器100或类似设备,或者可被包括在图1的处理器100。
26、或类似设备 中。替换地,指令处理装置可被包括在不同的处理器或电子系统中。 0043 指令处理装置200可接收浮点旋转指令203。例如,可从指令获取单元、指令队列 或存储器接收该指令。打包旋转指令可表示由指令处理装置识别并控制该装置执行特定操 作的机器指令、宏指令或控制信号。打包旋转指令可明确指定(例如,通过位或一个或多个 字段)或以其它方式指示(例如,隐含指示)第一源打包数据213,在一些实施例中,可任选 地指定或以其它方式指示第二源打包数据215,且可指定或以其它方式指示目的地存储位 置216,其中存储具有来自第一源打包数据的旋转数据元素的结果打包数据217。如所示, 在一些实施例中,第一源。
27、打包数据213可被存储在第一源打包数据寄存器212中,第二源打 包数据215可被存储在第二源打包数据寄存器214中,结果217可被存储在目的地或第三 打包数据寄存器216中。或者,可将适用于打包数据的存储器位置或其它存储位置用于任 说 明 书CN 104011652 A 4/29页 8 意这些操作数。 0044 所示的指令处理装置包括指令解码单元或解码器210。解码器可接收和解码高级 机器指令或宏指令(如,打包旋转指令203),并且输出一个或多个较低级的微操作、微代码 入口点、微指令或者反映和/或从原始较高级指令导出的其他较低级的指令或控制信号。 一个或多个较低级指令或控制信号可通过一个或多个。
28、较低级(例如,电路级或硬件级)操 作来实现较高级指令的操作。解码器可以使用各种不同的机制来实现,包括但不限于,微代 码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域已知的用于实现 解码器的其他机制。 0045 在其他实施例中,取代具有解码器211,可使用指令仿真器、翻译器、变形器 (morpher)、解释器、或者其他指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是 已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿 真、翻译、变形、解释、或者以其他方式将接收的指令转换成一个或多个对应的导出指令或 控制信号。在其他实施例中,可使用指令。
29、转换逻辑和解码器两者。例如,该装置可具有用于 将接收到的指令转换成一个或多个中间指令的指令转换逻辑、以及用于将一个或多个中间 指令解码成可由该指令处理装置的原生硬件执行的一个或多个较低级指令或控制信号的 解码器。指令变换逻辑中的一些或全部可位于其余指令处理装置的管芯外,诸如在单独的 管芯上或在管芯外的存储器中。 0046 指令处理装置还包括一组打包数据寄存器208。打包数据寄存器可表示在架构上 位于处理器上的(例如,管芯上的)处理器存储位置,每个位置可操作用于存储打包数据或 矢量数据。打包数据寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不 限于任何特定类型的电路。多种不同类型的寄。
30、存器可适用,只要它们能够存储并提供在本 申请中描述的数据。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器 重命名的动态分配的物理寄存器以及其组合。 0047 再次参考图2,执行单元210与打包数据寄存器208耦合。执行单元还与解码器 211耦合。执行单元可从解码器接收一个或多个微操作、微代码进入点、微指令、其他指令或 其他控制信号,它们反映了打包旋转指令203或者是从打包旋转指令203导出的。 0048 响应于打包旋转指令203和/或作为打包旋转指令203的结果(例如,响应于从 指令203导出的一个或多个控制信号),执行单元210可操作来将结果打包数据217存储在 目的地存储位。
31、置216中。如前面提及的,打包旋转指令可明确指定(例如,通过位或一个或 多个字段)或以其它方式指示(例如,隐含指示)第一源打包数据213,在一些实施例中,可 任选地指定或以其它方式指示第二源打包数据215,且可指定或以其它方式指示目的地存 储位置216,其中存储具有来自第一源打包数据的旋转数据元素的结果打包数据217。 0049 作为示例,执行单元可包括算术逻辑单元、逻辑单元、执行单元或包括旋转电路或 其它逻辑的功能单元或类似物。执行单元和/或装置可包括特定或具体的逻辑(例如,可 能与软件和/或固件组合的电路或其它硬件),操作用于执行和/或处理打包旋转指令,并 响应于指令(例如,响应于从指令导。
32、出的一个或多个微指令或其它控制信号)存储结果。 0050 为了避免混淆描述,已示出和描述了相对简单的指令处理装置200。在其他实施例 中,该指令处理装置可任选地包括其他公知组件,诸如举例而言,指令提取单元、指令调度 单元、分支预测单元、指令和数据的高速缓存、指令和数据的转换后备缓冲器(translation 说 明 书CN 104011652 A 5/29页 9 lookaside buffer)、预取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高 级高速缓存、引退单元、寄存器重命名单元、处理器中包含的其他组件、以及上述的各种组 合。实施例可具有多个核、逻辑处理器或执行引擎。可用于。
33、执行本申请中公开的指令实施 例的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全 部中。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特 定组合或配置。 0051 图3是示出可响应于打包旋转指令的实施例执行的打包旋转操作318的实施例的 框图。该指令指定或以其它方式指示包括第一多个打包数据元素A 0 -A N 的第一源打包数据 313,且指定或以其它方式指示包括第二多个打包数据元素B 0 -B N 的第二源打包数据315,其 中N是二或更大的整数。通常,N可等于源打包数据的位的大小除以打包数据元素的位的 大小。在各种实施例中,源打包数据的宽度。
34、可以是64位、128位、256位、512位,但是本发 明的范围不限于仅仅这些宽度。在各种实施例中,打包数据元素的宽度可以是8位字节、16 位字、32位双字或64位四字,但是本发明的范围不限于仅仅这些宽度。在各实施例中,N可 以是2、4、8、16、32或64,但本发明的范围不仅限于这些数量的数据元素。在一些实施例中, 第一和第二源打包数据中的数据元素可以是整数。 0052 响应于打包旋转指令,生成结果打包数据317,并将其存储在目的地存储位置。可 通过打包旋转指令指定或以其它方式指示目的地存储位置。结果打包数据包括多个结果旋 转打包数据元素C 0 -C N 。结果旋转数据元素C 0 -C N 中。
35、的每一个表示按照第二源打包数据315 的打包数据元素B 0 -B N 中的相应一个旋转的第一源打包数据313的打包数据元素A 0 -A N 的相 应一个。第二源打包数据315的打包数据元素B 0 -B N 表示旋转量,而第一源打包数据313的 打包数据元素A 0 -A N 表示要被旋转的数据元素。相应的数据元素表示打包数据内相应位置 中的数据元素。作为示例,C 0 表示按B 0 旋转的A 0 ,C 1 表示按B 1 旋转的A 1 ,C N 表示按B N 旋转 的A N ,依此类推。进行旋转,它表示数据元素内的位被旋转。 0053 作为示例,假设十六位数据元素1111111100000000将被。
36、旋转,旋转方向是向左, 且旋转量为三位,则相应的经旋转的数据元素可以是1111100000000111。注意,被旋转离 开左侧的三个最左侧的1绕回并转入右侧,且所有的其它位向左移动三个位位置。在一些 实施例中,如果旋转量大于数据元素的大小减1(例如,对于双字,大于31,或对于四字,大 于63),则可使用旋转量模数据大小(例如,对于双字,32位,或对于四字,64位),且这可任 选地应用到本文公开的其它旋转操作。为了清楚,在图示中,旋转符号中的箭头指示向左旋 转,然而应理解,在该图示中以及其它图示中,除非明确陈述,否则在所有的实施例中,数据 元素可向左旋转或向右旋转数据元素,和/或沿其最高有效位(。
37、通常在左侧)的方向或沿 其最低有效位(通常在右侧)的方向旋转数据元素。有利地,按第二源打包数据的相应数 据元素指定的旋转量旋转第一源打包数据的数据元素中的每一个的能力允许施加可能的N 种不同的旋转量。或者,如以下进一步解释的,在其它实施例中,可使用单个旋转量,且在指 令的立即数(immediate)中或者作为另一个示例在被广播的单个数据元素中指定该旋转 量。 0054 一些实施例涉及经掩码的打包旋转指令和/或经掩码的打包旋转操作。经掩码的 打包旋转指令可指定或以其它方式指示打包数据操作掩码。打包数据操作掩码在本文中还 可被简单地称为掩码。每个掩码可表示断言操作数或条件控制操作数,它们可对是否对。
38、源 说 明 书CN 104011652 A 6/29页 10 数据元素执行与指令相关联的打包旋转操作、和/或是否将打包旋转操作的结果存储在打 包数据结果中。在一些实施例中,每个掩码可操作用于按结果数据元素粒度对打包旋转操 作进行掩码。每个掩码可允许与其它结果数据元素分开地和/或相独立地预测或条件控制 用于不同结果数据元素的打包旋转操作。掩码可提供某些优点,诸如例如,对打包数据中的 数据元素选择地在需要执行操作时执行操作,而在它们不需要时不执行操作的能力。 0055 掩码可各自包括多个掩码元素、断言元素、条件控制元素或标志。在一个方面,可 与结果数据元素的一对一对应地包括元素或标志(例如,如果有。
39、四个结果数据元素则可以 有四个元素或标志)。每个元素或标志可操作用于对单独的打包数据操作和/或在相应结 果数据元素中存储浮点缩放结果进行掩码。通常,每个元素或标志可以是单个位。单个位 可允许指定两个不同可能性(例如,执行操作对不执行操作,存储操作的结果对不存储操 作的结果等)中的任一个。掩码中的每一位的二进制值可断言或控制是否执行打包旋转操 作和/或是否存储旋转结果。根据一个可能的协定,每个位可分别被置位(即,具有二进制 值1)来允许将打包旋转操作的结果存储在相应结果数据元素中,或清零(即,具有二进制 值0)以不允许将打包旋转操作的结果存储在相应结果数据元素中。 0056 在一些实施例中,可执。
40、行合并-掩码。在合并-掩码中,当对于给定的结果数据元 素操作被掩码掉时,可将来自源打包数据的相应数据元素的值存储在相应的给定结果数据 元素中。例如,如果源存储位置被重新用作目的地存储位置,则相应的目的地数据元素可 保留其最初的源值(即,不利用指令的操作结果更新)。在其它实施例中,可执行填零-掩 码。在填零掩码中,当对于给定的结果数据元素操作被掩码掉时,相应的给定结果数据元素 可被填零,或可将零值存储在相应的给定结果数据元素中。或者,可将其它预定的值存储在 掩码掉的结果数据元素中。 0057 在一些实施例中,可任选地在具有要旋转的数据元素的源打包数据的所有相应数 据元素上执行打包旋转操作,而不管。
41、掩码的相应位如何,但可取决于掩码的相应位而将旋 转结果存储或不存储在结果打包数据中。替代地,在另一实施例中,如果掩码的相应位指定 不将操作的结果存储在打包数据结果中,则打包旋转操作可被任选地省去(即,不执行)。 在一些实施例中,可任选地对被掩码掉元素上的操作阻止异常或违规,或者被掩码掉元素 上的操作可任选地不引起异常或违规。在一些实施例中,对于具有存储器操作数的经掩码 打包旋转指令,可任选地针对掩码掉数据元素抑制存储器错误。 0058 图4是示出可响应于经掩码的打包旋转指令的实施例执行的经掩码的打包旋转 操作的实施例的框图。该指令指定或以其它方式指示包括第一多个打包数据元素A 0 -A N 的。
42、 第一源打包数据413,且指定或以其它方式指示包括第二多个打包数据元素B 0 -B N 的第二源 打包数据415,其中N是二或更大的整数。通常,N可等于源打包数据的位的大小除以打包 数据元素的位的大小。在各种实施例中,源打包数据的宽度可以是64位、128位、256位、512 位,但是本发明的范围不限于仅仅这些宽度。在各种实施例中,打包数据元素的宽度可以是 8位字节、16位字、32位双字或64位四字,但是本发明的范围不限于仅仅这些宽度。在各实 施例中,N可以是2、4、8、16、32或64,但本发明的范围不仅限于这些数量的数据元素。在一 些实施例中,第一和第二源打包数据中的数据元素可以是整数。在本。
43、文公开的其它操作中, 这些特性还可应用于其它打包数据和数据元素。 0059 经掩码的打包旋转指令还指定或以其它方式指示打包数据操作掩码421。打包数 说 明 书CN 104011652 A 10 7/29页 11 据操作掩码可包括用于第一源打包数据中的每个相应数据元素的单个位和/或用于第一 和第二源打包数据中的每个相应数据元素对的单个位。即,在打包数据操作掩码中可以有 用于掩码的N位。最右侧的位对应于A 0 和/或A 0 和B 0 对,最左侧的位对应于A N 和/或A N 和B N 对,依此类推。作为示例,在512位宽打包数据和32位双字数据元素的情况下,打包 数据操作掩码可包括16个1位掩码。
44、位,或者在64位四字数据元素的情况下,掩码可包括八 个1位掩码位。 0060 响应于打包旋转指令,生成结果打包数据417,并将其存储在目的地存储位置。可 通过打包旋转指令指定或以其它方式指示目的地存储位置。如上所述,在经掩码的打包旋 转操作中,打包数据操作掩码421用于断言或条件控制是否将旋转结果存储在结果打包数 据中。在所示的实施例中,掩码位遵循两个可能的协定之一,其中二进制1指示旋转结果被 存储在结果打包数据中,且二进制0指示旋转结果不被存储在结果打包数据中。在替换实 施例中,其它协定也是可能的。结果打包数据包括多个结果打包数据元素。未被掩码掉的 结果数据元素中的每一个(在打包数据操作掩码。
45、的相应位中没有零)表示按照第二源打包 数据415的打包数据元素B 0 -B N 中的相应一个旋转的第一源打包数据413的打包数据元素 A 0 -A N 中的相应一个。在图示给出的示例中,是用于结果数据元素C 0 和C N 的情况。具体地, C 0 包括按B 0 旋转的A 0 ,且C N 包括按B N 旋转的A N 。旋转方向可以向右或者向左。在一些实 施例中,如果旋转量大于数据元素的大小减1(例如,对于双字,大于31,或对于四字,大于 63),则可使用旋转量模数据大小(例如,对于双字,32位,或对于四字,64位)。然而,在数 据元素C 1 中包含掩码掉的值,诸如例如合并或填零值。类似地,对于打。
46、包数据操作掩码中 为二进制0的每个位,可将经掩码掉的值存储在结果打包数据中。 0061 在图4的实施例中,第二源打包数据提供多个可能不同的旋转量。在替换实施例 中,或者与图4所示类似,指令的立即数可提供根据掩码有条件地施加到第一打包数据中 的每个数据元素的单次旋转量。 0062 图5是处理经掩码的打包旋转指令的实施例的方法522的实施例的流程框图。在 各实施例中,方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或 另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法522可由图1的 处理器100、图2的指令处理装置200或类似的处理器或指令处理装置执行。替代地,。
47、方法 522可由处理器或指令处理装置的不同实施例执行。此外,处理器100和指令处理装置200 可执行与方法522的操作和方法相同、类似或不同的操作和方法的实施例。 0063 该方法包括在框523接收经掩码的打包旋转指令。在各个方面,该指令可在处理 器、指令处理装置或者其一部分(例如,解码器、指令变换器等)处接收。在各个方面,指令 可从处理器外的源(例如,从主存储器、盘、或总线或互连)或者从处理器上的源(例如,从 指令高速缓存)接收。经掩码的打包旋转指令可指定或以其它方式指示包括多个打包数据 元素的第一源打包数据。指令还可指定或以其它方式指示具有多个掩码元素的打包数据操 作掩码。指令还可指定或以。
48、其它方式指示至少一个旋转量。指令还可指定或以其他方式指 示其中将存储结果打包数据的目的地存储位置。 0064 在框524处,响应于经掩码的打包旋转指令、或作为经掩码的打包旋转指令的结 果、和/或如经掩码的打包旋转指令所指定的,将结果打包数据存储于所指示的目的地存 储位置中。结果打包数据包括多个结果数据元素,每个结果数据元素对应于相应的相关位 说 明 书CN 104011652 A 11 8/29页 12 置中的掩码元素中的不同的一个。未被相应掩码元素掩码掉的结果数据元素包括已经被旋 转的相应位置中第一源打包数据的数据元素之一。被相应掩码元素掩码掉的结果数据元素 包括被掩码掉的值。 0065 所。
49、示的方法包括从处理器或指令处理装置外部可见的操作(例如,从软件可见)。 在其他实施例中,该方法可任选地包括处理器内出现的一个或多个操作。作为示例,可获取 指令,然后可将该指令解码、转换、仿真或以其它方式转换成一个或多个其它指令或控制信 号。可访问和/或接收源操作数。可启用执行单元,以执行指令指定的操作,并且可执行该 操作(例如,可执行用于实现诸如旋转操作之类的指令操作的微架构操作)。构想执行该操 作的不同微架构方式。 0066 图6是示出带旋转量的数据元素广播的打包旋转操作630的实施例的框图,该操 作可响应于带旋转量的数据元素广播的打包旋转指令的实施例而执行。在期望将单个源数 据元素重用于多个打包数据操作中的每一个的情况下,数据元素广播是有用的。指令可指 示具有多个打包数据元素A 0 -A N 的第一源打包数据613。指令还可指示要广播的第二源单 个数据元素B 615。在一些实施例中,单个数据元素B 615可被存储在存储器631中(例如, 主存储器),然而这不是必须的。该指令还可指示目的地存储位置。 。