具有自适应预充电策略的DRAM控制器的制作方法

文档序号:11776332阅读:324来源:国知局
具有自适应预充电策略的DRAM控制器的制作方法与工艺

相关申请的交叉引用

本申请要求2016年3月1日提交的美国临时专利申请62/301,908的权益,其公开内容通过引用并入于此。

本公开总体上涉及存储器系统,并且具体地涉及用于控制动态随机访问存储器(dram)的方法和系统。



背景技术:

动态随机访问存储器(dram)器件被广泛用于各种电子系统和应用。dram器件的一种流行系列是双倍数据速率同步动态随机访问存储器(ddrsdram),经常被简称为ddr。已经开发了若干类型和代的ddr器件,例如,第三代ddr(ddr3)、第四代ddr(ddr4)和/或低功率ddr4(lpddr4)。ddr4例如在2013年11月名称为“ddr4sdram”的jedec标准jesd79-4a中进行规定,其通过引用并入于此。

上面的描述是作为对本领域中的相关技术的一般概述,并且其所包括的任何信息不应该被理解为承认构成针对本专利申请的现有技术。



技术实现要素:

本文所述的实施例提供了一种动态随机访问存储器dram控制器包括存储器接口和处理器。该存储器接口被配置为与包括一个或多个存储器组的dram通信。该处理器被配置为接收输入/输出(i/o)命令,每个i/o命令寻址将在dram中被访问的相应存储器组和该存储器组内的相应行,进一步接收一个或多个指示,指示后续i/o命令将寻址与先前i/o命令同一存储器组中同一行的可能性,基于指示,自适应设置用于解激活dram的行的策略,以及根据该策略执行dram中的i/o命令。

在某些实施例中,处理器被配置为通过在执行之后将行自动解激活的第一类型的i/o命令与执行之后将行保持活动的第二类型的i/o命令之间选择,来自适应设置策略。在示例实施例中,第一类型的i/o命令执行自动行解激活,而第二类型的i/o命令不执行自动行解激活。

在某些实施例中,处理器被配置为通过响应于可能性的减少而增加对行解激活的比率,以及响应于可能性的增加而减少对行解激活的比率,来自适应设置策略。在一个实施例中,处理器被配置为通过当所述指示指示i/o命令具有随机访问模式时增加对行解激活的比率,以及当所述指示指示i/o命令具有顺序访问模式时减少对行解激活的比率,来自适应设置策略。在另一实施例中,处理器被配置为通过当所述指示指示i/o命令具有低于带宽阈值的带宽时增加对行解激活的比率,以及当所述指示指示i/o命令具有高于带宽阈值的带宽时减少对行解激活的比率,来自适应设置策略。

在某些实施例中,处理器被配置为通过基于所述指示设置自从在一行中执行i/o命令直到解激活该行的持续时间,来自适应设置策略。

另外,根据本文所述的实施例提供了一种用于控制包括一个或多个存储器组的动态随机访问存储器(dram)的方法。该方法包括接收输入/输出(i/o)命令,每个i/o命令寻址将在dram中被访问的相应存储器组和该存储器组内的相应行,并且进一步接收一个或多个指示,指示后续i/o命令将寻址与先前i/o命令同一存储器组中同一行的可能性。用于解激活dram的行的策略基于上述指示被自适应设置。i/o命令根据策略在dram中执行。

根据本文所述的实施例还提供了一种系统,该系统包括动态随机访问存储器(dram)、一个或多个客户端和dram控制器。dram包括一个或多个存储器组。一个或多个客户端被配置为发出输入/输出(i/o)命令,每个i/o命令寻址将在dram中被访问的相应存储器组和该存储器组内的相应行,以及提供一个或多个指示,指示后续i/o命令将寻址与先前i/o命令同一存储器组中同一行的可能性。dram控制器被配置为从一个或多个客户端接收i/o命令和指示,基于该指示,自适应设置用于解激活dram的行的策略,以及根据该策略执行dram中的i/o命令。

本公开将通过对其实施例的详细描述、结合附图来更全面地得到理解,在附图中:

附图说明

图1是根据本文所述实施例示意性图示了存储器系统的框图;以及

图2是根据本文所述实施例示意性图示了用于控制dram的方法的流程图。

具体实施方式

本文所述实施例提供了用于控制动态随机访问存储器(dram)器件的改进方法和系统。所公开的技术通常在dram存储器控制器(dmc)中实现。

