CN103577340A - 存储器管理装置和方法以及电子设备 - Google Patents

存储器管理装置和方法以及电子设备 Download PDF

Info

Publication number
CN103577340A
CN103577340A CN201210270154.3A CN201210270154A CN103577340A CN 103577340 A CN103577340 A CN 103577340A CN 201210270154 A CN201210270154 A CN 201210270154A CN 103577340 A CN103577340 A CN 103577340A
Authority
CN
China
Prior art keywords
thread
threads
sets
memory
unit
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.)
Pending
Application number
CN201210270154.3A
Other languages
English (en)
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to CN201210270154.3A priority Critical patent/CN103577340A/zh
Priority to US13/953,116 priority patent/US20140040900A1/en
Publication of CN103577340A publication Critical patent/CN103577340A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

提供了存储器管理装置和方法以及电子设备。该存储器管理装置应用于由多个存储器块组成的存储器,包括:线程收集单元,配置为收集预定时间内将要执行的线程;线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组;线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在该一个或多个存储器块中;线程执行单元,配置为执行线程;以及,功耗设置单元,配置为将向正在执行的线程分配的一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。通过根据本发明实施例的存储器管理装置和方法以及电子设备,可以在维持存储器的性能的同时,显著地降低存储器的功耗和存储器的温度。

Description

