具有附属文件系统的多堆非易失性存储器系统的制作方法

文档序号:6350164阅读:128来源:国知局
专利名称:具有附属文件系统的多堆非易失性存储器系统的制作方法
技术领域
本申请涉及诸如半导体闪存的可重编程非易失性存储器系统的操作,且更具体地,涉及使用多个堆的结构的这种系统的管理。
背景技术
能够非易失性地存储电荷的固态存储器、尤其是被包装为小形状因子卡的EEPROM 和快闪EEPROM的形式,近来已经变为在各种移动和手持设备、特别是信息用具和消费者电子产品中的存储的选择。不像也是固态存储器的RAM(随机存取存储器),闪存是非易失性的,且即使在掉电之后也维持其存储的数据。而且,不像R0M(只读存储器),闪存是可重写的,类似于盘存储设备。尽管有较高的成本,闪存也逐渐用于大容量存储应用。基于诸如硬盘驱动器和软盘的旋转磁介质的传统大容量存储器不适用于移动和手持环境。这是因为盘驱动器趋于有大的体积,因此易于机械故障,且具有高延迟时间和高功率需求。这些不期望的属性使得基于盘的存储器在大多数移动和便携应用中不实际。另一方面,嵌入式和可移除卡的形式的闪存都由于其小尺寸、低功耗、高速度和高可靠性特性而理想地适用于移动和手持环境。闪速EEPROM类似于EEPROM (电可擦除可编程只读存储器)之处在于其是可以被擦除且使得新数据写入或"编程"到其存储器单元中的非易失性存储器。两者都使用位于在源极和漏极区域之间的半导体衬底中的沟道区域上以场效应晶体管结构的浮置(未连接)导电栅极。然后,在浮置栅极上提供控制栅极。晶体管的阈值电压特性受浮置栅极上保留的电荷量控制。也就是说,对于在浮置栅极上的给定的电荷电平,存在在晶体管"导通" 以允许在其源极和漏极区域之间导电之前必须施加到该控制栅极的对应电压(阈值)。具体地,诸如闪速EEPROM的闪存允许同时擦除存储器单元的全部多个块。浮置栅极可以保持一个电荷范围,且因此可以被编程到阈值电压窗内的任何阈值电压电平。通过该器件的最小和最大阈值电平来划界阈值电压窗的尺寸,这转而对应于可以被编程到浮置栅极上的该电荷范围。该阈值窗通常取决于存储器器件的特征、操作条件和历史。在该窗内的每个不同、可分解的阈值电压电平范围可以原则上用于指定该单元的明确的存储器状态。用作存储器单元的晶体管通常被两个机制之一编程到"已编程"状态。在"热电子注入"中,施加到漏极的高电压加速电子跨过衬底沟道区域。同时,施加到控制栅极的高电压将热电子拉过薄栅极电介质到浮置栅极上。在"遂穿注入"中,相对于衬底向控制栅极施加高电压。以此方式,将电子从衬底拉到中间的浮置栅极。虽然历史上已经使用术语 “编程”来描述通过向存储器单元的初始擦除的电荷存储单元注入电子以便改变存储器状态来向存储器中写,但是现在已经与诸如"写"或"记录"的更多通用术语可互换使用。该存储器器件可以被多个机制擦除。对于EEPR0M,存储器单元可通过相对于控制栅极向衬底施加高电压以便诱使浮置栅极中的电子遂穿过薄氧化物到衬底沟道区域(即, R)wler-Nordheim遂穿)而被电擦除。通常,EEPROM可逐字节擦除。对于快闪EEPR0M,该
4存储器可一次全部或一次一个或多个最小可擦除块地被电擦除,其中,最小可擦除块可以由一个或多个扇区构成,且每个扇区可以存储512字节或更多的数据。该存储器器件通常包括可以被安装到卡上的一个或多个存储器芯片。每个存储器芯片包括由诸如解码器和擦除、读和写电路的外围电路支持的存储器单元的阵列。更复杂的存储器器件具有进行智能且较高级存储器操作和接口连接(interfacing)的控制器。存在当今正使用的许多商业成功的非易失性固态存储器器件。这些存储器器件可以是快闪EEPR0M,或可以使用其他类型的非易失性存储器单元。在美国专利号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等人的“NROM :A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell,,, IEEE Electron Device Letters, vol. 21, no. 11,2000 11 月,pp. 543-545所描述。ONO介电层跨越源极和漏极扩散之间的沟道而延伸。一个数据位的电荷被局部化在与漏极相邻的介电层,且另一数据位的电荷被局部化在与源极相邻的介电层。例如,美国专利5,768,192和6,011,725公开了具有在两个二氧化硅层之间夹着的捕获电介质(trapping dielectric)的非易失性存储器单元。通过分开地读取电介质内的空间上分开的电荷存储区的二进制状态来实现多状态数据存储。为了改善读和编程性能,并行读或编程在阵列中的多个电荷存储元件或存储器晶体管。因此,存储器元件的"页"被一起读或编程。在现有存储器架构中,一行通常包含若干交织的页,或其可以组成一页。一页的所有存储器元件将一起被读或编程。在闪存系统中,擦除操作可以花费比读和编程操作长的量级的时间。因此,期望具有足够尺寸的擦除块。以此方式,在存储器单元的大集合上摊销该擦除时间。闪存的属性预示了数据必须被写到已擦除的存储器位置。如果来自主机的某一逻辑地址的数据要更新,则一种方式是在相同物理存储器位置中重写该更新数据。也就是说, 逻辑到物理地址的映射未改变。但是,这将意味着,包含了物理位置的整个擦除块将必须被首先擦除,然后用更新的数据来重写。该更新方法效率低,因为它需要擦除并重写整个擦除块,尤其在要更新的数据仅占据擦除块的小部分时。这还将导致存储器块的擦除再循环的较高的频率,鉴于该类存储器器件的有限容忍度角度来说这是不期望的。通过主机系统、存储器系统、其他电子系统的外部接口传输的数据被寻址,且被映射到闪存系统的物理位置中。通常,由系统生成或接收的数据文件的地址被映射到根据数据的逻辑块(此后称为"LBA接口")为系统建立的连续逻辑地址空间的不同范围。地址空间的范围通常足够用于覆盖该系统能够处理的全地址范围。在一个例子中,磁盘存储驱动器通过该逻辑地址空间而与计算机或其他主机系统通信。该地址空间具有足够寻址盘驱动器的整个数据存储能力的范围。闪存系统最通常以可移除地连接到诸如个人计算机、照相机等的各种主机的存储器卡或闪盘的形式提供,但也可以被嵌入到这种主机系统中。当向存储器写数据时,该主机通常向扇区、簇或其他数据单位分配在存储器系统的连续虚拟地址空间内的唯一的逻辑地址。类似于盘操作系统(D0S),主机向存储器系统的逻辑地址空间内的地址写数据,和从该地址读取数据。存储器系统内的控制器将从主机接收的逻辑地址翻译为存储器阵列内的逻辑地址,所述数据在该逻辑地址实际地存储,然后该控制器记录这些地址翻译。存储器系统的数据存储容量至少与在对于存储器系统定义的整个逻辑地址空间上可寻址的数据量一样大。在当前商用的闪存系统中,擦除单元的尺寸已经增加到足够的存储器单元的块来存储多个数据扇区。事实上,许多数据页被存储在一个块中,且一页可以存储多个数据扇区。另外,两个或更多块通常与元块一起操作,且这种块的页逻辑地链接到了一起作为元页。数据的页或元页被一起写和读,这可以包括许多数据扇区,因此增加了操作的并行性。 随着这种大容量操作单元的出现,带来的挑战是高效地操作它们。为了方便说明,除非特别指出,意图在此使用的术语“块”取决于在特定系统中是否使用了元块而指的是擦除的块单位或多个块“元块”。类似地,在此对“页”的引用,取决于系统配置,可以指的是单个块内的编程单位或元块内的“元页”。当使用到存储器系统的当前普遍的LBA接口时,由存储器连接到的主机生成的文件被分配接口的逻辑地址空间内的唯一地址。然后,该存储器系统通常在逻辑地址空间和存储器的物理块的页之间映射数据。存储器系统记录逻辑地址空间如何映射到物理存储器,但主机并不知道这些。主机记录其数据文件在逻辑地址空间内的地址,但存储器系统在几乎不知道或不知道该映射的情况下操作。管理闪存系统的另一问题与系统控制和目录数据有关。在各种存储器操作过程期间产生并访问数据。因此,其高效地处理和迅速的访问将直接影响性能。将期望在闪存中维持该类数据,因为闪存的目的是存储且是非易失性的。但是,由于在控制器和闪存之间的中间的文件管理系统,不能直接地访问数据。而且,系统控制和目录数据趋于活跃且是碎片状的,其不利于在具有大尺寸块擦除的系统中存储。传统地,在控制器RAM中设置该类数据, 由此允许由控制器来直接访问。在存储器器件通电之后,初始化处理使得闪存能被扫描以便编译必要的系统控制和目录信息以置于控制器RAM中。该处理费时且需要控制器RAM容量,随着日益增加的闪存容量更是如此。通常,存在持续的搜索以改善非易失性存储器系统的容量和性能。具体地,这可以包括改善在存储器系统中的并行的量和效率的方法。

发明内容
根据本发明的总体方面,提供了一种非易失性存储器系统,具有控制器电路和具有多个可独立操作的堆的非易失性存储器电路。每个堆包括一个或多个非易失性存储器阵列用于存储用户数据和系统数据。控制器电路管理在存储器电路上的用户数据的存储,且包括多个堆接口,每个连接到相应的堆以在控制器和对应的堆之间传输数据,以及包括处理电路,执行多个线程,每个线程独立且同时管理对应的一个堆。所述堆中的第一堆存储包括文件系统的系统数据,通过该文件系统,对应的线程管理第一堆,且其他堆中的每个存储包括文件系统的一部分的拷贝的系统数据,通过该文件系统的一部分的拷贝,对应的线程管理该堆。在其他方面中,提供操作非易失性存储器系统的对应方法,所述存储器系统包括具有多个可独立操作的堆的非易失性存储器电路以及管理在存储器电路上的用户的存储的控制器电路。该方法包括在非易失性存储器中在堆中的第一堆上存储包括文件系统的系统数据;在非易失性存储器中在堆中的第二堆上存储包括文件系统的一部分的拷贝的系统数据;在控制器上执行第一线程,以根据文件系统来管理第一堆;以及与执行第一线程同时地,在控制器上执行第二线程以根据独立于在第一堆中存储的文件系统的、文件系统的拷贝来管理第二堆。在本发明的示例例子的以下描述中包括本发明的各种方面、优点、特征和实施例, 其描述应该与附图结合。在此引用的所有专利、专利申请、文章、其他公开、文档和事物为了所有目的通过其整体而合并于此。到在任一并入的公开、文档或事物和本申请之间的术语的定义或使用中的任何不一致或冲突的程度,在本申请中的应该优先。


