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

用于实现高效同步和并行归约操作的向量指令制造技术

技术编号:10286725 阅读:183 留言:0更新日期:2014-08-06 11:56
本发明专利技术公开了用于实现高效同步和并行归约操作的向量指令。在一个实施例中,处理器可包括:向量单元,用于响应于单条指令对多个数据元素执行操作;以及耦合到向量单元的控制单元,用于向该向量单元提供数据元素,其中该控制单元使得能响应于要在第一掩码下执行的第一向量指令和要在第二掩码下执行的第二向量指令对这些数据元素中的至少一些数据元素执行原子向量操作。描述并要求保护其他实施例。

【技术实现步骤摘要】
用于实现高效同步和并行归约操作的向量指令本专利技术专利申请是国际申请号为PCT/US2009/038596,国际申请日为2009年3月27日,进入中国国家阶段的申请号为200980110598.7,名称为“用于实现高效同步和并行归约操作的向量指令”的专利技术专利申请的分案申请。背景许多应用有大量数据级并行性且应当能够获益于单指令多数据(SIMD)支持。在SIMD执行中,单条指令同时对多个数据元素进行操作。这典型地通过扩展诸如寄存器和算术逻辑单元(ALU)等各种资源的宽度来实现,从而允许它们分别保持多个数据元素或对多个数据元素进行操作。然而,许多此类应用花费大量时间对一组稀疏位置进行原子操作,因此从SIMD得到的益处有限,因为当前架构不支持原子向量操作。在许多应用中,常常在多处理器系统中执行同步原语和并行归约(reduction)操作。同步原语确保了在多个线程协同工作时程序按正确次序执行。这些原语常常使用原子读-修改-写操作来实现。归约是许多科学应用中存在的常见操作。当多个线程并行地执行归约时,通常使用原子读-修改-写序列来确保竞态条件下的正确性。现代并行架构装备有SIMD单元以改善具有数据级并行性的许多应用的性能。为了维持SIMD效率,此类架构不仅允许SIMD算术运算而且还允许SIMD存储器(通过聚集-分散单元)读写。然而,这些架构都不支持SIMD原子操作。结果是这些原子操作不能被向量化,因此必须使用标量代码来实现。这可能使SIMD效率显著降级,尤其是在SIMD宽度(即,同时处理的元素的数目)较大时(例如,16)。分散归约是许多应用中常见的操作。例如,可以使用分散-相加(scatter-add)操作使得第一阵列的多个值根据通常可为随机的索引分布被归约成(即,相加到)第二阵列的所选元素。正因如此,难以高效地并发(即,以SIMD模式)处理多个元素。柱状图计算是许多图像处理应用中常见的操作。例如,柱状图被用来跟踪图像中像素的颜色值的分布。然而,对柱状图阵列的更新可能是随机的,取决于阵列的输入数据。具体而言,相邻元素的索引可能指向柱状图中相同的柱。这种状况使得很难并发(即,以SIMD模式)处理多个数据。附图简述图1A是根据本专利技术一个实施例的处理器核的框图。图1B是根据本专利技术的实施例的聚集/分散单元的示例表示。图2是根据本专利技术一个实施例的用于执行原子向量操作的流程图。图3是根据本专利技术的实施例的系统的框图。详细描述各实施例可扩展存储器分散-聚集功能以提供对原子向量操作的支持。在各种实施例中,可以提供SIMD指令来实现原子操作。具体而言,可以提供所谓的向量链接聚集(gather-linked)指令和向量条件分散(scatter-conditional)指令从而以SIMD方式高效地支持对多个非连贯存储器位置的原子操作。注意,如本文中所使用的,术语“向量”和“SIMD”被可互换地用来描述由单条指令进行操作的多个数据元素。以此方式,这些指令可实现SIMD原子操作以更加高效地实现同步原语和并行归约操作。此外,其他向量指令可提供处理器辅助以进行处理器内的归约操作和柱状图计算。在一个实施例中,聚集-分散单元可被配置成允许原子SIMD存储器操作。在其中数据结构具有被间接访问(例如,A[B[i]])而非被连贯访问的元素的应用中高效地利用SIMD常常要求重新安排数据,这可能导致大量开销。为了解决这种开销,可以提供以SIMD方式加载和存储非连贯数据元素的硬件支持来执行聚集/分散操作。即,聚集操作基于源SIMD寄存器中所包含的地址从间接寻址的位置读取(聚集)多个数据元素,并将它们包装在单个SIMD寄存器中。相反,分散操作解包SIMD寄存器中的元素并将它们写(分散)到一组间接寻址的位置中。具体而言,根据本专利技术一个实施例的链接聚集指令包含预留被聚集的位置,而根据本专利技术一个实施例的条件分散指令将仅把值分散给仍保持其相应预留的那些元素。由于条件分散可能只对于元素子集(或根本没有元素)是成功的,因此该指令具有指示成功或失败的输出掩码,其与条件存储的输出类似。链接聚集指令的输出掩码可允许硬件实现更加灵活。各实施例可扩展标量原子存储器操作,即称为链接加载(LL)和条件存储(SC)的一对标量指令。LL返回存储在共享位置处的值并设置与该位置相关联的预留指示符。SC检查预留指示符。若其有效,则将新值写入该位置并且操作返回成功,否则不写入该值且操作返回指示失败的标志。在概念上,对于每个共享存储器位置,对于每种硬件上下文都有预留位;当共享存储器位置被任何硬件上下文写入时,与该位置相关联的各预留位被清除。LL和SC的一种用途是实现较高层同步原语,诸如关锁(lock)和开锁(unlock)。锁用于确保多个线程对共享数据的访问的原子性。然而,这些指令每次只对单个元素进行操作。各实施例可用于克服这些指令的该限制。在SIMD架构上,可使用SIMD并行地执行对VLEN(SIMD向量长度)个位置的多达VLEN次更新——若已知它们是要更新不同的存储器位置。然而,保证VLEN次同时更新的原子性要求获取和释放VLEN个锁。若使用标量指令,则执行用于检测、获取、更新VLEN个数据元素以及释放锁的循环的VLEN次迭代,并且有各种开销与此类操作相关联。许多应用中的另一种常见操作是归约操作。在多处理器系统中,归约可由多个线程执行以提高性能。然而,在并行实现中,当多个线程同时更新相同的存储器位置时,使用对共享数据结构的原子访问来确保正确性。因此,归约操作可使用标量链接加载和条件存储指令来确保同时更新的原子性;然而,在没有本专利技术的实施例的情况下,此类操作不能以SIMD方式执行。可通过提供对LL和SC指令的SIMD支持来在各种实施例中实施同步原语和并行归约的高效的SIMD友好实现。更具体而言,为了改善同步原语和并行归约的SIMD效率,两条指令——链接聚集(vgatherlink)指令和条件分散(vscattercond)指令可为SIMD架构提供链接加载和条件存储操作。此外,可以利用SIMD架构上可用的向量聚集指令(vgather)和向量分散(vscatter)指令。向量聚集指令可以如下:vgatherbase,Addr,Dst这导致从VLEN个(不一定连贯且可能重复的)存储器位置——其地址是从base(基址)和Addr(base[Addr[0]],...,base[Addr[VLEN-l]])计算出的——聚集VLEN个数据元素,并将其连贯地存储在目的地Dst中。注意,Addr和Dst可以位于存储器或SIMD寄存器中。向量分散指令可以如下:vscatterbase,Addr,Src该指令将来自源Src的VLEN个连贯数据元素分散到VLEN个(不一定连贯但唯一性的)存储器位置中,这些存储器位置的地址存储在地址操作数Addr中。如同vgather指令的情形一样,Addr和Src可以位于存储器或SIMD寄存器中。因此,基于这两条向量指令以及标量LL和SC指令,向量链接聚集指令vgatherlink可以定义如下:操作码目的地基址源掩码vgatherlinkDst存储器AddrF该指令作用于聚集和链接多个数据元素,并且还预留所聚集数据元素的存储器位置供以后的条件分散指令使用。该指令由此尝试将掩码下本文档来自技高网...
用于实现高效同步和并行归约操作的向量指令

【技术保护点】
一种处理器,包括:第一逻辑单元,用于处理加载和存储指令;以及第二逻辑单元,用于处理聚集和分散指令,所述第二逻辑单元用于接收第一向量指令、各自至具有包括多个数据元素的向量的相应数据元素的存储位置的多个地址、以及与所述向量相关联的掩码信息,并且用于加载从与所述多个地址中由所述掩码信息指示的每个地址相对应的存储位置获得的数据元素,以及用于预留所述存储位置。

【技术特征摘要】
2008.03.28 US 12/079,7741.一种处理器,包括:第一逻辑单元,用于处理加载和存储指令;以及第二逻辑单元,用于处理聚集和分散指令,所述第二逻辑单元用于接收第一向量指令、各自至具有包括多个数据元素的向量的相应数据元素的存储位置的多个地址、以及与所述向量相关联的掩码信息,并且用于加载从与所述多个地址中由所述掩码信息指示的每个地址相对应的存储位置获得的数据元素,以及用于预留所述存储位置。2.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元用于用与所述数据元素中未成功获得的每个数据元素相对应的无效指示符来更新所述掩码信息。3.如权利要求2所述的处理器,其特征在于,所述第二逻辑单元用于加载和预留与成功获得的数据元素相对应的多个数据元素的子集。4.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元用于接收第二向量指令、各自至具有所述向量的相应数据元素的存储位置的第二多个地址、以及第二掩码信息,并且若与所述第二多个地址中由所述第二掩码信息指示的每个地址相对应的存储位置仍被预留,则将来自源存储的数据元素写入与所述第二多个地址中由所述第二掩码信息指示的每个地址相对应的存储位置。5.如权利要求4所述的处理器,其特征在于,所述第二逻辑单元用于用与所述存储位置中不再被预留的每个存储位置相对应的无效指示符从所述第二掩码信息生成输出掩码。6.如权利要求1所述的处理器,其特征在于,所述预留的存储位置将由以后的指令使用。7.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元包括:控制逻辑单元;掩码存储单元,用于存储所述掩码信息;以及向量存储单元,用于存储被加载的数据元素。8.如权利要求7所述的处理器,其特征在于,所述第二逻辑单元包括混洗逻辑单元,所述混洗逻辑单元用于混洗所述向量存储单元中存储的数据元素。9.如权利要求8所述的处理器,其特征在于,所述第二逻辑单元进一步用于接收所述向量存储单元中的用于存储所述数据元素的目的地。10.一种用于实现同步和并行归约操作的处理器,包括:单指令多数据(SIMD)单元,用于响应于单条指令对多个数据元素执行操作;以及掩码存储单元,用于存储一个或多个掩码;以及耦合到所述单指令多数据(SIMD)单元的控制单元,用于向所述单指令多数据(SI...

【专利技术属性】
技术研发人员:M·斯密尔安斯基S·库玛D·金V·W·李A·D·恩古耶YK·陈C·休格斯C·金J·查乌加尼
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

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

1