掌桥专利:专业的专利平台
掌桥专利
首页

CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及内存状态恢复方法,特别涉及一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法及装置。

背景技术

如图1所示,在处理器设计领域,需要基于仿真平台分析评估特定应用在所设计处理器上的运行效果。

对应用程序切片,就是根据应用程序的运行情况,提取所占比重较高的指令片段,连同所需的运行状态,主要包括寄存器取值和内存状态。所得应用切片的用途是,置于仿真平台中特定处理器设计实例上运行,得到对该设计的评估结果,从而指导处理器设计。与运行完整的应用相比,运行应用切片可以在关注应用负载特性的前提下大幅缩短仿真时间,加快处理器设计速度。

如图2所示,对MMU进行简单介绍,内存管理单元MMU是介于处理器和片外存储器之间的中间层。提供对虚拟地址(VA)向物理地址(PA)的转换。一般封装于CPU芯片内部。因此虚拟地址一般只存在于CPU内部。

在不考虑TLB和多级页表的情况下,可以简单地如图3所示。

发明内容

发明所要解决的问题

本发明的主要目的是提供一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法,解决无MMU环境的内存状态恢复问题。

用于解决问题的方案

为了达到上述目的,本发明提供一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法,包括如下步骤:

步骤S1:虚拟内存域重定位,在可用的物理内存空间中,为每个虚拟内存域进行重定位,将其虚拟地址表示的基址转换为物理地址,长度保持不变;

步骤S2:恢复访存数据,每一条读访存记录,存放位置的恢复规则为,所属虚拟内存域重定位之后的基址+偏移量;

步骤S3:恢复栈状态,对每一个栈帧,存放位置的恢复规则为,所属虚拟内存域重定位之后的基址+偏移量;

步骤S4:恢复通用寄存器取值。

优选地,所述步骤S1包括:

步骤S11:确定目标系统环境物理内存的起始地址;

步骤S12:从起始地址开始,作为stack栈类型的区域;

步骤S13:随后,将前一区域的结束作为下一区域的开始,按顺序分配heap堆类型和normal一般类型。

优选地,所述步骤S2包括:

S21:若其取值属于某个原始虚拟内存域的范围,则判定为内存地址,取值为该虚拟内存域重定位之后的基址+偏移量;

S22:若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

S23:否则,判定为普通数据,取值不变。

优选地,所述步骤S3包括:

步骤S31:若处于RA位置,则判定为跳转地址,取值为对应标号的地址;

步骤S32:若处于FP位置,则判定为VMA0地址,取值为VMA0重定位之后的基址+偏移量;

步骤S33:若处于其他位置,且其取值属于某个原始虚拟内存域的范围,则判定为内存地址,取值为该虚拟内存域重定位之后的基址+偏移量;

步骤S34:若处于其他位置,且其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

步骤S35:否则,判定为普通数据,取值不变。

优选地,所述步骤S4包括:

S41:若其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;

S42:若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

S43:否则,判定为普通数据,取值不变。

为了达到上述目的,本发明还提供一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复装置,包括:

虚拟内存域重定位单元,其用于在可用的物理内存空间中,为每个虚拟内存域进行重定位,将其虚拟地址表示的基址转换为物理地址,长度保持不变;

恢复访存数据单元,其用于恢复访存数据,对每一个栈帧,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量;

恢复栈状态单元,其用于恢复栈状态对每一个栈帧,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量;以及

恢复通用寄存器取值单元,其用于恢复通用寄存器取值。

为了达到上述目的,本发明还提供一种电子设备,所述电子设备存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

为了达到上述目的,本发明还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。

发明的效果

与现有技术相比,本发明具有如下有益效果:

应用切片得以运行涉及的关键技术之一就是内存状态的恢复。根据目标处理器是否具备MMU,采取不同的方法。本发明在无MMU的情况下,处理器使用的内存地址,就是内存的物理地址,与有MMU的情况相比更为简单。本发明的特征也就在于恢复后使用物理地址。

附图说明

图1是现有技术中的应用切片在处理器设计中的作用的示意图。

图2是现有技术中的内存管理单元MMU的功能的示意图。

图3是现有技术中的虚拟地址到物理地址的转换原理图。

图4是本发明的一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法流程图。

图5是本发明为内存区域分配(重定位)方法示意图。

图6是本发明一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复装置的框图。

图7是本申请实施例提供的一种电子设备的结构示意图。

图8是本申请实施例提供的一种用于内存状态恢复方法的程序产品的结构示意图。

具体实施方式

下面将结合本发明实施例中的图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。并且,在此处需要进一步强调的是,以下的具体实施例提供的优选的技术方案,各方案(实施例)之间是可以相互配合或结合使用的。

首先,对本发明的中的应用切片进行说明,应用切片由指令片段和检查点信息组成。

表1-5给出了某个应用切片的完整信息,也就是进行内存恢复前的已知条件。表1为示例的指令片段、表2为示例的程序跳转、表3为示例的寄存器状态、表4为示例的VMA列表、表5为示例的访存数据、表6为示例——栈。

表1:示例-指令片段

表2:示例——程序跳转

表3:示例-寄存器状态

其中:检查点信息具体包括:

1、VMA列表:类型,起始地址,长度

2、访存数据:地址,数据

3、栈内容:若干栈帧

4、程序跳转:目标地址,对应标号

5、通用寄存器:某些寄存器内容为内存地址

表4:示例——VMA列表

表5:示例——访存数据

表6:示例——栈

stack-base=0x7fffffffffffffff

stack-top=0x7ffffffffffffb20

frame-pointer=0x7ffffffffffffb40

如图4所示,为本发明一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法流程图,本发明的一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法包括如下步骤:

步骤S1:VMA(虚拟内存域)重定位,在可用的物理内存空间中,为每个虚拟内存域进行重定位,将其虚拟地址表示的基址转换为物理地址,长度保持不变;该步骤S1具体包括如下子步骤,如图5所示,为内存区域分配(重定位)方法:

步骤S11:确定目标系统环境物理内存的起始地址;

步骤S12:从起始地址开始,作为stack栈类型的区域;

步骤S13:随后,将前一区域的结束作为下一区域的开始,按顺序分配heap堆类型和normal一般类型。

该步骤的具体示例如下:

VMA列表重定位结果(物理内存起始地址=0x000000)

步骤S2:恢复访存数据。在此步骤S2中,对每一条读访存记录,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量,在此步骤中,内存值的恢复规则包括如下步骤:

S21:若其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;

S22:若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

S23:否则,判定为普通数据,取值不变。

该步骤的示例如下:

示例——访存数据

步骤S3:恢复栈状态。在此步骤中,对每一个栈帧,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量;而内存值的恢复规则如下:

步骤S31:若处于RA位置(栈帧内最后一个64Byte),则判定为跳转地址,取值为对应标号的地址;

步骤S32:若处于FP位置(栈帧内倒数第二个64Byte),则判定为VMA0地址,取值为VMA0重定位之后的基址+偏移量;

步骤S33:若处于其他位置,且其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;

步骤S34:若处于其他位置,且其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

步骤S35:否则,判定为普通数据,取值不变。

上述步骤的示例如下:

示例——栈

stack-base=0x7fffffffffffffff重定位至0x800000-1

stack-top=0x7ffffffffffffb20重定位至0x7ffb20

frame-pointer=0x7ffffffffffffb40重定位至0x7ffb40

FP=frame-pointer,RA=return-address

步骤S4:恢复通用寄存器取值。

对每一个通用寄存器,取值的恢复规则,与S2中相同的规则,在此步骤中,内存值的恢复规则包括如下步骤:

步骤S41:若其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;

步骤S42:若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;

步骤S43:否则,判定为普通数据,取值不变。

上述步骤的示例如下:

示例-寄存器状态

如图6所示,为本发明的一种CPU芯片仿真加速中针对无MMU环境的内存状态恢复装置,该装置1具体包括:

虚拟内存域重定位单元11,其用于在可用的物理内存空间中,为每个虚拟内存域进行重定位,将其虚拟地址表示的基址转换为物理地址,长度保持不变;

恢复访存数据单元12,其用于恢复访存数据,对每一个栈帧,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量;

恢复栈状态单元13,其用于恢复栈状态对每一个栈帧,存放位置的恢复规则为,所属VMA重定位之后的基址+偏移量;以及

恢复通用寄存器取值单元14,其用于恢复通用寄存器取值。

其中:虚拟内存域重定位单元11包括:

用于确定目标系统环境物理内存的起始地址;从起始地址开始,作为stack栈类型的区域;将前一区域的结束作为下一区域的开始,按顺序分配heap堆类型和normal一般类型。

其中:恢复访存数据单元12具体包括:若其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;否则,判定为普通数据,取值不变。

恢复栈状态单元13具体包括:若处于RA位置(栈帧内最后一个64Byte),则判定为跳转地址,取值为对应标号的地址;若处于FP位置(栈帧内倒数第二个64Byte),则判定为VMA0地址,取值为VMA0重定位之后的基址+偏移量;若处于其他位置,且其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;若处于其他位置,且其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;否则,判定为普通数据,取值不变。

恢复通用寄存器取值单元14具体包括:若其取值属于某个原始VMA的范围,则判定为内存地址,取值为该VMA重定位之后的基址+偏移量;若其取值等于某个跳转地址,则判定为内存地址,取值为对应标号的地址;否则,判定为普通数据,取值不变。

与现有技术相比,本发明具有如下有益效果:

应用切片得以运行涉及的关键技术之一就是内存状态的恢复。根据目标处理器是否具备MMU,采取不同的方法。本发明在无MMU的情况下,处理器使用的内存地址,就是内存的物理地址,与有MMU的情况相比更为简单。本发明的特征也就在于恢复后使用物理地址。

参见图7,本申请实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台系统的总线230。

存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)211和/或高速缓存存储器212,还可以进一步包括只读存储器(ROM)213。

其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行本申请实施例中内存状态恢复方法的步骤,其具体实现方式与上述内存状态恢复方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。

存储器210还可以包括具有至少一个程序模块215的实用工具214,这样的程序模块215包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

相应的,处理器220可以执行上述计算机程序,以及可以执行实用工具214。

总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。

电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入输出接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本申请实施例中内存状态恢复方法的步骤,其具体实现方式与上述内存状态恢复方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。

图8示出了本实施例提供的用于实现上述内存状态恢复方法的程序产品300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本申请中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

本申请从使用目的上,效能上,进步及新颖性等观点进行阐述,已符合专利法所强调的功能增进及使用要件,本申请以上的说明书及说明书附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。

相关技术
  • CPU芯片仿真加速中针对无MMU环境的内存状态恢复方法
  • CPU芯片仿真加速中针对有MMU环境的内存状态恢复方法
技术分类

06120114701977