用于通用中央处理单元的嵌套流预取的方法和系统技术方案

技术编号:39420788 阅读:12 留言:0更新日期:2023-11-19 16:09
提供了一种用于消除嵌套循环中具有流处理指令所造成的开销的方法和硬件系统。如果代码包括嵌套在外循环中的内循环,则编译器传输标识合格的嵌套流,并生成ISA特定指令,所述ISA特定指令用于将连接内循环流和外循环流的流信息传输到共同设计的预取器的硬件组件。所述硬件组件包括:能够解码和执行用于流连接信息传输机制的指令的前端,以及流引擎单元,所述流引擎单元具有:流配置表(stream configuration table,SCT),所述流配置表具有用于允许从属流等待来自其主流的值的字段;流预取管理器,所述流预取管理器具有用于存储主流的当前元素的值的缓冲区,以及用于重新配置和迭代所述流的嵌套流控制单元。和迭代所述流的嵌套流控制单元。和迭代所述流的嵌套流控制单元。

【技术实现步骤摘要】
【国外来华专利技术】用于通用中央处理单元的嵌套流预取的方法和系统
[0001]相关申请交叉引用
[0002]本申请要求2021年2月25日提交的第63/153,640号美国临时申请和2022年2月22日提交的第17/677,413号美国专利申请的优先权和利益,其全部内容通过引用并入本文中。


[0003]本专利技术大体上属于高性能计算领域,尤其涉及用于减少嵌套循环的预取操作开销的方法和系统。

技术介绍

[0004]基于数组的内存访问在许多基准的循环中很常见。但是,许多基准还包括间接内存访问,在热循环的情况下,这些间接内存访问可能导致丢失和内存访问延迟。这些可能会显著影响中央处理单元(central processing unit,CPU)的基准性能。
[0005]作为一个说明性示例,间接内存访问可以用以下代码摘录来说明:
[0006]001for(i=0;i<M;i++){
[0007]002for(j=row_start[i];j<row_start[i+1];j++){
[0008]003y[i]+=values[j]*x[col_idx[j]];
[0009]004}
[0010]005}
[0011]上述代码摘录包括在第001行至第005行由变量i递增的外循环,以及在第002行至第004行由变量j递增的内循环,即嵌套循环。x[col_idx[j]]指令是间接内存访问,因为x[

]直接引用col_idx[

],但间接引用j。如果col_idx[j]数组的值不是依序的,则硬件预取器可能难以处理内存访问,这是现有技术的限制。
[0012]在本专利申请中,流是循环中由该循环的归纳变量直接或间接索引的数组。这种数组构成了循环中的流,它可以分别称为“直接流”或“间接流”。
[0013]使用软件

硬件共同设计的间接流预取(也简称“共同设计的预取”)是一种可用于解决这一问题的技术。数组之间的关系和循环的归纳变量可以传输到硬件中的流预取单元,该流预取单元可以及时预取col_idx[j]值,然后在CPU消耗x[col_idx[j]]值之前预取x[col_idx[j]]值。
[0014]以下伪代码说明了共同设计的预取是如何工作的。它包括从第010行至第100行的外循环,以及从第060行至第080行的内循环,即嵌套循环。使用传统的预取技术,用于将流信息传输到硬件的流处理指令只能置于与内循环相同的级别。换句话说,内循环被流处理指令“包裹”。这些流处理指令在第020行、第030行、第040行、第050行和第090行呈现。
[0015]010for(i=0;i<M;i++){
[0016]020streamOpen(s_j,ST_BASE);
[0017]030streamOpen(s_values,ST_DIRECT,s_j);
[0018]040streamOpen(s_col_idx,ST_DIRECT,s_j);
[0019]050streamOpen(s_x,ST_INDIRECT,s_col_idx);
[0020]060for(j=row_start[i];j<row_start[i+1];j++){
[0021]070y[i]+=values[j]*x[col_idx[j]];
[0022]080}
[0023]090streamClose(s_j);//closing the entire stream tree
[0024]100}
[0025]在许多情况下,内循环的行程计数较小,但关联的外循环的行程计数相对较大。因此,流处理指令(例如上文示例中的streamOpen和streamClose)可能会导致开销过高,以至于预取的潜在增益显著降低,在某些情况下,该潜在增益甚至可能完全丢失。开销量取决于每种特定情况,但对用于在现实世界数据集上运行对称高斯

赛德尔(symmetric Gauss

Seidel,SymGS)基准的现代乱序处理器核心的周期精确模型的测量表明,这种开销可能包括指令增加高达10%,周期计数增加52%。
[0026]因此,需要能够消除或减轻现有技术的一个或多个限制的方法和/或系统,这些限制例如由可能由于频繁间接内存访问引起的丢失和内存访问延迟导致的开销。
[0027]提供该背景信息是为了揭示申请人认为可能与本专利技术相关的信息。没有必要承认也不应解释任何前述信息构成与本专利技术相对的现有技术。

技术实现思路

[0028]提供了通过从不必要的迭代中删除流处理指令来减少代码执行开销的方法和系统。使用实施例中的编译器分析,可以标识将内循环中的流与外循环的流连接的信息,并使用传输机制将该信息传输到根据实施例的预取器的硬件单元。一旦流连接信息已经传输,硬件单元可以预取内流数据,并且流处理指令可以在内循环外部执行。
[0029]本专利技术的一个方面提供了一种预取由内循环中的流调用的数据的方法,所述内循环嵌套在可执行代码的外循环中,所述方法包括:通过编译器分析标识流连接信息,所述流连接信息定义所述内循环中的所述流连接到所述外循环中的流的方式;将所述流连接信息从所述可执行代码传输到预取器的硬件单元;使用所述流连接信息和所述预取器的所述硬件单元预取所述数据。根据一些实施例,内循环流可以是外循环流的从属流;外循环流可以是内循环流的主流;定义内循环中的流连接到外循环中的流的方式的流连接信息可以包括:从属流标识;主流标识,为所述从属流的归纳变量提供初始值;来自所述主流标识的所述从属流标识的初始值;主流标识,为所述从属流的归纳变量提供结束值;来自所述主流标识的所述从属流标识的结束值;从属流是内循环中在所述外循环的每次迭代中改变的流,主流是外循环中可以改变以下中的一项的流:所述从属流的归纳变量的所述初始值,所述从属流的归纳变量的所述结束值;所述从属流的基地址。根据一些实施例,内循环流可以是外循环流的从属流;外循环流可以是内循环流的主流;定义内循环中的流连接到外循环中的流的方式的流连接信息可以包括:所述从属流的标识,所述主流的标识,所述主流的所述标识为所述从属流的所述标识提供基地址。根据一些实施例,可执行代码的编译器分析可以包括:标识内流候选,作为内循环中的流,所述内循环嵌套在外循环中;确定所述内流候选是否对应于合格的嵌套循环场景;标识所述外流候选,作为嵌套所述内循环的所述外循
环中的流;使用来自候选流的信息创建流依赖树;标识流连接信息,所述流连接信息定义所述内流连接到所述外流的方式;为中间表示代码生成流处理指令;在所述中间表示代码中插入所述流处理指令;其中,合格的嵌套循环场景是应用实施例的方法可以减少执行流处理指令的次数的场景。根据一些实施例,合格的嵌套循环场景的属性可以包括:外循环仅包括最内层循环;先前没有根据预取器的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种预取由内循环中的流调用的数据的方法,其特征在于,所述内循环嵌套在可执行代码的外循环中,所述方法包括:通过编译器分析标识流连接信息,所述流连接信息定义所述内循环中的所述流连接到所述外循环中的流的方式;将所述流连接信息从所述可执行代码传输到预取器的硬件单元;使用所述流连接信息和所述预取器的所述硬件单元预取所述数据。2.根据权利要求1所述的方法,其特征在于:内循环流是外循环流的从属流;所述外循环流是所述内循环流的主流;所述流连接信息包括:从属流标识;主流标识,为所述从属流的归纳变量提供初始值;来自所述主流标识的所述从属流标识的初始值;主流标识,为所述从属流的归纳变量提供结束值;来自所述主流标识的所述从属流标识的结束值;从属流是内循环中在所述外循环的每次迭代中改变的流,主流是外循环中可以改变以下中的一项的流:所述从属流的归纳变量的所述初始值,所述从属流的归纳变量的所述结束值;所述从属流的基地址。3.根据权利要求1所述的方法,其特征在于,所述内循环流是所述外循环流的从属流;所述外循环流是所述内循环流的主流;所述流连接信息包括:所述从属流的标识,所述主流的标识,所述主流的所述标识为所述从属流的所述标识提供基地址。4.根据权利要求1所述的方法,其特征在于,所述可执行代码的编译器分析包括:标识内流候选,作为内循环中的流,所述内循环嵌套在外循环中;确定所述内流候选是否对应于合格的嵌套循环场景;标识所述外流候选,作为嵌套所述内循环的所述外循环中的流;使用来自候选流的信息创建流依赖树;标识流连接信息,所述流连接信息定义所述内流连接到所述外流的方式;为中间表示代码生成流处理指令;在所述中间表示代码中插入所述流处理指令;其中,合格的嵌套循环场景是应用根据权利要求1所述的方法可以减少执行流处理指令的次数的场景。5.根据权利要求4所述的方法,其特征在于,所述合格的嵌套循环场景的属性包括:所述外循环仅包括最内层循环;先前没有根据预取器的指令集架构为要插入的对应流处理指令选择所述外循环;
所述内循环流潜在地连接到所述外循环流,信息包括以下中的至少一项:归纳变量的初始值;归纳变量的最终值;基地址。6.根据权利要求4所述的方法,其特征在于,还包括消除所述外循环中不连接到所述内循环中的流的流。7.根据权利要求4所述的方法,其特征在于,还包括消除缺少所需流连接信息的流。8.根据权利要求4所述的方法,其特征在于,还包括将所述中间...

【专利技术属性】
技术研发人员:马齐亚尔
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1