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

用于在SIMD/向量执行中传播有条件估算值的装置和方法制造方法及图纸

技术编号:10374098 阅读:112 留言:0更新日期:2014-08-28 16:24
一种用于传播有条件估算值的装置和方法。例如,根据一个实施例的方法,包括:读取包含在输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置;对于从输入掩码寄存器读取的每个真值,产生包含所述真值的位位置的第一结果;对于从输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述输入掩码寄存器的向量长度加上从所述输入掩码寄存器读取的上一真值的位位置,从而产生第二结果;以及将第一结果和第二结果的每个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。

【技术实现步骤摘要】
【国外来华专利技术】用于在SIMD/向量执行中传播有条件估算值的装置和方法专利
本专利技术的实施例一般涉及计算机系统的领域。更具体地,本专利技术的实施例涉及用于在SIMD/向量执行中传播有条件估算值的装置和方法。
技术介绍
_2] 通用背景指令集,或指令集架构(ISA)是涉及编程的计算机架构的一部分,并可以包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/o)。在本文中术语指令一般指宏指令一即被提供给处理器(或指令转换器,该指令转换器(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)翻译、变形、仿真、或以其他方式将指令转换成要由处理器处理的一个或多个指令))以用于执行的指令一而不是微指令或微操作(micro-op)——它们是处理器的解码器解码宏指令的结果。ISA与微架构不同,微架构是实现指令集的处理器的内部设计。带有不同的微架构的处理器可以共享共同的指令集。例如,INTEL?奔腾四(Pentium4)处理器、Intel?酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处理器实现几乎相同版本的x86指令集(在较新的版本中加入了一些扩展),但具有不同的内部设计。例如,ISA的相同寄存器架构在不同的微架构中使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器假名表(RAT)、重排序缓冲器(R0B)、以及引退寄存器组;使用多个寄存器映射和寄存器池)的一个或多个动态分配物理寄存器,等等。除非另行指出,术语寄存器架构、寄存器组和寄存器在本文中用于指代对软件/编程者可见的寄存器以及指令指定寄存器的方式。在需要特殊性的情况下,形容词逻辑、架构、或软件可见的将用于表示寄存器架构中的寄存器/寄存器组,而不同的形容词将用于指定给定微架构中的寄存器(例如,物理寄存器、重新排序缓冲器、引退寄存器、寄存器池)。指令集包括一个或多个指令格式。给定指令格式定义各种字段(位的数量、位的位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作数等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可被定义为具有指令格式的字段(所包括的字段通常按照相同的顺序,但是至少一些字段具有不同的位位置,因为包括更少的字段)的不同子集,和/或被定义为具有不同解释的给定字段。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达,并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有专用操作码以及包括用于指定该操作码的操作码字段和用于选择操作数的操作数字段(源I/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。科学、金融、自动向量化的通用,RMS(识别、挖掘以及合成),以及可视和多媒体应用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要对大量的数据项执行相同操作(被称为“数据并行性”)。单指令多数据(SIMD)是指使处理器对多个数据项执行操作的指令类型。SMD技术特别适于能够在逻辑上将寄存器中的位分割为若干个固定尺寸的数据元素的处理器,每一个元素都表示单独的值。例如,256位寄存器中的位可以被指定为要在四个单独的64位打包数据元素(四字(Q)尺寸的数据元素)、八个单独的32位打包数据元素(双字(D)尺寸的数据元素)、十六单独的16位打包数据元素(字(W)尺寸的数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)上操作的源操作数。这种类型的数据被称为打包数据类型或向量数据类型,这种数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列,并且打包数据操作数或向量操作数是SMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。作为示例,一种类型的SIMD指令指定要以垂直方式对两个源向量操作数执行的单个向量运算,以利用相同数量的数据元素,以相同数据元素顺序,生成相同尺寸的目的地向量操作数(也称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数是相同尺寸的,并包含相同宽度的数据元素,如此,它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置O中的数据元素相对应,每个源操作数的数据元素位置I中的数据元素相对应,以此类推)。由该SIMD指令所指定的操作分别地对这些源数据元素对中的每一对执行,以生成匹配的数量的结果数据元素,如此,每一对源数据元素都具有对应的结果数据元素。由于操作是垂直的并且由于结果向量操作数尺寸相同,具有相同数量的数据元素,并且结果数据元素与源向量操作数以相同数据元素顺序被存储,因此,结果数据元素处于结果向量操作数中与它们的对应的源数据元素对在源向量操作数中相同的位位置。除此示例性类型的SMD指令之外,还有各种其他类型的SMD指令(例如,只有一个或具有超过两个的源向量操作数的、以水平方式操作的、生成不同尺寸的结果向量操作数的、具有不同尺寸的数据元素的、和/或具有不同的数据元素顺序的)。应该理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置(寄存器或在由该指令所指定的存储器地址),以便它可以作为源操作数由另一指令访问(由另一指令指定该同一个位置)。诸如由具有包括x86、MMX?、流式 SMD 扩展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的Intel? Core?处理器使用的技术之类的SMD技术,在应用程序性能方面实现了大大的改善。已经发布和/或公布了被称为高级向量扩展(AVX) (AVX1和AVX2)且使用向量扩展(VEX)编码方案的附加SMD扩展集(例如,参见2011年10月的Intel? 64和IA-32架构软件开发手册,并且参见2011年6月的Intel?高级向量扩展编程参考)。与本专利技术的实施例有关的背景为了性能,SIMD架构依靠编译器来向量化循环。在存在于通用应用和系统软件中的循环中,变量通常被有条件地(conditionally)定义,并无条件地或在不同条件的控制下被读取。这导致循环所带的依赖性(loop-carried dependences),该依赖性阻碍该循环的向量化。本文所述的本专利技术的实施例向SIMD指令集架构(“ISA”)添加使编译器能够向量化具有某些循环所带依赖性的循环的指令。附图简述以下的描述和附图用于示出本专利技术的实施例。在附图中:图1A是示出根据本专利技术的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图;图1B是示出根据本专利技术的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图2是根据本专利技术的实施例的具有集成的存储器控制本文档来自技高网...

【技术保护点】
一种用于传播有条件估算值的方法,包括以下操作:读取包含在输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置;对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置的第一结果;对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述输入掩码寄存器的向量长度加上从所述输入掩码寄存器读取的上一真值的位位置,产生第二结果;以及将所述第一结果和第二结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。

【技术特征摘要】
【国外来华专利技术】1.一种用于传播有条件估算值的方法,包括以下操作: 读取包含在输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置; 对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置的第一结果; 对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述输入掩码寄存器的向量长度加上从所述输入掩码寄存器读取的上一真值的位位置,产生第二结果;以及 将所述第一结果和第二结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。2.如权利要求1所述的方法,其特征在于,还包括: 对于从所述输入掩码寄存器读取的在所述第一真值前的每个假值,产生包含所述假值的位位置的第三结果;以及 将所述第三结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。3.如权利要求1所述的方法,其特征在于,还包括: 读取立即数值,且仅当所述立即数值被设为第一值时,执行所述操作。4.如权利要求3所述的方法,其特征在于,如果所述立即数值没有被设为所述第一值,则执行第二组操作。5.如权利要求4所述的方法,其特征在于,所述第二组操作包括: 读取包含在所述输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置; 对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置加上所述向量长度的第三结果;以及 将所述第三结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。6.如权利要求5所述的方法,其特征在于,还包括: 对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述第三结果的每一个存储在所述输出寄存器中。7.如权利要求6所述的方法,其特征在于,还包括: 对于从所述输入掩码寄存器读取的在所述第一真值之前的每个假值,将从所述输入掩码寄存器读取的假值的位位置存储在所述输出寄存器中所述输出寄存器的对应位位置处。8.一种用于执行一个或多个指令以执行以下操作的处理器: 读取包含在输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置; 对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置的第一结果; 对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述输入掩码寄存器的向量长度加上从所述输入掩码寄存器读取的上一真值的位位置,产生第二结果;以及 将所述第一结果和第二结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。9.如权利要求8所述的处理器,用于执行所述一个或多个指令以执行以下附加操作: 对于从所述输入掩码寄存器读取的在所述第一真值前的每个假值,产生包含所述假值的位位置的第三结果;以及 将所述第三结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。10.如权利要求8所述的处理器,用于执行所述一个或多个指令以执行以下附加操作: 读取立即数值,且仅当所述立即数值被设为第一值时,执行所述操作。11.如权利要求10所述的处理器,其特征在于,如果所述立即数值没有被设为所述第一值,则所述处理器用于执行第二组操作。12.如权利要求11所述的处理器,其特征在于,所述第二组操作包括: 读取包含在所述输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置; 对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置加上所述向量长度的第三结果; 以及 将所述第三结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。13.如权利要求12所述的处理器,用于执行所述一个或多个指令以执行以下附加操作: 对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述第三结果的每一个存储在所述输出寄存器中。14.如权利要求13所述的处理器,用于执行所述一个或多个指令以执行以下附加操作: 对于从所述输入掩码寄存器读取的在所述第一真值之前的每个假值,将从所述输入掩码寄存器读取的假值的位位置存储在所述输出寄存器中所述输出寄存器的对应位位置处。15.—种系统,包括: 存储器,用于存储指令和数据; 处理器,用于执行所述指令中的一个或多个以执行以下操作: 读取包含在输入掩码寄存器中的每个值,每个值为真值或假值且具有与之相关联的位位置; 对于从所述输入掩码寄存器读取的每个真值,产生包含所述真值的位位置的第一结果; 对于从所述输入掩码寄存器读取的跟随所述第一真值的每个假值,将所述输入掩码寄存器的向量长度加上从所述输入掩码寄存器读取的上一真值的位位置,产生第二结果;以及 将所述第一结果和第二结果的每一个存储在和从所述输入掩码寄存器读取的位位置相对应的输出寄存器的位位置中。16.如权利要求14所述的系统,其特征在于,所述处理器用于执行所述一个或多个指令以执行以下附加操作: 对于从所述输入掩码寄存器读取的在所述第一真值前的每个假值,产生包含所述假值的位位置的第三结果;以及 将所述第三结果的每一...

【专利技术属性】
技术研发人员:J·巴拉德瓦杰N·万苏德范V·W·李D·金A·哈特诺S·S·巴格索克希
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

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

1