本发明专利技术描述了用于响应于单个向量打包横向相加或相减指令在计算机处理器中执行打包数据元素的向量打包横向相加或相减的系统、装置和方法的实施例,该单个向量打包横向相加或相减指令包括目的地向量寄存器操作数、源向量寄存器操作数以及操作码。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术的领域一般涉及计算机处理器架构,更具体地涉及在执行时导致特定结果的指令。
技术介绍
指令集或指令集架构(ISA)是计算机架构中与编程有关的部分,并且可包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/o)。术语“指令”在本申请中一般是指宏指令,宏指令是被提供给处理器(或指令转换器,该指令转换器(例如,利用静态二进制转换、包括动态编译的动态二进制转换)转化、变形、仿真或以其他方式将指令转换成将由处理器处理的一个或多个其他指令)以供执行的指令一作为对比,微指令或微操作(微操作)是处理器的解码器解码宏指令的结果。ISA与微架构不同,微架构是实现该指令集的处理器的内部设计。具有不同微架构的处理器可共享共同的指令集。例如,ΙΝΤΠ.:_Ρ'奔腾四(Pentium4)处理器、Intel⑩酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,在不同的微架构中可使用公知的技术以不同方法来实现ISA的相同寄存器架构,这些技术包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(R0B)、以及引退寄存器组;使用多个映射和寄存器池)的一个或多个动态分配的物理寄存器、等等。在本申请中,除非另外指定,使用短语“寄存器架构”、“寄存器组”以及“寄存器”来表示软件/编程者可见的寄存器和指令指定寄存器的方式。在需要特殊性的场合,将使用形容词“逻辑的”、“架构的”或“软件可见的”来指示寄存器架构中的寄存器/文件,同时不同的形容词将用于指示给定微架构中的寄存器(例如,物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。指令集包括一个或多个指令格式。给定指令格式定义多个不同的字段(位的数量、位的位置)以指定其中将要被执行的操作(操作码)以及该操作将要执行的操作数等等。通过定义指令模板(或子格式),一些指令格式被进一步分解。例如,可将给定指令格式的指令模板定义成具有该指令格式的字段的不同子集(所包括的字段通常是相同顺序,但至少一些由于包括更少的字段而具有不同的位位置)和/或定义成对给定字段的解释不同。因此,利用给定指令格式(而且如果定义,则按照该指令格式的指令模板中给定的一个模板)来表达ISA的每个指令,并且ISA的每个指令包括用于指定其操作和操作数的字段。例如,示例性的ADD (加法)指令具有特定的操作码和指令格式,该指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源I/目的地和源2)的操作数字段;并且该ADD指令在指令流中的出现将具有在操作数字段中的特定内容,该特定内容选择特定操作数。科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及可视和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)通常需要对大量数据项执行相同的操作(称为“数据并行化”)。单指令多数据(SMD)指的是使得处理器对多个数据项执行一操作的一种类型的指令。SMD技术尤其适用于将寄存器中的诸个位(bit)逻辑地划分成数个固定尺寸的数据元素的处理器,其中每个数据元素表示单独的值。例如,可将256位寄存器中的位指定为要进行操作的源操作数,作为4个单独的64位打包数据元素(四字(Q)尺寸数据元素)、8个单独的32位打包数据元素(双字(D)尺寸数据元素)、16个单独的16位打包数据元素(字(W)尺寸数据元素)、或32个单独的8位数据元素(字节(B)尺寸数据元素)。该数据类型被称为打包数据类型或向量数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列,而打包数据操作数或向量操作数是SIMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。作为示例,一种类型的SIMD指令指定了将要以纵向方式对两个源向量操作数执行的单个向量操作,用于生成具有相同尺寸、具有相同数量的数据元素并且按照相同数据元素次序的目的地向量操作数(也被称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸并且包含相同宽度的数据元素,且因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置O中的数据元素相对应,每个源操作数的数据元素位置I中的数据元素相对应,以此类推)。对这些源数据元素对中的每一个分别执行该SMD指令指定的操作,以产生匹配数量的结果数据元素,并且因此每一对源数据元素具有相应的结果数据元素。由于该操作是纵向的,且由于结果向量操作数是相同尺寸、具有相同数量的数据元素并且结果数据元素按照与源向量操作数相同的数据元素顺序被存储,所以结果数据元素处于结果向量操作数中与源向量操作数中的它们相应的源数据元素对相同的位位置中。除了这种示例性类型的SMD指令之外,存在各种各样其他类型的SMD指令(例如,仅具有一个源向量操作数或具有超过两个源向量操作数、以横向方式操作、产生不同尺寸的结果向量操作数、具有不同尺寸的数据元素和/或具有不同的数据元素次序的SMD指令)。应当理解,术语“目的地向量操作数(或目的地操作数)”被定义为执行由指令指定的操作的直接结果,包括将该目的地操作数存储在一位置处(可以是由该指令指定的寄存器或存储器地址处),使得它可作为源操作数由另一指令访问(通过该另一指令指定同一位置)。诸如具有包括x86、MMX?、流式 SMD 扩展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的丨ntd# Core?处理器所采用的SMD技术之类的SMD技术已经实现了应用性能上的重大改进。已经推出和/或发布了被称为高级向量扩展(AVX) (AVXI和AVX2)和利用向量扩展(VEX)编码方案的附加的SIMD扩展集(参见例如2011年10月的{meI 64和IA-32架构软件开发者手册;以及参见2011年6月的Intef高级向量扩展编程参考)。【附图说明】本专利技术是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中:图1是示例性的VPHADDSUB指令的操作的示例性说明。图2示出在处理器中使用VPHADDSUB指令的实施例。图3示出用于处理VPHADDSUB指令的方法的实施例。图4示出用于四打包数据元素目的地横向相加或相减的示例性伪代码。图5示出根据本专利技术一个实施例的数个I有效位向量写掩码元素与向量尺寸和数据元素尺寸之间的关联。图6A例示了示例性AVX指令格式;图6B示出来自图6A的哪些字段构成完整操作码字段和基础操作字段;图6C示出来自图6A的哪些字段构成寄存器索引字段;图7A-7B是示出根据本专利技术的实施例的通用向量友好指令格式及其指令模板的框图;图8A-D是示出根据本专利技术的实施例的示例性专用向量友好指令格式的框图;图9本文档来自技高网...
【技术保护点】
一种响应于单个向量打包横向相加或相减指令在计算机处理器中执行打包数据元素的向量打包横向相加或相减的方法,所述单个向量打包横向相加或相减指令包括目的地向量寄存器操作数、源向量寄存器操作数以及操作码,所述方法包括以下步骤:对于所述源向量寄存器的每个数据通道执行所述单个向量打包横向求和指令,确定所述立即数的每个有效位位置的值以确定是否使所述数据通道的相应数据元素位置的值变负,相应地使这些值变负,并且对变负的数据元素和未改变的数据元素求和以创建数据通道结果;以及将每个数据通道结果存储在所述目的地寄存器的相应数据元素位置中。
【技术特征摘要】
【国外来华专利技术】1.一种响应于单个向量打包横向相加或相减指令在计算机处理器中执行打包数据元素的向量打包横向相加或相减的方法,所述单个向量打包横向相加或相减指令包括目的地向量寄存器操作数、源向量寄存器操作数以及操作码,所述方法包括以下步骤: 对于所述源向量寄存器的每个数据通道执行所述单个向量打包横向求和指令,确定所述立即数的每个有效位位置的值以确定是否使所述数据通道的相应数据元素位置的值变负,相应地使这些值变负,并且对变负的数据元素和未改变的数据元素求和以创建数据通道结果;以及 将每个数据通道结果存储在所述目的地寄存器的相应数据元素位置中。2.如权利要求1所述的方法,其特征在于,所述源向量的每个数据通道具有四个打包数据元素。3.如权利要求1所述的方法,其特征在于,要处理的数据通道的数量取决于所述目的地向量寄存器的尺寸。4.如权利要求1所述的方法,其特征在于,所述源向量寄存器和目的地向量寄存器的尺寸是128位、256位、或512位。5.如权利要求1所述的方法,其特征在于,所述源寄存器和所述目的地寄存器的打包数据元素的尺寸是8位、16位、32位或64位。6.如权利要求5所 述的方法,其特征在于,通过所述操作码来定义所述源的打包数据元素的尺寸。7.如权利要求1所述的方法,其特征在于,所述立即数是8位值。8.—种制品,包括: 有形的机器可读存储介质,所述有形的机器可读存储介质上存储有指令,其中所述指令的格式指定向量寄存器和立即数作为其源操作数,并指定单个目的地向量寄存器作为其目的地,其中所述指令格式包括操作码,所述操作码指示机器响应于所述单个指令的单次出现,对于所述源向量寄存器的每个数据通道,确定所述立即数的每个有效位位置的值以确定是否使所述数据通道的相应数据元素位置的值变负,相应地使这些值变负,并且对变负的数据元素和未改变的数据元素求和以创建数据通道结果,并将每个数据通道结果存...
【专利技术属性】
技术研发人员:M·哈高格,E·乌尔德阿迈德瓦尔,R·凡伦天,A·格雷德斯廷,S·卢巴诺维奇,Z·斯波伯,
申请(专利权)人:英特尔公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。