一种实现内存访问的方法、装置和系统与流程

文档序号:11829467阅读:213来源:国知局
一种实现内存访问的方法、装置和系统与流程

本发明涉及计算机领域,尤其涉及一种实现内存访问的方法、装置及系统。



背景技术:

数据中心(Data Center)是数据计算、存储的中心。进入云数据中心时代后,通过引用虚拟化技术,将数据中心的计算机、存储设备集中管理,形成统一的共享资源池,提高资源利用率,并有效地降低硬件的成本以及后续的运营费用。

然而,在现有技术中,各计算机的处理器和该计算机的内存之间通过双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)总线直接连接,处理器直接通过该DIMM总线访问本计算机上的内存。由于DIMM总线布线要求限制了处理器和内存的距离,因此各计算机只能访问本计算机上的内存,而计算机内部所能提供的内存槽数量受限,因此在实际应用中往往存在内存空间不足的问题。



技术实现要素:

本发明实施例提供一种实现内存访问的方法、装置和系统,用于解决现有技术中存在的内存空间不足的问题。

第一方面,提供了一种实现内存访问的方法,所述方法应用于包括计算机、内存管理设备和内存池的系统,其中,所述计算机通过系统总线与所述 内存管理设备相连,所述内存管理设备与所述内存池相连,所述内存池包括多个存储器;所述方法包括:

所述计算机的操作系统通过调用所述计算机的统一可扩展固件接口基本输入输出系统UEFI BIOS的接口向所述UEFI BIOS发送内存访问请求,所述内存访问请求包括访问地址和访问长度;

所述UEFI BIOS根据所述访问地址确定所述内存访问请求所请求访问的内存空间属于所述内存池中为所述计算机分配的内存空间,通过所述系统总线向所述内存管理设备发送所述内存访问请求以请求访问起始位置的物理地址为所述访问地址、长度为所述访问长度的内存空间。

在第一方面的第一种可能的实现方式中,所述根据所述访问地址确定所述内存访问请求所请求访问的内存空间属于所述内存池中为所述计算机分配的内存空间,具体包括:根据物理地址空间表确定所述访问地址在所述内存池中为所述计算机分配的内存空间的物理地址范围,所述物理地址空间表包括所述内存池中为所述计算机分配的内存空间的物理地址范围。

结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:所述UEFI BIOS在所述计算机启动时确定需要所述内存管理设备为所述计算机分配的内存空间的长度,并向所述内存管理设备发送包括所述长度的内存分配请求,以请求所述内存管理设备在所述内 存池中为所述计算机分配所述长度的内存空间。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定需要所述内存管理设备为所述计算机分配的内存空间的长度具体包括:检查所述第一计算机中的本地内存的长度,将预设的所述第一计算机需要使用的总内存空间的长度与所述本地内存的长度的差值确定为需要所述内存管理设备为所述第一计算机分配的内存空间的长度。

第二方面,提供了一种实现内存访问的方法,所述方法由内存管理装置执行;所述方法包括:

接收与所述内存管理装置相连的第一计算机发送的内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

确定内存池中的已分配给所述第一计算机的内存空间的地址信息,所述内存池包括多个存储器,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,并根据所述起始位置在所述内存池中的地址和所述访问长度访问所述待访问内存空间。

在第二方面的第一种可能的实现方式中,所述确定所述内存池中的已分配给所述第一计算机的内存空间之前还包括:

在所述内存池中为所述第一计算机分配所述内存空间,所述内存空间包括至少一个连续的子内存空间,记录用于标识所述第一计算机的计算机标识和所述内存空间的地址信息,所述内存空间的地址信息包括各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的映射关系;

所述确定所述内存池中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,具体包括:

根据所述第一计算机的标识确定记录的分配给所述第一计算机的内存空间的地址信息,根据所述访问地址、以及记录的各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的的映射关系,确定所述待访问内存空间的起始位置在所述内存池中的地址。

结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述在所述内存池中为所述第一计算机分配所述内存空间之后还包括:

在接收到所述第一计算机发送的内存释放请求时释放为所述第一计算机分配的内存空间,并将释放的所述内存空间标为空闲状态;

在接收到与所述内存管理装置相连的第二计算机发送的内存分配请求时,从所述内存池中标为空闲状态的内存空间中为所述第二计算机分配内存 空间。

结合第二方面或第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述内存管理装置部署在实现内存访问的系统的内存管理设备中,所述系统还包括所述第一计算机和所述内存池,其中,所述第一计算机通过所述系统总线与所述内存管理设备相连,所述内存管理设备与所述内存池相连。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述内存管理设备包括内存交换机和内存控制设备,所述内存交换机与所述内存控制设备相连,所述内存控制设备和所述内存池相连;

所述内存管理装置部署在所述内存交换机中;其中,所述访问单元具体用于通过所述内存控制设备访问所述待访问内存空间;或者,

所述内存管理装置部署在所述内存控制设备中;其中,所述接收第一计算机发送的内存访问请求具体为,所述内存控制设备通过所述内存交换机接收所述第一计算机发送的所述内存访问请求,所述内存访问请求包括所述内存交换机添加的所述第一计算机的计算机标识;所述确定内存池中的已分配给所述第一计算机的内存空间具体为,所述内存控制设备根据所述计算机标识确定分配给所述第一计算机的内存空间。

第三方面,提供了一种实现内存访问的方法,其特征在于,所述方法应 用于包括计算机、内存交换机、内存控制设备和内存池的系统,其中,所述计算机通过系统总线与所述内存交换机相连,所述内存交换机与所述内存控制设备相连,所述内存控制设备与内存池相连,所述内存池包括多个存储器;所述方法包括:

所述内存交换机接收所述计算机发送的内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

所述内存交换机根据与所述计算机所连接的端口确定发送所述内存访问请求的计算机为所述计算机,将用于标识所述计算机的计算机标识添加到所述内存访问请求中,并将携带所述计算机标识的内存访问请求发送给所述内存控制设备,以使得所述内存控制设备根据所述计算机标识确定分配给所述计算机的内存空间,并访问所述内存空间中的所述待访问内存空间。

在第三方面的第一种可能的实现方式中,所述系统包括至少两个内存控制设备,各内存控制设备分别和一个所述内存池相连;

所述内存交换机向所述内存控制设备发送携带所述计算机标识的内存访问请求之前还包括:

所述内存交换机在接收到所述计算机发送的内存分配请求时,选择所述 至少两个内存控制设备中的第一内存控制设备为所述计算机分配所述内存空间,并记录所述计算机的计算机标识和所述第一内存控制设备的装置标识的对应关系;

所述内存交换机根据所述对应关系确定需要将所述内存访问请求发送给所述第一内存控制设备。

第四方面,提供了一种计算机,所述计算机通过系统总线与内存管理设备相连,所述内存管理设备与内存池相连,所述内存池包括多个存储器;所述计算机包括操作系统模块和BIOS模块,所述操作系统模块用于实现所述计算机的操作系统的功能,所述BIOS模块用于实现所述计算机的UEFI BIOS的功能;

所述操作系统模块,用于通过调用所述BIOS模块的接口向所述BIOS模块发送内存访问请求,所述内存访问请求包括访问地址和访问长度;

所述BIOS模块,用于根据所述访问地址确定所述内存访问请求所请求访问的内存空间属于所述内存池中为所述计算机分配的内存空间,通过所述系统总线向所述内存管理设备发送所述内存访问请求以请求访问起始位置的物理地址为所述访问地址、长度为所述访问长度的内存空间。

在第四方面的第一种可能的实现方式中,所述BIOS模块用于根据所述访问地址确定所述内存访问请求所请求访问的内存空间属于所述内存池中为所 述计算机分配的内存空间具体包括:所述BIOS模块用于根据物理地址空间表确定所述访问地址在所述内存池中为所述计算机分配的内存空间的物理地址范围,所述物理地址空间表包括所述内存池中为所述计算机分配的内存空间的物理地址范围。

结合第四方面或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述BIOS模块,还用于在所述计算机启动时确定需要所述内存管理设备为所述计算机分配的内存空间的长度,向所述内存管理设备发送包括所述长度的内存分配请求,以请求所述内存管理设备在所述内存池中为所述计算机分配所述长度的内存空间。

结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述BIOS模块用于确定需要所述内存管理设备为所述计算机分配的内存空间的长度具体包括:所述BIOS模块,用于检查所述计算机中的本地内存的长度,将预设的所述第一计算机需要使用的总内存空间的长度与所述本地内存的长度的差值确定为需要所述内存管理设备为所述第一计算机分配的内存空间的长度。

第五方面,提供了一种内存管理装置,所述内存管理装置包括:接收单元、确定单元和访问单元;

所述接收单元,用于接收与所述内存管理装置相连的第一计算机发送的 内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

所述确定单元,用于确定内存池中的已分配给所述第一计算机的内存空间的地址信息,并根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,所述内存池包括多个存储器;

所述访问单元,用于根据所述起始位置在所述内存池中的地址和所述访问长度访问所述待访问内存空间。

在第五方面的第一种可能的实现方式中,所述内存管理装置还包括分配单元和记录单元;

所述分配单元,用于在所述内存池中为所述第一计算机分配所述内存空间,所述内存空间包括至少一个连续的子内存空间;

所述记录单元,用于记录所述第一计算机的计算机标识和所述内存空间的地址信息,所述内存空间的地址信息包括各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的映射关系;

所述确定单元,具体用于根据所述第一计算机的标识确定记录的分配给所述第一计算机的内存空间的地址信息,根据所述访问地址、以及记录的各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的的 映射关系,确定所述待访问内存空间的起始位置在所述内存池中的地址。

结合第五方面或第五方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分配单元还用于,在所述接收单元接收到所述第一计算机发送的内存释放请求时释放为所述第一计算机分配的内存空间,并将释放的所述内存空间标为空闲状态,在所述接收单元接收到与所述内存管理装置相连的第二计算机发送的内存分配请求时,从所述内存池中标为空闲状态的内存空间中为所述第二计算机分配内存空间。

结合第五方面或第五方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述内存管理装置部署在实现内存访问的系统的内存管理设备中,所述系统还包括所述第一计算机,其中,所述第一计算机通过系统总线与所述内存管理设备相连,所述内存管理设备与所述内存池相连。

结合第五方面的第三种可能的实现方式,在第四种可能的实现方式中,所述内存管理设备包括内存交换机和内存控制设备,所述内存交换机与所述内存控制设备相连,所述内存控制设备与所述内存池相连;

