CN102576330B - 具有持久化无用单元收集机制的存储系统 - Google Patents

具有持久化无用单元收集机制的存储系统 Download PDF

Info

Publication number
CN102576330B
CN102576330B CN201080026058.3A CN201080026058A CN102576330B CN 102576330 B CN102576330 B CN 102576330B CN 201080026058 A CN201080026058 A CN 201080026058A CN 102576330 B CN102576330 B CN 102576330B
Authority
CN
China
Prior art keywords
data
page
storage
block
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201080026058.3A
Other languages
English (en)
Other versions
CN102576330A (zh
Inventor
乔恩·C.R.·班尼特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Violin Memory Inc
Original Assignee
Violin Memory Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Violin Memory Inc filed Critical Violin Memory Inc
Publication of CN102576330A publication Critical patent/CN102576330A/zh
Application granted granted Critical
Publication of CN102576330B publication Critical patent/CN102576330B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

非易失性存储系统例如使用NAND FLASH技术的系统,具有如下特性:存储单元在被擦除前仅能被写入一次,一个邻近的存储单元组需要同时被擦除。恢复不再用于当前数据存储的空间的过程,叫无用单元收集,在擦除期间可能与存储系统的其他存储单元内的数据快速访问相冲突。无用单元收集在系统性能上的效果通过同时进行该过程的部分和用户建立的读写操作可被降低。存储电路和数据也可被配置使得所述数据存在RAID阵列的条带内,擦除操作的时序安排可被安排使得所述用于无用单元收集的擦除操作从用户操作中被隐藏。

Description

具有持久化无用单元收集机制的存储系统
本申请要求2009年6月12日申请的、申请号为61/186,626的美国临时专利申请的优先权,该美国临时专利申请通过在本申请中引用而构成本申请的一部分。
技术领域
本申请涉及用于计算机的数据或指令的存储。
背景技术
非易失性存储器(Non-volatile storage)装置(NVS),比如闪存,可以被用于计算机系统应用中的数据存储。目前,通常使用的有两种类型的闪存,其他类型的闪存尚在开发中。NOR闪存和NAND闪存具有不同的读写速度、不同的寿命以及成本。NAND闪存目前因为大的存储系统而更受欢迎。NAND闪存系统的结构部分地受将旋转媒介(rotating media)(比如磁盘)或录影带替换为大的存储器装置的要求所影响。闪存装置的特性在于:存储单元可以模拟磁盘的扇区、页(page)和容量。但是,在需要被容纳的执行技术中还存在某些区别。尤其,磁盘扇区可以被连续写入多次,然而闪存的扇区只能被写入一次。在下一次写入操作前,扇区必须被擦除(erase)。但是,可能被擦除的存储区域的最小尺寸与扇区或页相比会较大。物理内存的能被擦除的该最小区域被称为“块”,且为可能与芯片电结构有确切联系的多个相邻页。
为在事先未被写入的页上执行初步写入程序,数据的页可以被直接地写在存储区域。这有时被称作编程,且选择性地将一些比特的页从起初的“1”状态设定为“0”状态以记录数据。当在页单元中的数据需要被修改时,修改不能在适当的位置被执行,除非所有比特的页被首先全部再次设定为“1”(这为被称作“擦除”的操作)。但是,擦除操作不能在小于块(其可能为比如128页)的存储区域内被执行。因此,为了写入一比特,存储控制器可能必须读取128页,擦除块,写入所有数据(包括被修改的比特),返回存储区域。这效率低下。同时,擦除操作的次数多,而闪存产品的寿命一方面就在于能在装置报废前执行的擦除操作的次数。
更高效的方法是:读取要被修改的页(“活”或“活动”的页,包括有效的当前数据),使数据修改在局部易失性存储器中进行,将修改后的页写入空闲页。“空闲”页为一个从来未被编程过的页,或者已经因块擦除程序的部分被擦除。在写入操作后,空闲页变成活页,被读取出的也此时过期,被称为“死”页或者“旧页”。
目前使用的NAND闪存的另一个局限在于:块的页需要以第一页为开始顺次地被写入,从而最小化写入混乱的错误。任何没有以该次序被写入的块将保持空闲直至块被再次擦除。由于这浪费存储空间,通常的对策是按照顺次写入块的每页,即使写入不需要时间上连续。由于页不能被单独地被擦除,在被修改的页的原始单元的数据被留在存储器中适当的位置,因此,存储器的死页或旧页是过期的,且不再有用处,但仍然占用存储器的空间。最后,存储器将被填满活页和死页,所有的空闲页都被用完。
发明内容
下面描述非易失性数据存储系统。该存储系统包括存储模块,存储模块具有多个非易失性存储电路(NVS),每个NVS能被配置成第一存储区域和第二存储区域。第一和第二存储区域均具有对数据的存储单元,每个存储单元均能被写入一次,除非单元被随后擦除。
存储模块被合适地配置以使得每个存储单元均具有活动的、死的或空闲的这三种状态中的一个,当多个NVS中的NVS的第一存储区域的所有存储单元为活动或者死的,且被存储在第一存储区域的活动存储单元中的数据被修改时,存储器模块被配置得能将数据从至少存储模块的另外活动存储单元转移到不在第一存储区域中的空闲存储单元。
一方面,在闪存系统中处理数据(managing data)的方法包括:将闪存电路的一块闪存分配给第一存储区域和第二存储区域,每个存储区域均具有用于存储信息的多个页。信息被写入块的第一存储区域的一页。通过写入修改后的数据而将页上的数据修改到块的空闲页,或者修改到具有空闲页的另外的块上;当第一存储区域的多页均为活动的或死的时:将至少另外一个活页的数据从第一存储区域移动到不在第一存储区域内的空闲页。
另一方面,计算机程序产品(被储存或者被分配在计算机可读媒体上或内)具有用于设定与闪存电路相联系的处理器的指令,以执行下述方法:将闪存电路的一块闪存分配给第一存储区域和第二存储区域。将数据写入第一存储区域的空闲页并将该页设定为活页;将该活页的数据移动到不在第一存储区域内的空闲页,再将该活页设定为死页;测定第一存储区域的所有页时都均被设定为活页或者死页;对于每个被指定为死页的附加页:将至少一个其他活页的数据从第一存储区域移动到不在第一存储区域内的空闲页。
再一方面,非易失性数据存储系统包括存储模块,存储模块具有多个非易失性存储电路(NVS),每个NVS电路可被配置成第一存储区域和第二存储区域,第一存储区域和第二存储区域均具有多个用于存储数据的存储单元。多个存储电路中的存储电路进一步能被合适配置,从而使得存储电路的多个存储单元中的存储单元的特征在于具有活动、死或空闲这三种状态中的一种,在第一存储区域的所有存储单元均被设定为活动的或者死的之前,记忆模块的处理器能被合适配置,以将数据从存储电路的第一存储区域中的至少一个活动存储单元移动到不在第一存储区域中的空闲存储单元。
附图说明
图1显示了具有易失性和非易失性存储电路的数据存储系统;
图2是被分配为页和块的存储电路的例子,代表闪存的芯片;
图3阐释了逻辑块地址与物理块地址之间的编制表关系,以及存储器的块中的页单元;的
图4概念性地阐释了存储块(block of memory)的结构:(A)将所述存储块逻辑地分为基础区域和动态区域,在这两个区域中均有空闲页;(B)所述存储块在基础区域中没有空闲页;(C)所述存储块在基础区域中没有空闲页,且在动态区域中的一些页为活页;以及(D)所述存储块没有空闲页;
图5概念性地阐释了存储电路的多个块具有不同的填充状态;
图6概念性地阐释了多个块(基础区域和动态区域的分区域)被处理得具有不同的尺寸;
图7阐释了写入放大因子(amplification factor)对分配给用户的块的比例的依赖;
图8阐释了与RAID相容的存储系统的存储模块的配置;
图9是RAID存储器中的数据的示意排布;和
图10A显示了对RAID条块的写入操作的时间顺序;图10B显示了为图10A的顺次时间区间进行的写入和读取操作的关系。
具体描述
参照附图,更容易理解示例性的实施方式,但是这些实施方式不具有限制作用。在相同或者不同附图中,相同编号的元件具有相同的功能。元件可能被编号或者由缩略来标示,或者两者均有,对于代表方式的选择主要是为了表达清晰,从而使得在此基础上由数字标示的元件、由缩略标示的相同元件或者文字数字标志不会被混淆。
在该申请中会引用到现有的系统、装置、部件或者技术,从而使得本领域技术人员能理解说明书中揭示的实施例。实施例旨在使本领域技术人员能够利用现有的、此处揭示的、或者以后开发的系统、装置、部件、技术或者它们的结合来实施本申请要求保护的创造性发明。当将此处揭示的实施例的性能与现有的系统、装置、部件或技术的性能相比较时,这种比较仅仅是为了使本领域技术人员能更方便地理解该新颖的系统、装置、部件或技术,应当理解的是:在复杂的系统中,在做的对比可能更好、更坏或者基本相同时,可能存在不同的配置或者情况,但不能说明总能获得这种结果,也不能构成对可能获得的性能的限制。
需要注意:描述的方法和附图显示的装置可能以机械可执行的指令(比如软件,或在硬件中,或在两者的结合中)被配置或者具体化。指令能被用于使编有指令的多用途计算机、微处理机、专用处理机(比如DSP,或阵列处理机,或诸如此类)执行描述的操作。可选择地,操作可以通过特别的硬件部件(包含用于执行描述的操作的硬件逻辑系统或者软件指令),或者能包含逻辑电路的被编程的计算机部件和客户硬件部件的任何结合来执行。这种硬件部件可能包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、混合的逻辑和模拟电路以及诸如此类。当此处描述运作装置(computing device)时,假定该装置具有用于存储数据的存储器以及能被使用或连通所述存储器的程序。
方法可以至少部分地作为计算机程序产品被提供,该计算机程序产品可以包括机器可读的媒体,该媒体上存储有能被用来使计算机或其他电子装置执行方法的指令。出于该说明书的目的,术语“机器可读媒体”应当被认为包括:能存储和编码用于运作机器或专用硬件执行的指令序列或者数据的任何媒体,以及能使机器或者专用硬件执行本发明任何一个原则或功能的任何媒体。术语“机器可读媒体”因此被认为包括但不限于:使用电晶体的存储器,光盘或磁盘,磁存储器以及光存储器。
例如,但不是限于,机器可读媒体可能包括只读存储器(ROM)、各种类型的随机存取存储器(RAM)(比如:S-RAM,D-RAM,P-RAM,M-RAM)、可编程只读存储器(PROM)、电可变只读存储器(EPROM)、磁性随机存取存储器、磁盘存储媒体、闪存。
机器可读媒体可以为存储电路,存储电路为能够依赖使用的技术而以易失性或非易失性形式存储数据的电子产品。这种电路可能包括多个半导体片,并包括模拟的和数字的电路部件,以执行存储和取出数据、状态测定或者类似所需的基本操作;这种电路还可能具有执行支持或相关功能的附加电路。
再者,在本领域中,在执行动作或者引发结果时,常常以一种或者另一种形式(比如程序、步骤、流程、应用、模块、算法或逻辑)谈及软件。这种表达仅仅是一种方便的说法而已,通过计算机或者等同装置进行的软件执行使得计算机的处理器或等同装置执行动作或者产生结果,如本领域技术人员所知晓的,执行的动作或产生的结果的表征(representation)可能被存储在存储单元或者被用来逻辑地或者通过网络作用于外部装置或系统。
当描述特别的实施例时,该实施例可能包括特别的特征、结构或者特性,但是每个实施例均可能并不必要包括该特别的特征、结构或特性。这不能被理解为能暗示或推断:两个或多个实施例,或实施例的方面的特征、结构或者特性不应当或不能够被结合;除非这种结合被明确地排除。当特别的方面、特征、结构或特性被结合实施例来描述时,无论在本申请中是否明确提出,本领域技术人员都可能结合其它的实施例来实施这种特征、结构或特性。
根据第一个实施例,存储系统或存储模块1可以包括如图1显示的功能区域,当非易失性存储器(NVS)30例如为闪存,该闪存可为多芯片装置)时,易失性存储器20例如为DRAM,计算机10为自身可能包括局部存储器、可能包括易失性或非易失性存储器(包括用于程序数据的局部存储的存储器)的微处理机、现场可编程门阵列(FPGA)、状态机或诸如此类。可选地,这种程序数据可以从另外的存储器中装载。计算机10可以包括用于连接数据总线的电路,或者具有另一种连接方式连接于系统的其它部分。硬件可以被设置在单个或多个电路板或者基板上。
非易失性存储装置(NVS)30的实施例为一个或者多个1GB的闪存包(三星产品型号:K9W8G08U1M),其在相同的物理包中具有两个512MB的裸片(die)或芯片。该装置具有共有的8比特I/O总线以及多个共有的控制信号器。这两个裸片具有分开的芯片设定(chip enable)以及准备/忙碌信号器。本领域技术人员很容易理解将存储器装置扩展到更大或更小的容量以及设置多个芯片包。多个芯片可以被联合、叠加或用其它方法设置在电子包或组件中。
在另一个实施例中,但并不是限制,非易失性存储器模块可以包括8-16闪存包(flash package),每个闪存包具有例如8个闪存芯片或装置。闪存芯片可以具有4GB的容量,这样8个闪存电路(闪存包)可以有64GB的容量,16个闪存包具有128GB的容量。图2显示了两个闪存芯片的逻辑配置。闪存装置的特征可在于:编程时间(写入时间)一般为200微秒、最大为700微秒,页读取时间为125微秒,擦除时间一般为1.5毫秒、最大为2毫秒。当该装置被控制来在块上执行擦除操作时,装置处于“忙碌”状态且不能接收或执行其他操作指令,除非是重启(reset)或读取状态指令。该装置被组织得能通过具有20MB/s的容量的局部总线(local bus)与存储器控制器10通信,以获得160MB/s的总容量。易失性存储器可以为DRAM,其被设置得有8比特宽,且时钟速率为125Mhz。
NAND闪存芯片目前在生产中的一些局限性是由于,例如,多路传输的数据总线的使用;而另外的局限性起因于:当每个芯片上的存储器密度随着技术革命而增加时,需要后退与现存的芯片电路板设计和计算机软件兼容。但是,我们可以将这里的原则运用到任何存储器技术或协议,只要读取时间与写入时间或擦除时间不对称。
一个实施例的闪存芯片的每个裸片均可以包含4096个块,每个块可以包括64个2KB的、具有页结构的页,例如如图2所示。也就是说,每个裸片均可以具有512MB的容量,两个裸片(其可以为芯片)的包具有1GB的容量。每个页也可以包括4个512比特的扇区。每个页可以进一步包括用于容纳局部元数据(metadata)(其可被称为扇区的辅助数据或备用数据)的64比特区域。页的数据或元数据可以多种方式被布置,整页的元数据被容纳在一个64比特区域中或者被分配在页的扇区。
在实施例中,通过将整页的映像(image)从非易失性存储器转移到2KB+64B的易失性数据暂存器(register),储存的数据可以被读取。因此而被读取的数据可以作为随机数据通过数据总线从暂存器或备转移出的页中被传出。页的子集也可以被转移出来,因为在页中的任何比特单元中设置读取指示物。在扇区的读取被描述时,只要需要元数据,局部元数据也可能已经被读取了。然后,不需要转移扇区或页的剩余数据,元数据也可以被访问(accessed)。可选地,当扇区元数据的读取被描述时,扇区数据可能也已经被读取。为了便于解释实施例,要被读取的存储区域的最小尺寸将被视作页,因为在应用于例如扇区的读取或写入时,本领域技术人员应当会理解本描述。但是,当对时间选择的考虑具有益处时,此处对扇区的读取进行了评述。
将页从非易失性存储电路中读取到数据暂存器中可能花费25微秒,数据可能以20MB/s的速度被传输到芯片数据总线。将整页转移到芯片数据总线需要约100微秒。当仅需要辅助数据时,读取时间可以被减少至大约25微妙(需要读取将页的数据读取到数据暂存器的时间)。在新的或修改后的数据能被写入先前使用的块的单元之前,块必须被擦除,该擦除程序可能花费约2毫秒的时间。擦除操作将块中的所有字节设定为“1”,随后的写入(编程)操作选择性地将字节清除成“0”。一旦字节为“0”,通过擦除整个块,字节可以被再次设定为“1”。
写入(也称为“编程”)可以这样来实现:将数据转移到集成电路块数据暂存器,然后执行将数据写入非易失性存储电路的指令;写入花费大约200微秒或者更多时间。FLASH存储电路的写入时间和擦除时间取决于装置的磨损状态。也就是说,当新的存储装置可能需要200微秒的写入时间时,由于存储电路经过数据写入操作和块擦除操作时,成功地执行擦除操作所需要的时间有增加的趋势,执行写入错作的时间有减少的趋势。为了方便,新装置的典型性能被使用,但是为该操作所实际花费的时间将被理解为完美的性能(achievedperformance)。当在此处讨论写入或擦除间隔时间(interval)时,为了方便,可以选用与写入或擦除操作的最大时间相适应的确定值(fixed value)。这并不应当排除使用基于被测量数据的这些时间的可变数据。
使用目前可用的产品NAND FLASH存储包,在为单层单元(single levelcell)(SLC)闪存进行的擦除操作之间,页的数据和元数据均能被写入达4次,然而对于多层单元multi-level cell(MLC)闪存,在擦除操作之间,页只能被写入一次。也就是说,对SLC FLASH,页的每个扇区可以被按照递增序列顺序单独地写入,然而对于目前代的MLC FLASH,页的所有扇区必须被同时写入。SLC的这一方面使得页能被分为四个独立的512比特扇区,每个扇区可以具有关联的ECC,或者其他的局部元数据。块中的SLC或MLC页被从低页地址到高页地址继续地写入。页的存储器地址可以通过块中的顺次的页数、块中的扇区数来描述;且如果需要,可以在扇区内包括比特的地址(the location of abyte)。一旦页已被写入,直到整个块的下一次擦除操作之后,块中更早的页可能不再被写入(被编程)。
在包含数据“有效的”或“活动的”的块被擦除之前,有效的数据应当首先被移动到将不被要执行的擦除操作擦除的单元。当包含64页的整个块被读出以被移动到另外的存储单元时,将块的页读取到内部传输线需要大约64乘以100微秒=6.4毫秒,将块写入另外的单元需要大约12.8毫秒。然后原始的块可以被擦除,这将再花费2毫秒,这样整个过程将花费20.2毫秒。如果始发和目标块在包的不同闪存die中,或者闪存die能够同时对不同块进行读取和写入,那么读取、写入和擦除操作能在一定程度上部分重合。由于块可能包括活页和死页的混合,而不是所有的页都是活动的;因而擦除块从而使得块能被放入空闲块池中的时间不是常量。如果块中只有一个页是活动的,那么执行该操作的最少时间将为大约100微秒+200微秒+2毫秒=2.3毫秒。相反,如果在块中只有一个死扇区,恢复(reclaim)块需要大约19.9毫秒。任一个动作将导致只有一个额外页被创建在整个用户内存中。因此,块中的死页的比例影响至少无用单元收集(garbage collection)操作的短暂效率(temporalefficiency)。
在之前的讨论中,术语“扇区”、“页”、“块”的使用反映出对闪存电路的当前通常被接受的专门术语,且是由于旋转盘存储器技术的多个术语的使用。当在此处描述数据结构时,术语“块”可以具有不同的意思,这在下文的讨论中将被阐述清楚。当提及其中的数据和单元时,术语“页”和“扇区”可以由被使用的其他专门术语代替。这可以从上下文中清楚理解。本领域技术人员将会理解其他被使用的相当的术语。
随着非易失性存储器技术的持续革命,存储器电路的组织和操作可能发生变化,新技术将被用来阐述情况;但是,本领域技术人员能够利用这种进化的技术将本发明的想法和教导应用到相似的问题。
术语“无用单元收集”和“损耗平衡(wear leveling)”被用来一般地描述在闪存系统中执行的内务处理(housekee ping)操作。
无用单元收集可以与恢复“死”存储单元的操作(通过向FLASH存储器中写入或再写入数据来创建)相关。旧数据单元是过期的,其代表已经被改变且被存储在新单元中或者因其他原因被重新安置的被存储数据的值,也代表需要被恢复从而使得合适数量的空闲存储器被保持以允许继续的写入操作的已耗空间(wasted space)。只要存储器中的数据正在被用户修改,或者额外的数据被存储,写入操作就继续进行。
为了防止因失去的空间(lost space)(与写入或修改FLASH存储单元的数据内容相联系)而导致的存储器被填满(即处于没有空闲页的状态)现象,“无用单元收集”的整理(housekeeping)操作可能被执行。无用单元收集进程(process)识别死的块,且根据预先建立的方法(可能以机器可读指令和参数的形式),块的剩余的活页被从块上重新安置,从而使得块整体上包括死页,且块可能被擦除和回复至空闲块池。
损耗平衡通常与在FLASH存储器中移动数据的进程相联系,以试图保持块-擦除操作的数量大约等于存储块,从而避免FLASH存储器过早地报废。目前,FLASH存储电路因为具有能由故障前擦除操作的次数来测定的寿命而被生产者看好。这是对任何常用的时间相关的故障率说明(其也可能被提供)的附加。故障可能是比如:硬件错误,或者不能在已公开或者已建立的操作性特性(其可以包括写入和擦除时间)内执行,或者过多的位元错误。
因此,除了无用单元收集,已经在存储装置的每个块上执行的擦除操作的相关数目可能是决定管理FLASH存储器的方针的另一因素。由于闪存装置的报废可以通过在其上执行的擦除操作的数目来衡量,目前通常的寿命被详述为:对单层单元(SLC)NAND闪存技术是100,000至1,000,000次擦除操作,对多层单元(MLC)NAND闪存技术是10,000次擦除操作。当其他的块可能包含不被频繁修改的数据且被执行较少的擦除操作时,对存储电路的存储器的特定块的重复写入和擦除可能导致过早的报废,除非使用模式被调整以大体上等于物理存储电路的块上的擦除操作数目。该整理过程被称为“损耗平衡”,且其导致不被用户或系统进程频繁使用的数据页可选择地被移动。
诸如无用单元收集或损耗平衡的这种非用户相关过程通常被称为“整理”或“内务操作(overhead operations)”。内务操作可能以例如以下的方式来显现:用户可用的存储容量的减少、数据读取速度的降低、数据写入速度的降低、读取或写入要求与其执行之间的潜在因素的增加,以及诸如此类。这些性能指示的变化性可能高,且不能被用户应用所预测,因此损害用户系统性能。
通过忽略可能被同时执行的整理和数据保护操作(比如损耗平衡、坏块删除和处理、错误纠正以及诸如此类),此处的实施例已经本质上被简化。在一些例子中,整理操作和整理操作及用户相关操作之间的相互影戏那个被详细的描述,但是这不意味着限制。
许多整理操作显示为:将数据移动到新的扇区、擦除块、改变坏的块表格(block table)、保存元数据(比如:编制表)及诸如此类。这些操作中的一些(比如损耗平衡)可能通过建立适应于页的读取或再整理的方针(比如当修改操作被执行时),而被归入到此处描述的持久(persistent)无用单元收集中。
术语“块”在计算机技术中具有多种意思,取决于其被使用的内容。在计算机存储中,常常提到被存储或被进入在“块”中的数据,当其本质上具有固定尺寸时,这里的块可以不与FLASH存储器中的“块”相同。对在相同数据上操作的不同实体(entity)而言,被访问或操作的数据“块”的尺寸(以比特或者其他方式计量)不同也是常见的。也就是说,术语的意思可以取决于作者的观点。例如,许多操作系统控制4KB块(其通常被称为“页”)的DRAM的存储器的再布置,但是DRAM为不同的技术且该概念通常不描述FLASH存储器中的页的组织。当数据被写入磁盘驱动器进行存储时,块尺寸可能为512比特,这导致4KB块的数据被存储在磁盘上的8个不同的512比特的存储器块中。磁盘存储块也通产被称为“扇区”,但其不同于FLASH存储器扇区。专用术语在技术变革时通常被这样重复使用,本领域技术人员能理解基于使用术语的内容而被描述的动作或者现象。
当提及一块数据在存储系统中的位置(location)时,可能是提及其逻辑块地址(LBA),即在文件管理系统的内容(cont ext)中提及的位置,或其物理块地址(PBA),即其在电子存储系统,例如闪存中的实际存储位置。关于块的大小,不同的实体可能使用不同的地址命名类型以及值来表示同一数据片(piece of data)。例如,一个操作系统可有一个4KB的、具有逻辑地址5的数据块,假定每个地址保存以物理地址100存储在DRAM里的4KB数据。所述操作系统用于维持一个用于追踪内存一个逻辑地址的物理存储位置地址的映射表(mapping table)。当所述操作系统用于在磁盘中储存相同的数据时,该操作系统可用于识别,例如,8个未使用的512字节的物理地址,例如8-15,用于写入数据。然而,所述磁盘驱动控制器本身可用于在所述磁盘内的位置8-15内存储数据,也可把由操作系统文件管理软件提供的地址,例如,作为在磁盘装置层次上的逻辑地址,并且在所述磁盘上的不同物理地址来储存所述数据,其通过一个本地映射表被追踪。因此,相同的数据片,或一个数据片的一部分,或者数据片集合(collection)可同时被当作具有地址的块或扇区(sector)或页,所述地址可看作一个具有可作为通过一个实体,例如操作系统,来映射一个逻辑地址的物理地址,同时作为通过一个不同的实体,例如磁盘驱动器、闪存模块及其类似物的另一个映射表被映射到一个物理地址的逻辑地址。
因此我们可以说用户数据具有逻辑块地址(logical blockaddress,LBA),即一个映射表映射到一个物理块地址(PBA)。另外,所述“块”可代表用户视角的数据,其中用户,例如写入数据在4KB块,而每个闪存装置存储长度为2KB的数据组的数据。可以说,在这种情况下,所述映射表真正将逻辑“半块”地址映射到物理页地址。另一方面,如果闪存被用于存储1KB序列块的数据,这样就将逻辑“1/4”块地址映射到物理“双扇区”地址;对于512B序列块,1/8逻辑块被映射到单扇区物理块。当用户块的大小被改变或FLASH页及其类似物的长度被改变时,所有的术语名将不得不对应地改变。为了避免这种在概念表示上的混乱情况,我们使用术语LBA和PBA作为数据片的逻辑和物理地址,它们的大小以及位置在内容上是独立的。
在一个实施例中,如图3所示,当一个给定的LBA被写入FLASH,如LBA3,所述数据可被写入一个在块2的页8的空闲存储单元(free location)。为了简便,我们可将MT看作存在易失性存储器,例如DRAM,内的、足以存储可直接被引用和更新的所有LBA到PBA映射的表。许多闪存系统将LBA到PBA映射保存为数据结构而非平坦表格(flat table),该数据结构可不被存于易失性存储器内,所以MT的格式及位置不构成一种限制。
如果LBA3被再次写入,例如为了更新数据值,一个在闪存装置内的可用位置将被找到用来存储所述数据,而映射表MT将被更新以引用新的存储位置。所述LBA3先前被安置的物理位置现在被认为为“死(dead)”;即直到该页所处的块(本例中为块2)被删除时,该物理位置不能用于存储新的数据,其可能是,例如一个页。然而,在块2能被删除前,任何“活(live)”数据,以映射到位于块2内的PBA的LBA形式存在,例如映射到块2的页4的LBA2,必须被重新定位于一个不同块内的存储位置,从而使得当所述块被删除时所述活数据不会丢失。无用单元收集和损耗平衡的过程在一定程度上会相互影响。一些关于无用单元收集的政策也可用于执行部分或全部损耗平衡功能。
为了描述的简化,所述存储电路可为一个芯片,例如上面描述的三星(samsung)部件。所述容有存储电路的存储模块的界面和计算系统的剩余部分为同一总线。例如通过文件管理系统、块定向(oriented)存储系统及其类似系统进行用户数据管理的详细内容在该系统中以更高的层级被执行,从而使得在存储模块的一些概念层,通过存储器及最接近存储器的界面执行的基本功能是数据读写。在存储位置的数据更改被认为是读、修改及写操作的组合。
在该实施例中最小的数据元为页,虽然操作的实际结果可能只是更改位于一个包含64页的物理存储块中的2KB页中的1B数据。所述页可为空闲页、活页或死页,取决于其内的字节(bit)由于更改的目的是否已经被删除及尚未被编程、被编程(被写入),或者被读取,该更改的数据已经被写入另一空闲物理位置同时将原始数据留在原位置。一个块内的页基于增加次序的写入页政策而被写入,在一个块中,空闲页具有比已被编程(活的或死的)的页中最高的页码更高的页码。空闲块是其内所有页均为空闲页的块。
在整个可用的存储器中,存储器的一部分对于用户是可用的,一部分用于系统内务处理,还有一部分是不能使用的。所述不能用的存储区域可能包括已被制造商或操作系统确认的坏(瑕疵)页或坏块。每个制造商或用户确定一个页或块为坏的准则可能不同,但是认定一个页或块为坏的结果就是将所述页块从这些被认为可进行可靠数据存储的块的分类中去除。最后坏块的数目增加的足够大而使得没有足够的存储器用于用户数据及内务活动,事实上存储电路装置已经无法工作或被用坏了。
基于描述的原因,由于坏块不被使用或者操作而不被考虑。它们只是减小了存储器的可用容量。用于在物理内存中描述数据位置和数据特性的元数据(matadata),可能导致用户整体可用存储量的减少。这样的元数据大约为储存的用户数据容量的2-5%。这里,所述的元数据及存储数据一起被认为“数据”。实际的用户数据区域由于存储元数据的空间而减少,但是所述数据及元数据的存储可被相同的操作管理,考虑到对于用户数据和当地元数据执行的操作为相同的或相似的,因此这里的描述被简化。同样地,“用户”可以理解为通过用户程序提供给存储控制器的、无论哪里被定位的命令和数据的组合,以及关于用户元数据和内务处理的元数据维护。
在本实施例中,用户数据,包括用户元数据,可以2KB的逻辑数据块来分组,每个所述块具有一个逻辑块地址(LBA)。所述LBA从LBA=0到LBA=LBA_MAX被编号,其中LBA_MAX是在一个装置中可用用户数据存储器的数量,因此2KB×LBA_MAX是一个块的用户数据存储容量的大小。所述用户数据区域可被分配到多个所述存储模块的物理存储块,每个存储块为,例如256KB,一个存储模块有多个GB的存储容量。
简单起见,我们将LBA的范围限定在可用的存储容量。具有大于或小于所述可用物理存储容量的地址范围的系统没有被排除。
一个映射表(mapping table,MT),可为元数据的一部分,展示一个LBA与物理存储地址(physical memory location,PBL)当前关系。图3展示了映射表的一个例子。PBL是LBA到物理块地址(physical block address,PBA)的映射,所述物理块地址是存储电路内的页的实际地址,PBL表项目的数目和LBA表项目的数目相同。这是由于本实施例中LBA对可用的用户内存的全部的每个逻辑页的配置而引起的。
每个LBA是PBA阵列的一个索引,包括一个块号码(i)和在所述块(i)内的页索引(j)。不是所有的LBA都与闪存系统内的活页有关联。所述表格因此将每个LBA与在闪存的一个块内的、存储与LBA关联的数据页的特定物理存储单元相关联,或者不将所述LBA与物理存储单元相关联,数据还没有通过所述LBA,例如图3中的LBA5,被存储于该物理存储单元,或者在使用后已经被重新分配(de-allocated)。
概念性地展示在存储块的左手侧的另一个特性(attribute)是所述块的每页的状态。所述页可以是先前所述的空闲、活性或死的状态。在第一空闲页以下的所有页通常是活性的或者死的,由于被越过的(bypassed)空闲页不应该被写入除非整个块被擦除。这是当前可用的NAND闪存装置的特性,但不构成限制。所述页的状态可被存为S(i,j)。一个块本身的进一步信息可以一个变量(variable)B(i)被存储,该进一步信息包括例如所述块已经被擦除的次数、所述块是否是空闲的、活性的、满的(full)或者可用于擦除的信息。
所述可用的用户内存可小于所述模块的物理内存。特别地,所述其它的物理内存可被用于内务操作(以及其它包含在内务概念下的操作,因为他们对于用户不可用)。因此,对于一个具有物理内存(physical memory,PM)的总量且假定没有坏块的存储模块可被分配作为U字节用户内存及H字节内务内存,其中U+H=PM。即,所述PM代表2KB×PBA_MAX。有时候,为了方便,U和H的值被表示为PM的百分比。
首先,当首次使用或完全被擦除时,所述存储模块内没有存储用户数据。由于所述存储系统用于存储、恢复(retrieve)以及更改数据,所述逻辑LBA和被存储的、具有分配在MT的PBA的用户数据相关联,所述操作在其上执行。
当一个通过LBA描述的活性数据页被读取时,所述操作被就地执行,由于所述数据没有被更改,因此写操作不需被执行。LBA和PBA在MT的联系没有改变。当通过LBA描述的数据被写入时,一个新的PBA从所述“空闲的”、数据可被写入的存储页池中被选出,所述关于LBA的MT条目通过PBA的新值被更新,其中所述数据已经被存储。这个PBA现在变成一个“活”页,新的活页的状态被改变从而其从空闲页池中被删除。附随地,旧的PBA现在被废弃而被当作“死”页。所述页的状态被改变为“死的”或者“失效的(stale)”。所述死页的数据还没有被更改,但是所述数据现在已经不被现时使用(只要所述交易已经被正确地说明,例如通过系统软件将所述交易操作成功复制)。
一个适于这个目的的数据管理系统的例子可发现在本发明人于2009年11月18日申请的、申请号为US12/273,410,名称为“在非易失性媒体中的数据存储方法和系统”的美国专利申请中,该美国专利申请通过在本申请中引用而构成本申请的一部分。所述与用户数据及其维护相关联的元数据可看作是用户数据的一部分而进行描述。
图4展示了一个闪存块的存储区域的简化图(去除多余数据、坏页、非用户相关内务存储及其类似物)。图4A展示了包括用户内存的MAX_PAGE页的单一存储块的数据布局(layout)。MAX_PAGE的值可从块到块进行变化,实践中,由于坏块的数量及其类似物,用于存储模块的用户内存的总量是总内存U+H中的U。
在图3A中,从最低PBA(0)开始,数据页可被顺序递增地写入直到一个值WP=PBA(i,MAX),其代表MAX_PAGE写操作的结果,而WP是一个写指针的值。在PBA(i,MAX)之上,是WP的当前值,所述存储页还未被写入,为“空闲”状态。所述先前所有被擦除的空闲页或从未被写入的页仍然全为“1”。所有小于或等于PBA(i,MAX)的页为活页(除了本实施例中的一页,其被假定已经被更改,因此被转移到另一个存储单元,并被展示为死的状态)。对应的活页的存储单元位于MT内。
为方便讨论,两个邻近的存储区域被界定:基础区域(BA)和动态区域(DA)。所述动态区域被进一步分成一个溢出区域(overflow area,OA)和一个结束缓冲(end buffer,EB)。所述基础区域的值为U而所述动态区域的值为H。
使用基础区域(BA)相对于动态区域(DA)的内存比例对于系统性能有一定影响,后面将会讨论。例如,所述BA为80%而DA为20%;所述OA为5%而EB为15%,其中所述百分率基于一个物理存储模块的总用户内存。所述物理存储模块是最小的可被擦除的内存单元,用于当前可用的NAND闪存。
当所述内存被首次使用时,在任何一个PBA中均没有数据,而所述PBA变成被数据占据通过将与一个LBA关联且通过MT与LBA相关的数据写入每个PBA。一个用于每个存储块的写指针WP(i,j)被保持。如图3B所示,当所述写指针WP(i,j)=BA_MAX,基础区域(BA)是满的,更多的到所述存储模块的LBA页数据的写入可以在另一个存储模块继续。在用户系统的操作中,同时随着LBA数据第一次写入到所述内存,其他的操作可能发生,其有更改所述块的一个已经写入页的效果。第一个如此更改的页是一个数据已经被移走的页,如图3A所示,其为一个死页。该页的状态将被标记为S(i,j)=D。其他的死页可参考图3B。
在足够的写或更改物理内存内的页的操作后,所述块的BA内的所有页或者已经被写入,为“活性”状态;或者已经被更改,为“死”状态,或者为这些状态的混和。所述块的BA内没有空闲的PBA用于容纳下次写入或更改数据或者内务操作。
在此刻,如图4C所示,用户数据被写入动态区域DA可能发生(虽然在早期没有阻止该过程的这部分开始)。这将对于多个块中的一个块和一个存储模块的芯片进行描述。图4C展示了所述第一个写入动态区域DA的写操作被进行到PBA(i,WP)=BA_MAX+1,其为动态区域DA内物理内存页的最低值。一个页到动态区域DA的溢出区域OA的写入可以导致数据页从BA转移到另一个存储页单元。必要地,这个存储单元在基础区域BA外边,当基础区域已经被填满,在此情况下,所述页数据已经被转移到OA或另一个块。页数据被移出的存储单元现在为死页,因为其内的数据已经被更改、重置(relocate),因此已经过期。对于每个被更改及写入DA的OA的活页,一个额外的死页因此在所述块的BA中产生。由于页数据的更改或内务操作,活页可被写入DA。在任一种情况下,所述源页被当作死页。
每次一个LBA的数据被写入OA,所述WP被增加1,另一个BA的数据页被移到别处。在用户和系统需要的情况下,从BA中附加页的数据及OA内的页可被转移走,每次转移导致至少一个死页,在每个块内增加了死页的百分比。在此刻,至OA的数据转移操作的数目至少等于写操作的数目。内务负担相当小且被及时及相对于所述物理存储模块而分配掉。
等到通过与数据更改相关的转移而使所述OA块的内存的5%已经被填满,另外在BA中的5%的数据也已经通过“一页转移为每页写入”政策被重置,从而全部用户内存的至少10%为死页。其他更改存储数据页的操作也将导致死块,从而10%的死块是最小值。
数据管理操作将LBA写入操作分配到若干个块上;然而,如果LBA(包括数据更改)继续被写入当前存储模块,那么该操作的概念比较容易解释。当OA被填满,PBA(i,WP)=OA_MAX,结束缓冲器(EB)的第一页PBA(i,WP)=OA_MAX+1被写入。由于采用的该政策,BA或OA中多于一个附加页被每一个LBA写操作重新写入EB。例如,BA或OA中任一个的两页数据将被每一个LBA写操作重置。在该例中,该附加页或将被重置于EB中。大致上,它们会被重置于其它有空闲页的块上或者芯片上。这包括空闲块。直至EB的空闲页被物理重置的LBA页数据填充,存储块上的另外10%的用户内存将从活页转变成死页,且数据在别处被重置。在这时刻,所述块已有效填满且没有任何写操作能在所述块中执行。然而,如果附加的、无更改的页被转移至另一个块,到源内存块中的全部页面均为活状态或者死状态的时候,源内存块中至少40%的页面为死状态。
已满的块将被标示为无用单元收集(或称回收,擦除)的候选者或者根据变化的政策进行的其它内务操作。死页的百分比、块被擦除的次数及其类似问题可能被考虑。
在芯片或者模块的层面上,考虑到存储块的特性,存储单元的占用以及管理是不同的。如图5所示,芯片上存储块,例如,被看成为存储块阵列,每一阵列的存储量等于块中可用存储量的大小。为了便于讨论,该例中假设每一所述块中有相同数量的存储页。但是,如前所讨论的,上述不一定都是真实的,其并不构成一种限制。
如图5所述,存储块可被认为从来没被写入过,或已被擦除(空闲块)F;当前也可被写入且仍具有可用空闲页(活性的)A;以及没有空闲页(已满)M。在后面的情况下,所述块的每一页为活状态或死状态中的一种。在没有被回收(reclaimed)(擦除)的情况下,已满的块M没有可用空闲页面空间且不能接收进一步的写操作。如上所述,每一个满块可能具有至少40%或更多的死页。如果所述块选择被回收(无用单元收集),或被标示用于块擦除X,根据政策,在标示已满块F作为可进行擦除操作之前,所述标示块的剩余活页首先被转移至其他活块或空闲块。所述活页数目少于所述块容量的50%,如上所述,取决于动态系统的使用,所述活页数目可能更少。因此,当一个块被选择擦除,如果所述块已被填满且没有任何对应的进程内的页重置,被转移的数据量少于50%。然而,这并不是一种限制。
再者,在所述块被擦除之前,数据应在剩余操作进程的间隙之间,而不是以大组页形式立即被转移。即,转移页的数量实质上应相同;但是,页转移是单独进行的,由用户或内务操作分散进行。这样,用户数据流中大及不可预测的中断将被避免。
物理的存储块的回收(reclamation)取决于空闲块池的大小。如果可用的空闲块的数量充裕,已满的块并不需要立即回收。上述回收可能会延期直至空闲块池中的空闲块的数量减少至特定的极限值。当已满的块仍不用被回收,可先执行一后台操作将页从已满的块中逐渐地转移至活的或空闲的块中,进而增加已满的块中死块的数量。在此限制下,全部的页为死状态,所述块将被擦除或至少被标记在需要的时候可被擦除,没有进一步的页面重置。
从选择已满的块中转移页是在政策的管理下进行的,所述块先前经历的擦除操作的数量被考虑,具有低擦除量的块的页被优先重置。这就是损耗平衡的形式。
另一方面,上述例子显示的OA填写过程可以改进。例如,用于每一写入页的可移除页的数量可为2。当所述OA被填满时,30%的页已被移除。当所述块被填满时,至少20+30%=50%的块包括死页。当写入每一个LBA的可被移除的页数量为3时,那么当所述块被填满时,至少20+40%=60%的页是死页。
另一方面,动态区域DA包括有相同重置政策的OA和EB,因此整个DA被当作使用相同的政策。例如,当一个页由于页数据更改而被写入DA时,两个页可被重置。
在另一方面,重置政策可以基于例如空闲块池内可用的块数目,块内死页的数目,块擦除数,瞬时读取或写入率,或其类似因素而变化。
确定每一个LBA写入到DA的可被移除的页数量的政策,主要决定于所述块的死页数量,其中死页的数量越少,每一次写入的重置页越多。每一次写入的重置的平衡和满块的背景重置速度可以由耗损-平衡政策而得到缓和,从而使频繁擦除块的重置频率减少。可在垃圾收集的同时发起促进耗损-平衡技术。
当空闲块池降低到预定值时,一个或多个块会被回收,这样,活块和空闲块内的足够空闲空间可被使用,以跟上写入速度规范。另外,满块内的被允许的活数据数量可能被限制,从而,当块被擦除时,重置剩下的活数据页所需要的时间要与读取速率或等待时间规范相适应。
所述单元为较大存储系统的一部分,其他的稳定或不稳定的存储区域也可以作为在另一计算机、处理器等上执行的程序指令和数据的临时存储器。不稳定的RAM和/或内存模块的部分可以作为NVS设备和任何其他存储器媒介之间的中介存储器,包括NVS和可能作为内存模块的一部分。术语内存模块方便将一组NVS存储元件或包概念化,可以包括相关的不稳定的存储器和计算机设备。也可以包括连接系统其他部件进行通信的总线接口。一个单元的所有的元件不需要都物理地固定到一个电路板或电路基板上。可替换地,一个以上的单元可以固定到一个电路板或电路基板上。
更早地,讨论到的块被填满时,活页和死页的数量被设定。然而,一旦所有的LBA地址通过映射表(MT)与一个物理存储单元有联系时,以及所述存储系统处于被逻辑写入的准稳定态时,处于内务处理操作外,用于写入操作的次数(除了元数据)等同于用于发出写操作指令的次数,这种结果是所谓逻辑页的存储数据的一种修改。由于这由读取页时而发生,修改暂时存储器或稳定存储器内的数据,以及往空闲存储页中写入数据,那么源页成为死页,而目标页成为活页,并从空闲页池中删除。
由于每一次对闪存的读或写操作可能为一页的读或写,因此会在内务处理操作例如垃圾收集(或者促使一个修改页的写的一个页的读,或一个修改数据页的写)和用户发起的读操作之间存在一个短暂的冲突。
在该实施例中,当块被擦除时具有间隔(occasions)。当它被擦除时,如果一个读取请求指向一个块的芯片,那么读取操作将会被阻碍大概2毫秒,除非擦除操作被中断。但是,如本发明人在2008年3月26日申请的、申请号为US 12/079,737号、名称为存储管理系统和方法的申请中描述的且引用作为本申请的一部分,当内存以RAID结构来组织,由于擦除存储模块中的闪存块,读取阻碍可能被预定,从而没有所有数据的RAID组数据可能被重建,并且所述模块读取潜伏(latency)由于擦除一个模块可能不会对用户很明显。在擦除期间,内务操作可在其他块中被有效地执行。
本实施例中的数据处理显示为通过计算机来执行,所述计算机可以是存储控制器或位于电路板上的存储管理电路,其为包含存储单元的模块,或通过总线连接到这样一个模块,从而数据可以在更大的系统的另一个组件中处理。用于与系统的其他方面通信的总线可以是现在已知的多个总线架构中的任意一个或其可以发展为与产品兼容,利用它存储系统被设计为界面。这样的总线可能,比如不是通过限制,模仿旋转磁盘存储系统的硬件和软件界面特征,或在其上扩展或改进。
不需匹配BA和DA的尺寸(如图四),且如图6所示,不需所有块都恒定。基于系统负载或占用率或其他性能度量值,BA,DA=(OA+EB),和OA与EB两者的尺寸,对于不同的块可以变化。比如,如图6所示,通过用块A和B代表块A-F组的一些块,用尺寸低于BA的平均值超过所有块A-F的块A和B的BA代表,可以达到使块处于不同使用阶段的目的。不同使用级别间的块的EVOLUTION,比如引起符合给定的控制数据分配的POLICY的多个块中的一个块上的数据分配,如显示的,对于块C可以控制,其OA暂时地尺寸为0,且不能被写入。在另一时间,块C的OA的尺寸可以>0且可以再开始写入块C,并可能成为块D。在这样的动态系统中,在预定的或可调整的利用水平之前,块可能也有为无用单元收集机制,或损耗平衡保留的页。达到块填充水平(块D的情况),这时在活的和死的块中的数据总量是BA+OA,可以在块上开始无用单元收集机制。在块E的情况下,总数大于BA+OA但小于BA+OA+EB,无用单元收集机制可能以加速的速率执行。在块F的情况下,总数是BA+OA+EB,块已经被完全填满且现在为了无用单元收集机制的目的将要回收。
存储块的BA和DA可以有不同于该示例中的尺寸,作为可用的用户记忆的百分比,和在示例中使用的尺寸,和应用的特殊的POLICIES,只说明且不意在限制。在一个示例中,80%的物理存储块可以分配给用户数据LBA且剩余的20%存储可以分配给家务处理(无用单元收集机制)操作。多个自由块可以分配给自由块池作为数据转移管理的一部分。写操作的总数,包括无用单元收集机制,需要适应用户命令写操作影响在记忆存储容量和操作时间限制两者的使用效率。后者可能涉及输入/输出(I/O)操作的数量和将用户数据写入存储器的生产量。
比如,用于每个块的BA和DA的值的选择可以是分配在围绕设计的目标平均值的值的范围内的一致的可变范围。可以基于监控块内的活页的百分比的分配对值做出调整。用于块的自由页标准可以与其他芯片,模块活系统的块比较并调整以便完成用于多个块的自由页的百分比分配的持续准恒定状态。用户读和写操作的混合,和无用单元收集机制与损耗平衡的需要,产生动态负载情形,且如用户经历的,BA和DA的调整,及响应负载的无用单元收集机制协议可以用于控制响应时间的变量。
存储在存储器中的数据可以认为包括S页数据,在此(Sx页_尺寸(KB))是存储在存储器中的所有用户数据的总数。每个数据的LBA页可以与物理记忆的一页联合。每个LBA和PBA之间的关系建立在MT中。无论何时为任何理由数据在存储器中物理移动,联合LBA的特定的PBA可能被改变。但是,在该处理中,数据S的页的总数既不会增加也不会减少。就是说,逻辑数据阵列的尺寸是不变的。
如果存储块的物理存储总量为PM,所分配的存储量作为使用者存储U和家务存储(housekeeping memory)H,则PM=U+H.在此所述的家务存储是指当使用者存储U载有使用者数据时在存储块上所留存的存储量。有人将按附图4中所示的具有使用者存储U的存储分配解释等同于基础区域BA和作为家务数据一部分的动态区域DA。也就是,仅有所述块的BA部分是留给使用者数据存储的,即H=PM-U.再者,H可包括任何不属于BA或DA的用于实际的家务信息保存的存储。但是,如前所述,“使用者”存储和“家务”存储是合起来计算的一个概念。也就是说,例如块的每个扇区都可能存储使用者数据或是家务数据。所述每扇区数据的性质可通过映射表来分辨,至于是将所述映射表做成能区分字节、扇区、页或是块的水平的问题,则会根据不同设计去选择。一般来说,受现有NAND闪存技术所限,数据是被物理扇区连续地最先写入自由块的位置;但是,写入每扇区的数据的类型,例如可取决于存储系统的操作软件或管理系统的数据。所以U和H可考虑参照块的页中数据类型的量,而不必参照所述块中物理页的位置。
当LBAs被首先分配给PBAs时,所述存储U部分中的所有页可被分配给LBAs。在存储管理系统中,当使用者数据连续的被所写入自由页的修改数据所编辑时,所述存储H部分中的页能使用到块中的PM被活页或死页所载满;其后便无自由页。所述存储U部分中的相应页H的序号被标记为死页,因为存储其中的数据被编辑并且转移到存储中H部分的一个位置(也有另外的页被转到家务部分)。因此,当物理存储PM的块被载满时,所述存储U部分的就产生了H存储死页。由于自由页没有更多的空间供写入,所以需要擦除所述块以产生死页。在此项操作之前,保留在PM中的任何活页,包括所述存储H部分的数据需要分配到其他的存储位置,以防止有效数据被擦除。
本文的描述是为简单的解释目的,不能被视为一种限制。在存储系统中,被编辑过的数据被写入相同块或另一块的不同的自由页。因此,例如,被编辑过一次的数据可被转到相同块的H类中,或被转到另一块的U或H类中。这样,载满的块也可比H活页存储量少,如果要比PM存储量多,应在载入所述块前编辑U页。
写入放大是应使用者的需求为了单独的写入请求而对所述NAND闪存系统的几个写入操作。写入放大的量与分配给使用者可供使用的存储百分比有关,关于用来满足使用者需求的存储重量,其包括所有的家务功能和不可用于任何目的的任何缺陷存储。
例如,考虑到存储块(“源”块)(a“source”block)具有被分为U=32页和H=32页的64页,也就是说,使用者可以有50%的物理存储可供使用。最初,当源块被加载,所述源块的U存储区域中的所有页被标记为死页,并被转入所述H存储区域。为了释放所述载满的块中的死存储(dead memory),所述块通过擦除空出空间,所述存储区域H中的32个活页可被分配给另一个存储块(“目标”块)。所述源存储块可被擦除并使所有源块PM再次可供写入操作使用。在此过程中,所述目标存储块具有从所述源块载入活的数据的存储区域U。除了所述数据现在储存在不同的存储块,上述情况可在所述过程的开始就实现。当然,一旦所述块被擦除,在擦除过程中,存储在所述块中的使用者数据就被转存到RAM或者闪存(FLASH)之中。
这里描述的数据写入再次为了说明。同样的结果将被得到,如果单一LBA被连续更改使得所述H区域被LBA内的后续版本的数据填满直到所述块被填满。所述块被填满时将导致活性段和死段的数目相同。
写操作W的总数可以是用户写(更改数据)操作UW的总数,且数据传输DT数目写入需要在擦除前从源存储块中清除所有剩余的活性数据。W=UW+DT。由于一个块内的物理内存的50%被分配给了U和H的每个,在这种情况下,UR是32而DT也是32。通常,先于填满所述存储块写UW的用户数是H,其为过程开始时初始空闲内存H的量。当所述块被填满,H页已经从用户内存U中被移除,而剩下的活页数目为(U-H),除去内部数据转移。这意味着数据传输DT的数目是H+(U-H)=U。我们可以将写放大因子A作为写入W的总数对需要填满所述块的写入数目的比率。因此,A=W/H=(UW+DT)/H=(H+U)/H=1+U/H。在这种限制下,当只有所述块的一个页被分配到用户数据时,平均放大因子A=1+1/63≈1,而当除了一个以外的所有页均被分配到用户数据时,A=1+63/1=64。
因此,低写入放大因子A被看作是分配给用户数据的实际物理内存的比例函数。该例中的案例有用户数据U为50%和内务数据H为50%,或者内务数据和用户数据各为32,那么平均放大因子A=1+32/32=2。在第一个例子中,U=80%(51)、H=20%(13),所以A=1+51/13,约等于4。该比例函数在图7中呈现,为在系统设计过程中,内务数据在可能与诸如低写入放大因子和物理内存损耗的交互过程中,分配给内务数据H的内存比例提供指引。由于写入放大因子A与写入速度和损耗速度(擦除数)两者都有牵连,每一个因子都可能通过应用程序输入到设计当中。在写入速率不变的情况下,擦除数与写入放大因子是成比例的。因此,分配内存太小可能会造成内务开销过度和过快的损耗。同样的物理内存按照初始配置,得到特殊的用户数据(U)和内务数据(H),所以,这些特点可以按照特殊的用户需求进行调整。
很明显,聚焦于一个单一的内存块来分析把这个例子被简化了,而一个内存芯片可能有例如4096个内存块,一个内存模块可能有多个内存芯片,芯片通过组合使得LBA能够写入任何拥有空闲页的内存模块的芯片。所以,当一个写入操作,无论是需要修改为LBA而存储的数据,还是为了标记可能被擦掉或擦除内存块而在该内存块上标记出所有的死页的目的需要重新安置数据,被写入页或者重新安置页可以转移到任何选定的模块芯片的任何内存块的最低空闲页。选择在哪个内存块上进行写入操作(此写入可理解为包括数据修改写入和数据重置写入)可能是一项系统策略的主题。例如,连续的写入通过组织再分配给芯片,以限制某个芯片进行繁忙的写入的时间。在原始的模式下应用一个模块,这也许意味着最大的读入操作阻碍将是写入时间间隔。擦除操作可能会遇到同样的情况,或者利用前述的RAID结构被隐藏起来。
对每一个写入页目的的选择,是按根据各种各样的系统策略来制定的。系统策略可能也包括LBA预测程序的使用,该使用行为可能被内存控制器所了解,从而使得页面群能够根据需要写入相邻的区域或者分散。高读写率使得写入操作能够通过网络内存进行分配。目前,相比于例如DRAM,闪存相对较慢的读写使得复杂的内存管理策略具有可行性。因为相对于目前的NAND闪存程序执行时间,计算开销已经很小了。当分配一个写入操作到某个内存块,可能要考虑每个内存块的擦除数和每个芯片,使无用存储单元收集程序也可以促进损耗均衡程序。
低写入放大衡量任何相关实际写入操作的数量。(包括在无用存储单元收集操作中的数据重置写入,但明确不包括损耗均衡数据的重置操作)。这样,当因子A为1或者随着每个用户页要求的实际写入数量增加而减少的情况下,用户在写入随机页数据时的体验会更好。因此,当最高的连续随机写入速度估算出来的时候,该速度约与因子A的倒数成正比。
附图5可以看到在一块芯片的内存块上进行内存的操作过程。这里,0内存块通过N进行结合,从而有足够页面来容纳LBA的所有的页,该LBA只是分配给用户的内存系统的一部分。当系统被初始化,内存上没有存储数据(状态1)时,所有的内存块都空闲了,而且还会出现一个额外的空闲内存块池。其中三个池块作为代表呈现出来。
当数据被写入内存,括已经写进内存的经过修改的数据,通过LBAs(状态2)可以看到,当数页的数据写入之后,一些内存块开始变得活跃。内存块上每一个空闲页的状态都是通过调整校正的。他们将从空闲状态慢慢改变。当数据被修改和转移到一个新地址,原来的物理地址将作废,所以任何有价值的LBA数据只能与内存中唯一一个物理页对应。
随着系统操作的进行,一些内存块被存活的和作废的两种页面填满,这是图5(状态3)中特指的M。这表面,实际的数据,连同一些数据修改操作,已经被写入到所有实质的LBAs当中。无用存储单元收集器可能在内部执行成特殊的内存块,从而使存活的数据页比例降低。当一个内存块里没有存活页的时候,该内存块可能被X标记。标记表面该内存块可能被擦除,或者到空闲块池中补充空闲内存块。反过来,如果没有内存块被X标记,且需要空闲页空间,一个或多个标记为M的内存块可能通过把存活页移动到另一个内存块而别消除,从而该内存块被擦除,而一个新的空闲内存块诞生。选择在哪块部分作废的内存块上进行操作也许是一个策略,该策略可能需要考虑比如作废的页面百分比、先前内存块的擦除数、该数据类型或其它类似的(状态4)。当一个块已经被收回(擦除),它可以被加到块池,以保持块池在的最小尺寸以上。块的编号和位置只是概念上的,可视为逻辑符号,这样,芯片上的任何内存块可以在用户数据区,也可以在空闲块池。
空闲块池中内存块的数量是一种设计选择,取决于一个模块配置内存的数量,该数量与用户需要的数量保持平衡。
由于一个写入操作可以对任何有一个空闲页面的内存块进行,一个模块可以有多个芯片,读写之间的干涉可以通过在全部可用块之间分配数据页面,利用空间和时间位置的原则来缓解。在NAND闪存中,可以对内存位置大于目前的指示字值的存储单元进行写入操作,从而避免没有写入的存储单元覆盖有效数据。指针随着每个写入操作增加,从而指示当前空闲存储单元,即最低内存块。
图8中另外的一个例子显示,存储系统可能由一个通过一个公交系统连接的模块组成的。公交模式连接内存模块群在US 11/405,083一系列的存储器模块被认为在美国11/405,083,2006年4月17号发行的《互连系统》有描述,以供参考。一个模块,也许是图1中的模块可能有易失性存储器20和非易失性存储器30,也可能有一个总线接口或本地存储器控制器10。
通过使用RAID数据存储技术,内存系统对防止数据损失可能有额外的保护,这在US 12/079,737,2008年3月26发行的《内存管理系统和方法》中有描述,以供参考。
在一个实施例中,包括描述的存储系统和多个存储器模块,每个模块可能有能力读写数据。M字节的数据被存储在一个多个存储模块的模块N上。一个错误更正码M字节的数据可能储存在多个存储模块的模块N上或其他模块上,或者分布在模块之间。当存储的数据是直接从任何N-l模块的存储模块找回的,包括数据的误差修正,M字节的数据储存在群N的存储器模块可以被恢复。
在一个特定的RAID概念里面,数据可能存储在不同的存储模块或存储环路中,以实现RAID5组织数据模块和4个数据模块、1个同等模块。每个LBA可能分开成一群四个小范围LBA(例如,扇区)和储存在四个不同的存储模块。每个LBA模块的同等价值计算和存储在第五个存储器模块上。当一个内存模块失败的时候,这样的存储数据组织可以进行恢复。
然而,随着数据的披露,存储系统可配置操作在RAID组中只有4到5模块组需要报道为响应阅读请求而进行的阅读数据。如果有需要,后期的数据模块可能利用已经报道的模块数据进行恢复。后期模块可以进行擦除和写入操作。特别需要指出的是,在RAID组中的模块中,在某一特定时期,只有一个模块能够执行一个擦除操作。所以,五大模块中的四个将可能进行迅速的阅读操作,第五个模块中的数据只是数据,而非相同信息。此时,从非擦除状态的模块中的一个迅速返回的相同信息(parity information)被用来重建数据。可选择地,前述的四个模块可返回数据,而非相同信息。在这种情况下,相同的数据不需要恢复数据。
根据不同的系统配置和运用的经营策略,延迟量比擦除操作小的写入操作,可能允许一个模块同时进行阅读操作,也许只限于擦除操作,或由动态数据的读、写负载和所需的系统性能特点管理。物理或逻辑部分存储系统可能会因操作策略的不同而不同。
图5显示了对一个二维的阵列的数据的管理。当操作RAID-5系统的时候,AI-Ap五个存储器模块中只有一个允许在任何时候处于写入模式状态,其余四个存储器模块为结合写入和擦除负荷,为了这个配置的20%或更少,及时返回数据以便使读入操作不受损害。这种情况与没有这一系列的写入和擦除操作约束的系统形成鲜明对比,后者在写入负荷很低的时候,读、写操作之间就开始产生干扰。这种干涉通常是观察延迟时间上涨回应特定的读入请求。同样页所代表的数据页的数量可按设计进行选择。
为了避免不必要的重复的单词写入和擦除,接下来讨论将会使用擦除单词来形容擦除内存块的操作。在擦除阶段,写入操作可能是在擦除操作没有执行的情况下进行。写入操作待定,在操作策略允许的情况下,写入操作也可以在阅读操作期间进行。因为写入操作比擦除操作能在更短的时间内完成,对于现有的闪存电路,写入操作是可以在单一的擦除操作执行时间段内进行。反过来说,如果没有预设擦除操作,或在擦除操作完成前待定的擦除和写入操作都在进行,存储管理策略可能会把模块设回到阅读状态,或者让一个进入阅读状态,另一个不能过早的进入擦除状态。
图5中的内存数据用条纹来表示,初始条纹410包括内存模块310(或,例如,芯片)AO,BO CO,DO和PO,分别由柱A、B、C、D、P表示。剩下的该系统的条纹2-9是类似的,从而形成一个拥有50个模块的存储系统。
模块和地址的物理和逻辑安排可以是任何内存和数据存储的表达方式的安排;也就是说,小于所有的模块即时回流数据,但是这个系统内存的回流数据会阻止那些延迟数据的恢复,优先接受延迟或者缺失数据。
解释的目的,内存模块的时间回路被认为是其他内存回路的同时初始化,标记时间间隔少于1毫秒,同时相应足够的时间来完成擦除操作。多擦除操作或者写操作的更长时间被允许在此处。
擦除操作是以连续的时间间隔在一块中进行的。图六显示了内存模块的514栏使得写入操作成连续时间间隔的t1,t2......t10,同时在模块10中也是如此重复。在图6B之中,显示了条纹0的时间历史被看做是一个独立的内存模块,使得写操作可以在任何时候进行。这就满足了5个内存模块中的4个条块可以被读操作使用在任何时候。这就导致了一个读延迟的独立延迟而不受写载入的影响,直到系统遇到了大量的写载入:例如时间轴上20%的量。
时间段的分配会以擦除操作的以下方式完成:例如,按照国际时间标准来分配时间段,这样就可以通过全球的控制器的传送消息来判定当前时间,通过模块之间的符号传递,通过命令公交或者模块之间的写入,等等方式来进行。一个结合的方法可以这样使用:例如,在一个系统中,当所需的编程数据大于使用单个RAID组模块同时进行的时候,并且如果同时有多组RAID数据,那么RAID组的一块、一些块或者所有块就会开始擦除操作,当RAID组的其他块正在进行擦除操作的时候,如图5所示。在这样的一个系统,例如,这个模块被当做是消除模块还是程序模块,是由时间段固定分配的,而同时整排或者RAID组的判定会开始一个擦除操作是由RAID组提示下一组RAID能够开始所决定的,这是一种符号传递的形式,这时这个模块可以决定所有的RAID组的模块通过使用一个第二符号传递计划来完成他们的擦除操作,或者一个“推到”写入直到所有的模块完成才结束,亦或者通过一个其他的模块使用的指令车来显示他们完成了,或者一个相似的方法或者参数。
长期记忆模块使用的地方,例如这个模块就可能是一个可插拔的大量记忆电路板,或者这个记忆模块就是其中一个或者一组在记忆卡上,或者就是大规模存储硬盘(SSD),SSDs呈现多种形式因子,从个体卡到可以实现型号和形状的机械硬盘驱动包。逻辑地址范围的规模大小与一个记忆模块或者存储地址不是由此处描述的所限的,一个记忆模块包含了更大或者更小的数据存储设备或者数据结构。
当闪存被用于记忆模块,并且该记忆模块被指定于一个特殊的RAID块的时候,通常一些模块是可读状态,而同时一些是可消除状态。那些在特定时间里的模块呈现的特定状态通过读和消除状态来测序,同时保持这样的性质就是从读取状态下的模块回流的数据能够被重新组合。再一次需要强调的是实际内存的分配并不能达到描述的那样,因为数据恢复性质决定了。
在一个大的记忆系统里,不是所有的RAID组都有相同的数据读取和消除载入。一些定位相对于其他来讲更为重要,这取决于内存系统支撑的载入和读取的处理能力。有时,所有需要的擦除操作都已经完成的时候,记忆块却在计划一个写入状态。这里,写入状态包括了擦除操作;然而,消除和写入状态都是分别计划的。当没有消除和没有写入操作等待的时间里,闪存总线是高效的闲置的。同样的本地计算资源和从头内存也是轻易的被载入。
内存模块或电路在写入和擦除状态时,是进行本地操作的最佳时机,比如内务操作,包括无用存储单元收集器和平均抹写储存区块,特别是当擦除操作用于修复内存块时。这些操作更多地在闪存的储库上进行,且可能不会扩展到芯片边界,尽管这种跨度没有排除。在任何情况下,当一个模块的芯片没有参与擦除操作,读写操作也可能处于内务目而进行(平均抹写储存区块、无用存储单元收集器以及其相似情况),且这些操作的时间间隔不会影响RAID阵列的反应时间,因为这些操作是在内存模块不承认数据有效性的情况下进行的。且从用户的角度看,内存模块也处于擦除状态。
通过在擦除阶段对无用存储收集器进行待定擦除操作,擦除荷载被包括在RAID组的擦除间隙里。此外,任何目的的读入操作,从前述的擦除阶段起,可能已经进行和存储在非易失性数据存储系统中。这些数据可能被迅速地写入新的地址,或者可能延迟到在另一个非预定擦除操作的芯片包上进行。因此,多数待定的写入操作,相关的无论是用户数据存储,还是前述的内务数据重置都可能进行操作,所以,包括在擦除阶段相关联的、通过RAID重组隐藏给用户的写入操作都是按前面所描述的继续进行。
当一个针对无用存储单元收集器的特定的模式在这个应用程序中被详细描述,各种各样的无用存储单元收集器算法可能被使用,因为所有这些算法需要擦除至少一个数据块的位置,然后回收用于数据的写入。被擦除内存块的大小取决于使用的闪存的特定类型。
因为模块上的读写操作可以充分利用模块上闪存电路的读写带宽,并且在擦除阶段进行。这可能允许将近20%的时间线用于该例中的内务操作,且不会对用户系统性能产生显著的影响,因为擦除、读、写操作在存储系统水平是没有被用户觉察到的。
任何情况下,在擦除间隔期间,对待定的无用存储单元收集器进行操作至少减少了内务操作的数量。内务操作在用户访问RAID组的数据时仍然可以进行。在高系统短暂荷载时,内务操作可能全部或部分暂时停止,隐藏的内务操作可能被安排在用户活动的间隙中进行。
被安排的擦除阶段中,内务擦除操作的调度包括,或隐含在调度阶段的擦除操作,调度阶段,用户可能不需要立即家政擦除操作中有效地消除时代将包含或隐藏,抹去行动,在预定的时代那些用户可能不需要立即访问存储RAID组数据的特殊芯片或模块。因此一个存储系统可能被配置成包括该阶段的内务处理操作,该阶段中,用户不需要立即访问特殊存储电路中的数据,从而不需要为了高数据读写率而进行持久的操作。
因此,预期前述的详细描述可以看作是说明性的,而不是限制性的,并且它可以被理解为下列权利要求,包括所有的定义该发明的精神和范围的等同设备。

