用于高速存储器接口的命令仲裁的制作方法

文档序号:14203797阅读:244来源:国知局
用于高速存储器接口的命令仲裁的制作方法

本公开大体上涉及数据处理系统,且更具体地说涉及用于与具有高速存储器接口的数据处理系统一起使用的存储器控制器。



背景技术:

计算机系统通常将廉价且高密度的动态随机存取存储器(dram)芯片用于主存储器。现今销售的大部分dram芯片与由联合电子器件工程委员会(jedec)颁布的各种双数据速率(ddr)dram标准相容。ddrdram使用具有高速存取电路的常规dram存储器单元阵列来实现高传输速率并提高存储器总线的利用率。例如,ddr4dram使用存储器单元阵列,所述存储器单元阵列需要12-15纳秒(ns)存取时间,但存取大量数据并以高达对应于1.6千兆赫(ghz)的存储器时钟频率的3.2千兆传输每秒(gt/sec)的速度序列化数据。传输使用具有片内终结的伪开漏技术以实现良好的传输线路性能。虽然有可能以所述速率操作点对点接口以实现快速传输,但存储器控制器变得越来越难以以足够快的调度存储器存取的速度操作。

典型的ddr存储器控制器维持用以存储未决的读和写请求的队列,以允许存储器控制器不按顺序选取未决的请求并由此增加效率。例如,存储器控制器可不按顺序从队列检索针对存储器的给定列中的相同行的多个存储器存取请求(被称为“页命中”),并将所述请求连续地发送到存储器系统以避免反复地给当前行预充电并激活另一行的开销。然而,在利用可用例如ddr4等现代存储器技术实现的总线带宽时从深队列中扫描并选取存取已变得难以用已知的存储器控制器实现。

附图说明

图1以方块图形式说明根据一些实施方案的数据处理系统;

图2以方块图形式说明适合于在图1的数据处理系统中使用的加速处理单元(apu);

图3以方块图形式说明根据一些实施方案的适合于在图2的apu中使用的存储器控制器和相关联的物理接口(phy);

图4以方块图形式说明根据一些实施方案的适合于在图2的apu中使用的另一存储器控制器和相关联的phy;

图5以方块图形式说明根据一些实施方案的存储器控制器;以及

图6说明根据一些实施方案的可用作图5的仲裁器的仲裁器的方块图。

在以下描述中,不同图中使用的相同的参考数字指示相似或相同的项目。除非另外指出,否则单词“耦合”及其相关联的动词形式包含直接连接和通过本领域中已知的方法的间接电气连接,并且除非另外指出,否则对直接连接的任何描述也意味着使用适当形式的间接电气连接的替代性实施方案。

具体实施方式

如下文将描述,在一种形式中,存储器控制器包含命令队列和仲裁器。命令队列用于接收并存储存储器存取请求。仲裁器包含多个子仲裁器,所述子仲裁器在控制器周期期间从存储器存取请求当中提供对应的多个子仲裁获胜者,且在对应的控制器周期中在多个子仲裁获胜者当中进行选择以提供多个存储器命令。在一些实施方案中,存储器命令周期可在时间上短于控制器周期。例如,控制器可根据控制器时钟信号操作同时存储器周期通过存储器时钟信号界定,所述存储器时钟信号具有比控制器时钟信号更高的频率。多个子仲裁器可包含第一子仲裁器,所述第一子仲裁器在命令队列中的页命中命令当中选择第一子仲裁获胜者;第二子仲裁器,所述第二子仲裁器选择命令队列中的页冲突命令当中的第二子仲裁获胜者;以及第三子仲裁器,所述第三子仲裁器选择命令队列中的页错失命令当中的第三子仲裁获胜者。仲裁器可另外包含用于在第一、第二以及第三子仲裁获胜者当中进行选择的最后仲裁器。

在另一形式中,数据处理系统包含用于提供多个存储器存取请求的存储器存取代理、存储器系统以及耦合到存储器存取代理和存储器系统的存储器控制器。存储器控制器包含命令队列和仲裁器。命令队列存储从存储器存取代理接收到的存储器存取命令。仲裁器包含多个子仲裁器,所述子仲裁器用于在控制器周期期间从存储器存取请求当中提供对应的多个子仲裁获胜者,且用于在对应的控制器周期中在多个子仲裁获胜者当中进行选择以提供多个存储器命令。

在又一形式中,一种用于在存储器存取请求当中进行仲裁的方法可用于改进性能和效率。多个存储器存取请求被接收并存储在命令队列中。多个子仲裁获胜者在第一控制器周期期间从存储器存取请求当中选择。多个存储器命令在多个子仲裁获胜者当中选择并提供在对应的多个存储器命令周期中。

图1以方块图形式说明根据一些实施方案的数据处理系统100。数据处理系统100大体上包含呈加速处理单元(apu)形式的数据处理器110、存储器系统120、高速外围组件互连(pcie)系统150、通用串行总线(usb)系统160以及磁盘驱动器170。数据处理器110充当数据处理系统100的中央处理单元(cpu),并提供可用于现代计算机系统中的各种总线和接口。这些接口包含两个双数据速率(ddrx)存储器通道、用于连接到pcie链路的pcie根复合体、用于连接到usb网络的usb控制器以及到串行高级技术附件(sata)大容量存储装置的接口。

存储器系统120包含存储器通道130以及存储器通道140。存储器通道130包含连接到ddrx总线132的双列直插存储器模块(dimm)的集合,包含在此实例中对应于单独的列的代表性dimm134、136以及138。同样地,存储器通道140包含连接到ddrx总线142的dimm的集合,所述dimm包含代表性dimm144、146以及148。

pcie系统150包含连接到数据处理器110中的pcie根联合体、pcie装置154、pcie装置156以及pcie装置158的pcie交换机152。pcie装置156继而连接到系统基本输入/输出系统(bios)存储器157。系统bios存储器157可为多种非易失性存储器类型中的任何类型,例如只读存储器(rom)、快闪电可擦除可编程rom(eeprom)及类似者。

usb系统160包含连接到数据处理器110中的usb主控的usb集线器162,以及各自连接到usb集线器162的代表性usb装置164、166以及168。usb装置164、166以及168可为例如键盘、鼠标、快闪eeprom端口等装置。

磁盘驱动器170经由sata总线连接到数据处理器110,并为操作系统、应用程序、应用文件及类似者提供大容量存储。

数据处理系统100通过提供存储器通道130和存储器通道140而适合于在现代计算应用中使用。存储器通道130和140中的每一个可连接到现有技术ddr存储器,例如ddr版本四(ddr4)、低功率ddr4(lpddr4)、图形ddr版本五(gddr5)以及高带宽存储器(hbm),且可适用于未来的存储器技术。这些存储器提供高总线带宽和高速操作。同时,这些存储器还提供低功率模式以节约例如膝上型计算机等电池供电的应用的功率,且还提供内置的热监测。

图2以方块图形式说明适合于在图1的数据处理系统100中使用的apu200。apu200大体上包含中央处理单元(cpu)核心复合体210、图形核心220、显示器引擎的集合230、存储器管理集线器240、数据组构250、外围控制器的集合260、外围总线控制器的集合270、系统管理单元(smu)280以及存储器控制器的集合290。

cpu核心复合体210包含cpu核心212和cpu核心214。在此实例中,cpu核心复合体210包含两个cpu核心,但在其它实施方案中,cpu核心复合体210可包含任意数目的cpu核心。cpu核心212和214中的每一个双向地连接到系统管理网络(smn),从而形成控制组构;并连接到数据组构250;且能够将存储器存取请求提供到数据组构250。cpu核心212和214中的每一个可为单一核心,或可另外为具有共享例如高速缓存等特定资源的两个或更多个单一核心的核心复合体。

图形核心220为高性能图形处理单元(gpu),所述图形处理单元能够以高度集成且并行的方式执行图形操作,例如顶点处理、片段处理、明暗处理、纹理混合及类似者。图形核心220双向地连接到smn并连接到数据组构250,且能够将存储器存取请求提供到数据组构250。就此而言,apu200可支持cpu核心复合体210和图形核心220共享相同的存储器空间的统一存储器架构,或cpu核心复合体210和图形核心220共享存储器空间的一部分而图形核心220还使用不可由cpu核心复合体210存取的专用图形存储器的存储器架构。

显示器引擎230渲染并光栅化通过图形核心220产生的对象以用于显示在监测器上。图形核心220和显示器引擎230双向地连接到共用的存储器管理集线器240以用于统一转变成存储器系统120中的适合的地址,且存储器管理集线器240双向地连接到数据组构250以用于产生此类存储器存取并接收从存储器系统返回的读数据。

数据组构250包含用于在任何存储器存取代理与存储器控制器290之间路由存储器存取请求和存储器响应的交叉交换机。所述数据组构还包含通过bios界定的系统存储器映射,以用于基于系统配置以及每一虚拟连接的缓冲器来确定存储器存取的目的地。

外围控制器260包含usb控制器262和sata接口控制器264,所述控制器中的每一个双向地连接到系统集线器266并连接到smn总线。这两个控制器仅举例说明可在apu200中使用的外围控制器。

外围总线控制器270包含系统控制器或“南桥”(sb)272和pcie控制器274,所述控制器中的每一个双向地连接到输入/输出(i/o)集线器276并连接到smn总线。i/o集线器276还双向地连接到系统集线器266并连接到数据组构250。因此,例如,cpu核心可通过存取对usb控制器262、sata接口控制器264、sb272或pcie控制器274中的寄存器进行编程,数据组构250通过i/o集线器276来路由所述存取。

smu280为本地控制器,所述本地控制器控制在apu200上的资源的操作并同步其间的通信。smu280管理apu200上的各种处理器的上电顺序,并经由重置、启用以及其它信号控制多个芯片外装置。smu280包含图2中未示出的一个或多个时钟源,例如锁相环路(pll),以为apu200的组件中的每一个提供时钟信号。smu280还管理各种处理器和其它功能块的电源,且可从cpu核心212和214以及图形核心220接收测得的功耗值以确定适合的电源状态。

apu200还实施各种系统监测和功率节约功能。确切地说,一个系统监测功能为热监测。例如,如果apu200变热,那么smu280可减小cpu核心212和214和/或图形核心220的频率和电压。如果apu200变得过热,那么可完全关闭所述apu。热事件还可通过smu280经由smn总线从外部传感器接收,且smu280可减小时钟频率和/或电源电压以作为响应。

图3以方块图形式说明根据一些实施方案的适合于在图2的apu200中使用的存储器控制器300和相关联的物理接口(phy)330。存储器控制器300包含存储器通道310以及电源引擎320。存储器通道310包含主机接口312、存储器通道控制器314以及物理接口316。主机接口312经由可扩展数据端口(sdp)双向地将存储器通道控制器314连接到数据组构250。物理接口316经由遵守ddr-phy接口规范(dfi)的总线双向地将存储器通道控制器314连接到phy330。电源引擎320经由smn总线双向地连接到smu280,经由高级外围总线(apb)双向地连接到phy330,且还双向地连接到存储器通道控制器314。phy330具有到存储器通道的双向连接,例如图1的存储器通道130或存储器通道140。存储器控制器300为用于使用单一存储器通道控制器314的单一存储器通道的存储器控制器的实例化,且具有以下文将另外描述的方式控制存储器通道控制器314的操作的电源引擎320。

图4以方块图形式说明根据一些实施方案的适合于在图2的apu200中使用的另一存储器控制器400和相关联的phy440和450。存储器控制器400包含存储器通道410和420以及电源引擎430。存储器通道410包含主机接口412、存储器通道控制器414以及物理接口416。主机接口412经由sdp双向地将存储器通道控制器414连接到数据组构250。物理接口416双向地将存储器通道控制器414连接到phy440并遵守dfi规范。存储器通道420包含主机接口422、存储器通道控制器424以及物理接口426。主机接口422经由另一sdp双向地将存储器通道控制器424连接到数据组构250。物理接口426双向地将存储器通道控制器424连接到phy450并遵守dfi规范。电源引擎430经由smn总线双向地连接到smu280,经由apb双向地连接到phy440和450,且还双向地连接到存储器通道控制器414和424。phy440具有到存储器通道的双向连接,例如图1的存储器通道130。phy450具有到存储器通道的双向连接,例如图1的存储器通道140。存储器控制器400为具有两个存储器通道控制器的存储器控制器的实例化,并使用共享的电源引擎430来以下文将另外描述的方式控制两个存储器通道控制器414和存储器通道控制器424的操作。

图5以方块图形式说明根据一些实施方案的存储器控制器500。存储器控制器500包含存储器通道控制器510和电源控制器550。存储器通道控制器510包含接口512、队列514、命令队列520、地址产生器522、内容可寻址存储器(cam)524、重放队列530、刷新逻辑块532、定时块534、页表536、仲裁器538、错误校正码(ecc)校验块542、ecc产生块544以及数据缓冲器(db)546。

接口512具有经由外部总线到数据组构250的第一双向连接,且具有输出。在存储器控制器500中,此外部总线与由被称为“axi4”的england、cambridge的armholdings,plc,指定的高级可扩展接口版本四相容,但在其它实施方案中可为其它类型的接口。接口512将存储器存取请求从被称为fclk(或memclk)域的第一时钟域转变到被称为uclk域的在存储器控制器500内部的第二时钟域。类似地,队列514将存储器存取从uclk域提供到与dfi接口相关联的dficlk域。

地址产生器522对经由axi4总线从数据组构250接收到的存储器存取请求的地址进行解码。存储器存取请求包含表示为规范化地址的物理地址空间中的存取地址。地址产生器522将规范化地址转换成可用于对存储器系统120中的实际存储器装置进行寻址以及用于高效地调度相关的存取的格式。此格式包含区域识别符,所述区域识别符使存储器存取请求与特定列、行地址、列地址、库地址以及库群组相关联。在启动时,系统bios查询存储器系统120中的存储器装置以确定所述存储器装置的大小和配置,并对与地址产生器522相关联的配置寄存器的集合进行编程。地址产生器522使用存储在配置寄存器中的配置来将规范化地址转变成适合的格式。命令队列520为从数据处理系统100中的存储器存取代理(例如cpu核心212和214以及图形核心220)接收到的存储器存取请求的队列。命令队列520存储通过地址产生器522解码的地址字段以及其它地址信息,所述地址信息允许仲裁器538高效地选择存储器存取,包含存取类型和服务质量(qos)识别符。cam524包含用以实施排序规则的信息,例如写后写(waw)和写后读(raw)排序规则。

重放队列530为用于存储通过仲裁器538选取的在等待响应的存储器存取的暂时性队列,所述响应例如地址和命令奇偶校验响应、ddr4dram的写循环冗余校验(crc)响应或gddr5dram的写和读crc响应。重放队列530存取ecc校验块542以确定返回的ecc是为正确的还是指示错误。重放队列530允许存取在这些周期中的一个的奇偶校验错误或crc错误的情况下重放。

刷新逻辑532包含用于各种下电、刷新以及终结电阻(zq)校准周期的状态机,所述周期与从存储器存取代理接收到的正常的读和写存储器存取请求分开产生。例如,如果存储器列处于预充电下电,那么所述存储器列必须定期被唤醒以运行刷新周期。刷新逻辑532定期地产生自动刷新命令,以防止通过dram芯片中的存储器单元的存储电容器的电荷的泄漏造成的数据错误。另外,刷新逻辑532定期地校准zq以防止由于系统中的热变化导致的片内终结电阻中的失配。刷新逻辑532还决定何时将dram装置放置在不同的下电模式中。

仲裁器538双向地连接到命令队列520,且为存储器通道控制器510的心脏。所述仲裁器通过智能地调度存取以提高存储器总线的利用率来提高效率。仲裁器538使用定时块534通过基于dram定时参数来确定命令队列520中的特定存取是否适合于发出而实施恰当的定时关系。例如,每一dram具有在针对同一列的激活命令之间的最小指定时间,被称为“trc”。定时块534维持计数器的集合,所述计数器基于在jedec规范中指定的此和其它定时参数来确定合格性,且所述定时块双向地连接到重放队列530。页表536维持关于仲裁器538的存储器通道的每一个库和列中的活动页的状态信息,且双向地连接到重放队列530。

响应于从接口512接收到的写存储器存取请求,ecc产生块544根据写数据计算ecc。db546针对接收到的存储器存取请求存储写数据和ecc。当仲裁器538选取对应的写存取以用于分派到存储器通道时,所述db将合并的写数据/ecc输出到队列514。

电源控制器550包含至高级可扩展接口版本一(axi)的接口552、apb接口554以及电源引擎560。接口552具有到smn的第一双向连接,包含用于接收在图5中单独地示出的标记为“event_n”的事件信号的输入端,以及输出端。apb接口554具有连接到接口552的输出端的输入端,以及用于经由apb连接到phy的输出端。电源引擎560具有连接到接口552的输出端的输入端,以及连接到队列514的输入端的输出端。电源引擎560包含配置寄存器的集合562、微控制器(μc)564、自刷新控制器(slfref/pe)566以及可靠的读/写训练引擎(rrw/te)568。配置寄存器562经由axi总线编程,且存储配置信息以控制存储器控制器500中的各种块的操作。因此,配置寄存器562具有连接到图5中未详细示出的这些块的输出端。自刷新控制器566为引擎,所述引擎允许除通过刷新逻辑532自动地产生刷新外的刷新的手动产生。可靠的读/写训练引擎568将连续的存储器存取流提供到存储器或i/o装置,以用于例如ddr接口读延时训练和回送测试等目的。

存储器通道控制器510包含允许所述存储器通道控制器选取存储器存取以分派到相关联的存储器通道的电路。为做出期望的仲裁决定,地址产生器522将地址信息解码成预解码信息,包含存储器系统中的列、行地址、列地址、库地址以及库群组,且命令队列520存储预解码信息。配置寄存器562存储配置信息以确定地址产生器522如何对接收到的地址信息进行解码。仲裁器538使用经解码的地址信息、通过定时块534指示的定时合格性信息以及通过页表536指示的活动页信息来高效地调度存储器存取,同时观察其它准则,例如qos要求。例如,仲裁器538实施对打开页的存取的偏好以避免改变存储器页所需的预充电和激活命令的开销,并通过将对一个库的开销存取与对另一个库的读和写存取交错来隐藏开销存取。确切地说,在正常操作期间,仲裁器538可决定在选择不同的页之前保持页打开在不同库中,直到需要对所述页预充电。

图6说明根据一些实施方案的图5的存储器控制器500的一部分600的方块图。部分600包含仲裁器538和与仲裁器538的操作相关联的控制电路的集合660。仲裁器538包含子仲裁器的集合605和最后仲裁器650。子仲裁器605包含子仲裁器610、子仲裁器620以及子仲裁器630。子仲裁器610包含标记为“pharb”的页命中仲裁器612,以及输出寄存器614。页命中仲裁器612具有连接到命令队列520的第一输入端,第二输入端,以及输出端。寄存器614具有连接到页命中仲裁器612的输出端的数据输入端,用于接收uclk信号的时钟输入端,以及输出端。子仲裁器620包含标记为“pcarb”的页冲突仲裁器622,以及输出寄存器624。页冲突仲裁器622具有连接到命令队列520的第一输入端,第二输入端,以及输出端。寄存器624具有连接到页冲突仲裁器622的输出端的数据输入端,用于接收uclk信号的时钟输入端,以及输出端。子仲裁器630包含标记为“pmarb”的页错失仲裁器632,以及输出寄存器634。页错失仲裁器632具有连接到命令队列520的第一输入端,第二输入端,以及输出端。寄存器634具有连接到页错失仲裁器632的输出端的数据输入端,用于接收uclk信号的时钟输入端,以及输出端。最后仲裁器650具有连接到刷新逻辑532的输出端的第一输入端、来自页关闭预测器662的第二输入端、连接到输出寄存器614的输出端的第三输入端、连接到输出寄存器624的输出端的第四输入端、连接到输出寄存器634的输出端的第五输入端、用于将标记为“cmd1”的第一仲裁获胜者提供给队列514的第一输出端以及用于将标记为“cmd2”的第二仲裁获胜者提供给队列514的第二输出端。

控制电路660包含如先前关于图5描述的定时块534和页表536,以及页关闭预测器662。定时块534具有输入端和连接到页命中仲裁器612、页冲突仲裁器622以及页错失仲裁器632的第一输入端的输出端。页表534具有连接到重放队列530的输出端的输入端、连接到重放队列530的输入端的输出端、连接到命令队列520的输入端的输出端、连接到定时块534的输入端的输出端以及连接到页关闭预测器662的输入端的输出端。页关闭预测器662具有连接到页表536的一个输出端的输入端、连接到输出寄存器614的输出端的输入端以及连接到最后仲裁器650的第二输入端的输出端。

在操作中,仲裁器538通过考虑每一条目的页状态、每一存储器存取请求的优先级以及请求之间的相关性来从命令队列520和刷新逻辑532选择存储器存取请求(命令)。优先级与从axi4总线接收到的请求的服务质量或qos相关并存储在命令队列520中,但可基于存储器存取的类型和仲裁器538的动态操作来更改。仲裁器538包含三个子仲裁器,所述子仲裁器并行操作以解决现有的集成电路技术的处理和传输限制之间的不匹配。相应的子仲裁的获胜者被呈现给最后仲裁器650。最后仲裁器650在这三个子仲裁获胜者以及来自刷新逻辑532的刷新操作之间进行选择,且可另外将读或写命令修改成读或写与如通过页关闭预测器662确定的自动预充电命令。

页命中仲裁器612、页冲突仲裁器622以及页错失仲裁器632中的每一个具有连接到定时块534的输出端的输入端以确定在命令队列520中落入这些相应类别中的命令的定时合格性。定时块534包含二进制计数器的阵列,所述二进制计数器的阵列对与每一列中的每一个库的特定操作相关的持续时间计数。确定状态所需的定时器的数目取决于定时参数、给定存储器类型的库的数目以及在给定存储器通道上由系统支持的列的数目。所实施的定时参数的数目继而取决于在系统中实施的存储器的类型。例如,与其它ddrx存储器类型相比,gddr5存储器需要更多的定时器以顺应更多的定时参数。通过包含实施为二进制计数器的通用定时器的阵列,定时块534可扩展并重新用于不同的存储器类型。

页命中为打开页的读或写周期。页命中仲裁器612在命令队列520中的对打开页的存取之间进行仲裁。通过定时块534中的定时器跟踪且通过页命中仲裁器612检查的定时合格性参数包含例如,行地址选通(ras)到列地址选通(cas)延迟时间(trcd)和cas延时(tcl)。例如,trcd指定在页已在ras周期中被打开之后对页的读或写存取之前必须经过的最小时间量。页命中仲裁器612基于所指配的存取的优先级来选择子仲裁获胜者。在一个实施方案中,优先级为4位独热值,所述值因此指示在四个值当中的优先级,然而应清楚,此四层优先级方案仅为一个实例。如果页命中仲裁器612在相同的优先级层处检测到两个或更多个请求,那么最旧条目获胜。

页冲突为在库中的一行当前被激活时对所述库中的另一行的存取。页冲突仲裁器622在命令队列520中的对与在对应的库和列中当前打开的页冲突的页的存取之间进行仲裁。页冲突仲裁器622选择导致预充电命令的发出的子仲裁获胜者。通过定时块534中的定时器跟踪且通过页冲突仲裁器622检查的定时合格性参数包含例如,活动至预充电命令时段(tras)。页冲突仲裁器622基于所指配的存取的优先级来选择子仲裁获胜者。如果页冲突仲裁器622在相同的优先级层处检测到两个或更多个请求,那么最旧条目获胜。

页错失为对在预充电状态下的库的存取。页错失仲裁器632在命令队列520中的对预充电存储器库的存取之间进行仲裁。通过定时块534中的定时器跟踪且通过页错失仲裁器632检查的定时合格性参数包含例如,预充电命令时段(trp)。如果在相同优先级层处存在页错失的两个或更多个请求,那么最旧条目获胜。

每一子仲裁器输出其相应的子仲裁获胜者的优先级值。最后仲裁器650比较来自页命中仲裁器612、页冲突仲裁器622以及页错失仲裁器632中的每一个的子仲裁获胜者的优先级值。最后仲裁器650通过同时考虑两个子仲裁获胜者来执行相对优先级比较的集合,确定子仲裁获胜者当中的相对优先级。

