寄存器分配与并行程序模型相关技术解析
一、SCRF 寄存器分配算法
1.1 算法概述
SCRF 寄存器分配算法旨在最小化特定方程的值,主要通过四个阶段完成寄存器分配,以减少 ICC(Inter - Cluster Communication)开销和溢出代码开销。
1.2 四个阶段详细介绍
1.2.1 阶段 1:生成 SLR
该阶段通过 SLR_gen
算法,基于变量的 ICC 关系合并 CLR(Candidate Live Ranges)中的变量,生成 SLR(Shared Live Ranges)。SLR 中的变量是可以绑定到 SRF(Shared Register File)的候选变量。
Algorithm SLR_gen(CLR)
1. Let SLR = ∅; for (i=1; i< |CLR|; i++) mark[i] = 0;
2. for (i=1; i< |CLR|; i++) {
3.
if (mark[i] == 0) then {
4.
Si = {vi}; S_LR(S) = C_LR(vi);
5.
for (j=i+1; j<= |CLR|; j++)
6.
if (mark[j] == 0 && (vj ∈ icc_relation(vi)) then
7.
{ Si = Si ∪ {vj}; S_LR(S) = S_LR(S) ∪ C_LR(vj)