一种扩展内存的方法、装置及相关设备与流程

文档序号:33461768发布日期:2023-03-15 04:07阅读:24来源:国知局
一种扩展内存的方法、装置及相关设备与流程
一种扩展内存的方法、装置及相关设备
1.本技术要求于2021年09月11日提交中国国家知识产权局、申请号为202111064925.9、申请名称为“一种固态硬盘”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及存储技术领域,尤其涉及一种扩展内存的方法、装置及相关设备。


背景技术:

3.在大数据、人工智能等新型应用场景中,计算设备中内存的容量大小影响着应用的性能。通常情况下,计算设备中内存的容量越大,该内存中所能存储的数据量越多,从而计算设备上的应用从内存中访问到数据的概率较高,以此提高应用获取数据的效率。
4.由于在计算设备中直接堆叠多层内存或者增加多个内存条(物理内存),会使得扩容内存所需的成本过高,因此,通常将接入计算设备的固态硬盘(solid state disk,ssd)上的部分存储空间映射成计算设备的虚拟内存地址,以便基于较低的成本来获得比计算设备中物理内存容量更大的内存空间。这样,当计算设备中的处理器所访问的数据位于计算设备中的物理内存时,可以根据该数据在物理内存中的地址直接访问到其所需的数据。而当计算设备访问的数据位于虚拟内存地址时,则触发缺页中断,此时计算设备会将物理内存中部分当前不被访问的数据换出至其它位置(如换出至该固态硬盘等),以腾出空闲的内存空间,然后将处理器所需访问的数据从固态硬盘中换入至该空闲的物理内存空间,并通过再次访问物理内存以获得该数据。
5.但是,实际应用场景中,基于固态硬盘所映射得到的虚拟内存地址通常较大,这使得计算设备可能会频繁执行缺页中断以及数据的换入换出过程,从而影响处理器的数据访问性能,如计算设备访问得到数据的时延较高、资源消耗较大等。


技术实现要素:

6.本技术实施例提供了一种扩展内存的方法,以实现在扩展计算设备的内存后,避免处理器的数据访问性能降低。此外,本技术实施例还提供了一种扩展内存的装置、计算设备、计算机可读介质以及计算机程序产品。
7.第一方面,本技术实施例提供了一种扩展内存的方法,用于实现对计算设备的内存进行扩展,该计算设备包括处理器以及第一存储设备,并且,该第一存储设备包括第一存储介质以及第二存储介质,该第一存储介质的访问时延小于第二存储介质的访问时延,通常情况下,该第一存储介质的数据读写性能可以优于第二存储介质的数据读写性能。在扩展内存时,处理器获取该第一存储介质的物理地址以及第二存储介质的物理地址,并将该第一存储介质的物理地址映射成第一虚拟内存地址,以及将第二存储介质的物理地址映射成第二虚拟内存地址,其中,该第一虚拟内存地址以及第二虚拟内存地址能够直接被处理器访问,并且,处理器将热数据存储在第一虚拟内存地址指示的存储空间中,或者将冷数据
存储在第二虚拟内存地址指示的存储空间中。
8.如此,一方面,在利用第一存储介质和/或第二存储介质扩展计算设备的内存后,处理器能够直接访问该第一存储介质和/或第二存储介质,无需执行缺页中断以及数据换入换出等过程,从而可以有效避免处理器的数据访问性能降低。另一方面,存储设备中的多个存储介质的物理地址,均可以被映射成计算设备的内存,这相对于利用单个存储介质的物理地址来扩展计算设备的内存而言,可以最大化的利用存储设备的存储资源进行内存扩展,从而可以提高计算设备的内存扩展效果。而且,计算设备中扩展的第一虚拟内存地址与第二虚拟内存地址可以用于分别存储不同热度的数据,从而处理器在访问数据时,可以具有相对较大的几率从访问时延较小的(物理内存或者)第一存储介质中访问得到数据,从而使得计算设备的数据访问性能达到较高水平。
9.在一种可能的实施方式中,第一存储设备还包括第三存储介质,则处理器还可以基于该第三存储介质对计算设备进行内存扩展。具体实现时,处理器可以获取该第三存储介质的物理地址,并将该第三存储介质的物理地址映射成第三虚拟内存地址,并且处理器能够直接访问该第三虚拟内存。如此,可以利用第一存储设备中更多数量的存储介质来作为计算设备的扩展内存,从而可以进一步提高计算设备的内存扩展效果。
10.可选地,第二存储介质的访问时延小于该第三存储介质的访问时延。例如,第二存储介质为scm,第三存储介质为闪存等。
11.在一种可能的实施方式中,计算设备还包括第二存储设备,并且,计算设备不仅可以利用第一存储设备上的存储资源来扩展内存,还可以利用该第二存储设备上的存储资源来扩展内存。具体实现时,处理器可以获取该第二存储设备中的至少一个存储介质的物理地址,并将第二存储设备中的至少一个存储介质的物理地址映射成处理器可直接访问的虚拟内存地址。如此,可以利用多个存储设备上的存储资源来扩展计算设备的内存,从而可以进一步提高计算设备的内存扩展效果。
12.在一种可能的实施方式中,计算设备还包括物理内存,并且,该物理内存中存储的数据的热度,高于第一虚拟内存地址指示的存储空间所存储的数据的热度,从而后续处理器在访问数据时,可以具有相对较大的几率从访问时延更小的物理内存中访问得到数据,从而使得计算设备的数据访问性能达到较高水平。
13.在一种可能的实施方式中,处理器获取针对目标数据的访问请求,并且当该物理内存中不包括目标数据时,处理器根据该第一虚拟内存地址,从第一存储介质中查找目标数据。如此,处理器在读取数据时,可以优先从物理内存存储的热数据中查找数据,如果未查找到,则处理器再从第一虚拟内存地址指示的存储空间(也即第一存储介质上存储空间)所存储的数据中查找是否包括所要读取的数据,以此可以使得计算设备的数据访问性能达到较高的水平。
14.在一种可能的实施方式中,第一虚拟内存地址与第二虚拟内存地址具有不同的属性标识,并且,该属性标识用于指示存储介质的存储特性。例如,当第一存储介质为易失性存储介质而第二存储介质为非易失性存储介质时,其对应的属性标识可以用于指示第一虚拟内存地址对应的存储空间可以用于缓存数据,而第二虚拟内存地址对应的存储空间可以用于对数据进行持久化存储等。如此,计算设备可以根据实际应用的需求,将数据通过不同的虚拟内存地址进行存储。
15.在一种可能的实施方式中,第一存储介质可以是动态随机存取存储器(dram),第二存储介质可以是闪存(flash)。
16.第二方面,本技术实施例还提供了一种扩展内存的装置,用于执行第一方面中任意一种实现方式所描述的方法。
17.第三方面,本技术实施例还提供了一种计算设备,该计算设备包括存储器和处理器,所述处理器用于执行所述存储器中存储的指令,以执行第一方面中任意一种实现方式所描述的方法。
18.本技术第四方面提供一种计算机可读介质,所述计算机可读介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
19.本技术第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
21.图1为本技术实施例提供的一种计算设备110的结构示意图;
22.图2为本技术实施例提供的存储设备105的结构示意图;
23.图3为本技术实施例提供的一种扩展内存的方法流程示意图;
24.图4为本技术实施例提供的另一种存储设备105的结构示意图;
25.图5为本技术实施例提供的另一种计算设备110的结构示意图;
26.图6为本技术实施例提供的另一种扩展内存的方法流程示意图;
27.图7为根据多个物理地址映射得到两段虚拟内存地址的示意图;
28.图8为本技术实施例提供的一种扩展内存的装置结构示意图。
具体实施方式
29.本技术实施例提出了一种扩展内存的方法,以实现在扩展计算设备的内存后,避免处理器的数据访问性能降低。
30.图1为本技术实施例提供的一种计算设备的结构示意图,其中,计算设备可以采用全融合架构。图1所示全融合架构可以包括一个或多个计算设备110(图1中以包括三个计算设备110为例,实际应用时可以包括任意数量的计算设备110),各个计算设备110之间可以相互通信。计算设备110是一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。在软件上,每台计算设备110上具有操作系统。在计算设备110上可以创建虚拟机107,虚拟机107所需的计算资源来源于计算设备110本地的处理器112和内存113,而虚拟机107所需的存储资源可以来源于与计算设备110连接的存储设备105。此外,虚拟机107中可运行各种应用程序,用户可通过虚拟机107中的应用程序触发读/写数据请求。
31.在硬件上,如图1所示,计算设备110至少包括处理器112、内存113和存储设备105。进一步地,计算设备110还可以包括网卡114。处理器112、内存113、和网卡114之间通过计算设备110中的内部总线进行连接,存储设备105与计算设备100通过外部总线(如串行总线
等)进行连接。其中,处理器112和内存113用于提供计算资源。具体地,处理器112是一个中央处理器(central processing unit,cpu),用于处理来自计算设备110外部的数据访问请求,或者计算设备110内部生成的请求。示例性的,处理器112接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存113中。当内存113中的数据总量达到一定阈值时,处理器112将内存113中存储的数据发送给存储设备105进行存储。除此之外,处理器112还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、数据校验、虚拟化存储空间以及地址转换等。图1中仅示出了一个处理器112,在实际应用中,处理器112的数量往往有多个,其中,一个处理器112又具有一个或多个处理器核。本实施例不对处理器的数量,以及处理器核的数量进行限定。此外,处理器112也可以是特定集成电路(application specific integrated circuit,asic),或者是被配置成一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)。
32.内存113是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,rom)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,dram),或者存储级存储器(storage class memory,scm)。dram是一种半导体存储器,与大部分随机存取存储器(random access memory,ram)一样,属于一种易失性存储器(volatile memory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比dram慢,在成本上也比dram更为便宜。然而,dram和scm在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,prom)、可抹除可编程只读存储器(erasable programmable read only memory,eprom)等。另外,内存113还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,简称dimm),即由动态随机存取存储器(dram)组成的模块,还可以是固态硬盘(solid state disk,ssd)。实际应用中,计算节点110中可配置多个内存113,以及不同类型的内存113。本实施例不对内存113的数量和类型进行限定。此外,可对内存113进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存113中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
33.存储设备105用于提供存储资源,例如存储数据。在本技术实施例中,存储设备105可以用于为计算设备100扩展内存。它可以包括多种存储介质,例如磁盘、固态硬盘、叠瓦式磁记录硬盘、磁随机存储器等。网卡114用于支持计算设备110与其他计算设备110进行通信。
34.值得注意的是,图1所示的计算设备仅作为一种示例性说明,并不用于限定。比如,在其它可能的计算设备中,每台计算设备110上也可以不创建上述虚拟机107等。
35.本技术实施例中,存储设备105中至少包括两种存储介质。具体的,如图2所示,存储设备105中包括主控1051、存储介质1052、缓冲区1053以及存储介质1054。图2中以包括两种存储介质为例,实际应用时,存储设备105还可以包括更多类型的存储介质。其中,主控
1051包括驱动以及控制逻辑,用于控制实现针对存储介质1052以及存储介质1054的数据访问,包括向存储介质1052以及存储介质1054中写入新数据或者读取其已存储的数据等,并且,主控1051还可以控制实现存储设备105与处理器112之间的通信等。存储介质1052的数据读写性能优于存储介质1054的数据读写性能,具体为存储介质1052的访问时延小于存储介质1054的访问时延。比如,存储介质1052具体可以是dram,而存储介质1054具体可以是闪存(flash)或scm等。实际应用时,存储介质1052的存储空间可以小于存储介质1054的存储空间。缓冲区1053可以作为存储介质1054的读写缓冲,即对于计算设备110所要访问或者所要写入的数据,可以先将该数据放入该缓冲区1053中,然后再对缓冲区1053中的数据执行相应的数据读写操作。这样,缓冲区1053可以为计算设备110提供字节访问的能力(即能够以字节为单位进行数据读写),从而当存储介质1054中通过数据块的方式存储数据时,通过该缓冲区1053可以向计算设备110屏蔽存储介质1054的访问特性,如屏蔽存储介质1054的块访问特性等。
36.实际应用场景中,计算设备110中的内存有限,可能难以满足计算设备110上应用的性能。为此,本技术实施例中可以将存储设备105中的存储介质1052以及存储介质1054中的存储空间均扩展成计算设备110的虚拟内存,以实现对于计算设备110的内存扩容。具体实现时,计算设备110分别获取存储介质1052的物理地址,以及存储介质1054的物理地址。然后,计算设备110将存储介质1052的物理地址映射成为计算设备110的第一虚拟内存地址、将存储介质1054的物理地址映射成为计算设备110的第二虚拟内存地址。如此,可以实现对于计算设备110的内存扩容,并且,其增加的内存容量为第一虚拟内存地址以及第二虚拟内存地址对应的容量之和。
37.相应的,计算设备110中的处理器112在访问内存中的数据时,可以先确定内存113中是否存在其所需读取的数据。若存在,则处理器112直接从内存113中读取数据;而若不存在,则处理器112可以通过计算设备110与存储设备105之间的连接(如串行总线连接等),根据第一虚拟内存地址从存储介质1052中查找该数据。进一步地,若存储介质1052中不包括处理器112所需的数据,则处理器112可以根据第二虚拟内存地址,继续从存储介质1054中进行查找。
38.如此,一方面,在利用存储介质1052和/或存储介质1054扩展计算设备110的内存后,具体为处理器112基于其与存储设备105之间的连接,能够直接访问存储设备上的存储介质1052和/或存储介质1054,无需执行缺页中断以及数据换入换出等过程,从而可以有效避免处理器112的数据访问性能降低;并且,处理器112与存储设备105之间可以通过总线建立连接,从而在基于存储设备105扩展计算设备110的内存时,无需占用计算设备110中有限的内存插槽,从而在不增加内存插槽数量的情况下实现扩展计算设备110的内存。另一方面,存储设备105中的多个存储介质的物理地址,均可以被映射成计算设备110的内存,这相对于利用单个存储介质的物理地址来扩展计算设备110的内存而言,可以最大化的利用存储设备105的存储资源进行内存扩展,从而可以提高计算设备110的内存扩展效果。
39.进一步地,每个计算设备110可以同时包括多个存储设备105,例如该多个存储设备105可以构成阵列并配置于计算设备110等,从而每个计算设备110均可以同时利用多个存储设备105的存储资源对该计算设备110的内存进行扩展,即将多个存储设备105上的存储资源均作为计算设备110的虚拟内存资源,以此可以进一步增大计算设备110的内存容
量,提高扩展内存的效果。
40.为使本技术的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本技术实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
41.参阅图3,图3示出了本技术实施例中一种扩展内存方法的流程示意图,该方法可以应用于图1所示的计算设备,或者可以应用于其它可适用的计算设备中。为便于理解,本实施例中以利用一个存储设备105的存储资源为计算设备110扩展内存为例进行示例性说明。本实施例中的扩展内存的方法具体可以包括:
42.s301:存储设备105向处理器112上报存储介质1052的物理地址以及存储介质1054的物理地址。
43.在一种可能的实施方式中,在存储设备105接入计算设备110并且上电启动后,存储设备105中的主控1051可以通过与处理器112之间的连接,主动将存储介质1052以及存储介质1054分别在存储设备105上的物理地址发送给计算设备110。其中,该物理地址可以预先由技术人员配置于主控1051中,或者可以由主控1051自动采集得到。
44.或者,在其它可能的实现方式中,当计算设备110需要进行内存扩展时,处理器112可以向存储设备110发送获取存储设备105上的物理地址的请求,从而存储设备105响应该请求,将存储介质1052以及存储介质1054的物理地址发送给计算设备110。本实施例中,对于计算设备110获得物理地址的具体实现方式并不进行限定。
45.其中,存储介质1052以及存储介质1054可以是两种不同类型的存储介质,具体可以是存储介质1052的访问时延小于存储介质1054的访问时延。如,存储介质1052为dram,存储介质1054为闪存或者scm等。
46.作为一种实现示例,处理器112与存储设备105之间可以通过串行总线进行连接,并且该串行总线所采用的传输协议例如可以是开放式一致性加速处理器接口(open coherent accelerator processor interface,opencapi)协议、计算机高速互连(compute express link,cxl)协议以及z代(generation z,genz)协议中的任意一种,或者采用其它可适用的传输协议等,本实施例对此并不进行限定。如此,计算设备110中的处理器112可以基于该连接直接访问存储设备105中的存储介质。
47.s302:处理器112将存储介质1052的物理地址映射成计算设备110的第一虚拟内存地址,并将存储介质1054的物理地址映射成计算设备110的第二虚拟内存地址。
48.通常情况下,计算设备110中可以包括物理内存(如前述内存113),并且该物理内存的地址空间可以由内存管理单元进行管理。但是,实际应用时,该物理内存的容量有限,可能难以支持计算设备110的实际使用需求,如物理内存的容量难以支持计算设备110存储较多的业务数据等,从而对计算设备110访问以及处理业务数据的效率产生影响。因此,本实施例中,计算设备110基于存储设备105上的存储资源,实现对于计算设备110内存的扩容。
49.作为一种实现示例,计算设备110中的基本输入输出系统(basic input output system,bios)可以接收主控1051发送的两段地址空间(即存储设备1052的物理地址所指示的存储空间以及存储设备1054的物理地址所指示的存储空间),并将这两段地址空间发送
给计算设备110中的操作系统中的内存管理单元。然后,内存管理单元对存储设备1052的物理地址进行映射,得到计算设备110的第一虚拟内存地址,并生成第一虚拟内存地址对应的第一映射表,该第一映射表记录了第一虚拟内存地址与存储设备1052的物理地址之间的对应关系。同时,内存管理单元还对存储设备1054的物理地址进行映射,得到计算设备110的第二虚拟内存地址,并生成第二虚拟内存地址对应的第二映射表,该第二映射表记录了第二虚拟内存地址与存储设备1054的物理地址之间的对应关系。最后,内存管理单元可以将生成的第一映射表以及第二映射表通知给处理器112,以便后续处理器112根据该第一映射表和/或第二映射表对存储设备105中的存储介质进行数据访问。值得注意的是,本实施例中所提及的第一虚拟内存地址以及第二虚拟内存地址均是指包括多个地址的地址空间。
50.本实施例中,第一虚拟内存地址以及第二虚拟内存地址可以在计算设备110中相互独立,则内存管理单元可以基于这两个虚拟内存地址在计算设备110中创建两个独立的内存池。或者,内存管理单元可以将第一虚拟内存地址以及第二虚拟内存地址进行拼接,得到存储空间更大的虚拟内存地址。此时,内存管理单元可以在计算设备110中创建一个内存池,并且,所创建的内存池的内存容量即为第一虚拟内存地址以及第二虚拟内存对应的内存容量之和。实际应用时,内存管理单元可以创建两个独立的内存池,或者也可以创建一个内存池。当然,此处仅作为一种示例性说明说明,并不用于对内存管理单元创建内存池的实现方式进行限定。
51.如此,计算设备110的内存容量可以得到增加,并且,增加的内存容量即为第一虚拟内存地址以及第二虚拟内存地址对应的容量之和。这样,计算设备110不仅可以利用物理内存存储业务数据,还可以利用第一虚拟内存地址对应的存储介质1052以及第二虚拟内存地址对应的存储介质1054存储其它业务数据,从而可以增加计算设备110在内存中存储的业务数据的数据量,并且,利用存储设备105中多个存储介质的物理地址实现对于计算设备110的内存扩容,可以达到较高的内存扩展效果。实际应用时,当存储介质1052为易失性存储介质,存储介质1054为持久化存储介质时,计算设备110还可以将第一虚拟内存地址用于数据缓存,将第二虚拟内存地址用于数据存储,从而在扩展计算设备110的内存时,可以实现缓存空间与存储空间同时增长,如按比例增长等。
52.同时,由于计算设备110可以通过与存储设备105之间的连接,直接访问存储设备105中的存储介质1052和/或存储介质1054,因此,计算设备110访问存储设备105的速度,近似计算设备110访问物理内存的速度,从而在扩展计算设备110内存的情况下,能够避免计算设备110的数据访问性能降低。
53.s303:处理器112将热数据存储在第一虚拟内存地址指示的存储空间中,或者将冷数据存储在第二虚拟内存地址指示的存储空间中。
54.本实施例中,对于扩展的第一虚拟内存地址以及第二虚拟内存地址,可以用于存储特定热度的数据。比如,处理器112可以利用第一虚拟内存地址指示的存储空间存储热数据,此时,处理器112可以利用第二虚拟内存地址指示的存储空间存储热数据,也可以利用第二虚拟内存地址指示的存储空间存储热度较低的冷数据。或者,处理器112可以同时利用第一虚拟内存地址指示的存储空间以及第二虚拟内存地址指示的存储空间存储冷数据等,本实施例对此并不进行限定。其中,用于确定数据热度高低的具体实现方式,例如可以是根据数据的访问频次、热度标识等方式进行确定,本实施例对此并不进行限定。本实施例中的
热数据和冷数据是个相对的概念,换句话说,第一虚拟内存地址中存储的数据的热度大于第二虚拟内存地址中存储的数据的热度即可,并不绝对地将数据分为热数据和冷数据。
55.进一步地,在对计算设备110的内存进行扩展后,处理器112可以从物理内存或者虚拟内存地址对应的存储介质中访问得到其所需的数据(以下称之为目标数据)。具体地,当处理器112需要获取数据时,该方法还可以进一步包括:
56.s304:处理器112获取针对目标数据的访问请求。
57.示例性地,计算设备110上可以运行有一个或者多个应用程序,并且该应用程序在运行过程中可能需要访问已存储至计算设备110(或者存储设备105)的业务数据,如应用程序在运行过程中可能需要查询商品信息等业务数据。此时,应用程序可以生成针对目标数据的访问请求,并将其发送给计算设备110中的处理器112。
58.或者,处理器112可以在为应用程序提供业务服务的过程中,自动生成针对业务数据的访问请求,并基于该访问请求执行后续的数据访问过程。本实施例中对于处理器112获取访问请求的具体实现过程并不进行限定。
59.s305:处理器112响应该访问请求,确定物理内存中是否存储有所需访问的目标数据。
60.实际应用时,由于计算设备110从缓存(cache)中访问数据的效率通常较高,因此,计算设备110可以首先查询缓存中是否存储有该目标数据。如果有,则计算设备110可以直接从缓存中读取得到目标数据;如果没有,则计算设备110可以从内存(包括物理内存以及虚拟内存)中继续查找目标数据。
61.本实施例中,处理器112预先在内存中存储数据时,可以按照数据的热度高低确定数据的存储位置。作为一种示例,处理器112可以将热度最高的数据,优先存储于物理内存中,而将热度相对较低的数据,存储于虚拟内存地址对应的存储介质(包括存储介质1052和/或存储介质1054)。由于处理器112从物理内存中读取数据的速度相对较高,因此,当需要访问内存中的数据时,计算设备110优先从数据热度较高的物理内存中查找是否存储有目标数据。若物理内存中存储有该目标数据,则处理器112可以直接从该物理内存中读取出目标数据,如此,可以使得计算设备110访问数据的效率较高。而若物理内存中未存储有该目标数据,则处理器112可以继续执行步骤s305,以进一步查找目标数据。
62.s306:当物理内存中未存储目标数据时,处理器112根据第一虚拟内存地址,从存储介质1052中查找目标数据。
63.当处理器112需要读取数据时,处理器112可以根据第一虚拟内存地址,优先查找存储介质1052中是否具存储有其所需访问的目标数据,若存在,则处理器112直接读取存储介质1052中的目标数据。而若不存在,则计算设备110可以继续执行步骤s306,以进一步查找目标数据。
64.值得注意的是,上述实现方式仅作为一种示例性说明,本实施例对于存储介质1052以及存储介质1054中存储的数据热度高低并不进行限定。比如,存储介质1052以及存储介质1054均可以存储热数据或者冷数据等。
65.s307:当存储介质1052中未存储目标数据时,处理器112根据第二虚拟内存地址,从存储介质1054中查找目标数据。
66.作为一种实现示例,存储介质1054存储空间相对较大。这样,当存储介质1052中仍
然未存储有目标数据时,处理器112可以从存储空间更大的存储介质1054中继续查找数据。具体地,处理器112可以根据存储介质1054对应的第二虚拟内存地址,对存储介质1054进行访问,以获取存储介质1054中存储的数据。实际应用时,若存储介质1054中仍然未存储有目标数据,则处理器112可以反馈数据查找失败等。
67.需要说明的是,图3所示实施例中,存储设备105仅包括两个存储介质,而在其它可能的实施例中,存储设备105还可以包括三个以上(包括三个)存储介质,此时,处理器112可以利用存储设备105中三个以上的存储介质所具有的存储资源,实现内存扩展。
68.具体地,以存储设备105包括三种类型的存储介质为例,如图4所示,存储设备105中还包括存储介质1055。例如,存储设备105中可以包括dram、scm以及闪存,其中,存储介质1052具体为dram,存储介质1054具体为scm,存储介质1055具体为闪存等。则,存储设备105可以将存储介质1052的物理地址、存储介质1054的物理地址以及存储介质105的物理地址均上报给处理器112,这样,处理器112不仅可以基于存储介质1052的物理地址映射得到第一虚拟内存地址、基于存储介质1054的物理地址映射得到第二虚拟内存地址,还可以基于存储介质1055的物理地址映射得到计算设备110的第三虚拟内存地址,并且处理器112可以直接访问该第三虚拟内存地址指示的存储空间。如此,在图3所示实施例的基础上,可以进一步为计算设备110扩展内存,并且,进一步扩展的内存容量即为第三虚拟内存地址对应的内存容量。
69.值得注意的是,上述图3所述实施例中,是以利用一个存储设备中的存储资源为计算设备110扩展内存为例进行示例性说明,而在其它可能的实施例中,计算设备110可以基于多个存储设备105中的存储资源进行内存扩展,以此可以提高针对计算设备110的内存扩展效果。
70.下面,以利用两个存储设备为计算设备110扩展内存为例进行示例性说明。参见图5以及图6,其中,图5示出了另一种计算设备的结构示意图,在图5所示的计算设备110中,处理器112分别与存储设备105以及存储设备106进行连接,并且,处理器112基于该连接能够直接访问存储设备105以及存储设备106中的存储介质。图6示出了利用存储设备105以及存储设备106为计算设备110扩展内存的方法流程示意图。其中,与存储设备105类似,图5所示的存储设备106中,可以包括主控1061、存储介质1062、缓冲区1063以及存储介质1064。存储设备106中各个组成部分的具体实现及其功能,与存储设备105中相应组成部分类似,可参见前述相关之处描述,在此不做赘述。基于图5所示的计算设备,图6所示的扩展内存的方法包括:
71.s601:存储设备105向处理器112上报存储介质1052的物理地址1、存储介质1054的物理地址2;以及,存储设备106向处理器112上报存储介质1062的物理地址3、存储介质1064的物理地址4。
72.本实施例中,存储设备105以及存储设备106分别向处理器112上报物理地址的具体实现过程,可以参见前述实施例中的相关之处描述,在此不做赘述。
73.s602:处理器112将存储设备105以及存储设备106上报的物理地址,映射成相应的虚拟内存地址。
74.本实施例中,处理器112可以针对多个存储设备分别上报的物理地址,映射成计算设备110的虚拟内存地址,以此实现对于计算设备110的内存扩展。
75.在一种实现示例中,处理器112可以针对不同存储设备上的物理地址分别进行虚拟内存地址的映射,并且,不同物理地址所映射得到的虚拟内存地址在处理器112中相互独立。此时,处理器112可以通过创建多个内存池,分别对映射得到的多个虚拟内存地址进行管理。相应的,处理器112可以生成多个映射表,用于记录多个物理地址分别对应的虚拟内存地址。其中,处理器112将各个物理地址映射成单独的虚拟内存地址的具体实现方式,可以参见前述实施例中的相关之处描述,在此不做赘述。
76.而在另一种实现示例中,处理器112可以将多个存储设备上的物理地址,映射成连续的虚拟内存地址。例如,假设存储设备105中存储介质1052的物理地址1为64m(兆)、存储介质1054的物理地址2为1024m,存储设备106中存储介质1062的物理地址3为64m、存储介质1064的物理地址4为1024m,则,处理器112可以基于这4个物理地址,映射得到2176m(即64m+1024m+64m+1024m)的连续虚拟内存地址。具体的,处理器112可以基于存储介质1052对应的64m的物理地址1,映射得到64m的虚拟内存地址1,获得该虚拟内存地址1的首地址a以及内存空间长度(即64m)。然后,在将存储介质1054的物理地址2映射成虚拟内存地址2的过程中,处理器112可以根据虚拟内存地址1的首地址a以及内存空间长度,计算得到虚拟内存地址1的末地址b,并对该末地址b进行加1后得到一个新地址(b+1),该新地址即为虚拟内存地址2的首地址,虚拟内存地址2的长度为物理地址2的长度,从而根据首地址(b+1)以及虚拟内存地址2的长度可以计算出虚拟内存地址2的末地址c。类似地,处理器112对末地址c进行加1后得到物理地址3对应的虚拟内存地址3的首地址(c+1),并基于该首地址(c+1)确定虚拟内存地址3的。以此类推,处理器112可以依次确定出物理地址4对应的虚拟内存地址4对应的首地址(d+1)以及末地址e,从而基于存储设备105以及存储设备106上的存储资源,可以映射得到首地址为a、末地址为e的连续虚拟内存地址[a,e]。其中,该连续的虚拟内存地址[a,e]中的虚拟内存地址[a,b]为物理地址1对应的虚拟内存地址1、虚拟内存地址[a,e]中的虚拟内存地址[b+1,c]为物理地址2对应的虚拟内存地址2、虚拟内存地址[a,e]中的虚拟内存地址[c+1,d]为物理地址3对应的虚拟内存地址3、虚拟内存地址[a,e]中的虚拟内存地址[d+1,e]为物理地址4对应的虚拟内存地址4。此时,处理器112可以创建一个内存池,用于对映射得到的连续的虚拟内存地址进行管理,并为该连续的虚拟内存地址生成相应的映射表,以记录多个物理地址分别对应的虚拟内存地址。
[0077]
实际应用场景中,存储设备105中的存储介质1052以及存储介质1054可能属于不同类型的存储介质,如存储介质1052为易失性存储介质(电源关闭后难以保存数据),而存储介质1054为易失性存储介质(电源关闭后可以保存数据)。因此,在进一步可能的实施方式中,处理器112可以基于存储介质所属的类型,创建相应数量的内存池,并且,每个内存池用于管理同一类型的多个存储介质对应的连续的虚拟内存地址。
[0078]
举例来说,假设上述示例中存储介质1052以及存储介质1062均为易失性存储介质(如两个存储介质均为dram等),存储介质1054以及存储介质1064均为非易失性存储介质(如两个存储介质均为闪存),则处理器112在映射得到虚拟内存地址的过程中,可以基于多个存储介质分别所属的类型,映射得到两段虚拟内存地址,分别为虚拟内存地址m以及虚拟内存地址n,如图7所示。其中,虚拟内存地址m基于易失性存储介质进行地址映射得到,虚拟内存地址n基于非易失性存储介质进行地址映射得到。具体实现时,处理器112可以基于物理地址1映射得到首地址为m1为虚拟内存地址m

,该虚拟内存地址m

的当前长度为物理地
址1的长度,即64m,末地址为m2。然后,由于存储介质1054与存储介质1052属于不同的存储介质,因此,处理器112可以基于物理地址2映射得到首地址为n1的虚拟内存地址n

,该虚拟内存地址n

的当前长度为物理地址2的长度,即1024m,末地址为n2。接着,由于存储介质1062与存储介质1052属于同一类型的存储介质,则处理器112可以对虚拟内存地址m

当前的末地址m2进行加1,并将得到的新地址(m2+1)作为物理地址3对应的虚拟内存地址3的首地址,完成针对物理地址3的地址映射,以此映射得到虚拟内存地址m,并且该虚拟内存地址m的首地址为m1,长度为128m(即64m+64m)。如此,处理器112可以将两段独立的物理地址1以及物理地址3映射成一段连续的虚拟内存地址m。类似地,当针对物理地址4进行地址映射时,处理器可以对虚拟内存地址n

当前的末地址n2进行加1,并将得到的新地址(n2+1)作为物理地址4对应的虚拟内存地址4的首地址,完成针对物理地址4的地址映射,以此映射得到虚拟内存地址n,并且该虚拟内存地址n的首地址为n1,长度为2048m(即1024m+1024m)。如此,处理器112可以将两段独立的物理地址2以及物理地址4映射成一段连续的虚拟内存地址n。
[0079]
进一步地,处理器112还可以对不同类型的存储介质所映射得到的不同虚拟内存地址添加属性标识,以便标识实现该虚拟内存地址的存储介质的存储特性。示例性地,存储介质的存储特性例如可以包括易失性或者非易失性等,或者可以根据存储介质的数据读写性能划分为高性能读写与低性能读写等。仍以上述虚拟内存地址m与虚拟内存地址n为例,处理器112可以为映射得到虚拟内存地址m添加易失性存储介质的标签,用于指示虚拟内存地址m具有易失性的存储特性;同时,处理器112对映射得到虚拟内存地址n添加非易失性存储介质的标签,用于指示虚拟内存地址n具有非易失性的存储特性(数据可持久化存储)。应理解,当处理器112连接更多数量的存储设备时,处理器112可以基于该上述扩展内存的方式,从虚拟内存地址m和/或虚拟内存地址n的末地址开始,继续对其它存储设备上的物理地址进行地址映射,本实施例对此不再进行赘述。
[0080]
进一步地,当处理器112接入新的存储设备时,处理器112可以参照上述类似过程,基于新接入的存储设备上的存储资源为处理器112进一步增加内存,例如可以是从上述虚拟内存地址m和/或虚拟内存地址n的末地址处继续进行地址映射等。如此,可以实现针对处理器112的内存的动态扩容。
[0081]
而当处理器112与已接入的存储设备失去连接时,如处理器112与该存储设备之间的通信链路发生故障或者断开等,处理器112可以解除该存储设备中存储介质的物理地址在虚拟内存地址中的映射,例如可以从生成的映射表中删除虚拟内存与该存储设备上的物理地址之间的映射关系,以此实现内存的动态缩减。
[0082]
实际应用场景中,用于扩展处理器112内存的多个存储设备可以构成存储阵列,如独立硬盘冗余阵列(redundant array of independent disks,raid)等。则,在一种实现示例中,该多个存储设备在存储数据时,可以采用raid 0或者raid 5等方式存储数据。当然,也可以采用其它方式存储数据等,本实施例对此并不进行限定。
[0083]
s603:处理器112获取针对目标数据的访问请求。
[0084]
s604:处理器112响应该访问请求,确定物理内存中是否存储有所需访问的目标数据。
[0085]
s605:当物理内存中未存储目标数据时,处理器112根据映射得到的虚拟内存地
址,确定存储设备105是否存储有目标数据。
[0086]
具体实现时,处理器112可以根据虚拟内存地址,先查找存储设备105中的存储介质1052中是否存储有目标数据,如果有,则处理器112可以直接读取该存储介质1052中存储的目标数据。而若没有,则处理器112可以继续查找存储设备105中的存储介质1054中是否存储有目标数据。如果有,则处理器112可以直接读取该存储介质1054中存储的目标数据。如果没有,则处理器112可以确定存储设备105中未存储有目标数据。
[0087]
s606:当存储设备105未存储目标数据时,处理器112根据映射得到的虚拟内存地址,确定存储设备106是否存储有目标数据。
[0088]
具体实现时,处理器112可以根据虚拟内存地址,先查找存储设备106中的存储介质1062中是否存储有目标数据,如果有,则处理器112可以直接读取该存储介质1062中存储的目标数据。而若没有,则处理器112可以继续查找存储设备106中的存储介质1062中是否存储有目标数据。如果有,则处理器112可以直接读取该存储介质1064中存储的目标数据。如果存储介质1064中仍然没有目标数据,则处理器112可以反馈数据查找失败,或者继续从其它用于扩展计算设备110内存的存储设备中进行数据查找等。
[0089]
本实施例中,步骤s603至步骤s606的具体实现过程,与前述实施例中的相关步骤实现类似,具体可参见前述实施例的相关之处描述,在此不做赘述。
[0090]
在进一步可能的实施方式中,处理器112基于多个存储设备上的存储资源,可以构建大容量的逻辑单元号(logical unit number,lun)。并且,处理器112可以通过预取数据的方式,如将虚拟内存地址n中存储的数据预取至虚拟内存地址m等,加速处理器112的数据读取、降低数据读取时延,以此可以提升lun的性能。
[0091]
本实施例中,是以存储设备106也具有两个不同的存储介质为例进行示例性说明,在其它可能的实施方式中,在利用存储设备105中的存储介质1052以及存储介质1054为计算设备110扩展内存的基础上,也可以仅利用存储设备106中的存储介质1062或者仅利用存储介质1064为计算设备110扩展内存,本实施例对此并不进行限定。
[0092]
以上结合图1至图7对本技术中垃圾回收装置和方法进行介绍,接下来结合附图对本技术的装置及设备进行介绍。
[0093]
本技术实施例还提供了一种扩展内存的装置。参阅图8,示出了本技术实施例中一种扩展内存的装置的结构示意图,图8所示装置800可以应用于计算设备中的处理器,如前述实施例中的处理器112等,该计算设备还包括第一存储设备,并且,该第一存储设备包括第一存储介质和第二存储介质,第一存储介质的访问时延小于所述第二存储介质的访问时延,该装置800可以包括:
[0094]
获取模块801,用于获取所述第一存储介质的物理地址;获取所述第二存储介质的物理地址;
[0095]
映射模块802,用于将所述第一存储介质的物理地址映射成第一虚拟内存地址,所述第一虚拟内存地址可直接被所述处理器访问;将所述第二存储介质的物理地址映射成第二虚拟内存地址,所述第二虚拟内存地址可直接被所述处理器访问;
[0096]
存储模块803,用于将热数据存储在所述第一虚拟内存地址指示的存储空间中,或者将冷数据存储在所述第二虚拟内存地址指示的存储空间中。
[0097]
在一种可能的实施方式中,所述第一存储设备还包括第三存储介质;
[0098]
所述获取模块801,还用于获取所述第三存储介质的物理地址;
[0099]
所述映射模块802,还用于将所述第三存储介质的物理地址映射成第三虚拟内存地址,所述第三虚拟内存地址可直接被所述处理器访问。
[0100]
在一种可能的实施方式中,所述计算设备还包括第二存储设备;
[0101]
所述获取模块801,还用于获取所述第二存储设备中的至少一个存储介质的物理地址;
[0102]
所述映射模块802,还用于将所述至少一个存储介质的物理地址映射成所述处理器可直接访问的虚拟内存地址。
[0103]
在一种可能的实施方式中,所述计算设备还包括物理内存,所述物理内存中存储的数据的热度,高于所述第一虚拟内存地址指示的存储空间所存储的数据的热度。
[0104]
在一种可能的实施方式中,所述获取模块801,还用于获取针对目标数据的访问请求;
[0105]
所述装置还800包括:
[0106]
查找模块804,用于当所述物理内存中不包括所述目标数据时,根据所述第一虚拟内存地址,从所述第一存储介质中查找所述目标数据。
[0107]
在一种可能的实施方式中,所述第一虚拟内存地址与所述第二虚拟内存地址具有不同的属性标识,所述属性标识用于指示存储介质的存储特性。
[0108]
在一种可能的实施方式中,所述第一存储介质包括动态随机存取存储器dram,所述第二存储介质包括闪存。
[0109]
本技术实施例的装置可对应于执行本技术实施例中描述的方法。并且,扩展内存的装置800中的各个模块的上述和其它操作和/或功能分别为了实现图3以及图6中的各个方法的相应流程。以上各个模块的功能可参考图3以及图6所示的方法实施例中的描述。扩展内存的装置800中每个模块的功能均可由上述图3以及图6所示的处理器112执行。
[0110]
本技术实施例还提供一种计算机可读介质,所述计算机可读介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
[0111]
本技术实施例还提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
[0112]
另外需说明的是,以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
[0113]
本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。
[0114]
本领域普通技术人员可以理解,前述的计算机可读存储介质包括:u盘、移动硬盘、磁碟、光盘、ram、ssd或者非易失性存储器(non-volatile memory)等各种可以存储程序代
码的非短暂性的(non-transitory)机器可读介质。
[0115]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1