典型的dram器件包括多个存储器组(也被简称为组),其中每组包括多个行(也被称为页面)。给定存储器访问命令通常访问(例如,读或写)指定组的指定行内的指定位置中的字。行需要在其可以被访问之前被激活,并且需要在同一组中的不同行可以被激活之前被解激活(或“预充电”)。为了执行这些动作,dram和dmc通常支持“activate”命令和“precharge”命令。某些dram和dmc还支持具有自动预充电的读写命令,其指示dram在读或写命令之后自动预充电被读或写的行。

实践中,有时期望i/o命令(例如,读或写命令)一被完成就预充电行,但在不同情况下仍要保持该行是活动的。例如,考虑其中对dram的访问模式是顺序的情景,即,很可能出现连续的i/o命令将寻址同一组中的同一行。在此情景中,通常保持行是活动的并且在连续的i/o命令之间不对其预充电是有益的。在此情景中,保持行是活动的减少了平均延迟并且增加了吞吐量,这是因为在连续的i/o命令之间没有时间浪费在预充电继而重新激活同一行上。另一方面,如果对dram的访问模式是随机的,则连续的i/o命令可能会访问不同的行。在此情况下,通常在每个i/o命令之后立即对行预充电是优选的(因为下一i/o命令相对不太可能寻址同一行),因此减少了延迟和功耗两者。

在本文所述的实施例中,dmc自适应地决定是否和/或何时对行预充电,以便匹配对dram的实际访问模式。这些决策在本文被称为“预充电策略”或“解激活策略”。通常,术语“预充电”和“解激活”在本文中可互换使用。

在某些实施例中,dmc从一个或多个客户端接收i/o命令,用于在dram中执行。除了i/o命令,dmc还从客户端接收“行命中可能性指示”(为了简便起见,在本文中被简称为“指示”)。行命中可能性指示用于指示后续i/o命令将寻址与先前i/o命令在同一存储器组中的同一行的可能性。行命中可能性指示的示例描述如下。dmc基于上述指示自适应地设置预充电策略,并且根据该预充电策略执行dram中的i/o命令。

在一个示例实施例中,如果指示暗示随机访问模式,则dmc使用自动预充电(每个命令之后行被自动解激活)来执行i/o命令。如果指示暗示顺序访问模式,则dmc执行i/o命令而不进行自动预充电(保持被读或写的行是活动的)。

通过基于行命中可能性指示适配预充电策略,dmc能够优化dram性能(例如,延迟、吞吐量和功耗),取决于其客户端对dram的实际访问模式。如果访问模式随时间改变,则所公开的技术使得dmc能够对应地适配预充电策略。

图1是根据本文所述实施例示意性图示了存储器系统20的框图。在图1的示例中,系统20包括dram控制器(dmc)24,其为了一个或多个硬件实现的客户端28将数据存储在dram32中。

在一个示例实施例中,系统20被实现为计算机的北桥-南桥芯片集的一部分。这种芯片集通常包括北桥芯片(其被直接连接到计算机中央处理单元(cpu)并且负责快速高性能任务,诸如访问存储器),南桥芯片(其负责较慢的任务,诸如盘访问)。在此实施例中,dmc24通常是北桥芯片的一部分,并且客户端28包括硬件单元,诸如计算机的中央处理单元(cpu)或图形处理单元(gpu)。然而,通常所公开的技术可应用于任意其他适当的系统,用于向任意其他适当类型的客户端提供存储器服务。一个备选示例在网络接口控制器(nic)中实现。

为了清楚起见,图1示出了单个dram器件32。在备选实施例中,dmc24可以控制任意适当数目的dram器件32。在某些实施例中,dmc24通过不同总线被并行连接到多个dram器件32,以便并行访问大数据宽度。在示例实施例中,dmc24被并行连接到八个dram器件,每个dram器件支持对八位数据的访问,因此提供了在单个访问中对总共六十四位数据的访问。每个dram32可以包括例如ddr3、ddr4、或lpddr4器件。

dram32包括多个存储器组36。每个存储器组36包括多个行40。为了简便起见,存储器组36也被简称为组,并且行40也被称为页面。每个组36通常独立于其他组36可访问。在一个示例实现方式中,dram32包括八个组36,每个组36包括65536个行40,并且每个行40存储4096位数据。由dmc24发出的给定存储器访问命令通常读或写指定组的指定行内的指定4位、8位或16位字。上述数值仅是通过示例给出,并且任意其他适当的值可以被使用。

在本示例中,dmc24包括用于与dram32通信的存储器接口44、用于与客户端28通信的主机接口48以及被配置为实现本公开技术的处理器52。

图1中所述存储器系统20的配置,以及各种系统部件(诸如dmc24、客户端28和dram32)的配置是仅为了清楚起见描述的示例配置。在备选实施例中,任意其他适当的配置可以被使用。

为了清楚起见,不是对理解本公开技术强制的电路元件已经从附图中省略。系统20及其部件的不同元件可以使用专用硬件或固件(诸如使用硬连线或可编程逻辑)在例如一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)中实现。系统20的某些元件(例如,dmc24的处理器52)可以使用软件或使用硬件、软件和/或固件元件的组合来实现。

在某些实施例中,处理器52在可编程处理器中实现,该可编程处理器以软件编程来实现本文所描述的功能。例如,软件可以通过网络以电子形式被下载到处理器,或者备选地或附件地,软件可以被提供和/或存储在非瞬态有形介质(诸如磁、光或电存储器)上。

通常,在一个实施例中,dmc24从客户端28接收i/o命令(例如,读命令和/或写命令)。dmc24通过向dram32发出存储器访问命令来执行i/o命令。在一个实施例中,dmc24根据适当的ddr协议(诸如上文引用的jedecjesd79-4a标准)向dram32发出存储器访问命令。

如上文所述,由dmc24发出的给定存储器访问命令通常访问(例如,读或写)dram32的指定组36的指定行40中的指定位置中的指定字。在典型的dram器件中,所述行必须在命令被执行之前被激活。为此,dmc24和dram32支持“activate”命令,在由dmc发出时,该命令指示dram激活指定组中的指定行。

行需要在同一组中的不同行可以被激活之前被解激活(或“预充电”)。为此,dmc24和dram32通常支持“precharge”命令,在由dmc发出时,该命令指示dram解激活当前活动的行。在某些实施例中,dmc24和dram32还支持“自动预充电”机制,其中dram在每个存储器访问命令之后将行自动解激活而不需要来自dmc的明确precharge命令。

上述命令例如在上文引用的jedecjesd79-4a标准中被规定。jedec标准还指定了与这些命令有关的某些时序约束。某些所规定的时序参数在下表中给出:

考虑在时间t1和t2向同一组36发出的两个连续读命令。用于检索第二读命令的数据的最小延迟取决于(i)两个读命令访问同一行还是不同行,以及(ii)读命令利用自动预充电执行还是不利用自动预充电执行。下表总结了这些最小延迟:

在一个实施例中,上述示例演示了最佳预充电策略为何取决于访问模式。当两个读命令访问不同行时,优选例如使用自动预充电在第一读命令之后立即解激活(预充电)由该第一读命令访问的行。此策略将延迟减少了trp。当两个读命令访问同一行时,优选在第一读命令之后保持由该第一读命令读取的行是活动的,而不对该行预充电。此策略将延迟减少trcd。另外,注意对行解激活也会减少dram功耗。

在某些实施例中,一个或多个客户端28被配置为向dmc24提供“行命中可能性指示”,并且dmc24被配置为基于该行命中可能性指示来适配预充电策略。在本上下文中,术语“行命中可能性指示”(或为简便起见简称为“指示”)指的是指示后续i/o命令将寻址与先前i/o命令寻址的同一存储器组36中的同一行40的可能性。

行命中可能性指示的一个示例是指定来自某个客户端的i/o命令的访问模式是随机还是顺序的指示。在顺序访问模式中,诸如当客户端读或写大文件或其他对象时,客户端访问多个连续的存储器地址,因此具有相对高的可能性来重复访问同一行。在随机访问模式中,例如当客户端以各种非连续地址访问小数据块时,由连续i/o命令访问的存储器地址是不相关的,因此重复访问同一行的可能性相对小。

行命中指示的另一示例是某个客户端28的存储器访问带宽的指示。例如,带宽指示用于管理高拥塞dram32中页面配置。在示例实施例中,如果所指示的带宽相对小(例如,小于预定义带宽阈值),则dmc24设置预充电策略来优选预充电当前访问的行。如果所指示的带宽相对高(例如,高于预定义带宽阈值),则dmc24设置预充电策略来优选保持当前访问的行是活动的。附件地或备选地,任意客户端28可以向dmc24提供任意其他适当类型的行命中可能性指示。