所述内存管理装置部署在所述内存交换机中;其中,所述访问单元具体用于通过所述内存控制设备访问所述待访问内存空间;或者,

所述内存管理装置部署在所述内存控制设备中;其中,所述接收单元具体用于通过所述内存交换机接收所述第一计算机发送的所述内存访问请求, 所述内存访问请求包括所述内存交换机添加的所述第一计算机的计算机标识;所述确定单元用于确定内存池中的已分配给所述第一计算机的内存空间具体包括,所述确定单元用于根据所述计算机标识确定分配给所述第一计算机的内存空间。

第六方面,提供了一种内存交换机,包括所述内存交换机的实现内存访问的系统还包括计算机、内存控制设备和内存池,其中,所述计算机通过系统总线与所述内存交换机相连,所述内存交换机与所述内存控制设备相连,所述内存控制设备与内存池相连,所述内存池包括多个存储器;所述内存交换机包括:接收单元、添加单元和发送单元;

所述接收单元,用于接收所述计算机发送的内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

所述添加单元,用于根据与所述计算机所连接的端口确定发送所述内存访问请求的计算机为所述计算机,将用于标识所述计算机的计算机标识添加到所述内存访问请求中;

所述发送单元,用于将携带所述计算机标识的内存访问请求发送给所述内存控制设备,以使得所述内存控制设备根据所述计算机标识确定分配给所 述计算机的内存空间,并访问所述内存空间中的所述待访问内存空间。

在第六方面的第一种可能的实现方式中,所述系统包括至少两个内存控制设备,各内存控制设备分别和一个所述内存池相连;所述内存交换机还包括内存控制设备管理单元;

所述内存控制设备管理单元,用于在所述接收单元接收到所述计算机发送的内存分配请求时,选择所述至少两个内存控制设备中的第一内存控制设备为所述计算机分配所述内存空间,并记录所述计算机的计算机标识和所述第一内存控制设备的装置标识的对应关系;还用于根据所述对应关系确定需要将所述内存访问请求发送给所述第一内存控制设备。

第七方面,提供了一种实现内存访问的系统,所述系统包括内存管理设备和至少两个计算机,其中,各计算机分别通过系统总线与所述内存管理设备相连,所述内存管理设备与内存池相连,所述内存池包括多个存储器;

所述至少两个计算机中的第一计算机,用于向所述内存管理设备发送内存访问请求,以请求访问待访问内存空间,所述内存访问请求包括访问地址和访问长度,所述访问地址为所述待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间长度;

所述内存管理设备,在接收到所述内存访问请求时,确定所述内存池中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地 址信息和所述访问地址确定所述起始位置在所述内存池中的地址,并根据所述起始位置在所述内存池中的地址和所述访问长度访问所述待访问内存空间。

在第七方面的第一种可能的实现方式中,所述内存管理设备还用于,在所述内存池中为所述第一计算机分配所述内存空间,所述内存空间包括至少一个连续的子内存空间,记录用于标识所述第一计算机的计算机标识和所述内存空间的地址信息,所述内存空间的地址信息包括各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的映射关系;

所述内存管理设备用于确定所述内存池中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,具体包括:

所述内存管理设备,用于根据所述第一计算机的标识确定记录的分配给所述第一计算机的内存空间的地址信息,根据所述访问地址、以及记录的各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的的映射关系,确定所述待访问内存空间的起始位置在所述内存池中的地址。

结合第七方面或第七方面的第一种可能的实现方式,在第二种可能的实现方式中,所述内存管理设备包括内存交换机和内存控制设备,各计算机分别通过系统总线与所述内存交换机相连,所述内存交换机与所述内存控制设 备相连,所述内存控制设备和所述内存池相连;

所述第一计算机,具体用于向所述内存交换机发送所述内存访问请求;

所述内存交换机,用于在接收到所述内存访问请求时,根据与所述第一计算机所连接的端口确定发送所述内存访问请求的计算机为所述第一计算机,将所述第一计算机的计算机标识添加到所述内存访问请求中,并将携带所述计算机标识的内存访问请求发送给所述内存控制设备;

所述内存控制设备,用于在接收到所述内存访问请求时,根据所述计算机标识确定分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,并根据所述起始位置在所述内存池中的地址和所述访问长度访问所述待访问内存空间。

结合第七方面的第二种可能的实现方式,在第三种可能的实现方式中,所述内存管理设备包括至少两个内存控制设备,各内存控制设备分别和一个所述内存池相连;

所述内存交换机还用于在接收到所述第一计算机发送的内存分配请求时,选择所述至少两个内存控制设备中的第一内存控制设备为所述第一计算机分配所述内存空间,并记录所述第一计算机的计算机标识和所述第一内存控制设备的装置标识的对应关系;并在向所述第一内存控制设备发送携带所 述计算机标识的内存访问请求前根据所述对应关系确定需要将所述内存访问请求发送给所述第一内存控制设备。

结合第七方面的第三种可能的实现方式,在第四种可能的实现方式中,所述内存访问请求具体为读内存请求;

所述第一内存控制设备,还用于将所述计算机标识和从所述待访问内存空间中读取的数据发送给所述内存交换机;