存储器管理装置和方法以及电子设备
技术领域
本发明涉及数据存储领域,且具体地说涉及存储器管理装置和方法以及电子设备。
背景技术
随着计算机芯片规模及速度的不断提高和移动计算等应用的发展,计算机系统的能耗问题日益突出。另一方面,高功耗造成处理器芯片局部温度过热,直接影响系统性能、功耗、能耗、可靠性和寿命。因此,计算机系统功耗/温度敏感技术已成为当前的研究热点。
计算机自诞生之日起,“memory wall(内存墙)”便一直作为性能提升的瓶颈存在,CPU的性能每18个月提高一倍,相比之下,内存的速度通常每10年提升一倍,这严重制约了计算机的性能。当前已经进入了多核、众核时代,相比单核体系结构,对内存要求变得更加苛刻,主要体现在大容量、大带宽两个方面。
当前国内外的解决方案主要体现在(1)技术工艺的角度,但此每年带来的收益只有7%左右;(2)内存结构的角度,如Intel和AMD公司都推出了针对多核结构下的产品,如Intel的Fully Buffered DIMM(FBDIMM)、AMD公司的the Socket G3Memory Extender(G3MX),其特点均是使用宽度更窄、频率更高的总线,使得连接每个通道的引脚数减少,内存通道数越来越多,从而访存并行性得到更好的发挥;(3)算法的角度,例如减少延迟从而提升数据传输速率,改进内存调度算法等。
追求高性能将带来大量的能量消耗,在服务器或者数据中心等应用中,DRAM耗费的能耗占整机能耗的30%,并且以每年5%-6%的速度增长,因此不仅带来了大量的电能浪费,还带来了严重的温度问题。温度升高与MTTF(平均失效时间)呈现对数级关系,对计算机可靠性带来了致命打击;温度升高,带来传输时延增加,造成性能损失;器件的静态(泄露)功耗与温度呈指数增长关系,造成系统热状态的恶性循环;最后,导致供电、散热成本增加。
针对内存能耗问题,从上世纪90年代开始的研究,期间取得了一系列的研究成果,主要体现在两个方面:首先,从硬件角度而言,由于硬件集成度越来越高和自身制造工艺的长足发展促使硬件自身消耗的能耗越来越低,同时,为了最大程度节约能耗,硬件开始支持不同的功耗/工作状态;但是从硬件的层面达到节约能耗的目的,往往需要修改硬件设计,带来了硬件设计成本和研发周期的增加,在一定意义上不具有实用性。
其次,从软件降低能耗的角度而言,其原理无非是使系统使用尽量少的硬件资源,或者尽可能借助并有效管理硬件提供的不同的功耗/工作状态;其研究领域涉及编译器、操作系统、应用程序。如,在“Compiler-Directed EnergyManagement”中,作者将具有一定访问性质的数据在编译阶段事先组织在一起,以便其他空闲模块处于低功耗状态。在编译器,降低内存能耗是一种“事先”处理,并不适用于所有应用场景,不具备通用性。在应用程序领域则是针对特殊的应用程序(如多媒体)进行优化达到节能降耗的目的,不具备一定的通用性。
因此,需要能够进一步降低存储器的能耗的方案。
发明内容
因此,针对上述现有技术中存在的问题和需求做出本发明。
本发明实施例的目的是提供一种存储器管理装置和方法以及电子设备,其能够通过对线程分组来限制正在使用的存储器块的数目,从而降低存储器的功耗。
根据本发明实施例的一个方面,提供了一种存储器管理装置,应用于由多个存储器块组成的存储器,所述存储器管理装置包括:线程收集单元,配置为收集预定时间内将要执行的线程;线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;线程执行单元,配置为执行线程;以及,功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
在上述存储器管理装置中,所述预定规则是基于线程的ID值除以n得到的余数,将余数相同的线程划分为一个线程组。
在上述存储器管理装置中,所述线程划分单元配置为根据线程的种类、线程的存储容量占用量和存储器块的剩余容量中的至少其中之一,来确定向线程分配的存储器块;以及,将分配了相同存储器块的线程划分为一个线程组。
在上述存储器管理装置中,进一步包括:如果同一线程组中的线程未全部执行,则执行该线程组中的线程;以及,若同一线程组中的线程全部执行,则执行下一线程组中的线程。
在上述存储器管理装置中,进一步包括:存储器分组单元,配置为将所述多个存储器块划分为n个存储器块组;其中,所述线程保存单元配置为向每个线程组分配一存储器块组。
根据本发明实施例的另一方面,提供了一种存储器管理方法,应用于由多个存储器块组成的存储器,所述存储器管理方法包括:收集预定时间内将要执行的线程;按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;执行线程;以及,将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:基于线程的ID值除以n得到的余数,将余数相同的线程划分为一个线程组。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:根据线程的种类、线程的存储容量占用量和存储器块的剩余容量中的至少其中之一,来确定向线程分配的存储器块;以及,将分配了相同存储器块的线程划分为一个线程组。
在上述存储器管理方法中,进一步包括:如果同一线程组中的线程未全部执行,则执行该线程组中的线程;以及,若同一线程组中的线程全部执行,则执行下一线程组中的线程。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤之后进一步包括:将所述多个存储器块划分为n个存储器块组;所述向每个线程组分配一个或多个存储器块的步骤具体为:向每个线程组分配一存储器块组。
根据本发明实施例的又一方面,提供了一种电子设备,包括;存储器,由多个存储器块组成;控制器,包括:线程收集单元,配置为收集预定时间内将要执行的线程;线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;线程执行单元,配置为执行线程;以及,功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
通过根据本发明实施例的存储器管理装置和方法以及电子设备,可以在维持存储器的性能的同时,显著地降低存储器的功耗和存储器的温度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是DRAM的功耗/工作状态迁移图;
图2是根据本发明实施例的存储器管理装置的示意性框图;
图3是示出根据本发明实施例的存储器管理装置中线程的存储情况的示意图;
图4是示出根据本发明实施例的存储器管理装置中各个内存块的活动状态的示意图;
图5是示出现有技术中的伙伴算法的示意图;
图6是示出根据本发明实施例的存储器管理装置中的伙伴算法的示意图;和
图7是根据本发明实施例的存储器管理方法的示意性流程图。
具体实施方式
下面,将结合附图详细描述根据本发明实施例的存储器管理装置和方法以及电子设备。
在当前的电子设备中,操作系统作为软件和硬件的中间层,不仅能够感知底层微体系结构,还能够紧密结合高层系统行为;同时,操作系统作为资源的管理者和调度者,拥有系统的全局视图,所以从操作系统级进行内存能耗管理是切实可行的。基于操作系统级的内存能耗的研究可以划分为以下三部分。
首先,如图1所示,针对DRAM(Dynamic RandomAccess Memory:动态随机存取存储器)提供了几种不同的功耗/工作状态,各状态消耗的能耗不同,但是只有处于active(活动)状态的时候,内存才能完成一次读/写操作,操作系统借助并有效管理硬件提供的功耗/工作状态,从而达到节能降耗的目的。这里,图1是DRAM的功耗/工作状态迁移图。
其次,在操作系统中,调度器作为线程的调度者,决定了系统的行为走向。在“Scheduler Based DRAM Energy Management”中,作者构建了存储库(bank)的线程使用表(BUT:bank usage table),调度器将优先调度与当前运行线程所拥有的存储库号相同的线程集合执行,其目的是使其它的存储库有更长的时间处于空闲,从而处于低功耗状态。
从操作系统级,无论是进行状态管理、合理调度、数据重组织都一定程度上缓解了内存能耗问题,但往往在解决能耗问题的同时忽略或者引入了新的问题,如,性能因素,在进行数据重组织时的碎片问题。因此,仍需要进行一定的改进。
根据本发明实施例的一个方面,提供了一种存储器管理装置,应用于由多个存储器块组成的存储器,所述存储器管理装置包括:线程收集单元,配置为收集预定时间内将要执行的线程;线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;线程执行单元,配置为执行线程;以及,功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
在根据本发明实施例的存储器管理装置中,通过将线程划分为不同的线程组并分配使用的存储器块,从而仅将正在使用的存储器块设置为活动状态,可以有效地降低存储器的功耗,同时,由于并非所有的存储器块都处于活动状态,也可以相应地降低存储器的温度。
图2是根据本发明实施例的存储器管理装置的示意性框图。如图2所示,根据本发明实施例的存储器管理装置100应用于由多个存储器块组成的存储器,该存储器管理装置100包括:线程收集单元101,配置为收集预定时间内将要执行的线程;线程划分单元102,配置为按照预定规则将由线程收集单元101收集的线程划分为n个线程组,其中,n是大于1的整数;线程分配单元103,配置为向每个线程组分配多个存储器块中的一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;线程执行单元104,配置为执行线程;以及,功耗设置单元105,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
在现有的计算机系统的内存架构中,将内存划分成多个具有不同级别的内存块来进行管理,其中,每个级别的内存块可以单独地进行功耗管理,以使得可以将各个级别的内存块设置为不同的功耗状态。在根据本发明实施例的存储器管理装置中,进一步对将要执行的线程进行划分,以将在预定时间内将要执行的线程划分为多个组以进行调度。即,在根据本发明实施例的存储器管理装置中,是根据线程组的概念来划分线程,这可以将系统内所有的线程划分成不同的线程组。图3是示出根据本发明实施例的存储器管理装置中线程的存储情况的示意图。如图3中,将线程11、12、…、1t这t个线程划分为线程组1,同样将线程21、22、…、2i这i个线程划分成线程组2,以此类推,将线程m1、m2、…、mp这p个线程划分成线程组m。并且,在根据本发明实施例的存储器管理系统中,将同一线程组内的所有线程所需的内存限制为固定的一个或多个内存块,即,限制将线程的执行所需的数据等存储在固定的一个或多个内存块中。如图3所示,将线程组1内所有线程所需的内存限制为级别0、级别3等的几个内存块,同理,将线程组m内所有线程所需的内存限制为级别1、级别n等的几个内存块。
这里,每个线程的执行过程中所需的数据,例如,线程的执行所需要读取的数据以及线程的执行过程中产生的数据等可以基本上保存在一个内存块中。但是,由于线程的执行可能还需要操作系统的其它辅助数据,而这些数据可能包括在另外的一个或多个内存块中,因此,在根据本发明实施例的存储器管理装置中,向每个线程组分配一个或多个内存块,以便存储线程组的执行所需的数据。
这样,在进行操作系统的调度时,如果选择了线程组1内的线程运行,因为线程组1内的所有线程的运行所需的数据都存储在级别0、级别3等的几个内存块内,而其它的内存块都没有数据,因此仅需要将这几个内存块设置为活动(active)状态,而将其它的内存块设置为低功耗状态,从而促进降低整体内存的功耗。图4是示出根据本发明实施例的存储器管理装置中各个内存块的活动状态的示意图。如图4所示,当运行线程组1的线程时,仅需要将级别0、级别3等的几个内存块设置为活动状态。同理,当运行线程组2里的线程时,仅需要将级别5等的几个内存块设置为active状态,而其它的所有内存块都设置为低功耗状态。
为了避免频繁地切换不同级别的内存块所造成的功耗,可以降低将内存块从活动状态切换到低功耗状态或者从低功耗状态切换到活动状态的频率。结合操作系统的调度策略,在尽量保证优先级以及公平性的限制下,可以优先选择同一线程组内的线程作为接下来要执行的线程,而仅在本线程组中的线程全部执行之后,选择下一线程组执行。因此,由于同一线程组内的线程的运行所需的内存块是相同的,当选择同一线程组内的线程作为接下来要执行的线程时,不需要切换所有的内存块的状态。
在根据本发明实施例的存储器管理装置中,可以通过将每个线程的ID值除以组的数目n来进行线程的分组,即,将线程的ID值除以组的数目n得到的数值相同的线程划分到相同的组,而将数值不同的线程划分到不同的组内。
此外,还可以考虑其它因素来确定进行线程划分的预定规则,下面将进行进一步的描述。
首先,在需要确定内存中可独立开关的内存单位,即内存块的数目,通常,在系统启动时,可以知道此数目,并且设置此数目为N。考虑线程的不同种类,对于系统线程来说,由于其执行所需的基本上为系统数据,因此可强制所有的系统线程尽量使用相同的物理内存块,从而限制所使用的内存块到特定的内存块。另外,对于用户态线程,在每个用户态线程启动时,由系统确定该线程使用哪个或者哪几个物理内存块,例如,当用户态线程启动时,可以由用户态线程指明其内存使用量,即需要较多内存还是需要较少内存,之后,操作系统可以根据每个物理内存块被占用的情况,向该线程分配一个或多个内存块以进行使用,从而尽可能地保证每个内存块被均匀使用。
此外,还可以依据线程的执行过程当中的内存块占用量来进行动态分配,即,在线程的执行过程中,考虑已经分配了一个或多个内存块的线程的内存使用量,如果上述内存块被已有线程的占用情况比较严重,就顺次移动到并分配下一内存块。
这样,通过上述内存块的分配,将线程可能使用的内存块保存在某个表,例如task_struct里面,如线程100,其对应的内存块的级别为3,即该线程使用级别3的内存块。通过参考为线程分配的内存块的表,就可以尽可能地将使用相同内存块的线程划分为线程组,从而便于在线程调度时优先调度使用相同内存块的线程。
下面,将对将数据存储在内存块中的方法进行说明。
在Linux操作系统中,存在被称为伙伴算法的存储方法,其将所有的空闲页面分为10个块组,其中每组中的块的大小是2的幂次方个页面,例如,第0组中块的大小都为20(1)个页面,第1组中块的大小都为21(2)个页面,…,第9组中块的大小都为29(512)个页面。也就是说,每一组中块的大小是相同的,且这同样大小的块形成一个链表,如图4所示。这里,满足以下条件的两个块称为伙伴:两个块的大小相同且两个块的物理地址连续。图5是示出现有技术中的伙伴算法的示意图。
下面通过一个简单的例子来说明该算法的工作原理。假设要求分配的块的大小为128个页面。该算法先在块大小为128个页面的链表中查找,判定是否存在这样一个空闲块。如果存在,就直接分配;如果不存在,该算法会查找下一个更大的块,具体地说,就是在块大小为256个页面的链表中查找一个空闲块。如果存在这样的空闲块,就将这256个页面分为两等份,一份分配出去,另一份插入到块大小为128个页面的链表中。如果在块大小为256个页面的链表中也没有找到空闲页块,就继续查找更大的块,即512个页面的块。如果存在这样的块,就从512个页面的块中分出128个页面满足请求,然后从384个页面中取出256个页面插入到块大小为256个页面的链表中。然后把剩余的128个页面插入到块大小为128个页面的链表中。如果512个页面的链表中还没有空闲块,该算法就放弃分配,并发出出错信号。
以上过程的逆过程就是块的释放过程。伙伴算法把满足以上条件的两个块合并为一个块,该算法是迭代算法,如果合并后的块还可以跟相邻的块进行合并,那么该算法就继续合并。
在Linux系统中,上述伙伴算法对底层内存的信息是透明的,这在一定程度限制了充分挖掘硬件的信息以达到节能降耗的效果,在根据本发明实施例的存储器管理装置中,对原算法进行了改进,引入“级别感知的伙伴算法”。即,在原有的伙伴算法上进一步添加一层级别信息,如图5所示。按照不同的级别来组织各自的伙伴算法,从而在向线程分配给各个内存块时,只是查找该线程可以分配的级别的内存块组中的内存块,而不是像原有的伙伴算法那样随意分配。图6是示出根据本发明实施例的存储器管理装置中的伙伴算法的示意图。
在根据本发明实施例的存储器管理装置中,所述级别感知的伙伴算法将系统内的所有线程根据预定规则,例如,将每个线程的ID值除以组的数目n得到的数值相同的线程划分到相同的组,而将数值不同的线程划分到不同的组内。这样,系统中共有n个线程组,将同一组内的线程的执行所需的内存分配为一个或多个内存块。在调度的过程中优先依次选择同一个组内的线程执行,在执行这个组内的线程时,只需将这个组所需的内存块设置为活动状态,而其它内存块都可以设置为低功耗状态。当这个组的线程都执行一次后选择下一组线程执行,并将这组线程对应的内存块设置为低功耗状态,将下一组线程对应的内存块设置为活动状态,其它内存块的状态仍然保持在低功耗状态。这样,每个时刻都只是将当前执行的线程所需要的内存块设置为活动状态,而其它内存块都设置为低功耗状态,从而降低了内存的功耗。
在根据本发明实施例的存储器管理装置中,可以进一步按照内存的级别将具有不同级别的内存块分组,从而与线程的分组结合。例如,将系统所有的线程分为m个组,并按照内存的级别将所有的内存块划分为m个内存块组,根据线程的ID值除以m所得的结果划分线程组。假设通过计算,将线程11,12,…,1t这t个线程划分成一个线程组1,同理将线程21,22,…,2i这i个线程划分成线程组2,线程m1,m2,…,mp这p个线程划分成线程组m。同时将rank 0,rank 3,…划分成内存rank组1,将rank 1,…,rank n划分成内存rank组2,依次划分成m个组。调度的过程是先依次调度线程组1内的线程,此时只需将内存块组1中的内存块置为活动状态,其他内存块置为低功耗状态,当线程组1内的所有线程都已经执行过一次以后,再调度线程组2的线程,此时将内存块组1内的内存块置为低功耗状态,将内存块组2内的所有内存块置为活动状态,保持其他内存块的低功耗状态,周期性的这样调度。
如上所述,在根据本发明实施例的存储器管理装置中,可以采用虚拟内存块的概念来将多个级别的物理内存块进行分组为一个虚拟内存块,这样,线程可以仅使用一个虚拟内存块,从而扩大线程的内存配额,提高线程的效率。
在根据本发明实施例的存储器管理装置中,在DDR 3,8个级别的内存平台配置下,通过上述将所有的线程划分为8个组,将每个级别的内存块划分成一个组的情况下,实验显示采用上述方法比现有的方案降低了20%的内存功耗。
在以上描述中,以内存为例对于根据本发明实施例的存储器管理装置进行了描述,这里,本领域技术人员可以理解,本发明实施例的存储器管理装置所应用的存储器并不限于计算机系统的内存,其也可以应用于其它具有多个存储器块的存储器。例如,NVRAM存储器具有能够在物理上区分的多个存储区域,其可以被认为是由多个存储器块组成的存储器,NVRAM存储器可应用于计算机系统以作为计算机的内存或者硬盘,其也可以作为其它电子设备,例如智能手机或者家用电器的内存储器,或者用作诸如移动硬盘或者U盘之类的外接式便携存储器。
根据本发明实施例的另一方面,提供了一种存储器管理方法,应用于由多个存储器块组成的存储器,所述存储器管理方法包括:收集预定时间内将要执行的线程;按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;执行线程;以及,将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
图7是示出根据本发明实施例的存储器管理方法的示意性流程图。如图7所示,根据本发明实施例的储器管理方法应用于由多个存储器块组成的存储器,包括:S1,收集预定时间内将要执行的线程;S2,按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;S3,向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;S4,执行线程;以及,S5,将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:基于线程的ID值除以n得到的余数,将余数相同的线程划分为一个线程组。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:根据线程的种类、线程的存储容量占用量和存储器块的剩余容量中的至少其中之一,来确定向线程分配的存储器块;以及,将分配了相同存储器块的线程划分为一个线程组。
在上述存储器管理方法中,进一步包括:如果同一线程组中的线程未全部执行,则执行该线程组中的线程;以及,若同一线程组中的线程全部执行,则执行下一线程组中的线程。
在上述存储器管理方法中,所述按照预定规则将所收集的线程划分为n个线程组的步骤之后进一步包括:将所述多个存储器块划分为n个存储器块组;所述向每个线程组分配一个或多个存储器块的步骤具体为:向每个线程组分配一存储器块组。
这里,上述根据本发明实施例的存储器管理方法的其它细节与之前关于根据本发明实施例的存储器管理装置的描述中的相同,为了避免冗余便不再赘述。
根据本发明实施例的又一方面,提供了一种电子设备,包括;存储器,由多个存储器块组成;控制器,包括:线程收集单元,配置为收集预定时间内将要执行的线程;线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;线程执行单元,配置为执行线程;以及,功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
通过根据本发明实施例的存储器管理装置和方法以及电子设备,可以通过对线程分组来将某一线程组所使用的存储器块限定为特定的一个或多个存储器块,从而减小在线程执行过程中同时处于活动状态的存储器块的数目,以在维持存储器的性能的同时降低存储器的功耗。另外,由于处于活动状态的存储器的数目减小,存储器的温度可以相应地降低。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (11)

1.一种存储器管理装置,应用于由多个存储器块组成的存储器,所述存储器管理装置包括:
线程收集单元,配置为收集预定时间内将要执行的线程;
线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;
线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;
线程执行单元,配置为执行线程;以及
功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
2.如权利要求1所述的存储器管理装置,其中,
所述预定规则是基于线程的ID值除以n得到的余数,将余数相同的线程划分为一个线程组。
3.如权利要求1所述的存储器管理装置,其中,
所述线程划分单元配置为根据线程的种类、线程的存储容量占用量和存储器块的剩余容量中的至少其中之一,来确定向线程分配的存储器块;以及
将分配了相同存储器块的线程划分为一个线程组。
4.如权利要求1到3中任意一项所述的存储器管理装置,进一步包括:
如果同一线程组中的线程未全部执行,则执行该线程组中的线程;
若同一线程组中的线程全部执行,则执行下一线程组中的线程。
5.如权利要求1所述的存储器管理装置,进一步包括:
存储器分组单元,配置为将所述多个存储器块划分为n个存储器块组;
其中,所述线程保存单元配置为向每个线程组分配一存储器块组。
6.一种存储器管理方法,应用于由多个存储器块组成的存储器,所述存储器管理方法包括:
收集预定时间内将要执行的线程;
按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;
向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;
执行线程;以及
将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
7.如权利要求6所述的存储器管理方法,其中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:
基于线程的ID值除以n得到的余数,将余数相同的线程划分为一个线程组。
8.如权利要求6所述的存储器管理方法,其中,所述按照预定规则将所收集的线程划分为n个线程组的步骤具体为:
根据线程的种类、线程的存储容量占用量和存储器块的剩余容量中的至少其中之一,来确定向线程分配的存储器块;以及
将分配了相同存储器块的线程划分为一个线程组。
9.如权利要求6到8中任意一项所述的存储器管理方法,进一步包括:
如果同一线程组中的线程未全部执行,则执行该线程组中的线程;
若同一线程组中的线程全部执行,则执行下一线程组中的线程。
10.如权利要求6所述的存储器管理方法,其中,所述按照预定规则将所收集的线程划分为n个线程组的步骤之后进一步包括:
将所述多个存储器块划分为n个存储器块组;
所述向每个线程组分配一个或多个存储器块的步骤具体为:
向每个线程组分配一存储器块组。
11.一种电子设备,包括;
存储器,由多个存储器块组成;
控制器,包括:
线程收集单元,配置为收集预定时间内将要执行的线程;
线程划分单元,配置为按照预定规则将所收集的线程划分为n个线程组,其中,n是大于1的整数;
线程保存单元,配置为向每个线程组分配一个或多个存储器块,以将每个线程组的执行所需的数据存储在所述一个或多个存储器块中;
线程执行单元,配置为执行线程;以及
功耗设置单元,配置为将向正在执行的线程分配的所述一个或多个存储器块设置为活动状态,而将其它存储器块设置为低功耗状态。
CN201210270154.3A 2012-07-31 2012-07-31 存储器管理装置和方法以及电子设备 Pending CN103577340A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210270154.3A CN103577340A (zh) 2012-07-31 2012-07-31 存储器管理装置和方法以及电子设备
US13/953,116 US20140040900A1 (en) 2012-07-31 2013-07-29 Storage managing device and method and electronic apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210270154.3A CN103577340A (zh) 2012-07-31 2012-07-31 存储器管理装置和方法以及电子设备

