建立虚拟寄存器生存区间的方法和装置及编译方法和装置制造方法及图纸

技术编号:28752932 阅读:14 留言:0更新日期:2021-06-09 10:18
本申请提供一种建立虚拟寄存器生存区间的方法和装置及编译方法和装置及电子设备。电子设备可包括:一个或多个处理单元;存储单元,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据本申请实施例的方法。或多个处理器实现根据本申请实施例的方法。或多个处理器实现根据本申请实施例的方法。

【技术实现步骤摘要】
建立虚拟寄存器生存区间的方法和装置及编译方法和装置


[0001]本申请涉及计算
,具体而言,涉及一种建立虚拟寄存器生存区间的方法和装置及编译方法和装置、电子设备和计算机可读介质。

技术介绍

[0002]在芯片体系结构中,一般存在多种寄存器,例如标量寄存器和向量寄存器。在针对某种体系结构的芯片进行代码编译时,需要完成的任务之一就是寄存器分配。寄存器分配是通过将程序虚拟寄存器尽可能地分配到寄存器,从而提高程序执行速度的一种方法。寄存器分配是编译器优化中最为重要的问题之一,好的寄存器分配能够大大提高程序执行速度(超过250%)。寄存器分配涉及到生存区间或冲突图(对于图着色类算法的分配器)的建立。
[0003]在所述
技术介绍
部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0004]本申请旨在提供一种分配寄存器的方法和装置及编译方法和装置及电子设备,能够提高代码执行性能。
[0005]本申请的其该用户特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0006]根据本申请的一方面,提供一种建立虚拟寄存器生存区间的方法,包括:
[0007]获取源文件的中间表示,所述中间表示包括第一类型虚拟寄存器、第二类型虚拟寄存器以及作用于所述第一类型虚拟寄存器和所述第二类型虚拟寄存器的指令;
[0008]为所述指令按顺序建立递增或递减的程序点编号;
[0009]利用所述程序点编号表示虚拟寄存器生存区间,所述虚拟寄存器生存区间包括所述第一类型虚拟寄存器的生存区间及所述第二类型虚拟寄存器的生存区间;
[0010]在所述第一类型虚拟寄存器发生溢出时,在相应的第一类型溢出点插入第一类型溢出区间,并为所述第一类型溢出区间建立第一类型溢出点编号;
[0011]在所述第二类型虚拟寄存器溢出时,在相应的第二类型溢出点插入第二类型溢出区间,并为所述第二类型溢出区间建立第二类型溢出点编号,
[0012]其中,所述程序点编号、所述第一类型溢出点编号、所述第二类型溢出点编号与相应程序点的位置相关,所述程序点编号具有第一属性,所述第一类型溢出点编号具有第二属性,所述第二类型溢出点编号具有第三属性,所述第一属性、所述第二属性和所述第三属性彼此不相容。
[0013]根据本申请的另一方面,提供一种用于编译的方法,包括:
[0014]获取源文件的中间表示,所述中间表示包括第一类型虚拟寄存器、第二类型虚拟寄存器以及作用于所述第一类型虚拟寄存器和所述第二类型虚拟寄存器的指令;
[0015]为所述指令按顺序建立递增或递减的程序点编号;
[0016]利用所述程序点编号表示虚拟寄存器生存区间,所述虚拟寄存器生存区间包括所述第一类型虚拟寄存器的生存区间及所述第二类型虚拟寄存器的生存区间;
[0017]为所述第一类型虚拟寄存器的生存区间分配第一类型寄存器;
[0018]在所述第一类型虚拟寄存器发生溢出时,在相应的第一类型溢出点插入第一类型溢出区间以用于增加第一类型溢出伪指令和第二类型虚拟寄存器,为所述第一类型溢出区间建立第一类型溢出点编号;
[0019]为所述第二类型虚拟寄存器的生存区间分配第二类型寄存器以及为所述增加的第二类型虚拟寄存器的生存区间分配第二类型寄存器;
[0020]在所述第二类型虚拟寄存器溢出时,在相应的第二类型溢出点插入第二类型溢出区间以用于增加第二类型溢出伪指令,为所述第二类型溢出区间建立第二类型溢出点编号,
[0021]其中,所述程序点编号、所述第一类型溢出点编号、所述第二类型溢出点编号与相应程序点的位置相关,所述程序点编号具有第一属性,所述第一类型溢出点编号具有第二属性,所述第二类型溢出点编号具有第三属性,所述第一属性、所述第二属性和所述第三属性彼此不相容,且
[0022]其中,所述第一类型寄存器的宽度大于所述第二类型寄存器的宽度。
[0023]根据本申请的另一方面,提供一种电子设备,包括:一个或多个处理单元;存储单元,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述的方法。
[0024]根据本申请的另一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现前述的方法。
[0025]根据本申请实施例,根据示例实施例,将程序点编号融入通常使用的生存区间分析中,构成统一的生存区间表示方式,这种生存区间表示方式和分析流程结合,能减少编译时间,同时产生更高质量的目标代码。
[0026]应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
[0027]通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
[0028]图1A示出图着色算法分配寄存器的示例。
[0029]图1B示出线性扫描算法分配寄存器的示例。
[0030]图2示出根据本申请示例实施例的建立虚拟寄存器生存区间的方法。
[0031]图3示出根据本申请示例实施例的编译方法。
[0032]图4示出根据本申请示例实施例的分配寄存器的方法。
[0033]图5示出根据本申请另一示例实施例的分配寄存器的方法。
[0034]图6示出根据本申请示例实施例的建立虚拟寄存器生存区间的装置。
[0035]图7示出根据本申请示例实施例的编译装置。
[0036]图8示出根据本申请示例实施例的电子设备的框图。
具体实施方式
[0037]现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0038]此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
[0039]附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0040]附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于编译的方法,其特征在于,所述方法包括:获取源文件的中间表示,所述中间表示包括第一类型虚拟寄存器、第二类型虚拟寄存器以及作用于所述第一类型虚拟寄存器和所述第二类型虚拟寄存器的指令;为所述指令按顺序建立递增或递减的程序点编号;利用所述程序点编号表示虚拟寄存器生存区间,所述虚拟寄存器生存区间包括所述第一类型虚拟寄存器的生存区间及所述第二类型虚拟寄存器的生存区间;为所述第一类型虚拟寄存器的生存区间分配第一类型寄存器;在所述第一类型虚拟寄存器发生溢出时,在相应的第一类型溢出点插入第一类型溢出区间以用于增加第一类型溢出伪指令和第二类型虚拟寄存器,为所述第一类型溢出区间建立第一类型溢出点编号;为所述第二类型虚拟寄存器的生存区间分配第二类型寄存器以及为所述增加的第二类型虚拟寄存器的生存区间分配第二类型寄存器;在所述第二类型虚拟寄存器溢出时,在相应的第二类型溢出点插入第二类型溢出区间以用于增加第二类型溢出伪指令,为所述第二类型溢出区间建立第二类型溢出点编号,其中,所述程序点编号、所述第一类型溢出点编号、所述第二类型溢出点编号与相应程序点的位置相关,所述程序点编号具有第一属性,所述第一类型溢出点编号具有第二属性,所述第二类型溢出点编号具有第三属性,所述第一属性、所述第二属性和所述第三属性彼此不相容,且其中,所述第一类型寄存器的宽度大于所述第二类型寄存器的宽度。2.根据权利要求1所述的方法,其特征在于,所述程序点编号为n*m
P
,n为程序点的序号,m和P为大于1的预定自然数。3.根据权利要求2所述的方法,其特征在于,所述第一类型溢出点编号与在前相邻程序点编号相差m
K
,K为小于P的预定整数。4.根据权利要求3所述的方法,其特征在于,所述第二类型溢出点编号与在前相邻程序点编号或第一类型溢出点编号相差m
Q
,Q为小于K的预定整数。5.根据权利要求1所述的方法,其特征在于,在为所述第二类型虚拟寄存器的生存区间分配第二类型寄存器时,如果所述第二类型虚拟寄存器发生溢出,首先选择可用的所述第一类型寄存器进行溢出;如果没有可用的所述第一类型寄存器,则溢出到栈空间。6.根据权利要求5所述的方法,其特征在于,还包括:基于第一类型寄存器和第二类型寄存器的分配结果进行代码优化;基于所述分配结果和优化后的代码进行...

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

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

1