《经改进的提取指令的装置和方法.pdf》由会员分享,可在线阅读,更多相关《经改进的提取指令的装置和方法.pdf(67页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104115114 A (43)申请公布日 2014.10.22 C N 1 0 4 1 1 5 1 1 4 A (21)申请号 201180076304.0 (22)申请日 2011.12.23 G06F 9/30(2006.01) G06F 9/305(2006.01) G06F 1/00(2006.01) (71)申请人英特尔公司 地址美国加利福尼亚州 (72)发明人 E乌尔德-阿迈德-瓦尔 R凡伦天 J考博尔圣阿德里安 BL托尔 MJ查尼 Z斯波伯 A格雷德斯廷 (74)专利代理机构上海专利商标事务所有限公 司 31100 代理人何焜 (54) 发明名称 经改。
2、进的提取指令的装置和方法 (57) 摘要 描述了一种装置,该装置包含指令执行逻辑 电路,该指令执行逻辑电路用于执行第一、第二、 第三和第四指令。第一指令和第二指令二者从相 应的第一和第二输入向量的多个第一不重叠部分 中的一个部分中选择第一组输入向量元素。第一 组具有第一位宽。多个第一不重叠部分中的每个 部分具有与第一组相同的位宽。第三指令和第四 指令两者从相应的第三和第四输入向量的多个第 二不重叠部分中的一个部分中选择第二组输入向 量元素。第二组具有比所述第一位宽大的第二位 宽。多个第二不重叠部分中的每个部分具有与第 二组相同的位宽。该装置包括掩码层电路,该掩码 层电路用于在第一粒度下对第一和。
3、第三指令的第 一和第二组进行掩码操作,其中利用该操作产生 的相应结果是第一和第三指令的相应结果。该掩 码层电路还用于在第二粒度下对第二和第四指令 的第一和第二组进行掩码操作,其中利用该操作 产生的相应结果是第二和第四指令的相应结果。 (85)PCT国际申请进入国家阶段日 2014.07.30 (86)PCT国际申请的申请数据 PCT/US2011/067182 2011.12.23 (87)PCT国际申请的公布数据 WO2013/095630 EN 2013.06.27 (51)Int.Cl. 权利要求书2页 说明书31页 附图33页 (19)中华人民共和国国家知识产权局 (12)发明专利申请。
4、 权利要求书2页 说明书31页 附图33页 (10)申请公布号 CN 104115114 A CN 104115114 A 1/2页 2 1.一种装置,包括: 指令执行逻辑电路,用于执行: a)第一指令和第二指令,其中所述第一指令和所述第二指令两者从相应的第一和第二 输入向量的多个第一不重叠部分中的一个部分中选择第一组输入向量元素,所述第一组具 有第一位宽,所述多个第一不重叠部分中的每个部分具有与所述第一组相同的位宽; b)第三指令和第四指令,其中所述第三指令和所述第四指令两者从相应的第三和第四 输入向量的多个第二不重叠部分中的一个部分中选择第二组输入向量元素,所述第二组具 有比所述第一位宽大。
5、的第二位宽,所述多个第二不重叠部分中的每个部分具有与所述第二 组相同的位宽; 掩码层电路,用于:在第一粒度下对所述第一和第三指令的所述第一组和第二组进行 掩码操作,利用所述操作产生的相应结果是所述第一和第三指令的相应结果;以及在第二 粒度下对所述第二和第四指令的所述第一组和第二组进行掩码操作,利用所述操作产生的 相应结果是所述第二和第四指令的相应结果。 2.如权利要求1所述的装置,其特征在于,所述第二组是所述第一组的两倍大。 3.如权利要求2所述的装置,其特征在于,所述第一组是128位,且所述第二组是256 位。 4.如权利要求1所述的装置,其特征在于,所述第一粒度是32位,且所述第二粒度是 。
6、64位。 5.如权利要求1所述的装置,其特征在于,所述向量元素是浮点数据值。 6.如权利要求1所述的装置,其特征在于,如果目的地向量中的元素的位置被掩码,则 所述掩码层电路允许保留所述元素。 7.如权利要求1所述的装置,其特征在于,如果目的地向量中的元素的位置被掩码,则 所述掩码电路用固定值覆写所述元素。 8.一种方法,包括: 执行第一指令,包括:从第一输入向量的多个第一不重叠部分中的一个部分中选择第 一组输入向量,所述第一组具有第一位宽,所述多个第一不重叠部分中的每个部分具有与 所述第一组相同的位宽;以及在第一粒度下对所选择的所述第一组进行掩码操作; 执行第二指令,包括:从第二输入向量的多个。
7、第二不重叠部分中的一个部分中选择第 二组输入向量元素,所述第二组具有所述第一位宽,所述第二输入向量的所述多个第二不 重叠部分中的每个部分具有与所述第一组相同的位宽;以及在第二粒度下对所选择的所述 第二组进行掩码操作,所述第一粒度比所述第二粒度精细; 执行第三指令,包括:从第三输入向量的多个第三不重叠部分中的一个部分中选择第 三组输入向量元素,所述第三组具有第二位宽,所述多个第三不重叠部分中的每个部分具 有与所述第三组相同的位宽,所述第二位宽大于所述第一位宽;以及在所述第二粒度下对 所选择的所述第三组进行掩码操作; 执行第四指令,包括:从第四输入向量的多个第四不重叠部分中的一个部分中选择第 四组。
8、输入向量元素,所述第四组具有所述第二位宽,所述第四输入向量的所述多个第四不 重叠部分中的每个部分具有与所述第三组相同的位宽;以及在所述第一粒度下对所述第四 组进行掩码操作。 权 利 要 求 书CN 104115114 A 2/2页 3 9.如权利要求8所述的方法,其特征在于,所述第一、第二、第三和第四指令由指令执 行流水线中的同一执行单元执行。 10.如权利要求8所述的方法,其特征在于,所述第二组是所述第一组的两倍大。 11.如权利要求10所述的方法,其特征在于,所述第一组是128位,且所述第二组是 256位。 12.如权利要求8所述的方法,其特征在于,所述第一粒度是32位,且所述第二粒度是 。
9、64位。 13.如权利要求8所述的方法,其特征在于,所述向量元素是浮点数据值。 14.如权利要求8所述的方法,其特征在于,所述掩码操作包括以下中的任一项:i)如 果目的地向量中的元素的位置被掩码,则允许保留所述元素;ii)如果目的地向量中的元 素的位置被掩码,则用固定值覆写所述元素。 15.一种装置,包括: 指令执行逻辑电路,用于执行: a)第一指令和第二指令,其中所述第一指令和所述第二指令两者分别根据相应的第一 立即操作数和第二立即操作数从相应的第一输入向量和第二输入向量的多个第一不重叠 部分中的一个部分中选择第一组输入向量元素,所述第一组具有第一位宽,所述多个第一 不重叠部分中的每个部分具。
10、有与所述第一组相同的位宽; b)第三指令和第四指令,其中所述第三指令和所述第四指令两者根据相应的第三立即 操作数和第四立即操作数从相应的第三和第四输入向量的多个第二不重叠部分中的一个 部分中选择第二组输入向量元素,所述第二组具有比所述第一位宽大的第二位宽,所述多 个第二不重叠部分中的每个部分具有与所述第二组相同的位宽; 掩码层电路,用于:在第一粒度下对所述第一和第三指令的所述第一组和第二组进行 掩码操作,利用所述操作产生的相应结果是所述第一和第三指令的相应结果;以及在第二 粒度下对所述第二和第四指令的所述第一组和第二组进行掩码操作,利用所述操作产生的 相应结果是所述第二和第四指令的相应结果。 。
11、16.如权利要求15所述的装置,其特征在于,所述第二组是所述第一组的两倍大。 17.如权利要求16所述的装置,其特征在于,所述第一组是128位,且所述第二组是 256位。 18.如权利要求15所述的装置,其特征在于,所述第一粒度是32位,且所述第二粒度是 64位。 19.如权利要求15所述的装置,其特征在于,所述向量元素是浮点数据值。 20.如权利要求15所述的装置,其特征在于,所述掩码操作包括以下中的任一项:i)如 果目的地向量中的元素的位置被掩码,则允许保留所述元素;ii)如果目的地向量中的元 素的位置被掩码,则用固定值覆写所述元素。 权 利 要 求 书CN 104115114 A 1/3。
12、1页 4 经改进的提取指令的装置和方法 0001 背景 技术领域 0002 本发明一般涉及计算科学,且更具体地涉及经改进的提取指令的装置和方法。 背景技术 0003 图1示出了在半导体芯片上用逻辑电路实现的处理核100的高级图。该处理核包 括流水线101。该流水线由各自被设计成在完全执行程序代码指令所需的多步骤过程中执 行特定步骤的多个级组成。这些级通常至少包括:1)指令取出和解码;2)数据取出;3)执 行;4)写回。执行级对由在先前级(例如在上述步骤1)中所取出和解码的指令所标识并 在另一先前级(例如在上述步骤2)中被取出的数据执行由在先前级(例如在上述步骤 1)中取出和解码的指令所标识的特。
13、定操作。被操作的数据通常是从(通用)寄存器存储 空间102中取出的。在该操作完成时所创建的新数据通常也被“写回”寄存器存储空间(例 如在上述级4)。 0004 与执行级相关联的逻辑电路通常由多个“执行单元”或“功能单元”103_1至103_ N构成,这些单元各自被设计成执行其自身的唯一操作子集(例如,第一功能单元执行整数 数学操作,第二功能单元执行浮点指令,第三功能单元执行从高速缓存/存储器的加载操 作和/或到高速缓存/存储器的存储操作等等)。由所有这些功能单元执行的所有操作的 集合与处理核100所支持的“指令集”相对应。 0005 计算机科学领域中广泛认可两种类型的处理器架构:“标量”和“向。
14、量”。标量处理 器被设计成执行对单个数据集进行操作的指令,而向量处理器被设计成执行对多个数据集 进行操作的指令。图2A和2B呈现了展示标量处理器与向量处理器之间的基本差异的比较 示例。 0006 图2A示出标量AND(与)指令的示例,其中单个操作数集A和B一起进行“与”运 算以产生奇异(或“标量”)结果C(即,ABC)。相反,图2B示出向量AND指令的示例,其 中两个操作数集A/B和D/E并行地分别一起进行“与”运算以同时产生向量结果C和F(即, A.AND.BC以及D.AND.EF)。根据术语学,“向量”是具有多个“元素”的数据元素。例 如,向量VQ,R,S,T,U具有五个不同的元素:Q、R。
15、、S、T和U。示例性向量V的“尺寸”是 5(因为它具有5个元素)。 0007 图1还示出向量寄存器空间104的存在,该向量寄存器空间104不同于通用寄存 器空间102。具体而言,通用寄存器空间102标准地用于存储标量值。这样,当各执行单元中 的任一个执行标量操作时,它们标准地使用从通用寄存器存储空间102调用的操作数(并 将结果写回通用寄存器存储空间102)。相反,当各执行单元中的任一个执行向量操作时,它 们标准地使用从向量寄存器空间107调用的操作数(并将结果写回向量寄存器空间107)。 可类似地分配存储器的不同区域以存储标量值和向量值。 0008 还应注意,存在位于功能单元103_1到10。
16、3_N的相应输入处的掩码逻辑104_1到 说 明 书CN 104115114 A 2/31页 5 104_N,以及位于功能单元103_1到103_N的相应输出处的掩码逻辑105_1到105_N。在各 种实现中,实际上仅实现这些层中的一个层不过这并非严格要求。对于采用掩码的任 何指令,输入掩码逻辑104_1到104_N和/或输出掩码逻辑105_1到105_N可用于控制哪些 元素被该向量指令有效地操作。在此,从掩码寄存器空间106读取掩码向量(例如与从向 量寄存器存储空间107读取的输入数据向量一起),并将该掩码向量呈现给掩码逻辑104、 105层中的至少一层。 0009 在执行向量程序代码的过程。
17、中,每一向量指令无需要求全数据字。例如,一些指令 的输入向量可能仅仅是8个元素,其他指令的输入向量可能是16个元素,其他指令的输入 向量可能是32个元素,等等。因此,掩码层104/105用于标识完整向量数据字中的应用于 特定指令的一组元素,以在多个指令之间实现不同的向量尺寸。通常,对于每一向量指令, 掩码寄存器空间106中所保持的特定掩码模式被该指令调出,从掩码寄存器空间中被取出 并且被提供给掩码层104/105中的任一者或两者,以“启用”针对该特定向量操作的正确元 素集合。 0010 图3a至3e示出了现有技术VINSERT、VEXTRACT和VPERMUTE指令的逻辑操作。注 意,相比于其。
18、实际名称,这些指令的名称已被缩略或以其它方式简化。 0011 图3a示出了现有技术VINSERT指令的逻辑操作。如图3a中观察到的,第一输入 操作数对应于128位的信息301_A,而第二输入操作数对应于256位向量302_A。第三立即 输入操作数(未示出)指定256位向量302_A的哪一半(下半部或右半部)将被第一输入 操作数301_A的128位信息取代。所得的结构被存储在具有256位尺寸的目的地/结果向 量中。128位信息301、输入向量302_A和结果是浮点值,其尺寸可为32位或64位。 0012 图3b示出了现有技术VEXTRACT指令的逻辑操作。如图3b中观察到的,第一输 入操作数对应。
19、于256位向量301_B。第二立即输入操作数(未示出)指定256位输入向量 301_B的哪一半(下半部或右半部)将覆写在目的地寄存器302_B中所存储的256位向量 的最低阶128位上。输入向量301_B向量被结构化为浮点值,其尺寸为32位或64位。该 指令格式可替换地指定存储器中的128位作为目的地,而非目的地寄存器302_B。 0013 图3c至3e示出了三个不同VPERMUTE指令(VPERMILPS、VPERMILPD、VPERM2F128) 的相应逻辑操作。 0014 图3c示出了VPERMILPS指令的逻辑操作。如图3c中观察到的,VPERMILPS指令 接受对应于256位输入向量。
20、的输入操作数301_C,该输入向量具有8个32位(单精度)浮 点值。结果也是256位向量,该256位向量具有8个32位单精度浮点值作为其元素302_C。 第二输入向量(未示出)针对结果的下半部中的4个元素中的每个元素唯一性地指定输入 向量301_C的下半部中的4个元素301_C_1至301_C_4中的哪个元素将向输出元素提供其 内容。 0015 图3c仅针对输出元素302_C_1和302_C_5示出了该操作。此处,输出元素302_ C_1的内容可用输入元素301_C_1至301_C_4中任一者的内容填充。在(未示出的)第二 输入向量中清楚表明输入元素301_C_1至301_C_4中的哪一个被选。
21、择来填充输出元素302_ C_1。此处,第二输入向量包含针对输出向量中的8个元素中的每个元素的单独的2位控制 字段。必须从输入向量301_C的下半部中选取结果302_C的下半部中的输出元素的源。同 样,必须从输入向量301_C的上半部中选取结果302_C的上半部中的输出元素的源。 说 明 书CN 104115114 A 3/31页 6 0016 尽管未在图3c中明确地示出,但输出元素302_C_2至302_C_4中每一者的内容藉 由第二输入向量中包含的信息被唯一性地指定为输入元素301_C_1至301_C_4中的任一 者。类似地,如图3c中观察到的,输出元素302_C_5的内容用输入元素301。
22、_C_5至301_C_8 中任一者的内容来填充。同样,也在(未示出的)第二输入向量中清楚表明输入元素301_ C_5至301_C_8中的哪一个被选择来填充输出元素302_C_5。经由(未示出的)第二输入 向量,将输出元素302_C_6至302_C_8中每一者的内容唯一性地指定为输入元素301_C_5 至301_C_8中的任一者。 0017 VPERMILPS指令的另一版本使用立即操作数而非第二输入向量来选取输入向量 301_C的选择模式。此处,用于目的地的下半部的输入元素选择模式匹配用于目的地的上半 部的输入元素选择模式。 0018 图3d示出了VPERMILPD指令的逻辑操作。如图3d中观察。
23、到的,VPERMILPD指令 接受对应于256位输入向量的输入操作数301_D,该输入向量具有4个64位(双精度)浮 点值。结果也是256位向量302_D,该256位向量具有4个64位双精度浮点值作为其元素。 第二输入向量(未示出)针对结果的下半部中的2个元素中的每个元素唯一性地指定输入 向量301_D的下半部中的2个元素301_D_1至301_D_2中的哪个元素将向输出元素提供其 内容。 0019 如图3d中观察到的,输出元素302_D_1和302_D_2中的每一者可唯一性地用输入 元素301_D_1或301_D_2中的任一者来填充。同样,可用输入元素301_D_3或301_C_4中 的任一。
24、者来唯一性地“填充”输出元素302_D_3和302_D_4中的每一者。在(未示出的)第 二输入向量中清楚表明哪个输入元素被选择来填充特定输出元素。此处,第二输入向量包 含针对输出向量中的4个元素中的每个元素的单独的2位控制字段。 0020 VPERMILPD指令的另一版本使用立即操作数而非第二输入向量来选取输入向量 301_D的选择模式。此处,用于目的地的下半部的输入元素选择模式匹配用于目的地的上半 部的输入元素选择模式。 0021 对于VPERMIPLS和VPERMIPLD指令两者,将结果存储在该指令的指令格式中指定 的向量寄存器中。在利用第二输入向量来确定选择模式时,第一输入向量的源在指令。
25、格式 中被指定并且对应于向量寄存器。在此情形中,第二输入向量的源也在该指令格式中被指 定并且对应于第二向量寄存器或存储器位置中的任一者。相反,如果使用立即操作数来确 定选择模式,则第一输入向量的源在指令格式中被指定并且可以是向量寄存器或存储器位 置。 0022 图3e示出了VPERM2F128指令的逻辑操作。如图3e中观察到的,VPERM2F128指 令接受2个分开的256位向量输入操作数301_E、302_E。可用输入向量301_E、302_E两者 的下半部或上半部301_E_1、301_E_2、302_E_1、302_E_2中的任一者来填充256位结果303_ E的128位下半部303_E。
26、_1和128位上半部303_E_2两者。将该结果存储在该指令的指令 格式中指定的向量寄存器中。两个输入向量301_E、302_E的源在指令格式中被指定并且可 对应于一对向量寄存器或者一个向量寄存器和一个存储器位置。 附图说明 0023 本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考 说 明 书CN 104115114 A 4/31页 7 标号表示类似的元件,其中: 0024 图1示出指令执行流水线; 0025 图2a和2b将标量处理与向量处理进行比较; 0026 图3a至3e示出现有技术的插入、提取和置换指令; 0027 图4a至4p示出经改进的插入、提取和置换指令;。
27、 0028 图5a和5b涉及用于实现经改进的插入、提取和置换指令的执行逻辑电路; 0029 图6A-6B是示出根据本发明的实施例的通用向量友好指令格式及其指令模板的 框图; 0030 图7是示出根据本发明的实施例的示例性专用向量友好指令格式的框图; 0031 图8是根据本发明的一个实施例的寄存器架构的框图; 0032 图9A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名 的无序发布/执行流水线两者的框图; 0033 图9B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性 实施例和示例性的寄存器重命名的无序发布/执行架构核的框图; 0034 图10A-B示出了更。
28、具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑 块之一(包括相同类型和/或不同类型的其他核); 0035 图11是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制 器、并且可具有集成图形器件的处理器的框图; 0036 图12是根据本发明一个实施例的系统的框图; 0037 图13是根据本发明的实施例的第一更具体的示例性系统的框图; 0038 图14是根据本发明的实施例的第二更具体的示例性系统的框图; 0039 图15是根据本发明的实施例的SoC的框图;以及 0040 图16是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制 指令变换成目标指令集中的二进制指令的。
29、框图。 具体实施方式 0041 详细描述 0042 图4a至4e示出了4个新的VINSERT指令的逻辑操作。具体而言,图4a至4d分 别示出了VINSERTF32X4指令、VINSERTF64X2指令、VINSERTF32X8指令和VINSERTF64X4指 令。 0043 图4a示出了VINSERTF32X4指令的逻辑操作。如图4a中观察到的,接收128位结 构401_A作为第一输入操作数。该128位结构包含4个32位单精度浮点值。还接收512位 向量作为第二输入操作数402_A。该512位向量可被视为由4个连贯数据“块”组成,每个 数据块的尺寸为128位。立即操作数(未示出)指示第二操作数。
30、402_A的哪个128位“块” 将被第一输入操作数401_A覆写。第二操作数被覆写的说法在从向量寄存器空间读取的信 息在执行单元中的本地副本被覆写的意义上是成立的。如本领域众所周知的,向量寄存器 空间中的原始源信息通常仅在指令格式指示源寄存器也是目的地寄存器的情况下才被覆 写。 0044 随后向所得的数据结构403_A应用掩码。此处,掩码层404_A接收输入掩码向量 说 明 书CN 104115114 A 5/31页 8 (未示出),其标识所得的数据结构403_A的哪些32位数据值将被写入目的地406_A。在指 令格式中标识掩码向量在掩码寄存器空间(例如,诸如图1的掩码寄存器空间106)中的位。
31、 置以及目的地在向量寄存器空间中的位置两者。也在指令格式中标识第一和第二输入操作 数401_A、402_A的源。在一个实施例中,第一输入操作数401_A可源自于向量寄存器空间 或存储器位置,而第二输入操作数402_A源自于向量寄存器空间。立即操作数也被包括在 指令格式中。在一个实施例中,存储目的地的向量寄存器空间不同于输入操作数所源自的 向量寄存器空间。 0045 在一个实施例中,并非从掩码寄存器空间读取掩码,而是将掩码嵌入在指令自身 中(例如,类似于立即操作数)。在此情形中,指令格式包括包含实际掩码模式的字段。相 反,如果掩码是从掩码寄存器空间取出的,则指令格式包括标识掩码模式存储在掩码寄存。
32、 器空间中何处的地址字段。为简化起见,对下文其余讨论的论述是如同从掩码寄存器空间 取出掩码那样来书写的。然而,读者应理解,这些指令也可实现成使掩码作为一种立即操作 数嵌入在指令中。 0046 在向量友好指令格式的实现中(其实施例在下文更详细地描述),指令格式支持 这两种掩码模式技术。在此情况下,指令格式包括标识将对该指令采取哪种办法的附加字 段(例如,1掩码模式类似于嵌入在指令中的立即操作数,0将从掩码寄存器空间取出 掩码模式)。 0047 分开地或组合地,所应用的掩码操作的类型可以是“合并”或“归零”。在合并掩码 的情形中,结果数据结构的“被掩码”字段不被覆写。确切而言,目的地寄存器中该位置。
33、处 的原始值被保留。相反,在归零掩码的情况,结果数据结构的“被掩码掉(mask out)”字段 用0值来覆写目的地寄存器中的该位置。在各种实施例中(诸如与刚才引述的向量友好指 令格式相关联的实施例中),在指令格式的另一字段中指定应用合并掩码操作还是归零掩 码操作。 0048 以上关于掩码的评述也适用于以下与图4b至4p相关联的指令的讨论。出于方便 起见,以下不再赘述。 0049 图4b示出了VINSERTF64X2指令的逻辑操作。如图4b中观察到的,接收128位结 构401_B作为第一输入操作数。该128位结构包含2个64位双精度浮点值。还接收512位 向量作为第二输入操作数402_B。该51。
34、2位向量可被视为由4个连贯数据“块”组成,每个 数据块的尺寸为128位。立即操作数(未示出)指示第二操作数402_B的哪个128位“块” 将被第一输入操作数401_B覆写。 0050 随后向所得的数据结构403_B应用掩码。此处,掩码层404_B接收输入掩码向量 (未示出),其标识所得的数据结构403_B的哪些64位数据值将被写入目的地406_B。在指 令格式中标识掩码向量在掩码寄存器空间中的位置以及目的地在向量寄存器空间中的位 置两者。也在指令格式中标识第一和第二输入操作数401_B、402_B的源。在一个实施例中, 第一输入操作数401_B可源自于向量寄存器空间或存储器位置,而第二输入操作。
35、数402_B 源自于向量寄存器空间。立即操作数也被包括在指令格式中。在一个实施例中,存储目的 地的向量寄存器空间不同于输入操作数所源自的向量寄存器空间。 0051 图4c示出了VINSERTF32X8指令的逻辑操作。如图4c中观察到的,接收256位结 构401_C作为第一输入操作数。该256位结构包含8个32位单精度浮点值。还接收512位 说 明 书CN 104115114 A 6/31页 9 向量作为第二输入操作数402_C。该512位向量可被视为由2个连贯数据“块”组成,每个 数据块的尺寸为256位。立即操作数(未示出)指示第二操作数402_C的哪个256位“块” 将被第一输入操作数401。
36、_C覆写。 0052 随后向所得的数据结构403_C应用掩码。此处,掩码层404_C接收输入掩码向量 (未示出),其标识所得的数据结构403_C的哪些32位数据值将被写入目的地406_C。在指 令格式中标识掩码向量在掩码寄存器空间中的位置以及目的地在向量寄存器空间中的位 置两者。也在指令格式中标识第一和第二输入操作数401_C、402_C的源。在一个实施例中, 第一输入操作数401_C可源自于向量寄存器空间或存储器位置,而第二输入操作数402_C 源自于向量寄存器空间。立即操作数也被包括在指令格式中。在一个实施例中,存储目的 地的向量寄存器空间不同于输入操作数所源自的向量寄存器空间。 0053。
37、 图4d示出了VINSERTF64X4指令的逻辑操作。如图4d中观察到的,接收256位结 构401_D作为第一输入操作数。该256位结构包含4个64位双精度浮点值。还接收512位 向量作为第二输入操作数402_D。该512位向量可被视为由2个连贯数据“块”组成,每个 数据块的尺寸为256位。立即操作数(未示出)指示第二操作数402_D的哪个256位“块” 将被第一输入操作数401_D覆写。 0054 随后向所得的数据结构403_D应用掩码。此处,掩码层404_D接收输入掩码向量 (未示出),其标识所得的数据结构403_D的哪些64位数据值将被写入目的地406_D。在指 令格式中标识掩码向量在掩。
38、码寄存器空间中的位置以及目的地在向量寄存器空间中的位 置两者。也在指令格式中标识第一和第二输入操作数401_D、402_D的源。在一个实施例中, 第一输入操作数401_D可源自于向量寄存器空间或存储器位置,而第二输入操作数402_D 源自于向量寄存器空间。立即操作数也被包括在指令格式中。在一个实施例中,存储目的 地的向量寄存器空间不同于输入操作数所源自的向量寄存器空间。 0055 图4e至4h示出了4个新的VEXTRACT指令。具体而言,图4e示出了VEXTRACT32X4 指令,图4f示出了VEXTRACT64X2指令,图4g示出了VEXTRACT32X8指令,以及图4h示出了 VEXTRA。
39、CT64X4指令。 0056 图4e示出了VEXTRACT32X4指令的逻辑操作。如图4e中观察到的,VEXTRACT32X4 指令接受512位输入操作数401_E。该512位输入操作数401_E可被视为由4个连贯的128 位数据“块”组成,其中每个块包含4个单精度(32位)浮点数据值。根据VEXTRACT32X4指 令的逻辑操作,“选择”这些128位块中的一个块,向所选择的块应用掩码层402_E,并且将 所得的数据结构写入目的地403_E。 0057 在一个实施例中,立即操作数(未示出)指定这4个128位块中的哪个块将被选 择,输入操作数401_E是从向量寄存器提供的,并且目的地401_E可。
40、以在向量寄存器空间或 存储器位置中。该指令格式标识任何适用的源/目的地向量寄存器和/或存储器位置。在 一个实施例中,目的地被存储在与输入向量所源自的向量寄存器空间不同的向量寄存器空 间中。在该指令的操作期间,从掩码寄存器空间读取掩码向量并将其应用于掩码层402_E。 也在指令格式中提供掩码向量在掩码寄存器空间中的位置。掩码的粒度为32位。即,掩码 向量个体地指定所选择的数据块中的4个32位值中的哪一个将被写入目的地。 0058 图4f示出了VEXTRACT64X2指令的逻辑操作。如图4f中观察到的,VEXTRACT64X2 指令接受512位输入操作数401_F。该512位输入操作数401_F可。
41、被视为由4个连贯的128 说 明 书CN 104115114 A 7/31页 10 位数据“块”组成,其中每个块包含2个双精度(64位)浮点数据值。根据VEXTRACT64X2指 令的逻辑操作,“选择”这些128位块中的一个块,向所选择的块应用掩码层402_F,并且将 所得的数据结构写入目的地403_F。 0059 在一个实施例中,立即操作数(未示出)指定这4个128位块中的哪个块将被选 择,输入操作数401_F是从向量寄存器提供的,并且目的地403_F可以在向量寄存器空间或 存储器位置中。该指令格式标识任何适用的源/目的地向量寄存器和/或存储器位置。在 一个实施例中,目的地被存储在与输入向量。
42、所源自的向量寄存器空间不同的向量寄存器空 间中。在该指令的操作期间,从掩码寄存器空间读取掩码向量并将其应用于掩码层402_F。 也在指令格式中提供掩码向量在掩码寄存器空间中的位置。掩码的粒度为64位。即,掩码 向量个体地指定所选择的数据块中的2个64位值中的哪一个将被写入目的地。 0060 图4g示出了VEXTRACT32X8指令的逻辑操作。如图4g中观察到的,VEXTRACT32X8 指令接受512位输入操作数401_G。该512位输入操作数401_G可被视为由2个连贯的256 位数据“块”组成,其中每个块包含8个单精度(32位)浮点数据值。根据VEXTRACT32X8指 令的逻辑操作,“选。
43、择”这些256位块中的一个块,向所选择的块应用掩码层402_G,并且将 所得的数据结构写入目的地403_G。 0061 在一个实施例中,立即操作数(未示出)指定这2个256位块中的哪个块将被选 择,输入操作数401_G是从向量寄存器提供的,并且目的地403_G可以在向量寄存器空间或 存储器位置中。该指令格式标识任何适用的源/目的地向量寄存器和/或存储器位置。在 一个实施例中,目的地被存储在与输入向量所源自的向量寄存器空间不同的向量寄存器空 间中。在该指令的操作期间,从掩码寄存器空间读取掩码向量并将其应用于掩码层402_G。 也在指令格式中提供掩码向量在掩码寄存器空间中的位置。掩码的粒度为32位。
44、。即,掩码 向量个体地指定所选择的数据块中的8个32位值中的哪一个将被写入目的地。 0062 图4h示出了VEXTRACT64X4指令的逻辑操作。如图4h中观察到的,VEXTRACT64X4 指令接受512位输入操作数401_H。该512位输入操作数401_H可被视为由2个连贯的256 位数据“块”组成,其中每个块包含4个双精度(64位)浮点数据值。根据VEXTRACT64X4指 令的逻辑操作,“选择”这些256位块中的一个块,向所选择的块应用掩码层402_H,并且将 所得的数据结构写入目的地403_H。 0063 在一个实施例中,立即操作数(未示出)指定这2个256位块中的哪个块将被选 择,。
45、输入操作数401_H是从向量寄存器提供的,并且目的地403_H可以在向量寄存器空间或 存储器位置中。该指令格式标识任何适用的源/目的地向量寄存器和/或存储器位置。在 一个实施例中,目的地被存储在与输入向量所源自的向量寄存器空间不同的向量寄存器空 间中。在该指令的操作期间,从掩码寄存器空间读取掩码向量并将其应用于掩码层402_H。 也在指令格式中提供掩码向量在掩码寄存器空间中的位置。掩码的粒度为64位。即,掩码 向量个体地指定所选择的数据块中的4个64位值中的哪一个将被写入目的地。 0064 图4i至4p给出了新的VPERMUTE指令。这些指令包括VPERMW、VPERMD、VPERMQ、 VP。
46、ERMILPS、VPERMILPD。 0065 图4i示出了VPERMW指令的逻辑操作。VPERMW指令接受512位输入向量作为第一 输入操作数401_I。该512位输入向量被视为具有32个16位数据值(字)。掩码层402_ I同样具有该粒度从而以16位粒度进行掩码。即,目的地/结果向量403_I被视为具有32 说 明 书CN 104115114 A 10 8/31页 11 个16位值,并且掩码层402_I具有为结果向量403_I中的每个元素提供个体掩码的能力。 0066 根据VPERMW指令的逻辑操作,结果向量403_I中的每个元素用输入向量401_I中 的32个元素中的任一个元素来填充。针。
47、对结果403_I的最右侧元素403_I_1示出该能力。 此处,如图4i中观察到的,可向掩码层元素402_I_1提供输入向量401_I中的32个元素中 的任一个元素。由此,如果结果元素403_I_1未在掩码元素402_I_1处被“掩码掉”,则结果 元素403_I_1可用输入向量401_I中的32个16位元素中的任一个元素来填充。 0067 尽管未在图4i中明确地示出,但此相同的能力/功能适用于结果向量403_I中的 其余31个元素中的每一者。即,如果结果向量403_I中的任何元素未被掩码层402_I中针 对该结果中的该特定元素的专用掩码元素所掩码掉,则可用输入向量401_I中的任一个16 位值来。
48、填充该结果向量403_I中的该元素。例如,这意味着结果403_I中的两个或更多个 元素可用来自输入向量401_I的同一元素来填充。 0068 在VPERMW指令格式中指定输入向量401_I的源和结果向量403_I的目的地。在 一个实施例中,输入向量401_I是从向量寄存器空间或存储器中的位置提供的,并且结果 被写入不同的向量寄存器空间中的位置。掩码层402_I也是用来自掩码寄存器空间的掩码 向量来提供的,该掩码向量指定结果403_I中的哪些元素将被掩码掉(以及结果403_I中 的哪些元素不会被掩码掉)。 0069 还提供被称为“索引”向量的第二输入向量(未示出),其针对输出向量中的每个 元素清。
49、楚表达哪个具体的输入元素将被用来填充输出向量中的该元素(若其未被掩码掉 的话)。例如,在一个实施例中,索引向量是32元素向量,每个元素处具有至少5位。索引 向量中的每个元素对应于结果中的唯一元素。这5位被用来指定第一输入向量401_I中的 哪个元素将被用来填充该特定结果元素(若其未被掩码掉的话)。 0070 在一个实施例中,还支持VPERMW指令的第二版本,其接受第三输入向量(未示 出),该第三输入向量包含可被用来填充任何输出向量元素位置的32个附加的16位值。实 质上,第三输入向量使得可被用来填充任何输出元素位置的可用16位输入值的数量加倍。 对于VPERMW指令的此版本,刚才提及的索引向量为每个输出位置使用至少6位而非5位。 此处,额外位被用来标识第一输入向量(401_I)还是第三输入向量(未示出)将被用来作 为特定的输出向量403_I元素的源。此版本的第一变型使目的地寄存器空间等同于供应索 引向量的寄存器空间。即,结果被覆写在向量寄存器空间中的索引向量上。此版。