非易失处理器备份容量设定、内存备份方法及系统与流程

文档序号:12665133阅读:来源:国知局

技术特征:

1.非易失处理器备份容量设定、内存备份方法,其特征是,包括如下步骤:

步骤(1):将原二进制程序反汇编成反汇编程序,依据反汇编程序中指令的先后关系建立程序控制流程图CFG;CFG是control flow graph的缩写;

步骤(2):依据控制流程图CFG建立整个程序的拓扑序列表Seq,依据拓扑序列表Seq的拓扑顺序对每一条指令进行栈版本分析;输出存储整个程序的栈版本表SL和每条指令的栈的版本集合SVS;

步骤(3):建立剩余能量分配模型;依据剩余能量分配模型进行可行备份点选择;

步骤(4):设计栈备份所需的非易失存储器NVM空间;

步骤(5):利用启发式算法来确定备份标签的位置:备份标签的作用是为了接收到能量警告信号后,先让程序继续执行,直到遇到标签再触发备份操作。

2.如权利要求1所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(1)中:

将反汇编程序分为四大类:无条件跳转指令、条件跳转指令、函数调用指令和顺序执行指令;

依据每条指令的实现功能,建立每条指令的入边集合和出边集合,所述入边集合包括当前指令的所有前一条指令的集合;当前指令的前一条指令有一种或多种;所述出边集合包括当前指令的所有后一条指令的集合;当前指令的后一条指令有一种或多种;

控制流程图CFG是个有向图,控制流程图中每一个点就是一条指令,依据每条指令的前继和后继关系,用箭头表示指令之间的先后依赖关系,然后构建出整个程序的CFG。

3.如权利要求2所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(2)中:

步骤(21):假设SVS表示每条指令的栈的版本集合,SL表示存储整个程序的栈版本表,lp表示循环次数,先进行变量初始化;

步骤(22):根据指令是否对栈的存储空间大小产生影响,将指令分为stack-affected指令和stack-unaffected指令;stack-affected指令指的是指令执行将影响栈大小的指令;stack-unaffected指令指的是指令执行但不会影响栈大小的指令;

步骤(23):依据控制流程图CFG建立整个程序的拓扑序列表Seq;

拓扑序列表就是依据CFG中指令的先后依赖关系建立的一张序列表;在建立拓扑序列表的过程中,不考虑循环回跳边;

步骤(24):依据拓扑序列表Seq的拓扑顺序对每一条指令进行分析;

若当前指令是stack-unaffected指令,则当前指令直接继承前一条指令的栈的版本集合SVS;

若当前指令是stack-affected指令,进一步分析当前指令的执行对栈的影响且是否会产生新版本的栈,若产生则对存储整个程序的栈版本表SL和当前指令的栈的版本集合SVS做相应的修改;若未产生则进入步骤(25);

步骤(25):重复步骤(24),执行lp次,结束;

步骤(26):最后输出存储整个程序的栈版本表SL和每条指令的栈的版本集合SVS。

4.如权利要求3所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(3)中:

步骤(31):建立剩余能量分配模型;

首先剩余的可用能量既要满足后续的程序执行,又要满足栈的备份;

位置p是一个可行的备份位置,则剩余的可用能量要能够支持程序执行到p并且备份p的栈中的所有内容:

aveEne≥Ene(Ins)+Ene(backup) (1)

其中,aveEne表示剩余的可用能量,Ene(Ins)表示执行指令消耗能量,Ene(backup)表示备份操作消耗能量;

步骤(32):计算执行指令消耗能量;

根据与处理器对应的指令集和每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins),执行指令消耗能量Ene(Ins)包含所有类型指令执行所消耗的能量;

步骤(33):计算备份操作消耗能量;

根据不同的NVM备份过程中能量消耗情况,以及要备份的内容备份过程中消耗的能量与要备份的内容所占据的存储空间成比例,计算备份操作消耗能量Ene(backup);

步骤(34):备份位置选择;

依据剩余能量分配模型,为每一条指令计算出对应的可行备份点集合,其中需备份的栈最小的备份点是最理想的备份位置。

5.如权利要求4所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(34)包括如下步骤:

步骤(341):列出每个指令ci的j条可能路径pij;可能路径是在任何一条指令ci的位置,发生能量警告时,在剩余可用能量范围内,指令可能经过的所有路径;

步骤(342):利用步骤(26)得到的每条指令的栈版本集合SVS,取相应的栈版本集合SVS中栈存储空间最大的栈版本对应的栈的存储空间作为指令ci所需的栈大小s(ci),确定每条指令备份所需预留的能耗Ene(backup);

步骤(343):依据剩余能量分配模型,针对每一条可能路径pij判断该路径上的每个指令ci是否是可行备份点;若是,就保存在可行备份点数据库中,若否则返回步骤(342)继续判断。

6.如权利要求5所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(4)中:

步骤(41):从步骤(342)获取指令ci所需的栈大小s(ci);

步骤(42):在剩余的可用能量范围内,从每一条指令开始的可能路径包括一条或多条;针对每条指令ci的每一条可能的路径pij,取可能路径pij的可行备份点的指令所需备份的栈存储空间的最小值作为每条路径的所需备份的栈存储空间RS(pij);然后取RS(pij)的最大值作为该指令所需备份的栈存储空间RS(ci);

步骤(43):取所有指令的所需备份的栈存储空间RS(ci)的最大值作为栈备份所需的NVM的存储空间大小stk。

7.如权利要求6所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(5)利用启发式算法来确定备份标签的位置,算法步骤如下:

步骤(51):从步骤(43)获取栈备份所需的NVM的存储空间大小stk;avaEne表示剩余的可用能量;s(ci)表示每条指令的栈存储空间,SET表示是备份标签集合;

步骤(52):初始化备份标签集合SET,只要满足s(ci)<=stk,就将ci加入SET中,即所有栈的存储空间小于等于栈备份所需的NVM的存储空间大小的指令都加入标签集合;

步骤(53):将备份标签集合SET中的标签指令按入边和出边的数目的加和从小到大排列;

步骤(54):接下来循环检测每一个标签指令ci的是否可以删除,必须满足所有指令在去掉这个标签的前提下都可以成功备份,若可以,就将ci从集合SET中删除;若不可以就保留。

8.如权利要求1所述的非易失处理器备份容量设定、内存备份方法,其特征是,

所述步骤(2):

依据建立的CFG,对反汇编程序运行过程中所有指令对应的栈空间状态进行静态分析;

然后基于CFG的指令的入边和出边信息得到栈版本;每条指令执行后的所有的栈版本组成栈版本集合;

每条指令对应多个栈版本,不同执行情况下每条指令的所占用的栈存储空间大小不同;所占用的栈存储空间的最大值为该指令对应的栈备份所需的NVM存储空间容量。

9.如权利要求1所述的非易失处理器备份容量设定、内存备份方法,其特征是,

步骤(5)备份标签的位置选择要满足:

501)对于每条指令,每一条可能的路径应包含至少一个可行的备份位置;

502)所有选定的备份位置,要备份的栈大小要小于等于系统的栈大小;

503)应尽量最小化所选的备份标签的位置。

10.非易失处理器备份容量设定、内存备份系统,其特征是,包括:

控制流程图建立单元:将原二进制程序反汇编成反汇编程序,依据反汇编程序中指令的先后关系建立程序控制流程图CFG;CFG是control flow graph的缩写;

栈版本分析单元:依据控制流程图CFG建立整个程序的拓扑序列表Seq,依据拓扑序列表Seq的拓扑顺序对每一条指令进行栈版本分析;输出存储整个程序的栈版本表SL和每条指令的栈的版本集合SVS;

可行备份点选择单元:建立剩余能量分配模型;依据剩余能量分配模型进行可行备份点选择;

非易失处理器备份容量设定单元:设计栈备份所需的非易失存储器NVM空间;

备份标签筛选单元:利用启发式算法来确定备份标签的位置:备份标签的作用是为了接收到能量警告信号后,先让程序继续执行,直到遇到标签再触发备份操作。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1