CN111309256A - 混合内存模块以及操作混合内存模块的***和方法 - Google Patents
混合内存模块以及操作混合内存模块的***和方法 Download PDFInfo
- Publication number
- CN111309256A CN111309256A CN202010083541.0A CN202010083541A CN111309256A CN 111309256 A CN111309256 A CN 111309256A CN 202010083541 A CN202010083541 A CN 202010083541A CN 111309256 A CN111309256 A CN 111309256A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- module
- controller
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 430
- 238000000034 method Methods 0.000 title claims description 33
- 238000012546 transfer Methods 0.000 claims abstract description 97
- 230000004044 response Effects 0.000 claims description 28
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000003071 parasitic effect Effects 0.000 claims 1
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 18
- 238000012937 correction Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 6
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 5
- 239000003990 capacitor Substances 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- BZLVMXJERCGZMT-UHFFFAOYSA-N Methyl tert-butyl ether Chemical compound COC(C)(C)C BZLVMXJERCGZMT-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- 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/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/1004—Adding 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
-
- 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/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1014—One time programmable [OTP] memory, e.g. PROM, WORM
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash 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/0656—Data buffering 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/0683—Plurality of storage devices
- G06F3/0688—Non-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-DB 240进行存取的***调用且引导内存控制器发送控制、地址和数据信号,以响应于***调用且遵从***正使用的内存接口标准(例如,JEDEC DDR4 LRDIMM标准)。在某些实施例中,FET开关,即,FET-A,经配置以允许RCD 320和HV控制器230两者在正常***操作期间从MC接收C/A信号,且HV控制器230经配置以监视来自内存控制器的C/A信号且识别出并作用于响应于对HV闪存220和/或HV-DB240进行存取的***调用而制订的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-DRAM210执行与内存控制器之间的正常内存操作,且等待来自内存控制器的将数据写入到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”)可能已经将CASTBMA’、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 (15)
1.一种用于计算机***的存储器模块,所述计算机***包含耦合到存储器信道的存储器控制器,所述存储器信道包含数据总线和控制/地址C/A总线,所述存储器模块包括:
印刷电路板PCB;
安装在所述PCB上且可经配置而耦合到所述存储器信道的易失性存储器子***,所述易失性存储器子***包括可经配置而经所述C/A总线接收输入C/A信号的寄存控制器(RCD),以及与所述RCD耦合的动态随机存取存储器(DRAM)装置其可经配置而响应于指向所述易失性存储器子***的输入C/A信号来执行存储操作,所述DRAM装置包括可经配置而耦合到所述存储器信道的数据输入/输出(I/O);
安装在所述PCB上的非易失性存储器子***,其为所述计算机***提供存储装置;以及
安装在所述PCB上的模块控制器,其包括耦合到所述易失性存储器子***的DRAM接口、耦合到所述非易失性存储器子***的闪存接口、和控制逻辑,其中所述模块控制器可经配置而响应来自所述存储器控制器的一个模块内数据传输命令来控制在所述易失性存储器子***和所述非易失性存储器子***之间的数据传送;以及
用于数据传输的可选数据路径,其可经所述模块控制器选择在所述DRAM装置的I/O和所述数据总线之间传输与所述存储操作相关的正常读写数据,或在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间传输与所述模块内数据传输命令相关的数据,其中所述可选数据路径不包含所述数据总线;
其中,所述模块控制器和所述RCD经配置而经由所述C/A总线接收与所述模块内数据传输操作相关的存储命令并响应所述存储命令来控制在易失性存储器子***和模块控制设器之间传输所述与所述模块内数据传输操作相关的数据。
2.根据权利要求1所述的存储器模块,其中所述模块内数据传输命令包括经由所述C/A总线接收到的信息和经由所述数据总线接收到的信息。
3.根据权利要求1所述的存储器模块,其中所述计算机***进一步包括***管理(SM)总线,其中所述模块内数据传输命令为经由所述***管理(SM)总线从所述存储器控制器传输到所述模块控制器的在所述非易失性存储器子***中打开一个内存窗口以供所述计算机***进行动态随机编址的命令。
4.根据权利要求1-3中任何一个所述的存储器模块,其中所述模块内数据传输操作包括一将第一数据从所述易失性存储器子***传输到所述非易失性存储器子***的页出操作,并且其中,在所述页出操作期间:
所述易失性存储器子***可配置为经由所述C/A总线接收与所述页出操作有关的读取命令,并响应于所述读取命令而输出所述第一数据的至少一部分;以及
所述模块控制器可配置为经由所述C/A总线接收所述读取命令,并响应于所述读取命令而设立在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间的数据路径,并更进一步的接收所述第一数据的至少一部分。
5.根据权利要求1-4中任何一个所述的存储器模块,其中所述模块内数据传输操作包括一将第二数据从所述非易失性存储器子***传输到所述易失性存储器子***的页入操作,并且其中,在所述页入操作期间:
所述模块控制器可配置为经由所述C/A总线接收与所述页入操作有关的第一写入命令,并响应于所述第一写入命令而设立在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间的数据路径,并更进一步的输出所述第二数据的至少第一部分;以及
所述易失性存储器子***可配置为经由所述C/A总线接收所述第一写入命令,并响应于所述第一写入命令而接收所述第二数据的至少第一部分。
6.根据权利要求5所述的存储器模块,其中,在所述页入操作期间:
所述模块控制器可配置为经由所述C/A总线接收与所述页入操作有关的第二写入命令,并响应于所述第二写入命令而设立在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间的数据路径,并更进一步的输出所述第二数据的第二部分;以及
所述易失性存储器子***可配置为经由所述C/A总线接收所述第二写入命令,并响应于所述第二写入命令而接收所述第二数据的第二部分。
7.根据权利要求6所述的存储器模块,其中:
所述模块控制器可配置为,在接收到所述第一写入命令之后和接收到所述第二写入命令之前,通过C/A总线接收与所述页入操作无关的一个或多个存储器命令,并响应于所述一个或多个存储器命令而设立在所述DRAM装置的I/O和所述数据总线之间的数据路径;以及
所述易失性存储器子***可配置为经由C/A总线接收所述一个或多个存储器命令,并响应于所述一个或多个存储器命令在接收所述第二数据的第一部分之后和在接收所述第二数据的第二部分之前执行一个或多个存储器操作。
8.根据权利要求7所述的存储器模块,其中所述可选数据路径包含受所述模块控制器控制的开关电路。
9.根据权利要求8所述的存储器模块,其进一步包括数据缓冲电路,可配置为在所述数据总线与所述DRAM装置的I/O之间或在所述数据总线与所述模块控制器之间缓冲数据信号,其中所述模块控制器通过改变所述模块控制器的数据输入/输出中的三态电路以及所述数据缓冲电路的数据输入/输出中的三态电路来实现选择在所述DRAM装置的I/O和所述数据总线之间传输与所述存储操作相关的正常读写数据,或在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间传输与所述模块内数据传输命令相关的数据。
10.根据权利要求9所述的存储器模块,其进一步包括耦合到所述模块控制器的数据缓冲器,其用于缓存所述与所述模块内数据传输操作相关的数据。
11.根据权利要求10所述的存储器模块,其中所述数据缓冲器经由一组C/A信号线和一组数据信号线耦合到所述模块控制器,并且其中所述模块控制器经由所述组C/A信号线向所述数据缓冲器发出存储器命令,以使得所述数据缓冲器通过响应所述存储器命令来接收或输出所述与所述模块内数据传输操作相关的数据。
12.根据权利要求11所述的存储器模块,其中所述数据缓冲器包括DRAM,并且其中所述存储器模块经配置使得所述数据缓冲器充当所述易失性存储器子***的高速缓冲内存。
13.根据权利要求12所述的存储器模块,其进一步包括网络接口电路,其中所述存储器模块经由所述网络接口电路直接耦合到另一存储器模块,并且经由所述网络接口电路从另一个存储器模块接收数据且将数据发送到另一个存储器模块。
14.根据权利要求12所述的存储器模块,其进一步包括网络接口电路,其中所述存储器模块经由所述网络接口电路直接耦合到计算机网络,并且经由所述网络接口电路从所述计算机网络接收数据且将数据发送到所述计算机网络。
15.一种通过存储器模块执行的方法,所述存储器模块经由计算机***中的存储器信道耦合到存储器控制器,所述存储器信道包含数据总线和控制/地址C/A总线,所述存储器模块包含易失性存储器子***、非易失性存储器子***,所述易失性存储器子***包括动态随机存取内存(DRAM)装置,所述DRAM装置包括可经配置而耦合到所述存储器信道的数据输入/输出(I/O),所述方法包括:
从所述存储器控制器接收一个模块内数据传输命令;
设立用于所述模块内数据传输的可选数据路径,使得其经一模块控制器选择在所述模块控制器的一个DRAM接口和所述DRAM装置的I/O之间传输与所述模块内数据传输命令相关的数据,其中所述可选数据路径不包含所述数据总线;
在接收到所述模块内数据传输命令之后经由所述C/A总线接收一个正常存储器读写命令;
响应于所述正常存储器读写命令,暂停在所述模块控制器的DRAM接口和所述DRAM装置的I/O之间传输与所述模块内数据传输命令相关的数据;以及
响应于所述正常存储器读写命令,设立用于所述模块内数据传输的可选数据路径,使得其经所述模块控制器选择在所述DRAM装置的I/O和所述数据总线之间传输与所述正常存储器读写命令相关的正常读写数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010083541.0A CN111309256B (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 | 混合内存模块以及操作混合内存模块的***和方法 |
CN202010083541.0A CN111309256B (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 |
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 |
---|---|
CN111309256A true CN111309256A (zh) | 2020-06-19 |
CN111309256B CN111309256B (zh) | 2024-04-30 |
Family
ID=53042341
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010083537.4A Active CN111274063B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN202010083535.5A Active CN111176585B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN201480060643.3A Active CN105934747B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN202010083541.0A Active CN111309256B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN202010083536.XA Active CN111208951B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010083537.4A Active CN111274063B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN202010083535.5A Active CN111176585B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
CN201480060643.3A Active CN105934747B (zh) | 2013-11-07 | 2014-11-07 | 混合内存模块以及操作混合内存模块的***和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010083536.XA Active CN111208951B (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) | CN111274063B (zh) |
WO (1) | WO2015070110A2 (zh) |
Families Citing this family (10)
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 (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586291A (en) * | 1994-12-23 | 1996-12-17 | Emc Corporation | Disk controller with volatile and non-volatile cache memories |
CN1482619A (zh) * | 2002-09-11 | 2004-03-17 | 株式会社日立制作所 | 使用动态随机存取存储器和闪存的***和方法 |
US20060075057A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access system and method |
US20090031072A1 (en) * | 2007-07-25 | 2009-01-29 | Simtek | Hybrid nonvolatile RAM |
CN101563729A (zh) * | 2006-12-20 | 2009-10-21 | 莫塞德技术公司 | 具有易失性和非易失性存储器的混合固态存储器*** |
CN101573760A (zh) * | 2007-01-22 | 2009-11-04 | 美光科技公司 | 具有处于相同分级层级的易失性及非易失性存储器装置的存储器***及方法 |
CN101681300A (zh) * | 2008-03-07 | 2010-03-24 | 株式会社东芝 | 存储器*** |
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 |
CN102541678A (zh) * | 2011-12-30 | 2012-07-04 | 中国人民解放军国防科学技术大学 | 多通道与非型快闪并行存储控制器 |
US20120215965A1 (en) * | 2011-02-23 | 2012-08-23 | Hitachi, Ltd. | Storage Device and Computer Using the Same |
CN102750226A (zh) * | 2011-02-28 | 2012-10-24 | 苹果公司 | 具有非易失性存储器的***的高效缓冲 |
US20120271990A1 (en) * | 2007-06-01 | 2012-10-25 | Netlist, Inc. | Non-Volatile Memory Module |
US20130086309A1 (en) * | 2007-06-01 | 2013-04-04 | Netlist, Inc. | Flash-dram hybrid memory module |
CN103339617A (zh) * | 2011-02-02 | 2013-10-02 | 美光科技公司 | 存储器***中的至少半自主模块及其方法 |
Family Cites Families (65)
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 | マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路 |
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 |
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 |
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 |
CA2602900A1 (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 | 구글 인코포레이티드 | 집적 메모리 코어 및 메모리 인터페이스 회로 |
US7562271B2 (en) | 2005-09-26 | 2009-07-14 | Rambus Inc. | Memory system topologies including a buffer device and an integrated circuit memory device |
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 |
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 |
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 |
WO2008139441A2 (en) * | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
JP2008300018A (ja) * | 2007-06-04 | 2008-12-11 | Panasonic Corp | 不揮発性メモリおよびその書き換え方法 |
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 |
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 |
CN101727976B (zh) * | 2008-10-15 | 2012-09-19 | 晶天电子(深圳)有限公司 | 一种多层闪存装置、固态硬盘和分割非易失性存储器*** |
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 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 구비하는 비휘발성 메모리 시스템 |
US8363529B2 (en) | 2010-03-29 | 2013-01-29 | Panasonic Corporation | Optical disc recording device and recording signal generating device |
JP2011242884A (ja) * | 2010-05-14 | 2011-12-01 | Toshiba Corp | メモリシステム及びそのデータ転送方法 |
EP2601475B1 (en) | 2010-08-04 | 2018-10-03 | Trijicon, Inc. | Fused optic |
CN102375787A (zh) * | 2010-08-12 | 2012-03-14 | 鸿富锦精密工业(深圳)有限公司 | 利用内存窗口实现接口的***及方法 |
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 |
KR20120085968A (ko) * | 2011-01-25 | 2012-08-02 | 삼성전자주식회사 | 컴퓨팅 시스템의 부팅 방법 및 이를 수행하는 컴퓨팅 시스템 |
JP2012155541A (ja) * | 2011-01-26 | 2012-08-16 | Toshiba Corp | データ記憶装置、メモリ制御装置及びメモリ制御方法 |
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 |
US9069703B2 (en) * | 2011-04-29 | 2015-06-30 | Seagate Technology Llc | Encrypted-transport solid-state disk controller |
KR20120132820A (ko) * | 2011-05-30 | 2012-12-10 | 삼성전자주식회사 | 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법 |
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 |
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 |
WO2014061055A1 (en) | 2012-10-15 | 2014-04-24 | Hitachi, Ltd. | Storage sysyem which includes non-volatile semiconductor storage medium, and storage control method of storage system |
WO2014102879A1 (en) | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Data storage apparatus and control method thereof |
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 |
-
2014
- 2014-11-07 CN CN202010083537.4A patent/CN111274063B/zh active Active
- 2014-11-07 CN CN202010083535.5A patent/CN111176585B/zh active Active
- 2014-11-07 CN CN201480060643.3A patent/CN105934747B/zh active Active
- 2014-11-07 CN CN202010083541.0A patent/CN111309256B/zh active Active
- 2014-11-07 WO PCT/US2014/064698 patent/WO2015070110A2/en active Application Filing
- 2014-11-07 EP EP14860330.1A patent/EP3066570A4/en active Pending
- 2014-11-07 CN CN202010083536.XA patent/CN111208951B/zh active Active
- 2014-11-07 KR KR1020167014996A patent/KR20160083926A/ko not_active Application Discontinuation
-
2019
- 2019-08-13 US US16/539,895 patent/US11243886B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586291A (en) * | 1994-12-23 | 1996-12-17 | Emc Corporation | Disk controller with volatile and non-volatile cache memories |
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 |
CN1482619A (zh) * | 2002-09-11 | 2004-03-17 | 株式会社日立制作所 | 使用动态随机存取存储器和闪存的***和方法 |
US20060075057A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access system and method |
CN101563729A (zh) * | 2006-12-20 | 2009-10-21 | 莫塞德技术公司 | 具有易失性和非易失性存储器的混合固态存储器*** |
CN101573760A (zh) * | 2007-01-22 | 2009-11-04 | 美光科技公司 | 具有处于相同分级层级的易失性及非易失性存储器装置的存储器***及方法 |
US20120271990A1 (en) * | 2007-06-01 | 2012-10-25 | Netlist, Inc. | Non-Volatile Memory Module |
US20130086309A1 (en) * | 2007-06-01 | 2013-04-04 | Netlist, Inc. | Flash-dram hybrid memory module |
US20090031072A1 (en) * | 2007-07-25 | 2009-01-29 | Simtek | Hybrid nonvolatile RAM |
CN101681300A (zh) * | 2008-03-07 | 2010-03-24 | 株式会社东芝 | 存储器*** |
CN103339617A (zh) * | 2011-02-02 | 2013-10-02 | 美光科技公司 | 存储器***中的至少半自主模块及其方法 |
US20120215965A1 (en) * | 2011-02-23 | 2012-08-23 | Hitachi, Ltd. | Storage Device and Computer Using the Same |
CN102750226A (zh) * | 2011-02-28 | 2012-10-24 | 苹果公司 | 具有非易失性存储器的***的高效缓冲 |
CN102541678A (zh) * | 2011-12-30 | 2012-07-04 | 中国人民解放军国防科学技术大学 | 多通道与非型快闪并行存储控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN111208951B (zh) | 2024-05-03 |
CN111274063A (zh) | 2020-06-12 |
US11243886B2 (en) | 2022-02-08 |
CN111309256B (zh) | 2024-04-30 |
WO2015070110A4 (en) | 2016-01-07 |
CN105934747A (zh) | 2016-09-07 |
US20200042456A1 (en) | 2020-02-06 |
WO2015070110A2 (en) | 2015-05-14 |
KR20160083926A (ko) | 2016-07-12 |
CN111176585A (zh) | 2020-05-19 |
CN111176585B (zh) | 2024-05-03 |
CN111274063B (zh) | 2024-04-16 |
CN111208951A (zh) | 2020-05-29 |
WO2015070110A3 (en) | 2015-11-19 |
CN105934747B (zh) | 2020-03-06 |
EP3066570A2 (en) | 2016-09-14 |
EP3066570A4 (en) | 2017-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380022B2 (en) | Hybrid memory module and system and method of operating the same | |
CN105934747B (zh) | 混合内存模块以及操作混合内存模块的***和方法 | |
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 | |
KR101915073B1 (ko) | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
US11663121B2 (en) | Memory module having volatile and non-volatile memory subsystems and method of operation | |
CN113448504A (zh) | 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 | |
KR20100116396A (ko) | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 | |
CN107710175B (zh) | 存储器模块以及操作***和方法 | |
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 | |
US10838646B2 (en) | Method and apparatus for presearching stored data | |
US11733920B2 (en) | NVMe simple copy command support using dummy virtual function | |
CN117616375A (zh) | 用于基于文件的中断合并的数据存储设备和方法 | |
CN114527943A (zh) | 存取单元和管理片段存储器操作 | |
US20240143508A1 (en) | Ats pri support with implicit cache | |
WO2024097493A1 (en) | Write buffer linking for easy cache reads | |
KR20100132837A (ko) | 플래시 메모리 저장 장치 및 그것을 포함한 컴퓨팅 시스템 |
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 |