CN101960431A - 存储器列突发调度 - Google Patents
存储器列突发调度 Download PDFInfo
- Publication number
- CN101960431A CN101960431A CN200980106647XA CN200980106647A CN101960431A CN 101960431 A CN101960431 A CN 101960431A CN 200980106647X A CN200980106647X A CN 200980106647XA CN 200980106647 A CN200980106647 A CN 200980106647A CN 101960431 A CN101960431 A CN 101960431A
- Authority
- CN
- China
- Prior art keywords
- memory
- requests
- formation
- memory requests
- column
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了一种方法、设备和系统。在一个实施例中,所述方法包括将多个存储器请求分组到多个存储器列队列中。每个列队列包含以对应的存储器列内的地址为目标的存储器请求。所述方法还在所述多个存储器列队列的一个队列中已经达到最小突发数量时,调度要被服务的一个存储器列队列内的最小突发数量的存储器请求。最后,如果存储器请求超过老化阈值,则该存储器请求将被服务。
Description
技术领域
本发明涉及对存储器子系统的业务的调度。更具体地说,本发明涉及通过将请求分组到同一存储器列来调度存储器请求的突发。
背景技术
近些年在计算机工业中已经提出和实现了不同的存储器调度策略,以改善存储器子系统的性能。然而,最近,能量效率已经成为设计存储器子系统时首先要考虑的问题。因此,有时候对于某些计算机系统而言,在存储器子系统中有时牺牲一些时延以在整体上改善该存储器子系统的总体功耗,会是有益的。
现代存储器模块通常被划分为若干个存储器列(rank),其中,每个列具有若干个存储体(bank)。到存储器子系统的电能传送经常可以被分解为针对每个存储器列而独立传送的电能。具有高级功率管理特性的计算机系统具有将诸如存储器子系统之类的子系统置入低功率空闲状态以及全功率操作状态的能力。
附图说明
通过示例的方式说明了本发明,并且其不受附图的限制,其中,类似的附图标记指示类似的元素,并且其中:
图1说明了MRBS引擎的实施例。在许多实施例中,MRBS引擎100通信地耦合到存储器控制器102;
图2说明了从存储器请求的起点到目的地的存储器请求的示例处理流程;
图3-8基于不同的准则描述了许多存储器请求突发安排方案;
图9是用于逐列发送存储器请求的突发的处理的实施例的流程图。
具体实施方式
公开了使用存储器列突发方案来调度存储器请求的方法、设备和系统的实施例。在下文描述的许多实施例中,存储器列突发调度(MRBS)引擎位于包括具有多个列的存储器的计算机系统中。MRBS引擎从一个或多个处理器和/或一个或多个输入/输出(I/O)设备接收存储器请求。地址转换逻辑确定所接收到的存储器请求中的每一个的目标是计算机系统内的存储器中的哪个存储器列。这些请求随后被分类到多个存储器列队列中,其中,每个存储器列具有一个存储器列队列。
MRBS引擎随后在突发中调度要被发送到存储器的多组请求,其中,每个突发包括多个请求。MRBS还监视所有列以确保没有列具有等待完成的饥饿(starve)的存储器请求,该饥饿的存储器请求是由于其所位于的存储器列队列没有接收到足够的请求来构造有效的突发而导致的。如果在任何列队列中的任何存储器请求超过了老化(aging)阈值(即,请求处于饥饿状态),则将该请求发送到存储器,即使该请求必须单独发送并且不符合MRBS引擎所使用的最小突发数量请求规则。
当对存储器列的访问被分解为针对每个列的突发时,所述列可以在计算机系统工作的大部分时间内单独处于空闲状态。因此,通过提供列突发方案,列在突发之间处于空闲的时间可以允许高级电能传送和管理系统将一个或多个列在突发之间置入低功率空闲状态,其将降低存储器子系统的整体功耗。
在以下说明和权利要求中提及的所公开的技术的“一个实施例”、“实施例”意味着结合该实施例描述的特定特征、结构或特性被包括在所公开的技术的至少一个实施例中。因此,在整个说明书中各个地方出现的短语“在一个实施例中”的出现并非必然都是指同一实施例。
在以下说明和权利要求中,术语“包括”和“包含”以及它们的派生词可以被使用并且旨在作为彼此的同义词。此外,在以下说明书和权利要求中,术语“耦合”和“连接”以及它们的派生词可以被使用。应当理解,这些术语并不旨在作为彼此的同义词。而是,在特定的实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以意味着两个或更多个元件直接物理或电接触。然而,“耦合”还可以意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协作或交互。
此外,在以下说明和权利要求中,术语“通信地耦合”以及其派生词可以在特定实施例中用于描述允许两个或更多个元件通过耦合介质自身(耦合介质是互连、网络、铜线等)用一些手段来彼此进行通信的耦合(即,如上文所解释的“耦合”)。
图1说明了MRBS引擎的实施例。在许多实施例中,MRBS引擎100通信地耦合到存储器控制器102。在其它实施例中,MRBS引擎100被集成到存储器控制器102中。存储器控制器102从通信地耦合到该存储器控制器102的一个或多个处理器中接收存储器请求(来自处理器104的输入)。在许多实施例中,存储器控制器102被集成到一个或多个处理器的至少一个处理器中。在不同的实施例中,该一个或多个处理器中的每一个可以具有一个或多个处理器核心。此外,在许多实施例中,存储器控制器102还从来自通信地耦合到该存储器控制器102的I/O子系统的一个或多个I/O设备接收存储器请求(来自I/O 106的输入)。I/O子系统可以包括耦合到一个或多个I/O设备的一个或多个I/O主机控制器。I/O主机控制器可以包括一个或多个通用串行总线(USB)主机控制器和一个或多个外围部件互连(PCI)Express主机控制器。
此外,MRBS引擎100通信地耦合到存储器108。在不同的实施例中,存储器108可以是一种或多种类型的存储器,例如动态随机存取存储器(DRAM)。存储器可以包括一个或多个存储器模块,例如双列直插存储器模块(DIMM)或其任意派生物。存储器模块可以包括多个存储器列以及每个存储器列中的多个存储器存储体。在一些实施例中,存储器包括N个列,其开始于存储器列0(110)和存储器列1(112),并且延续到存储器列N-1。例如,可以有8个存储器列。在某些示例中,每个存储器列可以有8个存储器存储体。
处理器、I/O子系统、存储器控制器、MRBS引擎和具有多个列的存储器位于计算机系统内。在不同的实施例中,计算机系统可以是台式计算机、膝上型计算机、服务器计算机、手持设备、电视机顶盒、或许多其它类型的计算机系统中的任意一种类型。
在许多实施例中,存储器控制器具有输入队列(没有示出),以从一个或多个处理器104和I/O子系统106接收所有的存储器请求。存储器控制器102包括地址转换逻辑116,以将每个存储器请求分类到作为存储器请求中的地址的目标的物理列。因此,地址转换逻辑116将每个存储器请求发送到下述列队列(rank queue)中的一个:存储器列0的队列118、存储器列1的队列120、直到存储器列N-1的队列122。
在许多实施例中,调度器124监视每个存储器列队列的状态,并且在一个或多个预定的要求被满足之后,调度要被发送到存储器108的存储器请求的突发。在许多实施例中,一个要求包括来自列队列的存储器请求的最小突发数量。因此,如果最小突发数量是2,则在请求被发送到存储器108之前,调度器124将等待,直到两个存储器请求出现在给定的列队列中为止。所以,第一请求可以在时间A到达,并且第二请求可以在时间B到达,然后在时间B,在具有两个请求的突发中调度第一和第二请求,这需要第一请求在其被服务(即,被调度并且被发送到存储器108)之前等待从时间A到时间B的绝对时间的差。
此外,在许多实施例中,调度器124遵守的另一个要求包括来自列队列的存储器请求的最大突发数量。因此,如果最大突发数量是8,则调度器124在移到另一列之前,将从给定的列中一次调度不超过8个突发。不过,如果没有其它列队列具有最小突发数量的待处理请求,并且如果同一列队列具有第一最大突发数量的请求之外的额外的最小突发数量的请求,则调度器124可以立即返回到该同一列队列并调度另一个突发。
每个列队列包括存储体重叠比特阵列(BO)以及老化计数器(AC)。BO包括针对构成对应的存储器列的每个存储体而存储的信息的比特。例如,如果存在构成存储器列0的8个存储体,则在存储体重叠比特阵列中将存在8比特的值,其中,该值的每个比特对应于特定的存储体。
每比特的值表示在列队列中是否表示了一个存储体。在许多实施例中,使用存储器列突发中的存储器请求使该存储器列突发针对不同的存储体是更有益的。存储体重叠是指在针对单个存储器列的存储器请求的给定突发中访问多个存储体。因此,如果最小突发数量是2,在一些实施例中,其被视为有两个存储器请求可用于单个突发,则在队列中的存储器请求的目标必须是存储器列中的不同存储体。
或者,如果最小突发数量是2并且在单个列队列中存在2个待处理的存储器请求,但是这两个存储器请求针对同一存储体,则这对存储器请求将没有资格处于同一突发中,并且也不能发生突发。
在许多实施例中,存储体重叠比特阵列正是用于跟踪在给定的列队列中是否存在以特定存储体为目标的至少一个待处理的存储器请求。因此,可以存在以特定存储体为目标的不止一个待处理的存储器请求,但是如果至少一个请求出现(其可以意味着2、5、10等数量的请求出现),比特将是“1”。一旦针对特定存储体没有请求出现,则该比特转换为“0”。在许多实施例中,最大突发数量等于在列中的存储体的数量。
老化计数器跟踪在对应的列队列中的最老的存储器请求有多陈旧。给定存储器请求的陈旧度是指该存储器请求已经处于存储器列队列中多长时间。如果存储器请求位于其中太长时间而没有被调度(即,被服务),饥饿会发生,其可能导致处理器或I/O设备停顿(如果处理器/设备具有取决于被服务的存储器请求的其它操作)。因此,老化计数器可以对自从存储器列队列中最老的请求到达以来已经经过的时钟的量进行计数。如果存储器请求已经位于存储器请求队列中超过了老化阈值的时间段,则该存储器请求将被调度,即使该存储器列队列不具有必需数量的请求来符合列突发的要求。在许多实施例中,可以通过在基本输入/输出系统(BIOS)或其它地方中可访问的配置寄存器来将老化阈值修改地更大或更小。
因此,调度器124使用诸如老化计数器、存储体重叠比特阵列、以及最小和最大突发数量之类的准则来安排存储器请求的突发。在许多实施例中,调度器124当前操作的存储器列可以被称为工作列。工作列可以在存储器列0的队列118、存储器列1的队列120直到存储器列N-1的队列122之间进行改变。
在许多实施例中,存储器列功率管理器126存在于计算机系统中。存储器列功率管理器126包括用于单独地对存储器108中的每个列上电和断电的逻辑。因此,存储器列功率管理器126可以将单个列从空闲(低功率状态)置入活动状态(全功率状态)并且再将其置回空闲状态。此外,存储器列功率管理器126还能够将单个存储器列置入中间的存储器预备级别的其他功率状态。存储器列功率管理器126可以具有逻辑以自己作出决策,或者其可以从存储器控制器102、MRBS引擎100、或从系统中的其它地方接收与列功率相关的命令。虽然图1示出了集成到存储器控制器102中的存储器列功率管理器,但是在其它实施例中(没有示出),存储器列功率管理器可以位于MRBS引擎中、存储器模块上、或者在系统中其它地方的另一个功率管理设备中。
图2说明了从起点到目的地的存储器请求的示例处理流程。处理开始于以下步骤:一个或多个处理器和/或一个或多个I/O设备将一个或多个存储器请求发送到存储器控制器以进行服务。这些请求进入存储器控制器中的一个或多个输入队列(步骤1)。然后,存储器控制器转换在每个存储器请求中的目标地址以确定该请求要被发送到哪个对应的列队列(步骤2)。然后,调度器使用诸如老化计数器、存储体重叠比特阵列、以及最小和最大突发数量之类的安排准则来安排存储器请求的突发(步骤3)。最后,如果存储器请求准备好被发送,则调度器在每个存储器周期将下一个存储器请求从工作列发送到存储器(步骤4)。
图3-8描述了基于不同准则的许多存储器请求突发安排方案。
图3描述了在两个存储器列上的存储器请求突发安排方案的第一实施例。附图示出了从一个或多个处理器和/或一个或多个I/O设备到达存储器控制器(MC)的许多存储器请求(竖直的箭头)的顺序——即,请求的“存储器控制器接收顺序”。附图还示出了应用了一个或多个上述准则的请求的“MRBS调度的顺序”。时序图通过时间线从左到右示出了存储器请求的最先到最后到达顺序。此外,该时序图不考虑其它可能的时序问题中的与接收请求使其进入输入队列、地址转换时间、存储器访问时延、或者每个存储器列的进入/退出低功率/高功率状态相关联的额外的开销。对于任意给定的功能,这些时序问题可以被假定为正常的,并且可以使其作为可以被添加到时序的背景常数(background constant)而成为时序图的一部分,从而得到在事件之间的绝对延迟。
现在参照图3,这里示出的针对突发调度的主要准则是被设置为2的最小突发数量。以列A为目标的存储器请求300第一个到达。然后,以列B为目标的存储器请求302第二个到达。一旦以列A为目标的存储器请求304第三个到达,调度器调度第一突发306,因为列A的队列现在满足发生突发的最小突发数量(突发的长度为2)。突发306花费时间增量1(Δt1)来完成。因此,在Δt1的开始,列A必须退出其空闲状态,从而存储器请求300和304可以完成,然后列A可以返回其空闲状态。
接下来,以列B为目标的存储器请求308到达,其使得列B现在满足最小突发长度准则。因此,突发310在Δt2期间发生。列B必须在Δt2的开始处退出其空闲状态,从而存储器请求302和308可以完成。这时,列B可以返回到其空闲状态。
然后,以列B为目标的存储器请求312到达。列B没有满足最小突发数量准则,因为在突发310发生之后,存储器请求302和308被清洗出了列B的队列。因此,存储器请求312在这时是在列B的队列中存储的唯一请求。接下来,以列B为目标的存储器请求314到达,其使得列B现在再次满足最小突发长度准则。因此,突发316在Δt3期间发生。列B必须在Δt3的开始处退出其空闲状态,从而存储器请求312和314可以完成。这时,列B可以返回其空闲状态。
以列A为目标的存储器请求318下一个到达。然后,以列B为目标的存储器请求320到达。一旦以列B为目标的存储器请求322到达,调度器调度突发324,因为列B的队列再次满足了最小突发数量。突发324花费Δt4完成。因此,在Δt4的开始处,列B必须退出其空闲状态,从而存储器请求320和322可以完成,然后列B可以返回到其空闲状态。
最后,以列A为目标的存储器请求326到达,其使得列A现在满足最小突发长度准则。因此,突发328在Δt5期间发生。在Δt5的开始处,列A必须退出其空闲状态,从而存储器请求318和326可以完成。这时,列B可以返回其空闲状态。
图4描述了在两个存储器列上的存储器请求突发安排方案的第二实施例。这里示出的针对突发调度的主要准则是被设置为2的最小突发数量以及在每个突发周围实现的额外的列预活动(pre-active)时间和后活动(post-active)时间。在许多实施例中,预活动和/或后活动时间可以是存储器列的功率方案的要求。在图4中,预活动和后活动时间相对于突发时间本身的相对大小没有按照比例绘出,或者没有指示预活动和后活动时段对于突发时间的真实比例。
现在参照图4,以列A为目标的存储器请求400第一个到达。然后,以列B为目标的存储器请求402第二个到达。一旦以列A为目标的存储器请求404第三个到达,调度器就调度第一突发406,因为列A的队列现在满足发生突发的最小突发数量(突发的长度为2)。突发406花费Δt1来完成。因此,在Δt1的开始处,列A必须退出其空闲状态,从而存储器请求400和404可以完成,然后列A可以在Δt1的结束处返回其空闲状态。
在图4的实施例中,列具有预活动时间,在此期间,列需要上电到全活动状态。这可能花费少量但有限的时间量。在一些实施例中,这可能花费一个或多个存储器周期来完成上电到活动状态(即,预活动时间)以及一个或多个存储器周期来完成断电到空闲状态(即,后活动时间)。具体而言,Δt1的预活动时间部分是Δt1a,实际突发时间是Δt1b并且用于将列B返回到空闲的后活动时间是Δt1c。因此,Δt1a的延迟可能在当调度器调度突发406时和当突发406实际发生时之间发生。此外,Δt1c的延迟可以在当调度器完成突发406时和当列A实际上返回空闲状态时之间发生。在Δt1a、Δt1b和Δt1c的绝对时间中的实际长度取决于存储器实现。
在一些实施例中,如果在存储器控制器中的逻辑和/或在MRBS中的逻辑可以在从空闲到活动时抢先地开始对存储器列增加电能,预活动时间可以被减少。在一些实施例中,抢先逻辑(其可以监听请求,或者当请求到达存储器控制器时发现请求,或者当请求离开它们的发起设备(例如,处理器、I/O设备)时发现请求)可以在存储器请求实际到达调度器之前,将每个列的未来接收的存储器请求的顺序传送到调度器。
该抢先逻辑(没有在图1中明确地示出)可以位于存储器控制器中、调度器中、或者在系统中的其它地方。因此,利用从抢先逻辑接收的将来的存储器请求信息(例如,将来的存储器请求到达顺序),存储器列功率管理逻辑(例如,在图1中的存储器列功率管理器126)可以具有在需要某个存储器列功率状态的时间之前操纵存储器列功率状态的能力。这可以允许预活动时间减少,因为列可以恰好在由调度器调度存储器请求突发调度事件时上电到活动状态。
接下来,以列B为目标的存储器请求408到达,这使得列B现在满足最小突发长度准则。因此,突发410在Δt2期间发生。列B必须在Δt2的开始处退出其空闲状态,从而存储器请求402和408可以完成。这时,列B可以返回其空闲状态。存储器列B花费预活动时间Δt2a以从空闲状态上电到活动状态。因此,从调度器调度突发410的时间开始,Δt2a的延迟发生,然后实际的突发在Δt2b期间发生,并且最后存储器列B花费后活动时间Δt2c以将列B返回到空闲状态。
然后,以列B为目标的存储器请求412到达。接下来,以列B为目标的存储器请求414到达,这使得列B现在再次满足最小突发长度准则。因此,突发416在Δt3期间发生。虽然没有具体地示出(例如,像突发406和410一样),但是Δt3包括Δt3a预活动时间、Δt3b突发时间和Δt3c后活动时间。列B必须在Δt3的开始处退出其空闲状态,从而存储器请求412和414可以完成,然后列B在Δt3的结束处返回其空闲状态。
以列A为目标的存储器请求418下一个到达。然后,以列B为目标的存储器请求420到达。一旦以列B为目标的存储器请求422到达,调度器就调度突发424,因为列B队列再次满足了最小突发数量。突发424花费Δt4来完成(包括Δt4a、Δt4b和Δt4c,其没有示出)。因此,在Δt4的开始处,列B必须退出其空闲状态,从而存储器请求420和422可以完成,随后列B返回其空闲状态。
在图4所示的示例中,以列A为目标的第二存储器请求在所示的时间窗口期间没有到达,因此存储器请求418在窗口的结束处保持在队列中,等待另一个以列A为目标的请求,以便被包括在突发中。
在一些实施例中,由于在列之间的预活动和后活动时间的重叠,在时间上会存在不止1个列都同时处于非空闲状态的时刻。
图5描述了在两个存储器列上的存储器请求突发安排方案的第三实施例。这里示出的针对突发调度的主要准则是设置为4的最小突发数量。现在参照图5,以列A为目标的存储器请求500第一个到达。然后,以列B为目标的存储器请求502第二个到达。以列A为目标的存储器请求504第三个到达。接下来,以列B为目标的存储器请求506第四个到达。以列B为目标的存储器请求508第五个到达。
然后,一旦以列B为目标的存储器请求510到达,调度器具有在存储器列B的队列中积累的足够的存储器请求,以发起突发调度(即,现在在存储器列B的队列中存在最小突发数量(四个)的请求)。因此,调度器在突发512中将四个请求(请求502、506、508和510)的突发发送到存储器,其花费Δt1。
在该突发发送期间,以列A为目标的存储器请求514到达。接下来,存储器请求516和518顺序到达并且都以列B为目标。然后,以列A为目标的存储器请求520到达。这时,调度器再次发现突发可以发生。调度器在突发522中将四个请求(请求500、504、514和520)的突发发送到存储器,其花费Δt2。
这时,在存储器列B的队列中仍然存在两个请求(请求516和518),但是没有达到最小突发数量。所以,只要存储器请求516和518没有达到它们各自的老化阈值,它们将保持处于列B的队列中。
图6描述了在两个存储器列上的存储器请求突发安排方案的第四实施例。这里示出的针对突发调度的主要准则是设置为4的最小突发数量、设置为8的最大突发数量,并且实现了扩展的列活动时间。扩展的列活动时间是可以在某些实施例中实现的增加的可能突发调度特征,其中,如果没有任何存储器列队列中的存储器请求已经达到了其老化阈值,没有其它存储器列队列在该队列中具有所需的最小突发数量的请求,并且当前的工作列队列没有达到其最大突发数量,则当前的工作列队列可以让其突发窗口保持打开,并至少经过调度的突发的开始。这可以允许来自工作列的随后到达的请求在突发结束之前被动态地添加到突发的结尾。
现在参照图6,以列A为目标的存储器请求600到达。然后,以列B为目标的存储器请求602到达。接下来,以列A为目标的存储器请求604到达。然后,都以列B为目标的存储器请求606和608顺序到达。然后,一旦存储器请求610到达,调度器在突发612中调度四个请求(请求602、606、608和610)的突发以发送到存储器。原始的四个请求的突发花费Δt1a,但是因为实现了扩展的列活动时间,所以调度器使得将一个或多个额外的存储器请求动态地添加到突发中的可能性保持开启。在一些实施例中,该额外的时间长度是Δt1b长,并且一旦原始的突发在Δt1a的结束处完成,该时间的增量就开始。
要到达的下一个存储器请求是请求614,其以列A为目标。这时,列A的队列仍然没有足够的最小突发数量来开始突发。然后,以列B为目标的存储器请求616到达。调度器确定请求616确实在Δt1b扩展列活动时间窗口中到达并且突发612没有达到请求的最大突发数量,因此请求616立即被添加到当前突发612,并且请求616作为突发的一部分立即被发送到存储器。请求616被认为是当前突发612的一部分,虽然在原始四个请求的突发的结束的时间(在Δt1a的结束)和当请求616被发送到存储器的时间之间存在间隙。这时,相同的扩展列活动时间窗口长度再次开始,并且将扩展到Δt1c的结束。
然后,也以列B为目标的存储器请求618到达。请求618也被调度到同一突发612中,因为其在Δt1c扩展列活动时间窗口中到达并且突发612仍然没有达到请求的最大突发数量。扩展的列活动时间窗口长度再次开始并且扩展到Δt1d的结束。
存储器请求620到达并且这时列A的队列具有所需的最小突发数量的请求以调度列A的队列的突发。因此,调度器将工作列队列切换到列A的队列并且使用请求600、604、614和620来发送4个请求的突发622。因此,即使存储器请求624随后到达并且其仍然处于Δt1d扩展列活动时间窗口内,也不会产生影响,因为优先考虑的因素(列A的队列达到请求的最小突发数量)要求调度器切换工作列。所以,请求624必须在列B的队列中等待,直到列B的队列再次达到最小突发数量或者请求624达到其老化阈值。
在不同的实施例中,如果两个或更多个列队列满足要被调度的请求的最小突发数量,并且没有列队列具有已经达到其老化阈值的待处理的请求,则可以用许多实现方式中的任意一种来完成在调度满足了突发要求的多个列队列中的排序。
在一些实施例中,可以实现在存储器列队列之间的轮流(round-robin)方案。在其它实施例中,存储器列队列的优先级顺序可以是基于在满足最小突发数量的请求的列队列中的每一个队列中的最老的请求的年龄。在其它实施例中,方案以基于在每个队列中的请求的数量的顺序来调度列队列的突发(其中,具有最大数量的请求的队列被第一个调度,并且具有最少数量的请求的队列被最后调度)。
在不同的实施例中,突发被锁定以防止接收额外的请求的时刻可能不同。在上述图6中描述的那些实施例的替代实施例中,在突发已经开始以后,针对要被添加到突发的额外的请求,突发可以不保持打开。在一些实施例中,在突发被调度的时刻,突发被锁定以防止额外的请求被添加到突发中。在其它实施例中,在突发被调度之前的时刻,突发被锁定以防止额外的请求被添加到突发中。例如,如果第一列当前是工作列并且第二列获得允许进行突发的足够的请求,则突发可以在这时被锁定,即使第二列在其变为工作列之前不能调度突发。
此外,在一些实施例中,请求的最小突发数量等于请求的最大突发数量。在这些实施例中,总是调度最小突发数量的请求。因此,如果队列具有比最小突发数量的请求明显更多的请求时,调度器可以在第一次传递中调度要被发送到存储器的、最小数量的请求,并且在第二次传递中调度要被发送到存储器的、来自同一队列的另一最小数量的请求,依此类推。因此,同一列队列(即,工作列)可以持续地发出具有最小数量的请求的突发。这可以继续,直到另一列超过工作列的优先级,然后在多次传递中多个突发可以被停止,以适应新的最高优先级列队列。
图7描述了在两个存储器列上的存储器请求突发安排方案的第五实施例。这里示出的针对突发调度的主要准则是被设置为2的最小突发数量以及被设置为Δt1的用于确定请求成为饥饿状态的老化阈值(其在下文中将更详细地描述)。如上文初始所描述的,老化阈值是特定数量的存储器周期,其中,如果给定的存储器请求在大于该特定数量的周期内位于列队列内,则确定请求处于饥饿状态,并且该请求得到优先处理,即使其是在列队列中的唯一的请求并且该列队列不满足请求的最小突发数量的要求。
现在参照图7,存储器请求700到达并且其以列A为目标。然后,存储器请求702到达并且其以列B为目标。一旦以列A为目标的存储器请求704到达,调度器就调度两个请求的突发706并且在突发706中将两个请求(请求700和704)发送到存储器。在没有进一步输入活动的情况下经过了很大数量的周期,然后以列A为目标的存储器请求710到达。更多周期经过并且没有以列B为目标的另外的存储器请求到达。在时间段(Δt1)之后,针对列B的老化计数器(并且具体地说是针对存储器请求702)到达其阈值。这时,调度器用单个请求的“突发”708将请求702发送到存储器。这允许请求702被完成并且不会无限期地在列B的队列中处于饥饿状态。因此,老化阈值规则(其要求请求在满足老化阈值之后被发送到存储器)取代了最小突发数量规则。
然后,以列A为目标的存储器请求712到达。这时,调度器可以调度另外的两个请求的突发714并且将请求710和712发送到存储器。
图8描述了在两个存储器列上的存储器请求突发安排方案的第六实施例。这里示出的针对突发调度的主要准则是被设置为2的最小突发数量以及在给定的调度突发中的存储器请求中的每一个请求必须来自于不同存储体的要求。因此,如果以同一列为目标的两个请求到达并且这两个请求都以同一存储器为目标,则调度器不对这两个请求进行突发。而是,只要任意请求的老化阈值没有达到,将需要以同一列为目标但是来自于另一个存储体的第三请求到达,以调度第一和第三请求用于突发。
现在参照图8,以列A的存储体1为目标的存储器请求800到达。然后,以列B的存储体1为目标的存储器请求802到达。然后,以列A的存储体1为目标的存储器请求804到达。因为请求800和804以同一存储体为目标,调度器不调度来自列A的队列的两个请求的突发。
然后,以列B的存储体2为目标的存储器请求806到达,并且调度器使用请求802和806来发送两个请求的突发808。接下来,以列B的存储体3为目标的存储器请求810到达。然后,以列B的存储体4为目标的存储器请求812到达,并且调度器使用请求810和812来将两个请求的突发发送到存储器。然后,以列A的存储体3为目标的存储器请求816到达。这使得调度器使用请求800和816来将两个请求的突发818发送到存储器。请求800被用在突发818中,因为请求800是存储体1的两个请求中的第一个到达的请求,从而请求800首先完成。
接下来,以列B的存储体5为目标的存储器请求820到达。然后,以列B的存储体6为目标的存储器请求822到达,并且调度器使用请求820和822来将另外的两个请求的突发824发送到存储器。然后,以列A的存储体4为目标的存储器请求826到达。从而,调度器使用列A的存储体1的两个请求中的第二个请求804以及请求826来将两个请求的突发828发送到存储器。
在其它实施例中,如果来自同一存储体的两个或更多个请求中的所有请求都页命中到同一存储器页面(这将减少存储器的开销),来自同一存储体的这两个或更多个请求可以在同一列突发中被调度。
可以使用其它准则来确定将哪些请求进行组合以用于列突发。例如,在一些实施例中,每个列存在两个队列,一个用于存储器读取请求,一个用于存储器写入请求。这种分离的队列可以被实现为使得好像每个列的读取队列和写入队列被认为是完全独立的队列(类似于用于两个不同的列的队列)。队列准则的另一个示例是:队列内的具有存储器时序冲突(其取决于在系统中使用了什么类型的存储器实现)的任意请求可以被排除在突发之外。例如,具有存储器行周期时间(tRC)冲突的请求(其可能显著地增加针对该请求的来自存储器的响应)可以被排除在外。可以包括许多其它准则,并且上述特定的准则中的所有准则仅用作示例。因此,MRBS引擎不应当被限制到这些示例准则。
在许多实施例中,即使当满足了立即调度存储器请求的准则时,例如如果存储器请求达到其老化阈值,存储器请求也不立即被调度。而是,在当前正在调度的突发已经完成之后(如果在调度的过程中存在任何突发),调度器将工作列队列改变为包含要被立即调度的存储器请求的列队列。
图9是用于逐列发送存储器请求的突发的处理的实施例的流程图。由可以包括软件、硬件或其组合的处理逻辑来执行该处理。现在参照图9,处理以处理逻辑接收存储器请求作为开始(处理框900)。在不同实施例中,请求可以来自于处理器或I/O设备。
接下来,处理逻辑对作为存储器请求的目标的地址进行转换,以确定该地址位于哪个存储器列内(处理框902)。然后,处理逻辑将该请求插入到与作为该请求的目标的列相对应的存储器列队列中(处理框904)。一旦该请求处于某个列队列中,处理逻辑确定在任意列队列中是否存在超过其老化阈值的任何请求(处理框906)。
如果存在超过其老化阈值的请求,则处理逻辑发送该请求到存储器(处理框908),并且处理逻辑返回到框906以确定是否有另一个请求超过了其老化阈值。
否则,如果没有请求超过其老化阈值,则处理逻辑检查在框904处新请求被增加到的特定列队列,以确定该列队列是否满足用于发起从该列到存储器的突发的所有准则(处理框910)。这些准则已经在上文中详细描述了(例如,在队列中的请求的最小突发数量)。
如果没有针对突发的准则被满足,则处理逻辑返回处理流程的开始并接收下一个存储器请求(处理框900)。否则,如果一个或多个准则被满足,则处理逻辑确定构成突发的请求的集合(处理框912)。在一些实施例中,该集合包括正在讨论的列队列中的全部数量的请求。在其它实施例中,由于同一存储体问题、最大突发数量超出、其它可能的问题,该集合可能不包括在列队列中的全部数量的请求。
一旦突发被确定,处理逻辑将突发发送到存储器(处理框914)并且处理结束,其将处理流程返回到开始并且允许处理逻辑接收下一个存储器请求。
在许多实施例中,可以由处理逻辑并行执行图9中的许多处理框。例如,当请求不断到达时,处理框900、902和904可以被连续地执行。因此,可以针对一个请求,在与处理逻辑针对另一请求执行判定框(906和/或910)相同的时间来处理这些框。
因此,公开了使用存储器列突发方案来调度存储器请求的方法、设备和系统的实施例。参照其具体示例性实施例描述了这些实施例。对于受益于本公开的人们而言显而易见,可以在不脱离本文描述的实施例的较宽的精神和范围的情况下对这些实施例进行各种修改和改变。因此,说明书和附图应被认为是说明性的而非限制意义上的。
Claims (25)
1.一种方法,包括:
将多个存储器请求分组到多个存储器列队列中,其中,每个列队列包含所述多个存储器请求中的、以存储器中的对应的存储器列内的地址为目标的存储器请求;
当在所述多个存储器列队列的一个队列中已经达到至少最小突发数量时,调度所述多个存储器列队列的所述一个队列内的至少最小突发数量的存储器请求,以将其发送到所述存储器;以及
当至少一个存储器请求超过老化阈值时,调度该至少一个存储器请求以将其发送到所述存储器。
2.根据权利要求1所述的方法,其中,在所述多个存储器列队列的所述一个队列内的所调度的存储器请求中的每一个请求来自于不同的存储器存储体。
3.根据权利要求2所述的方法,其中,超过所述老化阈值的所述至少一个存储器请求在调度中优先于具有至少最小突发数量的存储器请求的任意存储器列队列。
4.根据权利要求3所述的方法,还包括:
在调度所述多个存储器列队列的另一个队列中的存储器请求之前,调度所述多个存储器列队列的一个队列中的存储器请求,直到最大突发数量的存储器请求。
5.根据权利要求4所述的方法,还包括:
当所述多个存储器请求都没有超过所述老化阈值时,以轮流方式来调度具有至少所述最小突发数量的存储器请求的多个存储器列队列中的每一个队列。
6.根据权利要求4所述的方法,还包括:
以从具有最大数量的存储器请求的存储器列队列开始到具有最少数量的存储器请求的存储器列队列的顺序,来调度具有至少所述最小突发数量的存储器请求的多个存储器列队列中的每一个队列。
7.根据权利要求1所述的方法,还包括:
在第一调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器读取请求,以将其发送到所述存储器;以及
在第二调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器写入请求,以将其发送到所述存储器。
8.根据权利要求2所述的方法,还包括:
将具有存储器时序冲突的任意存储器请求从要被调度的所述最小突发数量的存储器请求中排除。
9.根据权利要求1所述的方法,还包括:
通过如下方式来管理在所述存储器中的所述多个存储器列的多个功率状态:
将所述多个存储器列中的当前正被调度的存储器列上电到活动功率状态;以及
将所述多个存储器列中的当前没有被调度的每一个存储器列断电到空闲功率状态。
10.一种设备,包括:
多个存储器列队列,其中,所述多个存储器列队列中的每一个用于:
存储以存储器中的对应的存储器列内的地址为目标的所有待处理的存储器请求;
跟踪作为在所述存储器列队列中存储的所有存储器请求的目标的存储器列中的多个存储体;以及
使用老化计数器来跟踪在所述存储器列队列中存储的每一个存储
器请求的年龄;以及
存储器请求调度器,其用于:
当在所述多个存储器列队列的一个队列中已经达到至少最小突发数量时,调度所述多个存储器列队列的所述一个队列内的至少最小突发数量的存储器请求,以将其发送到所述存储器;以及
当至少一个存储器请求的年龄超过老化阈值时,调度该至少一个存储器请求以将其发送到所述存储器。
11.根据权利要求10所述的设备,其中,在所述多个存储器列队列的所述一个队列内的所调度的存储器请求中的每一个请求来自于不同的存储器存储体。
12.根据权利要求11所述的设备,其中,所述存储器请求调度器还用于:
在调度具有至少最小突发数量的存储器请求的任意存储器列队列之前,优先调度超过所述老化阈值的所述至少一个存储器请求。
13.根据权利要求12所述的设备,其中,所述存储器请求调度器还用于:
在调度所述多个存储器列队列的另一个队列中的存储器请求之前,调度所述多个存储器列队列的一个队列中的存储器请求,直到最大突发数量的存储器请求。
14.根据权利要求13所述的设备,其中,所述存储器请求调度器还用于:
当所述多个存储器请求都没有超过所述老化阈值时,以具有最老年龄的请求优先的方式来调度具有至少所述最小突发数量的存储器请求的多个存储器列队列中的每一个队列。
15.根据权利要求13所述的设备,其中,所述存储器请求调度器还用于:
以从具有最大数量的存储器请求的存储器列队列开始到具有最少数量的存储器请求的存储器列队列的顺序,来调度具有至少所述最小突发数量的存储器请求的多个存储器列队列中的每一个队列。
16.根据权利要求10所述的设备,其中,所述存储器请求调度器还用于:
在第一调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器读取请求,以将其发送到所述存储器;以及
在第二调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器写入请求,以将其发送到所述存储器。
17.根据权利要求11所述的设备,其中,所述存储器请求调度器还用于:
将具有存储器时序冲突的任意存储器请求从要被调度的所述最小突发数量的存储器请求中排除。
18.一种系统,包括:
具有多列、多存储体的存储器;以及
通信地耦合到所述存储器的存储器控制器,所述存储器控制器包括存储器列突发调度引擎,所述存储器列突发调度引擎包括:
多个存储器列队列,其中,所述多个存储器列队列中的每一个用于:
存储以对应的存储器列内的地址为目标的所有待处理的存储器请求;
跟踪作为在所述存储器列队列中存储的所有存储器请求的目标的存储器列中的多个存储体;以及
使用老化计数器来跟踪在所述存储器列队列中存储的每一个存储器请求的年龄;以及
存储器请求调度器,其用于:
当在所述多个存储器列队列的一个队列中已经达到至少最小突发数量时,调度所述多个存储器列队列的所述一个队列内的至少最小突发数量的存储器请求,以将其发送到所述存储器;以及
当至少一个存储器请求的年龄超过老化阈值时,调度该至少一个存储器请求以将其发送到所述存储器。
19.根据权利要求18所述的系统,其中,在所述多个存储器列队列的所述一个队列内的所调度的存储器请求中的每一个请求来自于不同的存储器存储体。
20.根据权利要求19所述的系统,其中,所述存储器请求调度器还用于:
在调度具有至少最小突发数量的存储器请求的任意存储器列队列之前,优先调度超过所述老化阈值的所述至少一个存储器请求。
21.根据权利要求20所述的系统,其中,所述存储器请求调度器还用于:
在调度所述多个存储器列队列的另一个队列中的存储器请求之前,调度所述多个存储器列队列的一个队列中的存储器请求,直到最大突发数量的存储器请求。
22.根据权利要求20所述的系统,其中,所述存储器请求调度器还用于:
以从具有最大数量的存储器请求的存储器列队列开始到具有最少数量的存储器请求的存储器列队列的顺序,来调度具有至少所述最小突发数量的存储器请求的多个存储器列队列中的每一个队列。
23.根据权利要求18所述的系统,其中,所述存储器请求调度器还用于:
在第一调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器读取请求,以将其发送到所述存储器;以及
在第二调度传递中,调度所述多个存储器列队列的所述一个队列内的最小突发数量的存储器写入请求,以将其发送到所述存储器。
24.根据权利要求18所述的系统,其中,所述存储器请求调度器还用于:
将具有行周期时间(tRC)冲突的任意存储器请求从要被调度的所述最小突发数量的存储器请求中排除。
25.根据权利要求18所述的系统,还包括:
存储器列功率管理器,其用于:
将所述多个存储器列中的当前正被调度的存储器列上电到活动功率状态;以及
将所述多个存储器列中的当前没有被调度的每一个存储器列断电到空闲功率状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/057,132 | 2008-03-27 | ||
US12/057,132 US8046559B2 (en) | 2008-03-27 | 2008-03-27 | Memory rank burst scheduling |
PCT/US2009/038522 WO2009120937A2 (en) | 2008-03-27 | 2009-03-27 | Memory rank burst scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101960431A true CN101960431A (zh) | 2011-01-26 |
CN101960431B CN101960431B (zh) | 2013-04-24 |
Family
ID=41114747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980106647XA Expired - Fee Related CN101960431B (zh) | 2008-03-27 | 2009-03-27 | 存储器列突发调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8046559B2 (zh) |
KR (1) | KR101182018B1 (zh) |
CN (1) | CN101960431B (zh) |
WO (1) | WO2009120937A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866238A (zh) * | 2015-05-25 | 2015-08-26 | 华为技术有限公司 | 访问请求调度方法及装置 |
CN105335296A (zh) * | 2014-07-30 | 2016-02-17 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN107451074A (zh) * | 2016-06-01 | 2017-12-08 | 忆锐公司 | 存储器控制器和存储模块及包括其的处理器 |
CN108632162A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种队列调度方法及转发设备 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101053537B1 (ko) * | 2009-10-30 | 2011-08-03 | 주식회사 하이닉스반도체 | 데이터 입출력 회로 및 이를 포함하는 반도체 메모리 장치 |
KR20110052133A (ko) * | 2009-11-12 | 2011-05-18 | 주식회사 하이닉스반도체 | 반도체 장치 |
KR101053540B1 (ko) * | 2010-02-26 | 2011-08-03 | 주식회사 하이닉스반도체 | 반도체 메모리의 외부 신호 입력 회로 |
KR101136984B1 (ko) * | 2010-03-29 | 2012-04-19 | 에스케이하이닉스 주식회사 | 전압 공급 제어회로 및 이를 이용한 반도체 장치 |
US8688880B2 (en) * | 2010-06-23 | 2014-04-01 | International Business Machines Corporation | Centralized serialization of requests in a multiprocessor system |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8775754B2 (en) * | 2011-06-24 | 2014-07-08 | Arm Limited | Memory controller and method of selecting a transaction using a plurality of ordered lists |
US8738875B2 (en) | 2011-11-14 | 2014-05-27 | International Business Machines Corporation | Increasing memory capacity in power-constrained systems |
KR101292309B1 (ko) * | 2011-12-27 | 2013-07-31 | 숭실대학교산학협력단 | 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 |
US8775762B2 (en) * | 2012-05-07 | 2014-07-08 | Advanced Micro Devices, Inc. | Method and apparatus for batching memory requests |
US9569393B2 (en) * | 2012-08-10 | 2017-02-14 | Rambus Inc. | Memory module threading with staggered data transfers |
US9098389B2 (en) * | 2012-11-19 | 2015-08-04 | SK Hynix Inc. | Memory system and operating method thereof |
US9489321B2 (en) * | 2013-06-13 | 2016-11-08 | Advanced Micro Devices, Inc. | Scheduling memory accesses using an efficient row burst value |
US20150094875A1 (en) * | 2013-09-30 | 2015-04-02 | Yacov Duzly | Temperature-Controlled Storage Module that Cools Memory Prior to a Data Burst |
US20150089961A1 (en) * | 2013-09-30 | 2015-04-02 | Yacov Duzly | Temperature-Controlled Storage Module |
US9281046B2 (en) * | 2013-10-08 | 2016-03-08 | Advanced Micro Devices, Inc. | Data processor with memory controller for high reliability operation and method |
WO2015067295A1 (en) * | 2013-11-05 | 2015-05-14 | Huawei Technologies Co., Ltd. | Method and arrangement for controlling requests to a shared electronic resource |
US9208843B2 (en) | 2014-02-07 | 2015-12-08 | SK Hynix Inc. | Internal address generation circuits |
US10628353B2 (en) * | 2014-03-08 | 2020-04-21 | Diamanti, Inc. | Enabling use of non-volatile media-express (NVMe) over a network |
WO2016196766A2 (en) * | 2015-06-03 | 2016-12-08 | Diamanti, Inc. | Enabling use of non-volatile media - express (nvme) over a network |
US11921658B2 (en) | 2014-03-08 | 2024-03-05 | Diamanti, Inc. | Enabling use of non-volatile media-express (NVMe) over a network |
US10635316B2 (en) | 2014-03-08 | 2020-04-28 | Diamanti, Inc. | Methods and systems for data storage using solid state drives |
KR20160138448A (ko) | 2014-03-08 | 2016-12-05 | 다이아만티 인코포레이티드 | 통합 네트워크 및 스토리지를 위한 방법 및 시스템 |
US10235203B1 (en) * | 2014-03-31 | 2019-03-19 | EMC IP Holding Company LLC | Techniques for increasing storage system performance in processor-bound workloads with large working sets and poor spatial locality |
US10521368B2 (en) * | 2015-12-24 | 2019-12-31 | Arm Limited | Arbitration of requests requiring a variable number of resources |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
KR102417692B1 (ko) | 2017-11-29 | 2022-07-07 | 에스케이하이닉스 주식회사 | 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법 |
KR102394727B1 (ko) | 2017-12-12 | 2022-05-09 | 에스케이하이닉스 주식회사 | 반도체시스템 |
US10846253B2 (en) * | 2017-12-21 | 2020-11-24 | Advanced Micro Devices, Inc. | Dynamic page state aware scheduling of read/write burst transactions |
CN108829348B (zh) * | 2018-05-29 | 2022-03-04 | 上海兆芯集成电路有限公司 | 存储器装置及命令重排序方法 |
CN108922278B (zh) * | 2018-08-20 | 2021-07-23 | 广东小天才科技有限公司 | 一种人机交互方法及学习设备 |
US11360544B2 (en) * | 2018-10-03 | 2022-06-14 | Google Llc | Power management systems and methods for a wearable computing device |
KR20210103836A (ko) | 2020-02-14 | 2021-08-24 | 에스케이하이닉스 주식회사 | 데이터 처리 장치 및 그 동작 방법 |
US11321250B2 (en) * | 2020-07-28 | 2022-05-03 | Dell Products L.P. | Input/output device selection system |
US11687281B2 (en) | 2021-03-31 | 2023-06-27 | Advanced Micro Devices, Inc. | DRAM command streak efficiency management |
US20240036736A1 (en) * | 2022-07-29 | 2024-02-01 | Texas Instruments Incorporated | Memory controller with command reordering |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5999289U (ja) | 1982-12-23 | 1984-07-05 | アルプス電気株式会社 | 記録再生装置 |
US6112265A (en) | 1997-04-07 | 2000-08-29 | Intel Corportion | System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command |
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 |
US6880028B2 (en) | 2002-03-18 | 2005-04-12 | Sun Microsystems, Inc | Dynamic request priority arbitration |
US7299324B2 (en) | 2003-11-05 | 2007-11-20 | Denali Software, Inc. | Reactive placement controller for interfacing with banked memory storage |
US7324541B2 (en) * | 2003-12-22 | 2008-01-29 | Intel Corporation | Switching device utilizing internal priority assignments |
CN1965548B (zh) * | 2004-04-12 | 2012-08-22 | 联合设备技术公司 | 转送突发数据的方法和装置 |
JP4470183B2 (ja) * | 2006-08-28 | 2010-06-02 | エルピーダメモリ株式会社 | 半導体記憶装置 |
US7669044B2 (en) * | 2006-09-29 | 2010-02-23 | Microsoft Corporation | Accelerated system boot |
US7870351B2 (en) * | 2007-11-15 | 2011-01-11 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
-
2008
- 2008-03-27 US US12/057,132 patent/US8046559B2/en not_active Expired - Fee Related
-
2009
- 2009-03-27 KR KR1020107021358A patent/KR101182018B1/ko active IP Right Grant
- 2009-03-27 CN CN200980106647XA patent/CN101960431B/zh not_active Expired - Fee Related
- 2009-03-27 WO PCT/US2009/038522 patent/WO2009120937A2/en active Application Filing
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335296A (zh) * | 2014-07-30 | 2016-02-17 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN105335296B (zh) * | 2014-07-30 | 2018-08-14 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN104866238A (zh) * | 2015-05-25 | 2015-08-26 | 华为技术有限公司 | 访问请求调度方法及装置 |
CN104866238B (zh) * | 2015-05-25 | 2018-12-14 | 华为技术有限公司 | 访问请求调度方法及装置 |
US10209924B2 (en) | 2015-05-25 | 2019-02-19 | Huawei Technologies Co., Ltd. | Access request scheduling method and apparatus |
CN107451074A (zh) * | 2016-06-01 | 2017-12-08 | 忆锐公司 | 存储器控制器和存储模块及包括其的处理器 |
CN108632162A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种队列调度方法及转发设备 |
Also Published As
Publication number | Publication date |
---|---|
US20090248994A1 (en) | 2009-10-01 |
WO2009120937A2 (en) | 2009-10-01 |
KR101182018B1 (ko) | 2012-09-11 |
US8046559B2 (en) | 2011-10-25 |
WO2009120937A3 (en) | 2009-12-23 |
KR20100117135A (ko) | 2010-11-02 |
CN101960431B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101960431B (zh) | 存储器列突发调度 | |
US9336164B2 (en) | Scheduling memory banks based on memory access patterns | |
US8661188B2 (en) | Parallel flash memory controller, chip and control method thereof | |
US7200688B2 (en) | System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command | |
US9830189B2 (en) | Multi-threaded queuing system for pattern matching | |
CN104137081A (zh) | 偏移在先的高等待时间操作的存储器重排序队列 | |
US7904677B2 (en) | Memory control device | |
US9032162B1 (en) | Systems and methods for providing memory controllers with memory access request merging capabilities | |
CN101103336A (zh) | 数据处理系统和任务调度的方法 | |
KR20010092746A (ko) | 외부 장치로의 접근을 우선순위화하는 장치 및 방법 | |
US8341344B2 (en) | Techniques for accessing a resource in a processor system | |
US9477412B1 (en) | Systems and methods for automatically aggregating write requests | |
CN101706760B (zh) | 矩阵转置自动控制电路系统及矩阵转置方法 | |
CN102378971A (zh) | 数据读取的方法和存储器控制器 | |
US7054969B1 (en) | Apparatus for use in a computer system | |
US8990473B2 (en) | Managing requests to open and closed banks in a memory system | |
US9761296B2 (en) | Smart in-module refresh for DRAM | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
EP2280349B1 (en) | Processor and data transfer method | |
US20060123187A1 (en) | Memory controller to utilize DRAM write buffers | |
JP2009251652A (ja) | マルチコアシステム | |
EP2998864B1 (en) | Method, device and system for deciding on a distribution path of a task | |
RU2714219C1 (ru) | Способ и система для планирования передачи операций ввода/вывода | |
CN117373508A (zh) | 多端口存储器、多端口存储器的读写方法及装置 | |
Jang et al. | NP-completeness of memory-aware virtual machine scheduling problem |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130424 Termination date: 20210327 |