CN106844101B - 基于Cache感知的NVP性能优化备份方法及*** - Google Patents
基于Cache感知的NVP性能优化备份方法及*** Download PDFInfo
- Publication number
- CN106844101B CN106844101B CN201710029385.8A CN201710029385A CN106844101B CN 106844101 B CN106844101 B CN 106844101B CN 201710029385 A CN201710029385 A CN 201710029385A CN 106844101 B CN106844101 B CN 106844101B
- Authority
- CN
- China
- Prior art keywords
- instruction
- backup
- cache
- energy
- stack
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了基于Cache感知的NVP性能优化备份方法及***;将标签槽***反汇编代码中作为备份位置的候选点;对带有标签槽的反汇编代码进行分析,对高速缓冲存储器Cache的行为进行分析,在保证能够成功备份的前提下,选择最远的标签槽***备份标签;对每条指令进行备份标签位置标记,收到能量报警信号的指令,在相应标记的备份标签位置上开始进行备份,以使指令在开始备份之前,指令运行达到最远的前进步长;在程序运行过程中遇到能量报警信号时,对基于NVM的非易失性处理器NVP中主存储器的备份,程序继续运行到最远的备份标签处才开始触发备份,以实现程序收到能量报警信号后能够运行最大运行步长。
Description
技术领域
本发明涉及嵌入式***(Embedded System)领域,尤其涉及基于Cache感知的NVP性能优化备份方法及***。
背景技术
近年来,我们目睹了物联网和可穿戴设备等嵌入式***的指数式增长,以及他们给我们日常生活的所带来的一系列变化。这些智能***通常采用传感器来收集相关数据,然后将数据进行分析,并传输到信息中心。传统上,嵌入式***大都由电池供电。然而现在,在诸多可穿戴的健康监视设备中,电池的使用已经不再受欢迎,这是由于1)大尺寸和重量;2)安全和健康关注;3)频繁充电。
能量收集器正在成为可穿戴设备的有利电源,因为它是从周围的环境中获得能量,比如太阳能,电磁辐射或热源等,并通过使用一些能量转换技术实现对设备的电容进行充电,再对电子设备进行供电。也因为这种环保的充电方式,提供更好的用户体验。但是,能量收集电源普遍存在一个缺点就是不稳定性。由于不稳定性,程序可能会被频繁中断,像使用基于CMOS的易失性处理器,断电就会导致结果丢失,导致程序需重新从头开始执行,这会带来大量的能量开销,甚至使得大型的任务不可能完成。
非易失性存储器(non-volatile memory,简称NVM)是指当电源关掉后,所存储的数据不会消失的计算机存储器,所以基于NVM的非易失性处理器(non-volatileprocessors,简称NVP),就能解决自供能***中每次掉电任务需重新从头开始运行的问题。如图1所示,当每次发生掉电时,处理器中的内容,都将保存到NVM中做好备份,当下次供电恢复时,再从NVM中将备份内容拷贝到处理器中,恢复程序之前的状态,然后接着继续执行下去。
在NVP***设计中,一些研究人员已经通过研究寄存器文件和片上存储器的备份/恢复来实现即时开/关***。寄存器文件通常很小并且经常更新,因此寄存器的内容备份可以设计为一旦发生能量警告就全部备份,这可以通过将NVM单元附加到每个触发器上,设计混合型寄存器单元来实现。片上存储器的容量比较大,通常不是所有的内容都需要备份。因此,通过分析程序减少备份内容,可以提高***备份效率,减少能量在备份上的浪费。由于能量限制,分析不可能在运行时动态进行,因此通常采用离线式的静态分析方法。虽然编译器可以报告一些有用的信息,指导基于静态分析的内存内容备份。然而,Cache的存在会对程序的分析产生很大的不确定性。如果不考虑Cache访问命中/未命中的信息,假定采用所有的Cache访问都未命中的保守分析方式,会导致对内存备份的产生过度悲观的判定,进而导致整个***的性能较差。
发明内容
本发明的目的就是为了解决上述问题,提供一种基于Cache感知的NVP性能优化备份方法及***,它提出一个由离线分析和在线管理组成的缓存感知备份(CAB)框架,使得程序分析更精准。
为了实现上述目的,本发明采用如下技术方案:
基于Cache感知的NVP性能优化备份方法,包括如下步骤:
离线分析步骤和在线管理步骤;
其中离线分析步骤包括:
步骤(1):将标签槽***反汇编代码中作为备份位置的候选点;
步骤(2):对带有标签槽的反汇编代码进行分析,对高速缓冲存储器Cache的行为进行分析,在保证能够成功备份的前提下,选择最远的标签槽***备份标签;
步骤(3):对每条指令进行备份标签位置标记,表示收到能量报警信号的指令,在相应标记的备份标签位置上开始进行备份,以使指令在开始备份之前,指令运行达到最远的前进步长;
所述在线管理步骤包括:
步骤(4):在程序运行过程中遇到能量报警信号时,对基于NVM的非易失性处理器NVP中主存储器的备份,栈空间以外的内存数据采用全部备份的方式,而对于栈空间以内的数据,程序继续运行到最远的备份标签处才开始触发备份,以实现程序收到能量报警信号后能够运行最大运行步长。
所述步骤(1)将标签槽***反汇编代码的原因是,***标签槽后指令的内存地址就是固定的,就可以确定指令在高速缓冲存储器Cache中的位置,就可以对程序进行Cache行为分析。
标签槽作为备份标签的候选位置点,最终在程序中会用备份标签或NOP操作替换标签槽。
执行备份标签指令,就会触发备份操作。
所述步骤(1)的步骤如下:
步骤(11):分析反汇编程序P,确定每条指令备份所需的栈存储空间;
步骤(12):建立剩余能量分配模型;
首先剩余的可用能量既要满足后续的程序执行,又要满足栈的备份;
位置p是一个可行的备份位置,则剩余的可用能量要能够支持程序执行到p并且备份p的栈中的所有内容:
aveEne≥Ene(Ins)+Ene(backup) (1)
其中,aveEne表示剩余的可用能量,Ene(Ins)表示执行指令消耗能量,Ene(backup)表示备份操作消耗能量;Ene(Ins)表示在cache未命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_miss)或在cache命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_hit);
步骤(13):计算cache未命中情况下,执行指令消耗能量;
根据与基于NVM的非易失性处理器对应的指令集,和在cache未命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_miss),Ene(Ins_miss)包含所有类型指令在cache未命中情况下执行所消耗的能量;
步骤(14):计算备份操作消耗能量;
根据不同的NVM备份过程中能量消耗情况,以及要备份的内容备份过程中消耗的能量与要备份的内容所占据的存储空间成比例,计算备份操作消耗能量Ene(backup);
步骤(15):P'表示***标签槽后的反汇编程序,将反汇编程序P赋值到P'中,初始化P';
步骤(16):初始化指令队列Q,将程序的第一条指令放入队列Q中;
步骤(17):从队列Q中取出队首指令ins,对反汇编程序P,假设在指令ins处,收到能量警告信号,依据公式(1),在剩余的可用能量范围内分析所有可能的路径,找到最远的可以成功备份的指令ins′,在P'中的指令ins′前面***一个标签槽并将指令ins′加入队列Q,然后删除Q中的指令ins;
重复执行步骤(17),直到队列Q为空,结束并输出***标签槽后的反汇编程序P'。
所述步骤(11)的步骤如下:
步骤(111):将原二进制程序反汇编成反汇编程序,依据反汇编程序中指令的先后关系建立程序控制流程图CFG;CFG是control flow graph的缩写;
步骤(112):栈版本分析。
所述步骤(111)中:
将反汇编程序分为四大类:无条件跳转指令、条件跳转指令、函数调用指令和顺序执行指令;
依据每条指令的实现功能,建立每条指令的入边集合和出边集合,所述入边集合包括当前指令的所有前一条指令的集合;当前指令的前一条指令有一种或多种;所述出边集合包括当前指令的所有后一条指令的集合;当前指令的后一条指令有一种或多种。
控制流程图CFG是个有向图,控制流程图中每一个点就是一条指令,依据每条指令的前继和后继关系,用箭头表示指令之间的先后依赖关系,然后构建出整个程序的CFG。
所述步骤(112)的步骤如下:
步骤(1121):假设SVS表示每条指令的栈的版本集合,SL表示存储整个程序的栈版本表,lp表示程序的循环次数,先进行变量初始化;
步骤(1122):根据指令是否对栈的存储空间大小产生影响,将指令分为stack-affected指令和stack-unaffected指令;stack-affected指令指的是指令执行将影响栈大小的指令;stack-unaffected指令指的是指令执行但不会影响栈大小的指令;
步骤(1123):依据CFG建立整个程序的拓扑序列表Seq;
步骤(1124):依据拓扑序列表Seq的拓扑顺序对每一条指令进行分析;若当前指令是stack-unaffected指令,直接继承前继指令的栈的版本集合SVS;若当前指令是stack-affected指令,进一步分析当前指令的执行对栈的影响且是否会产生新版本的栈,若产生则对存储整个程序的栈版本表SL和当前指令的SVS做相应的修改;若未产生则进入步骤(1125);
步骤(1125):重复步骤(1124),执行lp次,结束;
步骤(1126):对每一条指令,取相应的栈版本集合SVS中栈存储空间最大的栈版本的栈存储空间作为该指令备份所需的栈存储空间。
所述步骤(2)中,Cahce的行为是指Cache访问命中和Cache访问未命中。
步骤(2)的步骤如下:
步骤(21):利用步骤(17)可得到***标签槽的反汇编代码P',对***标签槽的反汇编代码P'进行Cache persistence分析,记录每条指令的持久性分析persistence范围;
步骤(22):计算cache命中情况下,执行指令消耗能量;
根据与处理器对应的指令集,和在cache命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_hit),Ene(Ins_hit)包含所有类型指令在cache命中情况下执行所消耗的能量;
步骤(23):利用步骤(13)可得到cache未命中情况下,执行指令的消耗的能量Ene(Ins_miss);利用步骤(14)可得到备份操作消耗的能量Ene(backup);
步骤(24):对每一条指令ins,假设在指令ins处发生能量警告,利用指令的persistence范围,分析所有可能的路径,确定每条路径上前进步长最大的标签槽的位置,***备份标签;将没有***备份标签的标签槽替换为NOP指令。
借用了学术界实时***分析中常用的persistence方法。是对程序中的不同循环(loop)分别进行persistence分析,可能同一条指令会包含在多个循环中,比如分析完后,指令ins在循环a循环b中是persistence,在循环c中不是persistence的。那该指令的persistence的范围就是循环a,b。Persistence的含义是:在特定范围内,从调入cache中,就一直不会替换出去(即在cache访问时,只会发生一次cache未命中)。
利用persistence的操作特性,在进行路径分析时,若指令ins不是persistence的,就按Cache未命中的执行能耗进行分析;若指令ins是persistence的,需要进一步判断是后否是第一次cache访问,若是第一次就按cache未命中的执行能耗分析;若不是就按cache命中的执行能耗分析。
每条路径上最后一个标签就是前进步长最大的标签的位置。
所述步骤(3)中:
目标是在基于NVM的非易失性处理器NVP中,当发生能量警告时,要在成功备份的前提下程序的前进步长最大。在***备份标签后,为达到最大的前进步长,可能之间要跨越多个备份标签。需要为每一个可能发生的电源故障位置(即,对于每个指令)确定一个备份标签位置标记,表示在某条指令处收到能量报警信号,需要在第几个备份标签的位置上进行备份。
所述步骤(3)的步骤为:
步骤31):对于每一条指令ins,通过Ni统计以该指令开始的每一条可能路径i上的备份标签的个数;
步骤32):取Ni的最小值min(Ni)作为指令ins的备份标签位置标记。
所述步骤(4)的步骤为:
步骤(41):利用步骤(24)可以得到***备份标签的反汇编程序P’,利用步骤(32)可得到每条指令对应的备份标签位置标记;
步骤(42):运行反汇编程序P’,若在指令ins处收到能量警告信号,程序继续运行,并统计从指令ins开始的备份标签的数目Num,查询Num与指令ins的备份标签位置标记是否相同;若相同,程序终止,并开始进行备份操作;若不相同,程序继续运行,并继续统计备份标签的数目Num。
步骤(1)***的标签槽是潜在的备份位置,接下来步骤(2)通过对Cache的行为进行分析,确定备份标签的位置,使得每次接收到能量报警信号后,保证在成功备份的前提下(无论走哪条路,都能找到一个备份标签),程序向前执行的步长最长。对Cache的行为分析,我们采用WECT中的Cache persistence的分析方法。Cache persistence块只会发生一次Cache未命中,即,第一次Cache访问以后,之后的访问都能确保是Cache命中的。Cachepersistence分析完后,可以得到每条指令的persistence的范围,然后依据每条指令的persistence信息确定备份标签的位置。
基于Cache感知的NVP性能优化备份***,其特征是,包括:
离线分析单元和在线管理单元;
其中离线分析单元包括:
标签槽***模块:被配置为将标签槽***反汇编代码中作为备份位置的候选点;
反汇编代码分析模块:被配置为对带有标签槽的反汇编代码进行分析,对高速缓冲存储器Cache的行为进行分析,在保证能够成功备份的前提下,选择最远的标签槽***备份标签;
备份标签位置标记模块:被配置为对每条指令进行备份标签位置标记,表示收到能量报警信号的指令,在相应标记的备份标签位置上开始进行备份,以使指令在开始备份之前,指令运行达到最远的前进步长;
所述在线管理单元包括:
备份模块:被配置为在程序运行过程中遇到能量报警信号时,对基于NVM的非易失性处理器NVP中主存储器的备份,栈空间以外的内存数据采用全部备份的方式,而对于栈空间以内的数据,程序继续运行到最远的备份标签处才开始触发备份,以实现程序收到能量报警信号后能够运行最大运行步长。
本发明的有益效果:
1提出一个由离线分析和在线管理组成的缓存感知备份(CAB)框架,使得程序分析更精准;
2在成功备份的前提下可以实现程序最大的前进进度;
3提高了程序的执行效率;
4提高了能量的利用率。
附图说明
图1为易失性处理器和非易失性处理器工作原理示意图;
图2为分别采用立即备份(Instant)、cache未感知(Cache-unaware)、cache感知(Cache-aware)的备份方法对实例程序进行分析的情况;
图3为基于Cache感知的NVP***的架构示意图;
图4为基于Cache感知的NVP性能优化备份方法及***技术方案流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
下面我们通过一个例子说明一下。如图2所示,假设在指令1处收到能量警告信号,此时电容器中剩余的可用能量为31(仅用于指令执行和备份),其中指令6-10访问一定是Cache命中的,执行Cache-miss的指令消耗能量为1,执行Cache-hit的指令消耗的能量为0.2,NVM备份一个单元消耗的能量为10。在剩余的可用能量范围内,若采用传统的备份方式,立即备份(Instant),则执行完指令1就直接进行备份,此时程序在电源发生故障后向前执行了1步。若采用Cache未感知的备份方式(Cache-unaware),保守地假定所有指令访问都是Cache未命中的,程序最远在执行完指令5之后备份,此时程序在电源发生故障后向前执行了5步。若采用Cache感知的备份方式(Cache-aware),由于指令6-10访问一定是Cache命中的,程序最远在执行完指令12之后备份,此时程序在电源发生故障后又向前执行了12步。上述三种方法相比,在接受到能量报警信号后,采用第三种方法,程序向前前进步最大,即找的备份点最远。这也意味着,相同情况下,第三种备份方式的程序执行速率最快。因此,我们提出了基于Cache感知的NVP性能优化备份方案,目标是保证在收到能量警告后,利用Cache的行为信息找到一个尽可能远的备份位置,提高程序的前进步长,提升程序执行速率和***性能。
如图3所示,基于指令Cache的NVP***的结构示意图。
基于NVM的非易失性处理器NVP,包括CPU,所述CPU包括基于非易失存储的寄存器组,所述CPU与主存储器连接,所述CPU还与指令级高速缓存寄存器I-Cahce连接;所述主存储器与指令级高速缓存寄存器I-Cahce连接;所述主存储器还与非易失性存储器NVM连接。
对所有的指令,CPU要先访问I-Cache,只有访问未命中的情况下,CPU才去访问内存,并将未命中的指令存入I-Cache中。基于NVM的非易失性处理器NVP中,CPU中的寄存器组是基于非易失存储的寄存器组,可以对寄存器中的非易失行数据进行备份;非易失性存储器NVM是单独的一块存储器,用于对主存储其中的数据进行备份。
在发生能量警告时,寄存器中数据用非易失性寄存器进行全部备份,指令Cache中的数据不需要备份,主存储器中的数据选择性地进行备份。主存储器中动态内存大小是伴随程序执行而变化的,其中栈空间是动态内存上的重要组成部分。因此,对非易失性处理器片中主存储器上的备份,栈空间以外的内存数据我们采用全部备份的方式,而对于栈空间部分,我们根据其动态大小规律去确定要备份的栈空间的最大值。
从前面图2的例子,很容易看出Cache的信息对提高NVP的前进进度提供了巨大的潜力。备份操作通常是通过在程序***某条特殊指令来实现。这对缓存分析带来了很大影响,因为***附加指令之后,指令的地址以及Cache内容都会相应地改变。所以要根据Cache行为来决定***备份指令的位置。本发明基于Cache感知的NVP性能优化备份方案的示意图如图4所示,包括离线分析和在线管理两大模块。在离线分析中,先将标签槽***原反汇编代码中作为备份位置的候选点,然后对带有标签槽的反汇编代码进行分析,依据Cache的行为特点,在能够保证成功备份的前提下,选择最远的标签槽***备份标签。在运行时,在最远的标签处触发备份以实现程序最大前进步长。
1,***标签槽
在源反汇编代码中***标签槽的主要原因是,***标签槽后指令的内存地址就是固定的,就可以确定指令在Cache中的位置,就可以对程序进行Cache行为分析了。标签槽作为备份标签的候选点,最终在程序中会用备份标签或NOP操作替换标签槽。
***标签槽的方法步骤如下:
1)分析原反汇编程序P,确定每条指令备份的栈空间大小;
2)P’表示***标签槽后的反汇编程序,初始化P’,将P拷贝到P’中;
3)初始化指令队列Q,将程序的第一条指令放入队列Q中;
4)从队列Q中取出队首指令ins,对原反汇编程序P,假设在指令ins处,收到能量警告信号,依据不等式(1),在剩余可用的能量范围内分析所有可能的路径,找到最远的可以成功备份的指令ins′,在P’中的指令ins′前面***一个标签槽并将指令ins′加入队列Q,然后删除Q中的指令ins;
5)重复执行步骤4),直到队列Q为空,结束,返回***标签槽后的反汇编程序P’。
***标签槽算法的执行过程如下:
2,基于Cache行为感知的备份标签选择
***的标签槽是潜在的备份位置,接下来需要通过对Cache的行为进行分析,确定备份标签的位置,使得每次接受到能量报警信号后,保证在成功备份的前提下(无论走哪条路,都能找到一个备份标签),程序向前执行的步长最长。对Cache的行为分析,我们采用WECT中的Cache persistence的分析方法。Cache persistence块只会发生一次Cache未命中,即,第一次Cache访问以后,之后的访问都能确保是Cache命中的。Cache persistence分析完后,可以得到每条指令的persistence的范围,然后依据每条指令的persistence信息确定备份标签的位置。
基于Cache行为感知的备份标签选择方法的步骤如下:
1)对***标签槽的反汇编代码进行Cache persistence分析,记录每条指令的persistence范围;
2)对每一条指令ins,假设在指令ins处发生能量警告,利用指令的persistence信息,分析所有可能的路径,确定每条路径上前进步长最大的标签槽的位置,***备份标签;
3)将没有***备份标签的标签槽替换为NOP指令。
基于Cache行为感知的备份标签选择算法的执行过程如下:
3,备份标签位置选择
本发明的目标是当发生电源故障时,要在成功备份的前提下,程序的前进步长最大。在***备份标签后,为达到最大的前进步长,可能之间要跨越多个备份标签。
需要为每一个可能发生的电源故障位置(即,对于每个指令)确定一个备份标签位置标记,表示在某条指令处收到能量报警信号,需要在第几个备份标签的位置上进行备份。为了实现这一点,对于每个指令,要标记一个数字,指示在触发备份操作之前要跨越多少备份标签,这个数字的大小。这个标记数字,取所有以该指令开始的可能路径上最远备份标签的最小值。例如,指令ins有三条可能的路径,每条路径上分别有3、4、5个备份标签,那么ins的备份标记数字为3。这样,实际程序运行时,如果在指令ins处发生电源故障,程序会继续向前执行,直到遇到第3个备份标签后,才会触发备份操作。
4,运行时备份
运行***标签槽的反汇编程序,若在指令ins处收到能量警告信号,程序继续运行,并统计从指令ins开始的备份标签的数目Num,查询Num与指令ins的备份标签位置标记是否相同;若相同,程序终止,并开始进行备份操作;若不相同,程序继续运行,并继续统计备份标签的数目Num。
所以,在NVP***中,如果某条指令收到能量警告信号,会继续执行,直到遇到该指令的备份标签位置标记的备份标签才会触发备份操作。
本发明的目标是当发生电源故障时,要在成功备份的前提下,程序的前进步长最大。在***备份标签后,为达到最大的前进步长,可能之间要跨越多个备份标签。我们需要为每一个可能的电源故障位置(即,对于每个指令)确定一个备份位置标记,表示若在某条指令处收到能量报警信号,需要在第几个备份标签的位置上备份。为了实现这一点,对于每个指令,要标记一个数字,指示在触发备份操作之前要跨越多少备份标签。这个标记数字,需通过以该指令开始的所有可能的路径来计算,记为所有路径的备份标签的最大公共索引。例如,指令ins有三条可能的路径,每条路径上分别有3、4、5个备份标签,那么ins的备份标记数字为3。这样,实际程序运行时,如果在指令ins处发生电源故障,程序会继续向前执行,直到遇到第3个备份标签后,才会触发备份操作。
Cache persistence分析方法参考:
C.Cullmann.Cache persistence analysis:Theory and practice.ACMTrans.Embed.Comput.Syst.,12(1s):40:1–40:25,Mar.2013.
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.基于Cache感知的NVP性能优化备份方法,其特征是,包括如下步骤:
离线分析步骤和在线管理步骤;
其中离线分析步骤包括:
步骤(1):将标签槽***反汇编代码中作为备份位置的候选点;
步骤(2):对带有标签槽的反汇编代码进行分析,对高速缓冲存储器Cache的行为进行分析,在保证能够成功备份的前提下,选择最远的标签槽***备份标签;
步骤(3):对每条指令进行备份标签位置标记,表示收到能量报警信号的指令,在相应标记的备份标签位置上开始进行备份,以使指令在开始备份之前,指令运行达到最远的前进步长;
所述在线管理步骤包括:
步骤(4):在程序运行过程中遇到能量报警信号时,对基于NVM的非易失性处理器NVP中主存储器的备份,栈空间以外的内存数据采用全部备份的方式,而对于栈空间以内的数据,程序继续运行到最远的备份标签处才开始触发备份,以实现程序收到能量报警信号后能够运行最大运行步长。
2.如权利要求1所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(1)将标签槽***反汇编代码的原因是,***标签槽后指令的内存地址就是固定的,就可以确定指令在高速缓冲存储器Cache中的位置,就可以对程序进行Cache行为分析。
3.如权利要求1所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(1)的步骤如下:
步骤(11):分析反汇编程序P,确定每条指令备份所需的栈存储空间;
步骤(12):建立剩余能量分配模型;
首先剩余的可用能量既要满足后续的程序执行,又要满足栈的备份;
位置p是一个可行的备份位置,则剩余的可用能量要能够支持程序执行到p并且备份p的栈中的所有内容:
aveEne≥Ene(Ins)+Ene(backup) (1)
其中,aveEne表示剩余的可用能量,Ene(Ins)表示执行指令消耗能量,Ene(backup)表示备份操作消耗能量;Ene(Ins)表示在cache未命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_miss)或在cache命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_hit);
步骤(13):计算cache未命中情况下,指令执行消耗能量;
根据与基于NVM的非易失性处理器对应的指令集,和在cache未命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_miss),Ene(Ins_miss)包含所有类型指令在cache未命中情况下执行所消耗的能量;
步骤(14):计算备份操作消耗能量;
根据不同的NVM备份过程中能量消耗情况,以及要备份的内容备份过程中消耗的能量与要备份的内容所占据的存储空间成比例,计算备份操作消耗能量Ene(backup);
步骤(15):P'表示***标签槽后的反汇编程序,将反汇编程序P赋值到P'中,初始化P';
步骤(16):初始化指令队列Q,将程序的第一条指令放入队列Q中;
步骤(17):从队列Q中取出队首指令ins,对反汇编程序P,假设在指令ins处,收到能量警告信号,依据公式(1),在剩余的可用能量范围内分析所有可能的路径,找到最远的可以成功备份的指令ins′,在P'中的指令ins′前面***一个标签槽并将指令ins′加入队列Q,然后删除Q中的指令ins;
重复执行步骤(17),直到队列Q为空,结束并输出***标签槽后的反汇编程序P'。
4.如权利要求3所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(11)的步骤如下:
步骤(111):将原二进制程序反汇编成反汇编程序,依据反汇编程序中指令的先后关系建立程序控制流程图CFG;CFG是control flow graph的缩写;
步骤(112):栈版本分析。
5.如权利要求4所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(111)中:
将反汇编程序分为四大类:无条件跳转指令、条件跳转指令、函数调用指令和顺序执行指令;
依据每条指令的实现功能,建立每条指令的入边集合和出边集合,所述入边集合包括当前指令的所有前一条指令的集合;当前指令的前一条指令有一种或多种;所述出边集合包括当前指令的所有后一条指令的集合;当前指令的后一条指令有一种或多种。
6.如权利要求4所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(112)的步骤如下:
步骤(1121):假设SVS表示每条指令的栈的版本集合,SL表示存储整个程序的栈版本表,lp表示程序的循环次数,先进行变量初始化;
步骤(1122):根据指令是否对栈的存储空间大小产生影响,将指令分为stack-affected指令和stack-unaffected指令;stack-affected指令指的是指令执行将影响栈大小的指令;stack-unaffected指令指的是指令执行但不会影响栈大小的指令;
步骤(1123):依据CFG建立整个程序的拓扑序列表Seq;
步骤(1124):依据拓扑序列表Seq的拓扑顺序对每一条指令进行分析;若当前指令是stack-unaffected指令,直接继承前继指令的栈的版本集合SVS;若当前指令是stack-affected指令,进一步分析当前指令的执行对栈的影响且是否会产生新版本的栈,若产生则对存储整个程序的栈版本表SL和当前指令的SVS做相应的修改;若未产生则进入步骤(1125);
步骤(1125):重复步骤(1124),执行lp次,结束;
步骤(1126):对每一条指令,取相应的栈版本集合SVS中栈存储空间最大的栈版本的栈存储空间作为该指令备份所需的栈存储空间。
7.如权利要求3所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(2)中,Cahce的行为是指Cache访问命中和Cache访问未命中;
步骤(2)的步骤如下:
步骤(21):利用步骤(17)可得到***标签槽的反汇编代码P',对***标签槽的反汇编代码P'进行Cache persistence分析,记录每条指令的持久性分析persistence范围;
步骤(22):计算cache命中情况下,执行指令消耗能量;
根据与处理器对应的指令集,和在cache命中情况下每个指令执行过程中消耗的能量计算指令执行消耗能量Ene(Ins_hit),Ene(Ins_hit)包含所有类型指令在cache命中情况下执行所消耗的能量;
步骤(23):利用步骤(13)可得到cache未命中情况下,指令执行消耗能量Ene(Ins_miss);利用步骤(14)可得到备份操作消耗的能量Ene(backup);
步骤(24):对每一条指令ins,假设在指令ins处发生能量警告,利用指令的persistence范围,分析所有可能的路径,确定每条路径上前进步长最大的标签槽的位置,***备份标签;将没有***备份标签的标签槽替换为NOP指令。
8.如权利要求7所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(3)的步骤为:
步骤(31):对于每一条指令ins,通过Ni统计以该指令开始的每一条可能路径i上的备份标签的个数;
步骤(32):取Ni的最小值min(Ni)作为指令ins的备份标签位置标记。
9.如权利要求8所述的基于Cache感知的NVP性能优化备份方法,其特征是,
所述步骤(4)的步骤为:
步骤(41):利用步骤(24)可以得到***备份标签的反汇编程序P’,利用步骤(32)可到每条指令对应的备份标签位置标记;
步骤(42):运行反汇编程序P’,若在指令ins处收到能量警告信号,程序继续运行,并统计从指令ins开始的备份标签的数目Num,查询Num与指令i的备份标签位置标记是否相同;若相同,程序终止,并开始进行备份操作;若不相同,程序继续运行,并继续统计备份标签的数目Num。
10.基于Cache感知的NVP性能优化备份***,其特征是,包括:
离线分析单元和在线管理单元;
其中离线分析单元包括:
标签槽***模块:被配置为将标签槽***反汇编代码中作为备份位置的候选点;
反汇编代码分析模块:被配置为对带有标签槽的反汇编代码进行分析,对高速缓冲存储器Cache的行为进行分析,在保证能够成功备份的前提下,选择最远的标签槽***备份标签;
备份标签位置标记模块:被配置为对每条指令进行备份标签位置标记,表示收到能量报警信号的指令,在相应标记的备份标签位置上开始进行备份,以使指令在开始备份之前,指令运行达到最远的前进步长;
所述在线管理单元包括:
备份模块:被配置为在程序运行过程中遇到能量报警信号时,对基于NVM的非易失性处理器NVP中主存储器的备份,栈空间以外的内存数据采用全部备份的方式,而对于栈空间以内的数据,程序继续运行到最远的备份标签处才开始触发备份,以实现程序收到能量报警信号后能够运行最大运行步长。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710029385.8A CN106844101B (zh) | 2017-01-16 | 2017-01-16 | 基于Cache感知的NVP性能优化备份方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710029385.8A CN106844101B (zh) | 2017-01-16 | 2017-01-16 | 基于Cache感知的NVP性能优化备份方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844101A CN106844101A (zh) | 2017-06-13 |
CN106844101B true CN106844101B (zh) | 2019-05-21 |
Family
ID=59123434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710029385.8A Active CN106844101B (zh) | 2017-01-16 | 2017-01-16 | 基于Cache感知的NVP性能优化备份方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844101B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678887B (zh) * | 2017-10-09 | 2020-07-10 | 首都师范大学 | 非易失性处理器中基于维持态的能量分配方法及*** |
CN109144214B (zh) | 2018-08-06 | 2022-05-03 | 交叉信息核心技术研究院(西安)有限公司 | 能量管理***、方法、电子设备、装置及非易失处理器 |
CN110968458B (zh) * | 2019-11-26 | 2022-03-29 | 山东大学 | 一种面向非易失处理器的基于增强学习的备份***及方法 |
CN111737053B (zh) * | 2020-06-22 | 2024-01-05 | 山东大学 | 一种基于指令分析的非易失处理器备份方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156652A (zh) * | 2011-04-26 | 2011-08-17 | 中兴通讯股份有限公司 | 移动终端的升级方法及移动终端 |
CN102385637A (zh) * | 2011-12-22 | 2012-03-21 | 山东中创软件商用中间件股份有限公司 | 一种数据库信息的备份方法及*** |
-
2017
- 2017-01-16 CN CN201710029385.8A patent/CN106844101B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156652A (zh) * | 2011-04-26 | 2011-08-17 | 中兴通讯股份有限公司 | 移动终端的升级方法及移动终端 |
CN102385637A (zh) * | 2011-12-22 | 2012-03-21 | 山东中创软件商用中间件股份有限公司 | 一种数据库信息的备份方法及*** |
Non-Patent Citations (2)
Title |
---|
Fixing the Broken Time Machine:Consistency-Aware Checkpoint for Energy Harvesting Powered Non-Volatile Processor;Mimi Xie;《2015 ACM》;20150611;全文 * |
Nonvolatile Processor Architecture Exploration for Energy-Harvesting Applications;Kaisheng Ma;《IEEE Computer Society》;20151231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN106844101A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844101B (zh) | 基于Cache感知的NVP性能优化备份方法及*** | |
Ebrahimi et al. | Techniques for bandwidth-efficient prefetching of linked data structures in hybrid prefetching systems | |
Roth et al. | Dependence based prefetching for linked data structures | |
Sethumadhavan et al. | Scalable hardware memory disambiguation for high ILP processors | |
Van Craeynest et al. | Scheduling heterogeneous multi-cores through performance impact estimation (PIE) | |
Denning | The locality principle | |
Romero et al. | Mage: Online and interference-aware scheduling for multi-scale heterogeneous systems | |
US10949200B2 (en) | Methods and apparatus for executing data-dependent threads in parallel | |
US8219834B2 (en) | Predictive power gating with optional guard mechanism | |
Cher et al. | Skipper: a microarchitecture for exploiting control-flow independence | |
TW201631478A (zh) | 根據記憶體存取類型的效益並配合積極層級的預取 | |
CN108885579B (zh) | 用于根据核追踪进行数据挖掘的方法和设备 | |
Chadha et al. | Accelerating asynchronous programs through event sneak peek | |
CN111737053B (zh) | 一种基于指令分析的非易失处理器备份方法及*** | |
US8219833B2 (en) | Two-level guarded predictive power gating | |
CN103377036A (zh) | 分支预测功率降低 | |
Atta et al. | STREX: boosting instruction cache reuse in OLTP workloads through stratified transaction execution | |
CN109725702A (zh) | 一种基于ai预测的智能终端节能方法和设备 | |
Singla et al. | A survey and experimental analysis of checkpointing techniques for energy harvesting devices | |
CN106844103B (zh) | 非易失处理器备份容量设定、内存备份方法及*** | |
Singla et al. | Flexicheck: An adaptive checkpointing architecture for energy harvesting devices | |
Aparicio et al. | Combining prefetch with instruction cache locking in multitasking real-time systems | |
Alves et al. | Energy savings via dead sub-block prediction | |
Li et al. | Maximizing forward progress with cache-aware backup for self-powered non-volatile processors | |
Jacobson et al. | Trace preconstruction |
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 |