图1示意性地图示了适用于实现本发明的存储器系统的主要硬件组件。图2示意性地图示了非易失性存储器单元。图3图示了在浮置栅极可以选择性地在任意时间存储的四个电荷Q1-Q4的源极-漏极电流Id和控制栅极电压Vra之间的关系。图4A示意性地图示了被组织为NAND串的存储器单元的串。图4B图示了由诸如图4A中示出的NAND串50构成的存储器单元的NAND阵列210 的例子。图5图示了在例如正被并行感测或编程的NAND配置中组织的存储器单元的一页。图6 (0)-6 O)图示编程4状态存储器单元的全体的例子。图7A-7E图示了用给定的2位码编码的4状态存储器的编程和读。图8图示了通过存储器管理器管理的存储器,所述存储器控制器是驻留于控制器中的软件组件。图9图示了后端系统的软件模块。图10A(i)_10A(iii)示意性地图示了在逻辑组和元块之间的映射。图IOB示意性地图示了在逻辑组和元块之间的映射。图11是使用附属文件系统的多堆存储器系统的例子的方框图。图12提供在图11的实施例中的主和附属(satellite)文件系统中存储的元素的
一些细节。
具体实施例方式存储器系统图1到图7提供其中可以实现或例示本发明的各个方面的示例存储器系统。图8到图10图示用于实现本发明的各个方面的优选存储器和块结构。图11和图12图示了在多堆系统中的附属文件系统的使用。图1示意性地图示了适用于实现本发明的存储器系统的主要硬件组件。存储器系统90通常通过主机接口与主机80 —起操作。存储器系统通常为存储器卡或嵌入式存储器系统的形式。存储器系统90包括其操作被控制器100控制的存储器200。存储器200包括在一个或多个集成电路芯片上分布的非易失性存储器单元的一个或多个阵列。控制器100包括接口 110、处理器120、可选的协处理器121、ROM 122(只读存储器)、RAM 130(随机存取存储器)和可选的可编程非易失性存储器124。接口 110具有将控制器接口连接到主机的一个组件和接口连接到存储器200的另一组件。在非易失性ROM 122和/或可选的非易失性存储器1 中存储的固件提供代码,用于处理器120实现控制器100的功能。可以由处理器120或可选的协处理器121来处理错误校正码。在替换的实施例中,通过状态机(未示出)来实现控制器100。在另一实施例中,在主机中实现控制器100。物理存储器结构图2示意性地图示了非易失性存储器单元。存储器单元10可以由具有诸如浮置栅极或介电层的电荷存储单元20的场效应晶体管实现。存储器单元还包括源极14、漏极 16和控制栅极30。存在当今正使用的许多商业成功的非易失性固态存储器器件。这些存储器器件可以使用不同类型的存储器单元,每个类型具有一个或多个电荷存储元件。通常,非易失性存储器单元包括EEPROM和快闪EEPR0M。在美国专利no. 5,595,924 中给出EEPROM单元和制造它们的方法的例子。在美国专利no. 5,070,032,5,095,344, 5,315,541,5,343,063,5,661,053,5,313,421 和 6,222,762 中给出快闪 EEPROM 单元、其在存储器系统中的使用和制造它们的方法的例子。具体地,在美国专利no. 5,570,315, 5,903,495,6,046,935中描述具有NAND单元结构的存储器器件的例子。同样,使用电介质存储元件的存储器器件的例子已经由以下文献描述=Eitan等人的“NR0M:A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell,,,IEEE Electron Device Letters, vol. 21,no. 11,2000 年 11 月,pp. 543-545 和美国专利 no. 5,768,192 和 6,011, 725ο实际上,通常通过当向控制栅极施加参考电压时感测跨过单元的源极和漏极的导电电流来读取该单元的存储器状态。因此,对于单元的浮置栅极上的每个给定的电荷,可以检测针对固定参考控制栅极电压的对应的导电电流。类似地,可编程到浮置栅极上的电荷范围定义了对应的阈值电压窗或对应的导电电流窗。或者,代替检测在分区的电流窗之间的导电电流,能够在控制栅极处为测试之下的给定存储器状态设置阈值电压,并检测导电电流是低于还是高于阈值电流。在一个实施方式中,通过检查导电电流通过位线的电容而放电的速率来实现针对阈值电流检测导电电流。图3图示了在浮置栅极可以选择性地在任意时间存储的四个不同电荷Q1-Q4的源极-漏极电流Id和控制栅极电压Vra之间的关系。四个实线Id相对Vra曲线表示能够在存储器单元的浮置栅极上被编程的四个可能的电荷电平,分别对应于四个可能的存储器状态。 作为例子,全体单元的阈值电压窗的范围可以从0. 5V到3. 5V。可以通过以每个为0. 5V的间隔将阈值窗划分为五个区域来分界分别表示一个已擦除状体和六个已编程状态的七个可能的存储器状态〃 0〃,“ 1〃,“ 2〃,“ 3〃,“ 4〃,“ 5〃,“ 6〃。例如,如果如所示地使用2μ A的参考电流IREF,则用Ql编程的单元可以被视为在存储器状态"1", 因为其曲线与Ikef在由Vra = 0. 5V和1. OV分界的阈值窗的区域中交叉。类似地,Q4处于存储器状态"5"。如可以从上述描述看见的,使存储器单元存储的状态越多,其阈值窗划分得越精细。例如,存储器器件可以具有拥有范围从-1.5V到5V的阈值窗的存储器单元。这提供了 6. 5V的最大宽度。如果该存储器单元要存储16个状态,每个状态可以在阈值窗中占据从 200mV到300mV。这将需要在编程和读操作中的更高的精度以便能够实现需要的分辨率。图4A示意性地图示了被组织为NAND串的存储器单元的串。NAND串50由其源极和漏极菊花链接的一系列存储器晶体管M1,M2,. . . Mn (例如η = 4,8,16或更高)构成。一对选择晶体管S1、S2控制存储器晶体管链分别经由NAND串的源极端讨和漏极端56与外部的连接。在存储器阵列中,当导通源极选择晶体管Sl时,源极端耦合于源极线(见图4B)。 类似地,当导通漏极选择晶体管S2时,NAND串的漏极端被耦合于存储器阵列的位线。在该链中的每个存储器晶体管10用作存储器单元。其具有电荷存储元件20来存储给定量的电荷以便表示意图的存储器状态。每个存储器晶体管的控制栅极30允许对读和写操作的控制。如将在图4B中看见的,一行NAND串的对应存储器晶体管的控制栅极30都被连接到相同字线。类似地,选择晶体管Si、S2的每个的控制栅极32分别经由其源极端M和漏极端 56提供对NAND串的控制访问。类似地,一行NAND串的对应选择晶体管的控制栅极32都被连接到相同选择线。当在编程期间读或验证在NAND串内的被寻址的存储器晶体管10时,其控制栅极 30被供应了适当的电压。同时,通过对其控制栅极施加足够的电压来完全导通NAND串50 中的剩余的未寻址的存储器晶体管。以此方式,有效地创建从单独的存储器晶体管的源极到NAND串的源极端M的导电路径,且类似地对于单独的存储器晶体管的漏极到该单元的漏极端56建立导电路径。在美国专利no. 5,570,315,5,903,495,6,046,935中描述了具有这种NAND串结构的存储器器件。图4B图示了由例如图4A中示出的NAND串50构成的存储器单元的NAND阵列210 的例子。沿着NAND串的每列,诸如位线36的位线耦合于每个NAND串的漏极端56。沿着 NAND串的每堆,诸如源极线34的源极线耦合于每个NAND串的源极端54。同样,沿着在NAND 串的堆中的存储器单元的行的控制栅极被连接到诸如字线42的字线。沿着在NAND串的堆中的选择晶体管的行的控制栅极被连接到诸如选择线44的选择线。NAND串的堆中的存储器单元的整行可以由NAND串的堆的字线和选择线上的适当的电压来寻址。当在NAND串内的存储器晶体管正被读取时,经由相关字线来硬导通在该串中的剩余存储器晶体管,以便流过该串的电流基本上取决于在正被读取的单元中存储的电荷电平。图5图示了例如在正被并行感测或编程的NAND配置中组织的存储器单元的一页。 图5实质上示出了在图4B的存储器阵列210中的NAND串50的堆,其中图4A中明显地示出了每个NAND串的细节。诸如页60的"页"是可并行感测或编程的一组存储器单元。这通过感测放大器212的对应页来实现。感测的结果被锁存在对应的一组锁存器214中。每个传感放大器可以经由位线耦合于NAND串。该页通过共同连接到字线42的该页的单元的控制栅极和可由感测放大器经由位线36访问的每个单元来使能。作为一个例子,当分别感测或编程单元60的页时,感测电压或编程电压分别被施加到公共字线WL3以及适当的电压被施加到位线。存储器的物理组织在闪存和这类存储器之间的一个重要差别是单元必须从已擦除状态编程。也就是说,浮置栅极必须首先清除电荷。然后,编程向浮置栅极添加回期望的电荷量。其不支持将电荷的一部分从浮置栅极移除,以从较高的编程状态到较低的编程状态。这意味着,更新的数据不能重写已有的数据,且必须被写到先前未写的位置。另外,擦除要将所有电荷从浮置栅极中清空,且通常花费相当的时间。由于这个原因,逐单元或甚至逐页地擦除是麻烦的并且很慢。实际上,存储器单元的阵列被划分为大量存储器单元的块。如对于快闪EEPROM系统常见的,该块是擦除的单位。S卩,每个块包含一起擦除的存储器单元的最小数量。虽然把要并行擦除的大量单元聚集到块中将改善擦除性能,但是大尺寸的块也需要处理大量更新的和废旧的数据。就在擦除该块之前,需要进行垃圾收集来回收在块中的非废旧的数据。每个块通常被划分为大量页。页是编程或读的单位。在一个实施例中,各个页可以被划分为段,且段可以包含作为基本编程操作一次被写入的最小数量的单元。一页或多页数据通常被存储在一行存储器单元中。一页可以存储一个或多个扇区。扇区包括用户数据和开销数据(overhead data)。在多个阵列上分布的多个块和页也可以被一起操作作为元块和元页。如果它们在多个芯片上分布,则它们可以一起被操作作为巨大块(megablock) 禾口巨大页(megapage) ο多级单元(“MLC")存储器划分的例子已经结合图3描述其中存储器单元每个存储多位数据的非易失性存储器。一个具体例子是从场效应晶体管的阵列形成的存储器,每个具有在其沟道区域和其控制栅极之间的电荷存储层。电荷存储层或单元可以存储一定范围的电荷,导致每个场效应晶体管的阈值电压的范围。可能的阈值电压的范围跨越阈值窗。当该阈值窗被划分为阈值电压的子范围或区时,每个可分解区用于表示存储器单元的不同存储器状态。可以由一个或多个二进制位来编码多存储器状态。例如,被划分为四个区的存储器单元可以支持可以被编码为2 位数据的四个状态。类似地,被划分为八个区的存储器单元可以支持可以被编码为3位数据的八个状态,等等。所有位、全序列MLC编程图6 (0)-6 (2)图示编程4状态存储器单元的全体的例子。图6 (0)图示了可编程到分别表示存储器状态〃 0〃,“ 1〃,“ 2〃和〃 3〃的阈值电压的四个不同分布的全体存储器单元。图6(1)图示已擦除存储器的"已擦除"阈值电压的初始分布。图6 )图示了在已经编程了许多存储器单元之后的存储器的例子。基本上,单元初始地具有"已擦除" 阈值电压,且编程将把其移动到较高值,进入由验证电平vVi、vV2、vV3*界的三个区之一中。 以此方式,每个存储器单元可以被编程到三个已编程状态"1〃,“ 2"和"3"之一,或在"已擦除"状态下维持被未编程。随着该存储器得到更多的编程,如图6(1)中示出的" 已擦除"状态的初始分布将变得更窄,且由"0"状态表示已擦除状态。具有较低位和较高位的2位码可以用于表示四个存储器状态的每个。例如,分别由〃 11〃,“ 01〃,“ 00〃 和〃 10〃 表示〃 0〃,“ 1〃,“ 2〃 和〃 3〃 状态。可以通过在"全序列"模式下感测,来从存储器读取2位数据,其中,通过分别在三个子遍中相对于读分界阈值rVl,rV2和rV3感测来一起感测两位。逐位MLC编程和读图7A-7E图示了用给定的2位码编码的4状态存储器的编程和读。图7A图示了当每个存储器单元使用2位码存储两位数据时的4-状态存储器阵列的阈值电压分布。这
10种2位码已经在美国专利No. 7,057,939中公开。图7B图示了使用2位码在2遍编程机制中的较低页编程(较低位)。容错LM新码本质上避免了任何较高页编程转变通过任何中间状态。因此,第一遍较低页编程具有逻辑状态(较高位,较低位)=(1,1),转变到通过用大于DA但小于Dc的已编程阈值将"未编程"存储器状态"0"编程到由(x,0)指定的"中间"状态而表示的某个中间状态(X, 0)。图7C图示了使用2位码在2遍编程机制中的较高页编程(较高位)。在将较高页位编程到〃 0〃的第二遍中,如果较低页位处于〃 1",逻辑状态(1,1)转变到通过将〃 未编程"存储器状态"0"编程为"1"而表示的(0,1)。如果较低页位处于"0",通过从〃中间〃状态编程到〃 3〃来获得逻辑状态(0,0)。类似地,如果较高页维持在〃 1〃, 而较低页已经编程到〃 0〃,则其将需要从〃中间〃状态转变到通过将〃中间〃状态编程至IJ" 2"而表示的(l,0)o图7D图示辨别用2位码编码的4状态存储器的较低位所需的读操作。首先进行 readB操作来确定是否可以读取LM标记。如果是,则已经编程了较高页,且readB操作将正确地产生较低页数据。另一方面,如果还没有编程较高页,将通过readA操作来读取较低页数据。图7E图示辨别用2位码编码的4状态存储器的较高位所需的读操作。如从图中清楚的,读取的较高页将需要分别相对于分界阈值电压Da,Db和D。的readA,readB和readC
的三遍读。在2位存储器的逐位机制中,存储器单元的一个物理页将存储两个逻辑数据页, 较低数据页对应于较低位,且较高数据页对应于较高页。二进制和MLC存储器分区图6和图7图示2位(也称为〃 D2")存储器的例子。如可以看到的,D2存储器的阈值范围或窗被划分为指定4个状态的4个区域。类似地,在D3中,每个单元存储3位 (低、中间和较高位),且存在8个区域。在D4中,存在4位和16个区域等。随着存储器的有限阈值窗被划分为更多区域,编程和读取的分辨率将必需变得更精细。由于存储器单元被配置以存储多个位而产生两个问题。首先,编程或读在必须更准确地编程或读单元的阈值时将会较慢。实际上,实践中,(在编程和读中所需的)感测时间趋于随着分区级的数量的平方而增加。其次,闪存随着其使用老化而具有持久性问题。当重复编程和擦除一个单元时,通过遂穿跨越电介质来向浮置栅极20 (见图幻中和从浮置栅极20往返电荷。每次,一些电荷变得可以在电介质中被捕获,并且将修改单元的阈值。实际上,在使用中,阈值窗将逐渐变窄。因此,通过在容量、性能和可靠性之间的折衷设计MLC存储器。相反,将看到,对于二进制存储器,存储器的阈值窗仅被分区为两个区域。这将允许最大的误差余量。因此,在存储器容量减少的同时进行二进制分区将提供最大的性能和可靠性。结合图7描述的多遍、逐位编程和读技术提供在MLC和二进制分区之间的平滑转变。在该情况下,如果该存储器仅被编程了较低位,则其实际是二进制分区的存储器。虽然该方法没有像单级单元(“SLC")存储器的情况一样完全最优化阈值窗的范围,但是其具有使用与MLC存储器的较低位的操作中一样的分界或感测级的优点。如稍后将描述的,该方法允许MLC存储器被"征用"用于用作二进制存储器,或反之亦然。但是,应该理解,MLC 存储器趋于具有更严格的使用规范。二讲制存储器和部分页编稈被编程到一个存储器单元的电荷存储元件中的电荷产生扰动相邻存储器单元的电场的电场。这将影响实质上是具有电荷存储元件的场效应晶体管的相邻存储器单元的特性。具体地,当被感测时,存储器单元将显得具有比其较少被扰动时要高的阈值电平(或被更多编程)。通常,如果存储器单元在第一场环境下被编程验证且然后由于相邻单元随后被不同电荷编程因而在不同场环境下被再次读取,读的准确性可以由于在相邻浮置栅极之间的耦合而受影响,这被称为"Yupin效应"。由于在半导体存储器中的更高的集成度,由于在存储器单元之间的存储的电荷导致的电场的扰动aupin效应)随单元间的空间缩水而变得更加显著。上面结合图7描述的逐位MLC编程技术被设计以最小化来自沿着相同字线的单元的编程干扰。如可以从图7B看出,在两个编程遍中的第一遍中,单元的阈值被移动到阈值窗上的至多一半处。通过最后的一遍来超过第一遍的效果。在最后的一遍中,阈值仅被移动了全程的四分之一。换句话说,对于D2,在相邻单元之间的电荷差被限制到其最大值的四分之一。对于D3,在三遍的情况下,最后的一遍将限制电荷差到其最大值的八分之一。但是,将通过部分页编程来折衷逐位的多遍编程技术。一页是作为一个单元一起被编程的、通常沿行或字线的存储器单元的组。能够在多个编程遍上单独地编程一页的非覆盖部分。但是,由于不是页的所有单元在最终的一遍中一起被编程,因此其可以在完成该页之后在单元之间编程的电荷中产生大差别。因此,部分页编程将导致更多的编程干扰,且将需要用于感测准确性的更大的余量。在存储器被配置为二进制存储器的情况下,该操作的余量宽于MLC的余量。在优选实施例中,二进制存储器被配置以支持部分页编程,其中,可以在该页上的多个编程遍之一中单独地编程一页的非覆盖部分。可以通过用大尺寸的页进行操作来改善编程和读性能。但是,当页尺寸比主机的写单元(通常512字节的扇区)大得多时,其使用将是低效的。 使用比一页更精细的粒度进行操作允许这种页的更高效的使用。已经给出了在二进制相对MLC之间的例子。应该理解,通常,相同的原理应用于具有第一数量的级别的第一存储器和具有多于第一存储器的第二数量的级别的第二存储器之间。逻辑和物理块结构图8图示了通过存储器管理器管理的存储器,所述存储器管理器是驻留于控制器中的软件组件。存储器200被组织为块,每个单元的块是最小的擦除单位。取决于实施方式,存储器系统可以以将块集合形成为"元块"以及"巨大块"的大擦除单位来操作。为了方便,该描述将擦除单位称为元块,虽然,将理解,一些系统以通过元块集合形成诸如“ 巨大块"的擦除的更大单位来操作。主机80当在文件系统或操作系统下运行应用时访问存储器200。通常,主机系统以逻辑扇区为单位寻址数据,其中,例如,每个扇区可以包含512字节的数据。而且,主机通常以逻辑簇为单位从存储器系统读或向存储器系统写,其中每个簇由一个或多个逻辑扇区组成。在一些主机系统中,可以存在可选的主机侧存储器管理器以在主机处进行较低级存储器管理。在大多数情况下,在读或写操作期间,主机80实质上向存储器系统90发出命令, 来读或写包含具有连续地址的逻辑数据扇区的串的段。在存储器系统90的控制器100中实现存储器侧的存储器管理器300,来管理在闪存200的元块之间的主机逻辑扇区的数据的存储和检索。存储器管理器包括前端系统310 和后端系统320。前端系统310包括主机接口 312。后端系统320包括多个软件模块,用于管理元块的擦除、读和写操作。存储器管理器也维持在闪存200和控制器RAM 130之间的与其操作相关的系统控制数据和目录数据。图9图示了后端系统的软件模块。后端系统主要包括两个功能模块介质(media) 管理层330和数据流和排序层340。介质管理层330负责闪存元块结构中逻辑数据存储的组织。稍后将在关于"介质管理层"的部分中提供更多细节。数据流和排序层340负责在前端系统和闪存之间的数据扇区的排序和传输。该层包括命令排序器342、低级排序器344和快闪控制层346。稍后将在关于"低级系统说明" 的部分中提供更多细节。存储器管理器300优选地在控制器100中实现。其将从主机接收的逻辑地址翻译为存储器阵列内的逻辑地址,在该逻辑地址中实际地存储所述数据,然后其记录这些地址翻译。图10A(i)_10A(iii)示意性地图示在逻辑组和元块之间的映射。物理存储器的元块具有用于存储一个逻辑组的N个逻辑数据扇区的N个物理扇区。图10A(i)示出来自逻辑组LGi的数据,其中,所述逻辑扇区处于连续逻辑顺序0,1,...,N-1。图10A(ii)示出以相同逻辑顺序存储在元块中的相同数据。元块当以该方式存储时被称为"顺序的"。通常, 元块可以以不同顺序存储数据,在该情况下,该元块被称为"无序的"或"混乱的"。在逻辑组的最低地址和其所映射的元块的最低地址之间存在偏移。在该情况下, 逻辑扇区地址从元块的逻辑组的底部回到顶部环绕成环。例如,在图lOA(iii),该元块在其第一位置以逻辑扇区k的数据开始存储。当到达最后的逻辑扇区N-I时,其环绕到扇区 0,且最终在其最后的逻辑扇区中存储与逻辑扇区k-Ι相关的数据。在优选实施例中,使用页标签来标识任何偏移,诸如标识在元块的第一物理扇区中存储的数据的起始逻辑扇区地址。当两个块仅页标签而不同时,这两个块将被认为以相类似的顺序存储它们的逻辑扇区。图IOB示意性地图示在逻辑组和元块之间的映射。每个逻辑组380被映射到唯一的元块370,除了当前正更新其中的数据的少量逻辑组。在已经更新逻辑组之后,其可以被映射到不同的元块。在逻辑到物理目录的组中维持映射信息,这将稍后更详细描述。附属文件系统该部分呈现了对于使用双存储器堆的存储器系统使用附属文件系统。为了改善性能,控制器对于每个堆执行后端线程,且通过分离的接口与每个堆通信。这些堆之一具有用于管理存储器的主文件系统,但是,在附属文件系统中的其他堆中存储一些重要文件的拷贝。附属文件系统通过提供两个线程访问在正常系统操作期间需要的文件的拷贝、而不用线程需要仅依赖于主文件系统来改善性能。这些堆的每个可以由于一个或多个芯片来构成,或可以是可以在单个芯片上单独操作的半自动阵列;虽然在此对两个存储器堆和控制器的后端的对应数量的后端线程的情况进行讨论。也将在使用NAND类型架构的存储器阵列的存储卡的背景下给出以下的讨论,但是容易扩展至架构和非卡的用途,诸如嵌入式系统、SSD等。虽然以下讨论可以基于各种示例的实施例来提供具体例子,但是在此的技术和结构可以相当通常地应用于具有控制器和可以独立操作的多个堆的存储器系统,其中,这些堆包括可以用于存储控制器可以用来管理该存储器系统的系统数据的某个数量的非易失性存储器,不管是快闪的还是其他类型的。除了上述的其他之外,这些可以包括在以下 US专利、专利公开和申请号中呈现的各种存储器系统7,480,766 ;US-2005-0154819-A1 ; US-2007-0061581-A1 ;US-2007-0061597-A1 ;US-2007-0113030-A1 ;US-2008-0155178-A1 ; US-2008-0155228-A1 ;US-2008-0155176-A1 ;US-2008-0155177-A1 ;US-2008-0155227-A1 ; US-2008-0155175-A1 ;12/348,819 ;12/348,825 ;12/348,891 ;12/348,895 ;12/348,899 ; 和 61/142,620。图11是图示使用附属文件系统的示例的两堆实施例的相关元件中的一些的方框图。主机401连接到存储器系统403,其在该例子中具有控制器电路411和存储器堆BANK 0421-0和BANK 1421-1。该控制器通过主机接口 413与主机通信,且通过对应的接口 BANK INT 421与每个堆通信。在该固件控制中,控制器411对于每个堆执行前端部分415和后端线程417。在示例的实施例中,存在单个主机接口 413,且因此传输该数据的电路也是单个的。在前端线程413中的逻辑在控制器电路与后端固件线程017-0,417-1) —起运行,且为后端固件线程分配工作。该前端可以独立地向单个堆分配任务,或在这些堆之间分割任务,例如,对于大写命令,部分数据可以被写在一个堆中,且剩余部分被写在其他堆中,以通过并行来增加写性能。虽然未明显示出,在图11中,控制器将通常具有用于数据传输的一个大连续缓冲器,其然后对不同堆而逻辑地分离。当传输数据时,然后,意图用于特定堆的数据传输到其逻辑分离的缓冲器中。替换的实施例可以使用物理上不同的缓冲器。大量存储器系统对于存储器电路使用多个堆,以增加并行性,且因此增加性能。 这可以通过包括多个堆接口以及还通过包括用于每个堆的后端线程来进一步改善,如图 11所示。如图11所示,这通过向堆提供文件系统的拷贝来扩展,且主文件系统被保持在一个堆中(在此称为BANK 0421-0),附属拷贝被保持在其他堆中,由此允许每个后端线程 (417-0,417-1)在常规存储器操作期间独立地访问其自己的拷贝(分别在421-0,421-1 中)。(应该注意,虽然图11涉及固件控制,将理解,可以以硬件、软件、固件或这些的各种组合来实现各种功能,如在现有技术中熟悉的)通常,先前的布置将仅维持文件系统的单个拷贝(或单个活动的拷贝)。考虑双堆架构且包含具有对应的软件控制的两个硬件堆的情况,软件控制大部分可以并行执行。如果仅存储了所有文件系统信息的单个拷贝将存储在一个堆(例如堆0)上,仅堆0可以(直接)访问该信息。该文件系统将存储项目,诸如配置信息、固件微代码和覆盖代码。在系统中的各种模块访问文件系统来提取它们需要的信息。除了存储上述的物理链接信息的覆盖代码和链接表信息之外,在卡引导/通电/复位时间期间读取在文件系统中存储的所有信息。在该时间期间,仅堆0线程417-0是活动的,且因此没有竞争、性能降级或在两个块线程之间的死锁的问题;但是,在卡操作的随后的正常过程期间,覆盖和链接表信息需要由所有堆基于它们的个别需求而访问。在引导之后,一旦所有堆正在运行中,不具有文件系统信息的任何堆将需要中断堆0且请求堆0来获得需要的信息。该布置对该系统施加了各种风险。这些中的第一风险是,从文件系统寻找到的信息是连续的处理,且不是一次请求。定期地中断堆0将折衷该系统性能。其他是一个系统的结果,其中,通过两个(或更通常地所有)堆同时执行一些或所有主机请求。虽然任务可以在堆之间分割,但是这些堆是相互之间依赖的,且等待任务完成。堆0可以等待堆1在变为空闲之前完成其任务;但是,堆1可能需要访问文件系统,且因此中断和请求该堆0。这是死锁的情况,因为堆0将不能处理该请求,因为其等待堆1来完成主机操作。随后,对于其固件使用文件系统来存储非易失性控制信息的存储器系统,且当使用多个通道(或堆)来访问固件时,该文件系统的单个拷贝变为访问瓶颈。附属文件系统的引入通过建立由次级堆需要的文件系统的重要部分的只读拷贝来提供关于该问题的方式。 虽然这增加了需要被留出用于控制数据的非易失性存储器的量,且可用于用户数据的量相应地降低,在假定这种系统中的容量当前增加且持续增加的情况下,对于得到的性能改善, 这将是可接受的价格。因此,在此呈现的一个主要方面是在双或多堆系统中的第二或其他附加的堆上的某些文件的只读拷贝的建立和存储。附属文件系统是主文件系统的子集。在示例的实施例中,附属文件系统包含在标准的、后引导的操作过程中需要的所有文件,且仅主系统具有仅用于在卡引导/通电/复位时间期间使用的文件的拷贝,因为初始地仅一个堆在这些时间中操作。由于这些线程请求文件,文件系统模块可以基于堆来路由这些调用。返回到图11,维持附属文件系统通过在正常卡操作期间对所有堆引入这些堆需要的文件的拷贝来解决这些问题。因此,BANK 1421-1包括除了引导块和用户、或主机、数据以外的附属文件系统。除了引导块和用户数据以外,BANK 0421-0还具有主文件系统。一些重要文件的拷贝可以存储在其他堆中的特殊区域中,并且那些拷贝的位置信息存储在主文件系统中。为了改善系统可靠性,每个堆通常也将维持主或附属(如适当的话)文件系统的备份拷贝。然后,每个后端线程417-0和417-1对于使用文件系统的其各个拷贝的对应的堆执行其功能(读/操作、控制操作、各种后台和低级操作等,如在先前部分和各种引用文献中讨论的)。在优选实施例中,在低级卡格式化期间,特殊的附属文件系统区域在不包含文件系统的主拷贝的一个堆或多个堆中创建。只要主文件系统被写入了,则所需的文件被标识且拷贝到附属文件系统中。当拷贝时,附属文件的位置信息被存储在主文件系统目录中。在卡引导/通电/复位时间期间读取该文件系统目录,且可以由任何堆来访问该文件系统目录。当堆1线程417-1请求在特殊文件之一中包含的文件系统信息时,文件系统模块可以识别该请求,且从在BANK 1 421-1中的附属文件系统中存储的文件拷贝获取该信息。 其不中断BANK 0 421-0,其甚至不知道这种请求。类似主文件系统,附属文件系统优选地包含其包含的所有文件的两个拷贝,来提供容错。由于在附属文件系统中存储的信息是固定的且不随卡的寿命而改变,因此附属文件系统不允许对其包含的文件的任何更新。
15
图12描述根据示例实施例的在堆0中的主文件系统和在堆1中的附属文件系统的元素。这两个堆将具有引导块以及用户数据区域和各种其他控制数据,诸如在先前部分或引用的文献中讨论的。主和附属文件系统两者都具有在常规操作期间需要的文件、诸如链接表文件和各种覆盖文件。由于堆0是在引导处理期间初始活动的堆,因此主文件系统包含固件文件、覆盖文件、快闪RISC代码文件(其中该控制器通过该代码文件与存储器堆交互)、其控制RISC代码文件(这是用于与主机接口来传输数据的控制器)、链接表文件 (指定在存储器中的元块被如何逻辑链接)和各种配置文件。在该布置下,则该控制器能够独立地且同时地执行多个后端固件线程(软件线程),其中每个后端固件线程负责管理(执行)在其被分配的存储器堆上发生的读/写操作等。在示例实施例中,每个后端固件线程通过专用快闪RISC控制器(另一控制器电路,每个堆一个)向其存储器堆发出指令。针对覆盖,在引导期间,固件代码被加载到控制器电路的RAM区域中。由于该RAM 通常在尺寸上相对受限制,因此该系统通常以具有不能完全容纳到该RAM区域中的代码而结束。为了解决该问题,通常该代码被分为两个部分主代码,其需要总是存在于RAM中;以及覆盖代码,其可以按需要加载到RAM中和从RAM载出。该主代码被存储在称为固件文件的文件中,且覆盖代码被存储在覆盖文件中。主代码,由于其总是在RAM中可用,因此其在引导期间仅加载一次;但是,覆盖代码的部分可能在卡的正常执行期间被任何固件需要,且加载这种代码的需求是线程特有的,因此优选地在两个堆中存储该覆盖文件。已经为了例示和描述来呈现了本发明的前述的详细描述。不意图穷举或限制本发明为所公开的精确的形式。在上述教导下,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理及其实际的应用,从而使得本领域技术人员能够在各种实施例中且用适合于所构思的具体用途的各种修改最佳地使用本发明。意图本发明的范围被附于此的权利要求所定义。
权利要求
1.一种非易失性存储器系统,包括非易失性存储器电路,具有多个可独立操作的堆,每个堆包括一个或多个非易失性存储器阵列以存储用户数据和系统数据;以及控制器电路,管理在存储器电路上的用户的存储,包括多个堆接口,每个连接到相应的堆,以在控制器和对应的堆之间传输数据;处理电路,执行多个线程,每个线程独立且同时管理对应的一个堆,其中,所述堆中的第一堆存储包括文件系统的系统数据,通过所述文件系统,对应的线程管理第一堆,且其他堆中的每个存储包括文件系统的一部分的拷贝的系统数据,通过所述文件系统的一部分的拷贝,对应的线程管理该堆。
2.根据权利要求1的非易失性存储器系统,其中,所述处理电路包括每个线程的专用控制器,用于通过经由相应堆接口向对应的堆发出指令来管理对应的堆。
3.根据权利要求1的非易失性存储器系统,其中,所述文件系统的一部分的拷贝是只读拷贝。
4.根据权利要求1的非易失性存储器系统,其中,所述非易失性存储器阵列由物理擦除块构成,且其中,所述控制器管理使用逻辑上链接为合成结构的多个块的结构的存储器, 其中,所述文件系统和文件系统的所述部分都包括通过其构成合成结构的链接信息。
5.根据权利要求1的非易失性存储器系统,其中,所述文件系统和文件系统的所述部分都包括用于控制对应的堆的一个或多个覆盖文件。
6.根据权利要求1的非易失性存储器系统,其中,所述文件系统包括在引导处理中使用的、不包括在文件系统的所述部分中的信息。
7.根据权利要求6的非易失性存储器系统,其中,所述在引导处理中使用的、不包括在文件系统的所述部分中的信息包括固件文件。
8.根据权利要求7的非易失性存储器系统,其中,所述在引导处理中使用的、不包括在文件系统的所述部分中的信息还包括代码文件,用于通过线程来管理各堆且用于接口连接到存储器系统所附接到的主机。
9.根据权利要求1的非易失性存储器系统,其中,所述控制器还包括主机接口,以在存储器系统和非易失性存储器系统连接到的主机之间传输数据,且其中,所述处理电路还执行管理控制器和主机之间的交互的前端线程。
10.根据权利要求9的非易失性存储器系统,其中,所述前端线程为管理各堆的多个线程分配任务。
11.根据权利要求1的非易失性存储器系统,其中,所述堆中的第一堆存储文件系统的多个拷贝,且其他堆的每个存储文件系统的所述部分的拷贝。
12.—种操作非易失性存储器系统的方法,所述存储器系统包括具有多个可独立操作的堆的非易失性存储器电路以及管理在存储器电路上的用户的存储的控制器电路,所述方法包括在非易失性存储器中在堆中的第一堆上存储包括文件系统的系统数据;在非易失性存储器中在堆中的第二堆上存储包括文件系统的一部分的拷贝的系统数据;在控制器上执行第一线程,以根据所述文件系统来管理第一堆;以及与执行第一线程同时地,在控制器上执行第二线程以根据独立于在第一堆中存储的文件系统的、文件系统的拷贝来管理第二堆。
13.根据权利要求12的方法,其中,所述第一和第二线程的每个在各自的专用控制器上执行,且通过对应的堆接口分别与第一和第二堆通信。
14.根据权利要求12的方法,其中,所述文件系统的一部分的拷贝是只读拷贝。
15.根据权利要求12的方法,其中,所述非易失性存储器阵列由物理擦除块构成,且其中,所述控制器管理使用逻辑上链接为合成结构的多个块的结构的存储器,其中,所述文件系统和文件系统的所述部分都包括通过其构成合成结构的链接信息。
16.根据权利要求12的方法,其中,所述文件系统和文件系统的所述部分都包括用于控制对应的堆的一个或多个覆盖文件。
17.根据权利要求12的方法,还包括在控制器上执行第二线程之前,使用在第一堆上存储的文件系统中的、不包括在文件系统的所述部分中的信息来进行由第一线程执行的引导处理。
18.根据权利要求17的方法,其中,所述在引导处理中使用的、不包括在文件系统的所述部分中的信息包括固件文件。
19.根据权利要求17的方法,其中,所述在引导处理中使用的、不包括在文件系统的所述部分中的信息还包括代码文件,用于通过线程来管理各堆且用于接口连接到存储器系统所附接到的主机。
20.根据权利要求12的方法,其中,所述控制器还包括主机接口,以在存储器系统和非易失性存储器系统连接到的主机之间传输数据,所述方法还包括在控制器上执行管理控制器和主机之间的交互的前端线程。
21.根据权利要求20的方法,其中,所述前端线程为管理各堆的多个线程分配任务。
全文摘要
提供了一种多堆非易失性存储器系统。所述堆中的第一堆具有文件系统的主拷贝,且其他堆的每个具有文件系统的附属拷贝。控制器的后端固件对于每个堆执行线程。在引导处理之后,在正常存储器操作期间,每个线程可以使用其自己的文件系统的拷贝来操作,而不需要中断其他线程以便访问该文件系统。
文档编号G06F17/30GK102483685SQ201080036294
公开日2012年5月30日 申请日期2010年6月9日 优先权日2009年6月16日
发明者C.M.施罗特, S.拉杰戈帕兰 申请人:桑迪士克科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1