一种任务处理的方法以及任务处理装置制造方法及图纸

技术编号:27566622 阅读:42 留言:0更新日期:2021-03-09 22:11
本申请公开了一种任务处理的方法,包括:判断目标load任务是否满足第一预设条件,该目标load任务是位于load执行队列首位的load任务;若该目标load任务满足第一预设条件,则判断该目标load任务是否满足第二预设条件;若该目标load任务满足第二预设条件,则确定该目标load任务具备执行条件。本申请实施例还提供相应的任务处理装置。本申请技术方案可以应用于满足特定条件的硬件加速器中,减少硬件加速器中的自定义指令执行时由于RAW数据依赖关系导致的流水时延花销。致的流水时延花销。致的流水时延花销。

【技术实现步骤摘要】
一种任务处理的方法以及任务处理装置


[0001]本申请涉及计算机
,具体涉及一种任务处理的方法以及任务处理装置。

技术介绍

[0002]随着计算机技术的发展,由中央处理器和硬件加速器组成的异构计算架构得到广泛应用,这种异构计算架构可用于提升算法的计算速率。这种异构计算架构的实现原理是将待加速算法分割为小粒度的计算任务,并结合该异构计算架构中的自定义加速器指令(以下简称“自定义指令”),完成整个待加速算法的计算。
[0003]粗粒度并行计算机(coarse-grained parallel computers)是一种常见的异构计算架构。由于这种异构计算架构的自定义指令的划分粒度较粗,因此单个自定义指令的执行时间较长,对应的流水时延也相应较长。而且,由于粒度较粗的原因,不同的自定义指令间容易有数据依赖关系。假设每个自定义指令包含4个load任务(L0、L1、L2、L3)和4个store任务(S0、S1、S2、S3),每个自定义指令的load任务和store任务中间有一段执行时间(execute),两个自定义指令为第一指令和第二指令,该两个自定义指令的执行时序示意图如图1。需要说明的是,每个自定义指令所包含的load任务和store任务的实际执行时序可以是任意顺序,只要保证该自定义指令中的load任务和store任务的执行时序符合正常的数据依赖关系,图1所示的只是一种简单的情况。假设第一指令中的S0和第二指令中的L1的内存地址相同,则该第一指令和第二指令具有数据依赖关系,这种数据依赖关系具体为写入后读取(read after write,RAW)依赖。为避免自定义指令在执行过程中因为RAW依赖导致执行错误,开发人员会通过静态分析(人工判断或编译器判断),在相互依赖的第一指令和第二指令间增加同步(Sync)指令,从而将第二指令的执行时间延后至第一指令执行完成后,如图2所示。这种处理方式需要等待8拍(每一拍为执行一个load任务或store任务的时间)的时间,为了尽量节省自定义指令的流水时延,在理想的处理方式中,无需将第二指令的执行时间延后至第一指令执行完成后,而是将造成数据依赖关系的L1的执行时间延后至S0执行完成后,在L1之前的L0则是正常执行,如图3所示,这样只需要等待4拍的时间,可以最大限度地减少有数据依赖关系的自定义指令等待执行的时间,从而减少无谓的流水时延花销,这种方式也可以称为动态数据依赖检测处理。
[0004]在自定义指令的实际调度中,L1的执行时间有可能晚于S0,因此,该第一指令和第二指令实际上的数据依赖关系为“伪数据依赖关系”。在静态分析中,这种“伪数据依赖关系”也会被判断为数据依赖关系,所以第二指令的执行时间也需要延后至第一指令执行完成后,如图4所示,这就会造成额外的流水时延花销,降低了自定义指令的执行速率,“伪数据依赖关系”的理想处理方式是忽略其存在,正常执行自定义指令,这就不会造成流水时延增加。如果可以在静态分析的结果中进一步分析出“伪数据依赖关系”或者两个相互依赖的自定义指令中造成数据依赖的L1和S0,便可以不用延后第二指令的执行时间,或者只针对造成数据依赖的L1和S0操作进行相应的处理,从而最大限度地减少无谓的流水时延花销。

技术实现思路

