计算程序中数据依赖关系的方法及计算机可读存储介质技术

技术编号:31154946 阅读:16 留言:0更新日期:2021-12-04 09:45
本公开涉及计算程序中数据依赖关系的方法及计算机可读存储介质,应用于计算装置中,所述计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。用于计算装置和其他处理装置的数据存储。用于计算装置和其他处理装置的数据存储。

【技术实现步骤摘要】
计算程序中数据依赖关系的方法及计算机可读存储介质


[0001]本公开一般地涉及计算机领域。更具体地,本公开涉及计算程序中数据依赖关系的方法及计算机可读存储介质。

技术介绍

[0002]精确的数据流分析是让编译优化能高效进行的基础,静态单赋值(static single assignment,SSA)形式就是一种高效的数据流分析技术,目前几乎可以应用于所有的现代编译器。静态单赋值形式是一种中介码(intermediate representation,IR),每个变量仅被赋值一次,使得其使用定值链(use-define chain)非常明确,能帮助简化编译器的算法。
[0003]当一个内存区间可能会由多条指令来定值时,现有技术难以分析指令之间的数据依赖关系,使得编译过程无法有效简化,导致运算资源的浪费,因此一种新的方法来分析内存之间的数据依赖关系是迫切需要的。

技术实现思路

[0004]为了至少部分地解决
技术介绍
中提到的技术问题,本公开的方案提供了一种计算程序中数据依赖关系的方法及计算机可读存储介质。
[0005]在一个方面中,本公开揭露一种计算程序中数据依赖关系的方法,所述方法包括:将所述程序建构成静态单赋值形式的控制流图,所述控制流图包括多个节点;设定所述多个节点的内存描述符的初始信息,所述初始信息为直接支配节点的所有内存描述符的定值信息及kill集信息;以及基于所述控制流图进行迭代,每次迭代执行下列步骤:遍历所述多个节点,计算并更新每个节点的内存描述符的定值信息及kill集信息,并更新指令的数据依赖关系。其中所述指令的数据依赖关系用于指令编译优化时的参考信息。
[0006]在另一个方面,本公开揭露一种计算机可读存储介质,其上存储有计算程序中数据依赖关系的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
[0007]本公开通过编译器对每一条指令或中介码定值的内存区间和使用的内存区间进行分析,计算各指令之间的数据依赖关系,同时对于有定值-使用关系的指令,建立定值-使用链和使用-定值链,以简化内存之间的数据依赖关系,加速图像、语音、文本数据的计算。
附图说明
[0008]通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
[0009]图1A示出示例性的源代码及控制流图;
[0010]图1B示出等价的静态单赋值形式及控制流图;
[0011]图2示出示例性的控制流图;
[0012]图3示出本公开实施例的流程图;
[0013]图4示出本公开另一个实施例的流程图;
[0014]图5示出本公开另一个实施例的流程图;
[0015]图6示出本公开另一个实施例的流程图;
[0016]图7示出本公开另一个实施例进行置入时的流程图;
[0017]图8示出本公开另一个实施例的流程图;
[0018]图9是示出本公开实施例的集成电路装置的结构图;以及
[0019]图10是示出本公开实施例的板卡的结构图。
具体实施方式
[0020]下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0021]应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0022]还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0023]如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
[0024]下面结合附图来详细描述本公开的具体实施方式。
[0025]本公开是一种利用静态单赋值形式的控制流图,通过编译器对每一条指令定值的内存区间和使用的内存区间进行分析,计算各个指令间的数据依赖关系。对于有定值和使用关系的指令,建立起定值-使用链及使用-定值链。
[0026]控制流图是用在编译器中的一种抽象数据结构,代表了一个程序在执行过程中会遍历的所有路径,以流程图的形式反映过程内所有基本块(basic block,BB)的可能流向。控制流图是由节点和节点间的关系所组成的,节点即是基本块,是程序中最大限度顺序执行的语句序列,每个基本块只有一个入口和出口,执行时从其入口开始,从其出口结束。基本块的特点是只要是基本块内的第一条指令被执行了,那么基本块内所有指令都会按照顺序被执行,直到基本块的所有指令都被执行完毕。
[0027]静态单赋值形式最主要的用途是通过调整变量,使得每一个变量仅会被赋值一次,以达到较佳的运算效率。举例来说,以下3行代码:
[0028]y:=1
[0029]y:=2
[0030]x:=y
[0031]第一行是将y变量赋值1,第二行是将y变量赋值2,第三行是将y变量的值赋值给x变量,由于y变量在第二行被二度赋值,覆盖了第一行的赋值,而y变量的数值在第三行被使用,故第一行是没有必要的。在静态单赋值形式下,前述代码会转换成下列的中介码:
[0032]y1:=1
[0033]y2:=2
[0034]x1:=y2[0035]再以图1为例,图1A示出示例性的源代码及控制流图,首先将输入数据的值赋值给x变量,接着判断x变量的值是否为42,如果是,y变量赋值1,如果不是,则y变量谓词x+2,最后打印y变量的值。图1B示出等价的静态单赋值形式及控制流图,y变量在两个分支中被改写为y1和y2,静态单赋值形式在控制流交汇处利用Ф(PHI)函数合并了来自不同分支的y1和y2值,表示将获得y1和y2值的其中一个,接着赋值给y3,最后打印y3的值。从图1B可知,静态单赋值形式会将源代码中的各个变量做调整,使得一个变量仅被赋值一次。
[0036]静态单赋值形式的特征在于:源变量按照活动范围(从变量的一次定值到使用)进行分割,并产生添加数字编号后缀的新变量,每个变量只定值一次,如前述的y变量调整成y本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算程序中数据依赖关系的方法,所述方法包括:将所述程序建构成静态单赋值形式的控制流图,所述控制流图包括多个节点;设定所述多个节点的内存描述符的初始信息,所述初始信息为直接支配节点的所有内存描述符的定值信息及kill集信息;以及基于所述控制流图进行迭代,每次迭代执行下列步骤:遍历所述多个节点,计算并更新每个节点的内存描述符的定值信息及kill集信息,并更新指令的数据依赖关系;其中,所述指令的数据依赖关系用于指令编译优化时的参考信息。2.根据权利要求1所述的方法,其中所述迭代步骤是以逆后序数据流方式进行。3.根据权利要求1所述的方法,其中在所述计算步骤中,先计算并更新指令的使用的内存描述符,再计算并更新指令的定值的内存描述符。4.根据权利要求3所述的方法,其中对于所述指令的使用,所述计算步骤还包括:判断是否存在必须精确使用内存描述符;如存在,判断所述必须精确使用内存描述符的定值信息是否存在;如所述定值信息存在,设定所述必须精确使用内存描述符的定值信息为所述使用的定值信息。5.根据权利要求4所述的方法,其中如所述定值信息存在,所述计算步骤还包括:判断所述必须精确使用内存描述符的kill集信息是否为空;以及如不为空,判断所述可能使用内存描述符的定值信息是否存在;如所述可能使用内存描述符的定值信息存在,判断所述必须使用内存描述符的定值信息与所述可能使用内存描述符的定值信息的交集区间是否被kill掉;如未被kill掉,设定所述可能使用内存描述符的定值信息和所述必须使用内存描述符的定值信息为所述指令的使用的定值信息。6.根据权利要求4所述的方法,其中如所述定值信息存在,所述计算步骤还包括:判断所述必须精确使用内存描述符的kill集信息是否为空;以及如不为空,判断所述可能使用内存描述符的定值信息是否存在;如所述可能使用内存描述符的定值信息存在,设定所述可能使用内存描述符的定值信息和所述必须使用内存描述符的定值信息为所述指令的使用的定值信息。7.根据权利要求4所述的方法,其中如所述定值信息不存在,所述计算步骤还包括:识别所有存在定值信息的可能使用内存描述符;判断所述必须精确使用内存描述符的定值信息与所述可能使用内存描述符的定值信息的交集区间是否被kill掉;以及如未被kill掉,设定所述可能使用内存描述符的定值信息和所述必须使用内存描述符的定值信息为使用指令的定值信息为所述指令的使用的定值信息。8.根据权利要求4所述的方法,其中如所述定值信息不存在,所述计算步骤还包括:识别所有存在定值信息的可能使用内存描述符;以及设定所述可能使用内存描述符的定值信息为所述指令的使用的定值信息。9.根据权利要求4所述的方法,其中如不存在必须精确使用内存描述符,所述计算步骤还包括:
设定必须使用内存描述符及可能使用内存描述符的定值信息为所述指令的使用的定值信息。10.根据权利要求4所述的方法,其中所述计算步骤还包括:判断所述指令的使用是否存在必须使用内存描述符;以及如不存在必须使用内存描述符,设定可能使用内存描述符的定值信息为所述指令的使用的定值信息。11.根据权利要求3所述的方法,其中对于所述指令的定值,所述计算步骤包括:建立所述指令的定值中的必须定值内存描述符的定值信息;识别所述指令的定值中的必须定值内存描述符的可能定值内存描述符;以及将所述指令中的必须定值内存描述符的定值信息置入所述可能...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:中科寒武纪科技股份有限公司
类型:发明
国别省市:

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

1