在确定三个子仲裁获胜者当中的相对优先级之后,最后仲裁器650随后确定子仲裁获胜者是否冲突(即,子仲裁获胜者是否指向相同的库和列)。当不存在此类冲突时,则最后仲裁器650选择具有最高优先级的至多两个子仲裁获胜者。当存在冲突时,则最后仲裁器650遵守以下规则。当页命中仲裁器612的子仲裁获胜者的优先级值高于页冲突仲裁器622的子仲裁获胜者的优先级值且它们都针对相同的库和列时,则最后仲裁器650选择通过页命中仲裁器612指示的存取。当页冲突仲裁器622的子仲裁获胜者的优先级值高于页命中仲裁器612的子仲裁获胜者的优先级值且它们都针对相同的库和列时,则最后仲裁器650基于若干附加的因素来选择获胜者。在一些情况下,页关闭预测器662通过设定自动预充电属性来使得页在通过页命中仲裁器612指示的存取结束时关闭。

在页命中仲裁器612内,优先级初始地通过来自存储器存取代理的请求优先级设定,但基于存取的类型(读或写)和存取的顺序而动态调整。一般来说,页命中仲裁器612将较高隐式优先级指配给读,但实施优先级提升机制以确保写进展到完成。

每当页命中仲裁器612选择读或写命令时,页关闭预测器662确定是否发送具有自动预充电(ap)属性的命令。在读或写周期期间,自动预充电属性用预定义的地址位设定,且自动预充电属性使得ddr装置在读或写周期结束之后关闭页,这样做避免对存储器控制器稍后发送针对所述库的单独的预充电命令的需要。页关闭预测器662考虑已存在于命令队列520中的其它请求,所述其它请求存取与所选命令相同的库。如果页关闭预测器662将存储器存取转换成ap命令,那么对所述页的下一存取将为页错失。

仲裁器538支持每存储器控制器时钟周期发出一个命令或两个命令。例如,ddr43200为以1600mhz的存储器时钟频率操作的ddr4dram的速度仓。如果集成电路过程技术允许存储器控制器500以1600mhz操作,那么存储器控制器500可在每存储器控制器时钟周期发出一个存储器存取。在此情况下,最后仲裁器650被启用以在1x模式下操作以在每存储器控制器时钟周期选择仅单个仲裁获胜者。

然而,对于较高速度存储器,例如ddr43600或lpddr44667,1600mhz存储器控制器时钟速度可为太慢以至于不能使用存储器总线的全部带宽。为适应这些较高性能dram,仲裁器538还支持2x模式,其中最后仲裁器650在每存储器控制器时钟周期选择两个命令(cmd1和cmd2)。仲裁器538提供此模式以允许每一子仲裁器使用较慢的存储器控制器时钟并行地工作。如图6中所示,仲裁器538包含三个子仲裁器,且在2x模式中,最后仲裁器650选择两个仲裁获胜者以作为三个仲裁获胜者中的最好的两个。

注意,2x模式还允许存储器控制器500以慢于其最高速度的存储器控制器时钟速度操作,以对准存储器控制器命令产生与存储器时钟周期。对于在存储器控制器可以高达1600mhz的时钟速度操作的ddr43600的实例,时钟速度在2x模式中可减少至900mhz。

通过将不同的子仲裁器用于不同的存储器存取类型,每一仲裁器可用比在所有存取类型(页命中、页错失以及页冲突)之间进行仲裁所需的逻辑更简单的逻辑实施。因此,仲裁逻辑可被简化且仲裁器538的大小可保持相对较小。通过将子仲裁器用于页命中、页冲突以及页错失,仲裁器538允许选取两个命令,所述两个命令彼此较好地配对以用数据传送来隐藏延时存取。

在其它实施方案中,仲裁器538可包含不同数目的子仲裁器,只要所述仲裁器具有至少两个子仲裁器以支持2x模式。例如,仲裁器538可包含四个子仲裁器且将允许在每存储器控制器时钟周期选取至多四个存取。在又其它实施方案中,仲裁器538可包含任何单一类型的两个或更多个子仲裁器。例如,仲裁器538可包含两个或更多个页命中仲裁器、两个或更多个页冲突仲裁器和/或两个或更多个页错失仲裁器。在此情况下,仲裁器538能够在每一控制器周期选择相同类型的两个或更多个存取。

