CN100527107C - 无序的动态随机存取存储器序列器 - Google Patents
无序的动态随机存取存储器序列器 Download PDFInfo
- Publication number
- CN100527107C CN100527107C CNB038167735A CN03816773A CN100527107C CN 100527107 C CN100527107 C CN 100527107C CN B038167735 A CNB038167735 A CN B038167735A CN 03816773 A CN03816773 A CN 03816773A CN 100527107 C CN100527107 C CN 100527107C
- Authority
- CN
- China
- Prior art keywords
- memory
- request
- sequence
- access requests
- order
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to 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/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System (AREA)
- Dram (AREA)
- Multi Processors (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Advance Control (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Processing Of Color Television Signals (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
- Electrotherapy Devices (AREA)
Abstract
在存储控制器的存储器请求队列中顺序地接收存储器存取请求。检测在按所接收的顺序执行存储器存取请求时将发生的在暂时最邻近的请求之间的任何冲突或潜在延迟,以及重新排列该存储器存取请求的接收顺序以避免或最小化冲突或延迟,以及优化到存储器数据总线的数据流或来自存储器数据总线的数据流。按重新排序的顺序执行存储器存取请求,同时跟踪请求的原始接收顺序。在执行后,按原始接收读取请求的顺序将通过执行读取型存储器存取请求从存储器设备中读取的数据传送到各个请求器。
Description
技术领域
本发明涉及用于控制存储器存取操作以便实现增加有效存储器带宽的存储控制器的体系结构和操作方法。
背景技术
在大多数计算机或数据处理系统中,主有源存储器或随机存取存储器(RAM)均是动态随机存取存储器(DRAM)。DRAM的结构通常由组织成多个存储体的多个存储单元组成。每个存储体对应于存储单元阵列,每个存储单元分别与唯一的存储地址有关联。特别地,存储体内的存储地址分别用行地址和列地址表示,其中每个行地址定义为存储页。因此,存储器的每页包含对应于该页内的不同列表示的多个存储单元。
当执行一系列存取请求时,如果在当前具有打开的另一页的相同存储体中找到当前请求的页,将这种状况称为“页冲突”,因此,必须首先关闭,或“预充电”先前打开的页。在预充电后,然后打开,或“激活”所请求的页,然后执行读取或写入操作。如果在不具有打开页的存储体中找到当前请求的页,出现“页丢失”,因此,执行要求激活过程。当当前存储器存取请求是由于先前存储器存取请求而已经打开的页时,则出现所谓“页命中”。
由于相对于页命中请求,对页冲突和页丢失存储器存取必须执行额外的处理,所以执行前者的两个处理所需的时间显著大于后者。在微型处理器技术发展的早期阶段,在先入、先出的基础上,接收和履行用于读取和写入操作的存取DRAM存储器页的请求。这种处理趋向于非常低效,导致大量页丢失和冲突,因此,要求大量的专用处理器和/或存储控制器资源来预充电和激活存储页。
最近,已经开发了存储器存取基于优先级的更先进的处理方法。存取请求的优先级可以基于各种因素,诸如发送请求的设备的类型、所请求的存取类型,通过该请求存取所需的存储器地址等等。然而,严格地根据优先级提供存储器存取的问题在于在不可接受的长时间周期中,会拒绝访问低优先级请求。
此外,随着每个新一代计算机发展,显著地增加存储器时钟的速度。随着存储器时钟的速度增加,页丢失存储器操作、存储体忙冲突和其他冲突的潜在出现及其损失的时间也变得日益显著。特别地,在预充电、激活、等待存储体可用性等期间,用来将信息传送到每个被访问的存储单元和从每个被访问的存储单元传送信息的数据总线是空闲的。
因此,需要一种解决方案来降低上述缺陷。特别地,如果重新排列所接收的存储器存取请求序列的顺序以避免或减小冲突,将大大地提高存储器处理效率。通过避免或减小冲突,在减小或消除存储器数据总线的空闲时间中,更有效地利用存储器数据总线,因此,有效地增加存储器系统的存储器带宽,以及允许在比先前尽可能的更短时间量中,出现更多存储器存取事务。
发明内容
本发明试图通过重新排列顺序接收的DRAM存取请求的顺序以最小化冲突和延伸,诸如上述,同时按与初始接收请求相同的顺序将所请求的信息返回到请求单元来解决在现有技术中识别的问题。
在本发明中,在存储控制器的输入队列中,接连地接收存储器存取请求。在请求输入队列后,排列序列矩阵,由此,由冲突检测器识别连续请求之间的冲突或潜在延迟。冲突检测器重新排序存储器核心存取请求以便优化到数据总线和来自数据总线的数据流。例如,如果在顺序接收的存储器请求中,由冲突检测器识别出存储体忙状况或其它延迟,存储控制器重新排列将执行未决的存储器请求的顺序以便如果可能的话消除冲突或延迟,或者最小化延迟。
只要最早请求没有寻址冲突,就能够无序执行写入请求。
重新排序的序列保留在执行队列中,其中,标记每个请求以表示在原始序列中的位置,使得在存储控制器中适当地重新排序返回数据以匹配输入的存储器存取请求的顺序。
命令选择器选择将由执行队列执行的一个命令或多个命令。命令选择器包含允许恒定速度DRAM序列器与多个时钟速度接口而没有复杂的时钟相位调整操作的接口定时特性。
读取返回队列跟踪从DRAM获得的返回数据。基于与每个返回数据有关联的标记,使读取返回队列按原始顺序将读取数据返回到各自的请求器。特别地,在执行读取请求时,如果与返回数据有关联的标记对应于存储控制器中具有最长等待时间的读取请求,将返回数据返回到请求数据的系统单元。如果标记不与具有最长等待时间的读取请求有关联,则使返回数据存储在缓冲器中直到用于具有最长等待时间的所有读取请求的返回数据返回到它们各自的请求器为止。
另外,基于所接收的请求序列,能为每个请求指定缓冲区单元。当从DRAM获得的返回数据放入对应于输入队列中最早接收的读取请求的缓冲区单元时,将那个数据返回到适当的请求器。否则,所返回的数据保留在缓冲器中,直到执行在输入队列中所接收的所有先前读取的请求为止。用这种方式,按原始接收它们的顺序,读取返回队列返回来自缓冲区单元的数据。
附图说明
从下述结合附图所述的本发明的优先实施例的详细描述,本发明的另外的特征、方面和优点将变得显而易见,其中:
图1是根据本发明的存储空制器的框图。
图2是示例说明用于接原始接收的请求顺序,将通过重新排序的读取请求执行获得的请求数据返回到它们各自的请求器的过程的流程图。
图3是在检测到当前定时矩阵中的冲突或延伸时,由存储控制器中的顺序加载逻辑单元的冲突重新排序过程的第一实施例。
图4是在检测到当前定时矩阵中的冲突或延伸时,由存储控制器中的顺序加载逻辑单元的冲突重新排序过程的第二实施例。
图5是在检测到当前定时矩阵中的冲突或延伸时,由存储控制器中的顺序加载逻辑单元的冲突重新排序过程的第三实施例。
图6是用于示例说明本发明的操作的时序图。
图7是可以利用本发明的存储控制器的处理系统的框图。
具体实施方式
为便于描述,结合动态随机存取存储器(DRAM)设备,论述本发明的优选实施例。不过,应注意到本发明不限于包含DRAM的应用。相反,应该强调,可以结合其他类型的随机存取存储器,诸如静态RAM(SRAM)和许多不同次种类的DRAM,包括例如快页模式DRAM(FPM DRAM)、扩展数据输出DRAM(EDO DRAM)、突发EDO DRAM、同步DRAM(SDRAM)、双倍数据速率DRAM(DDR DRAM)、Rambus DRAM(RDRAM)等等,使用本发明的存储控制器和方法。
图1表示根据本发明的存储控制器10,以及包括输入队列12、命令解析器14、序列单元16、序列矩阵18、冲突检测器20、命令序列器22、执行队列24、命令选择器26、输入/输出缓冲器28、读取返回队列30和返回数据缓冲器32。
存储器存取请求进入存储控制器10以及根据先入先出被接收在输入队列12中。然后,通过命令解析器14顺序地处理所接收的请求以便从每个请求信号中获得相关信息,诸如存储器地址(MA)数据、片选(CS)命令(指示将存取的请求存储体)、行地址选择(RAS)命令和列地址选择(CAS)命令,以及用于表示该请求是读取还是写入操作的允许写入(WE)状态。
然后,将所获得的信息提供到序列单元16,其根据在序列矩阵18中接收的时钟信号将所接收的存储器存取请求放入序列矩阵18中。注意在启动该处理后,按在序列单元16中接收它们的顺序,将存取请求加载到该矩阵中。
冲突检测器20监视序列矩阵18中的信息以及校验在按序列矩阵中的当前顺序执行矩阵中的请求序列时可能会发生的任何冲突或延迟。将由冲突检测器20检测到的任何冲突或延迟报告回到序列单元16,然后,重新排列矩阵中的请求顺序以便最小化或消除由于所识别出的冲突或延迟而使存储器数据总线为空闲的时间。可以由冲突检测器20检测到的冲突例如包括但不限于页冲突和存储体忙状况,其中存储体忙于执行另一读取或写入操作。由冲突检测器识别的延迟是在存储器数据总线为空闲的时间期间,要求执行准备步骤的状况,但不一定与执行另一存储器存取请求冲突。
通常,可以在序列矩阵18中重新排序读取和写入型存储器存取请求。然而,如果有必要的话,最好在重新排序的序列不会产生与进入输入队列中的先前接收的请求的任何寻址冲突或者干扰存储在或将存储在与矩阵中的任何其他存储器存取请求有关的相关存储单元中的数据的范围上,仅重新排列写入请求。
当另外的存储器存取请求移入序列矩阵18时,同时也通过序列单元16重新排列以便解决冲突或者减少延迟,将在序列前面的请求移入用作执行重新排列的请求等待的发送缓冲器的执行队列24。根据用在序列单元16中的冲突判决处理,按成批多个存取请求,根据时钟信息在连续基础上,或基于请求的预定累积大小,将请求移入执行队列24中。最好,用于执行队列24的时钟(CLK)是与引导加载序列矩阵18相同的时钟(CLK)。
命令序列器22排列与将从序列矩阵18中传送到执行队列24的每个请求有关联的各种命令,当有必要插入数据控制命令和/或临时将数据控制命令与特定的存储器存取请求的读取或写入命令分开。例如,如果发送到执行队列24的读取或写入请求要求预充电和/或激活操作,在相关读取或写入操作前,将初始化预充电和/或激活操作的数据控制命令放入执行队列中,至少一个其它的读取或写入命令与位于预充电和/或激活命令和相关联的读取或写入命令之间的不同存取请求有关。
通过用这种方式将读取或写入命令与这些数据控制命令分开来实现本发明的优点。具体地,在上述例子中,能执行上述例子中的预充电和/或激活操作,同时能立即执行用于另一存储器存取请求的读取或写入命令。因此,在执行预充电和/或激活操作期间,存储器数据总线不必空闲。
当将每个读取请求传送到执行队列时,将标记临时增加到用于那个请求的数据控制命令,用于识别如在输入队列12中接收的每个请求的最初相对位置。另外,为每个读取请求指定读取缓冲器32中的各个缓冲区单元,这将在下面更详细地描述。
根据输入到命令选择器26中的命令选择时钟(CMD CLK)信号,选择来自执行队列24的前面的一个或多个存储存取请求,以便在适当的DRAM存储体中执行。例如,如果命令选择时钟信号是将请求加载到序列矩阵18中的时钟速度的四倍速度,那么对队列24的每个时钟信号,从执行队列24中移出四个存取请求。在这种情况下,命令选择器26调节请求选择过程,使得以平均间隔执行从队列24中一次选择的四个存取请求。如果从执行队列中选择命令用于以和新请求进入序列矩阵18相同的时钟速度执行,那么从存储控制器10中省略命令选择器26。
I/O缓冲器28是在每个存取请求中指定的读取或写入操作期间使用的过渡缓冲器。如果将执行的当前存取请求是写入操作,将写入所选择的存储单元中的数据临时写入到I/O缓冲器28中。类似地,在读取操作中,从所选择的存储单元中读取的数据临时存储在I/O缓冲器28中。
在执行所请求的存储器存取时,将每个读取请求放入到读取返回列队30中。读取返回列队30在执行读取请求时,管理从DRAM中读取的请求数据,以及按在它们被接收在输入队列中的顺序将所请求的数据返回到各个请求器。根据与返回的请求数据有关联的标签或指定的缓冲区单元,从DRAM中读取的数据被直接传送到请求器或者被放入到返回数据缓冲器32中。
现在参考图2,在执行读取请求后,将所执行的读取请求以及通过暂时保存在I/O缓冲器28中的请求所获得的数据返回到读取请求队列30中(步骤100)。如果读取请求队列30在步骤110确定返回读取请求与最当前标记或指定的缓冲区单元有关联,在步骤120将通过那个请求获得的数据返回到请求器,以及在步骤S130,更新当前标记/缓冲区单元信息。
标记或缓冲区单元在其被指定到存储控制器10中具有最长等待时间的读取请求或者与其有关时则为“当前”。读取返回队列30可以记录最当前标记或缓冲区单元,例如,通过每次将返回数据传送到其请求器时使表示当前标记或缓冲区单元的计数值递增。
如果返回读取请求具有不是当前的标记或指定的缓冲区单元,则将数据放入读取数据缓冲器32中(步骤140),直到相关标记或缓冲区单元变成当前为止。在步骤140中,将返回数据放入缓冲器32中后,或在步骤130更新当前标记或缓冲区单元后,读取返回队列30确定是否能在返回数据缓冲器32中找到对应于当前标记或缓冲区单元的返回数据。如果“是”,处理返回到步骤120,其中将当前返回数据传送到那个数据的请求器,以及在步骤130中再次更新当前标记或缓冲区单元。如果在缓冲器32中未找出对应于当前标记或缓冲区单元的返回数据,该处理返回到步骤100以便接收通过执行该执行队列中的下一个读取请求所获得的返回数据。由于图2中所示的这一过程,按请求被接收在输入队列12中的顺序将读取数据返回到各个请求器。
如果使用标记来表示读取请求的初始接收顺序,在每个请求的数据控制命令中临时插入标记,但不包括在返回到请求器的读取数据中。最好,根据对应于DRAM的时钟速度或其整数倍的时钟速度执行读取返回队列30和返回数据缓冲器32的功能。同样地,能分别通过更新当前标记/缓冲区单元和传送返回数据,协调在读取返回队列30和返回数据缓冲器32中接收的返回读取请求和返回数据。
将参考图3所示的流程图,描述由于所检测的冲突或延迟,可以使用序列单元16重新安排存储器存取请求的冲突重新排序处理的第一实施例。在步骤200,将解析的最后一个存储器存取请求放入到序列矩阵18中。在步骤210,校验存取所需的存储体的状态以便确定如果在序列矩阵18中的当前位置执行新到达的存储器存取请求,是否发生任何冲突或延迟。
如果序列单元16根据新到来的请求检测冲突或延迟,序列单元16在步骤240确定在其当前位置前在存储器存取请求的序列中是否能找到更适当的定时位置。特别地,序列单元16在新存取请求前首先确定在序列中是否存在未解决的冲突或延迟,以及如果是的话,在没有冲突的时间期间能否执行新存取请求。如果没有未决的冲突或延迟,序列单元16校验在矩阵的任何点处是否可以重新安排新存取请求,而在先前安排的请求中不引起任何新的冲突或延迟。如果不是,过程被重新引到步骤230,其中在具有未解决状况的当前定时序列的末端处留下新存取请求。如果在序列中提前发现适当的定时位置,将新到来的请求插入序列中的那个位置处(步骤250)。然后,该过程返回到步骤200以便重复下一个输入存储器存取请求。
另一方面,如果相对于新到来的存取请求没有检测到冲突或延迟,则冲突检测器20在步骤220接着确定在新到来的请求的当前位置前,在定时矩阵中是否存在任何未解决的冲突或延迟。如果找到未解决的冲突或延迟,处理被重引到如上所述的步骤240。如果未找到现有冲突,序列单元16在步骤230使该请求处于序列矩阵18中的其当前位置,然后返回到步骤200以便重复用于下一个输入存储器存取请求的处理。
在该实施例中,随着序列单元16的后来重复,在新存取请求到来的情况中,可以或不可以稍后解决任何未解决的冲突或延迟。如果没有适当的请求到来以降低冲突或延迟,则存储器存取请求将继续按指定的顺序被处理,但由于未解决的冲突或未降低的延迟,在利用存储器数据总线方面有些低效。
在图4所示的流程图中,示例说明由序列单元16执行的冲突重新排序过程的第二实施例。当另一存储器存取请求移出序列矩阵18到执行列队24时,在步骤300,使序列矩阵中下一行中的存取请求移入该序列矩阵中的第一单元。在步骤310,冲突检测器20确定关于在序列矩阵头处的存取请求(即,矩阵请求中的最早的一个)是否存在冲突或延迟。如果未找到冲突,则在步骤320,存取请求传送到执行队列24上,以及该过程返回到步骤300。
另一方面,如果在步骤310中检测到冲突或延迟,冲突检测器20将其注意力转变到序列矩阵中的下一个存取请求,以及在步骤330确定在没有任何冲突的时间位置处是否能执行那个请求。如果通过在那个时间位置调整存取请求,没有产生冲突或延迟,则在步骤320将该请求发送到执行队列24,以及该过程返回到步骤300。如果发现冲突或延迟,则该过程重复步骤330直到找到在那个时间位置适合执行的请求为止。
在该实施例中,如果发现存在和序列矩阵头处的请求的存储器存取有关的冲突或延迟,则任何后续请求、拒绝的请求仍然保持在序列中的它们的当前位置直到找到该请求的适当时隙为止。通过该处理,不将存储器存取发送到具有冲突或延迟状况的执行队列24。同时,基于等待时间为每个请求指定优先级,以及在其中通过那个请求的定时未产生冲突状况的最早可能时隙执行每个请求。
参考图4所示的实施例的变形如图5所示,其中如果发现和序列矩阵头处的存取请求的当前定时位置有关的冲突或延迟,将不欢迎的请求发送到序列的后面,而不是留在序列中的其当前位置。具体地,如果在步骤310发现冲突,执行步骤420,其中将具有冲突或延迟的请求发送到序列的后面。然后,冲突检测器20移动到行中的下一个存取请求以便确定是否发现与那个请求有关的任何冲突或延迟(步骤430)。如果未检测到冲突或延迟,将该请求发送到执行队列24,与图4所示的过程类似。如果检测到冲突或延迟,该过程返回到步骤420。
现在,参考图6,示出了时序图,其示例说明在操作本发明时获得的结果。在该实例中,按所列出的顺序将读取请求RD0、RD1和RD2接收在输入队列中。假定已经检测到关于RD0的页冲突状况,以及RD1和RD2均是其它存储体中的页命中。因为如果允许在RD1和RD2之前完成执行RD0,则导致延迟,所以重新排列请求以便当正执行RD0的预充电操作时,执行用于RD1和RD2的读取存储器存取。用这种方式重新排列命令使得在等待RD0的预充电操作以完成执行时最小化存储器数据总线空闲的时间,从而导致存储器数据总线的更高效利用。
在从DRAM中读取用于RD1和RD2的数据后,执行用于RD0的激活操作,然后执行用于RD0的读取访问命令。按执行读取操作的顺序将读取数据“1111”和“2222”传送到返回数据缓冲器。然而,在从适当的存储单元中获得“0000”数据后,首先将该数据返回到RD0的请求器。然后,按此顺序将数据“1111”和“2222”返回到它们各自的请求器。
图7示例说明可以利用本发明的存储控制器10的示例性处理系统900。处理系统900包括连接到局部总线904的一个或多个处理器901。存储控制器10和主总线桥903均连接局部总线904。处理系统900可以包括多个存储控制器10和/或多个主总线桥903。存储控制器10和主总线桥903可以被集成为单个器件906。
存储控制器10还连接到一个或多个存储器数据总线907。每个存储器总线接受包括至少一个存储器设备902的存储元件908。存储元件908形成为存储卡或存储器模块。用在该系统900中的存储器模块的例子包括单内联存储器模块(SIMMs)和双内联存储器模块(DIMMs)。存储元件908可以包括一个或多个附加器件909。例如,在SIMM或DIMM中,该附加器件909可以是配置存储器,诸如连续存在检测(SPD)存储器。
存储控制器10还可以连接到高速缓冲存储器905。高速缓冲存储器905可以仅是处理系统中的高速缓冲存储器。另外,其它的设备,例如处理器901也可以包括高速缓冲存储器,其可以形成具有高速缓冲存储器905的高速缓存体系。如果处理系统900包括为总线主控器或支持直接存储器存取(DMA)的外设或控制器,存储控制器10可以实现高速缓存相干协议。如果存储控制器10连接到多个存储器总线907,每个存储器总线907可以并行操作,或可以将不同地址范围映射到不同存储器总线907。
主总线桥903连接到至少一个外围总线910。各个设备,诸如外设或另外的总线桥可以连接到外围总线910。这些设备可以包括存储控制器911、其他I/O设备914、次总线桥915、多媒体处理器918和传统设备接口920。主总线桥903还可以连接到一个或多个专用高速端口922。在个人计算机中,例如,专用端口可以是加速图形接口(AGP),用来将高性能视频卡连接到处理系统900。
存储控制器911经存储总线912将一个或多个存储设备913连接到外围总线910。例如,存储控制器911可以是SCSI控制器以及存储设备913可以是SCSI盘。I/O设备914可以是任何类型的外设。例如,I/O设备914可以是局域网接口,诸如Ethernet卡。次总线桥可以用来经另一总线将另外的设备连接到处理系统。例如,次总线桥可以是通用串行端口(USB)控制器,用来将USB设备917连接到处理系统900。多媒体处理器918可以是声卡、视频俘获卡或任何其它类型的媒体接口,也可以连接到一个另外的设备,诸如扬声器919。传统设备接口920用来将传统的设备,例如老式键盘和鼠标连接到处理系统900。
图7中所示的处理系统900仅是示例性的处理系统,通过该系统可以使用本发明。尽管图7示例说明特别适合于通用计算机诸如个人计算机或工作站的处理体系结构,应意识到,能做出众所周知的改进以便将处理系统900配置成更适合于用在各种应用中。例如,使用依赖于连接到存储元件908和/或存储设备902的CPU901的更简单的体系结构,可以实现要求处理的许多电子设备。这些电子设备可以包括,但不限于音频/视频处理器和记录器、游戏控制台、数字电视机、有线或无线电话、导航设备(包括基于全球定位系统(GPS)和/或惯性导航的系统)以及数码相机和/或记录器。改进可以包括例如消除不必要的元件,增加专用设备或电路,和/或集成多个设备。
尽管根据特定的实施例描述了本发明,许多其他的变形和改进以及其他用途对本领域的技术人员来说是显而易见的。因此,可取的是,本发明不是由在此具体公开的内容来限定,而是由附加权利要求书来限定。
Claims (54)
1.一种存储控制器,包括:
输入队列,用于按原始接收的顺序从至少一个请求器中接收多个存储器存取请求;
序列矩阵,在其中排列多个存储器存取请求,其中所述序列矩阵按第一顺序存储多个存储器存取请求;
序列单元,用于排列所述序列矩阵中的多个存储器存取请求的时标序列;
冲突检测器,用于检测在通过所述序列单元在所述序列矩阵中排列的存储器存取请求序列中是否会出现冲突或延迟,所述冲突检测器将检测到的冲突或延迟报告给所述序列单元,使得当检测到冲突或延迟时,所述序列单元重新排列在所述序列矩阵中所存储的请求的第一顺序,所述冲突或延迟产生于所述序列矩阵中的所述存储器存取请求之一与排列在所述序列矩阵中的所述存储器存取请求的序列中的第二存储器存取请求的比较,或与先前已经在序列矩阵中排列的多个未执行的存储器存取请求之一的比较;
执行队列,其中从所述存储器存取请求中提取多个命令,各存储器存取请求包括读取或写入命令和数据控制命令,多个命令以由所述序列矩阵确定的执行顺序排列,该执行顺序还排列成使得在执行来自先前的存储器存取请求的读取或写入命令之前,执行来自存储器存取请求的数据控制命令,并且还排列成使得在执行先前的存储器存取请求的读取或写入命令之后,执行存储器存取请求的读取或写入命令;
读取返回队列,用于在以执行顺序执行来自所述执行队列的存储器存取请求后,记录存储器存取请求的原始接收顺序,以及用于按存储器存取请求的原始接收顺序将请求数据返回到至少一个请求器;以及
返回数据缓冲器,用于保存从存储器中读取的请求数据直到将该数据返回到相关联的存取请求的请求器为止。
2.如权利要求1所述的存储控制器,进一步包括:
命令解析器,用于将存储器存取请求至少解析成读取或写入命令,以及数据控制命令;和
命令序列器,用于排列在所述执行队列中的每个存取请求的数据控制命令以及读取或写入命令。
3.如权利要求2所述的存储控制器,进一步包括命令选择器,用于每次从所述执行队列中至少选择一个用于执行的命令。
4.如权利要求3所述的存储控制器,其特征在于,在固定的时间间隔期间选择的命令数量取决于输送到所述命令选择器的命令选择时钟信号。
5.如权利要求1所述的存储控制器,其特征在于,所述冲突检测器能检测从排列在所述序列矩阵中的存储器存取请求的序列或多个未执行的存储器存取请求中产生的潜在的存储体忙状况。
6.如权利要求1所述的存储控制器,其特征在于,所述冲突检测器能检测从排列在所述序列矩阵中的存储器存取请求的序列或多个未执行的存储器存取请求中产生的潜在的页冲突状况。
7.如权利要求1所述的存储控制器,其特征在于,所述冲突检测器能检测从排列在所述序列矩阵中的存储器存取请求的序列或多个未执行的存储器存取请求中产生的潜在的页丢失状况。
8.一种存储控制器,包括:
序列单元,用于接收来自多个请求器的多个存储器存取请求信号,所述序列单元按对应于从所述请求器中接收请求的顺序的次序接收存储器存取请求信号,其中存储器存取请求信号包括读取请求和/或写入请求;
重新排列单元,用于基于所检测的在序列中的暂时最相邻的未执行的请求之间的存储器存取冲突或延迟,重新排列存储器存取请求信号的顺序,由此将按重新排列的顺序完成存储器存取请求的执行;
执行单元,用于执行来自所述存储器存取请求的多个命令并执行所述多个命令,各存储器存取请求包括读取或写入命令和数据控制命令,所述多个命令以对应于所述重新排列的顺序的执行顺序排列,所述执行顺序还排列成使得在执行来自先前的存储器存取请求的读取或写入命令之前,执行来自存储器存取请求的数据控制命令,并且还使得在执行先前的存储器存取请求的读取或写入命令之后,执行存储器存取请求的读取或写入命令;以及
重新排序单元,用于将执行的读取请求重新排序成原始接收该请求的顺序,由此通过执行的读取请求获得的数据将按重新排序的顺序返回到所述请求器。
9.如权利要求8所述的存储控制器,其特征在于,所述重新排列单元重新排列存储器存取请求的序列,以避免在序列中暂时最邻近未执行的请求之间的所检测的存储体忙状况。
10.如权利要求8所述的存储控制器,其特征在于,所述重新排列单元重新排列存储器存取请求的序列,以使得在序列中暂时最邻近未执行的请求之间的所检测的存储体忙状况期间由等待存储体变为可用于存取所产生的延迟最小化。
11.如权利要求8所述的存储控制器,其特征在于,所述重新排列单元重新排列存储器存取请求的序列,以避免序列中暂时最邻近未执行的请求之间的所检测的页冲突状况。
12.如权利要求8所述的存储控制器,其特征在于,所述重新排列单元重新排列存储器存取请求的序列,以使得在序列中的暂时最邻近未执行的请求之间的所检测的页冲突状况期间由等待准备存取存储体所产生的延迟最小化。
13.如权利要求8所述的存储控制器,其特征在于,所述重新排列单元重新排列存储器存取请求的序列,以使得在序列中的暂时最邻近未执行的请求之间的所检测的页丢失状况期间由等待准备存取存储体所产生的延迟最小化。
14.一种存储控制器,包括:
输入电路,用于按到来顺序存储多个存储器存取请求;
存储器存取请求重新排列电路,用于将所存储的存储器存取请求重新排列成存储器存取请求执行顺序,所述重新排列电路基于检测在所存储的存储器存取请求的顺序中存在的存储器存取冲突或延迟,将所存储的存储器存取请求的顺序重新排列成执行顺序,所述存储器存取冲突或延迟产生于多个存储器存取请求之一与第二未执行的存储的存储器存取请求的比较,各存储器存取请求包括读取或写入命令和数据控制命令,所述存储器存取请求重新排列电路还在执行来自先前的存储器存取请求的读取或写入命令之前,安排执行来自存储器存取请求的数据控制命令,并且还在执行来自先前的存储器存取请求的读取或写入命令之后,安排所述存储器存取请求的读取或写入命令;以及
发送电路,用于按执行顺序输出存储器存取请求。
15.如权利要求14所述的存储控制器,其特征在于,所述重新排列电路基于检测到的从未执行的存储的存储器存取产生的存储体忙冲突,重新排列所存储的存储器存取请求。
16.如权利要求15所述的存储控制器,其特征在于,所述重新排列电路重新排列所存储的存储器存取请求,以避免所检测的存储体忙冲突。
17.如权利要求15所述的存储控制器,其特征在于,所述重新排列电路重新排列所存储的存储器存取请求,以便使得在按所存储的存储器存取请求顺序执行存储器存取请求时,在检测的存储体忙冲突期间由等待存储体变为可用于存取所产生的延迟最小化。
18.如权利要求14所述的存储控制器,其特征在于,所述重新排列电路基于按所存储的存储器存取请求的顺序检测的页冲突状况,重新排列所存储的存储器存取请求,所述页冲突状况从未执行的存储的存储器存取请求产生。
19.如权利要求18所述的存储控制器,其特征在于,所述重新排列电路重新排列所存储的存储器存取请求,以避免所检测的页冲突。
20.如权利要求18所述的存储控制器,其特征在于,所述重新排列电路重新排列所存储的存储器存取请求,以便使得在按所存储的存储器存取请求的顺序检测的页冲突状况期间由等待准备存取存储体所产生的延迟最小化。
21.如权利要求14所述的存储控制器,其特征在于,所述重新排列电路基于按所存储的存储器存取请求的顺序检测的页丢失状况,重新排列所存储的存储器存取请求,所述页丢失状况从未执行的存储的存储器存取请求产生。
22.如权利要求21所述的存储控制器,其特征在于,所述重新排列电路重新排列所存储的存储器存取请求,以便使得在按所存储的存储器存取请求的顺序检测的页丢失状况期间由等待准备存取存储体所产生的延迟最小化。
23.如权利要求14所述的存储控制器,进一步包括:
执行电路,用于按执行顺序执行所存储的存储器存取请求;以及
跟踪电路,用于在执行后,记录所存储的存储器存取请求的到来顺序。
24.如权利要求23所述的存储控制器,其特征在于,所述跟踪电路将标记与对应于在到来顺序中其各自位置的每个存储器存取请求相关联。
25.如权利要求23所述的存储控制器,其特征在于,所述跟踪电路包括缓冲器,用于在执行存储器存取请求时组织从各个存储单元中读取的数据,由此排列在该缓冲器中的数据能按原始到来顺序从所述存储控制器中被传送出来。
26.一种用于控制存储器存取操作的方法,包括:
按所接收的顺序接收多个存储器存取请求;
通过多个存储器存取请求之一与来自多个存储器存取请求的第二未执行的存储器存取请求的比较,检测在序列中暂时最邻近未执行的请求之间的存储器存取冲突或延迟;
基于检测结果,重新排列请求的顺序;
按重新排列的顺序,执行存储器存取请求;
将各存储器存取请求至少解析成读取或写入命令和数据控制命令;
在重新排列所述请求的序列的步骤中,为重新排列的顺序中的各请求单独安排读取或写入命令和数据控制命令,使得在执行来自先前的请求的读取或写入命令之前,执行对于一个请求的数据控制命令,并且还在执行来自先前的请求的读取或写入命令之后,安排请求的读取或写入命令;并且
每次从所述重新排列的顺序中至少选择一个命令,以便以一个存储器时钟速度执行。
27.如权利要求26所述的方法,其特征在于,所述存储器存取请求包括将数据写入指定的存储器地址的写入请求以及从指定的存储器地址读出数据的读取请求。
28.如权利要求27所述的方法,进一步包括按接收序列中的原始顺序,从存储控制器中输出通过执行读取请求从指定的存储器地址中获得的数据。
29.如权利要求27所述的方法,进一步包括:
在执行后,记录存储器存取请求的接收顺序;以及
按重新排列的顺序,将通过执行读取操作获得的请求数据传送到各个请求器,其中按对应于各个读取请求的接收顺序的次序将所请求的数据传送到各个请求器。
30.如权利要求29所述的方法,其特征在于,记录所接收的顺序包括在重新排列请求顺序之后将标记与每个读取请求相关联以便表示原始接收读取请求的顺序。
31.如权利要求29所述的方法,其特征在于,记录所接收的顺序包括在重新排列请求顺序之后指定将要存储执行每个各自的读取请求后获得的数据的缓冲区单元,其中所指定的缓冲区单元表示原始接收读取请求的顺序。
32.如权利要求26所述的方法,其特征在于,执行检测步骤以便检测在按接收顺序的当前位置中执行最新接收的存储器存取请求时是否产生冲突。
33.如权利要求32所述的方法,其特征在于,执行检测步骤以便检测在按接收顺序的当前位置中执行最新接收的存储器存取请求时是否产生存储体忙冲突。
34.如权利要求33所述的方法,其特征在于,执行重新排列步骤以避免存储体忙冲突。
35.如权利要求33所述的方法,其特征在于,执行重新排列步骤以便使得在检测存储体忙冲突期间由等待存储体变为可用于存取所产生的延迟最小化。
36.如权利要求32所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最近接收的存储器存取请求时是否产生页冲突。
37.如权利要求36所述的方法,其特征在于,执行重新排列步骤以避免页冲突。
38.如权利要求36所述的方法,其特征在于,执行重新排列步骤以便使得在检测页冲突期间由等待准备存取的存储体所产生的延迟最小化。
39.如权利要求26所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最近接收的存储器存取请求时是否产生延迟。
40.如权利要求39所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最近接收的存储器存取请求时是否产生页丢失。
41.如权利要求40所述的方法,其特征在于,执行重新排列步骤以便使得在检测页丢失期间由等待准备存取的存储体所产生的延迟最小化。
42.如权利要求26所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最早接收的存储器存取请求时是否产生冲突。
43.如权利要求42所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最早接收的存储器存取请求时是否产生存储体忙冲突。
44.如权利要求43所述的方法,其特征在于,执行重新排列步骤以避免存储体忙冲突。
45.如权利要求43所述的方法,其特征在于,执行重新排列步骤以便使得在检测存储体忙冲突期间由等待存储体变为可用于存取所产生的延迟最小化。
46.如权利要求42所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最早接收的存储器存取请求时是否产生页冲突。
47.如权利要求46所述的方法,其特征在于,执行重新排列步骤以避免页冲突。
48.如权利要求46所述的方法,其特征在于,执行重新排列步骤以便使得在所检测的页冲突期间由等待准备存取的存储体所产生的延迟最小化。
49.如权利要求42所述的方法,其特征在于,如果检测到和所接收的序列中的最早接收的存储器存取请求有关的冲突,则重新排列步骤包括将该最早接收的存储器存取请求移动到通常和序列中的最新接收的存储器存取请求后的位置相对应的序列的末端。
50.如权利要求26所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最早接收的存储器存取请求时是否产生延迟。
51.如权利要求50所述的方法,其特征在于,执行检测步骤以便检测在执行在所接收的序列的当前位置中的最早接收的存储器存取请求时是否产生页丢失。
52.如权利要求51所述的方法,其特征在于,执行重新排列步骤以便使得在检测页丢失期间由等待准备存取的存储体所产生的延迟最小化。
53.一种处理器系统,包括:
处理器;
至少一个存储器设备,用于与所述处理器交换数据;以及
存储控制器,用于管理从所述处理器到所述至少一个存储器设备的存储器存取请求,所述存储控制器包括:
序列单元,用于从多个请求器中接收多个存储器存取请求信号,所述序列单元按对应于从所述请求器中接收请求的顺序的次序接收存储器存取请求信号,其中存储器存取请求信号包括读取请求和/或写入请求;
重新排列单元,用于基于所检测的在序列中的暂时最相邻的请求之间的存储器存取冲突或延迟,重新排列存储器存取请求信号的顺序,由此将按重新排列的顺序完成存储器存取请求的执行;
执行单元,用于按重新排列的顺序执行存储器存取请求;以及
重新排序单元,用于将执行的读取请求重新排序成原始接收该请求的顺序,由此按重新排序的顺序将通过执行读取请求获得的数据返回到所述请求器。
54.一种处理器系统,包括:
处理器;
至少一个存储器设备,用于与所述处理器交换数据;以及
存储控制器,用于管理从所述处理器到所述至少一个存储器设备的存储器存取请求,所述存储控制器包括:
序列单元,用于从多个请求器中接收多个存储器存取请求信号,所述序列单元按对应于从所述请求器中接收请求的顺序的次序接收存储器存取请求信号,其中存储器存取请求信号包括读取请求和/或写入请求;
重新排列单元,用于重新排列存储器存取请求信号的顺序,以便通过最小化存储器数据总线的空闲时间,使得用来将数据传送到存储器结构或传送来自存储器结构的数据的存储器数据总线的使用最大化,由此将按重新排列的顺序完成存储器存取请求的执行;
执行单元,用于按重新排列的顺序执行存储器存取请求;以及
重新排序单元,用于将执行的读取请求重新排序成原始接收请求的顺序,由此按重新排序的顺序将通过执行读取请求获得的数据返回到所述请求器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/143,896 | 2002-05-14 | ||
US10/143,896 US7149857B2 (en) | 2002-05-14 | 2002-05-14 | Out of order DRAM sequencer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1669011A CN1669011A (zh) | 2005-09-14 |
CN100527107C true CN100527107C (zh) | 2009-08-12 |
Family
ID=29418478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038167735A Expired - Lifetime CN100527107C (zh) | 2002-05-14 | 2003-05-14 | 无序的动态随机存取存储器序列器 |
Country Status (9)
Country | Link |
---|---|
US (4) | US7149857B2 (zh) |
EP (1) | EP1540485B1 (zh) |
JP (2) | JP2005525652A (zh) |
KR (2) | KR20050005481A (zh) |
CN (1) | CN100527107C (zh) |
AT (1) | ATE456094T1 (zh) |
AU (1) | AU2003232136A1 (zh) |
DE (1) | DE60331081D1 (zh) |
WO (1) | WO2003098392A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN105549898A (zh) * | 2014-10-27 | 2016-05-04 | 三星电子株式会社 | 操作数据存储装置和主机及移动计算装置的方法 |
Families Citing this family (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694490B2 (en) * | 2002-07-10 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | DIMM and method for producing a DIMM |
US7152942B2 (en) | 2002-12-02 | 2006-12-26 | Silverbrook Research Pty Ltd | Fixative compensation |
US7418706B1 (en) * | 2003-05-08 | 2008-08-26 | Teradota Us, Inc. | Rescheduling table scan transactions |
US7240141B2 (en) * | 2004-04-09 | 2007-07-03 | Broadcom Corporation | Programmable inter-virtual channel and intra-virtual channel instructions issuing rules for an I/O bus of a system-on-a-chip processor |
US20060026371A1 (en) * | 2004-07-30 | 2006-02-02 | Chrysos George Z | Method and apparatus for implementing memory order models with order vectors |
US7451282B2 (en) * | 2005-03-09 | 2008-11-11 | Dolphin Interconnect Solutions North America Inc. | System and method for storing a sequential data stream |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9286198B2 (en) | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US8028186B2 (en) * | 2006-10-23 | 2011-09-27 | Violin Memory, Inc. | Skew management in an interconnection system |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8265169B2 (en) * | 2006-12-29 | 2012-09-11 | Intel Corporation | Video block memory read request translation and tagging |
US8028257B2 (en) * | 2007-03-01 | 2011-09-27 | International Business Machines Corporation | Structure for data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US9632870B2 (en) * | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US8015375B1 (en) | 2007-03-30 | 2011-09-06 | Emc Corporation | Methods, systems, and computer program products for parallel processing and saving tracking information for multiple write requests in a data replication environment including multiple storage devices |
US7996599B2 (en) * | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US7925796B1 (en) | 2007-05-03 | 2011-04-12 | Emc Corporation | Methods, systems, and computer program products for performing an input/output (I/O) operation that includes a virtual drain |
US8145976B1 (en) | 2007-05-14 | 2012-03-27 | Marvell International Ltd. | Error correcting |
US8001338B2 (en) * | 2007-08-21 | 2011-08-16 | Microsoft Corporation | Multi-level DRAM controller to manage access to DRAM |
US7870351B2 (en) * | 2007-11-15 | 2011-01-11 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8156415B1 (en) | 2007-12-26 | 2012-04-10 | Marvell International Ltd. | Method and system for command queuing in disk drives |
US8180975B2 (en) * | 2008-02-26 | 2012-05-15 | Microsoft Corporation | Controlling interference in shared memory systems using parallelism-aware batch scheduling |
CN101520749B (zh) * | 2008-02-29 | 2012-08-29 | 瑞昱半导体股份有限公司 | 管理存储器的方法 |
US8370717B1 (en) | 2008-04-08 | 2013-02-05 | Marvell International Ltd. | Method and apparatus for flexible buffers in an XOR engine |
US20110066821A1 (en) * | 2008-05-21 | 2011-03-17 | Nxp B.V. | data handling system comprising a rearrangement network |
CN101727398B (zh) * | 2008-10-31 | 2012-07-11 | 西安奇维测控科技有限公司 | 经信息序列化实现闪存控制器管理数据存储与还原的方法 |
US8601205B1 (en) * | 2008-12-31 | 2013-12-03 | Synopsys, Inc. | Dynamic random access memory controller |
JP2010182092A (ja) * | 2009-02-05 | 2010-08-19 | Mitsubishi Electric Corp | バス装置 |
KR101581679B1 (ko) * | 2009-03-18 | 2015-12-31 | 삼성전자주식회사 | 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 |
US8199759B2 (en) * | 2009-05-29 | 2012-06-12 | Intel Corporation | Method and apparatus for enabling ID based streams over PCI express |
WO2010144587A2 (en) | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
WO2011019494A1 (en) | 2009-08-11 | 2011-02-17 | Marvell World Trade Ltd. | Controller for reading data from non-volatile memory |
US8644140B2 (en) * | 2009-09-09 | 2014-02-04 | Mellanox Technologies Ltd. | Data switch with shared port buffers |
CN102253917B (zh) * | 2010-05-19 | 2014-03-19 | 联芯科技有限公司 | 一种spi控制器及数据发送方法 |
KR101121902B1 (ko) * | 2010-06-22 | 2012-03-20 | 성균관대학교산학협력단 | 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법 |
US9021192B1 (en) * | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US8699491B2 (en) * | 2011-07-25 | 2014-04-15 | Mellanox Technologies Ltd. | Network element with shared buffers |
JP5704012B2 (ja) * | 2011-08-01 | 2015-04-22 | 富士通セミコンダクター株式会社 | プロセッサ、及びプロセッサの制御方法 |
KR101292309B1 (ko) * | 2011-12-27 | 2013-07-31 | 숭실대학교산학협력단 | 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 |
KR101721273B1 (ko) * | 2012-01-16 | 2017-03-29 | 한국전자통신연구원 | Sdio 인터페이스를 사용한 비순차적 데이터 전송 장치 및 방법 |
US20130185491A1 (en) * | 2012-01-17 | 2013-07-18 | Skymedi Corporation | Memory controller and a method thereof |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9348775B2 (en) * | 2012-03-16 | 2016-05-24 | Analog Devices, Inc. | Out-of-order execution of bus transactions |
US8775762B2 (en) * | 2012-05-07 | 2014-07-08 | Advanced Micro Devices, Inc. | Method and apparatus for batching memory requests |
KR20140028618A (ko) * | 2012-08-29 | 2014-03-10 | 삼성전자주식회사 | 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법 |
US9047092B2 (en) * | 2012-12-21 | 2015-06-02 | Arm Limited | Resource management within a load store unit |
US9582440B2 (en) | 2013-02-10 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based low-latency arbitration with data transfer |
US8989011B2 (en) | 2013-03-14 | 2015-03-24 | Mellanox Technologies Ltd. | Communication over multiple virtual lanes using a shared buffer |
WO2014178846A1 (en) * | 2013-04-30 | 2014-11-06 | Hewlett-Packard Development Company, L.P. | Coalescing memory access requests |
KR102120823B1 (ko) | 2013-08-14 | 2020-06-09 | 삼성전자주식회사 | 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템 |
US9641465B1 (en) | 2013-08-22 | 2017-05-02 | Mellanox Technologies, Ltd | Packet switch with reduced latency |
US9548960B2 (en) | 2013-10-06 | 2017-01-17 | Mellanox Technologies Ltd. | Simplified packet routing |
US20150199134A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | System and method for resolving dram page conflicts based on memory access patterns |
US9325641B2 (en) | 2014-03-13 | 2016-04-26 | Mellanox Technologies Ltd. | Buffering schemes for communication over long haul links |
US9875185B2 (en) | 2014-07-09 | 2018-01-23 | Intel Corporation | Memory sequencing with coherent and non-coherent sub-systems |
US9584429B2 (en) | 2014-07-21 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based flow control for long-haul links |
US9740411B2 (en) * | 2014-09-04 | 2017-08-22 | National Instruments Corporation | Configuring circuitry with memory access constraints for a program |
GB2550829B (en) | 2014-10-14 | 2021-09-22 | Advanced Risc Mach Ltd | Transaction response modification within interconnect circuitry |
CN104375963B (zh) * | 2014-11-28 | 2019-03-15 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
US9740646B2 (en) * | 2014-12-20 | 2017-08-22 | Intel Corporation | Early identification in transactional buffered memory |
WO2016135618A1 (en) * | 2015-02-26 | 2016-09-01 | Strato Scale Ltd. | Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference |
GB2539435B8 (en) * | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level |
JP2017027479A (ja) * | 2015-07-24 | 2017-02-02 | 富士通株式会社 | データ読出し方法及び情報処理システム |
CN111475438B (zh) * | 2015-08-12 | 2021-12-10 | 北京忆恒创源科技股份有限公司 | 提供服务质量的io请求处理方法及其装置 |
JP2017204170A (ja) * | 2016-05-12 | 2017-11-16 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
GB2551351B (en) | 2016-06-14 | 2019-05-08 | Imagination Tech Ltd | Executing memory requests out of order |
US10353819B2 (en) * | 2016-06-24 | 2019-07-16 | Qualcomm Incorporated | Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system |
US11029881B2 (en) | 2016-06-29 | 2021-06-08 | Sony Corporation | Memory controller, memory system, and information processing system |
KR20180069960A (ko) * | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
KR102687676B1 (ko) * | 2017-02-02 | 2024-07-23 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
JP2018205859A (ja) * | 2017-05-31 | 2018-12-27 | キヤノン株式会社 | メモリコントローラとその制御方法 |
CN107770620B (zh) * | 2017-09-21 | 2020-10-30 | 广州视源电子科技股份有限公司 | 请求信息响应方法、系统及可读存储介质 |
US10425456B2 (en) | 2017-11-29 | 2019-09-24 | Bank Of America Corporation | Request processing system using a splitting engine |
US10419265B2 (en) | 2017-11-29 | 2019-09-17 | Bank Of America Corporation | Request processing system using a combining engine |
CN108335719A (zh) * | 2018-02-24 | 2018-07-27 | 上海兆芯集成电路有限公司 | 性能评估装置及性能评估方法 |
US11874782B1 (en) * | 2018-07-20 | 2024-01-16 | Robert Gezelter | Fast mass storage access for digital computers |
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
CN109683963A (zh) * | 2018-12-10 | 2019-04-26 | 深圳忆联信息系统有限公司 | 基于多命令输入的重排序输出方法、装置和计算机设备 |
TWI701554B (zh) * | 2018-12-13 | 2020-08-11 | 英屬維京群島商鯨鏈先進股份有限公司 | 適用於雜湊演算法的電路系統 |
US10951549B2 (en) | 2019-03-07 | 2021-03-16 | Mellanox Technologies Tlv Ltd. | Reusing switch ports for external buffer network |
CN110083387B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 使用轮询机制的处理系统及其访存方法 |
CN110032453B (zh) | 2019-04-19 | 2022-05-03 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
CN110083388B (zh) * | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用于调度的处理系统及其访存方法 |
CN110046053B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用以分配任务的处理系统及其访存方法 |
CN110058931B (zh) | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理系统及其加速方法 |
US11093404B2 (en) * | 2019-10-14 | 2021-08-17 | EMC IP Holding Company LLC | Efficient pre-fetching on a storage system |
GB2588618B (en) * | 2019-10-29 | 2022-04-20 | Advanced Risc Mach Ltd | Methods and apparatus for issuing memory access commands |
US11481152B2 (en) * | 2019-12-30 | 2022-10-25 | Micron Technology, Inc. | Execution of commands addressed to a logical block |
CN113377277B (zh) * | 2020-03-09 | 2024-08-16 | 伊姆西Ip控股有限责任公司 | 管理存储器的方法、设备和计算机程序产品 |
US11727421B1 (en) | 2020-09-21 | 2023-08-15 | Cboe Exchange, Inc | System and method for implementing a system execution delay in response to liquidity removal for resting orders |
US11995719B1 (en) | 2020-09-21 | 2024-05-28 | Cboe Exchange, Inc. | Message randomization and delay based on order type in an electronic trading system |
US11558316B2 (en) | 2021-02-15 | 2023-01-17 | Mellanox Technologies, Ltd. | Zero-copy buffering of traffic of long-haul links |
US11995337B2 (en) | 2021-02-18 | 2024-05-28 | Micron Technology, Inc. | Implicit ordered command handling |
CN114036096B (zh) * | 2021-11-04 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种基于总线接口的读控制器 |
US11973696B2 (en) | 2022-01-31 | 2024-04-30 | Mellanox Technologies, Ltd. | Allocation of shared reserve memory to queues in a network device |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3735354A (en) | 1972-04-07 | 1973-05-22 | Sperry Rand Corp | Multiplexed memory request interface |
JP3157507B2 (ja) * | 1990-03-14 | 2001-04-16 | 日本電気株式会社 | データ処理装置 |
US5537572A (en) | 1992-03-31 | 1996-07-16 | Vlsi Technology, Inc. | Cache controller and method for dumping contents of a cache directory and cache data random access memory (RAM) |
US5461718A (en) | 1992-04-24 | 1995-10-24 | Digital Equipment Corporation | System for sequential read of memory stream buffer detecting page mode cycles availability fetching data into a selected FIFO, and sending data without aceessing memory |
JP3010947B2 (ja) * | 1992-11-26 | 2000-02-21 | 日本電気株式会社 | メモリアクセス制御装置 |
US5664153A (en) | 1993-04-21 | 1997-09-02 | Intel Corporation | Page open/close scheme based on high order address bit and likelihood of page access |
US5388247A (en) | 1993-05-14 | 1995-02-07 | Digital Equipment Corporation | History buffer control to reduce unnecessary allocations in a memory stream buffer |
US5630099A (en) | 1993-12-10 | 1997-05-13 | Advanced Micro Devices | Non-volatile memory array controller capable of controlling memory banks having variable bit widths |
US5638374A (en) * | 1995-03-15 | 1997-06-10 | Hughes Electronics | Enhanced transaction reservation |
US5701434A (en) | 1995-03-16 | 1997-12-23 | Hitachi, Ltd. | Interleave memory controller with a common access queue |
US5630096A (en) * | 1995-05-10 | 1997-05-13 | Microunity Systems Engineering, Inc. | Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order |
US6204864B1 (en) | 1995-06-07 | 2001-03-20 | Seiko Epson Corporation | Apparatus and method having improved memory controller request handler |
US5692165A (en) | 1995-09-12 | 1997-11-25 | Micron Electronics Inc. | Memory controller with low skew control signal |
US5872822A (en) | 1995-10-26 | 1999-02-16 | Mcdata Corporation | Method and apparatus for memory sequencing |
US6061759A (en) | 1996-02-09 | 2000-05-09 | Apex Semiconductor, Inc. | Hidden precharge pseudo cache DRAM |
US5907863A (en) | 1996-08-16 | 1999-05-25 | Unisys Corporation | Memory control unit using preloaded values to generate optimal timing of memory control sequences between different memory segments |
US6272600B1 (en) * | 1996-11-15 | 2001-08-07 | Hyundai Electronics America | Memory request reordering in a data processing system |
JPH10191236A (ja) | 1996-12-25 | 1998-07-21 | Nec Corp | 画像処理装置及び画像データメモリ配置方法 |
US5848025A (en) | 1997-06-30 | 1998-12-08 | Motorola, Inc. | Method and apparatus for controlling a memory device in a page mode |
US5983325A (en) | 1997-12-09 | 1999-11-09 | Advanced Micro Devices, Inc. | Dataless touch to open a memory page |
US6052134A (en) | 1997-12-22 | 2000-04-18 | Compaq Computer Corp. | Memory controller and method for dynamic page management |
US6052756A (en) | 1998-01-23 | 2000-04-18 | Oki Electric Industry Co., Ltd. | Memory page management |
US6295592B1 (en) | 1998-07-31 | 2001-09-25 | Micron Technology, Inc. | Method of processing memory requests in a pipelined memory controller |
US6434684B1 (en) | 1998-09-03 | 2002-08-13 | Micron Technology, Inc. | Method and apparatus for coupling signals across different clock domains, and memory device and computer system using same |
US6108795A (en) | 1998-10-30 | 2000-08-22 | Micron Technology, Inc. | Method for aligning clock and data signals received from a RAM |
US6212611B1 (en) * | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
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 |
US6510474B1 (en) * | 1998-11-16 | 2003-01-21 | Infineon Technologies Ag | Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests |
US6212598B1 (en) | 1998-11-30 | 2001-04-03 | Micron Technology, Inc. | Controlling a paging policy based on a requestor characteristic |
US6295586B1 (en) | 1998-12-04 | 2001-09-25 | Advanced Micro Devices, Inc. | Queue based memory controller |
US6181638B1 (en) | 1998-12-07 | 2001-01-30 | Micron Technology, Inc. | Method for receiving data from a synchronous random access memory |
US6389529B1 (en) | 1999-06-25 | 2002-05-14 | International Business Machines Corporation | Method for alternate preferred time delivery of load data |
JP2001022529A (ja) * | 1999-06-30 | 2001-01-26 | Internatl Business Mach Corp <Ibm> | ディスクドライブ装置及びその制御方法 |
US6330647B1 (en) | 1999-08-31 | 2001-12-11 | Micron Technology, Inc. | Memory bandwidth allocation based on access count priority scheme |
US6275913B1 (en) | 1999-10-15 | 2001-08-14 | Micron Technology, Inc. | Method for preserving memory request ordering across multiple memory controllers |
JP2001154913A (ja) * | 1999-11-30 | 2001-06-08 | Hitachi Ltd | 主記憶制御装置 |
US6735677B1 (en) | 2001-04-30 | 2004-05-11 | Lsi Logic Corporation | Parameterizable queued memory access system |
US7242690B2 (en) | 2002-03-05 | 2007-07-10 | Hewlett-Packard Development Company, L.P. | System for performing input processing on a data packet |
-
2002
- 2002-05-14 US US10/143,896 patent/US7149857B2/en not_active Expired - Lifetime
-
2003
- 2003-05-14 AU AU2003232136A patent/AU2003232136A1/en not_active Abandoned
- 2003-05-14 KR KR10-2004-7018434A patent/KR20050005481A/ko not_active Application Discontinuation
- 2003-05-14 KR KR1020067017435A patent/KR100724557B1/ko active IP Right Grant
- 2003-05-14 JP JP2004505842A patent/JP2005525652A/ja not_active Withdrawn
- 2003-05-14 WO PCT/US2003/015184 patent/WO2003098392A2/en active Application Filing
- 2003-05-14 EP EP03753034A patent/EP1540485B1/en not_active Expired - Lifetime
- 2003-05-14 DE DE60331081T patent/DE60331081D1/de not_active Expired - Lifetime
- 2003-05-14 CN CNB038167735A patent/CN100527107C/zh not_active Expired - Lifetime
- 2003-05-14 AT AT03753034T patent/ATE456094T1/de not_active IP Right Cessation
-
2006
- 2006-11-28 US US11/604,906 patent/US7620789B2/en not_active Expired - Lifetime
-
2008
- 2008-05-28 JP JP2008140086A patent/JP4742116B2/ja not_active Expired - Fee Related
-
2009
- 2009-10-23 US US12/604,579 patent/US8639902B2/en not_active Expired - Lifetime
-
2014
- 2014-01-27 US US14/165,423 patent/US9904489B2/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN102567246B (zh) * | 2011-12-29 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN105549898A (zh) * | 2014-10-27 | 2016-05-04 | 三星电子株式会社 | 操作数据存储装置和主机及移动计算装置的方法 |
Also Published As
Publication number | Publication date |
---|---|
US8639902B2 (en) | 2014-01-28 |
JP4742116B2 (ja) | 2011-08-10 |
EP1540485A2 (en) | 2005-06-15 |
US20030217239A1 (en) | 2003-11-20 |
US20070101075A1 (en) | 2007-05-03 |
EP1540485B1 (en) | 2010-01-20 |
WO2003098392A3 (en) | 2005-04-21 |
JP2005525652A (ja) | 2005-08-25 |
JP2008204487A (ja) | 2008-09-04 |
KR100724557B1 (ko) | 2007-06-04 |
KR20050005481A (ko) | 2005-01-13 |
US20100100670A1 (en) | 2010-04-22 |
AU2003232136A8 (en) | 2003-12-02 |
US20140223116A1 (en) | 2014-08-07 |
KR20060108357A (ko) | 2006-10-17 |
WO2003098392A2 (en) | 2003-11-27 |
US7149857B2 (en) | 2006-12-12 |
ATE456094T1 (de) | 2010-02-15 |
US7620789B2 (en) | 2009-11-17 |
US9904489B2 (en) | 2018-02-27 |
AU2003232136A1 (en) | 2003-12-02 |
DE60331081D1 (de) | 2010-03-11 |
CN1669011A (zh) | 2005-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100527107C (zh) | 无序的动态随机存取存储器序列器 | |
EP2223217B1 (en) | System, apparatus, and method for modifying the order of memory accesses | |
US7127574B2 (en) | Method and apparatus for out of order memory scheduling | |
CN101609438B (zh) | 存储器系统、其访问控制方法和计算机程序 | |
US7360035B2 (en) | Atomic read/write support in a multi-module memory configuration | |
US20020194448A1 (en) | Memory controller with interacting state machines | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
US6651148B2 (en) | High-speed memory controller for pipelining memory read transactions | |
US20110296124A1 (en) | Partitioning memory for access by multiple requesters | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
JP3444154B2 (ja) | メモリアクセス制御回路 | |
US20040030849A1 (en) | Independent sequencers in a DRAM control structure | |
CN101002272A (zh) | 动态随机存取存储器内的数据寻址 | |
US20030088751A1 (en) | Memory read/write arbitrating apparatus and method | |
US6766403B2 (en) | CPU system with high-speed peripheral LSI circuit | |
EP4246337A1 (en) | Electronic system and method for controlling burst length to access memory device of electronic system | |
JP2001282612A (ja) | メモリコントローラ |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20090812 |
|
CX01 | Expiry of patent term |