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

文档序号:6546204阅读:192来源:国知局
用于实现高效同步和并行归约操作的向量指令的制作方法
【专利摘要】本发明公开了用于实现高效同步和并行归约操作的向量指令。在一个实施例中,处理器可包括:向量单元,用于响应于单条指令对多个数据元素执行操作;以及耦合到向量单元的控制单元,用于向该向量单元提供数据元素,其中该控制单元使得能响应于要在第一掩码下执行的第一向量指令和要在第二掩码下执行的第二向量指令对这些数据元素中的至少一些数据元素执行原子向量操作。描述并要求保护其他实施例。
【专利说明】用于实现高效同步和并行归约操作的向量指令
[0001]本发明专利申请是国际申请号为PCT/US2009/038596,国际申请日为2009年3月27日,进入中国国家阶段的申请号为200980110598.7,名称为“用于实现高效同步和并行归约操作的向量指令”的发明专利申请的分案申请。
[0002]直量
[0003]许多应用有大量数据级并行性且应当能够获益于单指令多数据(SMD)支持。在SIMD执行中,单条指令同时对多个数据元素进行操作。这典型地通过扩展诸如寄存器和算术逻辑单元(ALU)等各种资源的宽度来实现,从而允许它们分别保持多个数据元素或对多个数据元素进行操作。然而,许多此类应用花费大量时间对一组稀疏位置进行原子操作,因此从SIMD得到的益处有限,因为当前架构不支持原子向量操作。
[0004]在许多应用中,常常在多处理器系统中执行同步原语和并行归约(reduction)操作。同步原语确保了在多个线程协同工作时程序按正确次序执行。这些原语常常使用原子读-修改-写操作来实现。归约是许多科学应用中存在的常见操作。当多个线程并行地执行归约时,通常使用原子读-修改-写序列来确保竞态条件下的正确性。
[0005]现代并行架构装备有SIMD单元以改善具有数据级并行性的许多应用的性能。为了维持SMD效率,此类架构不仅允许SMD算术运算而且还允许SMD存储器(通过聚集-分散单元)读写。然而,这些架构都不支持SIMD原子操作。结果是这些原子操作不能被向量化,因此必须使用标量代码来实现。这可能使SMD效率显著降级,尤其是在SMD宽度(即,同时处理的元素的数目)较大时(例如,16)。
[0006]分散归约是许多应用中常见的操作。例如,可以使用分散-相加(scatter-add)操作使得第一阵列的多个值根据通常可为随机的索引分布被归约成(即,相加到)第二阵列的所选元素。正因如此,难以高效地并发(即,以SMD模式)处理多个元素。
[0007]柱状图计算是许多图像处理应用中常见的操作。例如,柱状图被用来跟踪图像中像素的颜色值的分布。然而,对柱状图阵列的更新可能是随机的,取决于阵列的输入数据。具体而言,相邻元素的索引可能指向柱状图中相同的柱。这种状况使得很难并发(即,以SMD模式)处理多个数据。
[0008]附图简沭
[0009]图1A是根据本发明一个实施例的处理器核的框图。
[0010]图1B是根据本发明的实施例的聚集/分散单元的示例表示。
[0011]图2是根据本发明一个实施例的用于执行原子向量操作的流程图。
[0012]图3是根据本发明的实施例的系统的框图。
[0013]详细描沭
[0014]各实施例可扩展存储器分散-聚集功能以提供对原子向量操作的支持。在各种实施例中,可以提供SIMD指令来实现原子操作。具体而言,可以提供所谓的向量链接聚集(gather-linked)指令和向量条件分散(scatter-conditional)指令从而以SIMD方式高效地支持对多个非连贯存储器位置的原子操作。注意,如本文中所使用的,术语“向量”和“SMD”被可互换地用来描述由单条指令进行操作的多个数据元素。以此方式,这些指令可实现SIMD原子操作以更加高效地实现同步原语和并行归约操作。此外,其他向量指令可提供处理器辅助以进行处理器内的归约操作和柱状图计算。
[0015]在一个实施例中,聚集-分散单元可被配置成允许原子SMD存储器操作。在其中数据结构具有被间接访问(例如,A[B[i]])而非被连贯访问的元素的应用中高效地利用SIMD常常要求重新安排数据,这可能导致大量开销。为了解决这种开销,可以提供以SMD方式加载和存储非连贯数据元素的硬件支持来执行聚集/分散操作。即,聚集操作基于源SMD寄存器中所包含的地址从间接寻址的位置读取(聚集)多个数据元素,并将它们包装在单个SMD寄存器中。相反,分散操作解包SMD寄存器中的元素并将它们写(分散)到一组间接寻址的位置中。
[0016]具体而言,根据本发明一个实施例的链接聚集指令包含预留被聚集的位置,而根据本发明一个实施例的条件分散指令将仅把值分散给仍保持其相应预留的那些元素。由于条件分散可能只对于元素子集(或根本没有元素)是成功的,因此该指令具有指示成功或失败的输出掩码,其与条件存储的输出类似。链接聚集指令的输出掩码可允许硬件实现更加灵活。各实施例可扩展标量原子存储器操作,即称为链接加载(LL)和条件存储(SC)的一对标量指令。LL返回存储在共享位置处的值并设置与该位置相关联的预留指示符。SC检查预留指示符。若其有效,则将新值写入该位置并且操作返回成功,否则不写入该值且操作返回指示失败的标志。在概念上,对于每个共享存储器位置,对于每种硬件上下文都有预留位;当共享存储器位置被任何硬件上下文写入时,与该位置相关联的各预留位被清除。LL和SC的一种用途是实现较高层同步原语,诸如关锁(lock)和开锁(unlock)。锁用于确保多个线程对共享数据的访问的原子性。然而,这些指令每次只对单个元素进行操作。各实施例可用于克服这些指令的该限制。
[0017]在SMD架构上,可使用SMD并行地执行对VLEN(SM)向量长度)个位置的多达VLEN次更新一若已知它们是要更新不同的存储器位置。然而,保证VLEN次同时更新的原子性要求获取和释放VLEN个锁。若使用标量指令,则执行用于检测、获取、更新VLEN个数据元素以及释放锁的循环的VLEN次迭代,并且有各种开销与此类操作相关联。
[0018]许多应用中的另一种常见操作是归约操作。在多处理器系统中,归约可由多个线程执行以提高性能。然而,在并行实现中,当多个线程同时更新相同的存储器位置时,使用对共享数据结构的原子访问来确保正确性。因此,归约操作可使用标量链接加载和条件存储指令来确保同时更新的原子性;然而,在没有本发明的实施例的情况下,此类操作不能以SMD方式执行。
[0019]可通过提供对LL和SC指令的SMD支持来在各种实施例中实施同步原语和并行归约的高效的SIMD友好实现。更具体而言,为了改善同步原语和并行归约的SIMD效率,
两条指令-链接聚集(vgatherlink)指令和条件分散(vscattercond)指令可为SIMD
架构提供链接加载和条件存储操作。此外,可以利用SMD架构上可用的向量聚集指令(vgather)和向量分散(vscatter)指令。向量聚集指令可以如下:
[0020]vgather base, Addrj Dst
[0021]这导致从VLEN个(不一定连贯且可能重复的)存储器位置——其地址是从
base (基址)和 Addr (base [Addr [O] ],...,base [Addr [VLEN-1]])计算出的-聚集 VLEN
个数据元素,并将其连贯地存储在目的地Dst中。注意,Addr和Dst可以位于存储器或SMD寄存器中。向量分散指令可以如下:
[0022]vscatter base, Addr, Src
[0023]该指令将来自源Src的VLEN个连贯数据元素分散到VLEN个(不一定连贯但唯一性的)存储器位置中,这些存储器位置的地址存储在地址操作数Addr中。如同vgather指令的情形一样,Addr和Src可以位于存储器或SIMD寄存器中。
[0024]因此,基于这两条向量指令以及标量LL和SC指令,向量链接聚集指令vgatherlink可以定义如下:
[0025]
【权利要求】
1.一种处理器,包括: 第一逻辑单元,用于处理加载和存储指令;以及 第二逻辑单元,用于处理聚集和分散指令,所述第二逻辑单元用于接收第一向量指令、各自至具有包括多个数据元素的向量的相应数据元素的存储位置的多个地址、以及与所述向量相关联的掩码信息,并且用于加载从与所述多个地址中由所述掩码信息指示的每个地址相对应的存储位置获得的数据元素,以及用于预留所述存储位置。
2.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元用于用与所述数据元素中未成功获得的每个数据元素相对应的无效指示符来更新所述掩码信息。
3.如权利要求2所述的处理器,其特征在于,所述第二逻辑单元用于加载和预留与成功获得的数据元素相对应的多个数据元素的子集。
4.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元用于接收第二向量指令、各自至具有所述向量的相应数据元素的存储位置的第二多个地址、以及第二掩码信息,并且若与所述第二多个地址中由所述第二掩码信息指示的每个地址相对应的存储位置仍被预留,则将来自源存储的数据元素写入与所述第二多个地址中由所述第二掩码信息指示的每个地址相对应的存储位置。
5.如权利要求4所述的处理器,其特征在于,所述第二逻辑单元用于用与所述存储位置中不再被预留的每个存储位置相对应的无效指示符从所述第二掩码信息生成输出掩码。
6.如权利要求1所述的处理器,其特征在于,所述预留的存储位置将由以后的指令使用。
7.如权利要求1所述的处理器,其特征在于,所述第二逻辑单元包括: 控制逻辑; 掩码存储,用于存储所述掩码信息;以及 向量存储,用于存储被加载的数据元素。
8.如权利要求7所述的处理器,其特征在于,所述第二逻辑单元包括混洗逻辑,所述混洗逻辑用于混洗所述向量存储中存储的数据元素。
9.如权利要求8所述的处理器,其特征在于,所述第二逻辑单元进一步用于接收所述向量存储中的用于存储所述数据元素的目的地。
10.一种用于实现同步和并行归约操作的处理器,包括: 单指令多数据(SIMD)单元,用于响应于单条指令对多个数据元素执行操作;以及 掩码存储,用于存储一个或多个掩码;以及 耦合到所述单指令多数据(SIMD)单元的控制单元,用于向所述单指令多数据(SIMD)单元提供所述多个数据元素,其中所述控制单元使得能响应于要在第一掩码下执行的第一单指令多数据(SIMD)指令和要在第二掩码下执行的第二单指令多数据(SIMD)指令,对所述多个数据元素中的至少一些数据元素执行原子单指令多数据(SIMD)操作。
11.如权利要求10所述的处理器,其特征在于,所述控制单元用于,响应于所述第一单指令多数据(SIMD)指令,根据与所述第一掩码相对应的输入掩码从第一存储器位置获得所述多个数据元素并预留所述第一存储器位置。
12.如权利要求10所述的处理器,其特征在于,所述控制单元用于将所述第一存储器位置预留给以后的SMD指令。
13.如权利要求11所述的处理器,其特征在于,所述第二单指令多数据(SMD)指令用于根据与所述第二掩码相对应的输入掩码将来自源位置的第二多个数据元素存储到被预留的所述第一存储器位置,并且其中所述第一单指令多数据(SMD)指令通过如下方式导致产生所述第二掩码:聚集和链接所述第一存储器位置的子集,并将第一掩码的相应位设为有效状态,并且将失败的元素相应的掩码位设置为无效状态。
14.如权利要求10所述的处理器,其特征在于,所述控制单元用于使得所述单指令多数据(SMD)单元执行第三单指令多数据(SMD)指令,以比较具有第二多个数据元素的第二向量并输出混洗控制以指示具有相同值的数据元素组,并且设置第三掩码的指示符以指示非唯一'丨生的数据元素。
15.如权利要求10所述的处理器,其特征在于,所述控制单元使得所述单指令多数据(SIMD)单元执行第四单指令多数据(SMD)指令以生成对具有第三多个数据元素的第三向量的相同元素的计数并将关于每个唯一性元素的计数存储在目的地存储中,并且进一步写入第四掩码的指示符以指示每个唯一性元素。
16.一种用于实现同步和并行归约操作的系统,包括: 处理器,包括逻辑单元,用于根据第一掩码执行第一单指令多数据(SMD)指令,以从相应的多个非连贯的源位置至少获得向量的数据元素子集并预留所述子集的所述非连贯的源位置供以后的单指令多数据(SIMD)指令使用,使用所述数据元素子集来执行原子单指令多数据(SMD)操作,并根据第二掩码执行第二单指令多数据(SMD)指令以将至少第二数据元素子集写入所述相应的多个非连贯的源位置;以及 耦合至所述处理器的 动态随机存取存储器(DRAM)。
17.如权利要求16所述的系统,其特征在于,所述处理器用于执行所述第二单指令多数据(SIMD)指令以将所述第二数据元素子集写入仍被预留的所述相应的非连贯的源位置。
18.如权利要求16所述的系统,其特征在于,所述以后的单指令多数据(SIMD)指令包括所述第二 SMD指令。
19.如权利要求16所述的系统,其特征在于,所述处理器用于用与所述数据元素中未成功获得的每个数据元素相对应的无效指示符来更新所述第一掩码。
20.如权利要求16所述的系统,其特征在于,所述处理器用于执行第三单指令多数据(SIMD)指令以分析具有第二多个数据元素的第二向量并输出混洗控制以指示所述第二多个数据元素中具有相同值的数据元素的组,并且设置第三掩码的指示符以指示非唯一性的数据元素。
21.如权利要求16所述的系统,其特征在于,所述处理器用于执行第四单指令多数据(SIMD)指令以生成对具有第三多个数据元素的第三向量的相同元素的计数并将关于每个唯一性元素的计数存储在目的地存储中。
22.如权利要求16所述的系统,其特征在于,所述逻辑单元包括: 控制逻辑; 掩码存储,用于存储所述第一掩码;以及 向量存储,用于存储所述至少获得的数据元素子集。
【文档编号】G06F9/38GK103970506SQ201410196526
【公开日】2014年8月6日 申请日期:2009年3月27日 优先权日:2008年3月28日
【发明者】M·斯密尔安斯基, S·库玛, D·金, V·W·李, A·D·恩古耶, Y-k·陈, C·休格斯, C·金, J·查乌加尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1