用于寄存器溢出的编译方法、电子设备和介质技术

技术编号:35655048 阅读:60 留言:0更新日期:2022-11-19 16:51
本申请涉及计算机技术领域,特别涉及一种用于寄存器溢出的编译方法、电子设备和介质。该方法应用于电子设备,该方法包括:编译器获取待编译程序;编译器对待编译程序进行编译,得到待执行指令;其中,在编译器对待编译程序进行编译包括:对应于待编译程序所包括的第一变量对应的第一寄存器发生溢出,将第一寄存器溢出的变量部分分配至第一寄存器对应的第一存储单元,对应于待编译程序所包括的第二变量对应的第二寄存器发生溢出,将第二寄存器溢出的变量部分分配至第二寄存器对应的第二存储单元。本申请实施例提供的方法,可以降低寄存器溢出带来的时间开销,提高程序性能。提高程序性能。提高程序性能。

【技术实现步骤摘要】
用于寄存器溢出的编译方法、电子设备和介质


[0001]本专利技术涉及计算机
,具体涉及一种用于寄存器溢出的编译方法、电子设备和介质。

技术介绍

[0002]寄存器为处理器(例如中央处理器(central processing unit,CPU))内部的存储区域,用于存储从内存读取而来的数据(包括指令)和处理器运算的中间结果。寄存器分配是程序编译过程中的一个阶段,具体处于编译器编译的中间表示(Intermediate Representation,IR)阶段,可执行代码输出之前。在此阶段,当数据存储需求量超过了寄存器可存储或分配的数据量,将发生寄存器溢出。目前寄存器溢出,通常将数据存储需求量超过寄存器可存储数据量的对应数据分配至电子设备的主存储器。其中,主存储器的访问速度低于寄存器的访问速度。
[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]在上述第一方面的一种可能的实现方式中,所述第一存储单元为静态随机存取存储器,所述第二存储单元为双倍速率同步动态随机存储器。
[0029]在上述第一方面的一种可能的实现方式中,所述第一存储单元包括第一堆栈存储区域;
[0030]所述编译器将所述第一寄存器溢出的变量部分分配至所述第一寄存器对应的第一存储单元,包括:
[0031]所述编译器将所述第一寄存器溢出的变量部分分配至所述第一堆栈存储区域,其中,所述第一寄存器溢出的变量部分在所述第一堆栈存储区域中以堆栈的方式进行存储。
[0032]在上述第一方面的一种可能的实现方式中,所述第二存储单元包括第二堆栈存储区域;
[0033]所述编译器将所述第二寄存器溢出的变量部分分配至所述第二寄存器对应的第二存储单元,包括:
[0034]所述编译器将所述第二寄存器溢出的变量部分分配至所述第二堆栈存储区域,其中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于寄存器溢出的编译方法,应用于电子设备,其特征在于,所述电子设备上安装有编译器,所述电子设备包括位于处理器中的多个寄存器、第一存储单元和第二存储单元;并且所述方法包括:所述编译器获取待编译程序;所述编译器对所述待编译程序进行编译,得到待执行指令;其中,在所述编译器对所述待编译程序进行编译包括:对应于所述待编译程序所包括的第一变量对应的第一寄存器发生溢出,将所述第一寄存器溢出的变量部分分配至所述第一寄存器对应的第一存储单元;对应于所述待编译程序所包括的第二变量对应的第二寄存器发生溢出,将所述第二寄存器溢出的变量部分分配至所述第二寄存器对应的第二存储单元;其中,所述处理器对所述第一存储单元和所述第二存储单元的访问速度不同。2.根据权利要求1所述的用于寄存器溢出的编译方法,其特征在于,所述第一寄存器为向量寄存器,所述第二寄存器为标量寄存器。3.根据权利要求1所述的用于寄存器溢出的编译方法,其特征在于,所述对应于所述待编译程序所包括的第一变量对应的第一寄存器发生溢出,将所述第一寄存器溢出的变量部分分配至所述第一寄存器对应的第一存储单元,包括:所述编译器确定所述第一寄存器发生溢出,并确定所述第一寄存器对应的第一寄存器类别;所述编译器根据所述第一寄存器类别,确定所述第一寄存器类别对应所述第一存储单元;所述编译器将所述第一寄存器溢出的变量部分分配至所述第一寄存器类别对应的所述第一存储单元。4.根据权利要求3所述的用于寄存器溢出的编译方法,其特征在于,所述对应于所述待编译程序所包括的第二变量对应的第二寄存器发生溢出,将所述第二寄存器溢出的变量部分分配至所述第二寄存器对应的第二存储单元,包括:所述编译器确定所述第二寄存器发生溢出,并确定所述第二寄存器对应的第二寄存器类别;所述编译器根据所述第二寄存器类别,确定所述第二寄存器类别对应所述第二存储单元;所述编译器将所述第二寄存器溢出的变量部分分配至所述第二寄存器类别对应的所述第二存储单元。5.根据权利要求4所述的用于寄存器溢出的编译方法,其特征在于,所述第一寄存器类别和所述第二寄存器类别是根据所述多个寄存器的访问频次确定的。6.根据权利要求4所述的用于寄存器溢出的编译方法,其特征在于,所述处理器对所述第一寄存器类别的所述第一寄存器的访问频次高于对所述第二寄存器类别的第二寄存器的访问频次,所述处理器对所述第一存储单元的访问速度高于所述处理器对所述第二存储单...

【专利技术属性】
技术研发人员:黄磊张定飞
申请(专利权)人:安谋科技中国有限公司
类型:发明
国别省市:

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

1