CN102402490A - 具有与业务类别关联的端口的多端口存储器控制器 - Google Patents

具有与业务类别关联的端口的多端口存储器控制器 Download PDF

Info

Publication number
CN102402490A
CN102402490A CN2011102744031A CN201110274403A CN102402490A CN 102402490 A CN102402490 A CN 102402490A CN 2011102744031 A CN2011102744031 A CN 2011102744031A CN 201110274403 A CN201110274403 A CN 201110274403A CN 102402490 A CN102402490 A CN 102402490A
Authority
CN
China
Prior art keywords
storage
qos parameter
qos
port
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011102744031A
Other languages
English (en)
Other versions
CN102402490B (zh
Inventor
S·比斯韦斯
陈浩
R·沃德万
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/883,888 external-priority patent/US8510521B2/en
Priority claimed from US12/883,878 external-priority patent/US8631213B2/en
Priority claimed from US12/883,864 external-priority patent/US8314807B2/en
Priority claimed from US12/883,848 external-priority patent/US20120072677A1/en
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102402490A publication Critical patent/CN102402490A/zh
Application granted granted Critical
Publication of CN102402490B publication Critical patent/CN102402490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)
  • Transceivers (AREA)
  • Transmitters (AREA)
  • Dram (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种具有与业务类别相关联的端口的多端口存储器控制器。在一个实施例中,存储器控制器包括多个端口。每一个端口可以专用于不同类型的业务。在一个实施例中,服务质量(QoS)参数可以是为业务类型定义的,并且不同的业务类型可以具有不同的QoS参数定义。存储器控制器可以被配置成根据QoS参数来调度在不同端口上接收的操作。在一个实施例中,当接收到具有较高QoS参数的后续操作时,存储器控制器可以借助边带请求和/或借助操作老化来支持QoS参数升级。在一个实施例中,当操作流过存储器控制器流水线时,存储器控制器被配置成减小对于QoS参数的强调,并且增加对于存储器带宽优化的强调。

Description

具有与业务类别关联的端口的多端口存储器控制器
技术领域
本发明涉及存储器控制器领域。
背景技术
数字系统通常包括用半导体存储器设备制成的存储器系统,所述半导体存储器设备例如是静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)、同步DRAM(SDRAM)、包括低功率版本(LPDDR、LPDDR2等)SDRAM等的双倍数据速率(DDR、DDR2、DDR3等等)SDRAM,等等。存储器系统是易失性的,它会在通电时保持数据,但在断电时则不会如此,但是与例如闪存的非易失性存储器、例如磁盘驱动器的磁存储设备、或例如紧凑型光盘(CD)、数字视频光盘(DVD)和蓝光驱动器的光存储设备相比,它还提供了低延时的访问。
形成存储器系统的存储器设备具有根据存储器设备专用协议来对存储器进行读取和写入的低级接口。产生存储器操作的源通常经由高级接口进行通信,高级接口例如是总线、点到点分组接口等等。所述源可以是处理器、诸如输入/输出(I/O)设备的外围设备、音频和视频设备等等。通常,存储器操作包括用于将来自存储器的数据传送到设备的读取存储器操作,以及将数据从源传送到存储器的写入存储器操作。在这里可以更简洁地将读取存储器操作称为读取操作或读取,类似地,在这里可以更简明地将写入存储器操作称为写入操作或写入。
相应地,为了接收来自高级接口的存储器操作,以及控制存储器设备执行接收到的操作,通常会包含一个存储器控制器。该存储器控制器通常还包括用于获取存储器操作的队列,并且可以包括用于改善性能的电路。例如,一些存储器控制器将读取存储器操作调度到影响不同地址的在先的写入存储器操作之前。
对于可以由源发布的不同类型的业务来说,存储器控制器具有有限的可视性。相应地,存储器控制器尚不能以更精细的粒度等级来分离业务。因此,存储器控制器的性能改善受限于较粗糙的机制,例如在写入操作之前调度读取操作。
发明内容
在一个实施例中,存储器控制器可以并入多个端口来接受存储器请求。每个端口可以与特定类型的业务相关联,例如实时(RT)、图形以及非实时(NRT)。每种业务具有不同的需求和行为。通过提供不同端口,可以将存储器控制器暴露于并行的不同类型的请求,并由此可以基于业务混合来做出智能调度决定。
在一些实施例中,不同端口可以使用不同的通信协议。例如,中央处理器(CPU)接口可被用于处理器,图形接口可被用于图形设备等等。在一些实施例中,第三方可能已开发了一个或多个接口,并且可以销售使用该接口通信的设备。由于不同端口在存储器控制器均得到支持,因此,并入了存储器控制器和第三方设备两者的系统可以免除用于在第三方设备与存储器控制器之间转换协议的介入电路。所述系统可被简化,其成本可以更低,并且还可以避免介入电路增加的延时。
在一些实施例中,服务质量(QoS)参数可以与存储器操作一起传送至存储器控制器。存储器控制器可以使用相对QoS等级将存储器请求从端口调度到存储器通道。不同的业务类型可以具有不同的QoS等级规范,并且存储器控制器可以被配置成在不同类型的QoS参数之间进行仲裁,以便实施调度。此外,带宽共享控制有可能影响该调度。
附图说明
以下详细描述参考附图,并且现在将对这些附图进行简要描述。
图1是包含存储器控制器的系统的一个实施例的框图。
图2是可以为RT和NRT类别的业务定义的QoS等级的一个实施例的框图。
图3是图1所示的存储器控制器的一个实施例的框图。
图4是可以包含在图3所示的代理接口单元的一个实施例中的端口接口单元的一个实施例的框图。
图5是可以包含在图3所示的代理接口单元的一个实施例中的存储器通道接口单元的一个实施例的框图。
图6是示出了图5所示的QoS仲裁器的一个实施例的操作的流程图。
图7是在图3的存储器通道单元中示出的预排序队列(PSQ)的一个实施例的框图。
图8是示出了图7所示的入队(enqueue)控制单元的一个实施例的操作的流程图。
图9是示出了图7所示的调度器选择所要调度的读取和写入的一个实施例的操作的流程图。
图10是示出了图7所示的调度器选择所要调度的写入操作的一个实施例的操作的流程图。
图11是示出了图7所示的调度器选择所要调度的读取的一个实施例的操作的表格。
图12是图3所示的存储器接口(MIF)单元的一个实施例的框图。
图13是示出了图12所示的MIF入队控制单元的一个实施例的操作的流程图。
图14是示出了图12所示的激活调度器的一个实施例的操作的流程图。
图15是示出了图12所示的列地址选通(CAS)调度器的一个实施例的操作的流程图。
图16是示出了图12所示的最终调度器的一个实施例的操作的表格。
图17是以QoS参数的高等级和相对重要性、以及各个等级的调度中的存储器带宽优化实施的排队的一个实施例的框图。
图18是支持带内QoS升级的存储器控制器特征的一个实施例的框图。
图19是示出了带内QoS升级的一个实施例的操作的流程图。
图20是边带QoS升级接口的一个实施例的框图。
图21是示出了因为操作的老化(aging)而导致的QoS升级的一个实施例的流程图。
图22是包含图1所示的集成电路的系统的一个实施例的框图。
尽管本发明很容易受到各个修改和替换形式的影响,但在附图中举例显示并且在这里详细描述了本发明的具体实施例。然而应该理解,附图及其描述并不是为了将本发明局限于所公开的特定形式,相反,本发明旨在覆盖落入附加权利要求定义的发明实质和范围以内的所有修改、等价物及替换方案。这里使用的标题仅仅用于组织目的,而不是用于限制本说明书的范围。本申请中使用的单词“可以”是用于许可的意义(也就是意味着有可能)而不是强制的意义(也就是必须)。同样,单词“包括”、“包含”意味着包含而不是限于。
在这里可以将各个单元、电路或其它组件描述成是“被配置成”执行一个或多个任务。在这样的上下文中,“被配置成”是广义的结构叙述,其通常意味着“具有电路,其中该电路”在工作过程中执行一个或多个任务。因此,即便单元/电路/组件当前并未开启,也可以将其配置成执行该任务。通常,形成与“被配置成”相对应的结构的电路可以包括硬件电路。类似地,为了方便描述,在说明书中可以将各个单元/电路/组件描述成执行一个或多个任务。该描述应被解释成是包含了短语“被配置成”。对于被配置成执行一个或多个任务的单元/电路/组件所进行的叙述显然不是特意为了调用35U.S.C.§112第六段中关于所述单元/电路/组件的解释。
具体实施方式
现在转到图1,该图显示的是系统5的一个实施例的框图。在图1的实施例中,系统5包括与外部存储器12A-12B耦合的集成电路(IC)10。在所示出的实施例中,集成电路10包括中央处理器单元(CPU)框14,其包括一个或多个处理器16以及二级(L2)缓存18。其它实施例有可能不包括L2缓存18,和/或有可能包含附加等级的缓存。此外,包含两个以上的处理器16以及只包含一个处理器16的实施例也在考虑之列。集成电路10还包括由一个或多个非实时(NRT)外设20组成的集合以及由一个或多个实时(RT)外设22组成的集合。在所示出的实施例中,RT外设包括图像处理器24、一个或多个显示管线(pipe)26以及端口仲裁器28。其它实施例可以根据需要包括更多或更少的图像处理器24、更多或更少的显示管线26和/或任何附加的实时外设。图像处理器24可以被耦合成接收来自系统5中的一个或多个相机的图像数据。类似地,显示管线26可以耦合到控制系统中的一个或多个显示器的一个或多个显示控制器(未显示)。在所示出的实施例中,CPU框14耦合到桥接/直接存储器访问(DMA)控制器30,所述控制器则可以耦合到一个或多个外设设备32和/或一个或多个外设接口控制器34。在各个实施例中,外设设备32和外设接口控制器34的数量可以从零到任何预期数量。图1所示的系统5还包括图形单元36,该图形单元包含一个或多个图形控制器,例如G0 38A和G138B。在其它实施例中,每一个图形单元的图形控制器数量以及图形单元的数量都是可以改变的。如图1所示,系统5包括与一个或多个存储器物理接口电路(PHY)42A-42B耦合的存储器控制器40。存储器PHY 42A-42B被配置成通过集成电路10的管脚与存储器12A-12B进行通信。存储器控制器40还包括一组端口44A-44A-44E。端口44A-44B分别经由第一类型的接口(1/face 1)与图形控制器38A-38B耦合。CPU框14经由第二类型的接口(1/face 2)与端口44C耦合。NRT外设20和RT外设22分别经由第二类型的接口耦合至端口44D-44E。在其它实施例中,存储器控制器40中包含的端口数量也是可以改变的,并且内容存储器的数量也是如此。在其它实施例中,存储器PHY 42A-42B以及相应存储器12A-12B的数量可以是一个或两个以上。
在一个实施例中,每个端口44A-44E都可以与特定类型的业务关联。例如,在一个实施例中,业务类型可以包括RT业务、NRT业务以及图形业务。其它实施例可以包括作为上述业务子集的补充或替换的其它业务类型。每种业务可以用不同的方式表征(例如依照需求和行为),并且存储器控制器可以用不同方式处理多种业务类型,以便基于特征来提供更高的性能。例如,RT业务需要在特定时间量内服务于每一个存储器操作。如果该操作的延时超出了该特定时间量,那么在RT外设中有可能出现错误操作。例如,图像数据可能在图像处理器24中丢失,或者显示在与显示管线26相耦合的显示器上的图像有可能发生视觉畸变。例如,RT业务可被表征成是等时性的。另一方面,图形业务可能具有相对较高的带宽,但对延时则并不敏感。对于NRT业务,例如来自处理器16的NRT业务,出于性能方面的原因对延时更为敏感,但是经受得住较高的延时。换言之,通常可以在任何延时下提供NRT业务,而不会导致在产生NRT业务的设备中出现错误操作。类似地,对延时的敏感度较低但却具有较高带宽的图形业务通常是可以在任何延时下提供。其它NRT业务可以包括音频业务,其具有相对较低的带宽并且通常可以用合理的延时来提供。大多数的外设业务也可以是NRT的(例如到磁性、光学或固态存储器之类的存储设备的业务)。
通过提供与不同的业务类型相关联的端口44A-44E,可以将存储器控制器40暴露于并行的不同业务类型,并由此可以能够基于业务类型来更好地决定在其它存储器操作之前先服务于哪一个存储器操作。在一些实施例中,每个端口可以专用于RT或NRT业务。在其它实施例中,端口可以与特定业务类型相关联,但在该端口上也可以支持其它业务类型。在一个实施例中,图形业务可被认为是NRT业务,但是如果具有将图形业务与其它NRT业务相分离的可视性,那么这将有益于其它NRT源以及RT源之间的带宽平衡。类似地,如果将处理器业务与其它NRT源分离,那么将会有益于带宽平衡。在所示出的实施例中,RT端口44E可以与RT业务关联,剩余端口44A-44D则可以与NRT业务关联。
通常,端口可以是存储器控制器40上与一个或多个源进行通信的通信点。在一些情况中,该端口可以专用于某个源(例如,端口44A-44B可以分别专用于图形控制器38A-38B)。在其它情况中,端口可以在多个源之间共享(例如,处理器16可以共享CPU端口44C,NRT外设20可以共享NRT端口44D,以及诸如显示管线26和图像处理器24之类的RT外设可以共享RT端口44E)。端口可以耦合至单个接口,以便与一个或多个源进行通信。由此,当多个源共享一个接口时,在接口的源的一端可以有一个用于在所述源之间进行选择的仲裁器。例如,L2缓存18可以充当CPU端口44C到存储器控制器40的仲裁器。端口仲裁器28可以充当RT端口44E的仲裁器,并且类似的端口仲裁器(未显示)可以是用于NRT端口44D的仲裁器。端口上的单个源或端口上的源的组合可被称为代理。
每个端口44A-44E耦合到一个接口,以便与各自的代理进行通信。该接口可以是任何类型的通信介质(例如,总线、点到点互连等等),并且可以实施任何协议。在一些实施例中,端口44A-44E可全都实施相同的接口和协议。在其它实施例中,不同的端口可以实施不同的接口和/或协议。例如,图1所示的实施例包括使用一种接口/协议的图形控制器38A-38B,以及使用另一种接口/协议的NRT外设20和RT外设22。接口可以是指接口的信号定义和电属性,而协议则可以是关于接口上的通信的逻辑定义(例如,包括命令、排序规则、如果有的话还包括一致性支持等等)。在各个端口44A-44E支持一种以上的接口可以消除在由源/代理支持的一个接口与由存储器控制器支持的接口之间进行转换的需要,在一些实施例中,这样做可以改善性能。此外,集成电路10的一些实施例可以包括从第三方购买的作为预先封装的单元的电路,这种预先封装的单元在产业中通常被称为知识产权(IP)。该IP可以是“硬的”(在这种情况下,其具体是作为块而被铺设并放置在IC上的电路网表)或“软的”(在这种情况下,其具体是可以与其它块合成地包含在集成电路10中的可合成的块)。软和硬IP都包括指定的接口和协议,并且所述接口和协议通常不能由集成电路10的设计人员改变(至少在没有向拥有IP的第三方付费的情况下是这样)。相应地,支持多种接口/协议可允许更容易地包含第三方IP。
在一个实施例中,每个源可以为由所述源传送的每一个存储器操作分配一个服务质量(QoS)参数。该QoS参数可以标识用于该存储器操作的服务的请求等级。相比于请求较低服务等级的存储器操作,具有请求更高服务等级的QoS参数值的内容操作可被给予优先权。例如,到图1中的端口44A-44E的每个接口都被显示成包含命令(Cmd)、流程标识符(FID)以及QoS参数(QoS)。该命令可以识别存储器操作(例如读或写)。读命令/存储器操作将数据从存储器12A-12B传送到源,而写命令/存储器操作将数据从源传送到存储器12A-12B。所述命令还可以包括用于编程存储器控制器40的命令。例如,将哪些地址范围映射到哪些存储器通道、带宽共享参数等等都可以在存储器控制器40中进行编程。作为存储器操作流程的一部分,FID可以标识存储器操作。存储器操作的流程通常可以是关联的,而来自不同流程的存储器操作则可能未必关联,即便它们来自相同的源。FID的一部分(例如源字段)可以标识源,而FID的剩余部分可以标识流程(例如流字段)。因此,FID可以与事务ID相类似,并且一些源可以只传送作为FID的事务ID。在这种情况下,事务ID的源字段可以是FID的源字段,并且事务ID的序列号(其在来自相同的源的事务中标识所述事务)可以是FID的流字段。但是,将事务聚合成流的源可以用不同方式使用FID。作为替换,流可以与源字段相关联(例如,来自相同的源的操作可以是相同的流的一部分,而来自不同的源的操作是不同的流的部分)。在下文中,标识流中的事务的能力可以通过各种方式使用(例如QoS升级,重排序等等)。
由此,给定源可被配置成使用QoS参数来识别哪些存储器操作对所述源来说更为重要(并且由此应在来自相同的源的其它存储器操作之前得到服务),对那些支持相对于来自所述源的地址传输的无序数据传输的源来说尤其如此。此外,QoS参数可以允许所述源请求比在相同端口上的其它源和/或其它端口上的源更高的服务等级。
在一些实施例中,不同的业务类型可以具有不同的QoS参数定义。换言之,不同的业务类型可以具有不同的QoS参数集。给定的QoS参数值的含义取决于从其抽出所述参数值的QoS参数集。例如,可以定义一个RT QoS参数集,并且可以定义一个NRT QoS参数集。由此,RT QoS参数值被分配了在RT QoS参数集内的含义,而NRTQoS参数值被分配了在NRT QoS参数集内的含义。其它实施例可以在所有端口上或所有业务类型中实施相同的QoS参数集。
存储器控制器40可以被配置成处理在每个端口44A-44E上接收的QoS参数,并且可以使用相对QoS参数值来相对于来自该端口的其它存储器操作以及在其它端口上接收的其它存储器操作调度在该端口上接收的存储器操作。更具体地说,存储器控制器40可以被配置成对从不同QoS参数集(例如RT QoS参数集和NRT QoS参数集)中抽出的QoS参数进行比较,并且可以被配置成基于这些QoS参数来做出调度决定。
由此,QoS参数可以是与存储器操作一起传送的值,并且可以在存储器控制器内部使用这些值来识别所请求的QoS等级。QoS等级可以与其它等级是相对的,并且可以规定在具有较低QoS等级的其它存储器操作之前优先选择哪些存储器操作。因此,在被存储器控制器40解释之后,QoS等级可以充当某种优先级,以便考虑被定义为不同的集的QoS等级,但是该优先级也可以通过其它因素来平衡。
在一些实施例中,存储器控制器40可以被配置成升级未决存储器操作的QoS等级。可以支持各种升级机制。例如,存储器控制器40可以被配置成响应于接收到了来自具有规定较高QoS等级的QoS参数的一个流程中的一个存储器操作而升级该同一个流程中的未决存储器操作的QoS等级。由于使用正常存储器操作传输方法传送的QoS参数还充当了用于相同流程中的存储器操作的隐性升级请求,因此可以将这种QoS升级形式称为带内升级。存储器控制器40可以被配置成推送来自相同端口或源(但不是相同流程)的未决存储器操作作为新接收的规定更高的QoS等级的存储器操作。另举一例,存储器控制器40可以被配置成耦合到来自一个或多个代理的边带接口,并且可以响应于在边带接口上接收到了升级请求而升级QoS等级。在另一个例子中,存储器控制器40可以被配置成追踪未决存储器操作的相对年龄。该存储器控制器40可以被配置成在某个年龄下升级年老的存储器操作的QoS等级。用以执行升级的年龄可以取决于年老的存储器操作的当前QoS参数。
存储器控制器40可以被配置成确定在端口上接收的每一个存储器操作所寻址的存储器通道,并且可以被配置成在相应通道上向存储器12A-12B传送该存储器操作。在各个实施例中,通道数量以及地址到通道的映射是可以改变的,并且是可以在存储器控制器中编程的。存储器控制器可以使用被映射到相同通道的存储器操作的QoS参数来确定被传送至该通道的存储器操作的顺序。换言之,存储器控制器可以相对于在端口上接收存储器操作的原始顺序而对存储器操作重新排序。此外,在通道中的处理过程中,存储器操作可以在一个或多个点被再次重新排序。在重新排序的每一个等级,对于QoS参数的强调的量可以减小,并且影响存储器带宽效率的因素可以增加。一旦存储器操作到达存储通道流水线末端,则可以通过组合QoS等级以及存储器带宽效率来对操作进行排序。在一些实施例中可以实现高的性能。
处理器16可以实施任何指令集架构,并且可以被配置成执行该指令集架构中定义的指令。处理器16可以使用任何微架构,这其中包括标量的、超标量的、流水线的、超流水线的、乱序的、顺序的、推测性的、非推测性的微架构等等或是其组合。处理器16可以包括电路,并且可以可选地实施微编码技术。处理器16可以包括一个或多个一级缓存,并由此缓存18是二级缓存。其它实施例可以在处理器16中包含多级缓存,并且缓存18可以是该层次中向下的下一个等级。缓存18可以使用任何大小和任何配置(集合关联,直接映射等等)。
图形控制器38A-38B可以是任何图形处理电路。通常,图形控制器38A-38B可以被配置成将所要显示的对象渲染(render)到帧缓冲器中。该图形控制器38A-38B可以包括图形处理器,所述图形处理器可以执行图形软件来执行一部分或所有图形操作,和/或某些图形操作的硬件加速。硬件加速的量和软件实施方式可以随实施例而改变。
NRT外设20可以包括任何非实时外设,出于性能和/或带宽方面的原因,这些NRT外设是独立于对存储器12A-12B的访问提供的。换言之,NRT外设20的访问与CPU块14无关,并且可以与CPU块的存储器操作并行执行。其它外设,例如外设32和/或与受外设接口控制器34控制的外设接口相耦合的外设,也可以是非实时外设,但是可以不需要到存储器的独立的访问。NRT外设20的各个实施例可以包括视频编码器和解码器、定标器/旋转器电路、图像压缩/解压缩电路等等。
如上所述,RT外设22可以包括图像处理器24和显示管线26。显示管线26可以包括用于取出一个或多个帧以及通过混合这些帧来创建显示图像的电路。该显示管线26还可以包括一个或多个视频管道(pipeline)。显示管道26的结果可以是显示屏上显示的像素流。这些像素值可以传送至显示控制器,以便在显示屏上显示。图像处理器26可以接收摄像机数据,并且将该数据处理成是存储在存储器中的图像。
桥接/DMA控制器30可以包括将一个或多个外设32以及一个或多个外设接口控制器34桥接到存储器空间的电路。在所示出的实施例中,桥接/DMA控制器30可以将存储器操作从外设/外设接口控制器经由CPU块14桥接到存储器控制器40。CPU块14还可以保持所桥接的存储器操作与来自处理器16/L2缓存18的存储器操作之间的一致性。L2缓存18还可以使用来自处理器16的存储器操作来仲裁所桥接的操作,以便在到CPU端口44C的CPU接口上对其进行传送。该桥接/DMA控制器30还可以代表外设32和外设接口控制器34来提供DMA操作,以便往来于存储器传送数据块。更具体地讲,DMA控制器可以被配置成代表外设32以及外设接口控制器34来执行经由存储器控制器40往来于存储器12A-12B的传输。DMA控制器可以由处理器16编程,以便执行DMA操作。例如,DMA控制器可以经由描述符来编程。所述描述符可以是保存在存储器12A-12B中的、描述DMA传输(例如源和目的地地址,大小等等)的数据结构。作为替换,DMA控制器可以借助DMA控制器中的寄存器(未显示)来编程。
外设32可以包括任何希望的输入/输出设备,或是包含在集成电路10中的其它硬件设备。举例来说,外设32可以包括联网外设,例如一个或多个联网的介质访问控制器(MAC),所述介质访问控制器例如是以太网MAC或无线高保真(WiFi)控制器。在外设32中还可以包括音频单元,该音频单元包括各种音频处理设备。在外设32中可以包括一个或多个数字信号处理器。所述外设32可以包括其它任何所需功能,例如定时器、片上秘密存储器、加密引擎等等或是其组合。
外设接口控制器34可以包括用于任何类型的外设接口的任何控制器。举例来说,外设接口控制器可以包括不同的接口控制器,例如通用串行总线(USB)控制器、外设组件快速互连(PCIe)控制器、闪存存储器接口、通用输入输出(I/O)管脚等等。
存储器12A-12B可以是任何类型的存储器,例如动态随机访问存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等等)SDRAM(包括移动版本的SDRAM,例如mDDR3等等,和/或低功率版本的SDRAM,例如LPDDR2等等)、RAMBUSDRAM(RDRAM)、静态RAM(SRAM)等等。一个或多个存储器设备可以耦合至电路板,从而形成存储器模块,例如单列直插式存储器模块(SIMM),双列直插式存储器模块(DIMM)等等。作为替换,该设备可以采用芯片堆叠(chip-on-chip)配置、封装堆叠(package-on-package)配置、或多芯片模块配置安装到集成电路10。
存储器PHY 42A-42B可以处理到存储器12A-12B的低级物理接口。例如,存储器PHY 42A-42B可以用于信号定时、同步DRAM存储器的恰当计时等等。在一个实施例中,存储器PHY 42A-42B可以被配置成锁定到集成电路10内部供应的时钟,并且可以被配置成产生存储器12所使用的时钟。
应注意,其它实施例可以包括其它的组件组合,包括图1所示的组件和/或其它组件的子集或超集。虽然在图1中显示的是给定组件的一个实例,但是其它实施例可以包括给定组件的一个或多个实例。类似地,在本详细描述中,即便只显示了给定组件的一个实例,给定组件的一个或多个实例也是可以包含的,和/或即便显示了多个实例,也可以使用只包含一个实例的实施例。
应注意,存储器控制器40的其它实施例有可能不实现多个端口,而是可以仍实现多个QoS参数、用于不同的业务类型或类别(例如NRT和RT)的不同QoS参数/等级、以及QoS升级。
接下来转到图2,该图显示了一对表格50和52,所述表格分别示例了用于一个实施例的RT QoS等级集合和NRT QoS等级集合的定义。其它实施例可以包括附加或替换的等级,并且其它实施例可以包括与示例等级的子集相结合的附加等级。如紧挨着图2中的表格50和52的向下箭头所示,这些表格是按照增加的优先级示例集合内的QoS等级的。换言之,实时绿色(RTG)QoS等级是优先级最低的RT QoS等级;实时黄色(RTY)QoS等级是优先级中等的RT QoS等级;而实时红色(RTR)QoS等级是优先级最高的RT QoS等级。类似地,尽力而为(BEF)QoS等级是优先级最低的NRT QoS等级,而低延时的(LLT)QoS等级则是优先级最高的NRT QoS等级。图2中彼此紧挨着的RT QoS等级和NRT QoS等级的例证并不用于指示RT QoS等级相对于NRT QoS等级的相对优先级。取而代之的是,存储器控制器40可以部分基于其它因素来确定这种优先级,该其它因素指示的是存储器控制器40所经历的跨不同类型和端口的业务。
RTG、RTY和RTR QoS等级可以从RT源的角度反映紧急性的相对等级。换言之,随着为了防止错误操作的、在RT源需要数据之前的时间量减少,分配给每个存储器操作的QoS等级将会提升,从而指示更高的紧急程度。通过用较高优先级对待紧急程度较高的操作,存储器控制器40可以更快地向RT源返回数据,由此可以辅助RT源的正确操作。
例如,显示管线26可以开始从存储器12A-12B中读取用于在显示器的垂直消隐区间中显示的下一个帧的帧数据。在垂直消隐区间结束之前,所述帧实际并未显示,因此,显示管线26可以在该时段中使用RTG等级。当开始要显示所述帧(也就是显示器控制器开始从显示器管线26输出中读取帧像素)时,显示管线26可以将针对存储器的帧数据读取操作的QoS等级提升至RTY等级。举例来说,如果在显示当前像素之前读出的帧数据的量减小至低于第一阈值,那么该等级可以升至RTY。在第二阈值(低于第一阈值),显示管线26可以将存储器操作的QoS等级提升至RTR。
BEF NRT QoS等级可以是在满足其它数据流的需要的同时以存储器控制器40所能实现的尽可能快的速率返回数据的请求。另一方面,LLT NRT QoS等级可以是关于低延时的数据的请求。与具有BEFQoS等级(至少在某些情况中)的存储器操作相比,具有LLT QoS等级的NRT存储器操作在相对于其它存储器事务的优先级方面可以得到更密切的处理。在其它情况下,存储器控制器可以同等对待BEF和LLT QoS等级。
接下来转到图3,该图显示的是存储器控制器40的一个实施例的框图。在图3的实施例中,存储器控制器40包括代理接口单元(AIU)54以及一个或多个存储器通道单元56A-56B。给定实施例中包含的每一个存储器通道都有可能具有一个存储器通道单元56A-56B,并且其它实施例可以包括一个通道或两个以上的通道。如图3所示,AIU 54可以包括多个端口接口单元58A-58E。更具体是,存储器控制器40上的每一个端口44A-44E都有可能具有一个端口接口单元58A-58E。此外,AIU 54还可以包括存储器通道接口单元(MCIU)60A-60B(每个都对应于一个存储器通道单元56A-56B)。AIU 54还可以包括一个或多个带宽共享寄存器62,这些寄存器可以通过编程来指示如何在端口之间共享带宽。端口接口单元58A-58E可被耦合成在相应端口上接收存储器操作,接收/传送数据和响应,并且还可以被耦合到MCIU60A-60B。所述MCIU 60A-60B可以进一步耦合到带宽共享寄存器62以及相应的MCU 56A-56B。如图3所示,每一个MCU 56A-56B可以包括预排序队列(PSQ)64以及存储器接口电路(MIF)66。PSQ 64与相应的MCIU 60A-60B以及同一个MCU 56A-56B中的MIF 66相耦合。每一个MCU 56A-56B中的MIF 66都耦合到相应的存储器PHY42A-42B。
AIU 54可以被配置成在端口44A-44E上接收存储器操作,并且通过将存储器操作的QoS参数用作判决先于传送至MCU 56A-56B之一的其它存储器操作而将哪些存储器操作传送至相同的MCU56A-56B的因素,将存储器操作切换到这些存储器操作所寻址的通道。所述其它因素可以包括用于在端口之间划分存储器通道带宽的带宽共享控制。
更具体地讲,每一个端口接口单元58A-58E都可以被配置成接收来自相应端口44A-44E的存储器操作,并且可以被配置成确定给定存储器操作被引导到的存储器通道。端口接口单元58A-58E可以将存储器操作传送至相应的MCIU 60A-60B,并且可以在所示例的实施例中分开传送读取与写入。由此,举例来说,端口接口单元58A可以具有到MCIU 60A的、分别用于读取操作和写入操作的Rd0连接和Wr0连接。类似地,端口接口单元58A可以具有到MCIU 60B的Rd1连接和Wr1连接。其它端口接口单元58B-58E可以具有到MCIU60A-60B的类似连接。此外,还可以具有用于将读取的数据从端口接口单元58A-58B传送至MCIU 60A-60B的数据接口,在图3中,这些接口被整体表示成是虚线状的“D”接口。
MCIU 60A-60B可以被配置成将端口接口单元58A-58E提供的存储器操作排成队列,并且在存储器操作之间进行仲裁,以便选择传送至相应MCU 56A-56B的操作。在以给定存储器通道为目标的操作之间进行的仲裁可以独立于在以其它存储器通道为目标的操作之间进行的仲裁。
MCIU 60A-60B可以耦合至带宽共享寄存器62,所述寄存器62可以被编程,以便指示如何将通道上的存储器带宽分配给给定通道中的存储器操作。举例来说,在一个实施例中,在没有高优先级业务(例如RT业务中的RTR或RTY QoS等级)存在时,MCIU 60A-60B可以使用赤字加权轮询算法而在多个端口之间进行选择。当存在RTR或RTY业务时,可以使用轮询机制在具有RTR/RTY业务的多个端口之间进行选择。赤字加权轮询机制中的权重可被编程,以便将相对较多的带宽分配给其中一个端口而不是另一个端口。例如,可以对权重进行选择,以与图形和NRT端口相比偏向处理器业务,或者与其它端口相比偏向于图形端口。在各个实施例中,任何权重的集合都是可以使用的。其它实施例可以采用其它方式来量度带宽分配。例如,可以使用总带宽的百分比。在其它实施例中,可以使用信用系统来控制所选择的来自每一个端口的操作的数量。然而,在各个实施例中通常可以基于QoS参数以及带宽共享需求两者来选择操作。
MCU 56A-56B被配置成调度来自要在存储器通道上传送的其队列的存储器操作。例如,MCU可以被配置成在PSQ 64中分别将读取和写入排成队列,并且可以被配置成使用基于信用的系统而在读取和写入之间进行仲裁。在所述基于信用的系统中,为读取和写入分配了一定数量的信用值。写入信用值和读取信用值的数量不需要是相等的。所调度的每一个存储器操作都有可以耗费信用值。一旦写入信用值和读取信用值都减小为零或更少,并且存在将要调度的未决事务,那么可以为这两种信用值增加所分配的相应数量的信用值。其它实施例可以使用其它机制在读取和写入之间进行选择。在一个实施例中,信用系统可以是在读取和写入之间的仲裁机制的一部分(与关于写入队列的充满度的量度一起)。换言之,当写入队列变得更满时,可以提升仲裁机制中的写入的优先级。附加细节将会在下文中得到阐述。
在一个实施例中,在PSQ 64的入口可以消除写入操作的QoS参数。读取操作可以保持QoS参数,并且这些QoS参数可以影响来自PSQ 64的读取调度。
在一个实施例中,MCU 56A-56B可以在操作的突发中调度存储器操作(突发中的每个操作都会耗费一个信用值)。如果突发将信用值计数减小为零,则该突发可以被允许完成,并且可以将信用值计数减小成负数。当稍后增加信用值计数时,这时可以考虑所述负信用值,由此,增长后的信用值总量有可能少于所分配的信用值的量。
为了创建用于调度的存储器操作的突发,MCU 56A-56B可以将存储器操作分组成密切关系组。如果当存储器操作在接近的时间执行时可以在存储器接口上高效地被执行,则声称其中一个存储器操作显现出与另一个存储器操作具有密切关系(或者可以声称与另一个存储器操作密切)。效率可以在增加的带宽使用方面被量度。例如,SDRAM存储器由可以使用激活命令(以及页地址)开放的页来表征的。页的大小可以随实施例改变,并且所述页的大小通常是指一旦传送了激活命令,就可用于访问的连续比特的数量。异步DRAM存储器可以类似地具有可通过声明行地址选通控制信号并且通过提供行地址而开放的页。访问同一页中的数据的两个或更多存储器操作可以是密切的,因为在接口上只需要一个用于存储器操作的激活/RAS。SRAM存储器还具有独立的区块(bank)和列(rank)。区块可以是SDRAM芯片内的具有开放的行(在其内部可以检测到页命中(page hit))的存储器单元的集合。列可以借助由存储器控制器的芯片选择而被选定,并且可以包括一个或多个SDRAM芯片。针对不同列或区块的存储器操作也可以是密切操作,因为这些存储器操作没有发生冲突,并且由此不需要关闭页以及开放新的页。只有在存储器操作沿着相同方向传送数据的情况下,才可以将其视为密切操作(也就是说,读取操作只可以与其它读取操作是密切的,类似地,写入操作只可以与其它写入操作是密切的)。针对相同页(或针对开放页)的存储器操作可被称为页命中,并且针对不同的区块/列的存储器操作可被称为区块命中和列命中。
MCU 56A-56B还可以被配置成在到存储器12A-12B的存储器接口上调度命令(通过存储器PHY 42A-42B),以便执行所调度的存储器操作。更具体地,在一个实施例中,MCU 56A-56B可以被配置成预先合成用于每一个存储器操作的命令,并将这些命令排成队列。MCU 56A-56B可以被配置成调度这些命令,以便提供存储器带宽的高效使用。在一个实施例中,每一个MCU 56A-56B中的MIF 66都可以实现命令的预合成以及命令的预调度。
现在转到图4,该图示出的是端口接口单元58C的一个实施例的框图。其它端口接口电路58A-58B以及58D-58E可以是类似的,但在用于与不同接口相耦合的端口接口电路的实现中有可能存在差别。如图4所示,在所示出的实施例中,端口接口单元58C包括耦合到读(AR)和写(AW)接口的缓冲器70A-70B,以便分别接收读和写入存储器操作。缓冲器70A-70B分别耦合到与Rd0/Rd1接口和Wr0/Wr1接口分别耦合的读取派生(spawn)生成器72以及写入派生生成器74。读取派生生成器72与读取未决事务表(ROTT)76相耦合,写入派生生成器74则与写入未决事务表(WOTT)78相耦合。ROTT 76与被配置成在接口上产生读取响应的读取响应生成器80相耦合。ROTT还与读取缓冲器84相耦合,读取缓冲器84被耦合成通过复用器86接收来自MCU 56A-56B中的任何一个的数据,以及在接口上提供读取数据。WOTT 78与被配置成在接口上产生写入响应的写入响应生成器82相耦合。WOTT 78还与写入数据转发缓冲器88相耦合,缓冲器88被耦合成向MCU 56A-56B提供数据,并且被耦合成从缓冲器70C接收数据,缓冲器70C被耦合成接收来自接口的写入数据。
对于读取操作,缓冲器70A可以被配置成接收来自接口的操作。缓冲器70A可以被设置成获取和保持读取操作,以供读取派生生成器72处理。在一个实施例中,举例来说,缓冲器70A可以是双表目(entry)的“滑移(skid)”缓冲器,它允许在不可用资源变得可用的延迟的情况下获取第二操作,由此缓和在接口上向一个或多个源传播背压请求的定时。缓冲器70B-70C类似地可以是双表目滑移缓冲器。其它实施例可以根据需要在滑移缓冲器中包含另外的表目。
读取派生生成器72可以被配置成解码读取操作的地址,以便确定读取操作寻址的是哪一个存储器通道。读取派生生成器72可以被配置成将读取操作经由Rd0或Rd1接口传送到所寻址的存储器通道。在一些实施例中,读取操作有可能与多个存储器通道交叠。每个读取操作可以规定一个大小(也就是将要以操作地址为开端读取的字节数量)。如果大小与地址的组合表明从一个以上的通道读取字节,那么读取派生生成器72可以被配置成产生针对所寻址的通道的多个读取操作。在读取缓冲器84中可以累积来自多个读取操作的读取数据,以便将其返回给源。
读取派生生成器72还可以被配置成更新ROTT 76,由此分配ROTT 76中的表目来追踪读取处理的进展。一旦在读取缓冲器84中接收到数据,ROTT 76可以被配置成用信号通告读取响应生成器80产生读取响应,以便将数据传送到源。如果在接口上按顺序返回读取数据(例如根据接口上的协议),那么可以在读取缓冲器84中保持缓冲数据,直至返回了先前的读取,然后,ROTT 76可以用信号通告读取响应生成器80传送数据。所述ROTT 76可以被耦合成接收来自MCU 56A-56B的各个状态信号,以便更新未决的读取操作的状态(图4中并未显示)。
缓冲器70B、写入派生生成器74以及WOTT 78可以类似地操作用于写入操作。但是,数据是在接口上接收的而不是传送的。在写入数据转发缓冲器88中可以接收写入数据,并且可以将其转发到相应写入操作的当前位置。一旦保证写入已完成,WOTT 78可以用信号通告写入响应,由此使用比原本可能出现的写入响应更早的写入响应来终止接口上的写入。
应该注意,虽然图4所示的实施例包括分开传递读和写入存储器操作(分别是AR和AW)的接口,但是其它实施例可以包括用于读取和写入操作两者的单个传输介质。在这种实施例中,单个缓冲器70可以接收这些操作,并且读取派生生成器72和写入派生生成器74可以解码来自接口的命令,以便区分读取和写入操作。作为替换,可以存在一个产生读取和写入操作两者、并且相应地更新ROTT 74或WOTT 78的派生生成器。
现在转到图5,该图显示的是示出了MCIU 60A的一个实施例的框图。MCIU 60B可以是类似的,只不过它被耦合成从每个端口接收Rd1和Wr1输入,并且与MCU 56B相耦合。在所示出的实施例中,MCIU包括一组读取队列,例如图5所示的读取队列90A-90B,以及一组写入队列,例如写入队列92A-92B。每一个端口可以具有一个读取队列以及一个写入队列。每个读取队列耦合到端口接口单元58A-58E之一的Rd0输出并且与QoS仲裁器94A相耦合。每个写入队列耦合到端口接口单元58A-58E中的相应单元的Wr0输出并且与QoS仲裁器94B相耦合。QoS仲裁器94A-94B的输出分别作为读取和写入输入被提供给MCU 56A。QoS仲裁器94A-94B被耦合成接收来自带宽共享寄存器62的数据。
在读取队列90A中显示了两个读取队列表目,并且其它读取队列可以是类似的。读取队列90A包括存储器操作的FID、所述操作的QoS参数、推送比特(P)以及其它字段(Oth)。FID和服务质量参数可以是在接口上与存储器操作一起传送至存储器控制器40的相同的值。作为替换,为了方便起见,存储器控制器40可以在内部记录一个或两个值。如果第二存储器操作被排序在存储器操作之后,并且所述第二存储器操作的QoS等级高于所述存储器操作,那么可以使用推送比特在所述存储器操作上强加一个较高优先级。例如,第二存储器操作与所述存储器操作可以是在相同的端口上接收的,并且该端口上的接口可能需要按照与传送存储器操作的顺序相同的顺序来返回数据。通过强加较高优先级,可以更快地执行存储器操作,并且由此可以允许更快地服务于具有较高QoS等级的第二存储器操作。其它字段可以包括用于存储器操作的各种其它信息(例如地址、大小信息等等)。类似地,在写入队列92A中显示了两个写入队列表目,并且该写入队列表目可以包括与读取队列90A类似的字段。如果需要的话,其它字段可以存储与读取相比不同的、用于写入的信息。
QoS仲裁器94A-94B可以分别在读取队列90A-90B以及写入队列92A-92B之间执行仲裁。该QoS仲裁器可以考虑QoS等级(由队列中的QoS参数指示)以及来自带宽共享寄存器的带宽共享参数。所选择的读取和写入操作(如果有的话)被传送至MCU 56A。
应注意,在一些实施例中有可能存在从端口接口单元到QoS仲裁器94A和/或94B的一条或多条旁路(在图5中并未显示)。例如,来自CPU端口接口单元58C的读取可以绕到QoS仲裁器94A,以便允许针对处理器的低延时读取。在一些实施例中,可以从QoS仲裁器94A-94B掩蔽队列90A-90B和/或92A-92B中的一个或多个存储器操作。例如,可以向QoS仲裁器92A-92B掩蔽其相应数据尚未到达存储器控制器40的写入操作,以免阻拦来自其它端口的、其相应数据已经到达存储器控制器40的写入操作。
图6是示出了每一个QoS仲裁器94A-94B的一个实施例的操作的流程图。虽然为了便于理解而采用了特定顺序来显示方框,但是其它顺序也是可用的。方框可以在QoS仲裁器94A-94B中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以在多个时钟循环上被流水线化。QoS仲裁器94A-94B可以被配置成实现图6所示的操作。
如果在被耦合到QoS仲裁器的多个队列之一中有至少一个存储器操作具有RTY或RTR的RT QoS等级,或者为该至少一个存储器操作设置了推送比特(判决方框100中的“是”分支),那么QoS仲裁器可以在具有RTY或RTR QoS等级和/或设置了推送比特的队列之间进行仲裁(方框102)。由于在本实施例中,每一个队列对应于一个端口,因此,QoS仲裁器可以有效地在具有RTY或RTR QoS等级和/或设置了推送比特的端口之间进行仲裁。由此,在该实施例中,AIU54可以同等对待RTG、BEF和LLT QoS等级。在本实施例中,AIU54可以将RTR和RTY QoS等级和设置了推送比特的操作视为彼此等同,并且具有高于其它等级的优先级。其它实施例可以具有另外的粒度等级(例如可以将RTR视为具有较高优先级,以使得RTY、RTG和LLT可被视为具有高于BEF的优先级等等)。此外,其它实施例可以实现不同于轮询的方案。
另一方面,如果不具有RTY或者RTR QoS等级的存储器操作,并且没有设置了推送比特的存储器操作(判决方框中的“否”分支),那么QoS仲裁器可以在所有队列(所有端口)之间进行仲裁(方框104)。例如,QoS仲裁器可以在端口之间实施赤字加权轮询方案,其中,权重可以基于带宽共享参数(或者带宽共享参数可以是权重)。其它实施例可以在所有端口之间实施其它仲裁方案。
现在转到图7,该图显示的是PSQ 64的一个实施例的框图。在所示出的实施例中,PSQ 64包括入队控制单元110、一组事务队列112、调度器114以及旁路复用器116。入队控制单元110被耦合成接收来自相应MCIU 60A或60B的读取和写入操作,并且与事务队列112相耦合。事务队列112进一步与调度器114相耦合,所述调度器的输出与旁路复用器116相耦合。旁路复用器116也被耦合成接收读取操作,并且被配置成在调度器114调度的存储器操作与读取操作之间进行选择。举例来说,如果在事务队列112中没有读取,并且写入的数量低于阈值等级,那么读取操作可以绕过事务队列112。其它实施例可以不实施旁路,并且旁路复用器116可以消除。
如图7所示,事务队列112可以包括一组读取密切关系队列,例如队列118A-118B,以及一组写入密切关系队列,例如队列120A-120B。读取密切关系队列和写入密切关系队列的数量可以随实施例而改变,并且读取密切关系队列的数量不需要等于写入密切关系队列的数量。每个密切关系队列可以存储一个或多个由入队控制单元110确定彼此之间显现出密切关系的存储器操作。因此,当入队控制单元110接收到存储器操作时,入队控制单元110可以被配置成将该存储器操作与密切关系队列118A-118B(用于读取操作)或是密切关系队列120A-120B(用于写入操作)相比较。如果存储器操作关系密切,则其可以入队到相应的密切关系队列中。如果不是的话,则该存储器操作可以入队到另一个密切关系队列中。在一个实施例中,一个读取密切关系队列可以被保留用于不是密切关系的读取,类似地,一个写入密切关系队列可以被保留用于不是密切关系的写入。
调度器114可以被配置成调度那些将要传送到MIF 66的存储器操作。对于读取操作来说,调度器114可以被配置成考虑读取密切关系队列118A-118B中的QoS等级以及每个读取密切关系队列118A-118B中的密切的存储器操作的数量。在下文中将会描述一个实施例的更多细节。然而,调度器114通常可以被配置成偏向于具有高QoS等级以及数量较多的密切存储器操作的读取操作。对于写入操作来说,在PSQ 64中可以消除QoS等级。也就是说,在将写入操作写入事务队列112的时候可以丢弃写入操作的QoS等级。如每一个队列118A和120A中的例示表目所示,读取操作可以保持QoS,而写入操作则不能保持。例如,调度器114可以被配置成基于写入队列的充满度以及读取队列的QoS等级而在读取操作与写入操作之间进行调度。在下文中将会进一步提供另外的细节。
应注意,在一些实施例中,读取密切关系队列118A-118B以及写入密切关系队列120A-120B可以在物理上实例化(例如作为单独的数据结构,或是作为借助PSQ 64中的逻辑电路划分的和/或通过编程分离的一个或多个数据结构)。在其它实施例中,密切关系队列可以是虚拟的。换言之,例如,可能存在读取队列和写入队列,这些密切关系操作可以通过标签来识别。
图8是示出了入队控制单元110响应于接收到存储器操作的一个实施例的操作的流程图。虽然为了便于理解而采用了特定顺序来显示方框,但是其它顺序也是可用的。这些方框可以在入队控制单元110中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以经过多个时钟周期被流水线化。入队控制单元110可以被配置成实施图8所示的操作。该入队控制单元110可以被配置成为同时接收的读取操作和写入操作并行地实施图8所示的操作。
入队控制单元110可以将接收到的操作与相应的密切关系队列118A-118B或120A-120B相比较,以便确定接收到的操作是否显现出与排队的操作具有密切关系(判决方框130)。响应于检测到密切关系(并且如果在操作的密切关系队列中有空间),则入队控制单元110可以使该操作入队到所述密切关系队列(方框132)。响应于没有检测到密切关系,入队控制单元110可以将该操作列入空的密切关系队列(方框134)。
在图8的分解图中示出了用于一个实施例的密切关系检测。如果某个操作与密切关系队列中的其它操作为页命中(判决方框136中的“是”分支),或者与其它操作是区块或列错失(miss)(分别是判决方框138和140中的“是”分支),那么该操作可以是密切的。如果不是的话(判决方框136、138和140中的“否”分支),则该操作不与排队的操作密切。对于每个密切关系队列来说,判决方框136、138和140所示的检测可以是并行执行的。
图9是示出了用于在事务队列112中的读取操作和写入操作之间实施调度的调度器114的一个实施例的操作的流程图。虽然为了便于理解而采用了特定顺序来显示方框,但是其它顺序也是可用的。这些方框可以在调度器114中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以经过多个时钟周期流水线化。调度器114可以被配置成实施图9所示的操作。
在图9的实施例中有三个写入队列充满度(即事务队列112中的写入操作的数量)的阈值:高、中和低。高等级指示的事务队列112中的写入操作要比中等级指示的多,并且中等级指示的事务队列112中的写入操作要比低等级指示的多。在各个实施例中,这些阈值既可以是固定的也可以是可编程的。
调度器114可以被配置成检测阻断写入(判决方框150中的“是”分支),并且可以被配置成调度所述阻断写入(方框152)。阻断写入可以是具有推送比特设置的写入操作(表明具有较高QoS等级的存储器操作被排序在该写入操作之后)。阻断写入操作还可以是阻止针对相同地址的读取操作的写入操作(或者该写入操作更新读取操作所读取的至少一个字节)。
如果没有阻断写入,则可以基于信用系统来进行读取操作相对于写入操作的调度。也就是说,读取操作和写入操作中的每一个可被分配一定数量的信用值。一个调度的存储器操作可消耗来自相应信用值计数的一个信用值。在所示出的实施例中,一旦耗尽了读取信用值并且调度了读取操作,就可以通过向当前计数添加初始信用值来重新加载用于读取和写入两者的信用值。由于在调度读取或写入操作时可以在突发中调度密切关系的操作,因此,所述信用值计数可以减至零以下。也就是说,如果用于密切关系的操作的信用值计数减小为零,则调度器114可以不中断密切关系的操作突发。为了简便起见,下文中关于图9的论述可以参考读取队列中的读取操作以及写入队列中的写入操作。所述读取队列可以包括读取密切关系队列118A-118B的组合,写入队列可以包括写入密切关系队列120A-120B的组合。
响应于检测到写入队列已经达到高阈值,并且有至少一个可用的写入信用值(判决方框154中的“是”分支),调度器114可以被配置成从写入队列进行调度(方框156)。如果写入队列尚未达到高阈值,或者没有可用的写入信用值(判决方框154中的“否”分支),但是调度器114确定在读取队列中有至少一个读取操作并且存在可用的读取信用值(判决方框158中的“是”分支),则调度器114可以被配置成从读取队列进行调度(方框160)。如果在读取队列中没有读取操作或者没有可用的读取信用值(判决方框158中的“否”分支),但是调度器114确定写入队列已经达到中阈值,并且存在可用的写入信用值(判决方框162中的“是”分支),那么调度器可以被配置成从写入队列进行调度(方框156)。如果写入队列尚未达到中阈值,或者没有可用的写入信用值(判决方框162中的“否”分支),但是调度器114确定在读取队列中存在至少一个读取操作,并且不存在可用的读取信用值(判决方框164中的“是”分支),则调度器114可以被配置成从读取队列进行调度(方框160)。如先前所述,在这种情况下,调度器114也可以被配置成重新加载读取和写入信用值。如果在读取队列中没有读取操作(判决方框164中的“否”分支),并且调度器114确定写入队列达到了低阈值(判决方框166中的“是”分支),则调度器114可以被配置成从写入队列进行调度(方框156)。
虽然图9的流程图示出的是在写入队列达到低阈值之前不从写入队列进行调度,但是一些实施例可以在调度器114已经空闲了某个时段的情况下从写入队列进行调度。该时段可以是固定或是可编程的。
图10是示出了由调度器114实现从写入队列的调度(方框156)的一个实施例的操作的框图。如图10所示,调度器114可以被配置成调度写入操作数量最多的写入密切关系队列120A-120B(方框168)。
图11是示出了调度器114为调度来自读取队列的读取操作可能所处的各个状态的表格(方框160)。这些状态是按照优先级增大的顺序被示出的。因此,如果在图11的表格中有一个以上的表目对应于读取队列的内容,则优先级最高的表目可以是该调度器114的状态。调度器114可以被配置成为相应的状态调度图11的“调度”列中示出的操作。
图11的表格可以参考高于或低于绿色或黄色阈值的读取队列中的读取的数量。绿色和黄色阈值可以不同于RTG和RTY QoS等级,并且可以类似地如上所述写入队列阈值。所述绿色和黄色阈值可以是固定的或是可编程的。此外,密切关系群组可被称为是正在被调度的。密切关系群组可以是一个读取密切关系队列118A-118B中的操作的群组。
如果读取队列中的读取的数量低于黄色阈值(并且自从进入绿色状态时起没有高出过黄色阈值),以及如果在队列中没有RTY或RTR读取,那么调度器读取状态可以是绿色的。在绿色状态中,如果存在LLT读取操作,则调度器114可以被配置成调度LLT读取操作。如果在具有LLT读取操作的读取密切关系队列中存在操作,那么该操作也可以被调度的。如果没有LLT读取操作,则可以调度具有最老的读取操作的密切关系群组。
如果读取数量高于绿色阈值(并且自进入LLT黄色状态时起没有低于过绿色阈值),并且在读取队列中没有RTR或RTY读取操作,那么调度器读取状态可以是LLT黄色。在LLT黄色状态中,如果存在LLT读取操作,则调度器114可以被配置成调度LLT读取操作。如果没有LLT读取操作,则调度器114可以被配置成调度读取队列中的最大的密切关系群组。在一个实施例中,与绿色状态相似,如果在LLT黄色状态中没有LLT读取操作,则可以对调度器114进行编程,以便调度包含最老的读取操作的密切关系群组。
如果存在至少一个RTY读取操作,但没有RTR操作,则调度器读取状态可以是黄色的。在黄色状态中,调度器114可以被配置成调度包含了最老的RTY读取操作的密切关系群组或是最大的密切关系群组。
如果在队列中有至少一个RTR读取操作,并且调度器114被编程成将密切关系操作与RTR操作相关联,则调度器读取状态可以是红色密切关系。在红色密切关系状态中,调度器114可以被配置成调度包含了最老的RTR操作的密切关系群组。否则,可调度最大的密切关系群组。
如果在队列中有至少一个RTR读取操作,并且调度器114被编程为调度没有与其关系密切的操作的RTR读取操作,则调度器读取状态可以是红色。在红色状态中,调度器114可以被配置成调度最老的RTR读取操作或最大的密切关系群组。
以上论述参考的是“最老的”读取队列中的读取。在一些实施例中,读取操作可以基于在读取队列中花费的时间而被视为是最老的。在其它实施例中,其它方法也可用于量度年龄。例如,最老的读取操作可以依照为了另一个读取操作而没有调度该读取操作的次数来量度。
在调度密切关系群组时,从密切关系群组调度的存储器操作的数量可以是最高为固定或可编程的突发大小的群组中的操作数量。在一个实施例中,如果当前调度的密切关系群组的操作少于突发大小,则可以调度其它存储器操作。例如,调度器114可以调度那些能与当前调度的密切关系群组关系密切的“落后者(straggler)”(例如,作为先前被调度过,但却因为突发大小而终止的密切关系群组的一部分的存储器操作)。作为替换,调度器114可以被配置成选择次最大的密切关系群组。
现在转到图12,该图显示的是MIF 66的一个实施例的框图。在图12的实施例中,MIF 66包括MIF入队控制单元170、MIF事务队列172、开放页表174、预充电调度器176、模式注册(reg)调度器178、刷新调度器180、激活调度器182、列地址选通(CAS)调度器184以及最终调度器186。MIF入队控制单元170被耦合成接收来自PSQ 64的存储器操作,并且与开放页表174以及MIF事务队列172相耦合。开放页表174与预充电调度器176耦合。MIF事务队列172包括分别与激活调度器182和CAS调度器184耦合的激活队列188和CAS队列190。调度器176、178、180、182和184与最终调度器186相耦合,所述最终调度器186被耦合成根据在MCU 56A或56B中是否实例化MIF 66来向存储器PHY 42A或42B之一传送命令。
MIF入队控制单元170可以被配置成将接收到的存储器操作与开放页表174以及MIF事务队列172相比较,并且可以被配置成预先合成用于执行存储器操作的命令。具体地讲,如果排队的激活命令将要打开与接收到的存储器操作相对应的页,那么可以将接收到的存储器操作作为CAS操作排队。如果已经打开了与接收到的存储器操作相对应的页,并且没有排队的页冲突激活,那么可以将接收到的存储器操作作为CAS操作排队。如果没有打开与接收到的存储器操作相对应的页,那么可以将存储器操作作为激活命令和CAS命令排队。每一个命令可被分配一个年龄计数器(激活队列188和CAS队列190中的年龄字段)。该年龄计数器的值可以基于读取存储器操作的QoS参数,并且与较低QoS等级相比,对于较高QoS等级较短。对于写入存储器操作来说,年龄计数器与读取存储器操作的最低QoS等级可以是相同的,或者可以长于所述最低的QoS等级。在各个实施例中,年龄可以作为绕过所述操作的操作数量来计数,或者可以作为时钟周期的数量来计数。一旦年龄计数器减小为零,则可以调度作为MIF 66中的最高优先级的相应操作。
激活调度器182和CAS调度器184可以被配置成调度来自相应队列188和190的激活命令及CAS命令。激活命令可以打开存储器中的页,CAS命令则可以促使在所述页内读取或写入数据。
预充电(precharge)调度器176可以被配置成在用于开放页表174中的页的空闲定时器到时的时候调度用于区块的预充电命令。该空闲定时器可以在每次接收到的存储器操作命中开放页的时候重新加载,并且可以在每个时钟周期递减或者为每个未命中开放页的存储器操作递减。如果页与新接收到的存储器操作的冲突导致页被关闭,那么可以使用针对前一页的最后一个CAS命令来预充电所述区块。
模式注册调度器178可以被配置成根据可配置的定时器和/或响应于存储器定时器请求来产生存储器注册读取(MRR)以及存储器注册写入(MRW)命令。刷新调度器180可以在需要刷新的时候产生刷新命令。
最终调度器186可以在调度器176、178、180、182和184之间进行选择,以便调度针对存储器PHY电路的命令。所述调度器186还可以强制实施某些协议,例如读取和写入操作之间的周转时间周期等等。
应注意,激活和CAS队列188和190可以是虚拟的。也就是说,MIF事务队列172中的同一表目可以用于给定存储器操作的激活和CAS命令。如果给定的存储器操作需要激活,则可以将该表目初始化成激活命令,并且可以在发布激活时将其转换成CAS命令。如果给定的存储器操作不需要激活,则可以将该表目初始化成CAS命令。
此外还应注意,除了图7和12中示出的电路以外,在MCU56A-56B中还可以具有用于将写入数据从AIU 54传送到存储器以及将读取数据从存储器传送到AIU 54的数据路径(未显示)。
图13是示出了MIF入队控制单元170响应于来自PSQ 64的存储器操作实施的一个实施例的操作的流程图。虽然为了便于理解而采用了特定顺序来显示方框,但是其它顺序也是可用的。这些方框可以在MIF入队控制单元170中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以经过多个时钟周期流水线化。MIF入队控制单元170可以被配置成实施图13所示的操作。
MIF入队控制单元170可以被配置成确定接收到的存储器操作是否需要激活命令(例如,该存储器操作未命中打开的页或是将被先前排队的激活命令打开的页)(判决方框196)。如果是的话(判决方框196中的“是”分支),则MIF入队控制单元170可以被配置成合成激活命令,以及将该激活命令列入激活队列188(方框192)。MIF入队控制单元170还可以被配置成合成CAS命令,以及将CAS命令列入CAS队列190(方框194)。在每一种情况下,可以(基于用于读取的QoS参数)初始化年龄计数器。
图14是示出了激活调度器182的一个实施例的操作的流程图。激活调度器182可以被配置成扫描激活队列188中的激活命令,以寻找达到年龄的激活命令(例如其年龄计数器为零)。如果检测到这种激活命令,则所述激活可以选择达到年龄的激活命令(方框200)。否则,激活调度器182可以选择处于具有最多未决操作的区块中的簇头(head cluster)中的激活命令。所述簇头可以是相同的读取/写入类型的激活的群组,并且这些激活是激活队列188中的最老的激活命令。如果有一个以上的激活命令合格,则可以选择最老的合格激活命令。
图15是示出了CAS调度器184的一个实施例的操作的流程图。虽然为了便于理解而采用了特定顺序来显示方框,但是其它顺序也是可用的。这些方框可以在调度器184中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以经过多个时钟周期流水线化。CAS调度器184可以被配置成实现图15所示的操作。
与激活调度器182一样,CAS调度器184可以被配置成检测达到年龄的CAS命令,以及选择最先传输的CAS命令(判决方框202中的“是”分支以及方框204)。如果没有达到年龄的CAS命令(判决方框202中的“否”分支),并且最后的CAS命令是读取(判决方框206中的“是”分支),那么CAS调度器184可以被配置成选择与最后一个CAS命令针对的相同的列的下一个读取CAS命令,或者选择具有最多的等待CAS命令完成以关闭所述页的冲突操作的读取CAS命令(方框208)。类似地,如果最后一个CAS命令是写入(判决方框206中的“否”分支,以及判决方框210中的“是”分支),则CAS调度器184可以被配置成选择与最后一个CAS命令针对的相同的列的下一个写入CAS命令,或者选择具有最多等待CAS命令完成以关闭所述页的冲突操作的写入CAS命令(方框212)。如果上述各项都不适用,则CAS调度器184可以被配置成在CAS队列190中选择最老的CAS命令(方框214)。应注意,在方框204、208、212和214中,如果有一个以上的CAS命令合格,则可以选择最老的CAS命令。
图16是示出了最终调度器186的一个实施例的操作的表格。该表格中的表目是按照优先级自上而下降低的顺序示出的。如果所要传送的是突发停止(BST)命令或中断CAS命令,那么可以为这些命令给予最高优先级。接下来可以是来自模式注册调度器178的命令,其后是来自刷新调度器180的自动刷新命令。来自CAS调度器184的CAS命令可以具有紧随自动刷新命令的优先级,其后是来自激活调度器182的激活命令。来自预充电调度器176的预充电命令的优先级可以跟随在激活命令之后,并且在图16中,优先级最低的可以是用于进入低功率模式的自刷新命令。
如上文中简要论述的那样,存储器操作可以从一个对存储器操作的QoS等级施加高度重要性的源进入存储器控制器40。随着存储器操作在存储器控制器40中被处理,并且接近要被传输到存储器,QoS等级的重要性可以减小,并且存储器(SDRAM)效率的重要性可以增大。图17以图表形式示出了这种操作。示出了MCIU 60(例如60A或60B)、PSQ 64以及MIF 66,并且还示出了示例每一个等级的调度控制的方框。在MCIU 60,读取和写入操作两者的QoS等级以及带宽共享参数可以控制对传输到PSQ 64的读取和写入操作的选择。在该等级可以不考虑存储器效率(方框222)。在PSQ 64,用于写入的QoS将会降低。密切关系控制对于写入的选择,并且QoS与密切关系的组合基本可以控制对于读取的选择(方框224)。相应地,在这个PSQ 64,QoS和存储器效率问题可以更为平衡。在MIF 66,对于所有存储器操作丢弃QoS(尽管在年龄参数中可以反映QoS),并且可以主要由SDRAM效率问题来控制对于命令的选择(方框226)。
此外,如上文中简要论述的那样,存储器控制器40可以支持未决存储器操作的QoS等级的升级。各个实施例可以支持一种或多种用信号通告QoS等级的升级的机制:带内、边带和老化。
图18是示出了带内QoS升级机制的一个实施例的框图。在该机制中,接收与先前存储器操作处于同一个流的存储器操作,并且新接收的存储器操作的QoS等级高于先前存储器操作,这可以导致存储器控制器40升级先前存储器操作的QoS等级。示出了MCIU 60A的一部分,以及处于MCU 56A中的PSQ 64的一部分。MCIU 60B和MCU64B中的PSQ 64可以是类似的。
如先前所述,MCIU 60A可以接收来自每一个端口的存储器操作,并且可以将新接收的存储器操作分别排入用于读取和写入的队列90A-90B或92A-92B之一。此外,如图18所示,MCIU 60A可以将新接收的存储器操作的FID及QoS参数与来自相同端口的排队的存储器操作的相应值相比较(例如,RdQ090A可以比较端口0或G0端口44A上的新接收的存储器操作的FID和QoS参数,RdQ490B可以比较端口4或RT端口44E上的新接收的存储器操作的FID和QoS参数)。响应于与作为排队的存储器操作的、来自相同端口和流的具有更高QoS等级的新接收的存储器操作,MCIU 60A可以将排队的存储器操作的QoS等级升级至更高的QoS等级。在一些实施例中,QoS升级可以限于某些端口。例如,一个实施例可以将QoS升级限于RT端口44E。其它实施例则可以将QoS升级限于可以接收RT业务的端口。在这样的实施例中,仅可以比较来自支持升级的端口的新接收的存储器操作。
类似地,PSQ 64中的读取密切关系队列118A-118B可以接收FID和QoS参数。PSQ 64可以响应于来自相同端口和流的具有更高QoS等级的新接收的存储器操作来升级排队的读取操作的QoS等级。在一些实施例中,PSQ 64接收的FID和QoS参数与MCIU 60A接收的可以是相同的新接收的FID和QoS参数。也就是说,PSQ 64和MCIU60A可以并行地为每一个新接收的存储器操作升级QoS等级。在其它实施例中,MCIU 60A可以响应于新接收的存储器操作来执行QoS升级,并且PSQ 64可以响应于从MCIU 60A传送到PSQ 64的存储器操作来执行QoS升级。
虽然图18示出的是比较针对读取队列90A-90B的FID和QoS参数,但是该比较也可以针对写入队列92A-92B,以便升级QoS参数。然而,如先前所述,用于写入操作的QoS参数可以在PSQ 66中丢弃,因此,在这样的实施例中可以没有针对写入密切关系队列120A-120B的比较。
图19是示出了关于带内升级机制的、由存储器控制器40更新QoS等级的一个实施例的操作的流程图。虽然为了便于理解而采用特定顺序来显示图19中的方框,但是其它顺序也是可用的。方框、方框组合、和/或流程图总体上可以经过多个时钟周期流水线化。存储器控制器40可以被配置成实施图19中的操作。更具体地,每一个PSQ 64和MCIU 60A-60B可以包括被配置成实施图19所示的操作的升级电路。
如果新接收的存储器操作与排队的存储器操作来自相同端口(判决方框230中的“是”分支),来自FID所指示的同一个流(判决方框232中的“是”分支),并且排队的存储器操作是RT存储器操作(判决方框234中的“是”分支),那么存储器控制器40可以将排队的操作的QoS等级升级至新接收的存储器操作的更高QoS等级(方框236)。在一个实施例中,支持QoS升级的队列可以包括执行该比较的内容可寻址存储器,并且匹配使得能够将新接收的QoS参数写入匹配队列表目。
如果新接收的存储器操作与排队的存储器操作来自相同的端口和流(判决方框230和232中的“是”分支),但是排队的存储器操作不是RT存储器操作(判决方框234中的“否”分支),那么存储器控制器40可以被配置成为排队的存储器操作设置P比特(方框238)。类似地,如果新接收的存储器操作与排队的存储器操作来自相同端口,但是来自不同的流(判决方框230中的“是”分支以及判决方框232中的“否”分支),那么存储器控制器40可以被配置成为排队的存储器操作设置P比特(方框238)。
图20是示出了添加请求QoS升级的边带接口的框图。在图20的实施例中,所包含的边带接口用于RT端口44E。其它实施例可以为其它端口实施一个或多个另外的边带接口。顾名思义,边带接口可以是用于向存储器控制器40传送存储器操作的“常规”接口的补充。常规接口(包括图1所示的Cmd、FID和QoS参数)是借助箭头240示出的。边带接口可以包括从RT外设22到RT端口44E的边带QoS升级请求信号(SbQoSUpgd)、边带QoS参数(SbQoS)、边带FID(SbFID)、边带掩码(SbMask)和边带读取指示(SbRd),以及从RT端口44E到RT外设22的边带应答(SbAck)。
RT外设22可以声明SbQoSUpgd信号来请求边带升级,并且可以提供代表SbQoS上的升级的QoS等级的QoS参数。SbFID可以标识流,SbMask可以通过允许在比较中掩蔽SbFID和排队的FID的一部分来提供一般性。SbRd指示符可以指示是否比较读取或写入以用于升级。RT端口44E可以使用SbAck来应答升级请求。在一个实施例中,在存储器控制器40内部执行边带升级的硬件可以与图18所示的硬件相似,并且该处理可以与图19所示的处理相似。以上描述中的新接收的存储器操作可以被正在接收的边带请求取代。
图21是示出了用于实施基于老化的QoS升级的存储器控制器40的一般操作的流程图。如先前所述,MIF事务队列172可以实施基于老化的优先级升级。其它实施例可以类似地实施基于老化的QoS升级。虽然为了便于理解而在图21中按照特定顺序显示了方框,但是其它顺序也是可用的。这些方框可以在存储器控制器40中以组合逻辑并行执行。方框、方框组合、和/或流程图总体上可以经过多个时钟周期流水线化。对于每一个操作来说,更新年龄计数器以及升级相应存储器操作可以并行执行。
存储器控制器40可以在每个存储器操作进入队列(例如,MCIU队列90或92、PSQ事务队列112、和/或MIF事务队列172)时为其分配一个年龄计数器(方框250)。年龄计数器在每个队列中可以是不同的,并且不必从一个队列传送到另一个队列。作为替换,年龄计数器可以在MCIU上分配,并且可以通过其它队列传送。年龄计数器的初始值可以基于每一个存储器操作的QoS参数(例如,对于较高QoS值为较短的值)。该初始值可以是固定或是可编程的。
存储器控制器40可以检测更新给定年龄计数器的更新事件(判决方框252)。该更新事件可以基于如何量度年龄计数器而改变。例如,一些实施例可以依照存储器操作被年轻的存储器操作绕过的次数来量度年龄。在这样的实施例中,更新事件可以是绕过存储器操作。其它实施例可以将时钟周期作为年龄来计数,并且更新事件可以是时钟的上升沿或下降沿。此外,其它实施例还可以采用其它方式定义年龄,并且可以相应地检测更新事件。响应于检测到更新事件(判决方框252中的“是”分支),存储器控制器40可以递减年龄计数器(方框254)。
存储器控制器40可以被配置成检测给定的年龄计数器是否到期(判决方框256)。如果是的话(判决方框256中的“是”分支),则存储器控制器40可以被配置成将QoS等级升级至相同的QoS等级集合中的下一个较高等级(方框258)。如果升级后的QoS等级不是最高等级(例如RTR,判决方框260中的“否”分支),那么存储器控制器40可以基于新的QoS等级来分配新的年龄计数器值,以便进一步基于老化升级(方框262)。相应地,在该实施例中,存储器操作的QoS等级可以随着存储器操作的老化经由每一个中间的QoS等级升级至最高的QoS等级。
接下来转到图22,显示的是系统350的一个实施例的框图。在所示出的实施例中,系统350包括与外部存储器12(例如图1的存储器12A-12B)耦合的集成电路10的至少一个实例。该集成电路10耦合到一个或多个外设354以及外部存储器12。还提供了为集成电路10提供供电电压以及为存储器12和/或外设354供应一个或多个供电电压的电源356。在一些实施例中,可以包含集成电路10的一个以上的实例(并且也可以包括一个以上的外部存储器12)。
外设354可以基于系统350的类型包括任何希望的电路。举例来说,在一个实施例中,系统350可以是移动设备(例如,个人数字助理(PDA)、智能电话等等),并且外设354可以包括用于各种类型的无线通信的设备,例如wifi、蓝牙、蜂窝、全球定位系统等等。外设354还可以包括辅助存储器,辅助存储器包括RAM存储器、固态存储器或磁盘存储器。所述外设354可以包括用户接口设备,例如包括触摸显示屏或多点触摸显示屏的显示屏、键盘或其它输入设备、麦克风、扬声器等等。在其它实施例中,系统350可以是任何类型的计算系统(例如,台式个人计算机、膝上计算机、工作站,上网本(nettop)等等)。
对本领域技术人员来说,一旦完全理解了上述公开,多种变化和修改将是显而易见的。后续的权利要求应该被理解成是包含了所有这些变化和修改。

