[发明专利]一种融合寄存器对需求的寄存器选择方法有效
申请号: | 201911378867.X | 申请日: | 2019-12-27 |
公开(公告)号: | CN111324354B | 公开(公告)日: | 2023-04-18 |
发明(设计)人: | 胡勇华;王书盈;陆浩松;唐镇;颜子麦;刘志衡 | 申请(专利权)人: | 湖南科技大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清 |
地址: | 411201*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 融合 寄存器 需求 选择 方法 | ||
1.一种融合寄存器对需求的寄存器选择方法,其特征在于,包括:
步骤S1:分析各寄存器分配候选者在符号寄存器对中出现的情况;
步骤S2:计算各寄存器分配候选者的奇偶号收益Ps;所述奇偶号收益Ps是指一个寄存器分配候选者在其涉及的那些符号寄存器对操作数中如果该候选者被指派奇数或偶数编号寄存器时将获得的收益;如果一个寄存器分配候选者未出现在任何符号寄存器对中,其奇偶号收益Ps为0,否则,寄存器分配候选者w的奇偶号收益Ps的计算方法为:Ps=SWa-SWb,其中,SWa为它在偶号寄存器侧的各次应用对应的权重值之和,则SWb为它在奇号寄存器侧的各次应用对应的权重值之和;若SWa为它在奇号寄存器侧的各次应用对应的权重值之和,则SWb为它在偶号寄存器侧的各次应用对应的权重值之和;所述权重值取K的Ld次方,其中K为一个大于或等于1的数,Ld的值为对寄存器分配候选者的一次应用所在的指令对应的循环层次最大深度值;
在计算各寄存器分配候选者的奇偶号收益Ps时,采用以下步骤:
1)清空aPW,然后令奇偶号收益Ps数组aPW的元素个数为寄存器分配候选者的数量;
2)遍历所有寄存器分配候选者;对于某个寄存器分配候选者w,执行下面的步骤的处理;
3)如果mA_sAP的键中不包含w,则令w的奇偶号收益Ps为0,否则,w的奇偶号收益Ps的计算方法为:Ps=SWa-SWb,w的一次应用对应的权重值取10Ld,如果指令不在循环中,则Ld的值为0,循环层次尝试越大,
Ld的值越大;计算Ps值的具体方法为:
a)初始化令Ps=0;
使用一个二重循环,其外层循环遍历w的各个use和各个def对应的指令Ix,其内层循环遍历Ix的各个操作数;在内层循环中,对于访问了w的操作数,当w位于符号寄存器对的奇号侧,令Ps=Ps-10Ld,当w位于符号寄存器对的偶号侧,令Ps=Ps+10Ld;一个w出现在多个符号寄存器对中,这些符号寄存器对构成一个对应的集合sAP;这个w与这个集合构成一个映射对;所有这样的映射对构成一个映射集合,称为mA_sAP;
步骤S3:为各寄存器分配候选者进行寄存器指派;具体为:在寄存器指派过程中,对于每个寄存器分配候选者w,获取相应的可用寄存器构成集合SA,然后按照以下过程从SA中选择一个寄存器Ra指派给w:
步骤S301:如果已知w有首选寄存器Rp,且Rp在SA中,则将Rp作为Ra;
步骤S302:如果w还没有首选寄存器,且w未曾出现在任何符号寄存器对中,则按启发式一从SA中选择一个寄存器作为Ra;
步骤S303:如果w还没有首选寄存器,且w至少一次出现在任何符号寄存器对中,则先尝试根据w所在的、已经指派了一个寄存器的所有符号寄存器对的情况,按启发式二选择一个寄存器作为Ra;如果无法使用启发式二来成功获得寄存器,则根据奇偶号收益Ps按启发式三从SA中选择一个寄存器作为Ra;
在上述过程中,所述启发式一为:从SA中取编号最大或最小的那个寄存器,或者随机选择一个寄存器;在上述过程中,所述启发式二为:从w所在的符号寄存器对中找出各个已经指派了的寄存器所在的物理寄存器对中的另外一个寄存器,形成集合SB,然后在一定条件下从SB中找到一个符合Ps要求的寄存器;所述启发式三为:如果Ps等于0,则保持SA不变;如果Ps大于或小于0,则根据Ps对应的寄存器编号奇偶性需求从SA中删除编号为奇数或偶数的那些寄存器,如果此时SA为空则恢复删除前的状态,然后,从SA中按启发式一选择一个寄存器;
在融合寄存器对需求的物理寄存器选择时,包括以下步骤:
从在得到描述寄存器分配候选者之间冲突关系的冲突图和相应的邻接表,并修剪冲突图得到存放要依次指派物理寄存器的寄存器分配候选者的栈stk的顶部取出一个寄存器分配候选者w,按下面的步骤为w选择一个物理寄存器:
1)遍历w的邻接表,读取w的各相邻结点中已经获得的物理寄存器,保存在集合usedRegsByNeighbors中;根据可指派的物理寄存器集合,求usedRegsByNeighbors的补集candRegs;如果candRegs为空,结束指派过程;否则,执行下一步;
2)定义空集合SA,然后将candRegs的内容复制到SA中;
3)如果在mW_Rp中有w对应的首选寄存器Rp,各个w与其对应的Rp的映射对构成一个集合,称为mW_Rp,且SA中也包含有Rp,则将Rp指派给w,转到第9)步;否则,进入下一步;
4)如果SA中只有唯一的一个候选寄存器Rx,则将Rx指派给w,转到第9)步;否则,进入下一步;
5)如果w不是mA_sAP的键,转到第7)步;否则,从aPW读取w的奇偶号收益Ps;
6)基于已有指派结果进行寄存器选择,即尝试从w所在的、已经指派了一个寄存器的对中选择一个对应的、满足Ps的要求的候选寄存器Rx;如果能够获得Rx,则将Rx指派给w,转到第9)步;否则,进入下一步;
7)判断Ps是否为0;如果是,转到第9)步;否则,进入下一步;
8)按Ps值从SA中删除奇号或偶号寄存器;如果Ps大于0,则从SA中删除所有奇号寄存器,如果Ps小于0,则从SA中删除所有偶号寄存器;
9)判断SA是否为空;如果不为空,从SA中选择编号最大的寄存器Ry,将Ry指派给w,转到第9)步;如果为空,将candRegs的内容复制到SA中,转到第7)步;
10)分析剩余寄存器分配候选者的首选寄存器;结束对w的寄存器指派处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南科技大学,未经湖南科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911378867.X/1.html,转载请声明来源钻瓜专利网。