CN102129412A - 存取调度器 - Google Patents

存取调度器 Download PDF

Info

Publication number
CN102129412A
CN102129412A CN2011100089859A CN201110008985A CN102129412A CN 102129412 A CN102129412 A CN 102129412A CN 2011100089859 A CN2011100089859 A CN 2011100089859A CN 201110008985 A CN201110008985 A CN 201110008985A CN 102129412 A CN102129412 A CN 102129412A
Authority
CN
China
Prior art keywords
request
access
rank
scheduler
level
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.)
Pending
Application number
CN2011100089859A
Other languages
English (en)
Inventor
V·苏科尼克
S·利夫内
B·维尔丁
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.)
Marvell electronic technology company in Sweden
Marvell International Ltd
Original Assignee
Xelerated AB
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
Application filed by Xelerated AB filed Critical Xelerated AB
Publication of CN102129412A publication Critical patent/CN102129412A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Dram (AREA)

Abstract

本发明涉及一种用于对一个或多个存储器器件(106)的存取进行调度的存取调度器(300),包括:第一层次级别(级别1),包括:一个或多个排定时器(302),被配置成当与存储器器件(106)的每排关联的FIFO队列被存取时设定该排的屏蔽位,所述FIFO队列存储与存取请求有关的请求信息;以及一个或多个第一级别仲裁器(304),被配置成选择来自多个FIFO队列中的一个FIFO队列的存取请求并且把关于所述一个FIFO队列的合格信息传播到下一层次级别;以及第四层次级别(级别4),包括:第四级别仲裁器(318),被配置成接收传播的合格信息并且基于传播的合格信息来选择请求。

Description