所述内存交换机,还用于通过与所述计算机标识所标识的所述第一计算机连接的端口将所述数据发送给所述第一计算机。

结合第七方面、第七方面的第一种至第四种任一可能的实现方式,在第五种可能的实现方式中,所述系统还包括所述内存池。

根据本发明实施例,计算机的操作系统可以通过统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)基本输入输出系统(Basic Input/Output System,BIOS)访问内存,而不是直接访问内存,而且,计算机的UEFI BIOS可以通过系统总线访问到部署在计算机外部的内存池中的内存空间,因此,该计算机可以使用计算机外部的内存池中的内存空间,从而解决了现有技术存在的内存空间不足的问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A、1B和图2是本发明实施例提供的用于实现内存访问的系统100的组网结构示意图;

图3A和3B是本发明实施例1提供的内存空间示意图;

图4是本发明实施例2提供的计算机200的结构示意图;

图5A和5B是本发明实施例3提供的内存管理装置300的结构示意图;

图6A和6B是本发明实施例4提供的内存交换机400的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1A为本发明实施例提供的一种用于实现内存访问的系统100的组网结构示意图,系统100包括至少两个计算机110和内存管理设备120。

各计算机110分别通过系统总线与内存管理设备120相连,所述系统总线具体可以是快速外设组件互连(Peripheral Component Interconnect Express,PCIe)总线。具体实现时,各计算机110的处理器通过系统总线与内存管理设备120相连。

内存管理设备120与内存池相连,所述内存池包括多个存储器。内存管理设备120将所述内存池中的多个存储器的内存空间作为一个整体内存空间进行管理。具体实现时,所述内存池可以是一个或两个以上。

在具体实现时,如图1B所示,所述存储器通常为双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM),一个内存池中的DIMM通过双倍速率(Double Data Rate,DDR)接口连接在一个或多个内存扩展芯片上,内存管理设备120具体与内存扩展芯片相连。内存管理设备120具体可以是通过系统总线、存储总线(如DIMM总线)或以太网与内存扩展芯片相连。

如图2所示,内存管理设备120可以包括内存交换机120-1和至少1个内存控制设备120-2,各计算机110与内存交换机120-1相连,内存交换机120-1与各内存控制设备120-2相连,内存控制设备120-2与各自对应的内存池相连。其中,内存交换机120-1与各内存控制设备120-2可以通过系统总线、存储总线或以太网相连。在如图2所示的系统100中,1个内存控制设备120-2连接的所有存储器构成一个内存池。

在具体实现时,如果1个内存交换机120-1连接1个内存控制设备120-2,内存交换机120-1和内存控制设备120-2可以位于同一个物理实体,也可以位于不同的物理实体;如果1个内存交换机120-1连接至少两个内存控制设备120-2,内存交换机120-1和各个内存控制设备120-2分别位于一个独立的物理实体。

如图2所示的系统100有两种实现方式,实现方式A和实现方式B。

在实现方式A中,内存交换机120-1对内存池中分配给各计算机的内存空间进行管理,如记录分配的内存空间的地址信息,根据接收的内存访问请求中的访问地址、访问长度和记录的地址信息定位待访问内存空间并执行访问操作。实现方式A主要适用于部署一个内存池的系统100中。

在实现方式B中,内存控制设备120-2对其连接的内存池中分配给各计算机的内存空间进行管理。实现方式B既适用于部署一个内存池的系统100,也适用于部署两个以上内存池的系统100。

部署在图1A的内存管理设备120、图2的内存交换机120-1或内存控制设备120-2中用于对内存池中分配给各计算机的内存空间进行管理的装置可以统称为内存管理装置。

在本发明实施例中,某一计算机可访问的内存可以包括所述计算机内部的内存(后续称为本地内存)和内存管理设备120在内存池中为所述计算机分配的内存(后续称为扩展内存),相应地,所述计算机的物理地址空间包括本地内存的物理地址空间和扩展内存的物理地址空间。

计算机在启动时,所述计算机的UEFI BIOS会生成物理地址空间表,所述物理地址空间表包括所述计算机的本地内存的物理地址范围和所述扩展内存的物理地址范围。如表1所示,所述计算机的物理地址空间包括16G本地内存和64G扩展内存,相应地,所述计算机的物理地址空间表包括16G本地内存的物理地址范围和64G扩展内存的物理地址范围。

表1

内存管理设备为其中一个计算机分配的内存空间包括至少一个连续的子内存空间,如图3A和图3B所示。其中,图3A所示的内存空间包括1个子内存空间,图3B所示的内存空间包括3个子内存空间,这3个子内存空间之间彼此不连续。

各计算机利用物理地址空间中的地址(即物理地址)访问内存中的位置。如图3B所示,内存池中地址为A2的位置P,在该计算机的物理地址空间中对应的物理地址是A1,计算机利用物理地址A1访问位置P,内存管理设备可以将物理地址A1映射为A2,从而利用A2可访问到该位置。

下面结合图1A和图2介绍系统100的工作过程。

内存分配:

当其中一个计算机(后续称为第一计算机)启动时,所述第一计算机通过 所述系统总线向内存管理设备120发送内存分配请求,所述内存分配请求包括起始地址和长度,以请求所述内存管理设备120为所述第一计算机分配该长度的内存空间。所述内存分配请求中的起始地址,为待分配内存空间的起始位置的物理地址。

具体地,所述第一计算机的UEFI BIOS在所述第一计算机启动时确定需要所述内存管理设备为所述第一计算机分配的内存空间的长度,并通过所述系统总线向所述内存管理设备发送所述内存分配请求。具体实现方式为:在所述第一计算机启动时,所述第一计算机的UEFI BIOS检查本计算机中的本地内存的长度(如16G),将预设的所述第一计算机需要使用的总内存空间的长度(如80G)与所述本地内存的长度的差值确定为需要内存管理设备120为所述第一计算机分配的内存空间的长度(如64G),生成如表1所示的物理地址空间表,并通过所述系统总线向内存管理设备120发送所述内存分配请求。

需要说明的是,所述第一计算机的UEFI BIOS运行在所述第一计算机的处理器上,即,所述第一计算机的处理器执行计算机程序实现所述UEFI BIOS的功能。用于实现UEFI BIOS功能的计算机程序存储在所述第一计算机的存储器(即本地内存)或BIOS芯片中。

内存管理设备120收到所述内存分配请求后,在所述至少一个内存池的第 一内存池中为所述第一计算机分配该长度的内存空间。所述内存空间包括至少一个连续的子内存空间,如果分配的内存空间包括两个以上子内存空间(如图3B所示),则所述两个以上子内存空间的总长度等于所述内存分配请求中的长度。另外,内存管理设备120还会将分配给所述第一计算机的内存空间标为已分配状态。当前处于已分配状态的内存空间不会被分配给其它计算机。

内存管理设备120在分配所述内存空间后记录用于标识所述第一计算机的计算机标识和所述内存空间的地址信息,所述内存空间的地址信息包括各子内存空间的起始位置的物理地址和该起始位置在所述第一内存池中的地址的映射关系。内存管理设备120还可以记录各子内存空间的长度。

如果分配的内存空间包括一个子内存空间(如图3A所示)。则相应地在内存分配表中增加一条记录,如表2A所示,在该记录中,该内存空间的起始位置的物理地址即为所述内存分配请求中的起始地址,长度即为所述内存分配请求中的长度。

表2A

如果分配的内存空间包括两个以上子内存空间(如图3B所示)。则相应地在所述内存分配表中增加两条以上记录,如表2B所示,在这两条以上记录中,分配的两个以上子内存空间的第一个子内存空间的起始位置的物理地址为所述内存分配请求中的起始地址,第N个子内存空间的起始位置的物理地址为第N-1个子内存空间的起始位置的物理地址和第N-1个子内存空间的长度的和(N>=1)。

表2B

所述内存分配表中记录的某个计算机的计算机标识用于唯一标识该计算机,具体可以是内存管理设备120上与该计算机连接的端口的端口号。

另外,当所述第一计算机关机时,会向内存管理设备120发送内存释放请求,内存管理设备120收到所述内存释放请求时会将分配给所述第一计算机的内存空间释放掉,并将其标为空闲状态。当前处于空闲状态的内存空间可以 被分配给任一计算机,如,在接收到与所述内存管理装置相连的第二计算机发送的内存分配请求时,从所述内存池中标为空闲状态的内存空间中为所述第二计算机分配内存空间。

如果系统100通过图2所示的结构实现,具体地,所述第一计算机将所述内存分配请求发送给内存交换机120-1。后续可以通过两种方式实现内存分配。

分配方式A:对应于前述实现方式A,内存交换机120-1指示与其连接的内存控制设备120-2在与其相连的内存池中分配所述长度的内存并接收内存控制设备120-2返回的分配的内存空间的信息(如地址信息、各子内存空间的长度等)后,并在内存分配表中记录所述第一计算机的计算机标识和所述内存空间的信息,记录的内容如上所述,不再赘述。

分配方式B:对应于前述实现方式B,内存交换机120-1将所述第一计算机的计算机标识添加到所述内存分配请求中,并向与其连接的内存控制设备120-2发送包括所述第一计算机的计算机标识的内存分配请求,以请求内存控制设备120-2为所述第一计算机分配内存。如果内存交换机120-1与不止一个内存控制设备120-2相连,则选择一个内存控制设备120-2,向选择的内存控制设备120-2发送所述内存分配请求。选择为所述第一计算机分配内存的内存控制设备的方式有多种,可以是随机选择一个内存控制设备120-2,也可以是 选择可用空间最大的内存池对应的内存控制设备120-2。为便于描述,后续将为所述第一计算机分配内存的内存控制设备120-2称为第一内存控制设备。所述第一内存控制设备收到所述内存分配请求后,在与其相连的内存池中为所述第一计算机分配所述内存空间。内存管理设备120在分配所述内存空间后在内存分配表中记录所述第一计算机的计算机标识和所述内存空间的信息,记录的内容如上所述,不再赘述。另外,内存交换机120-1还可以记录所述第一计算机的计算机标识和所述第一内存控制设备的设备标识的对应关系。

内存访问:

当所述第一计算机的操作系统要访问内存时,通过调用所述第一计算机的UEFI BIOS的接口向所述UEFI BIOS发送内存访问请求,以请求访问待访问内存空间,所述内存访问请求包括访问地址和访问长度,所述访问地址为所述待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度。在具体实现时,可以在UEFI BIOS中增加用于实现接收内存访问请求的接口,该接口的参数包括访问地址参数和访问长度参数,所述操作系统可以通过调用该接口向该UEFI BIOS发送该内存访问请求。

所述待访问内存空间的长度小于为所述第一计算机分配的内存空间的长度,所述待访问内存空间的长度的数量级通常为K,为所述第一计算机分配的 内存空间的长度的数量级通常为G。实际应用时所述待访问内存空间的长度一般为4K。

所述内存访问请求还包括访问类型以请求对所述待访问内存空间执行所述访问类型对应的访问操作。所述访问类型,具体可以是读或写,相应地,所述内存访问请求具体为读请求或写请求。如果是写请求,所述内存访问请求还包括待写入所述待访问内存空间的数据。

需要说明的是,所述第一计算机的操作系统运行在所述第一计算机的处理器上,即,所述第一计算机的处理器执行计算机程序实现所述操作系统的功能。用于实现操作系统功能的计算机程序存储在所述第一计算机的本地内存中。

所述UEFI BIOS根据所述访问地址判断所述待访问内存空间属于本地内存还是属于扩展内存。具体可以是根据所述第一计算机的物理地址空间表判断所述访问地址属于本地内存的物理地址范围还是属于扩展内存的物理地址范围,如果是属于本地内存的物理地址范围,则所述待访问内存空间属于本地内存,如果是属于扩展内存的物理地址范围,则所述待访问内存空间属于扩展内存。

如果属于本地内存,则所述UEFI BIOS直接根据所述访问地址和所述访问长度在本地内存中访问所述待访问内存空间;如果属于内存池,则所述UEFI BIOS通过所述系统总线向内存管理设备120发送所述内存访问请求以请求访问内存池中的所述待访问内存空间。

内存管理设备120确定所述第一内存池中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述第一内存池中的地址,并根据所述起始位置在所述第一内存池中的地址和所述访问长度访问所述待访问内存空间,如,读取所述待访问内存空间中的数据,或将所述内存访问请求中包括的数据写入所述待访问内存空间。如果所述内存访问请求具体为读请求,还将读取的数据通过所述系统总线返回给所述第一计算机,具体是返回给所述UEFI BIOS,所述UEFIBIOS将所述读取的数据发送给所述操作系统。

下面结合示例介绍所述起始位置在所述第一内存池中的地址的计算方式。

将包括所述待访问内存空间的子内存空间作为目标子内存空间。如果分配给所述第一计算机的内存空间只包括一个子内存空间,则所述子内存空间即为所述目标子内存空间;如果包括两个以上子内存空间,则根据所述访问地址和记录的各子内存空间的起始位置的物理地址确定所述待访问内存空间所属的子内存空间,将其作为所述目标子内存空间。

计算所述访问地址与所述目标子内存空间的起始位置的物理地址的第一差值,将所述目标子内存空间的起始位置在所述第一内存池中的地址和所述第一差值的和作为所述待访问内存空间的起始位置在所述第一内存池中的地址。

如,分配给所述第一计算机的内存空间包括1个子内存空间,长度为100,起始位置的物理地址为100,起始位置在所述第一内存池中的地址为200,当所述访问地址为110、所述访问长度为10时,计算出的所述第一差值为110-100=10,所述第二待访问内存空间的起始位置在所述第一内存池中的地址为200+10=210。

又如,分配给所述第一计算机的内存空间包括3个子内存空间,长度分别为50,起始位置的物理地址分别为100、150和200,起始位置在内所述第一内存池中的地址分别为200、300和500。当所述访问地址为160、所述访问长度为10时,所述待访问内存空间属于第二个子内存空间,计算出的所述第一差值为160-150=10,所述待访问内存空间的起始位置在所述第一内存池中的地址为300+10=310。

如果系统100通过图2所示的结构实现,具体地,所述内存访问命令是发送给内存交换机120-1的。后续可以通过两种方式实现内存访问。

访问方式A:对应于前述实现方式A,内存交换机120-1确定所述第一内存池中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述第一内存池中的地址,并指示内存控制设备120-2根据所述起始位置在所述第一内存池中的地址和所述访问长度访问所述待访问内存空间。具体可以是通过上述方式确定所述起始位置在所述第一内存池中的地址。

访问方式B:对应于前述实现方式B,内存交换机120-1根据与所述第一计算机所连接的端口确定发送所述内存访问请求的计算机为所述第一计算机,将所述第一计算机的计算机标识添加到所述内存访问请求中,并将携带所述计算机标识的所述内存访问请求发送给所述第一内存控制设备,所述第一内存控制设备根据所述计算机标识确定与其相连的内存池(即所述第一内存池)中的已分配给所述第一计算机的内存空间的地址信息,根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述第一内存池中的地址,并根据所述起始位置在所述第一内存池中的地址和所述访问长度访问所述待访问内存空间。具体可以是通过上述方式确定所述起始位置在所述第一内存池中的地址。如果所述内存访问请求具体为读请求,所述第一内存控制设备还将读取的数据和所述第一计算机的标识返回给内存交换机120-1,内存交换机120-1根据所述第一计算机的标识确定所述第一计算机,并通过与所 述第一计算机连接的端口将所述读取的数据返回给所述第一计算机。如果内存交换机120-1与两个以上内存控制设备120-2相连,则在向所述第一内存控制设备发送携带所述计算机标识的内存访问请求前,根据记录的所述第一计算机的计算机标识和所述第一内存控制设备的设备标识的对应关系确定需要将所述内存访问请求发送给所述第一内存控制设备。

根据本发明实施例1,计算机的操作系统可以通过UEFI BIOS访问内存,而不是通过处理器和内存之间的DIMM总线直接访问内存,而且,所述计算机的UEFI BIOS可以通过系统总线访问部署在所述计算机外部的内存池中的内存空间,因此,根据本发明实施例1提供的系统100中的计算机及其实现方法,该计算机可以使用计算机外部的内存池中的内存空间,从而解决了现有技术存在的内存空间不足的问题。另外,内存池中分配给某个计算机的内存空间释放后可以分配给其它计算机,因此多个计算机可以共享内存池,从而提升了内存利用率。

相应地,部署在内存管理设备(或具体部署在内存交换设备或内存控制设备)中的内存管理装置在接收到任一计算机发送的内存访问请求时,可以根据所述内存访问请求中的访问地址和访问长度定位到内存池中的待访问内存空间并执行访问操作,因此,通过该内存管理装置,任一计算机均可以访问到外部的内存池中分配给该计算机的内存空间,因此,根据本发明实施例1 提供的系统100中的内存管理设备中部署的内存管理装置,任一与其相连的计算机都可以使用该计算机外部的内存池中的内存空间,从而解决了现有技术存在的内存空间不足的问题。另外,内存池中分配给某个计算机的内存空间释放后可以分配给其它计算机,因此多个计算机可以共享内存池,从而提升了内存利用率。

参见图4,本发明实施例2提供了一种计算机200。计算机200通过系统总线与内存管理设备相连,所述内存管理设备与内存池相连,所述内存池包括多个存储器。

如图4所示,计算机200包括包括操作系统模块210和BIOS模块220,操作系统模块210用于实现计算机200的操作系统的功能,BIOS模块220用于实现计算机200的UEFI BIOS的功能。

操作系统模块210,用于通过调用BIOS模块220的接口向BIOS模块220发送内存访问请求,以请求访问待访问内存空间,所述内存访问请求包括访问地址和访问长度,所述访问地址为所述待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

BIOS模块220,用于根据所述访问地址确定所述内存访问请求所请求访问的内存空间(即所述待访问内存空间)属于所述内存池中为计算机200分 配的内存空间,如,根据物理地址空间表确定所述访问地址在所述内存池中为计算机200分配的内存空间的物理地址范围,所述物理地址空间表包括计算机200的本地内存的物理地址范围和所述内存池中为计算机200分配的内存空间的物理地址范围;还用于通过所述系统总线向所述内存管理设备发送所述内存访问请求以请求访问所述内存池中为计算机200分配的内存空间中的所述待访问内存空间。

BIOS模块220,还用于在计算机200启动时确定需要所述内存管理设备为计算机200分配的内存空间的长度,如,检查计算机200中的本地内存的长度,将预设的计算机200需要使用的总内存空间的长度与所述本地内存的长度的差值确定为需要所述内存管理设备为计算机200分配的内存空间的长度;并用于向所述内存管理设备发送包括所述长度的内存分配请求,以请求所述内存管理设备在所述内存池中为所述计算机分配所述长度的内存空间。

本发明实施例2提供的计算机200可以是本发明实施例1中的所述第一计算机,相应地,操作系统模块210用于实现所述第一计算机的操作系统的功能,BIOS模块220用于实现所述第一计算机的UEFI BIOS的功能。

根据本发明实施例2,计算机200的操作系统模块可以通过BIOS模块访问内存,而不是通过处理器和内存之间的DIMM总线直接访问内存,而且,计算机200的BIOS模块可以通过系统总线访问部署在计算机200外部的内存池中的内存空间,因此,根据本发明实施例2提供的计算机200,计算机200可以使用计算机200外部的内存池中的内存空间,从而解决了现有技术存在的 内存空间不足的问题。另外,内存池中分配给某个计算机200的内存空间释放后可以分配给其它计算机200,因此多个计算机200可以共享计算机200外部的内存池,从而提升了内存利用率。

参见图5A和5B,本发明实施例3提供了一种内存管理装置300。

如图5A所示,内存管理装置300包括:接收单元310、确定单元320和访问单元330。

接收单元310,用于接收第一计算机发送的内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

确定单元320,用于确定内存池中的已分配给所述第一计算机的内存空间的地址信息,并根据所述内存空间的地址信息和所述访问地址确定所述起始位置在所述内存池中的地址,所述内存池包括多个存储器;

访问单元330,用于根据所述起始位置在所述内存池中的地址和所述访问长度访问所述待访问内存空间。

如图5B所示,进一步地,内存管理装置300还可以包括分配单元340和记录单元350;分配单元340,用于在所述内存池中为所述第一计算机分配所述内存空间,所述内存空间包括至少一个连续的子内存空间;记录单元350,用于记录用于标识所述第一计算机的计算机标识和所述内存空间的地址信 息,所述内存空间的地址信息包括各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的映射关系;确定单元320,具体用于根据所述第一计算机的标识确定记录的分配给所述第一计算机的内存空间的地址信息,根据所述访问地址、以及记录的各子内存空间的起始位置的物理地址和该起始位置在所述内存池中的地址的的映射关系,确定所述待访问内存空间的起始位置在所述内存池中的地址。

