【技术实现步骤摘要】
一种多节拍指令中的细粒度变量活性分析方法及系统
[0001]本专利技术涉及计算机程序编译器中的编译器寄存器分配技术,具体涉及一种多节拍指令中的细粒度变量活性分析方法及系统。
技术介绍
[0002]在编译领域中,为了更充分地利用寄存器资源、分析变量的冲突关系,编译器在对指令中的变量/操作数进行寄存器分配前,需要通过解析获取变量的活性区间/生命期,这一过程称为变量的活性分析。
[0003]在传统的体系结构中,由于资源冲突,只有执行完一条指令后才能执行下一条指令,所以指令的执行总是串行的,指令的执行周期总被设计为或者视为一拍。然而随着体系结构设计的日趋多样化,为了充分利用处理器的各项资源,部分体系结构将指令执行这一过程进一步细化并实现流水线技术。在这种平台下,单条指令的执行周期并不为一,指令流水执行,在上一拍所执行的指令未执行结束时,如果不发生资源冲突,可以执行下一条指令。一些对性能要求不高的寄存器分配算法简单地按变量第一次到最后一次操作划分单个变量的活性区间,但这种方式对寄存器的利用不够充分,可能产生过多和冗余的寄存器溢 ...
【技术保护点】
【技术特征摘要】
1.一种多节拍指令中的细粒度变量活性分析方法,其特征在于,包括以执行节拍为粒度进行单指令单变量活性分析的步骤:A1)判断程序中当前节拍i开始执行的多节拍指令I
i
为对当前的变量x进行写操作是否成立,如果成立则为变量x新建一个仅确定区间左端点为i+C
iR
+C
iE
的活性区间,其中C
iR
为多节拍指令I
i
的读变量周期,C
iE
为多节拍指令I
i
的总执行周期C
i
减去其读变量周期C
iR
、写变量周期C
iW
后得到的其他周期,跳转至步骤A4);否则跳转至下一步;A2)判断基本块内变量x的活性区间集合内是否有区间左端点小于当前节拍i的活性区间,若有,则在基本块内选中区间左端点为小于当前节拍i的最大值的活性区间,将其右端点更新为i+C
iR
,跳转至步骤A4);否则,在基本块内新建一个变量x的活性区间[0,i+C
iR
],跳转至下一步;A3)遍历该基本块的入口基本块,如果入口基本块内含有变量x的活性区间,则将最后一个活性区间的区间右端点更新为基本块的总执行节拍数t
e
,跳转至步骤A4);否则,在基本块内新建一个变量x的活性区间[0,t
e
],跳转重新执行步骤A3);A4)针对多节拍指令I
i
和当前的变量x的活性分析完成,将变量x的活性区间集合作为变量x的活性分析结果保存。2.根据权利要求1所述的多节拍指令中的细粒度变量活性分析方法,其特征在于,步骤A1)之前还包括在汇编程序的基本块中遍历获取多节拍指令I
i
以及变量x的步骤,且遍历获取多节拍指令I
i
以及变量x时,以多节拍指令和变量两者构成内外循环变量以实现内外循环双重遍历;步骤A4)之后还包括判断基本块中的内层循环变量是否遍历完毕,若内层循环变量尚未遍历完毕,则遍历获取下一个内层循环变量,并跳转至步骤A1);若内层循环变量已经遍历完毕,则进一步判断基本块中的外层循环变量是否遍历完毕,若外层循环变量尚未遍历完毕,则遍历获取下一个外层循环变量,并跳转至步骤A1);若外层循环变量也遍历完毕,则判定该基本块的单指令单变量活性分析全部完成。3.根据权利要求1所述的多节拍指令中的细粒度变量活性分析方法,其特征在于,所述进行单指令单变量活性分析之后,还包括进行循环变量活性补充的步骤:S1)在循环体第一个基本块中获取进入循环体时存活的变量x1;S2)判断变量x1是否在入口基本块中存活至最后一拍,若是则跳转至步骤S4);否则跳转至下一步;S3)判断变量x1的活性区间集合是否包含变量x1的活性区间,若包含变量x1的活性区间,则将最后一个活性区间的区间右端点更新为基本块总执行节拍数t
e
,跳转至下一步;否则,在基本块内新建一个变量x的活性区间[0,i+C
iR
],跳转重新执行步骤S2);S4)针对变量x1的循环变量活性补充完成。4.根据权利要求3所述的多节拍指令中的细粒度变量活性分析方法,其特征在于,步骤S1)之前还包括在汇编程序中选择一个变量作为初始的变量x1的步骤;步骤S4)之后还包括继续在汇编程序中遍历选择一个新的变量作为新的变量x1的步骤,若遍历完毕导致遍历选择一个新的变量失败,则结束并退出。5.一种多节拍指令中的细粒度变量活性分析方法,其特征在于,包括以执行节拍为粒度进行单指令单变量活性分析的步骤:B1)判断程序中当前节拍i开始执行的多节拍指令I
i
为对当前的变量x进行写操...
【专利技术属性】
技术研发人员:陈照云,马奕民,文梅,时洋,孔玺畅,扈啸,王耀华,孙海燕,邓灿,赵宵磊,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。