[发明专利]分配寄存器的方法和装置及编译方法和装置及电子设备在审
申请号: | 201911245130.0 | 申请日: | 2019-12-06 |
公开(公告)号: | CN112925567A | 公开(公告)日: | 2021-06-08 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 中科寒武纪科技股份有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F8/41 |
代理公司: | 北京维昊知识产权代理事务所(普通合伙) 11804 | 代理人: | 李波;孙新国 |
地址: | 100086 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分配 寄存器 方法 装置 编译 电子设备 | ||
1.一种分配寄存器的方法,其特征在于,所述方法包括:
为第一类型虚拟寄存器进行第一类型寄存器的分配;
在所述第一类型寄存器的分配完成之后,为第二类型虚拟寄存器进行第二类型寄存器的分配,
其中,在进行第二类型寄存器的分配时,如果所述第二类型虚拟寄存器发生溢出,首先选择可用的所述第一类型寄存器进行溢出,其中所述第一类型寄存器的宽度大于所述第二类型寄存器的宽度。
2.根据权利要求1所述的方法,其特征在于,所述进行第二类型寄存器的分配,还包括:
在所述第二类型虚拟寄存器发生溢出时,如果没有可用的所述第一类型寄存器,则溢出到栈空间。
3.根据权利要求1所述的方法,其特征在于,在进行第一类型寄存器的分配时,如果所述第一类型虚拟寄存器发生溢出,选择溢出到所述第二类型寄存器。
4.根据权利要求1所述的方法,其特征在于,
所述进行第一类型寄存器的分配包括:
基于所述第一类型虚拟寄存器的生存区间,进行第一类型寄存器的分配;以及
所述进行第二类型寄存器的分配包括:
基于所述第一类型虚拟寄存器的生存区间和所述第二类型虚拟寄存器的生存区间,进行第二类型寄存器的分配。
5.根据权利要求4所述的方法,其特征在于,所述第一类型虚拟寄存器的生存区间和所述第二类型虚拟寄存器的生存区间使用同一表示逻辑。
6.根据权利要求1所述的方法,其特征在于,所述第一类型寄存器包括向量寄存器,所述第二类型寄存器包括标量寄存器。
7.一种用于编译的方法,其特征在于,所述方法包括:
建立虚拟寄存器生存区间,所述虚拟寄存器生存区间包括第一类型虚拟寄存器的生存区间和第二类型虚拟寄存器的生存区间;
基于所述虚拟寄存器生存区间,利用根据权利要求1-6中任一项所述的分配寄存器的方法,进行第一类型寄存器和第二类型寄存器的分配。
8.根据权利要求7所述的方法,其特征在于,所述建立虚拟寄存器生存区间,包括:
获取源文件的中间表示,所述中间表示包括第一类型虚拟寄存器、第二类型虚拟寄存器以及作用于所述第一类型虚拟寄存器和所述第二类型虚拟寄存器的指令;
为所述指令按顺序统一建立递增或递减的程序点编号;
利用所述程序点编号表示所述第一类型虚拟寄存器的生存区间及所述第二类型虚拟寄存器的生存区间;
在所述第一类型虚拟寄存器或所述第二类型虚拟寄存器发生溢出时,更新所述虚拟寄存器生存区间。
9.根据权利要求8所述的方法,其特征在于,
所述为所述指令按顺序统一建立递增或递减的程序点编号,包括:
为所述指令建立程序点编号,所述程序点编号为n*mP,n为程序点的序号,m和P为大于1的预定自然数;
所述更新所述虚拟寄存器生存区间,包括:在所述第一类型虚拟寄存器发生溢出时,在相应的第一类型溢出点插入第一类型溢出区间以用于增加第一类型溢出伪指令和第二类型虚拟寄存器,并为所述第一类型溢出区间建立第一类型溢出点编号,所述第一类型溢出点编号与在前相邻程序点编号相差mK,K为小于P的预定整数;
在所述第二类型虚拟寄存器溢出时,在相应的第二类型溢出点插入第二类型溢出区间以用于增加第二类型溢出伪指令,并为所述第二类型溢出区间建立第二类型溢出点编号,所述第二类型溢出点编号与在前相邻程序点编号或第一类型溢出点编号相差mQ,Q为小于K的预定整数。
10.根据权利要求9所述的方法,其特征在于,所述建立虚拟寄存器生存区间,还包括:
利用原第一类型虚拟寄存器的生存区间直接获得所述增加的第二类型虚拟寄存器的生存区间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科寒武纪科技股份有限公司,未经中科寒武纪科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911245130.0/1.html,转载请声明来源钻瓜专利网。