模拟器程序检查点保存和恢复的方法、系统及相关设备与流程

文档序号:36388828发布日期:2023-12-15 04:26阅读:23来源:国知局
模拟器程序检查点保存和恢复的方法与流程

本发明适用于程序分析和性能评估,尤其涉及一种模拟器程序检查点保存和恢复的方法、系统及相关设备。


背景技术:

1、模拟器是一种软件工具,用于模拟硬件设备、系统或其他软件的行为和功能,使用模拟器可以创建一个虚拟环境,让用户能够在其中执行和测试各种操作,而无需实际的物理硬件。而计算机芯片环境中的模拟器包括功能模拟器(function simulator)和周期精准模拟器(cycle accurate simulator),前者是一种能够模拟处理器指令的执行和数据的传输的模拟器类型,通常用于验证和调试处理器的设计,以及软件开发和调试,现有产品有qemu、spike等;后者是一种更高级别的模拟器,不仅能够模拟处理器的功能行为,还能够模拟处理器内部的时序和时钟周期,并且考虑了处理器内部的时序和延迟,从而提供更准确的性能评估和分析,因为考虑了处理器内部的时序和延迟,现有产品有gem5、sniper等。总之,模拟器在计算机体系架构和性能评估领域是一种重要的工具。

2、程序切片是一种在程序中选择性地提取子集的技术,通过切片技术可以将程序切分成更小的部分,从而使得程序的分析和评估更加精确和高效。检查点(checkpoint)是指在程序执行过程中的某个特定时间点保存程序状态的快照,可以用于备份和恢复程序状态,例如在提取出程序中的切片后,需要保存该程序切片起点对应的检查点,以方便在模拟器或硬件环境中恢复程序切片的运行。

3、risc-v proxy kernel(risc-v代理内核,简称risc-v pk)是一个轻量级应用程序执行环境,可以托管静态链接的risc-v elf二进制文件,旨在支持具有有限i/o功能的risc-v应用程序,并通过代理将i/o相关的系统调用转发到主机计算机。risc-v pk为newlib系统库和用户应用程序提供了运行环境,并将i/o相关的系统调用转发到主机上的spike、gem5和verilator等模拟器或仿真环境上。risc-v pk主要包含两部分,一部分是位于目标程序中的代理内核,另一部分是位于模拟器中的前端服务器,代理内核与前端服务器之间通过读写内存中的tohost和fromhost的地址使用伯克利提出的htif(host targetinterface)协议进行通信。

4、对于在risc-v pk环境下的实现的程序检查点的保存和恢复功能,相关技术的模拟器是具有对应的功能特性的,例如gem5模拟器的检查点功能,它允许用户在模拟过程中保存当前的状态,并在需要时恢复到该状态,这意味着用户可以在某个特定点上暂停模拟,保存当前的处理器状态、内存数据和系统配置等信息,然后在以后的时间重新加载这个检查点,并从该状态继续模拟。然而这种方法生成的检查点仅适用于gem5模拟器本身,无法用于其他的模拟器,在需要的验证环境下不利于用户使用,例如,当用户需要在模拟器上快速生成检查点,然后在verilog仿真环境中恢复检查点时,该检查点方案就无法实现。

5、除了模拟器提供的功能,相关技术还提出了gem5模拟器与simpoint模拟器结合摘取指定程序中权重较高部分的基本块向量,生成特征切片,然后修改行为仿真模型的方法,该方法使用开发的指令和指令上下文跟踪功能再次运行行为模型,在特征切片的开始阶段开始跟踪特征切片的执行,直到特征切片执行的结束。然而需要在得到特征切片后,修改模拟器并使用开发的指令和指令的追踪功能再次运行特征切片,当程序切片本身包含大量的指令时,这将耗费大量的时间。另外,该方案只关注了程序本身的运行环境,如寄存器、内存等,当程序运行在risc-v代理内核上时,模拟器或仿真环境中的代理内核环境无法恢复,例如目标应用程序和主机之间的文件描述符映射关系,一旦程序恢复后再次通过代理内核进行文件访问将出现异常。

