《用于基于两个源写掩码寄存器生成依赖向量的系统、装置和方法.pdf》由会员分享,可在线阅读,更多相关《用于基于两个源写掩码寄存器生成依赖向量的系统、装置和方法.pdf(50页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104126171A43申请公布日20141029CN104126171A21申请号201180076457522申请日20111227G06F9/06200601G06F9/30200601G06F9/30520060171申请人英特尔公司地址美国加利福尼亚州72发明人J巴拉德瓦杰74专利代理机构上海专利商标事务所有限公司31100代理人张欣54发明名称用于基于两个源写掩码寄存器生成依赖向量的系统、装置和方法57摘要描述了用于响应于包括第一和第二源写掩码向量寄存器操作数、目的地向量寄存器操作数、以及操作码的指令而在计算机处理器中执行依赖索引向量计算的系统、装置以及方法的各实。
2、施例。85PCT国际申请进入国家阶段日2014082686PCT国际申请的申请数据PCT/US2011/0673412011122787PCT国际申请的公布数据WO2013/100893EN2013070451INTCL权利要求书3页说明书24页附图22页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书24页附图22页10申请公布号CN104126171ACN104126171A1/3页21一种响应于指令在计算机处理器中执行依赖索引向量计算的方法,所述指令包括第一和第二源写掩码向量寄存器操作数、目的地向量寄存器操作数、以及操作码,所述方法包括以下步骤执行所述指令以为所述第一。
3、源写掩码寄存器的每个位位置确定依赖值,所述依赖值为与该位位置对应的迭代指示该迭代依赖于哪个位位置;将所确定的依赖值存储在所述目的地向量寄存器的对应数据元素位置中。2如权利要求1所述的方法,其特征在于,所述目的地向量寄存器是128位向量寄存器。3如权利要求1所述的方法,其特征在于,所述目的地向量寄存器是256位向量寄存器。4如权利要求1所述的方法,其特征在于,所述目的地向量寄存器是512位向量寄存器。5如权利要求1所述的方法,其特征在于,所述源写掩码寄存器是16位寄存器。6如权利要求1所述的方法,其特征在于,所述源写掩码寄存器是64位寄存器。7如权利要求1所述的方法,其特征在于,所述确定和储存步。
4、骤还包括将计数器值和临时值设为0;判定所述第一源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是1时,将在位置计数器值处的目的地向量寄存器数据元素设为所述临时值;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是0时,将在位置计数器值处的目的地向量寄存器数据元素设为0;判定所述第二源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第二源写掩码寄存器的所述计数器值的位位置中的值是1时,将所述临时值设为所述计数器值加1;将所述计数器值递增1;以及重复上述步骤,直至所述第一和第二源写掩码寄存器的所有必要位位置已被处理。8一种制品,包。
5、括其上存储有指令表示的有形机器可读存储介质,其中所述指令的格式指定第一和第二写掩码寄存器作为其源操作数,并指定单个向量寄存器作为其目的地,并且其中所述指令格式包括操作码,该操作码响应于所述单个指令的单次发生而指令机器为所述第一源写掩码寄存器的每个位位置确定依赖值,所述依赖值为对应于该位位置的迭代指示该迭代依赖于哪个位位置;并将所确定的依赖值存储在所述目的地向量寄存器的对应数据元素位置中。9如权利要求8所述的制品,其特征在于,所述目的地向量寄存器是128位向量寄存器。10如权利要求8所述的制品,其特征在于,所述目的地向量寄存器是256位向量寄存器。11如权利要求8所述的制品,其特征在于,所述目的。
6、地向量寄存器是512位向量寄存器。权利要求书CN104126171A2/3页312如权利要求8所述的制品,其特征在于,所述源写掩码寄存器是16位寄存器。13如权利要求8所述的制品,其特征在于,所述源写掩码寄存器是64位寄存器。14如权利要求8所述的制品,其特征在于,所述确定和存储还包括将计数器值和临时值设为0;判定所述第一源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是1时,将在位置计数器值处的目的地向量寄存器数据元素设为所述临时值;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是0时,将在位置计数器值处的目的地向量寄存器数据元素。
7、设为0;判定所述第二源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第二源写掩码寄存器的所述计数器值的位位置中的值是1时,将所述临时值设为所述计数器值加1;将所述计数器值递增1;以及重复上述步骤,直至所述第一和第二源写掩码寄存器的所有必要位位置已被处理。15一种装置,包括硬件解码器,用于解码单个依赖索引向量计算指令,所述指令包括第一和第二源写掩码寄存器操作数、目的地向量寄存器操作数、和操作码;以及执行逻辑,用于为所述第一源写掩码寄存器的每个位位置确定依赖值,所述依赖值为对应于该位位置的迭代指示该迭代依赖于哪个位位置,并将所确定的依赖值存储在所述目的地向量寄存器的相应数据元素位置中。1。
8、6如权利要求15所述的装置,其特征在于,所述目的地向量寄存器是128位向量寄存器。17如权利要求15所述的装置,其特征在于,所述目的地向量寄存器是256位向量寄存器。18如权利要求15所述的装置,其特征在于,所述目的地向量寄存器是512位向量寄存器。19如权利要求15所述的装置,其特征在于,所述源写掩码寄存器是16位寄存器或64位寄存器。20如权利要求15所述的装置,其特征在于,所述执行逻辑通过以下操作来进行确定和存储将计数器值和临时值设为0;判定所述第一源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是1时,将在位置计数值处的目的地向量。
9、寄存器数据元素设为所述临时值;当所述第一源写掩码寄存器的所述计数器值的位位置中的值是0时,将在位置计数值处的目的地向量寄存器数据元素设为0;判定所述第二源写掩码寄存器的所述计数器值的位位置中的值是否为1;当所述第二源写掩码寄存器的所述计数器值的位位置中的值是1时,将所述临时值设为所述计数器值加1;权利要求书CN104126171A3/3页4将所述计数器值递增1;以及重复上述步骤,直至所述第一和第二源写掩码寄存器的所有必要位位置已被处理。权利要求书CN104126171A1/24页5用于基于两个源写掩码寄存器生成依赖向量的系统、装置和方法技术领域0001本发明的领域一般涉及计算机处理器架构,更具。
10、体地涉及在执行时导致特定结果的指令。0002背景0003指令集,或指令集架构ISA是涉及编程的计算机架构的一部分,并可以包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出I/O。应注意术语指令在本文中一般指的是宏指令即提供给处理器以供执行的指令与从处理器的解码器解码宏指令得到的微指令或微操作不同。0004指令集架构与微架构不同,微架构是实现ISA的处理器的内部设计。带有不同的微架构的处理器可以共享共同的指令集。例如,英特尔PENTIUM奔腾4处理器、英特尔CORE酷睿处理器、以及位于SUNNYVALECA的ADVANCEDMICRODEVICES公司的。
11、处理器实现X86指令集的几乎相同的版本带有被添加到较新的版本中的某些扩展,但是,具有不同的内部设计。例如,ISA的相同寄存器架构在不同的微架构中使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制诸如,如美国专利NO5,446,912所述,使用寄存器假名表RAT、重排序缓冲器ROB、以及引退寄存器组;如美国专利NO5,207,132所述,使用多个寄存器映射和寄存器池的一个或多个动态分配物理寄存器,等等。除非另行指出,术语寄存器架构、寄存器组和寄存器是指对软件/编程者可见的寄存器以及指令指定寄存器的方式。在需要特殊性的情况下,形容词“逻辑”、“架构”、或“软件可见的”将用于表。
12、示寄存器架构中的寄存器/寄存器组,而不同的形容词将用于指定给定微架构中的寄存器例如,物理寄存器、重新排序缓冲器、引退寄存器、寄存器池。0005指令集包括一个或多个指令格式。给定指令格式定义各个字段位的数量、位的位置以指定要执行的操作操作码以及对其要执行该操作的操作数等。给定指令是使用给定指令格式来表达的,并指定操作和操作数。指令流是特定指令序列,其中该序列中的每一指令都是指令格式的指令出现。0006科学、金融、自动向量化的通用、RMS识别、挖掘以及合成/可视和多媒体应用程序例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵常常需要对大量的数据项执行相同操作被称为“数据并行。
13、性”。单指令多数据SIMD是指使处理器对多个数据项执行相同操作的一种指令。SIMD技术特别适于能够在逻辑上将寄存器中的位分割为若干个固定尺寸的数据元素的处理器,其中每一个数据元素都表示单独的值。例如,64位寄存器中的位可被指定为作为四个单独的16位数据元素的、将对其操作的源操作数,每一个数据元素都表示单独的16位值。作为另一个示例,256位寄存器中的位可被指定为作为四个单独的64位打包数据元素四字Q尺寸的数据元素、八个单独的32位打包数据元素双字D尺寸的数据元素、十六个单独的16位打包数据元素字W尺寸的数据元素、或三十二个单独的8位数据元素字节B尺寸的数据元素的、将对其操作的源操作数。这种类型。
14、的数据被称为打包数据类型或向量数据类型,这种数据类型的操作说明书CN104126171A2/24页6数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列;并且打包数据操作数或向量操作数是SIMD指令也称为打包数据指令或向量指令的源操作数或目的地操作数。0007作为示例,一种类型的SIMD指令指定要以纵向方式对两个源向量操作数执行的单个向量操作,以生成相同尺寸的、具有相同数量的数据元素、且有相同数据元素顺序的目的地向量操作数也称为结果向量操作数。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具。
15、有相同尺寸,并包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对也称为相对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数的数据元素位置1中的数据元素相对应,以此类推。分别地对这些源数据元素对中的每一对执行由该SIMD指令所指定的操作,以生成匹配数量的结果数据元素,如此,每一对源数据元素都具有对应的结果数据元素。由于操作是纵向的,并且由于结果向量操作数尺寸相同、具有相同数量的数据元素、且结果数据元素与源向量操作数以相同数据元素顺序来存储,因此,结果数据元素与源向量操作数中的它们的对应的源数据元素对处于。
16、结果向量操作数的相同位位置中。除此示例性类型的SIMD指令之外,还有各种其他类型的SIMD指令例如,仅有一个或具有两个以上的源向量操作数的SIMD指令;以水平方式操作的SIMD指令;生成不同尺寸的结果向量操作数的SIMD指令;具有不同尺寸的数据元素的SIMD指令;和/或具有不同的数据元素顺序的SIMD指令。应该理解,术语“目的地向量操作数”或目的地操作数被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置寄存器或在由该指令所指定的存储器地址,以便它可以作为源操作数由另一指令访问由另一指令指定该同一个位置。0008诸如由具有包括X86、MMXTM、流式SIMD扩展SSE、。
17、SSE2、SSE3、SSE41以及SSE42指令的指令集的CORETM处理器使用的技术之类的SIMD技术,在应用性能方面实现了显著的改善CORETM和MMXTM是位于加利福尼亚州SANTACLARA的INTELCORPORATION的注册商标或商标。称为高级向量扩展AVXAVX1和AVX2并使用VEX编码方案的附加SIMD扩展集已经被发布和/或公开例如,参见64和IA32架构软件开发者手册ARCHITECTURESSOFTWAREDEVELOPERSMANUAL,2011年10月;参见高级向量扩展编程参考ADVANCEDVECTOREXTENSIONSPROGRAMMINGREFERENCE,。
18、2011年6月。0009许多现代处理器扩展其能力以执行SIMD操作来解决主流科学和工程学数值应用、视觉处理、识别、数据挖掘/合成、游戏、物理学、密码术和其他应用领域中对向量浮点性能的持续要求。另外,一些处理器利用预测,包括使用写掩码来对SIMD寄存器的特定数据元素执行操作。0010编译器被用于向量化循环以用于使用SIMD指令的高性能执行。然而,传统架构的编译器不能向量化具有由跨迭代的即,循环携带的依赖所导致的依赖回环DEPENDENCECYCLE的循环。这些依赖中的一些可能是有条件的CONDITIONAL,或它们的存在只能在运行时获知。一种解决方案是,通过在循环体内包括特定指令从而在动态检测到。
19、的第一依赖后将向量划分开即,使用断言来将一组向量通道关闭并随后在剩余的向量通道上类说明书CN104126171A3/24页7似地迭代,来向量化循环。编译器使用用于依赖检测的特殊指令并将基于所检测的依赖生成断言掩码。这些掩码随后被用于划分向量循环。0011在具有依赖回环其涉及变量的有条件定义和该变量的有条件使用之间的循环携带的依赖,其中用于定义和使用的条件不同的循环中,如当前技术所定义的指令致使不必要的动态向量划分,这导致性能损失。替代地,可使用复合指令序列来避免不必要的划分,而这再次劣化了性能。0012附图简述0013本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号。
20、表示类似的元件,其中0014图1A示出CONDITIONPAIRSTOP的操作的示例。0015图1B示出CONDITIONPAIRSTOP的操作的另一示例。0016图2示出在处理器中使用CONDITIONPAIRSTOP指令的实施例。0017图3示出用于处理包括第一和第二源写掩码寄存器、目的地向量寄存器、和操作码的CONDITIONPAIRSTOP指令的方法的实施例。0018图4示出CONDITIONPAIRSTOP指令的示例性伪代码。0019图5示出向量友好格式的CONDITIONPAIRSTOP的另一种格式。0020图6示出根据本发明一个实施例的1有效位向量写掩码元素的数量与向量尺寸和数据。
21、元素尺寸之间的关联。0021图7A7B是示出根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。0022图8AD是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。0023图9是根据本发明的一个实施例的寄存器架构的框图。0024图10A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。0025图10B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。0026图11AB示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一包括相同类型和/或不同类型的。
22、其他核。0027图12是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。0028图13所示的是根据本发明的一个实施例的系统的框图。0029图14是根据本发明的实施例的第一更具体的示例性系统的框图。0030图15是根据本发明的实施例的第二更具体的示例性系统的框图。0031图16是根据本发明的实施例的SOC的框图。0032图17是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。0033详细描述0034在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实。
23、施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模说明书CN104126171A4/24页8糊对本描述的理解。0035说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,这些短语不一定表示同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为本领域普通技术人员能够知晓结合其它实施例来实现这种特征、结构或特性,无论是否明确描述。0036概览0037在以下描述中,在描述该指令集架构中的该特定指令的操作之前,需要解释一些项目。一个这样的项目称为“写掩码寄存器”,。
24、通常用于断言用于有条件地控制逐个元素的计算操作的操作数在下文中,也可能使用术语掩码寄存器,表示写掩码寄存器,诸如下文讨论的“K”寄存器。如下文中使用,写掩码寄存器存储多个位16、32、64等等,其中写掩码寄存器中的每个有效位控制向量寄存器的打包数据元素在SIMD处理期间的操作/更新。典型地,存在超过一个写掩码寄存器可供处理器核使用。0038该指令集架构包括至少一些SIMD指令,该至少一些SIMD指令指定向量操作并具有用于从这些向量寄存器中选择源寄存器和/或目的地寄存器的字段示例性的SIMD指令可指定要对向量寄存器中的一个或多个向量寄存器的内容执行的向量操作,并且将该向量操作的结果存储在向量寄存。
25、器之一中。本发明的不同实施例可具有不同尺寸的向量寄存器,并支持更多/更少/不同尺寸的数据元素。0039由SIMD指令指定的多位数据元素的尺寸例如字节、字、双字、四字确定向量寄存器中的“数据元素位置”的位位置,并且向量操作数的尺寸确定数据元素的数量。打包数据元素指的是存储在特定位置中的数据。换句话说,依赖于目的地操作数中的数据元素的尺寸和目的地操作数的尺寸目的地操作数中总的位数量或者换句话说,依赖于目的地操作数的尺寸和该目的地操作数中的数据元素的数量,作为结果的向量操作数内的多位数据元素位置的位位置改变例如,如果作为结果的向量操作数的目的地是向量寄存器,则该目的地向量寄存器内的多位数据元素位置的。
26、位位置改变。例如,在对32位数据元素进行操作的向量操作数据元素位置0占据位位置310,数据元素位置1占据位位置6332,以此类推与对64位数据元素进行操作的向量操作数据元素位置0占据位位置630,数据元素位置1占据位位置12764,以此类推之间,多位数据元素的位位置不同。0040此外,根据本发明的一个实施例,在1有效位向量写掩码元素的数量与向量尺寸和数据元素尺寸之间存在如图6所示的关联。示出了128位、256位以及512位的向量尺寸,不过其他宽度也是可能的。考虑了8位字节B、16位字W、32位双字D或单精度浮点以及64位四字Q或双精度浮点的数据元素尺寸,不过其他宽度也是可能的。如图所示,当向量。
27、尺寸是128位时,当向量的数据元素尺寸是8位时可将16位用于掩码操作,当向量的数据元素尺寸是16位时可将8位用于掩码操作,当向量的数据元素尺寸是32位时可将4位用于掩码操作,以及当向量的数据元素尺寸是64位时可将2位用于掩码操作。当向量尺寸是256位时,当打包数据元素宽度是8位时可将32位用于掩码操作,当向量的数据元素尺寸是16位时可将16位用于掩码操作,当向量的数据元素尺寸是32位时可将8位用于掩码操作,以及当向量的数据元素尺寸是64位时可将4位用于掩码操作。当向量尺寸是512位时,当向量的数据元素尺寸是8位时可将64位用于掩码操作,当向量的数据元素尺寸说明书CN104126171A5/24。
28、页9是16位时可将32位用于掩码操作,当向量的数据元素尺寸是32位时可将16位用于掩码操作,以及当向量的数据元素尺寸是64位时可将8位用于掩码操作。0041依赖于向量尺寸和数据元素尺寸的组合,可将所有64位、或仅64位的子集用作写掩码。一般而言,当使用单个逐个元素的掩码控制位时,用于掩码操作的向量写掩码寄存器中的位有效位的数量等于以位表示的向量尺寸除以以位表示的向量的数据元素尺寸。0042以下所述的本发明的实施例通过定义指令来解决高效向量化此类循环的问题,所述指令将提供相比当前所需的用于避免不必要的向量划分的复合指令序列而言更高的性能。考虑以下给出的示例004300440045预计P2X为真,。
29、宏标量架构将该循环向量化。因此,当P2X为真时,向量被动态划分。所执行的迭代的数量是NK/VL,其中VL是向量长度,K是每个向量的动态分区的平均数量。假定VP2表示断言P1的向量,K等于POPCOUNTVP21的平均值。0046例如,考虑VP1和VP2的以下值0047VP10,1,0,1,0,0,0,00048VP20,0,0,1,1,1,1,00049在宏标量方法下,K将为5即,向量以5次迭代执行。对于该向量,由于在其中SAXR被执行的迭代之后,语句RAXS从未被执行,因此划分可被完全地避免。0050这个所建议的指令可用于避免对此代码的不必要的向量划分。如果这个新指令被用于上文所示的数据示例。
30、,则向量将会以一次迭代执行。0051在下文中描述被称作CONDITIONPAIRSTOP的指令。该指令,当被执行时,致使产生宏标量依赖索引向量。依赖索引向量是整数向量,其中0元素值指示没有依赖,而元素N中的值M指示对应于元素N的迭代依赖于对应于元素M的迭代。来自CONDITIONALPAIRSTOP指令的依赖索引向量输出记录VP1为真的迭代对VP2为真的最近在前迭代若该迭代存在的依赖。对于以上给出的示例,该指令可被用于仅当语句RAXS对于语句SAXR的循环携带的依赖被动态检测到时才准确地划分向量。这将会导致较少的向量分区即,K将会较低。使用所建议的新指令CONDITIONPAIRSTOP,对于。
31、以上给出的示例数据,K将会是1,因为在VP2为真的迭代的随后迭代中,VP1绝不为真,即,在以上示例中,S在循环中在向量迭代4中首次被定义,而引用S的指令RAXS在向量迭代4后绝不执行。说明书CN104126171A6/24页10因此,对于该数据集,将可以使用所建议的指令获得完全向量执行。0052图1A示出CONDITIONPAIRSTOP的操作的示例。在该示例中,所示出的写掩码寄存器和目的地寄存器被安排成使得最低有效位/数据元素位置在左手侧。然而,这并不应作为存储数据的唯一方式。实际上,这些寄存器通常将数据存储为最低有效位位置在最右侧。0053源写掩码寄存器101、103被示为具有8个有效位典。
32、型地,具有和有效位相同数量的数据元素的向量长度。如以下针对该指令可以应用的特定架构所详细描述的,可以使用具有更多或更少有效位的其它寄存器尺寸。在该示例中,如目的地向量寄存器105中所示的,对源写掩码寄存器101,103的每个位位置对的分析是0。0值指示没有跨迭代的依赖,而K值指示存在对于迭代K的跨迭代依赖迭代数是基于1的,即第一迭代是迭代数1。0054图1B示出CONDITIONPAIRSTOP的操作的另一示例。在该示例中,所示出的写掩码寄存器和目的地寄存器被安排成使得最低有效位/数据元素位置在左手侧。然而,这并不应作为存储数据的唯一方式。实际上,这些寄存器通常将数据存储为最低有效位位置在最右。
33、侧。0055源写掩码寄存器101、103被示为具有8个有效位典型地,具有和有效位相同数量的数据元素的向量长度。如以下针对该指令可以应用的特定架构所详细描述的,可以使用具有更多或更少有效位的其它寄存器尺寸。在该示例中,存在跨迭代的依赖值。0056在目的地向量寄存器105的第二数据元素位置中,1值被存储。这个1指示对应于该元素的迭代依赖于对应于元素1的迭代注意,对于该示例,元素1是第一元素,而不是元素0。如上所述,记录第一源的位位置为真的迭代对于第二源的位位置为真的最近在前迭代如果该在前迭代存在的依赖。如所示的,第二源寄存器的具有1值的最接近位位置的值是位位置1。0057依赖的下一次发生被示为在目。
34、的地向量寄存器的数据元素5中。该数据元素的值为2,意味着数据元素5的迭代依赖于数据元素2的迭代。如所示的,第二源寄存器的具有1值的最接近位位置的值是位位置2。0058依赖的下一次发生被示为在目的地向量寄存器的数据元素7中。该数据元素的值为6,意味着数据元素7的迭代依赖于数据元素6的迭代。如所示的,第二源寄存器的具有1值的最接近位位置的值是位位置6。0059依赖的下一次发生被示为在目的地向量寄存器的数据元素8中。该数据元素的值为6,意味着数据元素8的迭代依赖于数据元素6的迭代。如所示的,第二源寄存器的具有1值的最接近位位置的值是位位置6。0060图2示出在处理器中使用CONDITIONPAIRS。
35、TOP指令的实施例。在221,取出具有目的地写掩码寄存器操作数、操作码、和第一及第二源写掩码寄存器操作数的CONDITIONPAIRSTOP指令。0061在223,通过解码逻辑解码CONDITIONPAIRSTOP指令。依赖于该指令的格式,可在该阶段解释多种数据,诸如是否将进行数据转换、要写入和检索哪些寄存器、要访问什么存储器地址、等等。0062在225,检索/读取源操作数值。例如,读取源写掩码寄存器。0063在227,CONDITIONPAIRSTOP指令或包括该指令的操作,例如微操作被诸如一说明书CN104126171A107/24页11个或多个功能单元之类的执行资源所执行,从而为第一源写。
36、掩码寄存器的每个位位置确定依赖值,该依赖值指示对于对应于该位位置的迭代,该迭代依赖于哪个位位置及由此可知的先前迭代。通过在第二源写掩码寄存器中寻找最接近的在前的1,当位为1时找到依赖值。0064在229,每个依赖值被存储在目的地向量寄存器的对应数据元素位置中。在一些实施例中,此时,向目的地寄存器中所有其它位位置写入0。0065虽然分别示出了227和229,但在一些实施例中,它们作为指令执行的一部分一起执行。0066图3示出用于处理包括第一和第二源写掩码寄存器、目的地向量寄存器、和操作码的CONDITIONPAIRSTOP指令的方法的实施例。以下描述的是在取出指令之后所发生的。0067在301,。
37、将计数器值COUNTERVALUE和临时值都设置为0。0068在303,判定第一写掩码源寄存器的计数器值的位位置中的值是否为真即1。如果该值不为真即0,则在305,对应于计数器值的位置的目的地数据元素被设为假即0,指示没有依赖。如果该值为真即1,则在307,对应于计数器值的位置的目的地数据元素被设为临时值,指示如上所述的依赖。0069在309,判定第二写掩码源寄存器的计数器值的位位置中的值是否为真即1。如果该值为真,则在311,临时值被设为计数器值加1临时值计数器值1。在设置临时值后,或当309的判定不为真时跳过该步骤后,在313计数器值递增1。0070在315,判定是否第一和第二源的所有必要。
38、位位置已经被求值。如果是,则指令完成。如果不是,在更新后的计数器值的位位置上执行303的判定。0071图4示出该指令的伪代码实现。0072上述指令的示例性格式是“CONDITIONPAIRSTOPXMM/YMM/ZMMK2,K1”,其中XMM/YMM/ZMM是目的地向量寄存器操作数,K1和K2分别是第一和第二源写掩码寄存器操作数,且CONDITIONPAIRSTOP是操作码。XMM/YMM/ZMM指的是128位/256位/512位向量寄存器。然而,可采用其它尺寸。如上所述,向量寄存器中的数据元素的数量影响写掩码寄存器中的有效位的数量它们应相同。数据元素的数量依赖于向量寄存器和数据元素的尺寸。在。
39、一些实施例中,写掩码寄存器是16位,然而,可使用诸如64位的其他尺寸。0073图5示出向量友好格式的CONDITIONPAIRSTOP的另一种格式。该指令基于输入掩码对K3和K4依据控制掩码K2来设置输出掩码K1。在观察到K4中的第一启用“真”位之后,将K1的启用位设置为“真”直到发现了在K3中的第一启用“真”位位置。将K1中对应于K3中该第一“真”位的位以及所有随后位设置为“假”。在一些实施例中,控制掩码K2被设置为全1或不启用。0074示例性指令格式0075本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水。
40、线上执行,但是不限于详述的系统、架构、以及流水线。0076通用向量友好指令格式0077向量友好指令格式是适于向量指令例如,存在专用于向量操作的特定字段的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量运算两者的实施例,但说明书CN104126171A118/24页12是替代实施例仅使用通过向量友好指令格式的向量运算。0078图7A7B是示出根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图7A是示出根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图;而图7B是示出根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式7。
41、00定义A类和B类指令模板,两者包括无存储器访问705的指令模板和存储器访问720的指令模板。在向量友好指令格式的上下文中的术语“通用”指不束缚于任何专用指令集的指令格式。0079尽管将描述其中向量友好指令格式支持64字节向量操作数长度或尺寸与32位4字节或64位8字节数据元素宽度或尺寸并且由此,64字节向量由16双字尺寸的元素或者替代地8四字尺寸的元素组成、64字节向量操作数长度或尺寸与16位2字节或8位1字节数据元素宽度或尺寸、32字节向量操作数长度或尺寸与32位4字节、64位8字节、16位2字节、或8位1字节数据元素宽度或尺寸、以及16字节向量操作数长度或尺寸与32位4字节、64位8字节。
42、、16位2字节、或8位1字节数据元素宽度或尺寸的本发明的实施例,但是替代实施例可支持更大、更小、和/或不同的向量操作数尺寸例如,256字节向量操作数与更大、更小或不同的数据元素宽度例如,128位16字节数据元素宽度。0080图7A中的A类指令模板包括1在无存储器访问705的指令模板内,示出无存储器访问的完全舍入控制型操作710的指令模板、以及无存储器访问的数据变换型操作715的指令模板;以及2在存储器访问720的指令模板内,示出存储器访问的时效性725的指令模板和存储器访问的非时效性730的指令模板。图7B中的B类指令模板包括1在无存储器访问705的指令模板内,示出无存储器访问的写掩码控制的部。
43、分舍入控制型操作712的指令模板以及无存储器访问的写掩码控制的VSIZE型操作717的指令模板;以及2在存储器访问720的指令模板内,示出存储器访问的写掩码控制727的指令模板。0081通用向量友好指令格式700包括以下列出的按照在图7A7B中示出的顺序的如下字段。0082格式字段740该字段中的特定值指令格式标识符值唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。0083基础操作字段742其内容区分不同的基础操作。0084寄存器索引字段744其内容直接或者通过地址生成来指定。
44、源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PXQ例如,32X512、16X128、32X1024、64X1024个寄存器组选择N个寄存器。尽管在一个实施例中N可高达三个源和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器例如,可支持高达两个源,其中这些源中的一个源还用作目的地,可支持高达三个源,其中这些源中的一个源还用作目的地,可支持高达两个源和一个目的地。0085修饰符MODIER字段746其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问705的指令模板与存储器访问。
45、720的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次在一些情况下,使用寄存器中的值来指定源和/或目的地地址,而说明书CN104126171A129/24页13非存储器访问操作不这样例如,源和/或目的地是寄存器。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。0086扩充操作字段750其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被分成类字段768、字段752、以及字段754。扩充操作字段750允许在单一指令而非2、3或4个。
46、指令中执行多组共同的操作。0087比例字段760其内容允许用于存储器地址生成例如,用于使用2比例索引基址的地址生成的索引字段的内容的按比例缩放。0088位移字段762A其内容用作存储器地址生成的一部分例如,用于使用2比例索引基址位移的地址生成。0089位移因数字段762B注意,位移字段762A直接在位移因数字段762B上的并置指示使用一个或另一个其内容用作地址生成的一部分,它指定通过存储器访问的尺寸N按比例缩放的位移因数,其中N是存储器访问中的字节数量例如,用于使用2比例索引基址按比例缩放的位移的地址生成。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸N以生成在计算有效地。
47、址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段774稍后在本文中描述和数据操纵字段754C确定。位移字段762A和位移因数字段762B可以不用于无存储器访问705的指令模板和/或不同的实施例可实现两者中的仅一个或不实现两者中的任一个,在这个意义上位移字段762A和位移因数字段762B是任选的。0090数据元素宽度字段764其内容区分使用多个数据元素宽度中的哪一个在一些实施例中用于所有指令,在其他实施例中只用于一些指令。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上该字段是任选的。0091写掩码字段770其内容在每一数据。
48、元素位置的基础上控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并写掩码操作,而B类指令模板支持合并写掩码操作和归零写掩码操作两者。当合并时,向量掩码允许在执行任何操作期间保护目的地中的任何元素集免于更新由基础操作和扩充操作指定;在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行任何操作期间使目的地中的任何元素集归零由基础操作和扩充操作指定;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制执行的操作的向量长度的能力即,从第一个到最后一个要修改的元素的跨度,然而,被修改的元素不。
49、一定要是连续的。由此,写掩码字段770允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段770的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器并且由此写掩码字段770的内容间接地标识了要执行的掩码操作的本发明的实施例,但是替代实施例相反或另外允许掩码写字段770的内容直接地指定要执行的掩码操作。0092立即数字段772其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上该字段是任选说明书CN104126171A1310/24页14的。0093类字段768其内容在不同类的指令之间进行区分。参考图7AB,该字段的内容在A类和B类指令之间进行选择。在图7AB中,圆角方形用于指示专用值存在于字段中例如,在图7AB中分别用于类字段768的A类768A和B类768B。0094A类指令模板0095在A类非存储器访问705的指令模板的情况下,字段752被解释为其内容区分要执行不同扩充操作类型中的哪一种例如,针对无存储器访问的舍入型操作710和无存储器访问的数据变换型操作715的指令模板分别指定舍入752A1和数据变换752A2的RS字段752A,而字段754区分要执行指定类型的操作中的哪一种。在无存储器访问705指令模板中,比例。