一种内存虚拟化方法及装置、电子设备和存储介质转让专利

申请号 : CN202310273226.8

文献号 : CN116339916B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本公开涉及一种内存虚拟化方法及装置、电子设备和存储介质,所述方法包括:接收虚拟内存请求,其中,所述虚拟内存请求中包括操作系统标识OSID和目标虚拟内存地址;根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为对应的目标物理内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。本公开实施例可实现以低时延快速完成虚拟内存地址到物理内存地址的转换。

权利要求 :

1.一种内存地址转换方法,其特征在于,包括:

接收虚拟内存请求,其中,所述虚拟内存请求中包括OSID和目标虚拟内存地址;

根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其在所述目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系;

根据MMU,将所述目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,所述MMU中包括所述目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。

2.根据权利要求1所述的方法,其特征在于,所述根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射;

在所述目标虚拟内存地址有效映射的情况下,将所述目标虚拟内存地址转换为对应的所述目标参考虚拟内存地址。

3.根据权利要求2所述的方法,其特征在于,所述根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址对应的映射标识;

根据所述映射标识,确定所述目标虚拟内存地址是否有效映射。

4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:在所述目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,所述提示信息用于指示所述虚拟内存请求为异常请求。

5.一种内存地址转换装置,其特征在于,包括:

接收模块,用于接收虚拟内存请求,其中,所述虚拟内存请求中包括OSID和目标虚拟内存地址;

第一转换模块,用于根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其在所述目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系;

第二转换模块,用于根据内存管理单元MMU,将所述目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,所述MMU中包括所述目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。

6.一种电子设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至4中任意一项所述的方法。

7.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至4中任意一项所述的方法。

说明书 :

一种内存虚拟化方法及装置、电子设备和存储介质

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及一种内存虚拟化方法及装置、电子设备和存储介质。

背景技术

[0002] 虚拟化技术是将单个计算机硬件元素(包括处理器、内存、存储器等)划分为多个虚拟机,每个虚拟机可以运行不同的操作系统,且相互独立,互不影响,通过这种方式可以显著的提高计算机使用效率。但是虚拟机使用的是虚拟内存地址,内存使用的是物理内存地址,在内存虚拟化过程中,虚拟化执行设备访问内存空间需要进行虚拟内存地址到物理内存地址的转换。

发明内容

[0003] 本公开提出了一种内存虚拟化方法及装置、电子设备和存储介质的技术方案。
[0004] 根据本公开的一方面,提供了一种内存地址转换方法,包括:接收虚拟内存请求,其中,所述虚拟内存请求中包括操作系统标识OSID和目标虚拟内存地址;根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为对应的目标物理内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0005] 在一种可能的实现方式中,所述根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为对应的目标物理内存地址,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射;在所述目标虚拟内存地址有效映射的情况下,将所述目标虚拟内存地址转换为对应的所述目标物理内存地址。
[0006] 在一种可能的实现方式中,所述根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址对应的映射标识;根据所述映射标识,确定所述目标虚拟内存地址是否有效映射。
[0007] 在一种可能的实现方式中,所述方法还包括:在所述目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,所述提示信息用于指示所述内存虚拟化请求为异常请求。
[0008] 在一种可能的实现方式中,所述方法还包括:根据内存管理单元MMU,将所述目标虚拟内存地址转换为对应的所述目标物理内存地址。
[0009] 根据本公开的一方面,提供了一种内存地址转换方法,包括:接收虚拟内存请求,其中,所述虚拟内存请求中包括OSID和目标虚拟内存地址;根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其在所述目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系;根据MMU,将所述目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,所述MMU中包括所述目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0010] 在一种可能的实现方式中,所述根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射;在所述目标虚拟内存地址有效映射的情况下,将所述目标虚拟内存地址转换为对应的所述目标参考虚拟内存地址。
[0011] 在一种可能的实现方式中,所述根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址是否有效映射,包括:根据所述OSID对应的地址映射表,确定所述目标虚拟内存地址对应的映射标识;根据所述映射标识,确定所述目标虚拟内存地址是否有效映射。
[0012] 在一种可能的实现方式中,所述方法还包括:在所述目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,所述提示信息用于指示所述内存虚拟化请求为异常请求。
[0013] 根据本公开的一方面,提供了一种内存地址转换装置,包括:接收模块,用于接收虚拟内存请求,其中,所述虚拟内存请求中包括操作系统标识OSID和目标虚拟内存地址;转换模块,用于根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为对应的目标物理内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0014] 根据本公开的一方面,提供了一种内存地址转换装置,包括:接收模块,用于接收虚拟内存请求,其中,所述虚拟内存请求中包括OSID和目标虚拟内存地址;第一转换模块,用于根据所述OSID对应的地址映射表,将所述目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,所述OSID对应的地址映射表中包括分配给所述OSID的虚拟内存地址及其在所述目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系;第二转换模块,用于根据内存管理单元MMU,将所述目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,所述MMU中包括所述目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0015] 根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
[0016] 根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
[0017] 在本公开实施例中,接收包括OSID和目标虚拟内存地址的虚拟内存请求;根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的目标物理内存地址,其中,OSID对应的地址映射表中包括分配给OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。为每个OSID配置地址映射表,地址映射表中包括分配给该OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系,使得在内存访问过程中,针对虚拟化执行设备发出的包括OSID和虚拟内存地址的虚拟内存请求,可以通过查询该OSID对应的地址映射表,从而以低时延快速完成虚拟内存地址到物理内存地址的转换。
[0018] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0019] 此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
[0020] 图1示出根据本公开实施例的内存地址转换的应用场景的示意图;
[0021] 图2示出相关技术中的一种内存地址转换方法的流程图;
[0022] 图3示出根据本公开实施例的一种内存地址转换方法的流程图;
[0023] 图4示出根据本公开实施例的OSID A对应的地址映射表的示意图;
[0024] 图5示出根据本公开实施例的目标虚拟内存地址转换到目标物理内存地址的示意图;
[0025] 图6示出根据本公开实施例的一种内存地址转换方法的流程图;
[0026] 图7示出根据本公开实施例的内存地址映射的示意图;
[0027] 图8示出根据本公开实施例的一种内存地址转换装置的框图;
[0028] 图9示出根据本公开实施例的一种内存地址转换装置的框图;
[0029] 图10示出根据本公开实施例的一种电子设备的框图。

具体实施方式

[0030] 以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0031] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0032] 本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
[0033] 另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0034] 图1示出根据本公开实施例的内存地址转换的应用场景的示意图。如图1所示,虚拟化执行设备发出包括虚拟内存地址的虚拟内存请求,为了提高内存访问效率,在虚拟化执行设备本地进行内存地址转换,将虚拟内存地址转换成物理内存地址,进而可以基于总线网络将转换后的物理内存地址传输至系统内存,以实现对系统内存的访问。其中,虚拟化执行设备可以是图形处理器(Graphic Processing Unit,GPU)、视频处理器(VIDEO Processors)等,本公开对此不作具体限定。
[0035] 相关技术中,通过在虚拟化执行设备处设置内存管理单元(Memory Management Unit,MMU),以利用MMU完成虚拟化执行设备本地的地址转换。MMU中存储有转换块表缓存(Translation Lookaside Buffers,TLB),TLB内缓存有部分虚拟内存地址到物理内存地址之间的映射关系。进而,利用MMU完成虚拟化执行设备本地的内存地址转换过程中,通过查询MMU中本地TLB,来实现缓存命中及内存地址转换。
[0036] 图2示出相关技术中的一种内存地址转换方法的流程图。如图2所示,虚拟化执行设备发出虚拟内存请求,该虚拟内存请求中包括需要请求的虚拟内存地址。MMU查询本地TLB;在TLB查询到结果,即TLB缓存命中(TLB hit)时,根据查询到的结果,将需要请求的虚拟内存地址转换为对应的物理内存地址;在TLB未查询到结果,即TLB缓存未命中(TLB miss)时,查询外部页表条目(Page Table Entry,PTE);在外部PTE查询到结果时,将查询到的结果缓存到本地TLB,以及根据查询到的结果,将需要请求的虚拟内存地址转换为对应的物理内存地址;在外部PTE未查询到结果时,则认为虚拟化执行设备发出的虚拟内存请求为异常请求,返回错误响应。
[0037] 本地TLB查询速度较快,但如果本地TLB无法直接查询到需要请求的虚拟内存地址映射到的物理内存地址,则需要查询外部PTE,当需要查询外部PTE时,无论最终虚拟内存地址是否能够映射到物理内存地址,都会大幅增加时延,降低系统工作效率。
[0038] 本公开实施例提供了一种内存地址转换方法,能够利用OSID对应的地址映射表,低时延快速完成虚拟内存地址到物理内存地址的转换,提升工作效率。下面对本公开实施例提供的内存地址转换方法进行详细描述。
[0039] 图3示出根据本公开实施例的一种内存地址转换方法的流程图。该方法可以由终端设备或服务器等电子设备执行,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,该方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。或者,可通过服务器执行该方法。如图1所示,该方法包括:
[0040] 在步骤S31中,接收虚拟内存请求,其中,虚拟内存请求中包括操作系统标识(operating system identification,OSID)和目标虚拟内存地址。
[0041] 接收虚拟化执行设备发送的虚拟内存请求,该虚拟内存请求中包括执行虚拟化操作的OSID,以及需要请求的目标虚拟内存地址。
[0042] 在一示例中,可以使用高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)总线协议中的axuser信号携带OSID,还可以使用其它通信协议中的信号来携带OSID,本公开对此不作具体限定。
[0043] 虚拟内存地址的大小由系统决定,该大小决定了内存地址偏移offset的范围,offset。用于进行数据存储。例如,虚拟内存地址大小为4K Byte,则offset使用地址bit位的[11:0],offset在进行虚拟内存地址到物理内存地址转换时不发生改变。
[0044] 在步骤S32中,根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的目标物理内存地址,其中,OSID对应的地址映射表中包括分配给OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0045] 系统为每个OSID配置对应的地址映射表。其中,针对任意一个OSID,其对应的地址映射表中包括分配给该OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0046] 每个OSID对应的有效虚拟内存地址空间的大小由系统分配。例如,一个虚拟内存地址大小为4K Byte,针对任意一个OSID A,系统分配给OSID A16K Byte的虚拟内存地址空间,则得到OSID A对应的地址映射表。图4示出根据本公开实施例的OSID A对应的地址映射表的示意图。如图4所示,OSID A对应的地址映射表中包括分配给OSID A的虚拟内存地址0~3,及其映射到的物理内存地址。系统分配给一个OSID的虚拟内存地址空间的大小可以根据实际应用场景灵活配置,本公开对此不作具体限定。
[0047] 在接收到包括OSID和目标虚拟内存地址的虚拟内存请求之后,响应于该虚拟内存请求,根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的目标物理内存地址。
[0048] 根据本公开的实施例,为每个OSID配置地址映射表,地址映射表中包括分配给该OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系,使得在内存访问过程中,针对虚拟化执行设备发出的包括OSID和虚拟内存地址的虚拟内存请求,可以通过查询该OSID对应的地址映射表,从而以低时延快速完成虚拟内存地址到物理内存地址的转换。
[0049] 在一种可能的实现方式中,根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的目标物理内存地址,包括:根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射;在目标虚拟内存地址有效映射的情况下,将目标虚拟内存地址转换为对应的目标物理内存地址。
[0050] 在OSID对应的地址映射表中确定目标虚拟内存地址有效映射的情况下,表示该目标虚拟内存地址是系统分配给该OSID的有效虚拟内存地址,此时,才可以将目标虚拟内存地址转换为对应的目标物理内存地址。
[0051] 在一种可能的实现方式中,根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射,包括:根据OSID对应的地址映射表,确定目标虚拟内存地址对应的映射标识;根据映射标识,确定目标虚拟内存地址是否有效映射。
[0052] 如图4所示,OSID A对应的地址映射表中包括分配给OSID A的虚拟内存地址0~3,则虚拟内存地址0~3对应的映射标识为有效,其它虚拟内存地址对应的映射标识为无效。例如,目标虚拟内存地址为虚拟内存地址1,根据OSID A对应的地址映射表,可以确定虚拟内存地址1对应的映射标识为有效,也即确定在OSID A对应的地址映射表中,目标虚拟内存地址1有效映射。此时,可以将目标虚拟内存地址1转换为目标物理内存地址1。
[0053] 在一种可能的实现方式中,该方法还包括:在目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,提示信息用于指示内存虚拟化请求为异常请求。
[0054] 根据OSID对应的地址映射表,确定目标虚拟内存地址无效映射的情况下,表示该目标虚拟内存地址不是系统分配给该OSID的有效虚拟内存地址。如图4所示,目标虚拟内存地址为虚拟内存地址4,根据OSID A对应的地址映射表,可以确定虚拟内存地址4对应的映射标识为无效,可以确定目标虚拟内存地址4不是系统分配给OSID A的有效虚拟内存地址,也即虚拟化执行设备对目标虚拟内存地址4的请求为异常请求。此时,生成并发出提示信息。
[0055] 图5示出根据本公开实施例的目标虚拟内存地址转换到目标物理内存地址的示意图。如图5所示,虚拟化执行设备发出虚拟内存请求,该虚拟内存请求中包括OSID和目标虚拟内存地址;查询OSID对应的地址映射表;在OSID对应的地址映射表中查询到结果,即OSID对应的地址映射表中目标虚拟内存地址的映射标识为有效时,此时,根据OSID对应的地址映射表中的映射关系,将目标虚拟内存地址转换为对应的目标物理内存地址;在OSID对应的地址映射表中未查询到结果,即OSID对应的地址映射表中目标虚拟内存地址的映射标识为无效时,则认为虚拟化执行设备发出的虚拟内存请求为异常请求,生成并向虚拟化执行设备发出提示信息。
[0056] 在一种可能的实现方式中,该方法还包括:根据MMU,将目标虚拟内存地址转换为对应的目标物理内存地址。
[0057] 如图5所示,在本公开实施例的旁路中,可以实现完全由MMU控制的内存虚拟化,即根据MMU将虚拟内存请求中包括的目标虚拟内存地址直接转换为对应的目标物理内存地址,从而实现兼容系统自带的MMU,不需额外为MMU配置资源的情况下实现更小粒度的内存虚拟化。
[0058] 在本公开实施例中,为每个OSID配置地址映射表,地址映射表中包括分配给该OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系,使得在内存访问过程中,针对虚拟化执行设备发出的包括OSID和虚拟内存地址的虚拟内存请求,可以通过查询该OSID对应的地址映射表,从而以低时延快速完成虚拟内存地址到物理内存地址的转换。
[0059] 本公开实施例还提供了一种内存地址转换方法,能够将MMU与OSID对应的地址映射表结合起来,以使得兼容系统自带MMU更精细化的内存地址映射,从而低时延快速完成虚拟内存地址到物理内存地址的转换,提升工作效率。下面对本公开实施例提供的内存地址转换方法进行详细描述。
[0060] 图6示出根据本公开实施例的一种内存地址转换方法的流程图。该方法可以由终端设备或服务器等电子设备执行,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,该方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。或者,可通过服务器执行该方法。如图6所示,该方法包括:
[0061] 在步骤S61中,接收虚拟内存请求,其中,虚拟内存请求中包括OSID和目标虚拟内存地址。
[0062] 接收虚拟化执行设备发送的虚拟内存请求,该虚拟内存请求中包括执行虚拟化操作的OSID,以及需要请求的目标虚拟内存地址。发送虚拟内存请求使用的总线协议、具体大小形式等可以参考上述实施例相关描述,此处不作赘述。
[0063] 在步骤S62中,根据OSID对应的地址映射表,将目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,OSID对应的地址映射表中包括分配给OSID的虚拟内存地址及其在目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系。
[0064] 在步骤S63中,根据MMU,将目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,MMU中包括目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0065] 利用MMU完成顶层内存虚拟化分区,即基于MMU控制多个虚拟内存空间的地址映射。图7示出根据本公开实施例的内存地址映射的示意图。如图7所示,MMU在粗粒度上控制虚拟内存空间0、虚拟内存空间1、虚拟内存空间2的地址映射。
[0066] 针对每个虚拟内存空间,可以基于OSID对应的地址映射表,实现用户级或更小粒度的地址映射。如图7所示,虚拟内存空间0下,根据OSID0、OSID1、OSID2对应的地址映射表,分别维护OSID0、OSID1、OSID2对应的虚拟内存;虚拟内存空间1下,根据OSID3、OSID4、OSID5对应的地址映射表,分别维护OSID3、OSID4、OSID5对应的虚拟内存;虚拟内存空间2下,根据OSID6、OSID7、OSID8对应的地址映射表,分别维护OSID6、OSID7、OSID8对应的虚拟内存;从而实现细粒度上的内存地址映射。OSID0对应的虚拟内存
[0067] 在接收到包括OSID和目标虚拟内存地址的虚拟内存请求之后,响应于该虚拟内存请求,根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的参考目标虚拟内存地址;进而,根据MMU,将参考目标虚拟内存地址转换为对应的目标物理内存地址,从而实现内存地址转换。
[0068] 根据本公开的实施例,利用MMU进行粗粒度的内存地址映射,进而在每个粗粒度虚拟内存空间下利用OSID对应的地址映射表进行细粒度的内存地址映射,使得在内存访问过程中,针对虚拟化执行设备发出的包括OSID和虚拟内存地址的虚拟内存请求,可以通过查询该OSID对应的地址映射表以及MMU,以低时延快速完成虚拟内存地址到物理内存地址的转换,从而实现兼容系统自带的MMU,不需额外为MMU配置资源的情况下实现更小粒度的内存虚拟化。
[0069] 在一种可能的实现方式中,根据OSID对应的地址映射表,将目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,包括:根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射;在目标虚拟内存地址有效映射的情况下,将目标虚拟内存地址转换为对应的目标参考虚拟内存地址。
[0070] 在OSID对应的地址映射表中确定目标虚拟内存地址有效映射的情况下,表示该目标虚拟内存地址是系统分配给该OSID的有效虚拟内存地址,此时,才可以将目标虚拟内存地址转换为对应的目标参考虚拟内存地址。
[0071] 在一种可能的实现方式中,根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射,包括:根据OSID对应的地址映射表,确定目标虚拟内存地址对应的映射标识;根据映射标识,确定目标虚拟内存地址是否有效映射。
[0072] 针对任意一个OSID,该OSID对应的地址映射表中包括分配给该OSID的虚拟内存地址及其对应的映射标识,针对有效分配的虚拟内存地址,其对应的映射标识为有效,其它虚拟内存地址对应的映射标识为无效。映射标识的实现可以参考图4相关实施例描述,此处不作赘述。
[0073] 在一种可能的实现方式中,该方法还包括:在目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,提示信息用于指示内存虚拟化请求为异常请求。
[0074] 根据OSID对应的地址映射表,确定目标虚拟内存地址无效映射的情况下,表示该目标虚拟内存地址不是系统分配给该OSID的有效虚拟内存地址。此时,生成并发出提示信息,以提示虚拟化执行设备其发出的虚拟内存请求为异常请求。
[0075] 根据本公开的实施例,利用MMU进行粗粒度的内存地址映射,进而在每个粗粒度虚拟内存空间下利用OSID对应的地址映射表进行细粒度的内存地址映射,使得在内存访问过程中,针对虚拟化执行设备发出的包括OSID和虚拟内存地址的虚拟内存请求,可以通过查询该OSID对应的地址映射表以及MMU,以低时延快速完成虚拟内存地址到物理内存地址的转换,从而实现兼容系统自带的MMU,不需额外为MMU配置资源的情况下实现更小粒度的内存虚拟化。
[0076] 可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0077] 此外,本公开还提供了一种内存地址转换装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种内存地址转换方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
[0078] 图8示出根据本公开实施例的一种内存地址转换装置的框图。如图8所示,装置80包括:
[0079] 接收模块81,用于接收虚拟内存请求,其中,虚拟内存请求中包括OSID和目标虚拟内存地址;
[0080] 第一转换模块82,用于根据OSID对应的地址映射表,将目标虚拟内存地址转换为对应的目标物理内存地址,其中,OSID对应的地址映射表中包括分配给OSID的虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0081] 在一种可能的实现方式中,第一转换模块82,用于:
[0082] 根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射;
[0083] 在目标虚拟内存地址有效映射的情况下,将目标虚拟内存地址转换为对应的目标物理内存地址。
[0084] 在一种可能的实现方式中,第一转换模块82,用于:
[0085] 根据OSID对应的地址映射表,确定目标虚拟内存地址对应的映射标识;
[0086] 根据映射标识,确定目标虚拟内存地址是否有效映射。
[0087] 在一种可能的实现方式中,装置80,还包括:
[0088] 提示模块,用于在目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,提示信息用于指示内存虚拟化请求为异常请求。
[0089] 在一种可能的实现方式中,装置80,还包括:
[0090] 第二转换模块,用于根据MMU,将目标虚拟内存地址转换为对应的目标物理内存地址。
[0091] 图9示出根据本公开实施例的一种内存地址转换装置的框图。如图9所示,装置90包括:
[0092] 接收模块91,用于接收虚拟内存请求,其中,虚拟内存请求中包括OSID和目标虚拟内存地址;
[0093] 第一转换模块92,用于根据OSID对应的地址映射表,将目标虚拟内存地址转换为目标虚拟内存空间内对应的目标参考虚拟内存地址,其中,OSID对应的地址映射表中包括分配给OSID的虚拟内存地址及其在目标虚拟内存空间内对应的参考虚拟内存地址之间的映射关系;
[0094] 第二转换模块93,用于根据MMU,将目标参考虚拟内存地址转换为对应的目标物理内存地址,其中,MMU中包括目标虚拟内存空间内的参考虚拟内存地址及其对应的物理内存地址之间的映射关系。
[0095] 在一种可能的实现方式中,第一转换模块92,用于:
[0096] 根据OSID对应的地址映射表,确定目标虚拟内存地址是否有效映射;
[0097] 在目标虚拟内存地址有效映射的情况下,将目标虚拟内存地址转换为对应的目标参考虚拟内存地址。
[0098] 在一种可能的实现方式中,第一转换模块92,用于:
[0099] 根据OSID对应的地址映射表,确定目标虚拟内存地址对应的映射标识;
[0100] 根据映射标识,确定目标虚拟内存地址是否有效映射。
[0101] 在一种可能的实现方式中,装置90,还包括:
[0102] 提示模块,用于在目标虚拟内存地址无效映射的情况下,生成并发出提示信息,其中,提示信息用于指示内存虚拟化请求为异常请求。
[0103] 该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
[0104] 在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0105] 本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
[0106] 本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
[0107] 本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
[0108] 电子设备可以被提供为终端、服务器或其它形态的设备。
[0109] 图10示出根据本公开实施例的一种电子设备的框图。参照图10,电子设备1900可以被提供为一服务器或终端设备。参照图10,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
[0110] 电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器TM TM操作系统(Windows Server ),苹果公司推出的基于图形用户界面操作系统(Mac OS X ),TM
多用户多进程的计算机操作系统(Unix ),自由和开放原代码的类Unix操作系统TM TM
(Linux ),开放原代码的类Unix操作系统(FreeBSD )或类似。
[0111] 在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
[0112] 本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0113] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0114] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0115] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0116] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0117] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0118] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0119] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0120] 该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
[0121] 上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
[0122] 本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0123] 若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
[0124] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。