当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令制造技术

技术编号:10359034 阅读:230 留言:0更新日期:2014-08-27 15:07
根据一个实施例,取出指令的表示。该指令的格式指定来自单个向量写掩码寄存器的其唯一源操作数,并将单个通用寄存器指定为其目的地。此外,该指令的格式包括第一字段和第二字段,该第一字段的内容选择该单个向量写掩码寄存器,而该第二字段的内容选择该单个通用寄存器。该源操作数是包括多个一位向量写掩码元素的写掩码,该多个一位向量写掩码元素对应于架构向量寄存器内的不同的多位数据元素位置。该方法还包括:响应于执行所述单个指令的单次出现,将数据存储在所述单个通用寄存器中,使得所述单个通用寄存器的内容基于源操作数中多个一位向量写掩码元素是否为全0而表示第一或第二标量常数。

【技术实现步骤摘要】
【国外来华专利技术】用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
本专利技术的各实施例涉及处理器领域;更具体而言,涉及用于基于写掩码内容设置通用寄存器中的标量值的指令。
技术介绍
指令集,或指令集架构(ISA)是涉及编程的计算机架构的一部分,并可以包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。应当注意,在本文中术语指令一般指宏指令——即被提供给处理器(或指令转换器,该指令转换器(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)将指令翻译、变形、仿真,或以其他方式将指令转换成要由处理器处理的一个或多个指令)以用于执行的指令——而不是微指令或微操作——它们是处理器的解码器解码宏指令的结果。指令集架构与微架构不同,该微架构是实现ISA的处理器的内部设计。带有不同的微架构的处理器可以共享共同的指令集。例如,IntelPentium4处理器、IntelCore处理器,以及位于SunnyvaleCA的AdvancedMicroDevices公司的处理器实现x86指令集的几乎相同的版本(带有被添加到较新的版本中的某些扩展),但是,具有不同的内部设计。例如,ISA的相同寄存器架构在不同的微架构中可使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、以及引退寄存器组;使用多个映射和寄存器池)的一个或多个动态分配物理寄存器等。除非另作说明,短语“寄存器架构”、“寄存器组”,以及寄存器是指对软件/编程器以及指令指定寄存器的方式可见的东西。在需要特殊性的情况下,形容词“逻辑、架构,或软件可见的”将用于表示寄存器架构中的寄存器/组,而不同的形容词将用于指定给定微型架构中的寄存器(例如,物理寄存器、重新排序缓冲器、引退寄存器、寄存器池)。指令集包括一个或多个指令格式。给定指令格式定义各种字段(位数、位的位置)以指定,其中,要执行的操作(operand)以及将对其进行操作的操作数。从而,ISA的每个指令是使用给定指令格式来表达的,并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有专用操作码以及包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。科学、金融、自动向量化的通用,RMS(识别、挖掘以及合成)/可视和多媒体应用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要对大量的数据项执行相同操作(被称为“数据并行性”)。单指令多数据(SIMD)是指使处理器对多个数据项执行相同操作的一种指令。SIMD技术特别适于能够在逻辑上将寄存器中的位分割为若干个固定尺寸的数据元素的处理器,每一个元素都表示单独的值。例如,256位寄存器中的位可以被指定为作为四个单独的64位打包的数据元素(四字(Q)尺寸的数据元素),八个单独的32位打包的数据元素(双字(D)尺寸的数据元素),十六单独的16位打包的数据元素(字(W)尺寸的数据元素),或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)来被操作的源操作数。这种类型的数据被称为打包的数据类型或向量数据类型,这种数据类型的操作数被称为打包的数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列;并且打包数据操作数或向量操作数是SIMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。作为示例,一种类型的SIMD指令指定要以纵向方式对两个源向量操作数执行的单个向量操作,以利用相同数量的数据元素,以相同数据元素顺序,生成相同尺寸的目的地向量操作数(也称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数是相同尺寸,并包含相同宽度的数据元素,如此,它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数的数据元素位置1中的数据元素相对应,等等)。由该SIMD指令所指定的操作分别地对这些源数据元素对中的每一对执行,以生成匹配数量的结果数据元素,如此,每一对源数据元素都具有对应的结果数据元素。由于操作是纵向的并且由于结果向量操作数尺寸相同,具有相同数量的数据元素,并且结果数据元素与源向量操作数以相同数据元素顺序来存储,因此,结果数据元素结果向量操作数中的位位置与源向量操作数中的它们的对应的源数据元素对相同。除此示例性类型的SIMD指令之外,还有各种其他类型的SIMD指令(例如,只有一个或具有两个以上的源向量操作数的;以横向方式操作的;生成不同尺寸的结果向量操作数的,具有不同尺寸的数据元素的,和/或具有不同的数据元素顺序的)。应该理解,术语“目的地向量操作数”(或目的地操作数)被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置(寄存器或在由该指令所指定的存储器地址),以便它可以作为源操作数由另一指令访问(由另一指令指定该同一个位置)。诸如由具有包括x86、MMXTM、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1以及SSE4.2指令的指令集的CoreTM处理器使用的技术之类的SIMD技术,在应用程序性能方面实现了大大的改善(CoreTM和MMXTM是位于加利福尼亚州SantaClara的IntelCorporation的注册商标或商标。)。称为高级向量扩展(AVX)(AVX1和AVX2)又使用VEX编码方案的额外的SIMD扩展集已经被发布或出版(例如,参见64和IA-32ArchitecturesSoftwareDevelopersManual(架构软件开发者手册),2011年10月;参见AdvancedVectorExtensionsProgrammingReference(高级向量扩展编程参考),2011年6月)。附图说明通过参考用来说明本专利技术的实施例的以下描述和附图,可最好地理解本专利技术。在附图中:图1是示出根据本专利技术的某些实施例的用于基于向量写掩码在通用寄存器中存储两个标量常数之一的示例性指令的操作的框图;图2A是示出根据本专利技术的一个实施例的关于特定“如果掩码为0则设置GRP”指令的示例的框图;图2B是示出根据本专利技术的一个实施例的关于特定“如果掩码不为0则设置GRP”指令的示例的框图;图3是根据本专利技术的某些实施例的用于处理基于向量写掩码的内容在通用寄存器中存储两个标量常数之一的指令的每次出现的流程图;图4是根据本专利技术的某些实施例的用于执行基于向量写掩码的内容在通用寄存器中存储两个标量常数之一的指令的出现的流程图;图5是根据本专利技术的某些实施例的用于处理基于向量写掩码的内容在通用寄存器中存储两个标量常数之一的指令的出现的具体机器的框图;图6A是示出根据本专利技术的一个实施例的示出一位向量写掩码元素依赖于向量尺寸和数据元素尺寸的表;图6B是示出根据本专利技术的一个实施例的依据向量尺寸和数据元素尺寸而将向量写掩码寄存器640和位位置用作写掩码本文档来自技高网...
用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令