Publications (1)

Publication Number Publication Date
CN103577340A true CN103577340A (zh) 2014-02-12

Family

ID=50026851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210270154.3A Pending CN103577340A (zh) 2012-07-31 2012-07-31 存储器管理装置和方法以及电子设备

Country Status (2)

Country Link
US (1) US20140040900A1 (zh)
CN (1) CN103577340A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955496A (zh) * 2019-11-26 2020-04-03 浙江大华技术股份有限公司 内存处理方法及装置、存储介质、电子装置
CN113722111A (zh) * 2021-11-03 2021-11-30 北京壁仞科技开发有限公司 内存分配方法、系统、装置和计算机可读介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9547530B2 (en) * 2013-11-01 2017-01-17 Arm Limited Data processing apparatus and method for processing a plurality of threads
US20230214270A1 (en) * 2021-12-31 2023-07-06 Western Digital Technologies, Inc. Readiness states for partitioned internal resources of a memory controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955496A (zh) * 2019-11-26 2020-04-03 浙江大华技术股份有限公司 内存处理方法及装置、存储介质、电子装置
CN113722111A (zh) * 2021-11-03 2021-11-30 北京壁仞科技开发有限公司 内存分配方法、系统、装置和计算机可读介质

Also Published As

Publication number Publication date
US20140040900A1 (en) 2014-02-06