在某些实施例中,行命中可能性指示是明确的,即,数值上或根据某种预定义约定指定明确的可能性。在其他实施例中,行命中可能性指示是隐含的,即,虽然没有明确地指定可能性但其指示了可能性。行命中可能性指示由客户端28使用任意适当的方法进行估计。

在一个示例实施例中,所公开的技术在网络接口控制器(nic)中实现,该nic分析i/o命令的上下文。基于i/o命令上下文(例如,基于被读或写的数据项的大小的知识),nic将每个读或写请求标记为随机或顺序。dmc使用这些标记来选择执行具有自动预充电的读/写命令(在随机模式的情况下)还是不具有自动预充电的读/写命令(在顺序模式的情况下)。

图2是根据本文所述实施例示意性图示了用于由dmc24控制dram32的方法的流程图。为了清楚起见,该方法涉及针对单个客户端28执行的读命令。所公开的技术以相似方式可应用于任意其他适当的i/o命令,例如可应用于写命令或读和写命令的混合,以及可应用于任意适当数目的客户端28。

在读接收操作60,方法从dmc24的处理器52从客户端28接收读请求开始。在指示接收操作64,处理器52从客户端28接收一个或多个行命中可能性指示。

在访问模式评估操作68,处理器52基于行命中可能性指示评估读请求的访问模式是随机还是顺序。在某些实施例中,行命中可能性指示是布尔,例如,包括指定“随机”(随后的读请求不太可能寻址同一行)还是“顺序”(随后的读请求可能寻址同一行)的单个位。在其他实施例中,行命中可能性指示指定或暗示某个软可能性值,并且处理器52将该可能性值与预定义的可能性阈值进行比较。如果该可能性大于阈值,则处理器52将访问模式示为顺序,反之亦然。

如果处理器52发现访问模式是顺序的,则处理器52在读执行操作72通过向dram32发出普通读命令(不具有自动预充电)来执行读请求。另一方面,在一个实施例中,如果访问模式被发现是随机的,则处理器52在自动预充电读执行操作76通过向dram32发出具有自动预充电的读命令来执行读请求。

在上述实施例中,预取策略通过选择执行具有自动预充电的i/o命令还是不具有预充电的i/o命令来适配。在这些实施例中,当行命中可能性相对低时,dmc24选择具有自动预充电的i/o命令,并且当行命中可能性相对高时,选择不具有自动预充电的i/o命令。更一般而言,响应于行命中可能性的减少,dmc24增加了行解激活(预充电)的平均率,并且响应于行命中可能性的增加,减少了行解激活的平均率。

附加地或备选地,为了选择是否使用自动预充电,在某些实施例中,处理器52适配i/o命令之后的持续时间,在该持续时间之后,预充电被执行并且行被解激活。通常,响应于行命中可能性的增加,dmc24增加持续时间(将行是活动的保持更长时间段,因为该行是最近访问过的),并且响应于行命中可能性的减少,减少该持续时间。

在这些实施例中,处理器52通常发出普通i/o命令(不具有自动预充电),并且在使得持续时间之后接着发出自生成的预充电命令。针对严格随机访问模式,上述技术通常收敛到由dram32支持的最小持续时间。针对严格顺序访问模式,上述技术通常收敛到无限持续时间,即,直到同一组中的不同行需要被访问时才执行预充电。在不是严格随机也不是严格顺序的中间访问模式中,上述技术收敛到最佳匹配实际行命中可能性的某个中间持续时间。

虽然本文所述实施例重要解决的是在适配dram预充电策略中行命中可能性指示的使用,但是行命中可能性指示也可以用于其他目的。例如,高速缓存系统可以使用由客户端28提供的行命中可能性指示用于优化预取操作。在此解决方案中,高速缓存系统可以优先化针对具有顺序访问模式的读操作的预取,并且抑制针对具有随机访问模式的读操作的预取。

应当注意上述实施例通过示例被引述,并且本发明不局限于上文中具体显示和描述的。相反,本发明的范围包括上文中所描述的各个特征的组合和子组合以及本领域技术人员在阅读了之前的描述之后可做出的现有技术中没有公开的改变和修改。本专利申请中通过引用所包括的文档被认为是本申请的整体部分,只是如果有任何术语在这些被合并的文档中以与本说明书中明确或隐含地做出的定义冲突的方式被定义时,只应当考虑本说明书中的定义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1