【技术保护点】
一种计算机实现的方法,包括:取出指令的表示,其中所述指令的格式将来自单个向量写掩码寄存器的源操作数指定为其唯一源操作数并且将单个通用寄存器指定为其目的地,其中所述指令的格式包括第一字段,所述第一字段的内容从多个架构向量写掩码寄存器中选择所述单个向量写掩码寄存器,并且其中所述指令的格式包括第二字段,所述第二字段的内容从多个架构通用寄存器中选择所述单个通用寄存器,并且其中所述源操作数是写掩码,所述写掩码包括多个一位向量写掩码元素,所述多个一位向量写掩码元素对应于架构向量寄存器内的不同多位数据元素位置;以及响应于执行所述单个指令的单次出现,将数据存储在所述单个通用寄存器中,使得所述单个通用寄存器的内容基于所述源操作数中的所述多个一位向量写掩码元素是否均为0,表示第一或第二标量常数。

【技术特征摘要】
【国外来华专利技术】1.一种计算机实现的方法,包括:取出指令的出现,其中所述指令的格式将来自单个向量写掩码寄存器的源操作数指定为其唯一源操作数并且将单个通用寄存器指定为其目的地,其中所述指令的格式包括第一字段,所述第一字段的内容从多个架构向量写掩码寄存器中选择所述单个向量写掩码寄存器,并且其中所述指令的格式包括第二字段,所述第二字段的内容从多个架构通用寄存器中选择所述单个通用寄存器,并且其中所述源操作数是写掩码,所述写掩码包括多个一位向量写掩码元素,所述多个一位向量写掩码元素对应于架构向量寄存器内的不同多位数据元素位置;以及响应于执行所述指令的单次出现,将数据存储在所述单个通用寄存器中,使得所述单个通用寄存器的内容基于所述源操作数中的所述多个一位向量写掩码元素是否均为0,表示第一或第二标量常数。2.如权利要求1所述的方法,其特征在于,所述第一和第二标量常数分别为1和0。3.如权利要求2所述的方法,其特征在于,所述存储包括将数据存储在所述单个通用寄存器中以使得在所述多个一位向量写掩码元素为全0时所述单个通用寄存器的内容表示1。4.如权利要求2所述的方法,其特征在于,所述存储包括将数据存储在所述单个通用寄存器中以使得在所述多个一位向量写掩码元素为全0时所述单个通用寄存器的内容表示0。5.如权利要求1-4中任一项所述的方法,其特征在于,所述指令的操作码指定所述源操作数的尺寸。6.如权利要求5所述的方法,其特征在于,所述源操作数的所述尺寸小于所述单个向量写掩码寄存器的尺寸。7.如权利要求6所述的方法,其特征在于,所述源操作数是来自所述单个向量写掩码寄存器的、从最低有效位开始的毗邻位。8.如权利要求1所述的方法,其特征在于,所述指令是指令集架构(ISA)的一部分,其中来自所述指令集架构(ISA)的其他指令指定向量操作、选择目的地、并且从所述多个架构向量写掩码寄存器的写掩码中进行选择,其中对于所述其他指令中的每个指令,所选择的写掩码的多个一位向量写掩码元素控制所选择的目的地中的哪些数据元素位置反映所述指令的向量操作的结果。9.如权利要求1所述的方法,其特征在于,所述通用寄存器被配置为存储用于逻辑操作、算术操作、地址计算、以及存储器指针的操作数,并且其中所述架构向量寄存器被配置为存储向量。10.如权利要求1所述的方法,其中存在至少16个尺寸为至少64位的架构通用寄存器,其中存在至少8个尺寸至少为32位以便存储写掩码的架构向量写掩码寄存器,并且其中存在至少16个尺寸至少为256位以便存储向量的架构向量寄存器。11.如权利要求1所述的方法,其中存在至少16个尺寸为至少64位的架构通用寄存器,其中存在至少8个尺寸至少为64位以便存储写掩码的架构向量写掩码寄存器,并且其中存在至少32个尺寸至少为512位以便存储向量的架构向量寄存器。12.如权利要求1所述的方法,其特征在于,所述执行包括:对所述多个一位向量写掩码元素执行逻辑或操作;以及基于所述逻辑或操作的结果生成所述第一或第二标量常数。13.如权利要求12所述的方法,其特征在于,所述生成包括:对所述逻辑或的结果求反;将求反后的值转换为64位无符号整数值以形成所述第一或第二标量常数。14.如权利要求12所述的方法,其特征在于,所述生成包括:基于控制信号来复用所述第一或第二标量常数,所述控制信号是从所述逻辑或操作的结果和所述指令为多种类型中的哪一种的指示形成的。15...

【专利技术属性】
技术研发人员:J·考博尔M·J·克莱格德B·L·托尔A·T·福塞斯
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1