Claims (35)

1.一种非易失性数据存储系统,包括:
存储模块,该存储模块具有多个非易失性存储电路(NVS),所述每个存储电路被配置有第一存储区域和第二存储区域,所述每个第一和第二存储区域均具有多个数据存储单元,
其中,所述多个存储电路中的一个被进一步配置使得所述存储电路的多个存储单元中的一个具有活性的、死的或空闲的这三种状态中的一种,且先于所述第一存储区域的所有存储单元成为活性的或者死的状态前,所述存储器模块的一个处理器被配置为能将数据从所述存储电路的第一存储区域内的至少一个活性存储单元转移到不在所述第一存储区域中的一个空闲存储单元。
2.如权利要求1所述的数据存储系统,其特征在于所述第一和第二存储区域包括所述存储电路的一个存储块,当所述存储块中所有存储单元均不处于空闲状态时,所述处理器被配置为将在活性存储单元中的数据转移到另一存储块。
3.如权利要求1所述的数据存储系统,其特征在于:当一个存储块内的所有存储区域均不处于活性状态时,所述存储块将被擦除。
4.如权利要求3所述的数据存储系统,其特征在于:多个存储块被配置作为一个RAID条带,其中一个擦除操作在一个读请求发出时被预定而使得存储在RAID条带内的数据在一个正在进行的擦除操作完成前是可恢复的。
5.一种数据存储系统,包括:
存储模块,该存储模块具有多个非易失性存储电路(NVS),所述每个存储电路被配置有第一存储区域和第二存储区域,所述每个第一和第二存储区域均具有数据存储单元,其中所述每个存储单元均为一次性可写入的,除非后来被擦除,
其中,所述存储模块被进一步配置使得每个存储单元具有活性的、死的或空闲的这三种状态中的一种,当所述多个存储电路中的一个存储电路的所述第一存储区域的所有存储单元均为活性的或者死的状态时,存储在所述第一存储区域的活性存储单元内的数据被更改,所述存储模块被配置为可将所述存储模块的至少一个其他活性存储单元内的数据移动到不在所述第一存储区域中的一个空闲存储单元。
6.如权利要求5所述的系统,其特征在于:所述第一和第二存储区域的所述存储单元为逻辑存储单元。
7.如权利要求5所述的系统,其特征在于:当小于所述第二存储区域的一个预定的百分比为活性或死的存储单元中的一个时,来自所述第一存储区域的至少一个其他活性存储单元的数据被转移至所述第二存储区域内的空闲存储单元或者另一个非易失性存储电路的一个空闲存储单元中。
8.如权利要求5所述的系统,其特征在于:当大于所述第二存储区域的一个预定的百分比为活性或死的存储单元中的一个时,来自所述第一存储区域的至少二个其他活性存储单元的数据被转移至所述第二存储区域内的空闲存储单元或者另一个非易失性存储电路的一个空闲存储单元中。
9.如权利要求5所述的系统,其特征在于:当所述第二存储区域的一个活性存储单元内的数据被更改,所述存储器模块被配置为可将数据从所述第一存储区域内的至少一个其他活性存储单元转移到不在所述第一存储区域中的一个空闲存储单元。
10.如权利要求5所述的系统,其特征在于:所述存储单元包括第一存储单元和第二存储单元,所述第一存储单元的数据更改是通过将更改的数据写入所述第二存储单元而实现的,其中所述第二存储单元为一个空闲存储单元。
11.如权利要求10所述的系统,其特征在于:所述每个第一和第二存储单元中是多个存储单元,所述多个第一存储单元的、具有已经被写入所述第二存储单元的数据的一个存储单元具有死状态,所述多个第一存储单元的、具有未被写入所述第二存储单元的数据的一个存储单元具有活性状态,活性存储单元的数据可写入到多个非易失性存储电路中的任何一个中的空闲的第一或第二存储单元。
12.如权利要求5所述的系统,其特征在于:所述第二存储区域的存储单元的数目是所述第一及第二存储区域的存储单元总数的大约20%。
13.如权利要求5所述的系统,其特征在于:所述第一及第二存储区域包括所述非易失性存储电路的一个块,所述块是最小可擦除的存储区域,所述块的每个存储单元在所述块被擦除后具有空闲状态。
14.如权利要求13所述的系统,其特征在于:所述非易失性存储电路包括多个存储块。
15.如权利要求5所述的系统,其特征在于:所述非易失性存储电路包括闪存电路。
16.如权利要求15所述的系统,其特征在于:所述闪存电路为单层单元闪存技术或多层单元闪存技术。
17.一种在闪存系统中处理数据的方法,该方法包括:
将闪存电路的一个闪存块分配给一个第一存储区域和第二存储区域,每个存储区域均具有用于存储数据的多个页;
将数据写入一个块的所述第一存储区域的一页中;
通过将更改的数据写入所述块的一个空闲页或另一个具有空闲页的块中;及
当所述第一存储区域的多页均为活性或死的状态时:将至少一个其他的活页的数据从所述第一存储区域移动到不在所述第一存储区域内的一个空闲页。
18.如权利要求17所述的方法,其特征在于:每个页具有活性的、死的或空闲的这三种状态中的一种状态,所述数据可写入空闲页。
19.如权利要求18所述的方法,其特征在于进一步包括指定一个具有数据的页为活页。
20.如权利要求19所述的方法,其特征在于进一步包括指定一个具有已被读取和更改的,或者被转移的数据的活页为死页,其中所述更改是通过将更改的数据写入另一页。
21.如权利要求17所述的方法,其特征在于进一步包括在擦除一个存储块后,指定所有有效页为空闲页。
22.如权利要求17所述的方法,其特征在于当预定百分比的所述第二存储区的多个页为活性或死状态时:将至少两个其他活页的数据从所述第一存储区域移至一个不在所述第一存储区域的空闲页。
23.如权利要求17所述的方法,其特征在于进一步包括:
确定没有空闲页保留在所述第二存储区域内;及
根据一个政策,将在所述第一或第二存储区域内的至少一个活页的数据转移到不在所述第一或第二存储区域内一个空闲页中直到所述块的所有页的数据为死状态。
24.如权利要求20所述的方法,其特征在于进一步包括标记具有全部死页的块使其可进行擦除操作。
25.如权利要求24所述的方法,其特征在于进一步包括根据政策擦除一个被标记的块。
26.如权利要求25所述的方法,其特征在于所述政策是多个被标记的块中的、具有先前擦除的最低号码的被标记的一个块是将被擦除的被标记的块。
27.一种在闪存系统中处理数据的方法,其特征在于:使与闪存电路相联系的处理器执行下述方法:
将闪存电路的一个块的空闲页分配给第一存储区域和第二存储区域;
将数据写入所述第一存储区域的一个空闲页并将该页指定为活页;
将该活页的数据移动到不在所述第一存储区域内的空闲页,并将该活页指定为死页;
确定是否所述第一存储区域的所有页都被指定为活页或者死页;及
对于每个被指定为死页的附加页:将至少一个其他活页的数据从第一存储区域移动到不在第一存储区域内的一个空闲页。
28.如权利要求27所述的在闪存系统中处理数据的方法,其特征在于进一步包括:擦除所述块的页并将被擦除的页指定为空闲页。
29.如权利要求28所述的在闪存系统中处理数据的方法,其特征在于所述不在第一存储区域内的空闲页是第二存储区域内的一个空闲页,或是所述闪存电路的多个块中的第二块的一个空闲页。
30.如权利要求28所述的在闪存系统中处理数据的方法,其特征在于:根据政策,当所述块中没有空闲页时,在所述第一存储区域和第二存储区域的活页的数据被转移到所述第二块。
31.如权利要求30所述的在闪存系统中处理数据的方法,其特征在于:当所述块的页均不是活性或空闲页时,所述块被标记用于擦除操作。
32.如权利要求31所述的在闪存系统中处理数据的方法,其特征在于:根据政策,处于可进行擦除操作状态的块被擦除。
33.如权利要求32所述的在闪存系统中处理数据的方法,其特征在于:所述政策是擦除具有先前擦除的最低号码的块。
34.如权利要求32所述的在闪存系统中处理数据的方法,其特征在于:一个具有与拥有最低页码的所述块的一个空闲页的值相等的值的指针被保持,且通过对应所述指针的值将数据写入空闲页进行写或转移的步骤。
35.一种在闪存系统中处理数据的方法,包括:
在多个非易失性存储电路中,其中一个数据块被储存使得所述数据块被分配给所述存储电路的多个存储区域;且一个同样的数据块被分配给另外的多个存储区域,
其中用于存储区域的无用单元回收方法中的擦除操作被预定而使得所述数据块可从所述存储系统中通过下述方式中的一种被恢复:读取同样数据块和小于全部多个用于存储所述数据块的存储区域或者从多个存储区域读取所述数据块。
CN201080026058.3A 2009-06-12 2010-06-09 具有持久化无用单元收集机制的存储系统 Expired - Fee Related CN102576330B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US18662609P 2009-06-12 2009-06-12
US61/186,626 2009-06-12
PCT/US2010/037987 WO2010144587A2 (en) 2009-06-12 2010-06-09 Memory system having persistent garbage collection

Publications (2)

Publication Number Publication Date
CN102576330A CN102576330A (zh) 2012-07-11
CN102576330B true CN102576330B (zh) 2015-01-28

Family

ID=43309458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080026058.3A Expired - Fee Related CN102576330B (zh) 2009-06-12 2010-06-09 具有持久化无用单元收集机制的存储系统

Country Status (5)

Country Link
US (3) US20100325351A1 (zh)
EP (1) EP2441004B8 (zh)
KR (1) KR101324688B1 (zh)
CN (1) CN102576330B (zh)
WO (1) WO2010144587A2 (zh)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US8291131B2 (en) * 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
KR101662824B1 (ko) * 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US9063728B2 (en) * 2010-03-17 2015-06-23 Apple Inc. Systems and methods for handling hibernation data
CN102262591B (zh) * 2010-05-31 2014-03-19 国际商业机器公司 用于内存复制系统进行垃圾回收的方法和系统
KR20120028581A (ko) * 2010-09-15 2012-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US20120303878A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9335939B2 (en) 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US8949508B2 (en) 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
CN102929884B (zh) 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
WO2013023564A1 (en) * 2011-08-12 2013-02-21 Huawei Technologies Co., Ltd. Method and apparatus for flexible raid in ssd
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
KR101335343B1 (ko) 2011-10-14 2013-12-02 성균관대학교산학협력단 메모리 관리 장치 및 방법
US8539007B2 (en) 2011-10-17 2013-09-17 International Business Machines Corporation Efficient garbage collection in a compressed journal file
US20130117525A1 (en) * 2011-11-04 2013-05-09 Lsi Corporation Method for implementing pre-emptive read reconstruction
KR101867282B1 (ko) * 2011-11-07 2018-06-18 삼성전자주식회사 비휘발성 메모리 장치의 가비지 컬렉션 방법
US9348741B1 (en) * 2011-12-19 2016-05-24 Western Digital Technologies, Inc. Systems and methods for handling write data access requests in data storage devices
KR20130078973A (ko) * 2012-01-02 2013-07-10 삼성전자주식회사 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
WO2013140435A1 (en) * 2012-03-19 2013-09-26 Hitachi, Ltd. Data storage system comprising non-volatile semiconductor storage device, and storage control method
JP5853899B2 (ja) 2012-03-23 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US8874829B2 (en) * 2012-03-30 2014-10-28 Hitachi, Ltd. Storage system and storage system control method
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9443591B2 (en) 2013-01-23 2016-09-13 Seagate Technology Llc Storage device out-of-space handling
US9558112B1 (en) 2012-05-08 2017-01-31 Google Inc. Data management in a data storage device
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9003135B2 (en) 2013-01-15 2015-04-07 International Business Machines Corporation Efficient allocation and reclamation of thin-provisioned storage
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
CN104102456B (zh) * 2013-04-15 2017-08-25 旺宏电子股份有限公司 存储器装置机器操作方法
US9372880B2 (en) * 2013-04-29 2016-06-21 International Business Machines Corporation Reclamation of empty pages in database tables
KR102072829B1 (ko) 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
US9280463B2 (en) 2013-07-25 2016-03-08 Globalfoundries Inc. Semiconductor memory garbage collection
US20150101026A1 (en) * 2013-10-03 2015-04-09 Yoram KRAUS Device, system, and method of social networking
TWI515737B (zh) * 2013-12-09 2016-01-01 慧榮科技股份有限公司 資料儲存裝置以及其資料抹除方法
TWI501244B (zh) * 2013-12-26 2015-09-21 Phison Electronics Corp 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9564212B2 (en) 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9823863B1 (en) * 2014-06-30 2017-11-21 Sk Hynix Memory Solutions Inc. Sub-blocks and meta pages for mapping table rebuild
KR20160024550A (ko) * 2014-08-26 2016-03-07 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
WO2016032486A1 (en) * 2014-08-28 2016-03-03 Hewlett-Packard Development Company, L.P. Moving data chunks
US9600409B2 (en) * 2014-08-29 2017-03-21 EMC IP Holding Company LLC Method and system for garbage collection in a storage system based on longevity of stored data
US9542286B2 (en) * 2014-09-30 2017-01-10 Sandisk Technologies Llc Failure logging mechanism to reduce garbage collection time in partially reused bad blocks
US10127157B2 (en) * 2014-10-06 2018-11-13 SK Hynix Inc. Sizing a cache while taking into account a total bytes written requirement
TWI537816B (zh) * 2014-10-13 2016-06-11 慧榮科技股份有限公司 非揮發性儲存裝置與控制器進行的控制方法
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9400603B2 (en) 2014-12-16 2016-07-26 International Business Machines Corporation Implementing enhanced performance flash memory devices
CN105808151B (zh) * 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
KR102449192B1 (ko) 2015-09-10 2022-09-29 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
RU2015139057A (ru) * 2015-09-14 2017-03-17 ИЭмСи КОРПОРЕЙШН Способ и система распределенного хранения данных
KR102501751B1 (ko) 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
CN105278876B (zh) * 2015-09-23 2018-12-14 华为技术有限公司 一种固态硬盘的数据擦除方法及装置
WO2017123225A1 (en) * 2016-01-14 2017-07-20 Hewlett-Packard Development Company, L.P. Management with respect to a basic input/output system policy
US20170220623A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Hot-Spot Adaptive Garbage Collection
CN107665090B (zh) * 2016-07-27 2021-09-03 北京忆恒创源科技有限公司 实现全局磨损均衡的方法
CN108733575B (zh) * 2017-04-20 2022-12-27 深圳市得一微电子有限责任公司 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘
KR102447602B1 (ko) * 2017-10-25 2022-09-26 삼성전자주식회사 메모리 장치 및 그 동적 가비지 컬렉션 방법
KR102446716B1 (ko) * 2017-11-10 2022-09-26 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US11437120B2 (en) 2017-10-31 2022-09-06 SK Hynix Inc. Memory system for activating redundancy memory cell and operating method thereof
KR102373315B1 (ko) 2017-10-31 2022-03-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10528273B2 (en) 2017-11-07 2020-01-07 Nxp Usa, Inc. Dynamic compression in an electrically erasable programmble read only memory (EEPROM) emulation system
TWI643065B (zh) * 2017-12-20 2018-12-01 慧榮科技股份有限公司 用於動態執行記憶體回收資料儲存裝置與操作方法
CN108280029B (zh) * 2018-02-28 2022-03-22 郑州云海信息技术有限公司 一种基于NorFlash芯片的数据擦写方法及系统
KR102620255B1 (ko) * 2018-05-18 2024-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10785024B2 (en) 2018-06-20 2020-09-22 International Business Machines Corporation Encryption key structure within block based memory
US10783022B2 (en) 2018-08-03 2020-09-22 EMC IP Holding Company LLC Immediate replication for dedicated data blocks
KR20200027858A (ko) 2018-09-05 2020-03-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof
KR20200085513A (ko) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20200085510A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법과, 이를 위한 컨트롤러
CN110764704B (zh) * 2019-10-18 2023-09-05 浙江大华技术股份有限公司 一种环境变量写入方法、存储介质及电子装置
CN111240598B (zh) * 2020-01-15 2021-07-13 西安交通大学 一种基于软硬件结合方式的大容量快速NandFlash存储实现方法
CN112631523B (zh) * 2020-12-29 2022-08-30 杭州电子科技大学 用于固态硬盘垃圾回收受害块的选择方法
US11580018B2 (en) 2021-04-25 2023-02-14 Silicon Motion, Inc. Method and apparatus for page validity management and related storage system
US11733893B2 (en) 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
CN116661696B (zh) * 2023-06-05 2024-03-22 深圳市航顺芯片技术研发有限公司 一种基于快闪存储器的存储方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1551244A (zh) * 2003-04-03 2004-12-01 ���ǵ�����ʽ���� 用于页复制操作的可纠错的非易失性存储器及其方法
CN1625781A (zh) * 2002-04-05 2005-06-08 株式会社瑞萨科技 非易失性存储装置

Family Cites Families (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363094A (en) * 1977-12-29 1982-12-07 M/A-COM DDC, Inc. Communications processor
US4843288A (en) * 1988-03-28 1989-06-27 Rigidyne Corporation Phase locked motor control system for multiple disk drive units
US5128810A (en) * 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
DE69119076T2 (de) * 1991-12-05 1996-11-21 Ibm Plattenlaufwerksynchronisierung
EP0547769B1 (en) * 1991-12-18 1999-10-13 Sun Microsystems, Inc. Write overlap with overwrite prevention
JP3412839B2 (ja) * 1992-07-01 2003-06-03 株式会社東芝 不揮発性半導体メモリ装置
JP3862274B2 (ja) * 1993-06-03 2006-12-27 ネットワーク・アプライアンス・インコーポレイテッド Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6151289A (en) * 1996-01-22 2000-11-21 T. Squared G, Inc. Multibyte random access mass storage/memory system
JPH09265357A (ja) 1996-03-27 1997-10-07 Ekushingu:Kk ディスクアレイ装置
US6018778A (en) * 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
JP3976839B2 (ja) * 1996-07-09 2007-09-19 株式会社ルネサステクノロジ 不揮発性メモリシステムおよび不揮発性半導体メモリ
US5771346A (en) * 1996-10-24 1998-06-23 Micron Quantum Devices, Inc. Apparatus and method for detecting over-programming condition in multistate memory device
US5974503A (en) * 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US6226708B1 (en) * 1997-08-18 2001-05-01 Texas Instruments Incorporated Method and system for efficiently programming non-volatile memory
US6009547A (en) * 1997-12-03 1999-12-28 International Business Machines Corporation ECC in memory arrays having subsequent insertion of content
US6353895B1 (en) * 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
AU1729100A (en) * 1998-11-17 2000-06-05 Lexar Media, Inc. Method and apparatus for memory control circuit
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6205571B1 (en) * 1998-12-29 2001-03-20 International Business Machines Corporation X-Y grid tree tuning method
US6321345B1 (en) * 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
US6591338B1 (en) * 1999-05-03 2003-07-08 3Ware, Inc. Methods and systems for mirrored disk arrays
US6745363B2 (en) * 1999-07-30 2004-06-01 Hewlett-Packard Development Company, Lp Early error detection using ECC
US6425052B1 (en) * 1999-10-28 2002-07-23 Sun Microsystems, Inc. Load balancing configuration for storage arrays employing mirroring and striping
JP3573032B2 (ja) * 1999-11-09 2004-10-06 日本電気株式会社 ディスクアレイ装置
US6581185B1 (en) * 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
US8281022B1 (en) * 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
GB0022131D0 (en) * 2000-09-09 2000-10-25 Ibm Data sorting in information storage systems
GB0025226D0 (en) * 2000-10-14 2000-11-29 Ibm Data storage system and method of storing data
EP1204027A2 (en) * 2000-11-02 2002-05-08 Matsushita Electric Industrial Co., Ltd. On-line reconstruction processing method and on-line reconstruction processing apparatus
US6813688B2 (en) * 2000-12-04 2004-11-02 Sun Microsystems, Inc. System and method for efficient data mirroring in a pair of storage devices
US6973484B1 (en) * 2000-12-29 2005-12-06 3Pardata, Inc. Method of communicating data in an interconnect system
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
JP2003030993A (ja) * 2001-07-17 2003-01-31 Toshiba Corp 半導体記憶装置
JP2003076498A (ja) * 2001-09-05 2003-03-14 Hitachi Ltd ディスク記憶装置
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6760807B2 (en) * 2001-11-14 2004-07-06 International Business Machines Corporation System, apparatus and method providing adaptive write policy for disk array controllers
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US20030208511A1 (en) * 2002-05-02 2003-11-06 Earl Leroy D. Database replication system
US6789165B2 (en) * 2002-05-10 2004-09-07 International Business Machines Corporation Data storage array method and system
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US7734867B1 (en) * 2002-05-17 2010-06-08 Hewlett-Packard Development Company, L.P. Data storage using disk drives in accordance with a schedule of operations
US7191304B1 (en) * 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7143305B2 (en) * 2003-06-25 2006-11-28 International Business Machines Corporation Using redundant spares to reduce storage device array rebuild time
US7007115B2 (en) * 2003-07-18 2006-02-28 Intel Corporation Removing lane-to-lane skew
US7191283B2 (en) * 2003-08-21 2007-03-13 International Business Machines Corporation Grouping of storage media based on parameters associated with the storage media
JP4437650B2 (ja) * 2003-08-25 2010-03-24 株式会社日立製作所 ストレージシステム
US7149950B2 (en) * 2003-09-12 2006-12-12 Hewlett-Packard Development Company, L.P. Assisted memory device for reading and writing single and multiple units of data
US7310703B2 (en) 2003-10-23 2007-12-18 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
JP4493321B2 (ja) * 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
JP4486348B2 (ja) * 2003-11-26 2010-06-23 株式会社日立製作所 ドライブの稼働時間を抑止するディスクアレイ
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
KR100528484B1 (ko) 2004-01-06 2005-11-15 삼성전자주식회사 축소 가능한 2-트랜지스터 메모리 셀들을 구비한 불휘발성 반도체 메모리 장치
US7913148B2 (en) * 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US7203889B2 (en) * 2004-04-01 2007-04-10 Intel Corporation Error correction for memory
US7213103B2 (en) * 2004-04-22 2007-05-01 Apple Inc. Accessing data storage systems without waiting for read errors
US20050246362A1 (en) * 2004-05-03 2005-11-03 Borland Devin P System and method for dynamci log compression in a file system
US7093157B2 (en) * 2004-06-17 2006-08-15 International Business Machines Corporation Method and system for autonomic protection against data strip loss
CN100407166C (zh) * 2004-07-29 2008-07-30 普安科技股份有限公司 改善数据读取效率的方法及其储存系统
US7418560B2 (en) * 2004-09-23 2008-08-26 Sap Ag Centralized cache storage for runtime systems
WO2006081150A2 (en) * 2005-01-21 2006-08-03 Raza Microelectronics, Inc. System and method for performing concatenation of diversely routed channels
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
CA2597692A1 (en) * 2005-04-21 2006-11-02 Violin Memory, Inc. Interconnection system
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP2007072988A (ja) * 2005-09-09 2007-03-22 Hitachi Ltd ディスクアレイ装置及びデータ移動方法並びにプログラム
JP4745169B2 (ja) * 2005-09-16 2011-08-10 株式会社東芝 半導体記憶装置
US9047344B2 (en) * 2005-10-17 2015-06-02 International Business Machines Corporation Guaranteeing data and metadata referential integrity in content management archival solutions
US7783845B2 (en) * 2005-11-14 2010-08-24 Sandisk Corporation Structures for the management of erase operations in non-volatile memories
US20070162516A1 (en) * 2005-12-30 2007-07-12 Microsoft Corporation Computing asynchronous transaction log replication progress based on file change notifications
US7440331B2 (en) 2006-06-01 2008-10-21 Sandisk Corporation Verify operation for non-volatile storage using different voltages
US7555575B2 (en) * 2006-07-27 2009-06-30 Hitachi, Ltd. Method and apparatus for migrating data between storage volumes of different data pattern
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US20080052446A1 (en) * 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
US20080059869A1 (en) * 2006-09-01 2008-03-06 The Regents Of The University Of California Low cost, high performance error detection and correction
JP2008065430A (ja) * 2006-09-05 2008-03-21 Matsushita Electric Ind Co Ltd 半導体装置およびicカード
US7499317B2 (en) * 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US7840612B2 (en) * 2006-10-23 2010-11-23 Research In Motion Limited Methods and apparatus for concurrently executing a garbage collection process during execution of a primary application program
US7822921B2 (en) * 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US8296337B2 (en) * 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US7660911B2 (en) * 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
KR100882841B1 (ko) 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
US20080320366A1 (en) 2007-06-25 2008-12-25 Lin Jason T Methods of reading nonvolatile memory
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US7508715B2 (en) * 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US8024177B2 (en) * 2007-09-28 2011-09-20 Cycorp, Inc. Method of transforming natural language expression into formal language representation
US8095763B2 (en) * 2007-10-18 2012-01-10 Datadirect Networks, Inc. Method for reducing latency in a raid memory system while maintaining data integrity
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7688638B2 (en) * 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8533384B2 (en) * 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8214580B2 (en) * 2009-10-23 2012-07-03 International Business Machines Corporation Solid state drive with adjustable drive life and capacity

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1625781A (zh) * 2002-04-05 2005-06-08 株式会社瑞萨科技 非易失性存储装置
CN1551244A (zh) * 2003-04-03 2004-12-01 ���ǵ�����ʽ���� 用于页复制操作的可纠错的非易失性存储器及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2003-30993A 2003.01.31 *

Also Published As

Publication number Publication date
US10204042B2 (en) 2019-02-12
WO2010144587A2 (en) 2010-12-16
WO2010144587A3 (en) 2011-03-03
EP2441004B8 (en) 2020-02-19
US20190129842A1 (en) 2019-05-02
US20100325351A1 (en) 2010-12-23
EP2441004B1 (en) 2019-12-18
US20180373627A1 (en) 2018-12-27
EP2441004A2 (en) 2012-04-18
KR101324688B1 (ko) 2013-11-04
US10754769B2 (en) 2020-08-25
KR20120030137A (ko) 2012-03-27
EP2441004A4 (en) 2012-12-26
CN102576330A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
CN102576330B (zh) 具有持久化无用单元收集机制的存储系统
CN102449607B (zh) 具有多个闪存封装的存储系统
EP1693739B1 (en) Method of writing data to non-volatile memory
CN106708424B (zh) 对用户数据执行选择性底层暴露映射的设备和方法
CN102667739B (zh) 存储装置管理装置及用于管理存储装置的方法
JP6076506B2 (ja) ストレージ装置
CN102292711B (zh) 固态存储器格式化
US8966205B1 (en) System data management using garbage collection and hybrid self mapping
US10942849B2 (en) Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US20050021904A1 (en) Mass memory device based on a flash memory with multiple buffers
JP2019020788A (ja) メモリシステムおよび制御方法
KR20100011698A (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법
CN110674056B (zh) 一种垃圾回收方法及装置
JP2015529368A (ja) ストレージトランスレーションレイヤー
US8074128B2 (en) Block management and replacement method, flash memory storage system and controller using the same
US20230359380A1 (en) Memory system and method for controlling nonvolatile memory
US20170010810A1 (en) Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer
CN101609431B (zh) 闪存装置的运作方法及闪存装置
JP2009259145A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US11132140B1 (en) Processing map metadata updates to reduce client I/O variability and device time to ready (TTR)
TWI726381B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20240143171A1 (en) Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device
EP4303734A1 (en) Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device
CN117369715A (zh) 基于存储设备中的引用更新使用回收单元的系统、方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150128

Termination date: 20200609

CF01 Termination of patent right due to non-payment of annual fee