存取调度器
技术领域
本发明涉及用于对用于分组缓冲的诸如一个或多个动态随机存取存储器(DRAM)之类的一个或多个存储器器件的存取进行调度的存取调度器。本发明也涉及包括这种存取调度器的存储器控制器并且涉及包括该存储器控制器的数据处理系统。
背景技术
因为动态随机存取存储器(DRAM)的低成本和低功率,所以往往使用动态随机存取存储器(DRAM)来实施分组缓冲器,例如排队器件。然而,DRAM由于其长的等待时间以及其对随机存取的约束而提出挑战。DRAM被成排(bank)地组织并且DRAM的物理性质对排存取提出限制。例如,存取参数行循环时间tRC给出对DRAM排中的行的存取和对相同DRAM排中的另一行的连续存取之间的最小时间。另一个存取参数滚动时间帧tFAW限制时间窗口内的行激活命令的数量,在所述滚动时间帧tFAW中可以同时进行对相同DRAM器件的最大四行激活。行是排的一部分。在可以执行对行内的地址的读或写之前,必须激活该行。
DRAM的存储器控制器接收针对DRAM的不同排的读和写请求。由于就每时间单位的存取而言DRAM带宽往往是瓶颈,所以DRAM的存储器控制器可以重新布置读和写请求的顺序,使得最大化存储器接口的利用。
一种优化是以固定的顺序循环地存取这些排,因而确保对任一DRAM排的两个连续存取之间的时间大于或等于行循环时间tRC。
另一种优化是重新布置读请求和写请求,使得多个读请求后面是多个写请求:例如把序列S1 = (R1, W2, R3, W4)重新布置成S2 = (R1, R3, W2, W4),其中R代表读,W代表写并且数字指示其中存储器控制器接收请求的顺序。对于在对DRAM的读和写存取之间的转向而言经常存在带宽惩罚,因此S2比S1在更短的时间内完成。
Bains的已公开美国申请US 2004/0236921 A1揭示了一种改进高速缓存数据总线上的带宽使得可以更高效地使用诸如DRAM之类的高速缓存存储器的方法。在一个实施例中,重新排序读或写存取以高效地利用数据总线上的带宽。
Van Hook等人的美国专利US 6,564,304 B1揭示了一种用于对图形处理系统中的存储器进行存取的存储器处理系统,其中存储器控制器仲裁来自多个存储器请求器的存储器存取请求。读被分组在一起并且写被分组在一起以避免模式切换。
然而,例如,如果DRAM排中的地址在变成写之前被读,则诸如读和写存取之类的存取的重新排序可能造成逻辑错误。例如,在上面提及的序列S1 = (R1, W2, R3, W4)和S2 = (R1, R3, W2, W4)中,W2和R3可能存取相同的排地址。如果W2写数据结构(例如链接表)的元素并且R3存取该数据结构的相同元素,则如果如以S2那样重新排序W2和R3,将发生逻辑错误,原因在于这将使程序在地址被写完之前读该地址。即,重新排序将使解析该链接表的程序使用陈旧的指针,造成程序故障。
Laskshmanamurthy等人的已公开美国申请US 2007/0156946 A1揭示了一种利用排分类(sort)和调度的存储器控制器。存储器控制器包括FIFO缓冲器、仲裁器、排FIFO集和排调度器。来自FIFO缓冲器的输出被馈送到把存储器请求分类到适当的排FIFO中的仲裁器中。仲裁器可以使用循环仲裁方案来分类和优先化输入请求流。排调度器接收来自排FIFO集的输出并且循环地处理这些请求。在每个循环中,排调度器可以选择对读/写效率进行优化的业务,例如排调度器可以对读和/或写进行分组以最小化读写周转。
在US 2007/0156946 A1中,如上面所描述的逻辑错误的问题由“无序”机构解决,该“无序”机构确保从不违反支配对相同地址的读和写的业务排序规则,即地址在其被写完之前不能被读。
US 2007/0156946 A1的存储器控制器的缺点/问题在于其未提供存储器带宽的加权公平共享。通过把读和写存储器请求存储在相同的排FIFO中,读和写之间的共享由请求到达过程确定而不由存储器控制器调整。
进一步,US 2007/0156946 A1的存储器控制器具有确保例如在写请求之前不发出读请求(如果这些请求是针对相同地址的话)的仲裁器。因而,尽管存在要在存储器控制器的内部储存器中读的数据,还发出对DRAM的读请求。这意味着DRAM未被最优地利用并且读等待时间未被最小化。
而且,US 2007/0156946 A1的存储器控制器没有装置来优先化需要低等待时间的请求,例如与控制信息有关的请求,使得它们在容忍较长等待时间的请求(例如与分组数据有关的请求)之前被服务。
发明内容
本发明的目标是克服现有技术的问题和/或缺点。
按照本发明,提供DRAM带宽的共享和优化。进一步,被配置成设定每一DRAM排或每一DRAM器件(群组)的位屏蔽(mask)的发明存取调度器使存取调度器与存储器接口同步地执行DRAM存取的开环控制,即当存取调度器发出命令序列时,保证它们以与它们由存取调度器发出相同的速率由存储器接口执行。
用于对一个或多个存储器器件的存取进行调度的发明存取调度器的实施例包括:
-第一层次级别,包括:
--一个或多个排定时器,被配置成当与存储器器件的每排关联的FIFO队列被存取时设定该排的屏蔽位,所述FIFO队列存储与存取请求有关的请求信息;以及
--一个或多个第一级别仲裁器,被配置成选择来自多个FIFO队列中的一个FIFO队列的存取请求并且把关于所述一个FIFO队列的合格(eligibility)信息传播到下一层次级别;以及
-第四层次级别,包括:
--第四级别仲裁器,被配置成接收传播的合格信息并且基于传播的合格信息来选择请求。
在实施例中,第四级别仲裁器进一步被配置成基于由有限状态机生成的刷新请求来选择请求。
在实施例中,有限状态机被配置成控制在切换到第二类型的许多存取请求例如写请求之前要执行的第一类型的存取请求例如读请求的数量。
实施例进一步包括:第五层次级别,包括:
-第五级别仲裁器,被配置成在对第一存储器器件的存取请求和对第二存储器器件的存取请求之间选择。
实施例进一步包括:
-第二层次级别,包括:一个或多个第二级别仲裁器,被布置成从第一级别仲裁器接收传播的合格信息并且被配置成在低优先级请求和高优先级请求之间执行仲裁且把与选择的请求有关的合格信息传播到下一层次级别;以及
-第三层次级别,包括:一个或多个第三级别仲裁器,被配置成:从第二级别仲裁器接收传播的合格信息;从管理请求单元接收管理请求,以基于传播的合格信息和管理请求来选择请求;并且把与选择的存取请求有关的合格信息传播到下一层次级别。
实施例进一步包括:刷新定时器,被配置成基于存储在配置参数单元中的配置参数来指令所述有限状态机生成刷新请求。
在实施例中,刷新请求是对存储器器件的维护请求,诸如刷新存储器器件的内容的请求。
在实施例中,刷新请求被周期性地发送并且优先于其它请求。
在实施例中,配置参数涉及在要执行许多写请求之前要执行的读请求的数量或者在写之前要读的突发(burst)的数量。
本发明也涉及一种包括发明存取调度器的存储器控制器。存储器控制器的实施例进一步包括:
-存取缓冲器,连接到所述存取调度器且到一个或多个存储器器件并且被配置成从连接到存储器控制器的处理器接收对所述一个或多个存储器器件的一个或多个存取请求,以及
-重新排序器件,连接到所述存取缓冲器,被配置成接收来自一个或多个存储器器件的响应数据,以对接收的响应数据进行分类,使得以与处理器发送存取请求相同的顺序产生到处理器的存取响应。
本发明也涉及一种对一个或多个存储器器件的存取进行调度的方法,包括提供具有如下的存取调度器的步骤:
-第一层次级别,包括:
--一个或多个排定时器,被配置成当与存储器器件的每排关联的FIFO队列被存取时设定该排的屏蔽位,所述FIFO队列存储与存取请求有关的请求信息;以及
--一个或多个第一级别仲裁器,被配置成选择来自多个FIFO队列中的一个FIFO队列的存取请求并且把关于所述一个FIFO队列的合格信息传播到下一层次级别;以及
-第四层次级别,包括:
--第四级别仲裁器,被配置成接收传播的合格信息并且基于传播的合格信息、由有限状态机生成的可能刷新请求以及由群组定时器设定的可能屏蔽来选择请求。
方法的实施例进一步包括以下步骤:借助于有限状态机,控制在切换到第二类型的许多存取请求例如写请求之前要执行的第一类型的存取请求例如读请求的数量。
方法的实施例进一步包括以下步骤:提供包括第五级别仲裁器的第五层次级别,所述第五级别仲裁器被配置成在对第一存储器器件的存取请求和对第二存储器器件的存取请求之间选择。
方法的实施例进一步包括提供如下的步骤:
-第二层次级别,包括:一个或多个第二级别仲裁器,布置成从第一级别仲裁器接收传播的合格信息并且被配置成在低优先级请求和高优先级请求之间执行仲裁且把与选择的请求有关的合格信息传播到下一层次级别;以及
-第三层次级别,包括:一个或多个第三级别仲裁器,被配置成:从第二级别仲裁器接收传播的合格信息;从管理请求单元接收管理请求,以基于传播的合格信息和管理请求来选择请求;并且把与选择的存取请求有关的合格信息传播到下一层次级别。
方法的实施例进一步包括提供刷新定时器的步骤,所述刷新定时器被配置成基于存储在配置参数单元中的配置参数来指令所述有限状态机生成刷新请求。
被配置成调度对分组缓冲器(诸如DRAM)的存取的发明存取调度器的实施例具有以下特征和优点:
-使用定时器控制的屏蔽来防止排存取模式(pattern)违反诸如排随机存取时间之类的DRAM约束。
-产生也防止对存取的DRAM约束造成存储器总线拖延(stall)的排存取模式。
-在DRAM群组之间交替以进一步获得存储器总线带宽,其中存储器器件共享横跨群组的地址总线但是具有每一群组的专用数据总线。
-产生不同长度的DRAM存取;即包括每一存取不同的数据突发量而不是迫使处理器产生每一请求每一排和行包括特定固定数量的突发的存取。
-给读和写存取灵活地分配带宽共享。
-支持例如分别针对控制和数据的高优先级和低优先级存取。
-管理存取的超高优先级。
包括发明存取调度器的发明存储器控制器适合用于缓冲器系统,即以诸如队列之类的结构暂时存储在输入上接收的数据以等待传输到输出上的系统;例如用于通信量(traffic)管理器。通信量管理器是一种例如通过组合用于队列管理、调度、通信量整形和阻塞控制但不限于此类使用的机构而给联网系统中的流提供带宽管理的器件。
进一步,这样的发明存储器控制器产生:
存储器接口的高利用,即存储器请求序列被重新排序,使得对于任何序列的存储器请求的速率(rate)接近最优重新排序序列的速率;
到高带宽的可伸缩性,即发明存储器控制器容易适于与任意数量的DRAM器件一起使用;
有限的等待时间,即从发送要求来自存储器控制器的响应的请求(例如读请求)起的时间具有已知的上限;
存取类型之间的存储器带宽的受控共享,即DRAM带宽的已知(例如最小)共享可以被分配给存取类型,例如读存取或写存取;以及
数据相对于请求顺序的不重新排序,即如果处理器向存储器控制器产生后面是第二请求的第一请求,其中这两个请求触发响应(例如读请求),则存储器控制器在对第二请求的响应之前返回对第一请求的响应。
附图说明
通过连同附图一起阅读时的本发明实施例的以下详细描述,将更容易理解本发明的目标、优点和效果以及特征,在附图中:
图1示意性地示出根据本发明的数据处理系统的实施例的概观;
图2示意性地示出根据本发明的数据处理系统的另一个实施例的概观;
图3示意性地示出根据本发明的存取调度器的实施例;
图4示意性地示出根据本发明的存取调度器的广义实施例;
图5示意性地示出存取缓冲器的实施例;
图6示意性地示出存取缓冲器的广义实施例;
图7示意性地示出根据本发明的存取调度器中的排定时器设定的屏蔽位的序列图;
图8示意性地示出根据本发明的存取调度器中的群组定时器设定的屏蔽位的序列图;以及
图9示意性地示出根据本发明的存取调度器中的选择和命令生成的序列图。
具体实施方式
虽然本发明覆盖各种修改以及可选方法、装置和系统,但是本发明的实施例在附图中被示出并且将在下文中被更详细地描述。然而,要理解,特定的描述和附图不旨在把发明限制为所揭示的特定形式。相反,所要求保护的发明的范围旨在包括落入如在所附权利要求到其等效物的整个范围中表示的发明的精神和范围内的其所有修改和可选构造。在附图中,相同的参考数字用于相同或类似的特征。
图1示出根据本发明的数据处理系统100的实施例的概观。数据处理系统100包括连接到存储器控制器104的处理器102。处理器102被配置成把存取请求发送到存储器控制器104并且接收来自存储器控制器104的存取响应,如箭头所示的。
处理器102可以是可以执行计算机程序的中央处理器单元(CPU)、多处理器、网络处理器、可编程管线、IO处理器或者诸如有限状态机之类的逻辑电路。
存储器控制器104经由存储器接口400连接到一个或多个存储器器件106并且被配置成控制对一个或多个存储器器件106的存取。有时也被称为分组缓冲器的存储器器件106可以是具有随机存取约束的长等待时间存储器,诸如动态随机存取存储器(DRAM)。
在实施例中,存储器控制器104包括存取缓冲器200、存取调度器300、存储器接口400和重新排序器件500,参见图1。如先前所提及的,存储器接口400被配置成把存储器控制器104连接到一个或多个存储器器件106(例如DRAM)并且实施针对使用的器件类型的通信协议(例如DRAM协议)。
然而,如图2示意性地所示的,应当理解,在实施例中存储器接口400可以被布置在一个或多个存储器控制器104的外部。在这样的实施例中,存储器接口400可以借助于交换机450而连接到一个或多个存储器控制器104,参见图2。该交换机可以例如是交叉开关(crossbar)、网状网络、环或总线。
优选地,存储器接口400被微编码并且被配置成响应于接收的命令而执行微编码的序列。该命令可以例如是从存取缓冲器200接收的读请求或写请求。
当用于本描述中时,措词“微代码”/“微编码”指代实施功能基元以供其它单元使用的硬件级指令。微代码驻留在特殊的存储器(未示出)中并且把输入转换成内部电路上或输入/输出(IO)管脚上的电路级控制信号序列。
存取缓冲器200被配置成接收来自连接到存储器控制器104的一个或多个处理器102的一个或多个存取请求。在实施例中,存取缓冲器200被配置成处理对一个或多个存储器器件106例如DRAM的存取。
存取请求可以具有不同类型,例如具有高或低优先级的读或写请求以及管理请求。然而,应当理解,其它实施例可以包括其它请求类型,诸如DRAM刷新请求。
在实施例中,管理请求具有最高优先级,并且与写和读控制信息数据有关的请求一般具有比与写和读数据例如有效载荷数据有关的请求更高的优先级。
管理请求可以例如是对存储器接口中的微代码存储器或配置参数的读或写请求、或者对存储器接口的状态位的读请求。
数据请求可以例如是对在DRAM中缓冲的分组数据例如有效载荷数据的读或写请求。
控制信息数据请求可以例如是对与对数据进行存储的数据结构有关的信息(诸如链接表指针或分组长度)的读或写请求。
在实施例中,存取缓冲器200基于先进先出(FIFO),即存取缓冲器200包括许多FIFO缓冲器,所述FIFO缓冲器在本说明书文本中也被称为FIFO队列。
如果例如存取缓冲器200被配置成处理两个存储器器件106(例如DRAM),每个具有8排,则与FIFO队列关联的每一请求类型存在16个FIFO队列。管理请求经常不与FIFO队列关联,因为它们具有最高的优先级并因此被优先化而不用缓冲。具有高优先级的读请求、具有低优先级的读请求、具有高优先级的写请求和具有低优先级的写请求每个与每排存储器器件的FIFO队列关联。
根据从处理器接收的请求类型且根据其旨在用于哪个存储器器件和该存储器器件的哪排,该请求被存储在与请求类型和所讨论的存储器器件排对应的FIFO队列中。
存取缓冲器200包括或连接到存取调度器300。存取调度器被配置成从存取缓冲器的FIFO队列接收或检索请求信息和/或从存取缓冲器接收或检索管理请求信息。请求信息可以例如是存取缓冲器中的FIFO队列包括存取请求的指示,其也可以包括FIFO队列为空的信息以及关于请求长度的信息。优选地,由于管理请求具有最高优先级,所以存取调度器可以直接接收或检索管理请求信息而不用管理请求信息在存取缓冲器的任何缓冲。
存取调度器进一步被配置成借助于包括一个或多个调度算法的一个或多个调度器或仲裁器来调度请求。也被称为选择的请求的所调度请求然后作为请求命令发送到所讨论的存储器器件,优选地到存储器器件的特定排。请求命令优选地在存取缓冲器中被生成并且从存取缓冲器直接或经由交换机发送到存储器接口。
存储器控制器104进一步包括重新排序器件500,该重新排序器件500被连接成并且被配置成从存取缓冲器200和/或从存储器器件106接收响应数据。在实施例中,重新排序器件500被连接成并且被配置成经由存储器接口400以及也可能经由交换机450从存储器器件106接收响应数据。重新排序器件500被配置成对接收的响应数据进行分类,使得以与处理器102向存储器控制器104发出对应的存取请求相同的顺序产生到处理器102的存取响应。
图3和4示出发明存取调度器300的实施例。该发明存取调度器被配置为层次调度器,其中也被称为合格信息的状态信息从叶子朝树根传播,如下面将描述的。在根中做出调度决策以便选择服务哪个请求,然后调度决策从根传播到叶子,如下面将描述的。在叶子处,请求信息被检索并发送到基于所检索的请求信息来生成DRAM命令的命令生成器。
在实施例中,发明存取调度器300包括五个层次级别,如图3示意性地所示的。然而,如图4示意性地所示的,存取调度器300的实施例可以包括树层次级别。在图4中,在存取调度器300中包括三个级别:级别1,级别4和级别5。
现在将参考图3来描述合格信息从叶子到根的传播。
FIFO队列,诸如“Rd Hi FIFO”, “Rd Lo FIFO”, “Wr Hi FIFO”或者“Wr Lo FIFO”中的一个,在其不是空的且其排定时器屏蔽允许调度的情况下有资格由在第一级别(级别1)处的调度器304调度。
进一步,如果由第一级别调度器304服务的任一FIFO是合格的,则在级别1处的第一级别调度器304有资格由在级别2处的第二级别调度器308调度。例如,为了第一级别调度器304a有资格由第二级别调度器308a调度,读高优先级FIFO队列“Rd Hi FIFO”之一必须是合格的。
如果由在级别3处的第三级别调度器312服务的在级别2处的任一第二级别调度器308是合格的,则在级别2处的第二级别调度器308有资格由在级别3处的第三级别调度器312调度。
进一步,如果由在级别4处的第四级别调度器318服务的在级别3处的任一第三级别调度器312是合格的,则在级别3处的第三级别调度器312有资格由在级别4处的第四级别调度器318调度。为了使第三级别调度器312是合格的,群组定时器315必须允许调度。在级别5处,在级别4处的群组以循环的方式交替。
现在将参考图3和9来描述调度决策从根到叶子的传播。
对于该群组,即在级别5处选择的DRAM器件,如果也被称为刷新定时器314的用于刷新的计数器达到了在配置参数单元316中可配置的阈值,则该群组的有限状态机(FSM)320选择刷新操作。刷新操作可以被延迟,直到达到其中FSM否则将从读切换到写或空闲或者从写切换到读或空闲的状态为止。如果未选择刷新,并且读和/或写是合格的,则读/写仲裁器318使用例如亏损加权循环(DWRR)调度算法来选择读或写。否则调度器318可以是空闲的。如果选择读或写,则被选择的在级别3处的第三级别调度器312在合格的第二级别调度器308之间选择具有最高优先级的第二级别调度器308。
然后,被选择的第二级别调度器308在合格的第一级别调度器304之间选择具有最高优先级的第一级别调度器304。第一级别调度器304以循环方式选择下一合格的FIFO队列。
应当理解,合格信息从叶子到根的传播以及调度决策从根到叶子的传播在具有除5之外的另一个层次级别数量的存取调度器中以相同的方式运行。
根据实施例,第一级别(级别1)包括一个或多个排定时器302,排定时器的数量对应于排的数量。排定时器302被配置成当在存取缓冲器中包括的且与该排关联的FIFO队列被存取时设定每排存储器器件106的屏蔽位,如图7示意性地所示的。在图3中,屏蔽位的设定由环绕连接FIFO与第一级别调度器304的线A40的环所示。通过当相关FIFO队列被存取时设定该排的屏蔽位,该排不能被选择用于另一个存取直到该屏蔽位被清除为止。进一步,当DRAM特定的随机存取时间tRC过期时,借助于排定时器302来清除该屏蔽位。从而,可以防止存取错误,诸如在对排的先前存取之后过早地存取相同排。
进一步,调度器300包括一个或多个第一级别仲裁器304,例如与存取缓冲器中的FIFO队列关联的每一存取请求类型一个第一级别仲裁器304。FIFO队列把合格信息传播到第一级别仲裁器304,如图9中的箭头A40所示的。第一级别仲裁器304被配置成借助于调度算法诸如如图3中由RR所示的循环调度算法,以公平的方式且基于所接收的请求信息来选择与排0-7关联的FIFO队列之一中包括的存取请求之一。
因而,向排的工作守恒循环服务提供每一存取请求类型一个循环;即每一读高优先级请求、读低优先级请求、写高优先级请求和写低优先级请求一个循环。
一旦选择了存取请求,第一级别仲裁器304将把关于存储与选择的存取请求有关的请求信息的FIFO的合格信息传播到在下一级别(级别2)中包括的第二级别仲裁器308,如图9中的箭头A42所指示的。
如图3示意性地所示的,用于调度读高优先级请求的第一级别仲裁器304a被配置成基于与排0-7关联的8个FIFO队列“Read Hi FIFO”之一中包括的请求信息来选择读高优先级请求之一。以相同的方式,第一级别仲裁器304b、304c、304d被配置成分别从FIFO队列“Read Lo FIFO”、“Write Hi FIFO”和“Write Lo FIFO”选择读低优先级请求、写高优先级请求和写低优先级请求。
在最后储存器306中,存储来自调度器304的指针。该指针被配置成告诉哪个排0-7是要服务的最后排。在调度决策之后最后指针被增加1模与调度器关联的排的数量,以指示调度器304接着要服务哪个排。
根据实施例,第二级别(级别2)包括一个或多个第二级别仲裁器308。优选地,存取调度器300包括每一请求类型(不管高低优先级)一个第二级别仲裁器308,即每一写请求一个和每一读请求一个。因而,第一第二级别仲裁器308a被配置成在读请求之间仲裁而第二第二级别仲裁器308b被配置成在写请求之间仲裁。
第二级别仲裁器308被配置成借助于固定优先级调度算法在低优先级请求和高优先级请求之间执行仲裁,即第二级别仲裁器308被配置成选择具有最高优先级的请求并且把合格信息传播到在下一级别(级别3)中包括的第三级别仲裁器312,如图9中的箭头A44所指示的。
因而,只要读高优先级请求存在,在选择读低优先级请求之前,第一第二级别仲裁器308a将选择读高优先级请求。
按照相同的推理,第二第二级别仲裁器308b被配置成在选择写低优先级请求之前选择写高优先级请求。
在第二级别(级别2)中,存取调度器300也包括管理请求单元310,其被配置成把具有高优先级的管理读请求从存取缓冲器传播到第三级别调度器312a并且把合格信息传播到第三级别调度器312b,如图9中的箭头A46所指示的。
根据实施例,在第三级别(级别3)中,存取调度器300包括一个或多个第三级别仲裁器312。第三级别仲裁器312被配置成在正常存取请求即读请求和写请求以及管理存取请求之间调度。如先前所提及的,管理存取请求是高优先级存取请求,其可以源自除处理器之外的另一个部件;例如源自连接到存取调度器/存取缓冲器的控制平面CPU。
如图3示意性地所示的,第一第三级别仲裁器312a被配置成在读请求和读管理请求之间选择,而第二第三级别仲裁器312b被配置成在写请求和写管理请求之间选择。由于管理请求比读请求和写请求具有更高的优先级,所以只要管理请求可用于选择,第三级别仲裁器312将选择管理请求。
如图9中的箭头A48所指示的,合格信息被传播到在下一级别(级别4)中包括的第四级别仲裁器318。
在实施例中,存取调度器300也包括刷新定时器314,其被配置成基于存储在配置参数单元316中的配置参数来指令有限状态机(FSM)320以生成刷新请求。该刷新请求可以例如是对DRAM的维护请求,即请求维护DRAM以例如通过内部电机构来刷新存储器的内容的请求。若不刷新,存储器内容变得走样(corrupted)。刷新请求可以被周期性地发送并且它们可以优先于其它存取请求和管理请求。
在实施例中,存取调度器包括一个或多个群组定时器315。群组定时器315被配置成根据例如tFAW、tRRD、tRead2write、tWrite2read和tCalibration来设定群组即DRAM器件的屏蔽位,如图8示意性地所示的。tFAW限制时间窗口内的行激活命令的数量,并且tRRD是到DRAM器件的两个连续激活命令之间的最小时间。tRead2write是读命令和后续写命令之间的最小时间,而tWrite2read是写命令和后续读命令之间的最小时间。tCalibration是两个校准命令之间的时间周期。可以例如执行校准命令以补偿操作条件的变化,诸如温度变化。
在第四级别中,存取调度器可以包括配置参数单元316。配置参数单元316被配置成把诸如在要执行许多写请求之前要执行的读请求的数量或者在写之前要读的突发的数量之类的配置参数传递到在第四级别(级别4)中包括的有限状态机(FSM)320。借助于配置参数,FSM 320被配置成控制何时进行读、写、刷新或空闲。
FSM被配置成把也被称为Ack信号的确认信号传输到一个或多个FIFO队列和传输到与一个或多个第一级别仲裁器304关联的一个或多个最后储存器306,如图3、4和9示意性地所示的。Ack信号触发从选择的FIFO检索请求。另外,其触发在与选择的FIFO关联的RR调度器304的最后储存器306中更新RR指针。
根据实施例,存取调度器在第四级别(级别4)中包括第四级别仲裁器318、有限状态机(FSM)320、FSM定时器计数器322。
第四级别仲裁器318被配置成在不考虑优先级的情况下在请求之间即在写请求、读请求、管理请求和刷新请求之间调度,即在第四级别处请求是具有低优先级还是高优先级无关紧要。第四级别仲裁器318也可以被配置成调度在要执行许多写请求之前要执行的许多读请求以便最小化存储器存取的延迟,原因在于不同存取请求(例如读、写、管理、刷新和维护)之间的切换花费时间并且也可能要求插入空闲循环。
在实施例中,刷新定时器314被配置成对刷新请求之间的循环数量进行计数并且一个或多个FSM计算器322被配置成对写和读请求的数量以及对在诸如读、写和刷新之类的命令类型之间切换时需要插入的循环的数量进行计数。
读和写带宽是可配置的并且以公平、加权、工作守恒的方式被动态地共享。在配置参数单元316中包括的两个可配置参数是“MaxRead” “MaxWrite”。参数“MaxWrite”指示在转向服务DRAM读之前被写(如果合格的话)的DRAM突发的数量。参数“MaxRead”指示在转向服务DRAM写之前被读(如果合格的话)的DRAM突发的数量。在实施例中,“MaxRead”和“MaxWrite”是亏损加权循环(DWRR)调度器的权重。
进一步,第四级别仲裁器318被配置成把合格信息传播到在存取调度器的下一级别(级别5)中包括的第五级别仲裁器324,如图9中的箭头A50所指示的。
根据实施例,存取调度器在第五级别(级别5)中包括第五级别仲裁器324,其被配置成在到也被称为第一群组0的第一存储器器件106的存取请求和到也被称为第二群组1的第二存储器器件106的存取请求之间选择。在实施例中,这些群组共享地址总线但是具有单独的数据总线。在实施例中,第五级别仲裁器324在选择对第一存储器器件和对第二存储器器件的存取请求之间交替。
为了最大化存储器接口的利用,DRAM器件因而可以被组织成群组,例如组织成群组0和群组1。通过在群组之间交替,如由tFAW参数表示的对时间窗口内的行激活命令数量的DRAM约束不会减损存储器接口带宽。在群组之间交替也防止由于tRRD即两个连续行激活命令之间的最小时间和tCCD即两个列命令之间的最小时间引起的带宽减损。
命令生成器214被布置成与存取调度器300通信并且被配置成基于关于来自存取调度器的优胜者的请求信息(如图9中的箭头Rq Info所指示)且基于与请求关联的且从FIFO队列检索的地址、数据和属性(如图9中的箭头“地址、数据和属性”所指示)来生成命令。该命令然后经由存储器接口400发送到DRAM,如图9中的箭头Cmd所指示的。
图4示意性地示出发明存取调度器300的更广义实施例。
如所示的,存取调度器300的实施例在第一级别(级别1)中包括一个或多个排定时器302,排定时器的数量对应于排的数量。排定时器302被配置成当在存取缓冲器中包括的且与该排关联的FIFO队列被存取时设定每排存储器器件106的屏蔽位,如先前所描述的。
进一步,调度器300包括一个或多个第一级别仲裁器304,例如与存取缓冲器中的FIFO队列关联的每一存取请求类型一个第一级别仲裁器304。在所示的实施例中,存取请求类型的数量是二:读请求和写请求。
一旦选择了存取请求,第一级别仲裁器304将把关于存储与选择的存取请求有关的请求信息的FIFO的合格信息传播到在下一级别(级别4)中包括的第四级别仲裁器318,如线A44所指示的。
在实施例中,存取调度器300也包括刷新定时器314、群组定时器315、配置参数单元316、有限状态机(FSM)320和FSM计数器322,如先前所描述的。
第四级别仲裁器318被配置成在请求之间即在写请求、读请求、管理请求和刷新请求之间调度。第四级别仲裁器318也可以被配置成调度在要执行许多写请求之前要执行的许多读请求以便最小化存储器存取的延迟,原因在于不同存取请求(例如读、写、管理、刷新和维护)之间的切换花费时间并且也可能要求插入空闲循环。
进一步,第四级别仲裁器318被配置成把合格信息传播到在存取调度器的下一级别(级别5)中包括的第五级别仲裁器324,如线A50所指示的。
第五级别仲裁器324被配置成在到也被称为第一群组0的第一存储器器件106的存取请求和到也被称为第二群组1的第二存储器器件106的存取请求之间选择,如先前所描述的。关于优胜者的请求信息被传输到命令生成器214,该命令生成器214基于请求信息且基于与请求关联的且在FIFO队列中存储的地址、数据和属性来生成命令。该命令然后经由存储器接口400发送到DRAM器件。
图5示意性地示出存取缓冲器200的实施例。存取缓冲器200优选地基于先进先出(FIFO),即存取缓冲器200包括许多FIFO缓冲器,所述FIFO缓冲器在本描述文本中也被称为FIFO队列。
图5所示的存取缓冲器200的实施例被配置成处理两个存储器器件106(例如DRAM),每个具有8排,意味着每一请求类型存在16个FIFO队列。由于与FIFO队列关联的请求类型的数量为4(管理请求不与FIFO队列关联),所以存取缓冲器200的所示实施例包括总共64个FIFO队列。为了清楚起见,在图5中未示出所有64个FIFO队列。
然而,应当理解,FIFO队列的数量可以根据要处理的存储器器件的数量、在每个存储器器件中包括的排的数量和/或与一个或多个FIFO队列关联的请求类型的数量而不同。
在实施例中,存取缓冲器200包括:许多写/读低优先级/高优先级FIFO队列204:“Wr Lo Prio FIFO”, “Wr Hi Prio FIFO”, “Rd Hi Prio FIFO”和“Rd Lo Prio FIFO”;许多写/读低优先级/高优先级储存器206:“Wr LoPrio Storage”, “Rd LoPrio storage”, “Wr HiPrio Storage”和“Rd HiPrio Storage”;搜索单元208,仲裁器210,复用器212,存取调度器300,以及命令生成器214。命令生成器214被配置成以所需的格式构造存储器控制器命令并且经由存储器接口400把所生成的命令发送到存储器器件106。
在实施例中,可搜索地址储存器206是内容可寻址相关存储器(CAM)。
进一步,应当理解,在其它实施例中,存取调度器300可以被布置在存取缓冲器200的外部并且与存取缓冲器200通信。
如图5的左手侧的向右箭头A1-A5示意性地所示的,不同类型的请求,例如读/写、高优先级/低优先级、和管理,可以从处理器发送到存取缓冲器200。然而,应当理解,其它实施例可以包括其它请求类型,诸如DRAM刷新请求。
在图5中,示出以下不同请求类型:管理请求“Mgmt”;具有低优先级的写请求“WriteLoPrio”,例如写数据请求;具有高优先级的写请求“WriteHiPrio”,例如写控制信息数据请求;具有高优先级的读请求“ReadHiPrio”,例如读控制信息数据请求;以及具有低优先级的读请求“ReadLoPrio”,例如读数据请求。
在实施例中,例如参见图5,写请求包括要写到存储器器件的数据、与要写数据的存储器器件的地址对应的地址、以及定义该请求相对于其它请求的顺序的属性;而读请求包括与要读数据的存储器器件的地址对应的地址、以及定义该请求相对于其它请求的顺序的属性。
在其它实施例中,例如参见图6,写请求不包括属性。在这样的实施例中,写请求包括要写到存储器器件的数据、以及与要写数据的存储器器件的地址对应的地址;而读请求包括与要读数据的存储器器件的地址对应的地址、以及定义该请求相对于其它请求的顺序的属性。
在实施例中,管理请求具有最高优先级,并且与写和读控制信息数据有关的请求一般具有比与写和读数据例如有效载荷数据有关的请求更高的优先级。
管理请求可以例如是对存储器接口中的微代码存储器或配置参数的读或写请求。
数据请求可以例如是对在DRAM中缓冲的分组数据例如有效载荷数据的读或写请求。
控制信息数据请求可以例如是对与对数据进行存储的数据结构有关的信息(诸如链接表指针或分组长度)的读或写请求。
如图5示意性地所示的,当存取缓冲器200如箭头A1所指示的那样从处理器102接收把例如低优先级数据写到存储器器件106的请求“WriteLoPrio”时,低优先级数据的地址将如箭头A1a所指示的那样被写到在存取缓冲器200中包括的FIFO队列“Wr LoPrio FIFO”之一。进一步,写低优先级请求的数据和属性(Attr)将被存储在存取缓冲器200中包括的可搜索地址储存器“Wr LoPrio Storage”206中,如箭头A1b所指示的。
进一步,如图5示意性地所示的,当存取缓冲器200如箭头A2所指示的那样从处理器接收把例如控制信息数据写到存储器器件106的请求“WriteHiPrio”时,请求“WriteHiPrio”的地址将如箭头A2a所指示的那样被写到在存取缓冲器200中包括的FIFO队列“Wr HiPrio FIFO”之一。进一步,请求“WriteHiPrio”的数据和属性将被存储在存取缓冲器200中包括的可搜索地址储存器“Wr HiPrio Storage”206中,如箭头A2b所指示的。
而且,如图5示意性地所示的,当存取缓冲器200如箭头A3所指示的那样从处理器接收例如从存储器器件106读控制信息数据的请求“ReadHiPrio”时,请求“ReadHiPrio”的地址将如箭头A3a所指示的那样被写到在存取缓冲器200中包括的FIFO队列“Rd HiPrio FIFO”之一。进一步,请求“ReadHiPrio”的属性将被存储在存取缓冲器200中包括的可搜索地址储存器“Rd HiPrio Storage”206中,如箭头A3b所指示的。
如图5示意性地所示的,当存取缓冲器200如箭头A4所指示的那样从处理器102接收例如从存储器器件106读数据信息的请求“ReadLoPrio”时,存取缓冲器200被配置成借助于搜索单元208来(如虚线箭头所示的那样)搜索FIFO队列“Wr LoPrio FIFO”以确定请求“ReadLoPrio”的地址是否包括在FIFO队列“Wr LoPrio FIFO”之一中。
如果要读的数据的地址是在FIFO队列“Wr LoPrio FIFO”之一中,则搜索单元208检测到“命中(hit)”。搜索单元208从FIFO队列“Wr LoPrio FIFO”去除该地址并且要读的数据和属性从数据储存器“Wr LoPrio Storage”进行读。在从“Wr LoPrio Storage”读之前,“Hit”请求可以如箭头A4c所指示的那样被写到FIFO队列“Hit Synch FIFO”,并且如箭头A6所指示的那样借助于仲裁器210被调度,以便如箭头A7所指示的那样以有序的且经调度的方式从储存器“Wr LoPrio Storage”读数据和属性。当从储存器“Wr LoPrio Storage”读了数据和属性时,数据和属性分别如箭头A8b和A8c所指示的那样被发送到重新排序器件500。此后,重新排序器件500被配置成以正确的顺序把存取响应传输到处理器102,该响应是基于所读的数据和属性,如图5中的重新排序器件500中的符号“属性+数据(命中)”所指示的。
仲裁器210被配置成借助于严格的优先级调度算法来执行调度。在实施例中,由存取调度器300选择的存取请求应当优先于“Hit”请求,原因在于存储器接口的带宽应当被优化。在这种情况下,“Hit”请求可以在Hit Synch FIFO中等待可用的时隙(例如存取调度器读命令)。
如果要读的地址不在FIFO队列之一中,则搜索单元208检测到“未中(miss)”。要读的数据的地址然后如箭头A4d所指示的那样被写到在存取缓冲器200中包括的FIFO队列“Rd LoPrio FIFO”之一。进一步,该请求的属性(Attr)将被存储在存取缓冲器200中包括的储存器“Rd LoPrio Storage”中,如箭头A4b所指示的。
如图5所示的,存取调度器300被配置成基于存取缓冲器200的FIFO队列204即“Wr LoPrio FIFO”、“Wr HiPrio FIFO”、“Rd HiPrio FIFO”和“Rd LoPrio FIFO”中的信息且基于如箭头A5a所指示的那样由存取调度器300接收的管理请求的可能地址来选择存取请求之一。存取调度器300被配置成借助于一个或多个仲裁器,基于调度算法例如如图5中用“RR”指示的循环调度算法、或先来先服务、或者另一种合适的调度算法来选择存取请求之一。存取调度器可以进一步包括调度器和有限状态机(FSM)216,其被配置成执行写/读/刷新请求调度并且确保不违反DRAM协议。
然而,如箭头A5b所指示的,管理请求的数据和属性可以直接发送到被配置生成命令的命令生成器214,所述命令借助于存储器接口400发送到存储器器件106。
进一步,如箭头A13所指示的,存取调度器300被配置成把选择的存取请求的地址传输到命令生成器214。当存取请求被存取调度器300选择时,存取缓冲器200被配置成从FIFO队列清除该存取请求的地址并且从储存器206之一读所选择请求的数据和/或属性。
如果例如选择的存取请求是“WriteLoPrio”,即写低优先级请求,则存取调度器300将如箭头A12所指示的那样把在“Wr LoPrio FIFO”中包括的所选择存取请求的地址传达到“Wr LoPrio Storage”并且如箭头A13所指示的那样传达到命令生成器214。进一步,如图3所示,地址可以通过仲裁器210,以便在从“Wr LoPrio Storage”读和去除数据和属性之前,基于搜索单元208所检测的命中或者基于从存取调度器300选择的写低优先级请求来优先化“Wr LoPrio Storage”中的读。当从“Wr LoPrio Storage”读了数据和属性时,数据和属性被传输到命令生成器214,如箭头A8a和A14所指示的。进一步,当从“Wr LoPrio Storage”读了数据和属性时,数据和属性被传输到重新排序器件500,如箭头A8b和A8c所指示的。
在实施例中,数据和属性经由复用器212被传输到命令生成器214以便在如箭头A8a、A9a、A10和A11所指示的那样从不同数据储存器传输的不同数据和属性之间进行选择。
当从“Wr LoPrio Storage”读的数据和属性在命令生成器214中被接收时,其将与从“Wr LoPrio FIFO”读的地址组合成被传输到存储器器件的写低优先级命令。
进一步,如果例如所选择的存取请求是“WriteHiPrio”,即写高优先级请求,则存取调度器300将如箭头A12所指示的那样把在“Wr HiPrio FIFO”中包括的写高优先级请求的地址传达到“Wr HiPrio Storage”并且如箭头A13所指示的那样传达到命令生成器214。当从“Wr HiPrio Storage”读和去除了数据和属性时,数据和属性被传输到命令生成器214,如箭头A10和A14所指示的。
可能地,数据和属性经由复用器212被传输到命令生成器214以便在如箭头A8a、A9a、A10和A11所指示的那样从不同数据储存器传输的不同数据和属性之间进行选择。
当来自“Wr HiPrio Storage”的数据和属性在命令生成器214中被接收时,其将与从“Wr HiPrio FIFO”读的地址组合成被传输到存储器器件的写高优先级命令。
而且,如果例如所选择的存取请求是“ReadHiPrio”,即读高优先级请求,则存取调度器300将如箭头A12所指示的那样把与所选择的存取请求对应的“Rd HiPrio FIFO”中存储的读高优先级请求的地址传达到“Rd HiPrio Storage”并且如箭头A13所指示的那样传达到命令生成器214。当从“Rd HiPrio Storage”读和去除了属性时,属性被传输到命令生成器214,如箭头A11和A14所指示的。可能地,属性经由复用器212被传输到命令生成器214以便在如箭头A8a、A9a、A10和A11所指示的那样从不同数据储存器传输的不同数据和属性之间进行选择。当从“Rd HiPrio Storage”读的属性在命令生成器214中被接收时,其将与从“Rd HiPrio FIFO”读的地址组合成被传输到存储器器件的读高优先级命令。
如果例如所选择的存取请求是“ReadLoPrio”,即读低优先级请求,则存取调度器300将如箭头A12所指示的那样把与所选择的存取请求对应的“Rd LoPrio FIFO”的地址传达到“Rd LoPrio Storage”并且如箭头A13所指示的那样传达到命令生成器214。当从“Rd LoPrio Storage”读和去除了属性时,属性被传输到命令生成器214,如箭头A9a和A14所指示的。进一步,属性也被传输到重新排序器件500,如箭头A9所指示的。
可能地,属性经由复用器212被传输到命令生成器214以便在如箭头A8a、A9a、A10和A11所指示的那样从不同数据储存器传输的不同数据和属性之间进行选择。
当从“Rd LoPrio Storage”读的属性在命令生成器214中被接收时,其将与从“Rd LoPrio FIFO”读的地址组合成被传输到存储器器件的读低优先级命令。
当命令从命令生成器214发送到存储器器件时,关于发送的请求类型例如写/读低/高优先级请求“Type”和关于请求的序列标识“SerID”的信息被发送到重新排序器件500,如箭头A15所指示的。
在实施例中,SerID是由处理器设定的属性。其用来识别回到处理器的响应。另外,其被重新排序器件500用来恢复可能被存取调度器打断的原始顺序。例如,处理器可以针对每个请求使SerID递增一直到达到诸如65 535之类的最大值为止,此后SerID被复位到0并且继续按一递增。
重新排序器件500被配置成使用所接收的属性来为与该属性关联的存取请求的顺序分配重新排序器件中的地址。因而,当在重新排序器件500中接收存取响应时,该属性可以用来知道何时把存取响应发送到处理器。因而借助于请求的属性,知道该请求相对于从处理器发送的其它请求的顺序。如果例如该请求的顺序在请求序列中是第二,则来自存储器器件的对这个请求的响应应当在发送了对第一请求的响应之后且在发送对第三请求的响应之前发送到处理器。
图6示出被配置成处理分别如箭头A1’和A3’示意性地所示的所接收的写请求和读请求的存取缓冲器200的广义实施例。存取缓冲器200包括许多FIFO队列例如写、读和命中FIFO队列204、搜索单元208,存取调度器300以及命令生成器214。进一步,存取缓冲器连接到被配置成如先前所描述的那样运行的重新排序器件500。
当如箭头A1’所示的那样接收包括地址和数据的写请求时,写请求的地址和数据被存储在写FIFO队列“Wr FIFO”之一中。
当如箭头A3’所示的那样接收包括地址和属性的读请求时,搜索单元208被配置成在“Wr FIFO”中搜索与读请求的地址匹配的地址。
如果找到这样的地址,则搜索单元208检测到命中并且可能经由命中FIFO队列“Hit FIFO”把读请求的属性和地址传输到重新排序器件500。
如果未找到这样的地址,则搜索单元208检测到未中并且把地址和属性存储在读FIFO队列“RD FIFO”之一中。
如先前所描述的,存取调度器300被配置成选择请求之一。
如果所选择的请求是写请求,则地址和数据从写FIFO进行检索并且发送到命令生成器214以生成写命令。
如果所选择的请求是读请求,则属性被发送到重新排序器件500并且地址被发送到命令生成器214以生成读命令。
命令生成器214被配置成把生成的命令发送到存储器器件并且把请求类型例如写或读“Type”以及SerID发送到重新排序器件500。
进一步,存取缓冲器的实施例可以被配置成具有拥有背压(backpressure)阈值的一个或多个FIFO队列。如果FIFO队列的填充级别超过其背压阈值,则存取缓冲器被配置成把这个背压传达到处理器。从而,处理器被配置成阻止对存取缓冲器的相同类型(例如读或写,或者具有优先级的读或写)的进一步存取请求,直到存取缓冲器向处理器传达FIFO队列的填充级别已返回到在阈值之下的级别。背压级别应当被设定为使最大不可阻止请求流适应FIFO之一。如果例如FIFO可以包括16个请求并且不可阻止量是5个请求,则背压阈值应当被设定为11个请求。
而且,存取缓冲器的实施例可以被配置成具有拥有应急(panic)阈值的一个或多个FIFO队列。如果写FIFO队列或读FIFO队列的最大填充级别增长到大于应急阈值,则用于读和写的权重在存取调度器中被自动地改变,使得写或读得到更高的相对带宽共享。当填充级别返回到在阈值之下的级别时,离开应急模式并且把权重复位到正常值。

