《用于执行使用掩码的向量打包一元编码的系统、装置和方法.pdf》由会员分享,可在线阅读,更多相关《用于执行使用掩码的向量打包一元编码的系统、装置和方法.pdf(48页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104126166A43申请公布日20141029CN104126166A21申请号201180076391X22申请日20111223G06F9/06200601G06F9/30200601G06F9/30520060171申请人英特尔公司地址美国加利福尼亚州72发明人E乌尔德阿迈德瓦尔T威尔豪姆74专利代理机构上海专利商标事务所有限公司31100代理人姬利永54发明名称用于执行使用掩码的向量打包一元编码的系统、装置和方法57摘要本发明描述响应于单个使用掩码的向量打包一元编码指令在计算机处理器中执行使用掩码的向量打包一元编码的系统、装置和方法的实施例,该指令包括源向量寄存器。
2、操作数、目的地写掩码寄存器操作数和操作码。85PCT国际申请进入国家阶段日2014081586PCT国际申请的申请数据PCT/US2011/0672572011122387PCT国际申请的公布数据WO2013/095662EN2013062751INTCL权利要求书2页说明书23页附图22页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书23页附图22页10申请公布号CN104126166ACN104126166A1/2页21一种响应于单个使用掩码的向量打包一元编码指令在计算机处理器中执行使用掩码的向量打包一元编码的方法,所述指令包括源向量寄存器操作数、目的地写掩码寄存器操。
3、作数和操作码,所述方法包括以下步骤执行所述单个使用掩码的向量打包一元编码指令,以确定所述源向量寄存器操作数的每个打包数据元素位置中的一元编码值;如果可能,以逐位格式将每个所确定的一元编码值存储到所述目的地掩码寄存器中。2如权利要求1所述的方法,其特征在于,每个所确定的一元编码值以以下格式存储写掩码中其最高有效位位置为1值,且在目的地写掩码寄存器中有效性低于所述1值位位置的位位置中零个或更多个0跟随所述1值。3如权利要求1所述的方法,其特征在于,所述源向量寄存器的最低有效打包数据元素位置的一元编码值被编码在所述目的地写掩码寄存器的最低有效位中。4如权利要求1所述的方法,其特征在于,所述目的地写掩。
4、码寄存器是16位。5如权利要求1所述的方法,其特征在于,所述目的地写掩码寄存器是64位。6如权利要求1所述的方法,其特征在于,如果不能以逐位格式存储所有所确定的一元编码值,输出编程器可见的异常。7如权利要求1所述的方法,其特征在于,所述执行和储存步骤还包括将所述源向量寄存器的数据元素位置设置为最低有效数据元素位置;确定所述数据元素位置的值;判断所述目的地写掩码寄存器中是否有足够的未使用位位置来写入所述数据元素位置的一元编码值;如果所述目的地写掩码寄存器中没有足够的未使用位位置来写入所述数据元素位置的一元编码值,输出异常以指示所述指令不能按需完成;以及如果在所述目的地写掩码寄存器中有足够的未使用。
5、位位置来写入所述数据元素位置的一元编码值,将0写入到所述目的地写掩码寄存器的值减1个未使用最低有效数据元素位置中,并且将1写入下一最低有效未使用数据元素位置中。8如权利要求7所述的方法,其特征在于,进一步包括在写入所述一元编码值之后,判断所述目的地写掩码寄存器中是否剩余足够的未使用数据元素位置来写入另一一元编码值;如果在所述目的地写掩码寄存器中剩余足够的未使用数据元素位置来写入另一一元编码值,确定所述源向量寄存器中下一最低有效数据元素位置的值;如果在所述目的地写掩码寄存器中没有剩余足够的未使用数据元素位置来写入另一一元编码值,输出编码器可见的异常。9一种制品,包括其上存储指令表示的有形机器可读。
6、存储介质,其中所述指令的格式指定向量寄存器作为其源操作数并且指定单个写掩码寄存器作为其目的地,所述指令格式包括操作码,所述操作码响应于单个指令的单次发生,指示机器导致如下操作确定所述源向量寄存器操作数的每个打包数据元素位置的一元编码值,以及如果可能,以逐位格式将每个所确定的一元编码值存储到所述目的地掩码寄存器中。10如权利要求9所述的制品,其特征在于,每个所确定的一元编码值以以下格式存权利要求书CN104126166A2/2页3储写掩码中其最高有效位位置为1值且在所述目的地写掩码寄存器中有效性低于所述1值位位置的位位置中零个或更多个0值跟随所述1值。11如权利要求9所述的制品,其特征在于,所述。
7、源向量寄存器的最低有效打包数据元素位置的一元编码值被编码在所述目的地写掩码寄存器的最低有效位中。12如权利要求9所述的制品,其特征在于,所述目的地写掩码寄存器是16位。13如权利要求9所述的制品,其特征在于,所述目的地写掩码寄存器是64位。14如权利要求9所述的制品,其特征在于,如果不能以逐位格式存储所有所确定的一元编码值,输出编程器可见的异常。15如权利要求9所述的制品,其特征在于,所述确定和存储包括将所述源向量寄存器的数据元素位置设置为最低有效数据元素位置;确定所述数据元素位置的值;判断所述目的地写掩码寄存器中是否有足够的未使用位位置以写入所述数据元素位置的一元编码值;如果所述目的地写掩码。
8、寄存器中没有足够的未使用位位置来写入所述数据元素位置的一元编码值,输出异常以指示所述指令不能按需完成;以及如果在所述目的地写掩码寄存器中有足够的未使用位位置来写入所述数据元素位置的一元编码值,将0写入到所述目的地写掩码寄存器的值减1个未使用最低有效数据元素位置中,并且将1写入下一最低有效未使用数据元素位置中。16如权利要求9所述的制品,其特征在于,还包括在写入所述一元编码值之后,判断所述目的地写掩码寄存器中是否有足够的未使用数据元素位置来写入另一一元编码值;如果在所述目的地写掩码寄存器中剩余足够的未使用数据元素位置来写入另一一元编码值,确定所述源向量寄存器中下一最低有效数据元素位置的值;如果在。
9、所述目的地写掩码寄存器中没有剩余足够的未使用数据元素位置来写入另一一元编码值,输出编码器可见的异常。17一种装置,包括硬件解码器,用于解码单个使用掩码的向量打包一元编码指令,所述指令包括源向量寄存器操作数、目的地写掩码寄存器操作数和操作码;执行逻辑,用于确定所述源向量寄存器操作数的每个打包数据元素位置的一元编码值,并且如果可能,以逐位格式将每个所确定的一元编码值存储到所述目的地掩码寄存器中。18如权利要求17所述的装置,其特征在于,每个所确定的一元编码值以以下格式存储写掩码中其最高有效位位置为1值,且在所述目的地写掩码寄存器中有效性低于所述1值位位置的位位置中零个或更多个0值跟随所述1值。19。
10、如权利要求17所述的装置,其特征在于,所述源向量寄存器的最低有效打包数据元素位置的一元编码值被编码在所述目的地写掩码寄存器的最低有效位中。20如权利要求17所述的装置,其特征在于,所述目的地写掩码寄存器是16位。权利要求书CN104126166A1/23页4用于执行使用掩码的向量打包一元编码的系统、装置和方法技术领域0001本发明的领域一般涉及计算机处理器架构,更具体地涉及在执行时导致特定结果的指令。0002背景0003指令集、或指令集架构ISA是涉及编程的计算机架构的一部分,并且可包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出I/O。应注意术语指。
11、令在本文中一般指的是宏指令即提供给处理器以供执行的指令与从处理器的解码器解码宏指令得到的微指令或微操作不同。0004指令集架构与微架构不同,微架构是实现ISA的处理器的内部设计。具有不同微架构的处理器可共享共同的指令集。例如,英特尔PENTIUM奔腾4处理器、英特尔CORE酷睿处理器、以及位于SUNNYVALECA的ADVANCEDMICRODEVICES公司的处理器实现X86指令集的几乎相同的版本带有被添加到较新的版本中的某些扩展,但是,具有不同的内部设计。例如,ISA的相同寄存器体系结构可以使用已知的技术,以不同的微型体系结构,以不同的方式来实现,包括专用物理寄存器,使用寄存器重命名机制例。
12、如,寄存器别名表RAT的使用,重新排序缓冲器ROB以及退役寄存器文件,如美国专利NO5,446,912所描述的;使用多个图以及寄存器的池,如美国专利NO5,207,132所描述的的一个或多个动态地分配的物理寄存器,等等。除非另作说明,短语“寄存器体系结构”、“寄存器组”,以及寄存器是指对软件/编程器以及指令指定寄存器的方式可见的东西。在需要特殊性的情况下,形容词逻辑、架构、或软件可见将用于表示寄存器架构中的寄存器/组,而不同的形容词将用于指定给定微架构中的寄存器例如,物理寄存器、重新排序缓冲器、引退寄存器、寄存器池。0005指令集包括一个或多个指令格式。给定指令格式定义各种字段位数、位位置以指。
13、定要执行的操作以及将对其进行该操作的操作数等。给定指令是使用给定指令格式来表达的,并指定操作和操作数。指令流是特定指令序列,其中该序列中的每一指令都是指令格式的指令出现。0006科学、金融、自动向量化的通用RMS识别、挖掘以及合成/可视和多媒体应用例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵常常需要对大量的数据项执行相同操作被称为“数据并行性”。单指令多数据SIMD是指使处理器对多个数据项执行相同操作的一种指令。SIMD技术尤其适用于将寄存器中的多个位逻辑地划分成多个固定尺寸的数据元素的处理器,其中每个数据元素表示单独的值。例如,64位寄存器中的位可以被指定为作为四。
14、个单独的16位数据元素来操作的源操作数,每一个数据元素都表示单独的16位值。作为另一个示例,256位寄存器中的位可以被指定为作为四个单独的64位打包数据元素四字Q尺寸的数据元素、八个单独的32位打包数据元素双字D尺寸的数据元素、十六个单独的16位打包数据元素字W尺寸的数据元素、或三十二个单独的8位数据元素字节B尺寸的数据元素来操作的源操作数。说明书CN104126166A2/23页5这种类型的数据被称为打包数据类型或向量数据类型,并且这种数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列;并且打包数据操作数或向量操作数是SIMD指令也称为打包数。
15、据指令或向量指令的源操作数或目的地操作数。0007作为示例,一种类型的SIMD指令指定了将要以纵向方式对两个源向量操作数执行的单个向量操作,用于生成具有相同尺寸的、具有相同数量的数据元素并且按照相同数据元素次序的目的地向量操作数也被称为结果向量操作数。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸并且包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对也称为对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数中的数据元素位置。
16、1中的数据元素相对应,以此类推。对这些源数据元素对中的每一个分别执行该SIMD指令指定的操作,以产生匹配数量的结果数据元素,并且因此每一对源数据元素具有相应的结果数据元素。由于该操作是纵向的,且由于结果向量操作数是相同尺寸、具有相同数量的数据元素并且结果数据元素按照与源向量操作数相同的数据元素顺序被存储,所以结果数据元素处于结果向量操作数中与它们在源向量操作数中的相应源数据元素对相同的位位置中。除此示例性类型的SIMD指令之外,还有各种其他类型的SIMD指令例如,只有一个或具有两个以上的源向量操作数的;以横向方式操作的;生成不同尺寸的结果向量操作数的,具有不同尺寸的数据元素的,和/或具有不同的。
17、数据元素顺序的。应该理解,术语目的地向量操作数或目的地操作数被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置寄存器或由该指令所指定的存储器地址,以便它可以作为源操作数由另一指令访问由另一指令指定相同位置。0008诸如由具有包括X86、MMXTM、流式SIMD扩展SSE、SSE2、SSE3、SSE41以及SSE42指令的指令集的CORETM处理器使用的技术之类的SIMD技术,在应用性能方面实现了显著的改善CORETM和MMXTM是位于加利福尼亚州SANTACLARA的INTELCORPORATION的注册商标或商标。称为高级矢量扩展AVXAVX1和AVX2又使用VEX。
18、编码方案的额外的SIMD扩展集已经被发布或出版例如,参见64和IA32ARCHITECTURESSOFTWAREDEVELOPERSMANUAL,2011年10月;参见ADVANCEDVECTOREXTENSIONSPROGRAMMINGREFERENCE,2011年6月。0009一元编码在压缩算法中非常普遍,并且用于例如在一些搜索引擎中编码符号长度,因为它往往更易于被解码。代替存储每个值,可以存储该值与先前数据集之间的差异。这样,每个值被如下编码00100100111100012210000133100000140015遗憾的是,没有用于一元成码的专用指令。0016附图简述说明书CN1041。
19、26166A3/23页60017本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中0018图1示出用于VPUNARYENCODE的示例性指令的操作的示例性示图。0019图2示出处理器中VPUNARYENCODE指令的执行的实施例。0020图3示出处理VPUNARYENCODE指令的方法的实施例。0021图4示出执行VPUNARYENCODE的方法的示例性伪代码。0022图5示出根据本发明一个实施例的多个1有效位向量写掩码元素与向量尺寸和数据元素尺寸之间的关联。0023图6A例示了示例性AVX指令格式;0024图6B示出来自图6A的哪些字段构成完整操。
20、作码字段和基础操作字段;0025图6C示出来自图6A的哪些字段构成寄存器索引字段。0026图7A7B是示出根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。0027图8AD是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。0028图9是根据本发明的一个实施例的寄存器架构的框图。0029图10A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。0030图10B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。0031图11AB示出了更具体的示例性有序核架构的框。
21、图,该核将是芯片中的若干逻辑块之一包括相同类型和/或不同类型的其他核。0032图12是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。0033图13是根据本发明的实施例的示例性系统的框图。0034图14是根据本发明的实施例的第一更具体的示例性系统的框图。0035图15是根据本发明的实施例的第二更具体的示例性系统的框图。0036图16是根据本发明的实施例的SOC的框图。0037图17是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。0038详细描述0039在以下描述中,陈述了多个具体细节。
22、。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。0040说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,这些短语不一定表示同一实施例。此外,当联系实施例描述特定的特征、结构或特性时,认为本领域普通技术人员能够知晓结合其它实施例来实现这种特征、结构或特性,无论是否明确描述。0041概览说明书CN104126166A4/23页70042在以下描述中,在描述该指令集架构中的该特定指令的操作之。
23、前,需要解释一些项目。一种这样的项目称为“写掩码寄存器”,通常用于断言用于有条件地控制逐个元素的计算操作的操作数在下文中,也可能使用术语掩码寄存器,表示诸如下文讨论的“K”寄存器之类的写掩码寄存器。如下文中使用,写掩码寄存器存储多个位16、32、64等等,其中写掩码寄存器中的每个有效位控制向量寄存器的打包数据元素在SIMD处理期间的操作/更新。典型地,存在超过一个写掩码寄存器可供处理器核使用。0043该指令集架构包括至少一些SIMD指令,至少一些SIMD指令指定向量操作并具有用于从这些向量寄存器中选择源寄存器和/或目的地寄存器的字段示例性的SIMD指令可指定要对向量寄存器中的一个或多个向量寄存。
24、器的内容执行的向量操作,并且将该向量操作的结果存储在向量寄存器之一中。本发明的不同实施例可具有不同尺寸的向量寄存器,并支持更多/更少/不同尺寸的数据元素。0044由SIMD指令指定的多位数据元素的尺寸例如字节、字、双字、四字确定向量寄存器中的“数据元素位置”的位位置,并且向量操作数的尺寸确定数据元素的数量。打包数据元素指的是存储在特定位置中的数据。换句话说,依赖于目的地操作数中的数据元素的尺寸和目的地操作数的尺寸目的地操作数中的位的总数量或者换句话说,取决于目的地操作数的尺寸和该目的地操作数中的数据元素的数量,作为结果的向量操作数内的多位数据元素位置的位位置改变例如,如果作为结果的向量操作数的。
25、目的地是向量寄存器,则该目的地向量寄存器内的多位数据元素位置的位位置改变。例如,在对32位数据元素进行操作的向量操作数据元素位置0占据位位置310,数据元素位置1占据位位置6332,以此类推与对64位数据元素进行操作的向量操作数据元素位置0占据位位置630,数据元素位置1占据位位置12764,以此类推之间,多位数据元素的位位置不同。0045另外,如图5所示,根据本发明的一个实施例的1有效位向量写掩码元素的数量和向量尺寸和数据元素尺寸之间的相关性。示出了128位、256位以及512位的向量尺寸,不过其他宽度也是可能的。考虑了8位字节B、16位字W、32位双字D或单精度浮点以及64位四字Q或双精度。
26、浮点的数据元素尺寸,不过其他宽度也是可能的。如图所示,当向量尺寸是128位时,当向量的数据元素尺寸是8位时可将16位用于掩码操作,当向量的数据元素尺寸是16位时可将8位用于掩码操作,当向量的数据元素尺寸是32位时可将4位用于掩码操作,以及当向量的数据元素尺寸是64位时可将2位用于掩码操作。当向量尺寸是256位时,当打包数据元素宽度是8位时可将32位用于掩码操作,当向量的数据元素尺寸是16位时可将16位用于掩码操作,当向量的数据元素尺寸是32位时可将8位用于掩码操作,以及当向量的数据元素尺寸是64位时可将4位用于掩码操作。当向量尺寸是512位时,当向量的数据元素尺寸是8位时可将64位用于掩码操作。
27、,当向量的数据元素尺寸是16位时可将32位用于掩码操作,当向量的数据元素尺寸是32位时可将16位用于掩码操作,以及当向量的数据元素尺寸是64位时可将8位用于掩码操作。0046依赖于向量尺寸和数据元素尺寸的组合,可将所有64位、或仅64位的子集用作写掩码。一般而言,当使用单个逐个元素的掩码控制位时,用于掩码操作的向量写掩码寄存器中的多个位有效位等于以位表示的向量尺寸除以以位表示的向量的数据元素尺寸。0047如上文所指出的,写掩码寄存器包含对应于向量寄存器或存储器位置中的元素的掩码位并跟踪应该对其执行操作的元素。因此,希望具有共同的操作,这些操作就向量说明书CN104126166A5/23页8寄存。
28、器而论在这些掩码位上复制类似的行为,一般而言,允许调整写掩码寄存器内的这些掩码位。0048以下是指令集中通常称为向量打包一元编码“VPUNARYENCODE”指令的指令的实施例,以及可用于执行将在若干不同方面获益的这种指令的系统、架构、指令格式等的实施例。VPUNARYENCODE的执行导致在写掩码寄存器中存储掩码位集合,其中掩码位的数据元素定位对应于打包一元码。0049图1示出用于VPUNARYENCODE的示例性指令的操作的示例性示图。在所示示例中,源向量寄存器101具有各自具有一元编码值的八个打包数据元素。向量寄存器中的打包数据元素的数量依赖于向量寄存器尺寸和打包数据元素尺寸。尽管该示例。
29、仅示出16位目的地写掩码寄存器,但是可以使用其它尺寸诸如64位。0050在图1的该示例中,源寄存器的数据元素位置0SRC0存储值“1”。为了便于理解,该示例中的所有值是十进制格式的。如背景中详述的,该十进制值的一元编码是“10”。但是,由于目的地写掩码寄存器的每个数据元素位置仅是单个位,一元成码必须占据目的地写掩码寄存器103的两个位。如图所示,两个最低有效位用于存储一元编码值即,MASK11并且MASK00。0051源寄存器的下一最低有效数据元素位置SRC1也为“1”。再次地,该值的一元成码为“10”,并且需要目的地写掩码寄存器的两个位,在该示例中,MASK30并且MASK41。0052从最。
30、低有效数据元素位置开始,对源寄存器中每个连续数据元素位置进行求值,直到两种情况之一发生。第一种情况是目的地写掩码寄存器103中的所有位置都被一元编码值占据。如果这种情况发生,则指令可以输出编程器可访问的异常和/或简单地停止向目的地寄存器进行写入。0053示例性格式0054该指令的示例性格式是“VPUNARYENCODEK1,R2”,其中目的地操作数K1是写掩码寄存器,源操作数R2是向量寄存器诸如128、256、512位寄存器等等且VPUNARYENCODE是指令的操作码。数据元素的尺寸可被定义在该指令的“前缀”中,诸如通过使用数据粒度位的指示来定义。在多数实施例中,该位将指示每个数据元素是32。
31、位或64位,但是可以使用其它变型。在一些实施例中,源操作数不是寄存器,而是存储器位置。0055示例性的执行方法0056图2示出处理器中VPUNARYENCODE指令的执行的实施例。在201,取出具有目的地写掩码寄存器操作数和源向量寄存器操作数的VPUNARYENCODE指令。0057在203,由解码逻辑解码VPUNARYENCODE指令。依赖于指令的格式,在该阶段可解释各种数据,诸如是否有数据变换,写入和/或检索哪些寄存器、访问哪些存储器地址等。0058在205,检索/读取源操作数值。例如,读取源向量寄存器。如果源操作数之一或两者是存储器操作数,则检索与该操作数相关联的数据元素。在一些实施例中。
32、,将来自存储器的数据元素存储在临时寄存器中。0059在207,由执行资源诸如一个或多个功能单元执行VPUNARYENCODE指令或包括这一指令的操作,诸如微操作,以确定源向量寄存器的每个打包数据元素位置中的一元编码值。说明书CN104126166A6/23页90060在209,将一元编码值以逐位格式存储到目的地写掩码寄存器中。如上所述,写掩码寄存器中的一元编码可能要求一个以上的位位置。虽然分别示出了207和209,但在一些实施例中,它们可作为指令执行的一部分一起执行。0061图3示出处理VPUNARYENCODE指令的方法的实施例。在该实施例中,假定先前已经执行了操作201205中的一些若不是。
33、全部,然而未示出那些操作,以免模糊下文呈现的细节。例如,未示出取出和解码,也未示出操作数检索。0062在301,将要被求值的源向量寄存器的数据元素位置设置为源向量寄存器的最低有效数据元素位置。例如,可以对图1示例中的SRC0求值。0063在303,确定数据元素位置的值以及其一元编码等效值。参见图1,对于该位置,值为“1”,对应于一元编码值“10”。0064在一些实施例中,在305,判断在目的地写掩码寄存器中是否有足够的未使用位位置。例如,是否有两个位可用于存储“10”如果没有足够的位,则输出编程器可见的异常。0065如果有足够的位,则在307,将值“0”写入到目的地掩码寄存器的所确定值减1数量。
34、的最低有效未使用位位置中,并且在写入0后将“1”写入到目的地写掩码寄存器的下一最低有效未使用位位置中。用图1作为示例,MASK00并且MASK11。0066在309,判断在目的地写掩码寄存器中是否有任何剩余的未使用位位置。如果有未使用位,则在311将下一最低有效打包数据元素位置设置为要求值,并且重复以上步骤。0067如果没有任何未使用位,则在313,判断是否源寄存器中的所有打包数据元素都已被求值。如果它们全部都已被求值,则该指令完成。如果否,则在一些实施例中,输出编程器可见的异常,该指令完成。0068图4示出执行VPUNARYENCODE的方法的示例性伪代码。0069示例性指令格式0070本文。
35、中所描述的指令的实施例可以不同的格式体现。例如,本文描述的指令可体现为VEX、通用向量友好或其它格式。以下讨论VEX和通用向量友好格式的细节。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。0071VEX指令格式0072VEX编码允许指令具有两个以上操作数,并且允许SIMD向量寄存器比128位长。VEX前缀的使用提供了三个操作数或者更多句法。例如,先前的两操作数指令执行改写源操作数的操作诸如AAB。VEX前缀的使用使操作数执行非破坏性操作,诸如ABC。0073图6A示出示例性AVX指令格式,包括VEX前缀。
36、602、实操作码字段630、MODR/M字节640、SIB字节650、位移字段662以及IMM8672。图6B示出来自图6A的哪些字段构成完整操作码字段674和基础操作字段642。图6C示出来自图6A的哪些字段构成寄存器索引字段644。0074VEX前缀字节02602以三字节形式进行编码。第一字节是格式字段640VEX字节0,位70,该格式字段640包含明确的C4字节值用于区分C4指令格式的唯一值。第二第三字节VEX字节12包括提供专用能力的多个位字段。具体地,REX字段605VEX字节1,位75由VEXR位字段VEX字节1,位7R、VEXX位字段VEX字说明书CN104126166A7/23。
37、页10节1,位6X以及VEXB位字段VEX字节1,位5B组成。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位RRR、XXX以及BBB进行编码,由此可通过增加VEXR、VEXX以及VEXB来形成RRRR、XXXX以及BBBB。操作码映射字段615VEX字节1,位40MMMMM包括对隐含的前导操作码字节进行编码的内容。W字段664VEX字节2,位7W由记号VEXW表示,并且提供取决于该指令而不同的功能。VEXVVVV620VEX字节2,位63VVVV的作用可包括如下1VEXVVVV编码第一源寄存器操作数且对具有两个或两个以上源操作数的指令有效,第一源寄存器操作数以反转1补码形式被指定。
38、;2VEXVVVV编码目的地寄存器操作数,目的地寄存器操作数针对特定向量位移以1补码的形式被指定;或者3VEXVVVV不编码任何操作数,保留该字段,并且应当包含1111B。如果VEXL668尺寸字段VEX字节2,位2L0,则它指示128位向量;如果VEXL1,则它指示256位向量。前缀编码字段625VEX字节2,位10PP提供了用于基础操作字段的附加位。0075实操作码字段630字节3还被称为操作码字节。操作码的一部分在该字段中被指定。0076MODR/M字段640字节4包括MOD字段642位76、REG字段644位53、以及R/M字段646位20。REG字段644的作用可包括如下对目的地寄存。
39、器操作数或源寄存器操作数RRRR中的RRR进行编码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段646的作用可包括如下对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。0077比例、索引、基址SIB比例字段650字节5的内容包括用于存储器地址生成的SS652位76。先前已经针对寄存器索引XXXX和BBBB参考了SIBXXX654位53和SIBBBB656位20的内容。0078位移字段662和立即数字段IMM8672包含地址数据。0079通用向量友好指令格式0080向量友好指令格式是适于向量指令例如,存在专用于向量操作的特定字段的指令格式。
40、。尽管描述了其中通过向量友好指令格式支持向量和标量运算两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量运算。0081图7A7B是示出根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图7A是示出根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图;而图7B是示出根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式700定义A类和B类指令模板,两者包括无存储器访问705的指令模板和存储器访问720的指令模板。在向量友好指令格式的上下文中的术语“通用”指不束缚于任何专用指令集的指令格式。0082尽管将描述其中向量友好指令格。
41、式支持以下情况的本发明的实施例,即64字节向量操作数长度或尺寸与32位4字节或64位8字节数据元素宽度或尺寸并且由此,64字节向量由16双字尺寸的元素或者替代地8四字尺寸的元素组成、64字节向量操作数长度或尺寸与16位2字节或8位1字节数据元素宽度或尺寸、32字节向量操作数长度或尺寸与32位4字节、64位8字节、16位2字节、或8位1字节数据元素宽度或尺寸、以及16字节向量操作数长度或尺寸与32位说明书CN104126166A108/23页114字节、64位8字节、16位2字节、或8位1字节数据元素宽度或尺寸,但是替代实施例可支持更大、更小、和/或不同的向量操作数尺寸例如,256字节向量操作数。
42、与更大、更小或不同的数据元素宽度例如,128位16字节数据元素宽度。0083图7A中的A类指令模板包括1在无存储器访问705的指令模板内,示出无存储器访问的完全舍入控制型操作710的指令模板、以及无存储器访问的数据变换型操作715的指令模板;以及2在存储器访问720的指令模板内,示出存储器访问的时效性725的指令模板和存储器访问的非时效性730的指令模板。图7B中的B类指令模板包括1在无存储器访问705的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作712的指令模板以及无存储器访问的写掩码控制的VSIZE型操作717的指令模板;以及2在存储器访问720的指令模板内,示出存储器访问。
43、的写掩码控制727的指令模板。0084通用向量友好指令格式700包括以下列出的按照在图7A7B中示出的顺序的如下字段。0085格式字段740该字段中的特定值指令格式标识符值唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。0086基础操作字段742其内容区分不同的基础操作。0087寄存器索引字段744其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PXQ例如,32X512、16X128、32X1024、64X1024个。
44、寄存器组选择N个寄存器。尽管在一个实施例中N可高达三个源和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器例如,可支持高达两个源,其中这些源中的一个源还用作目的地,可支持高达三个源,其中这些源中的一个源还用作目的地,可支持高达两个源和一个目的地。0088修饰符MODIER字段746其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问705的指令模板与存储器访问720的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次在一些情况下,使用寄存器中的值来指定源和/或目的地地址,而非存储器访问操作不这。
45、样例如,源和/或目的地是寄存器。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。0089扩充操作字段750其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被分成类字段768、字段752、以及字段754。扩充操作字段750允许在单一指令而非2、3或4个指令中执行多组共同的操作。0090比例字段760其内容允许用于存储器地址生成例如,用于使用2比例索引基址的地址生成的索引字段的内容的按比例缩放。0091位移字段762A其内容用作存储器地址生成的一。
46、部分例如,用于使用2比例索引基址位移的地址生成。0092位移因数字段762B注意,位移字段762A直接在位移因数字段762B上的并置指示使用一个或另一个其内容用作地址生成的一部分,它指定通过存储器访问的尺寸说明书CN104126166A119/23页12N按比例缩放的位移因数,其中N是存储器访问中的字节数量例如,用于使用2比例索引基址按比例缩放的位移的地址生成。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸N以生成在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段774稍后在本文中描述和数据操纵字段754C确定。位移字段762A和位移因数字段76。
47、2B可以不用于无存储器访问705的指令模板和/或不同的实施例可实现两者中的仅一个或不实现两者中的任一个,在这个意义上位移字段762A和位移因数字段762B是任选的。0093数据元素宽度字段764其内容区分使用多个数据元素宽度中的哪一个在一些实施例中用于所有指令,在其他实施例中只用于一些指令。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上该字段是任选的。0094写掩码字段770其内容在每一数据元素位置的基础上控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并写掩码操作,而B类指令模板支持合并写掩码操。
48、作和归零写掩码操作两者。当合并时,向量掩码允许在执行任何操作期间保护目的地中的任何元素集免于更新由基础操作和扩充操作指定;在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行任何操作期间使目的地中的任何元素集归零由基础操作和扩充操作指定;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制执行的操作的向量长度的能力即,从第一个到最后一个要修改的元素的跨度,然而,被修改的元素不一定要是连续的。由此,写掩码字段770允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段770的内容选择了多个写掩码寄存器中。
49、的包含要使用的写掩码的一个写掩码寄存器并且由此写掩码字段770的内容间接地标识了要执行的掩码操作的本发明的实施例,但是替代实施例相反或另外允许掩码写字段770的内容直接地指定要执行的掩码操作。0095立即数字段772其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上该字段是任选的。0096类字段768其内容在不同类的指令之间进行区分。参考图7AB,该字段的内容在A类和B类指令之间进行选择。在图7AB中,圆角方形用于指示专用值存在于字段中例如,在图7AB中分别用于类字段768的A类768A和B类768B。0097A类指令模板0098在A类非存储器访问705的指令模板的情况下,字段752被解释为其内容区分要执行不同扩充操作类型中的哪一种例如,针对无存储器访问的舍入型操作710和无存储器访问的数据变换型操作715的指令模板分别指定舍入752A1和数据变换752A2的RS字段752A,而字段754区分要执行指定类型的操作中的哪一种。在无存储器访问705指令模板中,比例字段760、位移字段762A以及位移比例字段762B不存在。0099无存储器访问的指令模板完全舍入控制型操作0100在无存储器访问的完全舍入控制型操作710的指令模板中,字段754被解释为。