图5和图6的电路可用硬件和软件的各种组合实施。例如,硬件电路可包含优先级编码器、有限状态机、可编程逻辑阵列(pla)及类似者,仲裁器538可用微控制器实施,所述微控制器执行所存储的程序指令以评估未决的命令的相对定时合格性。在此情况下,指令中的一些可存储在非暂时性计算机存储器或计算机可读存储介质中以用于通过微控制器执行。在各种实施方案中,非暂时性计算机可读存储介质包含:磁盘或光盘存储装置、例如闪存的固态存储装置或其它一个或多个非易失性存储器装置。存储在非暂时性计算机可读存储介质上的计算机可读指令可以是源代码、汇编语言代码、目标代码或可由一个或多个处理器解译和/或执行的其它指令格式。

图1的apu110或图5的存储器控制器500或其任何部分,例如仲裁器538,可通过呈数据库或其它数据结构形式的计算机可存取数据结构描述或表示,所述数据结构可通过程序读取并直接或间接地用于制造集成电路。例如,此数据结构可为用例如verilog或vhdl等高级设计语言(hdl)对硬件功能性的行为级描述或寄存器传送级(rtl)描述。所述描述可以由合成工具读取,所述合成工具可以对描述进行合成,以便从合成库生成包括一系列门的网表。所述网表包括门集合,所述门还表示包括集成电路的硬件的功能性。随后可放置和布线网表以产生描述将应用于掩模的几何形状的数据集。随后可在各种半导体制造步骤中使用掩模来产生集成电路。替代地,计算机可存取存储介质上的数据库根据需要可以是网表(具有或不具有合成库)或数据集或图形数据系统(gds)ii数据。

虽然已描述特定实施方案,但所属领域的技术人员应清楚对这些实施方案的各种修改。例如,存储器通道控制器510和/或电源引擎550的内部架构在不同的实施方案中可不同。存储器控制器500可与除ddrx存储器外的其它类型的存储器介接,例如高带宽存储器(hbm)、rambusdram(rdram)及类似者。虽然所说明的实施方案示出对应于单独的dimm的存储器的每一列,但在其它实施方案中,每一dimm可支持多列。

在一种形式中,如本文中所公开的存储器控制器包括命令队列和仲裁器,所述仲裁器包括多个子仲裁器。根据一个方面,多个子仲裁器包含用于提供第一、第二以及第三子仲裁获胜者的第一、第二以及第三子仲裁器,以及用于选择两个最后仲裁获胜者的最后仲裁器,且最后仲裁器进一步从所述第一、第二以及第三仲裁获胜者当中选择所述两个最后仲裁获胜者并选择开销命令。在此情况下,所述开销命令可包含下电命令、自动刷新命令以及校准命令中的一种。

在另一形式中,如本文中所公开的存储器控制器为数据处理系统的一部分,所述数据处理系统包括存储器存取代理、存储器系统以及耦合到所述存储器存取代理和所述存储器系统的存储器控制器。

在又一形式中,一种方法包括接收多个存储器存取请求,将所述多个存储器存取请求存储在命令队列中,并从所述命令队列选择存储器存取请求,包含在第一控制器周期期间从所述存储器存取请求当中选择多个子仲裁获胜者,并在所述多个子仲裁获胜者当中进行选择以提供多个存储器命令在对应的多个存储器命令周期中。根据一个方面,所述方法另外包含在所述多个子仲裁获胜者当中进行选择并选择开销命令以提供第二多个存储器命令在对应的第二多个存储器周期中,并提供所述开销命令作为下电命令、自动刷新命令以及校准命令中的一种。根据另一方面,在所述多个子仲裁获胜者当中进行选择以提供所述多个存储器命令包括:在所述多个子仲裁获胜者当中进行选择以提供所述多个存储器命令在对应的多个存储器命令周期中,其中所述存储器命令周期短于所述控制器周期。根据又一方面,所述在所述第一控制器周期期间从所述存储器存取请求当中选择所述多个子仲裁获胜者包括:在所述第一控制器周期期间从所述存储器存取请求当中选择同一类型的第一多个子仲裁获胜者,且所述方法另外包括在所述第一控制器周期期间选择所述相同类型的两个最后仲裁获胜者。

因此,所附权利要求意图涵盖落入所公开实施方案的范围内的对所公开实施方案的所有修改。

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