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

循环向量化方法和设备技术

技术编号:17345919 阅读:25 留言:0更新日期:2018-02-25 10:54
公开了循环向量化方法和设备。示例方法包含通过评估循环条件来生成循环迭代的集合的第一控制掩码,其中生成第一控制掩码包含:当条件指示循环操作要被执行时将控制掩码的位设置成第一值,而当条件指示循环操作要被绕过时将第一控制掩码的位设置成第二值。示例方法还包含根据第一控制掩码压缩对应于循环迭代的第一集合的索引。

【技术实现步骤摘要】
循环向量化方法和设备
本公开一般涉及计算平台,并且更具体地说,涉及循环向量化方法和设备。
技术介绍
一些计算平台试图通过根据向量化技术转变代码来改进机器级代码执行。例如,对应于迭代循环的原始代码可被转换成向量化代码,以更好地利用计算平台的资源。附图说明图1是表示示例循环的伪代码。图2是表示用于向量化图1示例的已知技术的伪代码。图3是按照此公开的教导构造的示例循环向量化器的框图。图4-6图示了与图3的示例循环向量化器关联的示例数据寄存器和示例阵列的示例内容。图7是表示可执行以实现图3的示例循环向量化器的示例机器可读指令的流程图。图8是表示由图3的示例循环向量化器生成的图1的循环的示例向量化的伪代码。图9是按照此公开的教导构造的示例循环向量化器的框图。图10是表示可执行以实现图9的示例循环向量化器的示例机器可读指令的流程图。图11是表示由图9的示例循环向量化器生成的图1的循环的示例向量化的伪代码。图12是能够执行图7的示例机器可读指令以实现图3的示例循环向量化器和/或图10的示例机器可读指令以实现图9的示例循环向量化器的示例处理系统的框图。具体实施方式要由处理器编译和执行的原始代码可包含一个或多个迭代循环。在此类实例中,数据被加载到一个或多个寄存器中,一个或多个操作在数据上执行,并且作为结果的信息存储在存储器中。计算平台可经由循环向量化改进原始代码的机器级执行。具体地说,通过对循环进行向量化使得同时执行循环的多个迭代可基本上减少循环的执行时间。循环迭代基本上同时执行被称为并行执行。循环向量化包含将循环的多个迭代的数据加载到单个向量中(例如经由向量寄存器实现的)并在整个向量上执行循环操作。作为包含循环的多个迭代数据的向量的结果,在整个向量上执行循环操作导致循环的多个迭代并行执行。循环向量化有时在具有比要经由寄存器执行的原始代码(例如循环)所使用的数据类型大(例如根据系统的具体架构或硬件配置)的寄存器的系统中实现。例如,在具有128位寄存器的硬件上执行的循环可使用32位整数写或设计。为了向量化此类循环,与循环的第一迭代关联的数据被放入到寄存器中第一寄存器的较低位中,并且与循环的后面第二迭代(例如随后在循环定义中定义的一连串迭代中)关联的数据被加载到第一寄存器的较高位。在此类实例中,可同时执行的循环迭代的数量等于寄存器大小(例如硬件)与要加载的并且在循环内操作的数据类型的大小(例如软件)之比。例如,如果循环的原始代码将32位整数加载到变量中,并且循环要在具有128位寄存器的硬件上执行,则要在循环的第一迭代期间加载的整数被加载到128位整数的第一32位中。进一步说,要在循环的第二迭代期间加载的整数被加载到寄存器的第二32位中。进一步说,要在第三迭代期间加载的整数被加载到寄存器的第三32位中。进一步说,要在循环的第四迭代期间加载的整数被加载到寄存器的第四32位中。其中与循环的多个迭代关联的数据加载到单个寄存器中,在整个寄存器上执行循环的对应计算或操作。来自4个32位寄存器片段的结果被存储在适当存储器位置中。从而,在此类实例中,循环的执行时间减少了大致4倍(例如未将由向量化过程引起的开销考虑进去)。在一些循环中,在循环的每个迭代开始时评估条件,并且仅在该条件被满足的情况下才执行循环的剩余命令。图1示出了此类循环100的示例伪代码。图1的示例循环100包含循环定义或声明102以及在循环100的迭代开始时要评估的条件104。在循环100被初始化之后,评估条件104。为了图示和简洁的目的,当要检查的条件评估引起要执行的代码中的随后计算的值时,那个值在本文被称为“真”。进一步说,为了图示和简洁的目的,当要检查的条件评估引起未执行的代码中的随后计算的值时,那个值在本文被称为“假”。从而,如果条件104对于具体迭代评估为真,则执行数据加载操作106,使用在加载操作106期间加载的数据执行计算操作108,并且计算操作108的结果经由写操作110存储。备选地,如果条件104对于具体迭代评估为假,则对于那个迭代不执行循环100的操作106、108和110,并且循环100跳到随后迭代(如果仍然存在任何迭代的话)。换句话说,当条件104评估为假时,操作106、108和110被绕过。图2的伪代码200示出了用于对图1的示例循环100进行向量化的已知技术。如下面所描述的,图2的已知技术评估要向量化的循环100的不同迭代的条件104,并基于条件104的相应评估结果生成写掩码(在图2的附图标记202)。在图2的伪代码200中,写掩码由变量'kl'表示。进一步说,值'VL'表示寄存器可包含的元素数量(例如寄存器的向量长度,单位是字节、位、字等)。在图2的示例中,当条件104评估为真时,写掩码'kl'的位被设置成逻辑一(1)。进一步说,当条件104评估为假时,写掩码'kl'的位被设置成逻辑零('0')。在图2的伪代码200中,每个迭代的数据被加载到向量(v)中(在图2的附图标记204)。进一步说,在整个向量上同时执行图1的循环100的操作106-110(在图2的附图标记206)。伪代码200使用写掩码'kl'仅将条件104评估为真的循环迭代的循环操作106-110的结果存储在存储器中(在图2的附图标记208)。例如,仅对于在写掩码'kl'的对应位具有逻辑一(1)的迭代,保存循环操作106-110的结果。值得注意的是,使用由图2的伪代码200表示的已知技术,甚至对于条件104评估为假的循环迭代,在数据上执行循环100的操作106-110(不过结果不存储在存储器中)。虽然图2的已知技术的写掩码'kl'确保仅适当数据存储在存储器中,但这个技术导致执行不必要的计算,这否定了由循环100的向量化提供的相当大部分的改进(例如在执行时间上)。因此,图2的已知向量化技术包含低效率。循环向量化的效率(诸如图2中示出的)可被估计为如下比率:<条件为真的元素数量>/<执行计算的元素数量>。这个比率对于具有稀少计算的循环(例如很少满足先于操作的条件的循环(例如很少评估为真))可能接近0。对于此类循环,在图2中图示的已知向量化技术是高度低效率的,因为所执行的计算的相当大部分的结果实际上未存储在存储器中,并且从而没必要执行。一些已知技术试图通过当写掩码的所有剩余位都是0时增加中断计算执行的早期检查来避免不必要的技术。然而,这个附加检查给循环的向量化增加了开销,这也减少了从循环向量化提供的性能改进。本文公开的示例方法、设备和/或制品提供了有效的循环向量化机制。具体地说,本文公开的示例通过提高系统资源的效率并防止执行不必要的循环操作(例如生成不会被存储的数据的操作)而改进了循环向量化性能。如本文下面更详细描述的,本文公开的示例通过评估循环的多个迭代的循环条件并根据控制掩码中的那些评估结果设置控制掩码位而生成控制掩码。本文公开的示例使用控制掩码压缩对应于寄存器中循环迭代的数据。比如,本文公开的示例通过从寄存器中移除在控制掩码中的对应位是逻辑零(0)的数据元素来压缩数据。本文公开的示例将剩余数据元素存储在阵列中。本文公开的示例以与用数据元素填充阵列直到阵列中的元素数量达到阈值(例如基于寄存器大小和/或数据元素与寄本文档来自技高网...
循环向量化方法和设备

【技术保护点】
一种方法,包括:通过评估循环条件来生成所述循环的迭代的第一集合的第一控制掩码,其中生成所述第一控制掩码包括:当所述条件指示所述循环的操作要被执行时将所述第一控制掩码的位设置成第一值;以及当所述条件指示所述循环的所述操作要被绕过时将所述第一控制掩码的所述位设置成第二值;以及通过以下步骤用处理器根据所述第一控制掩码压缩对应于所述循环的迭代的所述第一集合的索引:当与所述第一索引关联的所述第一控制掩码的第一位具有所述第一值时,保持所述索引中的第一索引;以及当与所述第二索引关联的所述第一控制掩码的第二位具有所述第二值时,在执行所述操作之前,丢弃所述索引中的第二索引。

【技术特征摘要】
1.一种方法,包括:通过评估循环条件来生成所述循环的迭代的第一集合的第一控制掩码,其中生成所述第一控制掩码包括:当所述条件指示所述循环的操作要被执行时将所述第一控制掩码的位设置成第一值;以及当所述条件指示所述循环的所述操作要被绕过时将所述第一控制掩码的所述位设置成第二值;以及通过以下步骤用处理器根据所述第一控制掩码压缩对应于所述循环的迭代的所述第一集合的索引:当与所述第一索引关联的所述第一控制掩码的第一位具有所述第一值时,保持所述索引中的第一索引;以及当与所述第二索引关联的所述第一控制掩码的第二位具有所述第二值时,在执行所述操作之前,丢弃所述索引中的第二索引。2.如权利要求1所述的方法,进一步包括:压缩对应于所述索引的数据元素,其中所述索引指示对于所述数据元素的相应数据元素所述操作的结果要存储在哪些存储器位置。3.如权利要求2所述的方法,进一步包括:将所述数据元素加载到第一寄存器中;以及将对应于所述循环迭代的所述第一集合的所述索引加载到第二寄存器中。4.如权利要求1所述的方法,进一步包括:用所述压缩的索引填充阵列,所述循环的操作要在对应于所述阵列的所述压缩索引的数据元素上执行。5.如权利要求4所述的方法,进一步包括:当已经被输入到所述阵列中的索引数量满足阈值时,将对应于所述阵列的所述索引的量的所述数据元素加载到要在其上执行所述操作的寄存器中。6.如权利要求5所述的方法,进一步包括:当已经被输入所述阵列中的索引数量不满足所述阈值时,...

【专利技术属性】
技术研发人员:CJ休斯M普罗特尼科夫A纳赖金
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1