Claims (21)

1. 一种用于对一个或多个存储器器件(106)的存取进行调度的存取调度器(300),包括:
-第一层次级别(级别1),包括:
--一个或多个排定时器(302),被配置成当与存储器器件(106)的每排关联的FIFO队列被存取时设定该排的屏蔽位,所述FIFO队列存储与存取请求有关的请求信息;以及
--一个或多个第一级别仲裁器(304),被配置成选择来自多个FIFO队列中的一个FIFO队列的存取请求并且把关于所述一个FIFO队列的合格信息传播到下一层次级别;以及
-第四层次级别(级别4),包括:
--第四级别仲裁器(318),被配置成接收传播的合格信息并且基于传播的合格信息来选择请求。
2. 根据权利要求1的存取调度器(300),其中所述第四级别仲裁器(318)进一步被配置成基于由有限状态机(320)生成的刷新请求来选择请求。
3. 根据权利要求1或2的存取调度器(300),其中所述有限状态机(320)被配置成控制在切换到第二类型的许多存取请求例如写请求之前要执行的第一类型的存取请求例如读请求的数量。
4. 根据权利要求1-3中任一项的存取调度器(300),进一步包括:
-第五层次级别(级别5),包括:
--第五级别仲裁器(324),被配置成在对第一存储器器件(106)的存取请求和对第二存储器器件(106)的存取请求之间选择。
5. 根据权利要求1-4中任一项的存取调度器(300),进一步包括:
-第二层次级别(级别2),包括:一个或多个第二级别仲裁器(308),适于从第一级别仲裁器(302)接收传播的合格信息并且被配置成在低优先级请求和高优先级请求之间执行仲裁且把与选择的请求有关的合格信息传播到下一层次级别;以及
-第三层次级别(级别3),包括:一个或多个第三级别仲裁器(312),被配置成:从第二级别仲裁器(308)接收传播的合格信息;从管理请求单元(310)接收管理请求,以基于传播的合格信息和管理请求来选择请求;并且把与选择的存取请求有关的合格信息传播到下一层次级别。
6. 根据权利要求1-5中任一项的存取调度器(300),进一步包括:刷新定时器(314),被配置成基于存储在配置参数单元(316)中的配置参数来指令所述有限状态机(320)生成刷新请求。
7. 根据权利要求1-6中任一项的存取调度器(300),其中所述刷新请求是对存储器器件(106)的维护请求,诸如刷新存储器器件(106)的内容的请求。
8. 根据权利要求1-7中任一项的存取调度器(300),其中所述刷新请求被周期性地发送并且优先于其它请求。
9. 根据权利要求1-6中任一项的存取调度器(300),进一步包括:一个或多个群组定时器(315),被配置成根据预定时间周期来设定群组即存储器器件(106)的屏蔽位。
10. 根据权利要求9的存取调度器(300),其中所述时间周期被选择为以下中的任一个:(tFAW),其限制时间窗口内的行激活命令的数量;(tRRD),是到DRAM器件的两个连续激活命令之间的最小时间;(tRead2write),是读命令和后续写命令之间的最小时间;(tWrite2read),是写命令和后续读命令之间的最小时间;或者(tCalibration),是两个校准命令之间的时间周期。
11. 根据权利要求1-6中任一项的存取调度器(300),其中所述配置参数涉及在要执行许多写请求之前要执行的读请求的数量或者在写之前要读的突发的数量。
12. 一种存储器控制器(104),包括:
-根据权利要求1-11中任一项的存取调度器(300),
-存取缓冲器(200),连接到所述存取调度器(300)且到一个或多个存储器器件(106)并且被配置成从连接到存储器控制器(104)的处理器(102)接收对所述一个或多个存储器器件(106)的一个或多个存取请求,以及
-重新排序器件(500),连接到所述存取缓冲器(200),被配置成接收来自一个或多个存储器器件(106)的响应数据并且对接收的响应数据进行分类,使得以与处理器(102)发送存取请求相同的顺序产生到处理器(102)的存取响应。
13. 一种借助于存取调度器(300)对一个或多个存储器器件(106)的存取进行调度的方法,包括以下步骤:
-在包括一个或多个第一级别仲裁器(304)的第一层次级别(级别1)中:
--借助于一个或多个排定时器(302),当与存储器器件(106)的每排关联的FIFO队列被存取时设定该排的屏蔽位;
--把与存取请求有关的请求信息存储在FIFO队列中;
--选择来自多个FIFO队列中的一个FIFO队列的存取请求;并且
--把关于所述一个FIFO队列的合格信息传播到下一层次级别;以及
-在包括第四级别仲裁器(318)的第四层次级别(级别4)中:
--接收传播的合格信息;并且
--基于传播的合格信息来选择请求。
14. 根据权利要求13的方法,进一步包括以下步骤:借助于第四级别仲裁器(318):
-基于由有限状态机(320)生成的刷新请求来选择请求。
15. 根据权利要求13或14的方法,进一步包括以下步骤:借助于有限状态机(320):
-控制在切换到第二类型的许多存取请求例如写请求之前要执行的第一类型的存取请求例如读请求的数量。
16. 根据权利要求13-15中任一项的方法,进一步包括以下步骤:借助于第五层次级别(级别5)中的第五级别仲裁器(324):
-在对第一存储器器件(106)的存取请求和对第二存储器器件(106)的存取请求之间选择。
17. 根据权利要求13-16中任一项的方法,进一步包括以下步骤:
-在包括一个或多个第二级别仲裁器(308)的第二层次级别(级别2)中:
--从第一级别仲裁器(302)接收传播的合格信息;
--在低优先级请求和高优先级请求之间执行仲裁;并且
--把与选择的请求有关的合格信息传播到下一层次级别;以及
-在包括一个或多个第三级别仲裁器(312)的第三层次级别(级别3)中:
--从第二级别仲裁器(308)接收传播的合格信息;
--从管理请求单元(310)接收管理请求;
--基于传播的合格信息和管理请求来选择请求;并且
--把与选择的存取请求有关的合格信息传播到下一层次级别。
18. 根据权利要求13-17中任一项的方法,进一步包括以下步骤:借助于刷新定时器(314):
-基于存储在配置参数单元(316)中的配置参数来指令所述有限状态机(320)生成刷新请求。
19. 根据权利要求13-18中任一项的方法,其中所述刷新请求是对存储器器件(106)的维护请求,诸如刷新存储器器件(106)的内容的请求。
20. 根据权利要求13-19中任一项的方法,进一步包括以下步骤:借助于群组定时器(315):
-根据预定时间周期来设定每个群组即每个存储器器件(106)的屏蔽位。
21. 根据权利要求20的方法,其中所述时间周期被选择为以下中的任一个:(tFAW),其限制时间窗口内的行激活命令的数量;(tRRD),是到DRAM器件的两个连续激活命令之间的最小时间;(tRead2write),是读命令和后续写命令之间的最小时间;(tWrite2read),是写命令和后续读命令之间的最小时间;或者(tCalibration),是两个校准命令之间的时间周期。
CN2011100089859A 2010-01-18 2011-01-17 存取调度器 Pending CN102129412A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US29579410P 2010-01-18 2010-01-18
SE1050044-5 2010-01-18
US61/295794 2010-01-18
SE1050044 2010-01-18

Publications (1)

Publication Number Publication Date
CN102129412A true CN102129412A (zh) 2011-07-20

Family

ID=44267498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100089859A Pending CN102129412A (zh) 2010-01-18 2011-01-17 存取调度器

Country Status (3)

Country Link
US (2) US8615629B2 (zh)
CN (1) CN102129412A (zh)
TW (1) TWI512464B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106687940A (zh) * 2014-07-22 2017-05-17 桑迪士克科技有限责任公司 挂起和恢复非易失性存储器操作
CN107924375A (zh) * 2016-07-15 2018-04-17 超威半导体公司 用于高速存储器接口的命令仲裁
CN109558346A (zh) * 2018-11-05 2019-04-02 西安智多晶微电子有限公司 一种基于fpga的存储控制器
CN109918315A (zh) * 2017-12-12 2019-06-21 爱思开海力士有限公司 存储器系统及存储器系统的操作方法
CN111566610A (zh) * 2017-10-24 2020-08-21 美光科技公司 命令选择策略
CN112100097A (zh) * 2020-11-17 2020-12-18 杭州长川科技股份有限公司 多测试通道优先级自适应仲裁方法和存储器访问控制器
CN112181871A (zh) * 2020-09-28 2021-01-05 中国人民解放军国防科技大学 处理器与内存间写阻塞式通信控制方法、部件、设备及介质
CN116755639A (zh) * 2023-08-18 2023-09-15 深圳大普微电子科技有限公司 闪存接口的性能评估方法及相关装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632954B2 (en) 2011-11-07 2017-04-25 International Business Machines Corporation Memory queue handling techniques for reducing impact of high-latency memory operations
US8909874B2 (en) 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
KR102031952B1 (ko) * 2012-03-29 2019-10-14 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작방법
US9134919B2 (en) * 2012-03-29 2015-09-15 Samsung Electronics Co., Ltd. Memory device including priority information and method of operating the same
US9189167B2 (en) * 2012-05-31 2015-11-17 Commvault Systems, Inc. Shared library in a data storage system
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US9237581B2 (en) * 2013-03-14 2016-01-12 Cavium, Inc. Apparatus and method for media access control scheduling with a sort hardware coprocessor
US9706564B2 (en) 2013-03-14 2017-07-11 Cavium, Inc. Apparatus and method for media access control scheduling with a priority calculation hardware coprocessor
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
KR102034626B1 (ko) * 2013-06-26 2019-10-21 삼성전자 주식회사 메모리 동작을 제어하는 방법 및 장치
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
US9281046B2 (en) 2013-10-08 2016-03-08 Advanced Micro Devices, Inc. Data processor with memory controller for high reliability operation and method
US9431105B2 (en) * 2014-02-26 2016-08-30 Cavium, Inc. Method and apparatus for memory access management
US9922000B2 (en) 2014-08-25 2018-03-20 Marvell World Trade Ltd. Packet buffer with dynamic bypass
US9558528B2 (en) * 2015-03-25 2017-01-31 Xilinx, Inc. Adaptive video direct memory access module
US10078471B2 (en) * 2015-05-19 2018-09-18 Toshiba Memory Corporation Memory device that sorts access commands to a nonvolatile semiconductor memory unit thereof
US10180803B2 (en) * 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US9921754B2 (en) 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10192065B2 (en) 2015-08-31 2019-01-29 Commvault Systems, Inc. Automated intelligent provisioning of data storage resources in response to user requests in a data storage management system
US10437480B2 (en) 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
US10621117B2 (en) * 2017-06-15 2020-04-14 Micron Technology, Inc. Controlling memory devices using a shared channel
US10656872B2 (en) * 2018-03-15 2020-05-19 Western Digital Technologies, Inc. Storage device with multi-die management
CN110729006B (zh) 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
US10545701B1 (en) * 2018-08-17 2020-01-28 Apple Inc. Memory arbitration techniques based on latency tolerance
US10817219B2 (en) 2018-09-12 2020-10-27 Apple Inc. Memory access scheduling using a linked list
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model
CN109992205B (zh) 2019-03-27 2020-06-02 无锡海斯凯尔医学技术有限公司 数据存储的装置、方法及可读存储介质
US20210200694A1 (en) * 2019-12-27 2021-07-01 Advanced Micro Devices, Inc. Staging buffer arbitration
US11210104B1 (en) 2020-09-11 2021-12-28 Apple Inc. Coprocessor context priority
US11782640B2 (en) 2021-03-31 2023-10-10 Advanced Micro Devices, Inc. Efficient and low latency memory access scheduling
US11789655B2 (en) 2021-03-31 2023-10-17 Advanced Micro Devices, Inc. Efficient and low latency memory access scheduling
TWI819635B (zh) * 2022-06-01 2023-10-21 瑞昱半導體股份有限公司 記憶體控制系統與記憶體控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
US6654860B1 (en) * 2000-07-27 2003-11-25 Advanced Micro Devices, Inc. Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding
CN1713163A (zh) * 2004-06-24 2005-12-28 三星电子株式会社 用于调度命令的存储器控制设备及方法
CN101038574A (zh) * 2006-03-17 2007-09-19 上海奇码数字信息有限公司 总线仲裁装置
CN101344871A (zh) * 2008-08-20 2009-01-14 北京中星微电子有限公司 一种保证访问先后顺序的总线仲裁单元及其实现方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495339A (en) * 1991-08-19 1996-02-27 Xerox Corporation Scheduling multiple disk requests and writing data buffers to disk
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6564304B1 (en) * 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
US20040236921A1 (en) * 2003-05-20 2004-11-25 Bains Kuljit S. Method to improve bandwidth on a cache data bus
US7646779B2 (en) * 2004-12-23 2010-01-12 Intel Corporation Hierarchical packet scheduler using hole-filling and multiple packet buffering
TWI295014B (en) * 2005-03-03 2008-03-21 Himax Tech Ltd Scheduling apparatus and method for scheduling requests to resource device
US20070121499A1 (en) * 2005-11-28 2007-05-31 Subhasis Pal Method of and system for physically distributed, logically shared, and data slice-synchronized shared memory switching
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
US6654860B1 (en) * 2000-07-27 2003-11-25 Advanced Micro Devices, Inc. Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding
CN1713163A (zh) * 2004-06-24 2005-12-28 三星电子株式会社 用于调度命令的存储器控制设备及方法
CN101038574A (zh) * 2006-03-17 2007-09-19 上海奇码数字信息有限公司 总线仲裁装置
CN101344871A (zh) * 2008-08-20 2009-01-14 北京中星微电子有限公司 一种保证访问先后顺序的总线仲裁单元及其实现方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106687940A (zh) * 2014-07-22 2017-05-17 桑迪士克科技有限责任公司 挂起和恢复非易失性存储器操作
CN106687940B (zh) * 2014-07-22 2020-01-24 桑迪士克科技有限责任公司 挂起和恢复非易失性存储器操作
CN107924375A (zh) * 2016-07-15 2018-04-17 超威半导体公司 用于高速存储器接口的命令仲裁
CN107924375B (zh) * 2016-07-15 2023-08-08 超威半导体公司 用于高速存储器接口的命令仲裁
CN111566610B (zh) * 2017-10-24 2022-04-05 美光科技公司 命令选择策略
CN111566610A (zh) * 2017-10-24 2020-08-21 美光科技公司 命令选择策略
CN109918315A (zh) * 2017-12-12 2019-06-21 爱思开海力士有限公司 存储器系统及存储器系统的操作方法
CN109918315B (zh) * 2017-12-12 2023-08-25 爱思开海力士有限公司 存储器系统及存储器系统的操作方法
CN109558346A (zh) * 2018-11-05 2019-04-02 西安智多晶微电子有限公司 一种基于fpga的存储控制器
CN112181871A (zh) * 2020-09-28 2021-01-05 中国人民解放军国防科技大学 处理器与内存间写阻塞式通信控制方法、部件、设备及介质
CN112100097B (zh) * 2020-11-17 2021-01-26 杭州长川科技股份有限公司 多测试通道优先级自适应仲裁方法和存储器访问控制器
CN112100097A (zh) * 2020-11-17 2020-12-18 杭州长川科技股份有限公司 多测试通道优先级自适应仲裁方法和存储器访问控制器
CN116755639A (zh) * 2023-08-18 2023-09-15 深圳大普微电子科技有限公司 闪存接口的性能评估方法及相关装置
CN116755639B (zh) * 2023-08-18 2024-03-08 深圳大普微电子科技有限公司 闪存接口的性能评估方法及相关装置

Also Published As

Publication number Publication date
US8990498B2 (en) 2015-03-24
TW201145023A (en) 2011-12-16
US8615629B2 (en) 2013-12-24
TWI512464B (zh) 2015-12-11
US20140115254A1 (en) 2014-04-24
US20110179240A1 (en) 2011-07-21

Similar Documents

Publication Publication Date Title
CN102129411B (zh) 存取缓冲器
CN102129412A (zh) 存取调度器
JP4723260B2 (ja) ソースデバイスに対するリクエストをスケジューリングする装置及び方法
CN103543954B (zh) 一种数据存储管理方法和装置
JP4472186B2 (ja) 外部デバイスへのアクセスを優先順序付けるための方法および装置
US7277982B2 (en) DRAM access command queuing structure
JP4695761B2 (ja) コマンド再順序付けシステム
CN105320608B (zh) 用于控制存储器设备处理访问请求的存储器控制器和方法
CN101609438B (zh) 存储器系统、其访问控制方法和计算机程序
EP2686774B1 (en) Memory interface
US20100325327A1 (en) Programmable arbitration device and method therefor
US20150010014A1 (en) Switching device
US7366854B2 (en) Systems and methods for scheduling memory requests utilizing multi-level arbitration
US9104531B1 (en) Multi-core device with multi-bank memory
US7054969B1 (en) Apparatus for use in a computer system
CN103810123B (zh) 内存控制装置及方法
WO2010076649A2 (en) Packet processing system on chip device
GB2341766A (en) Bus architecture
GB2341771A (en) Address decoding
GB2341767A (en) Bus arbitration
GB2341768A (en) Bus arbitration
GB2341699A (en) Inter-module data transfer
WO2010040983A1 (en) Switching device
GB2341770A (en) Modular bus topology
CN103988167A (zh) 排队装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20120129

Address after: Stockholm

Applicant after: A strategic position Lelateniuke Co.

Address before: Stockholm

Applicant before: Xelerated AB

ASS Succession or assignment of patent right

Owner name: MAVER INTERNATIONAL LTD.

Free format text: FORMER OWNER: MARVELL ELECTRONIC TECHNOLOGY SWEDEN CO., LTD.

Effective date: 20121219

Owner name: MARVELL ELECTRONIC TECHNOLOGY SWEDEN CO., LTD.

Free format text: FORMER OWNER: XELERATED AB

Effective date: 20121219

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20121219

Address after: Bermuda Hamilton

Applicant after: MARVELL INTERNATIONAL Ltd.

Address before: Stockholm

Applicant before: Marvell electronic technology company in Sweden

Effective date of registration: 20121219

Address after: Stockholm

Applicant after: Marvell electronic technology company in Sweden

Address before: Stockholm

Applicant before: A strategic position Lelateniuke Co.

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110720