CN100524209C - 在非易失性存储器阵列中更新数据的方法 - Google Patents

在非易失性存储器阵列中更新数据的方法 Download PDF

Info

Publication number
CN100524209C
CN100524209C CNB2004800421908A CN200480042190A CN100524209C CN 100524209 C CN100524209 C CN 100524209C CN B2004800421908 A CNB2004800421908 A CN B2004800421908A CN 200480042190 A CN200480042190 A CN 200480042190A CN 100524209 C CN100524209 C CN 100524209C
Authority
CN
China
Prior art keywords
data
block
adaptability
logical
sector
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
CNB2004800421908A
Other languages
English (en)
Other versions
CN1922571A (zh
Inventor
艾伦·W·辛克莱
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.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Corp
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
Priority claimed from US10/749,189 external-priority patent/US7433993B2/en
Priority claimed from US10/841,118 external-priority patent/US20050144363A1/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN1922571A publication Critical patent/CN1922571A/zh
Application granted granted Critical
Publication of CN100524209C publication Critical patent/CN100524209C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

数据运行中的数据存储在非易失性存储器阵列中根据数据边界的位置而配置的适应性元区块中。使用一串行快闪缓冲器来存储某些数据,而将其他数据直接存储在非易失性存储器中。在更新数据期间,可将所述数据存储为与数据边界对准,以改善后续更新的效率。

Description

在非易失性存储器阵列中更新数据的方法
技术领域
本发明大体上涉及非易失性存储器系统的操作,且更具体地说,涉及此类存储器系统内数据的处理。
背景技术
如今存在许多商业上成功的非易失性存储器产品,尤其是以小型卡为形式,其采用一形成于一或多个集成电路芯片上的快闪EEPROM(电可擦除可编程只读存储器)单元阵列。一存储器控制器(其通常但不一定位于一单独集成电路芯片上)与一主机(所述卡以可移除方式连接到所述主机上)对接并控制所述卡内存储器阵列的操作。此类控制器通常包括一微处理器、某非易失性只读存储器(ROM)、一易失性随机存取存储器(RAM)以及一或多个专用电路,诸如在编程与读取数据期间当数据通过所述控制器时,从数据计算误差校正码(ECC)的专用电路。某些市售卡是CompactFlashTM(CF)卡、多媒体卡(MMC)、安全数字(SD)卡、智能媒体卡、人员标签(P-Tag)与存储卡。主机包括个人计算机、笔记本式计算机、个人数字助理(PDA)、各种数据通信装置、数字相机、蜂窝式电话、携带型音频播放器、汽车声音系统及相似类型的设备。除了存储卡实施之外,可替代地将此类型的存储器嵌入各种类型的主机系统中。
有两个一般存储器单元阵列结构已应用到商业中,即NOR与NAND。在典型的NOR阵列中,存储器单元被连接于邻近的位线源极与漏极扩散体之间,所述扩散体沿列方向延伸,并且控制栅极被连接到沿单元行延伸的字线。一存储器单元包括至少一存储元件,其位于所述源极与漏极之间的单元信道区域的至少一部分之上。存储元件上已编程的电荷电平因而控制所述单元的操作特征,于是可通过向已寻址的存储器单元施加适当电压而读取所述单元。此类单元的实例、其在存储器系统中的使用及其制造方法在美国专利第5,070,032、5,095,344、5,313,421、5,315,541、5,343,063、5,661,053和6,222,762号中给出,所述专利连同此申请案中引用的所有专利与专利申请案以引用的方式全文并入本文中。
NAND阵列利用两个以上存储器单元(例如16或32个)的串联串,其连同一或多个选择晶体管连接在个别位线与一参考电位之间,以形成单元列。字线横跨大量此等列内的单元而延伸。一列内的个别单元在编程期间通过使所述串内的其余单元硬开启而使得流过一串的电流取决于所述已寻址单元中所存储的电荷电平,而加以读取与验证。NAND结构阵列的实例及其作为存储器系统一部分的操作在美国专利第5,570,315、5,774,397、6,046,935和6,522,580号中说明。
目前快闪EEPROM阵列的电荷存储元件,如先前所引用的专利中所论述,是最常见的导电浮动栅极,其通常由导电掺杂多晶硅材料形成。可用于快闪EEPROM系统的替代类型的存储器单元利用一非导电介电材料来替代导电浮动栅极来以非易失性方式存储电荷。由氧化硅、氮化硅和氧化硅(ONO)所形成的三层电介质被夹在一导电控制栅极与所述存储器单元信道上一半导电衬底的表面之间。通过将电子从所述单元信道注入所述氮化物而编程单元,在所述氮化物中所述电子被捕获并存储于一受限区域中,并通过将热电洞注入所述氮化物而擦除单元。使用介电存储元件的若干特定单元结构与阵列在Harari等人的美国专利申请公开案第2003/0109093号中描述。
个别快闪EEPROM单元将一定量的电荷存储于一电荷存储元件或单元中,其表示一或多位的数据。一存储元件的电荷电平控制其存储器单元的临界电压(通常表示为VT),其被用作读取单元的存储状态的基础。一临界电压窗口通常被分成若干范围,所述存储器单元的两个或两个以上存储状态中的每一者对应一个范围。此等范围由保护带分开,所述保护带包括一允许确定个别单元的存储状态的标称感测电平。因电荷干扰在相邻或其他相关存储器单元、页或区块中所进行的编程、读取或擦除操作而使此等存储电平偏移。因此,误差校正码(ECC)通常由所述控制器来计算并与正被编程的主机数据一起存储,并且在读取期间被用于验证数据并视需要运行一定等级的数据校正。而且,偏移电荷电平在干扰操作使其完全偏移出其已定义的范围并因此引起读取错误数据之前,可不时地恢复到其状态范围的中心。此过程,称为数据更新或擦洗,在美国专利第5,532,962和5,909,449号中描述。
如同在大多数集成电路应用中一样,快闪EEPROM存储器单元阵列中也存在缩小用于实施某集成电路功能所需的硅衬底面积的压力。一直需要增加可存储于给定面积的硅衬底中的数字数据量,以便增加给定尺寸存储卡及其他类型封装的存储容量,或同时增加容量并降低尺寸。一种用于增加数据存储密度的方式是每存储器单元及/或每存储单元或元件存储一个以上位的数据。此通过将存储元件电荷电平电压范围的窗口分成两个以上状态来完成。使用四个此类状态允许每个单元存储两位数据,八个状态允许每个存储元件存储三位数据,等等。使用浮动栅极的多状态快闪EEPROM结构及其操作在美国专利第5,043,940与5,172,338号中描述,而使用介电浮动栅极的结构则在前述美国专利申请公开案第2003/0109093号中描述。多状态存储器单元阵列的选定部分还可因各种原因,以美国专利第5,930,167与6,456,528号中所述的方式,而在两种状态(二进制)中操作。
典型快闪EEPROM阵列的存储器单元被分成一起擦除的单元的离散区块。即,擦除块是擦除单位,即可同时擦除的最小数目的单元。每个擦除块通常存储一或多个数据页,所述页是编程与读取的最小单位,尽管一个以上的页可在不同子阵列或平面中并行地加以编程或读取。每个页通常存储一或多个数据扇区,扇区的大小是由主机系统定义的。一示范性扇区包括512字节的用户数据(遵循一针对磁盘驱动器建立的标准),再加上若干字节的关于用户数据及/或其所存储于其中的擦除块的额外开销信息。此类存储器通常被配置为在每个擦除块内具有16、32或更多页,并且每个页存储一或数个主机数据扇区。
为了增加在将用户数据编程到存储器阵列中以及从其读取用户数据期间的并行度,阵列通常被分成子阵列(常称为平面),其包含其自己的数据寄存器和其他电路,以允许并行操作,以便同时将多个数据扇区编程到若干或所有平面中的每一者中或从若干或所有平面中的每一者中同时读取多个数据扇区。单一集成电路上的一阵列可在物理上被分成多个平面,或每个平面可由单独的一或多个集成电路芯片形成。此类存储器实施的实例在美国专利第5,798,968与5,890,192号中描述。
在某些存储器系统中,还可将物理存储器单元分组成两个或两个以上区。一区可为物理存储器或存储器系统的任何分割子集,一特定范围的逻辑块地址被映射到所述子集中。例如,一能够存储64兆字节数据的存储器系统可被分成四个区,并且每个区存储16兆字节的数据。接着,逻辑块地址的范围还被分成四个组,向四个区中的每一者的擦除块指派一组。在一典型实施中,逻辑块地址会受到限制,以至每一区块地址的数据决不会被写到逻辑块地址所映射到其中的单一物理区的外部。在分成多个平面(子阵列)(每一平面具有其自己的寻址、编程和读取电路)的存储器单元阵列中,每个区优选包括来自多个平面的擦除块,通常与来自每一平面的擦除块数目相同。区主要用来简化诸如逻辑到物理转换的地址管理,从而得到较小的转换表格、保存此等表格所需的较少RAM存储器、以及用于寻址当前活动的存储器区域的较快存取时间,但因为其限制性质,可能导致次于最佳的损耗平衡。
为了进一步有效管理存储器,可将擦除块链接在一起以形成虚拟区块或元区块。即,将每一区块定义为包括来自每一平面的一擦除块。元区块的使用在美国专利第6,763,424号中描述。元区块由一主机逻辑块地址识别为用于编程与读取数据的目的地。类似地,一元区块的所有擦除块被一起擦除。以此类大区块及/或元区块操作的存储器系统中的控制器执行若干功能,包括从一主机接收的逻辑块地址(LBA)以及存储器单元阵列内的物理区块编号(PBN)之间的转换。所述区块内的个别页通常由区块地址内的偏移所识别。地址转换通常涉及使用逻辑块编号(LBN)与逻辑页的中间项。
存储在元区块中的数据经常得到更新,元区块中发生更新的可能性随着元区块的数据容量增加而增加。一元区块的已更新扇区通常被写到另一元区块中。作为相同编程操作的一部分,还通常将未改变的扇区从原始元区块复制到新的元区块,以合并数据。或者,未改变的数据可保留在原始元区块中,直到随后与已更新的数据再次合并为一单一元区块。
复制未改变的扇区可能会增加复制所需的时间并且增加存储器阵列中数据所占据的空间,因为执行擦除操作之后才能使用原始元区块。复制未改变的扇区是在逻辑上将主机文件分段为不同的元区块的结果。如果一元区块含有两个主机文件的部分,则更新所述文件中的一者还包括复制存储在相同元区块中的另一文件的部分。当元区块变大时,正复制的部分也变大。因此,随着元区块变大,逻辑分段变成一个较大问题。
通常将某些额外擦除块保持在一已擦除的区块集区中来操作大区块或元区块系统。当更新小于一擦除块容量的一或多页数据时,通常将已更新的页从所述集区写入一擦除块,并接着将未改变页的数据从原始擦除块复制到擦除集区区块。此项技术的变化在前述美国专利第6,763,424号中描述。随时间过去,由于重新写入并更新主机数据文件,许多擦除块最终会使其相对较少页含有有效数据,而其余页含有不再流动的数据。为了能够有效使用阵列的数据存储容量,有效数据的逻辑相关数据页不时地从多个擦除块的片段搜集在一起,并一起合并成较少数目的擦除块。此过程通常称为“无用单元收集”。
发明内容
数据可存储在一存储器阵列的适应性元区块中。适应性元区块的大小可针对欲存储的数据而进行订制。可基于数据的性质(控制数据、来自主机的数据)、或可基于数据内的边界(诸如文件之间的边界),来确定适应性元区块大小。根据数据来配置适应性元区块减小了逻辑分段的影响。
所含数据等同于一存储器阵列的一擦除块中的数据的逻辑组由逻辑上连续的扇区形成。适应性逻辑块由逻辑组形成。适应性逻辑块可包含不同数目的逻辑组。个别适应性逻辑块被存储在一存储器阵列的个别适应性元区块中。一适应性元区块中擦除块的数目等于对应适应性逻辑块中逻辑组的数目。因而,适应性元区块具有一可变数目的擦除块。一元区块的擦除块可能来自存储器阵列的少于全部的平面。一次可编程一个以上适应性元区块。可根据欲存储的数据来形成适应性元区块。较大适应性元区块可用于获得编程期间的高并行度。较小适应性元区可用于提供所存储数据的有效更新。
可形成适应性逻辑块,使得适应性逻辑块之间的边界反映数据中的边界(例如文件或数据串流之间的边界)。通过以此方式订制适应性逻辑块,可减少存储器阵列内数据的复制。如果更新数据,则可形成新的适应性逻辑块来以少量旧数据保存已更新的数据。因此,如果再次更新相同数据,则仅有少量的旧数据需要复制。
如果部分地填充适应性逻辑块,则可将数据复制到一较小适应性逻辑块。此可在已部分填充的适应性逻辑块被编程之前进行,或其可在已部分填充的适应性逻辑块被编程于一适应性元区块中之后进行,在所述情形下,含有已部分填充的适应性逻辑块的适应性元区块被标记为过时。将较小适应性逻辑块编程到存储器阵列中的较小适应性元区块。因而,存储器阵列中可节省空间。
在使用非连续更新的元区块(混乱块)来保存更新数据的结构中,可改用适应性元区块。可根据正更新的逻辑地址范围来选择适应性元区块的大小。如果将适应性元区块订制为一特定逻辑地址范围,则可更有效地执行所述范围内的更新,因为数据的复制较少。
适应性元区块的形成和所存储数据的位置的记录由媒体管理器来执行。一媒体管理器保持可用擦除块的记录。所存储数据的位置的记录也由媒体管理器来保持。所存储数据的位置的记录被保持在对于每一逻辑组均具有一条目的表格(或列表)中。针对每一逻辑组的条目指示含有逻辑组的适应性元区块(和对应适应性逻辑块)的大小、其适应性逻辑块内逻辑组的位置和元区块的多个擦除块中的一者的物理位置。
非易失性随机存取存储器(NVRAM)可与将数据存储在适应性元区块中的快闪存储器阵列结合使用。在将数据编程到快闪存储器之前,NVRAM可用作为保存数据的数据缓冲器。当数据位于NVRAM中时,可确定其如何被有效编程。可将若干数据串流保存在NVRAM中并以一有效方式一起编程。NVRAM还可针对特定数据提供一替代的存储位置,以替代快闪存储器阵列的一部分。在此申请案中,可将NVRAM配置为与快闪存储器类似使用。NVRAM可被分成大小与快闪存储器的擦除块相同的单位。NVRAM可具有一物理地址范围,以便为存储在NVRAM中的逻辑组指派一在所述NVRAM物理地址范围内的物理地址。如果一逻辑组频繁地得到更新,则可将其指派给NVRAM。因而,无需在快闪存储器阵列中进行复制与擦除即可发生更新。NVRAM中的数据更新比快闪存储器中更为有效,但如果断电,数据不会像在易失性存储器中那样丢失。
诸如文件边界的数据边界发生在欲被存储于快闪存储器中的数据中。如果以逻辑组为单位来寻址欲存储的数据,则逻辑组之间的边界可与数据边界不一致。因而,逻辑组和由逻辑组形成的元区块(逻辑块)可含有数据边界。如果较大元组和元区块含有数据边界,则更新文件可需要复制大量数据。此使用系统资源,并降低将新数据写入存储器阵列的速度。
可形成适应性元区块,以将数据边界存储在具有最小大小的适应性元区块中。通过将数据边界编程在具有最小大小的元区块中,可减少在后续更新文件中的数据期间数据的复制。当发生文件更新时,含有文件的原始元区块含有过时数据。某些原始元区块含有不是已更新文件的一部分的数据。这些数据可能不是过时的,因此可能需要在擦除并重新使用原始元区块之前被复制到新的位置。通过使此等原始元区块变得较小,可减少所复制的数据量。如果使用由一擦除块构成的适应性元区块,则复制少于一逻辑组的数据。可并行编程此等适应性元区块,以使缩小的适应性元区块大小不必减小编程期间所用的并行度。
某些原始元区块可能未被填满数据,例如,其中文件末端处的数据边界在原始元区块中且在数据边界之后无数据。可将此等原始元区块中的数据复制到大小适于以最小空白空间来保存数据的元区块。此可节省存储器阵列中的空间。可并行编程较小的适应性元区块。被并行编程的适应性元区块可包括已重新定位的数据与主机数据,因此在将主机数据写入所述存储器阵列的同时进行重新定位操作。
在某些存储器系统中,主机可向存储器控制器提供关于由主机向存储器系统发送的数据中的逻辑边界(例如文件边界和数据运行边界)的位置的信息。基于由主机提供(或以其他方式获得)的逻辑边界位置,可以对准格式直接将数据存储在存储器阵列中,而不必首先以中间格式存储在存储器阵列或NVRAM中。可将不含有逻辑边界的数据部分直接写入存储器阵列中具有最大大小的元区块中。
最后将包括逻辑边界的数据部分存储在最小的元区块中。然而,因为写入此元区块本身较慢,所以可首先缓冲此数据部分。提供一串行快闪缓冲器来存储来自主机并随后以对准方式写入存储器阵列中的数据部分。一串行快闪缓冲器由具有最大大小的元区块构成,以便以最大并行度写入数据。当从所述串行快闪缓冲器复制数据时,可通过一次写入一个以上适应性元区块而以高并行度写入数据。因此,可首先将指派给最小的元区块的数据以最大并行度写入串行快闪缓冲器,随后通过并行写入多个最小元区块而以高并行度复制到最小元区块。以此方式,即使在使用较小元区块的情况下,一串行快闪缓冲器也有助于保持高并行度(因此保持高性能)。对于具有中间大小的元区块,可将数据直接写入所述存储器阵列,或可首先根据元区块大小来缓冲数据。
当存储在存储器中的一数据部分的每一端处的逻辑边界被存储在具有最小大小的元区块中时,可将所述数据部分视为以完全对准方式存储。如果一端处的逻辑边界被存储在一具有最小大小的元区块中,而另一端处的逻辑边界不被存储在具有最小大小的元区块中,则以部分对准方式来存储一数据部分。如果两个逻辑边界都不被存储在具有最小大小的元区块中,则以非对准方式存储一数据部分。当更新一数据部分时,其可以高于其所更新的数据的对准度来被存储。
本发明的一个实施例是一种更新一非易失性存储器阵列内的数据的方法,所述非易失性存储器阵列具有被配置以形成一第一适应性元区块的复数个可个别擦除的区块,所述方法包含:从一主机接收已更新的数据,所述已更新的数据用于取代存储于所述适应性元区块内的数据;将所述已更新的数据存储在一第二适应性元区块中,所述第二适应性元区块仅由含有已更新数据的擦除块组成;和将来自所述第一适应性元区块的原始数据存储在一第三适应性元区块中,所述第三适应性元区块仅由不含有已更新数据的擦除块组成。
本发明的另一个实施例是一种更新存储在一非易失性存储器阵列中的数据的方法,所述非易失性存储器阵列具有第一复数个原始适应性元区块,所述复数个原始适应性元区块的每一者都存储一具有复数个原始数据逻辑组的原始适应性逻辑块,所述方法包含:接收已更新的数据以取代旧数据;形成已更新的逻辑组,一已更新的逻辑组包含具有与一原始逻辑组相同逻辑地址范围的连续数据,一已更新逻辑组中的所述数据中的至少一些是已更新的数据;形成已更新的适应性逻辑块,一已更新的适应性逻辑块是由若干已更新的逻辑组组成,一已更新适应性逻辑块中已更新逻辑组的数目与一原始适应性逻辑块中原始逻辑组的数目无关;和将一已更新的适应性逻辑块编程到一已更新的适应性元区块。
附图说明
图1A和1B分别是一起运作的一非易失性存储器和一主机系统的方块图;
图2说明图1A的存储器阵列的第一实例性结构;
图3展示具有图1A的存储器阵列中所存储的额外开销数据的一实例性主机数据扇区;
图4说明图1A的存储器阵列的第二实例性组织;
图5说明图1A的存储器阵列的第三实例性组织;
图6展示诸如图5所示的存储器阵列中的元区块的一实例;
图7展示诸如图6中所示的元区块中所存储的逻辑块的一实例;
图8展示其中将原始数据存储于存储器阵列中的元区块的数据更新;
图9A展示存储于存储器阵列中的适应性元区块中的适应性逻辑块;
图9B展示扇区到逻辑组和逻辑组到图9A的适应性逻辑块的逻辑映射;
图10展示两个适应性逻辑块到两个适应性元区块的并行编程;
图11展示以各种配置映射到适应性逻辑块的逻辑组;
图12A展示存储在正更新的适应性逻辑块中和存储在新的适应性逻辑块中的数据;
图12B展示被重新映射以适配数据串流的适应性逻辑块的一实例;
图12C展示被重新映射以适配数据串流的适应性逻辑块的另一实例;
图13展示重新映射到一较小适应性逻辑块的部分填充适应性逻辑块;
图14展示用于更新适合正更新的逻辑地址范围的数据的适应性逻辑块;
图15A展示存储在存储器阵列的适应性元区块中的适应性逻辑块;
图15B展示存储在存储器阵列中的图15A的适应性逻辑块的逻辑组的扇区;
图15C展示存储在存储器阵列中的逻辑组的扇区的另一实例;
图15D展示其中两个适应性元区块被并行编程的扇区排列的一实例;
图15E展示三个元区块的并行编程的实例和元区块内所得页排列;
图15F展示更新数据的一实例,其中已更新的第一扇区不是适应性元区块中的第一扇区;
图16展示一记录存储在存储器阵列的适应性元区块中的逻辑组位置的表格;
图17展示一可用于管理适应性元区块结构的媒体管理器;
图18A是展示已擦除块管理阶层的一实例的方块图;
图18B展示一包含多个扇区的EBL块,所述扇区包括一有效扇区与多个过时扇区;
图18C是展示地址表格管理阶层的一实例的方块图;
图18D展示包括引导地址与引导块的数据结构;
图19展示包括NVRAM的存储器系统;
图20展示有效存储在使用NVRAM的存储器阵列中的两个数据串流;
图21展示存储在NVRAM中的已更新数据;
图22展示由数据运行组成的文件;
图23展示一数据运行内的文件边界;
图24展示数据单位的阶层;
图25展示映射到元组的两个数据运行;
图26展示具有映射到元组的文件边界的数据运行;
图27展示用于将数据存储在具有数据边界管理的快闪存储器中的两个方案;
图28A展示由存储图25的元组A到D的元区块A到D组成的程序块;
图28B展示图28A中的元区块A到D的扇区配置;
图28C展示传送到程序块的累加器中的扇区;
图29A展示一完整元组;
图29B展示一部分元组;
图29C展示一短元组;
图29D展示一起始元组;
图29E展示一多文件元组;
图30A展示一部分元组的重新映射;
图30B展示一短元组的重新映射;
图30C展示一起始元组的重新映射;
图30D展示一多文件元组的重新映射;
图31展示主机数据和已重新定位数据的并行编程;
图32展示使用一串行快闪缓冲器来存储主机数据;
图33A展示存储来自主机的数据的替代方法;
图33B展示图33A的替代方法,其中通过从主机写入数据而复制原始数据;
图34展示存储来自主机的数据的替代方案;
图35A展示以非对准来存储的数据运行;
图35B展示以部分对准来存储的数据运行;
图35C展示以完全对准来存储的数据运行;
图35D展示数据运行的一示范性结构;
图35E展示具有不同长度的数据运行的示范性结构;
图36展示在更新数据运行中的数据期间可能发生的转换的实例;
图37展示完全到完全转换的一实例;
图38展示部分到完全转换的一实例;
图39展示部分到部分转换的一实例;
图40展示从非对准转换到完全对准的一实例;
图41展示从非对准转换到部分对准的一实例;
图42展示从非对准转换到部分对准的第二实例;
图43展示非对准到非对准的一实例;
图44列示某些数据结构和可进行的涉及所述数据结构的操作;
图45是展示根据本发明一实施例存储扇区的流程图;
图46是展示图45的扇区的写入的流程图;和
图47是展示根据本发明一实施例关闭数据运行的流程图。
具体实施方式
存储器结构及其操作
首先参考图1A,一快闪存储器包括一存储器单元阵列与一控制器。在所示实例中,两个集成电路装置(芯片)11与13包括一存储器单元阵列15与各种逻辑电路17。逻辑电路17通过数据、命令和状况电路与另一芯片上的控制器19对接,而且还为阵列13提供寻址、数据传输和感测及其他支持。存储器阵列芯片的数目可为一到许多,视所提供的存储容量而定。存储器单元阵列可位于一单一芯片上,或可由多个芯片上的存储器单元组成。所述控制器与部分或整个阵列可替代地组合在一单一集成电路芯片上,但此做法目前并不是一经济的选择。
一典型控制器19包括:一微处理器21;一只读存储器(ROM)23,其主要用来存储固件;以及一缓冲存储器(RAM)25,其主要用来暂时存储写入存储器芯片11与13或从存储器芯片11与13读取的用户数据。缓冲存储器25可为易失性或非易失性存储器。电路27与存储器阵列芯片对接,而电路29通过连接31而与主机对接。在此实例中,数据的完整性通过以专用于计算所述代码的电路33来计算ECC而确定。当用户数据正从主机传输到快闪存储器阵列以作存储时,所述电路根据数据计算一ECC且所述代码被存储在存储器中。当随后从存储器中读取所述用户数据时,其再次通过电路33,所述电路33使用相同算法来计算ECC,并将所述代码与已计算出并与数据存储在一起的ECC进行比较。如果其相符,则可确认数据的完整性。如果其不同,则根据所用的特定ECC算法,可识别并校正那些错误位,最高达到所述算法所支持的数目。
图1A的存储器的连接31与主机系统的连接31′匹配,图1B给出其一实例。主机与图1A的存储器之间的数据传输通过接口电路35。一典型主机还包括一微处理器37、一用于存储固件码的ROM 39以及RAM 41。其他电路与子系统43通常包括一高容量磁性数据存储磁盘驱动器、用于键盘的接口电路、一监视器和其类似物,视特定主机系统而定。此类主机的一些实例包括台式计算机、膝上型计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、MP3和其他声频播放器、数字相机、摄像机、电子游戏机、无线及有线电话装置、电话应答机、语音记录器、网络路由器等等。
图1A的存储器可实施为一小型封闭卡,其含有控制器以及所有其存储器阵列电路装置,其形式上可与图1B的主机以可移触方式连接。即,匹配的连接31与31′允许一卡断开并移动到另一主机,或藉由将另一卡连接到主机而加以取代。或者,可将所述存储器阵列装置封闭在另一卡中,所述另一卡可与一含有控制器与连接31的卡电及机械连接。作为另一替代方案,可将图1A的存储器嵌入图1B的主机内,其中使连接31与31′为永久性的。在此情形下,通常可将存储器连同其他组件包含于主机的包裹体内。作为另一替代方案,可将诸如存储器芯片11的存储器芯片直接连接到主机系统的连接31′,而在两者之间不具有存储器控制器。在此情形下,存储器控制器的功能由主机系统的微处理器37来执行。
图2说明一存储器阵列的一部分,其中存储器单元被分组成擦除块,每一擦除块中的单元可作为单一擦除操作的一部分而一起被擦除,通常同时被擦除。擦除块是最小擦除单位。
图2的个别存储器单元擦除块的大小可变化,但一商业上实用的形式在一个别擦除块中包括一单一数据扇区。图3说明此数据扇区的内容。用户数据51通常为512字节。除了用户数据51之外,还有额外开销数据,所述额外开销数据包括根据用户数据所计算得的ECC 53、与扇区数据及/或在其中编程扇区的擦除块相关的参数55和根据参数55计算得的ECC 57以及任何其他可能包括的额外开销数据。或者,可根据用户数据51与参数55来计算一单一ECC。
所述参数55可包括一与擦除块所经历的编程/擦除周期的数目相关的数量,此数量在每一周期或某一数目的周期之后被更新。当此经历数量用于一损耗平衡算法时,逻辑块地址被规则地重映射到不同物理区块地址,以使所有擦除块的使用量(损耗)均匀。经历数量的另一用法是随不同擦除块所经历的周期数目来改变电压以及其他编程、读取及/或擦除参数。
所述参数55还可包括指派给存储器单元的每一存储状态的位值的指示,称为其“旋转”。此还对损耗平衡存在有利影响。还可将一或多个旗标包括于指示状况或状态的参数55中。还可将用于编程及/或擦除所述擦除块的电压电平的指示存储于参数55内,这些电压随着擦除块所经历的周期数目与其他因素的变化而得以更新。所述参数55的其他实例包括擦除块内任何有缺陷单元的识别、被映射到此物理区块中的数据的逻辑地址和在主要擦除块有缺陷的情形下任何替代擦除块的地址。用于任何存储器系统中的参数55的特定组合将根据设计而变化。而且,部分或全部额外开销数据可存储于专用于此功能的擦除块中,而不是存储于含有用户数据或额外开销数据所属的擦除块中。
与图2的单一数据扇区擦除块不同的是图4的多扇区擦除块。一实例性擦除块59(仍然是最小擦除单位)含有四个页0到3,每一页是最小编程单位。一或多个主机数据扇区被存储在每一页中,通常还有包括至少从所述数据扇区中计算得的ECC的额外开销数据,并且可以图3的数据扇区为形式。
重新写入整个擦除块的数据通常包含将新数据编程到一擦除块集区的可用擦除块中,接着原始擦除块被擦除并放在擦除集区中。当更新少于一擦除块的全部页的数据时,通常将已更新的数据存储到已擦除块集区中一擦除块的一页中,并将其余未改变页中的数据从原始擦除块复制到新的擦除块中。接着擦除原始擦除块。此大区块管理技术的变化包括将已更新的数据写入另一擦除块的一页中,而不从原始擦除块移动数据或擦除数据。此导致具有相同逻辑地址的多个页。最近的数据页由某方便技术来识别,例如记录为扇区或页额外开销数据中的一字段的编程时间。
图5中说明另一多扇区擦除块排列。此处,总存储器单元阵列在物理上被分成两个或两个以上平面,图中说明四个平面0到3。每一平面是一存储器单元子阵列,其具有本身的数据寄存器、读出放大器、寻址解码器和其类似物,以便很大程度上可独立于其他平面而进行操作。所有平面可位于一单一集成电路装置上或多个装置上,一实例是每一平面由一或多个不同集成电路装置形成。图5的实例性系统中的每一擦除块包含16个页P0到P15,每一页具有一、二或更多个主机数据扇区和一些额外开销数据的容量。
元区块
图6中说明再一存储器单元排列。每一平面含有大量擦除块。为了增加操作的并行度,逻辑上链接不同平面内的擦除块以形成元区块。图6中说明此类区块。每一元区块可在逻辑上寻址,且所述存储器控制器指派并追踪形成所述个别元区块的擦除块。所述主机系统提供以扇区串流为形式的数据。此扇区串流被分成若干逻辑块。此处,逻辑块是数据的逻辑单位,其含有与存储器阵列的元区块中所含数目相同的数据扇区。存储器控制器保持存储每一逻辑块的位置的记录。图6的此类逻辑块61(例如)是由一逻辑块地址(LBA)识别的,所述逻辑块地址(LBA)由控制器映射到构成元区块的区块的物理区块编号(PBN)中。元区块的所有区块被一起擦除,且来自每一区块的页一般同时被编程和读取。
图7展示存储在存储器阵列中的数据。数据由主机以数据扇区串流75的形式发送。将所述扇区形成为逻辑块71、72。然后将逻辑块编程到元区块。例如,将逻辑块72编程到元区块74。图7展示具有四个平面的存储器阵列76。元区块74具有来自每一平面0、1、2与3的一擦除块。元区块74横跨所述阵列的所有平面而延伸,以便并行编程所有平面。因此,元区块的大小通常由阵列中平面的数目确定。而且,对应逻辑块的大小由此大小确定。
图8显示在其中数据被存储在元区块中的存储器阵列中更新数据。从主机接收已更新的数据扇区81且将其存储在存储器阵列中。已更新的数据扇区81对应于逻辑块82、83中的原始数据扇区。将逻辑块82、83中的原始数据存储在存储器阵列89中的元区块84、85中。因此,元区块84中的一些扇区和元区块85中的一些扇区需要更新,而其他扇区则不需要。可通过将已更新的数据扇区81与元区块84、85中不需要更新的原始扇区组合来完成更新。然后将这些组合数据写入取代元区块86、87中,并将原始元区块84、85标记为过时。最终将过时的元区块84、85擦除,并使其在无用单元收集期间再次可用。将已更新的数据扇区81与原始扇区组合可在接收到数据时执行。或者,已更新数据扇区81可写入另一位置,且在随后时间内作为无用单元收集的一部分而与原始数据组合。虽然大的元区块因为较大的并行度而允许较快的编程,但更新存储在大元区块中的数据可包含复制大量数据,即使在仅接收到少量新数据的情况下。将新数据与原始数据合并在一元区块中可能会在无用单元收集期间施加一显著额外开销。
适应性元区块
图9A显示用于将数据存储于存储器阵列中的适应性元区块98的实例。以数据扇区串流99的形式接收数据。将扇区形成逻辑组,包括逻辑组91、92、93。逻辑组是数据的逻辑单位,其等于存储在存储器阵列的一擦除块中的数据量。一逻辑组是由从主机接收到的逻辑上连续的扇区形成的。所形成的每一逻辑组具有特定的逻辑地址范围。因而,逻辑组是数据的中间逻辑单位,其可含有许多扇区,但一般小于适应性元区块。
逻辑组被形成为适应性逻辑块。适应性逻辑块或逻辑块还可被称为“元组”。术语“元组”被视为等效于术语“适应性逻辑块”。此申请案中一般使用术语“适应性逻辑块”。一适应性逻辑块含有可变数目的逻辑组。因而,在图9A中,适应性逻辑块95含有3个逻辑组91、92、93。适应性逻辑块96含有两个逻辑组,且逻辑块97含有4个逻辑组。将适应性逻辑块95编程到适应性元区块98中。适应性逻辑块95含有三个逻辑组91、92、93,且相应地,适应性元区块98含有三个擦除块911、912、913。因此,适应性元区块98不具有来自所述阵列的每一平面的擦除块,而仅具有来自平面0、2与3的擦除块。适应性元区块98不具有来自平面1的擦除块。图9B更详细展示如何将扇区映射到逻辑组91、92、93。每一逻辑组91、92、93含有n个数据扇区。图9B还展示映射到适应性逻辑块95的逻辑组91、92、93。将适应性逻辑块编程到存储器阵列中对应大小的适应性元区块。
在元区块结构的某些实例中,元区块大小是固定的。一阵列中平面的数目可确定元区块的大小。在此等实例中,逻辑块的大小也是固定的,且扇区以一预定方式被映射到逻辑块。因此,逻辑地址空间被分成具有固定逻辑地址范围和固定边界位置的相等大小的逻辑块。相反,在使用适应性元区块的结构中,适应性逻辑块不具有固定大小,且适应性逻辑块不限于预定的逻辑地址空间范围。而是,适应性逻辑块可具有各种大小,并且可形成为在不同的逻辑地址空间范围上延伸。逻辑组的形成通过提供一中间数据单位(由其形成各种大小的适应性逻辑块)而简化适应性元区块结构。因而,适应性元区块是不具有固定大小的元区块的一实例,且适应性逻辑块是不具有固定大小的逻辑块的一实例。
可根据一提供阵列的擦除块的有效使用的算法来选择用于形成适应性元区块的平面。可基于一平面中可用擦除块的数目以及一特定平面是否仍忙于先前操作来赋予平面不同的优先权。而且,可考虑将与用于正被更新的材料的平面相同的平面用于新材料,以便在平面内执行复制操作。一平面内的此类数据复制(芯片上复制)在某些结构中可能更为有效。一般而言,选定平面内特定擦除块的选择不是关键性的。
具有不同大小的适应性元区块的结果在于,某些适应性元区块可能不含有来自所述阵列的每一平面的擦除块。如果单独地编程此适应性元区块,则编程不使用最大可能的并行度。例如,在图9A中,在所示操作中平面1没有被编程。一般需要以可能的最大并行度来编程,以增加编程速度。编程到较少平面会导致低效率。当适应性元区块较小而一阵列中具有许多平面时,尤其如此。然而,通过一次编程一个以上适应性元区块,可以较小适应性元区块来保持高并行度。
图10展示被并行编程的两个适应性元区块1030、1040。元区块1030、1040中的数据可能是由主机供应的更新数据或重新定位于快闪存储器内的数据。图10的存储器阵列1005具有6个平面。适应性逻辑块1001含有三个逻辑组1010到1012。因此,对应元区块1040需要来自存储器阵列的三个平面的三个擦除块1041、1042、1043。如果适应性逻辑块1001是自行编程的,则将仅使用三个平面,而其他三个平面将被闲置。然而,与适应性逻辑块1001并行编程适应性逻辑块1002,以便使用六个平面中的五个平面。因此,即使适应性元区块含有比阵列中平面的数目少得多的擦除块,也可达成高并行度。
一算法根据各种标准来指派平面,以将适应性逻辑块1001编程到平面1、2与5中的擦除块,而将适应性逻辑块1002编程到平面0与4中的擦除块。在此操作中未编程平面3中的擦除块。虽然需要最大并行度,但在每次编程操作中可能不会将所有六个平面一起编程。如果一平面中没有擦除块可用,则可能不会编程所述平面。如果所述平面中有极少擦除块可用,则当选择平面用于编程时,向所述平面指派一较低优先权。此处,仅需要五个擦除块来存储适应性逻辑块1001与1002。因此,仅选择五个平面,且不选择平面3。平面3是在此操作中具有最低优先权的平面。然而,当发生下一编程操作时,可重新评估优先权。对于下一操作,优先权可能已变化,因为平面0、1、2、4、5的每一者中已使用另外一个擦除块。因此,如果平面3中有擦除块可用,则平面3可用在后续编程操作中。此算法平衡用在不同平面中的擦除块数目,以使一特定平面不会更快地填满而变得不可用。
用于个别适应性元区块的平面不必在物理上相邻。例如,图10的适应性元区块1030具有平面0与4中的擦除块1044、1045,而适应性元区块1040具有平面1、2与5中的擦除块1041到1043。被并行编程的适应性逻辑块不必在逻辑上连续。可并行编程逻辑上分开的适应性逻辑块。例如,适应性逻辑块1001与1002在逻辑上不连续。其由适应性逻辑块1003分开。
当一适应性元区块中的所有数据已由数据的已更新或已重新定位版本取代并已成为过时的时,应擦除形成适应性元区块的擦除块。然而,适应性元区块可能不含有来自阵列的每一平面的一擦除块,且当单独擦除此适应性元区块时,擦除不使用最大并行度。因此,无法获得擦除数据的最大速度,因此存储器系统的有效编程速度从最大可能值减小,因为在常用快闪存储器芯片的擦除操作期间,可能不会执行数据编程。此可通过将形成一适应性元区块的擦除块的擦除延迟直到来自每一平面的一擦除块可用而被克服,以获得最大擦除并行度。可用于擦除的擦除块被保存于一列表中,且周期性排程区块集用于擦除,以达成最大可能并行度。当所述列表不含有某些平面中的区块时,可执行较小区块集的擦除。
图11展示使用适应性元区块的某些可能数据存储配置排列。图11展示扇区中的输入数据到逻辑组的映射和逻辑组到适应性逻辑块的映射。虽然此映射仅是逻辑上的,但将了解,可将适应性逻辑块编程到存储器阵列的适应性元区块。通常,首先数据作为使用最大并行度存储的扇区串流而被接收。因此,在初始写入期间,存储器系统可像图7所述的系统那样运作。图11展示适应性逻辑块1101到1103,每一适应性逻辑块1101到1103具有四个逻辑组。因此,对于具有四个平面的存储器阵列而言,适应性逻辑块1101到1103具有最大的大小。
随后,可通过重新映射逻辑组来以新的适应性逻辑块取代原始适应性逻辑块。例如,在图11的第一更新中,由两个适应性逻辑块1110与1111来取代适应性逻辑块1101。因此,由两个较小适应性逻辑块来取代一单一适应性逻辑块,且在先前没有边界的地方形成逻辑块之间的边界。在第一更新期间,建立适应性逻辑块1113。适应性逻辑块1113包括先前是适应性逻辑块1103的一部分的逻辑组1122和先前是适应性逻辑块1102的一部分的逻辑组1120、1121。因而,适应性逻辑块1113在先前含有适应性逻辑块1102与1103之间的一边界的逻辑地址范围上延伸。可能还组合适应性逻辑块,以形成较大的适应性逻辑块。在图11的第二更新中,将逻辑组1111与1112组合,以形成逻辑组1115。此处,适应性逻辑块1115在先前由适应性逻辑块1111和1112所占据的逻辑地址范围上延伸。因而,适应性逻辑块可由适应性逻辑组的不同组合形成。适应性逻辑块可具有从一个逻辑组到最大数目的逻辑组的任何大小。逻辑组的最大数目可为所述阵列中平面的数目。适应性逻辑块配置中的变化可发生在更新一或多个适应性逻辑块中的数据时,或可由于某一其他原因而发生。例如,可作为无用单元收集的一部分或作为一已排程的例程来更新适应性逻辑块配置,以使数据存储最佳化。
应用
图12A展示以新的数据更新已编程数据,以便更有效地执行后续更新。常常,接收到少于一已编程适应性元区块的一部分新数据并将其用于更新已编程数据。图12A展示对应于两个适应性逻辑块1220、1230的一部分的新数据1210。新数据具有在适应性逻辑块1220与适应性逻辑块1230之间的边界上延伸的地址范围。因而,对应于适应性逻辑块1220与1230的适应性元区块1221、1231需要更新。
新数据1210在三个连续逻辑组1241、1242与1243的地址范围内的逻辑地址范围上延伸。每一逻辑组1241到1243的至少某部分需要加以更新。图12A展示具有需要加以取代的数据以及不需要加以取代的数据的逻辑组1241与1243。逻辑组1242仅具有需要加以取代的数据。新逻辑组1211、1212与1213由新数据1210和来自逻辑组1241与1243的原始数据1214与1215的一部分形成。新适应性逻辑块1250由逻辑组1211到1213形成。对应于适应性逻辑块1250的适应性元区块1251由存储器阵列中的三个擦除块1252到1254形成。适应性逻辑块1256和1257由不具有新数据的逻辑组形成。例如,适应性逻辑块1257由逻辑组1244到1246形成。可从存储器阵列中的适应性元区块1231复制逻辑组1244到1246。将适应性逻辑块1257编程到适应性元区块1259。将适应性逻辑块1256编程到适应性元区块1258。因此,三个适应性逻辑块1250、1256和1257形成在先前由两个适应性逻辑块1220、1230所占据的逻辑地址范围中。三个适应性元区块1251、1258与1259形成在存储器阵列中以存储此数据。
图12A展示在第一更新之后发生的新数据的第二更新。新数据1260由具有一与新数据1210的逻辑地址范围相同的逻辑地址范围的扇区串流构成。常常在非易失性存储器系统中碰到此情况。由于所存储数据的性质(例如,诸如FATS之类的表格、目录和子目录、应用文件内的索引),可重复地更新相同数据范围。第二更新仅取代适应性逻辑块1250中的数据。因此,在第二更新中仅更新适应性逻辑块1250和对应适应性元区块1251。适应性逻辑块1250仅包括三个逻辑块1211到1213。适应性逻辑块1256和1257不需要更新。新数据1260未横跨适应性逻辑块1250的整个逻辑地址范围而延伸,因此复制原始数据1214、1215的部分以填充逻辑组1261和1263。逻辑组1261、1262和1263由新的数据1260与原始数据1214、1215形成。适应性逻辑块1270由逻辑组1261到1263形成。将适应性逻辑块1270编程到存储器阵列中的适应性元区块1271。原始数据的复制要比第一更新中少得多。在第二更新中,仅复制原始数据1214与1215,而未复制适应性逻辑块1256与1257中的数据。因此,通过建立其边界更匹配已更新数据的逻辑边界的适应性逻辑块,可使后续更新更为有效。
图12B展示正被重新映射的适应性逻辑块。此处,数据串流包括两个文件1280与1282。由文件边界1281将文件1280从文件1282分离。一般来说,当新数据写入存储器系统时,其作为数据扇区串流而被接收。在此串流中可能会有文件边界。在某些结构中,当接收到数据并相应地配置适应性逻辑块时,可识别此类边界。在其他结构中,可由主机所更新的数据范围来展示文件边界的位置。图12B显示位于逻辑组1286的逻辑地址范围内的文件边界1281。在初始编程操作期间,数据形成在适应性逻辑块1290到1293中。逻辑块1290到1293每一者包含八个逻辑组,其是所用存储器阵列的最大大小。文件边界1281位于适应性逻辑块1292内。更新文件1280需要更新元区块1290、1291和1292,即使在适应性元区块1292中存储了文件1280的不到两个逻辑组。将适应性逻辑块1292的逻辑组重新映射到新适应性逻辑块1294和1295。逻辑块1294仅由逻辑组1285与1286构成。因此,含有文件1280的一部分的逻辑组形成适应性逻辑块1294,而不包含文件1280的一部分的逻辑组则形成适应性逻辑块1295。更新文件1280不需要更新适应性逻辑块1295。因此,如果已知存在文件边界,则可形成具有被调整为适配文件边界的边界的适应性逻辑块。
图12C展示来自数据串流1280、1282的数据的替代性重新映射。此处,文件边界1281发生在逻辑组1286中。最初将逻辑组1286并入逻辑块1296中。更新文件1280需要更新逻辑块1296,即使逻辑块1296中一半以上的数据不是来自文件1280。在更新期间,形成一第二组适应性逻辑块。适应性逻辑块1296由新适应性逻辑块1297、1298、1299取代。适应性逻辑块1298仅含有一逻辑数据组。更新数据串流1280或数据串流1282需要更新适应性逻辑块1298,因为边界1281发生在适应性逻辑块1298内。因而,因为文件边界1281未与逻辑组之间的边界对准,所以一直执行旧数据的特定复制。然而,因为适应性元区块1298仅含有一逻辑组,故与使用诸如元区块1296的较大元区块的情况相比,仅有少量数据需要复制。因此,藉由缩小一含有文件边界的适应性逻辑块的大小,可减少更新期间的数据复制。
图13展示正重新写入到一具有较少空白空间的较小适应性元区块1340的已部分填充的适应性元区块1321。可使用最大并行度来接收与编程数据串流。例如,在具有四个平面的阵列中,可形成包含四个逻辑组的适应性逻辑块,且数据存储在具有四个擦除块的元区块或适应性元区块中。然而,在此数据串流的末端,可仅部分填充适应性元区块。此类适应性元区块占据的存储器阵列比所存储数据需要的存储器阵列更多。图13展示正被接收的数据扇区串流1305。将数据映射到包括逻辑组1310到1315的逻辑组。逻辑组1310到1317形成为每者具有四个逻辑组的适应性逻辑块1320、1321。数据扇区串流1305的末端发生于一位于逻辑组1315的逻辑地址范围内的逻辑地址。适应性逻辑块1321由逻辑块1314到1317形成。逻辑组1314和1315含有来自数据扇区串流1305的数据。逻辑组1316与1317不含有数据。因而,适应性逻辑块1321含有空白逻辑组1316和1317和已部分填充的逻辑组1315。将适应性逻辑块1321编程到适应性元区块1331。适应性元区块1331包含存储器阵列的四个擦除块。由于空白逻辑组1316和1317和已部分填充的逻辑组1315,因而未使用适应性元区块1331的一部分。此浪费存储器阵列中的空间。图13展示由逻辑组1314和1315形成的适应性逻辑块1340。将适应性逻辑块1340编程到存储器阵列中的适应性元区块1341。因此,适应性元区块1341含有与1331中相同的数据,但仅占据存储器阵列中一半空间(两个擦除块而并非四个)。可通过从存储器阵列中的适应性元区块1331复制数据而形成适应性逻辑块1340和适应性元区块1341。当将适应性元区块1331中的数据复制到适应性元区块1341中时,可将适应性元区块1331标记为过时。接着可擦除适应性元区块1331。
可由从接收到数据扇区串流1305起的消逝时间来触发从已部分填充的元区块将数据复制到较小元区块。也可作为无用单元收集例程的一部分来进行复制。当数据扇区串流1305位于缓冲器中时,如果检测到数据扇区串流1305的末端,则可由接收到的数据直接形成较小的适应性元区块,诸如1340。在此情形下,数据没有首先写入到较大适应性元区块并接着复制到较小元区块。因此,不存在过时适应性元区块需要擦除。在某些结构中,一主机可发送一指示数据串流末端发生在何处的信号。接着,可形成一适应性逻辑块,其仅含有包含来自所述数据串流的扇区的逻辑组。
在特定存储器结构中,可指派擦除块或元区块来存储已更新的数据。此类擦除块和元区块的实例在2003年12月30日递交的Conley等人的标题为“Management ofnon-volatile memory systems having large erase blocks”的专利申请案第10/749,831号中描述,所述申请案以引用方式全文并入本文中。可使用特定元区块,指定为E1与E2,来存储用于存储器阵列的平面的已更新数据。可指派其他擦除块或元区块,指定为dE1,来接收用于特定擦除块或元区块的已更新数据。一适应性元区块可指定为E1、E2或dE1。可将此适应性元区块订制为被频繁更新的逻辑地址范围。通过形成具有一经选择而适配已更新数据的大小的适应性元区块,可减少原始数据的复制。E1与dE1接收更新数据并以非连续方式存储数据。非连续地存储更新数据的更新块(或元区块、或适应性元区块)被视为混乱块。
图14显示使用适应性元区块作为一混乱块,其大小适合已更新数据的逻辑地址范围。数据被存储在包括原始适应性元区块1410的原始适应性元区块。通常,此类原始适应性元区块具有最大大小。适应性元区块1420被指派以接收对应于原始适应性元区块1410中的数据的已更新数据。适应性逻辑块1411和1421分别对应于原始适应性元区块1410和适应性元区块1420。适应性逻辑块1421具有与适应性逻辑块1411相同的逻辑地址范围。第一更新数据1415具有在适应性逻辑块1411的逻辑地址范围内的逻辑地址范围。在第一更新中,仅更新原始适应性逻辑块1411的逻辑地址范围的一部分。第一更新数据1415为非连续的(混乱)。因此,适应性元区块1420变为一混乱块。更新数据1415可包含所示逻辑地址范围内的若干扇区串流。可将相同扇区更新若干次。最后,元区块1420变满,并且必须加以合并。
在第一合并期间,仅将每一扇区的最近拷贝复制到新的适应性元区块1422到1424。对于已更新的数据,最近拷贝来自适应性元区块1420,对于未更新的数据,最近拷贝来自适应性元区块1410。合并将来自适应性元区块1410与适应性元区块1420的数据组合在逻辑序列中。指派给适应性元区块1423的逻辑地址范围包括第一更新数据1415的逻辑地址范围。适应性元区块1422、1424仅含有未更新的数据。
在第一合并之后,接收到第二更新数据1425。第二更新数据1425位于与第一更新数据1415相同的逻辑地址范围内。将第二更新数据1425指派给存储在适应性元区块1430中的新适应性逻辑块1431。适应性逻辑块1431具有与存储在适应性元区块1423中的数据相同的逻辑地址范围。适应性元区块1430可能受到混乱地更新,因而成为一混乱块。当填充适应性元区块1430时,将适应性元区块1430与适应性元区块1423中的数据合并到适应性元区块1440。适应性元区块1440接着取代适应性元区块1423,并且可将适应性元区块1423标记为过时。适应性元区块1422与1424保持不变。在第二合并中,合并比第一合并更小的逻辑地址范围,因而未改变数据的复制较少。而且,由于在第一合并之后用于更新的适应性元区块较小,因而存储器阵列中所需空间较少。可在相同的逻辑地址范围内进行进一步更新,并且可与第二合并中一样将其合并。
媒体管理
图15A展示如何将适应性逻辑块1520的逻辑组1510、1511和1512映射到适应性元区块1540的擦除块1531、1532和1533。尽管一适应性逻辑块1520中的逻辑组的数目等于适应性元区块1540中擦除块的数目,但此实例中未将个别逻辑组直接映射到个别擦除块。而是,存储数据,以将每一逻辑组1510到1512的一部分存储在适应性元区块1540的每一擦除块1531到1533中。
图15B更详细地展示适应性逻辑块1520到存储器阵列的映射。图15B展示如何将来自逻辑组1510的扇区编程到存储器阵列中。逻辑组1510包含n个数据扇区。存储器阵列的平面0到4每者的宽度为四个扇区。在特定存储器结构中,并行编程横跨一阵列的一平面而延伸的四个扇区。因而,四个扇区形成一页,其为所述阵列的最小编程单位。扇区通常按顺序到达,并可在写入阵列之前存储在寄存器中。可并行地编程适应性元区块的所有擦除块中的扇区。因而,例如,可并行地编程扇区0到11。接着,可并行编程扇区12到23。此操作继续进行,直到已编程逻辑组1510中的所有扇区。接着,轮流编程逻辑组1511、1512。
图15C展示由存储器阵列中的三个擦除块形成的适应性元区块。存储器内扇区的排列类似于图15B中所示的排列,其中数目n等于32。然而,因为32无法被3除尽,所以逻辑组中的扇区无法均匀地分布于擦除块1551到1553之间。第一逻辑组由扇区0到31构成。这些扇区分布如下:十二个扇区在擦除块1551中,十二个扇区在擦除块1552中,且八个扇区在擦除块1553中。第二逻辑组的第一扇区0′被编程到擦除块1553中。因而,逻辑组可被不同地编程,且可在不同的擦除块中开始。可并行地编程来自不同逻辑组的扇区。例如,可并行编程来自第一逻辑组的扇区24到31以及来自第二逻辑组的扇区0′到3′。
图15D展示被并行编程的两个元区块。擦除块1561和1562形成适应性元区块1565,且擦除块1563和1564形成适应性元区块1566。适应性元区块1565和1566每者包含两个擦除块,因此每一适应性元区块1565、1566含有两个逻辑数据组。适应性逻辑块1565含有逻辑组1571和1572。适应性逻辑块1566含有逻辑组1573和1574。说明逻辑组1571和1573的扇区的编程。逻辑组1571和1573被并行地编程。因而,在第一次写入存储器阵列期间,来自逻辑组1571的扇区1到8可与来自逻辑组1573的扇区1′到8′同时被编程。随后,扇区9到16可与扇区9′到16′同时被编程。此操作继续进行,直到逻辑组1571和1573中的所有扇区被编程。接着,类似地编程逻辑组1572和1574。
图15E展示被并行编程的三个适应性元区块。元区块1590包含四个擦除块,元区块1591包含一擦除块,且元区块1592包含三个擦除块。并行地编程元区块1590到1592。因为元区块1590到1592包含不同数目的擦除块,所以在每一元区块1590到1592中以不同方式对准数据。图15E展示元区块1590到1592内页的对准。一页可能是作为一编程单位而加以编程的单一扇区、四个扇区或某一其他数目的扇区。并行地编程位于图15E中相同水平面上的不同擦除块中的数据页。例如,并行地编程元区块1590的页12到15、元区块1591的页3和元区块1592的页9到11。
图15F展示更新数据的一实例,其中已更新数据的第一扇区不是逻辑组中的第一扇区。已更新数据1582中的第一扇区具有逻辑地址13。逻辑组1580包含具有逻辑地址1到16的扇区。已更新数据1582包括来自至少两个逻辑组的扇区,且两个擦除扇区的适应性元区块大小被选择用来存储含有已更新数据1582的前两个逻辑组。选择擦除块1585和1586来存储含有已更新数据1582的前两个逻辑组。将已更新数据1582的第一扇区(其具有一逻辑地址13)写入擦除块1585中的第一位置。将具有逻辑地址14的扇区写入第二位置等等,直到写入逻辑组中的最后扇区,即具有逻辑地址16的扇区。接着将来自逻辑组1580的未更新数据复制到存储器阵列中。因而,逻辑组中的第一扇区与适应性元区块中所存储的第一扇区之间会存在一偏移。可以正常方式写入下一逻辑组的第一扇区,使得在一适应性元区块内,可以不同偏移写入不同逻辑组。因而,具有逻辑地址1′的扇区是更新逻辑组1581时的第一扇区。
图16展示用于根据逻辑组记录存储器阵列内的数据位置的表格,其中适应性逻辑块1610被存储在一适应性元区块1620中。列1指示每一个别逻辑组的识别项。此是唯一表示一逻辑组的逻辑地址。一般按顺序列出逻辑组。列2指示其中存储有逻辑组的适应性元区块的大小。所述大小仅仅是适应性元区块中擦除块的数目。此处,元区块由三个擦除块构成,因此对于所有逻辑块而言,大小为三。列3给出适应性逻辑块内逻辑组的组编号N。根据逻辑地址范围按顺序对逻辑组进行编号。因此,逻辑组L1具有N=1,L2具有N=2,且L3具有N=3。列4给出适应性逻辑块中第N个擦除块的位置。此可能是擦除块的物理区块编号(PBN)。因为适应性逻辑块中逻辑组的数目等于适应性元区块中擦除块的数目,所以可通过为每一逻辑组记录一擦除块位置而形成一适应性元区块的擦除块的位置的完整记录。
作为存储器系统的媒体管理的一部分,可将特定逻辑组的位置的表格保存于易失性或非易失性存储器中。媒体管理系统可具有记录可用擦除块的位置与逻辑到物理数据映射的各种表格。一媒体管理器管理媒体管理系统的表格。通常,一媒体管理器实施在一控制器中的一固件中。
图17展示媒体管理器的一实例。与图17所示类似的媒体管理器的操作在2003年12月30日递交的Bennett等人的标题为“Non-volatile memory and method with blockmanagement system”的美国专利申请案第10/750,155号中描述,所述申请案以引用方式全文并入本文中。所述媒体管理器包括一适应性元区块管理器、一区块分配管理器和一地址表格管理器。这些三个管理器和其相关表格与适应性元区块的管理特别相关且将被进一步描述。
一适应性元区块管理器确定欲组合以形成一适应性逻辑块的逻辑组的数目,因而确定适应性元区块中擦除块的数目。如果从主机接收数据,则此确定可基于若干因素。可评估来自主机的命令序列,且可基于当前命令或主机命令的历史评估来确定适应性元区块大小。可被评估的当前命令的特征包括逻辑地址、命令扇区计数、与文件系统群集(例如DOS群集)的对准、与先前命令的逻辑关系和相对于文件系统扇区的地址。还可考虑相对于由一非连续类型的更新区块管理的地址范围的地址。历史操作的特征可包括用于连续数据串流的主机命令序列、用于完整文件的主机命令结构、频繁更新的逻辑地址范围的记录和最近写入的连续数据的最终地址。适应性元区块管理器可根据一适当主机接口协议,与主机建立一对话,以存取信息,其允许确定适当的元区块大小。
如果重新定位数据,则适应性元区块大小可基于含有重新定位的数据的逻辑组的数目。如果将控制数据存储于适应性元区块中,则可根据欲存储的数据类型来固定适应性元区块大小。可基于由较大适应性元区块获得的增加并行度与由较小适应性元区块获得的减少无用单元收集之间的平衡来确定适应性元区块大小。一旦适应性元区块管理器确定所需擦除块的数目,便将对所述数目的擦除块的请求发送到区块分配管理器。
一区块分配管理器从存储器阵列的分离平面选择擦除块。可根据平面中可用擦除块的数目来选择平面。如果使用各种大小的适应性元区块,则可将平面填充到不同水平。因而,某些平面可变满,而其他平面仍具有可用擦除块。如果发生此情况,则所述阵列的一平面为不可用,且并行度相应地被限制。为了防止或推迟此情况发生,当指派擦除块以形成一适应性元区块时,一区块分配管理器赋予含有少量可用擦除块的平面较低优先权,而赋予含有大量可用擦除块的平面较高优先权。仍忙于先前操作的平面可能也被赋予较低优先权。如果以比从一平面向另一平面重新定位更有效的方式而将数据重新定位于一平面内,则可赋予具有用于重新定位的数据的平面较高优先权。区块分配管理器从一分配区块列表(ABL)中选择可用擦除块。
图18A展示与适应性元区块一起使用的已擦除块管理阶层。在从适应性元区块管理器接收到分配具有一特定大小的元区块的请求之后,区块分配管理器从分离的平面中选择擦除块,并更新相关控制结构以将区块链接成一元区块。由一算法根据预定标准来选择从中使用已擦除块的平面。赋予含有较少已擦除块的平面较低优先权。赋予仍忙于先前操作的平面较低优先权。如果平面的选择将使数据能够在平面内复制而并非从另一平面复制,则赋予平面较高优先权。在某些结构中,此平面内复制可能更有效。
针对阵列的每一平面而独立管理已擦除块。当一平面被选定时,可选择来自所述平面的任何擦除块以形成一适应性元区块的一部分。通常,从列表的顶部选择擦除块,而将新近可用的擦除块添加到列表的底部。由图18A所示的列表阶层来管理擦除块。一个别擦除块一次仅可出现在一列表中。不良区块不出现在任何列表中,且因而不用于数据存储。通过在列表之间移动已擦除块地址,可贯穿整个存储器阵列而分布写入/周期计数。此提供损耗平衡,其减小个别擦除块失效的危险。
分配区块列表(ABL)1810是从中选择已擦除块以形成元区块的已擦除块地址的短列表。因此,ABL 1810位于列表阶层的顶部。在ABL 1810内,针对存储器阵列的各平面而保持单独字段。通常,ABL 1810被保持在诸如控制器RAM的非易失性存储器中。然而,一拷贝也被保持在非易失性存储器中。
每当形成一适应性元区块并从ABL 1810中移除用于形成所述元区块的已擦除块时,ABL 1810的一拷贝被写入日志1813中。因而,日志1813中的ABL 1810的拷贝被有规则地更新。当已擦除块通过一擦除操作而变得可用时,其被添加到ABL 1810的与含有擦除块的平面对应的字段中。在断电之后,ABL 1810可通过从日志1813复制而被恢复。然而,日志拷贝可能不是最新的,因为从上一次复制到日志1813以来,已将已擦除块添加到ABL 1810中。此等已擦除块可易于从其他数据结构中识别。具体地说,日志1813含有已分配元区块的记录。已分配的元区块是其中的数据当前正在由主机更新的元区块或适应性元区块。因而,当首次施加电时,可扫描原始元区块的每一擦除块的第一扇区,以确定是否已擦除原始元区块的擦除块。如果擦除块已被擦除,则将其地址添加到ABL。地址数据被保持在日志1813中,作为起始逻辑组地址,其由图16所示的格式加以串接,所述格式具有用于元区块大小、组编号和区块地址的条目。因而,可在断电之后,易于重建ABL 1810的完整拷贝。日志还可含有擦除块的列表,所述擦除块具有已完全过时的可用于擦除的数据。
可通过从已擦除块列表(EBL)1811移动一预定义数目的区块地址而初始化ABL1810。可通过从对应EBL字段移动地址而初始化ABL的每一字段。例如,可将ABL字段填充到其容量的一半。当需要一区块用于分配给一元区块时,使用相关ABL字段中的第一区块,并且从ABL移除其地址。当在无用单元收集期间擦除一区块时,所述区块被添加到相关ABL字段的末端。
还可使用来自EBL 1811的已擦除块地址来重新填充ABL 1810。其在ABL 1810为空时可能是必要的。当ABL 1810的字段为满或空时,可在ABL 1810与EBL 1811之间交换已擦除块地址。可仅针对一字段(阵列的平面)或针对所有字段来完成交换。所述交换可包括加满ABL 1810,或可包括完整交换ABL 1810中所有条目。交换可通由字段变满或变空来触发,或可由另一事件或周期性地触发。
EBL 1811一般保持在非易失性存储器中所保存的扇区中。其含有一已擦除块列表,所述列表针对所述阵列的每一平面具有单独字段。其具有与ABL 1810相同的格式,因而可容易地在EBL 1811与ABL 1810之间交换条目。因为EBL 1811作为单一扇区而被保持在非易失性存储器中,所以其可被快速存取和更新,因而促进EBL 1811与ABL 1810之间的交换。当ABL为满或空时,可发生EBL与ABL之间的地址交换。或者,交换可能频繁地发生,以避免存储器阵列中特定位置的大量使用。EBL 1811中的地址可与ABL1810进行交换,且还可与平面区块列表进行交换。
一EBL扇区可被保持在仅含EBL扇区的EBL区块中。图18B展示具有多个EBL扇区的EBL区块1801。当改变EBL数据时,一新的EBL扇区被写入且旧的EBL扇区变为过时的。因此,过时的扇区1803含有EBL的不再有效的先前拷贝。仅最后写入的EBL扇区1802才有效。EBL扇区还可含有每一EBL字段中所列出的擦除块的计数。这些计数被用作形成适应性元区块时选择平面的一因素。这些计数的拷贝还可被保持在日志1813中。
可针对阵列的每一平面,将诸如PBL 1812的平面区块列表(PBL)保持在非易失性存储器中。PBL 1812是存储器阵列的特定平面中的擦除块的一列表。ABL 1810或EBL1811中所列出的擦除块未在PBL 1812中列出。PBL 1812可占据一扇区,虽然所述扇区不必为满的。通常,PBL一起被分组在一PBL区块或多个PBL区块中。PBL区块是一仅含PBL扇区的专用区块。当PBL扇区中的信息发生变化时,一已更新的版本被写入PBL区块中的下一位置。旧的扇区被标记为过时。对于一特定平面,仅有一有效PBL扇区存在于一特定PBL扇区中。然而,如果PBL扇区在不同PBL区块中,则对于一特定平面,可存在两个或两个以上有效PBL扇区。一PBL扇区具有两个字段,即定义擦除块位置的一组条目与列出PBL区块内所有有效PBL扇区的位置的扇区索引。定义擦除块位置的条目不一定具有任何特定次序。条目的次序可能是与对应EBL字段交换的结果。只有最后写入的PBL扇区的索引才是有效的。在一部分被写的存储器中,存在许多已擦除块,因而存在许多PBL扇区需要许多PBL区块。然而,当填充存储器时,已擦除块的数目减小,并且所需PBL区块的数目减小。在逻辑上被填满的存储器系统中,可能没有PBL区块。PBL 1812与EBL之间的地址交换类似于EBL与ABL之间的地址交换。所述交换可能是单向或双向的。如果使用多个PBL区块,则一PBL区块可能是用于交换的活动区块。所述活动PBL区块可被周期性地改变。可作为一后台操作而从单一PBL扇区中更新EBL 1811中的字段。
图18C展示用于一使用适应性元区块的存储器系统中的地址转换信息的地址表格管理阶层。当根据数据更新算法将数据扇区写入存储器阵列中时,地址表格管理器更新地址表格管理阶层中的相关控制数据结构,以建立逻辑到物理映射的非易失性记录并允许存储器阵列中任何扇区的快速转换。可通过允许通过从非易失性存储器中读取单一扇区而确定任何扇区的物理位置来达成快速转换。如果在非易失性存储器中尚未更新物理位置,则可从易失性RAM快速确定物理位置。因为适应性元区块的大小和配置是可变的,所以如果一元区块中此类可擦除块的位置未存储在非易失性存储器中,则将难以恢复所述位置。因此,将一元区块的擦除块的位置存储在非易失性存储器中。
在图18C的阶层顶部是一写入扇区列表(WSL)1814。WSL 1814一般被保存在诸如控制器RAM的易失性存储器中。WSL 1814识别通过一主机而与一连续写入串流相关联的扇区或从非易失性存储器中的另一位置重新定位的扇区。针对每一主机写入串流,存在一单独WSL。当一元区块被分配用于来自主机的一新写入串流时,打开WSL。WSL可能具有一简化形式,例如起始位置和所写入扇区的数目。
日志1813在WSL 1814之下。日志1813存储被分配用于存储WSL 1814中所列出的扇区的适应性元区块的累积列表。日志1813还含有其被更新时所有WSL的拷贝。只要一元区块被分配,就更新日志1813。日志1813可能被包含在一日志区块内的日志扇区中。当日志1813中的信息发生变化时,将一新的日志扇区写入日志区块中下一可用位置。先前日志扇区变为过时的,且仅最后写入的日志扇区才是有效的。在日志1813之下是暂时组地址表格(TGAT)1815和组地址表格(GAT)1816。GAT 1816是存储在非易失性存储器中的扇区中的地址表格,其含有以逻辑组地址次序按顺序排列的每一逻辑组的物理地址。因而,GAT中的第n个条目与具有逻辑组地址n的逻辑组相关。存储在GAT 1816中的地址数据采用图16所示的格式,其具有元区块大小、组编号和区块地址的条目。
GAT扇区可被存储在一专用GAT区块中,所述专用GAT区块具有用于一组逻辑上邻接的逻辑组的条目。一GAT区块被分成两个分区,即GAT分区与TGAT分区。GAT分区针对GAT区块的逻辑地址范围中的每一逻辑组含有一原始条目。TGAT分区含有格式与GAT扇区相同的扇区。在更新GAT之前,TGAT扇区用于更新地址数据。周期性地,一区块中的GAT分区被重新写入以并入TGAT分区中的扇区中所记录的更新。TGAT扇区暂时取代GAT中的对应扇区,以更新地址信息。TGAT扇区含有有效TGAT扇区的索引。此索引仅在最后写入的TGAT扇区中才是有效的。GAT不需要此类索引。TGAT扇区使用来自与WSL相关联的日志的地址信息来更新GAT扇区。接着删除WSL与日志条目。
可从列表1814到1816确定具有特定逻辑地址的数据扇区的物理扇区地址。首先读取WSL,以确定扇区是否被最近写入。如果是,则根据与WSL中扇区位置对应的元区块地址找出物理区块地址。如果在WSL中未找到扇区,则读取TGAT扇区中的索引以确定所述扇区是否具有一TGAT条目。如果是,可通过读取适当TGAT扇区来确定物理扇区地址。如果扇区未在WSL或TGAT中列出,则读取适当GAT扇区以确定其物理位置。可执行控制器SRAM中日志、TGAT和GAT条目的先行快取,以在按连续地址次序写入或读取数据时缩短地址转换时间。
图18D展示用于管理已擦除块和地址转换的数据结构。除了上述列表之外,还展示区块地址1821和引导块1820。区块地址1821形成存储控制数据结构的所有擦除块的物理地址的列表。一专用区块地址(BA)区块可用于存储含有区块地址1821的BA扇区。当控制区块的位置发生变化时,写入新的BA扇区。先前BA扇区被标记为过时。因此,仅最后写入的BA扇区才是有效的。
引导块1820是一含有引导扇区的专用区块。当引导扇区中的信息发生变化时,写入新的引导扇区。仅最后写入的引导扇区才是有效的。引导块1820具有一固定物理位置,并且通过在系统初始化期间扫描而加以识别。因为引导块的位置被固定在一范围内而并非在一精确位置处,所以扫描可能是必需的。此需要考虑不良擦除块的可能性。引导块的位置被固定在一狭窄范围内,所以可快速完成所述扫描。引导扇区含有区块地址1821的位置和可能需要的任何其他系统配置信息。因此,在初始化之后,可快速重建图i8D中的数据结构。引导块1820具有一固定位置并指示区块地址1821的位置,其指示所示数据结构的位置。
上述特定数据结构使用专用区块,诸如EBL区块、PBL区块和GAT区块。此等专用区块可为存储器阵列的一单一擦除块,或可为一包含多个擦除块的适应性元区块。使用一适应性元区块的一优点在于,所用适应性元区块的大小可被调整到欲保存的数据量。例如,当一存储器具有大量的已擦除块时,可能会有大量PBL扇区,因此一较大PBL区块可能是适当的。当存储器阵列由数据填充时,已擦除块的数目较少,因而PBL扇区的数目较少,且较小PBL区块可能是适当的。
如果小于最大大小的适应性元区块用于控制数据,则控制数据可与其他数据并行地被编程。当从主机发送欲编程的数据到存储器阵列时,此并行编程可允许控制数据与主机数据的编程同时加以更新。因此,在更新控制数据时不会中断主机数据的编程,虽然由于可用于主机数据编程的并行度被降低而可能会降低编程速度。因此,图15D、15E和15F中所示的并行编程的实例可应用于并行编程控制数据、复制数据和主机数据的组合。如果将主机数据编程延迟到控制数据已被编程时,则此可避免在其他存储器系统中观察到的延时。
非易失性RAM
特定非易失性存储器结构使得能够以随机方式存取数据。此与快闪存储器相反,其中按最小的单位页写入数据,并且按最小的单位擦除块擦除数据。非易失性随机存取存储器(NVRAM)的实例包括磁阻性RAM(MRAM)、铁电RAM(FeRAM)和相位变化存储器(还被称为奥弗辛斯基电效应统一存储器(Ovonics Unifled Memory)或OUM)。NVRAM可被用作还使用快闪存储器的存储器系统的一部分。NVRAM可位于一单独芯片上,或可被并入到一控制器芯片或一快闪存储器芯片上。NVRAM可为一快快闪存储器储卡或一嵌入式快闪存储器系统的一部分。NVRAM可用于许多与易失性RAM相同的应用,其优点在于断电不会使存储于NVRAM中的数据丢失。例如,媒体管理表格可被保存在NVRAM中。
图19展示位于存储器系统1900上的NVRAM 1901。存储器系统1900可实施在一可移除存储卡中。NVRAM 1901可用作为一缓冲器,用于缓冲正从主机1905接收到的数据。通过在将数据编程到快闪存储器阵列1910之前缓冲数据,存储器阵列1910的适应性元区块可被配置为较佳地适配所接收到的数据。在图12A、12B和12C中所示的先前实例中,存储在存储器阵列的元区块中的数据随后被复制到被较佳地配置用于所述数据的元区块。通过使用一NVRAM缓冲器,可避免或最小化此从快闪存储器的一部分到另一部分的复制。
图20展示如何将适应性逻辑块配置为反映最初存储于NVRAM中的数据串流的边界的一实例。将已从主机接收到的数据串流2001和2002存储在NVRAM中。数据串流2001和2002在逻辑上是不连续的。因此,在逻辑地址范围中,在数据串流2001与数据串流2002之间有一间隙,指示其是单独的串流,且加以不同处理。还可由串流之间的时间延迟或来自主机的指示串流之间存在断开的某信息来区分不同串流。
数据串流2001具有在五个逻辑组2010到2014上延伸的逻辑地址范围。数据串流2002具有在七个逻辑组2017到2023上延伸的逻辑地址范围。适应性逻辑块2030和2031由逻辑组2010到2014形成。适应性逻辑块2032和2033由逻辑组2017到2023形成。适应性逻辑块2030到2033被配置以允许在将数据串流2001、2002编程到快闪存储器阵列2040的编程期间具有最大并行度。快闪存储器阵列2040具有四个平面,因此适应性逻辑块具有一为四个逻辑组的最大大小。适应性逻辑区块2030和2033每一者由四个逻辑组构成,且可以最大并行度被单独编程。可以最大并行度,并行地将适应性逻辑块2031、2032一起编程。如果数据串流2001对应于一特定主机文件,且数据串流2002对应于—不同主机文件,则有利的是将两个文件保存在不同适应性元区块中,以便分别更新所述文件,使数据复制量最小。因此,用于包含一数据串流的逻辑块的边界尽可能地与数据串流的边界匹配。可由其他数据串流将数据串流2001与2002在逻辑地址空间中分离。通过将若干数据串流保持在NVRAM中,可将若干数据串流的特征进行比较,以确定将数据串流中的数据编程到快闪存储器阵列2040的最佳方式。图20的实例可被实施在图19中所示的硬件上,其中数据串流2001、2002被存储在NVRAM 1901中,且存储器阵列2040对应于快闪存储器单元阵列1910。
图21展示NVRAM的另一应用。存储器系统可整合NVRAM和快闪存储器,以便根据数据的性质将数据存储在两类存储器的任一类中。例如,频繁更新的数据可存储在NVRAM中。可将NVRAM配置为像快闪存储器一样使用。如果快闪存储器具有一特定擦除块大小,则可将NVRAM配置为以相同大小的数据单位来操作。
图21展示存储在NVRAM中的已更新数据2140。适应性逻辑块2130到2132由含有来自原始数据流2105的原始数据的逻辑组2110到2121形成。适应性逻辑块2130到2132被编程到一存储器阵列(未图示)。从主机接收已更新的数据2140。如先前所述,可在更新期间将已更新的数据存储在新的适应性逻辑块中,以使一或多个适应性逻辑块含有已更新的数据,而其他适应性逻辑块仅含有原始数据。逻辑组2125、2126由已更新的数据2140和来自原始逻辑组2115、2116的某些原始数据形成。适应性逻辑块2135由逻辑组2125、2126形成。适应性逻辑块2136、2137由适应性逻辑块2131中的其余逻辑组形成。因而,适应性逻辑块2131由仅含有原始数据的适应性逻辑块2136和2137和含有已更新数据的适应性逻辑块2135取代。
适应性逻辑块2135被存储在NVRAM中,而并非在快闪存储器阵列中。此允许有效更新适应性逻辑块2135。一般而言,能以高于使用快闪存储器所能达到的速度写入NVRAM。可按非连续次序写入数据,而没有无用单元收集。媒体管理器可以类似于快闪存储器的方式来处理NVRAM。NVRAM被分成具有与快闪存储器的擦除块相同大小的可寻址单位。可并行编程可寻址单位。记录逻辑组2125、2126的位置的表格简单地记录NVRAM中的可寻址单位的地址。如果后续更新具有与已更新数据相同的逻辑范围的数据,则可快速进行这些更新,而无需将数据从快闪存储器的一部分复制到另一部分。可将适应性逻辑块2135从NVRAM重新定位到快闪存储器。例如,当NVRAM中没有足够容量用于另一目的时,可将来自适应性逻辑块2135的数据从NVRAM移动到快闪存储器,以创建可用NVRAM容量。
适应性逻辑块2136和2137各自都仅具有一个逻辑组。可配置这些逻辑组,以形成新的适应性逻辑块2138、2139。适应性逻辑块2138、2139大于适应性逻辑块2136、2137,且可允许更有效的数据处理。
数据边界
数据边界可存在于由存储器系统所接收的数据中。数据边界(逻辑边界)的实例包括数据运行边界和文件边界。通常,一主机文件被存储为一或多个数据运行。一数据运行是由主机分配的用于文件存储的一组逻辑上邻接的扇区。数据运行被指派给逻辑地址空间中不含有有效数据的部分。图22展示两个文件,即文件A与文件B。文件A包括数据运行1、数据运行3和数据运行5。文件B包括数据运行2和数据运行4。
一文件边界在主机开始在紧邻另一文件的末端的一地址处写入一文件时建立。因此,一文件边界可位于一数据运行内。图23展示在单一数据运行中所写入的文件C与D之间的文件边界。
通常,当使用适应性元区块的存储器阵列接收数据时,用于存储数据的适应性元区块的结构不考虑数据边界的位置。此可能是因为数据边界的位置是未知的,或是因为时间约束强制将数据快速写入较大适应性元区块中。当更新存储在此存储器阵列中的数据时,可将某些数据从原始元区块复制到新的元区块。复制此数据会减小用于写入新数据的存储器系统容量。通常,在给定操作中仅更新一逻辑文件。如果一适应性元区块含有一个以上文件的部分,则必须将额外文件部分复制到新的适应性元区块。此等部分的复制可发生在无用单元收集期间,且可用完大量资源。因此,含有数据边界的适应性元区块当被更新时会引起不需要的额外开销。
可通过在编程期间最大化并行度且同时使存储器阵列内的数据复制减到最少,而达成高性能。可通过并行编程适应性元区块以达成高并行度,且通过形成具有最小大小的适应性逻辑块(元组)以含有数据边界,而达成这两个目的。适应性元区块可形成为一作为一单位而加以编程的「程序块」。一程序块是最大并行编程单位。因而,一程序块由横跨存储器阵列的所有平面而共同延伸的适应性元区块所组成。图24展示用于此存储器系统中的数据单位的阶层。
图25和26展示形成最小的元组以含有数据边界的实例。图25展示每者都存储在为最小的元组的元组中的两个数据运行边界。主机扇区数据运行2510从逻辑地址A延伸到逻辑地址A+4n+X。因而,一数据边界2520存在于逻辑地址A+4n+X处。逻辑地址A+4n+X在逻辑组2530内。形成元组B以含有数据边界2520。元组B是仅含有一单一逻辑组的最小元组。主机扇区数据运行2510的其余部分包含在元组A中。元组A不是最小元组,而含有四个逻辑组。图25还展示从逻辑地址B+Y延伸的主机扇区数据运行2511。因而,一数据边界形成在逻辑地址B+Y处。逻辑地址B+Y在逻辑组2531内。形成元组C以含有数据边界2521。元组C是仅包含一单一逻辑组的最小元组。主机扇区数据运行2511的其余部分包含在元组D中。元组D具有两个逻辑组,而并不是最小元组。当随后更新主机扇区数据运行2510和2511时,可使用不存在于已更新数据运行中的额外数据的少量复制来完成此操作,因为仅元组B和C含有额外数据,且这些组每者含有少于一逻辑组的额外数据。
图26展示被映射到具有最小大小的适应性元组的文件2610与文件2611之间的文件边界2615。文件边界2615展示在逻辑地址A+4n+X处。文件边界2615位于主机扇区数据运行2605中。逻辑地址A+4n+X发生在逻辑组2630内。元组B由逻辑组2630形成。元组A由文件2610的其余部分形成。元组C由文件2611的其余部分形成。可通过更新元组A和B来更新文件2610。因此,在文件A的更新期间,将仅复制文件2611的包含在元组B中的一部分2641。类似地,可通过更新元组B与C来更新文件B。此包括仅复制文件2610的存储在元组B中的一部分2640。
可由存储器系统根据供应到所述存储器系统的数据来确定数据边界信息,或可直接将数据边界信息供应到存储器系统。例如,主机可供应数据边界信息,所述信息关于主机供应到存储器系统的数据。数据边界信息可包括数据运行边界的位置或主机所供应的数据内的文件边界。此数据边界信息通常提供在含有边界的数据之前。如果元组的最大大小是L个逻辑组,则需要在所提供的数据前至少L个逻辑组处提供数据边界信息。
主机还可提供关于数据运行序列末端的通知,以表示无其他数据可用于立即写入。此通知使存储器系统可排程后台操作。主机还可提供关于断电操作的通知。此通知可为交握操作的一部分。在存储器系统对主机作出响应以指示其处于适合省电状况之后,断电操作才会发生。在通电之后,主机与存储器系统之间可发生一对话,以使存储器系统可通知主机关于其能力,且主机通知存储器系统关于其能力。此等能力可包括接受和使用如上所述的数据边界信息的能力。
除了从主机接收数据边界信息之外,还可由存储器系统根据其他来源确定数据边界。此可包括从已更新的数据的范围导出数据边界位置。可直接从由主机提供的数据地址来识别数据运行的起点。可根据向另一数据运行的地址转换而假定数据运行的末端。可根据目录的图案和主机的FAT存取来假定一文件边界。原始数据的元组映射还可用于推导数据和文件边界。
数据边界管理操作
在方案A中,将数据存储在一对应于数据边界位置的配置中可通过首先将此数据存储在一暂时位置中、接着将数据映射到元组以存储在快闪存储器中来完成。暂时位置可由累加器RAM来提供。或者,暂时位置可由快闪存储器阵列的一部分提供。图27展示使用数据边界管理信息来配置数据的这两个替代方案。方案A展示存储在暂时累加器RAM中的数据,其在使用数据边界管理存储于快闪存储器中之前进行元组映射。方案B展示存储在快闪存储器中的数据,其中在元组重新映射之前具有中间元组映射,然后使用数据边界管理存储在快闪存储器中。
暂时累加器RAM可从主机接收数据扇区,所述扇区随后被传输,以便以由数据边界位置确定的方式在快闪存储器中进行并行编程。累加器RAM可具有足够容量,以允许存储至少一数据程序块。因此,累加器RAM中的数据可被配置成元组,所述元组可接着被并行地编程到单一程序块中。累加器RAM可为诸如NVRAM 1901的非易失性存储器。或者,累加器RAM可为一易失性存储器,在所述情形下,如果在将数据编程到快闪存储器之前,主机移除功率,则累加器RAM会有数据损失的危险。此危险可通过在主机与存储器系统之间具有一适当协议来被管理。
图28A展示一程序块2800,其由图25所示的元区块A到D组成。为获得最大编程速度,需要一起编程元区块A到D,因而使用存储器系统的最大并行编程容量。为了更新文件的效率,需要将元区块B和C保持为每者都由一擦除块构成的单独元区块。图28A所示的数据配置可达成这两个目的。数据扇区从主机中接收作为两个单独数据运行,即从A到A+4n+X的数据运行2510和从B+y到B+3n-1的数据运行2511。图28B展示如何将来自此等数据运行的数据扇区编程到元区块A到D中。在此实例中,一页含有一单一数据扇区,虽然在其他实例中,一页可能包含多个扇区。一程序块横跨存储器阵列的所有平面而延伸。在一程序块内,可以由元区块配置确定的次序来编程扇区。如果一程序块页包含来自存储器阵列的每一平面的一页,则指示程序块页可被并行地编程。因此,程序块页0横跨存储器阵列的所有平面而延伸,且在相同编程步骤中程序块页0中的所有扇区被编程。当已编程完程序块页0时,则编程程序块页1,以此类推。图28B中编程所述扇区的顺序不是图25所示从主机接收这些扇区的次序。图28C展示累加器RAM中这些扇区的次序的变化。图28C展示保存在累加器RAM中正被传输用于编程到程序块2800的数据运行2510和数据运行2511。可如图所示,欲复制到程序块的数据可写入累加器RAM。扇区A+4n+X到A+5n-1和B到B+Y被复制到累加器RAM,以致其可传输到程序块。或者,欲复制的数据可能已位于快闪存储器中,且因此可直接从快闪存储器阵列的一部分复制到另一部分。图28C展示图28B的程序块页0和程序块页1的扇区映射。
如果使用快闪存储器来为从主机接收到的数据提供一暂时存储位置,如图27中的方案B,则以包含各类元组的中间格式来存储数据。可由诸如数据运行边界或文件边界的逻辑边界存在于最大元组的逻辑地址范围内且还由在任何逻辑边界之后传输其他数据的要求来确定此等元组的大小。以下五个元组类型可用于以中间形式来存储数据:完整元组、部分元组、短元组、起始元组和多文件元组。
图29A展示一完整元组2900。如果在欲存储的数据中不存在逻辑边界,或如果不存在关于所存在的任何逻辑边界的可用信息,则分配一完整元组。
图29B展示一部分元组2901。如果逻辑边界存在于欲存储的数据中,但在以中间格式来编程数据时需要最大并行度,则可能分配一部分元组。逻辑边界可在编程之前就已知(例如,来自主机)或可在编程期间碰到。一部分元组含有比一元组中可能的最大数目要少的逻辑数据组。可将部分元组编程到具有最大大小的元区块,以便使用所述阵列的所有平面来并行编程,因此使编程尽可能快速。
图29C展示短元组2902。如果一逻辑边界存在于欲存储的数据中且不需要最大并行度,则分配一短元组。短元组具有比一元组中可能的最大数目的逻辑组要少的逻辑组。一短元组被编程到一元区块,所述元区块含有比具有最大大小的元区块中所含的擦除块更少的擦除块。尽管使用短元组可并行编程重新定位的数据,但数据写入带宽会减少。当主机已发信号表示其他数据将不会紧接数据运行边界时,可使用一短元组。
图29D展示一起始元组2903。分置一起始元组以将数据存储在数据运行的起始边界。如果数据运行的第一扇区不是逻辑组的第一扇区,则可使用对准偏移。可从另一位置复制用于完成第一逻辑组的数据。如果在写入期间碰到一逻辑边界,则一起始组还可为一部分元组。
图29E展示多文件元组2904。一多文件元组含有一文件边界,因而含有至少两个不同文件的部分。一多文件元组还可为部分、短或起始元组。
随后当存在一逻辑边界时,可稍后将如上所述的中间格式的元组中的数据重新映射到更理想的配置。因为一完整元组不含有逻辑边界,所以不需要重新映射。然而,可如图30所示重新映射部分、短、起始和多文件元组。图30A展示将一部分元组3010重新映射到元组A和元组B。元组B是具有最小大小的元组(一逻辑组)。使用从原始区块复制的数据来完成元区块B。图30B展示将短元组3020重新映射到元组A和元组B。此类似于部分组的重新映射。图30C展示将起始元组3030重新映射到元组A和元组B。此处,起始元组3030具有一对准偏移。移除此对准偏移,使得元组A处于连续次序。图30D展示重新映射到元组A、B和C的多文件元组3040。元组B含有逻辑边界3041。元组B是具有最小大小的元组(一逻辑组)。
可分析中间格式的数据以在从主机接收之后立即进行重新映射。然而,数据的重新定位不会立即发生。而是,可针对数据和关于数据的信息来排程编程操作,并将已计划的重新映射存储在重新映射列表中。接着可在后台在一更适当的时间进行数据重新定位,或者可由诸如接收到已存储数据范围内的已更新数据的事件来触发数据重新定位。可将重新映射列表存储在快闪存储器中的适当控制信息结构中,例如存储在日志中、或专用重新映射扇区中。
所述重新映射列表对于每一最近写入的中间格式元组(对于所述元组,一重新映射操作正待处理)具有一条目。此元组一般含有一数据边界。重新映射列表中的条目可含有如下六个字段:
元组的类型(部分、短、起始或多文件)
元组中数据运行的起点的逻辑地址
元组大小(元组中逻辑组的数目)
元区块大小(元区块中擦除块的数目)
元组内边界的偏移
页标签
当建立中间格式的元组时,一条目被添加到所述列表。当从所述列表中删除中间格式的元组时,从所述列表中移除一条目。当添加或删除一条目时,可通过将新列表写入到新位置(例如新的日志扇区或新的重新映射扇区)来更新所述列表。
重新映射列表中的元组映射不用于任何与相关数据有关的媒体管理操作。媒体管理控制结构与被分配用于暂时存储数据的中间格式元组有关。因此,可从重新映射列表中移除条目,而不会对其他媒体管理功能造成影响。例如,如果待处理操作的积累变得太大,则可删除条目。其只是会降低将数据存储在存储器阵列中的方式的效率。
可排程从中间格式编程数据,使得不会减小可供主机用于写入主机数据的写入带宽。在未从主机接收数据时,重新映射操作可作为一后台操作来执行。可并行编程一单一中间元组的所有重新映射元组。可建立与主机的交握协议,以管理存储器系统的断电,以便在执行重新映射操作时不会发生功率损失。可与原始主机数据的编程并行地执行重新映射操作。图31展示将来自主机3150的数据编程到适应性元区块3110而将从存储器阵列3160重新定位的数据并行地编程到适应性元区块3120。由于此并行操作将减小可用于写入原始主机数据的写入带宽,所以仅当主机通知存储器系统无其他原始主机数据可用于立即写入时,此并行编程可能才是适当的。可响应于主机更新而执行一重新映射操作。如果欲更新的数据采取中间格式且在一重新映射列表中列出,则已更新的数据可以重新映射格式连同从中间元组复制的数据被写入。
可暂停重新映射操作,以允许对主机接口处的新交易提供响应。可在当前页编程操作完成之后暂停重新映射操作,在所述情形下,随后以下一页的编程而恢复。或者,如果芯片结构允许,可在编程页的过程中暂停重新映射操作,以便对主机作出快速响应。为了在页编程期间暂停重新映射操作,可通过向快闪存储器芯片发布一重设命令来终止其在快闪存储器中的运行。接着,芯片可响应于新的主机交易而立即用于存取。随后,可通过将已暂停页的相同数据重新传输到快闪芯片,随后以一编程命令,来恢复重新映射操作。许多快闪芯片结构允许重新开始编程已被部分编程的页,只要数据模式保持不变。
其中由主机提供边界位置信息的数据存储
在一实施例中,主机可为存储器系统提供额外信息,其可用于将主机数据更有效地存储在存储器阵列中。此信息的一实例是所发送主机数据中数据边界(逻辑边界)的位置。通常,应在发送含有边界的主机数据之前提供数据边界的位置,以便当主机数据被接收到且不必先以中间格式存储时,可以一有效方式来存储主机数据。
为了根据数据边界位置更有效地存储主机数据,在将数据存储到存储器阵列的适应性元区块中之前,缓冲特定数据可能是有利的。可为此目的而提供一串行快闪缓冲器。图32展示由来自已擦除块集区3204的擦除块组成的串行快闪缓冲器3202。可将串行快闪缓冲器3202中的擦除块配置为具有最大大小的适应性元区块,像常规元区块一样。此允许以存储器阵列的最大并行度将数据编程到串行快闪缓冲器。如果存储器阵列被分成平面,则此一般意味着串行快闪缓冲器的元区块含有来自存储器阵列的每一平面的擦除块。因而,串行快闪缓冲器3202由一或多个缓冲器元区块组成,所述缓冲器元区块一般(但不必定)是元区块,从而允许以最大并行度来存储数据。可用作串行快闪缓冲器的结构的一实例在与本申请案在相同日期递交的、代理人案号为SNDK.406US0且题为“Scratch Pad Block”的美国专利申请案中提供,所述申请案以引用方式全文并入本文中。
作为如先前所述将数据直接存储在存储器阵列中的适应性元区块中的替代方案,可将主机数据发送到串行快闪缓冲器3202。串行快闪缓冲器可由存储器阵列中的一或多个缓冲器元区块构成。一缓冲元区块可能含有逻辑上不相关的多个数据部分。由于逻辑边界与缓冲器元区块的元区块边界不匹配,因而串行快闪缓冲器3202内的不同元区块不具有任何特别重要性。因此,连续数据的一部分可存储在一单一元区块中,或可存储在多个元区块中,且一般与缓冲器元区块不对准。当从缓冲器元区块复制数据时,可使缓冲器元区块中的数据变为过时的。当缓冲器元区块中的所有数据为过时的时,可将含有缓冲器元区块的擦除块返回到已擦除块集区。因此,可视需要,由来自已擦除块集区的擦除块形成缓冲器元区块。接着,当其仅含有过时的数据时,所述擦除块被擦除并返回到已擦除块集区。串行快闪缓冲器3202形成一线性存储器,其中将欲存储在串行快闪存储器3202中的新数据写入在缓冲器顶部由来自已擦除块集区3204(来自分配块列表或类似结构)的链接区块形成的缓冲器元区块中,且将位于缓冲器底部的缓冲器元区块中的数据复制到已分配的适应性元区块,以使位于缓冲器底部的元区块中的数据变为过时的。将仅含有过时的数据的缓冲器元区块的擦除块返回到已擦除块集区3204(到平面区块列表或类似结构)。缓冲器元区块可为具有固定大小的元区块,或可为具有已单独选定大小的适应性元区块。对于某些实例,具有最大大小的元区块可用作为一缓冲器元区块,以提供一高并行度。
图33A展示将主机数据存储于快闪存储器阵列的已分配适应性元区块中的两条替代性路线。数据可被直接写入3306到一已分配适应性元区块3308中。或者,数据可被写入3310到一串行快闪缓冲器3302的缓冲器元区块3312,并接着从缓冲器元区块3312复制3314到一已分配适应性元区块3316。这些替代性路线中的哪条路线用于特定数据可能取决于逻辑边界的位置。具体地说,如果逻辑边界的位置有主机提供,则可根据所提供的位置来确定应使用哪条路线。如果一部分数据等于或大于最大元组且不具有任何逻辑边界,则可将所述部分数据直接存储在已分配的适应性元区块中。如果可能,可使用具有最大大小的适应性元区块以获得最大并行度。如果要存储小于最大元组的一部分数据,则可根据所述部分的大小来确定使用哪条路线。如果一部分数据具有一逻辑边界,则一般需要将其存储在最小适应性元区块中。此等数据部分可被存储在缓冲器元区块中,且接着复制到已分配的适应性元区块中。此允许以最大并行度从主机接收并最初快速地存储此等数据部分。随后,此等数据部分与其他数据并行地被复制到已分配的适应性元区块,如图33A中的3306和3314所示,以便使用高并行度。因此,即使写入具有最小大小的适应性元区块,但一般仍可避免以低并行度写入数据。
图33B展示将缓冲器元区块3318中的数据复制3320到一最小适应性元区块3322的另一实例,在所述适应性元区块3322中,其与从原始适应性元区块3328复制的数据3324一起存储。此实例是含有逻辑边界的最小适应性元区块的典型。由于逻辑边界发生在适应性元区块的逻辑地址空间内的某处,故当更新逻辑边界一侧上的数据时,已更新的数据与某些原始数据都存储在适应性元区块中。
图34展示使用串行快闪缓冲器的方案,即方案C,其与先前所述的方案A和B进行比较。方案A和B以某一中间格式存储所有接收到的数据(在RAM中或在快闪存储器中),确定数据的特征(诸如逻辑边界的位置),且接着根据那些特征将数据存储在快闪存储器中。相反地,在方案C中,从主机接收数据的特征。这些特征的接收允许根据所述特征直接将数据存储在快闪存储器中。然而,某些数据被存储在缓冲器元区块3430中,且接着根据所述特征被复制3432到快闪存储器中进行存储,以允许高速操作。因而,缓冲器元区块的目的不同于RAM或方案A和B的中间元组的目的,且正存储的大部分数据被直接写入已分配的元区块。
可在数据运行中更新数据,其中一数据运行是由主机分配的一组逻辑上邻接的扇区,所述扇区在分配之前立即为闲置的,且延伸于已分配的扇区之间。因此,当主机将数据分配给由已分配的逻辑地址空间部分界定的一闲置逻辑地址空间连续部分时,形成一数据运行。在某些系统中,数据运行不与元组结构对准,其会在数据更新期间引起低效率。在此处所述的某些系统中,可通过使元组的大小和边界位置(因而对应适应性元区块的大小)适合数据,可使数据运行更好地与元组对准。具体地说,可使用最小元组来存储含有逻辑边界的数据部分。数据运行边界的位置可由存储器控制器来确定。当从主机接收到与最后接收到的数据不连续的数据时,可识别数据运行起始处的数据运行边界。还可由逻辑地址中的跳跃来识别数据运行末端处的数据运行边界。此跳跃之前的最后扇区可为一数据运行的最后扇区。然而,可能会有例外,其中从主机接收到的扇区中的逻辑地址跳跃是由于更新系统信息(诸如FAT)或将写入交错到不同数据运行中。在某些系统中,主机可以交错方式写入一个以上数据运行。一控制器可保持多个打开数据运行以处理此情况,因此如果接收到与打开数据运行连续的数据,则将其视为所述数据运行的一部分。如果其与一打开数据运行不连续,则可将其认为是一新数据运行的起点。在一时间周期之后、当数据运行的数目达到一限度时或响应于来自主机的信号,可由控制器关闭打开数据运行。
图35A展示以非对准(N)存储的数据运行3530。此为不考虑逻辑边界的位置而存储的数据运行。元组结构展示具有最大大小的所有元组。图35B展示以部分对准(P)存储的数据运行3532。使用最小元组3534(一逻辑组)来存储数据运行3532起始处的数据运行边界。数据运行3532的其余部分被存储在最大元组3536、3538中,使得数据运行的末端发生在最大元组3538中。因此,对于在每一末端具有数据边界的数据运行,仅将一数据边界分配给具有最大大小的元组。图35C展示以完全对准(F)存储的数据运行3540。具有最小大小的元组3542、3548被分配给数据运行3540两端的数据运行边界。若有可能,使用最大元组(例如,元组3544)来获得高并行度。然而,在此实例中,一缩小的元组3546被用于倒数第二个元组。
通常,如果一最小元组被分配给一数据运行的每一端,则这些元组之间的数据运行的部分不形成整数个最大元组。因此,来自数据运行的中间部分的至少一元组的大小小于最大大小。在图35C中所示的实例中,倒数第二个元组3546是缩小的元组(或填补元组)。然而,填补元组不必处于任何特定位置。图35D展示具有映射到具有不同大小的适应性元区块的数据运行的数据运行结构。具有最小大小的头部区块3550和尾部区块3556用于含有数据运行边界的逻辑组。在含有数据运行边界的逻辑组3550、3556之间,如有可能,数据被映射到具有最大大小的适应性元区块(例如,元区块3552)。在其他实例中,多个完整区块用于数据运行。其余数据被存储在填补区块3554中,所述填补区块3554是具有缩小大小的适应性元区块。
图35E展示以完全对准存储在具有八个逻辑组的最大元组大小的存储器中的不同长度的数据运行。如果数据运行边界发生在一单一逻辑组中,此逻辑组形成一具有最小大小的元组3558,且可被视为头部元组。如果数据运行延伸到两个逻辑组中,则每一逻辑组形成具有最小大小的元组3560、3562,且可被视为头部和尾部元组。如果数据运行延伸到三个逻辑组中,则中间的逻辑组3564形成一具有最小大小的元组,且可被视为一填补元组。对于延伸到三个与九个逻辑组之间的数据运行,头部和尾部元组保持相同,且根据数据运行的大小来增加填补元组的大小。如果数据运行延伸到十个逻辑组,则可在头部和尾部元组之间形成一完整元组3566。因此,没有填补元组可能是必要的。对于大于十个逻辑组的数据运行,可形成一完整的元组与一填补元组。对于大于十八个逻辑组的数据运行,则可形成两个完整的元组。对于较大的数据运行,可形成多个完整的元组,需要时再加上一具有适当大小的填补元组。
当主机更新数据时,一般在延伸于数据运行边界之间的数据运行中接收数据。此数据运行边界的位置可与先前所识别的相同并用于存储数据。因此,数据运行可更新已按与更新数据的数据运行边界对准的方式所存储的数据。例如,如果一数据运行更新先前已由延伸于相同逻辑地址范围上的数据运行所更新的数据,则所述数据可与相同逻辑边界对准。如果已存储的数据以与相同数据边界的完全对准而存储,则更新数据包括完全到完全转换。如果所存储的数据以部分对准而存储,则更新可能包括部分到完全或部分到部分转换。如果所存储的数据以非对准而存储,则更新可能包括非到完全、非到部分或非到非转换。图36展示数据更新期间可能发生的某些转换。虽然可能有某些其他转换(诸如完全到非),但其一般是不理想的,且未在图36中展示。
图37展示当从主机接收到数据运行3770时完全到完全(F2F)转换的一实例。数据运行3770可作为逻辑上连续的数据扇区串流而被接收到。除此之外,主机可发送数据边界位置信息,其包括数据运行起始和末端处数据边界的位置。虽然数据运行的起始位置3772可根据数据运行3770中所接收到的第一扇区的地址而加以确定,而无需事先知道,但在此实例中,在接收到数据运行3770的最后扇区之前,已知数据运行的末端位置3774以允许完全对准。在其他实例中,可能无法确定地知道数据运行的末端位置,但可从先前数据运行的末端位置预测所述位置。此等数据边界位置可由主机记录在列表中。来自主机的数据运行3770的数据运行边界与先前所接收到并以完全对准存储的数据运行的数据运行边界相同。因此,可分配大小与原始元组相同的已更新元组。数据运行3770的数据部分A和D位于包括一数据运行边界的逻辑组中,因此被存储在最小元组中。因此,其最初存储在串行快闪缓冲器中(A→K、D→L)。随后连同原始数据(P→E、Q→J),缓冲器K和L中的数据被复制到头部元组3776和尾部元组3778(K→F、L→I)。作为最小元区块将头部和尾部元组3776、3778存储在存储器阵列中。数据运行的部分B形成最大元组G,因此被直接存储在具有最大大小的已分配元区块中,而不存储在串行快闪缓冲器中。数据运行3770的部分C形成小于最大大小的元组H。元组H直接被写入快闪存储器中已分配的适应性元区块。
在某些实例中,诸如部分C的数据部分可在存储于已分配的适应性元区块之前存储在串行快闪缓冲器中。然而,根据部分C的大小,将其直接写入快闪存储器可能更为有效。例如,如果部分C包含几乎相当于整个元组的数据量,则将数据直接写入快闪存储器可能比将其写入串行缓冲器且然后以对准格式将其复制到快闪存储器更为有效。一般而言,串行缓冲器中缓冲数据而产生的效率增益对于少量数据为最大的,而对于大量数据为最小的。可根据数据部分的大小来确定是否缓冲数据。可将完整的数据元组直接写入最大的元区块,可将包含一逻辑组或更少的数据写入串行缓冲器,且如果介于一逻辑组与一完整元组之间的数据小于一临界大小,则可将其进行缓冲。例如,所述临界值可为一完整元组中逻辑组的数目的一半,或一完整元组中逻辑组数目的一半减去2(N/2-2,其中N是一完整元组中逻辑组的数目)。N/2-2是为允许有效操作并获得一收敛的串行快闪缓冲器而计算的临界值。因此,如果在元组中有十六个逻辑组,则含有六个逻辑组或更少的数据部分可在串行缓冲器中缓冲,而含有六个以上逻辑组的数据部分则可直接写入快闪存储器。
图38展示从部分对准转换到完全对准(P2F)的一实例。在此实例中,数据运行3880可从主机接收并以完全对准进行存储。分配具有最小大小的头部元组3882和尾部元组3884。以与数据运行的数据边界部分对准的方式预先存储由数据运行3880更新的数据。因此,对于与头部元组相同的逻辑地址空间,存在具有最小大小的原始元组3886。然而,不存在与数据运行的尾部对应的原始最小元组。类似于图37所示而对数据运行的起始处的数据进行处理。将数据A存储在串行快闪缓冲器中(A→K)。随后,连同从原始元组(P→E)复制的缓冲器E中的数据,将缓冲器K中的数据复制到具有最小大小的已更新元组3882(K→F)。如同先前,将数据B和C编程到元组G和H。元组G被展示为具有最大大小的元组,其可被直接编程到具有最大大小的已更新的元区块。元组H的大小小于最大大小,且其可被直接编程到已更新的元区块,或可首先存储在串行快闪缓冲器中,这取决于视元组H的大小。在此实例中,元组H被直接编程到已更新的元组。如果接收到较长的数据运行,则可使用具有最大大小的额外元组。
将数据运行3880末端处的数据D复制到串行快闪缓冲器(D→L),且随后连同从原始元组(Q→J)复制的数据J,将其复制到尾部元组3884。数据J从大于最小大小的元组3888(在此情形下是一具有最大大小的元组)复制。元组3888包括仅含有未由数据运行更新的数据的逻辑组R。逻辑组R被重新定位到重新定位组(R→T)。在其他实例中,一重新定位组可含有多个逻辑组。原始数据从原始元组到重新定位组的此复制可与其他编程操作并行进行,以获得较大效率。如图37和38所示,部分到完全转换可包含比完全到完全转换(例如复制原始数据到重新定位元区块T)更多的数据复制。
图39展示对于从主机接收到的数据运行3990进行的从部分对准转换到部分对准(P2P)的一实例。此转换类似于以上针对数据运行的起始处的数据所述的转换。将数据运行3990的起始处的数据A存储在串行快闪缓冲器(A→K)中,且随后连同从原始元组3994(P→E)复制的数据E,将其复制到具有最小大小的已更新的元组3992(K→F)。将数据B编程到具有最大大小的元组(B→G)。将延伸到数据运行边界并包括一小于最大大小的元组的数据D写入一最大的已更新的元组3996(D→I)。将来自原始元组的数据Q复制到相同的最大的更新元组3996(Q→J)。因此,在此转换期间,对准保持相同,其中将起始数据运行边界映射到具有最小大小的适应性元组3992,且将其余数据映射到具有最大大小的适应性元组。
图40展示从非对准转换到完全对准(N2F)的一实例。接收到来自主机的数据运行4002,并将其用于更新以不与数据运行边界对准(非对准)存储的原始数据。在此实例中,将原始的数据存储在具有最大大小的元区块中。相反,已更新的元组包括用于数据运行4002的起始与末端处的数据边界的具有最小大小的头部元组4004和尾部元组4006。将来自数据运行4002的第一部分逻辑组的数据A缓冲到串行缓冲器(A→K)。类似地,将来自数据运行的最后部分逻辑组的数据D缓冲到串行缓冲器(D→L)。此可对由主机提供的关于数据运行4002的末端处的数据运行边界位置的信息作出响应。将数据B存储为具有最大大小的元组(B→G)。对于较大的数据运行,可将额外数据存储为具有最大大小的额外元组。将元组G存储在具有最大大小的元区块中。将未分配给头部、尾部或最大元组的其余数据C分配给填补元组(C→H)。在此实例中,将元组H直接存储在小于最大大小的元区块中,虽然在其他实例中,可将其首先存储在串行缓冲器中,然后将其复制到小于最大大小的元区块。在此实例中,可将C视为尾部填补数据,且可将H视为尾部填补区块。可将原始元组中未被更新的数据(O、P、Q、R)复制到重新定位元组(O→S、R→T)或头部和尾部元组(P→E、Q→J)。如果可能,可并行地进行此等数据部分的复制。例如,可并行地进行将部分O和R复制到已重新定位的元组S和T,其中O和R一起包含与一最大或更小的元组等效的数据。部分P和Q的复制可与从其他原始元组或从串行缓冲器的其他复制操作并行地进行。如果数据部分C是短的,则可缓冲数据部分C,并与其他的编程操作(例如数据部分E、F、I和J的编程)并行地将其复制到已更新的元组。
图41展示从非对准转换到部分对准(N2P)的一实例。原始元组未与数据运行4110的数据运行边界对准。在此实例中,原始元组是最大元组,尽管对于非对准,其不一定如此。所形成的已更新元组具有与数据运行的部分对准。具有最小大小的已更新元组4112被分配用于数据运行4110的起始处的数据运行边界,如图40所示。其余元组是最大的元组,且数据运行4110的末端处的数据运行边界未被分配到最小的元组。而是,在此实例中,数据运行4110的末端处的数据运行边界被分配到具有最大大小的元组4114。原始元组含有被复制到已更新元组(P→E、Q→J)或已重新定位元组(O→S、R→T)的原始数据(O、P、Q、R)。
图42展示从非对准转换到部分对准(N2P)的另一实例。原始元区块再次是具有最大大小的元区块。图42展示来自主机并具有不对应于原始元区块(非对准)的数据运行边界的数据运行4220。形成已更新元区块,以便与数据边界部分对准而将数据存储在数据运行中。在此实例中,将具有最小大小的已更新元组4222指派给数据运行4220的起始处的数据运行边界。将其他已更新元组的元组边界定位于与原始元组的元组边界相同的位置。在此实例中,将小于最大大小的元组G用于头部元组与下一元组边界之间。可将其视为头部填补元组,并将存储于其中的数据视为头部填补数据。可直接或在串行快闪缓冲器中缓冲之后,将头部填补元组存储在头部填补元区块中。关于是直接存储头部填补元组还是对其进行缓冲的确定可能是基于其是大于还是小于某一临界值(如先前关于尾部填补数据所述)。如同先前一样,如需要可将原始数据复制到已重新定位的元组(O→S)或已更新的元组(Q→J)。
图43展示从非对准转换到非对准(N2N)的一实例。在此实例中,从主机接收到数据运行4330,其更新存储在与数据运行边界不对准的原始元组中的数据。已更新的数据存储在也与数据运行边界不对准的已更新元组中。在此实例中,原始元组和已更新的元组仅包括具有最大大小的元组。此方案可用于不使用适应性元区块的系统(其中元区块大小是固定的系统)中。在此实例中,不使用串行快闪缓冲器。将原始数据(P、Q)复制到已更新的元区块(P→E、Q→J)。因而,大量原始数据被存储在已更新的元组中,且如果接收到具有相同数据运行边界位置的后续数据运行,则再次复制此数据。
数据运行更新管理
一文件是在主机系统内建立或由主机系统从一外部来源接收到的一组数据,其在主机系统内被映射到逻辑扇区地址。一组邻接逻辑扇区地址被称为一数据运行。一数据运行可视为由主机分配用于存储一或多个文件或一文件的若干部分的一组逻辑上邻接的扇区,所述数据运行延伸于逻辑地址空间的先前分配的部分之间。主机可将写入操作交错到不同数据运行。通常,可在任何时间允许有限数目的打开数据运行,以便根据需要打开和关闭数据运行。可将数据运行内的一扇区写入一打开缓冲器或与一所述数据运行相关联的更新块。从数据运行接收并存储数据包括管理数据运行和用于存储数据的存储器结构(包括缓冲器和更新元区块)。图44展示某些结构和可对其进行的操作。
打开一数据运行可发生在接收到一与现存数据运行中的最后扇区不连续的扇区且所述扇区不位于所允许的从现存数据运行中最后扇区跃迁的连续地址的范围内时。当数据运行是最近更新的(LRU)数据运行,存在所允许的最大数据运行数目并且必须打开新数据运行时,可关闭一数据运行。当数据运行内的一扇区被更新(其使得将更新视为混乱)时,也可关闭数据运行。一般使用其他方法,例如美国专利申请案第10/750,155号中所述的方法,来处理此等混乱更新。
缓冲器可为用于从数据运行写入连续数据的串行快闪缓冲器的一部分。在串行快闪缓冲器中,一缓冲器无需在物理上邻接。可通过具有非邻接的缓冲器来促进对到多个缓冲器的交错写入。如果数据运行的第一逻辑组是不完整的,则当打开一数据运行时,可能打开一缓冲器。当接收到数据运行的最后逻辑组的第一扇区时,也可能打开一缓冲器。还可针对填补数据(头部或尾部填补)来打开一缓冲器,其中填补数据小于某一预定的量。当欲写入缓冲器的数据是完整的时,可关闭一缓冲器。通过将所有其数据写入一更新块来复制已关闭的缓冲器。当缓冲器是串行快闪缓冲器末端处的随后可用缓冲器中的一者时,可发生复制。通常,此复制与其他缓冲器或原始数据的其他复制并行发生。
一更新元区块可以是一被写入来自主机或来自缓冲器的某些已更新数据的适应性元区块。当接收到未发送到缓冲器且对于其不存在不完整的更新元区块的数据时,可分配一更新元区块。当从缓冲器复制数据时,也可分配更新元区块。更新元区块的大小取决于欲存储的数据量。更新元区块可以是最小的元区块、缩小的元区块或最大的元区块。例如,可将最小的元区块用于数据运行的起始(头部)和末端(尾部),可将缩小的元区块用于填补数据(头部填补或尾部填补),且可将最大的元区块用于数据运行的所有其他数据。当以来自主机、缓冲器或原始区块的数据填充最后扇区时,可将更新块视为完整的。因而,可作为从缓冲器复制操作的结果或作为从原始区块复制的结果而发生完整,其可由一数据运行的关闭来触发。
一原始元区块可以是一适应性元区块,其含有一或多个扇区,来自主机的已更新扇区已使所述扇区变为过时的。当由一扇区已更新数据的接收而使一元区块内的扇区变为过时的时,可将所述元区块视为一打开的原始元区块。当主机对任何打开数据运行的进一步写入不会使一原始元区块内的其他扇区变为过时的时,可将所述原始元区块视为完整的。可将数据从一完整原始元区块复制到一重新定位元区块。当已复制完一完整原始元区块内的所有有效扇区时,可将所述完整原始元区块视为一完全过时的原始元区块。可擦除一完全过时的原始元区块。
一重新定位元区块是一适应性元区块,可将连续数据逻辑组从原始元区块复制到所述适应性元区块中。当数据欲从原始元区块复制且不是头部或尾部元区块的部分时,可分配一重新定位元区块。当一重新定位元区块的最后扇区位置已被写入时,可将所述重新定位元区块视为完整的。重新定位元区块可为最小的或缩小的元区块。
图45展示根据本发明一实施例用于以数据边界对准来存储从主机接收的扇区的流程图。虽然此实例展示正被存储的数据扇区,但也可使用其他数据单位。最初确定扇区的存储是否包括对打开数据运行的混乱更新4550。混乱更新是其中以非连续方式来更新扇区的更新,且其在申请案第10/750,155号中进一步描述,所述申请案以引用方式全文并入本文中。作为以数据边界对准来进行存储的替代方法,还可进行对打开数据运行的混乱更新。因此,此处未详细描述混乱更新。如果确定所述扇区不需要混乱更新,则确定所接收到的扇区是否与打开数据运行连续4552。
如果所接收到的扇区与打开数据运行不连续,且如果打开数据运行的数目小于一预定最大值4554,则打开一新的数据运行4556。如果打开数据运行的数目不小于所述预定最大值,则在打开一新的数据运行4556之前必须关闭一数据运行4558(如随后描述)。在打开一新的数据运行之后,确定逻辑组边界与数据运行的起点是否存在偏移4560。如果存在偏移,则打开一缓冲器4562,缓冲器的大小等于头部数据,即数据运行的位于第一逻辑组中的那部分。随后将扇区写入此缓冲器,直到达到缓冲器的末端,并关闭所述缓冲器。
如果所接收到的扇区与打开数据运行连续,且对于数据运行存在一打开缓冲器4564,则将扇区写入缓冲器4566。如果对于数据运行不存在打开缓冲器4564,但对于数据运行存在不完整的元区块4568,则如下所述将扇区写入不完整的元区块4570。如果对于数据运行,不存在打开缓冲器和不完整的元区块,则确定所接收到的扇区是否是头部填补数据4572。同样,如果所打开的新数据运行与逻辑组边界没有偏移4560,则做出此确定。如果所述扇区是头部填补数据,则将数据量(扇区数目)与一预定值(maxpad)进行比较4574,所述预定值(maxpad)是用于缓冲的最大填补长度。如果扇区的数目不大于maxpad,则打开一缓冲器4576,其大小等于头部填补数据。如果扇区数目大于maxpad,则分配一缩小的元区块4578,且随后将扇区写入此缩小的元区块4570。
如果确定扇区不是头部填补数据4572,则接下来确定扇区是否是尾部填补或尾部数据4580。如果其不是尾部填补或尾部数据,则分配最大的元区块4582,且随后将扇区写入最大的元区块4570。此是一种针对既不是头部数据也不是尾部数据的数据的默认条件。因而,一般将数据运行中间的数据写入具有最大大小的元区块以使用最大并行度。如果扇区含有尾部填补或尾部数据,则确定扇区是否是尾部数据(来自数据运行的最后逻辑组)4584。如果其来自最后逻辑组,则打开一缓冲器4586,缓冲器大小等于尾部数据(等于来自最后逻辑组中的数据运行的数据)。随后,将所述扇区写入缓冲器4566。如果扇区不是来自最后逻辑组,则扇区是尾部填补数据,且确定尾部填补长度是否大于一预定大小(maxpad)4588。如果扇区数目大于maxpad,则分配一缩小的元区块4578,且随后将扇区写入元区块4570。如果尾部填补不大于maxpad 4588,则打开一等于尾部填补的缓冲器4590。随后将扇区写入此缓冲器4566。
图46展示用于将扇区写入一或多个元区块的流程图。在本申请案的此及其他流程图中,逻辑流朝向流程图的底部,且判定框具有在框下所示的肯定结果和框一侧所示的否定结果。首先确定分配用于存储扇区组的元区块是否是缩小或最小的元区块4601。如果未分配缩小或最小的元区块(分配最大的元区块),则将欲写入的扇区并行地写入已分配的元区块4603。接着,确定所述元区块是否为满4605。如果元区块为满,则指定“完整”4607。接着确定在原始元区块中是否对应于数据运行或可由主机写入数据运行的其他数据的所有数据已变为过时的4609,如果是,则将原始区块视为完整的4611。如果写入缩小或最小的元区块4601,则如果当前未复制缓冲器4612,则识别可用于复制的已关闭缓冲器4613,识别与那些缓冲器相关联的任何原始数据4615,且分配一或多个缩小或最小的元区块4617。如果当前未重新定位原始数据4619,则识别欲从完整的原始元区块重新定位的数据4621,且分配一缩小或最小的元区块4623。接着如前所述与从缓冲器复制或重新定位到缩小的元区块的扇区的写入并行地将扇区写入到已分配给扇区组的元区块。
图47展示用于关闭数据运行的流程图。首先识别最近使用的(LRU)数据运行4731。如果对于此数据运行存在任何打开缓冲器4733,则将其关闭4735,且如果对于数据运行存在任何不完整的元区块4737,则从原始元区块或缓冲器复制数据4739,直到不完整的元区块变为完整的4741。如果存在任何部分过时的原始元区块4743(完整的原始元区块),则分配缩小的元区块作为已重新定位的元区块4745,且复制有效扇区4747,直到原始区块为完全过时的4749。接着可将数据运行指定为关闭4751。
虽然已相对于多种示范性实施例来说明本发明,但应了解,本发明有权在所附权利要求书的完整范畴内受到保护。

Claims (6)

1.一种更新一非易失性存储器阵列内的数据的方法,所述非易失性存储器阵列具有被配置以形成一第一适应性元区块的复数个可个别擦除的区块,所述方法包含:
从一主机接收已更新的数据,所述已更新的数据用于取代存储于所述第一适应性元区块内的数据;
将所述已更新的数据存储在一第二适应性元区块中,所述第二适应性元区块仅由含有已更新数据的擦除块组成;和
将来自所述第一适应性元区块的原始数据存储在一第三适应性元区块中,所述第三适应性元区块仅由不含有已更新数据的擦除块组成。
2.根据权利要求1所述的方法,其中所述第二适应性元区块与所述第三适应性元区块都小于所述第一适应性元区块。
3.根据权利要求1所述的方法,其中所述第一适应性元区块具有一第一数目的擦除块,所述第二适应性元区块具有一第二数目的擦除块且所述第三适应性元区块具有一第三数目的擦除块;且
所述第二数目与所述第三数目的和等于所述第一数目。
4.一种更新存储在一非易失性存储器阵列中的数据的方法,所述非易失性存储器阵列具有复数个原始适应性元区块,所述复数个原始适应性元区块的每一者都存储一具有复数个原始数据逻辑组的原始适应性逻辑块,所述方法包含:
接收已更新的数据以取代旧数据;
形成已更新的逻辑组,一已更新的逻辑组包含具有与一原始逻辑组相同逻辑地址范围的连续数据,一已更新逻辑组中的所述数据中的至少一些是已更新的数据;
形成已更新的适应性逻辑块,一已更新的适应性逻辑块是由若干已更新的逻辑组组成,一已更新适应性逻辑块中已更新逻辑组的数目与一原始适应性逻辑块中原始逻辑组的数目无关;和
将一已更新的适应性逻辑块编程到一已更新的适应性元区块。
5.根据权利要求4所述的方法,其中一已更新适应性逻辑块中的已更新逻辑组的数目小于一原始适应性逻辑块中的原始逻辑组的数目。
6.根据权利要求4所述的方法,其中一已更新适应性逻辑块中的已更新逻辑组对应于一个以上原始适应性逻辑块中的原始逻辑组,其中每一已更新逻辑组分别对应于一个原始适应性逻辑块中的一个原始逻辑组。
CNB2004800421908A 2003-12-30 2004-12-22 在非易失性存储器阵列中更新数据的方法 Expired - Fee Related CN100524209C (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/749,189 US7433993B2 (en) 2003-12-30 2003-12-30 Adaptive metablocks
US10/749,189 2003-12-30
US10/841,118 2004-05-07
US10/841,118 US20050144363A1 (en) 2003-12-30 2004-05-07 Data boundary management
US11/016,271 2004-12-16
US11/016,271 US7383375B2 (en) 2003-12-30 2004-12-16 Data run programming

Publications (2)

Publication Number Publication Date
CN1922571A CN1922571A (zh) 2007-02-28
CN100524209C true CN100524209C (zh) 2009-08-05

Family

ID=34753551

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800421908A Expired - Fee Related CN100524209C (zh) 2003-12-30 2004-12-22 在非易失性存储器阵列中更新数据的方法

Country Status (7)

Country Link
US (1) US7383375B2 (zh)
EP (2) EP1700204B1 (zh)
JP (2) JP4977473B2 (zh)
KR (1) KR100983212B1 (zh)
CN (1) CN100524209C (zh)
TW (1) TWI280581B (zh)
WO (1) WO2005066770A2 (zh)

Families Citing this family (275)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4175991B2 (ja) * 2003-10-15 2008-11-05 株式会社東芝 不揮発性半導体記憶装置
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US20070174563A1 (en) * 2006-01-23 2007-07-26 Stuart Staniford System and method for selecting memory locations for overwrite
EP1850347A1 (en) * 2006-04-28 2007-10-31 Deutsche Thomson-Brandt Gmbh Method and device for writing to a flash memory
US7564721B2 (en) * 2006-05-25 2009-07-21 Micron Technology, Inc. Method and apparatus for improving storage performance using a background erase
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
JP5266250B2 (ja) 2006-12-26 2013-08-21 サンディスク テクノロジィース インコーポレイテッド 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7791952B2 (en) 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US20080235464A1 (en) * 2007-03-19 2008-09-25 Shai Traister System for conversion of update blocks based on comparison with a threshold size
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US20080235489A1 (en) * 2007-03-19 2008-09-25 Sergey Anatolievich Gorobets Systems for forcing an update block to remain sequential
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US20080250220A1 (en) * 2007-04-06 2008-10-09 Takafumi Ito Memory system
US7869277B1 (en) * 2007-04-25 2011-01-11 Apple Inc. Managing data writing to memories
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US20090055574A1 (en) * 2007-08-25 2009-02-26 Bei-Chuan Chen NAND Flash Memory Device And Related Method Thereof
US8473923B2 (en) * 2007-09-12 2013-06-25 Sandisk Technologies Inc. Pointers for write abort handling
US8566504B2 (en) 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
JP2009211192A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP5166118B2 (ja) * 2008-05-21 2013-03-21 株式会社東芝 半導体メモリの制御方法
US8762654B1 (en) * 2008-07-02 2014-06-24 Marvell International Ltd. Selectively scheduling memory accesses in parallel based on access speeds of memory
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
US8671327B2 (en) * 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
EP2335245B1 (en) * 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Method and system for adaptive coding in flash memories
US8566562B2 (en) * 2008-10-03 2013-10-22 Skymedi Corporation Method for sequentially writing data with an offset to a non-volatile memory
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
EP2189895A1 (en) * 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash based memory comprising a Flash translation layer and method for storing a file therein
US8266365B2 (en) 2008-12-17 2012-09-11 Sandisk Il Ltd. Ruggedized memory device
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
CN102317925B (zh) 2009-02-12 2014-07-23 株式会社东芝 存储器系统和控制存储器系统的方法
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US20110060865A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Flash Memory Utilization
TWI417889B (zh) * 2009-12-30 2013-12-01 Silicon Motion Inc 快閃記憶體之寫入逾時控制方法及其記憶裝置
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
JP2011227664A (ja) 2010-04-19 2011-11-10 Toshiba Corp メモリシステム
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US9268649B1 (en) * 2011-06-23 2016-02-23 Western Digital Technologies, Inc. Disk drive with recent write streams list for data refresh determination
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
EP2761469B1 (en) * 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9465732B2 (en) 2013-03-15 2016-10-11 Sandisk Technologies Llc Binning of blocks for dynamic linking
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
TWI470431B (zh) * 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9411721B2 (en) * 2013-11-15 2016-08-09 Sandisk Technologies Llc Detecting access sequences for data compression on non-volatile memory devices
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
US10061710B2 (en) 2014-01-29 2018-08-28 Hitachi, Ltd. Storage device
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
EP3142014B1 (en) 2014-06-25 2023-05-17 Honor Device Co., Ltd. Method, device and user equipment for reading/writing data in nand flash
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
KR20160112135A (ko) * 2015-03-18 2016-09-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9952769B2 (en) * 2015-09-14 2018-04-24 Microsoft Technology Licensing, Llc. Data storage system with data storage devices operative to manage storage device functions specific to a particular data storage device
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9830084B2 (en) * 2015-12-03 2017-11-28 Sandisk Technologies Llc Writing logical groups of data to physical locations in memory using headers
US10013179B2 (en) 2015-12-03 2018-07-03 Sandisk Technologies Llc Reading logical groups of data from physical locations in memory using headers
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
KR101805828B1 (ko) * 2016-03-21 2017-12-07 주식회사 디에이아이오 스토리지 시스템의 주소 변환 방법 및 스토리지 시스템의 메모리 장치 컨트롤러
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
CN106445407A (zh) * 2016-08-17 2017-02-22 北京兆易创新科技股份有限公司 一种芯片处理方法及装置
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10613943B2 (en) * 2017-07-27 2020-04-07 Western Digital Technologies, Inc. Method and system for improving open block data reliability
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
EP3724768A4 (en) * 2017-12-13 2021-07-21 Micron Technology, Inc. ADDRESSING VARIABLE WIDTH SUPERBLOCKS
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109817257B (zh) * 2018-12-27 2020-10-13 西安紫光国芯半导体有限公司 一种动态存储器刷新操作下的省电方法和动态存储器
US10990320B2 (en) * 2019-02-01 2021-04-27 Western Digital Technologies, Inc. Systems and methods to optimally select metablocks
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
TWI769386B (zh) * 2019-07-04 2022-07-01 群聯電子股份有限公司 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
CN111143313B (zh) * 2019-12-25 2023-07-25 成都三零嘉微电子有限公司 一种提高混合映射算法的日志块读写性能的方法
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11756644B2 (en) 2021-06-23 2023-09-12 International Business Machines Corporation Triage of multi-plane read requests
KR102403277B1 (ko) * 2021-12-24 2022-05-30 오픈엣지테크놀로지 주식회사 어레이 풀링 방법 및 이를 위한 장치
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US11966605B2 (en) * 2022-03-09 2024-04-23 Kioxia Corporation Superblock-based write management in non-volatile memory devices

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
JP3122222B2 (ja) 1992-05-08 2001-01-09 株式会社東芝 メモリカード装置
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
US5367484A (en) 1993-04-01 1994-11-22 Microchip Technology Incorporated Programmable high endurance block for EEPROM device
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5473765A (en) 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
JP3153730B2 (ja) 1995-05-16 2001-04-09 株式会社東芝 不揮発性半導体記憶装置
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US6304980B1 (en) 1996-03-13 2001-10-16 International Business Machines Corporation Peer-to-peer backup system with failure-triggered device switching honoring reservation of primary device
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5860124A (en) 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP3072722B2 (ja) 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
JP2000122917A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6401160B1 (en) 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6544844B2 (en) 1999-10-08 2003-04-08 Macronix International Co., Ltd. Method for forming a flash memory cell having contoured floating gate surface
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6571261B1 (en) 2000-07-13 2003-05-27 International Business Machines Corporation Defragmentation utility for a shared disk parallel file system across a storage area network
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
JP3699890B2 (ja) 2000-08-30 2005-09-28 シャープ株式会社 不揮発性半導体記憶装置
JP3992960B2 (ja) * 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
US6684289B1 (en) 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6591330B2 (en) 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
TW506123B (en) 2001-10-24 2002-10-11 Macronix Int Co Ltd Multi-level NROM memory cell and its operating method
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
JP2005135008A (ja) 2003-10-28 2005-05-26 Sony Corp 情報配信システム及び情報配信方法
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system

Also Published As

Publication number Publication date
US20050144367A1 (en) 2005-06-30
JP4977473B2 (ja) 2012-07-18
WO2005066770A2 (en) 2005-07-21
JP2007517325A (ja) 2007-06-28
EP2256621A1 (en) 2010-12-01
TW200535854A (en) 2005-11-01
US7383375B2 (en) 2008-06-03
WO2005066770A9 (en) 2005-09-29
TWI280581B (en) 2007-05-01
KR20070012630A (ko) 2007-01-26
EP1700204B1 (en) 2014-03-12
JP5438137B2 (ja) 2014-03-12
JP2012099139A (ja) 2012-05-24
EP1700204A1 (en) 2006-09-13
CN1922571A (zh) 2007-02-28
KR100983212B1 (ko) 2010-09-20

Similar Documents

Publication Publication Date Title
CN100524209C (zh) 在非易失性存储器阵列中更新数据的方法
CN101645044B (zh) 一种操作可擦除且可再编程的非易失性存储器系统的方法
CN101095121B (zh) 高速暂存区块
US7433993B2 (en) Adaptive metablocks
EP2112599B1 (en) Scheduling of housekeeping operations in flash memory systems
US20050144363A1 (en) Data boundary management
KR101202620B1 (ko) 복수-스트림 업데이팅을 갖는 비휘발성 메모리 및 방법
KR101089576B1 (ko) 업데이트 및 스크래치 패드 블록들을 위한 개선된 인덱싱을갖는 비휘발성 메모리 및 방법
CN102831070B (zh) 用于存储器装置的存储地址重新映射的方法和系统
CN101099125B (zh) 群集的自动对准方法和存储器系统
CN101606133A (zh) 具有连续逻辑地址空间接口的直接数据文件系统的使用
KR20070101261A (ko) 복수-스트림 업데이트 추적을 구비한 비휘발성 메모리 및방법

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
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120322

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120322

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American California

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SANDISK TECHNOLOGIES, INC.

CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American Texas

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Corp.

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

Granted publication date: 20090805

Termination date: 20201222

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