本发明专利技术公开了一种基于振荡器相位同步的嵌入式系统寄存器分配方法,主要解决现有嵌入式系统寄存器分配时间较长的问题。其实现过程是:(1)绘制中间变量相互干扰图;(2)取中间变量干扰图的补图;(3)用振荡器对应补图中的节点,求解振荡器相位值;(4)根据t时刻振荡器相位值,得出振荡器相位同步情况;(5)将其对应节点存入临时寄存器中;(6)把临时寄存器中的中间变量转存到系统寄存器中,完成嵌入式系统寄存器分配。本发明专利技术能在较短的时间内得到一个较好的嵌入式系统寄存器分配结果,可用于嵌入式系统编译过程中对中间变量进行寄存器分配。
【技术实现步骤摘要】
本专利技术属于计算机
,特别是编译过程对中间变量的寄存器分配,可用于嵌入式系统。
技术介绍
随着信息网络技术的发展,以计算机技术为基础的嵌入式系统对性能、实时性和可靠性的要求越来越高。在嵌入式系统中,编译器直接影响系统性能,而寄存器分配又对编译器生成的代码质量有着重要影响。因此从寄存器分配角度出发优化编译器的技术可有效 提高嵌入式系统中程序的执行效率。相对于存储器,寄存器操作速度快但数量有限,需要尽可能的高效使用。因此寄存器分配问题就是决定如何优化使用嵌入式系统中的寄存器,尽量减少对嵌入式系统中存储器的操作。具体地说就是在程序编译过程中将产生的中间变量尽可能多的保存在寄存器中,减少被迫溢出到存储器的中间变量个数,降低溢出代价。现有的嵌入式系统寄存器分配方法主要是基于图论的方法,将寄存器分配问题转换成图着色模型,然后利用解决图着色问题的算法获得寄存器分配的结果。较早的基于图着色模型的启发式算法0CH,设计简单,用时很少,但分配效果差。后来的混合进化算法HEA,对种群初始化后,通过免冲突交叉算子CFPX尽量使每个寄存器中的变量不冲突,然后通过局部搜索LSP调整个体中的中间变量从而减少中间变量的溢出个数,降低寄存器的溢出代价。这种方法虽然能够得到较好的寄存器分配结果,但是需要大量的时间。
技术实现思路
本专利技术的目的在于针对上述已有技术的不足,提出一种基于振荡器相位同步的嵌入式系统寄存器分配方法,以减少寄存器分配时间,从而提高嵌入式系统程序的执行效率。为了实现上述目的,本专利技术的技术方案包括如下步骤(I)将嵌入式系统编译中的中间变量用节点表示,连接相互干扰的中间变量所对应的节点,得到干扰图H;(2)保持干扰图H中的节点不变,去掉干扰图H中相连节点间的边,连接干扰图H中未连接的节点,得到干扰图H的补图G,生成补图G的邻接矩阵A={axy},x=l, 2,. . . N,y=l,2,... N,其中N为补图G的节点数目;(3)用振荡器对应补图G中的节点,分别记为1,2,...,N,在[O, 2 Ji ]中随机产生N个振荡器初始相位,在[-0. 1,0. I]随机产生N个振荡器初始频率,根据以下公式计算振荡器的相位变化值 .+ sin( θι — A) V ακν =1^(0 = ] ,-ττΣ sin( θ — θ>) if = 0 、八 J=I其中,i = I, 2,... N, COi表示振荡器i的固有频率,ki,k2表示振荡器的耦合强度,Θ i表示第i个振荡器的相位值,Θ j表示第j个振荡器相位值,axy表示邻接矩阵A中的元素;(4)根据步骤(3)中的振荡器初始相位和相位变化值,得到t时刻振荡器1,2,...,N的相位,若t时刻第i个振荡器和第j个振荡器相位差的余弦值cos ( θ Γ Θ J >0. 99,则第i个振荡器和第j个振荡器相位同步; (5)把振荡器1,2,. . .,N中相位同步的振荡器所对应的结点放入同一个临时寄存器,直到将所有的节点都分入L个临时寄存器TR1,TR2,TRl, L彡I且为整数;(6)将临时寄存器个数L与嵌入式系统寄存器个数M进行比较,若临时寄存器个数L小于等于嵌入式系统寄存器个数M,则将临时寄存器TR1, TR2,. . .,T&中的节点转存到嵌入式系统寄存器R1, R2,..., Rl中,此时嵌入式系统寄存器溢出变量数X为0,溢出代价fitness为O ;否则,先将临时寄存器TR1, TR2,. . . , TRl分为TR1, TR2,. . .,TRm和TRm+1,TRm+2, . . . , TRl两部分,然后将临时寄存器TR1, TR2,. . .,TRm中的节点转存到嵌入式系统寄存器R1, R2,, Rm中,再将临时寄存器TRm+1,TRm+2, ...,T&中的节点按照冲突最小原则加入到嵌入式系统寄存器R1, R2,..., Rm中,并使用局部搜索方法LSP对嵌入式系统寄存器R1, R2, · · ·, Rm的分配结果进行优化,得到嵌入式系统寄存器R1, R2, · · ·, Rm的节点、嵌入式系统寄存器溢出变量数X和嵌入式系统寄存器溢出代价fitness,完成嵌入式系统寄存器分配。本专利技术与现有的技术相比具有以下优点I、由于本专利技术充分利用图论知识,对嵌入式系统的中间变量干扰图建立补图,与传统图着色方法中使用的原图相比,本专利技术更加明确了中间变量之间的关系;2、由于本专利技术采用的振荡器相位同步方法属于并行处理方法,可一次性将节点分配到寄存器中,相比混合进化算法HEA,需要经过初始化、交叉、进化将节点分配到寄存器,大大减少了寄存器分配的时间,从而加快了嵌入式系统编译的过程,有工程实用意义。附图说明图I是本专利技术的流程框图;图2是本专利技术实施例中中间变量的相互干扰图;图3是本专利技术实施例中中间变量相互干扰图的补图;图4是本专利技术实施例中振荡器随时间变化的相位图;图5是本专利技术仿真试验中20个中间变量的相互干扰图;图6是本专利技术仿真试验中37个中间变量的相互干扰图。具体实施例方式参照图1,本专利技术具体实现步骤描述如下步骤I.绘制干扰图H本专利技术的实施例选择具体的嵌入式系统进行寄存器分配,嵌入式系统的11个中间变量用节点表示,记为1,2,...,11,连接相互干扰的中间变量所对应的节点,即分别将I与 2,I 与 4,I 与 7,I 与 9,2 与 3,2 与 6,2 与 8,3 与 5,3 与 7,3 与 10,4 与 5,4 与 6,4 与 10,5与8,5与9,6与11,7与11,8与11,9与11,10与11连接,绘制干扰图,如图2所示。步骤2.绘制干扰图H的补图G保持干扰图H中的节点不变,去掉干扰图H中相连节点间的边,连接干扰图H中未连接的节点,得到干扰图H的补图G,生成补图G的邻接矩阵A= {axy}, x, y表示节点,x=l, 2,... N, y=l, 2,... N, N为补图G的节点数目,若节点x, y相连,axy=l,否则axy=0 ;在本实施例中,保持图2的节点1,2,. . .,11不变,去掉图2中相连的节点之间的边,即分别将节点I与2,I与4,I与7,I与9,2与3,2与6,2与8,3与5,3与7,3与10,4与5,4与6,4与10,5与8,5与9,6与11,7与11,8与11,9与11,10与11之间的边去掉,连接图2中未连接的节点,即分别将节点I与3,I与5,I与6,I与8,I与10,I与11,2与4,2 与 5,2 与 7,2 与 9,2 与 10,2 与 11,3 与 6,3 与 8,3 与 9,3 与 11,4 与 7,4 与 8,4 与 9,4与 11,5 与 6,5 与 7,5 与 10,5 与 11,6 与 7,6 与 8,6 与 9,6 与 10,7 与 8,7 与 9,7 与 10,8与9,8与10,9与10连接,得到图2的补图G,如图3所示,生成图3的邻接矩阵 10 10 110 10 11 0 10 110 10 111 10 110 10 110 1 0 1110 0 1110 1 11 0 0 1 1 1 0 0 1 1A = Il O I O I I I I I I O卜 0 10 11本文档来自技高网...
【技术保护点】
一种基于振荡器相位同步的嵌入式系统寄存器分配方法,包括如下步骤:(1)将嵌入式系统编译中的中间变量用节点表示,连接相互干扰的中间变量所对应的节点,得到干扰图H;(2)保持干扰图H中的节点不变,去掉干扰图H中相连节点间的边,连接干扰图H中未连接的节点,得到干扰图H的补图G,生成补图G的邻接矩阵A={axy},x=1,2,...N,y=1,2,...N,其中N为补图G的节点数目;(3)用振荡器对应补图G中的节点,分别记为1,2,...,N,在[0,2π]中随机产生N个振荡器初始相位,在[?0.1,0.1]随机产生N个振荡器固有频率,根据以下公式计算振荡器的相位变化值:θ·i(t)=ωi+k1NΣj=1Nsin(θj-θi)ifaxy=1ωi-k2NΣj=1Nsin(θj-θi)ifaxy=0,其中,i=1,2,...N,ωi表示振荡器i的固有频率,k1,k2表示振荡器的耦合强度,θi表示第i个振荡器的相位值,θj表示第j个振荡器相位值,axy表示邻接矩阵A中的元素;(4)根据步骤(3)中的振荡器初始相位和相位变化值,得到t时刻振荡器1,2,...,N的相位,若t时刻第i个振荡器和第j个振荡器相位差的余弦值cos(θj?θi)>0.99,则第i个振荡器和第j个振荡器相位同步;(5)把振荡器1,2,...,N中相位同步的振荡器所对应的节点放入同一个临时寄存器,直到将所有的节点都分入L个临时寄存器TR1,TR2,...,TRL,L≥1且为整数;(6)将临时寄存器个数L与嵌入式系统寄存器个数M进行比较,若临时寄存器个数L小于等于嵌入式系统寄存器个数M,则将临时寄存器TR1,TR2,...,TRL中的节点转存到嵌入式系统寄存器R1,R2,...,RL中,此时嵌入式系统寄存器溢出变量数X为0,溢出代价fitness为0;否则,先将临时寄存器TR1,TR2,...,TRL分为TR1,TR2,...,TRM和TRM+1,TRM+2,...,TRL两部分,然后将临时寄存器TR1,TR2,...,TRM中的节点转存到嵌入式系统寄存器R1,R2,...,RM中,再将临时寄存器TRM+1,TRM+2,...,TRL中的节点按照冲突最小原则加入到嵌入式系统寄存器R1,R2,...,RM中,并使用局部搜索方法LSP对嵌入式 系统寄存器R1,R2,...,RM的分配结果进行优化,得到嵌入式系统寄存器R1,R2,...,RM的节点、嵌入式系统寄存器溢出变量数X和嵌入式系统寄存器溢出代价fitness,完成嵌入式系统寄存器分配。...
【技术特征摘要】
1.一种基于振荡器相位同步的嵌入式系统寄存器分配方法,包括如下步骤 (1)将嵌入式系统编译中的中间变量用节点表示,连接相互干扰的中间变量所对应的节点,得到干扰图H; (2)保持干扰图H中的节点不变,去掉干扰图H中相连节点间的边,连接干扰图H中未连接的节点,得到干扰图H的补图G,生成补图G的邻接矩阵A={axy},x=l, 2,... N,y=l,2,... N,其中N为补图G的节点数目; (3)用振荡器对应补图G中的节点,分别记为1,2,...,N,在[O,2Ji]中随机产生N个振荡器初始相位,在[-0. 1,0. I]随机产生N个振荡器固有频率,根据以下公式计算振荡器的相位变化值2.根据权利要求I所述的方法,其中所述步骤(6)中的溢出变量数,为从嵌入式系统中的寄存器溢出到嵌入式系统中的存储器的中间变量个数。3.根据权利要求I所述的方法,其中所述步骤(6)的溢出代价,为从嵌入式系统中的存储器存取溢出中间变量花费的时间。4.根据权利要求I所述的方法,其中所述步骤(6)的冲突最小原则,是指嵌入式系统寄存器中新加入的中间变量与嵌入式系统寄存器中已有中间变量之间的相互冲突值最小。5.根据权利要求I所述的方法,其中步骤(6)所述的使用局部搜索方法LSP对嵌入式系统寄存器R1, R2, · · ·, Rm的分配结果进行优化,按如下步骤进行 6a)计算嵌入式系统寄存器R1, R2,...,Rm分配结果中的每个节点u的溢出因子S_Factor (u) =S—Cost (u) XCF (u,m),u=l,2. · · N,I < m < M,N 为节点个数,M 为寄存器个数,其中S_Cost(...
【专利技术属性】
技术研发人员:吴建设,侯霄茹,焦李成,尚荣华,戚玉涛,吴家骥,韩红,白静,王达,
申请(专利权)人:西安电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。