CN111208951B - 混合内存模块以及操作混合内存模块的系统和方法 - Google Patents

混合内存模块以及操作混合内存模块的系统和方法 Download PDF

Info

Publication number
CN111208951B
CN111208951B CN202010083536.XA CN202010083536A CN111208951B CN 111208951 B CN111208951 B CN 111208951B CN 202010083536 A CN202010083536 A CN 202010083536A CN 111208951 B CN111208951 B CN 111208951B
Authority
CN
China
Prior art keywords
data
memory
module
controller
volatile memory
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
CN202010083536.XA
Other languages
English (en)
Other versions
CN111208951A (zh
Inventor
炫·李
杰斯·R·巴克达
池社·陈
杰弗里·C·所罗门
马里奥·杰西·马丁内斯
浩·乐
淑·J·蔡
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.)
Netlist Inc
Original Assignee
Netlist 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 Netlist Inc filed Critical Netlist Inc
Priority to CN202010083536.XA priority Critical patent/CN111208951B/zh
Publication of CN111208951A publication Critical patent/CN111208951A/zh
Application granted granted Critical
Publication of CN111208951B publication Critical patent/CN111208951B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种内存模块包括:易失性内存子系统,用于耦合到计算机系统中的内存通道且能够充当计算机系统的主内存;非易失性内存子系统,其为计算机系统提供存储装置;和模块控制器,其耦合到易失性内存子系统、非易失性内存子系统和C/A总线。模块控制器用于控制在易失性内存子系统和非易失性内存子系统之间的模块内数据传送。该模块控制器进一步用于监视C/A总线上的C/A信号,且根据C/A信号调度模块内数据传送,使得模块内数据传送不与内存控制器对易失性内存子系统的存取冲突。

Description

混合内存模块以及操作混合内存模块的系统和方法
相关申请案的交叉引用
本申请案主张以下各申请案的优先权:2013年11月7日提交的名称为“对非易失性内存的动态随机存取(Dynamic Random Access to Non-Volatile Memory)”的第61/901,439号美国临时专利申请案,2014年1月21日提交的名称为“内存通道存储(Memory ChannelStorage)”的第61929942号美国临时专利申请案,2014年8月22日提交的名称为“用于传送存储内容的设备和方法(Apparatus and Methods for Transferring Storage Content)”的第62/041,024号美国临时专利申请案,2014年9月26日提交的名称为“内存通道存储(Memory Channel Storage)”的第62/056,469号美国临时专利申请案,以及2014年10月22日提交的名称为“用于随机存取的混合移动内存(Hybrid Mobile Memory for RandomAccess)”的第62/067,411号美国临时专利申请案,所述申请案中的每一个以全文引用的方式并入本文中。本申请案与2011年7月28日提交的名称为“高密度DIMM(High DensityDIMMs)”的第61/512,871号美国临时专利申请案以及2012年7月26日提交的名称为“闪存DRAM混合内存模块(Flash DRAM Hybrid Memory Module)”的第13/559,476号美国专利申请案有关,所述申请案中的每一个以全文引用的方式并入本文中。本申请还要求于2014年5月7日提交的、名称为“高密度混合存储系统”的第61/989,941号美国临时专利申请的优先权。
技术领域
本专利申请大体上涉及内存模块,并且更具体来说,涉及具有易失性子系统和非易失性子系统两者的混合内存模块,以及操作混合内存模块的系统和方法。
背景技术
计算机系统很大程度上依赖于其系统或主内存的容量和吞吐量以及在最优性能下对所述计算机系统进行存取的速度,例如网络服务器、个人计算机、PDA、移动电话、视频游戏、科学仪器仪表、工业机器人、医疗电子器件等等。当前,动态随机存取内存(DRAM)常用作系统内存。DRAM是一种将数据的每个位存储在集成电路中的单独电容器中的随机存取内存。该电容器可以充电或放电,以至于可采用常规称为0和1的这两个状态来表示一位的两个值。因为电容器漏电,所以除非周期性地刷新电容器电荷,否则信息最终会逐渐消失。因为此刷新的需求,所以DRAM是一种与SRAM和其它静态内存相反的动态内存。
DRAM的结构简单性允许DRAM芯片达到非常高的密度,因为数十亿个晶体管和电容器对可以装配在单一内存芯片上。另一方面,DRAM是易失性内存,也即当去除电力时,其将快速丢失其数据。闪存内存是一种可以被电擦除且重新编程的电子非易失性计算机存储媒体。与闪存内存相比,DRAM还贵得多。例如,高密度DRAM的费用可超过高性能闪存装置的10倍。此外,因闪存芯片可具有比DRAM芯片高得多的密度,所以允许设定成相同大小的内存模块以更多的封装,从而达到大得多的内存容量。
存在两个主要类型的闪存内存,根据与非(NAND)和或非(NOR)逻辑门命名的与非型和或非型。或非型允许独立地写入或读取单一机器字(字节)。与非型闪存内存可以区块(或页)来写入和读取,所述区块(或页)通常比整个装置小得多。与非闪存还具有减少的擦除和写入次数,且每单元(cell)需要较少的芯片面积,因此允许比或非闪存更大的存储密度和每位(bit)更低的成本。此外,与非闪存的耐久性是或非闪存的耐久性的十倍之多。因此,与非闪存已比或非闪存得到更加广泛的使用。
除其优点之外,闪存内存也具有某些局限性,该局限性对使所述闪存内存作为主内存使用造成许多挑战。闪存内存(尤其是与非闪存)的一个局限是,其一次仅可以擦除一个“区块”。擦除一个区块大体上是将区块中的所有位设定为1。从刚擦除的区块开始,区块内的任何位置可以随机存取方式来一次编程一个字节或一个字。但是,一旦某一位已经被设定为0,仅通过擦除整个区块才可以将它改变回1。换句话说,闪存内存不提供任何随机存取重写或擦除操作。
另一局限是闪存内存具有有限数目的编程擦除周期(通常写成P/E周期)。大部分可商购的闪存产品保证在耗损使存储装置的完整性开始劣化之前,能耐受大约某一数目的周期(例如,100,000个P/E周期)。通过对写入计数和动态地重新映射区块,一些芯片固件或文件系统驱动器执行所谓的耗损均衡技术(wearing leveling technique),从而达到在分区之间扩散写入操作的目的。对于便携式消费产品,这些耗损管理技术通常将闪存内存的寿命延长至超出产品自身的寿命,且一些数据丢失在这些应用中可接受。但是,对于高可靠性的数据存储而言,当闪存内存也许不得不经历大量的编程周期,使用闪存内存并不可取。
附图说明
图1是根据某些实施例的计算机或服务器系统的示意图。
图2是根据某些实施例的具有易失性内存子系统、非易失性内存子系统以及模块控制器的混合内存模块的示意图。
图3是根据某些实施例的在混合内存模块中的易失性内存子系统的示意图。
图4是根据某些实施例的在混合内存模块中的模块控制器的示意图。
图5是根据某些实施例的计算机或服务器系统的软件栈的示意图。
图6是某些实施例中由混合内存模块支持的不同数据路径的示意图。
图7A和7B是对应地说明根据某些实施例的在计算机/服务器系统中的页入(page-in)和页出(page-out)过程的流程图。
图8是某些实施例中的页入数据流与正常内存存取交错以避免数据存取冲突的示意图。
图9是多个HVDIMM一起使用来提供系统内存和/或内存通道上的存储装置的示意图。
图10是某些实施例中的内存关联表的示意图。
图11是某些实施例中在计算机或服务器系统中的内存结构的示意图。
图12是在内存窗口操作期间在混合内存模块中的存储空间的示意图。
图13是根据某些实施例的示例性DMA控制器的示意图。
图14是说明根据某些实施例的内存窗口操作过程的流程图。
图15A和15B是对应地说明根据某些实施例的由模块控制器执行以打开和关闭混合内存模块中的内存窗口的过程的流程图。
图16是说明根据其它实施例的混合内存模块的示意图。
图17A和17B是某些实施例中对应的RAID 3过程对混合内存模块中的非易失性内存子系统写入数据和读取数据的流程图。
图18到20是某些实施例中由模块控制器执行的错误检测/校正例程的示意图。
图21-22是常规SSD或闪存操作的示意图。
图23-26是某些实施例中在混合内存模块中内存窗口操作的示意图。
图27是某些实施例中轮询耗损均衡技术的简化实例的示意图。
图28是混合内存模块的示意图,该混合内存模块与另一混合内存模块或任何其它存储装置通过其对应的网络接口电路直接耦合。
图29是内联网服务器系统中的一个或多个混合内存模块的示意图,该混合内存模块与内联网通过对应的网络接口电路直接耦合。
具体实施方式
如图1中所示,根据某些实施例的计算机或服务器系统(计算机系统)100包含耦合到系统总线的中央处理单元(CPU)或处理器、内存控制器(MC)以及一个或多个内存模块。一个或多个内存模块提供系统内存,且可以进一步提供存储装置。在某些实施例中,MC可以整合到CPU中。在另外的实施例中,计算机系统还可以包含还耦合到系统总线的直接数据管理控制器(DMA)。具有或不具有MC和/或DMA的CPU,或计算机系统100部分或一共,有时在下文被称为“系统(System或system)”。
在某些实施例中,计算机系统100可以进一步包含网卡和一个或多个I/O装置,例如键盘、监视器、触摸屏、麦克风扬声器等。网卡可以或不可以整合到CPU中,且在计算机系统100和局域网和/或广域网之间提供网络接口功能(有线或无线)。计算机系统100可以进一步包含PCI总线,所述PCI总线经由北桥耦合到系统总线,且经由南桥耦合到一个或多个存储装置,例如硬盘驱动、CD/DVD驱动以及USB驱动。
图2是根据某些实施例的HypervaultTM双列直插式内存模块(HVDIMM)200的框图,所述双列直插式内存模块可以用于提供系统内存和/或计算机/服务器系统的存储装置。如图2中示出,HVDIMM 200包含安装在模块板201上的易失性内存子系统(HV-DRAM)210、非易失性内存子系统(HV-闪存220)220以及模块控制子系统(HV控制器)230,所述模块板可以包含一个或多个印刷电路板。HVDIMM 200还可以包含数据缓冲器(HV-DB),且还可以包含网络接口控制器(HV-NIC)。在某一实施例中,HV-DB 240包含DRAM内存,例如太字节DRAM内存(TBM)。HV-DRAM 210和HV控制器230经由数据信号线(如由虚双箭头线表示)和控制/地址(C/A)信号线(如由实双或单箭头线表示)耦合到彼此、耦合到系统且耦合到HV-闪存220。如图2中示出,数据信号线251、252和253与HV控制器230和HV-DB 240一起形成HV-DRAM 210和HV闪存220之间的专用数据路径,从而允许数据在不经过内存通道或CPU的情况下在易失性和非易失性子系统之间传送。在某一实施例中,专用数据路径是高带宽数据路径。
如还在图2中示出,HVDIMM 200进一步包含开关FET-A(例如,场效应晶体管或FET开关)。在某些实施例中,在HVDIMM 200中存在两组开关,即,数据开关和命令/地址开关。这些开关不需要快速地开关,但它们应该支持相对较短的输入到输出延迟时间。在某些实施例中,两组开关的信号传播时间应该是数据周期的较小部分(例如,200到300ps),使得从系统隐藏延迟时间。
如图2中示出,来自系统的数据直接地连接到HV-DRAM 210数据输入/输出(I/O)(未示出),而系统命令/地址信号经由FET开关连接到HV-DRAM 210,使得HV-DRAM 210可以在例如正常操作(当系统对HVDIMM 200中的存储空间进行存取时)期间从系统接收命令/地址,或在例如备份/恢复操作(当HVDIMM 200在电源故障之后备份HV-DRAM中的内容或在电源恢复之后将内容恢复回到DRAM中时)期间从HV控制器230接收命令/地址。FET开关可以通过HV控制器230控制。
在某些实施例中,HV闪存220包含MLC与非闪存,所述MLC与非闪存经分区以支持快速存取以及增强虚拟复制的错误校正能力。在某些实施例中,HV-闪存220包含例如256GB/512GB的主闪存和32GB的暂存闪存。主闪存可以充当具有在HVDIMM 200上到DRAM的直接数据总线的较大存储装置。暂存闪存促进用于延长HV闪存220中的闪存内存单元的寿命的机制,如下文所描述。
图3是根据某些实施例的HV-DRAM 210子系统的框图。如图3中示出,HV-DRAM 210子系统包含DRAM装置310、用于与MC或HV控制器230介接的寄存控制装置(RCD)或控制寄存器320、以及减载数据缓冲器(LRDB)330。在某一实施例中,RCD 320可以是标准寄存器,所述标准寄存器是遵从行业标准(例如电子器件工程联合委员会双数据速率4减载双列直插式内存模块(JEDEC DDR4 LRDIMM)标准)的寄存器,因此HV-DRAM 210可以与标准系统内存接口相容。在某些实施例中,在共同拥有的第8,516,185号美国专利案(所述专利案全文并入本文中)中描述的数据传输电路可以用作LRDB 330。尽管图3将LRDB 330示出为一个单元,但实际上,LRDB 330可以包含分布在模块板201上且耦合到内存装置的对应群组的多个单元,如第8,516,185号美国专利案中所描述。
在某些实施例中,当HVDIMM 200用于提供系统内存时,HV-DRAM 210提供HVDIMM200的主内存功能。在某些实施例中,当HVDIMM 200用于提供存储装置时,HV-DRAM 210充当HV闪存220的缓冲内存。在某些实施例中,来自DRAM的高速缓存线宽读取被映射到闪存。然而,在标准DRAM模块(例如,JEDEC DDR4 LRDIMM)和HV-DRAM 210之间存在差值。在某些实施例中,除了命令/地址开关(FET-A)之外,HV-DRAM 210可以包含数据开关(FET-D)。数据开关FET-D耦合在DRAM数据缓冲器(LR-DB)和DRAM之间,而命令/地址开关FET-A耦合在内存通道C/A总线和RCD 320之间。FET开关、FET-A以及FET-D可以通过HV控制器230控制以在不同的操作模式之间转换HVDIMM 200。在某些实施例中,并不需要这些开关FET-A和FET-D中的任一个或两个,且不同的操作模式可以通过改变在DRAM、HV控制器230和/或LRDB 330中的相关I/O中的三态电路来实现。
图4是HV控制器230的框图,所述HV控制器可以包含专用集成电路(ASIC)装置或现场可编程门阵列(FPGA)装置。如图4中示出,HV控制器230包含控制逻辑410、数据缓冲器420、本地内存430以及寄存器440。HV控制器230进一步包含DRAM接口450、闪存接口460、系统管理总线接口470以及网络接口480。在某些实施例中,HV控制器230控制在HV-DRAM 210和HV闪存220之间的数据传送。所述HV控制器230将地址管理表保持在本地内存片上存储空间中,操作FET开关,且对HV闪存220和HV-DRAM 210产生恰当的命令以用于其间的数据传送。
在某些实施例中,HV控制器230还将HVDIMM 200级不良区块表保持在本地内存中且管理暂存闪存,如下文所论述。在某些实施例中,HV控制器230经配置以执行错误检测/校正例程以确保存储在闪存中的数据的完整性,经配置以通过以下方式来执行闪存寿命延长操作:对HV闪存220区块利用率求平均值和/或使用暂存闪存来最小化/减少主闪存中的编程/擦除操作。
在某些实施例中,控制逻辑410包含逻辑电路且可以进一步包含用于预处理从闪存传送到DRAM的数据的一个或多个处理单元,以便通过分担一些传统地由CPU进行的计算工作来节省DRAM存储空间且减少内存通道中的数据业务,如下文进一步论述。
在某些实施例中,HVDIMM 200可以经操作以备份DRAM中的数据以响应于电源故障事件。当DRAM中的数据被传送到闪存时,HV控制器230为将在DLL断开模式中操作的HV-DRAM210提供正确的时序。HV控制器230还为备用和恢复过程提供恰当的可操作过程。FET开关,即,FET-A,可以经配置以将RCD 320和HV控制器230与C/A总线隔离,且经配置以允许RCD320在备用和恢复过程期间从HV控制器230接收C/A信号。
在某些实施例中,HVDIMM 200允许系统经由系统管理(SM)总线使用例如I2C协议或任何其它系统控制总线接口来对所述HVDIMM进行存取。例如,系统还可以通过设定HV控制器230中的某些寄存器而使用SM总线来配置HV控制器230。HV控制器230还可以在完成某一操作时或在遇到错误时,使用预配置中断信号或者通过更新HV控制器230的系统总线接口中或DMA中的预定义状态寄存器,而使用SM总线来通知系统。
在某些实施例中,HV控制器230还管理HVDIMM 200和结合HV-NIC的任何局域网或广域网之间的网络接口,以便促进HVDIMM 200和局域网或广域网中的其它存储装置之间的直接数据传送。在某些实施例中,HV控制器230包含网络接口和/或耦合到网络接口卡(HV-NIC),所述网络接口卡可以从HV-DRAM 210和/或HV闪存220获取数据,且用恰当的源地址和目标地址来构造网络包。一般来说,源地址通过系统预配置。在某些实施例中,HV-NIC或网络接口以及HV控制器230的其它组件中的一些或全部可以嵌入到相同ASIC或FPGA中。
除了图1中示出的硬件组件之外,计算机系统100还包含软件/固件组件。在某些实施例中,软件/固件组件可以大致表示为在硬件层501上方的软件/固件层500的栈。如图5中所示,软件/固件层的栈包含位于操作系统层520上的应用程序层510。应用程序510是执行特定任务的软件程序。操作系统520管理计算机系统100的硬件和软件资源,且充当计算机系统100的应用程序510和硬件组件之间的中间物。
操作系统520包含内核521,所述内核是管理来自其它软件程序(或过程)的输入/输出请求的计算机程序,且所述内核将所述请求转换成用于CPU和/或计算机系统100的其它硬件组件的数据处理指令。内核可以包含:中断处理程序,其处理竞争所述内核的服务的所有请求或完整的I/O操作;调度器,其确定哪些程序以何种次序共享内核的处理时间;以及监督器,其实际上在调度每个过程时将计算机的使用给予每个过程。内核还可以包含在内存或存储装置中的操作系统的地址空间的管理器。内核的服务被操作系统的其它部分或被应用程序通过一组指定程序接口来请求,这有时被称作系统调用。
在内核和硬件层之间的是基本输入/输出系统(BIOS)层530,所述基本输入/输出系统层在某些实施例中是存储在某些永久内存(例如可编程只读内存(PROM)、或电可编程只读内存内存(EPROM))中的固件,且包含用于进行以下操作的程序代码:初始化和测试系统硬件组件,以及在计算机系统100启动时从大容量内存装置加载操作系统。BIOS可以另外为硬件组件提供抽象层,以便提供一致的方式以供应用程序和操作系统与硬件组件(例如系统内存和输入/输出装置)交互。
在某些实施例中,软件栈进一步包含例如内核中的HV驱动器550。HV驱动器550是用于控制对HVDIMM 200的系统存取的软件程序。因此,HVDIMM 200可以如标准DIMM(例如DDR4 LRDIMM)一样操作而不需要对BIOS进行任何改变。HV驱动器550对CPU中的存储空间560或计算机/服务器系统中的一个或多个其它内存装置进行存取,所述存储空间或其它内存装置用于存储查找表或其它配置信息,且所述HV驱动器550可以按需要查询和/或更新。在某些实施例中,驱动器拦截用于对HV闪存220和/或HV-DB240进行存取的系统调用且引导内存控制器发送控制、地址和数据信号,以响应于系统调用且遵从系统正使用的内存接口标准(例如,JEDEC DDR4 LRDIMM标准)。在某些实施例中,FET开关,即,FET-A,经配置以允许RCD 320和HV控制器230两者在正常系统操作期间从MC接收C/A信号,且HV控制器230经配置以监视来自内存控制器的C/A信号且识别出并作用于响应于对HV闪存220和/或HV-DB 240进行存取的系统调用而制订的C/A信号。
例如,如图6中所示,其说明由HVDIMM 200支持的不同数据路径。虚线/点虚线表示一般系统读/写数据路径610,系统通过所述数据路径经由标准内存接口执行与HV-DRAM210之间的读/写操作。点虚线表示页出(或换出)数据路径620,HVDIMM 200在HV控制器230的控制下且响应于将数据从主内存移动到存储装置以便例如使得换入主内存中用于数据的空间的系统请求,通过所述数据路径将数据从HV-DRAM 210传送到HV-DB 240和/或HV闪存。虚线630表示页入(或换入)数据路径,HVDIMM 200在HV控制器230的控制下且响应于将数据从存储装置移动到主内存以供一个或多个软件程序随机存取的系统请求,通过所述数据路径将数据从HV-DB 240或HV闪存220传送到主内存。
在某些实施例中,对主内存的正常系统存取在系统和HV-DRAM 210之间进行,而没有HV驱动器550或HV控制器230的较多参与。在某些实施例中,计算机系统100中的内存接口被设计为没有按命令握手规定的从属接口。因此,系统不知道是否有DIMM上(模块内)活动占用DRAM I/O。例如,如果DRAM I/O被占用用于在主内存和存储装置之间传送数据,且系统(内存控制器)在预期DRAM将准备好执行系统命令的情况下发起数据读取或写入命令,那么DRAM将不能执行系统读取/写入操作且系统将经历‘内存故障’,这引起系统故障。
在某些实施例中,对于涉及HV闪存220或HV-DB 240的操作(例如换入或换出操作),HV驱动器550和HV控制器230在一起用于将数据移进或移出主内存,而不导致与对主内存的正常系统存取的冲突。在某些实施例中,当HV驱动器需要在DRAM(主内存)和闪存(存储装置)之间传送数据时,其发送内存存取请求到内存控制器,且将此请求提供给DRAM和闪存地址。内存控制器可以交错HV驱动器请求与正常系统内存存取请求。
在某些实施例中,在接收将数据从HV闪存220传送到HV-DRAM 210的页入命令之后,HV控制器监视来自内存控制器的内存读/写命令。如果用于写入命令的内存地址匹配页入命令中的目标DRAM地址,那么HV控制器用来自闪存的数据替代来自系统的写入数据。另一方面,在接收将数据从HV-DRAM 210传送到HV闪存220的页出命令之后,HV控制器监视来自内存控制器的内存读/写命令。如果用于读取命令的内存地址匹配页出命令中的源DRAM地址,那么HV控制器偷取DRAM读取数据,且将DRAM读取数据传送到闪存。
例如,如图7A中示出,当发出页入请求时,HV驱动器将拦截页入请求且根据所述页入请求制订页入命令和内存映射I/O(MMIO)信号值,所述页入请求可以包含存储装置中的源地址范围和主内存中的目标地址。HV驱动器550指示内存控制器向HVDIMM 200发出页入命令。页入命令将同一组C/A信号用作标准写入命令,但利用有效或失效的一个或多个指定C/A信号(例如片选信号)来指示此信号并不是用于DRAM装置310作出响应的正常写入命令。内存控制器将调度且发送页入命令,如同它是标准写入命令一样。HV-DRAM 210中的RCD320经配置以识别此页入命令并且将不将C/A信号转发到DRAM装置310。另一方面,HV控制器230已经监视C/A信号且将通过控制HV-DRAM 210和HV闪存220或HV-DB 240之间的数据传送而作用于页入命令。
在某些实施例中,响应于页入命令,HV控制器230可以设定FET开关,即FET-D,以将与页入命令相关联的数据信号引导至HV控制器230。这些数据信号表示通过HV驱动器550制订的MMIO值,且包含与换入请求相关的另外的信息/指令,例如在HV闪存220中从何地址获取数据以及将数据放置在HV-DRAM 210中的何地址处。在某些实施例中,在接收MMIO信号之后,HV控制器230可以检查所请求的页入数据是否已经被加载到HV-DB 240中,且如果否,那么HV控制器230将通过将HV控制器230中的数据缓冲器420用作用于在读取和写入操作之间的页入数据的暂时性存储装置来从HV闪存220读取页入数据且将页入数据写入到HV-DB240,而开始且控制从HV闪存220到HV-DB 240的数据传送。在某些实施例中,在所有页入数据被传送到HV-DB 240后,HV控制器230可以将一些页入数据重新加载到HV控制器230中的数据缓冲器420中,重设FET-D开关以允许HV-DRAM 210执行与内存控制器之间的正常内存操作,且等待来自内存控制器的将数据写入到HV-DRAM 210中的命令。
在某些实施例中,HV驱动器550经配置以等待一定量的时间以允许将页入数据从HV闪存220传送到HV-DB 240。HV驱动器550可以基于被页入的数据的量来确定时间量。之后,HV驱动器550将指示内存控制器调度虚写命令并将虚写命令发送到HVDIMM 200。在某些实施例中,虚写命令像正常的写入命令一样,除了它跟随有来自内存控制器虚拟数据或不跟随有数据。HV控制器230将识别虚写命令,因为所述虚写命令被引导在与应该放置页入数据的地址相同的地址处。作为响应,HV控制器230将设定FET-D开关且将提供页入数据到DRAM装置310。来自内存控制器的虚拟数据因此被忽略或丢弃。在某些实施例中,HV控制器230在接收虚写命令之后的某一时间段将页入数据输出到DRAM装置310,使得所述数据根据DRAM装置310的CAS时延参数出现在DRAM I/O处。在与虚写命令相关联的页入数据已经被写入到DRAM中之后,HV控制器230将重设FET-D开关以允许DRAM执行正常的系统内存操作。
在某些实施例中,HV控制器230经配置以监视来自内存控制器的内存命令,且相应地调度DIMM上(模块内)数据传送以避免数据存取冲突。在某些实施例中,当将页入数据放置在DRAM I/O处时,HV控制器230将围绕系统内存存取工作,以便避免由此类数据存取冲突导致的系统故障。例如,如图8中所说明,将数据A到G从HV-DB 240(TBM)页入到主内存(MM),系统还可以发出将数据M、M+l、M+2、M+3写入到主内存(MM)中的内存存取命令。内存控制器可以如下调度来自系统的内存命令和来自HV驱动器550的虚拟写入命令:
CAS TBM A(未示出)-其是来自HV驱动器550的将数据A从TBM传送到主内存(MM)的虚写命令;
CAS TBM B-其是来自HV驱动器550的将数据B从TBM传送到主内存(MM)的虚写命令;
CAS sys M-其是将数据M从系统写入到MM中的正常写入命令;
CAS TBM C-其是来自HV驱动器550的将数据C从TBM传送到主内存(MM)的虚写命令;
CAS sys M+l-其是将数据M+l从系统写入到MM中的正常写入命令;
CAS sys M+2-其是将数据M+2从系统写入到MM中的正常写入命令;
CAS TBM D-其是来自HV驱动器550的将数据C从TBM传送到主内存(MM)的虚写命令;
CAS TBM E-其是来自HV驱动器550的将数据C从TBM传送到主内存(MM)的虚写命令;
CAS TBM G-其是来自HV驱动器550的将数据C从TBM传送到主内存(MM)的虚写命令;
CAS sys M+3-其是将数据M+3从系统写入到MM中的正常写入命令;以及
CAS TBM H(未示出)-其是来自HV驱动器550的将数据H从TBM传送到主内存(MM)的虚写命令。
在系统发出CAS TBM B命令之前,HV控制器230(在图中称为“FPGA”)可能已经将CAS TBMA’、CAS TBM B’以及CAS TBM C’命令发出到TBM以将数据A、数据B以及数据C输出到HV控制器。HV控制器可以预加载来自TBM的数据A和数据B(如“来自TBM的FPGAPg-in输入”中的数据块A和B所示),且将其放置在HV控制器中的数据缓冲器420中。之后,从TBM输出数据C以响应于来自HV控制器的CAS TBM C’。
当HV控制器观察到来自系统的CAS sys M命令时,HV控制器继续向TBM发出CASTBMD’。作为响应,HV控制器向TBM发出DES/NOP命令以暂停TBM和MM之间的数据传送。因此,FPGA页入(Pg-in)输出暂停,如在FPGA Pg-in输出中的数据B和数据C之间的间隙所示,且系统数据M(Sys)在MM输入处被接收。之后,当HV控制器观察到来自系统的CAS sys M+1和稍后的CAS sys M+2时,HV控制器继续向TBM发出CAS TBME’。作为响应,HV控制器发出两个连续的DES/NOP命令以使TBM暂停将数据输出到HV控制器。因此,在数据E和数据F之间没有数据从TBM输出,且在数据C和数据D之间没有数据被从HV控制器驱动到MM,从而在HV控制器输出中留下到MM的间隙以允许MM获取系统数据M+l和M+2(Sys)。
在某些实施例中,HV控制器230进一步经配置以执行在HV-DRAM 210和HV闪存220之间的遮蔽数据传送操作。例如,当系统命令以已经被预编程为需要从HV闪存220传送的数据的地址的DRAM地址为目标时,HV控制器230将执行此类传送以使得能够对此预编程地址进行恰当的系统存取。
页出操作可以类似地但在相反方向上且以不同次序执行,如图7B中举例说明。因此,页出/页入过程可以是比使用PCIe SSD或常规内存通道存储装置更快的数量级,因为页入和页出数据可以在主内存和HVDIMM 200上的存储装置之间传送,而不经过内存通道或CPU。另外,系统性能得到进一步改进,因为HV闪存220和HV-DPvAM 210之间的数据传送还释放主内存通道和CPU。在某些实施例中,HV闪存220中的数据以DRAM格式存储,因此当数据在HV闪存220和HV-DRAM 210之间移动,不需要转换数据格式,所述转换常规地通过CPU执行。
在某些实施例中,如图9中示出,多个HVDIMM 200,例如HVDIMM 1、HVDIMM 2等,可以在一起用于提供经由系统总线耦合到CPU/MC的系统内存和/或存储装置,所述系统总线包含系统控制/地址总线和系统数据总线。因为操作系统将所有HVDIMM 200的闪存空间视为统一的HVDIMM 200存储装置,且所述系统可能不知道哪些物理闪存装置位于哪些物理HVDIMM 200上。因此,HV驱动器550可以发出具有在一个HVDIMM 200上的DRAM地址和在另一HVDIMM 200上的闪存地址的页出命令。
解决此问题,在某些实施例中,HV驱动器550构建内存关联表,如图10中示出。因为操作系统将存储装置提供的所有HVDIMM 200视为一个存储磁盘(也即,K磁盘),所以驱动器可以将K磁盘分割成多个子磁盘K1、K2、...Kn,每个子磁盘与对应的HVDIMM 200相关联。例如,如图10中所示,内存关联表每CPU具有24个条目,所述24在某些实施例中是每CPU的DIMM插口的数目。每个条目与对应的HVDIMM 200相对应且包含子磁盘数目、HVDIMM 200ID、在DIMM上的HV-DRAM 210的最小和最大地址范围,以及在DIMM上的HV闪存220的最小和最大地址范围。因此,通过查询内存关联表,HV驱动器550将尝试交换在HV-DRAM 210和在相同HVDIMM 200上的HV闪存220的地址范围内的数据。
一般来说,出于成本/性能/功率原因,计算机/服务器系统中的内存布置在层中,使得较快且较小的内存位于内存核心内或靠近内存核心(例如第一层高速缓存),且密度和存取时间随内存物理地且电子地远离所述核心而增加。在CPU/MC封装中存在多层高速缓冲内存,且经由系统总线中的专用内存通道连接到MC的内存模块被视为主内存,所述主内存提供由CPU进行的动态随机数据存取。存储装置远离CPU且通常是系统中的非常大的内存,例如硬盘装置(HDD)、固态存储装置(SSD)等,但所述存储装置不提供动态随机存取能力。
计算机系统100中的内存略微类似地构造,如图11中示出,除了由HVDIMM 200提供的存储装置并不远离CPU且来自存储装置的数据可以移动到HV-DRAM 210中以用于随机存取,而不经过南桥或PCI总线或甚至内存通道。此外,HVDIMM 200提供HV-DB 240,所述HV-DB可以通过存储数据而充当HV-DRAM 210的高速缓冲内存,HV-DRAM 210不具有容纳所述数据的空间且所述数据可以在需要时被快速移动到DRAM中以响应于来自内存控制器的虚写命令。
在某些实施例中,HVDIMM 200经配置以将非常大的可配置可扩展动态随机存取系统内存提供到计算机系统。HVDIMM 200并入有新颖的内存高速缓存层技术,即,内存窗口技术,其中HV-DRAM 210保持HV闪存220的连续且完整的区段以供计算机系统进行动态存取。因此,HV闪存220用作HV-DRAM 210的数据仓,使得计算机系统可以打开HV闪存220中的内存窗口(MW)且经由内存窗口将存储在闪存220中的所需数据引入到HV-DRAM 210以供系统进行动态随机存取。
在某些实施例中,HVDIMM 200可以同时执行两种操作:如上文所论述的标准内存操作(SMO),以及内存窗口操作(MWO)。在SMO期间,HVDIMM 200经由标准协议(例如,JEDECDDR4 LRDIMM协议)提供标准主内存空间。在MWO期间,如图12中所示,HV闪存220中的特定内存区域(MW),例如闪存区段或区块,被打开以支持计算机系统的高速动态随机存取。在特定内存区域中的所请求的数据从闪存移动到DRAM。如果允许打开比DRAM空间更多的MW的系统请求,那么系统具有以下选择:使HVDIMM 200覆写最近最少使用(LRU)的DRAM区域,或覆写特定DRAM位置。当在特定持续时间(默认地)上不存在跟多的打开页时,或当系统专门地请求节省数据时,将来自DRAM区域的数据从HV-DRAM 210移动回到HV闪存220。MWO可以是通过HVDIMM 200控制器(HV控制器230)控制的后台操作。
因此,对于所述计算机系统,HV闪存220还可以被视为非常高速存取的存储装置,因为数据不需要从单独的存储单元移动到主内存,且因为来自闪存中的任何特定存储区域的数据在来自系统的打开MW的请求后可以经由内存通道来存取。在某些实施例中,系统可以做出打开具有特定大小的MW的单一请求。
在一个实施例中,HVDIMM 200是多级(例如,2级)DIMM,且HV控制器230独立地控制每个等级,因此系统可以存取一个等级同时HV控制器230执行MWO。然而,一般来说,优选的是,在两级上一致地执行MWO以用于较好的内存管理。不管系统是否每级执行一次MWO或在两级上一致地执行MWO,HV控制器230都可以设定其内部(每级)寄存器位以指示MWO的完成。如上文所陈述,当除或除了设定寄存器位外已完成MWO时,系统还可以配置HV控制器230以产生中断信号。
在某些实施例中,HV控制器230还控制HVDIMM 200的启动过程。存在两种类型的启动;新启动(在干净的关闭之后启动)和重启(在电源故障之后启动)。不同于新启动情况(其中在HVDIMM 200中不存在有效数据),重启需要HV控制器230以与在失去电源时在HV-DRAM210中的数据相同的数据填充HV-DRAM 210。
HVDIMM 200可以具有两个非常不同的操作频率,HV模式频率和LRDIMM模式频率。HV模式频率用于在HV-DRAM 210和HV闪存220之间传送数据,而LRDIMM模式频率用于在HVDIMM 200和系统之间传送数据。在某些实施例中,HV-DRAM 210具有两个可操作模式,即标准操作模式和MW模式。在标准操作模式模式期间,HV-DRAM 210完全支持标准内存操作(例如JEDEC DDR4 LRDIMM操作),包含初始化和训练协议。当HV-DRAM 210在MW模式中时,HV-DRAM 210在其DLL断开的情况下操作,因为MW操作模式频率(HV模式频率)比DLL的频率范围慢得多(例如慢一个数量级),所述DLL的频率范围覆盖标准操作模式频率。HV控制器230将HV模式频率用于MW操作,在此期间,DRAM和RCD 320置于JEDEC DLL断开可操作状态中。
在某些实施例中,MWO的开始通过来自系统的请求启动。图5是根据某些实施例的在具有集成MC的CPU中的某些组件的框图。因为MC和HVDIMM 200之间的内存通道可能不允许足够数目的地址位来对HV闪存220中的整个存储空间进行编址,所以系统可以保持查找表,关于所述查找表,HV闪存220的区域已经在HV-DRAM 210复制以用于随机存取。如图7A中示出,当系统需要对HV闪存220中的某一存储区域进行存取时,系统将检查查找表以确定存储在存储区域中的数据是否已经被复制到HV-DRAM 210中的某一区域,即,在HV闪存220中是否打开MW以允许对数据的系统存取。如果答案为是,那么MC将前进以执行内存操作以对DRAM中的存储区域进行存取。如果答案为否,那么系统将发送请求以打开HVDIMM 200中的MW。所述请求将包含在HV闪存220中待存取的存储区域的标识,例如,存储区域的起始地址和存储区域的大小,以及在DRAM中的将来自存储区域的数据传送到其的目标地址。如果系统需要超过一个MW,那么可以一个接着一格地发送超过一个请求。在某些实施例中,请求经由I2C总线或任何其它系统管理/控制总线直接地发送到HVDIMM 200中的HV控制器230。在某些其它实施例中,请求被发送到DMA控制器且由DMA控制器处理,因此在MW被打开时系统可以经由内存通道继续执行其它内存操作。
在某一实施例中,DMA控制器用于控制MWO过程的某些方面。图13是示例性DMA控制器的框图。在某些实施例中,(DMA)控制器可与CPU/MC结合使用以开始且监视HVDIMM 200中的MWO。在没有DMA的情况下,CPU/MC可以在MWO的部分持续时间或整个持续时间上被占用,且因此不可用于执行其它任务。利用DMA,CPU可以简单地向DMA发起数据传送请求,且接着在所述传送在进行中时执行其它操作。当数据传送完成时,通过来自DMA控制器的中断通知CPU。因此,DMA可以分担来自CPU的延伸的内存操作。许多硬件系统使用DMA,包含磁盘驱动控制器、显卡、网卡和声卡。DMA还用于多核处理器中的芯片内数据传送。具有DMA信道的计算机可以比没有DMA信道的计算机少得多的CPU开销将数据传送到装置且从装置传送数据。类似地,多核处理器内部的处理元件可以将数据传送到其本地内存和从其本地内存传送数据而不占用其处理器时间,从而允许计算和数据传送同时进行。
在某些实施例中,如图14中所示,DMA从CPU/MC接收打开HVDIMM 200中的MW(MW)的请求。DMA可以缓存所述请求且经由I2C总线将相同请求或重新制订的请求转发到HV控制器230。DMA可以主动地监视HVDIMM 200中的相关联MWO,且在MW打开时经由中断通知CPU/MC。
与快闪内存相关联的特性(例如有限的耐久性和缓慢写入)可能需要HVDIMM 200从在CPU上运行的操作系统(OS)获得支持。OS还可能需要知道页在DRAM和闪存之间的移动以便知道何时隐藏闪存的弱特性。在启动时,OS需要分配DRAM中的内存页。在写入到某一页之后,OS还可能需要知道可以执行到页的下一次写入的估计时间。OS还可能需要设定DRAM页和闪存页的页表条目。这些任务中的一些或全部可以分担给DMA,所述DMA包含跟踪这些活动的状态寄存器、内部内存和控制逻辑410。
例如,DMA可以存储关于HV控制器230将一定量的数据从HV闪存220传送到HV-DRAM210可能需要的时间的信息。因此,DMA在告知CPU/MC内存窗口已经打开以供动态随机存取之前,不需要等待从HV控制器230接收通知。替代地或另外,DMA可以将打开内存窗口的请求分成多个请求,所述多个请求各自针对预先确定的大小(例如4KB)的较小数据块,因为完成此类数据传送中的每一个所需的时间更加可预测。
因此,HVDIMM 200允许系统打开HV闪存220区块中的内存窗口以用于动态操作。系统将起始地址和数据大小发送到HV,且HV控制器230打开内存的包含数据的区块且将所述量的所请求数据传送到HV-DRAM 210中。在某些实施例中,每HV闪存220区块的最小传送大小是32KB,且最大大小是HV闪存220区块大小(例如4MB)。因此,如果每HV闪存220区块的传送大小是32KB,那么对于8GB的DRAM,系统可以同时打开250K个HV闪存220区块。
表1
在某些实施例中,HV控制器230经配置以提供HV闪存220地址管理,且跟踪相对于系统已知的虚拟物理地址的物理HV闪存220地址。这可以通过产生和更新地址映射表来完成,所述地址映射表将系统(虚拟物理)地址映射到HV闪存220物理地址以用于跟踪任何特定闪存区块的地址,且映射到每个区块内的每个打开的(且复制到HV-DRAM 210的)存储位置的偏移地址。HV控制器230使用偏移地址来正确地将来自HV-DRAM 210的数据放置回到闪存内存的特定区块内的恰当位置中。表1列出根据某些实施例的几个地址类型的描述和大小。
图15A说明根据某些实施例的由HV控制器230执行以打开HV闪存220中的内存窗口以供系统进行动态随机编址的某些过程。在某些实施例中,在来自内存窗口的数据已经成功地传送到DRAM之后,HV控制器230可以通知DMA或CPU/MC:内存窗口已经打开。在其它实施例中,HV控制器230可以基于针对内存窗口的请求和历史信息来预测将完成传送的时间,且在完成传送之前将通知发送到DMA或CPU/MC,使得当CPU/MC从DMA接收中断或直接地从HV控制器230接收通知且抽出时间开始利用内存窗口的内存操作时,将完成数据传送。
图15B说明根据某些实施例的由HV控制器230执行以关闭内存窗口的某些过程。系统可以经由I2C接口或某一其它系统控制总线接口来请求关闭HV闪存220区域。所述请求可以包含起始HV-DRAM 210地址和内存窗口的大小。在某些实施例中,如果系统需要关闭一个内存窗口但保持HV闪存220区块内的其它内存窗口打开,那么直到HV闪存220区块内的所有内存窗口都被关闭,HV控制器230才将关闭(更新)所述区块。
在由于例如电力损耗导致的灾难性系统故障的情况下,HV控制器230还可承担将数据从HV-DRAM 210移动到HV闪存220的职责且关闭打开的区块。如果没有已更新的HV-DRAM 210数据已经存储到HV闪存220中,那么HV控制器230可能需要移动的数据的最大大小可以与DRAM大小一样大,例如,8GB。
在某些实施例中,为给HV-DRAM 210中的内存窗口留出空间,某些DRAM页可能需要被移动到闪存。HV控制器230将执行一个或多个预先暂存的闪存页且将一个或多个DRAM页复制到闪存中。复制可以在不减缓或停止CPU的情况下完成。DRAM页的小副本还可以呈现或固持在DRAM中或在HVDIMM 200中的高速缓存/暂存存储区中以供OS来控制。
在某些实施例中,如图16中所示,HV控制器230包含内置处理器1610和相关联的硬件(例如,整合为FPGA SOC的一部分的双ARM cortex A9内核配置),且可以充当协处理器以提供DIMM上(模块内)数据处理,例如,搜索、排序、筛查、分类、结构化、格式化等。因此,传统地通过系统CPU执行的某些任务可以被分担给协处理器,因此可以大大改进整个系统性能。此类任务的实例包含但不限于:内存内压缩/解压缩(例如,数据源在DRAM的一个区段中且经处理数据在DRAM的另一区段中),内存内加密/解密;安全认证等。因为协处理器在没有系统CPU的参与的情况下直接对DRAM主内存或闪存存储装置进行存取,所以协处理器可以在没有系统宽开销的情况下压缩、加密且认证DIMM上内存中的数据。
在某一实施例中,提供具有暴露给系统软件的应用编程接口(API)的软件或固件封装以支持DIMM上计算/处理。软件或固件封装由协处理器运行且可以包含例如软件研发套件(SDK),例如数据压缩SDK、数据加密SDK、数据认证SDK等。固件封装可以存储在HVDIMM200上或其可以从系统下载。软件或固件封装可以经配置以支持不同特征,且所述配置(例如,许可证位,即指示可用功能的位)可以存储在HVDIMM 200上的一次性可编程装置(OTP)中。例如,HV控制器230可以使用由存储在OTP中的相对应的配置位指定的一种压缩算法,来对存储在主内存或HVDIMM 200上的存储装置中的数据的某一区块或段进行压缩或解压缩。
作为另一个实例,当CPU在运行涉及存储在DIMM上存储装置中的大量数据的搜索过程时,HV控制器230可以预先筛查所述数据以减小在将数据从DIMM上存储装置传送到主内存时将由CPU处理的数据大小。HV控制器230还可以对数据进行排序以减少数据分类和收集时间。HV控制器230还可以搜索数据以支持元数据信息的快速查询。在另一个实例中,可以预搜索来自存储装置的数据,使得仅被认为与搜索标准相关的条目需要经过ECC且被加载到主内存中。
在另外的实施例中,HV控制器230使用HV-NIC(所述HV-NIC可以是例如以太网接口控制器)来提供网络和DIMM上内存之间的直接数据传送,且使用DIMM上协处理器来提供数据提取/校正,使得数据可以在不经过系统CPU的情况下直接地从网络被加载到存储装置、主内存或同时加载到这两者,反之亦然。因此,HVDIMM 200支持在群集环境中的有效数据共享。
例如,多个HVDIMM 200可以用于Hardoop处理框架中,所述Hardoop处理框架是用于在CPU的群集上的数据集的存储和大规模处理的开源软件框架,所述群集各自表示在分布式计算环境中的DataNode。每个DataNode可以包含多个HVDIMM 200,所述HVDIMM在一起可以包含例如192GB的主内存和3到6TB的内存通道存储装置。由于在闪存和多个HVDIMM200上的DRAM之间的并行数据传送,可以实现非常快速的内存通道存储吞吐速率(例如每2CPU服务器39GB)。此外,HVDIMM 200上的存储装置可以非常低的时延(与用于对DRAM进行存取的时延相当)存取,因为通过内存通道对所述存储装置进行存取。因为数据在不必经过内存通道或PCI接口的情况下在HV-DRAM 210和HV闪存220之间移动,所以可以在读取主导的操作中存取非常大区块的数据(例如多达1GB)。
在某些实施例中,如图16中所示,HVDIMM 200提供在主内存和HVDIMM 200上的存储装置之间的高带宽专用数据路径1620,以支持DIMM上数据处理和快速‘换页’和‘请求页’操作。在另外的实施例中,DIMM上数据缓冲器(HV-DB 240)可以是非常大的数据缓冲器(例如太位内存(TBM))以充当用于DIMM上处理的临时存储装置。在某些实施例中,如图16中示出,HVDIMM 200还提供另一数据路径1630以允许经由HV控制器230和HV-DB 240而不经过HV-DRAM 210的在系统和HV闪存220之间的数据传送。
在另外的实施例中,如图16中所示,在某些实施例中,HVDIMM 200上的闪存存储装置包含多个(例如9个)标准嵌入式多媒体卡(eMMC)封装,所述封装各自具有嵌入式多媒体接口、闪存控制器和闪存内存。HV控制器230还包含内置独立磁盘冗余阵列(例如RAID 3)电路1640,所述电路提供动态的基于硬件的错误校正、全数据恢复和数据重构,从而产生增加的闪存寿命。RAID 3特征还最小化对数据复制的需要。
eMMC大体上支持硬件中的错误校正。然而,当eMMC中的一个在读取操作期间不能校正来自其封装中的闪存内存的数据中的某些错误时,可能出现问题。在某些服务器系统中,存储网络内置有冗余度(例如RAID)以使得能够在存储系统级别进一步校正错误。在eMMC用于形成闪存存储装置之前,此类冗余度是有帮助的,因为闪存存储装置将输出具有错误指示的未校正数据。然而,eMMC在其不能校正数据中的错误时不产生输出数据。因此,来自eMMC的缺少位可能导致系统故障和/或不可恢复的数据错误。
为解决此问题,根据某些实施例的HVDIMM 200包含至少一个奇偶校验eMMC 1650(例如,图2中的第9eMMC),所述奇偶校验eMMC用于存储与存储在其余eMMC中的数据(“数据eMMC”,例如,图2中的第1到第8eMMC)相关联的奇偶校验位。HVDIMM 200进一步包含在例如HV控制器230中的错误校正(例如RAID 3)电路。在某些实施例中,RAID 3电路包含于存储装置和系统之间的数据路径中,所述系统还可以包含TBM和/或主内存,如图2中示出。
在某一实施例中,如图17A中示出,当写入数据将被写入到存储装置时,RAID 3电路从例如TBM接收写入数据的每一集合(例如8字节),且产生用于数据字节的每一集合的奇偶校验字节。RAID 3电路随后输出数据字节连同其相关联的奇偶校验字节以用于存储在对应的eMMC电路中。在读取操作期间,如图17B中示出,HV控制器230输出控制和地址信号以指示eMMC输出读取数据。RAID 3电路将从数据eMMC接收数据字节的集合且从奇偶校验eMMC接收奇偶校验字节。对于同时接收的数据字节的每一集合,RAID 3电路将确定数据字节的集合是否缺少来自数据eMMC中的一个的字节。如果不缺少数据字节,那么RAID 3电路将沿着其既定路径移动数据字节的集合。如果缺少来自eMMC中的一个的数据字节,那么RAID 3电路将从数据字节的集合和与所述数据字节的集合同时接收的奇偶校验字节重构缺少的数据字节且产生经重构的数据字节的集合,所述经重构的数据字节的集合被置于TBM中以用于转发到主内存或系统,或存储在HV控制器230中的缓冲内存中以用于由DIMM上处理器进一步处理。
HV-DB 240用于暂时地存储数据,以便使HV-DB 240中的数据传送更快且更有效。因为数据通常可以比将数据传送到系统且从系统传送数据更慢的速度传送进出闪存内存,所以HV-DB 240用于缓存去往/来自闪存内存的数据,使得系统不必减慢且等待将被写入到存储子系统或从存储子系统读取的数据。当系统将数据写入到存储子系统时,以DRAM数据I/O速度将数据缓存到HV-DB 240中,所述DRAM数据I/O速度比闪存数据I/O速度快得多。缓存数据基于例如先进先出法而写入到闪存内存中。对于读取方向也是如此。因此,当从存储子系统读取时,CPU可以参与与主内存之间的其它过程,直到HV-DB 240缓冲器已经以DRAM速度缓存预定量的数据以用于传送到主内存或系统。另一方面,当将数据从主内存传送到存储装置时,根据来自系统或HV控制器230的一组控制/地址(C/A)信号从DRAM读取数据,且根据来自HV控制器230的另一组信号将数据写入到HV-DB 240中。当DRAM可以参与与系统之间的其它任务时,HV控制器230可以通过从HV-DB 240读取数据且将数据写入到存储装置,来将数据从HV-DB 240传送到存储装置。
HVDIMM 200中的组件,例如,HV控制器230、主内存子系统(或易失性内存子系统)、HV-DB 240、存储子系统(或非易失性内存子系统),可以安装在同一印刷电路板上或非常接近于彼此而安置以允许在其间的快速且平稳的数据传送。
由于由与非门的几何结构中的物理作用产生的随机错误,与非闪存可能易于遭受低可靠性问题。因此,在某些实施例中,为改进数据完整性,HV控制器230经配置以执行一组错误检测/校正例程以检测和校正存储在HV闪存220中的数据中的错误。例如,每当将数据从HV-DRAM 210传送到HV闪存220中时,HV控制器230将对数据执行错误校正译码。在某些实施例中,如图18中所示,对数据位进行分组且数据位的每个群组以三维矩阵布置。循环冗余校验(CRC)码可以使用预定算法沿着用于矩阵的三个维度的X、Y和Z轴中的每一个计算。CRC码随后与数据一起存储到HV闪存220中。在某些实施例中,HV控制器230包含片上存储空间(例如,lk到2k的SRAM)和/或移位寄存器,以在将数据从DRAM传送到闪存时存储用于CRC计算的数据的副本。
当将数据从HV闪存220传送到HV-DRAM 210时,HV控制器230将再次将数据的每个群组布置成相同的矩阵格式,且CRC码再次使用相同的预先确定的算法沿着如图8中示出的轴线中的每一个计算。将最新计算出的CRC码与和数据一起接收的相对应的CRC码相比较。如果数据中不存在错误,那么最新计算出的CRC码将与和数据一起接收的相对应的CRC代码匹配。如果所接收的数据包含一个或多个错误,如图19和20中示出,那么在最新计算出的CRC码和所接收的CRC码之间将存在不匹配。在以矩阵格式布置数据时,CRC码中的此类不匹配可以用于识别错误数据位的位置,且可以通过简单地在所识别位置处翻转错误数据位来进行校正。
图19说明其中数据矩阵的X-Y平面中的位中的一个(例如位D210)为错误的示例性情况。这可以利用在仅X和Y方向精确指出具有错误的位位置的CRC校验来检测到。如图19中所示,位D210是沿着X方向的位D010、D110、D210、...和D710的行的部分,并且还是沿着Y方向的位D200、D210、D220、...、D290的列的部分。因此,如果用于位(CRC810、CRC910和CRCA10)的行的最新计算出的CRC码和用于位(CRC2A0、CRC2B0和CRC2C0)的列的最新计算出的CRC码都不与和数据一起接收的相对应的CRC码匹配,那么当在相同X-Y平面中的所有其它最新计算出的CRC码与和数据一起接收的相对应的CRC码匹配时,错误的位置将在位的行与位的列的交点即D210处,如图19中示出。
图20说明其中在数据矩阵中的同一X-Y平面中的数据位中的两个(例如位D210和位D600)为错误的示例性情况。为了恰当地精确指出位错误的位置,需要在X、Y和Z方向执行CRC校验。如图10中所示,在仅X和Y方向执行的CRC校验在此情况下将指示位错误的四个可能位置(例如D200、D210、D600和D610)。因此使用在Z方向上的另外的CRC校验来精确指出位错误的精确位置(例如D210和D600)。
在某些实施例中,HV控制器230对数据的副本执行CRC校验,所述数据从HV闪存220传送到HV-DRAM 210。因此,在HV控制器230检测到位错误时,错误数据位可能已经被写入到DRAM中。为校正位错误,HV控制器230可以执行读取-修改-写入操作以从DRAM读取包含错误位的数据段、修改错误位且接着将数据段写回到DRAM中。
如上文所陈述,闪存内存具有有限数目的编程擦除周期,且频繁的擦除/写入操作可能导致闪存内存单元耗损,从而导致可靠性问题。为延长HV闪存220的寿命,HVDIMM 200包含除主闪存(如图12中示出)外的暂存闪存,且HV控制器230经配置以在数据在HV-DRAM210和HV闪存220之间来回移动时执行错误检测/校正过程。通过使用下文论述的错误检测/校正过程,HVDIMM 200可以通过尽可能地避免对主闪存的编程/擦除(P/E)操作来支持对闪存的随机更新而不减少闪存寿命。
在某些实施例中,当闪存区块被填满时,将暂存闪存用于容纳经更新(经修改)数据。当系统准备好关闭闪存区块时,暂存闪存中的经修改数据可以并入到闪存区块中。例如,如果特定任务/应用需要对闪存区块中的100个闪存页中的每一个的100次更新,那么将需要10,000次更新。如果在某一区块中存在25个初始未填充的页区域,那么此任务/应用需要400次P/E操作,这相当于重写3.2GB的数据。然而,如果经修改数据存储在暂存闪存中,那么区块仅需要1次P/E操作。对于暂存闪存区域,仅10,000页将被写入,这相当于重写仅80MB的数据。
在某些实施例中,不同于存储装置或主闪存,暂存闪存不必遵循区块概念,但它遵循标准闪存操作。因此,将每个页更新写入到下一个打开(未被写入)的页空间中。当再次更新写入页且将经更新页写入到新位置中时,或当通过系统关闭存储装置闪存在的区块来将所述页复制到存储装置闪存中时,写入页被标记为‘旧’。当暂存闪存中的物理块中的所有页被标记为‘旧’时,擦除所述区块且接着将其标记为打开(或可用)。在某些实施例中,对于主要地包含‘旧’页的区块,将未标记‘旧’的页复制到新位置中,因此可以擦除所述区块。
图21到22说明常规SSD或闪存操作,其中根据行业标准置换算法,当系统请求打开闪存区块(区块K)中的区段时,系统必须选择主内存(DRAM)中的区块(区块N)以被闪存区块置换。在区块N被区块K中的数据置换之前,打开闪存中的新区块以容纳区块N中的数据。之后擦除闪存中的另一区块,其中区块N初始从所述区块获取。
图23到24说明根据某些实施例的在HVDIMM 200中的内存窗口操作。此处,响应于打开主闪存中的新区段的系统请求,在HV-DRAM 210中选定某一区块,但仅DRAM区块中所需用于选定区段的页(例如用于区段Y的X页)实际上经受置换。在将来自区段Y的数据写入到由DRAM中的X页固持的空间中之前,将X页写入到暂存闪存。因此,数据逐页在HV-DRAM 210和HV闪存220之间移动,且当打开新区段以用于动态随机存取时,非易失性内存中没有新区块需要被写入或擦除。
在某一点处,当数据逐页从闪存移动到DRAM时,可以填满当前的暂存闪存区块。例如,如图25中所示,如果内存窗口操作需要M+1页在DRAM中被置换且当前暂存区块j仅具有M页未填充,那么M+1页中的前M页可以写入到区块j中,而第M+1页写入到暂存闪存中的区块j+1中。
HV控制器230经配置以跟踪主闪存、DRAM和暂存闪存当中的数据移动。当系统请求关闭DRAM中的区块时,打开闪存中的新区块以容纳在DRAM中的待关闭区块中的数据。因为待关闭区块中的一些数据可能已经置于暂存闪存中,所以HV控制器230进一步经配置以合并来自DRAM的在待关闭区块中的数据与从待关闭区块获取且存储在暂存闪存中的数据,如图26中所说明。合并数据存储在闪存中的新区块中,且闪存中的其中从其获取DRAM中的待擦除区块的旧区块因此被擦除。
除了使用暂存闪存来延长主闪存的寿命之外,HV控制器230还经配置以通过均衡HV闪存220中的每个区块的平均使用时间来执行耗损均衡。在某些实施例中,此类耗损均衡可以通过轮循方法进行。HV控制器230使用其地址映射管理能力和相对较大的存储空间来跟踪相关联的地址变化。
图27说明根据某些实施例的HVDIMM 200轮询耗损均衡技术的简化实例。如图27中示出,事件进程案例1和2都具有经打开用于内存窗口操作的区块0和2。在事件进程案例1中,文件A首先关闭,而在事件进程案例2中,文件C首先关闭。因此,对于案例1,将文件A写入到第一空(擦除)区块(B#3)中。对于案例2,将文件C写入到区块B#3中。
除或除了被用作主内存外,HVDIMM 200还可以用作存储装置以促进内联网内的直接数据传送。
在云联网和计算中的最新的发展需要有效的方式来传送和存储数据。因为云环境支持共享计算能力以及数据库的许多不同类型应用程序,所以任何特定的服务器或存储装置瓶颈都可能影响云网络的整体性能。
存在两种类型的数据传送,即内联网和互联网。内联网提供组织内的闭合网络,所述组织共享计算资源和信息,而互联网是在内联网之间或在组织之间。
(组织之间的)互联网数据传送通常不太关注数据传送时延。另一方面,内联网数据传送需要即时响应且不太能耐受数据传送时延。当将任务分包给多个服务器以用于使用共享操作系统、程序和数据库进行并行计算时,这种问题尤其明显。在此类情况下,在这些服务器当中需要数据相干性以用于正确地执行任务。因此,在一个服务器中的任何数据传送时延都可能减慢任务执行。
内联网中还存在两个类型的数据传送:在每个个别的服务器内的数据传送和在各种服务器当中的数据传送。在各种服务器当中的数据传送使用互联网协议技术来共享信息、操作系统或计算资源。在服务器内的数据传送大体上通过CPU处理,且经由CPU出现在内存装置和网络连接当中。
当前,在内联网服务器之间传送数据需要发送服务器CPU来从存储装置或从主内存收集数据、将数据分成包且将其放置到网络上。接收服务器CPU需要提取数据且将其存储在存储装置或主内存中。在服务器内传送数据需要CPU从耦合到CPU的一个内存读取数据,且将数据写入到还耦合到CPU的另一内存装置中。
例如,当在CPU上运行的过程尝试分配比系统可用的内存更多的内存时,OS将把内存页交换到存储装置和从存储装置交换内存页。如果选定某一页以用于置换且“页出”再次被提及,那么所述页必须被页入(从存储装置读入)。这将包括等待I/O完成且总响应时间是以下各项的总和:
(页出时间)+(页入时间)
其中
(页出时间)=(内存时间)+(CPU时间)+(总线时间)+(存储装置时间)
以及
(页入时间)=(存储装置时间)+(总线时间)+(CPU时间)+(内存时间)。
在两种情况下,如果数据不需要经过CPU,那么数据传送时延可以减少。换句话说,如果进行从内存装置到网络的直接数据传送,那么服务器当中的数据传送时延将最小化。如果数据直接地在内存装置之间传送而不经过CPU,那么服务器内的数据传送时延还可以减少。
在内联网中,如果在CPU上运行的过程尝试分配比系统可用的内存更多的内存,那么OS将把内存页交换到IO存储装置和从IO存储装置交换内存页。如果选定某一页以用于置换且再次提及“页出”,那么所述页必须被页入。这将包括等待I/O完成,但总响应时间现在是以下各项的总和:
(页出时间)+(页入时间)
其中
(页出时间)=(内存时间)+(HV时间)+(存储装置时间)
以及
(页入时间)=(存储装置时间)+(HV时间)+(内存时间)
因此,总响应时间大大缩短。
在某些实施例中,HV控制器230用于通过经由HV-NIC提供网络接口(“ShareTM直接DIMM接口”)来促进不同HVDIMM 200之间的数据传送。例如,如图28中所示,HVDIMM 200(在左侧)可以经由其对应的NIC装置直接地耦合到另一HVDIMM 200(在右侧)或任何其它存储装置,且在任一HVDIMM 200在的HV控制器230经配置以使用如上文所论述的类似技术来在一个HVDIMM 200上的DRAM和在另一个HVDIMM 200中的闪存之间传送数据,在一个HVDIMM200上的DRAM和另一个HVDIMM 200上的DRAM之间传送数据,在一个DIMM上的闪存和另一个DIMM上的闪存之间传送数据,并且还在HVDIMM 200和任何其它存储装置之间传送数据。
另外,HV控制器230还用于促进在不同服务器系统之间的数据传送。例如,如图29中所示,内联网中的每个服务器系统中的HVDIMM 200可以经由其对应的HV-NIC装置和/或另一网络接口装置直接地耦合到内联网。因此,在特定服务器中的每个HVDIMM 200上的HV控制器230可以直接地开始且控制在不同服务器中的HVDIMM 200之间的数据传送。

Claims (13)

1.一种用于计算机系统的存储器模块,所述计算机系统包含耦合到存储器信道的存储器控制器,所述存储器信道包含数据总线和控制/地址C/A总线,所述计算机系统进一步包含耦合到所述存储器控制器或一直接数据管理(DMA)控制器的系统管理(SM)总线,所述存储器模块包括:
印刷电路板PCB;
安装在所述PCB上且可经配置而耦合到所述存储器信道的易失性存储器子系统,所述易失性存储器子系统可经配置而接收经所述C/A总线传输到所述存储器模块的C/A信号,并响应于指向所述易失性存储器子系统的输入C/A信号来执行存储操作,所述易失性存储器子系统包含动态随机存取存储器(DRAM)装置,所述DRAM装置包括可经配置而耦合到所述存储器信道的数据输入/输出(I/O);
安装在所述PCB上的非易失性存储器子系统,其包含闪存装置;以及
安装在所述PCB上的模块控制器,其包括耦合到所述易失性存储器子系统的DRAM接口、耦合到所述非易失性存储器子系统的闪存接口、和控制逻辑,其中所述模块控制器可经配置而耦合到所述存储器信道和所述系统管理(SM)总线,并响应经由所述存储器信道或所述系统管理(SM)总线接收到的模块内数据传输命令来控制在所述易失性存储器子系统和所述非易失性存储器子系统之间的模块内数据传送操作;
其中所述模块内数据传送操作包括从所述易失性存储器子系统传输数据到所述非易失性存储器子系统的第一模块内数据传送操作,和在所述第一模块内数据传送操作之后从所述非易失性存储器子系统传输数据到所述易失性存储器子系统的第二模块内数据传送操作;
其中在所述第一模块内数据传送操作中,所述模块控制器可经配置从所述易失性存储器子系统获取第一数据,计算相应于所获取的第一数据的第一校验码,并将所获取的第一数据写入所述非易失性存储器子系统;
其中在所述第二模块内数据传送操作中,所述模块控制器可经配置从所述非易失性存储器子系统读取第一数据,计算相应于所读取的第一数据的第二校验码,通过将所述第二校验码与所述第一校验码相比较来判定所读取的第一数据里的一个或多个错误位,修正所读取的第一数据里的一个或多个错误位元而获得修正后的第一数据,并将所述修正后的第一数据输送给所述易失性存储器子系统。
2.根据权利要求1所述的存储器模块,其可经配置执行内存操作或内存窗口操作,其中:
在内存操作期间,所述易失性存储器子系统为所述计算机系统提供标准主内存空间;以及
在内存窗口操作期间,所述非易失性存储器子系统中的指定区域被打开为内存窗口(MW)以支持所述计算机系统对所述指定区域的数据执行高速动态随机存取。
3.根据权利要求1所述的存储器模块,其中所述模块内数据传输命令包括一个经由所述存储器信道或所述系统管理(SM)总线从所述存储器控制器或所述DMA控制器传输到所述模块控制器的要求在所述非易失性存储器子系统中打开一个内存窗口以便所述计算机系统能以动态随机存取的方式访问所述非易失性存储器子系统中的第一区域的命令。
4.根据权利要求3所述的存储器模块,其中所述模块控制器可经配置通过响应所述模块内数据传输命令而设立用于数据传输的可选数据路径,使其在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间传输与要求打开内存窗口的命令相关的数据,所述模块控制器可更进一步经配置通过响应所述要求打开内存窗口的命令而将所述非易失性存储器子系统中的所述第一区域的数据通过所述可选数据路径复制到所述易失性存储器子系统的特定位置。
5.根据权利要求4所述的存储器模块,其中所述模块控制器可更进一步经配置在所述非易失性存储器子系统中的所述第一区域的数据被复制到所述易失性存储器子系统之后设立所述用于数据传输的可选数据路径,使其在所述数据总线和所述DRAM装置的I/O之间传输所述存储器控制器对所述易失性存储器子系统的特定位置进行读写操作的数据。
6.根据权利要求5所述的存储器模块,其中所述模块内数据传输命令更进一步包括一个经由所述存储器信道或系统管理(SM)总线从所述存储器控制器或所述DMA控制器传输到所述模块控制器的要求在所述非易失性存储器子系统中关闭内存窗口的命令。
7.根据权利要求6所述的存储器模块,其中所述模块控制器可更进一步经配置通过响应所述关闭内存窗口的命令而设立所述用于数据传输的可选数据路径,使其在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间传输与要求关闭内存窗口的命令相关的数据,所述模块控制器可更进一步经配置通过响应所述关闭内存窗口的命令而将所述易失性存储器子系统的特定位置的数据通过所述可选数据路径复制到所述非易失性存储器子系统。
8.根据权利要求7所述的存储器模块,其中所述模块控制器可更进一步经配置通过响应所述关闭内存窗口的命令而将所述易失性存储器子系统的特定位置的数据复制到所述非易失性存储器子系统中不同于所述第一区域的第二区域。
9.根据权利要求1所述的存储器模块,其中所述易失性存储器子系统经配置将修正后的第一数据存入所述易失性存储器子系统内的一特定位置,其中所述非易失性存储器子系统包含主闪存和暂存闪存,其中所述模块控制器可更进一步经配置在将所述修正后的第一数据输送给所述易失性存储器子系统之前,将所述易失性存储器子系统的一特定位置的原有数据写入到所述暂存闪存。
10.根据权利要求9中所述的存储器模块,其中所述易失性存储器子系统的特定位置的原有数据包含M+1页的数据,其中所述模块控制器可更进一步经配置将所述M+1页的原有数据逐页写入到所述暂存闪存,其中所述M+1页的原有数据中的头M页被写入到所述暂存闪存的区块j中,而所述M+1页的原有数据中的第M+1页被写入到所述暂存闪存中的区块j+1中。
11.根据权利要求7-8中任何一个所述的存储器模块,其中所述非易失性存储器子系统包含主闪存和暂存闪存,其中所述模块控制器可更进一步经配置在所述非易失性存储器子系统中的所述第一区域的数据被复制到所述易失性存储器子系统之前,将所述易失性存储器子系统的特定位置的原有数据写入到所述暂存闪存。
12.根据权利要求11所述的存储器模块,其中所述模块控制器可更进一步经配置通过响应所述关闭内存窗口的命令而将所述易失性存储器子系统的特定位置的数据与存于暂存闪存的数据合并到主闪存中的一个区块中。
13.根据权利要求1所述的存储器模块,其中所述模块控制器可经配置在计算出相应于所读取的第一数据的第二校验码之前,将所读取的第一数据输送给所述易失性存储器子系统以便于所述易失性存储器子系统存入从所述非易失性存储器子系统读取的第一数据,其中所述模块控制器经配置在判定所读取的第一数据里的一个或多个错误位之后,再将所述修正后的第一数据输送给所述易失性存储器子系统。
CN202010083536.XA 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法 Active CN111208951B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010083536.XA CN111208951B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201361901439P 2013-11-07 2013-11-07
US61/901439 2013-11-07
US201461929942P 2014-01-21 2014-01-21
US61/929942 2014-01-21
US201461989941P 2014-05-07 2014-05-07
US61/989941 2014-05-07
US201462041024P 2014-08-22 2014-08-22
US62/041024 2014-08-22
US201462056469P 2014-09-26 2014-09-26
US62/056469 2014-09-26
US201462067411P 2014-10-22 2014-10-22
US62/067411 2014-10-22
CN201480060643.3A CN105934747B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
PCT/US2014/064698 WO2015070110A2 (en) 2013-11-07 2014-11-07 Hybrid memory module and system and method of operating the same
CN202010083536.XA CN111208951B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480060643.3A Division CN105934747B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Publications (2)

Publication Number Publication Date
CN111208951A CN111208951A (zh) 2020-05-29
CN111208951B true CN111208951B (zh) 2024-05-03

Family

ID=53042341

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201480060643.3A Active CN105934747B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083536.XA Active CN111208951B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083535.5A Active CN111176585B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083537.4A Active CN111274063B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083541.0A Active CN111309256B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201480060643.3A Active CN105934747B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Family Applications After (3)

Application Number Title Priority Date Filing Date
CN202010083535.5A Active CN111176585B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083537.4A Active CN111274063B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法
CN202010083541.0A Active CN111309256B (zh) 2013-11-07 2014-11-07 混合内存模块以及操作混合内存模块的系统和方法

Country Status (5)

Country Link
US (1) US11243886B2 (zh)
EP (1) EP3066570A4 (zh)
KR (1) KR20160083926A (zh)
CN (5) CN105934747B (zh)
WO (1) WO2015070110A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9971511B2 (en) 2016-01-06 2018-05-15 Samsung Electronics Co., Ltd. Hybrid memory module and transaction-based memory interface
US10732866B2 (en) 2016-10-27 2020-08-04 Samsung Electronics Co., Ltd. Scaling out architecture for DRAM-based processing unit (DPU)
KR20180078512A (ko) * 2016-12-30 2018-07-10 삼성전자주식회사 반도체 장치
US20190114232A1 (en) * 2017-10-17 2019-04-18 Christopher Squires Local and offloaded snapshots for volatile memory
CN113360432B (zh) * 2020-03-03 2024-03-12 瑞昱半导体股份有限公司 数据传输系统
CN112115077B (zh) * 2020-08-31 2022-04-19 瑞芯微电子股份有限公司 一种dram内存驱动优化方法和装置
CN115686164A (zh) * 2021-07-26 2023-02-03 瑞昱半导体股份有限公司 供电端装置、供电系统以及非暂态电脑可读取媒体
TWI789020B (zh) * 2021-09-23 2023-01-01 宇瞻科技股份有限公司 儲存裝置之控制系統及控制方法
CN114416453B (zh) * 2022-01-20 2022-11-15 无锡众星微系统技术有限公司 一种基于外设接口的芯片硬件调试方法和装置
US20230350603A1 (en) * 2022-04-28 2023-11-02 Rambus Inc. Securing dynamic random access memory (dram) contents to non-volatile in a persistent memory module

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1482619A (zh) * 2002-09-11 2004-03-17 株式会社日立制作所 使用动态随机存取存储器和闪存的系统和方法
JP2008300018A (ja) * 2007-06-04 2008-12-11 Panasonic Corp 不揮発性メモリおよびその書き換え方法
CN101573760A (zh) * 2007-01-22 2009-11-04 美光科技公司 具有处于相同分级层级的易失性及非易失性存储器装置的存储器系统及方法
CN101727976A (zh) * 2008-10-15 2010-06-09 晶天电子(深圳)有限公司 一种多层闪存装置、固态硬盘和分割非易失性存储器系统
CN102375787A (zh) * 2010-08-12 2012-03-14 鸿富锦精密工业(深圳)有限公司 利用内存窗口实现接口的系统及方法
CN102681868A (zh) * 2011-01-25 2012-09-19 三星电子株式会社 引导信息处理系统的方法和执行该方法的信息处理系统
CN102810068A (zh) * 2011-05-30 2012-12-05 三星电子株式会社 存储装置、存储系统和使存储装置虚拟化的方法

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119480A (en) * 1989-11-13 1992-06-02 International Business Machines Corporation Bus master interface circuit with transparent preemption of a data transfer operation
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
JPH08278916A (ja) 1994-11-30 1996-10-22 Hitachi Ltd マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5758149A (en) 1995-03-17 1998-05-26 Unisys Corporation System for optimally processing a transaction and a query to the same database concurrently
US5822251A (en) * 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
US6571244B1 (en) 1999-10-28 2003-05-27 Microsoft Corporation Run formation in large scale sorting using batched replacement selection
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US20050280623A1 (en) 2000-12-18 2005-12-22 Renesas Technology Corp. Display control device and mobile electronic apparatus
JP4817510B2 (ja) 2001-02-23 2011-11-16 キヤノン株式会社 メモリコントローラ及びメモリ制御装置
JP4230122B2 (ja) 2001-03-30 2009-02-25 株式会社ルネサステクノロジ マイクロコンピュータ、書込み方法及び消去方法
TWI240864B (en) 2001-06-13 2005-10-01 Hitachi Ltd Memory device
US6614685B2 (en) 2001-08-09 2003-09-02 Multi Level Memory Technology Flash memory array partitioning architectures
US7254562B2 (en) 2002-07-11 2007-08-07 Hewlett-Packard Development Company, L.P. Rule-based packet selection, storage, and access method and system
JP2004062928A (ja) 2002-07-25 2004-02-26 Hitachi Ltd 磁気ディスク装置及び記憶システム
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7535759B2 (en) 2004-06-04 2009-05-19 Micron Technology, Inc. Memory system with user configurable density/performance option
US20110029723A1 (en) * 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7301831B2 (en) 2004-09-15 2007-11-27 Rambus Inc. Memory systems with variable delays for write data signals
US7493441B2 (en) 2005-03-15 2009-02-17 Dot Hill Systems Corporation Mass storage controller with apparatus and method for extending battery backup time by selectively providing battery power to volatile memory banks not storing critical data
AU2006232533A1 (en) 2005-04-06 2006-10-12 Merck & Co., Inc. Multi-fielded web browser-based searching of data stored in database
KR101377305B1 (ko) * 2005-06-24 2014-03-25 구글 인코포레이티드 집적 메모리 코어 및 메모리 인터페이스 회로
US7464225B2 (en) 2005-09-26 2008-12-09 Rambus Inc. Memory module including a plurality of integrated circuit memory devices and a plurality of buffer devices in a matrix topology
US7562271B2 (en) 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
US7490177B2 (en) 2006-01-23 2009-02-10 Infineon Technologies Ag System method for performing a direct memory access for automatically copying initialization boot code in a new memory architecture
JP2007219802A (ja) 2006-02-16 2007-08-30 Hitachi Global Storage Technologies Netherlands Bv 記憶装置、そのコントローラ、および、その制御方法
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
KR100851545B1 (ko) 2006-12-29 2008-08-11 삼성전자주식회사 커맨드 및 어드레스 핀을 갖는 낸드 플래시 메모리 및그것을 포함한 플래시 메모리 시스템
US8543742B2 (en) * 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US8429493B2 (en) * 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US7882324B2 (en) 2007-10-30 2011-02-01 Qimonda Ag Method and apparatus for synchronizing memory enabled systems with master-slave architecture
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
JP4729062B2 (ja) * 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
US8417870B2 (en) * 2009-07-16 2013-04-09 Netlist, Inc. System and method of increasing addressable memory space on a memory board
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8219740B2 (en) 2008-06-25 2012-07-10 International Business Machines Corporation Flash sector seeding to reduce program times
US8037380B2 (en) * 2008-07-08 2011-10-11 International Business Machines Corporation Verifying data integrity of a non-volatile memory system during data caching process
US8457128B2 (en) 2009-04-08 2013-06-04 Ixia Capturing packets with parallel capture engines
US7944729B2 (en) 2009-01-28 2011-05-17 Seagate Technology Llc Simultaneously writing multiple addressable blocks of user data to a resistive sense memory cell array
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
KR101605381B1 (ko) * 2009-09-28 2016-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이를 구비하는 비휘발성 메모리 시스템
JPWO2011121948A1 (ja) 2010-03-29 2013-07-04 パナソニック株式会社 光ディスク記録装置及び記録信号生成装置
JP2011242884A (ja) * 2010-05-14 2011-12-01 Toshiba Corp メモリシステム及びそのデータ転送方法
CA2806721C (en) 2010-08-04 2015-07-14 Trijicon, Inc. Fused optic
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
US9002826B2 (en) 2010-10-27 2015-04-07 Qualcomm Incorporated Media file caching for an electronic device to conserve resources
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US8595415B2 (en) * 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US8924627B2 (en) * 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
CN103620690A (zh) * 2011-04-29 2014-03-05 Lsi公司 加密传输固态盘控制器
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
TWI467372B (zh) * 2011-07-06 2015-01-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
US8935491B2 (en) 2011-07-15 2015-01-13 Throughputer, Inc. Memory architecture for dynamically allocated manycore processor
CN102541678B (zh) * 2011-12-30 2013-09-18 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器
US20130329491A1 (en) 2012-06-12 2013-12-12 Jichuan Chang Hybrid Memory Module
US9128822B2 (en) 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory
US9405684B1 (en) 2012-09-28 2016-08-02 Emc Corporation System and method for cache management
US9092320B2 (en) 2012-10-15 2015-07-28 Hitachi, Ltd. Storage system which includes non-volatile semiconductor storage medium, and storage control method of storage system
US20140189202A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage apparatus control method
US9741442B2 (en) 2013-03-12 2017-08-22 Sandisk Technologies Llc System and method of reading data from memory concurrently with sending write data to the memory
US9176877B2 (en) * 2013-04-15 2015-11-03 International Business Machines Corporation Provision of early data from a lower level cache memory
US9129674B2 (en) 2013-06-27 2015-09-08 Intel Corporation Hybrid memory device
US9336135B1 (en) 2013-07-24 2016-05-10 NXGN Data, Inc. Systems and methods for performing search and complex pattern matching in a solid state drive
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1482619A (zh) * 2002-09-11 2004-03-17 株式会社日立制作所 使用动态随机存取存储器和闪存的系统和方法
CN101573760A (zh) * 2007-01-22 2009-11-04 美光科技公司 具有处于相同分级层级的易失性及非易失性存储器装置的存储器系统及方法
JP2008300018A (ja) * 2007-06-04 2008-12-11 Panasonic Corp 不揮発性メモリおよびその書き換え方法
CN101727976A (zh) * 2008-10-15 2010-06-09 晶天电子(深圳)有限公司 一种多层闪存装置、固态硬盘和分割非易失性存储器系统
CN102375787A (zh) * 2010-08-12 2012-03-14 鸿富锦精密工业(深圳)有限公司 利用内存窗口实现接口的系统及方法
CN102681868A (zh) * 2011-01-25 2012-09-19 三星电子株式会社 引导信息处理系统的方法和执行该方法的信息处理系统
CN102810068A (zh) * 2011-05-30 2012-12-05 三星电子株式会社 存储装置、存储系统和使存储装置虚拟化的方法

Also Published As

Publication number Publication date
US20200042456A1 (en) 2020-02-06
CN111208951A (zh) 2020-05-29
CN111274063B (zh) 2024-04-16
EP3066570A4 (en) 2017-08-02
CN111176585A (zh) 2020-05-19
US11243886B2 (en) 2022-02-08
CN111176585B (zh) 2024-05-03
WO2015070110A4 (en) 2016-01-07
WO2015070110A2 (en) 2015-05-14
KR20160083926A (ko) 2016-07-12
CN111309256B (zh) 2024-04-30
WO2015070110A3 (en) 2015-11-19
EP3066570A2 (en) 2016-09-14
CN111274063A (zh) 2020-06-12
CN105934747B (zh) 2020-03-06
CN105934747A (zh) 2016-09-07
CN111309256A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
US10380022B2 (en) Hybrid memory module and system and method of operating the same
CN111208951B (zh) 混合内存模块以及操作混合内存模块的系统和方法
US11556433B2 (en) High performance persistent memory
US10248328B2 (en) Direct data move between DRAM and storage on a memory module
US10198350B2 (en) Memory module having volatile and non-volatile memory subsystems and method of operation
US20190227720A1 (en) Multi-tier scheme for logical storage management
US9575882B2 (en) Non-volatile memory interface
US11663121B2 (en) Memory module having volatile and non-volatile memory subsystems and method of operation
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
EP3286654B1 (en) Memory module and system and method of operation
KR20100116396A (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US12026397B2 (en) Hybrid memory module having a volatile memory subsystem and a module controller configurable to provide data to accompany externally sourced data strobes to the volatile memory subsystem
CN112912834B (zh) 存取单元和管理片段存储器操作
US20220075560A1 (en) NVMe Simple Copy Command Support Using Dummy Virtual Function

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant