一种内存访问方法与计算机系统与流程

文档序号:11950056阅读:161来源:国知局
一种内存访问方法与计算机系统与流程

本发明涉及数据存储领域,尤其涉及一种内存访问方法与计算机系统。



背景技术:

一般的计算机系统中,内存由动态随机存取存储器(DRAM,Dynamic Random Access Memory)组成。DRAM具有较大的容量和较高的读写速度,能够满足计算机系统对内存的要求。由于DRAM使用电容存储,因此为了保证数据不丢失,在运行时需要保证持续的供电和刷新,进而产生大量的功耗。数据统计结果显示,使用DRAM的内存功耗约占计算机系统整体功耗的30%。

现阶段的技术提出了一种新型存储器:存储级存储器(SCM,Storage Class Memory)。SCM是一种非易失、可随机读写的存储器,可以代替DRAM作为内存使用。且由于SCM在运行时无需不断刷新,因而可以减少因刷新而产生的功耗。故现阶段的技术中采用大量的SCM与少量的DRAM作为计算机系统的混合内存结构,已达到DRAM级别的高读写速度与SCM级别的低内存功耗。

但是,SCM的价格较高,实际应用中使用大量的SCM作为内存将产生高昂的成本,不适宜混合内存结构的计算机系统的大规模的普及应用。



技术实现要素:

本发明实施例提供了一种内存访问方法,用于在节约内存成本的基础上,实现降低计算机系统的内存功耗。

本发明实施例的第一方面提供了一种内存访问方法,所述方法由计算机系统中的中央处理器CPU来执行,所述计算机系统包括中央处理器CPU以及内存,其中,所述内存包括动态随机存取存储器DRAM与存储级存储器SCM,所述SCM的存储容量小于所述DRAM的存储容量,所述方法包括:

当所述SCM处于关闭状态且所述DRAM处于开启状态时,确定所述计算机系统的负载状态;

若所述计算机系统处于低负载状态,则开启所述SCM,并将所述DRAM中的数据写入所述SCM;

当将所述DRAM中的数据写入所述SCM后,关闭所述DRAM。

结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,所述方法还包括:

当所述SCM处于开启状态且所述DRAM处于关闭状态时,确定所述计算机系统的负载状态;

若所述计算机系统处于高负载状态,则开启所述DRAM,并将所述SCM中的数据写入所述DRAM;

在将所述SCM中的数据写入所述DRAM后,关闭所述SCM。

结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述确定所述计算机系统的负载状态包括:

获取所述CPU当前的使用率;

若所述CPU当前的使用率低于预设的第一使用率,则确定所述计算机系统当前处于低负载状态;

若所述CPU当前的使用率高于预设的第二使用率,则确定所述计算机系统当前处于高负载状态。

结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第三种实现方式中,所述确定所述计算机系统的负载状态包括:

获取所述内存的被访问频率;

若所述内存的被访问频率低于预设的第一频率,则确定所述计算机系统处于低负载状态;

若所述内存的被访问频率高于预设的第二频率,则确定所述计算机系统当前处于高负载状态。

结合本发明实施例的第一方面、第一方面的第一种至第三种实现方式中的任一项,本发明实施例的第一方面的第四种实现方式中,所述将所述DRAM中的数据写入所述SCM包括:

确定预设时间段内所述DRAM中被访问的数据;

将所述确定的被访问的数据写入所述SCM。

结合本发明实施例的第一方面的第一种至第四种实现方式中的任一项,本发明实施例的第一方面的第五种实现方式中,所述确定所述计算机系统的负载状态包括:

当所述SCM处于关闭状态且所述DRAM处于开启状态,且当前时刻属于预设的低负载时段时,确定所述计算机系统的负载状态;

或,当所述SCM处于开启状态且所述DRAM处于关闭状态,且当前时刻属于预设的高负载时段时,确定所述计算机系统的负载状态。

本发明实施例的第二方面提供了一种计算机系统,所述计算机系统包括中央处理器CPU以及内存,其中,所述内存包括动态随机存取存储器DRAM与存储级存储器SCM,其中,所述SCM的存储容量小于所述DRAM的存储容量,其中,所述CPU具体用于:

当所述SCM处于关闭状态且所述DRAM处于开启状态时,确定所述计算机系统的负载状态;

若所述计算机系统处于低负载状态,则开启所述SCM,并将所述DRAM中的数据写入所述SCM;

当将所述DRAM中的数据写入所述SCM后,关闭所述DRAM。

结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,所述CPU还用于:

当所述SCM处于开启状态且所述DRAM处于关闭状态时,确定所述计算机系统的负载状态;

若所述计算机系统处于高负载状态,则开启所述DRAM,并将所述SCM中的数据写入所述DRAM;

在将所述SCM中的数据写入所述DRAM后,关闭所述SCM。

结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第二种实现方式中,在确定所述计算机系统的负载状态的操作中,所述CPU具体用于:

获取所述CPU当前的使用率;

若所述CPU当前的使用率低于预设的第一使用率,则确定所述计算机系统当前处于低负载状态;

若所述CPU当前的使用率高于预设的第二使用率,则确定所述计算机系统当前处于高负载状态。

结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第三种实现方式中,在确定所述计算机系统的负载状态的操作中,所述CPU具体用于:

获取所述内存的被访问频率;

若所述内存的被访问频率低于预设的第一频率,则确定所述计算机系统处于低负载状态;

若所述内存的被访问频率高于预设的第二频率,则确定所述计算机系统当前处于高负载状态。

结合本发明实施例的第二方面、第二方面的第一种至第三种实现方式中的任一项,本发明实施例的第二方面的第四种实现方式中,在将所述DRAM中的数据写入所述SCM的操作中,所述CPU具体用于:

确定预设时间段内,所述DRAM中被访问的数据;

将所述被访问的数据写入所述SCM。

结合本发明实施例的第二方面的第一种至第四种实现方式中的任一项,本发明实施例的第二方面的第五种实现方式中,在确定所述计算机系统的负载状态的操作中,所述CPU具体用于:

当所述SCM处于关闭状态且所述DRAM处于开启状态,且当前时刻属于预设的低功耗时段时,确定所述计算机系统的负载状态;或,

当所述SCM处于开启状态且所述DRAM处于关闭状态,且当前时刻属于预设的高功耗时段时,确定所述计算机系统的负载状态。

本发明实施例提供了一种内存访问方法,适用于计算机系统,其中,计算机系统包括CPU及内存,内存包括DRAM与SCM,且SCM的存储容量小于DRAM的存储容量。该方法包括:当SCM处于关闭状态且DRAM处于开启状态时,确定计算机系统的负载状态;若计算机系统处于低负载状态,则开启SCM,并将DRAM中的数据写入SCM;当将DRAM中的数据写入SCM后,关闭DRAM。由于本发明实施例提供的方法中大量使用了DRAM,而使用了较少的SCM,且仅在计算机系统处于低负载状态时,将SCM作为 内存使用,这样就可以在计算机系统处于高负载状态时,使用DRAM作为内存以满足高负载计算机系统对容量和速度的需求。在计算机系统处于低负载状态时,使用SCM作为内存以减少内存刷新造成的功耗。本发明实施例提供的方法仅需要在混合内存结构的计算机系统部署少量的SCM,使得具有大量DRAM以及少量的SCM的混合内存结构的计算机系统能够在节约内存成本的基础上,实现降低计算机系统的内存功耗,有利于混合内存结构的计算机系统的大规模普及。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例中的附图。

图1为本发明实施例提供的一种计算机系统的结构示意图;

图2为本发明实施例内存访问方法一个实施例流程图;

图3为本发明实施例内存访问方法另一个实施例流程图。

具体实施方式

本发明实施例提供了一种内存访问方法,用于降低计算机系统的内存功耗。本发明实施例还提供了相关的计算机系统,以下将分别进行描述。

动态随机存取存储器(DRAM,Dynamic Random Access Memory)具有较大的存储容量与较快的读写速度,因此作为一种最为常见的系统内存被广泛使用。DRAM使用电容存储,只能将数据保持很短的时间。为了保持数据,必须每隔一段时间刷新一次,否则存储的数据就会丢失。

存储级存储器(SCM,Storage Class Memory),如相变存储器(PCM,Phase Change Memory)等是一种新型的存储器,具有非易失、可随机读写等优点。与DRAM相比,SCM无需不间断的刷新,因此能够节约大量的刷新功耗。但是现阶段的SCM的读写速度要慢于DRAM。

本发明实施例提供的一种的计算机系统的基本架构请参阅图1,包括中央处理器(CPU,Central Processing Unit)101与内存102,CPU负责对内存进 行读写等控制操作。其中内存包括大量的DRAM 1021与SCM 1022,可以理解的,SCM 1022的存储容量小于DRAM 1021的存储容量。其中,CPU 101对SCM 1022或DRAM 1021的开启、关闭等控制操作可以通过内存控制器实现,此处不做限定。其中,计算机系统可以为个人电脑、服务器或其他设备,此处不做限定。由于本发明实施例中计算机系统的混合内存中部署了大量的DRAM与少量的SCM,因此与现阶段的技术在计算机系统的混合内存中部署大量的SCM相比,本发明实施例中的计算机系统的混合内存的成本较低。

在图1所示的计算机系统的基础上,本发明实施例提出一种新的内存访问方法,可以适用于大量的DRAM与少量的SCM组成的混合内存结构的计算机系统中。该方法可以由图1所示的计算机系统中的CPU 101来执行,其基本流程请参阅图2,包括:

201、当SCM处于关闭状态且DRAM处于开启状态时,确定计算机系统的负载状态;

当SCM处于关闭状态且DRAM处于开启状态,即计算机系统将DRAM作为内存使用时,CPU确定计算机系统的负载状态。其中,计算机的负载状态包括高负载状态与低负载状态,也可以包括其它状态,本实施例中不做限定。

其中,确定计算机系统的负载状态的方法有很多,将在后面的实施例中详述,本申请中不做限定。

202、若计算机系统处于低负载状态,则开启SCM,并将DRAM中的数据写入SCM;

若CPU确定当前处于低负载状态,则认为当前系统的负载较低,SCM能够满足系统的读写要求,于是CPU控制开启SCM,并控制将DRAM中的数据写入SCM。

其中,由于DRAM的存储容量大于SCM的存储容量,因此DRAM中的数据有可能不能完全写入SCM。此时可以将DRAM中的部分数据写入SCM,具体方法将在后面的实施例中详述,此处不做限定。

203、当将DRAM中的数据写入SCM后,关闭DRAM。

在DRAM中的数据写入SCM中后,CPU控制关闭DRAM,将SCM作 为计算机系统的内存使用。

本发明实施例中,CPU对SCM或DRAM的开启、关闭等控制操作可以通过内存控制器实现,此处不做限定。

本实施例提供的方法在SCM处于关闭状态且DRAM处于开启状态时,确定计算机系统的负载状态;若计算机系统处于低负载状态,则开启SCM,并将DRAM中的数据写入SCM;当将DRAM中的数据写入SCM后,关闭DRAM。由于本发明实施例提供的方法中大量使用了DRAM,而使用了较少的SCM,且仅在计算机系统处于低负载状态时,将SCM作为内存使用,这样就可以在计算机系统处于高负载状态时,使用DRAM作为内存,能够满足高负载计算机系统对容量和速度的需求;在计算机系统处于低负载状态时,使用SCM作为内存,能够减少内存刷新造成的功耗。由于当计算机系统处于低负载状态时,少量SCM即可满足系统对内存的读写要求,因此本实施例提供的方法仅需要在混合内存结构的计算机系统部署少量的SCM,使得具有大量DRAM以及少量的SCM的混合内存结构的计算机系统能够在节约内存成本的基础上,实现降低计算机系统的内存功耗,有利于混合内存结构的计算机系统的大规模普及。

