CN113868155A - 一种内存空间扩展方法、装置及电子设备和存储介质 - Google Patents

一种内存空间扩展方法、装置及电子设备和存储介质 Download PDF

Info

Publication number
CN113868155A
CN113868155A CN202111438244.4A CN202111438244A CN113868155A CN 113868155 A CN113868155 A CN 113868155A CN 202111438244 A CN202111438244 A CN 202111438244A CN 113868155 A CN113868155 A CN 113868155A
Authority
CN
China
Prior art keywords
page table
virtual address
physical address
remote
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111438244.4A
Other languages
English (en)
Other versions
CN113868155B (zh
Inventor
刘伟
宿栋栋
沈艳梅
阚宏伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202111438244.4A priority Critical patent/CN113868155B/zh
Publication of CN113868155A publication Critical patent/CN113868155A/zh
Application granted granted Critical
Publication of CN113868155B publication Critical patent/CN113868155B/zh
Priority to PCT/CN2022/099646 priority patent/WO2023098032A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种内存空间扩展方法、装置及一种电子设备和计算机可读存储介质,应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;所述方法包括:接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若所述本机页表和所述远端页表中均不存在所述虚拟地址对应的页表项,则判断所述服务器是否存在未分配的物理地址;若所述服务器不存在未分配的物理地址,则基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。本申请解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。

Description

一种内存空间扩展方法、装置及电子设备和存储介质
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种内存空间扩展方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术
虚拟内存管理(Virtual Memory Management)技术将地址空间分成了虚拟地址和物理地址,内存管理单元(MMU,Memory Management Unit)用于实现虚拟地址与物理地址之间的转换。
在MMU工作的过程中,页表的维护/更新成为了系统中关键的一节。每个应用程序(进程)都有自己的页表,由操作系统在程序启动时创建。但这时页表中没有有效的表项(页表建立时就初始化所有的表项既浪费时间也浪费页表自身所占的内存空间),只有在应用程序真正访问某一地址时,相关的表项才会被操作系统中的缺页异常处理程序创建。
现代CPU一般是64位的,意味着虚拟地址的范围为0-0xFFFFFFFFFFFFFFFF。但物理地址的范围受到具体硬件的限制,单个服务器的物理地址一般在几十GB到几TB之间,远远小于虚拟地址空间,也即,单个服务器的物理地址空间无法满足虚拟地址空间的需要。
因此,如何解决单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题,是本领域技术人员需要关注的。
发明内容
本申请的目的在于提供一种内存空间扩展方法、装置及一种电子设备和一种计算机可读存储介质,解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。
为实现上述目的,本申请提供了一种内存空间扩展方法,应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;
所述方法包括:
接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;
若所述本机页表和所述远端页表中均不存在所述虚拟地址对应的页表项,则判断所述服务器是否存在未分配的物理地址;
若所述服务器不存在未分配的物理地址,则基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
其中,所述第一FPGA包括第一RDMA网卡模块,所述第二FPGA包括第二RDMA网卡模块,所述第一RDMA网卡模块与所述第二RDMA网卡模块之间通过网络连接。
其中,还包括:
若所述本机页表或所述远端页表存在所述虚拟地址对应的本机页表项或远端页表项,则基于所述本机页表项或所述远端页表项将所述虚拟地址转换为物理地址。
其中,还包括:
若所述服务器中存在未分配的物理地址,则基于所述服务器中未分配的物理地址创建所述虚拟地址对应的本机页表项。
其中,所述接收包含虚拟地址的访问指令之后,还包括:
对所述访问指令进行解析,以确定所述访问指令的指令类型;
若所述访问指令为数据搬移类指令,则根据数据搬移方向进行数据搬移;
若所述访问指令为计算类指令且包含计算数据时,则按照指令码对所述计算数据进行计算;
若所述访问指令为计算类指令且包含读取计算数据的源虚拟地址时,从所述本机页表或所述远端页表中查询所述源虚拟地址对应的源物理地址,从所述源物理地址读取计算数据后,按照指令码对所述计算数据进行计算。
其中,所述根据数据搬移方向进行数据搬移,包括:
若所述数据搬移方向为所述服务器向所述远端内存阵列设备、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
从所述服务器的第一物理地址中读取第一数据,并将所述第一数据发送至所述远端内存阵列设备,写入所述第二物理地址;
若所述数据搬移方向为所述远端内存阵列设备向所述服务器、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
向所述远端内存阵列设备发送内存读取指令,以从所述远端内存阵列设备中的第二物理地址读取第二数据,写入所述服务器的第一物理地址。
其中,所述按照指令码对所述计算数据进行计算之后,还包括:
若计算结果需要保存、所述访问指令包含保存计算结果的目的虚拟地址,则从所述本机页表或所述远端页表中查询所述目的虚拟地址对应的目的物理地址,将所述计算结果写入所述目的物理地址。
为实现上述目的,本申请提供了一种内存空间扩展装置,应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;
所述装置包括:
查询模块,用于接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若均不存在,则启动判断模块的工作流程;
所述判断模块,用于判断所述服务器是否存在未分配的物理地址;若不存在,则启动第一创建模块的工作流程;
所述第一创建模块,用于基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述内存空间扩展方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内存空间扩展方法的步骤。
通过以上方案可知,本申请提供的一种内存空间扩展方法应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;所述方法包括:接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若所述本机页表和所述远端页表中均不存在所述虚拟地址对应的页表项,则判断所述服务器是否存在未分配的物理地址;若所述服务器不存在未分配的物理地址,则基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
在本申请中,服务器包含第一FPGA,远端内存阵列设备包含第二FPGA,第一FPGA与第二FPGA连接以实现服务器访问远端内存阵列设备。在本机不存在未分配的物理地址时,可以将远端内存阵列设备中的物理地址进行分配。由此可见,本申请对单个服务器的物理地址空间进行扩展,解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。本申请还公开了一种内存空间扩展装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为本申请实施例提供的一种内存扩展系统的架构图;
图2为根据一示例性实施例示出的一种内存空间扩展方法的流程图;
图3为根据一示例性实施例示出的另一种内存空间扩展方法的流程图;
图4为MMU将虚拟地址转换为物理地址的示意图;
图5为根据一示例性实施例示出的又一种内存空间扩展方法的流程图;
图6为根据一示例性实施例示出的一种数据搬移类指令的处理流程图;
图7为根据一示例性实施例示出的一种计算类指令的处理流程图;
图8为根据一示例性实施例示出的一种内存空间扩展装置的结构图;
图9为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,在本申请实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了便于理解本申请提供的热点挖掘方法,下面对其使用的系统进行介绍。参见图1,其示出了本申请实施例提供的一种内存扩展系统的架构图,如图1所示,包括服务器和远端内存阵列设备,所述服务器包括CPU(中央处理器(central processing unit)芯片和第一FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列),所述远端内存阵列设备包括内存和第二FPGA,第一FPGA与第二FPGA连接。
在具体实施中,第一FPGA插入服务器的PCIE(peripheral componentinterconnect express,一种高速串行计算机扩展总线标准)插槽中,即将FPGA和外部总线通过PCIE桥连接,CPU可以通过外部地址总线-PCIE桥访问第一FPGA,第一FPGA可以通过PCIE桥-外部地址总线访问本机内存,本地内存包括多个DDR(双倍速率同步动态随机存取存储器,Double Data Rate SDRAM)内存条。远端的内存阵列设备中的内存和第二FPGA之间可以也通过PCIE连接。
优选的,所述第一FPGA包括处理器指令模块和第一RDMA(远程直接地址访问,Remote Direct Memory Access)网卡模块,所述第二FPGA包括第二RDMA网卡模块,所述第一RDMA网卡模块与所述第二RDMA网卡模块之间通过网络连接。在具体实施中,使用远端内存阵列作为扩展内存空间的物理载体,将远端内存阵列与本地服务器主机通过RDMA网卡相连,处理器指令模块用于基于CPU发出的访问指令进行远端内存的访问。处理器核产生虚拟地址首先通过内部总线传输至MMU,MMU将虚拟地址转换为物理地址,通过物理地址用外部总线访问内存。
在CPU发出地址访问相关的指令后,如果对应物理地址在远端内存阵列设备中,本地MMU必然会发生缺页异常。操作系统中的缺页异常处理程序会检查物理地址在本机还是远端,如果是远端,会查找或新建远端内存页表项,得到远端内存的物理地址。随后将具体的指令码传递给FPGA中的处理器指令处理模块,此模块在解析处理器指令和查找远端内存页表项后,会通过FPGA中的RDMA网卡模块访问远端内存,有必要的话还可以将指令结果保存到本机内存或处理器寄存器中。
目前最大容量的单根内存是128GB,一个CPU可以支持8个内存槽位,也就是最大支持1TB。单个NUMA系统的服务器可以支持多路CPU。如果是双路,则最大支持的内存会乘以2,最高是8路,也就是乘以8。即当前单机服务器最大支持8TB的内存。
本申请可以通过RDMA网络将物理内存扩展到多个远端内存阵列设备,理论上可以达到64位地址上限。但实际中的所谓64位CPU可能只支持48位的虚拟地址,在这里即使以48位计算,可扩展的地址空间也可以达到8T的32倍。
由此可见,在本申请中,工程师不需要改变程序架构就可以使需要超大物理地址空间的应用程序运行在单主机上,降低了应用程序设计的复杂度和开发维护成本。
本申请实施例公开了一种内存空间扩展方法,解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。
参见图2,根据一示例性实施例示出的一种内存空间扩展方法的流程图,如图2所示,包括:
S101:接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若所述本机页表或所述远端页表存在所述虚拟地址对应的本机页表项或远端页表项,则进入S102;若所述本机页表和所述远端页表均不存在所述虚拟地址对应的本机页表项或远端页表项,则进入S103;
本实施例的执行主体为上述实施例中介绍的服务器,如图3所示,其中的MMU接收到CPU发送的包含虚拟地址的访问指令时,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项,若存在,则进入S102,若否,则进入S103。
S102:基于所述本机页表项或所述远端页表项将所述虚拟地址转换为物理地址;
在本步骤中,若本机页表存在虚拟地址对应的本机页表项,则基于该本机页表项将所述虚拟地址转换为物理地址,若远端页表存在虚拟地址对应的远端页表项,则基于该远端页表项将所述虚拟地址转换为物理地址,访问指令发往外部总线。
如图4所示,描述了MMU使用一个一级页表进行虚拟地址到物理地址的转换。MMU会把处理器核发出的虚拟地址的前几位(具体是几位取决于CPU厂商或处理器实现标准)做为索引去查找页表,找到的页表项中存储的是相应物理地址页的起始地址,随后这个起始地址会被作为页框码和虚拟地址中的页内偏移量组合,成为物理地址。
S103:判断所述服务器是否存在未分配的物理地址;若是,则进入S104;若否,则进入S105;
在本步骤中,若本机页表不存在所述虚拟地址对应的本机页表项,远端页表也不存在虚拟地址对应的远端页表项,则进入缺页异常处理程序。在本实施例中,对现有技术中的操作系统中的缺页异常处理程序进行修改,在创建本机页表项前,判断服务器是否存在未分配的物理地址,也即判断访问指令对应的物理地址是否在服务器的内存中,若是,则进入S104,若否,则进入S105。
S104:基于所述服务器中未分配的物理地址创建所述虚拟地址对应的本机页表项;
S105:基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
在具体实施中,若服务器中存在未分配的物理地址,则基于服务器中未分配的物理地址创建虚拟地址对应的本机页表项,即建立虚拟地址与服务器中的物理地址之间的对应关系。若服务器中不存在未分配的物理地址,则基于远端内存阵列设备中的物理地址创建虚拟地址对应的远端内存页表项,即建立虚拟地址与远端内存阵列设备中的物理地址之间的对应关系,然后将访问指令经过PCIE通道发送至第一FPGA,由其中的处理器指令处理模块接收。
远端内存页表项的创建和查找方式与本机页表项类似,需要特别说明的是,如果服务器使用多个远端内存阵列设备,远端内存页表项中除了包含物理地址的值外,还需要有添加远端内存阵列设备的ID号进行区分。
在本申请实施例中,服务器包含第一FPGA,远端内存阵列设备包含第二FPGA,第一FPGA与第二FPGA连接以实现服务器访问远端内存阵列设备。在本机不存在未分配的物理地址时,可以将远端内存阵列设备中的物理地址进行分配。由此可见,本申请实施例对单个服务器的物理地址空间进行扩展,解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。
本申请实施例公开了一种内存空间扩展方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图5,根据一示例性实施例示出的又一种内存空间扩展方法的流程图,如图5所示,包括:
S201:接收访问指令;
S202:对所述访问指令进行解析,以确定所述访问指令的指令类型;
在本实施例中,第一FPGA中的处理器指令处理模块接收到处理器核发出的访问指令后,需要对其进行解析,以确定指令类型,再进一步处理,本实施例中指令类型可以包括数据搬移类和计算类。
S203:若所述访问指令为数据搬移类指令,则根据数据搬移方向进行数据搬移;
在具体实施中,如图6所示,若数据搬移方向为服务器向远端内存阵列设备,那么访问指令包含服务器中的源虚拟地址即第一虚拟地址,和远端内存阵列设备中的目的虚拟地址即第二虚拟地址,在本机页表中查询第一虚拟地址对应的第一物理地址,在远端页表中查询第二虚拟地址对应的第二物理地址,从服务器的第一物理地址中读取第一数据,并将第一数据发送至远端内存阵列设备,写入第二物理地址。若所述数据搬移方向为所述远端内存阵列设备向所述服务器,那么访问指令包含服务器中的目的虚拟地址即第一虚拟地址,和远端内存阵列设备中的源虚拟地址即第二虚拟地址,则在本机页表中查询第一虚拟地址对应的第一物理地址,在远端页表中查询第二虚拟地址对应的第二物理地址,向远端内存阵列设备发送内存读取指令,以从远端内存阵列设备中的第二物理地址读取第二数据,写入服务器的第一物理地址。
S204:若所述访问指令为计算类指令且包含计算数据时,则按照指令码对所述计算数据进行计算;
S205:若所述访问指令为计算类指令且包含读取计算数据的源虚拟地址时,从所述本机页表或所述远端页表中查询所述源虚拟地址对应的源物理地址,从所述源物理地址读取计算数据后,按照指令码对所述计算数据进行计算。
在具有实施中,若访问指令为计算类指令,则如图7所示,需要对其进一步分类,若其类型为先读取再计算即访问指令包含读取计算数据的源虚拟地址,则查询本机页表或远端页表。若源虚拟地址对应的源物理地址在服务器中,则通过PCIE从本地内存读取计算数据,若源虚拟地址对应的源物理地址在远端内存阵列设备中,则通过第一RDMA模块向第二RDMA模块发送RDMA_READ指令,从远端内存阵列设备读取计算数据。读取到计算数据后,按照CPU指令码对计算数据进行计算。若计算类指令的类型为直接计算即访问指令包含计算数据,则直接按照CPU指令码对计算数据进行计算。
作为一种优选实施方式,所述按照指令码对所述计算数据进行计算之后,还包括:若计算结果需要保存、所述访问指令包含保存计算结果的目的虚拟地址,则从所述本机页表或所述远端页表中查询所述目的虚拟地址对应的目的物理地址,将所述计算结果写入所述目的物理地址。
在具体实施中,若计算结果需要保存,那么访问指令包含保存计算结果的目的虚拟地址,查询本机页表或远端页表。若目的虚拟地址对应的目的物理地址在服务器中,则通过PCIE将计算结果写入本地内存,若目的虚拟地址对应的目的物理地址在远端内存阵列设备中,则通过第一RDMA模块向第二RDMA模块发送RDMA_WRITE指令,将计算结果写入远端内存阵列设备。
下面就以数据搬移操作为例,对于应用程序部分,直接调用memcpy函数即可,对应用程序透明,这个函数到处理器层面真正执行时,执行的是数据搬移指令,比如“mov指令”。
对于操作系统的缺页处理部分,如果发现源地址或目的地址不在本机内存,就将处理器指令码写入第一FPGA的执行接收寄存器,由第一FPGA中的处理器指令处理模块接收。
处理器指令处理模块查找页表后,如果发现处理器指令中的目的地址在远端内存阵列,源地址在本机内存,会进行如下操作。
1. 向FPGA中的RDMA网卡模块发出RDMA_WRITE指令。
2. 等待RDMA网卡处理完成。
下面对本申请实施例提供的一种内存空间扩展装置进行介绍,下文描述的一种内存空间扩展装置与上文描述的一种内存空间扩展方法可以相互参照。
参见图8,根据一示例性实施例示出的一种内存空间扩展装置的结构图,如图8所示,包括:
查询模块801,用于接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若均不存在,则启动判断模块802的工作流程;
所述判断模块802,用于判断所述服务器是否存在未分配的物理地址;若不存在,则启动第一创建模块803的工作流程;
所述第一创建模块803,用于基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
在本申请实施例中,服务器包含第一FPGA,远端内存阵列设备包含第二FPGA,第一FPGA与第二FPGA连接以实现服务器访问远端内存阵列设备。在本机不存在未分配的物理地址时,可以将远端内存阵列设备中的物理地址进行分配。由此可见,本申请实施例对单个服务器的物理地址空间进行扩展,解决了单个服务器的物理地址空间无法满足虚拟地址空间的需要的技术问题。
在上述实施例的基础上,作为一种优选实施方式,所述第一FPGA包括第一RDMA网卡模块,所述第二FPGA包括第二RDMA网卡模块,所述第一RDMA网卡模块与所述第二RDMA网卡模块之间通过网络连接。
在上述实施例的基础上,作为一种优选实施方式,还包括:
转换模块,用于若所述本机页表或所述远端页表存在所述虚拟地址对应的本机页表项或远端页表项,则基于所述本机页表项或所述远端页表项将所述虚拟地址转换为物理地址。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二创建模块,用于若所述服务器中存在未分配的物理地址,则基于所述服务器中未分配的物理地址创建所述虚拟地址对应的本机页表项。
在上述实施例的基础上,作为一种优选实施方式,还包括:
解析模块,用于对所述访问指令进行解析,以确定所述访问指令的指令类型;
数据搬移模块,用于若所述访问指令为数据搬移类指令,则根据数据搬移方向进行数据搬移;
第一计算模块,用于若所述访问指令为计算类指令且包含计算数据时,则按照指令码对所述计算数据进行计算;
第二计算模块,用于若所述访问指令为计算类指令且包含读取计算数据的源虚拟地址时,从所述本机页表或所述远端页表中查询所述源虚拟地址对应的源物理地址,从所述源物理地址读取计算数据后,按照指令码对所述计算数据进行计算。
在上述实施例的基础上,作为一种优选实施方式,所述数据搬移模块包括:
第一查询单元,用于若所述数据搬移方向为所述服务器向所述远端内存阵列设备、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
发送单元,用于从所述服务器的第一物理地址中读取第一数据,并将所述第一数据发送至所述远端内存阵列设备,写入所述第二物理地址;
第二查询单元,用于若所述数据搬移方向为所述服务器向所述远端内存阵列设备、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
读取单元,用于向所述远端内存阵列设备发送内存读取指令,以从所述远端内存阵列设备中的第二物理地址读取第二数据,写入所述服务器的第一物理地址。
在上述实施例的基础上,作为一种优选实施方式,还包括:
保存模块,用于若计算结果需要保存、所述访问指令包含保存计算结果的目的虚拟地址,则从所述本机页表或所述远端页表中查询所述目的虚拟地址对应的目的物理地址,将所述计算结果写入所述目的物理地址。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备,图9为根据一示例性实施例示出的一种电子设备的结构图,如图9所示,电子设备包括:
通信接口1,能够与其它设备比如网络设备等进行信息交互;
处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的内存空间扩展方法。而所述计算机程序存储在存储器3上。
当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统4。
本申请实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器3旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
处理器2执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种内存空间扩展方法,其特征在于,应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;
所述方法包括:
接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;
若所述本机页表和所述远端页表中均不存在所述虚拟地址对应的页表项,则判断所述服务器是否存在未分配的物理地址;
若所述服务器不存在未分配的物理地址,则基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
2.根据权利要求1所述内存空间扩展方法,其特征在于,所述第一FPGA包括第一RDMA网卡模块,所述第二FPGA包括第二RDMA网卡模块,所述第一RDMA网卡模块与所述第二RDMA网卡模块之间通过网络连接。
3.根据权利要求1所述内存空间扩展方法,其特征在于,还包括:
若所述本机页表或所述远端页表存在所述虚拟地址对应的本机页表项或远端页表项,则基于所述本机页表项或所述远端页表项将所述虚拟地址转换为物理地址。
4.根据权利要求1所述内存空间扩展方法,其特征在于,还包括:
若所述服务器中存在未分配的物理地址,则基于所述服务器中未分配的物理地址创建所述虚拟地址对应的本机页表项。
5.根据权利要求1所述内存空间扩展方法,其特征在于,所述接收包含虚拟地址的访问指令之后,还包括:
对所述访问指令进行解析,以确定所述访问指令的指令类型;
若所述访问指令为数据搬移类指令,则根据数据搬移方向进行数据搬移;
若所述访问指令为计算类指令且包含计算数据时,则按照指令码对所述计算数据进行计算;
若所述访问指令为计算类指令且包含读取计算数据的源虚拟地址时,从所述本机页表或所述远端页表中查询所述源虚拟地址对应的源物理地址,从所述源物理地址读取计算数据后,按照指令码对所述计算数据进行计算。
6.根据权利要求5所述内存空间扩展方法,其特征在于,所述根据数据搬移方向进行数据搬移,包括:
若所述数据搬移方向为所述服务器向所述远端内存阵列设备、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
从所述服务器的第一物理地址中读取第一数据,并将所述第一数据发送至所述远端内存阵列设备,写入所述第二物理地址;
若所述数据搬移方向为所述远端内存阵列设备向所述服务器、所述访问指令包含第一虚拟地址和第二虚拟地址,则在所述本机页表中查询所述第一虚拟地址对应的第一物理地址,在所述远端页表中查询所述第二虚拟地址对应的第二物理地址;
向所述远端内存阵列设备发送内存读取指令,以从所述远端内存阵列设备中的第二物理地址读取第二数据,写入所述服务器的第一物理地址。
7.根据权利要求5所述内存空间扩展方法,其特征在于,所述按照指令码对所述计算数据进行计算之后,还包括:
若计算结果需要保存、所述访问指令包含保存计算结果的目的虚拟地址,则从所述本机页表或所述远端页表中查询所述目的虚拟地址对应的目的物理地址,将所述计算结果写入所述目的物理地址。
8.一种内存空间扩展装置,其特征在于,应用于服务器,所述服务器包括第一FPGA,所述第一FPGA与远端内存阵列设备中的第二FPGA连接;
所述装置包括:
查询模块,用于接收包含虚拟地址的访问指令,查询本机页表和远端页表中是否存在所述虚拟地址对应的页表项;若均不存在,则启动判断模块的工作流程;
所述判断模块,用于判断所述服务器是否存在未分配的物理地址;若不存在,则启动第一创建模块的工作流程;
所述第一创建模块,用于基于所述远端内存阵列设备中的物理地址创建所述虚拟地址对应的远端内存页表项。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述内存空间扩展方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述内存空间扩展方法的步骤。
CN202111438244.4A 2021-11-30 2021-11-30 一种内存空间扩展方法、装置及电子设备和存储介质 Active CN113868155B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111438244.4A CN113868155B (zh) 2021-11-30 2021-11-30 一种内存空间扩展方法、装置及电子设备和存储介质
PCT/CN2022/099646 WO2023098032A1 (zh) 2021-11-30 2022-06-19 一种内存空间扩展方法、装置及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111438244.4A CN113868155B (zh) 2021-11-30 2021-11-30 一种内存空间扩展方法、装置及电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN113868155A true CN113868155A (zh) 2021-12-31
CN113868155B CN113868155B (zh) 2022-03-08

Family

ID=78985358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111438244.4A Active CN113868155B (zh) 2021-11-30 2021-11-30 一种内存空间扩展方法、装置及电子设备和存储介质

Country Status (2)

Country Link
CN (1) CN113868155B (zh)
WO (1) WO2023098032A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781323A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN115640241A (zh) * 2022-10-08 2023-01-24 中科驭数(北京)科技有限公司 基于地址池的内存转换表表项管理方法、查询方法及装置
WO2023098032A1 (zh) * 2021-11-30 2023-06-08 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116644006A (zh) * 2023-07-27 2023-08-25 浪潮电子信息产业股份有限公司 一种内存页面管理方法、系统、装置、设备及计算机介质
CN117112194A (zh) * 2023-04-23 2023-11-24 荣耀终端有限公司 一种内存扩展方法及相关设备
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116563089B (zh) * 2023-07-11 2023-10-13 南京砺算科技有限公司 一种图形处理器的内存管理方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419652A (zh) * 2008-08-22 2009-04-29 航天信息股份有限公司 一种软硬件结合的保护程序的方法
CN103019953A (zh) * 2012-12-28 2013-04-03 华为技术有限公司 一种元数据的构建系统及其方法
CN106487896A (zh) * 2016-10-14 2017-03-08 北京百度网讯科技有限公司 用于处理远程直接内存访问请求的方法和装置
WO2017181853A1 (zh) * 2016-04-20 2017-10-26 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
CN109684257A (zh) * 2018-12-24 2019-04-26 广东浪潮大数据研究有限公司 一种远程内存扩展管理系统
CN109815170A (zh) * 2017-11-22 2019-05-28 纬颖科技服务股份有限公司 数据冗余的处理方法及其相关电脑系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100349142C (zh) * 2004-05-25 2007-11-14 中国科学院计算技术研究所 一种用于虚拟共享存储系统的远程取页方法及网络接口卡
KR20120083160A (ko) * 2011-01-17 2012-07-25 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들, 및 이의 동작 방법
CN105335308B (zh) * 2014-05-30 2018-07-03 华为技术有限公司 对存储设备的访问信息处理方法和装置、系统
CN107203411B (zh) * 2017-04-18 2020-02-28 中国科学院计算技术研究所 一种基于远程ssd的虚拟机内存扩展方法及系统
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
CN113868155B (zh) * 2021-11-30 2022-03-08 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419652A (zh) * 2008-08-22 2009-04-29 航天信息股份有限公司 一种软硬件结合的保护程序的方法
CN103019953A (zh) * 2012-12-28 2013-04-03 华为技术有限公司 一种元数据的构建系统及其方法
WO2017181853A1 (zh) * 2016-04-20 2017-10-26 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
CN106487896A (zh) * 2016-10-14 2017-03-08 北京百度网讯科技有限公司 用于处理远程直接内存访问请求的方法和装置
CN109815170A (zh) * 2017-11-22 2019-05-28 纬颖科技服务股份有限公司 数据冗余的处理方法及其相关电脑系统
CN109684257A (zh) * 2018-12-24 2019-04-26 广东浪潮大数据研究有限公司 一种远程内存扩展管理系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
R. AMMENDOLA: "Virtual-to-Physical address translation for an FPGA-based interconnect with host and GPU remote DMA capabilities", 《IEEE》 *
刘美云等: "软件化雷达信息处理中心体系架构设计", 《现代导航》 *
荀长庆等: "共享存储可重构计算机软硬件通信的优化实现", 《计算机研究与发展》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023098032A1 (zh) * 2021-11-30 2023-06-08 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质
CN114781323A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN114781323B (zh) * 2022-04-24 2023-08-18 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN115640241A (zh) * 2022-10-08 2023-01-24 中科驭数(北京)科技有限公司 基于地址池的内存转换表表项管理方法、查询方法及装置
CN115640241B (zh) * 2022-10-08 2023-06-09 中科驭数(北京)科技有限公司 基于地址池的内存转换表表项管理方法、查询方法及装置
CN117112194A (zh) * 2023-04-23 2023-11-24 荣耀终端有限公司 一种内存扩展方法及相关设备
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116599892B (zh) * 2023-07-17 2023-10-03 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116644006A (zh) * 2023-07-27 2023-08-25 浪潮电子信息产业股份有限公司 一种内存页面管理方法、系统、装置、设备及计算机介质
CN116644006B (zh) * 2023-07-27 2023-11-03 浪潮电子信息产业股份有限公司 一种内存页面管理方法、系统、装置、设备及计算机介质
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质
CN117311817B (zh) * 2023-11-30 2024-03-08 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113868155B (zh) 2022-03-08
WO2023098032A1 (zh) 2023-06-08

Similar Documents

Publication Publication Date Title
CN113868155B (zh) 一种内存空间扩展方法、装置及电子设备和存储介质
US10067684B2 (en) File access method and apparatus, and storage device
US20210026555A1 (en) System startup method and apparatus, electronic device, and storage medium
TWI650644B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
CN100424657C (zh) 转换后备缓冲器的惰性转储清除
CN108664523B (zh) 一种虚拟磁盘文件格式转换方法和装置
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
CN112632069B (zh) 哈希表数据存储管理方法、装置、介质和电子设备
CN116431530B (zh) 一种cxl内存模组、内存的处理方法及计算机系统
CN101216781B (zh) 一种多处理器系统、装置及方法
US20220004488A1 (en) Software drive dynamic memory allocation and address mapping for disaggregated memory pool
US11656779B2 (en) Computing system and method for sharing device memories of different computing devices
CN112416819A (zh) 基于主机内存缓冲器的固态驱动器的实现方法及装置
CN110781107B (zh) 基于dram接口的低延迟融合io控制方法和装置
CN113297105B (zh) 一种转换地址的缓存处理方法及装置
CN115357540A (zh) 存储系统及其计算存储处理器、固体硬盘和数据读写方法
CN116414735A (zh) 数据存储方法、系统、存储访问配置方法及相关设备
WO2023235040A1 (en) File system improvements for zoned storage device operations
KR100832824B1 (ko) 시스템 제어 장치, 정보 처리 장치 및 입출력 요구 제어방법
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
CN115687185A (zh) 基于mmap内存映射的手持端低功耗数据采集方法
CN114063934A (zh) 数据更新装置、方法及电子设备
CN104424124A (zh) 内存装置、电子设备和用于控制内存装置的方法
CN110362509B (zh) 统一地址转换方法与统一地址空间
CN107870736B (zh) 支持大于4gb非线性闪存的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant