[发明专利]分配寄存器的方法和装置及编译方法和装置及电子设备在审
申请号: | 201911245130.0 | 申请日: | 2019-12-06 |
公开(公告)号: | CN112925567A | 公开(公告)日: | 2021-06-08 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 中科寒武纪科技股份有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F8/41 |
代理公司: | 北京维昊知识产权代理事务所(普通合伙) 11804 | 代理人: | 李波;孙新国 |
地址: | 100086 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分配 寄存器 方法 装置 编译 电子设备 | ||
本申请提供一种分配寄存器的方法和装置及编译方法和装置及电子设备。电子设备可包括:一个或多个处理单元;存储单元,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据本申请实施例的寄存器分配方法或编译方法。
技术领域
本申请涉及计算技术领域,具体而言,涉及一种分配寄存器的方法和装置及编译方法和装置、电子设备和计算机可读介质。
背景技术
在芯片体系结构中,一般存在多种寄存器,例如标量寄存器和向量寄存器。在针对某种体系结构的芯片进行代码编译时,需要完成的任务之一就是寄存器分配。寄存器分配是通过将程序虚拟寄存器尽可能地分配到寄存器,从而提高程序执行速度的一种方法。寄存器分配是编译器优化中最为重要的问题之一,好的寄存器分配能够大大提高程序执行速度(超过250%)。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请旨在提供一种分配寄存器的方法和装置及编译方法和装置及电子设备,能够提高代码执行性能。
本申请的其该用户特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提供一种分配寄存器的方法,包括:为第一类型虚拟寄存器进行第一类型寄存器的分配;在所述第一类型寄存器的分配完成之后,为第二类型虚拟寄存器进行第二类型寄存器的分配,其中,在进行第二类型寄存器的分配时,如果所述第二类型虚拟寄存器发生溢出,首先选择可用的所述第一类型寄存器进行溢出,其中所述第一类型寄存器的宽度大于所述第二类型寄存器的宽度。
根据本申请的另一方面,提供一种编译方法,包括:建立虚拟寄存器生存区间,所述虚拟寄存器生存区间包括第一类型虚拟寄存器的生存区间和第二类型虚拟寄存器的生存区间;基于所述虚拟寄存器生存区间,利用前述分配寄存器的方法,进行第一类型寄存器和第二类型寄存器的分配。
根据本申请的另一方面,提供一种电子设备,包括:一个或多个处理单元;存储单元,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述的方法。
根据本申请的另一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现前述的方法。
根据本申请实施例,不同寄存器的分配有一定的独立性,这样可以使同一套核心算法应用于不同的寄存器。同时,不同寄存器的分配有一定的先后顺序,例如在分配完向量寄存器后,再进行标量寄存器的分配,这样可以获取向量寄存器的分配结果。当标量寄存器需要溢出时,选择安全的策略,例如在不引起向量寄存器的溢出的情况下选择一个向量寄存器来溢出标量寄存器。这样,由于充分地利用了各种寄存器,可以有效提高代码性能,提高程序执行速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
图1A示出图着色算法分配寄存器的示例。
图1B示出线性扫描算法分配寄存器的示例。
图2示出根据本申请示例实施例的分配寄存器的方法。
图3示出根据本申请另一示例实施例的分配寄存器的方法。
图4示出根据本申请示例实施例的编译方法。
图5示出根据本申请示例实施例的建立虚拟寄存器生存区间的方法。
图6示出根据本申请示例实施例的寄存器分配装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科寒武纪科技股份有限公司,未经中科寒武纪科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911245130.0/2.html,转载请声明来源钻瓜专利网。