Claims (19)

1.一种包含多个端口的存储器控制器,其中,每一个端口被耦合以接收来自一个或多个源的存储器操作,并且每一个端口专用于特定类型的存储器操作业务,其中,该存储器控制器包括代理接口单元,该代理接口单元被配置成响应于存储器操作的相对服务质量(QoS)参数而将存储器操作业务从所述多个端口切换到多个存储器通道单元。
2.根据权利要求1所述的存储器控制器,其中,对于不同类型的业务,QoS参数的定义不同,并且代理接口单元被配置成比较具有不同定义的QoS参数以便切换存储器操作业务。
3.根据权利要求2所述的存储器控制器,其中,至少一个端口专用于实时业务,并且实时业务的QoS参数反映源中的不同的紧急程度。
4.根据权利要求3所述的存储器控制器,其中,至少另一个端口专用于来自处理器的业务,其中,所述处理器业务是非实时的,并且所述处理器业务的QoS参数指示尽力而为服务或低延时的服务。
5.根据权利要求4所述的存储器控制器,其中,至少又一个端口专用于来自图形单元的业务,其中,该图形业务是非实时的。
6.根据权利要求1所述的存储器控制器,其中,响应于接收到来自已传送了一个或多个在先存储器操作的第一源的第一存储器操作,以及进一步响应于与第一存储器操作相对应的、指示比与所述在先存储器操作相对应的在先QoS参数更高的服务等级的第一QoS参数,所述存储器控制器被配置成将所述在先QoS参数升级至由第一QoS参数指示的服务等级。
7.根据权利要求6所述的存储器控制器,进一步包括多个存储器通道单元,其中,所述多个存储器通道单元被配置成保持用于读取操作的QoS参数,以及消除用于写入操作的QoS参数,并且所述多个存储器通道单元被配置成响应于指示比读取操作的QoS参数更高的服务等级的第一QoS参数,升级来自第一源的读取操作的QoS参数。
8.根据权利要求1所述的存储器控制器,进一步包括与代理接口单元相耦合的多个存储器通道单元,其中,每一个所述存储器通道单元包括预排序队列以及耦合至存储器的存储器接口单元,并且代理接口单元被配置成响应于存储器操作的QoS参数而将来自所述多个端口的存储器操作调度至给定存储器通道单元,代理接口单元被配置成基于QoS参数重新排序针对给定存储器通道单元的存储器操作,并且存储器通道单元被配置成根据预期哪些存储器操作一起执行对存储器是高效的而将预排序队列中的存储器操作分组,存储器通道单元被配置成基于每个群组中的最高等级的QoS参数来调度多个群组,并且存储器通道单元被配置成将存储器操作预先合成为用于存储器的命令,并且存储器接口单元被配置成基于对存储器的高效访问来对所述命令进行重新排序。
9.根据权利要求8所述的存储器控制器,其中,存储器操作包括读取操作和写入操作,并且预排序队列被配置成分别地将读取操作和写入操作排队,并且预排序队列被配置成消除写入操作的QoS参数,并且响应于写队列的充满度而在读取操作和写入操作之间调度。
10.根据权利要求8所述的存储器控制器,其中,如果下列各项中的至少一项成立,则预期一起执行存储器操作是高效的:(i)所述存储器操作针对的是存储器中的同一页;(ii)所述存储器操作针对存储器的不同列;(iii)所述存储器操作针对的是存储器的不同区块。
11.一种集成电路,包括:
根据权利要求1-10中任一项所述的存储器控制器;
一个或多个实时(RT)外设;
至少一个处理器;以及
一个或多个非实时(NRT)外设;以及
其中,所述一个或多个RT外设耦合到所述多个端口中的RT端口,所述至少一个处理器耦合到所述多个端口中的第一NRT端口,所述一个或多个NRT外设耦合到所述多个端口中的第二NRT端口,存储器控制器被配置成获取来自所述多个端口的存储器操作,并在到存储器的一个或多个存储器通道上调度所述存储器操作,其中,在不同端口上接收的存储器操作之间的调度确定部分取决于接收存储器操作的特定端口。
12.一种方法,包括:
在存储器控制器中的多个端口上接收存储器操作,其中,每一个端口被耦合成接收来自一个或多个源的存储器操作,并且每一个端口专用于特定类型的存储器操作业务;
响应于存储器操作的相对服务质量(QoS)参数,将存储器操作业务从所述多个端口切换到存储器控制器中的多个存储器通道单元。
13.根据权利要求12所述的方法,其中,接收存储器操作包括:
在多个端口中的实时(RT)端口上接收第一存储器操作,其中,第一存储器操作具有根据RT QoS等级的集合定义的第一服务质量(QoS)参数;
在多个端口中的非实时(NRT)端口上接收与第一存储器操作并行的第二存储器操作,其中,第二存储器操作具有根据NRT QoS等级的集合定义的第二QoS参数;以及
其中,切换存储器操作业务包括:
由存储器控制器至少部分响应于第一QoS参数和第二QoS参数来调度第一存储器操作和第二存储器操作,以便访问存储器。
14.根据权利要求12所述的方法,进一步包括:
接收来自已传送了一个或多个在先存储器操作的第一源的第一存储器操作;以及
响应于与第一存储器操作相对应的、指示比与所述在先存储器操作相对应的在先QoS参数更高的服务等级的第一QoS参数,存储器控制器将所述在先QoS参数升级至由第一QoS参数指示的服务等级。
15.根据权利要求14所述的方法,进一步包括:
所述多个存储器通道单元保持用于读取操作的QoS参数;
所述多个存储器通道单元消除用于写入操作的QoS参数;以及
响应于指示比用于读取操作的QoS参数更高的服务等级的第一QoS参数,所述多个存储器通道单元升级用于来自第一源的读取操作的QoS参数。
16.根据权利要求14所述的方法,其中每一个存储器通道单元包括预排序队列以及耦合至存储器的存储器接口单元,并且切换存储器操作业务包括:
响应于存储器操作的QoS参数,将来自所述多个端口的存储器操作调度至给定的存储器通道单元;
基于QoS参数重新排序针对给定的存储器通道单元的存储器操作。
17.根据权利要求16所述的方法,进一步包括:
所述多个存储器通道单元根据预期将哪些存储器操作一起执行对存储器是高效的,而将预排序队列中的存储器操作分组,
所述多个存储器通道单元基于每个群组中的最高等级的QoS参数来调度多个群组,
所述多个存储器通道单元将存储器操作预先合成为用于存储器的命令,以及
存储器接口单元基于对存储器的高效访问来对所述命令重新排序。
18.根据权利要求17所述的方法,其中,所述存储器操作包括读取操作和写入操作,并且该方法进一步包括:
预排序队列分别将读取操作和写入操作排队;
预排序队列消除用于写入操作的QoS参数;以及
预排序队列响应于写入队列的充满度而在读取操作和写入操作之间进行调度。
19.根据权利要求17所述的方法,其中,如果下列各项中的至少一项成立,则预期一起执行存储器操作会是高效的:(i)所述存储器操作针对的是存储器中的同一页;(ii)所述存储器操作针对存储器的不同列;(iii)所述存储器操作针对存储器的不同区块。
CN201110274403.1A 2010-09-16 2011-09-16 具有与业务类别关联的端口的多端口存储器控制器 Active CN102402490B (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US12/883,888 US8510521B2 (en) 2010-09-16 2010-09-16 Reordering in the memory controller
US12/883,848 2010-09-16
US12/883,878 2010-09-16
US12/883,864 2010-09-16
US12/883,878 US8631213B2 (en) 2010-09-16 2010-09-16 Dynamic QoS upgrading
US12/883,888 2010-09-16
US12/883,864 US8314807B2 (en) 2010-09-16 2010-09-16 Memory controller with QoS-aware scheduling
US12/883,848 US20120072677A1 (en) 2010-09-16 2010-09-16 Multi-Ported Memory Controller with Ports Associated with Traffic Classes
USPCT/US2011/049940 2011-08-31
PCT/US2011/049940 WO2012036905A1 (en) 2010-09-16 2011-08-31 Multi-ported memory controller with ports associated with traffic classes

Publications (2)

Publication Number Publication Date
CN102402490A true CN102402490A (zh) 2012-04-04
CN102402490B CN102402490B (zh) 2015-12-02

Family

ID=44908227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110274403.1A Active CN102402490B (zh) 2010-09-16 2011-09-16 具有与业务类别关联的端口的多端口存储器控制器

Country Status (13)

Country Link
EP (1) EP2431884B1 (zh)
JP (1) JP5610636B2 (zh)
KR (1) KR101270848B1 (zh)
CN (1) CN102402490B (zh)
AU (1) AU2011302452B2 (zh)
BR (1) BR112013006329B1 (zh)
GB (1) GB2483763B (zh)
HK (2) HK1168159A1 (zh)
MX (1) MX2013002773A (zh)
NL (1) NL2007411C2 (zh)
RU (1) RU2556443C2 (zh)
TW (1) TWI465903B (zh)
WO (1) WO2012036905A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681946A (zh) * 2012-05-11 2012-09-19 龙芯中科技术有限公司 内存访问方法和装置
CN104303167A (zh) * 2012-05-08 2015-01-21 马维尔国际贸易有限公司 计算机系统和存储器管理的方法
CN109074290A (zh) * 2016-04-08 2018-12-21 高通股份有限公司 用于共享资源的请求的基于QoS等级的服务
US10852809B2 (en) 2016-03-03 2020-12-01 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
CN112597080A (zh) * 2020-12-29 2021-04-02 联芸科技(杭州)有限公司 读请求控制装置及方法以及存储器控制器
CN113179665A (zh) * 2019-06-26 2021-07-27 西部数据技术公司 使用基于纠错的度量来识别性能不佳的数据存储设备
CN113391603A (zh) * 2020-03-13 2021-09-14 株式会社安川电机 生产系统、控制方法和程序
CN115329016A (zh) * 2022-10-14 2022-11-11 深圳迅策科技有限公司 一种金融资产交易数据处理方法、系统及可读介质

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112015019459B1 (pt) 2013-03-15 2021-10-19 Intel Corporation Dispositivo para uso em um módulo de memória e método realizado em um módulo de memória
CN104156328B (zh) * 2013-05-15 2019-02-05 中兴通讯股份有限公司 一种识别操作系统类型的方法及usb设备
KR102114453B1 (ko) * 2013-07-19 2020-06-05 삼성전자주식회사 모바일 장치 및 그것의 제어 방법
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9563369B2 (en) * 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
US10163508B2 (en) 2016-02-26 2018-12-25 Intel Corporation Supporting multiple memory types in a memory slot
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
EP3270295A1 (en) * 2016-07-15 2018-01-17 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
TWI587145B (zh) * 2016-12-08 2017-06-11 群聯電子股份有限公司 通道切換裝置、記憶體儲存裝置及通道切換方法
US11709624B2 (en) * 2018-02-15 2023-07-25 Xilinx, Inc. System-on-chip having multiple circuits and memory controller in separate and independent power domains
US11409572B2 (en) * 2019-09-27 2022-08-09 Intel Corporation Methods of hardware and software coordinated opt-in to advanced features on hetero ISA platforms
CN116584075A (zh) * 2020-10-26 2023-08-11 谷歌有限责任公司 调节存储器子系统中的信用分配
US20240303196A1 (en) * 2023-03-09 2024-09-12 Samcung Electronics Co, Ltd Memory device and method for scheduling block request

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060456A1 (en) * 2003-09-16 2005-03-17 Denali Software, Inc. Method and apparatus for multi-port memory controller
CN101026556A (zh) * 2007-01-10 2007-08-29 华为技术有限公司 一种支持服务质量的仲裁方法及装置
CN101419579A (zh) * 2008-12-10 2009-04-29 中国科学院计算技术研究所 一种在动态随机存储器上提供服务质量的装置和方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL116708A (en) * 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6101613A (en) * 1998-07-06 2000-08-08 Intel Corporation Architecture providing isochronous access to memory in a system
US6651128B1 (en) * 2000-02-10 2003-11-18 Advanced Micro Devices, Inc. Systems and methods for arbitrating between asynchronous and isochronous data for access to data transport resources
TW513635B (en) * 2000-11-24 2002-12-11 Ibm Method and structure for variable-length frame support in a shared memory switch
US7606744B1 (en) * 2001-02-16 2009-10-20 Financial Systems Technology (Intellectual Property) Pty. Ltd. System and method for real-time pricing with volume discounting
US20050138251A1 (en) * 2003-12-18 2005-06-23 Fanning Blaise B. Arbitration of asynchronous and isochronous requests
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
WO2006117746A1 (en) * 2005-05-04 2006-11-09 Nxp B.V. Memory controller and method for controlling access to a memory, as well as system comprising a memory controller
KR100784385B1 (ko) * 2005-08-10 2007-12-11 삼성전자주식회사 공유 자원에 대한 접근 요청을 중재하는 시스템 및 방법
CN101341474B (zh) * 2005-12-22 2012-02-08 Arm有限公司 用于对事务重排序来确保每个事务所规定的服务质量的仲裁方法
CN100581172C (zh) * 2006-04-19 2010-01-13 杭州华三通信技术有限公司 一种对目的磁盘进行访问的方法和扩展磁盘容量的系统
US20080077720A1 (en) * 2006-09-27 2008-03-27 Blaise Fanning Isochronous memory access with variable channel priorities and timers
US20080320255A1 (en) * 2007-06-25 2008-12-25 Sonics, Inc. Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets
US7908440B2 (en) * 2007-08-09 2011-03-15 Intel Corporation Simultaneous personal sensing and data storage
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060456A1 (en) * 2003-09-16 2005-03-17 Denali Software, Inc. Method and apparatus for multi-port memory controller
CN101026556A (zh) * 2007-01-10 2007-08-29 华为技术有限公司 一种支持服务质量的仲裁方法及装置
CN101419579A (zh) * 2008-12-10 2009-04-29 中国科学院计算技术研究所 一种在动态随机存储器上提供服务质量的装置和方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104303167A (zh) * 2012-05-08 2015-01-21 马维尔国际贸易有限公司 计算机系统和存储器管理的方法
US9881657B2 (en) 2012-05-08 2018-01-30 Marvell World Trade Ltd. Computer system and method of memory management
CN102681946A (zh) * 2012-05-11 2012-09-19 龙芯中科技术有限公司 内存访问方法和装置
CN102681946B (zh) * 2012-05-11 2015-03-11 龙芯中科技术有限公司 内存访问方法和装置
US10852809B2 (en) 2016-03-03 2020-12-01 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
CN109074290A (zh) * 2016-04-08 2018-12-21 高通股份有限公司 用于共享资源的请求的基于QoS等级的服务
US11221971B2 (en) 2016-04-08 2022-01-11 Qualcomm Incorporated QoS-class based servicing of requests for a shared resource
CN113179665A (zh) * 2019-06-26 2021-07-27 西部数据技术公司 使用基于纠错的度量来识别性能不佳的数据存储设备
CN113391603A (zh) * 2020-03-13 2021-09-14 株式会社安川电机 生产系统、控制方法和程序
CN112597080A (zh) * 2020-12-29 2021-04-02 联芸科技(杭州)有限公司 读请求控制装置及方法以及存储器控制器
CN115329016A (zh) * 2022-10-14 2022-11-11 深圳迅策科技有限公司 一种金融资产交易数据处理方法、系统及可读介质

Also Published As

Publication number Publication date
WO2012036905A1 (en) 2012-03-22
MX2013002773A (es) 2013-04-05
RU2013117127A (ru) 2014-10-27
HK1168159A1 (en) 2012-12-21
KR101270848B1 (ko) 2013-06-05
JP5610636B2 (ja) 2014-10-22
RU2556443C2 (ru) 2015-07-10
BR112013006329A2 (pt) 2016-06-21
GB2483763B (en) 2013-01-09
HK1168672A1 (zh) 2013-01-04
AU2011302452A1 (en) 2013-03-28
NL2007411C2 (en) 2012-05-09
EP2431884A1 (en) 2012-03-21
BR112013006329B1 (pt) 2020-12-01
NL2007411A (en) 2012-03-19
GB2483763A (en) 2012-03-21
GB201115481D0 (en) 2011-10-26
EP2431884B1 (en) 2015-03-11
JP2012074042A (ja) 2012-04-12
TW201216056A (en) 2012-04-16
CN102402490B (zh) 2015-12-02
TWI465903B (zh) 2014-12-21
KR20120029366A (ko) 2012-03-26
AU2011302452B2 (en) 2014-09-04

Similar Documents

Publication Publication Date Title
CN102402490B (zh) 具有与业务类别关联的端口的多端口存储器控制器
US9141568B2 (en) Proportional memory operation throttling
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US8314807B2 (en) Memory controller with QoS-aware scheduling
US8762653B2 (en) Dynamic QoS upgrading
US8510521B2 (en) Reordering in the memory controller
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
US20120072677A1 (en) Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US8458406B2 (en) Multiple critical word bypassing in a memory controller
US20040199692A1 (en) Apparatus for use in a computer systems
US8706925B2 (en) Accelerating memory operations blocked by ordering requirements and data not yet received
US8856459B1 (en) Matrix for numerical comparison
GB2341772A (en) Primary and secondary bus architecture
GB2341769A (en) Data packet reordering
GB2341768A (en) Bus arbitration
GB2341699A (en) Inter-module data transfer
GB2341767A (en) Bus arbitration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant