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

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:更新寄存器中的地址数据。

优选地,步骤S1包括如下子步骤:

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

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

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

步骤S14:为每个内存区域内的每个内存页面计算物理地址。

优选地,步骤S14中的页面计算物理地址为:

页面物理地址=所属内存区域的物理地址+页面大小×页号。

优选地,在步骤S2中,对每一条访存记录和栈内数据取值进行如下判定和处理:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:否则,取值不变。

优选地,在步骤S3中,对每一个寄存器Rd的取值进行如下判定和处理:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:否则,取值不变。

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

VMA重映射模块,其在可用的物理内存空间中,为每个虚拟内存域的每个页面分配物理内存,配置页表;

第一更新地址数据模块,其用于更新访存记录和栈中的地址数据;

第二更新地址数据模块,其用于更新寄存器中的地址数据。

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

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

发明的效果

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

应用切片得以运行涉及的关键技术之一就是内存状态的恢复。根据目标处理器是否具备MMU,采取不同的方法。本发明在有MMU的情况下,处理器使用的内存地址,保持原有的虚拟地址不变,然后由MMU重新映射至物理地址。

附图说明

图1是应用程序切片在处理器设计领域的应用背景。

图2是内存管理单元MMU功能示意。

图3是内存管理单元MMU工作原理。

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

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

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

图7是本申请实施例提供的一种用于实现容量增量升级方法的程序产品的结构示意图。

具体实施方式

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

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

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

表5

示例-指令片段

表1:

示例——程序跳转

表2:

寄存器状态

示例-寄存器状态

表3:

检查点信息具体包括:

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

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

3、栈内容:若干栈帧

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

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

示例——VMA列表

表4:

示例——访存数据

表5:

示例——栈

stack-base=0x7fffffffffffffff

stack-top=0x7ffffffffffffb20

frame-pointer=0x7ffffffffffffb40

表6

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

步骤S1:VMA重映射。在可用的物理内存空间中,为每个虚拟内存域的每个页面分配物理内存,配置页表。该步骤S1具体包括如下子步骤:

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

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

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

步骤S14:为每个内存区域内的每个内存页面计算物理地址:

页面物理地址=所属内存区域的物理地址+页面大小×页号。

上述步骤S1的示例如下:

VMA重映射结果(页面大小=4096)

步骤S2:更新访存记录和栈中的地址数据。

在此步骤中,对每一条访存记录和栈内数据取值进行如下判定和处理:

步骤S21:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:首先通过Load Address of Symbol指令获得标号地址(例如RISC-V指令集中的“LA Rd,Symbol”),然后通过Memory Store指令将该地址存入对应内存地址(例如RISC-V指令集中的“SD Rs2,offset(Rs1)”);

步骤S22:否则,取值不变。

上述步骤S2的示例如下:

示例——访存数据

示例——栈

FP=frame-pointer,RA=return-address

步骤S3:更新寄存器中的地址数据。

在此步骤中,对每一个寄存器Rd的取值进行如下判定和处理:

步骤S31:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:通过Load Address of Symbol指令获得标号地址(例如RISC-V指令集中的“LA Rd,Symbol”);

步骤S32:否则,取值不变。

上述步骤S3的示例如下:

示例-寄存器状态

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

VMA重映射模块11,其在可用的物理内存空间中,为每个虚拟内存域的每个页面分配物理内存,配置页表。VMA重映射模块11具体包括:

确定目标系统环境物理内存的起始地址,例如0x000000;从起始地址开始,作为stack栈类型的区域;将前一区域的结束作为下一区域的开始,按顺序分配heap堆类型和normal一般类型;为每个内存区域内的每个内存页面计算物理地址:页面物理地址=所属内存区域的物理地址+页面大小×页号。

第一更新地址数据模块12,其用于更新访存记录和栈中的地址数据,该更新地址数据模块12具体包括:对每一条访存记录和栈内数据取值进行如下判定和处理:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:首先通过Load Address ofSymbol指令获得标号地址(例如RISC-V指令集中的“LA Rd,Symbol”),然后通过MemoryStore指令将该地址存入对应内存地址(例如RISC-V指令集中的“SD Rs2,offset(Rs1)”);否则,取值不变。

第二更新地址数据模块13,其用于更新寄存器中的地址数据。第二更新地址数据模块13具体包括:对每一个寄存器Rd的取值进行如下判定和处理:若其取值等于某个跳转地址,则将其取值调整为对应标号的地址:通过Load Address of Symbol指令获得标号地址(例如RISC-V指令集中的“LA Rd,Symbol”);否则,取值不变。

与现有技术相比,本发明的有益效果在于:应用切片得以运行涉及的关键技术之一就是内存状态的恢复。根据目标处理器是否具备MMU,采取不同的方法。本发明在有MMU的情况下,处理器使用的内存地址,保持原有的虚拟地址不变,然后由MMU重新映射至物理地址。

参见图6,本申请实施例还提供了一种电子设备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系统、磁带驱动器以及数据备份存储平台等。

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

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

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

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

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

06120114701357