一种数据恢复方法、装置、电子设备及可读存储介质转让专利

申请号 : CN202211663534.3

文献号 : CN115629917B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈国凯王华强

申请人 : 北京开源芯片研究院

摘要 :

本发明实施例提供一种数据恢复方法、装置、电子设备及可读存储介质,该方法包括:接收第一恢复指令,所述第一恢复指令中携带第一快照点;响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态。本发明实施例可以节省因操作系统的系统调用带来的运行开销。

权利要求 :

1.一种数据恢复方法,其特征在于,应用于模拟器,所述方法包括:

接收第一恢复指令,所述第一恢复指令中携带第一快照点;

响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述寄存器状态信息用于记录快照点处各个寄存器的值;

根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;

根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以实现数据在所述模拟器的内存与寄存器之间的反向传递,将所述模拟器的内存状态恢复为所述第一快照点对应的状态。

2.根据权利要求1所述的方法,其特征在于,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述方法还包括:以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。

3.根据权利要求1所述的方法,其特征在于,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态,包括:以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

接收第二恢复指令,所述第二恢复指令中携带有第二指示,所述第二指示用于指示所述模拟器将内存状态恢复至第二时刻,所述第二时刻为第二快照点与所述第一快照点之间的任一时刻,所述第二快照点在所述第一快照点之前;

以所述第一快照点为起点,按照时间戳依次反向执行所述访存操作记录中所述第一快照点与所述第二快照点之间的指令,直至下一条指令的时间戳小于所述第二时刻,则停止执行,得到所述模拟器在所述第二时刻的内存状态。

5.根据权利要求1至4任一项所述的方法,其特征在于,所述模拟器用于对待测处理器的运行过程进行模拟,所述第一快照点用于同步所述模拟器的状态与所述待测处理器的中断点的状态。

6.一种数据恢复装置,其特征在于,应用于模拟器,所述装置包括:

第一接收模块,用于接收第一恢复指令,所述第一恢复指令中携带第一快照点;

数据获取模块,用于响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述寄存器状态信息用于记录快照点处各个寄存器的值;

第一恢复模块,用于根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;

第二恢复模块,用于根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以实现数据在所述模拟器的内存与寄存器之间的反向传递,将所述模拟器的内存状态恢复为所述第一快照点对应的状态。

7.根据权利要求6所述的装置,其特征在于,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述装置还包括:第三恢复模块,用于以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。

8.根据权利要求6所述的装置,其特征在于,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述第二恢复模块,包括:指令执行子模块,用于以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。

9.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至5中任一项所述的数据恢复方法。

10.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至5中任一项所述的数据恢复方法。

说明书 :

一种数据恢复方法、装置、电子设备及可读存储介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种数据恢复方法、装置、电子设备及可读存储介质。

背景技术

[0002] 在芯片设计领域,硅前性能评估对项目推进、设计决策都是不可或缺的。在对处理器进行性能评估时,往往会借助模拟器先执行程序,并根据模拟器的执行结果生成相应的测试信号提供给处理器,这就要求模拟器先于处理器执行。然而,处理器上的中断往往随机发生,在处理器执行过程中发生中断时,模拟器往往已经执行至中断点之后,这就导致模拟器的执行结果与处理器的执行结果不匹配。此时,需要将模拟器的状态恢复至中断点或中断点之前,以同步模拟器和处理器的状态。
[0003] 现有技术中实现模拟器的状态恢复主要有两种方式:1)基于全检查点的状态恢复。在这种方式中,会保存每个检查点对应的寄存器状态信息和当前时刻完整的内存信息,恢复时间较长,且需要占用大规模的存储空间;2)基于fork机制的状态恢复。相比于全检查点的状态恢复方式,fork机制降低了保存完整内存信息的时间开销和空间开销,但操作系统的系统调用会造成较大的运行开销,仍然无法满足模拟器先于处理器执行时的状态恢复需求。

发明内容

[0004] 本发明实施例提供一种数据恢复方法、装置、电子设备及可读存储介质,可以节省模拟器的内存状态恢复过程中,由操作系统的系统调用造成的运行开销。
[0005] 为了解决上述问题,本发明实施例公开了一种数据恢复方法,应用于模拟器,所述方法包括:
[0006] 接收第一恢复指令,所述第一恢复指令中携带第一快照点;
[0007] 响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;
[0008] 根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;
[0009] 根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态。
[0010] 可选地,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述方法还包括:
[0011] 以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。
[0012] 可选地,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态,包括:
[0013] 以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。
[0014] 可选地,所述方法还包括:
[0015] 接收第二恢复指令,所述第二恢复指令中携带有第二指示,所述第二指示用于指示所述模拟器将内存状态恢复至第二时刻,所述第二时刻为第二快照点与所述第一快照点之间的任一时刻,所述第二快照点在所述第一快照点之前;
[0016] 以所述第一快照点为起点,按照时间戳依次反向执行所述访存操作记录中所述第一快照点与所述第二快照点之间的指令,直至下一条指令的时间戳小于所述第二时刻,则停止执行,得到所述模拟器在所述第二时刻的内存状态。
[0017] 可选地,所述模拟器用于对待测处理器的运行过程进行模拟,所述第一快照点用于同步所述模拟器的状态与所述待测处理器的中断点的状态。
[0018] 另一方面,本发明实施例公开了一种数据恢复装置,应用于模拟器,所述装置包括:
[0019] 第一接收模块,用于接收第一恢复指令,所述第一恢复指令中携带第一快照点;
[0020] 数据获取模块,用于响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;
[0021] 第一恢复模块,用于根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;
[0022] 第二恢复模块,用于根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态。
[0023] 可选地,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述装置还包括:
[0024] 第三恢复模块,用于以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。
[0025] 可选地,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述第二恢复模块,包括:
[0026] 指令执行子模块,用于以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。
[0027] 可选地,所述装置还包括:
[0028] 第二接收模块,用于接收第二恢复指令,所述第二恢复指令中携带有第二指示,所述第二指示用于指示所述模拟器将内存状态恢复至第二时刻,所述第二时刻为第二快照点与所述第一快照点之间的任一时刻,所述第二快照点在所述第一快照点之前;
[0029] 第四恢复模块,用于以所述第一快照点为起点,按照时间戳依次反向执行所述访存操作记录中所述第一快照点与所述第二快照点之间的指令,直至下一条指令的时间戳小于所述第二时刻,则停止执行,得到所述模拟器在所述第二时刻的内存状态。
[0030] 可选地,所述模拟器用于对待测处理器的运行过程进行模拟,所述第一快照点用于同步所述模拟器的状态与所述待测处理器的中断点的状态。
[0031] 再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的数据恢复方法。
[0032] 本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的数据恢复方法。
[0033] 本发明实施例包括以下优点:
[0034] 本发明实施例提供了一种数据恢复方法,在接收到针对第一快照点的第一恢复指令的情况下,通过从预设的快照空间中读取第一快照点对应的寄存器状态信息和访存操作记录,根据寄存器状态信息将模拟器的寄存器状态恢复为第一快照点的状态,并根据访存操作记录反向执行第一快照点与当前时刻之间的各条访存指令,将模拟器的内存状态恢复为第一快照点对应的状态。相比于现有技术中,本发明实施例提供的数据恢复方法,无需记录内存在快照点处的完整状态,仅通过快照点对应的寄存器状态信息和访存记录,就可以将模拟器的内存状态恢复为快照点对应的状态,节省了存储空间。并且,本发明实施例直接由模拟器执行数据恢复操作,无需操作系统进行系统调用,节省了操作系统的系统调用带来的硬件开销。

附图说明

[0035] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0036] 图1是本发明的一种数据恢复方法实施例的步骤流程图;
[0037] 图2是本发明的一种数据恢复装置实施例的结构框图;
[0038] 图3是本发明示例提供的一种用于数据恢复的电子设备的结构框图。

具体实施方式

