CN109643275B - 存储级存储器的磨损均衡设备和方法 - Google Patents
存储级存储器的磨损均衡设备和方法 Download PDFInfo
- Publication number
- CN109643275B CN109643275B CN201780047550.0A CN201780047550A CN109643275B CN 109643275 B CN109643275 B CN 109643275B CN 201780047550 A CN201780047550 A CN 201780047550A CN 109643275 B CN109643275 B CN 109643275B
- Authority
- CN
- China
- Prior art keywords
- memory
- group
- data
- address
- groups
- 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
Links
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/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
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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
- G06F2212/1036—Life time enhancement
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储级存储器的磨损均衡控制的方法和设备。确定要写入一非易失性存储器的当前数据对应于一写高速缓存命中。于该写高速缓存命中的情况下,该当前数据被写入一写高速缓存以及与该非易失性存储器中的一预定位置不同的该非易失性存储器中的一指定位置。在一写高速缓存未命中的情况下,该当前数据被写入该非易失性存储器中的该预定位置。如果要写入的该当前数据对应于该写高速缓存未命中,且该写高速缓存未满,该当前数据也被写入该写高速缓存。或者,该当前数据被写入该写高速缓存以及与该非易失性存储器中的该预定位置不同的该非易失性存储器中的一指定位置。
Description
有关申请的交叉参考
本发明要求2016年8月6日提交的美国非临时专利申请序列号15/230,414的优先权。该美国非临时专利申请通过整体引用并入本文。
发明领域
本发明涉及存储器控制。特别地,本发明涉及存储器装置(memory device)的磨损均衡,以延长存储器装置的耐久性。
背景技术
在计算机体系结构中,存储器层次结构(memory hierarchy)是一种用于存储和讨论计算机体系结构设计、算法预测和诸如涉及参考局部性(locality of reference)的较低级编程构造中的性能问题的概念。计算机存储中的存储器层次结构通过响应时间来区分层次结构中的各个级别。由于响应时间、复杂性和容量是相关联的,所以这些级别也可以其性能和控制技术加以区分。
在本申请的上下文中,感兴趣的存储器层次结构包括(a)处理器寄存器(register),(b)高速缓存(L1、L2、L3等),(c)主存储器(main memory),和(d)磁盘存储器(disk storage)。对于距离CPU“更远”的存储器装置(或存储器层次结构中的“更低”级别)而言,其容量更大而响应时间也更长。这些存储器装置的容量依序排列分别为:(a)小于千字节(Kilobytes;KB),(b)兆字节到几十兆字节(Megabytes;MB),(c)几十千兆字节(Gigabytes;GB),和(d)泰字节(Terabytes;TB)。对于硬盘驱动器(Hard Disk Drive;HDD)的随机存取而言,这些存储器装置的响应时间依序排列分别为:(a)亚纳秒,(b)纳秒,(c)几十纳秒,和(d)几十毫秒。近年来,存储器层次结构的主要技术进步之一是广泛采用固态磁盘(solid-state disk;SSD),其是采用NAND闪存构建的,因此可将磁盘的响应时间提高到数十微秒。
即使使用SSD,在(c)和(d)之间的响应时间仍然有很大的差距。除此之外,(a)-(c)均是“字节可寻址(byte-addressable)”(尽管在实务上,存储器层次结构的级别(b)-(c)通常用64字节单位寻址),而存储器层次结构级别(d)是具有一最小4K字节块的“块可寻址(block-addressable)”。在计算机术语中,前者是一“内存(memory)访问”,而后者是一“存储(storage)访问”或“I/O(输入/输出)访问”。不同的访问语义和块传输大小也增加了访问磁盘的开销。
为了提高性能,尽可能的避免磁盘访问的一个尝试是增加主存储器容量。然而,由于成本和功率的原因,这种投资必然受到限制,特别是随着摩尔定律的扩展,DRAM将无法进一步降低成本和功率。此外,考虑到云计算和大数据应用的压倒性趋势,感兴趣的数据量变得越来越大,因此,仅仅试图增加主存储器的容量将在导致在这场竞争中的失败。
除了响应时间和容量差异之外,存储器(memory)和磁盘(disk)之间还有另一个显着差异。存储器是易失性的,磁盘(SSD或HDD)是非易失性的。当断电时,存储器的内容会丢失,而磁盘中的内容会被保留。对于在线事务处理(online transaction processing;OLTP)来说,将结果写入一些非易失性存储器以正式地完成事务来防止意外的断电是非常重要的。这是磁盘操作的另一个必要原因。如何有效地与磁盘交互作用,同时又不降低磁盘的操作性能,一直是计算机科学家几十年来研究和开发的一个热门话题。
因此,显而易见的,理想的情况是具有存储器的响应时间和字节可寻址属性以及磁盘的容量和非易失性属性的存储器装置。这种存储器通常被称为存储级存储器(StorageClass Memory;SCM)(G.Burr等人,“存储级存储器的候选装置技术的概述”,IBM Journalof Research and Development(IBM研究与发展杂志)52(4/5):第449-464页,2008年6月)。在过去的许多年中,不同的公司和研究小组曾多次尝试使用不同的材料、工艺、以及电路技术来开发SCM。迄今为止,SCM的最突出的一些例子包括相变随机存取存储器(Phase ChangeRandom Access Memory;PCRAM),电阻式随机存取存储器(Resistive Random AccessMemory;RRAM),和自旋转矩磁随机存取存储器(Spin-transfer torque Magnetic RandomAccess Memory;STT-MRAM)。最近,IntelTM和MicronTM宣布推出先进的SCM,其宣称“比NAND闪存快1000倍,比DRAM密集10倍”。如果SCM变得可用,许多人相信SCM的存储器层次结构中的自然位置将介于上述的存储器层次结构级别(c)和存储器层次结构级别(d)之间,以弥补两者之间的鸿沟。
SCM的一个共同特征(也是NAND闪存所共有的)就是这些存储器装置具有有限的写入耐久性(write endurance)。由于一存储器装置的功能是支持写入和读取的数据,所以具有有限写入耐久性的一存储器装置意味着它们不能无限地写入数据。对于不同类型的SCM或NAND闪存,它们可以写入的次数是不同的。最近的TLC(Triple-Level Cell;三级单元)3DNANA闪存可以经受几千次的写入。SCM通常比NAND闪存能够承受几个数量级的负载,但是也比常规的DRAM(其通常引用写入耐久性大约1015)要糟糕几个数量级。
对于任何一个具有有限写入耐久性的存储器装置,都需要开发一种重要的(并且可以说是必要的)技术,这种技术被称为磨损均衡(wear leveling)。如果某一特定的存储器位置被写入过多次超过写入耐久性,则该存储位置则无法可靠地用于后续存储操作。因此,为了延长这种存储器装置的寿命,最好是对每个存储位置写入大约相同的次数(因此,“磨损”是“平衡”的)。但是,由于寻址模式是依赖于应用而定的,并且无法被引导以遵守相等的磨损约束,因此,在没有主机应用程序的协作或感知的情况下,由存储子***来执行磨损均衡。
简单地说,一磨损均衡技术需要视需要地写入不同于该应用程序所需的一存储器位置。否则,磨损由应用程序的寻址模式决定,并且没有来自存储器装置的防御。NAND闪存一般使用一个表来将逻辑地址(其是应用程序所希望写入的)映射到物理地址(其是NAND闪存所实际写入的)。相同逻辑地址可以在不同的时间映射到不同的物理地址,因此,磨损是均衡的。回想一下,NAND闪存是具有4K字节的一最小寻址单元的一块寻址装置,因此,映射表可以以大约存储大小的0.1%的一大小来建构。(例如对于1TB的SSD,该表大约是1GB)。由于该表搜索是在NAND闪存存储器访问的关键路径上,所以该表通常由更快的技术(例如DRAM)来实现。
不幸的是,这种通用的映射表磨损均衡技术不能用于SCM。由于SCM是字节可寻址的,比4K字节块小得多,如果我们尝试采用映射表磨损均衡技术,该表的大小将按照与存储大小相同的顺序排列。这违背了SCM的目的,也否定了SCM的优势。
在本申请中,描述了为SCM设计的一种磨损平衡发明。为了总结本发明的动机,正在寻求将SCM作为具有存储器的响应时间和字节可寻址特性以及磁盘的容量和非易失性特征的存储器层次结构的理想的新介绍。本发明旨在提供一种新颖的磨损均衡技术,以解决SCM的写入耐久性的问题。
发明内容
公开了一种用于存储级存储器的磨损均衡控制的方法以及设备。根据本发明,确定要写入一非易失性存储器的当前数据是否对应于一写高速缓存(write cache)命中(hit)。如果要写入的该当前数据对应于该写高速缓存命中,该当前数据被写入一写高速缓存以及与该非易失性存储器中的一预定位置不同的该非易失性存储器中的一指定位置。如果要写入的该当前数据对应于一写高速缓存未命中(miss),该当前数据被写入该非易失性存储器中的该预定位置。如果要写入的该当前数据对应于该写高速缓存未命中,且该写高速缓存未满,该当前数据也被写入该写高速缓存。本技术能够实现存储级存储器的短期磨损均衡。
本发明还包括上述方法和设备的一替代方案。如果要写入的该当前输入数据对应于一写高速缓存未命中,该当前数据被写入与该非易失性存储器中的该预定位置不同的该非易失性存储器中的一指定位置、以及该写高速缓存。在该写高速缓存已满的情况下,则从该写高速缓存中逐出一条现有的写高速缓存条目(entry),以便为当前传入的写入数据腾出空间。于该写高速缓存已满的情况下,有多种方法可以选择要逐出哪个写高速缓存条目,并且在本发明中可由指定特定的逐出方法。
在另一实施例中,该高速缓存过滤技术与地址旋转进程相结合,以实现长期磨损均衡。根据该地址旋转进程,将一组N个输入地址映射到一组M个输出地址,其中M和N是正整数,且M>N。在一时间周期T内,该组N个输入地址与该组M个输出地址之间的映射是固定的,且在每个下一个时间周期中,该映射仅修改该组N个输入地址中的一个。N个存储器组作为数据组,一个或多个存储器组作为冗余组,且M等于N与该冗余组的数量的总和。该冗余组被划分为该非易失性存储器的未使用存储器空间中的一个或多个日志组和一阴影组,且该非易失性存储器的该未使用存储器空间对应于未用作存储数据的预定位置的存储器空间。
本发明的另一方面针对具有磨损均衡特征的一存储级存储器处理该非易失性存储器中的损坏位置。与上述类似,该非易失性存储器被划分为存储器组,并且将N个输入组地址映射到M个输出组地址,导致M个存储器组中的N个数据组用于以一旋转方式存储该输入数据。如果该数据组中的一个之中的一受损地址位置被发现,为具有最后已知的正确数据内容的该受损地址位置于该写高速缓存中创建一修复条目。该写高速缓存中的该修复条目通过更新该修复条目中的该时间戳而保持更新,以防止该修复条目中的内容被刷新到该受损地址位置。
本发明的另一方面设计了共享ECC(Error Correcting Code;纠错码)校验字节和与该非易失性存储器的同一非易失性芯片中的磨损均衡相关联的元数据(metadata)。该方法配置D个非易失性存储器芯片以存储输入数据和E个非易失性存储器芯片以存储该非易失性存储器中的每个数据地址的扩展数据。D和E是正整数。与上述类似,该非易失性存储器被划分为存储器组以及映射N个输入组地址到M个输出组地址导致M个存储器组中的N个数据组用于以一旋转方式存储该输入数据。该纠错码(ECC)校验字节和与该数据组以及该冗余组相关联的元数据被存储于该E个非易失性存储器芯片中。该元数据对应于与该映射的N个输入组地址到M个输出组地址有关的信息,导致该M个存储器组中的N个数据组用于以一旋转方式存储该输入数据。
附图说明
图1示出了配置非易失性存储器芯片的一实施例,以共享纠错码(ECC)校验字节和与相同非易失性存储器芯片中的数据组相关联的元数据的存储。
图2示出了与地址旋转相关联的元数据结构的一实施例。
图3为根据本发明的一实施例所示的具有磨损均衡能力的一存储级存储器(SCM)的一示例性***框图。
图4为根据本发明的一实施例所示的在断电恢复中具有磨损均衡能力的一存储级存储器(SCM)的一示例性***框图。
图5为根据本发明的一实施例所示的具有磨损均衡能力的一存储级存储器(SCM)的一示例性流程图。
图6为根据本发明的一实施例所示的具有磨损均衡能力的一存储级存储器(SCM)的损坏恢复的一示例性流程图。
图7为根据本发明的一实施例所示的用于具有磨损均衡的一存储级存储器(SCM)在非易失性存储器的同一非易失性芯片中共享ECC(纠错码)校验字节和与地址旋转相关联的元数据的一示例性流程图。
具体实施方式
以下描述实现本发明的最佳预期模式。本说明书是为了说明本发明的一般原理而作出的,而不应被视为具有限制意义。通过参照所附的权利要求书来最好地确定本发明的范围。
Qureshi等人在2009年公开了一种PCRAM的磨损均衡技术(M.K.Qureshi等人,“通过起始间隙磨损均衡来增强基于PCM的主存储器的寿命和安全性”,《第42届IEEE/ACM微结构国际年会论文集》,第14-23页,2009年12月,以下称为Qureshi 2009)。所谓的起始间隙磨损均衡是一种特殊的地址旋转形式。地址旋转是一组输入地址(ai1,ai2,…,aiN)与另一组输出地址(ao1,ao2,…,aoM)之间的一时变映射,其中M>N,并且该映射在一时间周期T内是固定的。不同的ai’将被映射到不用的ao’,其中,没有两个ai可以被映射到相同的ao。随着时间的推移,aij将依次被映射到aok,ao(k+1),…,aoM,ao1,ao2,…,ao(k-1),然后返回aok,因此,名称为地址旋转。
在无损失的一般情况下,让我们使用M=N+1的一实施例来说明操作。
开始,0<t<T:
ai1->ao1
ai2->ao2
…
ai(N-1)->ao(N-1)
aiN->aoN.
在下一个周期,T<t<2T,
ai1->ao1
ai2->ao2
…
ai(N-1)->ao(N-1)
aiN->ao(N+1),(即aiN移动且仅aiN移动)
然后在下一个周期,2T<t<3T:
ai1->ao1
ai2->ao2
…
ai(N-2)->ao(N-2)
aiN(N-1)->aoN,(即aiN(N-1)移动且仅aiN(N-1)移动)
aiN->ao(N+1).
具体而言,在各周期期间,只有一个输入地址顺序地改变到下一个输出地址的映射。在N个周期之后,所有输入地址将改变到下一个输出地址的映射。由于M>N,所以存在“空的”空间(或“间隙”)来允许这种地址旋转的操作。从简单说明实施例中可以清楚地看出,只要给出足够的时间周期,输出地址aik可以映射到ao1,ao2,…,aoM中的任何一个。
上述实施例说明了精确的磨损均衡。让输入地址称为应用程序希望写入的逻辑地址,通过地址旋转,相同的逻辑地址将被映射到不同的输出地址,这些输出地址是在SCM操作中所使用的物理地址。如果写入集中在一个特定的逻辑地址上,则地址旋转方案可以帮助将写入重新分配到M个物理地址以平衡磨损。该地址旋转也相对容易实现,并且不需要建构一映射表。
Qureshi 2009年的参考资料建议,周期T本身是动态的。如果aik是在此期间要重新映射的输入地址,则建议该重新映射发生在对aik进行一定数量的写入之后。此建议需要大量记录已发生了多少写操作以及这些写操作写到哪里。但事实上,即使大量的写操作发生在与aik不同的地址中,对磨损均衡的需求也没有什么不同,而唯一可移动的映射仍然是aik。因此,在本申请中假定精心选择的固定时间周期T应该同样好,且其最小化了记录。
Qureshi 2009参考文献没有考虑“组地址旋转(group address rotation)”的概念。虽然地址旋转可以应用于单个地址,但是为了简化实施而不损失磨损均衡性能,根据本发明的一实施例,将多个地址进行分组并一起旋转。换言之,地址旋转应该在地址的最高有效位(most-significant-bit;MSB)上操作。例如,如果将感兴趣的整体地址空间划分为64个组,那么在地址旋转计算中只需要6个MSB位。
特别是随着固定时间周期和组地址旋转的改进,地址旋转很容易实现,但是它只带来一长期的磨损均衡效应,而不是一短期的磨损均衡效应。应注意的是,在N个时间周期内,各地址在(N-1)个时间周期内或者超过(N-1)*T个时间是固定的。因此,如果应用程序希望在(N-1)*T个时间期间重复地写到一特定地址,则地址旋转方案无助于磨损均衡。只有当重复写入的持续时间超过(N-1)*T时,才会有帮助。现在N被设计为在允许在大量备选方案中旋转地址的一大数量,而T不能被减少太多,因为它会增加写入性能开销。因此,(N-1)*T可能不是地址旋转无效的少量时间。
为了提高磨损均衡耐力的性能,本发明公开了一种新的磨损均衡方案,称为高速缓存过滤,其可以与地址旋转一起使用。高速缓存过滤对于地址旋转方案无效的短期磨损均衡是有效的。因此,高速缓存过滤和地址旋转是一个很好的组合。
基本读写高速缓存设计的简要概述如下。一高速缓存通常比主存储器单元更快但更小,并且它将内容的一子集存储于主存储器单元中。根据本申请的上下文,如果没有另外指定,则假设讨论中的主存储器单元是一SCM。高速缓存非常有用,因为寻址模式具有局部性—读取或写入先前访问过的地址的可能性很大。在读取操作中,最近读取的内容被复制于高速缓存中,如果被再次读取,则可以从该高速缓存中读取它以获得性能。在写入操作中,最近写入的内容首先被写入高速缓存而不是主存储器单元。如果再次发生对相同位置的一新的写入,那么可以将其写入高速缓存,从而将一些写入操作保存到主存储器单元。通常读和写高速缓存被实现为一个高速缓存,其中,每个高速缓存条目中存在“脏”位,以指示高速缓存条目是否与主存储器对应物(counterpart)不同(即,更新的)。
在高速缓存过滤方案中,读取高速缓存部分与一普通读取高速缓存相同。但是,写入部分是不同的。通常,写入高速缓存操作将写入高速缓存而不写入主存储器。在高速缓存过滤方案中,在写入操作期间,如果发生一高速缓存命中(cache hit),则写入操作将写入高速缓存,并且还将写入到主存储器中与预定地址位置(destined address location)不同的位置。因为高速缓存条目的内容现在与预定地址位置中的内容不同(即,更新的),所以高速缓存条目的脏位(dirty bit)将被确定。有两种情况会导致写高速缓存未命中。第一种情况是,如果写高速缓存未满,则新的条目将被写入写高速缓存以及预定地址位置中的主存储器单元。另一种情况是,如果高速缓存已满(并且不能撤销任何条目),则新的条目将只写入预定地址位置中的主存储器单元,而不写入写高速缓存。
在本发明中,我们还包括一种处理与上述不同的写高速缓存未命中的替代方法。在一写操作期间,如果写高速缓存未命中,则写操作将写入高速缓存以及写入该主存储器中与该预定地址位置不同的一位置。由于该高速缓存条目现在与该预定地址位置中的内容不同(即,更新的),故该高速缓存条目的脏位将被确定。在高速缓存中写高速缓存已满,现有的写高速缓存条目之一将从写高速缓存中被逐出,以便为当前的输入写入数据腾出空间。可以有多种方法来选择在写高速缓存已满的情况下,要逐出哪个写高速缓存条目,且在本发明中没有指定特定的逐出方法。需注意的是,被逐出的条目可能是脏的,并且需要被刷新到预定地址位置。
高速缓存过滤方案中的写高速缓存的目的是检测和过滤最近写入的地址。因此,出于磨损均衡的目的,可以将那些内容记录到与预定地址不同的一些临时存储器位置。但是,存在用于此类日志记录写入的临时存储器空间的位置问题。回想一下,在地址旋转中,M>N,并且有一些当前未映射的存储器空间。这些日志记录写入应写入未使用的存储器空间之一。随着地址旋转,用于日志记录写入的存储器空间也将随着时间被旋转。
当一段时间未访问该高速缓存条目时,其将被停用。可以选择多种技术来确定何时停用条目以及停用哪个条目。只有在一写高速缓存条目被停用且该脏位被确定时,才会将该写高速缓存条目刷新到预定地址位置。如果在将写高速缓存条目刷新到预定地址位置之前突然发生断电,尽管易失性写高速缓存的内容丢失,但可以使用非易失性临时位置中的内容以将正确的内容恢复到该预定地址位置。
让我们检查并比较架构选择是如何处理对同一存储器地址的K次重复写入。架构选择对应于(1)没有写高速缓存,(2)具有传统写高速缓存,以及(3)高速缓存过滤。对于没有高速缓存的一存储器***而言,如果这些K写入发生在(N-1)*T内,则预定地址位置将受到K写入的影响。对于具有传统写高速缓存的一存储器***而言,写高速缓存将吸收大部分的写入,且预定地址位置被写入的次数要少得多。由于写高速缓存是易失性的,如果突然断电,则写高速缓存的内容将丢失。如果某些写高速缓存条目在断电之前是脏的,那么这将是灾难性的。如果主机停止,直至所有脏的写高速缓存都被刷新,将产生显着的性能影响。对于具有高速缓存过滤的一存储器***而言,该存储器子***将被写入K+1次,但仅写入预定地址位置一次。在三种架构选择中,只有高速缓存过滤可以平衡磨损,并且不容易发生突然的断电。
下面公开了如何建构结合地址旋转和高速缓存过滤的一磨损均衡体系结构。在不损失通用性的情况下,描述了一通用的SCM的特征以说明磨损均衡设计的一实施例。
可以根据(D+E)*C(以字节为单位)来确定一SCM存储器***的总容量,其中,C是每个SCM芯片的容量。D芯片用于存储数据部分,E芯片用于纠错码(ECC)校验字节部分和用于数据管理的一些元数据。每个SCM芯片具有包括z位(z-bit)数据宽度的一I/O数据,以及取决于容量的一适当大小的地址位。利用一双数据速率(double-data-rate;DDR)信令(signaling),每个SCM可以在U的一最大处(以MHz测量)被计时。换言之,在每个时钟周期,每个SCM芯片可以使用2*z位。SCM芯片具有tR的一读取延迟和tW的一写入延迟(两者均以纳秒为单位)。此外,还假设SCM芯片具有P个分区,并且可以独立地且并行地读取和写入分区。
从正确的角度来看,SCM的tR和tW大于DRAM的tR和tW,小于NAND闪存的tR和tW。使用并行分区,与DRAM相比,SCM可以恢复一些性能。这是因为SCM的I/O带宽(由U和z决定)比tR或tW更接近DRAM的I/O带宽。即使每个读/写任务需要较长时间来完成,并行启动多个读/写任务也是填充I/O的有效方法,从而缩小了性能差距。
D SCM芯片的一部分和相应的E SCM芯片可以共享相同的地址位。这些SCM芯片组将被称为一区域。例如,如果8个D芯片和1个E芯片共享相同的地址,并且C是16GB,则一区域的大小是128GB。如果8个D芯片和1个E芯片共享相同的地址,且z=8,那么在每个周期,可用数据是(8+1)*8*2位=18字节。图1示出了配置非易失性存储器芯片以共享纠错码(ECC)校验字节和与相同非易失性存储器芯片中的数据组相关联的元数据的存储的一实施例。总共9个芯片用于SCM的一区域,其中,8个芯片(芯片1至8)用于存储数据,1个芯片(芯片9)用于存储ECC数据和元数据。对于箭头所指向的位置中所示的每个地址位置,数据被存储在前8个芯片中。ECC部分和元数据存储在芯片9中。
实际上,主存储器的最小访问单元是至少64字节。假设我们设计一个具有128字节的最小访问单位的主存储器,则每个存储器访问将看到8个连续的周期,以提供总共144个字节,其中,128个字节是数据。其意义是双重的。首先,可以将“更大”的ECC块(128个数据字节)用于SCM,以获得更好的纠错能力。由于解码器的延迟性较高,因此其传统上不用于DRAM。然而,对于SCM,由于tR较大,解码器的延迟性越高,影响就越小。其次,当来自E芯片的数据可以组织成块时,将有更多的空间放入一些元数据以进行磨损均衡。这个因素对我们的讨论可能更重要。
整个SCM存储器***可以被划分为多个区域。每个区域都是地址旋转的一基本单元。每个区域的地址空间进一步被划分为M组。一区域内的大多数的组用于储存数据,称为数据组,但两种类型的组除外,即阴影组和日志组。阴影组和日志组一起被称为冗余组,因为它们是磨损均衡的存储器开销。可以为一存储器***选择合适数量的日志组。例如,如果128GB区域被划分成64个组,其中有1个阴影组和2个日志组,则只有122GB的存储器空间可用于存储数据。
在任何给定时间,都有一个后台进程将称为日落组的一个数据组的内容复制到阴影组。此复制进程的时间周期是T。T被设计成使得该后台复制(写入)进程仅占用写入带宽的一小部分(例如,小于1-2%)。在时间T之后,阴影组将假定前一个日落组的身份,并成为数据组之一。日落组将加入冗余组。为了在冗余组之间旋转,该日落组将作为其中一个日志组加入。且其中一个日志组将占据新的阴影组的位置,并以此类推。以这种方式,在M*N*T的时间之后,每个组将在数据组、日志组和阴影组之间旋转其角色。
区分该组类型的方法是将一组标签存储于SCM中以作为元数据的一部分。以下实施例说明了组标签如何随着时间的变化以反映其更改类型。在此实施例中,M=64。
于此实施例中,组标签0是日落组,组标签61是阴影组,组标签62,63分别是日志组。在此期间,对于输入地址0至60,输入地址等于输出地址。
在时间T之后,组标签64将被写入以前标记为0的组,以产生以下组标签:
现在组标签1变成日落组,组标签62变成阴影组,以及组标签63,64变成日志组。组标签61现在变成一数据组。在当前的时间周期内,对于地址从1到60,输入地址等于输出地址,而输入地址0将映射到输出地址61。
同样的,在下一时间周期,状态如下所示,且地址旋转进程继续。
注意,在这个设计中,组标签总是64个连续的数字。如果我们使用8位来存储这样的标签,它们在模块-256意义下是连续的(即…,254,255,0,1,…被认为是连续的)。最小的组标签将始终是日落组,而三个最大的组标签将是冗余组。它们的大小比较也是模块-256意义上的,因此,0大于255乘1。因为任何时候都可以有64个连续的数字,所以不会混淆。在任何给定时刻中,可以使用64个连续的组标签来推断每个组的地址旋转-组类型的状态,以及输入和输出地址的映射应该是怎样的。
虽然上述显示了具体实施例,以说明组标签随着时间而变化以反映其变化类型。这些实施例不应解释为对本发明的限制。
由于这些组标签被存储在SCM中,因此即使在断电之后,该***也能够通过这些组标签恢复地址旋转的状态。即使从日落组到阴影组的后台复制的确切状态未知,在断电后,我们可以重启时间周期T,并从组的开头重新进行后台复制。
在用于ECC数据和元数据的共享存储的情况下,ECC数据总是存储在所有类型的存储器组的非易失性存储器的ECC部分中。相应的存储器组的相应元数据存储在非易失性存储器的元数据部分中。对于每个数据组或阴影组,元数据仅包括一组标签。对于每个日志组,元数据包括一组标签、主机地址、与主机地址相关的时间戳。图2说明了与地址旋转相关联的元数据结构的一实施例。
还有一个时间周期,tL,其中日志组正在被回收。时间周期tL取决于写高速缓存大小和最大写吞吐量。它的设计使得在最大写吞吐量下,每次写入都是一高速缓存命中,然后在tL时间期间,这样的写入不会溢出日志组的一部分。在一适当的***设计中,T比tL大得多,并且应该是tL的整数倍。在日志组操作中,每个日志组可以被划分为多个日志记录单元。例如,两个日志组被进一步划分为四个日志记录单元。每个日志记录单元都是日志组的一半。当一写高速缓存命中发生时,数据和原始输入地址将被记录在一个称为活动日志记录单元的一日志记录单元中,该活动日志记录单元具有一当前指针,该当前指针确定何时将写入下一个日志记录,且当前指针应该顺序移动。一写高速缓存命中意味着如果使用单独的写高速缓存和读高速缓存存储器,则要写入非易失性存储器的数据已经在高速缓存存储器或写高速缓存存储器中。在下一个tL时间周期内,不同的日志记录单元将成为活动日志记录单元,以此类推。每个日志记录单元将按顺序作为活动日志记录单元。
在写高速缓存中,对于每个条目,除了数据内容和输入地址之外,还有一有效位、一脏位、以及一时间戳字段。该有效位指示该位置是否具有一有效条目。该脏位指示是否对该条目进行了任何日志记录写入。该时间戳指示该条目上次在哪个tL时间周期被更新。该时间戳将在每个tL时间上递增1,并且可以循环使用。使用时间戳字段,我们可以知道哪些写高速缓存条目有一段时间没有更新,其将具有比当前时间戳小了一个设计参数的一时间戳字段。有一个后台进程来检查该写高速缓存,并清除这些旧的条目,从而为新的写条目留出空间。该刷新写入将被写入到预定地址位置。
由于每个日志记录单元按顺序承担活动日志记录单元的角色,因此,存在关于如何防止日志记录写入覆盖之前已记录的内容的问题。这可以通过正确操作写高速缓存来保证。如果特定条目在前一次日志记录写入之后已经看到更新,则可以删除旧的日志记录写入。如果特定条目在前一次日志记录写入之后没有看到更新,则该条目必须在写高速缓存中具有一旧的时间戳,并将被刷新。这就是为何可以循环使用日志组并继续进行日志记录的原因。
当日志组执行日志记录写入时,其还将时间戳存储为元数据。SCM控制器使用时间戳字段来确定日志记录单元的状态,类似于使用组标签来确定地址旋转的状态。由于具有多个日志记录单元,它们将采用递增的时间戳字段,直到它循环(wrap around)。具有最大时间戳的日志记录单元(也是模块意义上的)是当前的活动日志记录单元。当断电发生时,通过检查日志记录单元中的时间戳字段,我们可以确定在断电之前,哪个日志记录单元是活动日志记录单元。由此可以确定需要恢复哪个日志记录单元的数据,以及哪个日志记录单元的数据可以忽略。如图2所示,如果我们留出一个未用于日志记录写入的特定位置(例如,最低地址位置),那么我们可以使用相同的字段来记录组标签和时间戳,并且不会占用元数据太多的空间。
图3示出了SCM磨损均衡架构100的框图。在主机端,接口信号包括主机地址、主机读取数据和主机写入数据。在SCM端,接口信号包括SCM地址、SCM读取数据和SCM写入数据。结合本发明实施例的***可以包括地址旋转单元310、后台复制单元320、高速缓存单元330、定时控制单元350、和SCM存储器控制器340。然而,本发明的一实施例可以排除地址旋转。地址旋转单元310确定输入(主机)地址和输出(SCM)地址映射。后台复制单元320执行日落组到阴影组的复制。高速缓存单元330集成一读高速缓存和一写高速缓存。SCM存储器控制器340接收来自各个功能单元的多个SCM存储访问请求,并对这些请求进行优先级排序,以实现最佳性能。定时控制单元350管理时间单元T和tL,并在T时间周期结束时通知地址旋转单元和后台复制单元,以及在tL时间周期结束时通知高速缓存单元。
读取操作相对简单。主机地址被发送到读高速缓存,如果命中,那么可以从该读高速缓存获得该主机读取数据。如果未命中,那么地址旋转单元将主机地址映射到一输出地址,该输出地址被发送至SCM存储器控制器以执行一SCM读取。该SCM读取数据将是最终的主机读取数据。新的SCM读取数据应进入读高速缓存,如果读高速缓存已满,则替换一些读高速缓存条目。对于每个主机读取,可能存在也可能不存在一SCM读取。
写入操作更加复杂。主机输入地址被发送到写高速缓存,如果命中,则用脏位=1、新的时间戳、以及新的数据来更新写高速缓存条目。一旦写高速缓存命中信号被发送到地址旋转单元,输出地址将是活动日志记录单元的当前指针,并且SCM写入将被执行到日志记录单元上。在日志记录写入中,主机地址将作为元数据被存储至SCM中。如果未命中,并且写高速缓存未满,则使用脏位=0、新的时间戳、以及主机数据来创建写高速缓存条目。地址旋转单元将产生映射的输出地址来执行一SCM写入。如果未命中,但写高速缓存已满,则地址旋转单元将产生映射的输出地址来执行一SMC写入,但写高速缓存不变。对于每个主机写入,总会有一个SCM写入。
在本发明中,我们还包括一种与上述不同的处理写高速缓存未命中的替代方法。如果未命中,且写高速缓存未满,则使用脏位值等于1、新的时间戳、以及新的数据来更新写高速缓存条目。地址旋转单元将产生活动日志记录单元的当前指针以作为输出地址,并且一SCM写入将被执行到日志记录单元上。在日志记录写入中,主机地址将作为元数据被存储于SCM中。如果未命中且写高速缓存已满,则现有写高速缓存条目中的一个将被逐出,以便为当前输入的数据腾出空间。在写高速缓存已满的情况下,可以有多种方法来选择要逐出哪个写高速缓存条目,并且在本发明中,没有指定特定的逐出方法。请注意,被逐出的条目可能是脏的,并且需要刷新到预定地址位置。
还有两个后台写入操作,以及一个后台读取操作。该后台复制单元将复制地址发送到SCM存储器控制器,以从日落组读取,然后写入到阴影组。然而,如果主机写入是写入到日落组,则其还从地址旋转单元接收信号。如果是,则后台复制单元需要检查地址是否已经被复制,如果是,则需要用新的数据更新阴影组。
另一个后台写入操作是从高速缓存单元刷新写入。高速缓存单元具有一后台进程以刷新通过一设计参数而具有比与当前tL时间周期对应的时间戳小的时间戳的任何条目。在刷新写入期间,高速缓存单元将刷新地址发送到地址旋转单元以获得要写入的映射输出地址。
SCM具有可以独立执行读取或写入的P个分区。这可以被SCM存储器控制器用于并行操作并使性能最大化。在不同类型的读取和写入操作中,SCM存储器控制器应优先考虑前台读取和写入操作,例如主机诱导的SCM读取和写入操作,以及日志记录写入操作。该后台操作,例如后台复制和刷新写入操作将以较低的优先级予以执行。
图4说明了在突然的断电恢复中所设计的功能块。当断电时,高速缓存中的所有内容都被假设为丢失。一旦电源被备份,我们假设嵌入式处理器430进行控制以将SCM恢复到完全操作状态。该嵌入式处理器在正常操作中处于休眠状态,因此未在图3中示出。嵌入式处理器使用无状态的SCM存储器控制器440从SCM检索元数据,例如组标签。根据该组标签,嵌入式处理器可以分别确定哪些组是数据组、阴影组、以及日志组。根据该信息,地址旋转单元410被恢复。
嵌入式处理器读取日志记录单元的时间戳字段,以确定哪个是活动日志记录单元,以及哪个是最新的时间戳。然后,嵌入式处理器配置后台复制单元220以执行恢复作业。此恢复作业与常规后台复制的不同之处在于,预定地址是从元数据中存储的主机地址字段获得的。这样的地址需要发送到地址旋转单元以找到要写入的映射输出地址。
一旦恢复了必要的日志组数据,嵌入式处理器然后重新安装定时控制块。一新的时间周期T将以当前的地址旋转状态重新启动,以及一新的时间周期tL也将用一空的高速缓存和干净的日志组重新启动。SCM现在恢复到完全正常操作,且嵌入式处理器将恢复到休眠状态。由于重载数据移动是由后台复制块在其恢复模式下所处理的,因此,恢复速度可以非常快。
尽管尽了最大的努力来磨损均衡,但在实际情况中,地址位置仍然不能完全均匀地利用。在某些地址位置比其他地址位置磨损得更多的情况下,它们可能表现出可靠性降低的问题。从ECC译码中,我们可以观察到需要校正的错误数量的不断增加,或者在最坏的情况下,错误的数量可能太大而无法译码。我们的发明可以帮助处理这种损坏的地址位置,以便进一步延长SCM的寿命。
假设发现地址位置x被损坏。首先,这些信息需要存储到SCM中,而不仅仅是控制器中,以防止在断电之后丢失。然后,我们将让地址旋转单元知道x(在断电之后的每次恢复时,这些信息应该被恢复)。如果x属于一当前数据组,那么在写高速缓存中将为x创建一特殊的修复条目,其中包含最后已知的正确数据内容。现在,在T中,无论一高速缓存命中与否,这种修复写高速缓存条目都将保持当前的状态。特别的,在每个tL时间期间,一后台进程将使用旧的数据内容刷新高速缓存条目,并触发一日志记录写入,即便没有写高速缓存命中。实际上,日志组中的一些其他的SCM位置将用于x的可靠存储。由于日志组旋转,所以该负载由所有其他组以随机方式共享。通过保持写条目为当前状态,将永远不会有刷新写入尝试将其写回x。
如果x属于一日落组,那么除了上述之外,后台复制单元将不从x复制,其将从写高速缓存复制。之后,当x属于一日志组时,其位置将被跳过而不用于日志记录。如果x属于一阴影组,那么将创建一修复写高速缓存条目,而不是复制到x。在我们的方案中,修复写高速缓存总是在阴影组中创建的,并且修复写高速缓存应该在该组为一数据组期间保持当前状态,直到其成为日落组。由于修复高速缓存条目是在阴影组期间创建的,因此,它具有后台复制进程中的一个最后已知的正确数据内容。
图5示出了根据本发明的一实施例所示的磨损均衡控制的一示例性流程图。在步骤510中,***首先确定要写入一非易失性存储器的当前数据是否对应于关于一写高速缓存的一写高速缓存命中。在步骤520中,检查数据写入是否是写高速缓存命中。如果是一写高速缓存命中(即“是”路径),则在步骤530中,将当前数据写入写高速缓存以及与该非易失性存储器中的一预定位置不同的该非易失性存储器中的一指定位置,其中,所述将当前数据写入至与该非易失性存储器中的预定位置不同的该非易失性存储器中的该指定位置被称为一日志记录写入。如果不是一写高速缓存命中(即,“否”路径),则在步骤540中,当前数据被写入该非易失性存储器中的该预定位置,或者将当前数据写入到写高速缓存以及与该非易失性存储器中的该预定位置不同的该非易失性存储器中的该指定位置。写高速缓存未命中指示要写入非易失性存储器的当前数据不在写高速缓存中。如果写高速缓存已满,则逐出一个现有的写高速缓存条目,来为当前数据腾出空间。如果被逐出的条目是脏的,则刷新非易失性存储器中一相应的预定位置。
图6示出了根据本发明的一实施例的使用一写高速缓存的基于非易失性存储器的存储级存储器的损坏恢复的一示例性流程图。其中,输入数据被写入到一所选的写高速缓存位置以及一所选的非易失性存储器位置,所选的写高速缓存位置包括一时间戳,如果该时间戳指示该所选的非易失性存储器位置中的内容已过期,则将所选的非易失性存储器位置中的内容刷新到非易失性存储器中的一预定位置。在步骤610中,该方法将非易失性存储器划分成多个存储器组。在步骤620中,使用一周期T内的固定映射,将与存储器组的一逻辑地址相对应的N个输入组地址映射到与存储器组的多个物理组地址相对应的M个输出组地址,M和N是正整数,且M>N。N个存储器组是作为数据组,且一个或多个存储器组是作为冗余组,M等于N与冗余组的数量的总和,且其中,将N个输入组地址映射到M个输出组地址导致M个存储组中的N个数据组被用于以一旋转方式存储输入数据。在步骤630中,检查一受损地址位置是否在一个数据组中。如果结果为“是”,则流程进入步骤640。否则(即“否”的路径),流程进入步骤650。在步骤640中,通过更新修复条目的时间戳来保持更新写高速缓存的修复条目,以防止修复条目中的内容被刷新到受损地址位置。在步骤650中,为具有最后已知的正确数据内容的受损地址位置在写高速缓存中创建一修复条目。在步骤660中,检查该受损地址位置是否在一日志组中。如果受损地址位置在一日志组中(即“是”的路径),则该位置应避免进行日志记录,如步骤670所示。否则,步骤670将被跳过。
图7为根据本发明的一实施例示出了用于具有磨损均衡能力的一存储级存储器(SCM)的共享ECC(纠错码)校验字节和与非易失性存储器的同一非易失性芯片中的地址旋转相关联的元数据的一示例性流程图。该方法配置D个非易失性存储器芯片来存储输入数据以及E个非易失性存储器芯片来存储非易失性存储器中各数据地址的扩展数据,如步骤710所示,其中,D和E是正整数。在步骤720中,非易失性存储器被划分成多个存储器组。在步骤730中,使用一周期T内的固定映射,将与存储器组的一逻辑地址相对应的N个输入组地址映射到与存储器组的多个物理组地址相对应的M个输出组地址。M和N是正整数,且M>N。N个存储器组作为数据组,一个或多个存储器组作为冗余组,M等于N与冗余组的数量的总和。将N个输入组地址映射到M个输出组地址,使得M个存储器组中的N个数据组用于以一旋转方式存储输入数据。在步骤740中,纠错码(ECC)校验字节和与数据组及冗余组关联的元数据被存储在E个非易失性存储器芯片中,其中,元数据对应于与所述将N个输入组地址映射到M个输出组地址有关的信息,以导致M个存储器组中的N个数据组用于以一旋转方式存储输入数据。
上述流程图旨在说明结合了本发明实施例的磨损均衡控制,损坏修复以及共享ECC和元数据存储器的实施例。本领域的技术人员在不背离本发明的精神的情况下,可以修改每个步骤,重新安排步骤,分割一步骤,或组合多个步骤来实践本发明。
提出上述描述是为了使本领域的普通技术人员能够在特定应用及其要求中实践本发明。对于本领域的技术人员来说,对所描述的实施例的各种修改将是显而易见的,并且本文所定义的一般原理可以应用于其他实施例。因此,本发明不打算限于所示出和描述的特定实施例,而是与符合本文公开的原理和新颖特征的最宽范围相一致。在上面的详细描述中,示出了各种具体细节以便提供对本发明的透彻理解。以使本领域技术人员可以实践本发明。
上述本发明的实施例可以用各种硬件、软件代码或两者的组合来实现。例如,本发明的实施例可以是集成到视频压缩芯片中的电路或集成到视频压缩软件中以执行本文描述的处理的程序代码。这些处理器可以被配置成通过执行机器可读的软件代码或固件代码来执行根据本发明的特定任务,这些软件代码或固件代码定义了本发明所体现的特定方法。软件代码或固件代码可以用不同的编程语言和不同的格式或样式开发。软件代码也可以针对不同的目标平台进行编译。然而,软件代码的不同代码格式、风格和语言以及配置代码以执行根据本发明的任务的其他手段不会背离本发明的精神和范围。
在不背离其精神或基本特征的情况下,本发明可以以其他具体形式体现。所描述的示例在所有方面仅作为说明性而非限制性考虑在内。因此,本发明的范围由所附权利要求书而不是上述说明书所指示。属于权利要求等同含义和范围内的所有变化都应包括在其范围内。
Claims (27)
1.一种基于使用写高速缓存的非易失性存储器的存储级存储器的磨损均衡控制方法,该方法包括:
将该非易失性存储器划分为多个存储器组;
将与该非易失性存储器中的一个存储器组的一逻辑地址对应的一输入组地址映射到与该非易失性存储器中的一个存储器组的一物理组地址对应的一输出组地址,其中,该输入组地址属于一第一组N个地址,而该输出组地址属于一第二组M个地址,M和N是正整数,且M>N,且其中,至少一输入地址在两个不同的时刻被映射到两个不同的输出地址,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,且M等于N与该冗余组的数量的总和,且其中,该冗余组被划分成该非易失性存储器的未使用存储器空间中的一个或多个日志组和一个阴影组,并且该非易失性存储器的该未使用存储器空间对应于未用作存储数据的预定地址的存储器空间;
确定要写入到该非易失性存储器的当前数据是否对应于一写高速缓存命中,其中,该写高速缓存命中指示要写入该非易失性存储器的该当前数据是在该写高速缓存中;
如果要写入的该当前数据对应于该写高速缓存命中,则将该当前数据写入该写高速缓存以及与该非易失性存储器中的一预定位置不同的该非易失性存储器中的一指定位置,其中,所述写入该当前数据至不同于该非易失性存储器的该预定位置的该非易失性存储器中的该指定位置被称为一日志记录写入;以及
如果要写入的该当前数据对应于一写高速缓存未命中,则将该当前数据写入该非易失性存储器中的该预定位置或将该当前数据写入该写高速缓存以及与该非易失性存储器中的该预定位置不同的该非易失性存储器中的该指定位置,其中,该写高速缓存未命中指示要写入该非易失性存储器的该当前数据未在该写高速缓存中,其中,如果该写高速缓存已满,则逐出现有写高速缓存条目中的一条,以便为该当前数据腾出空间,且其中,如果被逐出的条目是脏的,则刷新该非易失性存储器中的一对应预定位置。
2.根据权利要求1所述的方法,其中,在该写高速缓存命中的一情况下,当该当前数据被写入该写高速缓存以及与该非易失性存储器中的该预定位置不同的该非易失性存储器中的该指定位置时,该当前数据的一高速缓存条目的一脏位被确定以指示一高速缓存条目的内容与该非易失性存储器中的该预定位置的一数据内容不同。
3.根据权利要求1所述的方法,其中,当一个写高速缓存条目被停用,并且当该一个写高速缓存条目的一脏位被确定时,该一个写高速缓存条目被刷新到该非易失性存储器中的一对应预定位置。
4.根据权利要求1所述的方法,其中,该非易失性存储器的未使用存储器空间的一部分被指定为用于记录写入的一日志记录区域,且该非易失性存储器的该未使用存储器空间对应于未用作存储数据的预定位置的存储器空间。
5.根据权利要求1所述的方法,其中,该输入组地址到该输出组地址的该映射在一第一时间周期内是固定的,并且在每个下一个第一时间周期内仅将该第一组N个地址中的一个修改为一不同的输出组地址。
6.根据权利要求5所述的方法,还包括后台复制,其中,该后台复制包括将该数据组的其中一个称为一日落组,并将该日落组的内容复制到该阴影组。
7.根据权利要求6所述的方法,其中,该后台复制以等于该第一时间周期的一间隔予以执行,并且该第一时间周期被选择为实质上大于后台复制进程时间。
8.根据权利要求7所述的方法,还包括,在从该后台复制开始的该第一时间周期之后,向该阴影组指派一先前日落组的一标识;然后将该阴影组指派给该数据组的其中一个;然后将该日落组指派给该冗余组以作为该日志组的其中一个;以及然后将该日志组的其中一个指派为一新的阴影组。
9.根据权利要求1所述的方法,还包括通过将该一个或多个日志组中的每一个划分为多个日志记录单元,以将该一个或多个日志组划分为一组日志记录单元;并且在发生该写高速缓存命中时,将该数据和一原始输入地址写入称为一活动日志记录单元的该组日志记录单元中的一个,其中,一当前指针被指派以指向该活动日志记录单元内的下一个日志记录条目,以顺序地写入该组日志记录单元。
10.根据权利要求9所述的方法,其中,该输入组地址到该输出组地址的该映射在一第一时间周期内是固定的,并且在每个下一个第一时间周期内仅将该第一组N地址中的一个修改为一不同的输出组地址,并且对于每个第二时间周期tL,向该组日志记录单元的写入移动到下一个日志记录单元,且tL实质上小于该第一时间周期T。
11.根据权利要求10所述的方法,其中,该日志记录写入还存储一时间戳,以指示在哪个第二时间周期tL期间上一次更新了一个对应的写入条目,且该时间戳每隔一第二时间周期tL递增一个时间戳。
12.根据权利要求11所述的方法,还包括当发生断电时,检查该组日志记录单元中的该时间戳以确定在该断电之前的最后一个活动日志记录单元,并确定需要恢复哪个日志记录单元。
13.根据权利要求1所述的方法,还包括为每个组分配一个组标签,以将每个组标识为一数据组、一日落组、一阴影组或一日志组。
14.根据权利要求13所述的方法,其中,该存储器组的组标签还存储于该非易失性存储器中,以允许将该输入组地址映射到在断电后恢复的该输出组地址的一状态。
15.一种用于存储级存储器的磨损均衡控制的设备,该设备包括:
一高速缓存存储器;
一存储级存储器控制器,耦接至该高速缓存存储器以及一非易失性存储器;以及
一个或多个处理器;
其中,该高速缓存存储器和该存储级存储器控制器以及该一个或多个处理器被配置为执行至少下列步骤:
将该非易失性存储器划分为多个存储器组;
将与该非易失性存储器中的一个存储器组的一逻辑地址对应的一输入组地址映射到与该非易失性存储器中的一个存储器组的一物理组地址对应的一输出组地址,其中,该输入组地址属于一第一组N个地址,而该输出组地址属于一第二组M个地址,M和N是正整数,且M>N,且其中,至少一输入地址在两个不同的时刻被映射到两个不同的输出地址,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,且M等于N与该冗余组的数量的总和,且其中,该冗余组被划分成该非易失性存储器的未使用存储器空间中的一个或多个日志组和一个阴影组,并且该非易失性存储器的该未使用存储器空间对应于未用作存储数据的预定地址的存储器空间;
确定要写入到该非易失性存储器的当前数据是否对应于一写高速缓存命中,其中,该写高速缓存命中指示要写入该非易失性存储器的该当前数据是在该写高速缓存中;
如果要写入的该当前数据对应于该写高速缓存命中,则将该当前数据写入该写高速缓存以及与该非易失性存储器中的一预定位置不同的该非易失性存储器中的一指定位置,其中,所述写入该当前数据至不同于该非易失性存储器的一预定位置的该非易失性存储器中的该指定位置被称为一日志记录写入;以及
如果要写入的该当前数据对应于一写高速缓存未命中,则将该当前数据写入该非易失性存储器中的该预定位置或将该当前数据写入该写高速缓存以及与该非易失性存储器中的该预定位置不同的该非易失性存储器中的该指定位置,其中,该写高速缓存未命中指示要写入该非易失性存储器的该当前数据未在该写高速缓存中,其中,如果该写高速缓存已满,则逐出现有写高速缓存条目中的一条,以便为该当前数据腾出空间,且其中,如果被逐出的条目是脏的,则刷新该非易失性存储器中的一对应预定位置。
16.一种基于使用写高速缓存的非易失性存储器的存储级存储器的损坏恢复的方法,其中,输入数据被写入到一所选的写高速缓存位置以及一所选的非易失性存储器位置,该所选的写高速缓存位置包括一时间戳,且如果该时间戳指示该所选的非易失性存储器位置中的内容已过期,则将该所选的非易失性存储器位置中的内容中刷新到该非易失性存储器中的一预定位置,该方法包括:
将该非易失性存储器划分为多个存储器组;以及
使用一周期T内的固定映射将与该存储器组的一逻辑地址对应的N个输入组地址映射到与该存储器组的多个物理组地址对应的M个输出组地址,M和N是正整数,且M>N,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,M等于N与该冗余组的数量的总和,且其中,将N个输入组地址映射到M个输出组地址,使得M个存储器组中的N个数据组用于以一旋转方式存储该输入数据;以及
如果该数据组中的一个之中的一受损地址位置被发现:
为具有一最后已知的正确数据内容的该受损地址位置于该写高速缓存中创建一修复条目;以及
通过更新该修复条目的该时间戳来保持该写高速缓存中的该修复条目更新,以防止该修复条目中的内容被刷新到该受损地址位置。
17.根据权利要求16所述的方法,其中,一个数据组被指定为一日落组,且该冗余组包括一个或多个日志组和一阴影组;将N个输入组地址映射到M个输出组地址包括对于任何给定的周期T,将该日落组的内容复制到该阴影组;并且在该周期T之后,将具有一先前日落组的一标识分配给该阴影组,并将该阴影组设计为该数据组中的一个,然后将该日落组指定为该日志组中的一个,以及然后将该日志组中的一个指定为一新的阴影组。
18.根据权利要求17所述的方法,其中,如果在该数据组的该日落组中发现该受损地址位置,则与该日落组中的该受损地址位置对应的该写高速缓存中的该修复条目中的内容被写入该阴影组,而不是该日落组中的该受损地址位置中的该内容被写入该阴影组。
19.根据权利要求18所述的方法,其中,在指定该日落组作为该日志组中的一个之后,在当前该日志组中的一个之中的该受损地址位置被跳过,而不用于日志记录。
20.根据权利要求17所述的方法,其中,如果在该阴影组中发现该受损地址位置,则在该写高速缓存中为要写入该受损地址位置的任何数据内容创建一个第二修复条目。
21.一种用于基于非易失性存储器的存储级存储器的损坏恢复的设备,该设备包括:
一高速缓存存储器;
一存储级存储器控制器,耦接至该高速缓存存储器以及一非易失性存储器,其中,输入数据被写入一所选的写高速缓存位置以及一所选的非易失性存储器位置,该所选的写高速缓存位置包括一时间戳,如果该时间戳指示该所选的非易失性存储器位置中的内容已过期,则将该所选的非易失性存储器位置中的内容刷新至该非易失性存储器中的一预定位置;以及
一个或多个处理器;
其中,该高速缓存存储器和该存储级存储器控制器以及该一个或多个处理器被配置为执行至少下列步骤:
将该非易失性存储器划分为多个存储器组;以及
使用一周期T内的固定映射将与该存储器组的一逻辑地址对应的N个输入组地址映射到与该存储器组的多个物理组地址对应的M个输出组地址,M和N是正整数,且M>N,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,M等于N与该冗余组的数量的总和,且其中,将N个输入组地址映射到M个输出组地址,使得M个存储器组中的N个数据组用于以一旋转方式存储该输入数据;以及
如果该数据组中的一个之中的一受损地址位置被发现:
为具有一最后已知的正确数据内容的该受损地址位置于该高速缓存存储器中创建一修复条目;以及
通过更新该修复条目的该时间戳来保持该高速缓存存储器中的该修复条目更新,以防止该修复条目中的内容被刷新到该受损地址位置。
22.一种用于基于非易失性存储器的存储级存储器的磨损均衡控制的方法,该方法包括:
配置D个非易失性存储器芯片以存储输入数据与E个非易失性存储器芯片以存储该非易失性存储器中的每个数据地址的扩展数据,其中,D和E是正整数;
将该非易失性存储器划分为多个存储器组;
使用一周期T内的固定映射将与该存储器组的一逻辑地址对应的N个输入组地址映射到与该存储器组的多个物理组地址对应的M个输出组地址,M和N是正整数,且M>N,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,M等于N与该冗余组的数量的总和,且其中,将N个输入组地址映射到M个输出组地址,使得M个存储器组中的N个数据组用于以一旋转方式存储输入数据;以及
存储纠错码校验字节和与该E个非易失性存储器芯片中的数据组相关联的元数据,其中,该元数据对应于与N个输入组地址到M个输出组地址的该映射有关的信息,导致M个存储器组中的N个数据组用于以一旋转方式存储该输入数据。
23.根据权利要求22所述的方法,其中,一个数据组被指定为一日落组,且该冗余组包括一个或多个日志组和一阴影组;N个输入组地址到M个输出组地址的该映射包括对于任何给定周期T,复制该日落组的内容到该阴影组;以及在该周期T之后,将一先前日落组的一标识指派给该阴影组,并将该阴影组设计为该数据组中的一个,然后指定该日落组为该日志组中的一个,以及然后指定该日志组中的一个为一新的阴影组。
24.根据权利要求23所述的方法,其中,对于每个数据组或该阴影组,仅包括一组标签的该元数据作为该扩展数据被存储在该E个非易失性存储器芯片中。
25.根据权利要求23所述的方法,其中,对于每个日志组,包括一组标签和主机地址以及与该主机地址相关联的时间戳的该元数据作为该扩展数据被存储在该E个非易失性存储器芯片中。
26.根据权利要求22所述的方法,其中,来自不同地址位置的该纠错码校验字节按块组织。
27.一种用于存储级存储器的磨损均衡控制的设备,该设备包括:
一高速缓存存储器;
一非易失性存储器,包括D个非易失性存储器芯片及E个非易失性存储器芯片,其中,该D个非易失性存储器芯片被配置为存储输入数据,且该E个非易失性存储器芯片被配置为存储每个数据地址的扩展数据,其中,D和E为正整数;
一存储级存储器控制器,耦接该高速缓存存储器与该非易失性存储器;以及
一个或多个处理器;
其中,该高速缓存存储器和该非易失性存储器和该存储级存储器控制器以及该一个或多个处理器被配置为执行至少下列步骤:
将该非易失性存储器划分为多个存储器组;
使用一周期T内的固定映射将与该存储器组的一逻辑地址对应的N个输入组地址映射到与该存储器组的多个物理组地址对应的M个输出组地址,M和N是正整数,且M>N,其中,N个存储器组作为数据组,一个或多个存储器组作为冗余组,M等于N与该冗余组的数量的总和,且其中,将N个输入组地址映射到M个输出组地址,使得M个存储器组中的N个数据组用于以一旋转方式存储输入数据;以及
存储纠错码校验字节和与该数据组相关联的元数据和该E个非易失性存储器芯片中的该冗余组,其中,该元数据对应于与N个输入组地址到M个输出组地址的该映射有关的信息,使得M个存储器组中的N个数据组用于以一旋转方式存储该输入数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/230,414 | 2016-08-06 | ||
US15/230,414 US10229047B2 (en) | 2016-08-06 | 2016-08-06 | Apparatus and method of wear leveling for storage class memory using cache filtering |
PCT/US2017/042439 WO2018031197A1 (en) | 2016-08-06 | 2017-07-17 | Apparatus and method of wear leveling for storage class memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643275A CN109643275A (zh) | 2019-04-16 |
CN109643275B true CN109643275B (zh) | 2023-06-20 |
Family
ID=61071832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780047550.0A Active CN109643275B (zh) | 2016-08-06 | 2017-07-17 | 存储级存储器的磨损均衡设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10229047B2 (zh) |
KR (3) | KR20200130741A (zh) |
CN (1) | CN109643275B (zh) |
WO (1) | WO2018031197A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10552643B2 (en) * | 2016-12-28 | 2020-02-04 | Intel Corporation | Fast boot up memory controller |
US10656844B2 (en) * | 2017-10-11 | 2020-05-19 | Western Digital Technologies, Inc. | Non-volatile memory with regional and inter-region wear leveling |
US11056206B2 (en) | 2017-10-11 | 2021-07-06 | Western Digital Technologies, Inc. | Non-volatile memory with dynamic wear leveling group configuration |
US10409716B2 (en) * | 2017-10-11 | 2019-09-10 | Western Digital Technologies, Inc. | Non-volatile memory with adaptive wear leveling |
KR102546229B1 (ko) | 2018-10-05 | 2023-06-22 | 삼성전자주식회사 | 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치 |
JP7292872B2 (ja) * | 2018-12-25 | 2023-06-19 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
US10795767B2 (en) * | 2018-12-26 | 2020-10-06 | M31 Technology Corporation | Error correcting system shared by multiple memory devices |
US11016686B2 (en) | 2019-09-18 | 2021-05-25 | Wolly Inc. | Apparatus and method of bad location management for storage class memory using distributed pointers |
US11074183B2 (en) | 2019-12-28 | 2021-07-27 | Wolley Inc. | Apparatus and method of read leveling for storage class memory |
US10990537B1 (en) | 2020-01-07 | 2021-04-27 | International Business Machines Corporation | Logical to virtual and virtual to physical translation in storage class memory |
KR102416880B1 (ko) | 2020-02-20 | 2022-07-06 | 재단법인대구경북과학기술원 | Ssd를 위한 요구 기반 ftl 캐시 분리 방법 및 그 컴퓨팅 장치 |
US11188482B1 (en) | 2020-06-30 | 2021-11-30 | Wolly Inc. | Apparatus and method of zero-copy application co-processor with storage class memory |
US11379367B2 (en) | 2020-11-19 | 2022-07-05 | Micron Technology, Inc. | Enhancement for activation and deactivation of memory address regions |
CN112416262B (zh) * | 2020-12-08 | 2024-03-19 | 合肥大唐存储科技有限公司 | 一种固态硬盘中数据预读方法、存储介质和电子装置 |
CN116755638B (zh) * | 2023-08-17 | 2023-10-13 | 北京大学 | 一种低资源消耗的面向忆阻器耐久性的磨损均衡方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014123372A1 (ko) * | 2013-02-07 | 2014-08-14 | 서울대학교 산학협력단 | 증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60207943A (ja) * | 1984-03-27 | 1985-10-19 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 階層記憶システムにおける1次記憶の内容の保護方法 |
US6223248B1 (en) * | 1997-04-29 | 2001-04-24 | Texas Instruments Incorporated | Circuits systems and methods for re-mapping memory row redundancy during two cycle cache access |
US5999474A (en) * | 1998-10-01 | 1999-12-07 | Monolithic System Tech Inc | Method and apparatus for complete hiding of the refresh of a semiconductor memory |
US6928513B2 (en) | 2002-03-26 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | System and method for managing data logging memory in a storage area network |
US9286198B2 (en) * | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
WO2011031903A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
US9104546B2 (en) | 2010-05-24 | 2015-08-11 | Silicon Motion Inc. | Method for performing block management using dynamic threshold, and associated memory device and controller thereof |
EP2761466B1 (en) | 2011-09-30 | 2020-08-05 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
US9529708B2 (en) | 2011-09-30 | 2016-12-27 | Intel Corporation | Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software |
KR101869059B1 (ko) | 2012-02-28 | 2018-06-20 | 삼성전자주식회사 | 저장 장치 및 그것의 메모리 컨트롤러 |
US9846641B2 (en) | 2012-06-18 | 2017-12-19 | International Business Machines Corporation | Variability aware wear leveling |
US9195578B2 (en) | 2012-08-24 | 2015-11-24 | International Business Machines Corporation | Systems, methods and computer program products memory space management for storage class memory |
US9395924B2 (en) * | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9842053B2 (en) * | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9436606B2 (en) * | 2014-01-02 | 2016-09-06 | Qualcomm Incorporated | System and method to defragment a memory |
US9965345B2 (en) * | 2014-09-24 | 2018-05-08 | Macronix International Co., Ltd. | Health management of non-volatile memory |
US9558125B2 (en) * | 2014-10-27 | 2017-01-31 | Sandisk Technologies Llc | Processing of un-map commands to enhance performance and endurance of a storage device |
EP3289462B1 (en) * | 2015-04-30 | 2019-04-24 | Marvell Israel (M.I.S.L) LTD. | Multiple read and write port memory |
-
2016
- 2016-08-06 US US15/230,414 patent/US10229047B2/en active Active
-
2017
- 2017-07-17 WO PCT/US2017/042439 patent/WO2018031197A1/en active Application Filing
- 2017-07-17 KR KR1020207031511A patent/KR20200130741A/ko not_active Application Discontinuation
- 2017-07-17 CN CN201780047550.0A patent/CN109643275B/zh active Active
- 2017-07-17 KR KR1020197000678A patent/KR102229648B1/ko active IP Right Grant
- 2017-07-17 KR KR1020207031512A patent/KR20200130742A/ko not_active Application Discontinuation
-
2018
- 2018-11-13 US US16/190,043 patent/US10353812B2/en active Active - Reinstated
- 2018-11-13 US US16/190,017 patent/US10394708B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014123372A1 (ko) * | 2013-02-07 | 2014-08-14 | 서울대학교 산학협력단 | 증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크 |
Also Published As
Publication number | Publication date |
---|---|
CN109643275A (zh) | 2019-04-16 |
KR102229648B1 (ko) | 2021-03-22 |
KR20190016562A (ko) | 2019-02-18 |
US10229047B2 (en) | 2019-03-12 |
US10394708B2 (en) | 2019-08-27 |
WO2018031197A1 (en) | 2018-02-15 |
US20190102290A1 (en) | 2019-04-04 |
KR20200130742A (ko) | 2020-11-19 |
US20180039573A1 (en) | 2018-02-08 |
KR20200130741A (ko) | 2020-11-19 |
US10353812B2 (en) | 2019-07-16 |
US20190102289A1 (en) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
US8316257B2 (en) | NAND power fail recovery | |
Mittal et al. | A survey of software techniques for using non-volatile memories for storage and main memory systems | |
US10049055B2 (en) | Managing asymmetric memory system as a cache device | |
US20180182459A1 (en) | Solid state drive architectures | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US8909855B2 (en) | Storage system employing MRAM and physically addressed solid state disk | |
US9009396B2 (en) | Physically addressed solid state disk employing magnetic random access memory (MRAM) | |
US20130080687A1 (en) | Solid state disk employing flash and magnetic random access memory (mram) | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
US20100235568A1 (en) | Storage device using non-volatile memory | |
US11237758B2 (en) | Apparatus and method of wear leveling for storage class memory using address cache | |
US20060294339A1 (en) | Abstracted dynamic addressing | |
CN111459400B (zh) | 在存储服务器中进行基于管线的存取管理的方法及设备 | |
US11100005B2 (en) | Logical-to-physical (L2P) table sharping strategy | |
KR102589609B1 (ko) | 분할된 저장장치에서의 스냅샷 관리 | |
US11609855B2 (en) | Bit masking valid sectors for write-back coalescing | |
US10817435B1 (en) | Queue-based wear leveling of memory components | |
US11704029B2 (en) | Elastic persistent memory regions |
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 |