专利名称:用于动态改变控制存储器的功耗水平的池的尺寸的方法和设备的制作方法
技术领域:
本发明涉及计算机系统和设备的功率和热量管理。更准确地说,本发明涉及用来动态控制存储系统中存储器的功耗水平的一种设备、方法和系统。
背景技术:
随着计算机设备和系统的继续发展和变得更加复杂,计算机设备和系统的有效的并且高效率的功率和热量管理在系统设计和实现中变得越来越关键。由于计算机设备和系统只有在特定的功率和温度范围内才能正确地和安全地运行,当需要各种各样的设备时,确保有足够的电源去开动它们是重要的。此外,确保热条件不超过某些门限水平也是重要的,这些门限被认为对于这些各种各样的设备的运行是安全的。通常,计算机设备例如存储器被设计成具有与不同性能和功耗水平相对应的不同的工作模式或功率状态。不同的工作模式或功率状态可能包括,例如,活动方式(active mode)、备用方式(standby)和小睡(nap mode)方式等。一般地,设备在活动方式下比在其他方式下运行快。然而,设备在活动方式下也比在其他方式下消耗较多的功率并产生较多的热量。将系统内的全部设备保持在活动方式下减小运行等待时间并因此提高系统总体性能。然而,将系统内的全部设备保持在活动方式下消耗较多的功率并产生较多的热量。此外,即使系统电源足够为系统中全部设备供电,无论如何这些设备中的一些设备可能是空闲的,因此总是将它们保持在活动方式将是资源的浪费。系统性能要求和系统功率使用要求需要被平衡。为了在系统性能和系统功率使用及热耗散之间保持一个平衡,需要将一定数量的设备保持在活动方式以减小功率使用和热耗散。取决于应用和运行环境,被保持为活动方式的设备的数量可能不同。
上面描述的关于计算机设备的系统约束和折衷一般等效地应用于存储系统中的存储器。在它们的活动或功耗最大的方式下,存储器例如动态随机存取存储器(DRAM)设备比在非活动方式下(例如备用或小睡方式)运行的快。然而,DRAM设备在活动方式下也比在非活动方式下消耗更多的功率。作为结果,为了在性能和功耗(和热耗散)之间保持一个平衡,一个固定数目的DRAM设备可能需要被保持在非活动方式以保存电力并减小热耗散。处于活动方式的设备数和处于非活动方式的设备数能够被在系统启动(引导)时或系统复位时的基本输入输出程序(BIOS)确定。哪个设备处于活动方式哪个设备处于非活动方式的管理能够通过设备池的定义被完成,设备池被用来记住各个设备的运行方式或功率状态(例如活动的或非活动的)。在这篇文章中设备的一个池指的是处于特定运行方式或功率状态的设备的一个映射或列表。例如一个池可能被维护以记住处于活动方式的设备,而另一个池可能被维护以记住处于非活动方式的设备。在这个功率管理方案下,在其中的一个池里被描述的设备被假定工作在特定的运行方式或功率状态下,从而消耗特定数量的功率。例如,在活动池内被描述的设备被假设工作在活动方式下。在各个池内的设备数可以被检查以确定被整个存储系统使用的功率的数量。在下文中,被用来记住各种各样的存储设备的不同的池也被称为功率控制或者节能池。
传统地,因为说明在任意提出的变化期间全部设备的功耗状态的复杂性,各个池中的设备的数量(在下文中也称为池的尺寸或池容量)在启动或复位时被BIOS配置或指定,并且在系统运行期间被留置不变。例如,一个系统操作员或者系统用户可能通过BIOS配置指定活动设备数是8而非活动设备数为24。这两个数分别被用来确定能够处于活动或非活动池中的设备的最大允许数目。这种静态的和不变的池配置在平衡系统性能要求和系统功率和热耗散要求方面不是有效的和高效的,因为在系统运行过程中特定的事件和运行条件可能发生,这可能要求池配置被改变,以便系统继续正确地、安全地和高效地运行。在各种各样的例子中,例如,因为池的尺寸被用来在系统性能和系统功耗(和热产生)和系统性能之间保持一个适当的平衡,能够在系统运行期间响应于各种各样的外部刺激或运行条件的变化来改变池的配置(例如改变活动池和非活动池的尺寸等)将是有用的。例如,池的尺寸可能需要被改变以响应超过系统可接受的温度容许量的热条件或者响应由于电源故障或者断电而使系统由蓄电池电源供电而运行的指示。另外,由于系统运行特征的改变例如系统用户的改变,池的尺寸可能需要被改变,系统用户的改变通常影响存储系统的使用,并因而影响存储系统的功率消耗水平。
结果,在系统运行过程中有动态配置或改变存储设备的功率控制池的尺寸的需要。
发明概述本发明提供一种用来动态改变被用来控制存储设备的功耗水平的功率控制池的尺寸的方法、设备和系统。在一种实施例中,一个改变存储器功率控制池的尺寸的请求被接收。响应接收改变存储器功率控制池的尺寸的请求,在一个周期性的刷新周期内被刷新之后,存储设备被放置在一个特定的运行模式或功率状态。响应一个指示全部存储设备已经被放置在特定的运行模式的信号,功率控制池根据相应于所接收的请求的池尺寸值而被调整大小。
附图简述参考附图本发明的特点和优点将被更完全地理解,其中
图1是实现本发明的技术的一个系统的一个实施例的框图;图2显示一个具有一个存储器功耗控制机构的一个存储控制器的一个框图;图3图解一个包含一个池管理器的存储器控制单元的一个实施例的框图;图4A-4C图解一种用来管理不同功率控制池的方法的一个实施例的一个例子,功率控制池被用来记住和控制存储设备的运行状态。
图5A-5C图解一种用来管理功率控制池的方法的一个实施例的一个例子,功率控制池被用来记住和控制存储设备的运行状态。
图6显示一个用来进行标准存储器刷新操作的过程一个实施例的一个状态图;图7显示一个响应调整功率控制池的大小的请求进行刷新操作的一个过程的一个实施例的状态图;图8A-8B显示一个响应调整功率控制池的大小的请求来重新配置功率控制池的例子。
图9一个用来动态改变存储器控制池的尺寸的一个装置的一种实施例的框图;图10一个用来动态改变存储器控制池的尺寸的一个装置的一种实施例的框图;图11显示一个用来动态改变存储器控制池的尺寸的一个装置的一种实施例的框图;图12显示响应来自一个处理器的一个请求,用来动态改变存储器功率控制池的尺寸的一种方法的一个实施例的一个流程图;图13显示响应检测到硬件的系统事件,用来动态改变存储器功率控制池的尺寸的一种方法的一个实施例的一个流程图;图14显示响应一个处理器的一个请求或者响应检测到硬件的系统事件,用来动态改变存储器功率控制池的尺寸的一种方法的一个实施例的一个流程图。
详细描述在下面的详细描述中许多具体细节被陈述,以便提供本发明的一个彻底的理解。然而,对于本领域的技术人员,无需这些具体细节也可以理解和实施本发明,这是显而易见的。
在下面的讨论中,本发明的技术被用来实现一个用于动态改变存储器功率控制池的尺寸方法和设备,功率控制池被用来记住和控制各种存储器的运行状态。在一种实施例中,通常用来刷新各种存储器的刷新过程被调整,以在各种存储器响应于一个改变存储器功率控制池的尺寸的请求而被刷新之后使各种存储器进入一个特定的运行状态,例如,小睡状态。在各种存储器已经进入特定的运行状态(例如小睡状态)之后,存储器功率控制池的尺寸能够根据请求被改变为新的值。在一种实施例中,改变存储器功率控制池的请求能够被一个处理器或其他需要改变存储器功率控制池的尺寸的部件启动。在一种实施例中,改变存储器功率控制池的请求也能够,在没有系统软件干预的情况下,响应于检测到一个特定的系统事件,例如来自系统热量控制单元或者存储器热量控制单元的指示温度已经超过门限值的一个信号而被启动。本发明的技术适用于任何用于存储器功率管理的方案、方法和系统。然而,本发明不局限于存储器的功率和热量管理,而能够被用于其他设备的功率和热量管理。
图1显示一个系统配置的一种实施例的一个框图,在该系统配置中本发明的技术被实现。系统配置100包括多个中央处理器(CPUs)101a-d,一个存储器控制集线器(也称为存储器控制器)111,一个P64控制器121,一个输入/输出(IO)控制器131,一个与图形子系统151连接的图形控制器141,和多个存储器161。对本说明来说,术语“处理器”或“CPU”指的是能够执行一序列指令的任何机器,应包括,但不局限于,通用微处理器、专用微处理器、多媒体控制器和微控制器等。在一种实施例中,CPUs 101a-101d是能够执行一个英特尔架构指令组的通用微处理器。CPUs 101a-101d、P64控制器121、IO控制器131、和AGP图形控制器141通过存储器控制器111访问系统存储器161。存储器控制器111,在一种实施例中,负责服务于于所有把存储器161作为目标的存储器事务。存储器控制器111可以是一个独立的部件、一个芯片组的一个集成部分、或者某个用于控制各种系统部分和系统存储器161之间的接口的较大部件的一部分。P64控制器121在多个PCI-64插槽和存储器控制器111之间提供接口。IO控制器131在存储器111和各种IO设备和包括PCI插槽和PCI代理133、多个USB端口135、多个IDE端口137、和其他IO设备139的端口之间提供接口控制。AGP图形控制器141在图形子系统151和存储器111之间提供接口控制。在下面,存储器控制器111的构造和功能被更加详细的描述。
对于本说明来说,存储器161被假定为动态随机存取存储器(DRAM)。众所周知,DRAM是一种使用易失存储单元的RAM,这些存储单元被周期性地刷新以保持数据。刷新率或者刷新频率根据使用的DRAM类型、安装的存储器的量、系统存储器的配置等而变化。在下面的讨论中,也假设使用的存储器是Mountain View,California的Rambus公司设计的RAMBUSDRAMs(也称为RDRAMs)。然而,在这里讨论的一切同样可以适用于其他类型的DRAMs,包括传统的DRAMs、快页型(FPM)DRAMs、扩展数据输出(EDO)DRAMs、脉冲扩展数据输出(BEDO)DRAMs、同步DRAMs(SDRAMs)、双数据率SDRAMs(DDRSDRAMs)、同步连接DRAM(SLDRAMs)等。
图2显示图1中描述的存储器控制器111的一种实施例的一个框图。在这个实施例中,存储器控制器111包含三个主要的块,主机组(HG)211、IO组(IOG)221和数据组(DG)231。在一种实施例中,主机组211起存储器控制器111的主机接口的作用。被主机组211执行的一些功能包括从CPUs101a-101d接收处理请求、向IO组221和数据组231产生适当的命令、和向主机(CPUs 101a-101d)发送接收到的响应。此外,主机组221也负责向数据组231产生探听请求,从数据组231接收探听响应,和向主机发送探听响应。在一种实施例中,IO组221起存储器控制器111的IO接口的作用。更具体地,IO组221处理在数据组231和P64控制器121、IO控制器131及图形控制器141之间的接口功能。在一种实施例中,数据组(也称为数据群集)231负责发送和完成所有瞄准系统RDRAMs的存储器处理。在一种实施例中,数据组231包含两个逻辑子部件一个数据单元(Dunit),它执行通过RAMBUS通道控制器(RAC)向RDRAM设备发送事务的复杂机制,和缓冲单元(Bunit),它负责排序、缓冲和递送通过存储器总线(也称为RAMbus)被从RDRAM采集或压入RDRAM的数据。Dunit接收来自Bunit的存储器读、写和刷新请求。这些请求被解码以确定被瞄准的存储页面的状态。然后,Dunit产生完成存储器存取请求所必须的适当的命令或指令(也称为包),并将包排成队以通过存储器总线发送。此外,Dunit也使横过位于核心频率和存储器总线的基频之间的时钟界限的数据传递同步,。在一种实施例中,Bunit从主机组211和IO组221接收对存储数据的请求,并象上面描述的那样,向Dunit产生适当的存储器存取请求。
图3显示存储器控制器111的一种实施例的一个框图,该存储器控制器111包括一个刷新单元311、一个包产生器321、和一个池管理器331。下面,这些部件的功能和它们之间的接口被更详细地描述。如上所述,存储器控制器(MCU)111负责以及时的方式处理从各种源接收的存储器事务,从系统100内的各种源接收的存储器事务包括存储器数据读和写请求。在一种实施例中,MCU 111将从各种源接收的读和写请求翻译成被通过存储器总线与MCU 111连接的RDRAM设备理解的命令。被RDRAM设备理解的命令(即RDRAM本地请求)也被称为RDRAM请求包或在这里简称为包。图3所示的包产生器321是MCU 111内的部件,它负责产生和向RDRAM设备发送包。
在一种实施例中,MCU 311也负责RDRAM维护操作,例如刷新和校准。如上所解释的,RDRAMs,和任何其它DRAM技术一样,使用易失性存储单元,为了保持数据这些存储单元必须被周期性地刷新。MCU 311通过向RDRAMs发送包以指示它们刷新它们的数据或者校准它们的电特性在有规律间隔内进行这些维护操作。在一种实施例中,MCU 111使用图3所示的刷新单元311去进行RDRAM的维护操作。在一种实施例中,刷新单元311维护一个用来记住刷新或者校准周期之间的时间间隔的计数器。当刷新单元311已经决定需要对RDRAMs进行一个维护周期时,它向包产生器321发出一个请求,包产生器依次产生合适的RDRAM请求包,这些包引起RDRAM设备去进行要求的维护操作(例如,刷新或者校准)。
池管理器331负责管理RDRAM设备的功耗水平(在这里也称为运行方式或功率状态)。如上面所解释的,为了在系统性能和系统功率使用之间保持平衡,存储器被设计成具有对应不同性能水平(即速度)的不同的运行方式。在本设施方案中,RDRAMs被设计成具有若干运行方式活动、备用、小睡和掉电。RDRAMs的这四个不同的运行方式由两个因素区分它们的功耗水平和它们的性能水平。例如,在活动方式的RDRAM准备立即服务于一个事务处理。然而,在活动方式下的功耗也比其他方式下的功耗高。相应于四个不同运行方式的RDRAMs的四个不同的功耗水平和性能水平被在下面的表1中举例说明,其中功耗栏中的4对应RDRAM的功耗的最高水平,而性能水平栏中的1对应性能的最高水平。
表1
如表1所说明的那样,RDRAMs在活动方式下比在其它三个方式下运行的快。然而,RDRAMs在活动方式下也比在其它方式下消耗更多的功率。通过将一个或多个RDRAMs放置在较低功率方式下(例如,备用、小睡、或掉电方式),存储器设备(例如,本论述中的RDRAMs)的功耗还有热产生能够被减小。如上面所解释的,在现代的通常复杂的计算机系统中功率和热量管理在系统设计和实现中已经越来越关键。为了在系统性能和系统功耗(也对应热耗散)之间获得某个可接受的平衡,系统典型地被配置成只有固定数目的存储器设备(例如,RDRAMs)被允许运行在活动方式。如上面所解释的,取决于应用和系统运行环境,被保持在活动方式的存储器设备的数目是变化的。例如,在一个使用12个RDRAM存储器设备的系统配置中,某些系统约束可能规定在一个给定的时刻最多4个RDRAM设备能被允许是活动的。如上所述,在活动方式、备用方式、或者小睡方式等方式的设备的最大数目,能够被系统用户在系统启动或复位时通过系统BIOS确定。使用设备池(也称为功率控制池)的一个定义,哪个设备处于哪个运行方式(例如活动、备用、小睡等)的管理能被实行,设备池被用来记住和控制各个存储器设备的运行方式或功率状态。在本论述中一个池指的是在特定运行方式或功率状态的存储器设备的一个映射或列表。
继续本论述,如上面所注解的那样,当运行在活动方式下时RDRAMs能消耗大量的功率并产生大量的热。作为结果,在可行的情况下让尽可能多的RDRAMs运行在低功率状态将是有益的。在一个实施例中,MCU 111通过将一定数量的存储器设备(例如RDRAMs)置于小睡方式下实现这种节省,在小睡方式下存储器设备比在活动方式或备用方式下消耗较少的功率并且因而产生较少的热。处于小睡方式的RDRAMs能保留它们的数据但是不能将它们的数据提供给MCU111,直到它们被移到要么活动方式要么备用的方式。如上面所解释的那样,为了在系统性能和功耗之间保持一个平衡,在任何给定的时刻只能某个固定数目的存储器设备可能被置入小睡方式。
因此,该任何给定的时刻只有某固定数量的存储器设备被保持在活动或备用方式。计算机程序不知道任何给定存储器设备的运行方式或功率状态。因此,在特定的存储器设备能够服务于一个存储器事务之前该给定的存储器设备的运行方式可能需要被MCU改变。
再参考图3,MCU 111中的池管理器331是负责在RDRAM设备的功耗和它们相应的性能水平之间保持平衡的部件。更具体地,池管理器331记住各个存储器设备的运行方式,并在包括各种运行方式允许的最大设备数、哪个设备被要求去服务于存储器事务等多种因素的基础上,采取适当的行动将存储器设备的从一种运行方式移动到另一种运行方式。在一种实施例中,为了改变特定存储器设备的运行方式,池管理器331要求包产生器向该存储器设备发送一个适当的指示存储器设备进行要求的操作(例如,从活动方式变为备用方式、或者从备用方式变为小睡方式等)的包(即命令)。
如上所述,在一种实施例中,池管理器331通过多个池的使用来保持各个设备的运行方式的信息(即哪个设备是处于活动方式、备用方式或小睡方式),其中各个池指的是在一个特定运行方式或功率状态的设备的一个映射或列表。在一种实施例中,池管理器331使用三个池去记住存储器设备的运行方式。其中的一个池,被称为活动池或池A,被用来记住哪个设备运行在活动方式。另一个池,被称为备用池或池B,被用来记住哪个设备运行在备用方式。剩下的池,被称为小睡池或池C,被用来记住哪个设备运行在小睡方式。三个池中的每个池包含关于处于特定运行方式或功率状态的设备的参考信息。在一种实施例中,活动池和备用池中的信息被存储在一组寄存器内,而小睡池被在活动池或备用池中没有发现的存储器设备的减去的子集描述。尽管在这里被讨论的本发明的技术使用池作为保持存储器设备的运行方式的信息的机理的一个例子,对于本技术领域的技术人员,本发明等同地用于保持和控制存储器设备的运行方式的其他方法、机理或协议是显而易见的。
在一种实施例中,相对于RDRAM设备的运行模式配置,MCU 111能具有两个运行方式。在第一种方式中,所有的设备被假设要么处于活动方式要么处于备用方式。在这种配置中,所有活动设备被池A(活动池)中的标记描述,池B不被使用,池C减去地包含所有没有在池A中被描述的设备。结果,在池C中被描述的所有设备被假设处于备用方式。在第二种运行方式中,存储器设备可以处于活动、备用或小睡方式。在这种配置中三个池A、B和C全部被利用。池A描述全部活动设备、池B描述处于备用方式的设备、池C减去地被用来描述既没有在池A中也没有在池B中的全部设备,并被假设处于小睡方式。
在一种实施例中,池管理器331使用真正的最近最少使用(LRU)算法去维护在池A和池B中被描述的设备的列表。图4A-4C举例说明了当MCU 111运行在第二种运行方式时(即存储器设备可以处于活动、备用和小睡方式)三个池A、B和C的配置和维护的一个例子。在这个例子中,池A和池B被假设被设置成尺寸为4,因而分别可以描述不多于4个存储器设备。在这个例子中也假设系统中有标号从A到L的12个存储器设备。
图4A显示在系统运行期间的一个给定时刻三个池A、B和C的配置。如图4A所示,在这个阶段,设备A-D被在池A中描述,因而被假设处于活动方式。设备E-H被在池B中描述,因而被假设处于备用方式。设备I-L被在池C中描述,因而被假设处于小睡运行方式。在本例子中,在列表的顶部被列出的设备(例如图4A中的设备A)被认为是最近最多使用的,而在列表的底部被列出的设备(例如,图4A中的设备D)被认为是最近最少使用的。使用图4A中的池描述,在读或者写设备D中的一个位置后,三个池A、B和C将被变为图4B中的这些描述。描述设备D的“D”标记将移到池A中的最近最多使用的位置(列表的顶部),而池B和C将不受影响,因为关于设备D的变化不影响各个池中允许的设备数。假设接下来设备I被访问,那么池A、B和C将被变为图4C所示的那些状态。在这种情况下,设备I被移到池A中的最近最多使用的位置,池A中最近最少使用的设备C被移到设备B中的最近最多使用的位置,以便保持池A中的活动设备的最大允许数。类似地,由于设备C被从活动方式变为备用方式,池B中的最近最少使用的设备(即设备H)被从池B中逐出,并减去地被移到池C中,以便保持池B中设备的最大允许数。因此图4C描述在相应的设备已经被变为它们合适的运行方式后三个池A、B和C的池描述。
图5A-5C举例说明当MCU 111运行在第一种方式(即,存储器设备被假设要么运行在活动方式要么运行在备用方式)时三个池A、B和C的配置和维护的一个例子。在这个例子中,池A被假设最大尺寸为4,这意味着在给定的时刻不多于4个设备被允许处于活动方式。池B没有被使用。在这个例子中也假设系统中中有标号从A到L的12个存储器设备。
图5A显示在系统运行期间的一个给定时刻三个池A、B和C的配置。如图5A所示,在这个阶段,设备A-D被在池A中描述,因而被假设处于活动方式。设备E-L被减去地在池C中描述(即,由于这些设备没有在池A中被描述,它们被假设处于备用方式)。再一次,在本例子中,在池A的顶部被列出的设备(例如图5A中的设备A)被认为是最近最多使用的,而池A的底部被列出的设备(例如,图5A中的设备D)被认为是最近最少使用的。使用图5A中的池描述,在读或者写设备D中的一个位置后,三个池A、B和C将被变为图5B中描述的这些样子。描述设备D的“D”标记将移到池A中的最近最多使用的位置(列表的顶部),而池B和C将不受影响,因为关于设备D的变化不影响各个池中允许的设备数。假设接下来设备I被访问,那么池A、B和C将被变为图5C所示的那些状态。在这种情况下,设备I被移到池A中的最近最多使用的位置。因为设备I被从备用方式变为活动方式,池A中最近最少使用的设备C被逐出池A,并减去地移到池C,以便保持池A中活动设备的最大允许数。因此图5C描述在相应的设备已经被变为它们合适的运行方式后三个池A、B和C的池描述。
如上面所解释的那样,为了在系统性能、功耗和热安全之间保持一个平衡,需要将某些数量的设备保持在活动方式,而将剩下的设备保持在较低功率状态(例如,备用或小睡方式)。更具体地,由于运行在各个功率状态下的存储设备的数目影响系统的性能、功耗和热产生水平,将活动、备用和小睡池的尺寸保持在某些初始的门限内以在系统性能、功耗和热产生之间保持某个平衡是有用的。传统地,在各个池中允许的设备的最大数目在启动或复位时使用系统BIOS来配置或确定,并且在系统运行期间保留不变。这样一个静态的并且不可改变的池配置,尽管在性能和功耗之间提供一个初始的系统平衡,在平衡系统性能要求和功耗及热耗散方面不是有效和高效的。这是因为在系统运行期间各种事件和运行条件可能出现,为了使系统继续正确、安全和高效地运行,将要求初始的池配置被改变。换句话说,由于系统温度环境或系统使用强度的改变可能要求被池管理器331控制的存储器的运行方式改变,传统的池配置和控制方法不解决计算机运行和可靠性的动态特征。在不同的例子中,因为池的尺寸被用来在系统性能、系统功耗和热产生之间维持一个平衡,能够响应各种外部激励和运行条件的变化而在系统运行期间改变池的尺寸是有用的。例如,系统过热能够被用作一个触发以将一些活动存储器设备置为小睡方式,以便减小存储器设备的热产生能力。此外,池的尺寸可能需要被改变以响应一个表明由于某些电源失败或断电系统正由较低功率源(如电池)供电运行的指示。此外,由于系统运行特性例如系统用户数目的改变等的其它变化,池的尺寸可能需要被改变。
如上面所解释的那样,因为在运行期间改变池的尺寸产生的大的复杂性,在系统运行期间池配置通常被保持不变。这是因为除了改变或刷新用来保持存储器设备的运行方式或功率状态的寄存器中的值之外,适当的命令必须被发送给RDRAM设备以将它们从一种状态过渡为另一种状态。这被存储器设备的状态匹配MCU 111内所反映的状态的要求成为必要。本发明通过开发刷新单元311进行的刷新操作的特性解决了这个问题,刷新操作要求存储器设备在规则的时间间隔移动到已知的功率状态。更具体地,为了进行刷新操作,在刷新要求被送给存储器设备之前,所有存储器设备被激活(即变为活动方式)。刷新单元311,在进行周期性的刷新操作中,通常要求,刷新一完成,设备就被包产生器321还原到它们激活前的状态。
图6显示一个用来进行正常刷新操作的一个过程的一种实施例的一个状态图,它反映在刷新单元311和包产生器321内都存在的存储器的状态。在块601中刷新单元311进入一个等待状态。当用来记住刷新之间的时间间隔的刷新计数器到达一个预定的目标数时,刷新单元311启动刷新操作。在块611中,一个刷新请求被启动,开始刷新操作。如上所述,刷新单元通过向包产生器321发送一个唤醒或激活所有存储器设备的请求开始刷新操作,包产生器321接着向存储器设备发布适当的包。在块621中,一个唤醒所有存储器设备的请求被启动。响应一个指示所有设备已经被激活的信号,一个刷新所有存储器设备的请求在块631被启动。响应一个指示所有设备已经被刷新的信号,一个将激活前处于小睡方式的设备置于小睡方式的请求在块641处被启动。在设备被恢复到它们激活前的状态之后,刷新单元311在块601重进入等待状态以等待下一个刷新周期。
为了考虑功率控制池的动态配置(即在系统运行期间改变池的尺寸),本发明调整上面描述的刷新过程,以便代替仅仅将激活前处于小睡方式的设备置于小睡方式,在刷新过程结束时所有设备被置于一个特定的方式,例如小睡方式。在系统运行期间当这样一种池配置被期望时,这种方法允许池管理器331简单地在一个刷新操作完成时重置它的池。在一种实施例中,调整的刷新过程被来自池管理器331的一个要求对一个池重新调整大小或重新配置的请求启动。在一种实施例中,当调整的刷新过程结束时所有设备被置于小睡方式时,包产生器321和刷新单元用信号通知池管理器331去指示池现在可以被重新配置或重新初始化。一旦池已经被重新配置或重新初始化,由于在设备的状态知道之后能够维护池,池管理器331能够继续它的正常运行。
图7举例说明一个响应一个重新配置或调整功率控制池大小的请求,的调整的刷新过程的一个实施例的一个状态图。在块701中刷新单元311进入一个等待状态。当用来记住刷新之间的时间间隔的刷新计数器达到一个预定的命中数时,刷新单元311启动刷新操作。在块711中,一个开始刷新操作的刷新请求被启动。如上所述,刷新单元通过向包产生器321发送一个唤醒或激活所有存储器设备的请求开始刷新操作,包产生器接着向存储器设备发布合适的包。在块721中,一个唤醒所有存储器设备的请求被启动。响应一个指示所有设备已经被激活的信号,一个刷新所有存储器设备的请求在块731中被启动。在这个例子中,假设池管理器已经启动了一个重新调整池尺寸的请求。因为一个重新调整池尺寸的请求已经被启动,代替进行到块741以恢复激活前处于小睡方式的设备的状态,本过程进行到块751在刷新结束时将所有存储器设备置为小睡方式,并且当所有设备都被置为小睡方式时,用信号通知池管理器。本过程重进入块701中的等待状态以等待下一个刷新周期。如上所述,通过调整刷新过程,动态池配置可以被实现。图8A-8B显示响应一个调整池大小的请求三个池A、B和C的配置的一个例子。在这个例子中,活动池将被调整大小到1,备用池也将被调整大小到1。图8A显示了系统运行中某时刻三个池的状态。图8B显示一个调整池大小的请求完成时三个池的状态。如图8B所示,池A(活动池)和池B(备用池)都是空的,所有存储器设备被在池C(小睡池)中描述。池管理器现在可以恢复它的正常运行以根据池的新尺寸维护池。
图9A一个用来动态改变被用来维护和控制存储器设备的运行方式的功率控制池的尺寸的一个装置的一种实施例的一个框图。在一种实施例中,功率控制单元931和DRAM控制单元941被包含在存储器控制单元921内,存储器控制单元921使用这里描述的本发明的技术动态地调整功率控制池的大小。在一种实施例中,功率控制单元931包含一个负责维护和控制功率控制池的尺寸和存储器设备的运行方式的池管理单元(即一个池管理器)。在一种实施例中,DRAM控制单元941起控制命中存储器设备的各种存储事务的作用,也进行各种维护操作例如上面描述的刷新和校准操作。在一种实施例中,DRAM控制单元941包括一个刷新单元和一个例如图3中所描述的包产生器。一个或多个处理器部件(例如CPUs)被与功率控制单元931相连以发送调整池尺寸的请求。如上所述,在系统运行期间,响应系统运行和条件的各种变化,例如系统热环境或系统使用水平的变化,改变功率控制池的尺寸可能是需要的或有益的,以便在系统性能、功耗和热产生之间保持一个平衡。当这种变化被检测到时,处理器911向功率控制单元931启动一个调整功率控制池大小的请求。在一种实施例中,响应接收一个调整池大小的请求,在功率控制单元931内的池管理器将向DRAM控制单元941启动一个请求,以停止服务于存储事务直到所有DRAMs已经被刷新。如上所述,在这种情况下,池管理器也将指示DRAM控制单元951一个调整池大小的请求已经被启动,因此在刷新完成时所有存储设备将被置为小睡方式。更具体地,DRAM控制单元941将执行上面描述的调整的刷新过程,从而在刷新完成时所有存储器设备将被置为一个已知状态(例如小睡方式)。然后一接收到来自DRAM控制单元941的一个表明所有存储器设备已经被刷新并被置为一个特定的状态(例如小睡方式)的信号,功率控制单元931内的池管理器就将以新的尺寸把池重新初始化。重新初始化池之后,池管理器现在可以恢复它的正常运行,以响应从处理器911接收的请求,维护和控制使用新池尺寸的池。在一种实施例中,处理器911能够以重新调整大小的请求提供指示新尺寸的信息。在另一种实施例中,新尺寸信息能被预先存储,并且池管理器能够根据从处理器911接收的请求的类型决定那一个新尺寸将被使用。
应用本发明的能够进行功率控制池的动态配置的技术,当需要时系统软件或程序能被调整或设计成监视系统热条件并向功率控制单元产生合适的改变池的尺寸的请求,如图9所示,以保持系统运行在一个安全的温度区。不幸的是,热引起的错误可能阻止系统的正常运行,因而可能妨碍系统软件具有补救任何潜在的毁坏条件的机会。更具体地,系统软件不能响应足够快或者由于热错误可能自己变得不可运行。因为这个原因,需要没有系统软件干预下动态改变功率控制池的尺寸。为解决该问题,本发明的技术能够被用来提供一个机制,该机制允许存储器控制器以可配置的方式响应各种热条件,能够快速地并且没有系统软件干预的情况下减小存储器设备的功耗水平。在一种实施例中,上面描述的池管理器能够被连接以接收一个指示热条件超出某门限水平(即热超载)已经被检测到的信号。指示这样一个热超载条件的信号能来自在组件或系统级别负责监视热条件的外部硬件或热传感器。此外,指示热过载条件的信号能够来自监视存储器设备本身的热条件的其它硬件。在一种实施例中,任何一个条件将引起系统硬件去响应将功率控制池的尺寸改变成某个安全值,以便快速地减小存储器系统的功耗水平。在一种实施例中,池的安全尺寸值能够被系统硬件提供并保存在寄存器中。例如,指示活动、备用和小睡池的尺寸的信息能够被系统硬件提供并被保存在一个池管理器可以存取的寄存器中。当一个热过载条件被检测到时,池管理器将根据保存在寄存器内的安全尺寸值调整池的大小,以将存储器设备的功耗水平减小到一个被认为是安全的水平。被认为是安全的池的尺寸,当然,能够依据系统配置、不同功率状态下存储器设备的功耗水平、热过载条件的严重性等而变化。此外,能够为不同的系统事件或它的变化提供不同水平的安全尺寸值。
图10显示用来响应各种系统事件在没有系统软件的干预的情况下动态地改变功率控制池的尺寸的一个装置的一种实施例的一个框图。在一种实施例中,池管理器1020负责在没有系统软件干预的情况下控制功率控制池的尺寸。在一种实施例中,一个或多个寄存器被用来保存被认为是当需要响应被OR门1030的输出信号指出的某些特定的事件而调整池的大小时将被池管理器1020使用的安全尺寸的池的尺寸。安全尺寸或者它们的变化,在一种实施例中,能够提供或者被系统软件编程。在一种实施例中,到OR门1030的输入能够来自两个不同的源。到OR门的两个输入的其中一个可以来自某个在部件级或系统级负责监视特定部件的热条件的硬件设备。到OR门1030的另一个输入,在一种实施例中,来自一个热传感器或负责监视存储器系统热条件的硬件设备。在一种实施例中,OR门1030的输出信号被用来向池管理器1020指出一个热过载条件已经被检测到。响应OR门1030的输出信号,池管理器1020向DRAM控制器1040启动一个如上所述的使用保存在寄存器1010内的安全尺寸值调整池大小的请求。
图11显示一个响应来自一个处理器(如图9所示)的重新调整大小的请求或者响应硬件检测的指出一个热过载条件(如图10所示)的信号用来动态改变功率控制池的尺寸的装置的一种实施例的一个框图。在这种实施例中,从处理器1110接收的任何一个重新调整大小的请求或者来自OR门1130的一个信号将触发池管理器1120去向DRAM控制器1140产生一个使用上面描述的调整的刷新过程重新调整池的大小的请求。如上所说明的,如果处理器启动一个重新调整大小的请求,新的尺寸值能够在请求时被处理器1110提供。新尺寸值也能够被预先保存并由池管理器1120根据从处理器1110接收到的请求的类型确定。如果OR门1130的输出用信号通知一个热过载条件,将被使用的安全尺寸值能从寄存器1105取回。在一种实施例中,寄存器1105能够被系统软件编程。因此,在这种配置中,池管理器1120能够响应来自处理器1110的一个重新调整大小的请求或者响应一个来自OR门1130的指示一个热过载条件的信号,动态改变池的尺寸。
图12举例说明用来响应来自处理器或者其他系统部件的一个重新调整大小的请求,动态改变功率控制池的尺寸的一种方法的一个实施例的一个流程图。方法1200在块1201开始接着进行循环1205。在循环1205中,一个池管理器等待一个来自处理器的重新调整池的大小的请求。一接收到来自处理器的重新调整大小的请求,池管理器退出循环1205以在块1209中向DRAM控制器启动一个重新调整池大小的请求。在循环1213中,当刷新存储器设备的时间来到时DRAM控制器退出等待循环1213。在块1217中,响应池管理器产生的重新调整大小的请求,一个上面描述过的调整的刷新过程被进行以在刷新结束时将所有存储器设备置于一个特定的运行方式或功率状态(例如小睡方式)。在一种实施例中,调整的刷新过程包括激活所有存储器设备、刷新所有存储器设备和在刷新之后将所有存储器设备置为小睡方式。在块1221中,一接收到一个指示所有存储器设备已经被置为一个已知的、特定的运行方式或功率状态(例如小睡方式)的信号,池就被池管理器重新初始化。本方法于是在块1291进行到结束。
图13举例说明响应系统事件在没有软件干预的情况下动态改变功率控制池的尺寸的一种方法的一个实施例的一个流程图。方法1300在块1301开始接着在块1305进入一个等待状态。如果一个指示一个热过载条件的信号被检测到,本方法于是退出循环1305以在块1309产生一个将池的尺寸重新调整成一个安全的尺寸值的请求。在循环1313中,当刷新存储器的事件到来时DRAM控制器退出等循环1313。在块1317中,响应池管理器产生的重新调整大小的请求,一个上面描述过的调整的刷新过程被进行,在刷新结束时将所有存储器设备置为一个特定的运行方式或功率状态(例如小睡方式)。在一种实施例中,调整的刷新过程包括激活所有存储器设备、刷新所有存储器设备和在刷新之后将所有存储器设备置为小睡方式。在块1331中,一接收到一个指示所有存储器设备已经被置为一个已知的、特定的运行方式或功率状态(例如小睡方式)的信号,池就被池管理器使用对应检测的热过载条件的安全尺寸值重新初始化。如上面所描述的,在一种实施例中,响应一个热过载条件或者它们的变化将被使用的安全尺寸值能够被系统软件编程并被保存在池管理器可存取的寄存器中。本方法于是在块1391进行到结束。
图14显示响应从一个处理器(上面参照图12描述过的)接收的重新调整大小的请求或者响应一个指示一个热过载条件(如参考图13所描述的)的硬件检测的信号,用来动态改变功率控制池的尺寸的一种方法的一个实施例的一个流程图。该方法1400从块1401开始,接着进行判定块1405。在判定块1405中,如果没有热过载条件被检测到,本方法进行判决块1409。否则本方法进行块1413。在判决块1409中,如果没有来自处理器的重新调整大小的请求,本方法循环回判决块1405。否则本方法进行到块1413。在块1413中,池管理器启动一个重新调整大小的请求。在循环1417中,当刷新存储器设备的时间到来时DRAM控制器退出等循环1417。在块1421中,响应池管理器产生的重新调整大小的请求,一个上面描述过的调整的刷新过程被进行,在刷新结束时将所有存储器设备置为一个特定的运行方式或功率状态(例如小睡方式)。在一种实施例中,调整的刷新过程包括激活所有存储器设备、刷新所有存储器设备和在刷新之后将所有存储器设备置为小睡方式。在块1431中,一接收到一个指示所有存储器设备已经被置为一个已知的、特定的运行方式或功率状态(例如小睡方式)的信号,池就被池管理器使用对应触发重新调整大小请求的条件的新尺寸值来重新初始化。如果重新调整大小请求是被处理器触发的,将被使用的新尺寸值要么当处理器初始化时被处理器提供,要么预先保存并由池管理器根据从处理器接收的请求类型确定。如果重新调整大小的请求被指示一个热过载条件的信号触发,相应检测的热过载条件的安全尺寸值被池管理器用来重新初始化池。如上面描述的,在一种实施例中,响应一个热过载条件或者它们的变化将被使用的安全尺寸值能够被系统软件编程并被保存在池管理器可存取的寄存器中。本方法于是在块1491进行到结束。
本发明连同优选实施例已经被描述。显然,根据前面的描述,许多可供选择的办法、调整、变化和使用对于本领域的技术人员将是明显的。
权利要求
1.一种被用来管理存储系统中存储器设备的功耗的、动态改变功率控制池的尺寸的方法,该方法包括接收一个改变功率控制池的尺寸的请求;在存储器设备在一个周期性的刷新周期内被刷新之后,它们被置为一个特定的运行方式;和响应一个指示存储器设备已经被置为一个特定的运行方式的信号,根据与请求相联系的新尺寸值,改变功率控制池的尺寸。
2.权利要求1的方法,其中改变功率控制池的请求由一个处理器部件启动。
3.权利要求1的方法,其中改变功率控制池的请求由一个控制设备产生的信号启动。
4.权利要求3的方法,其中控制设备产生的信号被用来指示一个超出一个预定门限值的热条件。
5.权利要求3的方法,其中控制设备是一个监视存储器设备的温度传感器。
6.权利要求3的方法,其中控制设备是一个监视其它设备的温度传感器。
7.权利要求1的方法,其中接收包括接收一个来自一个处理器的改变功率控制池的尺寸的请求。
8.权利要求1的方法,其中接收包括检测一个来自一个热量控制单元的、指示在存储器系统之外的一个热过载条件的信号。
9.权利要求1的方法,其中接收包括检测一个来自一个热量控制单元的、指示存储器系统的温度已经超出一个门限值的信号。
10.权利要求1的方法,其中将存储器设备置为一个特定的运行方式包括进行一个周期性的刷新周期,包括激活存储器设备;在存储器设备被激活之后刷新存储器设备;和在存储器被刷新之后将存储器设备置为一个特定的运行方式。
11.权利要求1的方法,其中改变功率控制池的尺寸包括刷新功率控制池以反映存储器设备已经被置为一个特定的运行方式;和将功率控制池的尺寸改成为与接收的请求相联系的新尺寸值。
12.权利要求1的方法,其中特定的运行方式是小睡方式。
13.权利要求2的方法,其中新尺寸值和请求一起由处理器提供。
14.权利要求2的方法,其中新尺寸值是预先保存的。
15.权利要求3的方法,其中新尺寸值被保存在一个存储部件中。
16.权利要求15的方法,其中存储部件包括一个或多个寄存器。
17.一种被用来管理存储系统中存储器设备的功耗的、动态改变功率控制池的尺寸的装置,存储器设备具有活动方式和非活动方式,该装置包括用来接收改变功率控制池的尺寸的请求的接收逻辑电路;用来响应一个改变功率控制池的尺寸的请求,在存储器设备在一个周期性的刷新周期内被刷新之后,将存储器设备置为非活动方式的特定刷新逻辑电路;和用来在存储器设备已经被刷新并被置为非活动方式之后,将功率控制池的尺寸改变成一个与请求相联系的新尺寸的刷新逻辑电路。
18.一种被用来管理存储系统中存储器设备的功耗的、动态改变功率控制池的尺寸的装置,该装置包括用来接收改变功率控制池的尺寸的请求的装置;用来在存储器设备在一个周期性的刷新周期内被刷新之后,将存储器设备置为特定运行方式的装置;和用来响应一个指示存储器设备已经被置为一个特定的运行方式的信号,根据一个与请求相联系的新尺寸值改变功率控制池的尺寸的装置。
19.一种用来动态平衡一个包含多个动态随机存取存储器(DRAM)的存储系统的性能和功耗水平的装置,多个DRAM设备具有至少两个不同的第一和第二运行方式,第一运行方式对应一个比第二个运行方式高的性能和功耗水平,该装置包括用来根据第一个数保存第一个列表的逻辑电路,第一个列表指示哪个DRAM设备处于第一运行方式,第一个数指示允许处于第一个运行方式的DRAM设备的最大数目;用来接收一个将第一个数该变成一个新值的请求的逻辑电路;和用来响应改变第一个数的请求刷新第一个列表和第一个数的逻辑电路。
20.一种用来动态平衡一个包含多个动态随机存取存储器(DRAM)的存储系统的性能和功耗水平的存储器控制器,多个DRAM设备具有至少两个不同的第一和第二运行方式,第一运行方式对应于一个比第二个运行方式高的性能和功耗水平,该存储器控制器包括用来周期性地刷新多个DRAM设备的刷新逻辑电路;和用来控制多个DRAM设备的性能和功耗水平的一个池管理器,包括用来根据第一个数保存第一个列表的逻辑电路,第一个列表指示哪个DRAM设备处于第一运行方式,第一个数指示允许处于第一个运行方式的DRAM设备的最大数目;用来接收一个将第一个数该变成一个新值的请求的逻辑电路;和用来响应改变第一个数的请求刷新第一个列表和第一个数的逻辑电路。
21.一种用来动态平衡一个包含多个动态随机存取存储器(DRAM)的存储系统的性能和功耗水平的系统,多个DRAM设备具有至少两个不同的第一和第二运行方式,第一运行方式对应于一个比第二个运行方式高的性能和功耗水平,该系统包括一个处理器;和一个与处理器相连接的存储器控制器,存储器控制器包括用来周期性地刷新多个DRAM设备的刷新逻辑电路;和用来控制多个DRAM设备的性能和功耗水平的一个池管理器,包括用来根据笫一个数保存第一个列表的逻辑电路,第一个列表指示哪个DRAM设备处于第一运行方式,第一个数指示允许处于第一个运行方式的DRAM设备的最大数目;用来接收一个将第一个数该变成一个新值的请求的逻辑电路;和用来响应改变第一个数的请求刷新第一个列表和第一个数的逻辑电路。
22.一种用来动态平衡一个包含多个动态随机存取存储器(DRAM)的存储系统的性能和功耗水平的系统,多个DRAM设备具有至少两个不同的第一和第二运行方式,第一运行方式对应于一个比第二个运行方式高的性能和功耗水平,该系统包括一个用来启动一个改变允许在第一种运行方式的DRAM设备的数目的请求的处理器;一个用来产生一个指示一个超出一个热量门限值的热条件的信号的热量控制单元;一个与存储器和热量控制单元相连接的存储器控制器,该存储器控制器包括用来周期性地刷新多个DRAM设备的刷新逻辑电路;和用来控制多个DRAM设备的性能和功耗水平的一个池管理器,包括用来根据第一个数保存第一个列表的逻辑电路,第一个列表指示哪个DRAM设备处于第一运行方式,第一个数指示允许处于第一个运行方式的DRAM设备的最大数目;用来接收一个将第一个数该变成一个新值的请求的逻辑电路;用来检测指示热条件的信号的逻辑电路;和用来响应来自处理器的请求或指示热条件的信号而刷新第一个列表和第一个数的逻辑电路。
全文摘要
本发明提供一种用来动态改变被用来控制存储器设备的功耗水平的功率控制池的尺寸的方法、设备和系统。在一种实施例中,一个改变存储器功率控制池的请求被接收。响应接收到的改变存储器功率控制池的请求;在周期性的刷新周期内被刷新后,存储器设备被置为一个特定的运行方式或功率状态。响应一个指示所有存储器设备已经被置为特定的运行方式的信号,根据对应接收请求的池尺寸值,功率控制池被调整大小。
文档编号G06F1/32GK1359485SQ00809768
公开日2002年7月17日 申请日期2000年5月26日 优先权日1999年6月29日
发明者B·B·范宁, J·R·维尔科克斯, K·S·福 申请人:英特尔公司