Similar Documents

Publication Publication Date Title
CN102292778B (zh) 用于管理错误区域的存储器装置及方法
CN102292715B (zh) 存储器装置功率管理器及其方法
CN102362464B (zh) 内存访问监测方法和装置
CN102187323B (zh) 多核存储器模块中的功率下降模式的动态利用
CN101320289B (zh) 提高多内核处理器性能的方法、系统和装置
CN102317925B (zh) 存储器系统和控制存储器系统的方法
CN102929707B (zh) 并行任务动态分配方法
CN102812439B (zh) 用于在多处理器计算机系统中分派任务的方法和系统
CN106569727A (zh) 一种多控制器间多存储器共享并行数据读写装置及其写入、读取方法
CN103019861A (zh) 虚拟机分配方法及装置
CN103210379A (zh) 服务器系统、管理方法及设备
JP2008090395A (ja) 計算機システム、演算用ノード及びプログラム
CN102521014A (zh) 虚拟机的部署方法及装置
Deng et al. A data and task co-scheduling algorithm for scientific cloud workflows
CN103577340A (zh) 存储器管理装置和方法以及电子设备
CN102346682A (zh) 信息处理装置及信息处理方法
US20110055452A1 (en) Method and program for memory relocation control of computer, and computer system
CN107817945A (zh) 一种混合内存结构的数据读取方法和系统
CN105117285A (zh) 一种基于移动虚拟化系统的非易失性存储器调度优化方法
CN103037109A (zh) 多核设备能耗管理方法及装置
CN103793332B (zh) 基于内存的数据存储方法、装置、处理器和电子设备
CN102387024B (zh) 功耗控制方法、管理节点及数据处理中心
CN108932112B (zh) 一种固态颗粒的数据读写方法、装置、设备及介质
CN101290592B (zh) 一种mpsoc上多道程序共享spm的实现方法
CN103377135A (zh) 寻址方法、装置及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140212