动态更新自适应的空闲计时器的制作方法

文档序号:6609066阅读:236来源:国知局
专利名称:动态更新自适应的空闲计时器的制作方法
技术领域
本发明涉及动态更新自适应的空闲计时器。
背景技术
计算设备通常包括用于控制例如处理器对存储器的访问以读写数据的存储器控制器。例如,存储器可以配置为动态随机存取存储器(DRAM),其提供计算设备的“主存储器”,用于存储供处理器使用的数据,如计算机可执行指令以及用于根据计算机可执行指令进一步处理的数据等等。
一种用来提高对DRAM的访问效率的技术是在对存储器的通信已经空闲了预定时间量(这可以称为“空闲时间”)时关闭主存储器的“页面”。因此,对存储器的未来请求将利用“页面为空”的时机执行,从而不会遇到在打开另一个页面之前要关闭该页面的额外开销。例如,当未来请求导致“页面错失(page miss)”(例如,与打开的页面不同的页面进行下一个存储器事务处理)多于“页面命中(page hit)”时,将遇到性能增益。因此,如果“错失”页面已经关闭,那么请求另一个页面的开销将减到最少。
然而,用来设置空闲时间的传统技术是在启动时由基本输入输出系统(BIOS)设置,并且在存储器控制器的操作期间没有变化。因此,这些传统技术是静态的,并且因此不能解决存储器控制器所遇到的数据改变。

发明内容
一种装置,包括基于先前所做的对存储器关闭页面的判决来在具有多个超时值的标度中转换的存储器控制器。
一种装置,包括使用基于标度的技术来基于先前所做的对存储器关闭页面的判决在多个超时值之间转换的存储器控制器,其中至少一个所述转换的发生是基于是否已经达到预定数量的计数,在此期间,所述存储器控制器没有遇到存储器通信而对所述存储器关闭特定的所述页面。
一种系统,包括光标控制设备;存储器;存储器控制器,在通信上耦合到所述存储器,用于服务于存储器请求并使用基于标度的技术来基于先前所做的对所述存储器关闭页面的判决在多个超时值之间转换;以及处理器,在通信上耦合到所述光标控制设备和所述存储器控制器,其中所述处理器响应从所述光标控制设备接收的输入提供所述存储器请求。
一种方法,包括获得对存储器的页面访问的历史;通过存储器控制器观察所述页面访问中哪个页面访问导致页面无效命中、页面有效错失、页面无效错失或页面有效命中;以及基于所述观察管理所述存储器控制器对所述存储器的访问。