图2所示的实施例提供了一种基本的内存访问方法,可以在计算机系统处于低负载状态时将内存由DRAM切换到SCM。但当计算机系统将SCM作为内存使用时,若负载变高,则少量的SCM将不再能满足计算机系统的要求。因此本发明实施例在图2所示的实施例的基础上还提供了另一种内存访问方法,能够在计算机系统处于高负载状态时将内存由SCM切换到DRAM,其流程请参阅图3:

301、当SCM处于关闭状态且DRAM处于开启状态时,确定计算机系统的负载状态;

302、若计算机系统处于低负载状态,则开启SCM,并将DRAM中的数据写入SCM;

303、当将DRAM中的数据写入SCM后,关闭DRAM;

步骤301至303与步骤201至203基本相同,此处不做赘述。

304、当SCM处于开启状态且DRAM处于关闭状态时,确定计算机系统 的负载状态;

当SCM处于开启状态且DRAM处于关闭状态,即计算机系统将SCM作为内存使用时,CPU确定计算机系统的负载状态。

305、若计算机系统处于高负载状态,则开启DRAM,并将SCM中的数据写入DRAM;

306、在将SCM中的数据写入DRAM后,关闭所述SCM。

在将SCM中的数据写入DRAM后,CPU控制关闭SCM,将DRAM作为内存使用。这样就实现了在计算机系统将SCM作为内存使用但负载过高时,将内存由SCM切换到DRAM。

本实施例在图2所示的实施例的基础上提供了一种更进一步的内存访问方法,不仅能够在计算机系统处于低负载状态时将内存由DRAM切换到SCM,还能够在计算机系统处于高负载状态时将内存由SCM切换到DRAM,使得计算机系统能够根据当前的负载状态自由的进行内存切换,选择更为贴近当前负载状态的内存。

在步骤301与304中,CPU确定计算机系统的负载状态的方法有很多。例如,一种情况下,CPU可以获取当前的CPU使用率,若使用率低于预设的第一使用率,则确定计算机系统当前处于低负载状态;若使用率高于预设的第二使用率,则确定计算机系统当前处于高负载状态。优选的,第一使用率可以小于或等于第二使用率。另一种情况下,CPU可以获取内存(包括DRAM或SCM)当前的被访问频率,若内存的被访问频率低于预设的第一频率,则确定计算机系统当前处于低负载状态;若内存的被访问频率高于预设的第二频率,则确定计算机系统当前处于高负载状态。优选的,第一频率可以小于或等于第二频率。

在步骤302中CPU控制将DRAM中的数据写入SCM。但是由于本发明实施例中DRAM的存储容量要大于SCM的存储容量,因此DRAM中的数据有可能不能完全的写入SCM中。此时可以制定写入规则来选取写入SCM中的数据。例如,一种规则中,CPU可以确定预设时间段内(如最近的两小时内)DRAM中被访问的数据,然后将确定的被访问的数据写入SCM。另一种规则中,CPU可以确定DRAM中的热点数据,并将确定的热点数据写入SCM。 CPU还可以通过其他方法来确定写入SCM的数据,本发明实施例中不做限定。

在实际应用时,在步骤302中,CPU可以将DRAM中待写入SCM的目标数据的逻辑地址告知内存控制器,由内存控制器来进行目标数据的迁移。内存控制器中有保存了逻辑地址和物理地址的映射关系的页表,页表中还包括标志位,用于标识每个物理地址是DRAM中的地址还是SCM中的地址。内存控制器接受CPU发送的目标数据的逻辑地址后,根据页表查找到这些目标数据的物理地址,进而可以将这些目标数据写入SCM中。在完成了将DRAM中的目标数据写入SCM后,由于目标数据的物理地址发生了变化,内存控制器还应该更新页表,将这些目标数据的物理地址更新为其所在SCM中的地址。可以理解的,页表中目标数据的标志位也应该做相应的更新。可以理解的,CPU将SCM中的数据写入DRAM的方法与此类似。

