降低存储器访问等待时间的存储器访问调度方法和装置的制作方法

文档序号:6428171阅读:265来源:国知局
专利名称:降低存储器访问等待时间的存储器访问调度方法和装置的制作方法
技术领域
本发明涉及存储器控制器,更具体地,涉及用于降低存储器访问等待时间以及提高带宽的方法和装置。
背景技术
诸如动态随机存取存储器(DRAM)的现代存储器被用于整个计算机工业。存储器被组织成页。各存储器页在许多连续存储器单元中包含数据。诸如DRAM的存储设备被进一步组织成对于每个DRAM设备少量的存储块(bank,例如4个存储块)。这些设备的每一个都具有对于每个存储块的许多页。一次只能从存储块访问单页。在存储块中的某页可以被访问之前,必须使用“激活”命令打开该页。该激活命令也被称为“行(row)”命令。要求打开页的存储器请求被称作页空(page-empty)访问请求。对已经被打开的页的存储器请求被称作页命中(page-hit)访问请求。页可以使用预充电(pre-charge)命令而被关闭。
如果当页P0打开时收到一个访问页P1中的单元的请求,而页P1正好与P0位于同一个存储器存储块,则在页P1可以被打开之前,页P0必须首先被关闭。当在所需的页可以被打开之前必须关闭一个页时,会发生诸如这样的页冲突。这种情况被称作页错失(page-miss)访问。
页错失的存储器访问等待时间远大于页命中的。对于不同存储器存储块的页命中和页空访问可以是交错的,使得可以保持可用的数据带宽。但是,页错失访问通常导致可用的数据带宽降低。所以,对于DRAM的性能页错失尤其有害。
同步DRAM双倍数据率(SDRAM/DDR)存储器技术具有少量DRAM存储块。SDRAM/DDR存储器这种SDRAM支持在每个时钟周期的两个沿上进行数据传递,其有效地使存储器芯片的数据吞吐量加倍。由于SDRAM/DDR存储器包含少量存储器存储块,所以可能因为页错失和页空访问而导致性能瓶颈。该性能瓶颈可能导致存储器等待时间增大以及带宽降低,从而导致平台性能下降。在存储器控制器中有一个两难选择,即或者保持页打开直到页冲突发生,此时页才关闭,或者可以主动地关闭页。然而,这些技术没有一个对于所有的工作量都是最佳的。
SDRAM/DDR存储器提供了被称作自动预充电(auto-pre-charge)的机制,这种机制中,当存储器请求一完成,就可使存储器存储块自动地预充电(关闭)。这在发展更适合于SDRAM/DDR存储器设备的页关闭策略中可能是有用的。对比于发出明确的预充电命令的策略,可以看出自动预充电策略的一个优点是其消除了对于明确的预充电命令的需要。这可以降低DRAM命令总线的可用带宽。因此,就为其他命令而释放了命令总线的槽(slot)。然而,自动预充电策略不仅将全部页错失访问转换为页空访问(即,降低等待时间),而且自动预充电策略还对所有页命中访问进行同样的转换。因此,对于刚好要再次使用由于早先的请求而已经打开的页的访问,导致更长的等待时间。依赖于在访问流中出现的局部性访问的量,会导致性能大大降低。
现有的DRAM技术通常向系统中所连接的DRAM设备发出一系列DRAM命令。这些DARM命令使得DRAM设备完成各种功能,例如关闭先前打开的页(预充电)、打开新的页(激活)以及从DRAM设备读取数据或者向其写入数据。由于电的原因,对相同DRAM存储器存储块的相继命令之间必须经过一定量的时间。这种规定时间在生产商的说明书中指明,并被称作DRAM时序约束(timing constraint)。图1示出从存储器读取数据而发出的命令的示例,以及相关联的时序约束。DRAM命令流100示出从空闲DRAM存储块读(页空)。DRAM命令流105示出从具有另一打开页的DRAM存储块读(页错失)。如DRAM命令流100和105中所示地,当用于相继的存储器访问的DRAM命令被顺序发出时,DRAM子系统将在分配给时间约束的时间中保持空闲。如果这些空闲的DRAM命令总线槽没有以其他方式被使用,那么这可能导致存储器系统效率和性能的下降。


本发明通过示例的方式而非限定的方式在附图的图形中被示出,其中,类似的标号表示相似的元素。应当指出,在本公开中,对“实施例”或“一个实施例”的引用未必是指同一实施例,而这样的引用是指至少一个。
图1示出所发出的从存储器读取数据的命令的示例,以及相关联的时序约束。
图2示出包括了一个系统的本发明的实施例,该系统包括存储器控制器。
图3示出包括存储器控制器的本发明的实施例,该存储器控制器包括智能预充电过程。
图4示出明确预充电命令与具有智能自动预充电过程的本发明的实施例相比较的对比。
图5示出包括页表的本发明的实施例。
图6示出具有智能自动预充电过程的本发明实施例的方框图。
图7示出包括具有页访问预测过程的存储器控制器的本发明实施例。
图8A示出具有页访问预测过程的本发明实施例的方框图。
图8B示出具有页访问预测过程的本发明实施例的方框图。
图8C示出具有页访问预测过程的本发明实施例的方框图。
图8D示出具有对页访问预测过程的并行过程的本发明实施例的方框图。
图9示出具有微命令调度器的本发明实施例的命令流与重叠调度器和顺序调度器的比较。
图10示出具有微命令调度器的本发明实施例与简单调度器的比较,该调度器使用重叠命令调度。
图11A示出具有基于微操作的命令调度的本发明实施例的方框图。
图11B示出具有基于微操作的命令调度的本发明实施例的方框图。
图12示出具有机会性写刷新过程的本发明的实施例。
图13A示出具有机会性写刷新的本发明实施例的方框图。
图13B示出具有机会性写刷新的本发明实施例的方框图。
图14示出具有预先计算的查找表的本发明实施例。
图15示出具有面向页访问的基于块的调度过程的本发明实施例的方框图。
具体实施例方式
本发明一般地涉及用于降低由于存储器控制器调度和存储器访问的等待时间的方法和装置。参考附图,现在将描述本发明的示例性的实施例。示例性的实施例被提供用来举例说明本发明,而不应被解释为限制本发明的范围。
图2示出包括系统200的本发明的实施例。系统200包括中央处理单元(CPU)和高速缓存210、存储器控制器220、输入/输出(I/O)230、主存储器240和存储器总线250。注意,CPU和高速缓存210以及存储器控制器220可以位于同一芯片上。主存储器240可以是动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、SDRAM/双倍数据率(SDRAM/DDR)、Rambus DRAM(RDRAM)等。在本发明的一个实施例中,存储器控制器220包括智能自动预充电过程215。
图3示出具有调度装置的本发明实施例,该调度装置用于降低存储器访问等待时间并提高带宽,并包括智能自动预充电过程215。电路300包括存储器控制器部分220、写缓冲器320、读请求队列330和命令队列340。存储器控制器部分220包括智能自动预充电过程215。存储器220还包括存储器调度器。
在本发明的一个实施例中,智能自动预充电过程215允许有选择地启动自动预充电操作。通过检查在存储器控制器220以及320和330的请求队列中,是否有对打开的页的其他访问,来处理对自动预充电操作的有选择的启动。这样,就确定了是否继续进行自动预充电。如果无法检测到对打开页的其他请求,则允许自动预充电继续进行。否则,如果未检测到与随后请求的冲突,则通过使指示访问后预充电的位无效,来取消自动预充电操作。
本发明的一个实施例还提供了尽可能长地延迟对自动预充电的确定。通过尽可能长地延迟对自动预充电的确定,就增加了另一个请求访问打开页的机会。因此,可以发生更多的页命中访问。
在本发明的一个实施例中,存储器控制器220中的智能自动预充电过程215每次从读请求队列330或者写缓冲器320中选择一个请求。智能自动预充电过程215随后生成该请求所必需的DRAM命令,并将它们放置到命令队列340中。命令从命令队列340被移出到DRAM命令总线上。应当指出,本发明的其他实施例可以不用命令队列340而实现,例如调度器的有限状态机实施方式。
图4示出明确的预充电命令与具有智能自动预充电过程215的本发明实施例相比较的对比。图4定性地说明了智能自动预充电过程215如何能够通过减少页错失访问的数量(转换为页空,而减少了等待时间)以及通过减少所需要的命令带宽,而相对于一般方法来改善性能。
如在时间线410中可以看到的,第一请求415访问存储块0、页0(即B0、R0)中的单元。第二请求416访问存储块1、页0(即B1、R0)中的单元。存储器请求三417访问存储块0、页1(即B0、R1;与请求一415的存储块相同,但是存储器页不同)中的单元。时间线420具有类似的请求一415、请求二416和请求三417。但是,时间线420使用具有智能自动预充电过程215的本发明实施例。在时间线410和420中,在第一请求415之后发生第一读430。在时间线410中,当读请求440发生的时候,需要对存储块0的预充电请求(即存储块0被关闭)。然而,在时间线420中,预充电请求被取消。因此,与时间线410相比,第三请求417发生而没有延迟时间。
在本发明的一个实施例中,存储器控制器220中的智能自动预充电过程215基于变化的系统负载,而动态地确定来预充电(关闭)存储器页或者不预充电存储器页。在本发明的这个实施例中,根据存储器控制器220的请求队列中存在(或者没有)其他请求,而在开始访问存储器页的CAS操作时确定是否预充电。
在本发明的一个实施例中,基于以下情况确定预充电存储器页或者不预充电。第一个情况是存储器控制器220的请求队列是空的。也就是说,存储器控制器220在当前时间没有任何其他请求。在这种情况下,让页保持打开,并且取消与CAS命令相关联的自动预充电操作。
另一种情况是存储器控制器220的请求队列不是空的,但是请求队列不包含对于同一页的任何其他请求。在这种情况下,不取消自动预充电操作,并且当CAS操作完成时自动关闭页。
还有一种情况是存储器控制器220的请求队列不是空的,并且随后的请求被发现是对于同一页的。在这种情况下,让页保持打开,取消与CAS操作相关联的自动预充电操作。
图5示出具有页表520、多个表条目525、读请求队列530、智能自动预充电过程215和命令队列340的本发明实施例。在本发明的一个实施例中,每个页条目525包括槽序号字段(slot#field)526,该字段包含命令队列中槽的编号。槽序号字段526用来指向命令队列340中对于存储器页的先前的列地址信号(CAS)命令。一旦被初始化,每次命令队列340使移位寄存器移位,槽序号字段526就减1。槽序号字段526具有的宽度比容纳命令队列340中的全部槽所必需的位数多一位。一旦槽序号字段526滚动一遍(例如从0000到1111),则停止递减。因而,最高有效位表明其槽序号字段526是有效的还是无效的。每个页表条目还包括存储器页号529、有效性位528和关闭位527。关闭位527指示在该调度点,页是关闭的还是打开的。在本发明的一个实施例中,命令队列340具有多个条目,其中每个包含用于命令、地址和自动预充电控制位的字段。应当指出,其他已知的技术可以在本发明的其他实施例中被实现,而不脱离页表520的功能。
在本发明的一个实施例中,智能自动预充电过程215如下来使用页表条目525如果发出了对存储器页的访问命令,并且在页表中没有该页的条目,或者如果页表指示出该页当前是关闭的,则智能自动预充电过程215将一个存储块激活(ACT)命令调度到命令队列340中,并且接着将一个CAS命令调度到命令队列340中。CAS命令使得自动预充电位暂时被设置。智能自动预充电过程215更新页表条目525,以指向该CAS命令被调度到其中的槽。一旦该CAS命令到达命令队列340的头,就连同自动预充电位的当前值而发出该CAS命令。然而,如果在命令队列340中有对该页的在先访问,并且没有任何页冲突,则智能自动预充电过程215清除该页表条目所指向的命令队列340槽中的自动预充电位。智能自动预充电过程215随后为当前访问调度一个CAS命令,并更新页表条目525以指向命令队列340的这样一个槽,该CAS命令被调度到该槽中。但是,如果有页冲突,则允许通过自动预充电命令来关闭页,并且页表被更新以指示出该页被关闭。当以后要访问该页时,前述过程被重复。
图6示出具有智能自动预充电过程600的本发明实施例的方框图。当对页“P”的存储器请求到达时,过程600以框605开始,在其中确定页“P”是否与页表中同一等级(rank)存储器的同一存储块的任何其他打开的页“Q”相冲突。如果框605确实确定了页P与任一其他页Q相冲突,则过程600继续到框606,在其中设置页Q的关闭位。过程600从框606继续到框610。但是,如果框605确定页P不与另一页Q冲突,则过程600直接继续到框610。框610在页表中查找页P。过程600随后继续到框615,在其中确定是否存在页P的条目,以及有效性位是否被设置了。如果存在页P的条目,并且设置了有效性位,则过程600继续到框617。
框617确定页表中页P是否是打开的。如果框617确定了在页表中页P是打开的,则过程600继续到框619。框619确定槽序号字段526是否有效(注意,在本发明的一个实施例中,有效状态意味着最高有效位是“0”,而对于本发明的其他实施例,位的其他设定意味着槽序号字段526是有效的)。如果框619确定了槽序号字段526是有效的,则过程600继续到框665。如果框619确定了槽序号字段526无效,则过程600继续到框670。
如果框617确定了在页表中页P不是打开的,则过程600继续到框620。框620将对页P的ACT命令调度到命令队列340中。接着,框621将对页P的CAS命令调度到命令队列340中。然后,框622更新页P的页表条目525中的槽序号字段526,以使其包含该CAS命令调度到其中的槽编号。然后,框623设置命令队列340中该CAS命令的自动预充电位。然后,框624清除关闭位。
但是,如果在框610处在页表中查找页P之后,页P的条目不存在,则过程600继续到框630。框630在页表520中分配一个新的条目(例如,回收时间序号字段526中设置了最高有效位的最近最少使用的条目),并且如果必要还释放一页。然后,框635在页序号字段529中设置页P的序号。框640设置有效性位528。然后,框645清除关闭位527。然后,框650在槽序号字段526中设置最高有效位。过程600从框650继续到框605。
框665清除命令队列340中的槽中的自动预充电位,其中该槽是页P的页表条目525中的槽序号字段526所指示的槽。然后,框670将对页P的CAS命令调度到命令队列340中。然后,框675更新页P的页表条目525中的槽序号字段526,以使其包含命令队列中的槽编号,该CAS命令被调度到该槽中。然后,框676设置命令队列340中CAS命令的自动预充电位。过程600随后继续到框605。
通过基于请求队列来保持页打开或者关闭页,智能自动预充电过程215适应于工作量而提高了性能。然而,对于很少的一些工作量类型,具有智能自动预充电过程215的本发明实施例可能会降低性能。例如,一种工作量具有高局部性,但在对同一页的相继请求之间具有足够大间隔,这使得到必须在存储器命令总线上发出请求的时候,对于该页的下一个请求还没有到达。因此,智能自动预充电过程215会关闭该页,导致页空而不是页命中。
为了克服智能自动预充电过程215可能会降低其性能的工作量类型中的问题,本发明的一个实施例使用来自在先存储器请求的信息,来预测在近期是否将有对相同页的相继请求,如果这样则页应当保持打开。或者,本发明的一个实施例确定近期是否可能没有对相同页的请求,如果这样则页应当被关闭。
图7示出具有包括页访问预测过程710的调度装置的本发明实施例,该装置用于降低存储器访问等待时间并提高带宽。图7中所示的本发明实施例包括存储器控制器220、页访问预测过程710、页历史表720和页表520。页表520具有多个页表条目525。每个页表条目780具有计时器字段790。页历史表720包括多个页历史条目725。页历史条目725具有覆盖率(coverage)字段726、当前访问时期(epoch)中的无冲突访问数725、最近访问时期中的无冲突访问数728、正使用位729以及存储器页序号字段730。
页历史表720包含关于页先前被访问的信息和关于对当前打开页的访问的信息。如果该页在上次被关闭之前被尽可能长地保持打开,那么就通过跟踪有多少对该页的访问,而(在概念上)确定无冲突访问的数量。可以这样来计算次测量,即通过从在冲突之后第一次打开页开始,对同一页的访问数计数,直到该页由于冲突而被关闭。页覆盖率726是全部页中已经被访问的比例。在本发明的一个实施例中,页覆盖率726用位向量来实现,其中每一位指示页中的某个缓存线是否已经被访问了。
在本发明的一个实施例中,页历史表720中来自对页最近的访问的历史信息(最近访问时期中的无冲突访问数728)被用于预测在下一访问时期中何时关闭该页。如果该历史信息不可用(因为该页先前没有被访问过,或者很久以前被访问,以致于其信息已经从页历史表中逐出),则来自在先访问的页的历史信息(在当前访问时期中的无冲突访问数727)被用于预测何时关闭该页。
图8示出具有页访问预测过程800的本发明实施例的方框图。页访问预测过程800以框805开始,其中对于页P的请求被存储器控制器220接收。框810确定是否在页历史表720中找到了对于所请求的页“P”的匹配项。如果没有找到对于页P的匹配项,则过程800继续到框820。框820释放页历史表720中最早的条目。接着,框821使用页历史表720中被释放的条目,来分配当前请求中页序号的信息。框822将最近时期中的无冲突访问数728初始化为,页历史表720中最新建立的条目的当前时期中的无冲突访问数727。框823将当前时期中的无冲突访问数727设置为0。框824将覆盖率726设置为0。框825设置页正使用位729。
如果在历史表720中找到了页P的匹配项,则过程800继续到框811。框811检索最近时期中的无冲突访问数728和当前时期中的无冲突访问数727。框815确定页P是否已经被标记了正使用。如果页已经被标记了正使用,则过程800继续到如前面所讨论的框824。
框825完成之后,过程800继续到框830,在其中确定当前所请求的页P的调度是否造成了与相同存储块和相同等级的另一页“Q”的冲突。如果确定出存在与另一页Q的冲突,则框831关闭页Q。页Q的相关联的页历史表条目725如下来更新。在框832,最近时期中的无冲突访问数728被设置为当前时期中的无冲突访问数727。然后,框833将对于页Q的当前时期中的无冲突访问数设置为0。然后,框834将对于页P的当前时期中的无冲突访问数设置为0。然后,框835清除正使用位729。
如果不存在冲突,或者框835完成之后,过程800继续到框836。在框836中,对于页P的请求被调度。在框840中,确定对于页P的最近时期中的无冲突访问数728是否大于对于页P的当前时期中的无冲突访问数727。如果确定出最近时期中的无冲突访问数728不大于当前时期中的无冲突访问数727,则在框847关闭页P。
如果框840确定出最近时期中的无冲突访问数728大于当前时期中的无冲突访问数727,则过程800继续到框845。框845确定覆盖率是否小于100%。如果覆盖率不小于100%,则过程800继续到框847,并且页P被关闭。如果覆盖率小于100%,则过程800继续到框846,其中页P保持打开。
过程800继续到850,其中当前时期中的无冲突访问数727被递增。然后,框851更新覆盖率字段726。框855确定页是否由于冲突而被关闭。如果页不是由于冲突而被关闭,则框856清除正使用位729。如果页由于冲突而被关闭,则过程800继续到框805。
图8D示出子过程890。在本发明的一个实施例中,子过程890与过程800并行地进行。过程890以框860开始进行。框860确定页是否被打开的。如果页被打开了,则框865复位页表条目780中的计时器字段790。如果框860确定出页没有被打开,则框870确定页从最后的访问开始是否被打开超过预定时间了。如果框870确定出页从最后的访问开始已经打开超过预定时间了,则框871将页关闭。
然后,框872将最近时期中的无冲突访问数728设置为当前时期中的无冲突访问数727。然后,框873将当前时期中的无冲突访问数727设置为0。框874清除正使用位729。然后,过程890返回框860。框865完成之后,过程890继续到框860。
在一个实施例中,智能自动预充电过程215在存储器控制器220中与页访问预测过程710相结合。然而,应当注意,页访问预测过程710或者智能自动预充电过程215都可与现状(status quo)存储器调度器相耦合,以改进对是否保持页打开的决策。还应注意,页访问预测过程710还可以利用与计算机系统中可用的将来请求有关的其他信息,例如处理器或者芯片组预取器对存储器请求的传输步幅,该信息也可以被用于改进对保持页打开或者关闭页的决策,以改善存储器控制器220的性能,或者例如从处理器传递的信息。
在本发明的一个实施例中,用于降低存储器访问等待时间并提高带宽的调度装置包括微命令调度器过程。在本发明的该实施例中,具有包括在调度器中的智能自动预充电过程215和页访问预测过程710的存储器控制器220,还改进了调度来将各存储器命令处理为独立可调度的实体。在本发明的该实施例中,随后的存储器请求的存储器命令,允许被插入当前存储器请求的存储器命令之间的空闲槽中。因此,对于连续存储器请求的存储器命令变成重叠的,结果更好地利用了存储器命令总线带宽。
图9示出具有微命令调度器的本发明的实施例与重叠调度器和顺序调度器的比较。重叠存储器命令调度是基于将当前存储器请求所必须生成的一组命令作为整体来处理,存储器调度器试图将其覆盖在存储器命令的现存调度表的顶部上。
然而,这种方法太不灵活,不能在所有情况中都成功,并且对于存储器时序约束的某些值,与顺序方法相比不能表现出任何好处。这在图9中由时间线920表明。时间线920示出具有8字节突发长度(burst length)的重叠调度器,在此该调度器不能改善性能。
如在图9中能够看到的,第一动作(Act 1)是对存储块B0和行R0作出的请求。第二请求(Act 2 960)是对与Act 1不同的存储块(B1)的。在图9中从该特定命令序列可见,本发明实施例的时间线910显示出相对于具有8字节突发长度的重叠调度器(由时间线920表示)以及顺序调度器(由时间线940表示)的改进。在本发明的一个实施例中,微命令调度可以被应用于简单调度器(即顺序的)以及重叠调度器,以改善性能。
图10示出具有使用重叠命令调度的微命令调度器的本发明的实施例与简单调度器的比较。图10中的比较示出两个对不同存储块的请求(Act1和Act 2)。时间线1010示出用于重叠调度器的具有基于微操作的存储器命令调度的本发明实施例。时间线1020示出用于简单调度器的基本存储器命令调度。在本发明的一个实施例中,基于微操作的存储器命令调度独立地插入对于请求的每个可能的存储器命令,确保只考虑最小的时序约束。
但是,这并不排除在有利的时候放松(延长)某些时序约束(预充电激活延迟、tRP、和RAS-CAS延迟、tRCD)。通过允许延长这些约束,具有基于微操作的命令调度的本发明实施例更可能在连续存储器访问中进行重叠,从而隐藏部分延长,否则存储器访问会受到这些延长的影响。
图11示出具有基于微操作的命令调度的本发明实施例的方框图。过程1100以框1110开始,其中存储器控制器220从存储器请求队列530中选择下一个请求,并确定为该请求必须发出的存储器命令序列。框1120确定存储器命令序列。框1120确定出的命令序列可以是以下的命令页冲突预充电、激活CAS;页空激活,CAS;页命中CAS。
如果框1120确定了根据表查找将产生页冲突,则过程1100继续到框1125。在框1125中,具有本发明实施例的存储器调度器,在以下约束下尝试将操作调度进对于当前页的最近命令之后的第一可用命令槽中。框1130确定在所选位置插入预充电命令是否将干扰页表假定或者使其无效,在放置先前请求的存储器命令中使用这些页表假定。如果框1130确定出在该选定位置插入预充电命令将不会干扰页表假定或者使其无效,则过程1100继续到框1135。否则,过程1100继续回到框1125,以寻找下一个可用的命令槽。
如果框1130确定出在所选位置插入预充电命令将不会干扰页表假定,在放置先前请求的存储器命令中使用该页表假定,则过程1100继续到框1135。框1135确定是否考虑了对前面命令的时序约束。如果没有考虑对前面命令的时序约束,则过程1100继续回到框1125。
如果对前面命令的时序约束已经被考虑了,则过程1100继续到框1136,其中在第一可用槽中插入预充电命令。接着,过程1100继续到框1142。
如果框1120从页表查找中确定出需要页空,则过程1100继续到框1142。框1142选择用于插入激活命令的第一(下一)可用命令槽。框1143确定在所选位置插入激活命令是否将干扰页表假定或者使其无效,在放置先前请求的存储器命令中使用该页表假定。
如果框1143确定出激活命令的插入将干扰用于先前请求的页表假定或者使其无效,则过程1100继续到框1142。如果框1143确定出激活命令的插入将不会干扰用于先前请求的页表假定或者使其无效,则过程1100继续到框1144。
框1144确定是否已经考虑了对前面命令、CAS命令和数据传输的时间约束。如果对前面命令的时间约束没有被考虑,则过程1100继续到框1145。框1145插入激活命令。然后,过程1100继续到框1146,在其中插入CAS命令。
如果框1120基于存储器页表查找而确定出接着的是页命中,则过程1100继续到框1153。对于该CAS操作(读/写程序),命令被插入前面所请求的CAS操作之后、命令队列中允许的最早的位置。如果对于请求产生了激活命令,则关于激活命令的时间约束必须被考虑。
框1153将CAS命令插入到前面所请求的CAS操作之后、命令队列中允许的最早的位置(考虑时序约束)。然后,过程1100继续到框1110。
在本发明的一个实施例中,用于降低存储器访问等待时间并提高带宽的调度装置包括机会性写刷新(opportunistic write flushing)策略。在本发明的该实施例中,存储器控制器220允许具有写抢占(writepreemption)、写阻断时段(write block-out period)和非先进先出(FIFO)写选择动作的机会性写刷新。本实施例允许机会性启动写刷新序列、新的读请求一到达就进行写刷新序列的抢占、为了最小化转变周期(turnaround cycle)的写抢占发生之后的写阻断时段、以及为了最小化写请求的存储器资源消耗的非先进先出写选择。
图12示出本发明的一个实施例,其具有写缓冲器320、非先进先出选择1210、机会性写刷新1235、写阻断过程1205以及写抢占过程1225。在图12中,示为项1250的示例示出在最左边的写序列中的最初两个写之后,到达一个读请求。该读请求迅速抢占了写刷新序列。在抢先的读被服务之后,发生写阻断时段,以防止频繁的读/写转变。
图13A至图13B示出具有机会性写刷新的本发明实施例的方框图。过程1300在框1310中通过选择用于写缓冲器的阈值而开始。所选择的阈值是与实施方式相关的。框1320确定在读请求序列530中是否存在读请求。如果框1320确定出在读请求队列530中不存在读请求,则过程1300继续到框1330。框1330确定写缓冲器320中的内容是否超过了在框1310中所选择的选定阈值。如果框1330确定出写缓冲器的内容大于所选的阈值,则机会性写刷新被允许开始。
框1335启动写刷新序列。一旦写刷新序列启动,存储器控制器220就如下来从写缓冲器320选择写请求。框1340确定写请求是否将目标指向已经打开的存储器页。如果框1340发现请求将目标指向已经打开的存储器页,则框1341对该请求指定第一优先级。如果框1340没有发现写请求将目标指向已经打开的存储器页,或者框1341已经完成,则过程1300继续到框1345。
框1345确定写请求是否将目标指向空闲的存储器存储块(以避免与已经打开的页相冲突)。如果框1345确定出写请求被发现目标是空闲的存储器存储块,则框1346对这些请求指定第二优先级。过程1300继续到框1350,框1350确定是否没有发现具有第一优先级或者第二优先级的请求。如果框1350确定出没有发现具有第一优先级或者第二优先级的请求,则框1351在写缓冲器中选择最早的写请求。
如果框1350确定出发现了具有第一优先级或者第二优先级的请求,或者框1351已经完成,那么如果存在优先级框1352就按照优先级顺序刷新写请求,或者如果没有发现具有第一优先级或者第二优先级的请求的话,框1352就刷新框1351中所选择的写请求。然后,过程1300继续到框1320,并重复该序列,直到新的读请求到达读请求队列530中,或者在框1310中所选择的阈值没有被超过。
如果当存储器控制器220处于写刷新序列中时,一个新的读请求到达读请求队列530中,则存储器控制器220立即停止刷新新的写请求,并执行如下操作。在框1320确定出读请求队列530中有新的读请求之后,过程继续到框1360。框1360停止写刷新序列。过程1300继续到框1370,其中新近被接收的读请求被服务。在框1370完成之后,框1380强制进行写阻断时段。在写阻断时段期间,存储器控制器220可以服务更多的读请求,但是不能启动新的写刷新序列。该阻断时段是用来防止在读和写请求之间的频繁交替。
许多折衷方案是与精确设置阻断时段持续时间相关联的。如果阻断时段被设置得太长,则因为被强迫不能刷新对存储器的写请求,性能可能会降低。如果阻断时段持续时间被设置得太低,则可能发生在读和写请求之间的迅速交替,这可能导致增加转变并降低性能。框1390确定是否已经收到了新的读请求,以及过程1300是否仍处于阻断时段。如果框1390确定出已经收到了新的读请求,并且过程1300仍处于阻断时段,则过程1300继续到框1360。但是,如果框1390确定出已经收到了新的读请求,而过程1300不再处于阻断时段,则过程1300继续回到框1320。
在本发明的一个实施例中,用于降低存储器访问等待时间并提高带宽的调度装置包括面向页访问的基于块(page-access oriented block-based)的读请求调度。在本发明的一个实施例中,存储器控制器220使用对读请求的面向页访问的基于块的调度。在本发明的该实施例中,只要存储器控制器220准备好发出对于存储器的读请求,那它就检查在读请求队列530头部的一块请求,而不是选择在读请求队列530头部的一个请求。在计算了该块中每个请求的页访问特性之后,存储器控制器220使用计算出的特性作为对预先计算的查找表的索引,该查找表被用于确定在所选块中应当首先发出哪个具体的请求。
图14示出具有预先计算的查找表1410的本发明的实施例。通过将所确定块中各请求的页访问特性的结果散列成单一值,来完成表的索引。然后,该值被用作对预先计算的查找表1410的索引。
通过使用面向页访问的基于块的读请求调度,避免了由于过多的页冲突造成的非最优页访问序列。因此,减少了在新的页可以被访问之前,首先关闭已经打开的页所必需的额外的等待时间。
图15示出具有面向页访问的基于块的调度过程1500的本发明实施例的方框图。每当存储器控制220准备好发出新的读请求时,就在其中运行过程1500。在框1510选择块大小N。在一个实施例中,块大小N可以是2或者3。但是,应当注意,块大小N可以是任何合理的大小。在框1520中,选择读保持阈值(read-hold threshold)。
框1530确定读请求是否已经在读请求队列530中停留得超过了所选阈值。如果框1530确定出读请求已经在读请求队列530中停留得超过了所选的阈值,则过程1500继续到框1533。框1533发出对存储器的读请求。在框1533已经完成之后,过程1500继续到框1560。如果框1330确定出读请求没有在读请求队列530中停留得超过了所选阈值,则过程1500继续到框1535。
框1535从读请求队列530的前端选择一块N个请求(在框1510中所选的)。框1536使用当前存储器页表状态来计算请求将是页冲突、页空还是页命中访问。从框1536得到的结果被用于框1537。框1537从在框1536中所确定的信息创建预先计算的查找表。在框1537中所创建的预先计算的查找表1410,对于在框1536中总计的页表查找计算的每个可能值都具有一个条目。各条目的值表明在当前块中哪个请求应当首先被发给存储器。
框1540确定在所选的N块中最后的请求是否已经被框1536作用过了。如果框1540确定出所选的N块中的最后的请求还没有被框1536作用过,则过程1500继续到框1536。如果框1540确定出在所选N块中最后的请求已经被用于在框1536中计算请求状态,则过程1500继续到框1550。框1550将在框1536中计算得到的结果组合为一个总值。
在本发明的一个实施例中,使用散列函数来组合从框1536得到的个别的页查找表结果组合。在本发明的另一个实施例中,框1550使用优先编码来组合在框1536中计算得到的结果。应当注意,本领域的其他技术也可以被用于组合单独的页查找结果。
过程1500继续到框1560,其中在框1550中创建的值被用作对预先计算的查找表1410的索引。过程1500继续到框1565,其中,来自框1560的索引被用来确定所选请求中哪个应当被发给存储器。过程1500继续到框1570,其中在框1565中所确定的请求被发出。框1575保存在读请求队列530开头的N-1个未使用的请求。
上述实施例也可以被存储在设备或机器可读介质上,并由机器读取以执行指令。机器可读介质包括以机器(例如计算机)可读的形式提供(即存储和/或传输)信息的任何机构。例如,机器可读介质包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或其他形式的传播信号(例如载波、红外线信号、数字信号等)。设备或机器可读介质可以包括固态存储器设备和/或旋转的磁盘或光盘。当指令的各部分已经被分到例如通过计算机互联的不同机器中时,设备或机器可读介质可以是分布式的。
虽然已经描述并在附图中示出了某些示例性的实施例,但是应当理解,这样的实施例仅仅是对广泛的本发明的举例说明而非限制,并且本发明并不限于所示出和描述的结构和布置,因为本领域的普通技术人员可以想到其他的各种修改。
权利要求
1.一种装置,包括存储器控制器,具有用于降低存储器访问等待时间和提高带宽的调度装置。
2.根据权利要求1所述的装置,还包括耦合到所述存储器控制器的读请求队列;耦合到所述存储器控制器的命令队列;和耦合到所述存储器控制器的存储器页表,所述页表具有多个页表条目。
3.根据权利要求2所述的装置,所述多个页表条目具有这样的结构,所述结构用于存储存储器页序号、存储器页有效性状态、存储器页关闭状态和指向所述命令队列中移位寄存器中的槽的索引。
4.根据权利要求1所述的装置,其中,所述用于降低存储器访问等待时间和提高带宽的调度装置包括智能自动预充电过程。
5.根据权利要求2所述的装置,还包括耦合到所述存储器控制器的存储器页历史表,所述存储器页历史表具有多个页历史表条目。
6.根据权利要求5所述的装置,所述多个页历史表条目具有这样的结构,所述结构用于存储存储器页序号、正使用状态、第一无冲突访问数、第二无冲突访问数和覆盖率。
7.根据权利要求1所述的装置,其中,所述用于降低存储器访问等待时间和提高带宽的调度装置包括页访问预测过程。
8.根据权利要求1所述的装置,其中,所述用于降低存储器访问等待时间和提高带宽的调度装置包括微命令调度过程。
9.根据权利要求1所述的装置,其中,所述用于降低存储器访问等待时间和提高带宽的调度装置包括机会性写刷新策略,所述机会性写刷新策略具有写刷新序列的机会性启动、基于收到新的读请求的写刷新序列抢占、写阻断时段和非先进先出写选择。
10.根据权利要求5所述的装置,还包括耦合到所述存储器控制器的预先计算的查找表。
11.根据权利要求10所述的装置,其中,所述用于降低存储器访问等待时间和提高带宽的调度装置包括面向页访问的基于块的读请求调度过程。
12.一种装置,包括存储器控制器;耦合到所述存储器控制器的读请求队列;耦合到所述存储器控制器的命令队列;耦合到所述存储器控制器的存储器页表,所述页表具有多个页表条目;耦合到所述存储器控制器的存储器页历史表,所述存储器页历史表具有多个页历史表条目;和耦合到所述存储器控制器的预先计算的查找表;其中,所述存储器控制器包括用于降低存储器访问等待时间的存储器调度过程。
13.根据权利要求12所述的装置,所述多个页表条目具有这样的结构,所述结构用于存储存储器页序号、存储器页有效性状态、存储器页关闭状态和指向所述命令队列中移位寄存器中的槽的索引。
14.根据权利要求12所述的装置,所述多个页历史表条目具有这样的结构,所述结构用于存储存储器页序号、正使用状态、第一无冲突访问数、第二无冲突访问数和覆盖率。
15.根据权利要求12所述的装置,其中,所述调度过程包括智能自动预充电过程。
16.根据权利要求12所述的装置,其中,所述调度过程包括页访问预测过程。
17.根据权利要求12所述的装置,其中,所述调度过程包括微命令调度过程。
18.根据权利要求12所述的装置,其中,所述调度过程包括机会性写刷新策略,所述机会性写刷新策略具有写刷新序列的机会性启动、基于收到新的读请求的写刷新序列抢占、写阻断时段和非先进先出写选择。
19.根据权利要求12所述的装置,其中,所述调度过程包括面向页访问的基于块的读请求调度过程。
20.一种系统,包括处理器;耦合到所述处理器的存储器控制器;耦合到所述存储器控制器的总线;耦合到所述总线和所述存储器控制器的存储器;和用于降低存储器访问等待时间的调度装置。
21.根据权利要求20所述的系统,还包括耦合到所述存储器控制器的读请求队列;耦合到所述存储器控制器的命令队列;和耦合到所述存储器控制器的存储器页表,所述页表具有多个页表条目。
22.根据权利要求21所述的系统,所述多个页表条目具有这样的结构,所述结构用于存储存储器页序号、存储器页有效性状态、存储器页关闭状态和指向所述命令队列中移位寄存器中的槽的索引。
23.根据权利要求22所述的系统,其中,所述用于降低存储器访问等待时间的调度装置包括智能自动预充电过程。
24.根据权利要求23所述的系统,还包括耦合到所述存储器控制器的存储器页历史表,所述存储器页历史表具有多个页历史表条目。
25.根据权利要求24所述的系统,所述多个页历史表条目具有这样的结构,所述结构用于存储系统页序号、正使用状态、第一无冲突访问数、第二无冲突访问数和覆盖率。
26.根据权利要求22所述的系统,其中,所述用于降低存储器访问等待时间的调度装置包括页访问预测过程。
27.根据权利要求22所述的系统,其中,所述用于降低存储器访问等待时间的调度装置包括微命令调度过程。
28.根据权利要求22所述的系统,其中,所述用于降低存储器访问等待时间的调度装置包括机会性写刷新策略,所述机会性写刷新策略具有写刷新序列的机会性启动、基于收到新的读请求的写刷新序列抢占、写阻断时段和非先进先出写选择。
29.根据权利要求24所述的系统,还包括耦合到所述存储器控制器的预先计算的查找表。
30.根据权利要求29所述的系统,其中,所述用于降低存储器访问等待时间的调度装置包括面向页访问的基于块的读请求调度过程。
31.一种系统,包括处理器;耦合到所述处理器的存储器控制器;耦合到所述存储器控制器的总线;耦合到所述总线和所述存储器控制器的存储器;其中,所述存储器控制器包括用于降低存储器访问等待时间的存储器调度过程。
32.根据权利要求31所述的系统,还包括耦合到所述存储器控制器的读请求队列;耦合到所述存储器控制器的命令队列;耦合到所述存储器控制器的存储器页表,所述页表具有多个页表条目;耦合到所述存储器控制器的存储器页历史表,所述存储器页历史表具有多个页历史表条目;和耦合到所述存储器控制器的预先计算的查找表;
33.根据权利要求32所述的系统,所述多个页表条目具有这样的结构,所述结构用于存储存储器页序号、有效性状态、存储器页关闭状态和指向所述命令队列中移位寄存器中的槽的索引。
34.根据权利要求33所述的系统,所述多个页历史表条目具有存储器页序号字段、正使用状态字段、第一无冲突访问数字段、第二无冲突访问数字段和覆盖率字段。
35.根据权利要求32所述的系统,其中,所述调度过程包括智能自动预充电过程。
36.根据权利要求32所述的系统,其中,所述调度过程包括页访问预测过程。
37.根据权利要求32所述的系统,其中,所述调度过程包括微命令调度过程。
38.根据权利要求32所述的系统,其中,所述调度过程包括机会性写刷新策略,所述机会性写刷新策略具有写刷新序列的机会性启动、基于收到新的读请求的写刷新序列抢占、写阻断时段和非先进先出写选择。
39.根据权利要求32所述的系统,其中,所述调度过程包括面向页访问的基于块的读请求调度过程。
40.一种方法,包括确定或者对至少一个存储器页的自动预充电进行调度,或者阻止对至少一个存储器页自动预充电的调度;预测何时保持至少一个存储器页打开来被存储器控制器访问;在放松多个存储器命令时序约束的同时,对将多个存储器命令中的每一个独立地插入存储器命令流进行调度;执行启动机会性存储器写命令刷新序列;以及处理乱序的面向页的存储器读请求。
41.根据权利要求40所述的方法,确定或者对至少一个存储器页的自动预充电进行调度,或者阻止对至少一个存储器页自动预充电的调度的步骤包括确定第一存储器页是否与第二存储器页相冲突;确定是否存在对于所述第一存储器页的条目并且所述第一存储器页是否有效;如果存在对于所述第一存储器页的条目并且所述第一存储器页有效,则调度存储器命令,并更新多个页表条目;如果不存在对于所述第一存储器页的条目并且所述第一存储器页并非有效,则确定在第一队列中是否存在对于所述第一存储器页的第一命令;如果在所述第一队列中存在对于所述第一存储器页的所述第一命令,则调度存储器命令,并更新所述多个页表条目;以及设置预充电状态位。
42.根据权利要求40所述的方法,预测何时保持至少一个存储器页打开来被存储器控制器访问的步骤包括在存储器页历史表中查找第一存储器页;确定在第一时段和第二时段期间对于所述第一存储器页的无冲突访问;确定对于所述第一存储器页的覆盖率;确定第三时段,所述第三时段具有这样的长度,在所述时间长度期间所述第一存储器页一直打开来被所述存储器控制器访问;基于所述覆盖率、所述第一时段、所述第二时段和所述第三时段,而确定或者保持所述第一页打开用于访问,或者关闭所述第一页;以及更新所述页历史表中的多个条目。
43.根据权利要求40所述的方法,对将多个存储器命令中的每一个独立地插入存储器命令流进行调度的步骤包括基于在存储器请求命令队列中的存储器请求,确定存储器命令序列;确定对于多个存储器命令的时序约束;以及基于对于所述多个存储器命令的时序约束和页表状态,确定对所述存储器命令序列的调度顺序。
44.根据权利要求40所述的方法,执行启动机会性存储器写命令刷新序列的步骤包括一接收存储器读请求,就抢占写刷新序列;确定多个写阻断时段;以及以非先进先出顺序选择多个存储器写命令,来减少存储器资源消耗。
45.根据权利要求44所述的方法,还包括选择对于写缓冲器的阈值;确定在读请求队列中是否存在存储器读请求;如果在所述读请求队列中存在所述存储器读请求,则停止写刷新序列;如果在所述读请求队列中存在所述读请求,则实施所述多个阻断时段中的一个;如果写缓冲器内容超过了所述阈值,则启动写刷新序列;确定对于第一存储器读请求的优先级;以及调度写刷新请求。
46.根据权利要求40所述的方法,处理乱序的面向页的存储器读请求包括选择块大小;选择读保持阈值时间;确定读请求已经在读请求队列中保持的时间;如果所述读请求在所述读请求队列中保持的时间已经超过所述读保持阈值时间,则向存储器发出读请求;基于所述块大小,从所述读请求队列的开头选择一块读请求;确定所述读请求块的状态;用所述被确定的状态创建预先计算的查找表;将所述读请求块的状态组合成一个值;以及基于所述值和所述预先计算的查找表,确定要发出的读请求。
47.一种装置,包括含有指令的机器可读介质,所述指令当被机器执行时,引起所述机器进行以下操作确定或者对至少一个存储器页的自动预充电进行调度,或者阻止对至少一个存储器页自动预充电的调度;预测何时保持至少一个存储器页打开来被存储器控制器访问;在放松多个存储器命令时序约束的同时,对将多个存储器命令中的每一个独立地插入存储器命令流进行调度;执行启动机会性存储器写命令刷新序列;以及处理乱序的面向页的存储器读请求。
48.根据权利要求47所述的装置,其中,确定或者对至少一个存储器页的自动预充电进行调度,或者阻止对至少一个存储器页自动预充电的调度还包括指令,所述指令被机器执行时,引起所述机器进行以下操作确定第一存储器页是否与第二存储器页相冲突;确定是否存在对于所述第一存储器页的条目并且所述第一存储器页是否有效;如果存在对于所述第一存储器页的条目并且所述第一存储器页有效,则调度存储器命令,并更新多个页表条目;如果不存在对于所述第一存储器页的条目并且所述第一存储器页并非有效,则确定在第一队列中是否存在对于所述第一存储器页的第一命令;如果在所述第一队列中存在对于所述第一存储器页的所述第一命令,则调度存储器命令,并更新所述多个页表条目;以及设置预充电状态位。
49.根据权利要求47所述的装置,其中,预测何时保持至少一个存储器页打开来被存储器控制器访问还包括指令,所述指令被机器执行时,引起所述机器进行以下操作在存储器页历史表中查找第一存储器页;确定在第一时段和第二时段期间对于所述第一存储器页的无冲突访问;确定对于所述第一存储器页的覆盖率;确定第三时段,所述第三时段具有这样的长度,在所述时间长度期间所述第一存储器页一直打开来被所述存储器控制器访问;基于所述覆盖率、所述第一时段、所述第二时段和所述第三时段,而确定或者保持所述第一页打开用于访问,或者关闭所述第一页;以及更新所述页历史表中的多个条目。
50.根据权利要求47所述的装置,其中,对将多个存储器命令中的每一个独立地插入存储器命令流进行调度还包括指令,所述指令被机器执行时,引起所述机器进行以下操作基于在存储器请求命令队列中的存储器请求,确定存储器命令序列;确定对于多个存储器命令的时序约束;以及基于对于所述多个存储器命令的时序约束和页表状态,确定对所述存储器命令序列的调度顺序。
51.根据权利要求47所述的装置,其中,执行启动机会性存储器写命令刷新序列还包括指令,所述指令被机器执行时,引起所述机器进行以下操作一接收存储器读请求,就抢占写刷新序列;确定多个写阻断时段;以及以非先进先出顺序选择多个存储器写命令,来减少存储器资源消耗。
52.根据权利要求51所述的装置,还包括指令,所述指令被机器执行时,引起所述机器进行操作,所述操作包括选择对于写缓冲器的阈值;确定在读请求队列中是否存在存储器读请求;如果在所述读请求队列中存在所述存储器读请求,则停止写刷新序列;如果在所述读请求队列中存在所述读请求,则实施所述多个阻断时段中的一个;如果写缓冲器内容超过了所述阈值,则启动写刷新序列;确定对于第一存储器读请求的优先级;以及调度写刷新请求。
53.根据权利要求47所述的装置,其中,处理乱序的面向页的存储器读请求还包括指令,所述指令被机器执行时,引起所述机器进行以下操作包括选择块大小;选择读保持阈值时间;确定读请求已经在读请求队列中保持的时间;如果所述读请求在所述读请求队列中保持的时间已经超过所述读保持阈值时间,则向存储器发出读请求;基于所述块大小,从所述读请求队列的开头选择一块读请求;确定所述读请求块的状态;用所述被确定的状态创建预先计算的查找表;将所述读请求块的状态组合成一个值;以及基于所述值和所述预先计算的查找表,确定要发出的读请求。
全文摘要
本发明公开了一种包括存储器控制器的设备。存储器控制器被连接到读请求队列。命令队列被耦合到存储器控制器。存储器页表被连接到存储器控制器。存储器页表具有许多页表条目。存储器页历史表被连接到存储器控制器。存储器历史表具有许多页历史表条目。预先计算的查找表被连接到存储器控制器。存储器控制器包括降低存储器访问等待时间的存储器调度过程。
文档编号G06F13/16GK1735869SQ02819006
公开日2006年2月15日 申请日期2002年9月27日 优先权日2001年9月27日
发明者兰迪·奥斯本, 纳吉·阿布伦宁, 瓦姆西·马达瓦拉普, 罗摩克里希纳·哈加德黑里, 迈克尔·克罗克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1