专利名称:具有预充电、激活和读取/写入的独立仲裁的存储器接口的利记博彩app
技术领域:
本发明大体上涉及存储器接口。更特定来说,本发明针对于一种存储器接口,其用于具有拥有预充电、激活和读取/写入阶段的存储库的存储器。
背景技术:
图1说明现有技术存储器接口100。仲裁器105接收来自多个客户端110-A、110-B和110-C的存储器存取请求。仲裁器105仲裁来自不同客户端的存储器存取请求,并将一连串命令放置到命令队列115中以为每一客户端服务。命令队列115通常被实施为先进先出(first in,first out;FIFO),使得命令通过FIFO依次进行。动态随机存取存储器(DRAM)控制器120向DRAM存储器发布命令(图1未图示)。如图2所说明,DRAM存储器可包含存储器模块200,所述存储器模块具有拥有共同接口的一组记忆库。激活命令用于激活库中的行,且因此通常指定库号和行地址。接着读取或写入数据。数据通常在多个时钟周期中被作为数据块读取或写入。另外,读取或写入还包含赋予存储器芯片的库号和列地址。特定库中的行一直是开放的,直到用预充电命令将其关闭为止。众所周知,存在与执行预充电操作、激活或读取/写入相关联的时间延迟。因此,需要设计仲裁器105以考虑到用于执行预充电、激活和读取/写入操作的时间延迟。
常规上,在特定的时钟周期上,存储器模块200中仅一个库可被读取或写入。如图3所说明,常规上,在不同的记忆库之间交错对不同存储器存取请求的处理以改进效率。也就是说,当一个记忆正被读取或写入时,另一记忆库准备好进行读取或写入。
常规上,仲裁器105可尝试将命令队列115中的不同客户端的命令放置到经选定用以实现交错的一连串命令中。举例来说,如果命令在命令队列115中具有0、1和2的次序,那么命令队列115可具有指针以起始预充电、激活和读取/写入(R/W)操作,且经由DRAM控制器120以与命令队列相同的次序存取记忆库。这允许(例如)存储器命令进入命令队列,以在早期开始使记忆库准备稍后将在队列头部处进行读取/写入。举例来说,可针对在队列头部处的命令“0”执行读取/写入,针对命令“1”执行激活,且针对命令“2”执行预充电。为了支持交错,通常包含特殊的“使用中的库”跟踪硬件107以使仲裁器105跟踪仲裁历史。
现有技术存在的一个问题是,FIFO命令队列115的串行性质可使得仲裁器105难以选择避免库冲突且不浪费时钟周期的理想交错。另外,某些命令可能花费较长的存取时间,而其它命令可能具有可变的存取时间。因此,在某些应用中,仲裁器105难以作出有效利用DRAM存储器的仲裁决策,从而导致不执行生产性工作的损失的时钟周期。
现有技术存在的另一问题是由命令队列115引入的等待时间。意图是在预充电、激活与读取/写入命令之间引入足够的延迟来促进重叠库操作。过多的延迟向请求添加了不合需要的等待时间。作为一个实例,存储器接口100可包含压缩模块130,以基于标签指示源数据是被压缩还是未被压缩,来对存储器的原子单位(例如,记忆瓦片(memorytile))执行读取-修改-写入。某些类型的写入命令可能需要解压缩,从而导致更多数目的时钟周期执行完全的存储器存取操作。举例来说,读取-修改-写入可包含读取经压缩的数据,将所述数据解压缩,和将所述数据写回到存储器以允许客户端执行写入。然而,如果数据未被压缩,那么改为执行简单的写入操作,这是一个短得多的操作。因此,在需用来完成存储器存取请求的时间内存在潜在的可变性。如果这些请求中的若干请求驻留在命令队列中,那么等待时间将会不必要地高。
鉴于上述问题,研究出本发明的设备和方法。
发明内容
一种存储器接口将多个客户端耦合到具有记忆库的存储器。所述存储器接口支持至少激活决策和读取/写入决策的独立仲裁。
存储器接口的一个实施例包含库状态报导器,以报导具有记忆库的存储器的记忆库状态。激活仲裁器具有到达多个客户端的第一接口。激活仲裁器基于库状态为多个客户端仲裁激活决策。读取/写入仲裁器具有到达多个客户端和所述库状态报导器的第二接口。读取/写入器仲裁器基于库状态为多个客户端仲裁读取/写入决策。存储器控制器基于激活仲裁器和读取/写入仲裁器的仲裁决策向存储器发布激活子命令和读取/写入子命令。在一个实施方案中,还包含预充电仲裁器以为多个客户端仲裁预充电决策。
结合以下结合附图进行的详细描述,可更全面地理解本发明,附图中图1说明具有串行命令队列的现有技术存储器接口;图2说明具有记忆库的常规的DRAM模块;图3说明常规的DRAM交错;以及图4说明根据本发明的一个实施例的存储器接口。
贯穿于附图的若干视图,相似的参考标号指代相应的零件。
具体实施例方式
图4说明根据本发明的一个实施例的存储器接口400。存储器接口400为多个客户端405-A、405-B和405-C(例如,客户端0、客户端1和客户端2)服务。出于说明的目的,展示三个客户端,但将了解,涵盖任意数目的客户端。存储器接口400用于提供对于具有记忆库的存储器(例如,具有一组记忆库(例如,库0、库1、库2和库3)的DRAM存储器460)的存取。在存储器领域中众所周知,在成库的存储器中,对行的个别读取或写入需要开放记忆库并需要激活同一记忆库内的相关联的行。
在任一个时刻,客户端405-A、405-B和405-C仅具有一个由存储器接口400服务的存储器存取请求命令407-A、407-B和407-C。成库的存储器460通常经实施以基于物理存储器的行-列-库定址来存取存储器,这需要在执行读取/写入之前执行准备库的行的操作。
每一个别的存储器存取请求命令407-A、407-B或407-C因此具有存储器子命令的相关联的隐含的管线序列409-A、409-B和409-C,DRAM控制器430需执行所述隐含的管线序列以实施对于存储器460的存储器存取请求的不同阶段,所述子命令例如激活子命令(如果相应的存储器地址的库/行是关闭的)、针对存储器地址的读取/写入子命令,和预充电子命令(假设在读取/写入之后不自动执行预充电,那么所述预充电子命令用以关闭开放的行/库)。在一个实施例中,存储器存取请求命令还包含关于请求紧迫度的信息。
在一个实施例中,在任一个时刻,对于每一客户端仅仲裁一个存储器存取请求命令。然而,每一存储器存取请求命令407-A、407-B和407-C具有隐含的管线子命令409-A、409-B和409-C以用于存取成库的DRAM存储器460中的被独立仲裁的区域。举例来说,假设每一存储器存取请求命令隐含地具有预充电、激活和读取/写入子命令,那么预充电仲裁器410、激活仲裁器415和读取/写入仲裁器420处理不同的管线子命令阶段的仲裁功能。当特定客户端405-A的特定的存储器存取请求(例如,407-A)已完成其所有的子命令阶段时,接着由存储器接口400服务客户端的下一存储器存取请求。应注意,出于说明的目的,隐含的管线序列409-A、409-B和409-C被说明为包含在个别的存储器请求命令407-A、407-B和407-B中,但将了解,每一仲裁器410、415和420可推断出隐含的管线序列。
预充电仲裁器410、激活仲裁器415和读取/写入仲裁器420独立运作,且每一者具有其单独的各自的客户端接口425-A、425-B和425-C。举例来说,在一个实施例中,多路复用器用于单独地将每一客户端405-A、405-B和405-C耦合到每一客户端接口425-A、425-B和425-C,而不需要介入共同的命令队列。举例来说,可将来自每一客户端的一个存储器存取请求命令耦合到每一客户端接口425-A、425-B和425-C。针对不同的客户端405-A、405-B和405-C的存储器存取请求的预充电、激活和读取/写入子命令阶段执行独立的仲裁。因此,不同的子命令阶段的仲裁是动态的。每一仲裁器410、415和420包含防止记忆库冲突的规则,使得独立仲裁的结果是子命令阶段在不同的记忆库中有效交错。举例来说,当代表一个客户端针对读取/写入子命令存取一个记忆库时,独立的仲裁允许代表其它客户端对其它记忆库执行激活子命令阶段和预充电子命令阶段。
预充电仲裁器410检查客户端存储器存取请求命令,并仲裁预充电子命令以确定是否需要完成预充电以关闭库中的行。也就是说,预充电仲裁器410检查开放的行,并作出关于是否应在特定时钟周期上关闭开放的库(如果有的话)的仲裁决策。在一个实施例中,当存在对库的漏失(miss)时,预充电关闭,当存在来自不同客户端的对特定库的同时命中(hit)和漏失时,那么预充电仲裁器410可权衡客户端优先权,并作出关闭或不关闭库的选择。换句话说,在一个实施例中,预充电仲裁器410考虑客户端优先权,且在确定是否关闭库时也执行命中和漏失。还可存在计时器,在对某一库没有命中需求超过一段时期后,所述计时器关闭所述库。应注意,在替代实施例中,如果在读取或写入后自动发生预充电,那么可省略预充电仲裁器410。
激活仲裁器415检查客户端存储器存取请求,并仲裁激活子命令以确定在特定时钟周期需开放哪一库(和激活哪一行)。也就是说,激活仲裁器415检查库中关闭的行,并作出关于在特定的时钟周期应激活哪一关闭的行/库(如果有的话)的仲裁决策。
读取/写入仲裁器420检查客户端存储器存取请求,并仲裁读取/写入子命令以确定哪一读取/写入子命令到达库以进行读取和写入。也就是说,读取/写入仲裁器420检查激活的库/行,并作出关于应针对激活的行发布哪些读取/写入子命令的仲裁决策。在一个实施例中,在读取/写入仲裁器420中阻止对漏失的仲裁,直到命中为止。
DRAM控制器430包含库状态报导器模块435,其监视哪些库是活动的,哪些行是活动的,并监视计时参数。库状态报导器模块435产生控制信号,基于存储器460的状态情况而将所述控制信号提供给预充电仲裁器410、激活仲裁器415和读取/写入仲裁器420。在一个实施例中,被称为“联系位”的个别位用于指示已对库执行至少一次读取/写入。联系位的用途是防止预充电仲裁器关闭尚未执行读取/写入的新开放的库。举例来说,在一个实施方案中,库保持开放(在超时时期内)直到其被读取/写入为止,此时设定联系位,使得所述库适合进行预充电。在一个实施方案中,默认条件是已联系的库保持开放,以促进为来自起始初始联系的相同客户端的额外的读取/写入子命令服务。在特殊情形下,高优先权的客户端可允许预充电仲裁器关闭未联系的库以允许所述客户端的较低等待时间。
由库状态报导器435提供给预充电仲裁器410、激活仲裁器415和读取/写入仲裁器420的信息允许基于库状态知识进行独立仲裁。举例来说,为了在特定库上发生激活,所述库必须已被关闭。因此,通过在已被关闭的库之间进行仲裁来执行由激活仲裁器415作出的仲裁决策,这需要足以识别被关闭的库的库状态知识。读取/写入仲裁器420在已开放并与相同行匹配(“命中”)的库之间进行仲裁,这需要足以识别开放的库的库状态知识。仅对开放的库执行预充电。因此,预充电仲裁器410也需要足以识别开放的库的库状态知识。
在一个实施例中,预充电仲裁器410、激活仲裁器415和读取/写入仲裁器420知晓DRAM计时。也就是说,库状态报导器模块435还报导DRAM计时参数。这允许仲裁器410、415和420估计库何时将可用于预充电、激活和读取/写入操作。因此,在一个实施例中,每一仲裁器在作出仲裁决策时考虑到DRAM计时参数。举例来说,预充电仲裁器410可部分基于是否满足DRAM库预充电计时条件来作出仲裁决策;激活仲裁器415可部分基于是否满足DRAM库激活计时条件来作出仲裁决策;且读取/写入仲裁器420可部分基于是否满足DRAM库读取/写入计时条件来作出仲裁决策。
在一个实施例中,DRAM控制器430接收不同仲裁器410、415和420的仲裁决策,且DRAM控制器430接着向DRAM存储器460发布预充电、激活和读取/写入子命令。如先前所述,不同的仲裁器410、415和420具有库状态信息,它们通过所述信息来确定适当组的库/行以执行仲裁。举例来说,在特定的时钟周期上,由激活仲裁器415仲裁的客户端不被读取/写入仲裁器420仲裁,因为激活仲裁器对关闭的库进行仲裁,而读取/写入仲裁器420对激活的库/行进行仲裁。因此,虽然不同的仲裁器410、415和420独立地作出仲裁决策,但所应用的仲裁规则导致避免库冲突的有效的库交错。另外,甚至对于可变的存储器存取时间的情况来说,独立的仲裁也允许有效的交错,例如读取-修改-写入操作,或传递多个数据的请求。仲裁器也可使用库计时信息在DRAM可处理命令时接受所述命令。通过不作出过早的仲裁决策,使用最新近的客户端信息来作出较佳的选择。
仲裁决策可基于加权因子。在一个实施例中,个别的请求具有由基于客户端紧迫度(客户端需要进行存储器存取的紧迫度)和效率(在给定传递和等待时间的大小的情况下,存储器存取可能具有的效率)的权数界定的优先权。
应注意,在许多应用中,客户端可对存储器的相同区域产生存储器存取请求。因此,通常需要一旦已开放库就在可行的情况下一直将其开放。在一个实施例中,为联系位设定第一实例,其中对库执行读取/写入,并接着在可行的情况下使所述库一直开放。这允许DRAM在客户端可能返回库且没有其它客户端需要所述库的情况下保持开放。这还减少了功率消耗,原因在于减少了消耗功率的记忆库的循环。另外,这允许来自客户端的较大的传递被分裂为较小的片段,并与其它请求交错以减少争用等待时间。
在一个实施例中,读取/写入仲裁器420设定工作的量。也就是说,读取/写入仲裁器420在可编程数目的时钟内针对相同的行和库进行仲裁。可编程数目的时钟对应于分批模式。批的大小可基于DRAM计时参数。
本发明的实施例提供优于利用常规的FIFO存储器命令队列115的图1中所说明的现有技术的若干优势。因为在常规的FIFO命令队列115中实行读取和写入,所以来自客户端的需要较低等待时间的随后的请求在被服务前必须等待这些先前的请求完成。在本发明的优选实施例中,不存在命令队列115。因此,本发明的优选实施例允许接受紧迫的请求而不会有延迟。另外,通过将仲裁决策与DRAM库的状态和时序联系,本发明的优选实施例执行“即时”仲裁,仅在DRAM可接受命令时才发布所述命令。这些稍后的仲裁使用来自客户端的最新近的请求信息,并作出最佳的仲裁决策。
出于阐释的目的,以上描述使用特定的术语来提供对本发明的全面理解。然而,所属领域的技术人员将了解,并不需要特定的细节来实践本发明。因此,出于说明和描述的目的而展示对本发明特定实施例的以上描述。并不期望它们是详尽的或将本发明限于所揭示的精确形式;显然,鉴于上文的教示,可能作出许多修改和改变。选择和描述所述实施例是为了最佳地阐释本发明的原理及其实践应用,进而使得所属领域的其他技术人员能够最佳地利用本发明和具有适合所预期的特定用途的各种修改的各种实施例。期望所附权利要求书及其等效物界定本发明的范围。
权利要求
1.一种存储器接口,其包括库状态报导器,其报导具有记忆库的存储器的记忆库状态;激活仲裁器,其具有到达多个客户端的第一接口,所述激活仲裁器基于所述库状态为所述多个客户端仲裁激活决策;读取/写入仲裁器,其具有到达所述多个客户端和所述库状态报导器的第二接口。所述读取/写入器仲裁器基于所述库状态为所述多个客户端仲裁读取/写入决策;以及存储器控制器,其基于所述激活仲裁器和所述读取/写入仲裁器的仲裁决策向所述存储器发布激活子命令和读取/写入子命令。
2.根据权利要求1所述的存储器接口,其进一步包括预充电仲裁器,所述预充电仲裁器具有到达多个客户端的第三接口,所述预充电仲裁器基于所述库状态为所述多个客户端仲裁预充电决策,使得所述存储器接口可操作以为所述多个客户端独立地仲裁预充电子命令、激活子命令和读取/写入子命令。
3.根据权利要求2所述的存储器接口,其中所述库状态包括关于活动的库和活动的行的信息。
4.根据权利要求3所述的存储器接口,其中所述激活仲裁器仲裁关闭的库的激活。
5.根据权利要求3所述的存储器接口,其中所述读取/写入仲裁器在已开放的库之间进行仲裁。
6.根据权利要求3所述的存储器接口,其中所述预充电仲裁器仲裁以确定将关闭哪一开放的库。
7.根据权利要求3所述的存储器接口,其中所述库状态报导器纪录何时已代表客户端对库执行至少一次读取/写入以指示库的联系。
8.根据权利要求7所述的存储器接口,其中所述库将维持开放直到其被读取/写入为止,此时设定联系位,且所述库适合进行预充电。
9.根据权利要求1所述的存储器接口,其中所述库状态包括DRAM计时参数。
10.根据权利要求3所述的存储器接口,其中当满足DRAM库激活计时条件时,所述激活仲裁器仲裁关闭的库的激活。
11.一种用于交错存储器请求的存储器接口,其包括存储器控制器,其存取具有拥有预充电、激活和读取/写入阶段的记忆库的动态随机存取存储器;库状态报导器,其耦合到所述存储器控制器以报导记忆库状态信息;激活仲裁器,其具有到达多个客户端的第一接口,所述激活仲裁器从所述库状态报导器接收指示被关闭的库的信息,所述激活仲裁器基于至少一个优先权规则为所述多个客户端仲裁激活决策以激活关闭的库;以及读取/写入仲裁器,其具有到达所述多个客户端的第二接口,所述读取/写入仲裁器从所述库状态报导器接收指示被激活的库的信息,所述读取/写入仲裁器基于至少一个优先权规则为所述多个客户端仲裁读取/写入决策。
12.根据权利要求11所述的存储器接口,其进一步包括预充电仲裁器,所述预充电仲裁器具有到达多个客户端的第三接口,所述预充电仲裁器为所述多个客户端仲裁预充电决策。
13.一种介接具有记忆库的动态随机存取存储器的方法,其包括为多个客户端独立地仲裁激活子命令;以及为所述多个客户端独立地仲裁读取/写入子命令;其中利用独立的仲裁来交错存储器请求。
14.根据权利要求13所述的方法,其进一步包括为所述多个客户端独立地仲裁预充电。
15.根据权利要求13所述的方法,其进一步包括监视库状态以用于执行仲裁。
16.根据权利要求13所述的方法,其中所述独立地仲裁激活子命令包含确定关闭的库。
17.根据权利要求13所述的方法,其中所述独立地仲裁读取/写入子命令包含确定激活的库。
全文摘要
一种将多个客户端耦合到具有记忆库的存储器的存储器接口,其提供激活决策和读取/写入决策的独立仲裁。在一个实施方案中,预充电决策也被独立地仲裁。
文档编号H04L29/10GK101093435SQ20071011105
公开日2007年12月26日 申请日期2007年6月13日 优先权日2006年6月14日
发明者詹姆斯·M·范戴克, 布赖恩·D·胡特塞尔 申请人:辉达公司