CN100435116C - 具有存储器平面对准的非易失性存储器及方法 - Google Patents

具有存储器平面对准的非易失性存储器及方法 Download PDF

Info

Publication number
CN100435116C
CN100435116C CNB2004800421382A CN200480042138A CN100435116C CN 100435116 C CN100435116 C CN 100435116C CN B2004800421382 A CNB2004800421382 A CN B2004800421382A CN 200480042138 A CN200480042138 A CN 200480042138A CN 100435116 C CN100435116 C CN 100435116C
Authority
CN
China
Prior art keywords
block
sector
logic
memory
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2004800421382A
Other languages
English (en)
Other versions
CN1922586A (zh
Inventor
瑟吉·阿纳托利耶维奇·戈罗别茨
彼得·约翰·史密斯
艾伦·戴维·贝内持
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
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN1922586A publication Critical patent/CN1922586A/zh
Application granted granted Critical
Publication of CN100435116C publication Critical patent/CN100435116C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/20Initialising; Data preset; Chip identification
    • 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/7202Allocation control and policies
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Credit Cards Or The Like (AREA)

Abstract

本发明提供一种由一组存储器平面组成的非易失性存储器,每个存储器平面均具有自己的一组读/写电路,以使所述存储器平面能够并行地运作。所述存储器进一步被组织成可擦除区块,每个区块均用于存储一具有多个数据逻辑单位的逻辑群组。在更新逻辑单位时,逻辑单位的所有版本都会保留在和原始版本相同的平面中。优选的,逻辑单位的所有版本均被对准在一平面中,以使其全部由同一组感测电路来服务。在后续的垃圾收集(garbage collection)操作中,并不需要从一不同的平面或不同的一组感测电路中检索所述逻辑单位的最新版本,否则便会降低性能。在一个实施例中,在对准之后所留下的任何间隙均通过复制其后面的逻辑单位的最新版本来加以填补。

Description

具有存储器平面对准的非易失性存储器及方法
技术领域
本发明一般涉及非易失性半导体存储器,尤其涉及具有存储器区块管理系统的非易失性半导体存储器,其经过优化而用于并行地操作多个存储器平面,其中每个平面均由其自己的读/写电路组来服务。
背景技术
能够进行电荷的非易失性存储的固态存储器,尤其是属于封装成小型存储卡的EEPROM及快闪EEPROM的形式,近来已成为各种移动及手持装置选择的存储装置,特别是信息家电及消费性电子产品。与同为固态存储器的RAM(随机存取存储器)不同的是,快闪存储器是非易失性的,即使在关闭电源后仍能保留其存储的数据。还有,不像ROM(只读存储器),快闪存储器和磁盘存储装置一样都是可再写。尽管成本较高,但在大量存储应用中,快闪存储器的使用渐增。基于旋转磁性媒体的常规大量存储装置,如硬盘驱动机及软盘,并不适合移动及手持环境。这是因为磁盘驱动器倾向于体积庞大,容易出现机械故障且具有高等待时间及高功率需求。这些不想要的属性使得基于磁盘的存储装置无法在大多数的行动及便携应用中使用。另一方面,既为内嵌式且为抽取式存储卡形式的快闪存储器在理想上适用于移动及手持环境,因为其大小小、功率消耗低、高速及高可靠性特性。
快闪EEPROM和EEPROM(电子可擦除及可编程只读存储器)的相似处在于,其为能够被擦除且能将新的数据写入或“编程”到其存储器单元中的非易失性存储器。二者均利用场效晶体管结构中,位于半导体衬底中沟道区之上且在源极及漏极区之间的浮动(未连接)导电栅极。接着在浮动栅极之上提供控制栅极。浮动栅极所保留的电荷量可控制晶体管的阈值电压特性。也就是说,就浮动栅极上给定电平的电荷而言,其中有必须在“开启”晶体管之前施加于控制栅极的对应电压(阈值),以允许在其源极及漏极区之间的导电。尤其,如快闪EEPROM的快闪存储器允许同时擦除存储器单元的整个区块。
浮动栅极可以保持某个电荷范围,因此,可经编程为阈值电压窗内的任何阈值电压电平。阈值电压窗的大小受限于装置的最小及最大阈值电平,而装置的最小及最大阈值电平对应于可编程到浮动栅极上的电荷范围。阈值窗一般根据存储器装置的特性、操作条件及记录而定。原则上,在此窗内,各有所不同的、可分辨的阈值电压电平范围均可用于指定单元的明确的存储器状态。
通常会通过两种机制之一,将作为存储器单元的晶体管编程为“已编程”状态。在“热电子注入”中,施加到漏极的高电压可加速横跨在衬底沟道区上的电子。同时,施加到控制栅极的高电压可吸引热电子通过薄栅极电介质到浮动栅极上。在“隧穿注入”中,会相对于所述衬底将高电压施加给所述控制栅极。依此方式,可将衬底的电子吸引到中间的浮动栅极。虽然习惯使用用语“编程”描述通过注入电子到存储器单元的初始擦除电荷存储单元来写入存储器以改变存储器状态,现已和较为常见的用语,如“写入”或“记录”交换使用。
可以利用下面数种机制来擦除所述存储器装置。对EEPROM而言,通过相对于所述控制栅极将高电压施加给所述衬底,致使可于所述浮动栅极中诱发出电子,使其隧穿一薄氧化物进入所述衬底沟道区(也就是,Fowler-Nordheim隧穿效应),便可电擦除一存储器单元。一般来说,EEPROM可以逐个字节的方式来擦除。对快闪EEPROM而言,可每次电擦除所有的存储器或是每次电擦除一个或一个以上最小可擦除区块,其中最小可擦除区块可能是由一个或一个以上的扇区组成且每个扇区均可存储512个或更多字节的数据。
所述存储器装置通常包括可被安装于一存储卡上的一个或一个以上存储器芯片。各存储器芯片包含周边电路(如译码器和擦除、写入及读取等电路)所支持的存储器单元阵列。较为精密的存储器装置还附有执行智能型和较高阶存储器操作及接口连接的控制器。
现今已有许多市售成功的非易失性固态存储器装置。这些存储器装置可能是快闪EEPROM,或是可采用其它类型的非易失性存储器单元。快闪存储器与系统及其制造方法的范例揭示于美国专利案第5,070,032号、第5,095,344号、第5,315,541号、第5,343,063号、第5,661,053号、第5,313,421号、以及第6,222,762号。明确地说,美国专利案第5,570,315号、第5,903,495号、第6,046,935号中描述了具有NAND字符串结构的快闪存储器装置。另外,也可利用具有一用来存储电荷的介电层的存储器单元来制造非易失性存储器装置。其利用介电层来取代前面所述的导电浮动栅极组件。Eitan等人于2000年11月在IEEEElectron Device Letters,第21册,第11号,第543-545页中所发表的“NROM:A NovelLocalized Trapping,2-Bit Nonvolatile Memory Cell”一文中描述了这些利用介电存储组件的存储器装置。有一ONO介电层延伸跨越源极与漏极扩散区间的沟道。其中一个数据位的电荷定位在靠近所述漏极的介电层中,而另一个数据位的电荷定位在靠近所述源极的介电层中。举例来说,美国专利案第5,768,192号及第6,011,725号便揭示一种在两层二氧化硅层间夹放一陷捕电介质的非易失性存储器单元。通过分开读取所述电介质内空间分离的电荷存储区域的二进制状态,便可实现多状态的数据存储。
为了提高读取及编程性能,并行读取或编程阵列中的多个电荷存储组件或存储器晶体管。因此,一起读取或编程存储器组件的“页”。在现有的存储器架构中,一行通常含有若干交错的页或一行可构成一个页。一个页的所有存储器组件会被一起读取或编程。
在快闪存储器系统中,擦除操作可能需要多达长于读取及编程操作的数量级。因此,希望能够具有大大小的擦除区块。依此方式,即可降低总数很大的存储器单元上的擦除时间。
依照快闪存储器的性质,数据必须写入已擦除的存储器位置。如果要更新主机的特定逻辑地址的数据,一种方式是将更新数据再写入相同的物理存储器位置中。也就是说,逻辑对物理地址映射不会变更。然而,这便表示必须先擦除含有所述物理位置的整个擦除区块,然后再以更新数据再写入。此更新方法很没有效率,因为其需要擦除及再写入整个擦除区块,尤其在要更新的数据只占用擦除区块的一小部分时。此外,还会造成比较频繁的存储器区块的擦除再循环,而这对此类型存储器装置的有限耐久性而言并不理想。
另一个管理快闪存储器系统的问题是必须处理系统控制及目录数据。各种存储器操作的过程期间会产生且存取所述数据。因此,其有效处理及迅速存取将直接影响性能。由于快闪存储器是用来存储且是非易失性,因此希望能够在快闪存储器中维持此类型的数据。然而,因为在控制器及快闪存储器之间有中间档案管理系统,所以无法直接存取数据。还有,系统控制及目录数据倾向于成为作用中及成为片段,而这对于具有大大小区块擦除的系统中的存储毫无助益。照惯例,会在控制器RAM中设定此类型的数据,藉此允许由控制器直接存取。在开启存储器装置的电源后,初始化程序会扫描快闪存储器,以编译要放在控制器RAM中的必要系统控制及目录信息。此过程既耗时又需要控制器RAM容量,对于持续增加的快闪存储器容量更是如此。
US 6,567,307揭示一种在大擦除区块中处理扇区更新的方法,其包括在多个用作可用高速暂存区的擦除区块中记录更新数据,及最后在各种区块中合并有效扇区,然后按逻辑循序顺序重新对准有效扇区后将其再写入。依此方式,在每个最微小的更新时,不必擦除及再写入区块。
WO 03/027828及WO 00/49488均揭示一种处理大擦除区块中更新的存储器系统,其中包括以区域为单位分割逻辑扇区地址。小区域的逻辑地址范围是保留用于和另一个用于使用者数据的区域分开的作用中系统控制数据。依此方式,在其自己区域中的系统控制数据操控便不会和另一区域中关联的使用者数据互相作用。更新属于逻辑扇区层级,而且写入指针会指向要写入之区块中的对应物理扇区。映射信息在RAM中被缓冲,且最后被存储在主存储器的扇区配置表中。逻辑扇区的最新版本会使得现有区块中的所有先前版本过时,这些区块因此变成部分过时。执行垃圾收集可保持部分过时区块为可接受的数量。
先前技术的系统倾向于使更新数据分布在许多区块上或更新数据会使许多现有的区块部分过时。结果通常是部分过时区块需要大量垃圾收集,这很没有效率且会造成存储器提早老化。此外,和非循序更新相比,更缺少有系统及有效的方式来处理循序更新。
因此,普遍需要高容量及高性能的非易失性存储器。尤其,更需要有能够在大区块中执行存储器操作且没有上述问题的高容量非易失性存储器。
发明内容
一种非易失性存储器系统是按照物理存储器位置的物理群组来组织。各物理群组(元区块)可作为一个单元来擦除且能用来存储一个逻辑群组的数据。存储器管理系统允许通过配置记录逻辑群组的更新数据专用的元区块来更新一个逻辑群组的数据。更新元区块按照所接收的顺序记录更新数据,且对记录按照原始存储的正确逻辑顺序(循序)与否(混乱)并没有限制。最后会关闭更新元区块以进行其它记录。会发生若干处理之一,但最终会以按照正确顺序完全填满的取代原始元区块的元区块结束。在混乱的情况下,会以有助于经常更新的方式将目录数据维持在非易失性存储器中。系统支持多个同时更新的逻辑群组。
本发明的一个特点允许以逐个逻辑群组的方式来更新数据。因此,在更新逻辑群组时,会限制逻辑单位的分布(还有因更新而过时的存储器单位的散布)范围。这在逻辑群组通常含在物理区块内时更是如此。
在逻辑群组的更新期间,通常需要指派一或两个缓冲已更新逻辑单位的区块。因此,只需要在相对较少数量的区块上执行垃圾收集。通过合并或压缩即可执行混乱区块的垃圾收集。
相较于循序区块来说,更新处理的经济性在更新区块的一般处理中会愈加明显,因而便无须为混乱(非循序)更新配置任何额外的区块。所有的更新区块均被配置为循序的更新区块,而且任何更新区块均可被变更成混乱的更新区块。更确切地说,可任意地将更新区块从循序式变更成混乱式。
有效使用系统资源允许同时更新多个逻辑群组。这可进一步提高效率及减少额外开销。
分散在多个存储器平面上的存储器对准
根据本发明的另一方面,对于一被组织成复数个可擦除区块且由多个存储器平面所构成(因而可并行地读取复数个逻辑单位或是将复数个逻辑单位并行地编程到所述多个平面之中)的存储器阵列,当要更新存储在特定存储器平面中第一区块的原始逻辑单位时,会供应所需以将已更新的逻辑单位保持在和原始相同的平面中。这可通过以下方式来完成:将已更新的逻辑单位记录到仍在相同平面中的第二区块的下一个可用位置。优选将逻辑单位存储在平面中和其中其它版本相同的偏移位置,使得给定逻辑单位的所有版本由相同组的感测电路予以服务。
据此,在一个优选实施例中,以逻辑单位的目前版本来填补介于上一个编程存储器单位与下一个可用平面对准存储器单位之间的任何中间间隙。将逻辑上位于所述最后被编程的逻辑单位后面的所述逻辑单位的目前版本以及逻辑上位于被存储在下一个可用的平面对准存储器单位中的逻辑单位前面的所述逻辑单位的目前版本填入间隙中,便可完成所述填补操作。
依此方式,可将逻辑单位的所有版本维持在具有和原始相同偏移的相同平面中,致使在垃圾收集操作中,不必从不同平面检索逻辑单位的最新版本,以免降低性能。在一个优选实施例中,可利用所述最新的版本来更新或填补所述平面上的每个存储器单位。因此,便可从每个平面中并行地读出一逻辑单位,其将会具有逻辑顺序而无需进一步重新对准。
此方案通过允许平面上重新对准逻辑群组的逻辑单位的最新版本,且不必从不同存储器平面中搜集最新版本,而缩短合并混乱区块的时间。这很有好处,其中主机接口的性能规格可定义由存储器系统完成扇区写入操作的最大等待时间。
阶段性程序错误处理
根据本发明的另一方面,在具有区块管理系统的存储器中,在时间紧急的存储器操作期间,区块中的程序失败可通过继续中断区块(breakout block)中的编程操作来处理。稍后,在较不紧急的时间,可将中断前记录在失败区块中的数据传送到其它可能也是中断区块的区块。接着即可丢弃失败的区块。依此方式,在遇到缺陷区块时,不会因必须立刻传送缺陷区块中存储的数据而丢失数据及超过指定的时间限制,即可加以处理。此错误处理对于垃圾收集操作尤其重要,因此在紧急时间期间不需要对一崭新的区块重复进行整个操作。其后,在适宜的时间,通过重新定位到其它区块,即可挽救缺陷区块的数据。
程序失败处理在合并操作期间尤其重要。正常的合并操作可将常驻在原始区块及更新区块中的逻辑群组的所有逻辑单位的目前版本合并到合并区块。在合并操作期间,如果在合并区块中发生程序失败,则会提供另一个当作中断合并区块的区块,以接收其余逻辑单位的合并。依此方式,无须复制逻辑单位一次以上,而仍可在正常合并操作指定的期间内完成例外处理的操作。在适宜的时间,将群组所有未处理完成的逻辑单位合并到中断区块中,即可完成合并操作。适宜的时间将是在目前主机写入操作以外的一些其它有时间执行合并期间的期间。一个此种适宜的时间是在另一个其中有更新但无关联合并操作的主机写入的期间。
实质上,可将程序失败处理的合并视为以多阶段来实施。在第一阶段中,在发生程序失败后,会将逻辑单位合并到一个以上区块中,以避免合并各逻辑单位一次以上。在适宜的时间会完成最后阶段,其中会将逻辑群组合并到一个区块中,优选通过按循序顺序将所有逻辑单位收集到中断合并区块中。
非循序更新区块索引
根据本发明的另一方面,在具有支持具有非循序逻辑单位的更新区块的区块管理系统的非易失性存储器中,非循序更新区块中逻辑单位的索引在RAM中缓冲,并定期将其存储到非易失性存储器中。在一个实施例中,将索引存储在专用于存储索引的区块中。在另一个实施例中,将索引存储在更新区块本身中。在又一实施例中,将索引存储在各逻辑单位的标头中。在另一方面中,在上一个索引更新之后但在下一个索引更新之前写入的逻辑单位会将其索引信息存储在各逻辑单位的标头中。依此方式,在电源中断后,不必在初始化期间执行扫描,即可决定最近写入的逻辑单位的位置。在又一方面中,将区块管理成部分循序及部分非循序,指向一个以上逻辑子群组。
控制数据完整性与管理
根据本发明的另一方面,如部分或全部控制数据的关键数据如果被维持在复制项中,则保证额外等级的可靠性。复制的执行方式对于采用两次(two-pass)编程技术以连续编程相同组存储器单元的多位的多状态存储器系统而言,第二次编码过程中的任何编程错误都无法毁损第一次编码过程建立的数据。复制还有助于检测写入中止、检测误测(即,两个副本有良好的ECC但数据不同),且可增加额外等级的可靠性。若干数据复制的技术均已考虑。
在一个实施例中,在稍早编程编码过程中编程给定数据的两个副本后,后续编程编码过程可避免编码用于存储所述两个副本中至少一个的存储器单元。依此方式,在后续编程编码过程在完成之前中止及毁损稍早编码过程的数据时,所述两个副本中至少一个不会受到影响。
在另一实施例中,某一给定数据的两个副本会被存储于两个不同的区块中,而且所述两个副本中至多仅有一者的存储器单元会在后面的编程编码过程中被编程。
在另一实施例中,在一编程编码过程中存储某一给定数据的两个副本之后,便不再对用于存储所述两个副本的存储器单元组实施任何进一步的编程。在所述存储器单元组的最终编程编码过程中来编程所述两个副本便可达成此目的。
在又一实施例中,可以二进制编程模式将某一给定数据的两个副本编程到一多状态的存储器之中,致使不会对所述已编程的存储器单元进行任何进一步的编程。
在又一实施例中,对于采用两次编程技术以连续编程相同组存储器单元的多位的多状态存储器系统而言,会采用容错码以编码多个存储器状态,使稍早编程编码过程所建立的数据不会受到后续编程编码过程中错误的影响。
根据本发明的另一方面,在具有区块管理系统的非易失性存储器中,可实施存储器区块的“控制垃圾收集”或先占式重新定位,以避免发生大量的更新区块均恰巧同时需要进行重新定位的情形。例如,在更新用于控制区块管理系统操作的控制数据时会发生此情况。控制数据类型的层级可和不同程度的更新频率共存,导致其关联的更新区块需要不同速率的垃圾收集或重新定位。会有一个以上控制数据类型的垃圾收集操作同时发生的特定时候。在极端的情况中,所有控制数据类型的更新区块的重新定位阶段会进行整顿,导致所有的更新区块都需要同时重新定位。
参考本发明以下结合附图的优选实施例的说明,即可了解本发明的其它特点及优点。
附图说明
图1以示意图显示适于实施本发明的存储器系统的主要硬件组件。
图2显示根据本发明的一个优选实施例,经组织成扇区(或元区块)的物理群组并为控制器的存储器管理器所管理的存储器。
图3A(i)-3A(iii)根据本发明的一个优选实施例,以示意图显示逻辑群组及元区块间的映射。
图3B以示意图显示逻辑群组及元区块间的映射。
图4显示元区块和物理存储器中结构的对准。
图5A显示从链接不同平面的最小擦除单位所构成的元区块。
图5B显示其中从各平面选择最小擦除单位(MEU)以链接到元区块的一个实施例。
图5C显示其中从各平面选择一个以上MEU以链接到元区块的另一实施例。
图6为如控制器及快闪存储器中实施的元区块管理系统的示意方块图。
图7A显示逻辑群组中按循序顺序写入循序更新区块的扇区的范例。
图7B显示逻辑群组中按混乱顺序写入混乱更新区块的扇区的范例。
图8显示由于两个逻辑地址有中断的分离主机写入操作而在逻辑群组中按循序顺序写入循序更新区块的扇区的范例。
图9根据本发明的一般实施例,为显示更新区块管理器更新一个逻辑群组的数据的程序流程图。
图10显示根据本发明的一个优选实施例,更新区块管理器更新一个逻辑群组的数据的程序流程图。
图11A为详细显示关闭图10所示的混乱更新区块的合并程序的流程图。
图11B为详细显示关闭图10所示的混乱更新区块的压缩程序的流程图。
图12A显示逻辑群组的所有可能状态,及其间在各种操作下的可能转变。
图12B为列出逻辑群组的可能状态的表格。
图13A显示元区块的所有可能状态,及其间在各种操作下的可能转变。元区块是对应于逻辑群组的物理群组。
图13B为列出元区块的可能状态的表格。
图14(A)-14(J)为显示逻辑群组状态上及物理元区块上各种操作效果的状态图。
图15显示用于记录开启及关闭的更新区块及配置的已擦除区块的配置区块列表(ABL)结构的一个优选实施例。
图16A显示混乱区块索引(CBI)扇区的数据字段。
图16B显示记录在专用元区块中的混乱区块索引(CBI)扇区的范例。
图16C为显示存取进行混乱更新的给定逻辑群组的逻辑扇区的数据的流程图。
图16D根据其中已将逻辑群组分割成子群组的替代性实施例,为显示存取进行混乱更新的给定逻辑群组的逻辑扇区的数据的流程图。
图16E显示在其中将各逻辑群组分割成多个子群组的实施例中,混乱区块索引(CBI)扇区及其功能的范例。
图17A显示群组地址表(GAT)扇区的数据字段。
图17B显示记录在GAT区块中的群组地址表(GAT)扇区的范例。
图18为显示使用及再循环已擦除区块的控制及目录信息的分布及流程的示意方块图。
图19为显示逻辑到物理地址转换程序的流程图。
图20显示在存储器管理的操作过程中,在控制数据结构上执行的操作层级。
图21显示以多个存储器平面所构成的存储器阵列。
图22A显示根据本发明的一般实施例,更新平面对准的方法的流程图。
图22B显示在图22A所示的流程图中存储更新的步骤的优选实施例。
图23A显示不顾平面对准按循序顺序将逻辑单位写入循序更新区块的范例。
图23B显示不顾平面对准按非循序顺序将逻辑单位写入混乱更新区块的范例。
图24A显示根据本发明的一个优选实施例,具有平面对准及填补的图23A的循序更新范例。
图24B显示根据本发明的一个优选实施例,具有平面对准及不具有任何填补的图23B的混乱更新范例。
图24C显示根据本发明的另一优选实施例,具有平面对准及填补的图23B的混乱更新范例。
图25显示其中各页含有两个用于存储两个逻辑单位(如两个逻辑扇区)的存储器单位的范例存储器组织。
图26A和图21的存储器结构相同,只是各页含有两个扇区而非一个。
图26B显示图26A所示的具有以线性图方式布局的存储器单元的元区块。
图27显示的替代性方案如下:不用填补要从一个位置复制到另一个的逻辑单位,即可在更新区块中进行平面对准。
图28显示其中缺陷区块在合并操作期间发生程序失败时会在另一个区块上重复合并操作的方案。
图29以示意图显示具有允许足够时间完成写入(更新)操作及合并操作的时序或写入等待时间的主机写入操作。
图30根据本发明的一般方案,显示程序失败处理的流程图。
图31A显示程序失败处理的一个实施例,其中第三(最后的重新定位)区块和第二(中断)区块不同。
图31B显示程序失败处理的另一实施例,其中第三(最后的重新定位)区块和第二(中断)区块相同。
图32A显示造成合并操作的初始更新操作的流程图。
图32B显示根据本发明的一个优选实施例,多阶段合并操作的流程图。
图33显示多阶段合并操作的第一及最后阶段的范例时序。
图34A显示其中中断合并区块并非用作更新区块而是用作其合并操作已经中断的合并区块的例子。
图34B显示始于图34A的多阶段合并的第三及最后阶段。
图35A显示其中维持中断合并区块为接收主机写入的更新区块而非合并区块的情形。
图35B显示始于第二情形中图35A的多阶段合并的第三及最后阶段。
图36A显示应用于主机写入触发关闭更新区块且更新区块为循序时的情况的阶段性程序错误处理方法。
图36B显示在更新区块的更新的情形下应用于(局部区块系统)的阶段性程序错误处理方法。
图36C显示处理垃圾收集操作的阶段性程序错误,或不支持映射到元区块的逻辑群组的存储器区块管理系统中的清除。
图37显示在每N个扇区写入相同的逻辑群组后将CBI扇区写入关联的混乱索引扇区区块的排程范例。
图38A显示直到在预定数量的写入后在其中记录CBI扇区时的更新区块。
图38B显示图38A的进一步在索引扇区后在其中记录数据页1、2及4的更新区块。
图38C显示图38B的具有另一写入以触发索引扇区下一个记录的逻辑扇区的更新区块。
图39A显示存储于混乱更新区块中各数据扇区标头的中间写入的中间索引。
图39B显示在写入的各扇区标头中存储中间写入的中间索引的范例。
图40显示在混乱更新区块的各数据扇区标头中存储的混乱索引字段中的信息。
图41A显示当各存储器单元存储两个位的数据时,4状态存储器阵列的阈值电压分布。
图41B显示现有使用格雷码(Gray code)的2次编程方案。
图42显示通过存储复制的各扇区以防卫关键数据的方式。例如,可将扇区A、B、C及D存储在复制副本中。如在一个扇区副本中有数据毁损,则可以读取另一个来取代。
图43显示其中通常将复制扇区存储在多状态存储器中的非健全性。
图44A显示将关键数据错开的复制副本存储到多状态存储器的一个实施例。
图44B显示只将关键数据的复制副本存储到多状态存储器的逻辑上页的另一实施例。
图44C显示又一以多状态存储器的二进制模式存储关键数据的复制副本的实施例。
图45显示同时将关键数据的复制副本存储到两个不同元区块的又一实施例。
图46A与图41A相似,其显示4状态存储器阵列的阈值电压分布并显示作为图46B的参考。
图46B显示使用容错码同时存储关键数据的复制副本的又一实施例。
图47为显示两个数据副本的可能状态及数据有效性的表格。
图48显示先占式重新定位存储控制数据的存储器区块的流程图。
具体实施方式
图1以示意图显示适合实施本发明的存储器系统的主要硬件组件。存储器系统20通常通过主机接口以主机10操作。存储器系统通常形式为存储卡或内嵌式存储器系统。存储器系统20包括由控制器100控制操作的存储器200。存储器200包含分布于一个或一个以上集成电路芯片上的一个或一个以上阵列的非易失性存储器单元。控制器100包括:接口110、处理器120、任选协处理器121、ROM 122(只读存储器)、RAM 130(随机存取存储器)、及任选可编程非易失性存储器124。接口110有一个连接控制器和主机的组件及另一个连接到存储器200的组件。存储于非易失性ROM 122及/或任选非易失性存储器124中的韧体可提供处理器120程序代码以实施控制器100的功能。处理器120或任选协处理器121可处理错误校正码。在替代性实施例中,控制器100可通过状态机(未显示)来实施。在又一实施例中,控制器100可在主机内实施。
逻辑与物理区块结构
图2说明根据本发明一优选实施例的存储器,其被组织成数个物理扇区群组(或元区块)并且由所述控制器的存储器管理器来管理。所述存储器200被组织成数个元区块,其中每个元区块是一群组的可一起擦除的物理扇区S0、...、SN-1
主机10可在档案系统或操作系统下执行应用程序时存取存储器200。一般来说,所述主机系统以逻辑扇区为单位来寻址数据,其中,例如,各扇区可含有512字节的数据。还有,主机通常会以逻辑群集为单位来读取或写入所述存储器系统,各逻辑群集由一个或一个以上逻辑扇区所组成。在有些主机系统中,可存在任选主机端存储器管理器,以执行主机的较低阶存储器管理。在大部分的例子中,在读取或写入操作期间,主机10实质上会对存储器系统20发出指令,以读取或写入含有一串具有连续地址的数据逻辑扇区的程序段。
一存储器端存储器管理器被实施在所述存储器系统20的控制器100之中,用以管理于所述快闪存储器200的元区块中存储与检索主机逻辑扇区的数据。在所述优选实施例中,所述存储器管理器含有数个软件模块,用于管理所述元区块的擦除操作、读取操作以及写入操作。所述存储器管理器还会在所述快闪存储器200及所述控制器RAM 130之中维护和其操作相关的系统控制与目录数据。
图3A(i)-3A(iii)示意性说明根据本发明一优选实施例介于一逻辑群组与一元区块间的映射。所述物理存储器的元区块具有N个物理扇区,用于存储一逻辑群组的N个逻辑扇区数据。图3A(i)所示的是来自逻辑群组LG1的数据,其中所述逻辑扇区呈现连续的逻辑顺序0、1、...、N-1。图3A(ii)所示的是正以相同的逻辑顺序被存储在所述元区块中的相同数据。当依此方式存储时,所述元区块便是所谓的“循序式”。一般来说,所述元区块可能会具有以不同顺序存储的数据,在所述情况中,所述元区块则是所谓的“非循序式”或“混乱式”。
在逻辑群组的最低地址及其映射的元区块的最低地址之间可能会有偏移。此时,逻辑扇区地址会在所述元区块内以环状的方式从所述逻辑群组的底部反绕回至顶端。例如,在图3A(iii)中,所述元区块会在其始于逻辑扇区k的数据的第一位置中进行存储。在到达最后逻辑扇区N-1时,元区块会绕回至扇区0,最后在其最后物理扇区中存储和逻辑扇区k-1关联的数据。在优选实施例中,会使用页标记来识别任何偏移,例如,识别在元区块的第一物理扇区中所存储的数据的起始逻辑扇区地址。当两个区块仅相差一个页标记时,则会认为所述两个区块是以相同的顺序来存储其逻辑扇区。
图3B示意性说明介于多个逻辑群组与多个元区块间的映射。每个逻辑群组均映射到一唯一的元区块,除了其中的数据正在被更新的少数逻辑群组以外。一逻辑群组在被更新之后,其可能会映射到一不同的元区块。可将映射信息维持在一组逻辑对物理目录中,稍后将会详细说明。
也考虑其它类型的逻辑群组到元区块映射关系。举例来说,由Alan Sinclair在和本申请案同一天申请的共同待审及共同拥有的美国专利申请案,标题为“AdaptiveMetablocks”之中便揭示具有可变大小的元区块。本文以引用的方式并入所述共同待审申请案全部的揭示内容。
本发明的一个特点在于系统以单一逻辑分割操作,及存储器系统的整个逻辑地址范围中的逻辑扇区群组均以相同的方式来处理。例如,可将含有系统数据的扇区及含有使用者数据的扇区分布在逻辑地址空间中的任何地方。
与先前技术的系统不同的是,并不存在系统扇区(即,有关档案配置表、目录或子目录的扇区)的特别分割或分区,以定位在可能含有高频率及小大小的更新数据的逻辑地址空间扇区中。而是,更新扇区的逻辑群组的本方案会有效处理为系统扇区典型且为档案数据典型的存取模式。
图4说明元区块和物理存储器中结构的对准。快闪存储器包含可当作一个单元一起擦除的存储器单元的区块。此种擦除区块为快闪存储器的最小的擦除单位或存储器的最小可擦除单位(MEU)。最小擦除单位是存储器的硬件设计参数,不过,在一些支持多个MEU擦除的存储器系统中,也可以设定包含一个以上MEU的“超级MEU”。对于快闪EEPROM,一个MEU可包含一个扇区,但优选包含多个扇区。在所示的范例中,其具有M个扇区。在优选实施例中,各扇区可以存储512字节的数据且具有使用者数据部分及用于存储器系统或额外开销数据的标头部分。如果元区块是以P个MEU所构成且各MEU含有M个扇区,则各元区块将具有N=P*M个扇区。
在系统层级,元区块代表存储器位置的群组,如,可一起擦除的扇区。快闪存储器的物理地址空间会被视为一组元区块,其中元区块是最小的擦除单位。在本份说明书内,“元区块”与“区块”词语是同义词,用来定义媒体管理在系统层级的最小擦除单位,而“最小擦除单位”或MEU一词则用来表示快闪存储器的最小擦除单位。
链接数个最小擦除单位(MEU)以构成元区块
为了最大化编程速度及擦除速度,尽可能利用并行方式,其通过配置多个要并行编程的信息页(位于多个MEU中),及配置多个要并行擦除的MEU。
在快闪存储器中,一个页是可在单一操作中一起编程的存储器单元的群组。一个页可包含一个或一个以上扇区。此外,可将存储器阵列分割成一个以上平面,其中一次只能编程或擦除一个平面内的一个MEU。最后,可在一个或一个以上存储器芯片中分布各平面。
在快闪存储器中,MEU可包含一个或一个以上页。可将快闪存储器芯片内的数个MEU按平面来组织。由于可同时编程或擦除各平面的一个MEU,因此从各平面选择一个MEU以形成多个MEU元区块(请见下文图5B)是有利的。
图5A显示从链接不同平面的最小擦除单位所构成的元区块。各元区块(例如MB0、MB1、...)均以存储器系统的不同平面的数个MEU所构成,其中不同平面可分布在一个或一个以上芯片中。图2所示的元区块链接管理器170可管理各元区块的MEU的链接。如果MEU之一没有失败,在初始格式化程序期间设定各元区块,并在整个系统寿命中保留其组成的MEU。
图5B显示从各平面选择一个最小擦除单位(MEU)以链接成元区块的一个实施例。
图5C显示其中从各平面选择一个以上MEU以链接成元区块的另一实施例。在另一实施例中,可从各平面选择一个以上MEU以形成超级MEU。例如,举例来说,超级MEU可能是由两个MEU构成的。在这种情形下,会采取一次以上编码过程以进行读取或写入操作。
由Carlos Gonzales等人在和本发明同一天申请的共同待审及共同拥有的美国专利申请案,标题为“Adaptive Deterministic Grouping of Blocks into Multi-Block Structures”之中也揭示将MEU链接及再链接成元区块。本文以引用的方式并入所述共同待审申请案全部的揭示内容。
元区块管理
图6为如控制器及快闪存储器中建构的元区块管理系统的示意方块图。元区块管理系统包含实施在控制器100中的各种功能模块,并在依层级式分布于快闪存储器200及控制器RAM 130的表格及列表中维持各种控制数据(包括目录数据)。建构在控制器100中的功能模块包括:接口模块110、逻辑对物理地址转换模块140、更新区块管理器模块150、擦除区块管理器模块160及元区块链接管理器170。
接口110允许元区块管理系统接口连接到主机系统。逻辑对物理地址转换模块140将主机的逻辑地址映射到物理存储器位置。更新区块管理器模块150管理存储器中给定的数据逻辑群组的数据更新操作。已擦除区块管理器160管理元区块的擦除操作及其用于存储新信息的配置。元区块链接管理器170管理扇区最小可擦除区块的子群组的链接以构成给定的元区块。这些模块将在其个别段落中详细说明。
在操作期间,所述元区块管理系统会产生且配合控制数据(例如地址、控制与状态信息)来运作。由于许多控制数据往往是经常变更的小型数据,因此无法在具有大型区块结构的快闪存储器中随时有效存储及维持。为了在非易失性快闪存储器中存储比较静态的控制数据,同时在控制器RAM中寻找数量较少的比较有变化的控制数据,以进行更有效的更新及存取,会采用层级式与分布式的方案。在发生电源关闭或故障时,此方案允许扫描非易失性存储器中一小组的控制数据,以在易失性控制器RAM中快速重建控制数据。这之所以可行是因为本发明可限制和给定逻辑群组的数据的可能活动相关联的区块数量。依此方式,即可限制扫描。此外,将一些需要持久性的控制数据存储在按扇区更新的非易失性元区块中,其中每次更新将导致记录一个取代先前扇区的新扇区。对控制数据采用扇区索引方案以在元区块中记录按扇区的更新。
非易失性快闪存储器200存储大量相对较静态的控制数据。这包括:群组地址表(GAT)210、混乱区块索引(CBI)220、已擦除的区块列表(EBL)230及MAP 240。GAT 210可记录扇区的逻辑群组及其对应元区块之间的映射。除非经受更新,否则所述映射不会改变。CBI 220可记录更新期间逻辑上非循序扇区的映射。EBL 230可记录已经擦除的元区块的集区。MAP 240是显示快闪存储器中所有元区块的擦除状态的位图。
易失性控制器RAM 130存储一小部分经常变更及存取的控制数据。这包括配置区块列表(ABL)134及清除区块列表(CBL)136。ABL 134可记录元区块用于记录更新数据的配置,而CBL 136可记录已解除配置及已擦除的元区块。在优选实施例中,RAM 130可当作存储在快闪存储器200的控制数据的高速缓存。
更新区块管理器
更新区块管理器150(如图2所示)处理逻辑群组的更新。根据本发明的一方面,会为进行更新的扇区的各逻辑群组配置一用于记录更新数据的专用更新元区块。在优选实施例中,会将逻辑群组的一个或一个以上扇区的任何程序段记录在更新区块中。可管理更新区块以接收按循序顺序或非循序(又称为“混乱”)顺序的更新数据。混乱更新区块允许在逻辑群组内按任何顺序更新扇区数据,并可任意重复个别扇区。尤其,不必重新定位任何数据扇区,循序更新区块可变成混乱更新区块。混乱数据更新不需要任何预定的区块配置;任何逻辑地址的非循序写入可被自动纳入。因此,与现有技术系统不同的是,并不必特别处理逻辑群组的各个更新程序段究竟是逻辑循序还是非循序的。一般更新区块只用来按照主机请求的顺序记录各种程序段。例如,即使主机系统数据或系统控制数据倾向于依混乱方式加以更新,仍不必以和主机使用者数据的不同方式来处理逻辑地址空间对应于主机系统数据的区域。
优选将扇区的完整逻辑群组的数据按逻辑上循序顺序存储在单一元区块中。依此方式,可预定义已存储的逻辑扇区的索引。当元区块按照预定义的顺序存储给定逻辑群组的所有扇区时,其可说是“完整”。至于更新区块,当其最后按逻辑上循序顺序填满更新数据时,则更新区块将成为随时可取代原始元区块的已更新的完整元区块。另一方面,如果更新区块按逻辑上与完整区块不同的顺序填满更新数据,更新区块为非循序或混乱更新区块,则必须进一步处理顺序紊乱的程序段,以便最后能按与完整区块相同的顺序来存储逻辑群组的更新数据。在优选的情形下,其在单一元区块中是按照逻辑上循序的顺序。进一步的处理涉及将更新区块中已更新的扇区和原始区块中未变更的扇区合并到又一个更新元区块。然后合并的更新区块将按照逻辑上循序的顺序并能够用来取代原始区块。在一些预定条件下,合并程序之前会有一个或一个以上压缩程序。压缩程序只是将混乱更新区块的扇区重新记录成取代的混乱更新区块,同时除去任何已由相同逻辑扇区的后续更新过时的复制逻辑扇区。
更新方案允许同时执行多个多达预定义极大值的更新执行绪。各执行绪为使用其专用更新元区块进行更新的逻辑群组。
循序数据更新
在先更新属于逻辑群组的数据时,会配置元区块及将其专用为逻辑群组的更新数据的更新区块。当从主机接收写入逻辑群组的一个或一个以上扇区的程序段的指令时(现有的元区块已经存储所有完整扇区),会配置更新区块。对于第一主机写入操作,会将第一程序段的数据记录在更新区块上。由于各主机写入是具有连续逻辑地址的一个或一个以上扇区的一个程序段,因此会遵循第一更新在特性上永远循序。在后续的主机写入中,会按照从主机接收的顺序将相同逻辑群组内的更新程序段记录在更新区块中。一个区块继续被管理为循序更新区块,而关联逻辑群组内由主机更新的扇区维持逻辑上循序。在此逻辑群组中更新的所有扇区会被写入此循序更新区块,直到区块关闭或转换为混乱更新区块。
图7A显示由于两个分开的主机写入操作而按循序顺序写入循序更新区块的逻辑群组中的扇区,而逻辑群组的原始区块中对应的扇区变成过时的范例。在主机写入操作#1中,会更新逻辑扇区LS5-LS8的数据。更新成为LS5′-LS8′的数据会被记录在新配置的专用更新区块中。
为了方便起见,将逻辑群组中要更新的第一扇区记录在始于第一物理扇区位置的专用更新区块中。一般而言,要更新的第一逻辑扇区不一定是群组的逻辑第一扇区,因此,在逻辑群组的起点与更新区块的起点之间会有偏移。此偏移称为“页标记”,如先前结合图3A所述。后续扇区将按照逻辑上循序的顺序加以更新。在写入逻辑群组的最后扇区时,群组地址会绕回且写入序列会从群组的第一扇区继续。
在主机写入操作#2中,更新逻辑扇区LS9-LS12中数据的程序段。更新成为LS9′-LS12′的数据会被记录在直接在最后写入结束处之后的位置中的专用更新区块。图中显示两个主机写入如下:按逻辑上循序顺序记录在更新区块中的更新数据,即LS5′-LS12′。更新区块可视为循序更新区块,因其已按逻辑上循序的顺序填入。记录在更新区块中的更新数据可使得原始区块中对应的数据过时。
混乱数据更新
当关联的逻辑群组内由主机更新的任何扇区为逻辑上非循序时,可为现有的循序更新区块启始混乱更新区块管理。混乱更新区块是数据更新区块的形式,其中关联逻辑群组内的逻辑扇区可按任何顺序进行更新并可重复任意次。其可通过以下方式建立:在主机写入的扇区是逻辑上非循序时,从循序更新区块转换成受更新的逻辑群组内先前写入的扇区。所有其后在此逻辑群组中更新的扇区会被写入混乱更新区块中的下一个可用扇区位置,无论其在群组内的逻辑扇区地址为何。
图7B显示由于五个分开的主机写入操作而按混乱顺序写入混乱更新区块的逻辑群组的扇区,而逻辑群组的原始区块中被取代的扇区及混乱更新区块中被复制的扇区变成过时的范例。在主机写入操作#1中,会更新存储于原始元区块的给定逻辑群组的逻辑扇区LS10-LS11。已更新的逻辑扇区LS10′-LS11′会被存储到新配置的更新区块中。此时,更新区块为循序的更新区块。在主机写入操作#2中,会将逻辑扇区LS5-LS6更新成为LS5′-LS6′且将其记录在紧接上一次写入之后的位置的更新区块中。这可将循序的更新区块转换为混乱的更新区块。在主机写入操作#3中,再次更新逻辑扇区LS10且将其在更新区块的下一个位置中记录成LS10″。此时,更新区块中的LS10″取代先前记录中的LS10′,而LS10′又取代原始区块中的LS10。在主机写入操作#4中,再次更新逻辑扇区LS10中的数据且将其在更新区块的下一个位置中记录成LS10′″。因此,LS10′″现在是逻辑扇区LS10的最后且唯一有效的数据。在主机写入操作#5中,更新逻辑扇区LS30中的数据且将其在更新区块中记录成LS30′。因此,此范例显示可以按照任何顺序及任意重复,将一逻辑群组内的逻辑扇区写入一混乱更新区块中。
强制循序更新
图8显示由于两个在逻辑地址上有中断的分开的主机写入操作而在逻辑群组中按循序顺序写入循序更新区块的扇区的范例。在主机写入#1中,将逻辑扇区LS5-LS8的更新数据在专用更新区块中记录成LS5′-LS8′。在主机写入#2中,将逻辑扇区LS14-LS16中的更新数据在上一次写入之后的更新区块中记录成LS14′-LS16′。然而,在LS8与LS14之间有地址跳跃,且主机写入#2通常会使更新区块成为非循序。由于地址跳跃不是很多,一个选项是在执行主机写入#2之前将原始区块的中间扇区的数据复制到更新区块,藉此先执行填补操作(#2A)。依此方式,即可保存更新区块的循序特性。
图9显示根据本发明的一般实施例,更新区块管理器更新一个逻辑群组的数据的程序流程图。所述更新程序包含以下步骤:
步骤260:所述存储器被组织成区块,每个区块均被分割成可一起擦除的存储器单位,每个存储器单位用于存储一数据逻辑单位。
步骤262:所述数据被组织成逻辑群组,每个逻辑群组均被分割成逻辑单位。
步骤264:在标准的情形下,根据第一指定顺序,优选以逻辑上循序的顺序,将逻辑群组的所有逻辑单位存储在原始区块的存储器单位中。依此方式,即可得知存取区块中个别逻辑单位的索引。
步骤270:对于给定逻辑群组(如,LGx)的数据,请求更新LGx内的逻辑单位。(以逻辑单位更新为例。一般而言,更新将是由LGx内一个或一个以上连续逻辑单位所组成的程序段。)
步骤272:请求的更新逻辑单位将会存储在专用于记录LGx的更新的第二区块中。记录顺序是根据第二顺序,通常是请求更新的顺序。本发明的一个特点允许将更新区块设定为初始一般按照逻辑上循序或混乱顺序记录数据。因此根据第二顺序,第二区块可以是循序区块或混乱区块。
步骤274:当程序循环返回到步骤270时,第二区块继续记录所请求的逻辑单位。在关闭的预定条件成形时将会关闭第二区块,以接收进一步更新。在此情形下,程序继续进行到步骤276。
步骤276:判断所述已关闭的第二区块是否以和原始区块相同的顺序来记录其更新逻辑单位。当所述两个区块记录逻辑单位仅相差一页标记时,所述两个区块便会被视为具有相同的顺序,如结合图3A所述。如果这两个区块具有相同的顺序,程序继续进行到步骤280,否则,必须在步骤290执行废弃某种项目收集。
步骤280:由于第二区块具有和第一区块相同的顺序,因此其可用来取代原始的第一区块。然后,更新程序在步骤299结束。
步骤290:从第二区块(更新区块)及第一区块(原始区块)搜集给定逻辑群组的各逻辑单位的最新版本。然后按照和第一区块相同的顺序将给定逻辑群组的已合并的逻辑单位写入第三区块。
步骤292:由于第三区块(合并的区块)具有和第一区块相同的顺序,因此其可用来取代原始的第一区块。然后,更新程序在步骤299结束。
步骤299:当停闭程序建立完整的更新区块时,所述区块会变成给定逻辑群组的新标准区块。将会终止此逻辑群组的更新执行绪。
图10显示根据本发明的一个优选实施例,更新区块管理器更新一个逻辑群组的数据的程序流程图。更新程序包含以下步骤:
步骤310:对于给定逻辑群组(如,LGx)的数据,会请求更新LGx内的逻辑扇区。(以扇区更新为例。一般而言,更新将是由LGx内一个或一个以上连续逻辑扇区所组成的程序段。)
步骤312:如果LGx专用的更新区块尚未存在,继续进行到步骤410以启始逻辑群组的新的更新执行绪。这可通过以下方式来完成:配置记录逻辑群组的更新数据专用的更新区块。如果已经有开启的更新区块,则继续进行到步骤314,开始将更新扇区记录到更新区块上。
步骤314:如果目前更新区块已经混乱(即,非循序),则直接继续进行到步骤510,以将请求的更新扇区记录到混乱更新区块上。如果目前更新区块为循序,则继续进行到步骤316,以处理循序更新区块。
步骤316:本发明的一个特点是允许将更新区块初始设置成一般以逻辑循序或混乱顺序的方式来记录数据。不过,因为所述逻辑群组最终会将其数据以逻辑循序的顺序存储于元区块中,所以希望尽可能保持所述更新区块的循序状态。接着,当关闭一更新区块以进行进一步更新时将会需要较少的处理,因为并不需要进行垃圾收集。
因此,判断所请求的更新是否遵循更新区块的目前循序顺序。如果更新循序遵循,则继续进行到步骤510以执行循序更新,且更新区块将维持循序。另一方面,如果更新未循序遵循(混乱更新),则其会在未采取任何动作时将循序更新区块转换成混乱更新区块。
在一个实施例中,不会进行任何动作来挽救此情况,然后程序直接进行到步骤370,其中允许更新将更新区块变成混乱更新区块。
任选强制循序程序
在另一项实施例中,会任选执行强制循序程序步骤320,以尽可能因顾及悬置的混乱更新而保存循序更新区块。其中有两种情况,这两种情况都需要复制原始区块的遗失扇区,以维持更新区块上记录的逻辑扇区的循序顺序。第一种情况是其中更新可建立短的地址跳跃。第二种情况是提早停闭更新区块以将其保持循序。强制循序程序步骤320包含以下子步骤:
步骤330:如果更新建立的逻辑地址跳跃未大于预定的数量CB,则程序继续进行到步骤350的强制循序更新程序,否则程序继续进行到步骤340,以考虑其是否适合进行强制循序停闭。
步骤340:如果未填充的物理扇区数量超过预定的设计参数CC(其代表值为更新区块大小的一半),则更新区块相对未被使用,因此不会提早关闭。程序继续进行到步骤370,且更新区块会成为混乱。另一方面,如果实质上已填充更新区块,则将其视为已经充分利用,因此进入步骤360以进行强制循序停闭。
步骤350:只要地址跳跃未超过预定的数量CB,强制循序更新便允许目前循序更新区块维持循序。实质上,会复制更新区块的关联原始区块的扇区,以填充地址跳跃跨越的间隙。因此,在继续进行到步骤510之前,会以中间地址的数据填补循序更新区块,以循序记录目前的更新。
步骤360:如果目前循序更新区块在实质上已经被填充,而非由悬置的混乱更新转换为混乱更新区块,则强制循序允许目前循序更新区块成为停闭状态而不是通过待决混乱更新转换成混乱区块。混乱或非循序更新的定义是具有以下项目的更新:不为上述地址跳跃例外所涵盖的正向地址转变、反向地址转变或地址重复。为了防止循序更新区块为混乱更新所转换,会通过复制更新区块的关联的原始部分过时区块的扇区来填充更新区块的未写入扇区位置。然后完全过时原始区块且可将其擦除。现在,目前的更新区块具有完整组的逻辑扇区,然后停闭成为取代原始元区块的完整元区块。然后,程序继续进行到步骤430以在其位置配置更新区块,以接受在步骤310中首先请求的悬置扇区更新的记录。
转换成混乱更新区块
步骤370:当悬置的更新未按循序顺序且可有可无时,如果无法满足强制循序条件,则在程序继续进行到步骤510时,通过允许在更新区块上记录具有非循序地址的悬置更新扇区,以允许循序更新区块转换为混乱更新区块。如果最大数量的混乱更新区块存在,则在允许转换进行之前,必须关闭最久未存取的混乱更新区块;因而不会超过最大数量的混乱区块。最久未存取的混乱更新区块的识别和步骤420所述的一般情形相同,但仅限于混乱更新区块。此时关闭混乱更新区块可通过如步骤550所述的合并来达成。
配置受系统限制的新更新区块
步骤410:将擦除元区块配置为更新区块的程序始于决定是否超过预定的系统限制。由于资源有限,存储器管理系统通常允许可同时存在预定最大数量CA个更新区块。此限制是循序更新区块及混乱更新区块的总数,也是设计参数。在一项优选实施例中,此限制为(例如)最大8个更新区块。还有,由于系统资源的较高需求,在可同时开启的混乱更新区块的最大数量上还有对应的预定限制(如,4个)。
因此,在已经配置CA个更新区块时,则只有在关闭现有的配置请求之一后,才能满足下一个配置请求。程序继续进行到步骤420。当开启的更新区块数量小于CA时,程序直接进行到步骤430。
步骤420:在超过更新区块的最大数量CA时,关闭最久未存取的更新区块并执行垃圾收集。最久未存取的更新区块会被识别为和最久未存取的逻辑区块相关联的更新区块。为了决定最久未存取的区块,存取包括逻辑扇区的写入及选择性读取。按照存取的顺序维持开启更新区块的列表;初始化时,不会假设任何存取顺序。更新区块的关闭在更新区块为循序时,将按照结合步骤360及步骤530所述的相同程序,在更新区块为混乱时,将按照结合步骤540所述的相同程序。此关闭可挪出空间以在步骤430配置新的更新区块。
步骤430:配置一新的元区块作为所述给定逻辑群组LGX专属的更新区块便可满足所述配置要求。接着,程序继续进行到步骤510。
在更新区块上记录更新数据
步骤510:将请求的更新扇区记录在更新区块的下一个可用物理位置上。然后,程序继续进行到步骤520,决定更新区块是否准备停闭就绪。
更新区块停闭
步骤520:如果更新区块还有接受附加更新的空间,则继续进行到步骤570。否则继续进行到步骤522以停闭更新区块。在目前请求的写入尝试写入多于区块所有空间的逻辑扇区时,有两项填满更新区块的可能实施例。在第一实施例中,会将写入请求分成两个部分,其中第一部分可写入直到区块的最后物理扇区。然后关闭区块且将写入的第二部分处理为下一个请求的写入。在另一个实施例中,会在区块填补其余扇区时保留请求的写入,然后再将其关闭。请求的写入会被处理为下一个请求的写入。
步骤522:如果更新区块为循序,则继续进行到步骤530以进行循序关闭。如果更新区块为混乱,则继续进行到步骤540以进行混乱关闭。
循序更新区块停闭
步骤530:由于更新区块为循序且已完全填充,则其中存储的逻辑群组为完整。元区块为完整且取代原始的元区块。此时,会使原始区块完全过时且将其擦除。然后程序继续进行到步骤570,其中给定逻辑群组的更新执行绪结束。
混乱更新区块停闭
步骤540:由于更新区块为非循序填充,可能含有一些逻辑扇区的多个更新,因此会执行垃圾收集以挽救其中的有效数据。混乱更新区块可为已经压缩或合并。在步骤542将会决定将执行的程序。
步骤542:将执行压缩还是合并将取决于更新区块的退化。如果逻辑扇区已更新多次,其逻辑地址将高度退化。将有相同逻辑扇区的多个版本记录在更新区块上,而只有最后记录的版本为所述逻辑扇区的有效版本。在含有多个版本的逻辑扇区的更新区块中,有所区分的逻辑扇区的数量会比逻辑群组的数量少很多。
在优选实施例中,当更新区块中有所区分的逻辑扇区的数量超过预定的设计参数CD(其代表值为逻辑群组大小的一半)时,停闭程序会在步骤550执行合并,否则程序会继续进行到步骤560的压缩。
步骤550:如果要合并混乱更新区块,则将以含有合并数据的新的标准元区块取代原始区块及更新区块。合并后,更新执行绪将在步骤570结束。
步骤560:如果要压缩混乱更新区块,则将以载有压缩数据的新的更新区块取而代之。压缩后,已压缩更新区块的处理将在步骤570结束。或者,可将压缩延迟直到再次写入更新区块,因此排除压缩之后为没有中间更新的合并的可能性。然后,当步骤502中出现下一个要求在LGX中进行更新时,在给定逻辑区块的进一步更新中将使用新的更新区块。
步骤570:当停闭程序建立完整的更新区块时,所述区块会变成给定逻辑群组的新标准区块。此逻辑群组的更新执行绪将会终止。在停闭程序建立取代现有更新区块的新的更新区块时,会使用新的更新区块记录为给定逻辑群组请求的下一个更新。在更新区块未停闭时,处理会在步骤310中出现下一个要求在LGX中进行更新时继续。
从上述程序可知,在关闭混乱更新区块时,会进一步处理其上记录的更新数据。尤其,其有效数据的垃圾收集是通过以下程序:压缩到另一个混乱区块的程序,或和其关联的原始区块合并以形成新的标准循序区块的程序。
图11A为详细显示关闭图10所示的混乱更新区块的合并程序的流程图。混乱更新区块合并是执行于停闭更新区块时(例如,当更新区块已填满其写入的最后物理扇区位置时)的两个可能程序之一。区块中写入的有所区分的逻辑扇区数量超过预定的设计参数CD时,将选择合并。图10所示的合并程序步骤550包含以下子步骤:
步骤551:在混乱更新区块被关闭时,会配置可取而代之的新元区块。
步骤552:在混乱更新区块及关联的原始区块中,搜集各逻辑扇区的最新版本并忽略所有的过时扇区。
步骤554:将所搜集的有效扇区按逻辑上循序顺序记录在新的元区块上,以形成完整区块,即,按循序顺序记录的逻辑群组的所有逻辑扇区的区块。
步骤556:以新的完整区块取代原始区块。
步骤558:擦除已停闭的更新区块及原始区块。
图11B为详细显示关闭图10所示的混乱更新区块的压缩程序的流程图。区块中写入的有所区分的逻辑扇区数量低于预定的设计参数CD时,将选择压缩。图10所示的压缩程序步骤560包含以下子步骤:
步骤561:在混乱更新区块被压缩时,会配置取而代之的新元区块。
步骤562:在要压缩的现有的混乱更新区块中,搜集各逻辑扇区的最新版本。
步骤564:将所搜集的扇区记录在新的更新区块上,以形成具有压缩扇区的新的更新区块。
步骤566:以具有压缩扇区的新的更新区块取代现有的更新区块。
步骤568:擦除已停闭的更新区块。
逻辑与元区块状态
图12A显示逻辑群组的所有可能状态,及其间在各种操作下的可能转变。
图12B为列出逻辑群组的可能状态的表格。逻辑群组状态的定义如下:
1.完整:可能利用页标记卷绕方式将逻辑群组中的所有逻辑扇区已依照逻辑循序顺序被写入单一元区块之中。
2.未写入:逻辑群组中未曾写入任何逻辑扇区。逻辑群组在群组地址表中会被标示为未写入且没有任何配置的元区块。返回预定义的数据模式,以响应此群组内每个扇区的主机读取。
3.循序更新:可能使用页标记将逻辑群组内的一些扇区按逻辑上循序顺序写入元区块中,因此其可取代群组中任何先前完整状态的对应的逻辑扇区。
4.混乱更新:可能使用页标记将逻辑群组内的一些扇区按逻辑上非循序顺序写入元区块中,因此其可取代群组中任何先前完整状态的对应的逻辑扇区。群组内的扇区可被写入一次以上,其中最新版本将取代所有先前的版本。
图13A显示元区块的所有可能状态,及在各种操作下在所述可能状态之间的可能转变。
图13B显示元区块的所有可能状态。元区块状态定义如下:
1.已擦除:元区块中的所有扇区已被擦除。
2.循序更新:可能使用页标记将呈现逻辑循序顺序的扇区部份地写入元区块。所有扇区均属于相同的逻辑群组。
3.混乱更新:元区块已经被呈现逻辑非循序顺序的扇区部份或完全写入。任何扇区均可被写入一次以上。所有扇区均属于相同的逻辑群组。
4.完整:可能使用页标记以逻辑循序的顺序将元区块完全写入。
5.原始:元区块先前为完整但至少一个扇区已因主机数据更新而过时。
图14(A)-14(J)为显示各种操作对逻辑群组状态以及物理元区块的效果的状态图。
图14(A)显示对应于第一写入操作的逻辑群组及元区块转变的状态图。主机按逻辑上循序顺序将先前未写入的逻辑群组的一个或一个以上扇区写入新配置的已擦除元区块。逻辑群组及元区块进入循序更新状态。
图14(B)显示对应于第一完整操作的逻辑群组及元区块转变的状态图。先前未写入的循序更新逻辑群组因主机循序写入所有扇区而变完整。如果存储卡通过以预定义的数据模式填充其余未写入的扇区来填满群组,则也会发生转变。元区块变成完整。
图14(C)显示对应于第一混乱操作的逻辑群组及元区块转变的状态图。先前未写入的循序更新逻辑群组在主机非循序写入至少一个扇区时变成混乱。
图14(D)显示对应于第一压缩操作的逻辑群组及元区块转变的状态图。从旧区块将先前未写入的混乱更新逻辑群组内的所有有效扇区复制到新的混乱元区块,然后再将其擦除。
图14(E)显示对应于第一合并操作的逻辑群组及元区块转变的状态图。从旧的混乱区块移动先前未写入的混乱更新逻辑群组内的所有有效扇区,以按逻辑上循序顺序填充新配置的已擦除区块。主机未写入的扇区会以预定义的数据模式加以填充。然后擦除旧的混乱区块。
图14(F)显示对应于循序写入操作的逻辑群组及元区块转变的状态图。主机按逻辑上循序顺序将完整逻辑群组的一个或一个以上扇区写入新配置的已擦除元区块。逻辑群组及元区块成为循序更新状态。先前完整的元区块变成原始元区块。
图14(G)显示对应于循序填充操作的逻辑群组及元区块转变的状态图。循序更新逻辑群组在主机循序写入所有其扇区时变成完整。这也可发生于以原始区块的有效扇区填充循序更新逻辑群组以使其完整的垃圾收集期间,在此之后会擦除原始区块。
图14(H)显示对应于非循序写入操作的逻辑群组及元区块转变的状态图。循序更新逻辑群组在主机非循序写入至少一个扇区时变成混乱。非循序扇区写入可造成更新区块或对应原始区块中的有效扇区变成过时。
图14(I)显示对应于压缩操作的逻辑群组及元区块转变的状态图。从旧区块将混乱更新逻辑群组内的所有有效扇区复制到新的混乱元区块,然后再将其擦除。原始区块不会受到影响。
图14(J)显示对应于合并操作的逻辑群组及元区块转变的状态图。从旧的混乱区块复制混乱更新逻辑群组内的所有有效扇区,以按逻辑上循序顺序填充新配置的已擦除区块。然后擦除旧的混乱区块及原始区块。
更新区块追踪及管理
图15显示用于追踪已开启及已关闭的更新区块与已擦除区块以进行配置的配置区块列表(ABL)的结构的优选实施例。所述配置区块列表(ABL)610会被保存于控制器RAM130之中,以允许管理已擦除区块的配置、配置的更新区块、关联的区块及控制结构,以启用正确的逻辑对物理地址转换。在优选实施例中,ABL包括:已擦除区块的列表、开启的更新区块列表614及关闭的更新区块列表616。
开启的更新区块列表614是ABL中具有开启更新区块属性的区块项目组。开启的更新区块列表具有用于目前开启的每个数据更新区块的一个项目。各项目保有以下信息。LG是目前更新元区块专用的逻辑群组地址。循序/混乱是代表以循序或混乱更新数据填充更新区块的状态。MB是更新区块的元区块地址。页标记是在更新区块的第一物理位置记录的起始逻辑扇区。写入的扇区号码代表目前在更新区块上写入的扇区号码。MB0是关联的原始区块的元区块地址。Page Tag0是关联的原始区块的页标记。
关闭的更新区块列表616是配置区块列表(ABL)的子集。其为ABL中具有关闭更新区块的属性的区块项目组。关闭的更新区块列表具有一个用于已关闭的每个数据更新区块的项目,但其项目在逻辑对主物理目录中并未更新。各项目保有以下信息。LG是目前更新区块专用的逻辑群组地址。MB是更新区块的元区块地址。页标记是在更新区块的第一物理位置记录的起始逻辑扇区。MB0是关联的原始区块的元区块地址。
混乱区块索引
循序更新区块具有按逻辑上循序顺序存储的数据,因此很容易寻找区块中的任何逻辑扇区。混乱更新区块具有其未按顺序存储的逻辑扇区并可存储一个逻辑扇区的多个更新世代。必须维持附加信息,以记录各有效逻辑扇区定位在混乱更新区块中的位置。
在优选实施例中,混乱区块索引数据结构允许追踪及快速存取混乱区块中的所有有效扇区。混乱区块索引独立管理小型区域的逻辑地址空间,并可有效处理系统数据及使用者数据的热区。索引数据结构实质上允许在快闪存储器中维持具有不常更新需求的索引信息,以免性能明显受到影响。另一方面,将混乱区块中最近写入扇区的列表保留在控制器RAM的混乱扇区列表中。此外,将快闪存储器的索引信息的高速缓存保留在控制器RAM中,以减少地址转换的快闪扇区存取的数量。各混乱区块的索引存储于快闪存储器中的混乱区块索引(CBI)扇区中。
图16A显示混乱区块索引(CBI)扇区的数据字段。混乱区块索引扇区(CBI扇区)含有逻辑群组中各扇区映射到混乱更新区块的索引,从而定义逻辑群组各扇区在混乱更新区块或其关联的原始区块内的位置。CBI扇区包括:记录混乱区块内有效扇区的混乱区块索引字段、记录混乱区块地址参数的混乱区块信息字段及记录存储CBI扇区的元区块(CBI区块)内有效CBI扇区的扇区索引字段。
图16B显示记录于专用元区块中的混乱区块索引(CBI)扇区的范例。专用的元区块将称为CBI区块620。在更新CBI扇区时,会将其写入CBI区块620中下一个可用的物理扇区位置。因此,CBI扇区的多个副本可存在于CBI区块中,其中只有最后写入的副本为有效副本。例如,已经利用为有效版本的最新版本将逻辑群组LG1的CBI扇区更新三次。区块中最后写入的CBI扇区的一组索引可识别CBI区块中各有效扇区的位置。在此范例中,区块中最后写入的CBI扇区是LG136的CBI扇区,且索引组是取代所有先前索引组的有效索引组。当CBI区块最后变成以CBI扇区予以完全填充时,将所有有效扇区再写入新的区块位置,以在控制写入操作期间压缩区块。然后擦除整个区块。
CBI扇区内的混乱区块索引字段含有逻辑群组内或子群组内各逻辑扇区映射到混乱更新区块的索引项目。各索引项目代表对应逻辑扇区的有效数据所在的混乱更新区块内的偏移。保留的索引值代表混乱更新区块中不存在逻辑扇区的有效数据,且代表关联的原始区块中的对应扇区为有效。一些混乱区块索引字段项目的高速缓存被保留在控制器RAM中。
CBI扇区内的混乱区块信息字段含有关于存在于系统中各混乱更新区块的一个项目,以记录区块的地址参数信息。此字段中的信息只在CBI区块的最后写入扇区中有效。此信息也会出现在RAM的数据结构中。
各混乱更新区块的项目包括三个地址参数。第一个参数是和混乱更新区块关联的逻辑群组(或逻辑群组数)的逻辑地址。第二个参数是混乱更新区块的元区块地址。第三个参数是写入混乱更新区块中最后扇区的物理地址偏移。偏移信息设定初始化期间混乱更新区块的扫描起点,以在RAM中重建数据结构。
扇区索引字段含有关于CBI区块中各有效CBI扇区的项目。其可定义CBI区块内有关各许可混乱更新区块的最近写入的CBI扇区所在的偏移。索引中偏移的保留值代表不存在许可的混乱更新区块。
图16C为显示存取正在进行混乱更新的给定逻辑群组的逻辑扇区的数据的流程图。在更新程序期间,将更新数据记录在混乱更新区块中,而未变更的数据则留在和逻辑群组关联的原始元区块中。在混乱更新下存取逻辑群组的逻辑扇区的程序如下:
步骤650:开始定位给定逻辑群组的给定逻辑扇区。
步骤652:在CBI区块中定位最后写入的CBI扇区。
步骤654:通过查询最后写入的CBI扇区的混乱区块信息字段,定位和给定逻辑群组关联的混乱更新区块或原始区块。此步骤可在步骤662前的任何时间执行。
步骤658:如果最后写入的CBI扇区是指向给定的逻辑群组,则可定位CBI扇区。继续进行到步骤662。否则,继续进行到步骤660。
步骤660:通过查询最后写入的CBI扇区的扇区索引字段,定位给定逻辑群组的CBI扇区。
步骤662:通过查询所寻找到的CBI扇区的混乱区块索引字段,定位混乱区块或原始区块中的给定逻辑扇区。
图16D显示根据其中已将逻辑群组分割成子群组的替代性实施例,存取正在进行混乱更新的给定逻辑群组的逻辑扇区的数据的流程图。CBI扇区的有限容量只能记录预定最大数量的逻辑扇区。当逻辑群组具有多于单一CBI扇区所能处理的逻辑扇区时,将逻辑群组分割成多个具有指派给各子群组的CBI扇区的子群组。在一个范例中,各CBI扇区具有足够追踪由256个扇区及多达8个混乱更新区块所组成的逻辑群组的容量。如果逻辑群组具有超过256个扇区的大小,则存在用于逻辑群组内各256扇区子群组的分开的CBI扇区。可存在用于逻辑群组内多达8个子群组的CBI扇区,以支持大小多达2048个扇区的逻辑群组。
在优选实施例中,采用间接索引方案以促进索引的管理。扇区索引的各项目具有直接及间接字段。
直接扇区索引定义CBI区块内有关特定混乱更新区块的所有可能CBI扇区所在的偏移。此字段中的信息只在有关所述特定混乱更新区块的最后写入的CBI扇区中有效。索引中偏移的保留值代表CBI扇区并不存在,因为对应的有关混乱更新区块的逻辑子群组或是不存在,或是由于已配置更新区块而未更新。
间接扇区索引定义有关各许可的混乱更新区块的最近写入的CBI扇区所在的CBI区块内的偏移。索引中偏移的保留值代表不存在许可的混乱更新区块。
图16D显示在混乱更新下存取逻辑群组的逻辑扇区的程序,其步骤如下:
步骤670:将各逻辑群组分割成多个子群组并为各子群组指派CBI扇区。
步骤680:开始定位给定逻辑群组的给定子群组的给定逻辑扇区。
步骤682:在CBI区块中寻找最后写入的CBI扇区。
步骤684:通过查询最后写入的CBI扇区的混乱区块信息字段,寻找和给定子群组关联的混乱更新区块或原始区块。此步骤可在步骤696前的任何时间执行。
步骤686:如果最后写入的CBI扇区是指向给定的逻辑群组,则继续进行到步骤691。否则,继续进行到步骤690。
步骤690:通过查询最后写入的CBI扇区的间接扇区索引字段,定位给定逻辑群组的多个CBI扇区中最后写入的CBI扇区。
步骤691:已经定位和给定逻辑群组的子群组其中之一关联的至少一个CBI扇区。继续。
步骤692:如果所定位的CBI扇区指向给定子群组,则可定位给定子群组的CBI扇区。继续进行到步骤696。否则,继续进行到步骤694。
步骤694:通过查询目前定位的CBI扇区的直接扇区索引字段,来寻找给定子群组的CBI扇区。
步骤696:通过查询给定子群组的CBI扇区的混乱区块索引字段,来寻找混乱区块或原始区块中的给定逻辑扇区。
图16E显示在其中将各逻辑群组分割成多个子群组的实施例中,混乱区块索引(CBI)扇区及其功能的范例。逻辑群组700原来将其完整的数据存储在原始元区块702中。接着,以专用的混乱更新区块704的配置来更新逻辑群组。在本范例中,将逻辑群组700分割成子群组,这些子群组A、B、C、D各具有256个扇区。
为了定位子群组B中的第i个扇区,先定位CBI区块620中最后写入的CBI扇区。最后写入的CBI扇区的混乱区块信息字段提供定位给定逻辑群组的混乱更新区块704的地址。同时,其还可提供写入混乱区块中的最后扇区的位置。此信息在扫描及重建索引时很有用。
如果最后写入的CBI扇区结果是给定逻辑群组的四个CBI扇区之一,则进一步决定其是否正是含有第i个逻辑扇区的给定子群组B的CBI扇区。如果是,则CBI扇区的混乱区块索引会指向存储第i个逻辑扇区的数据的元区块位置。扇区位置可能在混乱更新区块704中或在原始区块702中。
如果最后写入的CBI扇区结果是给定逻辑群组的四个CBI扇区之一但却非属于子群组B,则查询其直接扇区索引,以定位子群组B的CBI扇区。一旦定位了此确切的CBI扇区,便查询其混乱区块索引,以在混乱更新区块704及原始区块702中寻找第i个逻辑扇区。
如果最后写入的CBI扇区结果不是给定逻辑群组的四个CBI扇区中的任一个,则查询其间接扇区索引以寻找四个CBI扇区中的一个。在图16E所示的范例中,定位子群组C的CBI扇区。然后,子群组C的此CBI扇区查询其直接扇区索引,以寻找子群组B的确切的CBI扇区。此范例显示在查询混乱区块索引时,将发现第i个逻辑扇区为未变更且会在原始区块中寻找到其有效数据。
同样的考虑也适用于在给定逻辑群组的子群组C中寻找第j个逻辑扇区。此范例显示最后写入的CBI扇区结果不是给定逻辑群组的四个CBI扇区中的任何一个。其间接扇区索引指向给定群组的四个CBI扇区之一。所指向的四个中的最后写入结果也正是子群组C的CBI扇区。在查询其混乱区块索引时,将发现第j个逻辑扇区被定位在混乱更新区块704中的指定位置。
控制器RAM中存在系统中的各混乱更新区块的混乱扇区列表。每份列表均含有一份从快闪存储器中相关CBI扇区最后被更新以来被写入所述混乱更新区块之中的扇区的记录。特定混乱更新区块的逻辑扇区地址(可保留在混乱扇区列表中)的数量是具有8至16的代表值的设计参数。列表的最优大小可决定为其对混乱数据写入操作的额外开销及初始化期间扇区扫描时间的作用之间的权衡。
在系统初始化期间,为了识别自其关联的CBI扇区之一的先前更新后所写入的有效扇区,必须扫描各混乱更新区块。在控制器RAM中,会构成各混乱更新区块的混乱扇区列表。只需要在最后写入的CBI扇区中,从各区块的混乱区块信息字段中定义的最后扇区地址开始扫描各区块即可。
在配置混乱更新区块时,会写入CBI扇区以对应于所有的更新逻辑子群组。混乱更新区块的逻辑及物理地址会被写入扇区中可用的混乱区块信息字段,其中空值项目在混乱区块索引字段中。会在控制器RAM中开启混乱扇区列表。
在关闭混乱更新区块时,会以从扇区中的混乱区块信息字段移除的区块逻辑及物理地址写入CBI扇区。RAM中对应的混乱扇区列表变成未使用。
可修改控制器RAM中对应的混乱扇区列表,以包括写入混乱更新区块的扇区的记录。当控制器RAM中的混乱扇区列表没有其它扇区记录写入混乱更新区块的任何可用空间时,为有关列表中扇区的逻辑子群组写入已更新的CBI扇区,然后清除列表。
当CBI区块620变满时,将有效的CBI扇区复制到已配置的已擦除区块中,然后擦除先前的CBI区块。
地址表
图2所示的逻辑对物理地址转换模块140负责关联快闪存储器中主机的逻辑地址对对应的物理地址。逻辑群组及物理群组(元区块)间的映射存储于非易失性快闪存储器200及易失性却较为敏捷的RAM 130(见图1)中分布的一组表格及列表中。在快闪存储器中维持地址表,其含有存储器系统中每个逻辑群组的元区块地址。此外,最近写入扇区的逻辑对物理地址记录会暂时保留在RAM中。在系统通电后进行初始化时,可从快闪存储器中的区块列表及数据扇区标头中重新构成这些易失性记录。因此,快闪存储器中的地址表只需要偶而更新,从而使得控制数据的额外开销写入操作的百分比较低。
逻辑群组的地址记录的层级包括:RAM中的开启的更新区块列表、关闭的更新区块列表及维持在快闪存储器中的群组地址表(GAT)。
开启的更新区块列表是控制器RAM中目前开启用于写入已更新的主机扇区数据的数据更新区块的列表。区块的项目在区块关闭时被移至关闭的更新区块列表。关闭的更新区块列表是控制器RAM中已经关闭的数据更新区块的列表。列表中项目的子集在控制写入操作期间被移至群组地址表中的扇区。
群组地址表(GAT)是存储器系统中主机数据所有逻辑群组的元区块地址的列表。GAT含有根据逻辑地址循序排序的各逻辑群组的一个项目。GAT中的第n个项目含有具有地址n的逻辑群组的元区块地址。在优选实施例中,GAT是快闪存储器中的表格,其中包含一组具定义存储器系统中每个逻辑群组的元区块地址的项目的扇区(称为GAT扇区)。GAT扇区定位在快闪存储器中的一个或一个以上专用的控制区块(称为GAT区块)中。
图17A显示群组地址表(GAT)扇区的数据字段。GAT扇区可(例如)具有足够含有一组128个连续逻辑群组的GAT项目的容量。各GAT扇区包括两个组成部分,即:一组用于某一范围内各逻辑群组的元区块地址的GAT项目,及GAT扇区索引。第一组成部分含有用于定位和逻辑地址关联的元区块的信息。第二组成部分含有用于定位GAT区块内所有有效GAT扇区的信息。各GAT项目有三个字段,即:元区块号码、如先前结合图3A(iii)所述的页标记及代表元区块是否已经重新链接的旗标。GAT扇区索引列出GAT区块中有效GAT扇区的位置。此索引存在于每个GAT扇区中但会被GAT区块中下一个写入的GAT扇区的版本所取代。因此只有最后写入的GAT扇区中的版本有效。
图17B显示记录在一个或一个以上GAT区块中的群组地址表(GAT)扇区的范例。GAT区块是记录GAT扇区专用的元区块。在更新GAT扇区时,会将其写入GAT区块720中下一个可用的物理扇区位置。因此,GAT区块中可存在GAT扇区的多个副本,其中只有最后写入的副本有效。例如,GAT扇区255(含有逻辑群组LG3968-LG4098的指针)至少已经使用有效版本的最新版本更新两次。区块中最后写入的GAT扇区的一组索引可识别GAT区块中各有效扇区的位置。在此范例中,区块中最后写入的GAT扇区是GAT扇区236,且其索引组是取代所有先前索引组的有效索引组。当GAT区块最后变成以GAT扇区完全填充时,会将所有有效扇区再写入新的区块位置,以在控制写入操作期间压缩区块。然后擦除整个区块。
如上所述,GAT区块在逻辑地址空间的区域中含有逻辑上连续组的群组的项目。GAT区块内的GAT扇区各含有128个连续逻辑群组的逻辑对物理映射信息。在GAT区块所跨越的地址范围内,存储所有逻辑群组项目所需的GAT扇区数仅占用区块内总扇区位置的一小部分。因此,通过在区块中下一个可用扇区位置将GAT扇区写入,即可将所述GAT扇区更新。GAT区块中所有有效GAT扇区及其位置的索引维持在最近写入的GAT扇区中的索引字段中。GAT区块中有效GAT扇区所占用的总扇区的一小部分为系统设计参数,其通常为25%。然而,每个GAT区块中最多有64个有效GAT扇区。在大逻辑容量的系统中,可能必须在一个以上的GAT区块中存储GAT扇区。此时,各GAT区块与固定范围的逻辑群组关联。
可作为控制写入操作的一部分执行GAT更新,此操作会在ABL用尽用于配置的区块时受到触发(见图18)。其执行和ABL填充及CBL清空操作同时进行。在GAT更新操作期间,一个GAT扇区以关闭的更新区块列表中对应项目的信息来更新项目。GAT项目被更新时,会从关闭的更新区块列表(CUBL)移除任何对应的项目。例如,会根据关闭的更新区块列表中的第一项目来选择要更新的GAT扇区。可将更新扇区写入GAT区块中的下一个可用扇区位置。
当没有任何扇区位置可供一已更新的GAT扇区使用时,在控制写入操作期间便会发生GAT再写入操作。将会配置新的GAT区块且从完整的GAT区块中按循序顺序复制GAT索引所定义的有效GAT扇区。然后擦除整个GAT区块。
GAT高速缓存是控制器RAM 130中,GAT扇区的128个项目的子部分的项目的副本。GAT高速缓存项目的数量是一项系统设计参数,代表值为32。每次从GAT扇区读取一个项目时,即可建立相关扇区子部分的GAT高速缓存。将会维持多个GAT高速缓存。其数量是代表值为4的设计参数。根据最久未使用以不同扇区子部分的项目来覆写GAT高速缓存。
擦除的元区块管理
图2所示的擦除区块管理器160可使用一组维持目录及系统控制信息的列表来管理擦除区块。这些列表分布于控制器RAM 130及快闪存储器200中。当必须配置已擦除的元区块以存储使用者数据或存储器系统控制数据结构时,会选择保留在控制器RAM中的配置区块列表(ABL)中的下一个可用元区块号码(见图15)。同样,在撤出元区块后而将其擦除时,会将其号码添加到同样保留在控制器RAM中的清除区块列表(CBL)。相对静态的目录及系统控制数据存储于快闪存储器中。这些包括列出快闪存储器中所有元区块的擦除状态的已擦除区块列表及位图(MAP)。已擦除的区块列表及MAP存储于个别扇区中,且会记录在称为“MAP区块”的专用元区块中。这些分布于控制器RAM及快闪存储器中的列表可提供已擦除区块记录的层级以对已擦除元区块的使用进行有效管理。
图18为显示用于使用及再循环已擦除区块的控制及目录信息的分布及流程的示意方块图。控制及目录数据维持在被保留在控制器RAM 130中在或常驻于快闪存储器200中的MAP区块750中的列表之中。
在优选实施例中,控制器RAM 130会保留配置区块列表(ABL)610及清除区块列表(CBL)740。如先前结合图15所述,配置区块列表(ABL)可记录最近已配置哪些元区块以存储使用者数据或存储器系统控制数据结构。在必须配置新的已擦除元区块时,会在配置区块列表(ABL)中选择下一个可用的元区块号码。同样,会使用清除区块列表(CBL)记录已经解除配置及擦除的更新元区块。在控制器RAM 130(见图1)中会保留ABL及CBL以在追踪相对作用中更新区块时进行快速存取且简易的操控。
配置区块列表(ABL)可记录即将成为更新区块的已擦除元区块的集区及已擦除元区块的配置。因此,这些元区块中每一者均可由指定其是否为ABL悬置配置中的已擦除区块、开启的更新区块或关闭的更新区块的属性来说明。图18显示ABL含有:已擦除ABL列表612、开启的更新区块列表614及关闭的更新区块列表616。此外,和开启的更新区块列表614关联的是关联的原始区块列表615。同样,和关闭的更新区块列表关联的是关联的已擦除原始区块列表617。如先前图15所示,这些关联的列表分别是开启的更新区块列表614及关闭的更新区块列表616的子集。已擦除的ABL区块列表612、开启的更新区块列表614及关闭的更新区块列表616均为配置区块列表(ABL)610的子集,各列表中的项目分别具有对应的属性。
MAP区块750是存储快闪存储器200中的擦除管理记录专用的元区块。MAP区块存储MAP区块扇区的时间序列,其中各MAP扇区不是擦除区块管理(EBM)扇区760,就是MAP扇区780。当已擦除区块配置用尽且在撤出元区块时再循环时,关联的控制及目录数据优选含在可在MAP区块中更新的逻辑扇区中,其中会将更新数据的各例项记录在新的区块扇区中。MAP区块750中可存在EBM扇区760及MAP扇区780的多个副本,其中只有最新版本有效。有效MAP扇区的位置的索引包含在EMB区块中的字段中。有效的EMB扇区总是在控制写入操作期间最后被写入MAP区块中。当MAP区块750已满时,会在控制写入操作期间将所有有效扇区再写入新的区块位置而将其压缩。然后擦除整个区块。
各EBM扇区760含有已擦除的区块列表(EBL)770,所述列表是已擦除区块总体的子集地址的列表。已擦除的区块列表(EBL)770可当作含有已擦除元区块号码的缓冲器,从此缓冲器中会定期取用元区块号码以重新填充ABL,并定期将元区块号码添加到此缓冲器中以重新清空CBL。EBL 770可当作用于以下项目的缓冲器:可用的区块缓冲器(ABB)772、已擦除的区块缓冲器(EBB)774及已清除的区块缓冲器(CBB)776。
可用的区块缓冲器(ABB)772含有紧接先前ABL填充操作之后的ABL 610的项目的副本。其实际上是正在ABL填充操作之后的ABL的备份副本。
已擦除的区块缓冲器(EBB)774含有先前从MAP扇区780或CBB列表776传送的已擦除的区块地址(说明如下),且所述地址可用于在ABL填充操作期间传送至ABL 610。
已清除的区块缓冲器(CBB)776含有在CBL清空操作期间已从CBL 740传送及其后会被传送至MAP扇区780或EBB列表774的已擦除区块的地址。
各个MAP扇区780含有称为MAP的位图结构。MAP会使用快闪存储器中各元区块的一位,以用来表示各区块的擦除状态。对应于EBM扇区中ABL、CBL或已擦除的区块列表所列的区块地址的位在MAP中不会被设为擦除状态。
区块配置算法永远不会使用在MAP、已擦除的区块列表、ABL或CBL内,任何不含有有效数据结构且未被指定为已擦除区块的区块,因此无法存取此类区块用于存储主机或控制数据结构。这可提供从可存取的快闪存储器地址空间排除具有缺陷位置的区块的简单机制。
图18所示的层级可有效地管理已擦除区块记录,并且对被存储于所述控制器的RAM中的所述区块地址列表提供完整的安全性。可以不频繁的方式在所述区块地址列表及一个或一个以上的MAP扇区780之间交换已擦除的区块项目。可于电源关闭之后的系统初始化期间,通过存储于快闪存储器中的扇区中的所述已擦除区块列表及地址转换表中的信息,以及有限地扫描快闪存储器中少量被参照的数据区块,来重建所述列表。
用于更新已擦除元区块记录的层级所采用的算法可以下面的顺序来配置使用已擦除区块:将来自所述MAP区块750的区块丛以地址顺序与来自所述CBL 740的区块地址丛交错,其反映的是区块被所述主机更新的顺序。对大部份的元区块大小与系统存储器容量而言,单一MAP扇区可针对所述系统中的所有元区块提供位图。在此情况下,已擦除的区块必定会以和此MAP扇区中记录的相同的地址顺序来配置使用。
擦除区块管理操作
如上所述,ABL 610是具有可经配置供使用的已擦除元区块及最近已配置为数据更新区块的元区块的地址项目的列表。ABL中区块地址的实际数量介于为系统设计变量的最大及最小限制之间。在制造期间,格式化的ABL项目的数量是存储卡类型及容量的函数。此外,由于可用的已擦除区块的数量会因寿命期间的区块故障而缩减,也会缩减接近系统寿命终点处ABL中项目的数量。例如,在填充操作后,ABL中的项目可指定可用于以下用途的区块。每个区块具有一个项目的部分写入数据更新区块的项目不超过系统对同时开启的最大更新区块量的限制。用于配置为数据更新区块的擦除区块介于一至二十个项目之间。有已擦除区块的四个项目配置为控制区块。
ABL填充操作
由于ABL 610会因为配置而变成耗尽,因此需要进行重新填充。填充ABL的操作发生于控制写入操作期间。当必须配置区块,但ABL含有不足用于配置为数据更新区块或其它某个控制数据更新区块的已擦除区块项目时,此操作被触发。在控制写入期间,ABL填充操作和GAT更新操作同时进行。
在ABL填充操作期间会发生以下动作。
1.保留具有目前数据更新区块的属性的ABL项目。
2.保留具有已关闭数据更新区块的属性的ABL项目,除非所述区块的某个项目正于所述同时进行的GAT更新操作中被写入,在此情况下则从所述ABL中移除所述项目。
3.保留用于未配置的擦除区块的ABL项目。
4.压缩ABL以移除因移除项目所产生的间隙,从而以维持项目的顺序。
5.通过附加来自所述EBB列表中下次可用的项目,来完全填充所述ABL。
6.利用所述ABL中所述目前的项目来覆写所述ABB列表。
CBL清空操作
CBL是控制器RAM中已擦除区块地址的列表,对已擦除区块项目数量的限制与ABL相同。清空CBL的操作发生于控制写入操作期间。因此,其和ABL填充/GAT更新操作或CBI区块写入操作同时进行。在CBL清空操作中,会从CBL 740移除项目并将其写入CBB列表776。
MAP交换操作
当EBB列表774已为清空时,在MAP扇区780的擦除区块信息及EBM扇区760间的MAP交换操作可定期发生于控制写入操作期间。如果系统中的所有已擦除元区块均记录在EBM扇区760中,将无任何MAP扇区780存在且不会执行任何MAP交换。在MAP交换操作期间,用于将已擦除区块馈送给EBB 774的MAP扇区被视为来源MAP扇区782。相反,用于从CBB 776接收已擦除区块的MAP扇区被视为目的地MAP扇区784。如果只存在一个MAP扇区,则其可当作来源及目的地MAP扇区,其定义如下。
在MAP交换期间会执行以下动作。
1.以递增指针的方式为基础,选择一来源MAP扇区。
2.以不在所述来源MAP扇区中的第一CBB项目中的区块地址为基础来选择一目的MAP扇区。
3.如所述CBB中相关项目所定义的方式来更新所述目的MAP扇区,并且从所述CBB中移除所述项目。
4.将所述已更新的目的MAP扇区写入至所述MAP区块之中,除非不存在分离的来源MAP扇区。
5.如所述CBB中相关项目所定义的方式来更新所述来源MAP扇区,并且从所述CBB中移除所述项目。
6.将所述CBB中剩余的项目附加至所述EBB之中。
7.利用所述来源MAP扇区所定义的已擦除扇区地址尽可能地填充所述EBB。
8.将所述已更新的来源MAP扇区写入至所述MAP区块中。
9.将一已更新的EBM扇区写入至所述MAP区块中。
列表管理
图18显示各种列表间控制及目录信息的分布与流程。为了方便,在列表组件间移动项目或变更项目属性的操作(在图18中标为[A]至[O])说明如下。
[A]在将擦除区块配置为主机数据的更新区块时,将其在ABL中的项目属性从已擦除的ABL区块变更为开启的更新区块。
[B]在将已擦除的区块配置为控制区块时,移除其在ABL中的项目。
[C]在建立一具有开启更新区块属性的ABL项目时,将关联的原始区块字段添加至项目,以记录被更新的逻辑群组的原始元区块地址。可从GAT中获得此信息。
[D]关闭更新区块时,将其在ABL中的项目属性从开启的更新区块变更为关闭的更新区块。
[E]关闭更新区块时,擦除其关联的原始区块,且将其在ABL中项目的关联原始区块字段的属性变更为已擦除的原始区块。
[F]在ABL填充操作期间,将任何其地址在相同控制写入操作期间于GAT中更新的已关闭更新区块的项目从ABL中移除。
[G]在ABL填充操作期间,在从ABL移除已关闭的更新区块的项目时,将其关联的已擦除原始区块的项目移至CBL。
[H]在擦除控制区块时,将其所用项目添加至CBL。
[I]在ABL填充操作期间,从EBB列表将已擦除区块项目移至ABL,且被赋以已擦除的ABL区块的属性。
[J]在ABL填充操作期间修改所有相关的ABL项目后,ABL中的区块地址将取代ABB列表中的区块地址。
[K]与控制写入期间的ABL填充操作同时进行,将CBL中已擦除区块的项目移至CBB列表。
[L]在MAP交换操作期间,将所有相关项目从CBB列表移至MAP目的地扇区。
[M]在MAP交换操作期间,从CBB列表将所有相关项目移至MAP来源扇区。
[N]在MAP交换操作期间的[L]与[M]之后,将所有其余项目从CBB列表移至EBB列表。
[O]在MAP交换操作期间的[N]之后,如果可能,从MAP来源扇区移动除了在[M]中移动的项目以外的项目,以填充EBB列表。
逻辑对物理地址转换
为了在快闪存储器中定位逻辑扇区的物理位置,图2所示的逻辑对物理地址转换模块140可执行逻辑对物理地址转换。除了最近已更新的逻辑群组外,可以使用常驻在快闪存储器200中的群组地址表(GAT)或在控制器RAM 130中的GAT高速缓存来执行大多数的转换。最近已更新的逻辑群组的地址转换会需要查询主要常驻在控制器RAM 130中的更新区块的地址列表。因此,逻辑扇区地址的逻辑对物理地址转换的程序视与扇区所在的逻辑群组关联的区块的类型而定。区块的类型如下:完整区块、循序数据更新区块、混乱数据更新区块、关闭的数据更新区块。
图19为显示逻辑对物理地址转换程序的流程图。实质上,先使用逻辑扇区地址查询各种更新目录(例如,开启的更新区块列表及关闭的更新区块列表),即可定位对应的元区块及物理扇区。如果关联的元区块并不是更新程序的一部分,则由GAT提供目录信息。逻辑对物理地址转换包括以下步骤:
步骤800:给定一逻辑扇区地址。
步骤810:查询控制器RAM中开启的更新区块列表614的给定逻辑地址(见图15与18)。如果查询失败,继续进行到步骤820,否则继续进行到步骤830。
步骤820:在关闭的更新区块列表616中查询给定的逻辑地址。如果查询失败,则给定的逻辑地址并不是任何更新程序的一部分;继续进行到步骤870,以进行GAT地址转换。否则继续进行到步骤860,以进行关闭的更新区块地址转换。
步骤830:如果含有给定逻辑地址的更新区块为循序,则继续进行到步骤840,以进行循序更新区块地址转换。否则继续进行到步骤850,以进行混乱更新区块地址转换。
步骤840:使用循序更新区块地址转换来取得元区块地址。继续进行到步骤880。
步骤850:使用混乱更新区块地址转换来取得元区块地址。继续进行到步骤880。
步骤860:使用关闭的更新区块地址转换来取得元区块地址。继续进行到步骤880。
步骤870:使用群组地址表(GAT)转换来取得元区块地址。继续进行到步骤880。
步骤880:将元区块地址转换为物理地址。转换方法视元区块是否已经重新链接而定。
步骤890:取得物理扇区地址。
下文将更详细说明所述各种地址转换处理:
循序更新区块地址转换(步骤840)
从开启的更新区块列表614(图15及18)的信息即可直接完成和循序更新区块关联的逻辑群组中的目标逻辑扇区地址的地址转换,说明如下。
1.根据列表的“页标记”及“写入的扇区号码”字段确定目标逻辑扇区是否已经定位在更新区块或其关联的原始区块中。
2.从列表中读取适合目标逻辑扇区的元区块地址。
3.根据合适的“页标记”字段确定元区块内的扇区地址。
混乱更新区块地址转换(步骤850)
与混乱更新区块关联的逻辑群组中的目标逻辑扇区地址的地址转换序列如下。
1.如果根据RAM中的混乱扇区列表确定了扇区是最近写入的扇区,则可直接根据其在此列表中的位置来完成地址转换。
2.在CBI区块中最近写入的扇区在其混乱区块数据字段内含有和目标逻辑扇区地址相关的混乱更新区块的物理地址。其在间接扇区索引字段内也含有有关此混乱更新区块最后写入的CBI扇区的CBI区块内的偏移(见图16A-16E)。
3.所述些字段中的信息均被快取存储于RAM之中,而不需要在后续的地址转换期间来读取所述扇区。
4.读取步骤3中由间接扇区索引字段所识别的CBI扇区。
5.将最近被存取的混乱更新子群的直接扇区索引字段快取存储于RAM之中,而不需要执行步骤4中的读取以重复存取相同的混乱更新区块。
6.在步骤4或步骤5读取的直接扇区索引字段接着识别有关含有目标逻辑扇区地址的逻辑子群组的CBI扇区。
7.从步骤6中识别的CBI扇区读取目标逻辑扇区地址的混乱区块索引项目。
8.所述最近被读取的混乱区块索引字段可被快取存储于控制器RAM之中,而不需要执行步骤4与步骤7处的读取以重复存取相同的逻辑子群组。
9.混乱区块索引项目定义目标逻辑扇区在混乱更新区块或关联的原始区块中的位置。如果目标逻辑扇区的有效副本是在原始区块中,则使用原始元区块及页标记信息来将其定位。
关闭的更新区块地址转换(步骤860)
可从关闭的区块更新列表的信息直接完成与关闭的更新区块关联的逻辑群组中目标逻辑扇区地址的地址转换(参见图18),说明如下。
1.从列表中读取指派给目标逻辑群组的元区块地址。
2.根据列表中的“页标记”字段确定元区块内的扇区地址。
GAT地址转换(步骤870)
如果逻辑群组不受到开启或关闭的区块更新列表的参考,则其在GAT中的项目为有效。由GAT所参考的逻辑群组中目标逻辑扇区地址的地址转换序列如下。
1.评估RAM中可用GAT高速缓存的范围,以确定目标逻辑群组的项目是否包含在GAT高速缓存中。
2.如果在步骤1中发现目标逻辑群组,则GAT高速缓存含有完整的群组地址信息,其中包括元区块地址及页标记,因此允许转换目标逻辑扇区地址。
3.如果GAT高速缓存中没有目标地址,则必须读取目标GAT区块的GAT索引,以识别有关目标逻辑群组地址的GAT扇区的位置。
4.最后存取的GAT区块的GAT索引保留在控制器RAM中,且不用从快闪存储器读取扇区即可存取。
5.将一份由每个GAT区块的元区块地址及被写入每个GAT区块之中的扇区数量所组成的列表保存在控制器RAM之中。假使步骤4处无法取得必要的GAT索引,则可立刻从快闪存储器之中读取。
6.从步骤4或步骤6处所获得的GAT索引所定义的GAT区块中的扇区位置中读取有关目标逻辑群组地址的GAT扇区。以含有目标项目的扇区的子部分来更新GAT高速缓存。
7.从目标GAT项目内的元区块地址及“页标记”字段取得目标扇区地址。
元区块对物理地址转换(步骤880)
如果和元区块地址关联的旗标指示元区块已经被重新链接,则从BLM区块读取相关的LT扇区,以确定目标扇区地址的擦除区块地址。否则,从元区块地址直接确定擦除区块地址。
控制数据管理
图20显示在存储器管理的操作过程中,对控制数据结构执行的操作的层级。数据更新管理操作可对常驻在RAM中的各种列表发生作用。控制写入操作可对快闪存储器中各种控制数据扇区及专用区块发生作用,并且与RAM中的列表交换数据。
在RAM中针对ABL、CBL以及混乱扇区列表来执行数据更新管理操作。当一已擦除区块被配置为更新区块或控制区块时,或是关闭更新区块时,便会更新所述ABL。当擦除一控制区块时,或是将一已关闭的更新区块的某个项目写入所述GAT之中时,便会更新所述CBL。当一扇区被写入一混乱更新区块之中时,便会更新所述更新混乱扇区列表。
控制写入操作使得来自RAM中的控制数据结构的信息被写入快闪存储器中的控制数据结构之中,必要时会随之更新快闪存储器与RAM之中其它支持的控制数据结构。当所述ABL不含拟被配置为更新区块的已擦除区块的任何其它项目时,或是再写入所述CBI区块时,便会触发控制写入操作。
在优选实施例中,会在每次控制写入操作期间执行ABL填充操作、CBL清空操作及EBM扇区更新操作。当含有EBM扇区的MAP区块已满时,将有效的EBM及MAP扇区复制到已配置的已擦除区块,然后擦除先前的MAP区块。
在每次控制写入操作期间,写入一个GAT扇区,并相应地修改关闭的更新区块列表。当GAT区块变满时,执行GAT再写入操作。
如上述,经过某些混乱扇区写入操作之后,便会写入一CBI扇区。当CBI区块变满时,将有效的CBI扇区复制到已配置的擦除区块中,然后擦除先前的CBI区块。
如上述,在EBM扇区的EBB列表中没有其它已擦除的区块项目时执行MAP交换操作。
每次再写入MAP区块时,在专用的MAPA区块中写入用于记录MAP区块的目前地址的MAP地址(MAPA)扇区。当MAPA区块变满时,将有效的MAPA扇区复制到已配置的已擦除区块,然后擦除先前的MAPA区块。
每次再写入MAPA区块时,将引导扇区写入目前的引导区块中。当引导区块变满时,将目前版本的引导区块中的有效引导扇区复制到备份版本,然后所述版本再变成目前的版本。先前的目前版本会被擦除并变成备份版本,并将有效的引导扇区写回其中。
分散在多个存储器平面上的存储器的对准
如先前结合图4及图5A-5C所述,为了增加性能,会并行操作多个存储器平面。基本上,各平面有其自己的感测放大器组作为读取及程序电路的一部分,以并行服务跨越平面的存储器单元的对应页。在结合多个平面时,可并行操作多个页,使得性能更为提高。
根据本发明的另一方面,对于一被组织成可擦除区块且由多个存储器平面所构成(因而可并行地读取多个逻辑单位或是将多个逻辑单位并行地编程到所述多个平面之中)的存储器阵列,当要更新存储于特定存储器平面中的第一区块的原始逻辑单位时,会供应所需以将已更新的逻辑单位保持在和原始相同的平面中。这可通过以下方式来完成:将已更新的逻辑单位记录到第二区块的仍在相同平面中的下一个可用位置。优选将逻辑单位存储在平面中和其其它版本相同的偏移位置,使得给定逻辑单位的所有版本由相同组的感测电路予以服务。
据此,在一项优选实施例中,以逻辑单位的目前版本来填补介于上一个编程存储器单元与下一个可用平面对准存储器单位之间的任何中间间隙。将逻辑上位于最后被编程的逻辑单位后面的逻辑单位的目前版本以及逻辑上位于被存储在下一个可用的平面对准存储器单位中的逻辑单位前面的逻辑单位的目前版本填入间隙中,便可完成所述填补操作。
依此方式,将逻辑单位的所有版本维持在具有和原始相同偏移的相同平面中,致使在垃圾收集操作中,不必从不同平面检索逻辑单位的最新版本,以免降低性能。在一项优选实施例中,利用最新的版本来更新或填补每个平面上的每个存储器单位。因此,在多个平面上进行并行操作时,逻辑单位将会具有逻辑循序顺序而无需进一步重新对准。
此方案通过允许在平面上重新对准逻辑群组的逻辑单位的最新版本,且不必搜集不同存储器平面的最新版本,而缩短合并混乱区块的时间。这很有好处,其中主机接口的性能规格可定义由存储器系统完成扇区写入操作的最大等待时间。
图21显示由多个存储器平面所构成的存储器阵列。存储器平面可以来自相同的存储器芯片或多个存储器芯片。各平面910具有其自己的读取及程序电路组912以并行服务存储器单元的页914。在不失一般性的前提下,在所示的范例中,存储器阵列具有四个并行操作的平面。
一般而言,逻辑单位是主机系统存取的最小单位。通常一个逻辑单位是大小为512字节的扇区。页是平面中并行读取或编程的最大单位。通常一个逻辑页含有一个或一个以上逻辑单位。因此,在结合多个平面时,可将并行读取或编程的最大总数单位视为存储器单元的元页,其中元页是由多个平面中每一平面的页所构成。例如,如MP0的元页具有四个页,每一个页分别来自各平面P0、P1、P2及P3,并行存储在逻辑页LP0、LP1、LP2、LP3中。因此,和仅在一个平面中的操作相比,存储器的读取及写入性能增加四倍。
存储器阵列进一步组织成多个元区块,例如MB0、...、MBj,其中各元区块内的所有存储器单元可作为一个单位一起擦除。诸如MB0的元区块由多个存储器位置构成,以用于存储数据的逻辑页914,例如LP0-LPN-1。元区块中的逻辑页根据其填充于元区块中的顺序,按预定的序列分布于四个平面P0、P1、P2及P3上。例如,在按逻辑上循序顺序填充逻辑页时,会以第一平面中第一页、第二平面中第二页等等的循环顺序访问所述平面。在到达最后的平面后,填充会以循环方式返回,以从下一个元页的第一平面重新开始。依此方式,即可在所有平面并行操作时并行存取一连串连续的逻辑页。
一般而言,如果有W个平面并行操作且元区块是按逻辑上循序顺序进行填充,则元区块中第k个逻辑页将常驻在平面x中,其中x=k MOD W。例如,如果有四个平面,W=4,在按逻辑循序顺序填充区块时,第5个逻辑页LP5将常驻在由5MOD 4给定的平面中,即平面1,如图21所示。
每一存储器平面中的存储器操作是由一组读取/写入电路912来执行。进出每一读取/写入电路的数据在控制器920控制下通过数据总线930进行传送。控制器920中的缓冲器922可协助缓冲经由数据总线930的数据传送。尤其在第一平面中的操作需要存取第二平面中的数据时,将需要两个步骤的程序。控制器先从所述第二平面读出数据,然后经由数据总线及缓冲器传送至第一平面。事实上,在大多数的存储器架构中,在两个不同的位线之间传送数据也需要通过数据总线920交换数据。
至少,这涉及从一个平面中的一组读取/写入电路传送出,并传送进另一平面中的另一组读取/写入电路。在所述平面是来自不同芯片的情况下,将需要在芯片之间进行传送。本发明可提供用于存储器区块管理的结构及方案,以避免一个平面从另一个平面存取数据,以便将性能最大化。
如图21所示,元页由多个逻辑页(每个平面中各一个)构成。每个逻辑页可能是由一个或一个以上的逻辑单位所组成。当数据正以逐个逻辑单位的方式被记录于一跨越所述平面的区块中时,每个逻辑单位便将会落在四个存储器平面之一中。
在更新逻辑单位时会发生平面对准问题。在目前的范例中,为了便于解释,将逻辑单位视为512字节的逻辑扇区,一个逻辑页也是一个逻辑单位宽。由于快闪存储器不允许在未先擦除整个区块的情况下再写入区块的一部分,因此不会将逻辑页的更新写入现有的位置之上,而是将其记录在区块未使用的位置中。然后会将逻辑单位的先前版本视为过时。在一些更新后,区块可含有一些由于已经更新因此变成过时的逻辑单位。然后此区块可以说是“不干净的”,垃圾收集操作会忽略不干净的逻辑单位而收集各个逻辑单位的最新版本并按逻辑上循序顺序将其重新记录在一个或一个以上新的区块中。然后擦除并再循环不干净的区块。
当已更新逻辑单位被记录于某一区块中下个未被使用的位置之中时,其通常不会被记录于和先前版本相同的存储器平面之中。当要进行垃圾收集操作(如合并或压缩时),逻辑单位的最新版本便会被重新记录于和原来相同的平面之中,以维持原来的顺序。然而,如果必须从另一个平面检索最新版本,性能将会降低。
因此,根据本发明的另一方面,当给定平面中存储的第一区块的原始逻辑单位拟更新时,预备将更新的逻辑单位保留在与原先相同的平面中。这可通过以下方式来完成:将已更新的逻辑单位记录到第二区块的仍在相同平面中的下一个可用位置。在一项优选实施例中,会以和原始区块中原始逻辑单位的相同相对位置的逻辑单位的目前版本,填补(即,通过复制来填充)任何在上一个编程存储器单元和下一个可用平面对准存储器单元之间的中间间隙。
图22A显示根据本发明的一般实施例,具有平面对准的更新方法的流程图。
步骤950:在一被组织成多个区块的非易失性存储器之中,每个区块均被分割成可一起擦除的多个存储器单位,每个存储器单位用于存储一个数据逻辑单位。
步骤952:以多个存储器平面构成存储器,各平面具有一组用于并行服务存储器页的感测电路,所述存储器页含有一个或一个以上存储器单位。
步骤954:依照第一顺序将逻辑单位的第一版本存储于第一区块的多个存储器单位之中,每个第一版本逻辑单位均被存储于所述存储器平面之一中。
步骤956:依照不同于第一顺序的第二顺序将逻辑单位的后续版本存储于第二区块之中,每个后续版本均被存储于和第一版本相同的平面中下一个可用的存储器单位之中,以便可利用同一组感测电路从同一平面中存取一逻辑单位的所有的版本。
图22B显示在图22A所示的流程图中存储更新的步骤的优选实施例。
步骤956′包括步骤957、步骤958及步骤959。
步骤957:将各区块分割成元页,各元页由各平面的一页所构成。此步骤可在任一存储步骤之前执行。
步骤958:根据和第一顺序不同的第二顺序将逻辑单位的后续版本存储至第二区块,各后续版本存储于具有元页中和第一版本相同偏移的下一个可用存储器单位中。
步骤959:和逻辑单位的后续版本的存储同时进行,根据第一顺序复制逻辑单位的目前版本,从而以逐个元页的方式来填补在所述下一个可用存储器单位之前的任何未使用存储器单位。
图23A显示不顾平面对准将逻辑单位按循序顺序写入循序更新区块的范例。所述范例显示出每个逻辑页的大小均为一个逻辑扇区,例如LS0、LS1...。在四平面的范例中,每个区块(例如MB0)均可视为被分割成多个元页MP0、MP1、...,其中每个元页(例如MP0)均含有四个扇区(例如LS0、LS1、LS2以及LS3),每个扇区分别来自平面P0、P1、P2以及P3。所以,所述区块会以循环顺序逐个扇区地被填入平面P0、P1、P2以及P3中的逻辑单位之中。
在主机写入操作#1中,正在更新逻辑扇区LS5-LS8中的数据。更新成为LS5′-LS8′的数据记录在始于第一可用位置的新配置的更新区块中。
在主机写入操作#2中,正在更新逻辑扇区LS9-LS12中数据的程序段。将更新成为LS9′-LS12′的数据记录在紧接在最后写入结束处之后的位置中的更新区块中。图中显示两次主机写入的方式是以逻辑循序方式将更新数据记录于更新区块之中,即LS5′-LS12′。更新区块可视为循序更新区块,因其已按逻辑上循序的顺序被填充。记录在更新区块中的更新数据使得原始区块中对应的数据过时。
然而,将更新逻辑扇区根据下一个可用位置但却不顾平面对准而记录在更新区块中。例如,扇区LS5原来是记录在平面P1中,但已更新的LS5′现在则记录在P0中。同样,其它更新扇区全未对准。
图23B显示不顾平面对准将逻辑单位按非循序顺序写入混乱更新区块的范例。
在主机写入操作#1中,更新存储于原始元区块中的给定逻辑群组的逻辑扇区LS10-LS11。已更新的逻辑扇区LS10′-LS11′被存储到新配置的更新区块中。此时,更新区块为循序的更新区块。在主机写入操作#2中,将逻辑扇区LS5-LS6更新成为LS5′-LS6′且将其记录在紧接上一个写入之后的位置中的更新区块中。这将循序的更新区块转换为混乱的更新区块。在主机写入操作#3中,再次更新逻辑扇区LS10′且将其记录在更新区块的下一个位置中成为LS10″。此时,更新区块中的LS10″取代先前记录中的LS10′,而LS10′又取代原始区块中的LS10。在主机写入操作#4中,再次更新逻辑扇区LS10″中的数据且将其记录在更新区块的下一个位置中成为LS10′″。因此,LS10′″现在是逻辑扇区LS10的最新且唯一有效的版本。LS10的所有先前版本现在均已过时。在主机写入操作#5中,更新逻辑扇区LS30中的数据且将其记录在更新区块中成为LS30′。在此范例中,可按任何顺序且以任何重复将逻辑群组内的逻辑单位写入混乱更新区块。
同样,根据下一个可用位置而不顾平面对准,将更新逻辑扇区记录在更新区块中。例如,扇区LS10原来是记录在平面P2(即,MP2、第三平面)中,但更新LS10′现在却记录在P0(即,MP0′,第一平面)中。同样,在主机写入#3中,逻辑扇区LS10′再次更新成为LS10″,且结果也在平面P0(MP1′的第一平面)的下一个可用位置中。因此,一般而言,可见,将更新扇区记录至区块的下一个可用位置会使更新扇区被存储在和其先前版本不同的平面中。
中间间隙已通过填补来填充的平面对准的循序更新区块
图24A显示根据本发明的一项优选实施例,具有平面对准及填补的图23A的循序更新范例。
在主机写入操作#1中,将更新成为LS5′-LS8′的数据记录在始于第一可用平面对准位置的新配置的更新区块中。在此情况下,LS5原来在P1中,P1是元页的第二平面。因此,会在更新区块的第一可用元页MP0的对应平面中编程LS5′-LS7′。同时,会以原始区块元页中在LS5前的逻辑扇区LS4的目前版本来填补MP0′中未使用的第一平面的间隙。然后将原始LS4处理成过时的数据。然后将剩余的LS8′记录在下一个元页MP1′的第一个平面中并已平面对准。
在主机写入操作#2中,将更新成为LS9′-LS12′的数据记录在下一个可用平面对准位置中的更新区块中。因此,将LS9′记录在下一个可用的平面对准存储器单位中,即MP1′的第二平面。在这种情况下,不会造成任何间隙,也不必须进行任何填补。更新区块可视为循序更新区块,因其已按逻辑上循序的顺序填入。此外,其将因各更新逻辑单位和其原始的一样都在相同平面中而已平面对准。
具有中间间隙的平面对准的混乱更新区块
图24B显示根据本发明的一项优选实施例,具有平面对准且不具有任何填补的图23B的混乱更新范例。
在主机写入操作#1中,将已更新的逻辑扇区LS10′-LS11′存储在新配置的更新区块中。不是将其存储在下一个可用的存储器单位中,而是将其存储在下一个可用的平面对准存储器单位中。由于LS10′及LS11′原来分别存储在平面P2及P3(原始区块的MP2的第三及第四平面)中,所以下一个可用的平面对准存储器单位将在更新区块的MP0′的第三及第四平面中。此时,更新区块为非循序,其中将按“未填充”、“未填充”、LS10′及LS11′的顺序填充元页MP0的页。
在主机写入操作#2中,将逻辑扇区LS5-LS6更新成为LS5′-LS6′且将其记录在下一个可用的平面对准位置中的更新区块中。因此,将原始区块中MP1的第二(P1)及第三(P2)平面或存储器单位中的LS5′及LS6′编程至更新区块中下一个可用元页MP1′的对应的平面中。这会在MP1′中留下在前面未使用的第一平面。
在主机写入操作#3中,再次更新逻辑扇区LS10′且将其记录在更新区块的下一个平面对准位置中成为LS10″。因此,将其写入下一个可用的第三平面,其将在MP2′中。这会在MP1′的最后平面及MP2′的前两个平面中留下位于前面的间隙。这将会使得MP0′中的LS10′过时。
在主机写入操作#4中,再次更新逻辑扇区LS10″中的数据并将其记录在更新区块中元页MP2′的下一个可用第三平面中成为LS10′″。因此,LS10′″现在是逻辑扇区LS10的最新且唯一有效的版本。这会留下由MP2′的最后平面及MP3′的前两个平面所组成的间隙。
在主机写入操作#5中,更新逻辑扇区LS30中的数据且将其记录在更新区块中成为LS30′。由于原始的LS30常驻于元页的P2或第三平面中,因此会将其写入更新区块中下一个可用的第三平面。在此情况下,其将是MP4′的第三平面。MP3′的最后平面与MP4′的前两个平面之间将产生间隙。因此,此范例显示可以平面对准的方式,按照任何顺序及任意重复,将一逻辑群组内的多个逻辑扇区写入一混乱更新区块中。在后续的垃圾收集操作中,将便利地由相同组的感测电路来服务给定逻辑扇区的所有版本,尤其是最新版本。
中间间隙已通过填补来填充的平面对准的混乱更新区块
图24C显示根据本发明的另一项优选实施例,具有平面对准及填补的图23B的混乱更新范例。
此操作和图24B所示的相同,但中间间隙会先以填补加以填充。在主机写入操作#1中,先以常驻在原始区块中的LS8及LS9的目前版本,来填补元页MP0′的第一及第二未使用的平面所产生的间隙。这会使原始区块中的LS8及LS9过时。此时,更新区块是循序的更新区块,其中元页MP0′的填充顺序为LS8、LS9、LS10′及LS11′。
在主机写入操作#2中,将因MP1′中在前面的未使用的第一平面而产生间隙,其将先以LS4进行填补。这将使原始区块中的LS4过时。和之前一样,第二写入可将循序更新区块转换为混乱更新区块。
在主机写入操作#3中,将因未使用的MP1′中的最后平面及MP2′的前两个平面而产生间隙。先以在上一个编程的LS6′之后的LS7来填补MP1′的最后平面,然后以在LS10之前的逻辑单位(即LS8及LS9)来填补MP2′的前两个平面。这会使MP0′中的LS10′及原始区块中的LS7-LS9过时。
在主机写入操作#4中,将产生由MP2′的最后平面及MP3′的前两个平面所组成的间隙。MP2′的最后平面可由元页MP2′中在最后写入的LS10″之后的逻辑单位目前版本的LS11′进行填补。MP3′的前两个平面分别通过LS8及LS9进行填补,和元页MP3′中在LS10′″之前的逻辑单位一样。
在主机写入操作#5中,也会相应地分别以LS11′、LS28及LS29来填补从MP3′的最后平面到MP4′的前两个平面之间的间隙。因此,此范例显示可以平面对准的方式,按照任何顺序及任意重复,将一逻辑群组内的多个逻辑扇区写入一混乱更新区块中。
在优选实施例中,元页含有来自个别平面的循环页。由于元页可以并行读取或编程,因此以元页的粒度来建构主机更新会很方便。在有任何填补时,其可和逐元页的更新逻辑单位一起记录。
在图24A及图24C的范例显示的实施例中,在各主机写入期间,会在要编程更新的平面对准存储器单位之前未使用的存储器单位上执行填补。在下一次主机写入之前,会延后在上一个编程的存储器单位后的任何未使用的存储器单位的动作。一般而言,会在各元页的边界内填补任何在前面未使用的存储器单位。换言之,如果在前面的间隙跨越于两个元页之上,则按各元页合适的逻辑上循序顺序在各元页上执行填补,而不顾横跨边界的连续性。在合并区块时,最后写入的元页如为部分写入,则可通过填补进行完整填充。
在另一项实施例中,任何部分填充的元页可在移至下一个元页之前进行完全填补。
存储器单位粒度
根据个别存储器架构所支持的弹性,读取或编程的单位可以有各种变化。个别平面的独立特性允许独立读取及编程元页中个别平面的各页。上述范例具有成为各平面中页的最大编程单位。在元页内,可以有小于所有页的局部元页编程。例如,可以编程元页的前三个页,然后再编程第四个页。
此外,在平面级别,一个物理页可含有一个或一个以上存储器单位。如果各存储器单位可以存储一个扇区的数据,则一个物理页可存储一个或一个以上扇区。某一存储器架构可支持局部页编程,其中通过抑制页内选定存储器单位的编程,可在多个编程编码过程上,在不同的时间个别编程选定的逻辑单位。
在存储器平面内用于逻辑群组的混乱更新的逻辑单位对准
在区块存储器管理系统中,按逻辑上循序顺序将逻辑单位的逻辑群组存储于原始区块中。在更新逻辑群组时,将逻辑单位的后续版本存储于更新区块中。如果将逻辑单位混乱地(即,非循序)存储于更新区块中,最后会执行垃圾收集以收集原始区块及更新区块中逻辑单位的最新版本,以循序将其整合为新的原始区块。如果将给定逻辑单位的更新版本全部存储在和其原始区块中原始版本对准的更新区块中,致使相同组的感测电路可以存取所有版本,则垃圾收集操作会更有效。
根据本发明的另一方面,在上述区块存储器管理系统中,在将存储器组织成一系列的存储器页时(其中存储器单元的各页是由一组感测电路并行服务),如果给定逻辑单位的所有版本在所存储的页中全部具有相同的偏移位置,则所有版本均已对准。
图25显示其中各页含有两个用于存储两个逻辑单位(如两个逻辑扇区)的存储器单位的范例存储器组织。在原始区块中,由于逻辑扇区是按逻辑上循序顺序加以存储,会将逻辑扇区LS0及LS1存储于页P0中,将逻辑扇区LS2及LS3存储于页P1中,及将逻辑扇区LS4及LS5存储于页P3中等。可以看出在此两个扇区的页中,左边算起第一个扇区的页偏移为“0”,而第二个扇区的页偏移为“1”。
在更新循序存储于原始区块中的逻辑扇区的逻辑群组时,会将已更新的逻辑扇区记录在更新区块中。例如,逻辑扇区LS2常驻在原始区块中具有偏移“0”的页P0中。如果在第一写入中,如果将LS2更新为LS2′,则会将其存储于具有相同页偏移“0”的更新区块的第一可用位置。这会是在页P0′的第一存储器单位中。如果在第二写入中,将LS5更新为LS5′,则会将其存储于具有相同页偏移“1”的更新区块的第一可用位置。这会是在具有页P1′的偏移“1”的第二存储器单元中。然而,在存储LS5′之前,会在其中复制至少在各页中将会维持逻辑循序顺序的逻辑扇区的最新版本,以先填补P0′中具有偏移“1”的及P1′中具有偏移“0”的未使用存储器单位。在此情况下,会将LS3复制到P0′中偏移“1”位置且将LS4复制到P1′中偏移“0”位置。如果在第三写入中,再次将LS2′更新为LS2″,则会将其存储在P2′的偏移“0”中。如果在第四写入中,分别将LS22及LS23更新为LS22′及LS23′,则会分别将其存储在P3′的偏移“0”及“1”中。然而,在那之前,会以LS3填补在P2′中具有偏移“1”的未使用存储器单位。
上述更新序列假设可以在页内编程个别扇区。对于一些其中不支持局部页编程的存储器架构,页内的所有扇区必须一起编程。在这种情况下,在第一写入中,会将LS2′及LS3一起编程至P0′中。在第二写入中,会将LS4及LS5′一起编程至P1′中。在第三写入中,会将LS2″及LS3一起编程至P2′中等等。
元页内的平面对准
或者,编程的单位可具有元页的粒度。如果写入混乱更新区块的粒度变成元页,则结合图16A及16B所述的CBI区块中的项目将和元页有关,而非和扇区有关。增加的粒度会减少必须为混乱更新区块所记录的项目的数量,并允许消除直接索引及每个元区块使用单一CBI扇区。
图26A和图21的存储器结构相同,只是各页含有两个扇区而非一个。因此,从图中可见元页MP0现在各有其能够存储两个数据逻辑单位的页。如果各逻辑单位是一个扇区,则将逻辑扇区循序存储于MP0之中,其中LS0及LS1在平面P0中且LS2及LS3在平面P1中等。
图26B显示图26A所示的具有以示意性线性图方式布局的存储器单位的元区块。和图21的单一扇区页相比,逻辑扇区是以循环的方式存储于四个页中,每个页中具有两个扇区。
一般而言,如果有W个并行操作的平面且每个页有K个存储器单位,且按逻辑上循序顺序填充元区块,则元区块中第k个逻辑页将常驻于平面x中,其中x=k′MOD W,其中k′=INT(k/K)。例如,有四个平面,W=4,每个页2个扇区,K=2,则对于k=5,即指第五个逻辑扇区LS5,其将常驻于由2MOD 4所给定的平面中,即平面2,如图24A所示。一般而言,相同原理适用于建构上述的平面对准。
上述范例是用于多重平面架构中以平面进行的页对准。在页具有多个扇区的情况下,也维持页内的扇区对准会很有利。依此方式,对于相同逻辑扇区的不同版本可有利地使用相同组的感测电路。可有效执行如扇区的重新定位及“读取-修改-写入的操作”。在对准页内的扇区顺序时,可以采用和对准页与平面的相同技术。还有根据实施例而定,可以填补也可以不填补任何中间间隙。
不用填补的逻辑单位或平面对准
图27显示的替代性方案如下:不用填补要从一个位置复制到另一个的逻辑单位,即可在更新区块中进行平面对准。可将和更新区块交叉的四个平面的部分视为四个收集从主机接收的平面对准的已更新逻辑单位的缓冲器。不用在合适缓冲器的下一个可用存储器单位中进行填补,即可编程从主机接收的每个逻辑单位。依照从主机接收的逻辑单位地址的序列,可能会有不同数量的逻辑单位被编程于每个平面之中。
混乱更新区块MB′1可含有逻辑元页的所有逻辑单位的已更新版本,如用于MP′0的。其还可含有小于元页的所有逻辑单位,如用于MP′1的。在MP′1的例子中,可从对应的原始区块MB0取得遗失的逻辑单位LS4
此替代性方案在存储器架构可支持并行读取各平面的任意逻辑页时尤其有效。依此方式,可在单一并行读取操作中读取一个元页的所有逻辑页,即使个别逻辑页并非来自相同行。
阶段性程序错误处理
当区块中有程序失败时,通常会将所有要存储至区块的数据移至另一个区块并将失败的区块标示为不良。根据其中遇到失败的操作的时序规格,可能没有足够的时间另外将存储的数据移至另一个区块。最坏的情况是在正常垃圾收集操作期间的程序失败,其中需要另一个相同垃圾收集操作以将所有数据重新定位至另一个区块。在此情况下,可能会违反一给定主机/存储器装置所规定的写入等待时间限制,其所述限制通常被设计成容纳一次(而非两次)垃圾收集操作。
图28显示其中缺陷区块在合并操作期间发生程序失败时,会在另一个区块上重复合并操作的方案。在此范例中,区块1是按逻辑上循序顺序存储逻辑群组的完整逻辑单位的原始区块。为了便于解释,原始区块含有扇区A、B、C及D,各存储一个子群组的逻辑单位。当主机更新群组的特定逻辑单位时,会将逻辑单位的较新版本记录在更新区块中,即区块2。如先前结合更新区块所述,根据主机而定,此更新可按循序或非循序(混乱)顺序记录逻辑单位。最后,会因更新区块已满或一些其它原因而关闭更新区块以接收进一步更新。当更新区块(区块2)关闭时,会将常驻于更新区块或原始区块(区块1)上的逻辑单位的目前版本合并在新的区块(区块3)上,以形成逻辑群组的新的原始区块。此范例显示更新区块在扇区B及D中含有逻辑单位的较新版本。为了方便,图中将扇区B及D示意性显示在区块2中未必是其记录的位置,而是对准其在区块1中原始位置的位置。
在合并操作中,会按循序顺序将原来常驻于区块1中的逻辑群组的所有逻辑单位的目前版本记录于合并区块(区块3)中。因此,会先从区块1将扇区A的逻辑单位复制到区块3,接着再从区块2将扇区B复制到区块3。在此范例中,在从区块1将扇区C的逻辑单位复制到区块3时,区块3的缺陷将导致程序失败。
一种处理程序失败的方式是在全新的区块(区块4)上重新激活合并程序。因此,会将扇区A、B、C、D复制在区块4上,然后丢弃缺陷区块3。然而,这将表示执行两个串联的合并操作,结果造成复制多达两个充满逻辑单位的区块。
存储器装置具有完成特定操作的特定时间容限。例如,在主机写入存储器装置时,会预计写入操作在指定的时间内完成,称为“写入等待时间”。当存储器装置(如存储卡)正忙于写入主机的数据时,会发信“BUSY(忙碌)”状态给主机。如果“BUSY”状态持续超过写入等待时间的长度,主机会使写入操作逾时,然后对写入操作登录例外或错误。
图29以示意图显示具有允许足够时间完成写入(更新)操作及合并操作的时序或写入等待时间的主机写入操作。主机写入操作具有写入等待时间Tw,其可提供足够完成写入主机数据至更新区块之更新操作972的时间(图29(A))。如先前在区块管理系统所述,对更新区块的主机写入可触发合并操作。因此,时序也允许在更新操作972之外的合并操作974(图29(B))。然而,必须重新激活合并操作以响应失败的合并操作将会花费太多时间并超过指定的写入等待时间。
根据本发明的另一方面,在具有区块管理系统的存储器中,在时间紧急的存储器操作期间,区块中的程序失败可通过继续中断区块(breakout block)中的编程操作来处理。稍后,在较不紧急的时间,可将中断前记录在失败区块中的数据传送到其它可能也是中断区块的区块。接着即可丢弃失败的区块。依此方式,在遇到缺陷区块时,不会因必须立刻传送缺陷区块中存储的数据而损失数据及超过指定的时间限制,即可加以处理。此错误处理对于垃圾收集操作尤其重要,因此在紧急时间期间不需要对一崭新的区块重复进行整个操作。其后,在适宜的时间,通过重新定位到其它区块,即可挽救缺陷区块的数据。
图30显示根据本发明一般方案的程序失败处理的流程图。
步骤1002:将非易失性存储器组织成区块,将各区块分割成可一起擦除的存储器单位,各存储器单位可存储一数据逻辑单位。
程序失败处理(第一阶段)
步骤1012:在第一区块中存储一连串数据逻辑单位。
步骤1014:为了响应存储若干逻辑单位后在第一区块的存储失败,在作为第一区块的中断区块的第二区块中存储后续的逻辑单位。
程序失败处理(最后阶段)
步骤1020:为了响应预定义的事件,将存储在第一区块中的逻辑单位传送至第三区块,其中第三区块和第二区块可以相同或不同。
步骤1022:丢弃第一区块。
图31A显示程序失败处理的一项实施例,其中第三(最后的重新定位)区块和第二(中断)区块不同。在阶段I期间,会在第一区块上记录一序列的逻辑单位。如果逻辑单位是来自主机写入,则可将第一区块视为更新区块。如果逻辑单位是来自压缩操作的合并,则可将第一区块视为重新定位区块。如果在某个点在区块1中遇到程序失败,则可提供当作中断区块的第二区块。在区块1及后续逻辑单位中记录失败的逻辑单位会被记录在中断区块上。依此方式,不需要额外的时间来取代失败的区块1及常驻其上的数据。
在中间阶段II中,可在区块1及区块2之间取得序列中所有的已记录逻辑单位。
在最后阶段III中,会将逻辑单位重新定位至可当作重新定位区块的区块3,以取代失败的区块1及常驻其上的数据。因此,可挽救已失败区块中的数据,然后再丢弃失败的区块。会排定最后阶段的时间,使其不会和任何同时的存储器操作的时序冲突。
在此实施例中,重新定位区块3和中断区块2有所区分。这在中间阶段期间已经以附加的逻辑单位记录中断区块时会很方便。因此,中断区块已经变成更新区块,可能不适于将缺陷区块1的逻辑单位重新定位至其中。
图31B显示程序失败处理的另一项实施例,其中第三(最后的重新定位)区块和第二(中断)区块相同。阶段I及II和图31A所示的第一实施例相同。然而,在阶段III中,会将缺陷区块1的逻辑单位重新定位至中断区块2。这在未以先前写入操作之原始序列以外的附加逻辑单位记录中断区块2时会很方便。依此方式,存储所论逻辑单位所需的区块数最小。
合并期间的程序失败处理的实施例
程序失败处理在合并操作期间尤其重要。正常的合并操作可将常驻在原始区块及更新区块中的逻辑群组的所有逻辑单位的目前版本合并至合并区块。在合并操作期间,如果在合并区块中发生程序失败,则会提供另一个当作中断合并区块的区块,以接收其余逻辑单位的合并。依此方式,不必将逻辑单位复制一次以上,而仍可在正常合并操作指定的期间内完成例外处理的操作。在适宜的时间,将群组所有未处理完成的逻辑单位合并至中断区块中,即可完成合并操作。适宜的时间将是在目前主机写入操作以外的其它某一有时间执行合并的时期期间。一个此种适宜的时间是在另一个其中有更新但无关联的合并操作的主机写入的期间。
实质上,可将程序失败处理的合并视为以多阶段来建构。在第一阶段中,在发生程序失败后,会将逻辑单位合并至一个以上区块中以避免将各逻辑单位合并一次以上。在适宜的时间会完成最后阶段,其中会将逻辑群组合并至一个区块中,优选通过按循序顺序将所有逻辑单位收集至中断合并区块中。
图32A显示造成合并操作的初始更新操作的流程图。
步骤1102:将非易失性存储器组织成区块,将各区块分割成可一起擦除的存储器单位,各存储器单位可存储一数据逻辑单位。
步骤1104:将数据组织成复数个逻辑群组,各逻辑群组为可存储在区块中的逻辑单位的群组。
步骤1112:接收封装在逻辑单位中的主机数据。
步骤1114:根据第一顺序在第一区块中存储逻辑群组的逻辑单位的第一版本,以建立逻辑群组的原始区块。
步骤1116:根据第二顺序在第二区块中存储包括逻辑群组的逻辑单位的后续版本,以建立逻辑群组的更新区块。
步骤1119:在上述部分的预定事件,执行垃圾收集以在各种区块中收集逻辑单位的目前版本,且将其重新记录至新的区块。
图32B显示根据本发明一项优选实施例的多阶段合并操作的流程图。
合并失败处理(阶段I)
错误处理的合并,阶段I操作1120包含步骤1122及步骤1124。
步骤1122:以和第一顺序相同的顺序,在第三区块中存储逻辑群组的逻辑单位的目前版本,以建立逻辑群组的合并区块。
步骤1124:为了响应合并区块的存储失败,以和第一顺序相同的顺序,在第四区块中存储第三区块所没有的逻辑群组的逻辑单位,以提供中断合并区块。
由于已将区块1及区块2中的数据传送至区块3及区块4,因此可擦除区块1及区块2以释放空间。在优选实施例中,可立即将区块2释放至EBL(已擦除的区块列表,见图18)再重新使用。区块1只能在以下的条件下释放:如果其为关闭的更新区块且其中有对应的GAT项目指向的另一个区块。
实质上,区块3会变成逻辑群组的原始区块,而区块4变成区块3的取代循序更新区块。
在完成阶段I合并后,存储器装置通过释放BUSY信号来发信给主机。
中间操作(阶段II)
阶段II,即中间操作1130,可在阶段III合并操作1140之前发生。如步骤1132、1134和1136中任一者所提出的,可能会有数种可能的情况。
步骤1132:或是在逻辑群组的写入操作中,写入作为更新区块的第四区块(中断合并区块)。
如果主机写入所论逻辑群组,则区块4(其为中断合并区块且其至此已是取代循序更新区块)将用作正常更新区块。根据主机写入而定,其可维持循序或变成混乱状态。作为更新区块,其将在某个点触发关闭另一个混乱区块,如先前的优选实施例所述。
如果主机写入另一个逻辑群组,则直接进行至阶段III操作。
步骤1134:或是在读取操作中,读取其中第三区块为逻辑群组原始区块且第四区块为更新区块的存储器。
此时,会从为逻辑群组的原始区块的区块3中读取扇区A及B的逻辑单位,且从为群组的更新区块的区块4读取扇区C及D的逻辑单位。由于从区块3只能读取扇区A及B,将无法存取其中编程失败的页,且无法存取其后未写入的部分。虽然尚未更新快闪存储器中的GAT目录且其仍指向为原始区块的区块1,但不会从中读取任何数据,且此区块本身已于稍早擦除。
另一种可能性是主机读取逻辑群组中的逻辑单位。在此情况下,会从为逻辑群组的原始区块的区块3中读取扇区A及B的逻辑单位,且从为群组的循序区块的区块4中读取扇区C及D的逻辑单位。
步骤1136:或在电源开启初始化中,通过扫描其内容来重新识别第一至第四区块中的任一项。
中间阶段的另一个可能性是关闭存储器装置的电源,然后重新激活。如上所述,在电源开启初始化期间,会扫描配置区块列表中的区块(要使用的擦除集区区块,见图15及图18)以识别逻辑群组中已成为特殊状态原始区块(区块3)及关联的循序更新区块(区块4)的缺陷合并区块。中断区块(区块4)的第一逻辑单位中的旗标将指示关联的区块为已遭遇程序错误的原始区块(区块3)。通过查阅区块目录(GAT),即可寻找区块3。
在一项实施例中,会将旗标编程至中断合并区块(区块4)的第一逻辑单位。这可协助指示逻辑群组的特殊状态:即,其已经合并成两个区块,即,区块3及区块4。
使用旗标以识别具有缺陷区块的逻辑群组的一个替代方法是,利用不像原始区块应为已满的特性(除非错误发生在最后页,及最后页没有ECC错误)检测在扫描期间为缺陷的区块。还有,根据实施例而定,其中会有有关存储在快闪存储器中控制数据结构中的失败群组/区块的信息记录,而不只是在写入中断合并区块(区块4)的第一扇区的标头区中的旗标。
合并完成(阶段III)
步骤1142:为了响应预定的事件,对于自阶段I后未进一步记录第四区块时的第一种情况,以和所述第一顺序相同的顺序,在其中存储所述逻辑群组的所有未处理完成的逻辑单位的目前版本;对于自阶段I后已进一步记录第四区块时的第二种情况,将第三及第四区块合并为第五区块。
步骤1144:之后,对于第一种情况,操作存储器时,以合并的第四区块作为逻辑群组的原始区块;对于第二种情况,操作存储器时,以第五区块作为逻辑群组的原始区块。
只要有任何不会违反任何指定时间限制的机会,即可执行阶段III中的最后合并。一个优选情况是,在其中有另一个未附带合并操作的逻辑群组的更新操作时,“挂附(piggy-back)”在下一个主机写入时隙上。如果另一个逻辑群组的主机写入触发本身的垃圾收集,则将使阶段III合并延后。
图33显示多阶段合并操作的第一及最后阶段的范例时序。主机写入等待时间是具有持续期间Tw的各主机写入时隙的宽度。主机写入1是简单的更新,且逻辑群组LG1中第一组逻辑单位的目前版本会被记录在关联的更新区块上。
在主机写入2中,会在逻辑群组LG1上发生更新,致使更新区块被关闭(如,已满)。会提供新的更新区块以记录其余的更新。提供新的更新区块会触发垃圾收集,而导致关于LG4的合并操作,以便再循环要再使用的区块。LG4群组的目前逻辑单位会按循序顺序记录在合并区块上。合并操作可继续进行直到在合并区块中遭遇缺陷为止。然后调用阶段I合并,其中合并操作在中断合并区块上继续。同时,LG4(阶段III)的最后合并会等待下一个机会。
在主机写入3中,也会发生逻辑群组LG2的逻辑单位的写入以触发LG2的合并。这表示已经完全利用时隙。
在主机写入4中,操作只是将LG2的一些逻辑单位记录至其更新区块。时隙中剩余的时间可提供执行LG4的最后合并的机会。
未将中断合并区块转换为更新区块的实施例
图34A及图34B分别显示图28及图31的范例适用的多阶段合并阶段I及阶段III操作的第一种情况。
图34A显示其中中断合并区块并非用作更新区块而是用作其合并操作已经中断的合并区块的情况。尤其,图34A是指图33所示的主机写入#2,其中主机写入更新属于逻辑群组LG1的逻辑单位的更新,且在此期间,此操作也会触发和另一个逻辑群组LG4关联的区块的合并。
原始区块(区块1)及更新区块(区块2)的形成方式和图28的范例相同。同样,在合并操作期间,已知合并区块(区块3)在合并扇区C中的逻辑单位时有缺陷。然而,不像图28所示的重新合并方案,本多阶段方案可在新提供的可当作中断合并区块的区块(区块4)上继续合并操作。因此,在阶段I合并操作中,已在合并区块(区块3)中合并扇区A及B中的逻辑单位。当合并区块中发生程序失败时,会循序将扇区C及D中其余的逻辑单位复制至中断合并区块(区块4)。
如果主机原来在第一逻辑群组中写入会触发和第二逻辑群组关联的区块的合并操作的更新,则会将第一逻辑群组的更新记录至第一逻辑群组的更新区块(通常为新的更新区块)。在此种情况下,中断合并区块(区块4)不会用来记录合并操作之外的任何更新数据且会维持尚须完成的中断合并区块。
由于区块1及区块2中的数据现在完全包含在其他区块(区块3及区块4)中,因此可将其擦除以便再循环。地址表(GAT)会被更新以指向区块3,作为逻辑群组的原始区块。更新区块的目录信息(在ACL中,见图15及图18)也会被更新,以指向已成为逻辑群组(如,LG4)的循序更新区块的区块4。
结果,合并的逻辑群组并未局限在一个区块中,而是分布在缺陷合并区块(区块3)及中断合并区块(区块4)之上。此方案的重要特点是群组中的逻辑单位只会在此阶段期间合并一次,但却将合并散布在一个以上区块之上。依此方式,可在正常指定的时间内完成合并操作。
图34B显示始于图34A的多阶段合并的第三及最后阶段。如结合图33所述,会在第一阶段后的适宜时间(例如在后续不会触发随附合并操作的主机写入期间)执行阶段III合并。尤其,图34B是指其中发生如图33所示的主机写入#4的时隙。在所述期间中,主机写入可更新属于逻辑群组LG2的逻辑单位而不会触发另一个额外的合并操作。因此,有利地将时隙中剩余的时间用于阶段III操作,以完成逻辑群组LG4的合并。
此操作可将还不在中断区块中的LG4的所有未处理完成的逻辑单位合并至中断区块。在此范例中,这表示会按逻辑上循序顺序将扇区A及B从区块3复制至中断区块(区块4)。由于区块中逻辑单位的绕回方案及使用页标记(见图3A),即使范例显示在区块4中,扇区A及B会被记录在扇区C及D之后,但仍会将已记录的序列考虑为等同于A、B、C、D的循序顺序。根据实施例而定,优选从区块3取得要复制的未处理完成的逻辑单位的目前版本,因其已经是合并的形式,不过也可从尚未被擦除的区块1及区块2中收集。
在中断区块(区块4)上完成最后合并后,会将其指定为逻辑群组的原始区块并相应地更新合适的目录(如,GAT,见图17A)。同样,会将失败的物理区块(区块3)标示为不良并将其排除。其它区块(区块1及区块2)将被擦除及再循环。同时,会将LG2的更新记录在和LG2关联的更新区块中。
将中断合并区块变成更新区块的实施例
图35A及图35B分别显示图28及图33中的范例适用的多阶段合并的阶段I及阶段III操作的第二种情况。
图35A显示其中将中断合并区块维持为接收主机写入的更新区块而非合并区块的例子。这适用于如更新逻辑群组LG4的主机写入,且在此程序中,也会触发相同逻辑群组中的合并。
和图34A的情况一样,将区块1与区块2合并于区块3上会继续进行,直到在处理扇区C时遇到程序失败为止。然后会在中断合并区块(区块4)上继续合并。在中断区块(区块4)中合并未处理完成的逻辑单位(如,在扇区C及D中)后,并不在阶段III中等待完成其中的逻辑群组合并,而是将中断区块维持为更新区块。这种情况尤其适于其中主机写入可更新逻辑群组并触发相同逻辑群组的合并的情形。在此范例中,这可将逻辑群组LG4的主机更新的记录记录在中断合并区块(区块4)中,而非记录至新的更新区块。此更新区块(先前为中断合并区块(区块4))可根据其中记录的主机数据而为循序或变成混乱。在所示的范例中,区块4已变成混乱,因扇区C中逻辑单位的后续较新版本使得区块4中的先前版本过时。
在中间阶段期间,会将区块3视为LG4的原始区块,且区块4会是关联的更新区块。
图35B显示始于第二种情况中图35A的多阶段合并的第三及最后阶段。如结合图33所述,会在第一阶段后的适宜时间执行阶段III合并,如在后续不会触发随附合并操作的主机写入期间。在所述期间中,主机写入可更新属于逻辑群组的逻辑单位而不会触发额外的合并操作。因此,将时隙中剩余的时间用于阶段III操作以完成逻辑群组LG4的合并是有利的。
然后将逻辑群组LG4的垃圾从区块3及区块4收集至新的合并区块(区块5)。然后将区块3标示为不良,将区块4再循环,且新的合并区块(区块5)将变成逻辑群组LG4的新的原始区块。其它区块(区块1及区块2),也会被擦除及再循环。
阶段性程序失败处理的其它实施例
图31A、31B、34A、34B、35A及35B中所述的范例适用于优选的区块管理系统,其中各物理区块(元区块)仅存储属于相同逻辑群组的逻辑单位。本发明同样适用于其它其中并无逻辑群组对物理区块对准的区块管理系统,如WO 03/027828及WO 00/49488甲所揭示的区块管理系统。在这些其它系统中实施阶段性程序失败处理方法的一些范例如图36A、36B及36C所示。
图36A显示用于主机写入触发关闭更新区块且更新区块为循序时的情形中的阶段性程序错误处理方法。此情况下的关闭是通过以下方式来完成:将原始区块2的其余的有效数据(B及C)复制至循序更新区块3。在数据部分C编程起点的程序失败的情况下,将部分C编程至保留的区块4。然后可将新的主机数据写入新的更新区块5(未图示)。此方法的阶段II及III和混乱区块关闭的情况相同。
图36B显示在更新区块的更新的情况下用于(局部区块系统)的阶段性程序错误处理方法。在此情况下,将逻辑群组存储在原始区块1及其它更新区块中。合并操作包括将原始区块1及其它更新区块2的数据复制至更新区块之一(根据某一规则来选择,图中为区块3)。和已经说明的主要情形不同处在于区块3已经被部分写入。
图36C显示处理垃圾收集操作的阶段性程序错误,或不支持映射至元区块之逻辑群组之存储器区块管理系统中的清除。WO 03/027828A1中说明了此种存储器区块管理(循环存储)系统。循环存储器系统明显的特点是不对单个逻辑群组配置区块。其中支持元区块中控制数据的多个逻辑群组。垃圾收集涉及从部分过时的区块,将可能没有任何关系(随机逻辑区块地址)的有效数据扇区取至其中可能已经有些数据的重新定位区块。如果重新定位区块在操作期间变满,则将开启另一个区块。
非循序更新区块索引
在上文关于混乱区块索引且结合图16A-16E的段落中,CBI扇区可用来存储可记录随机存储在混乱或非循序更新区块中的逻辑扇区位置的索引。
根据本发明的另一方面,在具有支持具非循序逻辑单位的更新区块的区块管理系统的非易失性存储器中,缓冲存储在RAM中的更新区块的逻辑单位的索引被定期存储在非易失性存储器中。在一项实施例中,将索引存储在专用于存储索引的区块中。在另一项实施例中,将索引存储在更新区块中。在又一项实施例中,将索引存储在各逻辑单位的标头中。在另一方面中,在上一个索引更新之后但在下一个索引更新之前写入的逻辑单位会将其索引信息存储在各逻辑单位的标头中。依此方式,在电源中断后,不必在初始化期间执行扫描,即可确定最近写入的逻辑单位的位置。在又一方面中,将区块管理成部分循序及部分非循序,指向一个以上逻辑子群组。
在预定触发事件后存储在CBI区块中的CBI扇区中的索引指针
根据结合图16A-16E所述的方案,将混乱区块中最近写入扇区的列表保留在控制器RAM中。只在和给定混乱区块关联的逻辑群组中有预定数量的写入后,含有最新索引信息的CBI扇区才被写入快闪存储器(CBI区块620)。依此方式,可缩减CBI区块更新的数量。
在逻辑群组中CBI扇区的下一个更新之前,会将逻辑群组中最近写入扇区的列表保留在控制器RAM中。此列表在存储器装置遭遇电源关闭时将会遗失,但可在电源开启后的初始化中通过扫描更新区块加以重建。
图37说明在每N个扇区写入相同的逻辑群组后将一CBI扇区写入关联的混乱索引扇区区块的一排程范例。此范例显示两个同时进行更新的逻辑群组LG3及LG11。起初,LG3的逻辑扇区按循序顺序存储在一原始区块中。群组中逻辑扇区的更新会按照主机指定的顺序被记录在关联的更新区块上。此范例显示混乱更新序列。同时,也会以与其更新区块相同的方式更新逻辑群组LG11。在每个逻辑扇区写入后,将其在更新区块中的位置保留在控制器RAM中。在每个预定触发事件后,以混乱索引扇区的形式将更新区块中逻辑扇区的目前索引写入非易失性混乱索引扇区区块。例如,预定触发事件可发生于每N个写入之后,其中N可为3。
虽然所给出的范例中的数据逻辑单位是扇区,但所属领域的技术人员应明白,逻辑单位也可以是其它某种集合体,例如含有一个扇区或一组扇区的页。还有,循序区块中的第一页无需是逻辑页0,因为绕回的页标记可能到位。
在预定触发事件后存储在混乱更新区块中的CBI扇区中的索引指针
在另一实施例中,在每N个写入后,将索引指针存储在混乱更新区块本身中的专用CBI扇区中。此方案和上述其中也将索引存储在CBI扇区中的实施例相同。其差异在于:在上述实施例中,CBI扇区被记录在CBI扇区区块中而非更新区块本身中。
此方法是基于将所有混乱区块索引信息保持在混乱更新区块本身中。图37A、37B及37C分别说明同样在三个不同阶段存储CBI扇区的更新区块的状态。
图38A显示直到在预定数量的写入后在其中记录CBI扇区时的更新区块。在此范例中,在主机已经循序写入逻辑扇区0-3后,其接着会发出再次写入逻辑扇区1的另一版本的指令,因而打断了数据写入的连续序列。然后实施CBI扇区中承载的混乱区块索引,将更新区块转换为混乱更新区块。如上所述,CBI是一含有混乱区块的所有逻辑扇区的索引的索引。例如,第0个项目代表更新区块中第0个逻辑扇区的偏移,同样,第n个项目代表第n个逻辑扇区的偏移。可将CBI扇区写入更新区块中的下一个可用位置。为了避免频繁的快快闪存储器取,在每N个数据扇区写入后写入CBI扇区。在此范例中,N为4。如果此时失去电源,则最后写入的扇区将成为CBI扇区,并将此区块将被视为混乱更新区块。
图38B显示图38A的进一步在索引扇区后在其中记录逻辑扇区1、2及4的更新区块。逻辑扇区1及2的较新版本可取代先前在更新区块中记录的旧版本。在此时的电源周期的例子中,需要先找到最后写入的扇区,然后需要扫描多达N个扇区,以寻找最后写入的索引扇区及最近写入的数据扇区。
图38C显示图38B的具有另一写入以触发索引扇区下一个记录的逻辑扇区的更新区块。在另N个(N=4)扇区写入后的相同更新区块可记录CBI扇区的另一个目前版本。
此方案的优点是不需要单独的CBI区块。同时还不必担心物理快闪扇区的额外开销数据区是否大到足以容纳混乱更新区块中有效扇区的索引所需数量的项目。然后,混乱更新区块含有所有的信息,且地址转换不需要外部的数据。这可让算法比较简单,其中可缩减有关CBI区块压缩的控制更新数;也可让串接控制更新比较简短。(请见上文有关CBI区块管理的部分)。
关于存储在混乱更新区块中数据扇区标头的最近写入扇区的信息
根据本发明的另一方面,会在每N个写入后,将记录在区块中的逻辑单位的索引存储在非易失性存储器中,且将有关中间写入的逻辑单位的目前信息存储在所写入的各逻辑单位的额外开销部分。依此方式,在电源重新开启后,不必扫描区块,即可从区块中最后写入逻辑单位的额外开销部分快速取得有关自上一次索引更新后写入的逻辑单位的信息。
图39A显示存储于混乱更新区块中各数据扇区标头的中间写入的中间索引。
图39B显示在写入的各扇区标头中存储中间写入的中间索引的范例。在此范例中,在写入四个扇区LS0-LS3后,会写入CBI索引作为区块中的下一个扇区。其后,将逻辑扇区LS′1、LS′2及LS4写入区块。每次,标头都会存储自上一个CBI索引后写入的逻辑单位的中间索引。因此,LS′2中的标头将具有提供上一个CBI索引及LS′1的偏移(即,位置)的索引。同样,LS4中的标头将具有提供上一个CBI索引及LS′1和LS′2的偏移(即,位置)的索引。
最后写入的数据扇区始终含有有关多达N个最后写入的页的信息(即,一直到最后写入的CBI扇区)。只要电源重新开启,上一个CBI索引便可提供在CBI索引扇区之前写入的逻辑单位的索引信息,而后续写入的逻辑单位的索引信息可在最后写入的数据扇区的标头中找到。这具有以下优点:在初始化时不必为其后写入的扇区扫描区块以确定其位置。
在数据扇区的标头中存储中间索引信息的方案同样适用,无论CBI索引扇区是存储在更新区块本身或是在单独的CBI扇区区块中,如上一节所述。
存储在混乱更新区块中数据扇区标头中的索引指针
在另一项实施例中,将整个CBI索引存储在混乱更新区块中各数据扇区的额外开销部分。
图40显示在混乱更新区块的各数据扇区标头中存储的混乱索引字段中的信息。
扇区标头的信息容量有限,因此可将由任何单个扇区所提供的索引范围设计为层级索引方案的一部分。例如,存储器特定平面内的扇区可提供索引给仅在所述平面内的扇区。此外,可将逻辑地址的范围分割成若干子范围,以允许采用间接索引方案。例如,如果可将有64个逻辑地址的扇区存储在一个平面中,则各扇区可以有3个字段用于扇区偏移值,各字段能够存储4个偏移值。第一字段定义逻辑偏移范围0-15、15-31、32-47及48-63内最后写入扇区的物理偏移。第二字段定义在其相关范围内各4个扇区之4个子范围的物理偏移值。第三字段可定义在其相关子范围内4个扇区的物理偏移值。因此,通过读取多达3个扇区的间接偏移值,即可确定混乱更新区块内逻辑扇区的物理偏移。
此方案的优点是也不需要单独的CBI区块或CBI扇区。然而,这却只适用于物理快闪扇区的额外开销数据区大到足以容纳混乱更新区块中有效扇区索引所需数量的项目时。
混乱更新区块的逻辑群组内受限的逻辑范围
在逻辑群组内,可缩减可非循序写入的扇区的逻辑范围。此技术的主要优点如下:由于只需要读取一个多重扇区页(在多重芯片的例子中,可以并行读取页),即可取得目的地页的所有数据(假设来源和目的地已对准,若未对准,则需要另一个读取),使得循序写入数据的复制能够更快速地完成,因此范围之外的扇区在原始区块中保持循序写入,且垃圾收集操作能在更短的时间内完成。还有,使用芯片上的副本特点,可将循序数据从来源复制至目的地,而不用在控制器之间来回传送数据。如果来源数据已经分散,如混乱区块中所发生的,则可能需要每个扇区读取多达一个页,才能收集所有要写入目的地的扇区。
在一项实施例中,不是将逻辑范围限制在某个数量的扇区,而是经由限制CBI的数量来完成(只限制大群组/元区块的混乱范围很合理,因其需要多个混乱区块索引才能涵盖整个逻辑群组的范围)。例如,如果元区块/群组有2048个扇区,则其将需要多达8个CBI扇区,各涵盖一个子群组256个扇区的连续逻辑范围。如果将CBI的数量限制为4,则混乱元区块可用来写入多达4个子群组的扇区(其中任何一个)。因此,允许逻辑群组有多达4个部分或完全混乱子群组,且最少有4个子群组将维持完全循序。如果一个混乱区块有4个和其关联的有效CBI扇区,且主机写入在这些CBI扇区范围之外(混乱子群组)的扇区,则应合并并关闭混乱逻辑群组。但是这却极不可能发生,因为在真实的应用中,主机在2048个扇区的范围(逻辑群组)内不需要多于4个256个扇区的混乱范围(子群组)。结果,在正常的情况下,垃圾收集也不会受到影响,但限制规则的防范却形成垃圾收集太长(会触发主机的逾时)的极端例子。
部分循序混乱更新区块的索引
当循序更新区块在将区块转换为混乱管理模式之前被部分写入时,逻辑群组的循序更新部分的全部或部分可继续被处理成已经循序更新,且可将混乱更新管理仅用于逻辑群组的地址范围的子集。
控制数据完整性与管理
存储在存储器装置中的数据可能会因为电源中断或特定存储器位置变成有缺陷而成为已毁损。如果遇到存储器区块缺陷,则将数据重新定位至不同的区块且将缺陷区块丢弃。如果错误不会扩大,则可通过和数据一起存储的错误校正码(ECC)在执行中进行校正。然而,还是会有ECC无法校正已毁损数据的时候。例如,当错误位的数量超过ECC的容量时。这对于如和存储器区块管理系统关联的控制数据的关键数据是无法接受的。
控制数据的范例为目录信息及和存储器区块管理系统关联的区块配置信息,如结合图20所述。如上所述,可将控制数据维持在高速RAM及较慢的非易失性存储器区块中。任何经常变更的控制数据会被维持在具有定期控制写入的RAM中,以更新存储于非易失性元区块中的同等信息。依此方式,不必经常存取,即可将控制数据存储在非易失性但较慢的快闪存储器中。如图20所示GAT、CBI、MAP及MAPA的控制数据结构的层级会被维持在快闪存储器中。因此,控制写入操作造成RAM中控制数据结构的信息可更新快闪存储器中同等的控制数据结构。
关键数据复制
根据本发明的另一方面,如部分或全部控制数据的关键数据如果被维持在复制项中,则可保证额外等级的可靠性。复制的执行方式对于采用两次(two-pass)编程技术以连续编程相同组存储器单元的多位的多状态存储器系统而言,第二次编码过程中的任何编程错误都无法毁损第一次编码过程建立的数据。复制还有助于检测写入中止、检测误测(即,两个副本有良好的ECC但数据不同),且可增加额外等级的可靠性。若干数据复制的技术均已考虑。
在一项实施例中,在稍早编程编码过程中编程给定数据的两个副本后,后续编程编码过程可避免编程用于存储所述两个副本中至少一个的存储器单元。依此方式,在后续编程编码过程在完成之前中止且毁损稍早编码过程的数据时,所述两个副本中至少一个不会受到影响。
在另一项实施例中,某一给定数据的两个副本会被存储于两个不同的区块中,而且所述两个副本中至多仅有其中一个的存储器单元会于后面的编程编码过程中被编程。
于另一实施例中,在一编程编码过程中存储某一给定数据的两个副本之后,便不再对用于存储所述两个副本的存储器单元组实施任何进一步的编程。在所述存储器单元组的最终编程编码过程中来编程所述两个副本便可达成此目的。
在又一项实施例中,可在二进制编程模式中将某一给定数据的两个副本编程至多状态的存储器之中,致使不会对已编程的存储器单元进行任何进一步的编程。
在又一项实施例中,对于采用两次编程技术以连续编程相同组存储器单元的多位的多状态存储器系统而言,会采用容错码以编码多个存储器状态,使稍早编程编码过程所建立的数据不会受到后续编程编码过程中错误的影响。
在各存储器单元可存储一位以上数据的多状态存储器中会引发数据复制的复杂性。例如,一个4状态存储器可以两个位来表示。一种现有的技术是使用2次编程来编程此种存储器。第一位(下页位)可由第一次编码过程进行编程。其后,可在第二次编码过程中编程相同单元以代表所要的第二位(上页位)。为了不要变更第二次编码过程中第一位的值,会使第一位存储器状态表示取决于第二位的值。因此,在第二位的编程期间,如果因电源中断或其它原因而发生错误且造成不正确的存储器状态,则也会毁损第一位的值。
图41A显示当各存储器单元存储两个位的数据时,4状态存储器阵列的阈值电压分布。此四个分布代表四个存储器状态“U”、“X”、“Y”及“Z”的总体。在编程存储器单元之前,会先将其擦除至其“U”或“未写入”状态。在存储器单元逐渐被编程时,会累进达到存储器状态“X”、“Y”及“Z”。
图41B显示现有使用格雷码(Gray code)的2次编程方案。此四个状态可以两个位表示,即,下页位及上页位,如(上页位,下页位)。对于要并行编程的单元的页,实际上有两个逻辑页:逻辑下页及逻辑上页。第一编程编码过程只会编程逻辑下页。通过合适的编码,不用重设逻辑下页,单元相同页上的后续第二编程编码过程会编程逻辑上页。一般使用的程序代码是格雷码,其中只有一个位会在转变至相邻的状态时变更。因此,此程序代码具有如下优点:对于错误校正的要求较少,因为其中只涉及一个位。
一般使用格雷码的方案是假设“1”代表“未编程”条件。因此,已擦除的存储器状态“U”可表示为:(上页位,下页位)=(1,1)。在编程逻辑下页的第一次编码过程中,任何存储数据“0”的单元将因此具有其从(x,1)至(x,0)的逻辑状态转变,其中“x”代表上方位的“任意(don′t care)”值。然而,由于上方位尚未被编程,因此为了一致,也可将“x”标示为“1”。(1,0)逻辑状态可通过编程单元为存储器状态“X”来表示。也就是说,在第二次程序编码过程之前,下方位值“0”可以表示为存储器状态“X”。
执行第二次编码过程编程以存储逻辑上页的位。只有这些需要上页位值为“0”的单元才会被编程。在第一次编码过程后,页中的单元的逻辑状态为(1,1)或(1,0)。为了保存第二次编码过程中下页的值,必须区分下方位值“0”或“1”。对于从(1,0)至(0,0)的转变,会将所论存储器单元编程为存储器状态“Y”。对于从(1,1)至(0,1)的转变,会将所论存储器单元编程为存储器状态“Z”。依此方式,在读取期间,通过决定在单元中编程的存储器状态,即可译码下页位及上页位。
然而,格雷码的2次编程方案在第二次编码过程编程错误时会成为问题。例如,在下方位为“1”时将上页位编程为“0”,将造成(1,1)转变成(0,1)。这需要将存储器单元累进从U编程通过“X”及“Y”而至“Z”。如果在完成编程前发生电源中断,则存储器单元将结束于转变存储器状态之一,如“X”。在读取存储器单元时,会将“X”译码为逻辑状态(1,0)。这对上方及下方位造成不正确的结果,因为其应为(0,1)。同样,如果编程在达到“Y”时受到中断,其将对应于(0,0)。虽然上方位现在是正确的,但下方位还是错的。
因此,可以看出上页编程的问题可毁损已经在下页中的数据。尤其当第二次编码过程编程涉及在中间存储器状态上通过时,程序中止会使编程结束于所述存储器状态,造成译码不正确的下页位。
图42显示通过存储复制的各扇区以防卫关键数据的方式。例如,可将扇区A、B、C及D存储在复制副本中。如在一个扇区副本中有数据毁损,则可以读取另一个来取代。
图43显示其中通常将复制扇区存储在多状态存储器中的非健全性。如上所述,在范例的4状态存储器中,多状态页实际上包括分别在两次中进行编程的逻辑下页及逻辑上页。在所示的范例中,页为四个扇区宽。因此,扇区A及其复制会同时被编程在逻辑下页中,同样,对于扇区B及其复制也是如此。然后在逻辑上页中后续编程的第二次编码过程中,会同时编程扇区C,C,及对于扇区D,D也是如此。如果在编程扇区C,C的中间发生程序中止,则会毁损下页中的扇区A,A。除非,在上页编程之前先读取及缓冲下页扇区,否则如果毁损将无法复原。因此,同时存储两个关键数据的副本(如扇区A,A)无法防止其为其上页中后续扇区C,C的有问题的存储所毁损。
图44A显示将关键数据错开的复制副本存储至多状态存储器的一项实施例。基本上,会以和图43的相同方式存储下页,即,扇区A,A及扇区B,B。然而,在上页编程中,扇区C及D会和其复制交错成C,D,C,D。如果支持局部页编程,则可同时编程扇区C的两个副本,且对于两个扇区D的副本也是如此。如果(例如)两个扇区C的程序遭到中止,则只会在扇区A的一个副本及扇区B的一个副本上毁损下页。另一个副本将维持不受影响。因此,如果第一次编码过程中存储有关键数据的两个副本,则其不将不会受到后续第二次编码过程同时编程的影响。
图44B显示只将关键数据的复制副本存储至多状态存储器的逻辑上页的另一项实施例。此时,未使用下页的数据。关键数据及其复制,如扇区A,A及扇区B,B只会被存储至逻辑上页。依此方式,如果有程序中止,则可将关键数据再写入另一个逻辑上页,而下页数据的任何毁损将无关紧要。此办法基本上使用各多状态页一半的存储容量。
图44C显示又一项以多状态存储器的二进制模式存储关键数据的复制副本的实施例。此时,会依二进制模式编程各存储器单元,其中仅将其阈值范围分成两个区域。因此,其中只有一次编码过程编程,且在发生程序中止时可在不同位置中重新启动编程。此办法也使用各多状态页一半的存储容量。美国专利第6,456,528B1号说明了依二进制模式操作多状态存储器,所述专利的整个揭示内容在此以参考的方式并入本文中。
图45显示同时将关键数据的复制副本存储至两个不同元区块的又一项实施例。如果区块之一变成不可用,则可从另一个区块读取数据。例如,关键数据包含在扇区A、B、C、D及E、F、G、H及I、J、K、L内。各扇区会被存储在复制中。这两个副本将被同时写入两个不同的区块,区块0及区块1。如果将一个副本写入逻辑下页,则会将另一个副本写入逻辑上页。依此方式,永远会有编程至逻辑上页的副本。如果发生程序中止,则可将其重新编程至另一个逻辑上页。同时,如果下页已经毁损,则在其它区块中永远会有另一个上页副本。
图46B显示使用容错码同时存储关键数据的复制副本的又一项实施例。图46A和图41A同样显示4状态存储器阵列的阈值电压分布并显示作为图46B的参考。容错码实质上可避免在任何中间状态中转变的任何上页编程。因此,在下页编程的第一次编码过程中,逻辑状态(1,1)转变为(1,0),如表示为编程已擦除的存储器状态“U”为“Y”。在使上页位为“0”的第二次编码过程编程中,如果下页位为“1”,则逻辑状态(1,1)转变为(0,1),如表示为编程已擦除的存储器状态“U”为“X”。如果下页位为“0”,则逻辑状态(1,0)转变为(0,0),如表示为编程存储器状态“Y”为“Z”。由于上页编程仅涉及编程为下一个相邻的存储器状态,因此程序中止不会变更下页位。
串行写入
关键数据的复制副本优选如上述同时写入。另一种避免同时毁损两个副本的方式是循序写入副本。此方法较慢,但副本本身指示其在控制器检查两个副本时编程是否成功。
图47为显示两个数据副本的可能状态及数据有效性的表格。
如果第一及第二副本没有ECC错误,则可将数据的编程视为完全成功。有效数据可从任一个副本取得。
如果第一副本没有ECC错误,但第二副本有ECC错误,便表示编程在第二副本编程的中间受到中断。第一副本含有有效数据。即使错误为可校正,第二副本数据已不可靠。
如果第一副本没有ECC错误且第二副本已经清空(擦除),便表示编程在第一副本编程结束后但在第二副本开始前受到中断。第一副本含有有效数据。
如果第一副本有ECC错误且第二副本已经清空(擦除),便表示编程在第一副本编程的中间受到中断。即使错误为可校正,第一副本仍可能含有无效数据。
为了读取复制中维持的数据,以下技术为优选,因为其利用复制副本的存在。读取并比较两个副本。在此情况下,图47所示两个副本的状态可用来确保没有任何错误误测。
在另一项实施例中,控制器只读取一个副本,为了顾及速度及简单性,副本读取优选在两个副本之间轮替。例如,在控制器读取控制数据时,其可读取如副本1,下一个控制读取(任何控制读取)则应来自副本2,然后再是副本1等。依此方式,即可读取并定期检查两个副本的完整性(ECC检查)。其可减少无法在因变质的数据保留所造成的时间错误中进行检测的风险。例如,如果通常只读取副本1,则副本2会逐渐变质到错误无法为ECC挽救的程度,因而无法再使用第二副本。
先占式数据重新定位
如结合图20所述,区块管理系统在其操作期间可在快闪存储器中维持一组控制数据。此组控制数据会被存储在和主机数据相同的元区块中。因此,控制数据本身会受到区块管理,因而会受到更新的影响,并因此也受到垃圾收集操作的影响。
其中还说明存在这样的控制数据层级,其中较低层级中的控制数据更新比较高层级中的频繁。例如,假设每个控制区块有N个要写入的控制扇区,则通常会发生以下控制更新及控制区块重新定位的序列。再次参考图20,每N个CBI更新可填满CBI区块并触发CBI重新定位(再写入)及MAP更新。如果混乱区块遭受关闭,则其也会触发GAT更新。每个GAT更新可触发MAP更新。每N个GAT更新可填满区块并触发GAT区块重新定位。此外,当MAP区块变满时,也会触发MAP区块重新定位及MAPA区块(如果存在的话,否则BOOT区块会直接指向MAP)更新。此外,当MAPA区块变满时,也会触发MAPA区块重新定位、BOOT区块更新及MAP更新。此外,在BOOT区块变满时,将会触发对另一个BOOT区块的作用中BOOT区块重新定位。
由于层级的形成方式为:顶部的BOOT控制数据,接着是MAPA、MAP、然后GAT,因此,在每N3个GAT更新中,将有“串接控制更新”,其中所有的GAT、MAP、MAPA及BOOT区块都会被重新定位。在此情况下,在因主机写入导致的混乱或循序更新区块关闭造成GAT更新时,也会有垃圾收集操作(即,重新定位或再写入)。在混乱更新区块垃圾收集的情况下,会更新CBI,而这也会触发CBI区块重新定位。因此,在此极端的情况中,必须同时收集大量元区块的垃圾。
从图中可见,层级的各控制数据区块在取得填充及接受重新定位方面有其自己的周期性。如果各控制数据区块进行正常,则将有发生以下情形的时候:大量区块的阶段进行整顿,因而触发大量同时涉及所有这些区块的重新定位或垃圾收集。许多控制区块的重新定位将会花费很长的时间,因此应加以避免,因为有些主机不容许因大量控制操作所造成的长时间延迟。
根据本发明的另一方面,在具有区块管理系统的非易失性存储器中,可实施存储器区块的“控制垃圾收集”或先占式重新定位,以避免发生大量的更新区块均恰巧同时需要进行重新定位的情形。例如,在更新用于控制区块管理系统操作的控制数据时会发生此情况。控制数据类型的层级可和不同程度的更新频率共存,导致其关联的更新区块需要不同速率的垃圾收集或重新定位。有时候会有一个以上控制数据类型的垃圾收集操作同时发生。在极端的情况中,所有控制数据类型的更新区块的重新定位阶段会进行整顿,导致所有的更新区块都需要同时重新定位。
本发明可避免这种不想要的情况,其中每当目前的存储器操作可容纳自发性的垃圾收集操作时,更新区块的先占式重新定位便预先在完全填充区块前发生。尤其,会将优先权提供给具有最慢速率的最高层级数据类型的区块。依此方式,在重新定位最慢速率区块后,在相对较长的时间内将不再需要另一次垃圾收集。还有,层级中较高的较慢速率区块没有太多要触发的重新定位的串接。可将本发明方法视为:为了避免所论各种区块的阶段对准,而将某种抖动引入事物的整体混合。因此,只要一有机会,即可以先占式的方式重新定位有些微不受完全填充的边限的缓慢填充区块。
在具有层级中较低的控制数据因串接效应而变更快于层级中较高的控制数据的控制数据层次的系统中,会将优先权提供给层级中较高的控制数据的区块。一个执行自发性先占式重新定位的机会的范例是在以下情况时:当主机写入本身无法触发重新定位,因此可利用其等待时间中的任何剩余时间来进行先占式重新定位操作。一般而言,务必重新定位的区块前的边限是在区块全满前预定数量的未写入存储器单元。所考虑的是所述边限足以促使在区块完全填充前但又不会过早地重新定位,以免资源浪费。在优选实施例中,预定数量的未写入存储器单位是在一到六个存储器单位之间。
图48显示先占式重新定位存储控制数据的存储器区块的流程图。
步骤1202:将非易失性存储器组织成区块,各区块分割成可一起擦除的存储器单位。
步骤1204:维持不同类型的数据。
步骤1206:对不同类型的数据指派等级。
步骤1208:在复数个区块中存储所述不同类型数据的更新,使得各区块实质上存储相同类型的数据。
步骤1210:响应于具有少于预定数量的清空存储器单位且具有所述复数个区块中最高等级数据类型的区块,将所述区块的数据的目前更新重新定位至另一个区块。若未受到中断,到步骤1208。
实施图20所示控制数据的先占式重新定位的范例算法如下:
如果(没有任何因使用者数据所造成的垃圾收集)或(MAP留有6个或更少的未写入扇区)或(GAT留有3个或更少的未写入扇区)
如果(BOOT留有1个未写入扇区)
则重新定位BOOT(即,重新定位至区块)
否则
如果(MAPA留有1个未写入扇区)
则重新定位MAPA并更新MAP
否则
如果(MAP留有1个未写入扇区)
则重新定位MAP
否则
如果(上一个更新或最大的GAT留有1个未写入扇区)
则重新定位GAT
否则
如果(CBI留有1个未写入扇区)
则重新定位CBI
否则
否则
离开
因此,先占式重新定位通常完成于其中未发生任何使用者数据垃圾收集时。在最糟的情况中,当每个主机写入触发使用者数据垃圾收集,但还有足够的时间进行一个区块的自发性重新定位时,一次可执行一个控制区块的先占式重新定位。
由于使用者数据垃圾收集操作及控制更新可能和物理错误同时发生,因此,最好具有较大的安全性边限,其是通过事先如在区块还有2个或更多未写入的存储器单位(如,扇区)时,先行进行先占式重新定位或有控制的垃圾收集。
虽然已经针对特定实施例说明本发明的各种方面,但应明白,本发明有权受到随附权利要求范围的完整范畴的保护。

Claims (21)

1.一种在一被组织成多个区块的非易失性存储器中存储且更新数据的方法,其中每个区块均被分割成可一起擦除的多个存储器单位,每个存储器单位用于存储一数据逻辑单位,所述方法包括:
将所述存储器组织成一连串的页,由多个存储器单位组成的每一页均由一组感测电路来并行服务,每一存储器单位均用于存储可由一主机分配的数据逻辑单元且由感测电路的一子组来并行服务;
将数据组织成复数个逻辑群组,每个逻辑群组均被分割成复数个数据逻辑单位;依照一第一顺序,逐页地将一逻辑群组的多个逻辑单位的一第一版本存储于一第一区块中,以使每个逻辑单位被存储于在一页中具有一给定偏移的一存储器单位中;及
依照不同于所述第一顺序的一第二顺序,逐页地将所述逻辑群组的多个逻辑单位的后续版本存储于一第二区块中,每个后续版本被存储于所述页中具有等同于所述第一版本的偏移的一偏移的下一个可用存储器单位中,以使感测电路的一共用子组可存取一逻辑单位的所有版本。
2.根据权利要求1所述的方法,其进一步包括:
在存储多个逻辑单位的后续版本的同时,填补每一页内所述下一个可用存储器单位前面任何未被使用的存储器单位,填补方式是依照所述第一顺序将多个逻辑单位的目前版本复制至所述存储器单位。
3.根据权利要求1所述的方法,其进一步包括:
利用多个存储器平面来构成所述存储器,每个平面均被组织成一连串的页,具有所有存储器单位的每个页均由一组感测电路来并行服务;
将所述存储器组织成一连串的元页,每个元页均由来自每个平面中的一存储器页所构成,以使一元页中的所有存储器单位均由多个感测电路来并行服务。
4.根据权利要求3所述的方法,其进一步包括:
在存储多个逻辑单位的后续版本的同时,填补每一元页内所述下一个可用存储器单位前面任何未被使用的存储器单位,填补方式是依照所述第一顺序将逻辑单位的目前版本复制至所述存储器单位。
5.根据权利要求1至4中任一权利要求所述的方法,其中每个逻辑单位是一主机数据扇区。
6.根据权利要求1至4中任一权利要求所述的方法,其中每个页均存储一个数据逻辑单位。
7.根据权利要求1至4中任一权利要求所述的方法,其中每个页均存储一个以上数据逻辑单位。
8.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器具有多个浮动栅极存储器单元。
9.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器是快闪EEPROM。
10.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器是NROM。
11.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器是在一存储卡中。
12.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器具有可各自存储一位数据的多个存储器单元。
13.根据权利要求1至4中任一权利要求所述的方法,其中所述非易失性存储器具有可各自存储一位以上数据的多个存储器单元。
14.一种非易失性存储器,其包括:
一被组织成复数个区块的存储器,每个区块均为可一起擦除的复数个存储器单位,每个存储器单位用于存储可由一主机分配的一数据逻辑单位;
一进入多个逻辑群组的数据组织,每个逻辑群组均是数据逻辑单位中填充一区块的指定群组;
一组感测电路,其用于逐页存取所述存储器,每一页均包含多个存储器单位;
一控制器,其用来控制所述多个区块的操作;
所述控制器依照一第一顺序逐页地将逻辑群组的多个数据逻辑单位的一第一版本存储于一第一区块中,使得每个逻辑单位均被存储于具有一给定偏移的一页的一存储器单位中;及
所述控制器依照不同于所述第一顺序的一第二顺序逐页地将所述逻辑群组的多个逻辑单位的后续版本存储于一第二区块中,每个后续版本均被存储于具有与所述第一版本的页相同的所述页中的偏移的下一个可用的存储器单位中,使得逻辑单位的所有版本都可由感测电路的一共用子组存取。
15.根据权利要求14所述的非易失性存储器,其进一步包括:
在存储多个逻辑单位的后续版本的同时,所述控制器依照所述第一顺序,使用多个逻辑单位的目前版本逐个元页地填补位于所述下一个可用存储器单位前面的任何未被使用的存储器单位;及其中
所述下一个可用存储器单位在其元页中具有与所述第一版本的偏移相同的偏移。
16.根据权利要求14所述的非易失性存储器,其中所述非易失性存储器具有多个浮动栅极存储器单元。
17. 根据权利要求14所述的非易失性存储器,其中所述非易失性存储器是快闪EEPROM。
18.根据权利要求14所述的非易失性存储器,其中所述非易失性存储器是NROM。
19.根据权利要求14所述的非易失性存储器,其中所述非易失性存储器是在一存储卡中。
20.根据权利要求14至19中任一权利要求所述的非易失性存储器,其中所述非易失性存储器具有可各自存储一位数据的多个存储器单元。
21.根据权利要求14至19中任一权利要求所述的非易失性存储器,其中所述非易失性存储器具有可各自存储一位以上数据的多个存储器单元。
CNB2004800421382A 2003-12-30 2004-12-21 具有存储器平面对准的非易失性存储器及方法 Active CN100435116C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/750,155 2003-12-30
US10/750,155 US7139864B2 (en) 2003-12-30 2003-12-30 Non-volatile memory and method with block management system
US10/917,888 2004-08-13

Publications (2)

Publication Number Publication Date
CN1922586A CN1922586A (zh) 2007-02-28
CN100435116C true CN100435116C (zh) 2008-11-19

Family

ID=34701161

Family Applications (5)

Application Number Title Priority Date Filing Date
CNA2004800415625A Pending CN1914689A (zh) 2003-12-30 2004-12-21 具有区块管理系统的非易失性存储器和方法
CNB2004800421293A Active CN100435115C (zh) 2003-12-30 2004-12-21 具有非循序更新区块管理的非易失性存储器及方法
CNB2004800421382A Active CN100435116C (zh) 2003-12-30 2004-12-21 具有存储器平面对准的非易失性存储器及方法
CNA2004800421363A Pending CN1922580A (zh) 2003-12-30 2004-12-22 具有阶段性编程失败处置的非易失性存储器和方法
CNA2004800419683A Pending CN1973334A (zh) 2003-12-30 2004-12-22 具有控制数据管理的非易失性存储器和方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CNA2004800415625A Pending CN1914689A (zh) 2003-12-30 2004-12-21 具有区块管理系统的非易失性存储器和方法
CNB2004800421293A Active CN100435115C (zh) 2003-12-30 2004-12-21 具有非循序更新区块管理的非易失性存储器及方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CNA2004800421363A Pending CN1922580A (zh) 2003-12-30 2004-12-22 具有阶段性编程失败处置的非易失性存储器和方法
CNA2004800419683A Pending CN1973334A (zh) 2003-12-30 2004-12-22 具有控制数据管理的非易失性存储器和方法

Country Status (9)

Country Link
US (10) US7139864B2 (zh)
EP (2) EP2293196B1 (zh)
JP (5) JP4938460B2 (zh)
KR (1) KR101012274B1 (zh)
CN (5) CN1914689A (zh)
AT (3) ATE498893T1 (zh)
DE (3) DE602004031461D1 (zh)
TW (1) TWI272483B (zh)
WO (1) WO2005066972A1 (zh)

Families Citing this family (583)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US7299316B2 (en) * 2004-02-26 2007-11-20 Super Talent Electronics, Inc. Memory flash card reader employing an indexing scheme
US7953931B2 (en) * 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US8019943B2 (en) * 2000-01-06 2011-09-13 Super Talent Electronics, Inc. High endurance non-volatile memory devices
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
WO2003005203A2 (en) * 2001-07-03 2003-01-16 Research In Motion Limited System and method of object-oriented persistence
CA2515968C (en) * 2003-02-12 2009-04-28 Research In Motion Limited An apparatus and methods for managing data used by a mobile device
US20040192132A1 (en) * 2003-03-20 2004-09-30 Fay Ralph Michael Fungi resistant asphalt and asphalt sheet materials
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
DE10349595B3 (de) * 2003-10-24 2004-12-09 Hyperstone Ag Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher
TWI232466B (en) * 2003-10-28 2005-05-11 Prolific Technology Inc Method for updating data of non-volatile memory
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144396A1 (en) * 2003-12-31 2005-06-30 Eschmann Michael K. Coalescing disk write back requests
JP3892851B2 (ja) * 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
KR100541642B1 (ko) * 2004-03-11 2006-01-10 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
JP2005301591A (ja) * 2004-04-09 2005-10-27 Toshiba Corp 不揮発性メモリを備えた装置及びメモリコントロ−ラ
US7225291B2 (en) * 2004-04-19 2007-05-29 Phison Electronics Corp. Storage controlling and judging method of flash memory
HUP0400808A2 (hu) * 2004-04-19 2005-11-28 Dr.Kozéky László Géza Fémgőz ívű plazmafáklya és annak alkalmazása a metallurgiában, a plazmaenergiás pirolízisben és vitrifikációban, és más anyagátalakító eljárásokban
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
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
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
JP4815825B2 (ja) * 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
JP4738038B2 (ja) * 2005-03-25 2011-08-03 株式会社東芝 メモリカード
JP2006285669A (ja) * 2005-03-31 2006-10-19 Toshiba Corp ホスト機器
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
DE102005022019A1 (de) * 2005-05-12 2007-02-01 Giesecke & Devrient Gmbh Sichere Verarbeitung von Daten
US8051270B2 (en) * 2005-05-23 2011-11-01 Panasonic Corporation Memory controller, nonvolatile storage device, nonvolatile storage system, and memory control method
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US7970803B2 (en) * 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US8959125B2 (en) 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
JP4533956B2 (ja) * 2005-08-03 2010-09-01 サンディスク コーポレイション フラッシュメモリシステムのデータ記憶容量の解放
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US20070055793A1 (en) * 2005-08-03 2007-03-08 Wellsyn Technology, Inc. System of managing peripheral interfaces in IPMI architecture and method thereof
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
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
DE602006019263D1 (de) * 2005-08-03 2011-02-10 Sandisk Corp Nichtflüchtiger speicher mit blockverwaltung
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
JP2007052717A (ja) * 2005-08-19 2007-03-01 Fujitsu Ltd データ転送装置およびデータ転送方法
US7558804B1 (en) 2005-08-26 2009-07-07 American Megatrends, Inc. Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory
JP4751163B2 (ja) * 2005-09-29 2011-08-17 株式会社東芝 メモリシステム
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
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US20070106842A1 (en) * 2005-11-04 2007-05-10 Conley Kevin M Enhanced first level storage caching methods using nonvolatile memory
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7747927B2 (en) 2005-11-22 2010-06-29 Sandisk Corporation Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system
CN101176074B (zh) * 2005-12-09 2010-12-15 松下电器产业株式会社 非易失性存储器件,写入数据的方法,和读出数据的方法
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7376034B2 (en) * 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
US7644251B2 (en) 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for 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
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
WO2007073538A2 (en) * 2005-12-21 2007-06-28 Sandisk Corporation Non-volatile memories and methods with data alignment in a directly mapped file storage system
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
WO2007073536A2 (en) * 2005-12-21 2007-06-28 Sandisk Corporation Non-volatile memories and methods with memory allocation for a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing 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
US20070150644A1 (en) * 2005-12-28 2007-06-28 Yosi Pinto System for writing non-volatile memories for increased endurance
US7245556B1 (en) * 2005-12-28 2007-07-17 Sandisk Corporation Methods for writing non-volatile memories for increased endurance
US7609564B2 (en) * 2005-12-31 2009-10-27 Intel Corporation Systems and techniques for non-volatile memory buffering
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
JP2007233838A (ja) * 2006-03-02 2007-09-13 Toshiba Corp メモリシステムの制御方法
JP2007241539A (ja) * 2006-03-07 2007-09-20 Hitachi Systems & Services Ltd 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置
JP4171749B2 (ja) * 2006-04-17 2008-10-29 Tdk株式会社 メモリコントローラおよびフラッシュメモリシステム
US20080127220A1 (en) * 2006-06-30 2008-05-29 Robert Paul Morris Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080022265A1 (en) * 2006-06-30 2008-01-24 Morris Robert P Methods, systems, and computer program products for generating and using object modules
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
JP4956068B2 (ja) * 2006-06-30 2012-06-20 株式会社東芝 半導体記憶装置およびその制御方法
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
US20080005752A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for generating application processes by linking applications
US7783956B2 (en) * 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US7466600B2 (en) 2006-08-03 2008-12-16 Micron Technology, Inc. System and method for initiating a bad block disable process in a non-volatile memory
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US20080040544A1 (en) * 2006-08-08 2008-02-14 Jason Caulkins Computer System For Reading And Writing Data
US7366017B2 (en) 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US7774392B2 (en) * 2006-09-15 2010-08-10 Sandisk Corporation Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
WO2008033952A2 (en) * 2006-09-15 2008-03-20 Sandisk Corporation Non-volatile memory and method for class-based update block replacement rules
US7779056B2 (en) * 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
TWI376600B (en) * 2006-09-28 2012-11-11 Sandisk Corp Memory systems and method for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7441071B2 (en) 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7444462B2 (en) * 2006-09-28 2008-10-28 Sandisk Corporation Methods for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
TWI346286B (en) * 2006-09-29 2011-08-01 Sandisk Corp Method and non-volatile memory storage system for phased garbage collection
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
JP4609406B2 (ja) * 2006-10-12 2011-01-12 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
KR20090088858A (ko) * 2006-10-12 2009-08-20 쌘디스크 코포레이션 최악의 경우 제어 데이터 관리를 사용하는 비휘발성 메모리 및 관리 방법
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
KR100843135B1 (ko) * 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
US20080120604A1 (en) * 2006-11-20 2008-05-22 Morris Robert P Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
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
DE112006004185T5 (de) 2006-12-27 2009-11-19 Intel Corporation, Santa Clara Verfahren zum Verwalten von Daten in einem nichtflüchtigen Speicher
US20080162787A1 (en) * 2006-12-28 2008-07-03 Andrew Tomlin System for block relinking
US20080162612A1 (en) * 2006-12-28 2008-07-03 Andrew Tomlin Method for block relinking
WO2008082950A1 (en) * 2006-12-28 2008-07-10 Sandisk Corporation System for block relinking
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
TWI338856B (en) * 2007-03-09 2011-03-11 Ite Tech Inc A flash memory storing device and a data storing method thereof
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
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
US20080235465A1 (en) * 2007-03-19 2008-09-25 Bum Suck So Systems for conversion of update blocks based on association with host file management data structures
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
WO2008147752A1 (en) * 2007-05-24 2008-12-04 Sandisk Corporation Managing housekeeping operations in flash memory
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
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
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
JP4444314B2 (ja) * 2007-07-13 2010-03-31 株式会社東芝 半導体メモリ情報蓄積装置とその書き込み制御方法
US20080320282A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US20080320459A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Concurrency Control For Addressable Entities
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
KR100922389B1 (ko) * 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
KR101348364B1 (ko) 2007-08-23 2014-01-07 삼성전자주식회사 메모리 셀의 이진 신호 판정 방법 및 장치
US20090055574A1 (en) * 2007-08-25 2009-02-26 Bei-Chuan Chen NAND Flash Memory Device And Related Method Thereof
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US7818493B2 (en) * 2007-09-07 2010-10-19 Sandisk Corporation Adaptive block list management
KR20090026941A (ko) * 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US8473923B2 (en) * 2007-09-12 2013-06-25 Sandisk Technologies Inc. Pointers for write abort handling
US7873803B2 (en) * 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
US8566504B2 (en) * 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
US9201790B2 (en) * 2007-10-09 2015-12-01 Seagate Technology Llc System and method of matching data rates
KR101464338B1 (ko) 2007-10-25 2014-11-25 삼성전자주식회사 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
JP4829202B2 (ja) * 2007-11-02 2011-12-07 株式会社日立製作所 記憶装置及びメモリ制御方法
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
JP4417994B2 (ja) * 2007-11-26 2010-02-17 株式会社東芝 素材データ記録装置及び、素材データ記録方法
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7953919B2 (en) * 2007-12-21 2011-05-31 Spansion Llc Physical block addressing of electronic memory devices
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
JP2009157515A (ja) * 2007-12-25 2009-07-16 Toshiba Corp 半導体メモリコントローラおよび半導体メモリ
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
JP4471007B2 (ja) * 2008-02-05 2010-06-02 ソニー株式会社 記録装置、記録装置の制御方法、記録装置の制御方法のプログラム及び記録装置の制御方法のプログラムを記録した記録媒体
CN101364444B (zh) * 2008-02-05 2011-05-11 威盛电子股份有限公司 控制方法及运用该控制方法的存储器及处理系统
JP2009199199A (ja) * 2008-02-20 2009-09-03 Hitachi Ltd ストレージシステム及びそのデータライト方法
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4653817B2 (ja) * 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
CN101251788A (zh) * 2008-03-07 2008-08-27 威盛电子股份有限公司 储存单元管理方法及系统
JP4164118B1 (ja) * 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
US20090249021A1 (en) * 2008-03-26 2009-10-01 Morris Robert P Method And Systems For Invoking An Advice Operation Associated With A Joinpoint
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
TWI377580B (en) * 2008-04-03 2012-11-21 Wistron Corp Method and related device for data storage in an electronic device
US8266366B2 (en) 2008-04-11 2012-09-11 SanDisk Technologies, Inc. Memory device operable in read-only and write-once, read-many (WORM) modes of operation
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8566505B2 (en) * 2008-04-15 2013-10-22 SMART Storage Systems, Inc. Flash management using sequential techniques
WO2009129339A2 (en) * 2008-04-15 2009-10-22 Adtron, Inc. Circular wear leveling
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US20090282267A1 (en) * 2008-05-09 2009-11-12 Ori Stern Partial scrambling to reduce correlation
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI370969B (en) 2008-07-09 2012-08-21 Phison Electronics Corp Data accessing method, and storage system and controller using the same
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
US8516203B2 (en) * 2008-08-13 2013-08-20 Sandisk Technologies Inc. Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file
TWI473100B (zh) * 2008-09-05 2015-02-11 A Data Technology Co Ltd Flash memory system and its operation method
US8103631B2 (en) * 2008-11-19 2012-01-24 Sandisk Il Ltd Merging files on storage and retrieve
KR101469771B1 (ko) * 2008-12-03 2014-12-08 삼성전자주식회사 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법
US8200922B2 (en) * 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
KR101028929B1 (ko) * 2008-12-31 2011-04-12 성균관대학교산학협력단 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8250333B2 (en) * 2009-01-05 2012-08-21 Sandisk Technologies Inc. Mapping address table maintenance in a memory device
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
EP2374063B1 (en) 2009-01-05 2017-11-22 SanDisk Technologies LLC Non-volatile memory and method with write cache partitioning
US8645749B2 (en) * 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
KR101565975B1 (ko) * 2009-02-27 2015-11-04 삼성전자주식회사 인덱스를 저장하는 플래시 메모리를 포함하는 사용자 장치 및 그것의 인덱스 액세스 방법
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
TWI417884B (zh) * 2009-04-23 2013-12-01 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
US8102705B2 (en) 2009-06-05 2012-01-24 Sandisk Technologies Inc. Structure and method for shuffling data within non-volatile memory devices
US8027195B2 (en) * 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
CN102576330B (zh) 2009-06-12 2015-01-28 提琴存储器公司 具有持久化无用单元收集机制的存储系统
US20100318584A1 (en) * 2009-06-13 2010-12-16 Microsoft Corporation Distributed Cache Availability During Garbage Collection
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
US8132045B2 (en) * 2009-06-16 2012-03-06 SanDisk Technologies, Inc. Program failure handling in nonvolatile memory
US8874825B2 (en) * 2009-06-30 2014-10-28 Sandisk Technologies Inc. Storage device and method using parameters based on physical memory block location
TWI386802B (zh) * 2009-07-03 2013-02-21 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制電路與儲存系統
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
JP5347779B2 (ja) * 2009-07-07 2013-11-20 ソニー株式会社 メモリ装置、メモリ制御方法、およびプログラム
US9104629B2 (en) * 2009-07-09 2015-08-11 International Business Machines Corporation Autonomic reclamation processing on sequential storage media
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic Corp 不揮発性記憶装置および不揮発性メモリコントローラ
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
WO2011031903A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8255655B2 (en) 2009-10-02 2012-08-28 Sandisk Technologies Inc. Authentication and securing of write-once, read-many (WORM) memory devices
US8195909B2 (en) * 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
CN101794254B (zh) * 2009-11-25 2012-07-04 深圳市硅格半导体有限公司 Nand flash的数据处理方法
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
FR2954572B1 (fr) * 2009-12-23 2020-04-17 Thales Procede de gestion de donnees tournantes.
TWI399644B (zh) * 2009-12-24 2013-06-21 Univ Nat Taiwan 非揮發記憶體區塊管理方法
TWI414940B (zh) 2009-12-30 2013-11-11 Phison Electronics Corp 區塊管理與資料寫入方法、快閃記憶體儲存系統與控制器
CN102122233B (zh) * 2010-01-08 2013-04-10 群联电子股份有限公司 区块管理与数据写入方法、闪存储存系统与控制器
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
CN102193869B (zh) * 2010-03-01 2015-05-20 群联电子股份有限公司 存储器管理与写入方法及其存储器控制器与储存系统
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
CN101799788B (zh) * 2010-03-23 2014-06-11 中兴通讯股份有限公司 一种分级管理存储资源的方法及系统
US8812816B2 (en) * 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block
US8332460B2 (en) * 2010-04-14 2012-12-11 International Business Machines Corporation Performing a local reduction operation on a parallel computer
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
US9424087B2 (en) 2010-04-29 2016-08-23 International Business Machines Corporation Optimizing collective operations
IT1399916B1 (it) * 2010-04-30 2013-05-09 Balluchi Dispositivo di memoria ad accesso di registro indicizzato
US20110268265A1 (en) * 2010-04-30 2011-11-03 Lathrop Alexander M Disk media security system and method
US9563397B1 (en) 2010-05-05 2017-02-07 Western Digital Technologies, Inc. Disk drive using non-volatile cache when garbage collecting log structured writes
CN102243611B (zh) * 2010-05-11 2015-06-17 深圳市朗科科技股份有限公司 数据存储方法和系统
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8381018B2 (en) 2010-05-21 2013-02-19 Mediatek Inc. Method for data recovery for flash devices
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8554741B1 (en) 2010-06-16 2013-10-08 Western Digital Technologies, Inc. Timeline application for log structured storage devices
US8543757B2 (en) 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US8639692B2 (en) 2010-06-28 2014-01-28 Alcatel Lucent High-dimensional stratified sampling
US20110320910A1 (en) * 2010-06-29 2011-12-29 Yi-Chun Liu Storage management method and storage system
KR20120003283A (ko) * 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
KR101077901B1 (ko) * 2010-07-12 2011-10-31 (주)이더블유비엠코리아 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
US9146875B1 (en) 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8601310B2 (en) * 2010-08-26 2013-12-03 Cisco Technology, Inc. Partial memory mirroring and error containment
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8683295B1 (en) 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
US8578340B1 (en) 2010-09-24 2013-11-05 Ca, Inc. Recording and replaying computer program execution with recorded execution event breakpoints
TWI435216B (zh) 2010-09-27 2014-04-21 Silicon Motion Inc 用來進行超區塊管理之方法以及記憶裝置及控制器
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8825977B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life
US8670205B1 (en) 2010-09-29 2014-03-11 Western Digital Technologies, Inc. Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8699171B1 (en) 2010-09-30 2014-04-15 Western Digital Technologies, Inc. Disk drive selecting head for write operation based on environmental condition
US8756361B1 (en) 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8850161B2 (en) * 2010-10-13 2014-09-30 Riverbed Technology, Inc. Method of improving performance of a data storage device
US8427771B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors
US8429343B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
US8612798B1 (en) 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US8560759B1 (en) 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
TWI463495B (zh) * 2010-12-10 2014-12-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與儲存裝置
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
TWI514136B (zh) * 2010-12-28 2015-12-21 Silicon Motion Inc 快閃記憶裝置及其資料寫入方法
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US10049040B2 (en) 2011-01-21 2018-08-14 Seagate Technology Llc Just in time garbage collection
US8874872B2 (en) 2011-01-21 2014-10-28 Seagate Technology Llc Garbage collection management in memories
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
KR20120124285A (ko) * 2011-05-03 2012-11-13 삼성전자주식회사 배드 블록 관리를 위한 방법 및 메모리 시스템
US20120297121A1 (en) * 2011-05-17 2012-11-22 Sergey Anatolievich Gorobets Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
JP2014513850A (ja) 2011-05-17 2014-06-05 サンディスク テクノロジィース インコーポレイテッド 小さな論理グループがアクティブなslcおよびmlcメモリパーティションに分散させられる不揮発性メモリおよび方法
TWI447579B (zh) * 2011-05-18 2014-08-01 Phison Electronics Corp 程式碼載入與存取方法、記憶體控制器與記憶體儲存裝置
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
JP2012248109A (ja) * 2011-05-30 2012-12-13 Toshiba Corp マルチチャネルを有するメモリ装置及び同装置におけるコンパクションのためのリードコマンド群生成方法
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US9898402B2 (en) 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
US8589762B2 (en) * 2011-07-05 2013-11-19 International Business Machines Corporation Adaptive multi-bit error correction in endurance limited memories
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
CN102508788B (zh) * 2011-09-28 2014-12-10 华为数字技术(成都)有限公司 Ssd及ssd垃圾回收方法和装置
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
FR2982406A1 (fr) 2011-11-07 2013-05-10 St Microelectronics Rousset Memoire securisee qui evite la degradation de donnees
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
US8819367B1 (en) 2011-12-19 2014-08-26 Western Digital Technologies, Inc. Accelerated translation power recovery
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US8825953B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
US8966178B2 (en) * 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US9021201B2 (en) 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US20130205066A1 (en) * 2012-02-03 2013-08-08 Sandisk Technologies Inc. Enhanced write abort management in flash memory
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US8799598B2 (en) * 2012-02-17 2014-08-05 Spansion Llc Redundancy loading efficiency
US9213632B1 (en) 2012-02-29 2015-12-15 Marvell International Ltd. Systems and methods for data storage devices to use external resources
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
TWI605458B (zh) 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
US8966205B1 (en) 2012-05-10 2015-02-24 Western Digital Technologies, Inc. System data management using garbage collection and hybrid self mapping
US8984247B1 (en) * 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
JP2014044490A (ja) * 2012-08-24 2014-03-13 Toshiba Corp ホスト装置及びメモリデバイス
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
EP2893433A4 (en) * 2012-09-06 2016-06-01 Pi Coral Inc STORAGE TRANSLATION LAYER
CN102883207B (zh) * 2012-09-13 2016-11-23 深圳创维数字技术有限公司 一种数据处理的方法及数字电视终端
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
TW201413450A (zh) * 2012-09-25 2014-04-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
CN102929579A (zh) * 2012-10-16 2013-02-13 国电南京自动化股份有限公司 一种效率提高的内存复制方法
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103839578B (zh) * 2012-11-27 2017-02-08 广东华晟数据固态存储有限公司 一种提高基于nand的固态存储器数据保持时间的方法
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
KR101993626B1 (ko) * 2012-12-11 2019-06-28 삼성전자 주식회사 특수 기능 레지스터를 포함하는 시스템 온 칩 및 그 동작 방법
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9842660B1 (en) 2012-12-28 2017-12-12 Virident Systems, Llc System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory
US9286002B1 (en) 2012-12-28 2016-03-15 Virident Systems Inc. Dynamic restriping in nonvolatile memory systems
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8972776B2 (en) 2013-03-06 2015-03-03 Seagate Technology, Llc Partial R-block recycling
US9384839B2 (en) 2013-03-07 2016-07-05 Sandisk Technologies Llc Write sequence providing write abort protection
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9189389B2 (en) 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US10482009B1 (en) * 2013-03-15 2019-11-19 Google Llc Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9037902B2 (en) 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
US8996796B1 (en) 2013-03-15 2015-03-31 Virident Systems Inc. Small block write operations in non-volatile memory systems
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US9135164B2 (en) 2013-03-15 2015-09-15 Virident Systems Inc. Synchronous mirroring in non-volatile memory systems
WO2014158149A1 (en) 2013-03-27 2014-10-02 Hewlett-Packard Development Company, L.P. Non-volatile memory based synchronous logic
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US10102144B2 (en) * 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
JP6473141B2 (ja) * 2013-05-31 2019-02-20 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 睡眠検査データのようなデータを自動的にアップロード、ダウンロード及び更新するためのシステム及び方法
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
US9361236B2 (en) 2013-06-18 2016-06-07 Arm Limited Handling write requests for a data array
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9645920B2 (en) 2013-06-25 2017-05-09 Marvell World Trade Ltd. Adaptive cache memory controller
US9455048B2 (en) 2013-06-28 2016-09-27 Sandisk Technologies Llc NAND flash word line management using multiple fragment pools
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US10007428B2 (en) 2013-08-16 2018-06-26 Micron Technology, Inc. Data storage management
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US9684686B1 (en) * 2013-09-04 2017-06-20 Amazon Technologies, Inc. Database system recovery using non-volatile system memory
US20150092488A1 (en) * 2013-09-27 2015-04-02 Yogesh Wakchaure Flash memory system endurance improvement using temperature based nand settings
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
IN2013CH05362A (zh) * 2013-11-21 2015-05-29 Sandisk Technologies Inc
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
US9466383B2 (en) * 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
KR102181210B1 (ko) * 2014-01-10 2020-11-23 삼성전자주식회사 저장 장치의 데이터 처리 방법 및 저장 장치
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
WO2015118623A1 (ja) * 2014-02-05 2015-08-13 株式会社日立製作所 情報処理装置
KR102225989B1 (ko) * 2014-03-04 2021-03-10 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9653184B2 (en) 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US9613715B2 (en) 2014-06-16 2017-04-04 Sandisk Technologies Llc Low-test memory stack for non-volatile storage
US8976609B1 (en) 2014-06-16 2015-03-10 Sandisk Enterprise Ip Llc Low-test memory stack for non-volatile storage
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
US9875055B1 (en) 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
US9575661B2 (en) 2014-08-19 2017-02-21 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same
US9626289B2 (en) * 2014-08-28 2017-04-18 Sandisk Technologies Llc Metalblock relinking to physical blocks of semiconductor memory in adaptive wear leveling based on health
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
US9542286B2 (en) * 2014-09-30 2017-01-10 Sandisk Technologies Llc Failure logging mechanism to reduce garbage collection time in partially reused bad blocks
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
TWI604307B (zh) 2014-10-31 2017-11-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
KR20160072706A (ko) * 2014-12-15 2016-06-23 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
WO2016115737A1 (en) * 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
KR102275710B1 (ko) * 2015-02-02 2021-07-09 삼성전자주식회사 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
KR102513491B1 (ko) * 2015-07-15 2023-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN105183545A (zh) * 2015-07-23 2015-12-23 柳州易旺科技有限公司 一种大数据信息压缩方法
JP2017045288A (ja) * 2015-08-27 2017-03-02 株式会社東芝 メモリシステム
US9891833B2 (en) * 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
CN105302501B (zh) * 2015-11-27 2018-09-14 浙江宇视科技有限公司 一种磁盘扇区的控制方法和装置
US9983829B2 (en) * 2016-01-13 2018-05-29 Sandisk Technologies Llc Physical addressing schemes for non-volatile memory systems employing multi-die interleave schemes
US9837161B2 (en) 2016-03-09 2017-12-05 Nxp Usa, Inc. Split-gate memory having sector retirement with reduced current and method therefor
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US9875034B2 (en) 2016-04-07 2018-01-23 International Business Machines Corporation Delaying programming requests in flash memory
US10223004B2 (en) 2016-04-07 2019-03-05 International Business Machines Corporation Parallel read and writes in 3D flash memory
JP6407485B2 (ja) * 2016-04-21 2018-10-17 富士通フロンテック株式会社 書込制御プログラム、書込制御装置および書込制御方法
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
JP2018041204A (ja) 2016-09-06 2018-03-15 東芝メモリ株式会社 メモリ装置及び情報処理システム
CN106328059B (zh) * 2016-09-07 2017-10-27 京东方科技集团股份有限公司 用于电学补偿的存储器中数据更新的方法和装置
FR3055992A1 (fr) * 2016-09-09 2018-03-16 Proton World International N.V. Gestion d'index dans une memoire flash
CN107870727B (zh) * 2016-09-23 2021-01-01 伊姆西Ip控股有限责任公司 用于存储数据的方法和设备
KR20180091296A (ko) 2017-02-06 2018-08-16 삼성전자주식회사 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10268389B2 (en) * 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
IT201700020134A1 (it) * 2017-02-22 2018-08-22 St Microelectronics Srl Procedimento per gestire memorie a semiconduttore, interfaccia, memoria e dispositivo corrispondenti
US10079612B1 (en) 2017-03-15 2018-09-18 Alibaba Group Holding Limited Distributed erasure coding pool deployed in hyperscale infrastructure
US10388379B2 (en) * 2017-03-21 2019-08-20 Micron Technology, Inc. Apparatuses and methods for automated dynamic word line start voltage
JP2018160156A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
TWI629590B (zh) * 2017-04-14 2018-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US10922287B2 (en) * 2017-05-24 2021-02-16 Cisco Technology, Inc. Intelligent layout of composite data structures in tiered storage
US10678768B2 (en) * 2017-06-30 2020-06-09 Intel Corporation Logical band-based key-value storage structure
US10476879B2 (en) * 2017-07-26 2019-11-12 International Business Machines Corporation Blockchain authentication via hard/soft token verification
US11194524B2 (en) 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
FR3072476A1 (fr) 2017-10-13 2019-04-19 Proton World International N.V. Unite logique de memoire pour memoire flash
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
CN109947660B (zh) * 2017-12-21 2023-03-14 建兴储存科技(广州)有限公司 固态储存装置及其相关计算机系统
TWI651650B (zh) * 2018-02-05 2019-02-21 大陸商深圳大心電子科技有限公司 記憶體管理方法及使用所述方法的儲存控制器
CN108763101B (zh) * 2018-05-30 2021-11-09 郑州云海信息技术有限公司 一种数据的搬运方法及系统
US11545221B2 (en) 2018-06-29 2023-01-03 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices
US10978156B2 (en) * 2018-06-29 2021-04-13 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices
US10628076B1 (en) * 2018-10-01 2020-04-21 Micron Technology, Inc. Data erasure in memory sub-systems
US10852965B2 (en) * 2018-10-30 2020-12-01 EMC IP Holding Company LLC Write folding mechanism using reusable shared striping in a storage system
CN110022299A (zh) * 2019-03-06 2019-07-16 浙江天脉领域科技有限公司 一种超大规模分布式网络计算的方法
CN109995610A (zh) * 2019-03-06 2019-07-09 浙江天脉领域科技有限公司 一种模拟生物神经形态的对等网络底层通信系统
WO2020220246A1 (en) * 2019-04-30 2020-11-05 Yangtze Memory Technologies Co., Ltd. Electronic apparatus and method of managing read levels of flash memory
US11726869B2 (en) 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
US20210055878A1 (en) * 2019-08-20 2021-02-25 Micron Technology, Inc. Data compaction within the same plane of a memory component
US10854311B1 (en) 2019-08-28 2020-12-01 Micron Technology, Inc. Data redirection upon failure of a program operation
US11281392B2 (en) 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter
US11294827B2 (en) 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
US11216364B2 (en) * 2020-02-18 2022-01-04 Micron Technology, Inc. Sequential read optimization in a memory sub-system that programs sequentially
CN111356980B (zh) * 2020-02-20 2021-03-12 长江存储科技有限责任公司 对多平面存储器件进行编程的方法
US11287989B2 (en) 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US11137920B1 (en) * 2020-04-30 2021-10-05 Micron Technology, Inc. Storing zones in a zone namespace on separate planes of a multi-plane memory device
US11436153B2 (en) * 2020-05-26 2022-09-06 Western Digital Technologies, Inc. Moving change log tables to align to zones
US11152071B1 (en) * 2020-05-27 2021-10-19 Western Digital Technologies, Inc. Erase operation reattempt to recover misidentified bad blocks resulting from consecutive erase failures
US11467744B2 (en) 2020-05-27 2022-10-11 Western Digital Technologies, Inc. System to identify aggressor blocks causing back to back erase failure
US11663068B2 (en) * 2020-06-29 2023-05-30 Western Digital Technologies, Inc. Write abort error detection in multi-pass programming
TWI747349B (zh) * 2020-06-30 2021-11-21 大陸商合肥沛睿微電子股份有限公司 儲存裝置之低級格式化方法
TWI775268B (zh) 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11922011B2 (en) * 2021-09-01 2024-03-05 Micron Technology, Inc. Virtual management unit scheme for two-pass programming in a memory sub-system
FR3129763B1 (fr) * 2021-12-01 2024-07-19 St Microelectronics Rousset Systeme sur puce comportant une memoire non volatile
US11842062B2 (en) 2022-02-09 2023-12-12 Western Digital Technologies, Inc. Method of handling irregular MetaBlock wear leveling and UGSD boot time improvement
US20240061786A1 (en) * 2022-08-22 2024-02-22 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for accessing data in versions of memory pages
KR20240112601A (ko) * 2023-01-12 2024-07-19 에스케이하이닉스 주식회사 스토리지 장치 및 그의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US20020099904A1 (en) * 2001-01-19 2002-07-25 Conley Kevin M. Partial block data programming and reading operations in a non-volatile memory

Family Cites Families (104)

* 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
JPH0546494A (ja) 1991-08-19 1993-02-26 Toshiba Corp メモリチエツク方式
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
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
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
US5797033A (en) * 1995-03-31 1998-08-18 Cirrus Logic, Inc. Direct memory access for storing and retrieving data based on packet size
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 株式会社ルネサステクノロジ フラッシュディスクカード
JP3707854B2 (ja) * 1996-03-01 2005-10-19 株式会社東芝 キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法
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
JP3197815B2 (ja) * 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
US6900193B1 (en) 1996-05-01 2005-05-31 The United States Of America As Represented By The Department Of Health And Human Services Structural modification of 19-norprogesterone I: 17-α-substituted-11-β-substituted-4-aryl and 21-substituted 19-norpregnadienedione as new antiprogestational agents
US6477627B1 (en) * 1996-05-31 2002-11-05 Emc Corporation Method and apparatus for mirroring data in a remote data storage system
JPH1027444A (ja) * 1996-07-10 1998-01-27 Fujitsu Ltd ディスク装置のポジション感度調整方法
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
JP3919261B2 (ja) * 1996-07-31 2007-05-23 キヤノン株式会社 メモリ制御装置およびメモリアクセス方法
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
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
US6157991A (en) * 1998-04-01 2000-12-05 Emc Corporation Method and apparatus for asynchronously updating a mirror of a source device
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6826651B2 (en) * 1998-05-29 2004-11-30 International Business Machines Corporation State-based allocation and replacement for improved hit ratio in directory caches
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
JP4689137B2 (ja) * 2001-08-08 2011-05-25 株式会社日立製作所 リモートコピー制御方法、及びストレージシステム
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
US6598174B1 (en) * 2000-04-26 2003-07-22 Dell Products L.P. Method and apparatus for storage unit replacement in non-redundant array
US6697957B1 (en) * 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
DE10196175T1 (de) 2000-05-11 2003-04-17 Quickturn Design Systems Inc Emulations-Schaltkreis mit einem Haltezeit-Algorithmus, Logikanalysierer und Shadow-Speicher
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 シャープ株式会社 不揮発性半導体記憶装置
JP4184586B2 (ja) 2000-09-28 2008-11-19 株式会社東芝 半導体記憶装置
JP2002133878A (ja) 2000-10-23 2002-05-10 Hitachi Ltd 不揮発性記憶回路および半導体集積回路
DE10165027C5 (de) * 2000-10-27 2019-10-02 Nsk Ltd. Wälzlager und Spindelvorrichtung für Werkzeugmaschine
US6587372B2 (en) * 2001-01-11 2003-07-01 Micron Technology, Inc. Memory device with multi-level storage cells and apparatuses, systems and methods including same
US6728849B2 (en) * 2001-12-14 2004-04-27 Hitachi, Ltd. Remote storage system and method
JP3828376B2 (ja) 2001-05-07 2006-10-04 株式会社東芝 記憶システム
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
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
US7356641B2 (en) * 2001-08-28 2008-04-08 International Business Machines Corporation Data management in flash memory
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
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
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
US7199905B2 (en) * 2001-12-04 2007-04-03 Xerox Corporation Systems and methods for halftoning multiple color separation layers by interlayer error diffusion
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US6820180B2 (en) * 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7047377B2 (en) * 2002-08-20 2006-05-16 Gruintine Pueche, Inc. System and method for conducting an auction-based ranking of search results on a computer network
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
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7346740B2 (en) * 2002-11-01 2008-03-18 Seagate Technology Llc Transferring speculative data in lieu of requested data in a data transfer operation
JP4200362B2 (ja) 2003-02-20 2008-12-24 ソニー株式会社 記録媒体の記録制御方法、記録制御装置および電子機器
DE10349595B3 (de) * 2003-10-24 2004-12-09 Hyperstone Ag Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher
KR20070007265A (ko) 2003-12-30 2007-01-15 쌘디스크 코포레이션 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
WO2005066964A2 (en) 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with phased program failure handling
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
KR20070007264A (ko) 2003-12-30 2007-01-15 쌘디스크 코포레이션 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
EP1704483A2 (en) 2003-12-30 2006-09-27 SanDisk Corporation Non-volatile memory and method with memory planes alignment
US7315916B2 (en) 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US20020099904A1 (en) * 2001-01-19 2002-07-25 Conley Kevin M. Partial block data programming and reading operations in a non-volatile memory

Also Published As

Publication number Publication date
US20050144360A1 (en) 2005-06-30
US8621177B2 (en) 2013-12-31
US20090037651A1 (en) 2009-02-05
JP2007520804A (ja) 2007-07-26
US20090019218A1 (en) 2009-01-15
JP2011253557A (ja) 2011-12-15
US20050166087A1 (en) 2005-07-28
US20090019217A1 (en) 2009-01-15
JP2007517333A (ja) 2007-06-28
EP1704571A1 (en) 2006-09-27
US8103841B2 (en) 2012-01-24
DE602004031461D1 (de) 2011-03-31
US8239643B2 (en) 2012-08-07
EP1704571B1 (en) 2011-02-16
US8051257B2 (en) 2011-11-01
CN1973334A (zh) 2007-05-30
CN1922586A (zh) 2007-02-28
EP2293196A1 (en) 2011-03-09
US7139864B2 (en) 2006-11-21
JP4933269B2 (ja) 2012-05-16
EP2293196B1 (en) 2018-06-27
WO2005066972A1 (en) 2005-07-21
US7945759B2 (en) 2011-05-17
JP5617079B2 (ja) 2014-11-05
US20050141312A1 (en) 2005-06-30
ATE423380T1 (de) 2009-03-15
JP4851344B2 (ja) 2012-01-11
CN1914689A (zh) 2007-02-14
DE602004028174D1 (de) 2010-08-26
CN1922585A (zh) 2007-02-28
TWI272483B (en) 2007-02-01
US20050144365A1 (en) 2005-06-30
US20050141313A1 (en) 2005-06-30
CN100435115C (zh) 2008-11-19
JP4898457B2 (ja) 2012-03-14
US20110219174A1 (en) 2011-09-08
KR101012274B1 (ko) 2011-02-07
JP2007517335A (ja) 2007-06-28
US7913061B2 (en) 2011-03-22
ATE474269T1 (de) 2010-07-15
CN1922580A (zh) 2007-02-28
US20120017038A1 (en) 2012-01-19
DE602004019571D1 (de) 2009-04-02
TW200534092A (en) 2005-10-16
JP2007522542A (ja) 2007-08-09
JP4938460B2 (ja) 2012-05-23
ATE498893T1 (de) 2011-03-15
KR20060130085A (ko) 2006-12-18

Similar Documents

Publication Publication Date Title
CN100435116C (zh) 具有存储器平面对准的非易失性存储器及方法
EP1702338B1 (en) Robust data duplication and improved update method in a multibit non-volatile memory
CN100501868C (zh) 基于NAND Flash存储器文件系统的实现方法
US20080091871A1 (en) Non-volatile memory with worst-case control data management
US20080091901A1 (en) Method for non-volatile memory with worst-case control data management
KR20070007264A (ko) 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법
CN102483685B (zh) 具有附属文件系统的多堆非易失性存储器系统
KR20060134011A (ko) 메모리 플레인 배열을 갖춘 비휘발성 메모리 및 방법
EP1704479B1 (en) Non-volatile memory and method with phased program failure handling
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法

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.