图1是可操作以便执行动态更新空闲计时器技术的计算设备的示例性实现的示意图。
图2是更详细地示出图1的动态空闲计时器的示例性实现的示意图。
图3示出可操作以便控制图2的空闲计时器的计数器的状态机的示例性实现。
图4示出用于图2的空闲计时器的倒数计时器的示例性实现。
图5示出在图2的动态空闲计时器的动态更新仲裁器和动态更新跟踪器之间的示例性交互。
图6是用于跟踪页面转换并对图5中的动态更新仲裁器生成“好”和“坏”判决指示的图2中的页面信息跟踪器的示例性状态机的示意图。
图7是“预充电”和“预充电所有”请求技术的示例性实现的示意图。
图8是描绘其中利用页面访问历史来管理对存储器的访问的示例性实现中的过程的流程图。
在论述中的示例中利用相同的附图标记来表示相同的结构和部件。
具体实施例方式
在以下论述中,描述了可以提供和/或利用动态更新自适应的空闲计时器的示例性设备。然后描述了可以由这些示例性设备使用和在不脱离本发明的精神和范围的情况下可以由其它设备使用的示例性过程。
示例性设备图1示出计算设备102的示例性实现100,它可操作以便使用动态更新自适应的空闲计时器技术。计算设备102可以采用各种方式来配置,如传统的台式计算机(例如台式PC)、服务器、笔记本计算机、个人信息设备等等。因此,计算设备102可以配置为具有显著的处理和存储器资源的“厚重”计算设备(例如服务器)到具有相对有限的处理和/或存储器资源的“轻薄”计算设备(如个人信息设备)。还设想各式各样的其它配置。
如图1所示的计算设备102包括处理器104、存储器106、存储器控制器108和光标控制设备110。光标控制设备110(例如鼠标、触摸屏、跟踪板等等)经由总线、例如经由图形存储器控制器集线器中的主机总线在通信上耦合到处理器104。处理器104可以采用各种方式配置,因此不受形成该处理器的材料或在其中使用的处理机制的限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(IC))等等组成。此外,尽管示出单个处理器104,但该处理器104可以表示通过使用总线在通信上耦合到存储器控制器108的多个处理器。
类似地,存储器106可以表示计算设备102的“主存储器”,它可以采用各种方式配置。例如,存储器106可以配置为DRAM,其可以包括同步DRAM(SDRAM)、存储器总线式DRAM(RDRAM)、双倍数据速率同步DRAM(DDR DRAM)等等。
存储器控制器108配置为服务于“存储器请求”(下文又可称为“请求”),本文所用的“存储器请求”是指在启动器和存储器106之间传送命令和地址。例如,“读取存储器请求”是指从存储器106传送数据到启动器。例如,处理器104可以启动读取存储器请求(例如,响应于从光标控制设备110接收的输入)以便从存储器106传送数据到处理器104。“写入存储器请求”是指从启动器传送数据到存储器106。继续先前实例,处理器104可以启动写入存储器请求以便从处理器104传送数据到存储器106。通过使用关于地址等的传送的预定协议,可以将控制信息(例如,存储器请求的优先级和读/写特性)作为存储器请求的一部分传送。
在一个实现中,存储器控制器108配置为在存储器106和处理器104之间通过使用“页面”来传送数据。例如,“页面”可以指存储在实现存储器106的一个或多个DRAM的行内的数据块。经由存储器控制器108提供的行地址访问该实例中的行,然后提供所寻址的特定数据的列地址。也可以使用另一个列地址来访问该行内的其他数据,而不必再次提供行地址,这可以称为“页面命中”。因为可以在列访问之间不提供行地址的情况下以及在不关闭当前没有被访问的“打开”页面的情况下执行列访问,所以在访问数据时,依照此方式(可以称为“页面模式”)从相同行读取或写入额外数据提供较少的等待时间。因此,这可以提高存储器106的使用效率。
当存储器读取请求命中“打开”页面时,该存储器读取请求被发送到为它提供服务的存储器控制器108。在一个实现中,存储器控制器108将当前的存储器请求的页面(例如地址的行部分)记录在存储器控制器108中的页面寄存器内。如果在空闲时间周期(对此的进一步论述可以在下文中找到)内检测到另一个存储器请求并且该请求指向与当前的存储器请求相同的页面,这可以通过比较记录在页面寄存器中的页面来检测,那么可以在不关闭该页面的情况下继续当前的数据传送。
然后,存储器控制器108可以经由总线将选定的存储器请求的地址连同对应的控制信息一起传送到存储器106。在一个实现中,控制信息包括用于指示写入哪个数据字节的写入启用线(例如,双倍数据速率(DDR)协议的数据掩码)、用于指示正在传送的地址的行部分的行地址线、以及用于指示正在传送的列地址的列地址线。如果请求是读取请求,那么存储器106提供选定数据。
当输入代理访问另一个页面(即“错失”)时,然后关闭当前页面(如果有的话),并且通过提供存储器请求的行地址、然后提供对应列地址来访问该另一个页面。
如前所述,一种可以用来提高对存储器106的访问效率的技术是当对存储器的通信已经空闲了预定时间量(这可以称为“空闲时间”)时,对存储器106关闭页面。因此,对存储器的未来请求将利用“页面为空”的时机执行,从而不会遇到在打开另一个页面以前要关闭该页面的额外开销。
为了确定是否以及何时对存储器106关闭页面,存储器控制器108可以使用动态空闲计时器112以及记分板114。记分板114配置为跟踪存储在队列116中的将由存储器控制器108处理的对存储器106的未决请求的存在。例如,记分板114可以跟踪所寻址的存储器106的内存列(rank)和存储体(bank)。在没有未决的存储器请求时,记分板114可以向动态空闲计时器112提供指示以开始关闭当前页面的倒数计时。
动态空闲计时器112配置为使用通过跟踪之前所做的页面关闭的判决来关闭页面和寻址动态变化的代码流的技术。动态空闲计时器112还可以在操作期间动态地调节以补偿“坏”页面关闭判决和“好”判决用于增加随后的“好”判决的数量。例如,动态空闲计时器112可以使用“定标”技术,它基于先前所做的关闭页面的判决在预定超时值的标度中转换,而不管这些判决是“好”还是“坏”。因此,动态空闲计时器112可以基于先前的代码流预测即将到来的代码流的行为,并因此通过使用超时值来调节空闲时间,利用空闲时间来确定何时关闭页面。对动态空闲计时器112的进一步论述可以参见下图。尽管图1的示例性实现100示出代表独立功能性的部件,但在不脱离本发明的精神和范围的情况下,可以将这些部件进一步结合(例如,处理器104和存储器控制器108可以由相同的管芯形成)、划分等等。
图2是更详细地示出图1的动态空闲计时器112的示例性实现200的示意图。图2的动态空闲计时器112包括五个部件,它们标为空闲计时器202、页面信息跟踪器204、动态更新仲裁器206、动态更新跟踪器208和页面关闭调度器210。
空闲计时器202表示用于计算打开和关闭页面的空闲周期的数量的主计数器,其被复制给每个内存列/存储体。页面信息跟踪器204跟踪当前和先前的页面状态信息并生成页面关闭判决说明,其被复制给每个内存列/存储体,其输出提供给动态更新仲裁器206和动态更新跟踪器208。
在将要执行页面关闭判决的更新时,动态更新仲裁器206为每个内存列/存储体之间的动态更新跟踪器208的所有权处理仲裁。动态更新跟踪器208可以实现为基于水印的信用/借贷跟踪器,其管理空闲计时器202的计数器的时间的递增/递减。动态更新跟踪器208还提供用于递增或递减由动态更新仲裁器206仲裁的获胜内存列/存储体的超时值的逻辑。页面关闭调度器210仲裁来自每个内存列/存储体空闲计时器202的页面关闭请求并提供请求包212到流间仲裁器214用于周期启动216。
当在存储器控制器的每个读/写队列中没有对特定内存列/存储体的未决请求时,记分板114给空闲计时器202提供指示。然后,空闲计时器202将从超时值(由动态更新跟踪器208和动态更新仲裁器206控制)开始倒数计时,并在倒数计时终止时向页面关闭调度器210提供页面关闭请求。页面信息跟踪器204基于所启动的周期的历史跟踪先前的页面状态信息和页面关闭判决,并提供更新请求到动态更新仲裁器206。动态更新仲裁器206配置为在多个来自内存列/存储体的更新请求之间仲裁,并提供获胜的内存列/存储体信息到动态更新跟踪器208以便为未来的页面关闭更新对应内存列/存储体的超时值。
图3示出可操作以便控制图2的空闲计时器202的计数器的状态机300的示例性实现。空闲计时器202是“主”计时器块,其配置为从超时值倒数计时以控制页面关闭,其控制可以由图3的状态机300执行。
该状态机包括空闲302状态、计数304状态、请求306状态和空闲计数308状态。空闲302状态是这样一种状态在该状态期间,存储器控制器108的存储器寄存器是空闲的,例如随着未决请求而打开或关闭。
计数304状态使空闲计时器202为没有未决请求的打开页面执行倒数计时。请求306状态是在空闲计时器202到时间时进入的,以便对页面关闭调度器210断言存储体的页面关闭请求。当处于这个状态时,请求保持断言,直到页面关闭调度器210提供服务为止。空闲计数308状态使得将为关闭页面执行空闲周期倒数计时,其可用于补偿具有“坏”判决的间歇突发的数据流,使得它不会影响动态更新跟踪器208的总体判决。对图3的状态机300的弧形术语描述如下所述,在此之后是对状态机300的状态之间的转换的描述。
“mrst_b”状态机300的有效低复位。
“q_noreq”没有来自每个队列116的对内存列/存储体的未决请求。
“dpgregval”特定页面(即内存列/存储体)打开。
“idle_timer”空闲计时器202是在进入计数304状态时从超时值倒数计时的实际计数器。
“infinite_override”倒数计时超时值可以设置为“无穷大”(例如“FFh”)来指示无穷大的空闲倒数计时时间以防止断言任何页面关闭请求。
“zero_override”倒数计时超时值可以设置为“零”(例如“00h”)来指示零空闲倒数计时时间用于立即的页面关闭请求。
“scr_use_dit”这是指示启用空闲计时器202的配置位。
“scr_idle_cnt_en”这是指示启用用于关闭页面的空闲周期倒数计时的配置位。
一旦复位,状态机300便进入空闲302状态。在没有来自每个队列的未决请求的页面打开、倒数计时超时值不是零(例如“00h”)或无穷大(例如“FFh”)并且启用空闲计时器202时,状态机300转换为计数304状态。这表明,内存列/存储体为伺机性页面关闭作好了准备,并且将触发用超时值加载倒数计时器。
当处于计数304状态时,空闲计时器202的计数器从超时值连续地倒数计时每个存储器时钟,直到它到达零为止。当页面在空闲计时器202终止以前关闭(例如,由于对存储器106的请求,空闲计时器202被编程为/动态地移到无穷大值,等等)时,空闲计时器202将转换回到空闲302状态。
<}0{>当满足下面的条件时,触发从计数304状态到请求306状态的转换·空闲计时器202到时间(idle_timer==0)或超时值以编程方式/动态地移到零(例如“00h”)(zero_override),以及·仍没有对那个存储体的请求(q_noreq),以及·页面仍然打开(pgregvalid)。
当处于请求306状态时,如果发布预充电是安全的(prech_safe),那么空闲计时器202对页面关闭调度器210断言页面关闭请求(pgclose_req),并且在该页面关闭时转换回到空闲302状态。换句话说,空闲计时器202断言“预充电”以关闭当前页面,并且在页面关闭时转换到空闲302状态。还应注意,在超时值是零(例如“00h”)并且立即发布预充电命令(即关闭当前页面)是安全的情况下,从空闲302状态到请求306状态存在直接弧线。
在内存列/存储体空闲并且关闭时,空闲计时器202还可起到备用计时器的作用。这在状态机300中由空闲计数308状态表示。当存储体空闲,同时没有对那个内存列/存储体的未决请求,并且该内存列/存储体是关闭时,进入空闲计数308状态。如果启用空闲计数器202(scr_idle_cnt_en),那么这触发空闲计数器202计算空闲周期的数量,在空闲周期期间,存储体关闭。每隔一定时间(scr_idle_cnt[7:0]),当“坏”页面关闭判决间隔足够长的时间量时,将“奖励(reward)”记入空闲计数器202以弥补“坏”页面关闭判决的序列,对此的进一步论述可以参见下图。
图4示出空闲计时器202的倒数计时器的示例性实现。如前所述,空闲计时器202连续地倒数计数直到它到达零为止,并且维持在那里直到加载新的超时值为止。当状态机300处于计数304状态或空闲计数308状态时,进行倒数计时。图4中示出的“dyn_cnt”和“slot_cnt”触发器(flop)在动态空闲计时器112中用作基于水印的方案的存储点。“slot_cnt”还可以用作进入8位8:1多路复用器的索引,该多路复用器包含将用于空闲计时器202的预定(如预编程)超时值(图4中示为“scr_timeout”)。应该注意,图3和4的结构被复制给内存列/存储体。
动态更新仲裁器206仲裁来自每个存储体的请求使用动态更新跟踪器208的请求。例如,动态更新仲裁器206可以审查来自每个存储体的每个有效请求,并决定最佳候选者来取得动态更新跟踪器208的所有权以更新它的“dyn_cnt”和“slot_cnt”值。以此方式,可以通过共享动态更新跟踪器208的使用来获得减少的门数。
可以使用两个层级来执行对动态更新跟踪器208的仲裁。第一层级仲裁基于第一可用算法,其中最低内存列具有最高优先权,然后是最低存储体,其可以与页面关闭调度器210相似。根据每个内存列/存储体的空闲计时器对取得资格的“idle_inc_req”执行仲裁。取得资格的“idle_inc_req”(即,空闲计数“奖赏”)描述因为空闲计时器202处于“空闲计数”状态时终止并且标度不在“中央”(例如,“20h”计数)而断言“idle_inc_req”的任一内存列/存储体。这通过不仲裁不产生标度变化的请求显著降低所仲裁的“idle_inc_req”的量。
当没有从每个存储体的页面信息跟踪器204接收到页面无效命中(PIH)、页面无效错失(PIM)、页面有效命中(PVH)或页面有效错失(PVM)指示时,为第一层级的获胜者赋予动态更新跟踪器208的所有权。否则,为任何断言它的页面信息状态的存储体赋予所有权的优先级。由于流间仲裁器214在给定时钟周期给予每个存储体单个周期,所以从架构观点来看,该实现假定PIH、PIM、PVH和PVM是相互独占的,但也可以设想其它实现。
嬴得仲裁的存储体将在下一个时钟周期内将下列属性向外多路复用以及发送到动态更新跟踪器208·页面无效命中(PIH);·页面有效错失(PVM);·奖赏指示(奖赏),如果启用用于动态空闲计时器112的奖赏,并且该奖赏包括好判决(PVH和PIM)和“idle_inc_req”,那么断言奖赏指示;·动态更新计数(dyn_cnt[5:0]);以及·在前一个时钟内许可的内存列/存储体索引。
接着,在接下来的2个时钟周期内多路复用和发送以下属性·时段计数(slot_cnt[2:0]);·零计数超过(zero_override);·无穷大计数超过(infinite_override);以及·两个时钟周期以前许可的内存列/存储体索引。
动态更新跟踪器208跟踪由空闲计时器202所做的“好”和“坏”页面关闭判决的数量,其实例如下表所示。例如,可以将动态更新跟踪器208实现为6位标度。在一个实现中,无论它何时触发阈值或者是否断言复位,计数器都预置为标度的中央(例如“20h”)。

这些判决用于如下所述地在预定计数器值之间定标。当由于超时值太“大”(即,超时值所涉及的时间量)而遇到预定数量的“坏”判决时,执行到具有相对较少时间量的超时值的转换(例如,在超时值的标度中“下降”一个级别)。例如,当在一个PIH之后是四个PVM并且将低水印阈值设置为比“20h”低三个计数(即在1Ch)时,在遇到PIH时,通过基于6位水印的标度执行到“21h”的转换,并且在遇到第一个PVM时移动“回”到“20h”。也可以分别为接下来遇到的三个PVM执行到“1Fh”、“1Eh”和“1Ch”的转换。因为将低水印设置为“1Ch”,所以它将在低相位上断开(trip)6位水印,以便使“slot_cnt”为那个内存列/存储体选择被编程为描述相对较少时间量的超时值的较低时段。一旦断开,基于6位水印的标度将复位回到那个内存列/存储体的“20h”计数。
当启用“奖赏”并且在一个PIH之后是三个PVM、一个“好”判决和一个PVM时,将执行如下转换。标度将从“20h”变为“21h”(用于PIH),到“20h”(第一PVM),到“1Fh”(第二PVM),到“1Eh”(第三PVM),到“1Fh”(“好”判决),并且最后到用于第四PVM的“1Eh”。由于在此实例中将低水印编程为“1Ch”,因此因为低水印被一个“好”判决抵销,所以低水印没有断开,并且因此它将采用更多PVM来断开低水印。这将解决附加预充电命令(即,关闭页面)的需要。当遇到预定数量的“好”判决时,执行类似的转换,以便在超时值的标度中“上升”一个级别到具有相对较大时间量的超时值。
在观察到页面无效错失或页面有效命中时,执行到涉及更靠近(例如更靠近一个级别)标度的中央(例如,“20h”)的时间量的另一个超时值的转换。这解决由附加预充电或激活命令提高的等待时间。此外,在已经发生预定数量的计数,在此期间在存储器和存储器控制器之间没有发生通信时,执行转换来移动到更接近于标度的中央。如同先前关于图3的空闲计数308状态所描述,这弥补其中观察到在一系列相对广泛隔开的“坏”判决以后在关闭页面上相对较长的不活动周期的情况。
如前所述,动态更新跟踪器208的所有权由动态更新仲裁器206仲裁。一旦确立所有权,便将获胜内存列/存储体的更新信息向外多路复用并发送到空闲计时器202以便更新“dyn_cnt”和“slot_cnt”。使用立即页面信息来在下一个时钟周期内更新那个内存列/存储体的空闲计时器202中的“dyn_cnt”标度。在下一个时钟周期内,更新那个内存列/存储体的“slot_cnt”。
动态更新跟踪器208也可以包含两个可编程水印级别,例如“高”和“低”水印。如果到达“高”水印,那么“slot_cnt”移动到“较高”时段,例如在标度中描述相对较大超时值的级别。通常,将较高时段编程为大于当前时段的超时值,因此这将增大由空闲计时器202使用的超时值。同样地,在到达低水印时,“slot_cnt”移动到较低时段(例如,在标度中描述相对较小超时值的级别),因此减小空闲计时器202的超时值。如果将任一时段的超时值编程为零(例如“00h”)或无穷大(例如“FFh”),那么可以对时段移动封顶以便限制时段范围,即,标度的范围。例如,可以编程八个时段(即级别)的时段范围。
如果满足下列条件,那么用于获胜内存列/存储体的动态更新跟踪器208的标度可以复位到标度的中央(例如“20h”)断言复位,或高水印断开,或低水印断开。
对动态更新跟踪器208和动态更新仲裁器206之间的交互的进一步论述可以参见下图。
图5示出在动态更新仲裁器206和动态更新跟踪器208之间的示例性交互500。根据图6的状态机600,从存储器控制器108的页面寄存器生成PIH、PIM、PVH和PVM指示,其中图6示出用于跟踪页面转换的页面信息跟踪器204的示例性状态机600。
当状态机600处于PIH、PIM、PVH或PVM状态时,生成页面信息。Wait_Valid(等待有效)和Wait_Invalid(等待无效)状态用于使页面信息跟踪器204保持处于未决状态,直到页面从PVM或PIH/PIM恢复为止,以便防止由于先前判决而产生错误记入。例如,根据先前PVM记入一个激活命令或根据先前PIH记入一个读/写启动将弥补来自上述PVM/PIH的惩罚。
下面规定页面信息跟踪器的指示的细节。当遇到下列情况时断言页面无效命中(PIH)那个内存列/存储体的页面寄存器无效(!pgregvalid),以及对那个内存列/存储体启动激活命令(setvalid),以及先前的行地址与当前的行地址相同(samelaunch)。
当遇到下列情况时断言页面无效错失(PIM)那个内存列/存储体的页面寄存器无效(!pgregvalid),以及对那个内存列/存储体启动激活命令(setvalid),以及先前的行地址与当前的行地址不相同(!samelaunch)。
当遇到下列情况时断言页面有效命中(PVH)那个内存列/存储体的页面寄存器有效(pgregvalid),以及对那个内存列/存储体启动读/写命令(dlaunchrdwrcmd*samerkbk),以及在前一个周期中没有对那个内存列/存储体断言页面关闭请求(!pgcls_req_f)。
当遇到下列情况时断言页面有效错失(PVM)那个内存列/存储体的页面寄存器有效(pgregvalid),以及对那个内存列/存储体启动预充电或预充电所有命令(clrvalid),以及同意来自队列之一的请求(q_req_gnt),以及在前一个周期中没有对那个内存列/存储体断言页面关闭请求(!pgcls_req_f),以及在至少2个周期内断言用于那个内存列/存储体的预充电安全(presafe_ff),以及不同意刷新命令(!refresh_gnt)。
如前所述,动态空闲计时器100还包括页面关闭调度器210,其收集来自每个内存列/存储体的每个页面关闭请求,并且为到流间仲裁器214的页面关闭请求仲裁最佳候选者。在一个实现中,页面关闭调度器210存在两级仲裁,例如根据存储体和根据内存列。
第一级仲裁基于第一可用请求为在相同内存列中的每个存储体(例如从存储体0到存储体7)就最佳候选者作出决定。第二级仲裁基于第一可用请求为每个内存列(例如从内存列0到内存列3)就最佳候选者作出决定。在此实例中,这隐含了内存列0的存储体0、内存列1的存储体0、内存列2的存储体0、内存列3的存储体0、内存列0的存储体1、内存列1的存储体1等等的仲裁顺序。
页面关闭调度器210也可以为特定的内存列请求“预充电所有”周期(例如到流间仲裁器214的边带信号),该内存列具有两个或两个以上请求页面关闭的存储体(potential_prechall_rk[3:0]),以及在该内存列中的每个存储体是请求页面关闭(pgclose_req[31:0])或者页面是无效的(!pgregvalid[31:0]),并且在无效页面上发布预充电是安全的(prechln_safe[31:0])。
“预充电所有”请求可以取代来自其它存储体/内存列的页面关闭请求。在一个实现中,当对一个以上内存列断言多个“预充电所有”请求时,可以服务于最低的内存列。图7示出该技术的示例性实现。
示例性过程以下论述描述可以利用先前描述的系统和设备实现的动态更新自适应的空闲计时器技术。将这些过程示为一组指定由一个或多个设备执行的操作的块,它们不一定局限于所示通过相应块执行操作的顺序。
图8描绘可以由图1的存储器控制器108使用的示例性实现中的过程800。获得对存储器的页面访问的历史(方块802)。例如,可以使用页面信息跟踪器204来跟踪页面访问。通过存储器控制器观察哪个页面访问产生页面无效命中、页面有效错失、页面无效错失或页面有效命中(方块804)。因此,存储器控制器108可以确定哪些判决是“好” (例如,页面无效错失或页面有效命中)或“坏”(例如,页面无效命中或页面有效错失)。基于上述观察管理存储器控制器对存储器的访问(方块806)。例如,可以使用基于标度的技术来在包括多个超时值的标度的级别(即时段)之间转换。
结论虽然已经以结构特征和/或方法动作特有的语言描述了本发明,但应理解,所附权利要求中定义的发明不一定局限于所述的具体特征或动作。更确切地说,这些具体特征和动作是作为实现所要求的发明的示例性形式而公开的。
权利要求
1.一种装置,包括基于先前所做的对存储器关闭页面的判决来在具有多个超时值的标度中转换的存储器控制器。
2.如权利要求1所述的装置,其特征在于,所述存储器是动态随机存取存储器(DRAM)。
3.如权利要求1所述的装置,其特征在于,当由于一个所述超时值涉及太大的时间量而遇到与关闭页面的好判决呈杠杆关系的预定数量的坏判决时,所述存储器控制器从一个所述超时值转换为另一个涉及相对较少时间量的所述超时值。
4.如权利要求1所述的装置,其特征在于,当由于一个所述时间值涉及太小的时间量而遇到与好判决呈杠杆关系的预定数量的坏判决时,所述存储器控制器从一个所述超时值转换为另一个涉及相对较大时间量的所述超时值。
5.如权利要求1所述的装置,其特征在于,当观察到页面无效错失的好判决时,所述存储器控制器从一个所述超时值转换为另一个涉及更接近所述标度的中央的时间量的所述超时值。
6.如权利要求1所述的装置,其特征在于,当观察到页面有效命中的好判决时,所述存储器控制器从一个所述超时值转换为另一个涉及更接近所述标度的中央的时间量的所述超时值。
7.如权利要求1所述的装置,其特征在于,当发生预定数量的计数,在此期间,在所述存储器和所述存储器控制器之间没有发生通信时,所述存储器控制器从一个所述超时值转换为另一个涉及更接近所述标度的中央的时间量的所述超时值。
8.如权利要求1所述的装置,其特征在于,用于在所述标度中转换的时段计数是指数的。
9.如权利要求1所述的装置,其特征在于,所述存储器控制器基于所述先前判决的可变样本大小在所述标度中转换。
10.一种装置,包括使用基于标度的技术来基于先前所做的对存储器关闭页面的判决在多个超时值之间转换的存储器控制器,其中至少一个所述转换的发生是基于是否已经达到预定数量的计数,在此期间,所述存储器控制器没有遇到存储器通信而对所述存储器关闭特定的所述页面。
11.如权利要求10所述的装置,其特征在于,所述先前判决包括用于对所述存储器关闭页面的好判决。
12.如权利要求11所述的装置,其特征在于,所述好判决包括页面无效错失和页面有效命中。
13.如权利要求10所述的装置,其特征在于,所述先前判决包括用于对所述存储器关闭页面的坏判决。
14.如权利要求13所述的装置,其特征在于,所述坏判决包括页面无效命中和页面有效错失。
15.一种系统,包括光标控制设备;存储器;存储器控制器,在通信上耦合到所述存储器,用于服务于存储器请求并使用基于标度的技术来基于先前所做的对所述存储器关闭页面的判决在多个超时值之间转换;以及处理器,在通信上耦合到所述光标控制设备和所述存储器控制器,其中所述处理器响应从所述光标控制设备接收的输入提供所述存储器请求。
16.如权利要求15所述的系统,其特征在于,所述先前判决包括页面无效命中、页面无效错失、页面有效命中和页面有效错失。
17.如权利要求15所述的系统,其特征在于,所述存储器控制器包括用于管理标度以便在超时值之间转换的动态更新跟踪器;以及用于为所述动态更新跟踪器的所有权处理仲裁的动态更新仲裁器。
18.一种方法,包括获得对存储器的页面访问的历史;通过存储器控制器观察所述页面访问中哪个页面访问导致页面无效命中、页面有效错失、页面无效错失或页面有效命中;以及基于所述观察管理所述存储器控制器对所述存储器的访问。
19.如权利要求18所述的方法,其特征在于,所述管理是通过在时段的集合中转换来执行的,其中每个集合具有超时值。
20.如权利要求18所述的方法,其特征在于,所述管理是基于由所述页面无效错失和所述页面有效命中指示的关闭存储器的页面的好判决以及由所述页面无效命中和所述页面有效错失指示的关闭所述存储器的页面的坏判决来执行的。
全文摘要
本文提出动态更新自适应的空闲计时器的实施例。动态空闲计时器配置为使用通过跟踪之前所做的页面关闭的判决来关闭页面和寻址动态变化的代码流的技术。动态空闲计时器还可以在操作期间动态地调节以补偿“坏”页面关闭判决和“好”判决用于增加随后的“好”判决的数量。动态空闲计时器可以例如使用“定标”技术,它基于先前所做的关闭页面的判决在预定超时值的标度中转换,而不管这些判决是“好”还是“坏”。因此,动态空闲计时器可以基于先前的代码流预测即将到来的代码流的行为,并因此通过使用超时值来调节空闲时间,利用空闲时间来确定何时关闭页面。
文档编号G06F13/16GK101071403SQ20071010357
公开日2007年11月14日 申请日期2007年3月30日 优先权日2006年3月30日
发明者C·H·德, S·卡里纳哈利, Z·博金 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1