对于有些计算机系统,如大型服务器来说,其负载状态往往与时间有关,如服务器在白天业务一般会较多,导致负载较高;而夜晚业务则会较少,使得负载较低。故优选的,本发明实施例中还可以预设高负载时段与低负载时段,且步骤301中,仅在当前时刻属于预设的低负载时段时,触发当SCM处于关闭状态且DRAM处于开启状态时,确定计算机系统的负载状态的步骤,若计算机系统处于低负载状态,则进行后续的由DRAM到SCM的切换。若当前时刻属于高负载时段,则说明当前时刻计算机系统负载较高,应使用DRAM作为内存,无需进行DRAM到SCM的切换。同理的,步骤304中,CPU可以仅在当前时刻属于预设的高负载时段时,触发当SCM处于开启状态且DRAM处于关闭状态时,确定计算机系统的负载状态的步骤。

为了便于理解上述实施例,下面将以上述实施例的一个具体的应用场景为例进行描述。

请仍参阅图1,某服务器由CPU 101和内存102组成,其中内存包括大量的DRAM 1021和少量的SCM 1022。CPU 101中预设有高负载时段8:00AM~20:00PM,以及低负载时段20:00PM~8:00AM(第二天)。

在某天20:00PM,该服务器的CPU 101检测到当前已由高负载时段进入了低负载时段,并确定当前SCM 1022处于关闭状态,服务器使用DRAM 1021 作为内存,于是CPU 101检测CPU 101当前的使用率。

CPU 101检测到CPU 101当前的使用率为10%,且CPU 101中预设有高低负载状态的使用率临界值15%,由于10%小于15%,故CPU 101确定服务器当前处于低负载状态。

CPU 101确定最近三小时内DRAM 1021中被访问的数据,并开启SCM1022,指示内存控制器将这些数据写入到SCM 1022中。

在将最近三小时内DRAM 1021中被访问的数据写入到SCM 1022中后,CPU 101关闭DRAM 1021,将SCM 1022作为内存使用。

在第二天8:00AM时,该服务器的CPU 101检测到当前已由低负载时段进入了高负载时段,并确定当前DRAM 1021处于关闭状态,服务器使用SCM1022作为内存,于是CPU 101检测CPU 101当前的使用率。

CPU 101检测到CPU 101当前的使用率为20%,由于20%大于15%,故CPU 101确定服务器当前处于高负载状态。

CPU 101开启DRAM 1021,并指示内存控制器将SCM 1022中的数据写入到DRAM 1021中。

在将SCM 1022中的数据写入到DRAM 1021中后,CPU 101关闭SCM1022,将DRAM 1021作为内存使用。

本发明实施例还提供了相关的计算机系统,用于实现上述内存访问方法。其基本结构如图1所示,主要包括CPU 101以及内存102,其中内存包括DRAM 1021与SCM 1022,且SCM 1022的存储容量小于DRAM的存储容量。其中,CPU 101对SCM 1022或DRAM 1021的开启、关闭等控制操作可以通过内存控制器实现,此处不做限定。其中,CPU 101具体用于执行如下步骤:

当SCM 1022处于关闭状态且DRAM 1021处于开启状态时,确定计算机系统的负载状态;

若计算机系统处于低负载状态,则开启SCM 1022,并将DRAM 1021中的数据写入SCM 1022;

当将DRAM 1021中的数据写入SCM 1022后,关闭DRAM 1021。

本实施例提供的计算机系统中,CPU 101在SCM 1022处于关闭状态且DRAM 1021处于开启状态时,确定计算机系统的负载状态;若计算机系统处 于低负载状态,则开启SCM 1022,并将DRAM 1021中的数据写入SCM 1022;当将DRAM 1021中的数据写入SCM 1022后,关闭DRAM 1021。由于本发明实施例提供的计算机系统中大量使用了DRAM 1021,而使用了较少的SCM1022,且仅在计算机系统处于低负载状态时,将SCM 1022作为内存使用,这样就可以在计算机系统处于高负载状态时,使用DRAM 1021作为内存,能够满足高负载计算机系统对容量和速度的需求;在计算机系统处于低负载状态时,使用SCM 1022作为内存,能够减少内存刷新造成的功耗。由于当计算机系统处于低负载状态时,少量SCM 1022即可满足系统对内存的读写要求,因此本实施例中的具有大量DRAM以及少量的SCM的混合内存结构的计算机系统能够在节约内存成本的基础上,实现降低计算机系统的内存功耗,有利于混合内存结构的计算机系统的大规模普及。本发明的一些实施例中,CPU101还用于执行如下步骤:

当SCM 1022处于开启状态且DRAM 1021处于关闭状态时,确定计算机系统的负载状态;

若计算机系统处于高负载状态,则开启DRAM 1021,并将SCM 1022中的数据写入DRAM 1021;

在将SCM 1022中的数据写入DRAM 1021后,关闭SCM 1022。

本实施例中的计算机系统不仅能够在处于低负载状态时将内存由DRAM1021切换到SCM 1022,还能够在处于高负载状态时将内存由SCM 1022切换到DRAM 1021,使得计算机系统能够根据当前的负载状态自由的进行内存切换,选择更为贴近当前负载状态的内存。

CPU 101确定计算机系统的负载状态的方法有很多。例如,一种情况下,CPU 101可以获取当前的CPU使用率,若使用率低于预设的第一使用率,则确定计算机系统当前处于低负载状态;若使用率高于预设的第二使用率,则确定计算机系统当前处于高负载状态。优选的,第一使用率可以小于或等于第二使用率。另一种情况下,CPU 101可以获取内存(包括DRAM 1021或SCM 1022)当前的被访问频率,若内存的被访问频率低于预设的第一频率,则确定计算机系统当前处于低负载状态;若内存的被访问频率高于预设的第二频率,则确定计算机系统当前处于高负载状态。优选的,第一频率可以小 于或等于第二频率。

在CPU 101控制将DRAM 1021中的数据写入SCM 1022时,由于本发明实施例中DRAM 1021的存储容量要大于SCM 1022的存储容量,因此DRAM1021中的数据有可能不能完全的写入SCM 1022中。此时可以制定写入规则来选取写入SCM 1022中的数据。例如,一种规则中,CPU 101可以确定预设时间段内(如最近的两小时内)DRAM 1021中被访问的数据,然后将确定的被访问的数据写入SCM 1022。一种规则中,CPU 101可以确定DRAM 1021中的热点数据,并将确定的热点数据写入SCM 1022。CPU 101还可以通过其他方法来确定写入SCM 1022的数据,本发明实施例中不做限定。

对于有些计算机系统,如大型服务器来说,其负载状态往往与时间有关,如服务器在白天业务一般会较多,导致负载较高;而夜晚业务则会较少,使得负载较低。故优选的,本发明实施例中CPU 101还可以预设高负载时段与低负载时段,且仅在当前时刻属于预设的低负载时段时,触发当SCM 1022处于关闭状态且DRAM 1021处于开启状态时,确定计算机系统的负载状态的步骤,若计算机系统处于低负载状态,则进行后续的由DRAM 1021到SCM1022的切换。若当前时刻属于高负载时段,则说明当前时刻计算机系统负载较高,应使用DRAM 1021作为内存,无需进行DRAM 1021到SCM 1022的切换。同理的,CPU 101可以仅在当前时刻属于预设的高负载时段时,触发当SCM 1022处于开启状态且DRAM 1021处于关闭状态时,确定计算机系统的负载状态的步骤。

本实施例提供的计算机系统,具有大量DRAM以及少量的SCM的混合内存结构,能够在节约内存成本的基础上,实现降低计算机系统的内存功耗的目的。有利于混合内存结构的计算机系统的大规模普及。

本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读 介质。

需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

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