[0005]本申请实施例提供了一种任务处理的方法及任务处理装置,可以应用于满足特定条件的硬件加速器中,减少硬件加速器中的自定义指令执行时由于RAW数据依赖关系导致的流水时延花销。
[0006]有鉴于此,本申请实施例第一方面提供一种任务处理的方法,应用于目标硬件加速器,该目标硬件加速器中的每一个待执行指令包含至少一个load任务和至少一个store任务,该目标硬件加速器中的全部待执行指令所包含的load任务和store任务分别通过load执行队列和store执行队列顺序执行,该方法包括:判断目标load任务是否满足第一预设条件,目标load任务是位于所述load执行队列首位的load任务;若目标load任务满足所述第一预设条件,则判断目标load任务是否满足第二预设条件;若目标load任务满足所述第二预设条件,则确定目标load任务具备执行条件。
[0007]由上述第一方面可知,通过第一预设条件和第二预设条件对目标load任务进行判断,可以确定目标load任务是否会和一些尚未执行的store任务的内存地址冲突,导致RAW数据依赖关系的发生,从而确定该目标load任务是否具备执行条件,如果具备执行条件则可以直接执行该目标load任务,若不具备执行条件则延后该目标load任务的执行时间直至具备执行条件。通过该方法,可以实现理想状态下对数据依赖关系的处理方法,尽可能地减少执行待执行指令的流水时延花销,并且可以避免“伪数据依赖关系”带来的额外的流水时延花销。
[0008]可选的,结合上述第一方面,在第一种可能的实现方式中,每一个待执行指令以及该待执行指令所包含的load任务和store任务均携带一个与该待执行指令唯一对应的指令编号,该指令编号用于表示每一个待执行指令的执行顺序,具体的,指令编号较小表示执行顺序较前。
[0009]可选的,结合上述第一方面第一种可能的实现方式,在第二种可能的实现方式中,判断目标load任务是否满足第一预设条件,包括:判断指令编号小于目标load任务的全部store任务是否已进入store执行队列;若是,则确定该目标load任务满足第一预设条件。
[0010]可选的,结合上述第一方面第二种可能的实现方式,在第三种可能的实现方式中,判断所述目标load任务是否满足第二预设条件,包括:
[0011]根据静态分析结果判断目标load任务对应的待执行指令是否与store执行队列中的全部store任务所对应的待执行任务均不具有数据依赖关系,该静态分析结果是预先设置的,该静态分析结果用于表示全部待执行指令中具有数据依赖关系的待执行指令;若是,则确定该目标load任务满足第二预设条件;或者,判断目标load任务对应的内存地址是否与store执行队列中的全部store任务对应的内存地址不相同;若是,则确定目标load任务满足第二预设条件;或者,判断store执行队列中内存地址与目标load任务相同的全部store任务的指令编号是否均大于或等于该目标load任务;若是,则确定该目标load任务满足第二预设条件。
[0012]可选的,结合上述第一方面第一种可能的实现方式,在第四种可能的实现方式中,判断目标load任务是否满足第一预设条件,包括:判断指令编号小于目标load任务的全部store任务是否已通过store执行队列进入预设的store缓冲队列;若是,则确定目标load任务满足第一预设条件。
[0013]可选的,结合上述第一方面第四种可能的实现方式,在第五种可能的实现方式中,判断所述目标load任务是否满足第二预设条件,包括:
[0014]根据静态分析结果判断目标load任务对应的待执行指令是否与store缓冲队列中的全部store任务所对应的待执行任务均不具有数据依赖关系,该静态本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务处理的方法,其特征在于,应用于目标硬件加速器,所述目标硬件加速器中的每一个待执行指令包含至少一个load任务和至少一个store任务,所述目标硬件加速器中的全部待执行指令所包含的load任务通过load执行队列顺序执行,所述目标硬件加速器中的全部待执行指令所包含的store任务通过store执行队列顺序执行,所述方法包括:判断目标load任务是否满足第一预设条件,所述目标load任务是位于所述load执行队列首位的load任务;若所述目标load任务满足所述第一预设条件,则判断所述目标load任务是否满足第二预设条件;若所述目标load任务满足所述第二预设条件,则确定所述目标load任务具备执行条件。2.根据权利要求1所述的方法,其特征在于,每一个待执行指令以及该待执行指令所包含的load任务和store任务均携带一个与该待执行指令唯一对应的指令编号,所述指令编号用于表示每一个待执行指令的执行顺序。3.根据权利要求2所述的方法,其特征在于,所述判断目标load任务是否满足第一预设条件,包括:判断指令编号小于所述目标load任务的全部store任务是否已进入所述store执行队列;若是,则确定所述目标load任务满足所述第一预设条件。4.根据权利要求3所述的方法,其特征在于,所述判断所述目标load任务是否满足第二预设条件,包括:根据静态分析结果判断所述目标load任务对应的待执行指令是否与所述store执行队列中的全部store任务所对应的待执行任务均不具有数据依赖关系,所述静态分析结果是预先设置的,所述静态分析结果用于表示全部待执行指令中具有数据依赖关系的待执行指令;若是,则确定所述目标load任务满足所述第二预设条件;或者,判断所述目标load任务对应的内存地址是否与所述store执行队列中的全部store任务对应的内存地址不相同;若是,则确定所述目标load任务满足所述第二预设条件;或者,判断所述store执行队列中内存地址与所述目标load任务相同的全部store任务的指令编号是否均大于或等于所述目标load任务;若是,则确定所述目标load任务满足所述第二预设条件。5.根据权利要求2所述的方法,其特征在于,所述判断目标load任务是否满足第一预设条件,包括:判断指令编号小于所述目标load任务的全部store任务是否已通过所述store执行队列进入预设的store缓冲队列;若是,则确定所述目标load任务满足所述第一预设条件。6.根据权利要求5所述的方法,其特征在于,所述判断所述目标load任务是否满足第二预设条件,包括:根据静态分析结果判断所述目标load任务对应的待执行指令是否与所述store缓冲队
列中的全部store任务所对应的待执行任务均不具有数据依赖关系,所述静态分析结果是预先设置的,所述静态分析结果用于表示全部待执行指令中具有数据依赖关系的待执行指令;若是,则确定所述目标load任务满足所述第二预设条件;或者,判断所述目标load任务对应的内存地址是否与所述store缓冲队列中的全部store任务对应的内存地址不相同;若是,则确定所述目标load任务满足所述第二预设条件;或者,判断所述store缓冲队列中内存地址与所述目标load任务相同的全部store任务的指令编号是否均大于或等于所述目标load任务;若是,则确定所述目标load任务满足所述第二预设条件。7.一种任务处理装置,其特征在于,应用于目标硬件加速器,所述目标硬件加速器中的每一个待执行指令包含至少一个load任务和至少一个store任务,所述目标硬件加速器中的...

【专利技术属性】
技术研发人员:陈铁肖聪王平吴正成张争争
申请(专利权)人:上海华为技术有限公司
类型:发明
国别省市:

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

1