6、因此,有必要提出一种新的针对risc-v pk环境下的实现的程序检查点的保存和恢复方法来解决上述问题。


技术实现思路

1、本发明提供一种模拟器程序检查点保存和恢复的方法、系统及相关设备,旨在解决现有技术对于risc-v代理环境的恢复过程因模拟器使用环境导致的运行限制、代理内核环境恢复异常的问题。

2、第一方面,本发明提供一种模拟器程序检查点保存和恢复的方法,所述方法应用于risc-v pk环境,所述方法包括以下步骤:

3、确定模拟器的程序的检查点并开始保存所述检查点,读取处理器的指令集扩展和运行环境,根据所述指令集扩展和所述运行环境生成第一恢复指令,并将所述第一恢复指令保存至可执行可链接文件;

4、读取预设内存地址区间中的所有内存数据,并将所述内存数据保存至所述可执行可链接文件;

5、读取外设环境的外设运行环境,根据所述外设运行环境生成第二恢复指令,并将所述第二恢复指令保存至所述可执行可链接文件;

6、读取risc-v pk环境中的文件描述符映射,根据所述文件描述符映射对应的代理内核运行环境生成第三恢复指令,同时读取所述模拟器与其对应的前端服务器之间的通信符号地址,之后,将所述第三恢复指令和所述模拟器通信符号地址保存至所述可执行可链接文件,以完成所述检查点的保存;

7、在所述模拟器中进行分配预设存储空间并开始恢复所述检查点;

8、对所述可执行可链接文件进行解析,以在所述预设存储空间中加载所述第一恢复指令、所述第二恢复指令、所述第三恢复指令和所述内存数据,同时,根据所述模拟器通信符号地址对所述前端服务器进行初始化;

9、在所述预设存储空间中运行所述模拟器,使所述模拟器与所述前端服务器通信,并运行所述第一恢复指令、所述第二恢复指令、所述第三恢复指令,以完成所述检查点的恢复。

10、更进一步地,所述读取处理器的指令集扩展和运行环境,根据所述指令集扩展和所述运行环境生成第一恢复指令,并将所述第一恢复指令保存至可执行可链接文件的步骤,包括以下子步骤:

11、获取处理器的运行状态,所述运行状态包括所述指令集扩展和所述运行环境;

12、根据所述指令集扩展生成指令集恢复指令;

13、根据所述运行环境生成运行模式恢复指令;

14、将所述指令集恢复指令和所述运行模式恢复指令作为所述第一恢复指令保存至所述可执行可链接文件。

15、更进一步地,所述指令集扩展包括扩展指令集和基础指令集。

16、更进一步地,所述读取外设环境的外设运行环境,根据所述外设运行环境生成第二恢复指令,并将所述第二恢复指令保存至所述可执行可链接文件的步骤,包括以下子步骤:

17、获取所述运行环境对应的设备树二进制文件;

18、对所述设备树二进制文件进行解析,以获取所述外设环境的外设运行环境;

19、根据所述外设运行环境生成外设环境恢复指令;

20、将所述外设环境恢复指令作为所述第二恢复指令保存至所述可执行可链接文件。

21、更进一步地,所述读取risc-v pk环境中的文件描述符映射,根据所述文件描述符映射对应的代理内核运行环境生成第三恢复指令,同时读取所述模拟器与其对应的前端服务器之间的通信符号地址,之后,将所述第三恢复指令和所述模拟器通信符号地址保存至所述可执行可链接文件的步骤,包括以下子步骤:

22、获取risc-v pk环境中前端服务器与模拟器之间的文件描述符映射;

23、获取所述文件描述符映射对应文件的文件状态;

24、根据所述文件状态生成代理内核环境恢复指令;

25、获取所述模拟器与其对应的所述前端服务器之间的通信符号地址;

26、将所述代理内核环境恢复指令作为所述第三恢复指令保存至所述可执行可链接文件。

27、更进一步地,对所述可执行可链接文件进行解析,以加载所述第一恢复指令、所述第二恢复指令、所述第三恢复指令和所述内存数据,同时,根据所述模拟器通信符号地址对所述前端服务器进行初始化的步骤,包括以下子步骤:

28、对所述可执行可链接文件进行解析,从中读取所述第一恢复指令、所述第二恢复指令、所述第三恢复指令和所述内存数据;

29、将所述第一恢复指令、所述第二恢复指令、所述第三恢复指令加载至模拟器的启动存储器中,将所述内存数据加载至所述预设存储空间中;

30、将所述模拟器的入口地址设置为所述启动存储器;

31、根据所述模拟器通信符号地址对所述前端服务器进行初始化,以链接所述模拟器和所述前端服务器。

32、更进一步地,在所述预设存储空间中运行所述模拟器,使所述模拟器与所述前端服务器通信,并运行所述第一恢复指令、所述第二恢复指令、所述第三恢复指令,以完成所述检查点的恢复的步骤,包括以下子步骤:

33、在所述预设存储空间中运行所述模拟器,根据所述第一恢复指令、所述第二恢复指令恢复处理器对应的所述指令集扩展、所述运行环境和外设环境对应的所述外设运行环境;

34、根据所述第三恢复指令加载对应的所述文件描述符映射,使得所述前端服务器通过所述通信符号地址调用所述模拟器中的文件,以恢复所述文件状态,从而完成所述检查点的恢复。

35、第二方面,本发明还提供一种模拟器程序检查点保存和恢复的系统,所述模拟器程序检查点保存和恢复的系统应用于risc-v pk环境,所述模拟器程序检查点保存和恢复的系统包括:

36、处理器环境保存模块,用于确定模拟器的程序的检查点并开始保存所述检查点,并读取处理器的指令集扩展和运行环境,根据所述指令集扩展和所述运行环境生成第一恢复指令,并将所述第一恢复指令保存至可执行可链接文件;

37、内存环境保存模块,用于读取预设内存地址区间中的所有内存数据,并将所述内存数据保存至所述可执行可链接文件;

38、外设环境保存模块,用于读取外设环境的外设运行环境,根据所述外设运行环境生成第二恢复指令,并将所述第二恢复指令保存至所述可执行可链接文件;

39、内核代理环境保存模块,用于读取risc-v pk环境中的文件描述符映射,根据所述文件描述符映射对应的代理内核运行环境生成第三恢复指令,同时读取所述模拟器与其对应的前端服务器之间的通信符号地址,之后,将所述第三恢复指令和所述模拟器通信符号地址保存至所述可执行可链接文件,以完成所述检查点的保存;

40、恢复模块,用于在所述模拟器中进行分配预设存储空间并开始恢复所述检查点;

41、检查点加载模块,用于对所述可执行可链接文件进行解析,以在所述预设存储空间中加载所述第一恢复指令、所述第二恢复指令、所述第三恢复指令和所述内存数据,同时,根据所述模拟器通信符号地址对所述前端服务器进行初始化;

42、检查点运行模块,用于在所述预设存储空间中运行所述模拟器,使所述模拟器与所述前端服务器通信,并运行所述第一恢复指令、所述第二恢复指令、所述第三恢复指令,以完成所述检查点的恢复。

43、第三方面,本发明还提供一种计算机设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中任意一项所述的模拟器程序检查点保存和恢复的方法中的步骤。

44、第四方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中任意一项所述的模拟器程序检查点保存和恢复的方法中的步骤。

45、本发明提出的模拟器程序检查点保存和恢复的方法、系统极相关设备所达到的有益效果,包括:

46、一、检查点保存过程考虑了位于模拟器中的代理内核环境,能够支持使用risc-v代理内核运行的测试和性能评估程序的检查点的保存和恢复,提高了程序泛用性;

47、二、将检查点文件格式设计为可执行可链接文件,从而支持在不同的模拟器或者仿真环境中直接运行进行恢复,减少或避免了额外辅助程序的使用,提高了恢复效率;

48、三、在到达检查点时直接保存所有的内存数据,而不是额外修改模拟器追踪程序,加快了检查点的保存速度,提高了保存效率;

49、四、通过模拟器加载可执行可链接文件时自动加载数据段的方法,避免了大量的内存加载指令的使用,减少了操作人员的操作量,减少了检查点保存和恢复的复杂度。

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