CN101861571B - 用于修改存储器存取次序的系统、设备及方法 - Google Patents

用于修改存储器存取次序的系统、设备及方法 Download PDF

Info

Publication number
CN101861571B
CN101861571B CN2008801161111A CN200880116111A CN101861571B CN 101861571 B CN101861571 B CN 101861571B CN 2008801161111 A CN2008801161111 A CN 2008801161111A CN 200880116111 A CN200880116111 A CN 200880116111A CN 101861571 B CN101861571 B CN 101861571B
Authority
CN
China
Prior art keywords
memory
request
requests
word
formation
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.)
Active
Application number
CN2008801161111A
Other languages
English (en)
Other versions
CN101861571A (zh
Inventor
戴维·R·雷斯尼克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN101861571A publication Critical patent/CN101861571A/zh
Application granted granted Critical
Publication of CN101861571B publication Critical patent/CN101861571B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本发明揭示用于控制存储器存取操作的系统及方法。所述系统可包含执行针对存储器装置的请求的一个或一个以上请求器。在存储器控制器内,请求队列从请求器接收请求,库解码器确定目的地库,且将所述请求置于适当库队列中。排序单元确定是否可相对于所接收次序重新排序当前请求,并基于所述重新排序确定产生新存储器循环次序。所述重新排序可基于是否存在针对相同存储器页的多个请求、多个读取或多个写入。存储器接口按所述存储器循环次序执行每一存储器请求。数据缓冲器保持写入数据直到其被写入到所述存储器且保持读取数据直到其被返回到所述请求器。所述数据缓冲器还可保持在读取-修改-写入操作中使用的存储器字。

Description

用于修改存储器存取次序的系统、设备及方法
相关申请案交叉参考
本申请案主张2007年11月15日提出申请的名称为“System,Apparatus,andMethod for Modifying the Order of Memory Accesses(用于修改存储器存取次序的系统、设备及方法)”、序列号为11/940,745的美国专利申请案的申请日期的权益。
技术领域
实施例涉及计算机系统,且更特定来说涉及存储器控制器增加存储器存取效率的操作方法。
背景技术
在大多数计算机及数据处理系统中,主有源存储器(其通常为随机存取存储器(RAM))为动态随机存取存储器(DRAM)。DRAM的结构通常由组织成若干库的若干存储器单元组成。每一库对应于一存储器单元阵列,其中每一单元均相应地与存储器地址处的数据数字(例如,位)相关联。特定来说,一库内的存储器地址各自由行地址及列地址指定,其中每一行地址寻址一存储器页。因此,每一存储器页含有对应于所述页内的不同列指定的数个存储器位置。
当执行一连串存取请求时,页请求可发生于当前正打开另一页的库,通常将此称为“页冲突”,因此必须首先关闭(例如,预充电)先前所打开的页。在关闭所述先前页之后,可接着打开(例如,启动)所请求页,且接着可执行对所述所请求页的读取或写入操作。如果在无打开页的库中发现当前所请求页,那么可发生“页未命中”,因此需要执行启动程序。在当前存储器存取请求是针对已根据先前存储器存取请求而打开的页,则可称“页命中”发生。
由于必须针对页冲突及相对于页命中请求的页未命中存储器存取执行的额外处理,因此执行前两个过程所需的时间明显多于后者所需的时间。在微处理器技术发展的早期阶段,以先进先出方式接收及完成对存取用于读取及写入操作的DRAM存储器页的请求。此处理可能无效,从而导致大量页未命中及冲突,且因此需要处理器及/或存储器控制器资源广泛致力于对存储器页进行预充电及启动。
最近,已研发出基于优先级来进行存储器存取的更先进处理方法。存取请求的优先级可基于各种因素,例如发送所述请求的装置类型、所请求存取的类型、期望由所述请求存取的存储器地址等。然而,严格依照优先级来提供存储器存取的问题是,低优先级请求可在过长的时间周期内被拒绝存取。
此外,系统中微处理器的数目、微处理器中核心的数目以及每核心的处理线程的数目近期已显著增加,且预期在接下来的几年内会继续增加。可构想出具有成百上千个线程的系统。这些系统通常经设计以使得多个处理器芯片存取一共同存储器。这些请求存取一共同存储器的多个资源对所述存储器施加了额外的压力。
核心与线程数目增加的效应中的一者是将需要显著增加的存储器带宽,而主要负面效应是,所述存储器系统所经历的地址请求串流将由于实际独立或看似独立的程序执行顺序的数目增加而更为随机。第一级及第二级高速缓冲存储器的大小增加(此为过去大多数系统实施方案解决总存储器带宽及等待时间问题的方式)可不够有效且由于核心数目增加以及对合理裸片大小的限制而具有较小增长可能性。此外,每一核心中正执行的线程数目的增加将可能使平均高速缓存命中率降低,而此又导致存储器业务量增加。
在当前的DRAM技术中,使存储器库循环(启动所述库、读取或写入所请求数据并对所述库进行预充电)的时间比数据移动时间长得多。此长循环时间意味着,如果两个请求在时间上接近而又针对同一存储器库,那么存储器输入/输出(IO)引脚变为闲置状态达一时间周期以等待第一库循环完成以便可开始第二库循环。由于DRAM通常具有可独立循环的多个库,因而此库时序冲突会浪费可用存储器带宽。
对于此类不同存储器请求源,需要可在多个线程及多个处理器的系统环境中产生经改进存储器性能的设备及方法。
发明内容
本发明实施例可包含用于控制存储器存取操作的系统、存储器控制器及方法。处理系统可包含执行对多个存储器装置的存储器请求的一个或一个以上请求器。所述存储器装置中的每一者包含至少一个存储器库。存储器控制器包含请求队列、库解码器及多个库队列。所述请求队列从请求器接收存储器请求,且所述库解码器基于伴随所述存储器请求的存储器地址确定目的地库。接着将所述请求置于适当库队列中。
排序单元确定是否可相对于所接收次序重新排序当前存储器请求,并基于所述重新请求确定产生新存储器循环次序。所述重新排序可基于任一给定库队列内是否存在针对相同存储器页的多个请求。所述重新排序还可基于是否存在相同类型的多个请求,例如读取请求及写入请求。存储器接口以所述排序单元所定义的存储器循环次序来执行每一存储器请求。所述存储器循环次序可基于相同类型的请求、针对相同页的请求或其组合。所述排序单元控制将读取数据按原始接收次序返回到适当请求器。
数据缓冲器保持从存储器读取循环返回的读取数据直到将所述所请求数据返回到请求器。所述数据缓冲器还可保持可在来自请求器的读取-修改-写入请求中使用的存储器字。
所述排序单元还可检测并控制对所请求存储器字的一部分的读取-修改-写入操作。如果数据缓冲器中不存在所请求存储器字,那么所述重新排序单元引导存储器接口执行所请求存储器字的读取并将其存储于数据缓冲器中。所述重新排序单元还控制将所请求存储器字的所述部分在修改之前返回到至少一个请求器,并用来自RMW请求的数据来修改数据缓冲器中的所请求存储器字的所述部分。
虽然已描述特定实施例,但这些所描述实施例并非限定性。而是,本发明的范围由所附权利要求书及其法律等效内容涵盖。
附图说明
在图解说明本发明实施例的图式中:
图1是处理系统的简化系统框图;
图2是存储器控制器的简化框图;
图3是图解说明用于重新排序存储器请求的过程的简化流程图;
图4是图解说明用于执行经重新排序存储器请求的过程的简化流程图;且
图5是图解说明用于执行读取-修改-写入操作的存储器存取请求的过程的简化流程图。
具体实施方式
本文所揭示实施例包含用于在多个线程及多个处理器的系统环境中产生经改进存储器性能的设备及方法。
在以下详细描述中,将参照形成本文一部分的附图,且附图中以图解说明方式显示其中可实践本发明的具体实施例。充分详细地描述这些实施例以使所属领域的技术人员能够实践本发明,但应了解,也可利用其它实施例并可在本发明的范围内做出结构、逻辑及电改变。
在此描述中,为不在不必要细节上模糊本发明,可以框图形式显示电路及功能。此外,所显示及描述的具体电路实施方案仅为实例,且除非本文中另有规定,否则不应被视为实施本发明的唯一方式。块定义以及对各块之间的逻辑的划分表示具体实施方案。所属领域的技术人员将容易明了,可以众多其它划分解决方案来实践本发明。一般来说,当关于时序考虑因素等细节对获得对本发明的完整理解并非必需且处于所属领域的技术人员的能力范围内时,可省略这些细节。
为易于描述,下文所论述的实施例与动态随机存取存储器(DRAM)装置联合使用。然而,应理解,本发明不限于涉及DRAM的应用。而是,应强调,本发明实施例可与其它类型的随机存取存储器联合使用,例如静态RAM(SRAM)以及DRAM的许多不同子种类,以非限定性实例方式包含:快速页模式DRAM(FPM DRAM)、扩充数据输出DRAM(EDO DRAM)、突发式EDO DRAM、同步DRAM(SDRAM)、双倍数据速率DRAM(DDR2 DRAM及DDR3 DRAM)、内存总线式(Rambus)DRAM(RDRAM)等。
出于清晰呈现及描述的目的,一些图式可将若干信号图解说明为单个信号。所属领域的技术人员应理解,所述信号可表示信号总线,其中所述总线可具有各种位宽度,且可对任一数目个数据信号(包含单个数据信号)实施本发明。
图1是根据本发明实施例包含存储器控制器100的处理系统200的简化系统框图。处理系统200可包含耦合到请求总线240的一个或一个以上处理器210、一个或一个以上图形处理器220及一个或一个以上专用请求器235。以非限定性实例方式,这些专用请求器可包含数字信号处理器、浮点处理器、媒体处理器、网络管理器等等。处理器210、图形处理器220以及专用请求器235在本文中可统称为请求器230。此外,在一些实施例中,请求器230中的每一者可包含单独请求总线240(未显示)。请求总线240可包含例如控制信号、地址信号、数据信号、每一请求器230的唯一识别符以及请求器230内的多个处理器或多个处理线程的唯一识别符等元素。
桥接器单元250耦合到请求总线240(或多个请求总线)。桥接器单元250包含存储器控制器100且还可包含总线桥接器260。尽管未显示,但所属领域的技术人员将认识到,处理系统200可包含多个存储器控制器100及多个总线桥接器260。另外,桥接器单元250可与作为单独装置的存储器控制器100及总线桥接器260配置在一起,或桥接器单元250可将存储器控制器100及总线桥接器260集成到单个装置中。另外,桥接器单元250或存储器控制器100及总线桥接器260的单独组件可与请求器单元230集成到相同封装或集成电路中。
存储器控制器100通过一个或一个以上存储器总线280耦合到存储器子系统300。每一存储器总线280接纳包含至少一个存储器装置292的存储器组件290(本文中也称为存储器卡)。存储器组件290可形成为存储器卡或存储器模块。可用于处理系统200中的存储器模块的非限定性实例包含单联机存储器模块(SIMM)、双联机存储器模块(DIMM)及内存总线式联机存储器模块(RIMM)。包含存储器组件290及存储器装置292的各种配置的存储器子系统300在本文中可简称为存储器。此外,无需将所述存储器组件封装为卡或模块。作为非限定性实例,可将所述存储器组件以三维封装配置安装于处理器210或其它请求器230的顶部上。
总线桥接器260耦合到至少一个外围总线265。各种装置270可耦合到外围总线265。作为非限定性实例,这些装置可包含存储器控制器、辅助总线桥接器、多媒体处理器、遗留装置接口及杂项输入/输出(I/O)装置,例如键盘、鼠标及打印机。总线桥接器260或存储器控制器100也可耦合到一个或一个以上专用高速总线。作为非限定性实例,在个人计算机中,所述专用总线可以是用于将高性能视频卡或其它高带宽外围设备耦合到处理系统200的加速图形端口(AGP)总线或外围组件互连扩充(PCI-X)总线。
所属领域的技术人员将认识到,图1中所图解说明的处理系统200仅为可与存储器控制器100的实施例一起使用的处理系统的一个非限定性实例。尽管图1图解说明尤其适合于通用计算机(例如,个人计算机或工作站)的处理架构,但应认识到,可做出已众所周知的修改以将处理系统200配置为更适合在各种应用中使用。举例来说,可使用较简单架构来实施需要处理的许多电子装置,所述架构依赖于处理器210及耦合到存储器组件290、直接耦合到存储器装置292或其组合的存储器控制器100。
这些电子装置可包含但不限于:音频/视频处理器及记录器、游戏控制台、数字电视机、有线或无线电话、导航装置(包含基于全球定位系统(GPS)及/或惯性导航的系统)及数码相机及/或记录器。所述修改可包含(举例来说)消除不必要的组件、添加专用装置或电路及/或集成多个装置。
图2是根据本发明实施例的存储器控制器100的简化框图。存储器控制器100包含:请求队列110、库解码器120、库队列(130-0、130-1至130-n)、排序单元140、数据缓冲器150、存储器接口160及时序控制器170。可存在与存储器子系统300中每一存储器库相关联的库队列130。然而,库队列130也可经配置以处置多个库。
存储器请求在存储器请求总线240上进入存储器控制器100并以先进先出方式在请求队列110中被接收。如较早所陈述,请求总线240可包含控制信号、地址信号、数据信号、每一请求器230(图1)的唯一识别符及请求器230内多个处理器或多个处理线程的唯一识别符。可将许多或所有这些多个信号存储于库队列130中,因此存储器控制器100可保存并追踪在存储器控制器100中未决的关于每一存储器请求的必要信息。
库解码器120按所接收请求进入请求队列110的顺序来处理所述请求,并基于(举例来说)库及行地址信息将所述所接收请求置于库队列130中的一者中。排序单元140追踪库队列130中的信息,并向存储器接口160及时序控制器170指示应从库队列130提取存储器请求的次序以及哪一库队列130应供应下一存储器存取请求。根据以下论述将明了,排序单元140可包含用于控制库队列内各种存储器请求的顺序(例如,次序)的顺序控制器142。排序单元140还可包含用于控制读取-修改-写入(RMW)循环的RMW单元144。RMW单元144也可与排序单元140分离。在此情况下,库解码器120可将RMW单元视为内部库,同样可将排序单元140视为内部库。
存储器接口160及时序控制器170基于存储器总线280上的存储器类型借助适当的时序及控制在存储器总线280上产生并控制存储器存取请求。作为非限定性实例,在来自排序单元140的引导下,存储器接口160及时序控制器170可产生用于在存储器总线280上对DRAM的总线循环进行预充电、启动、读取、写入及刷新的适当命令及总线循环。
数据缓冲器150可配置为单个缓冲器,其能够保持去往存储器子系统300的写入数据、从存储器子系统300返回的读取数据、读取-修改-写入数据或其组合。库队列130可分离成读取队列及写入队列(未显示)以使得能够相对于读取更容易地追踪写入。此分离可有助于检测可重新排序哪些存储器请求,如下文更全面解释。另外,可将写入数据连同相应存储器写入请求置于库队列中,且可将所述数据从数据缓冲器150移除。
对于写入操作,写入数据伴随存储器请求。在读取或写入命令之后将写入存储器请求从适当库队列130移除(即,解除分配)且已在存储器控制总线172及存储器数据总线175上启动相关联写入数据。
对于读取操作,请求总线240上的存储器请求102不包含数据。因此,无需在将存储器请求置于库队列130中时分配总线缓冲器150中用于读取请求的空间。而是,可在已于存储器控制总线172上启动读取操作且读取数据在存储器数据总线175上返回时分配数据缓冲器150空间。另一选择为,控制逻辑可追踪未完成读取请求的数目并在读取缓冲器面临溢出危险时防止进一步的读取请求。
所述读取存储器请求可根据存储器控制器100如何配置而在库队列130中保持未决状态达各种不同时间。作为一个实例,库队列130可包含将数据返回到其适当请求器230可需要的所有请求信息,例如存储器循环类型、始发请求器230、始发处理线程及类似信息。在此实例中,数据缓冲器150可仅包含读取数据及指示哪一物理曾做出相应请求使得数据可在读取数据总线104上正确返回的标签。排序单元140使用来自库队列130的请求信息及来自数据缓冲器150的相关联数据以在请求总线240上将数据返回到适当请求器230。在返回所述数据之后,可将存储器请求及相关联读取数据分别从适当库队列130及数据缓冲器150移除(即,解除分配)。
作为另一实例,当在存储器总线280上处理读取请求时,可将请求信息传送到数据缓冲器150使得所述请求信息处于数据缓冲器150中。在此情形下,由于欲将读取数据返回到适当请求器230的所有信息均处于数据缓冲器150中,因此当在存储器总线280上处理存储器请求时可将所述请求从库队列移除。排序单元140使用来自数据缓冲器150的请求信息及相关联数据以在请求总线240上将数据返回到适当请求器230。在返回所述数据之后,可将存储器请求及相关联读取数据从数据缓冲器150移除(即,解除分配)。
有效存储器系统设法使其数据引脚在尽可能接近100%时间内保持充满有用数据。为此目的且除非在下文论述中有所陈述,将存储器操作视为“已关闭库”操作。换句话说,在存储器参考结束时对所有存储器参考进行预充电。尽管可存在与必须执行更多行地址选择操作相关联的额外开销,但由于多处理器及多线程系统环境中请求串流的随机性,已关闭库操作仍有用。即使线程正做出经排序请求串流(如存储器控制器100及存储器系统所经历),但存在太多与其它线程交错的其它请求以至于几乎没有机会在其它请求已使所述线程曾参考的打开页无效之前经历来自原始线程的第二请求。
此已关闭库策略不同于通常用于单个处理器系统中的常规存储器控制器。在那些常规存储器控制器中使用打开库策略,这是因为极有可能来自请求器230的时间接近的存取将针对相同库及那些库内的相同页。
然而,在一些情况下,可有利地辨识对相同DRAM页的存取并绕过预充电操作,使得针对所述相同页的背对背操作为打开库且可使其更为有效。为增强辨识针对相同页的存储器请求并使所述库打开以供后续存取的此能力,可有用地相对于请求队列110中的接收次序重新排序存储器请求。
在单个处理器系统中,由于来自存储器的数据恰好是按照所述单个处理器对其期望的次序,因此存储器控制器可经设计以使请求保持其被做出的次序。然而,维持此次序对于存储器系统来说通常并不有效(即,存储器带宽可损失)。然而,假定有多个核心,且甚至同一核心中存在多个线程时,将会出现可由使请求保持按次序而引起的存储器系统性能问题。
一般来说,只要参考相同存储器地址保持按次序,就几乎不存在由不按次序方式返回请求而引起的程序正确性问题。一般来说,将同步及强制排序指令添加到处理器的指令集以视需要启用数据及程序排序,以在尚未存在所述指令的情况下协调核心与线程之间的活动。因此,编译器写入器及类似低级程序最担心排序问题。的确有时将程序同步功能添加到系统的存储器架构中,如下文对存储器系统中原子及字节启用能力的论述中所说明。
即使必须将每一核心或每一线程的请求保持按严格程序请求次序,但如果存储器控制器100可断定请求是来自此线程或核心抑或彼线程或核心(基于请求总线240上的信息),那么其可将每一程序串流的请求保持按次序同时允许无冲突请求(来自不同核心及线程的请求)相对于彼此打乱次序。另外,所述控制器使用此源信息将读取数据路由回到请求源或使用此源信息来指示错误(如果有错误发生)。
在此重新排序策略中,如果库队列130中的“较老”请求是针对繁忙库,那么可先于所述较老请求来选择对空闲库的请求(只要遵循其它存储器时序及使用规则即可)。此重新排序使得原本可能不会使用的总线时间得以有效地使用。
另外,可将来自请求队列110的传入存储器请求与适当库队列中的其它存储器请求进行比较以确定新存储器请求是否与其它未决请求中的一者针对相同页。如果是,那么可将所述新存储器请求置于针对所述相同页的所述未决请求之后。在此情况下,可超驰所述关闭库策略以允许对所述相同页的背对背存取。
当然,在重新排序的情况下,一些请求可被推迟或不止一次地移动。因此,排序单元140可包含时序单元或类似机构以指示所述队列中请求的年龄并修改“老”请求以使其具有较高优先级并及时被执行。
在读取循环与写入循环之间切换数据方向时可花费多个存储器时钟来使数据总线转向。如果所述转向时间为两个时钟,其中每一数据传送花费四个时钟(假设双向DDR传送及对DRAM的含8个数据请求的突发),那么当请求在读取与写入之间交替时可损失33%的峰值存储器带宽。因此,如果将存储器读取与其它存储器读取分组在一起,且将存储器写入与其它存储器写入分组在一起,那么可减少因总线转向时间所致的无效。
一般来说,可重新排序读取及写入两种类型存储器存取请求。然而,存储器控制器100可实施一策略:仅在必要时重新布置写入请求,以达到经重新排序的顺序不与较早接收的请求产生任何寻址冲突,或另外不会因库队列130中的其它存储器存取请求而干扰已存储或将存储于相关存储器位置中的数据的程度。此外,必须使对相同程序地址的参考保持按程序请求次序。如果请求是在不同程序实体之间,那么此请求次序通常由软件强制执行,而如果请求是通过单个请求源(例如核心或线程)完成,那么认为由存储器控制器100来遵循此请求次序。
作为另一读取对写入策略,赋予读取分组优于写入分组的优先级可为有用的。换句话说,可给任何读取指派优先级,直到某一原因(例如,队列已满或地址冲突)迫使切换到写入。从请求器230的角度来说,此读取优先级策略可减少读取等待时间,其代价是包含检验未将读取请求重新排序在针对相同地址的写入请求之前以确保所述读取请求从处于队列之前的未决写入获得数据的逻辑。然而,在一些实施例中,如果针对具有未决写入的地址执行读取,那么存储器控制器100可从适当队列直接返回写入数据,因此并未实际上读取存储器。
处理器或其它请求器230有时有必要写入个别字节并执行读取-修改-写入操作。尽管可能看起来个别小数据量不会被很频繁地写入,但随着核心及线程在共用程序上工作时数目的增加,这些操作也将增加。一种多个线程进行通信的最佳方式是使用作为存储器系统的一部分而存储及管理的“原子”存储器操作,例如旗标及信标。这些旗标及信标通常需要存储器字节级或字级操作良好地工作。
读取-修改-写入(RMW)是从存储器地址读取值、修改曾读取的值且接着将所述经修改值写回到所述存储器地址的原子顺序。多线程编程的常规途径是使用RMW锁定来使对共享资源的存取同步。例如信标等同步基元可由多线程程序用来确保如果同时执行代码的某些区段将破坏代码的所述区段之间可共享的存储器结构,那么不会这样做。如果一个线程试图获取已由另一线程保持的锁定,那么所述线程将阻塞直到所述锁定解除。
无阻塞算法可使用例如比较与交换(CAS)的原子读取-修改-写入操作。所述比较与交换CPU指令(或x86架构中的CMPXCHG指令)是以原子方式将存储器位置的内容与给定值进行比较且在所述二者相同的情况下将所述存储器位置的内容修改为给定新值的特殊指令。CAS可用于有效地实施多处理器系统中的信标。
传统上,已用处理器中的执行逻辑或借助处理器的数据高速缓冲存储器中的逻辑完成对字节写入及信标的支持。然而,在一些系统中,其可用于支持将这些小操作数作为个别数据项写入到最终存储器目的地(即,存储器子系统300)且不作为整个高速缓冲存储器线的一部分。
另外,许多处理器使用32位及64位数据项且可极为频繁地写入那些类型的项。但是,作为非限定性实例,典型DRAM协议及接口可移动32字节突发。如果仅需要写入四个字节,那么可需要个别字节-写入-选择信号。然而,在一些存储器系统中,字节启用可能不可用。在这些系统中,可必要地读入(举例来说)含有4字节数据项的32字节突发。接着,将所述四个数据字节插入到相当于32个字节的数据,且接着将经修改的32字节量重写回到存储器。在此实例中,当四个字节本应在接口中存在字节启用能力的情况下被发送时,已既读取又写入64个数据字节。持续对不需要的数据的此移动,但其浪费存储器性能。一般来说,在本文中将存储器存取的宽度称为“数据宽度”。作为非限定性实例,此数据宽度可以是存储器总线280的物理位宽度或存储器突发循环的宽度。另外,除非本文另有规定,否则RMW操作将一般指代具体RMW操作以及对数据宽度的若干部分的写入。
因此,对于RMW操作来说,控制器100可经配置以管理这些部分写入操作。另外,RMW单元144中的数据缓冲器可经配置以保持这些RMW操作的经保留区域,使得存储器控制器100中存在将读取的数据,此可消除在存储器总线280上执行读取操作的需要。
图3、4及5是图解说明根据本发明实施例的用于管理经重新排序存储器存取请求及RMW操作的过程的简化流程图。当描述图3、4及5时,也将参照图1及2中的各种元件。
图3是图解说明用于重新排序存储器存取请求的过程300的简化流程图。在操作块302处,接收新请求。基于库地址,在操作块304处将所述请求移动到适当库队列。决策块306确定刚接收的请求是否在时间上接近相同库队列中未决的任何先前请求且是否针对与相同库队列中未决的任何先前请求相同的库及页。本文所使用的在时间上接近定义在请求队列110处接收请求的时间间隔。所述请求可以时间戳来标记或附加有队列属性形式的年龄。以此方式,可不重新排序时间上相距太远的存储器请求,或可给“老”存储器请求指派高优先级,使得不将新请求置于“老”存储器请求前面。可将队列中的时间间隔长度或年龄设定为存储器控制器100的配置参数。
如果所述请求与另一未决请求针对相同库及页,那么操作块308为所述库队列重新定义存储器循环次序以将所述新存储器循环直接置于针对相同页的另一未决请求之后。当然,如较早所陈述,不应将新读取循环置于针对相同地址的写入循环之前,且不应将写入循环置于针对相同地址的读取或写入循环之前。另外,库队列中可能存在基于年龄或对读取循环的偏好而具有足够高优先级的未决请求,因此不应将新请求置于高优先级请求之前。
操作块310指示,将新请求直接置于其后的未决请求应被标记为打开页请求。换句话说,对于所标记的请求来说,已超驰关闭库策略。因此,在已在存储器总线280上执行标记为打开页的请求之后,已知后续存储器请求是针对相同页且可背对背地执行所述两个请求而无需预充电及执行其之间的行地址选通。
重新排序过程300可包含读取对写入的重新排序。如果所述重新排序过程不包含重新排序读取对写入,则所述过程经由路径311返回到操作块302以等待新存储器请求。如果所述重新排序过程的确包含重新排序读取对写入,那么所述过程经由路径312继续到决策块313。决策块313确定所述新请求是否在时间上接近于相同类型的未决请求,其中所述类型可以是读取请求或写入请求。如果所述请求并非相同类型,那么所述过程返回到操作块302以等待新存储器请求。
如果所述请求与时间上接近的存储器请求为相同类型,那么操作块314为所述库队列重新定义存储器循环次序以将新存储器循环直接置于相同类型的未决存储器循环之后。以此方式,可使用重新排序过程300将读取与写入循环分组在一起以减少可需要的数据总线转向循环的数目。另外,可赋予读取高于写入的优先级以减少读取等待时间。同样,不应将一个类型的循环置于针对相同地址的不同类型循环之前。另外,库队列中可能存在基于年龄或对读取循环的偏好而具有足够高优先级的未决请求,因此不应将新请求置于高优先级请求之前。在重新定义请求次序之后,所述过程返回到操作块302以等待新存储器请求。还可能针对每一库将读取与写入请求分离成单独队列。
图4是图解说明用于在存储器总线280上执行经重新排序存储器请求的存储器存取过程400的简化流程图。在操作块401处,从适当库队列中检索下一存储器请求。可通过使用基于库队列的循环方案或优先化选择来确定所述适当库队列。另一选择为,库队列选择可使用不从对应于繁忙存储器库的库队列选择请求的策略,如较早所论述。
决策块402测试所述下一存储器请求是读取还是写入。如果所述过程当前处于写入顺序中,那么操作在决策块454处继续,如下文解释。如果所述过程当前处于读取顺序中,那么操作在决策块404处继续,其确定所述请求是否为读取以及所请求库是否不繁忙(例如,被启动或预充电)。如果不是,那么操作块406更新当前读取请求及循环的库编号以着眼于下一库/队列。
决策块408测试以确认当前读取请求的库是否打开。如果所述库未打开,那么操作块410启动所述库。决策块412测试以确定是否设定控制逻辑使得所述库在当前读取请求结束时应保持打开。如果将使所述库保持打开,那么操作块414在存储器总线280(图2)上执行读取循环。如果将关闭所述库,那么操作块416在存储器总线280(图2)上执行读取循环,同时在相同命令中指示在读取操作之后需要预充电。
在读取循环完成的情况下,一些实施例可包含等待决策块418,其一直等到读取缓冲器154中有存储所返回的读取数据的空间。决策块420测试以确认所述过程是否完成执行读取循环。存储器控制器100可经配置以执行某一数目个背对背读取。此可由若干因素来确定。作为非限定性实例,所述因素可包含在队列中等待的读取的数目、相对于等待的写入数目的等待被执行的读取的数目、等待被执行的写入的优先级、等待被执行的读取的优先级及其组合。
如果将继续读取循环,那么操作块406在需要时更新库编号以进行下一读取循环。如果不继续读取循环,那么操作块480将当前模式从执行读取操作切换到执行写入操作,且操作在操作块401处继续。
从决策块402返回到退出,如果所述过程当前处于写入顺序中,那么操作在决策块454处继续,其确定所述请求是否为写入且所请求库是否不繁忙。如果不是,那么操作块456更新当前写入请求及循环的库编号以着眼于下一库/队列。
决策块458测试以确认当前写入请求的库是否打开。如果所述库未打开,那么操作块460启动所述库。决策块462测试以确定是否设定控制逻辑使得所述库在当前写入请求结束时应保持打开。如果所述库将保持打开,那么操作块464在存储器总线280(图2)上执行写入循环。如果所述库将关闭,那么操作块466在存储器总线280(图2)上执行写入循环,同时在相同命令中指示在写入操作之后需要预充电。
决策块470测试以确认所述过程是否完成执行写入循环。存储器控制器100可经配置以执行某一数目个背对背写入。此可由若干因素来确定。作为非限定性实例,所述因素可包含在队列中等待的读取的数目、相对于等待的写入数目的等待被执行的读取的数目、等待被执行的写入的优先级、等待被执行的读取的优先级及其组合。
如果写入循环将继续,那么操作块456在需要时更新库编号以进行下一写入循环。如果写入循环不继续,那么操作块480将当前模式从执行写入操作切换到执行读取操作,且操作在操作块401处继续。
如果存储器循环未被标记为打开页,那么遵循关闭库策略且操作块410对刚刚存取的页进行预充电且所述过程返回到操作块402以从适当库队列中检索下一存储器循环。
图5是图解说明用于执行读取-修改-写入操作及部分数据宽度写入的存储器存取请求的过程500的简化流程图,所述过程可与图3的重新排序过程300在某种程度上平行进行。在操作块502处,从请求队列110(图2)接收新请求。基于库地址,在操作块504处将所述请求移动到适当库队列。决策块506确定刚刚接收的请求是否为如来自请求总线240的具体信号或命令所识别的RMW请求。如果所述请求并非RMW请求,那么控制返回到操作块502以进行下一请求。实际上,RMW过程500与重新排序过程300在某种程度上平行进行,因此针对非RMW请求,图3的重新排序过程300可在决策块306处继续。
如果所述请求是RMW请求,那么决策块508确定所寻址RMW位置的整个数据字是否已位于RMW单元144(图2)中的数据缓冲器中。如果所述整个数据字不在所述数据缓冲器中,那么操作块510在存储器总线280上执行读取操作并将数据字存储于RMW单元144中的数据缓冲器中。
对于常规RMW操作而非部分数据写入操作来说,操作块512在需要时将数据字的RMW部分返回到请求器230。一般来说,所返回的RMW部分是已发生写入之前的读取部分。然而,存储器控制器100可经配置以在已发生写入之后返回所述RMW部分。另外,可将额外信息与所述RMW部分一起返回。作为非限定性实例,可返回比较与交换操作的比较结果。
操作块514将数据字的RMW部分写入到RMW单元144中的RMW数据缓冲器中。如果需要,那么操作块516经由存储器总线280将包含所写入RMW部分的整个数据字写回到存储器。
决策块518测试以确认是否将RMW数据字标记为保留于数据缓冲器150中。如较早所陈述,RMW数据缓冲器可经配置以维持多个RMW数据字。以此方式,可能避免存储器总线280上针对RMW请求的存储器循环。如果将所述数据字标记为保留,那么所述过程返回到操作块502以等待下一请求。如果未将所述数据字标记为保留,那么操作块520将数据字从数据缓冲器150清除以允许有用于额外读取或写入数据的空间。
RMW单元144还可经配置以始终保留RMW值直到需要用于到达存储器控制器的新RMW请求的空间,此可避免与每一新请求一起写入到存储器。如果已完成此保留,那么重新排序逻辑必须在需要时创建对存储器的写入操作。因此,所述保留可允许在每次更新RMW值时推迟写入,其通常针对用于在过程之间(例如,在不同核心、线程及其组合之间)通信及更新的RMW值而发生。

Claims (22)

1.一种存储器控制器,其包括:
库解码器,其用于响应于多个存储器请求中的每一存储器请求的存储器地址而按所接收次序针对所述存储器请求中的每一者确定存储器的目的地库;
多个库队列,每一库队列包括读取队列和写入队列且所述每一库队列用于存储对与所述库队列相关联的存储器库的未决存储器请求并追踪所述所接收次序;
排序单元,其用于响应于在相同库队列中且针对相同存储器页的至少两个存储器请求的存在而确定不同于所述所接收次序的存储器循环次序;及
存储器接口,其用于按所述存储器循环次序执行每一存储器请求。
2.根据权利要求1所述的存储器控制器,其进一步包括读取-修改-写入RMW单元,所述读取-修改-写入RMW单元用于:
检测针对所请求存储器字的一部分的RMW请求;
如果数据缓冲器中不存在所述所请求存储器字,那么从所述存储器读取所述所请求存储器字并将其存储于所述数据缓冲器中;
用来自所述RMW请求的数据修改所述数据缓冲器中的所述所请求存储器字的所述部分。
3.根据权利要求2所述的存储器控制器,其中所述RMW单元进一步经配置以将所述所请求存储器字保留于所述数据缓冲器中以用于将来的RMW请求。
4.根据权利要求1所述的存储器控制器,其中所述排序单元进一步经配置以将相同类型的至少两个额外存储器请求重新排序为依序发生,其中所述相同类型选自由读取请求及写入请求组成的群组。
5.根据权利要求1所述的存储器控制器,其进一步包括数据缓冲器,所述数据缓冲器用于保持来自所述存储器的所请求数据直到所述所请求数据被返回到所述至少一个请求器。
6.根据权利要求5所述的存储器控制器,其进一步包括:
至少一个请求器,其用于执行所述存储器请求;且
所述存储器包括多个存储器装置,所述多个存储器装置中的每一存储器装置包括至少一个存储器库。
7.一种用于控制存储器存取操作的方法,其包括:
按所接收顺序接收指定用于多个存储器库的多个存储器请求;
在多个库队列中存储所述多个存储器请求,每一库队列包括至少读取队列和写入队列;
针对所述多个存储器请求中的每一者确定所述多个存储器库中的目的地库;
通过将所述多个存储器请求中的一个请求与所述多个存储器请求中的至少另一请求进行比较来按所述所接收顺序在时间上接近而非顺序的未执行存储器请求中检测相同类型的至少两个未执行存储器请求,其中所述相同类型选自由读取请求及写入请求组成的群组;
基于检测结果重新排序所述请求顺序;
依序执行所述相同类型的所述至少两个存储器请求。
8.根据权利要求7所述的方法,其进一步包括:
检测针对存储器字的一部分的读取-修改-写入操作,其中所述存储器字包括对应于所述多个存储器库的数据宽度的数据宽度;
确定存储器控制器中是否存在所述存储器字;
如果所述存储器控制器中不存在所述存储器字,那么将所述存储器字从存储器读取到所述存储器控制器中;
将所述存储器字的所述部分传递到起始所述读取-修改-写入操作的请求器;及
用来自所述读取-修改-写入操作的所述存储器字的所述部分修改所述存储器控制器中的所述存储器字。
9.根据权利要求8所述的方法,其中所述数据宽度选自由存储器总线宽度及存储器突发循环数据宽度组成的群组。
10.根据权利要求7所述的方法,其进一步包括:
按所述所接收顺序在时间上接近的未执行请求中检测针对相同存储器页的至少两个额外存储器请求;及
基于检测针对所述相同存储器页的至少两个额外存储器请求的结果重新排序所述请求顺序。
11.根据权利要求10所述的方法,其包括:
按经重新排序的顺序执行所述至少两个额外存储器请求;
如果按所述所接收顺序执行针对所述多个存储器库内的每一存储器页的存储器存取,那么在所述存储器存取结束时关闭所述存储器页;及
在经重新排序了顺序的请求之间维持所述相同存储器页打开。
12.根据权利要求7所述的方法,其进一步包括:
监视未决存储器请求的年龄;
在所述未决存储器请求等待被执行时,增加其优先级;及
防止将新存储器请求重新排序为在具有高优先级的所述未决存储器请求之前发生。
13.根据权利要求7所述的方法,其进一步包括:
监视所述多个所述存储器库中的每一存储器库的繁忙状态;及
执行针对未指示繁忙状态的存储器库的下一存储器请求。
14.根据权利要求7所述的方法,其进一步包括给所述读取请求指派比所述写入请求高的优先级并在所述读取请求与任何未决写入请求之间不存在地址冲突时在所述写入请求之前执行所述读取请求。
15.一种存储器控制器,其包括:
请求队列,其用于从至少一个请求器按所接收次序接收存储器请求;
库解码器,其用于响应于所述存储器请求中的每一者的存储器地址而针对所述请求队列中的每一存储器请求确定存储器的目的地库;
多个库队列,其用于存储对与所述多个库队列中的所述库队列相关联的存储器库的未决存储器请求并追踪所述所接收次序;
数据缓冲器,其用于保持具有对应于所述存储器的数据宽度的数据宽度的至少一个存储器字;
读取-修改-写入RMW单元,其用于检测针对所请求存储器字的一部分的RMW请求并确定所述数据缓冲器中是否存在所述所请求存储器字;及
存储器接口,其用于响应于存储于所述多个库队列中的一者中的所述RMW请求而执行针对所述存储器的读取请求以在所述数据缓冲器中不存在所述所请求存储器字的情况下读取所述所请求存储器字并将所述所请求存储器字存储于所述数据缓冲器中;
其中所述RMW单元控制将所述所请求存储器字的所述部分在修改之前返回到所述至少一个请求器并用来自所述RMW请求的数据修改所述数据缓冲器中的所述所请求存储器字的所述部分。
16.根据权利要求15所述的存储器控制器,其中所述RMW单元进一步经配置以将所述所请求存储器字保留于所述数据缓冲器中以用于将来的RMW请求并在修改所述数据缓冲器中的所述存储器字之后将所述存储器字写入到所述存储器。
17.根据权利要求15所述的存储器控制器,其进一步包括排序单元,所述排序单元经配置以基于在相同库队列中且针对相同存储器页的至少两个存储器请求的存在而确定在时间上接近的未执行请求中的存储器循环次序,且
其中所述存储器接口进一步经配置以:
按所述存储器循环次序执行每一存储器请求;
如果按所接收顺序执行对每一存储器页的存储器存取,那么在所述存储器存取结束时关闭所述存储器页;且
在经重新排序了顺序的请求之间维持所述相同存储器页打开。
18.根据权利要求15所述的存储器控制器,其进一步包括排序单元,所述排序单元经配置以以将相同类型的至少两个额外存储器请求重新排序为依序发生,其中所述相同类型选自由读取请求及写入请求组成的群组,且其中所述存储器接口进一步经配置以按由额外存储器循环修改的所述存储器循环次序执行每一存储器请求。
19.一种用于控制存储器存取操作的方法,其包括:
按所接收顺序接收多个存储器请求;
针对所述多个存储器请求中的每一者确定多个存储器库中的目的地库;
通过将所述多个存储器请求中的一个请求与所述多个存储器请求中的至少另一请求进行比较来按所述所接收顺序在时间上接近的未执行请求中检测所述多个存储器请求中针对相同存储器页的至少两个存储器请求;
根据检测结果重新排序所述所接收顺序;
按经重新排序的顺序执行所述至少两个存储器请求;
如果按所述所接收顺序执行对每一存储器页的存储器存取,那么在所述存储器存取结束时关闭所述存储器页;及
在经重新排序了顺序的请求之间维持所述相同存储器页打开。
20.根据权利要求19所述的方法,其进一步包括:
按所述所接收顺序在时间上接近而非顺序的未执行存储器请求中检测相同类型的至少两个额外未执行存储器请求,其中所述相同类型选自由读取请求及写入请求组成的群组;及
基于检测所述相同类型的至少两个额外未执行存储器请求的结果重新排序所述请求顺序。
21.根据权利要求19所述的方法,其进一步包括:
检测针对存储器字的一部分的读取-修改-写入操作,其中所述存储器字包括对应于所述多个存储器库的数据宽度的数据宽度;
确定存储器控制器中是否存在所述存储器字;
如果所述存储器控制器中不存在所述存储器字,那么将所述存储器字从存储器读取到所述存储器控制器中;
将所述存储器字的所述部分传递到起始所述读取-修改-写入操作的请求器;及
用来自所述读取-修改-写入操作的所述存储器字的所述部分修改所述存储器控制器中的所述存储器字。
22.根据权利要求21所述的方法,其中所述数据宽度选自由存储器总线宽度及存储器突发循环数据宽度组成的群组。
CN2008801161111A 2007-11-15 2008-11-12 用于修改存储器存取次序的系统、设备及方法 Active CN101861571B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/940,745 US7870351B2 (en) 2007-11-15 2007-11-15 System, apparatus, and method for modifying the order of memory accesses
US11/940,745 2007-11-15
PCT/US2008/083251 WO2009064793A1 (en) 2007-11-15 2008-11-12 System, apparatus, and method for modifying the order of memory accesses

Publications (2)

Publication Number Publication Date
CN101861571A CN101861571A (zh) 2010-10-13
CN101861571B true CN101861571B (zh) 2013-11-06

Family

ID=40639099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008801161111A Active CN101861571B (zh) 2007-11-15 2008-11-12 用于修改存储器存取次序的系统、设备及方法

Country Status (7)

Country Link
US (2) US7870351B2 (zh)
EP (1) EP2223217B1 (zh)
JP (1) JP5272274B2 (zh)
KR (1) KR101154708B1 (zh)
CN (1) CN101861571B (zh)
TW (2) TWI512724B (zh)
WO (1) WO2009064793A1 (zh)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8046559B2 (en) * 2008-03-27 2011-10-25 Intel Corporation Memory rank burst scheduling
US8605099B2 (en) 2008-03-31 2013-12-10 Intel Corporation Partition-free multi-socket memory system architecture
JP2009289307A (ja) * 2008-05-28 2009-12-10 Toshiba Corp 半導体記憶装置
US8516189B2 (en) * 2008-09-16 2013-08-20 Lsi Corporation Software technique for improving disk write performance on raid system where write sizes are not an integral multiple of number of data disks
US8160070B2 (en) * 2008-09-30 2012-04-17 Gridiron Systems, Inc. Fibre channel proxy
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8214608B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Behavioral monitoring of storage access patterns
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8214599B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Storage device prefetch system using directed graph clusters
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
KR101014149B1 (ko) * 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US8572322B2 (en) * 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US9965387B1 (en) * 2010-07-09 2018-05-08 Cypress Semiconductor Corporation Memory devices having embedded hardware acceleration and corresponding methods
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
JP5625737B2 (ja) * 2010-10-22 2014-11-19 富士通株式会社 転送装置、転送方法および転送プログラム
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
JP2012234363A (ja) 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US8806112B2 (en) 2011-07-14 2014-08-12 Lsi Corporation Meta data handling within a flash media controller
US9632954B2 (en) 2011-11-07 2017-04-25 International Business Machines Corporation Memory queue handling techniques for reducing impact of high-latency memory operations
US11474958B1 (en) 2011-11-28 2022-10-18 Pure Storage, Inc. Generating and queuing system messages with priorities in a storage network
US10318445B2 (en) * 2011-11-28 2019-06-11 International Business Machines Corporation Priority level adaptation in a dispersed storage network
US10558592B2 (en) 2011-11-28 2020-02-11 Pure Storage, Inc. Priority level adaptation in a dispersed storage network
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US8909874B2 (en) 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
JP6004463B2 (ja) * 2012-03-01 2016-10-05 Necプラットフォームズ株式会社 記憶装置及びその制御方法
WO2013154549A1 (en) * 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
JP2014013506A (ja) * 2012-07-04 2014-01-23 Canon Inc 情報処理装置、制御方法、及びプログラム
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
KR101989860B1 (ko) 2012-12-21 2019-06-17 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
TWI489290B (zh) * 2013-03-29 2015-06-21 Winbond Electronics Corp 快閃記憶體裝置與資料傳輸方法
US10318444B2 (en) * 2013-04-11 2019-06-11 The Regents Of The University Of California Collective memory transfer devices and methods for multiple-core processors
KR20140131781A (ko) * 2013-05-06 2014-11-14 삼성전자주식회사 메모리 제어 장치 및 방법
CN103413569B (zh) * 2013-07-22 2016-03-09 华为技术有限公司 一读且一写静态随机存储器
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法
US9396109B2 (en) * 2013-12-27 2016-07-19 Qualcomm Incorporated Method and apparatus for DRAM spatial coalescing within a single channel
WO2015183834A1 (en) 2014-05-27 2015-12-03 Rambus Inc. Memory module with reduced read/write turnaround overhead
US9696920B2 (en) * 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
US9558796B2 (en) * 2014-10-28 2017-01-31 Altera Corporation Systems and methods for maintaining memory access coherency in embedded memory blocks
KR102359404B1 (ko) * 2014-11-19 2022-02-15 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
GB2533808B (en) * 2014-12-31 2021-08-11 Advanced Risc Mach Ltd An apparatus and method for issuing access requests to a memory controller
CN105988951B (zh) * 2015-02-12 2019-10-15 瑞昱半导体股份有限公司 存储器控制器及相关的控制方法
KR20170060203A (ko) 2015-11-23 2017-06-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6676438B2 (ja) * 2016-03-30 2020-04-08 日本碍子株式会社 還元剤噴射装置、排ガス処理方法、及び排ガス処理装置
US10067706B2 (en) * 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
KR102615593B1 (ko) 2016-05-04 2023-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
WO2017196141A1 (en) 2016-05-12 2017-11-16 Lg Electronics Inc. Autonomous prefetch engine
KR102643467B1 (ko) 2016-05-31 2024-03-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
GB2551351B (en) * 2016-06-14 2019-05-08 Imagination Tech Ltd Executing memory requests out of order
KR102530262B1 (ko) 2016-07-21 2023-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102666489B1 (ko) 2016-09-09 2024-05-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10705972B2 (en) * 2016-09-13 2020-07-07 Advanced Micro Devices, Inc. Dynamic adaptation of memory page management policy
FR3057081B1 (fr) * 2016-10-05 2019-11-08 Airbus Operations Processeur comprenant une pluralite de coeurs de calcul
KR20180063419A (ko) * 2016-12-01 2018-06-12 삼성전자주식회사 호스트와 양방향 통신을 수행하도록 구성된 스토리지 장치 및 그것의 동작 방법
US10241925B2 (en) 2017-02-15 2019-03-26 Ati Technologies Ulc Selecting a default page size in a variable page size TLB
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10082975B1 (en) * 2017-03-02 2018-09-25 Micron Technology, Inc. Obfuscation-enhanced memory encryption
US10635613B2 (en) 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
US10365824B2 (en) 2017-04-24 2019-07-30 Advanced Micro Devices, Inc. Silent active page migration faults
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10620879B2 (en) * 2017-05-17 2020-04-14 Macronix International Co., Ltd. Write-while-read access method for a memory device
US10310985B2 (en) 2017-06-26 2019-06-04 Ati Technologies Ulc Systems and methods for accessing and managing a computing system memory
US10318344B2 (en) 2017-07-13 2019-06-11 Advanced Micro Devices, Inc. Predicting page migration granularity for heterogeneous memory systems
KR20190070092A (ko) * 2017-12-12 2019-06-20 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11526278B2 (en) 2017-12-21 2022-12-13 Advanced Micro Devices, Inc. Adaptive page close prediction
US10540316B2 (en) * 2017-12-28 2020-01-21 Advanced Micro Devices, Inc. Cancel and replay protocol scheme to improve ordered bandwidth
CN108388526B (zh) * 2018-01-19 2021-01-05 深圳市金玺智控技术有限公司 一种读取控制器数据的方法和系统
US10956086B2 (en) * 2018-01-29 2021-03-23 Micron Technology, Inc. Memory controller
US11144240B2 (en) * 2018-08-24 2021-10-12 Micron Technology, Inc. Memory sub-system for increasing bandwidth for command scheduling
US10834352B2 (en) * 2019-01-14 2020-11-10 Omnivision Technologies, Inc. Configurable interface alignment buffer between DRAM and logic unit for multiple-wafer image sensors
TWI767175B (zh) * 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN113366457B (zh) 2019-01-31 2024-06-14 国际商业机器公司 处理输入/输出存储指令
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
JP7379491B2 (ja) 2019-01-31 2023-11-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
US10891084B2 (en) * 2019-03-14 2021-01-12 Arm Limited Apparatus and method for providing data to a master device
KR20210063724A (ko) * 2019-11-25 2021-06-02 에스케이하이닉스 주식회사 메모리 시스템
US11481152B2 (en) * 2019-12-30 2022-10-25 Micron Technology, Inc. Execution of commands addressed to a logical block
CN111459414B (zh) * 2020-04-10 2023-06-02 上海兆芯集成电路有限公司 存储器调度方法及存储器控制器
CN113918216A (zh) * 2020-07-10 2022-01-11 富泰华工业(深圳)有限公司 数据读/写处理方法、装置及计算机可读存储介质
US11327909B1 (en) * 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
KR20220104511A (ko) 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11960744B2 (en) 2021-02-01 2024-04-16 Micron Technology, Inc. Register operation in memory devices
US11687281B2 (en) * 2021-03-31 2023-06-27 Advanced Micro Devices, Inc. DRAM command streak efficiency management
US11669274B2 (en) * 2021-03-31 2023-06-06 Advanced Micro Devices, Inc. Write bank group mask during arbitration
US20240020058A1 (en) * 2022-07-14 2024-01-18 Xilinx, Inc. Memory controller with a preprocessor
US20240036736A1 (en) * 2022-07-29 2024-02-01 Texas Instruments Incorporated Memory controller with command reordering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1071771A (zh) * 1991-10-11 1993-05-05 国际商业机器公司 存储控制器与数据处理系统
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
US6748493B1 (en) * 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282223A (ja) * 1996-04-12 1997-10-31 Ricoh Co Ltd メモリ制御装置
US7047391B2 (en) * 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US6510497B1 (en) * 1998-12-09 2003-01-21 Advanced Micro Devices, Inc. Method and system for page-state sensitive memory control and access in data processing systems
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
US6628292B1 (en) * 1999-07-31 2003-09-30 Hewlett-Packard Development Company, Lp. Creating page coherency and improved bank sequencing in a memory access command stream
BR0007239B1 (pt) * 1999-10-21 2014-03-18 Panasonic Corp Aparelho de acesso á placa de memória semicondutora, placa de memória semicondutora e método de inicialização.
JP3846543B2 (ja) * 2000-03-13 2006-11-15 富士ゼロックス株式会社 メモリアクセスシステム
JP2001356961A (ja) * 2000-06-13 2001-12-26 Nec Corp 調停装置
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US7093094B2 (en) * 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
US20040022094A1 (en) * 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US7320100B2 (en) * 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7228387B2 (en) * 2003-06-30 2007-06-05 Intel Corporation Apparatus and method for an adaptive multiple line prefetcher
US7127574B2 (en) * 2003-10-22 2006-10-24 Intel Corporatioon Method and apparatus for out of order memory scheduling
US7213082B2 (en) * 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US20060112240A1 (en) * 2004-11-24 2006-05-25 Walker Robert M Priority scheme for executing commands in memories
US7363406B2 (en) * 2004-12-08 2008-04-22 Motorola, Inc. Dynamic access scheduling memory controller
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1071771A (zh) * 1991-10-11 1993-05-05 国际商业机器公司 存储控制器与数据处理系统
US6748493B1 (en) * 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer
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

Also Published As

Publication number Publication date
JP2011505032A (ja) 2011-02-17
KR101154708B1 (ko) 2012-06-11
TWI512724B (zh) 2015-12-11
CN101861571A (zh) 2010-10-13
US20110099341A1 (en) 2011-04-28
US20090150624A1 (en) 2009-06-11
TW201403599A (zh) 2014-01-16
KR20100077051A (ko) 2010-07-06
JP5272274B2 (ja) 2013-08-28
US8180974B2 (en) 2012-05-15
EP2223217B1 (en) 2014-12-17
EP2223217A1 (en) 2010-09-01
US7870351B2 (en) 2011-01-11
WO2009064793A1 (en) 2009-05-22
EP2223217A4 (en) 2011-06-08
TW200933630A (en) 2009-08-01
TWI419158B (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
CN101861571B (zh) 用于修改存储器存取次序的系统、设备及方法
CN112088368B (zh) 动态的每存储体和全存储体刷新
EP1540485B1 (en) Out of order dram sequencer
CN101238441B (zh) 计算装置中的可抢占语境切换方法
CN101739298A (zh) 共享缓存管理方法和系统
US8341344B2 (en) Techniques for accessing a resource in a processor system
US12099736B2 (en) Scalable architecture enabling large memory system for in-memory computations
JP2002530743A (ja) ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること
CN109952567A (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
CN101788922A (zh) 基于辅助线程实现事务存储系统的方法和装置
US20070050527A1 (en) Synchronization method for a multi-processor system and the apparatus thereof
JP2013149091A (ja) メモリ制御装置及び制御方法並びに情報処理装置
US6868486B1 (en) Providing multiple memory controllers on a memory bus
US10852956B1 (en) Structure of a high-bandwidth-memory command queue of a memory controller with external per-bank refresh and burst reordering
CN102023845A (zh) 一种基于状态机的Cache并发访问管理方法
KR20240121873A (ko) 메모리 제어기에서 근접 메모리 프로세싱 커맨드들과 비-근접 메모리 프로세싱 커맨드들을 관리하기 위한 접근법
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration
US8452920B1 (en) System and method for controlling a dynamic random access memory
EP3910484B1 (en) Systems and methods for managing cache replacement
CN118626019A (zh) 一种访存方法、内存控制器、芯片及电子设备
CN118689800A (zh) 缓存器及其控制方法、计算机系统
JP2000066946A (ja) メモリコントローラ
JP2016006662A (ja) メモリ制御装置及び制御方法
JP2013210961A (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