CN111324354B - 一种融合寄存器对需求的寄存器选择方法 - Google Patents
一种融合寄存器对需求的寄存器选择方法 Download PDFInfo
- Publication number
- CN111324354B CN111324354B CN201911378867.XA CN201911378867A CN111324354B CN 111324354 B CN111324354 B CN 111324354B CN 201911378867 A CN201911378867 A CN 201911378867A CN 111324354 B CN111324354 B CN 111324354B
- Authority
- CN
- China
- Prior art keywords
- register
- pair
- odd
- gain
- allocation candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种融合寄存器对需求的寄存器选择方法,其包括:步骤S1:分析各寄存器分配候选者在符号寄存器对中出现的情况;步骤S2:计算各寄存器分配候选者的奇偶号收益P;所述奇偶号收益P是指一个寄存器分配候选者在其涉及的那些符号寄存器对操作数中如果该候选者被指派奇数或偶数编号寄存器时将获得的收益;步骤S3:为各寄存器分配候选者进行寄存器指派。本发明具有能够提高寄存器对分配候选者的指派成功率、减少冗余的溢出、增加代码优化机会等优点。
Description
技术领域
本发明主要涉及到编译优化技术领域,特指一种融合寄存器对需求的寄存器选择方法,即在指令的操作数中可成对地使用奇偶连号物理寄存器的情况下,为符号变量配置成对的寄存器和单个寄存器时对寄存器的优化选择方法。
背景技术
在编译技术,将代码中的符号变量映射到物理寄存器是编译的核心任务之一,相应的处理过程通常称为寄存器分配。其中,选择具体的物理寄存器指派给符号变量的生命期的子过程称为寄存器指派。对寄存器资源的优化利用是与编译所得目标代码的运行性能密切相关的。寄存器分配主要有线性扫描法和基于图着色思想的全局寄存器分配方法两类。后者基于对变量生命期的详细刻画,是寄存器分配效果较好的一类方法。
需要指出的是,寄存器分配的效果与体系结构的寄存器资源和对寄存器资源的使用方式两者密切相关。随着微电子技术和嵌入式处理器技术的发展,出于增强数据处理能力或加快访存的速度等目的,现代高性能微处理器特别是高性能DSP处理器(数字信号处理器)的一个重要硬件特点是许多指令中使用由奇偶连号的寄存器对构成的操作数。对于这个特点,传统的图着色寄存器分配方法的处理是把需要寄存器对的地方对应的两个符号变量作为一个整体,在寄存器指派时为其选择一个符合要求的物理寄存器对。这种方法对寄存器分配过程的输入代码有如下要求:成对符号变量在相应的操作数中也必须按规则成对使用,且在它们的整个生命期内不能改变其在对中的位置。这种要求一方面会造成寄存器资源的浪费,并在代码的寄存器压力较大时产生过多的溢出,使得代码的执行效率降低,另一方面给编写输入代码带来不必要的麻烦和限制,减少了优化的机会,并且也不利于人工辅助进行优化代码。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够提高寄存器对分配候选者的指派成功率、减少冗余的溢出、增加代码优化机会的融合寄存器对需求的寄存器选择方法。
为解决上述技术问题,本发明采用以下技术方案:
一种融合寄存器对需求的寄存器选择方法,其包括:
步骤S1:分析各寄存器分配候选者在符号寄存器对中出现的情况;
步骤S2:计算各寄存器分配候选者的奇偶号收益P;所述奇偶号收益P是指一个寄存器分配候选者在其涉及的那些符号寄存器对操作数中如果该候选者被指派奇数或偶数编号寄存器时将获得的收益;
步骤S3:为各寄存器分配候选者进行寄存器指派。
作为本发明的进一步改进:所述步骤S2中,如果一个寄存器分配候选者未出现在任何符号寄存器对中,其奇偶号收益值为0,否则,奇偶号收益的计算方法为:SWa-SWb,其中,SWa为它在偶号或奇号寄存器侧的各次应用对应的权重值之和,SWb为它在奇号或偶号寄存器侧的各次应用对应的权重值之和。
作为本发明的进一步改进:所述权重值取K的Ld次方,其中K为一个大于或等于1的数(例如10),Ld的值为对寄存器分配候选者的一次应用所在的指令对应的循环层次最大深度值。
作为本发明的进一步改进:所述步骤S3中,在寄存器指派过程中,对于每个寄存器分配候选者Rs,获取相应的可用寄存器构成集合SA,然后按照以下过程从SA中选择一个寄存器Ra指派给Rs:
步骤S301:如果已知Rs有首选寄存器Rp,且Rp在SA中,则将Rp作为Ra;
步骤S302:如果Rs还没有首选寄存器,且Rs未曾出现在任何符号寄存器对中,则按启发式一从SA中选择一个寄存器作为Ra;
步骤S303:如果Rs还没有首选寄存器,且Rs至少一次出现在任何符号寄存器对中,则先尝试根据Rs所在的、已经指派了一个寄存器的所有符号寄存器对的情况,按启发式二选择一个寄存器作为Ra;如果无法使用启发式二来成功获得寄存器,则根据奇偶号收益的值Ps按启发式三从SA中选择一个寄存器作为Ra。
在上述过程中,所述启发式一为:从SA中取编号最大或最小的那个寄存器,或者随机选择一个寄存器;在上述过程中,所述启发式二为:从Rs所在的符号寄存器对中找出各个已经指派了的寄存器所在的物理寄存器对中的另外一个寄存器,形成集合SB,然后在一定条件下从SB中找到一个符合Ps要求的寄存器;所述启发式三为:如果Ps等于0,则保持SA不变;如果Ps大于或小于0,则根据Ps对应的寄存器编号奇偶性需求从SA中删除编号为奇数或偶数的那些寄存器,如果此时SA为空则恢复删除前的状态,然后,从SA中按启发式一选择一个寄存器。
作为本发明的进一步改进:在所述步骤S303完成之后,即对Rs的寄存器指派完毕之后,遍历Rs所在的各个符号寄存器对进行以下处理:
若某对只有Rs指派了寄存器Ra,且Ra满足Rs的寄存器编号奇偶性要求,则设置此对涉及的另一个寄存器分配候选者Rst的首选寄存器为:Ra的配对寄存器Rb,只要Rb满足Rst的奇位率的需求。
作为本发明的进一步改进:在上述过程中,指令的数据结构包括:
指令与w集合的映射关系:一条指令可能涉及多个w,这些w构成一个对应的集合;这条指令与对应的w集合构成一个映射对;所有这样的映射对构成一个映射集合,称为mI_sA;
w与符号寄存器对集合的映射关系:一个w可能出现在多个符号寄存器对中,这些符号寄存器对构成一个对应的集合;这个w与这个集合构成一个映射对;所有这样的映射对构成一个映射集合,称为mA_sAP;
奇偶号收益数组:对于每个至少一次处于符号寄存器对中的w,用一个奇偶号收益值作为为其指派寄存器的依据之一;所有w的这些收益值保存在数组aPW中;
两个不同的w构成的对wp以及多个wp构成的集合sWP;由两个在同一符号寄存器对中不同的w构成一对寄存器分配候选者wp,多个wp构成集合sWP;
w与其首选寄存器的映射关系:在寄存器指派过程中,可能会为尚未执行寄存器指派处理的寄存器分配候选者先确定一个首选寄存器Rp;各个 w与其对应的Rp的映射对构成一个集合,称为mW_Rp;
w与其所获得的物理寄存器的映射关系:各个w与指派给它的物理寄存器映射对构成一个集合,称为mW_PR。
作为本发明的进一步改进:在计算各寄存器分配候选者的奇偶号收益时,采用以下步骤:
1)清空aPW,然后令奇偶号收益值数组aPW的元素个数为寄存器分配候选者的数量;
2)遍历所有寄存器分配候选者;对于某个寄存器分配候选者w,执行下面的步骤的处理;
3)如果mA_sAP的键中不包含w,则令w的奇偶号收益值为0,否则,w 的奇偶号收益的计算方法为:Ps=SWa-SWb,其中,SWa为它在偶号或奇号寄存器侧的各次应用对应的权重值之和,SWb为它在奇号寄存器侧的各次应用对应的权重值之和,若Swa是对应的奇号,则为偶号,w的一次应用对应的权重值取10Ld,其中Ld的值为该应用所在的指令对应的循环层次最大深度值;如果指令不在循环中,则Ld的值为0,循环层次尝试越大,Ld的值越大;计算Ps值的具体方法为:
a)初始化令Ps=0;
b)使用一个二重循环,其外层循环遍历w的各个use和各个def对应的指令Ix,其内层循环遍历Ix的各个操作数;在内层循环中,对于访问了w的操作数,当w位于符号寄存器对的奇号侧,令Ps=Ps-10Ld,当w位于符号寄存器对的偶号侧,令Ps=Ps+10Ld。
与现有技术相比,本发明的优点在于:
1、本发明的融合寄存器对需求的寄存器选择方法,融合寄存器对需求进行单寄存器和寄存器对分配候选者的寄存器指派,即使在寄存器对操作数中的成员在其生命期涉及的一部分符号寄存器对中位于奇号寄存器侧而在另一部分符号寄存器对中位于偶号寄存器侧这种情况下,也能完成寄存器指派,提升了在代码中使用符号变量时的灵活性。除寄存器指派外,在寄存器分配的其他子过程中不需要关心寄存器对的使用规则要求。
2、本发明的融合寄存器对需求的寄存器选择方法,通过使用静态的奇偶号收益和动态的首选寄存器,能根据符号寄存器在寄存器对中的使用情况优化地选择合适的奇号或偶号寄存器。当多个需要寄存器对存储的、同时活跃的数据的高(或低)字中的内容相同时,有利于减少寄存器分配过程中对寄存器对的数量的需求。
附图说明
图1是本发明方法的流程示意图。
图2是本发明在具体应用实例中对某个寄存器分配候选者进行寄存器选择的指派处理方法示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
为了后续描述的方便,先定义如下名称:
寄存器对操作数:指令中需要使用满足奇偶连号的物理寄存器对的操作数。
单寄存器操作数:指令中仅需要一个物理寄存器的普通操作数。
符号寄存器对或符号变量对:由一个寄存器对操作数涉及的两个符号变量或符号寄存器构成。
寄存器对分配候选者:一个符号变量或符号寄存器,在图着色全局寄存器分配方法中对应着变量的一个生命期。它可处于寄存器对操作数或单寄存器操作数中,但至少有一处是寄存器对操作数。
单寄存器分配候选者:仅出现在单寄存器操作数中。
寄存器分配候选者:寄存器分配候选者和单寄存器分配候选者统称为寄存器分配候选者。
奇(偶)号寄存器侧:在一个寄存器对中需要编号为奇(偶)数的那一侧。
本发明的融合寄存器对需求的寄存器选择方法,是针对某个寄存器对分配候选者既可能在寄存器对操作数中,也可能在单寄存器操作数中,既可能位于奇号寄存器侧,也可能位于偶号寄存器侧这种复杂的情况,提供一种基于符号寄存器在代码中的使用情况的优化指派方法,为其恰当选择某个寄存器对中的奇号寄存器或偶号寄存器。
参见图1和图2,本发明的融合寄存器对需求的寄存器选择方法,包括:
步骤S1:分析各寄存器分配候选者在符号寄存器对中出现的情况;
步骤S2:计算各寄存器分配候选者的奇偶号收益P;
步骤S3:为各寄存器分配候选者进行寄存器指派。
在具体应用实例中,上述步骤S2中,寄存器分配候选者的奇偶号收益及其计算。这里的奇偶号收益P是指一个寄存器分配候选者在其涉及的那些符号寄存器对操作数中如果该候选者被指派奇数(或偶数)编号寄存器时将获得的收益。如果一个寄存器分配候选者未出现在任何符号寄存器对中,其奇偶号收益值为0,否则,奇偶号收益的计算方法为:SWa-SWb,其中,SWa为它在偶号(奇号)寄存器侧的各次应用对应的权重值之和,SWb为它在奇号(偶号)寄存器侧的各次应用对应的权重值之和。所述权重值可以根据要考虑的侧重点的不同来设计,本发明中取K的Ld次方,其中K为一个大于或等于1的数(例如10), Ld的值为对寄存器分配候选者的一次应用所在的指令对应的循环层次最大深度值。
在具体应用实例中,上述步骤S3中,在寄存器指派过程中,对于每个寄存器分配候选者Rs,获取相应的可用寄存器构成集合SA,然后按照以下过程从 SA中选择一个寄存器Ra指派给Rs:
步骤S301:如果已知Rs有首选寄存器Rp,且Rp在SA中,则将Rp作为Ra。
步骤S302:如果Rs还没有首选寄存器,且Rs未曾出现在任何符号寄存器对中,则按启发式一从SA中选择一个寄存器作为Ra。
步骤S303:如果Rs还没有首选寄存器,且Rs至少一次出现在任何符号寄存器对中,则先尝试根据Rs所在的、已经指派了一个寄存器的所有符号寄存器对的情况,按启发式二选择一个寄存器作为Ra。如果无法使用启发式二来成功获得寄存器,则根据奇偶号收益的值Ps按启发式三从SA中选择一个寄存器作为Ra。
在上述过程中,所述启发式一可以按需要进行设计,例如从SA中取编号最大或最小的那个寄存器,或者随机选择一个寄存器,等等。本发明中,它是从 SA中取编号最大的那个寄存器。
在上述过程中,所述启发式二可以按需要进行设计。本发明中,它是从Rs 所在的符号寄存器对中找出各个已经指派了的寄存器所在的物理寄存器对中的另外一个寄存器,形成集合SB,然后在一定条件下从SB中找到一个符合Ps要求的寄存器。
在上述过程中,所述启发式三是:如果Ps等于0,则保持SA不变。如果 Ps大于(或小于)0,则根据Ps对应的寄存器编号奇偶性需求从SA中删除编号为奇数或偶数的那些寄存器,如果此时SA为空则恢复删除前的状态。然后,从 SA中按启发式一选择一个寄存器。
在具体应用实例中,在步骤S303完成之后,即对Rs的寄存器指派完毕之后,遍历Rs所在的各个符号寄存器对进行这样的处理:若某对只有Rs指派了寄存器Ra,且Ra满足Rs的寄存器编号奇偶性要求,则设置此对涉及的另一个寄存器分配候选者Rst的首选寄存器为:Ra的配对寄存器Rb(只要Rb满足Rst 的奇位率的需求)。
结合一个具体应用实例,如在图着色全局寄存器分配方法框架中详细阐述本发明的实现步骤。
在得到描述描述寄存器分配候选者之间冲突关系的冲突图和相应的邻接表,并修剪冲突图得到存放要依次指派物理寄存器的寄存器分配候选者的栈stk之后:
1)分析各条指令所在的循环层次的最大深度值。
2)计算各个寄存器分配候选者的奇偶号收益。
3)分析各个寄存器分配候选者Rs与其他寄存器分配候选者结合成符号寄存器对的情况,为每个Rs生成相应的寄存器分配候选者对集合RsSet。
4)从stk的顶部依次取出各寄存器分配候选者。对于每一个寄存器分配候选者Rs,都用下面的步骤处理一遍。
5)找出还没有被Rs的相邻(即生命期有交集)寄存器分配候选者使用的可用寄存器,构成集合SA。
6)如果已知Rs有首选寄存器Rp且它在SA中,或者SA中只有唯一的成员 Rx,则将Rp或Rx指派给Rs,然后转到步骤10)。否则进入下一步。
7)如果Rs还没有首选寄存器,且Rs未曾出现在任何符号寄存器对中,则按启发式规则一从SA中选择一个寄存器,然后将stk中的下一个寄存器分配候选者作为Rs,转到第5)步。否则进入下一步。
8)如果Rs还没有首选寄存器,且Rs至少一次出现在任意符号寄存器对中,则根据Rs所在的、已经指派了一个寄存器的所有符号寄存器对,按启发式规则二选择一个寄存器,然后转到步骤10)。如果无法使用启发式规则二来成功获得寄存器,则进入下一步。
9)根据Rs对应的奇偶号收益值Ps,按启发式规则三从SA中选择一个寄存器。
10)遍历Rs所在的各个符号寄存器对进行这样的处理:若某对只有Rs指派了寄存器Ra,且Ra满足Rs的寄存器编号奇偶性要求,那么,对于此符号寄存器对涉及的另一个寄存器分配候选者Rst,如果Ra的配对寄存器Rb满足Rst 的奇偶号收益的需求,则设置Rb为Rst的首选寄存器。
在具体应用实例中,由于在面向对象语言软件中,数据和相关的功能模块都封装在类中,本发明方法涉及的实施内容可封装成一个寄存器指派器类,把所需的数据都作为这个类的数据成员,所需的各子方法都作为这个类的成员函数。由于本发明方法是针对寄存器指派优化的问题,所以假定本方法所需的基本信息都已经准备好,主要有:处理器体系结构的寄存器资源信息保存在相应的体系结构类对象中,包括能够出现在寄存器对中的寄存器的编号构成的集合、寄存器对与寄存器的映射关系、寄存器对的编号构成的集合等等。此外,假定在寄存器指派之前的寄存器分配相关子过程涉及的所需信息也已知,主要包括各个寄存器分配候选者w构成的列表或集合、冲突图、邻接表、w的溢出代价、w 涉及的定值(def)和使用(use)有关的信息、由需要依次指派物理寄存器的w 构成的栈stk等等。
本发明方法需要构造的专门数据结构有:
1)指令与w集合的映射关系:一条指令可能涉及多个w,这些w构成一个对应的集合。这条指令与对应的w集合构成一个映射对。所有这样的映射对构成一个映射集合,称为mI_sA。
2)w与符号寄存器对集合的映射关系:一个w可能出现在多个符号寄存器对中,这些符号寄存器对构成一个对应的集合。这个w与这个集合构成一个映射对。所有这样的映射对构成一个映射集合,称为mA_sAP。
3)奇偶号收益数组:对于每个至少一次处于符号寄存器对中的w,用一个奇偶号收益值作为为其指派寄存器的依据之一。所有w的这些收益值保存在数组 aPW中。
4)两个不同的w构成的对wp以及多个wp构成的集合sWP。由两个在同一符号寄存器对中不同的w构成一对寄存器分配候选者wp,多个wp构成集合sWP。
5)w与其首选寄存器的映射关系:在寄存器指派过程中,可能会为尚未执行寄存器指派处理的寄存器分配候选者先确定一个首选寄存器Rp。各个w与其对应的Rp的映射对构成一个集合,称为mW_Rp。
6)w与其所获得的物理寄存器的映射关系:各个w与指派给它的物理寄存器映射对构成一个集合,称为mW_PR。
在具体应用实例中,分析寄存器分配候选者在符号寄存器对中出现的情况时,可以进一步用下面的步骤确定mA_sAP和sWP的内容:
1)清空mA_sAP和sWP。
2)定义指令与其涉及的所有作为源操作数的w的映射关系集合 instn_srcWebs,并定义指令与其涉及的所有作为目标操作数的w的映射关系集合instn_aimWebs。
3)遍历所有w,根据每个w所涉及的use对应的指令,将<指令,w>映射关系添加到集合instn_srcWebs,根据每个w所涉及的def对应的指令,将 <指令,w>映射关系添加到集合instn_aimWebs。
4)遍历每个w,对于某个w进行处理:遍历其所有use对应的指令操作数。如果某个操作数中包含符号寄存器对,并且该对中的一个成员是w(设另一个成员是wx),并且该符号寄存器对所对应的wp还不在sWP中,则将wp添加到sWP中,并将<w,wp>和<wx,wp>映射关系添加到mA_sAP中。
5)遍历每个w,对于某个w进行这样的处理:遍历w的所有def对应的指令操作数。如果某个操作数中包含符号寄存器对,并且该对中的一个成员是w(设另一个成员是wx),并且该符号寄存器对所对应的wp还不在 sWP中,则将wp添加到sWP中,并将<w,wp>和<wx,wp>映射关系添加到mA_sAP中。
在具体应用实例中,本发明在计算各寄存器分配候选者的奇偶号收益时,可以进一步采用以下步骤:
4)清空aPW,然后令奇偶号收益值数组aPW的元素个数为寄存器分配候选者的数量。
5)遍历所有寄存器分配候选者。对于某个寄存器分配候选者w,执行下面的步骤的处理。
6)如果mA_sAP的键中不包含w,则令w的奇偶号收益值为0,否则,w的奇偶号收益的计算方法为:Ps=SWa-SWb,其中,SWa为它在偶号(奇号) 寄存器侧的各次应用对应的权重值之和,SWb为它在奇号(若Swa是对应的奇号,则为偶号)寄存器侧的各次应用对应的权重值之和。w的一次应用对应的权重值取10Ld,其中Ld的值为该应用所在的指令对应的循环层次最大深度值。如果指令不在循环中,则Ld的值为0,循环层次尝试越大,Ld的值越大。计算Ps值的具体方法为:
a)初始化令Ps=0;
b)使用一个二重循环,其外层循环遍历w的各个use和各个def对应的指令Ix,其内层循环遍历Ix的各个操作数。在内层循环中,对于访问了w的操作数,当w位于符号寄存器对的奇号侧,令Ps=Ps-10Ld,当w位于符号寄存器对的偶号侧,令Ps=Ps+10Ld。
在具体应用实例中,本发明在融合寄存器对需求的物理寄存器选择时,可以进一步采用以下步骤:
从stk的顶部取出一个寄存器分配候选者w,按下面的步骤为w选择一个物理寄存器:
1)遍历w的邻接表,读取w的各相邻结点中已经获得的物理寄存器,保存在集合usedRegsByNeighbors中。根据可指派的物理寄存器集合,求 usedRegsByNeighbors的补集candRegs。如果candRegs为空,结束指派过程。否则,执行下一步。
2)定义空集合SA,然后将candRegs的内容复制到SA中。
3)如果在mW_Rp中有w对应的首选寄存器Rp,且SA中也包含有Rp,则将 Rp指派给w,转到第9)步。否则,进入下一步。
4)如果SA中只有唯一的一个元素Rx,则将Rx指派给w,转到第9)步。否则,进入下一步。
5)如果w不是mA_sAP的键,转到第7)步。否则,从aPW读取w的奇偶号收益值P。
6)基于已有指派结果进行寄存器选择,即尝试从w所在的、已经指派了一个寄存器的对中选择一个对应的、满足P的要求的候选寄存器Rx。如果能够获得Rx,则将Rx指派给w,转到第9)步。否则,进入下一步。
7)判断P是否为0。如果是,转到第9)步。否则,进入下一步。
8)按P值从SA中删除奇号或偶号寄存器。如果P大于0,则从SA中删除所有奇号寄存器,如果P小于0,则从SA中删除所有偶号寄存器。
9)判断SA是否为空。如果不为空,从SA中选择编号最大的寄存器Rx,将 Rx指派给w,转到第9)步。如果为空,将candRegs的内容复制到SA中,转到第7)步。
10)分析剩余寄存器分配候选者的首选寄存器。结束对w的寄存器指派处理。
在具体应用实例中,本发明在基于已有指派结果的寄存器选择时,对于上一节中的第6)步,具体实现方法如下:
1)定义物理寄存器到一个比例值的映射关系的集合reg_ratio。定义一个整数N并初始化为0。
2)从mA_sAP中获得键值w对应的集合,将其内容复制到一个新集合 whereinPairs中。遍历集合whereinPairs中的每一个符号寄存器对wp,对wp执行下面步骤的处理。
a)找到wp中除w之外的另外一个寄存器分配候选者wother,如果 wother还不是mW_PR的键,切换到下一个wp,并重新执行本步骤。否则,从mW_PR中读取wother对应的映射值pr,令N=N+1,进入下一步。
b)如果pr还不是reg_ratio的键,将pr添加到reg_ratio中,并令相应的映射值为1。否则,将pr相应的映射值增加1。
3)如果reg_ratio为空,则不能成功获得Rx,结束这里的处理。否则进入下一步。
4)遍历reg_ratio,对于其中的每个键reg,令其相应的值ratio=ratio/N。
5)遍历reg_ratio,从中寻找最大且超过某个阀值(例如0.5)的那个ratio 映射值对应的寄存器。如果不能找到这样的一个寄存器Rpt,结束处理。否则,进入下一步。
6)找到与Rpt成奇偶连号寄存器对的另外一个寄存器Rn。如果Rn满足w 的P值对应的奇偶号要求,则它就是要找的Rx。否则,不能成功获得Rx。结束处理。
在具体应用实例中,本发明在分析剩余寄存器分配候选者的首选寄存器时,可以进一步采用以下步骤:
这里的处理是在为某个寄存器分配候选者w指派了一个物理寄存器Rp之后,为尚等待进行寄存器指派处理的其他相关的寄存器分配候选者分析它们的首选寄存器。步骤如下:
3)从mA_sAP中读取w对应的符号寄存器对集合sAP。如果sAP为空,结束处理。否则,进入下一步。
4)遍历sAP中的各个对wp,对每个wp进行如下处理:
a)读取wp中除w之外的另外一个寄存器分配候选者wx,如果该wx已经被指派了物理寄存器,或者已知其首选寄存器,切换到下一个wp 后再执行本步骤。否则,进入下一步。
b)获取w在这个wp中的位置信息(在左侧或右侧),如果Rp的编号的奇偶性与该位置信息不匹配,切换到下一个wp后重新执行上述步骤。否则,进入下一步。
c)获得Rp对应的成对寄存器Ro,从aPW读取wx对应的奇偶号收益Px。如果Ro的编号的奇偶性与Px值匹配,则将Ro作为wx的首选寄存器,将它们的映射关系添加到mW_Rp中。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (4)
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的寄存器指派处理。
2.根据权利要求1所述的融合寄存器对需求的寄存器选择方法,其特征在于,在所述步骤S303完成之后,即对w的寄存器指派完毕之后,遍历w所在的各个符号寄存器对进行以下处理:
若某对只有w指派了寄存器Ra,且Ra满足w的寄存器编号奇偶性要求,则设置此对涉及的另一个寄存器分配候选者Rst的首选寄存器为:Ra的配对寄存器Rb,只要Rb满足Rst的奇位率的需求。
3.根据权利要求1或2所述的融合寄存器对需求的寄存器选择方法,其特征在于,在上述过程中,指令的数据结构包括:
1)指令与w集合的映射关系:一条指令涉及多个w,这些w构成一个对应的集合;这条指令与对应的w集合构成一个映射对;所有这样的映射对构成一个映射集合,称为mI_sA;
2)奇偶号收益Ps数组:对于每个至少一次处于符号寄存器对中的w,用一个奇偶号收益Ps作为为其指派寄存器的依据之一;所有w的这些奇偶号收益Ps保存在数组aPW中;
3)两个不同的w构成的对wp以及多个wp构成的集合sWP;由两个在同一符号寄存器对中不同的w构成一对寄存器分配候选者wp,多个wp构成集合sWP;
4)w与其首选寄存器的映射关系:在寄存器指派过程中,会为尚未执行寄存器指派处理的寄存器分配候选者先确定一个首选寄存器Rp;
5)w与其所获得的物理寄存器的映射关系:各个w与指派给它的物理寄存器映射对构成一个集合,称为mW_PR。
4.根据权利要求1所述的融合寄存器对需求的寄存器选择方法,其特征在于,在分析剩余寄存器分配候选者的首选寄存器时,即在为某个寄存器分配候选者w指派了一个首选寄存器Rp之后,为尚等待进行寄存器指派处理的其他相关的寄存器分配候选者分析它们的首选寄存器;包括以下步骤:
1)从mA_sAP中读取w对应的符号寄存器对集合sAP;如果sAP为空,结束处理;否则,进入下一步;
2)遍历sAP中的各个对wp,对每个wp进行如下处理:
a)读取wp中除w之外的另外一个寄存器分配候选者wx,如果该wx已经被指派了物理寄存器,或者已知其首选寄存器,切换到下一个wp后再执行本步骤;否则,进入下一步;
b)获取w在这个wp中的位置信息,如果Rp的编号的奇偶性与该位置信息不匹配,切换到下一个wp后重新执行上述步骤;否则,进入下一步;
获得Rp对应的成对寄存器Ro,从aPW读取wx对应的奇偶号收益Ps;如果Ro的编号的奇偶性与Ps值匹配,则将Ro作为wx的首选寄存器,将它们的映射关系添加到mW_Rp中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911378867.XA CN111324354B (zh) | 2019-12-27 | 2019-12-27 | 一种融合寄存器对需求的寄存器选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911378867.XA CN111324354B (zh) | 2019-12-27 | 2019-12-27 | 一种融合寄存器对需求的寄存器选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324354A CN111324354A (zh) | 2020-06-23 |
CN111324354B true CN111324354B (zh) | 2023-04-18 |
Family
ID=71166948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911378867.XA Active CN111324354B (zh) | 2019-12-27 | 2019-12-27 | 一种融合寄存器对需求的寄存器选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324354B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028118B (zh) * | 2023-01-31 | 2023-07-25 | 南京砺算科技有限公司 | 保障数据一致性的指令执行方法及图形处理器、介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912304A (zh) * | 2016-03-31 | 2016-08-31 | 中国人民解放军国防科学技术大学 | 向量vliw体系结构图着色寄存器分组分配方法 |
CN107851010A (zh) * | 2015-07-21 | 2018-03-27 | 高通股份有限公司 | 针对宽数据元素使用寄存器对的具有偶数元素和奇数元素运算的混合宽度simd运算 |
CN110187883A (zh) * | 2019-05-17 | 2019-08-30 | 湖南科技大学 | 一种面向指令目标操作数的寄存器对分配方法及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275228B2 (en) * | 2016-03-29 | 2019-04-30 | International Business Machines Corporation | Relaxing user-specified register constraints for improving register allocation |
-
2019
- 2019-12-27 CN CN201911378867.XA patent/CN111324354B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107851010A (zh) * | 2015-07-21 | 2018-03-27 | 高通股份有限公司 | 针对宽数据元素使用寄存器对的具有偶数元素和奇数元素运算的混合宽度simd运算 |
CN105912304A (zh) * | 2016-03-31 | 2016-08-31 | 中国人民解放军国防科学技术大学 | 向量vliw体系结构图着色寄存器分组分配方法 |
CN110187883A (zh) * | 2019-05-17 | 2019-08-30 | 湖南科技大学 | 一种面向指令目标操作数的寄存器对分配方法及存储介质 |
Non-Patent Citations (1)
Title |
---|
相连多寄存器组体系结构上的寄存器分配技术;张军超;《万方数据库》;20070702;13-119 * |
Also Published As
Publication number | Publication date |
---|---|
CN111324354A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218245A (zh) | 选择要在计算系统中执行的优化代码的方法和系统 | |
US7739484B2 (en) | Instruction encoding to indicate whether to store argument registers as static registers and return address in subroutine stack | |
US10235180B2 (en) | Scheduler implementing dependency matrix having restricted entries | |
US6550059B1 (en) | Method for generating optimized vector instructions from high level programming languages | |
EP3602297B1 (en) | Systems and methods for performing data processing operations using variable level parallelism | |
US7111287B2 (en) | Global processor resource assignment in an assembler | |
US7386843B2 (en) | Method and system for register allocation | |
JPH07121377A (ja) | 資源割付装置 | |
US20120011166A1 (en) | Skip list generation | |
CN101847096B (zh) | 包含栈变量函数的优化方法 | |
US11138010B1 (en) | Loop management in multi-processor dataflow architecture | |
CN111324354B (zh) | 一种融合寄存器对需求的寄存器选择方法 | |
CN114416310A (zh) | 一种多处理器负载均衡方法、计算设备及存储介质 | |
JP2007188523A (ja) | タスク実行方法およびマルチプロセッサシステム | |
US20080155496A1 (en) | Program for processor containing processor elements, program generation method and device for generating the program, program execution device, and recording medium | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
US8959309B2 (en) | Skip list generation | |
KR20130010467A (ko) | 듀얼 모드 리더 라이터 락 | |
US20220113972A1 (en) | Microprocessor, and operation method therefor | |
CN114090592B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US20110191775A1 (en) | Array-based thread countdown | |
CN110187883B (zh) | 一种面向指令目标操作数的寄存器对分配方法及存储介质 | |
CN110187882B (zh) | 一种面向指令源操作数的寄存器对分配方法及存储介质 | |
US20210019178A1 (en) | Method and system for scheduling tasks in a computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |