CN102812518B - 存储器存取方法和装置 - Google Patents
存储器存取方法和装置 Download PDFInfo
- Publication number
- CN102812518B CN102812518B CN201180005519.3A CN201180005519A CN102812518B CN 102812518 B CN102812518 B CN 102812518B CN 201180005519 A CN201180005519 A CN 201180005519A CN 102812518 B CN102812518 B CN 102812518B
- Authority
- CN
- China
- Prior art keywords
- memory
- row
- address
- cache line
- dram
- 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 - Fee Related
Links
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0658—Controller construction arrangements
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
- G11C11/4082—Address Buffers; level conversion circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- 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
Abstract
所公开的示例性装置包括行地址寄存器(412),该行地址寄存器用于将与行(608)对应的行地址存储在存储器阵列(602)中。示例性的装置还包括行解码器(604),该行解码器被耦合到行地址寄存器以在存储器接收到列地址以后确认行的字线(704)上的信号。此外,该示例性的装置包括列解码器(606),该列解码器用于基于列地址和在字线上确认的信号来选择性地激活行的一部分。
Description
相关申请
本申请是要求于2010年1月28日提交的美国临时专利申请No.61/299,155的优先权的国际专利合作条约专利申请,其通过引用的方式完整地并入本文。
技术领域
本发明涉及存储器设备,尤其是实现比传统的存储器设备消耗更少的功率的电子存储器设备。
背景技术
传统上,已经针对低成本和快速的存取时间来设计诸如动态随机存取存储器(DRAM)的存储器。然而,已经对成本收益和存取速度执行了折中决策,这导致增加的功耗。DRAM是由几千个晶体管制成的,所述晶体管被组织成形成存储比特级信息的比特单元。当比特单元的组合被一起存取时,这些比特单元的组合可以存储有意义的和/或有用的信息。DRAM架构包括信号总线,这些信号总线用于激活比特单元的不同组合,以便在可寻址的存储位置处写入和/或读取信息。
一些传统的DRAM架构被构造为使得DRAM可以被操作以响应于处理器或存储器控制器提供的单个数据请求和地址,快速地获取存储在顺序的地址位置处的数据。例如,处理器通常被配置为基于单个读取请求从DRAM获取一个或多个整个高速缓存行。在传统的DRAM模块中,单个传统的读取操作需要预装载(pre-charging)DRAM模块的每个DRAM芯片中的位线(bitline)的整个行。每个预装载的行通常与多个高速缓存行相对应。
发明内容
按照本发明的一个方面,提供一种存储器,包括:行地址寄存器,其用于存储与存储器阵列中的行对应的行地址;行解码器,其被耦合到所述行地址寄存器,以在所述存储器接收到列地址以后确认所述行的字线上的信号;以及列解码器,其用于基于同时解码的所述列地址和在所述字线上确认的所述信号来选择性地激活所述行的部分。
按照本发明的另一个方面,提供一种存储器模块,包括:第一存储器,其具有第一行;第二存储器,其具有第二行;以及地址缓冲器,其用于锁存行地址和列地址并且向所述第一存储器和所述第二存储器转发所述行地址和所述列地址,响应于同时解码的所述行地址和所述列地址,所述第一存储器用于选择性地激活所述第一行的第一部分,所述第二存储器用于选择性地激活所述第二行的第二部分,所述第一部分和所述第二部分是在不激活所述第一行和所述第二行的其它部分的情况下被激活的。
附图说明
图1示出了存储器控制器和存储器之间的接口配置。
图2示出了具有多个存储器芯片的示例性的印刷电路板(PCB)内嵌式存储器模块。
图3示出了示例性的芯片堆叠存储器模块。
图4是用于通过延迟使用行地址存取其中存储的信息来选择性地激活各行的特定段的动态随机存取存储器(DRAM)配置。
图5是已知的DRAM芯片的示意图。
图6是示出了协作操作以选择性地激活DRAM比特单元阵列组中的各行的特定段的行地址解码器和列地址解码器的图4的DARM配置的示意图。
图7是示出了协作操作以选择性地激活DRAM芯片的特定位线的DRAM芯片的行地址解码器和列地址解码器的图4和图6的DRAM配置的DRAM芯片中的一个的详细示意图。
图8是用于选择性地激活特定的DRAM芯片以从该DRAM芯片存取整个高速缓存行的DRAM配置的示意图。
图9是图8的DRAM模块的详细示意图。
图10是可以可替换地用于实现图8的DRAM模块以一次仅提供对单个DARM芯片的数据存取的另一DARM存储器模块的示意图。
图11是可以可选择地用于实现图8的DRAM模块以针对每个存储器存取选择性地激活特定的DARM芯片的另一DARM存储器模块的示意图。
图12是可以与图8至图11的示例性DRAM存储器模块结合使用的示例性高速缓存行存储配置。
图13示出了图8的存储器控制器的详细示意图。
图14示出了可以用于存取结合图4、图6和图7描述的存储器设备的示例性过程的流程图。
图15示出了可以用于存取结合图8至图10、图12和图13描述的存储器设备的示例性过程的流程图。
图16示出了可以用于存取结合图11描述的存储器设备的示例性过程的流程图。
图17示出了被配置为存储错误检查和奇偶校验(parity)信息以在存取存储在其中的数据时实现错误检查和数据校正操作的示例性存储器模块。
图18示出了可以用于在存取存储器中的数据时执行错误检查和数据校正操作的示例性过程的流程图。
图19是示出了用于分析本文公开的示例性方法、装置和制品的性能的示例性处理器系统模型的示例性测试台参数的表格。
图20是示出了本文公开的示例性存储器存取技术和结构以及曾用于执行性能分析的已知存储器存取技术和结构的示例性DRAM能量参数的表格。
图21是示出了根据传统的存储器阵列的数量的示例性代码执行环境中的示例性行缓冲器命中率的示意图。
图22是示出了基于8阵列的传统存储器的示例性代码执行环境中的示例性行重用计数的示意图。
图23是将使用已知的存储器存取技术/结构的针对行/字线(wordline)存取的示例性的归一化DRAM能耗与使用本文公开的示例性存储器存取技术/结构的针对行/字线存取的示例性的归一化DRAM能耗进行比较的示意图。
图24是将当使用已知的存储器存取技术/结构来存取行/字线时由不同的示例性存储器子系统消耗的示例性的DRAM能量与当使用本文公开的存储器存取技术/结构来存取行/字线时由不同的示例性存储器子系统消耗的示例性的DRAM能量进行比较的示意图。
图25是示出了结合已知的存储器存取技术/结构使用低功耗状态的示例性存储器延迟影响的示意图。
图26是示出了结合已知的存储器存取技术/结构使用低功耗状态的示例性能量减小影响的示意图。
图27是将当使用已知的存储器存取技术/结构来存取存储器时的示例性平均主存储器延迟与当使用本文公开的存储器存取技术/结构来存取存储器时的示例性平均主存储器延迟进行比较的示意图。
图28是将当使用已知的存储器存取技术/结构来存取存储器时由不同的存储器子系统贡献的示例性的存储器延迟与当使用本文公开的存储器存取技术/结构来存取存储器时由不同的存储器子系统贡献的示例性的存储器延迟进行比较的示意图。
图29是将已知的存储器存取技术/结构的针对每个周期的示例性归一化指令与本文公开的存储器存取技术/结构的针对每个周期的示例性归一化指令进行比较的示意图。
图30是将使用chipkill错误检测和校正技术的存储器存取性能的示例性差别与不使用chipkill错误检测和校正技术的存储器存取性能的示例性差别进行比较的示意图。
具体实施方式
本文公开的示例性方法、装置和制品可以用于实现比传统的存储器设备消耗更少的功率的电子存储器设备。本文结合动态随机存取存储器(DRAM)架构公开了示例性的方法、装置和制品,但是可以结合包括忆阻器存储器设备、静态RAM(SRAM)设备、铁电RAM(FRAM)设备等的其它类型的存储器来实现。
传统上,DRAM已经面向低成本和快速的存取时间来设计。然而,已经对成本收益和存取速度执行了折中决策,这导致增加的功耗。DRAM是由几千个晶体管制成,所述晶体管被组织成形成存储比特水平信息的比特单元。当比特单元的组合被一起存取时,这些比特单元的组合可以存储有意义的和/或有用的信息。DRAM架构包括信号总线,这些信号总线用于激活比特单元的不同组合,以便在可寻址的存储位置处写入和/或读取信息。如下面更详细讨论的,位线被选择性地启用或激活以选择性读取不同比特单元中的信息或在不同的比特单元中写入信息。
为了提高性能,在保持或减小物理空间需求的同时,一些传统的DRAM架构被构造为使得DRAM可以被操作以响应于处理器或存储器控制器提供的单个数据请求和地址,快速地获取存储在顺序的地址位置处的数据。然而,这些数据存取技术通常导致从存储器获取比所需的信息更多的信息,因此通过激活存储器的可能另外不需要的部分来不必要地消耗更多的功率。例如,处理器通常被配置为基于单个读取请求从DRAM获取一个或多个整个高速缓存行。高速缓存行涉及构成处理器的高速缓存存储器的宽度的比特或字节的数量(例如,32字节的高速缓存行、64比特的高速缓存行、128比特的高速缓存行等)。在传统的DRAM模块中,单个传统的读取操作需要对DRAM模块的每个DRAM芯片中的位线的整个行进行预装载。每个预装载的行通常对应于多个高速缓存行。因此,即使当处理器请求单个高速缓存行时,内部DRAM逻辑必须对存储所请求的高速缓存行的DRAM芯片的行的所有位线进行预装载。预装载整个行激活了几千个位线,即使只有那些激活的位线的子集存储了请求处理器所请求的单个相关高速缓存行也是如此。这些已知的存取技术在存在请求处理器所需的以连续的方式相邻存储的信息的高局域性(locality)时实现了快速的存取性能。也即是说,通过预装载整个行,存储在该行中的每个高速缓存行可以在连续的低延迟读取周期(例如,DRAM突发模式读取或页面模式读取)期间读出给请求处理器。虽然在预装载以读出第一高速缓存行时存在某些初始开销延迟,但是可以以更低的延迟来读出每个随后连续的高速缓存行,这是因为存储这些高速缓存行的行已经被预装载。然而,如果请求处理器只需要预装载的行中的一个高速缓存行,则使用这些已知的技术浪费了相当大量的能量,特别是当在处理器操作中存储器存取局域性随着核、线程和套接字计数的增加而减小更是如此。
与传统的DARM架构和操作不同,本文公开的示例性方法、装置和制品促进对存储器设备的存取,同时通过激活比已知的DRAM设备相对更少的针对每个存储器存取的DRAM电路,消耗相对更少的功率。在本文中称作选择性位线激活(SBA)的示例性实现包括配置DRAM控制逻辑,以通过以与传统的DRAM架构使用地址信息的方式不同的方式应用该地址信息来选择性地存取单个高速缓存行。通过使用SBA,内部DRAM架构可以在维持与商业采用的外部接口设备标准的兼容性的同时进行操作,所述商业采用的外部接口设备标准用于确保不同的存储器控制器和不同的存储器设备制造商之间的兼容的互操作性。JEDEC固态技术协会(原来的联合电子设备工程联合会(JEDEC))公布并维持了多个DRAM接口标准,所述DRAM接口标准用于建立存储器设备制造商必须遵循的接口定时和控制要求。
在本文中称作单子阵列存取(SSA)的另一个示例性的实现将DRAM芯片的布局和数据到DRAM芯片的映射组织为使得可以从存储器模块的单个DARM存储器芯片获取整个高速缓存行。相比之下,诸如已知的单内嵌式存储器模块(SIMM)架构或双内嵌式存储器模块(DIMM)架构的已知的存储器模块从独立的高速缓存行部分获取高速缓存行或者获取分布在存储器模块的多个DRAM芯片之间的高速缓存行段。(高速缓存行段是形成整个高速缓存行的一部分的比特的子组。)因此,与其中存储器模块中的多个芯片必须被激活或预加载以读出单个高速缓存行的传统的DRAM配置不同,本文公开的示例性的SSA技术通过仅激活存储器模块的单个存储器芯片来实现对整个高速缓存行的读出。通过消除激活和预加载存储器模块的多个存储器芯片以存取单个高速缓存行的需要,针对每个存储器存取使用相对较少的能量,这是因为在整个获取操作中,存储器模块中的非激活的存储器芯片可以仍然保持在低功耗模式。示例性的初步研究显示根据SSA存储器存取技术配置的存储器设计可以产生6X的存储器能量节省,同时引起仅4.5%的面积成本并且将性能(例如,读取延迟)提高了多达15%。
在本文中还公开了用于通过使用校验和信息来提供错误检测和校正能力的示例性方法和装置。这种错误检测和校正能力涉及使用chipkill技术,并且可以有利地结合本文公开的SSA存储器存取技术来使用,这依赖于用于提供单个高速缓存行的整个内容的单个存储器芯片。然而,错误检测和校正能力并不致力于仅与SSA技术一起使用。示例性的初步研究显示,与不使用chipkill错误检测和校正能力的可比较的存储器实现相比,本文描述的chipkill实现与已知的chipkill解决方案相比具有明显更低的容量开销和能量开销,同时仅引起11%的性能损失。
在下面的描述和对应的附图中,图1示出了表示可以用于SBA存储器存取技术或SSA存储器存取技术中的任意一种的接口线配置的存储器接口。举例说明,图4、图6、图7和图14的示意图用于描述使用SBA存储器配置的示例性存储器实现。举例说明,图8至图13、图15和图16的示意图用于描述使用SSA存储器配置的示例性存储器实现。结合图17和图18描述了chipkill错误检测和校正能力。
现在转向图1,示例性的存储器接口配置100显示了可操作地耦合到存储器104的存储器控制器102。
存储器控制器102可以是独立的存储器控制器集成电路(IC)或实现在处理器芯片中(例如,作为处理器内核制造在相同的管芯上或者位于相同的芯片封装中)的嵌入的存储器控制器。在所示的示例中,存储器104是DRAM存储器。DRAM存储器104可以是单个DRAM存储器IC或包括多个DRAM存储器IC的存储器模块。在一些示例性的实现中,DRAM存储器104可以是实现在处理器芯片中的嵌入的存储器。如图所示,存储器接口配置100包括数据总线106、地址总线108和控制线110。
数据总线106的宽度可以是任意数量的比特并且用于在存储器控制器102与DRAM存储器104之间传送数据。当实现为存储器模块(例如,图2和图3的存储器模块)时,数据总线106的线可以由与相应的存储器芯片的数据总线对应的独立的数据线组构成。
短暂地转向图2和图3,其中示出的示例性的存储器模块200和300可以用于实现本文公开的存储器配置中的任意一种。在图2中所示的示例中,DRAM PCB内嵌式存储器模块200(例如,双内嵌式存储器模块(DIMM))被实现为包括安装在PCB 204上的四个存储器芯片202a-d的多芯片存储器模块。DRAM PCB内嵌式存储器模块200可以有利地用于光学接口系统中,在该光学接口系统中,存储器模块200经由光学线连接到其它子系统(例如,其它存储器模块和/或存储器控制器)。或者,存储器模块200也可以用于电子接口系统中。存储器芯片202a-d中的每一个的数据总线208a-d与DRAM存储器模块200的相应的、独立的数据线组206a-d连接。可以使用电接触垫来实现存储器模块200中的每一个数据线,其中,所述电接触垫形成(例如,蚀刻)在PCB 204上并且经由形成于PCB 204中和/或形成于PCB 204上的电导轨迹连接到存储器芯片202a-d中的相应存储器芯片。
在一些示例中,存储器芯片202a-d中的一个或多个是使用3D芯片堆栈实现的,在所述3D芯片堆栈中,(例如,与图3中所示的3D堆栈结构类似),(例如,同构或异构存储器技术类型的)多个存储器管芯堆叠在彼此顶部上。
图3中示出了示例性的3D芯片堆栈存储器模块300。3D堆栈的存储器模块300可以有利地用于电子接口系统中,在所述电子接口系统中,存储器模块300经由电线连接到其它子系统(例如,其它存储器模块和/或存储器控制器)。或者,存储器模块300也可以用于光学接口系统。图3的示例性3D芯片堆栈存储器模块300包括堆叠在第二IC管芯304上的第一IC管芯302,所述第二IC管芯304堆叠在第三IC管芯305上。IC管芯302、304和305承载在球栅阵列(BGA)芯片封装306上。在所示的示例中,第一IC管芯302可以是SDRAM存储器,第二IC管芯304可以是另一SDRAM存储器或者任何其它类型的存储器(例如,忆阻器存储器、SRAM、闪存、PCRAM等)或IC(例如,处理器、控制器等)。在SDRAM管芯(或者任何其它存储器技术管芯)被堆叠在处理器或控制器管芯上的示例性实现中,SDRAM管芯的地址线、控制线和数据线可以直接路由到芯片堆栈封装内部的处理器或控制器管芯。在这些实现中,芯片堆栈封装外部的存储器存取可能不是必须的。可替换地或此外,为了实现外部存储器存取,存储器IC管芯的地址线、控制线和数据线可以路由到外部芯片接口(例如,BGA垫、表面安装垫、芯片引线等)。在一些示例中,存储器模块缓冲器可以与多存储器管芯堆叠在一起。例如,在图3所示的示例中,IC管芯305可以是(与图4的存储器模块缓冲器404、图9的存储器模块缓冲器908、图10的存储器模块缓冲器1008和/或图11的存储器模块缓冲器1104类似或相同的)存储器模块缓冲器。虽然3D芯片堆栈存储器模块300被示出为BGA封装,但是可以使用其它类型的封装。
返回图1,地址总线108用于将来自存储器控制器102的地址信息传送给DRAM存储器104。在DRAM架构中,可以在两个连续的地址通信期间在两个部分中传送用于每个存储器控制器发起的存储器存取的地址。在第一地址部分通信期间,存储器控制器102可以在地址总线108上输出行地址。在第二地址部分通信期间,存储器控制器102可以在地址总线108上输出列地址。为了提供对存储器控制器102寻址的期望信息的存取,DRAM存储器104锁存行地址和列地址以激活对应的比特单元以进行读取存取或写入存取。
在所示的示例中,控制线110可以包括适合于实现DRAM或同步DRAM(SDRAM)型接口的控制线。这些控制线可以包括行地址选通(RAS)线、列地址选通(CAS)线、启用写入(WE)线、芯片选择(CS)线、时钟(CLK)线、启用时钟(CE)线、组选择线等。在一些示例性的实现中,组选择线可以连接到地址总线108的线。在一些示例性的实现中,SDRAM型接口可以结合非SDRAM型存储器技术使用。例如,SDRAM接口可以用于连接到忆阻器IC管芯或SRAM IC管芯,使得可以与SDRAM存储器控制器保持接口兼容,即使使用不同的存储器技术也是如此。
图1还示出了与存储器控制器102进行通信的处理器112。处理器112包括高速缓存存储器114,该高速缓存存储器114用作处理器112的处理器内核的临时快速存取存储区域。高速缓存存储器114是由多个高速缓存行构成,多个高速缓存行中的一个表示为高速缓存行116。在一些示例性的处理器系统实现中,高速缓存行的大小(例如,64字节的高速缓存行、128字节的高速缓存行等)指示针对每个存储器存取可以从外部存储器(例如,DRAM)读取的比特数量。例如,如果高速缓存行116的宽度是64字节并且DRAM存储器104是具有64比特数据总线的存储器模块(例如,图2的PCB内嵌式存储器模块200),则存储器控制器102可以使用八个读取周期从DRAM存储器104获取64字节宽的高速缓存行。或者,如果DRAM存储器104是具有8比特数据总线的单个DRAM芯片,则存储器控制器102可以使用64个8比特读取周期获取64字节宽的高速缓存行。
现在转向图4,根据SBA存储器存取,DRAM配置通过延迟使用行地址存取其中存储的信息,来选择性地激活相应的DRAM芯片中的行的特定段。如图4中所示,多芯片存储器模块400包括多个DRAM芯片402a-h以及存储器模块缓冲器404。在所示的示例中,存储器模块缓冲器404包括用于接收缓冲器的行地址和列地址的地址缓冲器406以及用于从存储器控制器接收缓冲器的RAS信号和CAS信号的RAS/CAS缓冲器408。虽然示出了RAS/CAS缓冲器408,但是在其它示例性的实现中,可以省略RAS/CAS缓冲器408,并且存储器模块缓冲器404可以动态地(例如,在传输过程中)生成在向DRAM芯片402a-h传送地址信息(例如,行地址和列地址)时所需的RAS信号和CAS信号。在一些示例中,可以省略存储器模块缓冲器404,并且可以在DRAM芯片402a-h中的一个或多个中实现与存储器模块缓冲器404基本上类似或相同的存储器模块缓冲器,使得存储器模块404将如其具有如图4所示的存储器模块缓冲器404一样操作。
在所示的示例中,存储器模块400所需的信号定时与传统的存储器模块的信号定时相同。因此,存储器模块400可以与已知的或传统的存储器控制器结合使用。然而,如下面所解释的,DRAM芯片402a-h中的每一个的操作与传统的存储器芯片操作以提供对存储的存储器内容的存取的方式不同。
当接收到地址缓冲器406中的行地址和RAS/CAS缓冲器408处的RAS信号以后,所示的示例的地址缓冲器406和RAS/CAS缓冲器408以广播的方式向所有DRAM芯片402a-h传送行地址和RAS信号。此外,当接收到地址缓冲器406中的列地址和RAS/CAS缓冲器408处的CAS信号以后,所示的示例的地址缓冲器406和RAS/CAS缓冲器408以广播的方式向所有DRAM芯片402a-h传送列地址和CAS信号。通过这种方式,存储器模块400与已知的存储器控制器后向兼容。
然而,与已知的DRAM存储器芯片不同,DRAM芯片402a-h延迟使用所接收的行地址来实现与用已知的DRAM技术激活相比针对每个存储器存取选择性地激活DRAM存储区域的相对较少的电路。通过这种方式,SBA存储器存取通过相对较少地激活电路来针对每个存储器存取使用较少的功率。为了实现SBA存储器存取,每个SDRAM芯片402a-h具有行地址寄存器412和列地址寄存器414,其中,行地址寄存器412和列地址寄存器414通过举例说明的方式与SDRAM芯片402f结合示出。行地址寄存器412通过存储行地址来实现使用发布的RAS,以推迟其在解码所请求的数据的地址时的使用,直到接收到CAS信号和列地址为止。
SDRAM芯片402f具有解复用器416以选择行地址寄存器412或列地址寄存器414中的一个。RAS/CAS选择连接到RAS/CAS缓冲器408的解复用器416的输入,以控制解复用器416选择行地址寄存器412或列地址寄存器414来存储接收的地址。例如,在传统的定时下,存储器模块400接收行地址以及RAS控制信号的确认。也即是说,行地址被锁存在地址缓冲器406中并且传送到DRAM芯片402f(和其它DRAM芯片402a-e、402g和402h),而RAS确认信号被锁存到RAS/CAS缓冲器408中并且也传送到DRAM芯片402f(和其它DRAM芯片402a-e、402g和402h)。类似地,在传统的定时下,存储器模块400接收列地址以及CAS控制信号的确认。也即是说,列地址被锁存在地址缓冲器406中并且传送到DRAM芯片402f(和其它DRAM芯片402a-e、402g和402h),而CAS确认信号被锁存到RAS/CAS缓冲器408中并且也传送到DRAM芯片402f(和其它DRAM芯片402a-e、402g和402h)。因此,当解复用器416感测到RAS信号的确认时,其地址输入端处的地址比特与行地址相对应,并且解复用器416选择行地址寄存器412来存储地址比特。类似地,当解复用器416感测到CAS信号的确认时,其地址输入端处的地址比特与列地址相对应,并且解复用器416选择列地址寄存器414来存储地址比特。
与通过在接收到列地址以前激活比特单元阵列组的整个行来对行地址进行操作的已知技术不同,所示的示例的DRAM芯片402f等待直到在对行地址和列地址进行解码以前并且在激活比特单元存取电路中的任意一个之前接收到行地址和列地址二者为止。通过这种方式,DRAM芯片402f可以同时将行地址和列地址结合使用以仅激活与所请求的存储器存取相对应的必要的存储器区域,并且从而仅将有关的高速缓存行获取到行缓冲器中。因此,在所示的示例中,当用于特定存储器存取的行地址和列地址二者都被存储在寄存器412和414中时,行解码器和列解码器仅激活行中的存储通过行地址和列地址的组合请求和寻址的特定信息的部分。在图6中更详细地示出了这一概念。
在继续图6之前,已知的DRAM芯片的操作的简要讨论可以具有指导性。与结合图4、图6和图7所描述的DRAM芯片402f的操作不同,已知的DRAM芯片针对每个存储器存取激活整个行,如图5中所示。转向图5,当接收到地行地址以后并且在接收到列地址之前,已知的DRAM芯片500根据装载到行解码器506中的行地址来激活单元阵列组504的整个行502。在已知的DRAM芯片中,激活整个行称作打开页面,使得页面模式存取被启用以连续地读出相邻存储的信息的突发。当整个行502是活动的时,DRAM芯片500将活动行502的所有比特装载到行缓冲器508中。当DRAM芯片500接收到列地址时,列解码器510对列地址进行解码并且选择行缓冲器的特定部分512,并且经由数据I/O缓冲器514输出行缓冲器的部分512。因此,已知的DRAM芯片在接收到列地址以前激活整个行并且将活动行的所有比特装载到行缓冲器中。通过这种方式针对每个存储器存取激活整个行导致消耗与当仅请求该行中存储的信息的一部分时所需的功率相比更多的功率。本文所描述的示例性的SBA技术通过仅激活存储相关信息的单元阵列组中的行的一部分来减少功耗,如下面结合图6和图7所讨论的。
现在转向图6,DRAM芯片402f被示出为具有存储信息的多个比特单元阵列组602、行解码器604和列解码器606。每个比特单元阵列组602作为存储信息的比特单元的行进行排列。行608被示出为在组602中的一个中,并且在本文中还称作字线。在所示的示例中,行解码器604从行地址寄存器412接收行地址(图4),并且列解码器606从列地址寄存器414接收列地址(图4)。然后,行解码器604和列解码器606同时解码其相应的地址信息,以仅激活单元阵列组602中的特定单元阵列组中的行608(或字线)的包含请求的信息的部分。行608的激活部分在本文中记为字线段610,该字线段是行608的在无需激活相同行608的其它部分的情况下可激活的部分。在图6的所示的示例中,DRAM芯片402a-h的相应DRAM芯片的单独的字线段可以被激活和读出,如下面参照DRAM芯片402f所讨论的。通过这种方式,从单独的SDRAM芯片402a-h中读出的比特可以被级联以形成由存储器控制器(例如,图1的存储器控制器102)请求的高速缓存行。在图6的所示的示例中,通过级联来自DRAM芯片402a-h中的每一个DRAM芯片的8比特数据输出以形成接下来被级联以形成整个高速缓存行的8个64比特的高速缓存行部分或段,来形成64比特的高速缓存行。
当字线段610是活动的时,将其比特装载到行缓冲器612中以经由数据I/O缓冲器614进行输出。通过仅激活行中的相关字线段(例如,字线段610),SBA技术施加关闭页面策略,这防止了与允许打开行(或页面)一次并且基于单个行打开来读出两个或更多个行段(例如,多个8比特的数据读出)的已知DRAM芯片相关联的突发存取。相反,SBA存储器存取的关闭页面策略需要针对每个存储器存取对行地址进行解码。然而,当与其中未以高局域性存储相关数据(例如,未经常存储在相同的行中)的应用结合使用时,关闭页面策略比已知的DRAM芯片存取技术更加节能,这是因为当已知的DRAM芯片存取将打开整个行,即使行中只有单个数据(例如,高速缓存行)是相关的(这通常是以低局域性存储信息的情况)也是如此时,本文所描述的SBA技术针对每一个存储器存取仅打开行的单个字线段。
字线段610可以包括与DRAM芯片402f的数据I/O总线的宽度相比相同或更大的多个比特。在所示的示例中,DRAM芯片402a-h中的每一个具有8比特的数据I/O总线。因此,对于64比特宽的高速缓存行,每个DRAM芯片402a-h的每个激活的字线段(字线段610)存储所请求的64比特高速缓存行的一部分或一段。当DRAM芯片402a-h中的每一个从其相应的字线段获取8比特时,来自DRAM芯片402a-h中的每一个的8比特被级联以形成由存储器模块400输出的64比特。可以重复该过程,直到DRAM芯片402a-h具有整个64字节的高速缓存行为止。在该示例性的实现中,DRAM芯片402a-h中的每一个存储64字节高速缓存行的相应8个字节。
图7是图4和图6的示出了DRAM芯片402f的协作工作以选择性地针对每个存储器存取激活DRAM芯片402f的特定位线的行解码器604和列解码器606的示例性存储器模块400的DRAM芯片402f的详细示意图。图7的所示的示例示出了分层字线可以如何用于在不激活行的不包括所关注的数据的部分的情况下选择性地激活行或字线的各部分(例如,选择性地激活如图6所示的行608的字线段610)以执行SBA存储器存取。
在图7的所示的示例中,示出了DRAM芯片402f的两行(或字线)608和702。每一行608和702包括主字线(MWL)和控制子字线(SWL)。在一些示例性的实现中,MWL可以形成在第一级金属中,SWL可以形成在聚乙烯层中。在所示的示例中,对行608的存取是通过确认(assertion)MWL0线704来实现的,并且对行702的存取是通过确认MWL1线706来实现的。SWL连接到不同存储器单元阵列中的存储器比特单元。在所示的示例中,SWL 708连接到图6的字线段610,以实现选择性地激活字线段610从而将其比特传送给数据I/O缓冲器614。
为了实现激活SWL,给DRAM芯片402f提供了区域选择(RX)“AND”门,其中的一个由附图标记710表示。此外,给DRAM芯片402f提供了SWL“AND”门,其中的一个由附图标记712表示。RX“AND”门(例如,RX-0、RX-1、RX-N)以及SWL“AND”门实现了在存储器阵列的相应列中选择特定的SWL。虽然在所示的示例中示出了“AND”门,但是可以替代地使用“NOR”门,并且可以反转MWL信号线和RX信号线的信号极性以操作“NOR”门。在所示的示例中,SWL“AND”门712的第一输入端连接到RX-N“AND”门710,SWL“AND”门712的第二输入端连接到MWL0线704。此外,SWL“AND”712的输出端连接到SWL 708以在确认MWL0线704以后激活SWL 708,并且SWL“AND”712的输出端连接到RX-N“AND”门710的输出端。DRAM芯片702f的其它SWL“AND”门以模拟的方式进行连接使得DRAM芯片702f的SWL中的任意一个可以被选择以基于选择RX“AND”门(例如,RX-N“AND”门710)和MWL(例如,MWL0线704)的对应组合进行输出。
如图7所示,MWL0线704和NWL1线706连接到行解码器604,RX“AND”门连接到列解码器606。在针对行地址使用15比特的示例性的实现中,行解码器604可以对多达32,768个MWL的选择进行解码。在针对列地址使用11比特的示例性的实现中,RX“AND”门的输入端可以连接到列解码器606的列地址接口的最低有效的7个比特,以实现对多达128个SWL中的任意一个的单独选择。在所示的示例中,当行解码器604确认MWL0704上的较高信号并且由列解码器606输出的地址选择RX-N“AND”门710时,SWL“AND”712的输入端均为高,从而使SWL“AND”门712的输出端激活字线段610以将其比特输出到数据I/O缓冲器614上。
在图7的所示的示例中,MWL0线704和MWL1线706仅通过少量SWL“AND”门来加载,这显著地减少了MWL上的容量,从而显著地减少了其信号传输延迟。当如上文所讨论的只有CAS地址的子集用于触发与RX“AND”门相关联的RX信号时,激活区域和字线/位线能量被有利地减少(例如,路由较少的地址线)。此外,因为MWL未直接连接到存储器单元,因此有利地保存了能量。由于未直接连接到存储器单元,因此在存储器阵列上对MWL的激活未导致数据的破坏,这是因为只有连接到活动SWL的存储器单元(例如,字线段610)的较小子集读出其数据。
在一些示例性的实现中,提供用以针对每个存取实现单个高速缓存行的“AND”门(例如,SWL“AND”门和RX“AND”门)的数量可能是管芯面积过高或者成本过高的。在这些示例性的实现中,在针对每个存取激活和读出更多的高速缓存行所需的能量折中的情况下,可以提供较少的“AND”门。例如,可以使用较少的“AND”门来实现图7中示出的DRAM芯片402f,以替代地针对每个存取读出16个高速缓存行(例如,在“AND”门之间,SWL变长16倍)。该示例性的实现将相对于已知的DRAM芯片仍然产生相对更高的能量节省。
如上文所讨论的,在存储器存取期间,SBA技术有利地减少了能耗,同时根据用于与DRAM存储器接合的当前(以及可能将来的)工业标准实现了将存储器控制器与存储器的接合。在本文中称作单子阵列存取(SSA)的另一示例性的存储器存取技术组织DRAM芯片的布局和数据到DRAM芯片的映射,使得可以从存储器模块(例如,图2的DRAM PCB内嵌式存储器模块200)的单个DRAM芯片(例如,图2的存储器芯片202a-d中的一个)中得到整个处理器高速缓存行。下面结合图8至图13描述SSA存储器存取技术。
与用于从DRAM存储器模块存取高速缓存行的已知技术(其涉及激活存储器模块的每个DRAM芯片并且将从每个DRAM芯片输出的数据进行级联以形成单个高速缓存行)不同,图8至图13、图15和图16中所示的示例性的SSA存储器存取技术涉及从存储器模块(例如,图2的DRAM PCB内嵌式存储器模块200)的单个DRAM芯片(例如,图2的存储器芯片202a-d中的一个)中读取整个请求的高速缓存行。通过这种方式,SSA技术消除了在存取请求的高速缓存行时激活存储器模块中的每个DRAM芯片的需要。
转向图8,示出了与多芯片DRAM存储器模块804接合的存储器控制器802。在所示的示例中,存储器控制器802被配置为根据下面所描述的SSA技术来存取DRAM模块804的内容。如图所示,DRAM模块804包括8个DRAM芯片806a-h,每个DRAM芯片具有8比特的输出数据总线。详细示出了DRAM芯片806g。其它DRAM芯片806a-f以及806h与DRAM芯片806g基本上类似,因此未进行详细示出。DRAM芯片806g具有多个组,每个组具有多个子阵列和用于存取子阵列中的各个比特单元的位线。例如,组808包括子阵列810a和810b、位线812和行缓冲器814。在所示的示例中,DRAM芯片806g的每个子阵列的宽度为64字节。因此,子阵列810a-b中的每一行可以存储连续的64字节宽的数据高速缓存行。相比之下,已知的DRAM存储器模块将高速缓存行作为几个高速缓存行部分或段存储在相同的存储器模块上的多个DRAM芯片之间。例如,具有8个DRAM芯片的已知的存储器模块通过将高速缓存行划分为8个段(例如,8个8字节的段)来存储64字节的高速缓存行。然后,将8个高速缓存行段中的每一个存储在独立的、相应的DRAM芯片中,使得对64字节的高速缓存行的存取需要同时启用所有8个DRAM芯片。与那些已知的DRAM存储器模块不同,图8的示例中的SDRAM芯片806a-h中的每一个可以存储整个连续的高速缓存行。通过这种方式,当存储器控制器802请求特定的高速缓存行时,只有存储整个请求的高速缓存行的DRAM芯片需要被激活,而其它DRAM芯片可以保持在睡眠模式或者其它低功率模式以防止过量功率消耗(例如,防止能量泄露)。
如图8所示,DRAM芯片806g具有共享的8比特外部数据I/O总线816。因此,子阵列中的64字节宽的高速缓存行是使用对DRAM芯片806g的多个连续行存取来存取的。行存取中的每一个使得位线812执行子阵列的去往/来自共享的8比特外部数据I/O总线816的8比特读出(或者写入)直到整个高速缓存行已经被存取为止。在所示的示例中,存储器控制器802存取DRAM芯片806a-h的内容所使用的寻址组织实现了选择性地启用DRAM芯片806a-h中的特定DRAM芯片并且指定启用的DRAM芯片806a-h中的特定行。例如,如下面参照图9和图10更详细地描述的,由存储器控制器802发送的地址的一部分用作针对每个存储器存取实现选择DRAM芯片806a-h中的特定DRAM芯片的芯片选择。
在图8中所示的示例中,SSA架构与上面所讨论的针对每个存储器存取仅激活DRAM芯片中的必要电路的SBA技术结合使用。因此,因为整个高速缓存行被存储在相应的组和子阵列(例如,组808的子阵列810a-b)中,因此特定的高速缓存行的存储器存取需要DRAM芯片仅激活其电路的存储了所请求的高速缓存行的那部分。例如,如果存储器控制器802请求存储在子阵列810a中的高速缓存行,则DRAM芯片806g只需要激活组808和子阵列810a的电路以获取所请求的高速缓存行,同时将DRAM芯片806b(以及模块804的其它DRAM芯片806a-f和806h)的其它组和子阵列的电路维持在低功率模式。通过这种方式,所存取的DARM芯片802g的大部分以及DRAM芯片806a-f和806h的更大部分可以保持在低功率模式,同时只有被寻址的芯片(例如,DRAM芯片806g)的电路的一些被激活以获取所请求的高速缓存行。该方法相对于需要在存储器存取期间激活所有组的已知的DRAM存储器设备实现了大量的功率节省。
SSA架构可以用于通过在存取存储器的高速缓存行时激活单个芯片和单个子阵列(例如,具有较短的字线和所需的位线数量)来动态地减少能量。此外,因为片上管芯区域的大部分在任意时间点时是非活动的并且可以处于低功率模式,因此可以减少背景能量,即使存储器的其它部分(例如,其它子阵列和组)是活动的也是如此。此外,SSA架构可以用于通过针对每个存储器模块具有相对更多的组并且因此更高的并发性,来有利地影响性能。例如,如果存储器模块的每个存储器芯片具有8个组,则整个存储器模块具有64个独立存取的组,每个独立存取的组可以存储完整的高速缓存行。因此,可以通过在存在存储的数据的低局域性时采用关闭页面存取策略来正面地影响性能。在存在高局域性的情况下,本文所公开的SSA架构可以与用于近似或估计行缓冲器命中可以如何用于解决对可能位于其它存储器芯片或组中的连续线进行预取的概率技术结合使用。
在一些示例中,图8的SSA架构还被配置为当对应的DRAM芯片(例如,DRAM芯片806g)关闭组中的行或子阵列时完成预装载组(例如,组808)。通过这种方式,对相同的组的任何后续存取将比未通过这种方式对组进行预装载更快速地开始。
图9是图8的实现为可以提供对其所有DRAM芯片806a-h的同时数据存取的PCB内嵌式DRAM存储器模块的DRAM模块804的详细示意图。在图9的所示的示例中,DRAM模块804具有64比特的分段数据总线902。分段数据总线902被物理地划分为8个独立的8比特数据总线904a-h,每个8比特的数据总线与DARM芯片806a-h中的相应DRAM芯片相对应。通过使用图9的示例性配置,DRAM芯片806a-h中的两个或更多个将独立的高速缓存行同时读出到存储器控制器802(图8)。
为了选择DRAM芯片806a-h中的特定DARM芯片并且指定其中的存储位置,DRAM存储器模块804具有存储器模块缓冲器908,该存储器模块缓冲器908具有地址缓冲器910和解复用器912。在所示的示例中,地址缓冲器910连接到地址总线914,解复用器912连接到地址总线914的最高有效位(MSB)916中的至少三个。在一些示例性的实现中,可以替代地使用除了MSB比特以外的三个比特。地址总线914的三个MSB 916由解复用器912用作针对每个存储器存取启用8个DRAM芯片806a-h中的指定的DRAM芯片的芯片选择。在存储器存取期间,地址缓冲器910锁存由存储器控制器802发送的地址比特,并且地址比特的一部分(例如,三个MSB916)由解复用器912锁存。解复用器912解码三个MSB 916以启用DRAM芯片806a-h中的指定的DRAM芯片(例如,由三个MSB 916识别的DRAM芯片),并且将来自地址缓冲器910的地址比特发送到DRAM芯片806a-h中的特定的DRAM芯片。然后,DRAM芯片806a-h中的特定的DRAM芯片可以在由地址缓冲器910锁存的地址指定的地址位置处提供对存储在其中的整个高速缓存行的存取(例如,读取/写入存取)。例如,如果读取操作存取DRAM芯片806g,则DRAM芯片806g通过在多个读取周期期间在其8比特的数据总线904g上针对每个读取周期输出8比特来读出64字节的高速缓存行。
在所示的示例中,存储器模块缓冲器908还具有控制缓冲器918,该控制缓冲器918用于锁存、缓冲或以其它方式存储来自存储器控制器802的一个或多个存储器存取控制信号。示例性的控制信号是启用写入的信号。一个或多个缓冲的控制信号还可以经由解复用器912发送到DRAM芯片806a-h中的相应DRAM芯片。
在图9的所示的示例中,因为DRAM芯片806a-h中的每一个与数据总线904a-h中的独立的数据总线接合,因此DRAM芯片806a-h中的多个DRAM芯片可以同时输出相应的高速缓存行。例如,由存储器控制器802(图8)发送到存储器模块缓冲器908的多个并发存储器存取请求可以传递到存储器模块缓冲器908中并且连续地发送到DRAM芯片806a-h中的相应DRAM芯片。通过这种方式,DRAM芯片806a-h中的所选择的DARM芯片中的每一个可以经由数据总线904a-h中的相应数据总线同时读出所请求的高速缓存行。在该示例性的实现中,存储器控制器802被配置为组织同时接收的高速缓存行并且以协调一致的方式将其发送到处理器的高速缓存存储器(例如,图1的处理器112的高速缓存存储器114)。
图10是可以用于实现图8的DRAM模块804以一次仅提供对单个DARM芯片(例如,针对每个高速缓存行读出的DRAM芯片806a-h中的单个DRAM芯片)的数据存取的可替换的多芯片存储器模块结构1000的示意图。在图10的所示的示例中,DRAM模块1000具有共享的一个芯片宽的数据总线1004,举例而言,其被示出为8比特宽的数据总线。共享的一个芯片宽的数据总线1004由DRAM芯片806a-h中的每一个DRAM芯片使用,一次一个芯片。通过使用图10的示例性的配置,仅DRAM芯片806a-h中的一个DRAM芯片可以针对每个读出周期将数据读出到存储器控制器802(图8)中。
为了选择DRAM芯片806a-h中的特定DRAM芯片并且指定其中的存储器位置,DRAM存储器模块1000具有存储器模块缓冲器1008,该存储器模块缓冲器1008具有地址缓冲器1010和解复用器1012。在所示的示例中,地址缓冲器1010连接到地址总线1014,解复用器1012连接到地址总线1014的最高有效位(MSB)1016中的至少三个。地址总线1014的三个MSB 1016由解复用器1012用作针对每个存储器存取启用8个DRAM芯片806a-h中的特定DRAM芯片的芯片选择。此外,存储器模块缓冲器1008还具有控制缓冲器1018,该控制缓冲器1018用于锁存、缓冲或以其它方式存储来自存储器控制器802的一个或多个存储器存取控制信号(例如,启用写入的信号)。
在存储器存取期间,地址缓冲器1010锁存由存储器控制器802发送的地址比特,并且地址比特的一部分(例如,三个MSB 1016)由解复用器1012使用。此外,控制缓冲器1018锁存一个或多个控制信号。解复用器1012解码三个MSB 1016(或者其它三个选择的比特替代三个MSB)以启用DRAM芯片806a-h中的特定DRAM芯片,并且将来自地址缓冲器1010的地址比特和来自控制缓冲器1018的控制信号发送到DRAM芯片806a-h中的特定DRAM芯片。因此,可以认为三个MSB 1016选择剩余的地址比特路由到的解复用器1012的输出端。然后,DRAM芯片806a-h中的特定DRAM芯片可以在由地址缓冲器1010锁存的地址指定的地址位置处提供对其中存储的整个高速缓存行的存取(例如,读取/写入存取)。例如,如果读取操作存取DRAM芯片806g,则DRAM芯片806g通过在多个读取周期上在共享的一个芯片宽的数据总线1004上针对每个读取周期输出8比特,来读出64比特的高速缓存行。
图11是可以地用于实现图8的DRAM模块804以根据SSA技术针对每个存储器存取选择性地激活特定的DARM芯片1102a-h的另一多芯片DARM存储器模块1100的示意图。DRAM存储器模块1100可以实现为PCB内嵌式存储器模块或者任何其它类型的存储器模块。此外,DRAM存储器模块1100的数据总线(未示出)可以实现为诸如图9的分段数据总线902的分段数据总线以在DRAM芯片1102a-h的独立的DRAM芯片中实现并发存储器存取,或者数据总线可以实现为诸如图10的共享的一个芯片宽的数据总线1004的共享的一个芯片宽的数据总线,或者可以使用其一些组合来实现数据总线。
在图11的所示的示例中,DRAM存储器模块1100具有存储器模块缓冲器1104,存储器模块缓冲器1104具有地址缓冲器1106和控制缓冲器1108。在从存储器控制器(例如,图8的存储器控制器802)接收到地址以后,地址缓冲器1106锁存地址比特,并且以广播的方式将地址发送给所有DRAM芯片1102a-h,这与图9和图10的示例性的实现是不同的,在图9和图10的示例性实现中,相应的存储器模块缓冲器908和1008使用芯片选择和解复用器来将地址仅选择性地发送到有关的DRAM芯片。此外,控制缓冲器1108锁存一个或多个控制信号(例如,启用写入的控制信号)并且还以广播的方式将控制信号发送到所有DRAM芯片1102a-h。在图11的所示的示例中,DRAM芯片1102a-h中的每一个被配置为确定接收到的地址是否指定其存储位置或者地址是否可以被忽略。当DRAM芯片确定其可以忽略地址时,其可以保持在睡眠模式或者其它低功率模式。当DRAM芯片确定地址是相关的时,DRAM芯片被激活并且提供对指定的存储器内容的存取。
在一些示例中,存储器模块缓冲器1104可以被忽略,并且与存储器模块缓冲器1104基本上类似或相同的存储器模块缓冲器可以实现在DRAM芯片402a-h中的每一个中,使得存储器模块1100如同其具有如图11中所示的存储器模块缓冲器1104一样操作。
在图11的所示的示例中,详细示出了DRAM芯片1102f。其它DRAM芯片1102a-e、1102g和1102h在结构和操作上与DRAM芯片1102f基本上类似,因此为了避免冗长,未进行示出。为了确定是解码还是忽略所接收的地址,DRAM芯片1102f具有三态缓冲器1110,该三态缓冲器1110从地址缓冲器1106接收地址比特并且将地址比特的一部分(例如,MSB)用作芯片选择输入。DRAM芯片1102f使用三态缓冲器1110的芯片选择输入来确定接收到的地址是否相关。通过提供三态缓冲器1110,DRAM芯片1102f可以被选择性地激活以提供对存储在其中的整个请求的高速缓存行的存取。
如果三态缓冲器1110的芯片选择输入启用DRAM芯片1102f,则三态缓冲器1110将地址发送到解复用器1112,该解复用器1112被配置为基于RAS/CAS信号的确认识别接收到的地址比特是与行地址还是与列地址相对应。DRAM芯片1102f被配置为在对地址进行解码并且激活对应的存储区域之前,在行地址寄存器1114中存储接收到的行地址并且在列地址寄存器1116中存储接收到的列地址。在图11的所示的示例中,一旦基于提供的地址信息对DRAM芯片1102f进行激活或选择,DRAM芯片1102f就被配置为对来自控制缓冲器1108的一个或多个控制信号进行操作或者对行地址和列地址解码以选择性地激活特定的存储区域(例如,SWL),如上面结合图4、图6和图7所讨论的,以提供对所请求的数据的存取。
图12示出了可以结合图8至图11的示例性的DRAM存储器模块中的任意一个使用的示例性的高速缓存行存储配置。在所示的示例中,示出了多芯片存储器模块1200的四个DRAM芯片1202a-d。在所示的示例中,为了分配负载并且提高并发性,在DRAM芯片1202a-d之间对数据进行交织,使得首先在DRAM芯片1202a-d中的不同DRAM芯片中放置连续的高速缓存行,然后在每个DRAM芯片的不同组中放置连续的高速缓存行。在所示的示例中,DRAM芯片1202a-d中的每一个包括四个组。DRAM芯片1202a被示出为具有组0至组3。通过将高速缓存行地址的最低有效位(LSB)作为组选择线,高速缓存行C0-C15以芯片-组交织的方式分布在不同的DRAM芯片1202a-d和DRAM芯片1202a-d的相应组中的不同组之间。例如,高速缓存行C0被存储在DRAM芯片1202a的组0中,并且高速缓存行C1被存储在DRAM芯片1202b的组0中。当到达最后一个DRAM芯片(例如,DRAM芯片1202d)时,下一个顺序高速缓存行被存储在第一DRAM芯片的顺序的下一个组中。例如,如图12所示,高速缓存行C3被存储在DRAM芯片1202d的组0中,并且高速缓存行C4被存储在DRAM芯片1202a的组1中。
图13是示出了图8的示例性的存储器控制器802的详细示意图。存储器控制器802被配置为连接到处理器(例如,图1的处理器112)与一个或多个存储器设备(例如,图8至图11的存储器模块)之间。在一些示例性的实现中,存储器控制器802可以实现为与处理器芯片分离的单独的IC芯片。可替换地,存储器控制器802可以形成在相同的芯片上或者作为处理器位于相同的IC封装中。在所示的示例中,单个地址总线和单个命令线总线用于与存储器模块上的所有DRAM芯片进行通信。
存储器控制器802可以被配置为在两个传送中提供地址。这在存储器模块或者存储器控制器802的IC封装出现管脚限制时特别有利。这种双传送地址与通过传统的方式传送不同的行地址和列地址是类似的。然而,存储器控制器802的地址传送不必与行地址和列地址相对应。如上面结合图8所讨论的,使用组/子阵列布置将高速缓存行存储在DRAM芯片中,这是与已知的DRAM芯片中的行/列布置不同的组织。因此,使用通过存储器控制器802在两个不同的地址周期中向存储器模块传送的单个地址来寻址高速缓存行。在所示的示例中,来自两个传送的地址比特识别独特的子阵列(例如,子阵列810a或810b中的一个)和该子阵列中的行(即,高速缓存行)。因此,在可以识别或寻址子阵列以前,需要整个地址。此外,地址的一部分(例如,地址的MSB)识别存储所请求的高速缓存行的DRAM芯片,并且地址的这一部分可以用作上面结合图9至图11所讨论的芯片选择以激活存储所请求的高速缓存行的对应的DRAM芯片。
在图13所示的示例中,存储器控制器802包括处理器地址接口1302和处理器数据接口1304,其中的每一个被配置为与处理器进行通信(例如,图1中的处理器112)。为了将从处理器接收的地址转换为地址比特和控制比特以对存储器模块中(例如,图9至图12的存储器模块)的存储器内容进行寻址,向存储器控制器802提供地址转换器1306。例如,地址转换器1306可以将地址分成两个可独立传送的部分,使得可以使用两个独立的地址传送经由存储器地址接口1308将冗长的地址传送给存储器模块。为了促进双传送地址,地址转换器1306可以使存储器接口控制线1310确认对应的控制信号线以向存储器模块告知地址传送的顺序。例如,可以确认存储器接口控制线1310的第一地址传送信号(未示出)以指示地址的第一部分正在由存储器地址接口1308输出,同时可以确认第二地址传送信号以指示地址的第二部分正在由存储器地址接口1308输出。
在虚拟到物理地址存储器转换是作为存储器控制器的操作的一部分来执行的一些示例性的实现中,地址转换器1306还可以在由处理器使用的虚拟存储器映射和对应于连接到存储器控制器802的物理存储器模块的寻址方案的物理存储器映射之间转换地址。在一些示例性的实现中,地址转换器1306还可以当信息存储在存储器中时或者当信息从存储器中删除时更新物理存储器映射。如果虚拟到物理的存储器地址转换是作为存储器控制器操作的一部分来执行的,则可以在处理器中执行这些存储器地址转换。
为了在存储器控制器802与存储器模块之间传送数据,向存储器控制器802提供了一个或多个数据总线。在所示的示例中,向存储器控制器802提供八个独立的、较窄的通道的数据总线接口1312a-h。通过这种方式,存储器控制器802可以如上面结合图8至图12所讨论的使用各自的数据总线接口1312a-h从各自的单独的DRAM芯片存取整个高速缓存行。在所示的示例中,数据总线接口1312a-h中的每一个包括八个数据线。在一些示例性的实现中,当存储器控制器802被配置为与具有诸如图10的共享的一个芯片数据总线1004的对应的单个较窄通道的数据总线的存储器模块接合时,可以向存储器控制器802提供单个较窄通道的数据总线。
为了级联高速缓存行段以形成整个高速缓存行,向存储器控制器802提供了数据级联器1314a-h。可以使用移位寄存器来实现数据级联器1314a-h中的每一个,所述移位寄存器一次接收等于数据总线接口1312a-h中的一个的宽度的多个比特并且针对每个读取存取将比特进行移位直到形成完整的高速缓存行为止。数据级联器1314a-h可以将其高速缓存行发送到处理器数据接口1304以发送到处理器。在所示的示例中,数据级联器1314a-h可以操作要发送到处理器的数据队列,并且处理器数据接口1304可以裁断来自数据级联器1314a-h的通信以按照处理器期望的顺序将高速缓存行发送到处理器。
在一些示例中,向存储器控制器802提供DRAM芯片(例如,图11的DRAM芯片1102a-h中的每一个)中的每个组的单独的数据队列。例如,如图13所示,数据级联器1314a连接到具有与数据级联器1314a对应的DRAM芯片的每个组的单独的数据队列的数据队列阵列1324。具体地说,数据队列阵列1324包括SDRAM芯片的第一组的B0队列1326a、SDRAM芯片的第二组的B1队列1326b、SDRAM芯片的第三组的B2队列1326c和SDRAM芯片的第四组的B3队列1326d。在所示的示例中,组队列1326a-d被配置为对从SDRAM芯片接收的数据进行保持或排队以接着向处理器进行转发。在所示的示例中,组队列1326a-d实现了对与其可以发送到请求处理器相比更快速地接收的数据进行缓存。通过这种方式,可以在存储器控制器802处从存储器快速地接收所请求的数据,使得可以释放存储器以给其它存储器请求提供服务。虽然未在图13中示出,但是也向其它数据级联器1314b-h中的每一个提供了与数据队列阵列1324基本上类似或相同的各自的数据队列阵列。也即是说,在所示的示例中,在存储器控制器802中提供的组队列(与组队列1326a-d基本上类似或相等)的数量等于单个DRAM芯片中组的数量乘以存储器模块(例如,图11的存储器模块1100)中DRAM芯片的数量。
为了实现与存储器存取有关的错误检测和校正,向存储器控制器提供了错误检测器1316、校验和发生器1318、奇偶校验发生器1320和数据重建器1322。所示的示例的存储器控制器802使用错误检测器1316来验证与下面结合图17和图18所讨论的存储器芯片中的高速缓存行相关联的所存储的校验和,并且检测所存储的信息中的错误。也即是说,当在存储高速缓存行(例如,图17的高速缓存行1704)中的一些或全部的数据存储位置中存在错误时,与高速缓存行对应的校验和信息(例如,图17的校验和1706)暴露错误,并且错误检测器1316被配置为基于校验和信息检测错误。所示的示例的存储器控制器802使用校验和发生器1318每当存储器控制器802向存储器写入数据时生成新的校验和。所示的示例的存储器控制器802使用奇偶校验发生器1320每当存储器控制器802向存储器写入数据时生成更新的奇偶校验值。所示的示例的存储器控制器802使用数据重建器1322在错误检测器1316基于暴露错误的对应校验和信息检测到高速缓存行中的错误时重建未被损坏的数据。校验和和奇偶校验值的存储位置可以存储在与其各自的高速缓存行的存储位置相关联的物理存储器映射中。
图14是示出了可以用于执行上面结合图4、图6和图7所描述的SBA存储器存取的示例性过程的流程图。下面将图14的示例性过程描述为由单个DRAM芯片(例如,图4、图6和图7的DRAM芯片402f)执行。然而,可以通过类似的方式由存储器模块400(图4)的DRAM芯片402a-h或者其它存储器结构的DRAM芯片来执行相同的过程首先,DRAM芯片402f接收行地址(方框1402),选择行地址寄存器412(图4)(方框1404),并且将行地址存储在行地址寄存器412中(方框1406)。例如,DRAM芯片402f可以基于在解复用器416处接收的RAS信号的确认来选择行地址寄存器412。
DRAM芯片402f接收列地址(方框1408),选择列地址寄存器414(图4)(方框1410),并且将列地址存储在列地址寄存器414中(方框1412)。行解码器604和列解码器606(图6和图7)同时解码行地址和列地址(方框1414)。行解码器604激活与行地址对应的MWL(例如,图7的MWL0线704和MWL1线706中的一个)(方框1416)。列解码器606启用与列地址(或者列地址的一部分)对应的RX线(例如,RX-0、RX-1、……、RX-N“AND“门中的一个)(方框1418)。通过在方框1416处激活MWL并且在方框1418处激活RX线中的一个,SWL“AND”门(例如,图7的SWL“AND”门712)输出较高信号以启用数据的所请求的字线段(例如,图6和图7的字线段610)。行缓冲器612(图6)装载激活的字线段数据610(方框1420),并且数据I/O缓冲器614(图6和图7)输出字线段数据610(方框1422)。然后,结束图14的示例性的过程。
图15是示出了可以用于执行上面结合图8至图10、图12和图13描述的SSA存储器存取的示例性的过程的流程图。下面将图15的示例性过程描述为由图8的存储器模块800执行。然而,可以以类似的方式由图9至图10中示出的其它存储器模块或者其它存储器结构中的任意一个来执行相同的过程。首先,存储器模块800接收地址(方框1502),并且地址缓冲器910(图9)存储地址(方框1504)。例如,如上所讨论的,可以在两个地址传送中接收地址,并且可以通过地址缓冲器910将地址级联以发送到DRAM芯片806a-h中的对应一个DRAM芯片。
然后,解复用器912选择与所接收的地址对应的DRAM芯片806a-h中的一个(方框1506)。例如,解复用器912对在地址总线914上发送的地址比特的一部分(例如,MSB)进行解码,以选择DRAM芯片806a-h中的对应一个。然后,解复用器912将来自地址缓冲器910的地址发送到DARM芯片806a-h中选择的一个DARM芯片(方框1508)。在一些示例性的实现中,如果地址比特的数量超过了DRAM芯片的地址接口的管脚数,则来自地址缓冲器910的地址可以在两个传送中发送给选择的DRAM芯片。
DRAM芯片中所选择的DRAM芯片(例如,DRAM芯片806g)对接收的地址进行解码(方框1510)并且激活由地址指定的组(例如,图8的组808)(方框1512)和也由地址指定的活动组中的子阵列(例如,子阵列810a或810b中的一个)(方框1514)。然后,DRAM芯片806g激活也由地址指定的行(方框1516)并且选择存储在活动行中的高速缓存行的第一高速缓存行段(方框1518)。高速缓存行段是形成整个高速缓存行的一部分的比特的子组。因此,如果高速缓存行的宽度为64比特,则高速缓存行段的宽度可以是8比特,使得可以使用多个8比特的读取周期来读出64比特的高速缓存行。
行缓冲器814(图8)装载所选择的高速缓存行段数据(方框1520),并且共享的8比特外部数据I/O总线816输出所选择的高速缓存行段数据(方框1522)。如果存在剩余的另一高速缓存行段(例如,64比特宽的高速缓存行的另一段)(方框1524),则DRAM芯片806g选择下一个高速缓存行段(方框1526)并且控制返回方框1520。当没有剩余的其它高速缓存行段需要输出(方框1524)时,这意味着DRAM芯片806g已经完成了对整个高速缓存行的读出。在一些示例中,DRAM芯片806g关闭活动行(或子阵列)并且完成对该行(或子阵列)装载到的组的预加载以实现与未通过这种方式对组进行预装载相比更快速地开始对相同的组进行后续存取。然后,结束图15的示例性过程。
图16是示出了可以用于执行上面结合图11所描述的SSA存储器存取的示例性过程的流程图。下面将图16的示例性过程描述为由图11的存储器模块1100执行;然而,可以使用其它存储器结构。首先,存储器模块1100接收地址(方框1602),并且地址缓冲器1106(图11)存储地址(方框1604)。例如,如上文所讨论的,可以在两个地址传送中接收地址,并且可以通过地址缓冲器1106将地址进行级联以发送到DRAM芯片1102a-h。
存储器模块缓冲器1104(图11)将来自地址缓冲器1106的地址发送给所有DRAM芯片1102a-h(方框1606)。在一些示例性的实现中,如果地址比特的数量超过DRAM芯片1102a-h的地址接口的管脚数,则可以在两个传送中将来自地址缓冲器1106的地址发送给DRAM芯片1102a-h。
DRAM芯片1102a-h中的每一个确定是解码还是忽略所接收的地址(方框1608)。例如,如上文结合图11所讨论的,DRAM芯片1102f的三态缓冲器1110可以对地址的一部分(例如,MSB)进行解码,就如同其是用于确定DRAM芯片1102f是否旨在对所接收的地址进行操作的芯片选择一样。
由地址(例如,DRAM芯片1102f)指定的DRAM芯片对地址进行解码(方框1610)。所指定的DRAM芯片激活由地址指定的组(例如,图8的组808)(方框1612)和也由地址指定的活动组中的子阵列(例如,子阵列810a或810b中的一个)(方框1614)。然后,所寻址的DRAM芯片激活也由地址指定的行(方框1616),并且选择活动行中存储的高速缓存行的第一高速缓存行段(方框1618)。高速缓存行段是形成整个高速缓存行的一部分的比特的子组。因此,如果高速缓存行的宽度是64比特,则高速缓存行段的宽度可以是8比特,使得可以使用多个8比特读取周期来读出64比特的高速缓存行。
所寻址的DRAM芯片的行缓冲器(例如,图8的行缓冲器814)装载所选择的高速缓存行段数据(方框1620)。所寻址的DRAM芯片的共享的8比特外部数据I/O总线输出所选择的高速缓存行段数据(方框1622)。如果存在剩余的另一高速缓存行段(例如,64比特宽的高速缓存行的另一段)(方框1624),则所寻址的DRAM芯片选择下一个高速缓存行段(方框1626)并且控制返回方框1620。当没有剩余的其它高速缓存行段需要输出(方框1624)(即,所寻址的DRAM芯片已经完成对整个请求的高速缓存行的读出)时,图16的示例性过程结束。在一些示例中,所寻址的DRAM芯片关闭活动行(或子阵列)并且完成对行(或子阵列)装载到的组的预加载以实现对与未通过这种方式对组进行预装载相比更快速地开始对相同的组进行后续存取。
图17示出了被配置用于存储错误核查和奇偶校验信息以在存取其中存储的数据时实现错误核查和数据校正操作的示例性的多芯片存储器模块1700。在所示的示例中,存储器模块1700包括九个存储器芯片1702a-i。存储器模块1700可以有利地用于执行实现上面结合图8至图13、图15和图16所描述的SSA存储器存取的存储器模块。也即是说,上面结合图8至图12所描述的存储器结构实现了从单个DRAM芯片获取整个高速缓存行。为了促进对被损坏的高速缓存行的检测,存储器模块1700存储与每个存储的高速缓存行相关联的校验和。此外,为了促进对被损坏的高速缓存行的重建,存储器模块1700在所有存储器芯片1702a-i中存储奇偶校验信息。
在图17的所示的示例中,调整了存储器模块1700的架构,使得存储器芯片1702a-i中的每一个可以存储整个高速缓存行和针对每个高速缓存行的对应校验和。在图7中,通过第一存储器模块1702a来存储与对应的校验和(C)1706相关联的高速缓存行L01704。通过这种方式存储每个高速缓存行的相应校验和需要存储器模块1700的额外存储空间。例如,存储每个64字节的高速缓存行的8字节校验和引起1.625%的存储开销。为了获取高速缓存行(例如,高速缓存行L01704)及其对应的校验和(例如,校验和(C)1706),可以使用更大的突发长度。例如,九个8字节的数据读取可以用于获取64字节的高速缓存行及其8字节的校验和,而不是使用仅8字节的数据读取来仅获取64字节的高速缓存行。类似地,九个8字节的数据写入可以用于将64字节的高速缓存行及其校验和写入到对应的存储位置。
在图17所示的示例中,存储器模块1700存储与8个高速缓存行对应的奇偶校验值。为了适应奇偶校验信息所需的额外存储,向存储器模块1700提供九个存储器模块1702a-i而不是仅八个存储器模块。在存储器芯片1702a-i中的不同存储器芯片之间存储奇偶校验值。例如,如图17所示,与高速缓存行L0-L7对应的奇偶校验值P01708被存储在存储器模块1702i中。此外,将奇偶校验值P01708与对应于奇偶校验值P01708的校验和(C)一起存储。当在获取的高速缓存行中检测到错误时,可以通过读取对应的奇偶校验值以及与奇偶校验值对应的其它高速缓存行来重建未被损坏的高速缓存行。例如,如果在读取高速缓存行L01704时检测到错误,则可以例如使用与RAID-4和/或RAID-5数据重建过程的廉价冗余磁盘阵列(RAID)技术相关联的已知的重建技术基于奇偶校验值P01708和高速缓存行L1-L7(例如,通过图13的重建器1322)来重建未被损坏的情况。
在读取存取期间,可以通过诸如图13的存储器控制器802的存储器控制器来执行校验和验证。例如,可以由错误检测器1316(图13)使用比特反转来执行校验和验证功能,以确保检测到固定“0”故障。如果检测到错误,则数据重建器1322(图13)可以基于存储的奇偶校验信息来重建请求的高速缓存行。为了实现校验和验证,在读取存取存储位置处的数据期间,存储器模块1700(例如,在与数据的读取存取相同的读取周期期间)使用额外的突发来进一步读出对应的校验和值,以使存储器控制器802的错误检测器1316(图13)能够执行校验和验证。例如,当给高速缓存行L01704的读取请求提供服务时,存储器芯片1702a读出所请求的高速缓存行L01704并且使用额外的突发来进一步读出与高速缓存行L01704对应的校验和值1706。通过这种方式,存储器芯片1702a给请求存储器控制器802提供了所请求的数据和对应的存储的校验和,以检测所请求的数据中可能存在的任何错误。在所示的示例中,存储器控制器802经由数据总线接口1312a-g(图13)读入高速缓存行(数据)、校验和以及奇偶校验值。
在写入存取期间,存储器控制器802将高速缓存行和对应的校验和写入其在存储器芯片(例如,存储器芯片1702a-i中的一个)中的指定的寻址位置处。此外,存储器控制器802写入与所写入的高速缓存行对应的更新的奇偶校验值。为了执行这种写入操作,存储器控制器802必须首先从存储器芯片(例如,存储器芯片1702a)中读出旧的高速缓存行(例如,高速缓存行L01704)和校验和(例如,校验和1706),从存储器芯片中读出旧的对应的奇偶校验值(例如,奇偶校验值P01708),写入新的高速缓存行和校验和(替换旧的高速缓存行和校验和),并且写入对应的更新的奇偶校验值(替换旧的奇偶校验值)。对于每个写入操作,存储器控制器802可以使用校验和发生器1318(图13)来生成新的校验和值,并且使用奇偶校验发生器1320(图13)来生成新的奇偶校验值。在所示的示例中,存储器控制器802经由数据总线接口1312a-g(图13)读入并且写完高速缓存行(数据)、校验和以及奇偶校验值。
图18是示出了可以用于在存取存储器中的数据时执行错误核查和数据校正操作的示例性过程的流程图。结合图13的示例性的存储器控制器802和图17的存储器模块1700描述了图18的示例性过程,但是除了存储器模块802以外,还可以使用其它处理设备和/或存储器,或者替代存储器模块802,可以使用其它处理设备和/或存储器。可以使用上面结合图8至图12所描述的SSA存储器存取来执行结合图18的示例性过程执行的存储器存取。
首先,存储器控制器802确定是执行读取操作还是写入操作(方框1802)。如果存储器控制器802要执行读取操作,则存储器地址接口1308将地址发送到存储器模块1700(方框1804)。可以在两个传送周期中将地址作为两个独立的地址部分进行发送。然后,存储器控制器802经由数据总线接口1312a-h(图13)中的一个接收高速缓存行(例如,图17的高速缓存行L01704)和对应的校验和(例如,图17的校验和(C)1706)(方框1806)。例如,可以将高速缓存行和校验和锁存到数据级联器1314a-h(图13)中的对应一个中。
错误检测器1316基于接收到的校验和值对所接收的高速缓存行执行数据验证操作(方框1808)。如果检测到错误(方框1810),则数据重建器1322执行数据重建操作(方框1812)。例如,数据重建器1322可以使存储器控制器802获取与在方框1808处检测到的被损坏的高速缓存行对应的奇偶校验值(例如,图17的奇偶校验值1708)以及与所获取的奇偶校验值对应的所有其它高速缓存行(例如,图7的高速缓存行L1至L7)。然后,数据重建器1322基于其它高速缓存行和获取的奇偶校验值使用例如与RAID-4和/或RAID-5数据重建过程相关联的已知重建技术来重建所请求的高速缓存行的未被损坏的版本。
如果未检测到错误(方框1810)或者在数据重建器1322重建未被损坏的高速缓存行以后,处理器数据接口1304(图13)将所请求的高速缓存行发送到请求处理器(方框1814)并且图18的过程结束。
如果在方框1802处存储器控制器802确定其需要执行写入操作,则处理器数据接口1304从处理器接收要写入的数据(方框1816)。校验和发生器1318基于数据生成要写入的数据的校验和值(方框1818),并且数据级联器1314a-h中的一个将要写入的数据与对应的校验和值进行级联(方框1820)。奇偶校验发生器1320(图13)使存储器控制器802读取要写入的、在数据位置处存储的原始数据和校验和并且从存储器模块1700读取奇偶校验值(方框1822)。例如,如果写入操作是将值写入到高速缓存行L01704中(图17),则存储器控制器802读取高速缓存行L01704的原始值、校验和值1706和奇偶校验值1708及其校验和1710。
奇偶校验发生器1320基于要写入的数据及在方框1818处生成的其校验和值来生成新的奇偶校验值(方框1824)。校验和发生器1318基于奇偶校验值生成新的奇偶校验值的新的校验和值(方框1826)。数据级联器1314a-h中的对应一个将更新的奇偶校验值与其新的校验和值进行级联(方框1828)。然后,存储器控制器802将新的高速缓存行值及其校验和值写入到存储器模块1700中(方框1830),并且将更新的奇偶校验值及其校验和值写入到存储器模块1700中(方框1832)。然后,图18的示例性过程结束。
在一些示例性的实现中,图14至图16和/或图18的示例性过程中的一个或多个可以使用机器可读指令来实现,所述机器可读指令当被执行时使得设备(例如,可编程控制器或者其它可编程机器或集成电路)执行图14至图16和/或图18中所示的操作。例如,图14至图16和/或图18的示例性过程可以使用处理器、控制器和/或任何其它适当的处理设备来执行。例如,图14至图16和/或图18的示例性过程可以用存储在与处理器或控制器相关联的诸如闪存、只读存储器(ROM)和/或随机存取存储器(RAM)的有形机器可读介质上的编码指令来实现。如本文所使用的术语有形计算机可读介质被明确地定义为包括任意类型的计算机可读存储器而不包括传输信号。此外或可替换地,图14至图16和/或图18的示例性过程可以使用存储在诸如闪存、只读存储器(ROM)、随机存取存储器(RAM)、高速缓存或任何其它存储介质的非有形计算机可读介质上的编码指令(例如,计算机可读指令)来实现,其中,在所述非有形计算机可读介质上,信息被存储任意持续时间(例如,持续延长的时间段、永久地、短暂地、暂时缓存和/或缓存信息)。如本文所使用的术语非有形计算机可读介质被明确地定义为包括任意类型的计算机可读介质而不包括传输信号。
可替换地,图14至图16和/或图18的示例性过程可以使用以下各项的任意组合来实现:专用集成电路(ASIC)、可编程逻辑设备(PLD)、现场可编程逻辑设备(FPLD)、分立的逻辑、硬件、固件等。此外,图14至图16和/或图18的示例性过程可以实现为前述技术中的任意技术的任意组合,例如,固件、软件、分立的逻辑和/或硬件的任意组合。此外,虽然参照图14至图16和/或图18的流程图描述了图14至图16和/或图18的示例性过程,但是可以使用其它用于执行图14至图16和/或图18的过程的方法。例如,方框的执行顺序可以改变,和/或所描述的方框中的一些可以改变、删除、再细分或合并。此外,可以通过例如分立的处理线程、处理器、设备、分立的逻辑、电路等来顺序地和/或并行地执行图14至图16和/或图18的示例性过程中的任意一个或全部。
图19至图20示出了与分析本文所公开的存储器存取技术和结构相对于已知的存储器存取技术和结构的能耗和存储器存取性能相关联的示例性的测试设置和示例性的存储器能量参数。如下面所讨论的,本文所公开的存储器存取技术和结构有利地影响存储器子系统相对于已知的存储器存取技术和结构的能耗和存储器存取性能。
图19示出了示例性的测试台参数表1900,该测试台参数表1900示出了用于分析本文公开的方法、装置和制品的性能的示例性的处理器系统模型的示例性的测试台参数。下面所讨论的示例性的性能分析是通过对具有如测试台参数表1900中指示的专用L1高速缓存和共享L2高速缓存的基线8核无序处理器进行建模来进行的。为了性能分析的目的,根据美光科技公司SDRAM存储器设备(美光科技公司部门MT47H256M8)来实现或建模基线结构。
为了性能分析的目的,将主存储器容量设置为40亿字节并且如测试台参数表1900中所示的进行组织。 Simics全系统模拟器用于实现具有由Simics的“ooo-micro-arch”模型支持的使用无序定时的模拟基础设施。(Simics是用于以高性能速度运行目标硬件的生产二进制(production binaries)的全系统模拟器。)“trans-staller”模块被大量修改以准确地捕获包括多个通道、排列、组和每个组中的打开行的DRAM设备定时信息。对打开行页面管理策略和关闭行页面管理策略二者进行建模,其中,打开行页面管理策略和关闭行页面管理策略具有使用适当的队列延迟的先来先服务(FCFS)和先准备-先来先服务(FR-FCFS)调度。此外,对通过存储器控制器对命令进行重叠处理进行建模以隐藏预加载和激活延迟。此外,总线模型用于对存储器控制器与DIMM之间的数据传送进行建模。地址映射策略来源于DRAMSim框架(存储器系统模拟器)。DRAM定时信息是从部门MT47H256M8的美光科技公司数据表得到的。
DRAM组的区域、延迟和能量数是从CACTI 6.5获得的,并且被修改以包括商品DRAM的准确模型,其均用于基线存储器设计并且具有分层字线。CACTI是将高速缓存的模型与存储器存取时间、周期时间、区域、泄露和动态功率的模型集成在一起的模型。通过将所有这些模型集成在一起,时间、功率和区域之间的折中均基于相同的假设,并且因此相互一致。
默认情况下,CACTI将较大的DRAM阵列划分为多个簇,并且使用H树来连接各个簇。这种组织引起较低的延迟但是需要较大的区域。然而,针对区域对传统的DRAM组进行大量优化以减小成本并且使用具有最小外围电路开销的非常大的阵列。此外,使用跨越阵列的长位线而不是使用H树互连来完成读取操作或写入操作。为了性能分析,CACTI被修改以反映典型的商品DRAM实现。虽然将分层字线与分层位线一起建模,但是可以减小MWL至SWL连接器的数量,因此,还可以通过对增加的位线能量进行折中来对阵列区域进行减小。例如,在第二级位线中执行选择性的位线激活并且在读取第一级中的所有位线将增加能量但是可能显著地减小阵列区域。
为了SBA性能分析的目的,分层字线的特定的分析模型被并入到CACTI 6.5中以量化所需的管芯阵列区域的开销。当引入足够的SWL以准确地激活组中的一个高速缓存行时,引起了较高的区域开销。这是因为每隔组中的几个存储器单元就需要由SWL“AND”门(例如,图7的SWL“AND”门712)和RX“AND”门(例如,图7的RX“AND”门710)信号引入的区域开销。虽然这导致激活最小数量的位线,但是管芯区域成本可能过高。然而,为了更低的成本,可以通过不作为选择性的来对能量进行折中。例如,针对每个存取,读出16个高速缓存行而不是单个高速缓存行,SWL变长16倍(例如,比“AND”门小16倍)。这仍然导致相对于基线相对较高的能量节省,并且相对于基线仅12%的区域开销。在关闭页面策略方法中使用16个高速缓存行读出。
在图20中示出了用于进行性能分析的示例性的DRAM能量参数。具体地说,图20示出了包括本文公开的存储器存取技术和结构的DRAM能量参数以及已知的存储器存取技术和结构的示例性的DRAM能量参数的表2000。表2000中示出的基线能量值是基于部门MT47H256M8的美光科技公司数据表以及美光科技公司的系统功率计算器(http://www.micron.com/support/part info/powercalc)。本文公开的SBA和SSA存储器存取技术和结构是使用已知的多线程PARSEC(普林斯顿共享内存计算机的应用程序库)、NAS(NASA先进超级计算)和STREAM(简单的合成基准程序,其测试可持续的存储器带宽(以兆字节(MB)/s为单位)以及用于简单矢量内核的对应的计算速率)基准套件的子集来评估的。在分析期间,应用程序运行一百万个DRAM存取并且报告总能耗和针对每个周期的指令(IPC)。
图21和图22示出了在代码执行环境中用于传统的存储器设备的行存取操作的性能图形。具体地说,图21的图形2100示出了在代码执行环境中根据传统存储器中的芯片的数量的行缓冲器命中率,图22的图形2200示出了在代码执行环境中基于8比特的传统存储器的行再使用数量。如图2100所示,行缓冲器命中率随着同时存取存储器的线程的数量的增加爱而显著下降。例如,图形2100示出了平均速率从单核系统的67%下降到16核系统的34%。此外,如图22的图形2200所示,不论何时将行锁存到行缓冲器(例如,图5的行缓冲器508),其在由于冲突被关闭之前使用的次数通常仅为一次或两次。这说明即使在具有较高的局域性和较好的平均行缓冲器命中率的基准(例如,NAS共轭梯度(cg)基准)上,大量的页面仍然展示出相对较低的行缓冲器再使用。这意味着(如在传统的存储器存取技术中)激活整个8千字节(KB)行的能量成本相对于仅非常少量的存取已摊销,这浪费了相当大的能量。
现在转向图23,图形2300将使用已知的存储器存取技术和结构的行/字线存取的示例性的归一化DRAM能耗与使用本文公开的存储器存取技术和结构的行/字线存取的示例性的归一化DRAM能耗进行比较。具体地说,图形2300示出了使用关闭行基线、SBA存储器存取和SSA存储器存取、归一化为打开行基线的能耗。如图所示,关闭行基线在能耗方面与打开行基线相比相对较差。例如,图形2100示出了能耗平均增加了73%,而各个基准的数量基于其相应的行缓冲器命中率而改变。这是因为甚至可能是行缓冲器命中(因此不会引起再次激活整个行的能量)的存取需要执行整个激活读取预装载周期的事实。
在图24中,图形2400示出了在基线组织(打开行和关闭行)中,位线中的能量在基线存储器设备的总能耗中占主要地位。这是因为对基线存储器设备的新行的每次存取导致大量位线被激活两次(一次用于将数据从单元中读出到行缓冲器中,一次用于预装载该阵列)。
通过使用本文公开的SBA或SSA结构和存储器存取技术消除了能耗成分的相对较大部分,如图形2300和2400中所示。通过等待CAS信号并且仅激活/预装载用于对存储器存取请求提供服务所需的准确的高速缓存行,位线能量下降128倍。这导致每个存取的显著的能量下降。然而,限制区域开销(由于额外的逻辑(例如,图7的RX“AND”门710和对应的行以及SWL“AND”门712和对应的行))有时可能指示在SBA中使用粗粒度的选择,这在一些情况下可能导致比SSA略微更大的能耗。与基线打开页面系统相比,SBA展示出3X的平均动态存储器能量节省,并且SSA展示出超过6.4X的平均动态存储器能量节省。图23和图24的结果显示SBA和SSA提供了位线的最大的能量下降。由于诸如解码器、预解码器、组内总线、总线端子等其它组件引起的能量开销保持相对一致。因此,其对总能量的贡献随着位线能量的减小而增加。
在打开页面策略中,打开行命中有时可能具有相对较高的能量效率,这是因为当其打开时其不涉及对该行的后续存取的任何额外激活。构造分析模型以估计针对打开页面基线有多少高速缓存行必须从行缓冲器中读出以匹配SBA/SSA结构和存储器存取技术的针对每次存取的能量。结果显示行再使用的平均水平需为23。然而,因为已知应用的典型的行再使用水平相对较低(如图2200中所示),因此SBA/SSA的能量性能比使用打开页面策略的基线存储器更好。
转向图25和图26,图形2500和2600显示出当将低功率状态与已知的存储器存取技术和结构结合使用时分别对存储器延迟和能量减少的示例性影响。以与子阵列一样精细的粒度(例如,使用SSA)定位和管理DRAM存取允许有更多机会来使DRAM的相对更大的部分处于低功率状态。已知的DRAM设备(例如,通过关闭不同水平的电路)支持多个断电水平,每个断电水平具有不同的唤醒延迟惩罚。为了性能分析的目的,使用基于图20的表2000中所示的(通过美光科技公司的数据表和美光科技公司的系统功率计算器获得的)能量数值计算P(功率节省因子)和W(唤醒)值,来评估两个简单的低功率模式。对于基线存储器设备的最深的睡眠模式(即,自刷新模式),P是23,W是200个存储器周期。在基线存储器设备的较不深的睡眠模式(即,断电模式)下,P是较低的7.5,W也是较低的仅3个存储器周期。这些测量是在将空闲周期阈值(I)改变为唤醒时间W的多倍的同时进行的。
图形2500和2600示出了这些低功率状态对性能和能耗的示例性影响。如图2600中所示,与更延迟高效的模式(断电模式)相比,更延迟昂贵的低功率模式(自刷新模式)实现了相对更少的能量节省。如图2500所示,对于断电模式,将转换频率减小到低功率状态(即,增加空闲周期阈值(I))使得平均存储器延迟惩罚从刚好低于4%减小到刚好高于0.5%。如图2600所示,能量节省对应地从86%下降到74%。如图2500所示,对于延迟昂贵的自刷新模式而言,性能影响相对较大,其在最小积极空闲周期阈值(I)情况下从非常积极的空闲周期阈值(I)处的超过400%改变为低于20%。如图2600所示,对应的能量节省从90%变为20%。这些断电模式也可以应用于基线存储器架构。然而,由于基线存储器至多是DIMM组,因此可以用以完成的粒度远远更粗略。这意味着有更少的机会使基线存储器移动到低功率状态。
作为比较,相对于基线存储器对低开销的断电状态的应用进行分析。平均而言,即使在积极睡眠阈值情况下,基线存储器组仅可以在约80%的时间内处于该低开销的断电模式下,而同时在增加的存储器延迟方面引起16%的惩罚。与本文公开的SBA和SSA技术不同,较不积极显著地影响对基线存储器进行断电的能力,而仅在17%的时间内进入睡眠模式的组具有最小3%的延迟惩罚。作为另一个比较点,针对恒定的10%的延迟开销,对可以使子阵列或组在SSA对基线中进入最深的睡眠模式(自刷新模式)的时间百分比进行比较。结果显示SSA中的子阵列可以在接近18%的时间内进入深度睡眠,而基线存储器中的组可以仅在约5%的时间内进行深度睡眠。
图27是将当使用已知的存储器存取技术来存取存储器时的示例性的平均主存储器延迟与当使用本文所公开的存储器存取技术和结构来存取存储器时的示例性的平均主存储器延迟进行比较的图形2700。图28是将当使用已知的存储器存取技术来存取存储器时由不同的存储器子系统贡献的示例性的存储器延迟与当使用本文所公开的存储器存取技术和结构来存取存储器时由不同的存储器子系统贡献的示例性的存储器延迟进行比较的图形2800。图形2700显示出使用SBA或SSA结构以及存储器存取技术对存储器存取延迟具有正面影响。图形2800将图形2700的示例性延迟分解为多个存储器组件的平均贡献。影响延迟的主要因素之一是页面管理策略。对于大多数(13个中的8个)基准而言,从打开页面基线移动到关闭页面策略导致平均存储器延迟下降约16%。这显示出将关闭页面策略与SBA和SSA结构以及存储器存取技术结合使用的有利优点。剩余的基准显示出当移动到关闭页面时存储器延迟平均增加约17%。使用上面结合SBA结构和存储器存取技术所描述的公布的RAS技术导致平均刚好低于8%的额外的较小延迟。
在示例性的图形2800中,排队延迟是总存储器存取延迟的主要贡献。然而,这在已知的DRAM系统中也是成立的。因此,由SBA的公布的RAS引起的额外延迟不会显著改变平均存储器存取延迟。
对于本文所示出的示例性的SSA结构和存储器存取技术,每个高速缓存行返回是在例如八个线上串联到存储器控制器。由这种串联引起的延迟成为总存取时间的主要因素。然而,通过在系统中增加大量并联对此进行补偿。也即是说,存储器模块中的每个存储器芯片可以给独立的请求组提供服务,从而显著地减小队列延迟。因此,即使数据传送被串联,存储器延迟也不会显著增加。在图2700中示出的12个基准中的8个基准中,延迟刚好增加到40%以上。其它四个基准可以更好地采用并联,这补偿了串联延迟,平均存取时间减小了约30%。这些也是具有最高存储器延迟的应用,并且因此SSA的性能比基线模型更好。
图29是将针对已知的存储器存取技术和结构的示例性的归一化IPC与针对本文公开的存储器存取技术和结构的示例性的归一化IPC进行比较的图形2900。大部分示例性的基准显示出使用关闭行策略比使用打开行策略更好的性能。具体地说,存在对12个基准中的9个基准的刚好高于5%的性能改进。其它三个示例性的基准显示出平均约20%性能下降。这些是具有相对更高的缺失率(针对每1000个指令10的量级)的基准。使用SBA的发布的RAS导致IPC相对于关闭行基线的略微减小(平均约为3%),其受到三个高度敏感的基准应用(流、cg、is)显著影响。
与展示出图27的图形2700中的存储器延迟增加的五个基准上的打开页面基线相比,本文所示的示例性的SSA技术展示出平均5.5的性能下降。对于SSA而言,具有减小的存储器存取延迟的其它七个基准展示出平均42%的性能提高。这些较高的数值被观测到是因为这些应用受到组竞争和遇到瓶颈的SSA地址的限制。总的来说,除了显著地降低DRAM存取能量以外,SSA可以提高性能,同时仅产生较小的性能下降。因为针对每个存储器子系统存储器芯片的数量增加并且对存储器控制器施加更高的队列压力,因此SSA可以用于实现甚至更高的能量和性能改进。
图30是将使用上面结合图13、图17和图18所描述的chipkill错误检测和校正技术的存储器存取性能的示例性差别与不使用上面结合图13、图17和图18所描述的chipkill错误检测和校正技术的存储器存取性能的示例性差别进行比较的图形3000。具体地说,图形3000示出了由于使用利用本文公开的chipkill方法的SSA引起的IPC性能下降。这是由在写入期间增加的组竞争引起的。平均来说,存储器延迟性能下降40%,这导致IPC性能下降11%。与非chipkill SSA实现相比,针对chipkill SSA实现的每次写入还存在额外的能耗。这导致动态能量增加2.2X以保持chipkill水平可靠性,这仍然比由基线存储器结构使用的动态能量明显更低。
虽然已经在本文中描述了某些方法、装置和制品,但是本专利的涵盖范围并非限制于此。相反,本专利涵盖在文字上或者根据等同形式的原则适当地落入到所附权利要求的范围内的所有方法、装置和制品。
Claims (14)
1.一种存储器,包括:
行地址寄存器(412),其用于存储与存储器阵列(602)中的行(608)对应的行地址;
行解码器(604),其被耦合到所述行地址寄存器,以在所述存储器接收到列地址以后确认所述行的字线(704)上的信号;以及
列解码器(606),其用于基于同时解码的所述列地址和在所述字线上确认的所述信号来选择性地激活所述行的部分。
2.根据权利要求1所述的存储器,还包括:地址缓冲器(406),其用于锁存从存储器控制器(102)接收到的所述行地址并且向所述行地址寄存器发送所述行地址以及锁存所述列地址并且向所述存储器的列地址寄存器(414)发送所述列地址,以促进在所述存储器处对所述行地址和所述列地址同时解码。
3.根据权利要求2所述的存储器,其中,所述存储器是第一存储器,所述地址缓冲器在包含所述存储器和第二存储器的存储器模块(400)上位于所述存储器的外部,所述地址缓冲器用于向所述第一存储器和所述第二存储器发送所述行地址和所述列地址。
4.根据权利要求1所述的存储器,其中,所述行的所述部分包括高速缓存行段(610),所述高速缓存行段形成通过所述行地址和所述列地址寻址的高速缓存行。
5.根据权利要求4所述的存储器,其中,所述行解码器和所述列解码器基于相同的行地址和列地址来选择性地激活所述存储器阵列的第二部分,所述第二部分包含用于形成所述高速缓存行的第二高速缓存行段,并且所述行解码器和所述列解码器选择性地激活额外的部分,直到整个高速缓存行从包含所述存储器的存储器模块(400)输出为止;
其中,所述行的部分和所述第二部分位于所述存储器模块的所述存储器和第二存储器上的对应行中。
6.根据权利要求4所述的存储器,其中,所述存储器是第一存储器,所述第一存储器位于包含第二存储器的存储器模块上,并且包括所述高速缓存行的部分的第二高速缓存行段是在所述第二存储器中被激活的并且响应于所述行地址和所述列地址而被所述存储器模块输出。
7.根据权利要求1所述的存储器,其中,所述行解码器用于确认连接到逻辑门(712)的第一输入端的所述字线上的第一信号,所述列解码器用于确认所述逻辑门的第二输入端处的第二信号,其中,所述第一信号和所述第二信号用于使所述逻辑门在不激活所述行的第二部分的情况下激活所述行的所述部分。
8.根据权利要求1所述的存储器,其中,所述存储器是动态随机存取存储器芯片。
9.根据权利要求1所述的存储器,其中,所述存储器位于包含第二存储器的双列直插式内存模块(DIMM)(200)或包含所述第二存储器的3D堆叠存储器模块(300)中的一个上。
10.一种存储器模块,包括:
第一存储器(402f),其具有第一行(608);
第二存储器(402a),其具有第二行;以及
地址缓冲器(406),其用于锁存行地址和列地址并且向所述第一存储器和所述第二存储器转发所述行地址和所述列地址,响应于同时解码的所述行地址和所述列地址,所述第一存储器用于选择性地激活所述第一行的第一部分,所述第二存储器用于选择性地激活所述第二行的第二部分,所述第一部分和所述第二部分是在不激活所述第一行和所述第二行的其它部分的情况下被激活的。
11.根据权利要求10所述的存储器模块,其中,所述第一行的所述第一部分是第一高速缓存行段(610),所述第二行的所述第二部分是第二高速缓存行段,所述第一存储器和所述第二存储器用于输出所述第一部分和所述第二部分以形成高速缓存行。
12.根据权利要求10所述的存储器模块,其中,所述第一存储器和所述第二存储器基于相同的行地址和列地址选择性地激活分别位于所述第一存储器和所述第二存储器中的第三行和第四行的部分,所述部分分别包含第三高速缓存行段和第四高速缓存行段以形成所述高速缓存行,并且所述第一存储器和所述第二存储器选择性地激活所述第三行和所述第四行的所述部分,直到整个所述高速缓存行从所述存储器模块(400)输出为止。
13.根据权利要求10所述的存储器模块,其被构造为包括所述第一存储器和所述第二存储器的双列直插式内存模块(DIMM)或3D堆叠存储器模块(300)中的一个。
14.根据权利要求10所述的存储器模块,其中,所述第一存储器包括行解码器(604)和列解码器(606),所述行解码器用于确认连接到逻辑门(712)的第一输入端的主字线(704)上的第一信号,所述列解码器用于确认所述逻辑门的第二输入端处的第二信号,所述第一信号和所述第二信号用于使所述逻辑门激活除了所述第一行的其它部分以外的所述第一行的所述第一部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29915510P | 2010-01-28 | 2010-01-28 | |
US61/299,155 | 2010-01-28 | ||
PCT/US2011/022763 WO2011094437A2 (en) | 2010-01-28 | 2011-01-27 | Memory access methods and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102812518A CN102812518A (zh) | 2012-12-05 |
CN102812518B true CN102812518B (zh) | 2015-10-21 |
Family
ID=44320124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180005519.3A Expired - Fee Related CN102812518B (zh) | 2010-01-28 | 2011-01-27 | 存储器存取方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9361955B2 (zh) |
EP (1) | EP2529374A4 (zh) |
CN (1) | CN102812518B (zh) |
WO (1) | WO2011094437A2 (zh) |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8787060B2 (en) | 2010-11-03 | 2014-07-22 | Netlist, Inc. | Method and apparatus for optimizing driver load in a memory package |
US9128632B2 (en) | 2009-07-16 | 2015-09-08 | Netlist, Inc. | Memory module with distributed data buffers and method of operation |
US8938589B2 (en) | 2010-01-28 | 2015-01-20 | Hewlett-Packard Development Company, L. P. | Interface methods and apparatus for memory devices using arbitration |
WO2011094437A2 (en) * | 2010-01-28 | 2011-08-04 | Hewlett-Packard Development Company, L.P. | Memory access methods and apparatus |
WO2013015893A1 (en) | 2011-07-27 | 2013-01-31 | Rambus Inc. | Memory with deferred fractional row activation |
US9146867B2 (en) | 2011-10-31 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to access memory using runtime characteristics |
KR20130048999A (ko) * | 2011-11-03 | 2013-05-13 | 삼성전자주식회사 | 반도체 테스트 장치 및 그의 어드레스 스크램블 생성 방법 |
WO2013068862A1 (en) * | 2011-11-11 | 2013-05-16 | International Business Machines Corporation | Memory module and memory controller for controlling a memory module |
US9178277B1 (en) * | 2012-02-01 | 2015-11-03 | Impinj, Inc. | Synthesized-beam RFID reader system with gain compensation and unactivated antenna element coupling suppression |
KR20130143210A (ko) * | 2012-06-21 | 2013-12-31 | 삼성전자주식회사 | 메모리 확장 장치 |
US8817547B2 (en) * | 2012-12-10 | 2014-08-26 | Micron Technology, Inc. | Apparatuses and methods for unit identification in a master/slave memory stack |
KR20140078849A (ko) * | 2012-12-18 | 2014-06-26 | 삼성전자주식회사 | 저항성 메모리 장치, 이를 포함하는 시스템 및 데이터 리드 방법 |
US9779792B2 (en) * | 2013-06-27 | 2017-10-03 | Advanced Micro Devices, Inc. | Register file with read ports clustered by entry |
US10324841B2 (en) | 2013-07-27 | 2019-06-18 | Netlist, Inc. | Memory module with local synchronization |
CN104347122B (zh) | 2013-07-31 | 2017-08-04 | 华为技术有限公司 | 一种消息式内存模组的访存方法和装置 |
US9864536B2 (en) * | 2013-10-24 | 2018-01-09 | Qualcomm Incorporated | System and method for conserving power consumption in a memory system |
US20150121111A1 (en) * | 2013-10-24 | 2015-04-30 | Qualcomm Incorporated | System and method for providing multi-user power saving codebook optmization |
CN103559915B (zh) * | 2013-10-29 | 2016-06-15 | 西安紫光国芯半导体有限公司 | 一种减少地址线连接的dram测试装置及方法 |
US10558571B2 (en) | 2014-03-20 | 2020-02-11 | Sybase, Inc. | Second level database file cache for row instantiation |
GB2527087B (en) * | 2014-06-11 | 2021-04-14 | Advanced Risc Mach Ltd | Parallel lookup in first and second value stores |
EP3175459B1 (en) * | 2014-07-30 | 2020-02-12 | Hewlett-Packard Development Company, L.P. | Split memory bank |
US10248497B2 (en) * | 2014-10-22 | 2019-04-02 | Advanced Micro Devices, Inc. | Error detection and correction utilizing locally stored parity information |
CN105701040B (zh) | 2014-11-28 | 2018-12-07 | 杭州华为数字技术有限公司 | 一种激活内存的方法及装置 |
WO2016089563A1 (en) * | 2014-12-01 | 2016-06-09 | Rambus Inc. | High performance, high capacity memory systems and modules |
CN104657296B (zh) * | 2015-01-30 | 2017-12-26 | 西安紫光国芯半导体有限公司 | 多数据接口兼容的芯片架构 |
US9442839B1 (en) | 2015-05-26 | 2016-09-13 | Sandisk Technologies Llc | Nonvolatile storage with automated response to program faults |
US20160349817A1 (en) * | 2015-05-29 | 2016-12-01 | Intel Corporation | Power protected memory with centralized storage |
KR20160149783A (ko) * | 2015-06-19 | 2016-12-28 | 에스케이하이닉스 주식회사 | 멀티 칩 패키지 및 그의 동작 방법 |
CN105138467B (zh) * | 2015-08-05 | 2020-06-02 | 上海联影医疗科技有限公司 | 数据存取装置、方法及磁共振设备 |
US10678719B2 (en) * | 2015-10-01 | 2020-06-09 | Rambus Inc. | Memory system with cached memory module operations |
US9997233B1 (en) | 2015-10-08 | 2018-06-12 | Rambus Inc. | Memory module with dynamic stripe width |
US10025652B2 (en) * | 2015-10-27 | 2018-07-17 | Western Digital Technologies, Inc. | Error location pointers for non volatile memory |
US9583209B1 (en) * | 2015-12-08 | 2017-02-28 | Arm Limited | High density memory architecture |
US10157133B2 (en) | 2015-12-10 | 2018-12-18 | Arm Limited | Snoop filter for cache coherency in a data processing system |
KR102405066B1 (ko) * | 2015-12-23 | 2022-06-07 | 에스케이하이닉스 주식회사 | 신호 쉬프팅 회로, 베이스 칩 및 이를 포함하는 반도체 시스템 |
US10468093B2 (en) | 2016-03-03 | 2019-11-05 | Nvidia Corporation | Systems and methods for dynamic random access memory (DRAM) sub-channels |
CN108027765B (zh) * | 2016-03-17 | 2020-06-26 | 华为技术有限公司 | 一种内存访问方法以及计算机系统 |
US10474581B2 (en) * | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10417078B2 (en) * | 2016-04-08 | 2019-09-17 | Lattice Semiconductor Corporation | Deterministic read back and error detection for programmable logic devices |
US9990292B2 (en) | 2016-06-29 | 2018-06-05 | Arm Limited | Progressive fine to coarse grain snoop filter |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10452539B2 (en) | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10474557B2 (en) * | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10776118B2 (en) * | 2016-09-09 | 2020-09-15 | International Business Machines Corporation | Index based memory access using single instruction multiple data unit |
WO2018100363A1 (en) * | 2016-11-29 | 2018-06-07 | Arm Limited | Memory address translation |
US10042766B1 (en) * | 2017-02-02 | 2018-08-07 | Arm Limited | Data processing apparatus with snoop request address alignment and snoop response time alignment |
US10141043B1 (en) | 2017-07-24 | 2018-11-27 | Nanya Technology Corporation | DRAM and method for managing power thereof |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
US10572168B2 (en) | 2017-11-16 | 2020-02-25 | International Business Machines Corporation | DRAM bank activation management |
US10831673B2 (en) | 2017-11-22 | 2020-11-10 | Arm Limited | Memory address translation |
US10866904B2 (en) | 2017-11-22 | 2020-12-15 | Arm Limited | Data storage for multiple data types |
US10929308B2 (en) | 2017-11-22 | 2021-02-23 | Arm Limited | Performing maintenance operations |
US10522210B2 (en) * | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US10778552B2 (en) * | 2018-04-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Storage system latency evaluation based on I/O patterns |
US11070455B2 (en) | 2018-04-30 | 2021-07-20 | Hewlett Packard Enterprise Development Lp | Storage system latency outlier detection |
CN111771192A (zh) | 2018-05-11 | 2020-10-13 | 拉姆伯斯公司 | 纠错码信息的有效存储 |
US10754726B2 (en) * | 2018-08-21 | 2020-08-25 | Micron Technology, Inc. | Tracking error-correction parity calculations |
US11481117B2 (en) | 2019-06-17 | 2022-10-25 | Hewlett Packard Enterprise Development Lp | Storage volume clustering based on workload fingerprints |
US11074949B2 (en) | 2019-07-18 | 2021-07-27 | Micron Technology, Inc. | Parallel access for memory subarrays |
US11119658B2 (en) | 2019-11-01 | 2021-09-14 | Micron Technology, Inc. | Capacity expansion channels for memory sub-systems |
TWI739227B (zh) * | 2019-12-03 | 2021-09-11 | 智成電子股份有限公司 | 避免多餘記憶體存取的系統單晶片模組 |
US11868252B2 (en) * | 2019-12-06 | 2024-01-09 | Micron Technology, Inc. | Memory with post-packaging master die selection |
KR20210110071A (ko) * | 2020-02-28 | 2021-09-07 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11366618B2 (en) | 2020-03-02 | 2022-06-21 | Silicon Motion, Inc. | All flash array server and control method thereof |
US11409684B2 (en) | 2020-07-31 | 2022-08-09 | Alibaba Group Holding Limited | Processing accelerator architectures |
US11625341B2 (en) | 2020-08-11 | 2023-04-11 | Alibaba Group Holding Limited | Narrow DRAM channel systems and methods |
US11636893B2 (en) * | 2020-10-19 | 2023-04-25 | Micron Technology, Inc. | Memory device with multiple row buffers |
US11947453B2 (en) | 2020-10-19 | 2024-04-02 | Micron Technology, Inc. | Memory device with on-die cache |
KR20220053374A (ko) * | 2020-10-22 | 2022-04-29 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11775197B2 (en) * | 2021-03-25 | 2023-10-03 | Kyocera Document Solutions Inc. | Single command for reading then clearing dynamic random access memory |
US11698751B2 (en) * | 2021-06-07 | 2023-07-11 | Western Digital Technologies, Inc. | Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer |
US11887688B2 (en) * | 2021-10-26 | 2024-01-30 | Micron Technology, Inc. | Techniques for indicating row activation |
Family Cites Families (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL96808A (en) | 1990-04-18 | 1996-03-31 | Rambus Inc | Introductory / Origin Circuit Agreed Using High-Performance Brokerage |
US5410653A (en) | 1992-06-16 | 1995-04-25 | International Business Machines Corporation | Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length |
US5495447A (en) * | 1993-10-08 | 1996-02-27 | Digital Equipment Corporation | Method and apparatus using mapped redundancy to perform multiple large block memory array repair |
JPH08315582A (ja) * | 1995-05-18 | 1996-11-29 | Nippon Telegr & Teleph Corp <Ntt> | 半導体メモリ |
US5912850A (en) * | 1995-08-03 | 1999-06-15 | Northern Telecom Limited | Multi-port RAM with shadow write test enhancement |
US5687132A (en) | 1995-10-26 | 1997-11-11 | Cirrus Logic, Inc. | Multiple-bank memory architecture and systems and methods using the same |
US5802569A (en) | 1996-04-22 | 1998-09-01 | International Business Machines Corp. | Computer system having cache prefetching amount based on CPU request types |
US5905999A (en) | 1996-04-29 | 1999-05-18 | International Business Machines Corporation | Cache sub-array arbitration |
US5883849A (en) | 1997-06-30 | 1999-03-16 | Micron Technology, Inc. | Method and apparatus for simultaneous memory subarray testing |
US6012106A (en) | 1997-11-03 | 2000-01-04 | Digital Equipment Corporation | Prefetch management for DMA read transactions depending upon past history of actual transfer lengths |
US5963468A (en) | 1998-01-30 | 1999-10-05 | Silicon Aquarius, Inc. | Low latency memories and systems using the same |
US6256256B1 (en) | 1998-01-30 | 2001-07-03 | Silicon Aquarius, Inc. | Dual port random access memories and systems using the same |
US6173356B1 (en) * | 1998-02-20 | 2001-01-09 | Silicon Aquarius, Inc. | Multi-port DRAM with integrated SRAM and systems and methods using the same |
US6349364B1 (en) | 1998-03-20 | 2002-02-19 | Matsushita Electric Industrial Co., Ltd. | Cache memory system with variable block-size mechanism |
US6279135B1 (en) | 1998-07-29 | 2001-08-21 | Lsi Logic Corporation | On-the-fly row-syndrome generation for DVD controller ECC |
US6557080B1 (en) | 1999-01-25 | 2003-04-29 | Wisconsin Alumni Research Foundation | Cache with dynamic control of sub-block fetching |
KR100316713B1 (ko) | 1999-06-26 | 2001-12-12 | 윤종용 | 반도체 메모리 장치 및 이에 적합한 구동신호 발생기 |
US6222786B1 (en) | 1999-11-02 | 2001-04-24 | Silicon Aquarius, Inc. | Dynamic random access memory with write-without-restore and systems and methods using the same |
US6175535B1 (en) | 2000-01-24 | 2001-01-16 | International Business Machines Corporation | Cycle control circuit for extending a cycle period of a dynamic memory device subarray |
JP5034149B2 (ja) * | 2000-10-05 | 2012-09-26 | 富士通セミコンダクター株式会社 | 半導体メモリおよびその制御方法 |
JP3985889B2 (ja) | 2001-08-08 | 2007-10-03 | 株式会社ルネサステクノロジ | 半導体装置 |
US7085971B2 (en) * | 2001-10-25 | 2006-08-01 | International Business Machines Corporation | ECC based system and method for repairing failed memory elements |
US7203886B2 (en) * | 2002-03-27 | 2007-04-10 | Intel Corporation | Detecting and correcting corrupted memory cells in a memory |
JP4067887B2 (ja) | 2002-06-28 | 2008-03-26 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US6768692B2 (en) | 2002-07-29 | 2004-07-27 | International Business Machines Corporation | Multiple subarray DRAM having a single shared sense amplifier |
US7493450B2 (en) | 2003-04-14 | 2009-02-17 | Hewlett-Packard Development Company, L.P. | Method of triggering read cache pre-fetch to increase host read throughput |
US7254690B2 (en) | 2003-06-02 | 2007-08-07 | S. Aqua Semiconductor Llc | Pipelined semiconductor memories and systems |
US7386768B2 (en) | 2003-06-05 | 2008-06-10 | Intel Corporation | Memory channel with bit lane fail-over |
US6937531B2 (en) * | 2003-07-21 | 2005-08-30 | Infineon Technologies Ag | Memory device and method of storing fail addresses of a memory cell |
US7136958B2 (en) | 2003-08-28 | 2006-11-14 | Micron Technology, Inc. | Multiple processor system and method including multiple memory hub modules |
US7107384B1 (en) | 2004-03-01 | 2006-09-12 | Pericom Semiconductor Corp. | Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths |
US7088632B2 (en) * | 2004-05-26 | 2006-08-08 | Freescale Semiconductor, Inc. | Automatic hidden refresh in a dram and method therefor |
US7046538B2 (en) * | 2004-09-01 | 2006-05-16 | Micron Technology, Inc. | Memory stacking system and method |
US7283417B2 (en) | 2005-02-09 | 2007-10-16 | International Business Machines Corporation | Write control circuitry and method for a memory array configured with multiple memory subarrays |
US7872892B2 (en) | 2005-07-05 | 2011-01-18 | Intel Corporation | Identifying and accessing individual memory devices in a memory channel |
US7533212B1 (en) | 2005-10-20 | 2009-05-12 | Sun Microsystems, Inc. | System memory board subsystem using DRAM with integrated high speed point to point links |
US7409491B2 (en) | 2005-12-14 | 2008-08-05 | Sun Microsystems, Inc. | System memory board subsystem using DRAM with stacked dedicated high speed point to point links |
JP2007241927A (ja) | 2006-03-13 | 2007-09-20 | Toshiba Corp | データ記憶装置及び方法 |
US8069294B2 (en) | 2006-03-30 | 2011-11-29 | Intel Corporation | Power-optimized frame synchronization for multiple USB controllers with non-uniform frame rates |
JP2008108417A (ja) * | 2006-10-23 | 2008-05-08 | Hynix Semiconductor Inc | 低電力dram及びその駆動方法 |
US20080229050A1 (en) | 2007-03-13 | 2008-09-18 | Sony Ericsson Mobile Communications Ab | Dynamic page on demand buffer size for power savings |
US10002000B2 (en) | 2007-04-09 | 2018-06-19 | Open Invention Network, Llc | Trace-assisted startup optimization from a virtual disk |
US7822926B2 (en) | 2007-04-16 | 2010-10-26 | Arm Limited | Cache memory |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US7925168B2 (en) | 2007-10-16 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Optical interconnect system providing communication between computer system components |
US7882407B2 (en) | 2007-12-17 | 2011-02-01 | Qualcomm Incorporated | Adapting word line pulse widths in memory systems |
US8117401B2 (en) | 2008-02-01 | 2012-02-14 | International Business Machines Corporation | Interconnect operation indicating acceptability of partial data delivery |
US8068365B2 (en) * | 2008-02-04 | 2011-11-29 | Mosaid Technologies Incorporated | Non-volatile memory device having configurable page size |
US9251899B2 (en) | 2008-02-12 | 2016-02-02 | Virident Systems, Inc. | Methods for upgrading main memory in computer systems to two-dimensional memory modules and master memory controllers |
CN101251828B (zh) | 2008-04-09 | 2010-08-11 | 炬力集成电路设计有限公司 | 一种位宽自适应的存储器访问方法及系统 |
US7957216B2 (en) | 2008-09-30 | 2011-06-07 | Intel Corporation | Common memory device for variable device width and scalable pre-fetch and page size |
JP5298826B2 (ja) | 2008-12-17 | 2013-09-25 | 日本電気株式会社 | キャッシュメモリ及びプリフェッチ方法 |
US8023345B2 (en) | 2009-02-24 | 2011-09-20 | International Business Machines Corporation | Iteratively writing contents to memory locations using a statistical model |
US8140759B2 (en) | 2009-04-16 | 2012-03-20 | International Business Machines Corporation | Specifying an access hint for prefetching partial cache block data in a cache hierarchy |
WO2011094437A2 (en) | 2010-01-28 | 2011-08-04 | Hewlett-Packard Development Company, L.P. | Memory access methods and apparatus |
WO2011094436A2 (en) | 2010-01-28 | 2011-08-04 | Hewlett-Packard Development Company, L.P. | Interface methods and apparatus for memory devices |
US9037928B2 (en) * | 2012-01-01 | 2015-05-19 | Mosys, Inc. | Memory device with background built-in self-testing and background built-in self-repair |
US8364889B2 (en) | 2010-05-28 | 2013-01-29 | International Business Machines Corporation | Dynamic row-width memory |
US20120198124A1 (en) | 2011-01-28 | 2012-08-02 | Apple Inc. | Methods and systems for optimizing read operations in a non-volatile memory |
US8732406B1 (en) | 2011-03-15 | 2014-05-20 | Netapp, Inc. | Mechanism for determining read-ahead length in a storage system |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
US9146867B2 (en) | 2011-10-31 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to access memory using runtime characteristics |
-
2011
- 2011-01-27 WO PCT/US2011/022763 patent/WO2011094437A2/en active Application Filing
- 2011-01-27 CN CN201180005519.3A patent/CN102812518B/zh not_active Expired - Fee Related
- 2011-01-27 US US13/387,714 patent/US9361955B2/en active Active
- 2011-01-27 EP EP11737663.2A patent/EP2529374A4/en not_active Withdrawn
-
2016
- 2016-04-04 US US15/089,730 patent/US9846550B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160216912A1 (en) | 2016-07-28 |
US9361955B2 (en) | 2016-06-07 |
US20140208156A1 (en) | 2014-07-24 |
EP2529374A4 (en) | 2014-04-02 |
US9846550B2 (en) | 2017-12-19 |
EP2529374A2 (en) | 2012-12-05 |
CN102812518A (zh) | 2012-12-05 |
WO2011094437A2 (en) | 2011-08-04 |
WO2011094437A3 (en) | 2011-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102812518B (zh) | 存储器存取方法和装置 | |
US7872892B2 (en) | Identifying and accessing individual memory devices in a memory channel | |
JP7121875B1 (ja) | パーシステントメモリシステム等のデータ完全性 | |
US9171585B2 (en) | Configurable memory circuit system and method | |
KR101467623B1 (ko) | 메모리 모듈 및 메모리 모듈 제어 방법 | |
US8200883B2 (en) | Micro-tile memory interfaces | |
KR101454090B1 (ko) | 하이브리드 메모리를 위한 시스템, 방법 및 장치 | |
EP2266116B1 (en) | Systems, methods, and apparatuses to save memory self-refresh power | |
US7558941B2 (en) | Automatic detection of micro-tile enabled memory | |
EP1989712B1 (en) | Systems, methods, and apparatuses for using the same memory type to support an error check mode and a non-error check mode | |
US8873329B1 (en) | Patterned memory page activation | |
CN107924705A (zh) | 存储器装置错误校验和清除模式以及错误透明度 | |
KR20190004302A (ko) | 자동 리프레시 상태 머신 mop 어레이 | |
CN108538337A (zh) | 具有固定带宽接口的存储器设备中的集成的错误检查和校正(ecc) | |
CN103680594A (zh) | 降低写失败的存储器件、包括该存储器件的系统及其方法 | |
CN111566738B (zh) | 存储器系统中的有效和选择性的备用位 | |
NL2029034B1 (en) | Adaptive internal memory error scrubbing and error handling | |
WO2017123327A1 (en) | Techniques to access or operate a dual in-line memory module via multiple data channels | |
KR20210050431A (ko) | 신뢰성, 가용성 및 확장성(ras)에서의 개선을 위한 메모리 워드라인 격리 | |
CN113434330A (zh) | 行可寻址且列可寻址的存储器中的动态数据的错误纠正 | |
CN114816829A (zh) | 分布ecc比特以为元数据分配ecc比特 | |
US8468433B2 (en) | Optimizing the size of memory devices used for error correction code storage | |
US8639879B2 (en) | Sorting movable memory hierarchies in a computer system | |
CN115512758A (zh) | 应用感知存储器巡查擦洗技术 | |
CN115762621A (zh) | 不可校正的存储器错误预测 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160805 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Patentee after: Univ Utah Res Found Address before: Texas USA Patentee before: Hewlett-Packard Development Company, Limited Liability Partnership Patentee before: Univ Utah Res Found |
|
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: 20151021 Termination date: 20200127 |