[0039] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
[0041] 方法实施例
[0042] 参照图1,示出了本发明的一种数据恢复方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
[0043] 步骤101、接收第一恢复指令,所述第一恢复指令中携带第一快照点。
[0044] 步骤102、响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳。
[0045] 步骤103、根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态。
[0046] 步骤104、根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态。
[0047] 本发明实施例提供的数据恢复方法,可以应用于模拟器。模拟器用于透过软件模拟硬件处理器的功能和指令系统的程序,使计算机或者其他多媒体平台(例如掌上电脑、手机等)能够运行其他平台上的软件。需要说明的是,模拟器可以通过快照功能保存并恢复快照点的状态信息,如模拟器的处理器运行状态、寄存器状态、内存状态、外设状态等。本发明实施例提供的数据恢复方法,主要用于恢复模拟器的内存状态。
[0048] 第一恢复指令可以用户通过用户终端向模拟器发送的,也可以是待测处理器在发生中断的情况下向模拟器发送的。在本发明的一种可能的场景下,模拟器用于对待测处理器对测试程序的执行过程进行模拟,第一快照点用于同步所述模拟器的状态与所述待测处理器的中断点的状态。待测处理器在执行测试程序的过程中,如果发生中断,就向模拟器发送第一恢复指令,触发模拟器将内存状态恢复为中断点或中断点之前的时间点的状态,以便实现模拟器和待测处理器的状态同步。其中,中断点指的是中断发生的时间点。在这种场景下,第一恢复指令中携带的第一快照点可以是中断点,也可以是中断点之前的时间点。
[0049] 模拟器接收到第一恢复指令之后,从预设的快照空间中读取第一快照点对应的寄存器状态信息和访存操作记录。可以理解的是,快照空间是预先配置的一段专门用于存储快照点数据的存储空间,快照空间的大小可以根据实际的数据恢复需求进行配置。其中,寄存器状态信息用于记录快照点处各个寄存器的值,如果有多个快照点,每个快照点对应一组寄存器状态信息。访存操作记录用于记录模拟器从第一快照点至当前时刻执行的各条访存指令,以及每条访存指令对应的时间戳。所述时间戳用于记录模拟器执行访存指令的时间,根据各条访存指令的时间戳,可以确定各条访存指令的执行顺序。示例性地,所述访存操作记录可以是一种日志记录,用于从第一快照点开始,实时记录模拟器执行的每一条访存指令。
[0050] 接下来,模拟器可以直接根据第一快照点对应的寄存器状态信息,将模拟器的寄存器状态恢复为第一快照点对应的状态,也即将各个寄存器中记录的值恢复为快照点对应的值。
[0051] 最后,根据访存操作记录反向执行第一快照点与当前时刻之间的各条访存指令,就可以将模拟器的内存状态恢复为第一快照点对应的状态。
[0052] 可以理解的是,访存指令用于实现数据在内存和寄存器之间的传递,反向执行访存指令,可以将实现数据在内存与寄存器之间的反向传递。例如,存储指令str(R1,R2)用于将寄存器R1中的数存到内存R2中,反向执行该存储指令,可以将内存R2中的数据修改为执行存储指令之前的数据。
[0053] 本发明实施例提供的数据恢复方法,无需记录内存在快照点处的完整状态,仅通过快照点对应的寄存器状态信息和访存记录,就可以将模拟器的内存状态恢复为快照点对应的状态,节省了存储空间。并且,本发明实施例直接由模拟器执行数据恢复操作,无需操作系统进行系统调用,节省了操作系统的系统调用带来的运行开销。
[0054] 在本发明的一种可选实施例中,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述方法还包括:
[0055] 步骤S11、以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。
[0056] 本发明实施例提供的数据恢复方法,除了可以将模拟器的内存状态恢复为第一快照点对应的状态,还可以将模拟器的内存状态恢复为第一快照点之后的任意时刻的状态。
[0057] 具体地,第一恢复指令中除了携带第一快照点,还可以携带第一指示,该第一指示用于指示模拟器将内存状态恢复至第一时刻。可以理解的是,所述第一时刻可以为处于第一快照点之后的任意时刻。模拟器在按照前述步骤101至104的处理过程将内存状态恢复为第一快照点对应的状态之后,以第一快照点为起点,按照时间戳顺序执行访存操作记录中第一快照点至当前时刻之间的各条指令。如果下一条指令,也即等待执行的第一条指令对应的时间戳小于第一时刻,说明第一快照点与第一时刻之间的访存指令均已执行完毕,可以停止执行,得到模拟器在第一时刻的内存状态。
[0058] 需要说明的是,可以预先设置至少两个快照点,所述第一快照点可以为预设设置的多个快照点中的任意一个快照点。每一个快照点对应一组寄存器状态信息,所有的快照点可以共享访存操作记录,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳。按照时间先后顺序对各个快照点进行排序,第一个快照点即为起始快照点。可以理解的是,起始快照点与当前时刻之间的时间差最大。
[0059] 在本发明的一种可选实施例中,步骤104所述根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态,包括:
[0060] 步骤S21、以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。
[0061] 在本发明实施例中,以当前时刻为起点,按照时间戳从后往前依次反向执行访存操作记录中的各条指令,如果下一条指令对应的时间戳小于第一快照点,说明第一快照点与当前指令之间的各条访存指令均已反向执行完毕,此时停止执行,就可以得到模拟器在第一快照点处的内存状态。
[0062] 可选地,所述方法还包括:
[0063] 步骤S31、接收第二恢复指令,所述第二恢复指令中携带有第二指示,所述第二指示用于指示所述模拟器将内存状态恢复至第二时刻,所述第二时刻为第二快照点与所述第一快照点之间的任一时刻,所述第二快照点在所述第一快照点之前;
[0064] 步骤S32、以所述第一快照点为起点,按照时间戳依次反向执行所述访存操作记录中所述第一快照点与所述第二快照点之间的指令,直至下一条指令的时间戳小于所述第二时刻,则停止执行,得到所述模拟器在所述第二时刻的内存状态。
[0065] 在本发明实施例中,如果接收到第二恢复指令,第二恢复指令中携带有第二指示,用于指示模拟器将内存状态恢复至第二时刻,则需要将模拟器的内存状态恢复为第二时刻的状态。其中,第二时刻为两个快照点之间的任意时刻。
[0066] 假设第二时刻Ta之后的快照点为第一快照点T1,第二时刻Ta之前的快照点为第二快照点T2,T2
[0067] 作为另一种示例,可以以第一快照点为起点,按照时间戳从后往前依次反向执行访存操作记录中的各条指令,如果下一条指令对应的时间戳小于第二时刻,说明第二时刻与第一快照点之间的各条访存指令均已反向执行完毕,此时停止执行,就可以得到模拟器在第二时刻的内存状态。
[0068] 如果将模拟器的内存状态恢复为第一快照点对应的状态之后,还接收到针对其他快照点的恢复指令,可以按照前述步骤101至104的处理过程对模拟器的内存状态进行恢复处理,也可以根据该恢复指令中携带的快照点与第一快照点的先后顺序,正向或反向执行访存操作记录中的访存指令,以实现内存状态的恢复处理。作为一种示例,假设第一快照点T1,第二快照点T2,模拟器将模拟器的内存状态恢复为第一快照点T1对应的状态之后,还接收到针对第二快照点T2的恢复指令。如果第二快照点T2在第一快照点T1之前,也即T2<T1,则可以参照前述S32的处理过程,以第一快照点为起点,按照时间戳依次反向执行访存操作记录中第一快照点与第二快照点之间的各条访存指令,就可以将模拟器的内存状态恢复为第二快照点对应的状态。如果第二快照点T2在第一快照点T1之后,也即T2>T1,则可以参照前述S11的处理过程,以第一快照点为起点,按照时间戳顺序执行访存操作记录中第一快照点与第二快照点之间的各条访存指令,就可以将模拟器的内存状态恢复为第二快照点对应的状态。
[0069] 综上,本发明实施例提供了一种数据恢复方法,在接收到针对第一快照点的第一恢复指令的情况下,通过从预设的快照空间中读取第一快照点对应的寄存器状态信息和访存操作记录,根据寄存器状态信息将模拟器的寄存器状态恢复为第一快照点的状态,并根据访存操作记录反向执行第一快照点与当前时刻之间的各条访存指令,将模拟器的内存状态恢复为第一快照点对应的状态。相比于现有技术,本发明实施例提供的数据恢复方法,无需记录内存在快照点处的完整状态,仅通过快照点对应的寄存器状态信息和访存记录,就可以将模拟器的内存状态恢复为快照点对应的状态,节省了存储空间。并且,本发明实施例直接由模拟器执行数据恢复操作,无需操作系统进行系统调用,节省了操作系统的系统调用带来的硬件开销。
[0070] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0071] 装置实施例
[0072] 参照图2,示出了本发明的一种数据恢复装置实施例的结构框图,所述装置应用于模拟器,具体可以包括:
[0073] 第一接收模块201,用于接收第一恢复指令,所述第一恢复指令中携带第一快照点;
[0074] 数据获取模块202,用于响应于所述第一恢复指令,从预设的快照空间中读取所述第一快照点对应的寄存器状态信息和访存操作记录,所述访存操作记录用于记录所述模拟器从所述第一快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;
[0075] 第一恢复模块203,用于根据所述寄存器状态信息将所述模拟器的寄存器状态恢复为所述第一快照点对应的状态;
[0076] 第二恢复模块204,用于根据所述访存操作记录反向执行所述第一快照点与当前时刻之间的各条访存指令,以将所述模拟器的内存状态恢复为所述第一快照点对应的状态。
[0077] 可选地,所述第一恢复指令中还携带有第一指示,所述第一指示用于指示所述模拟器将内存状态恢复至第一时刻,所述第一快照点在所述第一时刻之前;所述装置还包括:
[0078] 第三恢复模块,用于以所述第一快照点为起点,按照所述时间戳顺序执行所述第一快照点至当前时刻之间的各条访存指令,直至下一条指令对应的时间戳小于所述第一时刻,则停止执行,得到所述模拟器在所述第一时刻的内存状态。
[0079] 可选地,所述访存操作记录包括所述模拟器从起始快照点至当前时刻执行的各条访存指令以及每条访存指令对应的时间戳;所述第二恢复模块,包括:
[0080] 指令执行子模块,用于以当前时刻为起点,按照时间戳依次反向执行所述访存操作记录中的各条指令,直至下一条指令的时间戳小于所述第一快照点时停止执行,得到所述模拟器在所述第一快照点处的内存状态。
[0081] 可选地,所述装置还包括:
[0082] 第二接收模块,用于接收第二恢复指令,所述第二恢复指令中携带有第二指示,所述第二指示用于指示所述模拟器将内存状态恢复至第二时刻,所述第二时刻为第二快照点与所述第一快照点之间的任一时刻,所述第二快照点在所述第一快照点之前;
[0083] 第四恢复模块,用于以所述第一快照点为起点,按照时间戳依次反向执行所述访存操作记录中所述第一快照点与所述第二快照点之间的指令,直至下一条指令的时间戳小于所述第二时刻,则停止执行,得到所述模拟器在所述第二时刻的内存状态。
[0084] 可选地,所述模拟器用于对待测处理器的运行过程进行模拟,所述第一快照点用于同步所述模拟器的状态与所述待测处理器的中断点的状态。
[0085] 综上,本发明实施例提供了一种数据恢复装置,在接收到针对第一快照点的第一恢复指令的情况下,通过从预设的快照空间中读取第一快照点对应的寄存器状态信息和访存操作记录,根据寄存器状态信息将模拟器的寄存器状态恢复为第一快照点的状态,并根据访存操作记录反向执行第一快照点与当前时刻之间的各条访存指令,将模拟器的内存状态恢复为第一快照点对应的状态。相比于现有技术,本发明实施例提供的数据恢复方法,无需记录内存在快照点处的完整状态,仅通过快照点对应的寄存器状态信息和访存记录,就可以将模拟器的内存状态恢复为快照点对应的状态,节省了存储空间。并且,本发明实施例直接由模拟器执行数据恢复操作,无需操作系统进行系统调用,节省了操作系统的系统调用带来的硬件开销。
[0086] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0087] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0088] 关于上述实施例中的数据恢复装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0089] 参照图3,是本发明实施例提供的一种用于数据恢复的电子设备的结构框图。如图3所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的数据恢复方法。
[0090] 所述处理器可以是CPU(Central Processing Unit,中央处理器),通用处理器、DSP(Digital Signal Processor,数字信号处理器),ASIC(Application Specific Integrated Circuit,专用集成电路),FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
[0091] 所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
[0092] 所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable Read Only,电可擦可编程只读内存)、CD‑ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
[0093] 本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的数据恢复方法。
[0094] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0095] 本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0096] 本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0097] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0098] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0099] 尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0100] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0101] 以上对本发明所提供的一种数据恢复方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。