分配单元340,还可以用于在接收单元310接收到所述第一计算机发送的内存释放请求时释放为所述第一计算机分配的内存空间,并将释放的所述内存空间标为空闲状态,在接收单元310接收到与所述内存管理装置相连的第二计算机发送的内存分配请求时,从所述内存池中标为空闲状态的内存空间中为所述第二计算机分配内存空间。

在具体实现时,内存管理装置300可以部署在实现内存访问的系统的内存管理设备中,所述系统还包括所述第一计算机,其中,所述第一计算机通过系统总线与所述内存管理设备相连,所述内存管理设备与所述内存池相连。

所述内存管理设备可以包括内存交换机和内存控制设备,所述内存交换机与所述内存控制设备相连,所述内存控制设备与所述内存池相连。

在一种实现方式中,内存管理装置300可以部署在所述内存交换机中,其中,访问单元330具体用于通过所述内存控制设备访问所述待访问内存空 间。

在另一种实现方式中,内存管理装置300部署在所述内存控制设备中,其中,接收单元310具体用于通过所述内存交换机接收所述第一计算机发送的所述内存访问请求,所述内存访问请求包括所述内存交换机添加的所述第一计算机的计算机标识;确定单元320用于确定内存池中的已分配给所述第一计算机的内存空间具体包括,确定单元320用于根据所述计算机标识确定分配给所述第一计算机的内存空间。

本发明实施例3提供的内存管理装置300可以部署在本发明实施例1中如图1A和1B所示的系统100的内存管理设备120中,可以部署在本发明实施例1中如图2所示的系统100的内存交换机120-1中,也可以部署在本发明实施例1中如图2所示的系统100的内存控制设备120-2中。

根据本发明实施例3,内存管理装置300在接收到任一计算机发送的内存访问请求时,可以根据所述内存访问请求中的访问地址和访问长度定位到内存池中的待访问内存空间并执行访问操作,因此,通过内存管理装置300,任一计算机均可以访问到外部的内存池中分配给该计算机的内存空间,因此,根据本发明实施例3提供的内存管理装置300,任一与其相连的计算机都可以使用该计算机外部的内存池中的内存空间,从而解决了现有技术存在的内存空间不足的问题。另外,内存池中分配给某个计算机的内存空间释放后可以 分配给其它计算机,因此多个计算机可以共享内存池,从而提升了内存利用率。

参见图6A和6B,本发明实施例4提供了一种内存交换机400,包括内存交换机400的实现内存访问的系统还包括至少两个计算机和内存控制设备,其中,各计算机分别通过系统总线与内存交换机400相连,内存交换机400与所述内存控制设备相连,所述内存控制设备与内存池相连,所述内存池包括多个存储器。

如图6A所示,内存交换机400包括:接收单元410、添加单元420和发送单元430。

接收单元410,用于接收所述至少两个计算机中的第一计算机发送的内存访问请求,所述内存访问请求用于请求访问待访问内存空间,包括访问地址和访问长度,所述访问地址为所述内存访问请求所请求访问的待访问内存空间的起始位置的物理地址,所述访问长度为所述待访问内存空间的长度;

添加单元420,用于根据与所述第一计算机所连接的端口确定发送所述内存访问请求的计算机为所述第一计算机,将用于标识所述第一计算机的计算机标识添加到所述内存访问请求中;

发送单元430,用于将携带所述计算机标识的内存访问请求发送给所述内 存控制设备,以使得所述内存控制设备根据所述计算机标识确定分配给所述第一计算机的内存空间,并访问所述内存空间中的所述待访问内存空间。

在具体实现时,所述系统可以包括两个以上内存控制设备,各内存控制设备分别和一个所述内存池相连。相应地,如图6B所示,内存交换机400还可以包括内存控制设备管理单元440。

所述内存控制设备管理单元,用于在接收单元410接收到所述第一计算机发送的内存分配请求时,选择所述至少两个内存控制设备中的第一内存控制设备为所述第一计算机分配所述内存空间,并记录所述第一计算机的计算机标识和所述第一内存控制设备的装置标识的对应关系;还用于根据所述对应关系确定需要将所述内存访问请求发送给所述第一内存控制设备。

本发明实施例4提供的内存交换机400具体可以是本发明实施例1提供的系统100的内存交换机120-1。

根据本发明实施例4,内存交换机400在接收到任一计算机发送的内存访问请求时,可以识别出该计算机,并将该计算机的计算机标识携带在所述内存访问请求中发送给管理内存池的内存控制设备,以使得所述内存控制设备根据所述计算机标识确定分配给所述第一计算机的内存空间,并访问所述内存空间中的待访问内存空间,因此,通过该内存管理装置,因此,根据本发明实施例4提供的内存交换机400,任一计算机均可以访问到外部的内存池中分配给该计算机的内存空间,从而解决了现有技术存在的内存空间不足的问题。另外,内存池中分配给某个计算机的内存空间释放后可以分配给其它计 算机,因此多个计算机可以共享内存池,从而提升了内存利用率。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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