具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1描述了本发明一个实施例提供的计算机系统的结构,如图1所示,具体包括:
CPU101:本发明实施例中所提到的CPU(Central Processing Unit,中央处理器)是处理器的一种,处理器还可以是ASIC(Application Specific Integrated Circuit,应用特定集成电路),或者其它是被配置成实施本发明实施例的一个或多个集成电路,本领域技术人员可以理解的是,处理器的其它实现方式也可以替代本发明实施例中的CPU。
内存控制器102:内存控制器是计算机系统内部控制内存模块(或称之为内存)并且通过内存控制器使内存与处理器之间交换数据的重要组成部分。内存控制器决定了计算机系统所能使用的最大内存容量、内存BANK数、内存类型和速度、内存颗粒数据深度和数据宽度等等重要参数,也就是说决定了计算机系统的内存性能,从而也对计算机系统的整体性能产生较大影响。目前比较流行的是将内存控制器嵌入到CPU中,但也可以将内存控制器与CPU独立实现,本发明对内存控制器102和CPU101的连接形式不做限制。
内存系统103:内存系统中通常包括多个内存模块(或称之为内存芯片),内存模块是一种能够实现存储功能的硬件模块,一个或多个内存模块通过内存通道与内存控制器连接,进而与CPU连接,从而实现被CPU所访问。本发明中,内存模块包括DRAM内存模块104和NVM内存模块105,即内存系统103包括DRAM内存模块104和NVM内存模块105。
DRAM内存模块104:DRAM为最常见的内存芯片,DRAM只能将数据保持很短的时间,DRAM芯片的电荷会随着时间而慢慢流失,为了保持数据,DRAM内存模块使用电容存储,每隔一段时间刷新一次。
NVM内存模块105:NVM(Non-Volatile Memory,非易失性存储器)是另一种可做内存芯片的存储颗粒,不同于DRAM的特性,关机或掉电之后NVM中存储的数据不会丢失,比如基于PCM(Phase-Change Memory,相变存储)的PCRAM(Phase-Change Random Memory,相变随机存储器)技术,其读写速度虽然比DRAM慢,但是具有非易失、低功耗等特点。
由于内存系统的功耗从组成上来看,分为静态功耗和动态功耗。静态功耗是指内存模块在空闲情况下消耗的功耗,主要包括漏电功耗、刷新功耗等;动态功耗是指内存模块被访问时消耗的功耗,包括内存芯片的功耗、row buffer的功耗及I/O gating的功耗等。因此,本发明基于上述DRAM内存模块和NVM内存模块各自的特点,提出基于DRAM内存模块和NVM内存模块的混合内存系统,该混合内存系统在保证了内存系统性能的同时,能够有效的降低内存系统的功耗。
图2为本发明实施例提供的一种降低内存系统功耗的方法的流程图,本实施例的执行主体为内存控制器。如图2所示,本实施例的方法具体包括:
S201:判断内存系统中是否存在访问频度低的DRAM内存模块。
进一步,在判断内存系统中是否存在访问频度低的DRAM内存模块之前,还包括:
监控该内存系统中内存模块的使用状态,该内存模块包括NVM模块和DRAM模块,该内存模快的使用状态包括该内存模块是否被访问以及被访问的频率;
判断该内存系统中是否存在访问频度低的DRAM内存模块包括:根据该被访问的频率确定该内存系统中是否存在访问频度低的DRAM内存模块。
S202:在存在访问频度低的DRAM内存模块时,根据该内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块,其中,该工作集之外的页面数据为预定时间内进程运行所无需访问的页面数据。
具体的,所述根据内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块,包括:
在所述工作集的大小不超过预设功耗调节的阈值时,内存控制器将所述工作集之外的页面数据转移到所述NVM。其中,预设功耗调节的阈值的确定方法为:确定NVM内存模块的性能和功耗比、以及DRAM内存模块的性能和功耗比;确定页面数据在DRAM内存模块和NVM内存模块中转移的开销、以及更新数据位置映射表的开销;根据所述NVM内存模块的性能和功耗比、DRAM内存模块的性能和功耗比、页面数据在DRAM内存模块和NVM内存模块中转移的开销、更新数据位置映射表的开销、以及内存请求访问的模式,确定该预设功耗调节的阈值。
进一步,在根据内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块之前,还包括:
根据该工作集的大小将DRAM内存模块划分为高性能DRAM区域和低功耗DRAM区域,其中,高性能DRAM区域是指能够正常刷新的DRAM区域,这部分区域消耗功耗比较大,但是性能比较高;低功耗DRAM区域是指性能要求相对较低的DRAM区域,这部分区域可以通过减少刷新来降低功耗;
将该工作集的页面数据转移到该高性能DRAM区域。
进一步,在根据内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块之后,还包括:
将该工作集之外的页面数据在转移前和转移后的位置映射关系记录在数据位置映射表,该数据位置映射表用于记录数据在转移前和转移后的位置映射关系。
本发明实施例通过在内存系统中存在访问频度低的DRAM内存模块时,将工作集之外的页面数据转移到NVM内存模块,由于NVM内存模块具有非易失和低功耗的特点,因此将DRAM内存模块中存储的部分数据转移到NVM内存模块,可以降低整个内存系统的功耗。同时,采用基于DRAM和NVM的混合内存系统,可以综合互补不同内存材料在性能和功耗上的特性,尽可能的在满足内存系统性能的前提下,最大限度的降低内存系统的功耗。
由于采用基于DRAM和NVM的混合内存系统来降低内存系统功耗,需要将DRAM内存模块中的部分数据转移至NVM内存模块,因此内存控制器在访问降低了内存系统功耗的内存系统时,不能直接访问DRAM内存模块中数据。图3描述了本发明一个实施例提供的访问内存系统数据的方法,该内存系统为DRAM内存模块和NVM内存模块组成的混合内存系统,本实施例的执行主体为内存控制器,具体的,该实施例包括:
S301:接收处理器或缓存Cache的访存请求,该访存请求包括请求访问的数据。
进一步,接收处理器或缓存Cache的访存请求之后,还包括:
监控内存系统中内存模块的使用状态,该内存模块包括DRAM内存模块和NVM内存模块,该内存模快的使用状态包括该内存模块是否被访问以及被访问的频率;根据该被访问的频率判断该内存系统中是否存在访问频度低的DRAM内存模块;在存在访问频度低的DRAM内存模块时,执行数据从DRAM内存模块到NVM内存模块的转移。
进一步,所述执行数据从DRAM内存模块到NVM内存模块的转移包括:根据该内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块,该工作集之外的页面数据为预定时间内进程运行所无需访问的页面数据。
S302:判断该数据是否发生过从DRAM内存模块到NVM内存模块的转移。
S303:在该数据发生所述转移时,根据数据位置映射表获取该数据在该NVM内存模块中的位置,该数据位置映射表用于记录该数据在转移前和转移后的位置映射关系。
S304:根据该数据在该NVM内存模块中的位置访问该数据。
下面采用具体的实施例,对图2所示降低内存系统功耗的方法实施例的技术方案进行详细说明。图4为本发明实施例提供的降低内存系统功耗的过程的示意图,具体的,该实施例包括:
S401:监控内存模块的使用状态。
具体的,内存控制器中内存模块状态监控器监控内存系统中内存模块的使用状态,其中,内存模块包括DRAM内存模块和NVM内存模块,内存模块的使用状态包括内存模块是否被访问以及内存模块在一段时间内被访问的频率。
S402:判断内存系统中是否存在访问频度低的DRAM内存模块,若存在,转到S403;否则,转到S411。
具体的,内存控制器可以根据内存模块状态监控器监控的内存模块被访问的频率来判断是否存在访问频度低的DRAM内存模块,若不存在访问频度低的DRAM模块,即DRAM内存模块被访问的频度都比较高,则不实施降低内存功耗的操作,直接转到S411结束操作,因为对访问频度高的DRAM内存模块实施降低功耗的操作会严重损失性能。
S403:根据内存模块在一段时间内的访问情况,获取内存系统工作集的大小。
具体的,内存控制器根据内存模块在一段时间内被访问的情况,可以获取最近一段时间内内存模块中存在访问频度高的页面数据和访问频度低的页面数据,其中,访问频度高的页面数据,即活跃的页面数据,为最近一段时间内进程运行所必需访问的页面数据,即是工作集的页面数据;访问频度低的页面数据,即几乎不被访问的页面数据,为最近一段时间内进程运行所无需访问的页面数据,即是工作集之外的页面数据。
所以,内存控制器获取的工作集的大小即是工作集的页面数据的大小。
S404:判断该工作集的大小是否超过预设功耗调节的阈值,若超过,转到S411;否则,转到S405;
其中,预设功耗调节的阈值的确定方法为:确定NVM内存模块的性能和功耗比、以及DRAM内存模块的性能和功耗比;确定页面数据在DRAM内存模块和NVM内存模块中转移的开销、以及更新数据位置映射表的开销;根据NVM内存模块的性能和功耗比、DRAM内存模块的性能和功耗比、页面数据在DRAM内存模块和NVM内存模块中转移的开销、更新数据位置映射表的开销、以及内存请求访问的模式,确定预设功耗调节的阈值。具体的,确定预设功耗调节的阈值的过程见下述图5实施例的描述的过程。
S405:根据该工作集的大小将DRAM内存模块划分为高性能DRAM区域和低功耗DRAM区域。
具体的,由于工作集的页面数据需要被经常访问,性能要求比较高,因此需要存储在能够正常刷新的DRAM区域,这部分DRAM区域虽然不能减少刷新功耗,但性能高,称作高性能DRAM区域;相对的,由于工作集外的页面数据由于不被经常访问,性能要求较低,因此可以存储在无需正常刷新的DRAM区域,这部分DRAM区域虽然性能有所下降,但可以减少刷新功耗,称作低功耗DRAM区域。
内存控制器可以根据该工作集的大小,划分不小于该工作集大小的高性能DRAM区域,其他DRAM区域可以划分为低功耗DRAM区域。
需要说明的是,本发明主要是应用将工作集的页面数据转移到高性能DRAM区域中,将工作集之外的页面数据转移到NVM内存模块中,由于NVM内存模块不需要刷新,因此通过上述转移可以有效降低内存系统的功耗,但是,由于将页面数据转移到NVM内存模块,对转移到NVM内存模块中数据对应的应用的性能影响比较大,将工作集之外的页面数据转移到NVM内存模块中并不适用于所有的实际应用,因此,本发明将DRAM划分为高性能DRAM区域和低功耗DRAM区域,以应对实际中可能需要将将工作集之外的页面数据转移到低功耗DRAM区域的情况。
S406:判断是否将该工作集之外的页面数据转移到低功耗DRAM区域,若转移,转到S407;否则,转到S408;
本发明中,考虑到实际应用中的可能情况,采用如下的页面数据转移策略,以判断是否将该工作集之外的页面数据转移到低功耗DRAM区域:
(1)如果应用程序对延迟相当敏感,即增加细小的延迟,应用程序的性能也会严重下降,则不将工作集外的页面数据从DRAM内存模块转移到NVM内存模块;
(2)如果应用程序对延迟不敏感,即增加延迟对应用程序的性能影响不是特别大,则将工作集外的页面数据从DRAM内存模块转移到NVM内存模块,以降低功耗;
(3)如果应用程序对延迟的敏感程度一般,比如延迟增加到一定值A,应用的性能会受影响,需要考虑NVM内存模块在性能上的开销。如果相比低功耗DRAM区域的内存模块,NVM内存模块在性能即延迟的开销特别大,超过了A,则不能将DRAM内存模块的数据转移到NVM内存模块。如果相比低功耗DRAM区域的内存模块,NVM内存模块在性能上的开销不超过A,则可以将DRAM内存模块的数据转移到NVM内存模块。
S407:将工作集之外的页面数据转移到低功耗DRAM区域,将工作集的页面数据转移到高性能DRAM区域。
S408:将工作集之外的页面数据转移到NVM内存模块,将工作集的页面数据转移到高性能DRAM区域。
S409:更新内存模块的状态、更新数据位置映射表,以及设置功耗控制寄存器的值。
内存控制器更新数据位置映射表,将页面数据从DRAM内存模块转移到高性能DRAM区域、低功耗DRAM区域或NVM内存模块的位置对应关系记录在数据位置映射表中。
并且,如果执行的步骤为S407,即将工作集之外的页面数据转移到低功耗DRAM区域,则需要设置功耗控制寄存器的值,以便于功耗管理及调节器根据设置后的功耗控制寄存器的值,对低功耗DRAM区域的功耗进行调节,将低功耗DRAM区域调节为低功耗状态。
需要说明的是,功耗控制寄存器位于内存控制器,而功耗管理及调节器位于内存控制器之外,用于负责调节DRAM内存模块的功耗,如调整DRAM内存模块的运行频率、运行电压或刷新频率等。功耗控制寄存器向功耗管理及调节器发送调节DRAM内存模块功耗的命令,如PASR(Partial Array Self Refresh,部分阵列自刷新)命令。
S410:功耗管理及调节器根据功耗控制寄存器的值调节DRAM功耗的层次。
具体的,功耗管理及调节器根据功耗控制寄存器的值调节低功耗DRAM的功耗,可以通过DVFS(Dynamic Voltage and Frequency Scaling,动态电压和频率调节)或DFS(Dynamic Frequency Scaling,动态频率调节)技术实现。
步骤411:操作结束,即一个内存系统功耗调节的周期结束。
图5为本发明实施例提供的确定预设功耗调节阈值的方法,具体包括:
S501:分别确定NVM内存模块和DRAM内存模块的性能/功耗比。
S502:测试数据在DRAM内存模块和NVM内存模块中转移的开销,以及更新数据位置映射表的开销。
S503:计算功耗调节的基础阈值。
具体的,根据NVM内存模块的性能和功耗比、DRAM内存模块的性能和功耗比、数据在DRAM内存模块和NVM内存模块中转移的开销、以及更新数据位置映射表的开销,确定功耗调节的基础阈值。
S504:获取当前内存模块的访问模式。
具体的,由于内存模块状态监控器监控了内存模块的状态,包括内存模块被访问的模式,因此通过查看内存模块状态监控器可获取当前内存模块的访问模式。其中,访问模式包括流式访问、重复访问等多种访问模式。
S505:根据内存模块的访问模式以及该功耗调节的基础阈值,确定预设功耗调节阈值。
由于每种访问模式对请求访存的性能的要求不一样,因此需要针对不同的访问模式,计算出对应的预设功耗调节阈值。例如,流式访问模式对延迟敏感度不如重复访问模式,则可以针对流式访问适当减少功耗调节的阈值,尽早进行功耗的调节。
因此,根据上述功耗调节的基础阈值,调整不同访问模式下功耗调节的阈值,最终确定不同访问模式下的功耗调节的阈值,即为预设功耗调节的阈值,预设功耗调节的阈值指示了何时需要进行内存系统功耗的调节。
本发明实施例通过判断在内存系统中存在访问频度低的DRAM内存模块时,将工作集之外的页面数据转移到NVM内存模块,由于NVM内存模块具有非易失和低功耗的特点,因此将DRAM内存模块中存储的部分数据转移到NVM内存模块,可以降低整个内存系统的功耗。同时,采用基于DRAM和NVM的混合内存系统,可以综合互补不同内存材料在性能和功耗上的特性,尽可能的在满足内存系统性能的前提下,最大限度的降低内存系统的功耗。
下面采用具体的实施例,对图3所示访问内存系统数据的方法实施例进行详细说明。图6为本发明实施例提供的访问内存系统数据的过程的示意图,其执行主体为内存控制器。具体过程如图6所示,包括:
S601:接收处理器或缓存Cache的访存请求,该访存请求包括请求访问的数据。
S602:判断请求访问的数据是否发生过转移,若发生过转移,则转到S604,否则,转到S603。
具体的,由于数据位置映射表记录了数据在DRAM内存模块和NVM内存模块之间转移的位置映射关系,即记录了数据是否发生过从DRAM内存模块到NVM内存模块的转移,因此内存控制器可以通过查询数据位置映射表来获取请求访问的数据是否发生过转移。
S603:直接从请求访问的数据所在内存模块访问数据。
S604:根据数据位置映射表获取请求访问的数据在NVM内存模块中的位置。
S605:根据请求访问的数据在NVM内存模块中的位置访问对应的数据。
S606:返回请求访问的数据。
进一步,在S601步骤之后,还包括:
监控内存系统中内存模块的使用状态,该内存模块包括DRAM内存模块和NVM内存模块,该内存模快的使用状态包括该内存模块是否被访问以及被访问的频率;根据该被访问的频率判断该内存系统中是否存在访问频度低的DRAM内存模块;在存在访问频度低的DRAM内存模块时,执行数据从DRAM内存模块到NVM内存模块的转移,具体包括:根据该内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块,该工作集之外的页面数据为预定时间内进程运行所无需访问的页面数据。
考虑到实际应用中,由于应用程序的访存模式是呈阶段性的变化,一段时间内应用程序访问的数据不多,因此内存控制器通过调节内存系统功耗,将内存系统转换到低功耗状态,从而降低整个内存系统的功耗;然而,如果下一个时间段,应用程序访问的数据量增加,则内存控制器需要将内存系统从低功耗状态恢复到高性能状态,以提高整个内存系统的性能。
图7描述了本发明实施例提供的一种内存系统从低功耗状态恢复到高性能状态的方法,具体包括:
S701:监控内存模块的使用状态。
S702:根据内存模块在一段时间的访问情况,获取工作集的大小。
S703:判断工作集大小是否超过高性能DRAM区域的大小,若超过,转到S704,否则,转到步骤709。
S704:判断当前内存系统中低功耗DRAM区域或NVM内存模块的性能是否能满足需求,若能满足,转到步骤709,否则,转到步骤705。
S705:将低功耗DRAM区域调整到高性能状态,或者,将NVM内存模块中数据转移到DRAM内存模块中。
S706:判断低功耗DRAM区域或NVM内存模块中数据是否发生过转移,若是,转到S707,否则,转到S709。
S707:根据数据位置映射表,将发生过转移的低功耗DRAM区域或NVM内存模块中数据还原。
S708:更新内存模块的状态以及数据位置映射表。
S709:操作结束。
图8描述了本发明实施例提供的内存控制器800的结构示意图,如图8所示,内存控制器800包括功耗调节决策模块801和数据转移模块802,具体的:
功耗调节决策模块801,用于判断内存系统中是否存在访问频度低的DRAM内存模块。
数据转移模块802,用于在功耗调节决策模块801判断存在访问频度低的DRAM内存模块时,根据内存系统中工作集的大小将工作集之外的页面数据转移到非易失性存储器NVM内存模块,其中,工作集之外的页面数据为预定时间内进程运行所无需访问的页面数据。
进一步,数据转移模块802具体用于:在工作集的大小不超过预设功耗调节的阈值时,将该工作集之外的页面数据转移到该NVM内存模块。
本实施例的内存控制器800,可以用于执行图2和图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9描述了本发明另一个实施例提供的内存控制器800的结构示意图,本实施例内存控制器800在图8实施例的基础上,进一步地,内存控制器800还包括划分模块803和内存模块状态监控器804。具体的,
划分模块803,用于根据工作集的大小将DRAM内存模块划分为高性能DRAM区域和低功耗DRAM区域;则此时,数据转移模块802还用于将该工作集的页面数据转移到高性能DRAM区域中。
内存模块状态监控器804,用于监控内存系统中内存模块的使用状态,其中,该内存模块包括DRAM内存模块和NVM内存模块,该内存模块的使用状态包括该内存模块是否被访问以及被访问的频率;则有,功耗调节决策模块801具体用于,根据该被访问的频率确定该内存系统中是否存在访问频度低的DRAM内存模块。
本实施例的内存控制器800,可以用于执行图2和图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的内存控制器,通过判断在内存系统中存在访问频度低的DRAM内存模块时,将工作集之外的页面数据转移到NVM内存模块,由于NVM内存模块具有非易失和低功耗的特点,因此将DRAM内存模块中存储的部分数据转移到NVM内存模块,可以降低整个内存系统的功耗。同时,采用基于DRAM和NVM的混合内存系统,可以综合互补不同内存材料在性能和功耗上的特性,尽可能的在满足内存系统性能的前提下,最大限度的降低内存系统的功耗。
图10描述了本发明实施例提供的内存控制器900的结构示意图,如图10所示,内存控制器900包括接收模块901、判断模块902、获取模块903和访问模块904,具体的:
接收模块901,用于接收处理器或缓存Cache的访存请求,所述访存请求包括请求访问的数据。
判断模块902,用于判断所述数据是否发生过从DRAM内存模块到NVM内存模块的转移。
获取模块903,用于在所述判断模块902判断所述数据发生过转移时,根据数据位置映射表获取所述数据在所述NVM内存模块中的位置,该数据位置映射表用于记录所述数据在转移前和转移后的位置映射关系。
访问模块904,用于根据所述数据在所述NVM内存模块中的位置访问所述数据。
本实施例的内存控制器900,可以用于执行图3和图6所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图11描述了本发明另一个实施例提供的内存控制器900的结构示意图,本实施例内存控制器900在图10实施例的基础上,进一步地,内存控制器900还包括内存模块状态监控器804、功耗调节决策模块801和数据转移模块802。具体的,
内存模块状态监控器804,用于监控内存系统中内存模块的使用状态,该内存模块包括DRAM内存模块和NVM内存模块,该内存模快的使用状态包括该内存模块是否被访问以及被访问的频率;
功耗调节决策模块801,用于根据上述被访问的频率判断该内存系统中是否存在访问频度低的DRAM内存模块;
数据转移模块802,用于在功耗调节决策模块801判断存在访问频度低的DRAM内存模块时,执行数据从DRAM内存模块到NVM内存模块的转移,其中,执行数据从DRAM内存模块到NVM内存模块的转移,包括:根据内存系统中工作集的大小将该工作集之外的页面数据转移到NVM内存模块,该工作集之外的页面数据为预定时间内进程运行所无需访问的页面数据。
本实施例的内存控制器900,可以用于执行图3和图6所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的内存控制器,通过判断在内存系统中存在访问频度低的DRAM内存模块时,将工作集之外的页面数据转移到NVM内存模块,由于NVM内存模块具有非易失和低功耗的特点,因此将DRAM内存模块中存储的部分数据转移到NVM内存模块,可以降低整个内存系统的功耗。同时,采用基于DRAM和NVM的混合内存系统,可以综合互补不同内存材料在性能和功耗上的特性,尽可能的在满足内存系统性能的前提下,最大限度的降低内存系统的功耗。
图12描述了本发明又一个实施例提供的计算机系统的结构,包括至少一个处理器1201、至少一个内存控制器1202和内存系统1203,其中,处理器1201可以是CPU或ASIC等;内存控制器1202为上述实施例提供的内存控制器800和/或内存控制器900;内存系统1203为混合内存系统,包括DRAM内存模块和NVM内存模块。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。