高速暂存区块转让专利

申请号 : CN200580042250.0

文献号 : CN101095121B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 艾伦·戴维·贝内特瑟吉·阿纳托利耶维奇·戈罗别茨

申请人 : 桑迪士克股份有限公司

摘要 :

在具有区块作为最小擦除单位的存储器阵列中,使用高速暂存区块来存储稍后写入到另一区块的数据。所述数据可以低并行度写入到所述高速暂存区块,且稍后以高并行度写入到另一位置,以使得其以高密度进行存储。数据可临时存储在所述高速暂存区块中,直到其可更有效地存储在其它地方为止。在接收到某些其它数据时也可如此。不相关的数据可存储在高速暂存区块的同一页面中。

权利要求 :

1.一种在具有区块作为最小擦除单位且页面作为最小编程单位的非易失性存储器阵列中存储可寻址数据单位的方法,其中页面含有一个或一个以上可寻址数据单位,页面含有小于区块的数据,所述方法包含:以第一并行度在第一区块中写入多个可寻址数据单位;

随后将所述多个可寻址数据单位复制到第二区块,在所述第二区块中,所述可寻址数据单位以具有高于所述第一并行度的第二并行度的写入操作进行写入;和随后将额外可寻址数据单位写入到所述第一区块,而所述第一区块含有所述多个可寻址数据单位。

2.根据权利要求1所述的方法,其中所述第一并行度小于对完整数据页面进行编程的并行性,且所述第二并行度是对完整数据页面进行编程的并行度。

3.根据权利要求1所述的方法,其中所述多个可寻址数据单位形成第一文件的一部分,所述部分小于一个数据页面,所述多个可寻址数据单位的随后复制与第二文件的一部分的编程并行,以使得所述第一文件的所述部分和所述第二文件的所述部分形成所述第二区块中的数据页面。

4.根据权利要求1所述的方法,其中所述第二区块含有多个多级单元,所述多个可寻址数据单位形成所述第一区块中的第一页面且与将第二数据页面写入到所述第二区块并行地被复制到所述第二区块,以使得所述第一页面和所述第二页面形成对所述多个多级单元进行编程的上层页面和下层页面。

5.根据权利要求1所述的方法,其中将所述多个可寻址数据单位与额外数据并行地写入到所述第二区块,以实现所述第二并行度。

6.一种将可寻址数据单位写入到非易失性存储器阵列中的多级单元的方法,所述存储器阵列具有区块作为擦除单位,多级单元具有对应于一个以上数据位的两个以上可能的编程状态,所述方法包含:从主机接收第一可寻址数据单位和第二可寻址数据单位;

将所述第一可寻址数据单位编程到第一区块和第二区块的多个多级单元;

在将所述第一可寻址数据单位保存在所述第一区块中的同时,根据所述第二数据单位的位对所述第二区块的所述多个多级单元进行编程,而不将所述第二可寻址数据单位编程到所述第一区块;和随后仅在检验到所述第二区块的所述多个多级单元被完全编程到反映所述第二数据单位的位的状态之后,才将所述第一区块中的所述第一可寻址数据单位标记为废弃。

7.根据权利要求6所述的方法,其中根据第二可寻址单位的位对所述第二区块的所述多个多级单元进行编程终止于中间阶段处,在所述中间阶段中,所述多级单元尚未达到反映所述第二数据单位的位的状态,但所述多级单元已从反映所述第一数据单位的位的状态进行修改,且随后从所述第一区块恢复所述第一数据单位的所述位。

8.根据权利要求6所述的方法,其中所述第一可寻址数据单位在第一时间被编程到所述第一区块,所述第一和第二可寻址数据单位随后在接收到所述第二可寻址数据单位的第二时间被编程到所述第二区块。

9.根据权利要求6所述的方法,其进一步包含在所述第一区块中的所有数据均被标记为废弃时,擦除所述第一区块。

10.一种在具有区块作为最小擦除单位且页面作为最小编程单位的非易失性存储器阵列中存储逻辑上不连续的可寻址数据单位的方法,所述方法包含:在第一区块的第一页面中存储第一至少一个可寻址数据单位;

在所述第一区块的所述第一页面中,与所述第一至少一个可寻址数据单位并行地存储第二至少一个可寻址数据单位,所述第二至少一个可寻址数据单位在逻辑上与所述第一至少一个可寻址数据单位不连续;

随后将所述第一至少一个可寻址数据单位复制到第二区块,且将所述第二至少一个可寻址数据单位复制到第三区块;和随后在所述第一区块保存所述第一至少一个可寻址数据单位和所述第二至少一个可寻址数据单位的同时,在所述第一区块中存储第三至少一个可寻址数据单位。

11.根据权利要求10所述的方法,其中所述第一至少一个可寻址数据单位包含主机数据,且所述第二至少一个可寻址数据单位包含控制数据。

12.根据权利要求10所述的方法,其中所述第一至少一个可寻址数据单位包含第一文件的多个逻辑上连续的可寻址主机数据单位,且所述第二至少一个可寻址数据单位包含第二文件的多个逻辑上连续的可寻址主机数据单位。

13.根据权利要求10所述的方法,其中将所述第三至少一个可寻址数据单位存储在所述第一区块的第二页面中,所述第三至少一个可寻址数据单位在逻辑上与所述第一和第二至少一个可寻址数据单位两者不连续。

14.根据权利要求13所述的方法,其中所述第一至少一个数据单位含有来自第一文件的数据,所述第二至少一个数据单位含有来自第二文件的数据,且所述第三至少一个数据单位含有来自第三文件的数据。

15.一种在将存储单元布置成擦除区块作为最小擦除单位的非易失性存储器阵列中存储数据的方法,其中若干擦除区块群组经链接以形成元区块,元页面是元区块的编程单位,所述方法包含:在第一元区块的第一元页面中存储第一数据扇区;

在所述第一元区块的至少一第二元页面中存储至少一第二扇区;

在接收到第三数据扇区时,将所述第一数据扇区、所述至少一第二数据扇区和所述第三数据扇区一起写入到第二元区块的元页面;和随后在所述第一元区块中存储第四数据扇区,而不从所述第一元区块擦除所述第一数据扇区和所述至少一第二数据扇区。

16.根据权利要求15所述的方法,其中经组合的所述第一数据扇区、所述至少一第二数据扇区和所述第三数据扇区形成完整的数据元页面。

17.根据权利要求15所述的方法,其中在将所述第一数据扇区、所述至少一第二数据扇区和所述第三数据扇区一起写入到所述第二元区块的元页面之后,不立即将所述第一元区块标记为废弃。

18.根据权利要求15所述的方法,其中将所述第一数据扇区从所述第一元页面复制到所述至少一第二元页面。

19.根据权利要求15所述的方法,其中所述第一数据扇区、所述至少一第二数据扇区和所述第三数据扇区形成所述第二元区块的元页面。

20.一种在将存储单元布置成擦除区块作为最小擦除单位的非易失性存储器阵列中存储数据的方法,其中页面是擦除区块的最小编程单位,所述方法包含:在第一擦除区块的第一页面中存储第一数据扇区;

在所述第一擦除区块的至少一个额外页面中存储至少一个额外扇区;

在接收到最终数据扇区时,将所述第一数据扇区、所述至少一个额外数据扇区和所述最终数据扇区一起写入到第二擦除区块的页面;和随后在所述第一擦除区块中存储第二数据扇区,而不从所述第一擦除区块擦除所述第一数据扇区和所述至少一个额外扇区。

21.根据权利要求20所述的方法,其中所述第一数据扇区、所述至少一个额外数据扇区和所述最终数据扇区一起完全填充所述第二擦除区块的所述页面。

说明书 :

技术领域

本发明一般来说涉及非易失性快闪存储系统的操作,且更具体地说,涉及在非易失性快闪存储器内对数据进行编程的更有效方法。

背景技术

当今正使用多种商业上成功的非易失性存储器产品,尤其是以小型化卡的形式,其使用形成于一个或一个以上集成电路芯片上的快闪EEPROM(电可擦除且可编程只读存储器)单元阵列。存储控制器(通常但未必位于单独集成电路芯片上)与主机介接,所述卡可移除地连接到所述主机,且所述存储控制器控制所述卡内的存储器阵列的操作。此类控制器通常包括微处理器、某一非易失性只读存储器(ROM)、易失性随机存取存储器(RAM)和一个或一个以上专用电路,例如在编程和读取数据期间当数据穿过控制器时从所述数据计算误差校正码(ECC)的电路。一些市售卡为CompactFlashTM(CF)卡、多媒体卡(MMC)、安全数字(SD)卡、个人标签(personal tag,P-Tag)和存储棒卡。主机包括个人计算机、笔记本计算机、个人数字助理(PDA)、各种数据通信装置、数码相机、蜂窝电话、便携式音频播放器、汽车音响系统和类似类型的设备。在某些系统中,可移除卡不包括控制器,且主机控制所述卡中存储器阵列的操作。此类型的存储系统的实例包括智能媒体卡(Smart Media card)和xD卡。因此,对存储器阵列的控制可由卡中控制器上的软件来实现或由主机中的控制软件来实现。除存储卡实施方案外,这种类型的存储器可替代地嵌入到各种类型的主机系统中。在可移除应用和嵌入式应用两者中,主机数据可根据存储器控制软件所实施的存储机制而存储在存储器阵列中。
两种常用存储单元阵列结构已找到商业应用,即或非和与非。在典型的或非阵列中,存储单元连接在相邻的位线源与在列方向上延伸的漏极扩散之间,其中控制栅极连接到沿单元的行延伸的字线。存储单元包括至少一个存储元件,所述存储元件定位在源极与漏极之间的单元通道区的至少一部分上方。存储元件上的已编程电荷电平因此控制所述单元的操作特征,接着可通过向所寻址的存储单元施加恰当电压来读取所述操作特征。此类单元、其在存储系统中的使用和制造所述单元的方法的实例在第5,070,032号、第5,095,344号、第5,313,421号、第5,315,541号、第5,343,063号、第5,661,053号和第6,222,762号美国专利中给出。这些专利连同此申请案中所参考的所有其它专利和专利申请案全文均以引用的方式并入本文中。
与非阵列利用两个以上存储单元(例如16或32个)的串联串,所述两个以上存储单元连同一个或一个以上选择晶体管连接在个别位线与参考电位之间以形成单元的列。字线越过这些列中的较大数目的列内的单元而延伸。在编程期间,通过使所述串中的剩余单元较难接通以使得流经串的电流依赖于存储在被寻址单元中的电荷的电平,来读取和检验列内的个别单元。与非结构阵列和其作为存储系统的一部分的操作的实例可参阅第5,570,315号、第5,774,397号、第6,046,935号和第6,522,580号美国专利。
如在前面参考的专利中所论述,当前快闪EEPROM阵列的电荷存储元件是最常见的导电浮动栅极,其通常由导电掺杂多晶硅材料形成.快闪EEPROM系统中可用的替代类型的存储单元利用非导电介电材料代替导电浮动栅极来以非易失性方式存储电荷.由氧化硅、氮化硅和氧化硅形成的三层电介质(ONO)夹在导电控制栅极与存储单元通道上方的半导电衬底的表面之间.通过将来自单元通道的电子注射到氮化物中来对所述单元进行编程,在所述氮化物中所述电子被俘获并存储在受限区中,且通过将热空穴注射到氮化物来擦除所述单元.在Harari等人的第2003/0109093号美国专利申请公开案中描述使用介电存储元件的若干特定单元结构和阵列.
如在几乎所有集成电路应用中那样,快闪EEPROM存储单元阵列还存在缩小实施某一集成电路功能所需要的硅衬底区域的压力。仍然需要增加可存储在硅衬底的给定区域中的数字数据的量,以便增加给定尺寸存储卡和其它类型封装的存储容量,或增加容量并减小尺寸。一种用以增加数据存储密度的方法是在每个存储单元和/或每个存储单位或元件中存储一个以上数据位。这通过将存储元件电荷电平电压范围的窗口划分为两个以上状态来完成。使用四个此类状态允许每个单元均存储两个数据位,八个状态在每个存储元件中存储三个数据位,等等。在第5,043,940号和第5,172,338号美国专利中描述使用浮动栅极的多状态快闪EEPROM结构和其操作,且在前述第2003/0109093号美国专利申请公开案中描述使用介电浮动栅极的结构。多状态存储单元阵列的选定部分还可出于多种原因而以第5,930,167号和第6,456,528号美国专利中描述的方式,以两种状态(二进制)进行操作,所述美国专利连同此申请案中所引用的所有专利和专利申请案全文以引用的方式并入本文中。
典型的快闪EEPROM阵列的存储单元被划分成一起擦除的离散单元区块(擦除区块)。也就是说,擦除区块是擦除单位,即可同时擦除的最小数目的单元。每一擦除区块通常存储一个或一个以上数据页面,所述页面是最小的编程和读取单位,尽管可在不同子阵列或平面中并行编程或读取一个以上页面。每个页面通常存储一个或一个以上数据扇区,其中扇区大小由主机系统界定。实例性扇区包括512个字节的用户数据,随后是由磁盘驱动器建立的标准,加上关于用户数据和/或其中存储用户数据的擦除区块的某一数目的字节的开销信息。此类存储器通常在每个擦除区块内配置有16个、32个或更多页面,且每个页面均存储一个或仅几个主机数据扇区。
为了增加将用户数据编程到存储器阵列中且从存储器阵列读取用户数据期间的并行度,通常将所述阵列划分为若干子阵列(通常称为平面),其含有其自己的数据寄存器和其它电路以允许并行操作,以使得可将若干数据扇区同时编程到若干或所有所述平面中的每一者或同时从若干或所有所述平面中的每一者读取若干数据扇区。可将单个集成电路上的阵列物理地划分成若干平面,或每个平面可由单独的一个或一个以上集成电路芯片形成。在第5,798,968号和第5,890,192号美国专利中描述此类存储器实施方案的实例。
为了进一步有效管理存储器,可将擦除区块链接在一起,以形成虚拟区块或元区块.也就是说,每个元区块均被界定为包括来自每个平面的一个擦除区块.在第6,763,424号美国专利中描述元区块的使用.元区块由主机逻辑区块地址标识为用于编码和读取数据的目的地.类似地,元区块的所有擦除区块被一起擦除.可以元页面为单位来对元区块进行编程,所述元页面包含来自元区块中每个擦除区块的一个页面.以此类大区块和/或元区块进行操作的存储系统中的控制器执行许多功能,包括从主机接收到的逻辑区块地址(LBA)与存储单元阵列内的物理区块编号(PBN)之间的转译.擦除区块内的个别页面通常由区块地址内的偏移量来标识.地址转译通常涉及使用逻辑区块编号(LBN)和逻辑页面的中间项.在使用元区块的存储系统中,元区块可以是存储器阵列的最小有效擦除单位.因此,视存储器结构而定,最小擦除单位(区块)可以是擦除区块或元区块.视结构而定,术语“区块”可指代擦除区块或元区块.类似地,术语“页面”可指代存储系统的最小编程单位.视存储系统的结构而定,术语“页面”可以是单个擦除区块内的页面或者可以是越过若干擦除区块而延伸的元页面.
存储在元区块中的数据通常得到更新,更新的可能性随着元区块的数据容量的增加而增加。通常将一个元区块的已更新扇区写入到另一元区块。作为同一编程操作的一部分,通常还将未改变的扇区从原始元区块复制到新的元区块,以合并所述数据。或者,未改变的数据可保留在原始元区块中,直到稍后与已更新数据再次合并到单个元区块中为止。用于将当前数据合并到新区块且擦除仅含有废弃数据的区块的操作通常被称为“垃圾收集(garbage collection)”操作。
通常用保存在已擦除区块池(erased block pool)中的某些额外区块来操作大区块或元区块系统。当正更新少于区块容量的一个或一个以上数据页面时,通常将已更新页面写入到来自所述池的已擦除区块,且接着将未改变页面的数据从原始区块复制到擦除池区块。在前述第6,763,424号美国专利中描述此项技术的变化。随着时间过去,由于主机数据文件被重新写入并更新,因而许多区块可在其页面中相对较少数目的页面含有有效数据且剩余页面含有不再是当前的数据的情况下结束。为了能够有效使用阵列的数据存储容量,逻辑上相关的有效数据的数据页面不时地从多个区块间的片段聚集在一起,且一起合并到较少数目的区块中。这个过程通常被命名为“垃圾收集”。
在一些存储系统中,物理存储单元还被分组成两个或两个以上区。区可以是物理存储器或存储系统的任何分割子集,指定范围的逻辑区块地址被映射到所述子集中。举例来说,可将能够存储64兆字节的数据的存储系统分割成四个区,每个区存储16兆字节的数据。接着将逻辑区块地址范围也划分为四个群组,一个群组被分配到所述四个区中每一者的物理区块。在典型实施方案中,逻辑区块地址受到限制,以使得每一者的数据永远不会写入在逻辑区块地址映射到其中的单个物理区的外部。在划分为若干平面(子阵列)(其每一者均具有其自己的寻址、编程和读取电路)的存储单元阵列中,每个区均优选地包括来自多个平面的区块,通常来自平面中每一者的区块的数目相同。区主要用于简化地址管理,例如逻辑到物理转译,从而导致转译表较小、保存这些表所需的RAM存储器较少且用以寻址当前有效存储区的存取时间较快,但由于其限制性本质可导致欠佳损耗均衡。
个别快闪EEPROM单元在代表一个或一个以上数据位的电荷存储元件或单位中存储一定量的电荷.存储元件的电荷电平控制其存储单元的阈值电压(通常标注为Vt),所述阈值电压被用作读取所述单元的存储状态的基础.阈值电压窗口通常被划分为许多范围,一个范围对应于存储单元的两个或两个以上存储状态中的每一者.这些范围由安全带分开,所述安全带包括允许确定个别单元的存储状态的标称感测电平.这些存储电平的确由于电荷干扰在相邻或其它相关存储单元、页面或区块中执行的编程、读取或擦除操作而发生移位.因此,误差校正码(ECC)通常由控制器来计算且与正被编程的主机数据一起存储,并在读取期间用于检验所述数据且在必要时执行某一等级的数据校正.而且,在干扰操作致使电荷电平完全从其界定范围移位出来且因此导致错误数据被读取之前,移位电荷电平可不时恢复到所述电荷电平的状态范围的中央.在第5,532,962号和第5,909,449号美国专利中描述这个过程,其被命名为数据刷新或清理.
在一些存储器阵列中,页面可由擦除区块中可保存多个数据扇区的一部分组成。一旦页面已被写入,不可能在不破坏已经写入的数据的情况下进行进一步写入。对于使用此类系统的存储器阵列来说,页面可由一组连接到同一字线的存储单元来界定。在接收到小于页面尺寸的量的数据的情况下,可低效地对此类存储器阵列进行编程。举例来说,在一次一个扇区地接收到数据的情况下,可仅将一个扇区编程到页面。在没有破坏已经保存在那里的数据扇区的风险的情况下,不可能将任何额外数据编程到页面。有时,可接收到一连串单个扇区,其中在所述扇区之间具有某一延迟。在此情况下,将每个扇区写入到存储器阵列的单独页面。因此,以低效地使用存储器阵列中的空间的方式来存储所述扇区。在使用多级逻辑的情况下,存储单元对于附近单元的稍后编程的影响特别敏感。另外,编程多级单元一般是通过用第一数据页面对单元群组进行编程且稍后用第二数据页面对所述单元进行编程来完成的。在某些情况下,对第二数据页面进行编程可造成对第一数据页面的破坏。因此,需要一种更有效的方法来在具有多扇区页面的存储器阵列接收到小于页面的量的数据时,在所述存储器阵列中存储数据。还需要一种用以在对多级单元群组进行编程时,防止在对随后页面进行编程期间破坏第一页面的数据的方法。

发明内容

在擦除单位为区块的存储器阵列中,可将一个或一个以上区块指定为高速暂存区块,且可将其用于改进存储系统的性能。高速暂存区块可作为缓冲器而操作,以使得数据以低并行度写入到高速暂存区块且接着以高并行度复制到所述存储器阵列内的另一位置。数据可在高速暂存区块中累积,直到所述数据可更有效地写入到另一位置为止。在具有多扇区页面的存储器中,扇区可累积,直到可使用所述系统的最大并行性来写入完整页面为止。在多级单元存储器中,下层页面可存储在高速暂存区块中,直到上层页面可用为止,以使得上层页面和下层页面被一起存储。
特定程序操作的并行度与一起被编程的数据位的数目成比例。因此,对较大量的数据一起进行编程被视作具有高并行性的写入,而对较小量的数据一起编程进行被视作低并行性。在使用小于一页面的并行性的情况下,浪费了存储器阵列中的空间,且此浪费的空间意味着必须更频繁地执行垃圾收集,从而不利地影响存储系统的效率。有时,较小量的数据必须存储在存储系统中。通过将这些小写入(small write)写入在一个位置(高速暂存区块)中,且稍后以较高并行性将所述小写入一起写入到另一位置,可改进存储系统的效率。
本发明揭示一种在具有由多个数据扇区组成的页面作为最小编程单位的存储系统中存储以少于一个页面的量接收的数据的方法.被指定为高速暂存区块的区块用于存储所接收到的扇区,直到可将完整的页面写入到快闪存储器阵列为止.第一扇区存储在高速暂存区块的第一页面中.随后接收到的扇区可存储在高速暂存区块的额外页面中.个别地接收到的扇区或扇区群组在被接收时保存在高速暂存区块的新页面中.来自高速暂存区块中其它页面的先前存储的扇区可连同新数据一起被复制到最新页面.因此,只要高速暂存区块的页面中存在少于完整页面的新数据,就在高速暂存区块中累积数据扇区.可以低于区块的最大可用并行性的并行度将扇区写入到高速暂存区块.可在将扇区存储在高速暂存区块中的同时更新所述扇区.当接收到导致完整数据页面可用于编程的新数据扇区时,可将所述新扇区和先前存储在高速暂存区块中的扇区一起编程到存储器阵列的另一区块中的同一页面.此页面完全由数据填充且以最大可用并行性进行写入.接着,可将存储在高速暂存区块中的数据标记为废弃,且可在适宜时间将其擦除.因此,更有效地使用了快闪存储器中的空间,且降低了垃圾收集操作的频率.
在具有多级单元的存储器中,高速暂存区块可存储还被写入到现用区块的数据页面。所存储的页面可保存在高速暂存区块中,直到接收到另一数据页面为止,以使得所述两个数据页面可一起写入到其在现用区块中的目的地。可使用高并行度将所述两个数据页面作为上层页面和下层页面一起写入,且这样做破坏数据的风险低于将所述两个数据页面单独写入时的风险。高速暂存区块还可用于在对相关联的上层页面进行编程期间保留先前编程的下层页面的副本,以使得在存在电力丧失的情况下,可从高速暂存区块恢复下层页面中的数据。
高速暂存区块可允许临时存储待写入到另一位置的数据。可在更新区块的数据扇区期间,将数据存储在高速暂存区块中。在区块内的页面含有来自不同文件的数据扇区的情况下,在更新任一区块时更新所述页面。使用常规方法来存储来自所述两个文件的已更新数据可能需要一个以上区块,因为可能需要多文件页面的两个副本。使用高速暂存区块允许存储来自一个文件的页面的一部分,直到(来自另一文件的)页面的剩余部分可用为止。接着,使用最大并行性将完整的已更新页面编程到其目的地。
高速暂存区块可含有不相关的数据扇区。主机数据扇区和控制数据扇区两者均可存储在高速暂存区块中。主机数据扇区和控制数据扇区两者均可存储在高速暂存区块内的同一页面中。来自两个不同文件或来自同一文件的逻辑上遥远部分的扇区可存储在高速暂存区块的同一页面中。这可允许以最大并行性来对高速暂存区块进行编程,以使得在接收数据时维持高速度。在以低速度接收数据的情况下,页面中的额外空间可由含有控制数据的扇区占用。这可允许较不频繁地更新控制数据结构,从而降低垃圾收集的频率。
高速暂存可由标记扇区来标识,以使得控制器可容易地识别所述高速暂存。存储在高速暂存区块中的数据的索引可保存在索引扇区中,所述索引扇区本身存储在高速暂存区块中。当将新扇区存储在高速暂存区块中时,通过用新索引扇区代替旧索引扇区来更新索引扇区。类似地,当将高速暂存区块中的扇区复制到其它位置时,可更新索引扇区来指示高速暂存区块中的这些扇区是废弃的。

附图说明

图1A和1B分别是一起操作的非易失性存储器和主机系统的方框图。
图2说明图1A的存储器阵列的第一实例性组织。
图3展示存储在图1A的存储器阵列中的具有开销数据的实例性主机数据扇区。
图4说明图1A的存储器阵列的第二实例性组织。
图5说明图1A的存储器阵列的第三实例性组织。
图6展示图1A的存储器阵列的第三实例性组织的扩展。
图7是在一个特定配置中的图1A的阵列的存储单元群组的电路图。
图8展示存储器阵列(例如图1A的存储器阵列)的区块中的数据扇区的存储。
图9展示存储器阵列(例如图1A的存储器阵列)的区块中的数据扇区的替代性存储。
图10A展示在垃圾收集操作期间在复制到另一区块之后的图8或9的数据扇区。
图10B展示在第二垃圾收集操作期间在复制到另一区块之后的图10A的数据扇区。
图10C展示在接收到更多数据扇区之后的图10B的区块。
图11A展示使用两个擦除区块(现用区块和高速暂存区块)来存储图10A和10B的数据扇区的替代性存储布置。
图11B展示使用两个元区块(现用区块和高速暂存区块)来存储图10A和10B的数据扇区的替代性存储布置。
图12A展示两个区块(现用区块和高速暂存区块),其用于存储数据扇区,以使得可在存储的同时更新所述数据扇区,而不触发垃圾收集操作。
图12B展示图12A的存储系统的替代性存储系统,其允许页面的所有扇区均在存储的同时得到更新,而不触发垃圾收集。
图13展示用于在多级单元中存储两个数据位的四个阈值电压范围。
图14展示两个具有多级单元的区块(现用区块和高速暂存区块),其中所述高速暂存区块保存现用区块的下层页面的副本。
图15展示来自存储在区块中的两个文件的数据扇区和在更新所述两个文件时随后存储所述数据扇区需要存储器阵列中一个以上区块的空间。
图16展示更新图15的数据扇区的替代性系统,其中在将一些扇区复制到现用区块之前,高速暂存区块存储所述扇区。
图17展示在同一页面中存储不相关数据扇区的高速暂存区块和随后将此数据复制到不同位置。
图18展示存储经历多次更新的不相关数据扇区的高速暂存区块。
图19展示由标记扇区标识的高速暂存区块。
图20展示存储扇区群组和索引扇区的图19的高速暂存区块。
图21展示存储第二扇区群组和取代第一索引扇区的第二索引扇区的图20的高速暂存区块。
图22展示存储第三扇区群组和取代第二索引扇区的第三索引扇区的图21的高速暂存区块。
图23展示具有在将群组复制到另一区块时取代第三索引扇区的第四索引扇区的图22的高速暂存区块。

具体实施方式

存储器结构和其操作
首先参照图1A,快闪存储器包括存储单元阵列和控制器.在所示实例中,两个集成电路装置(芯片)11和13包括存储单元阵列15和各种逻辑电路17.所述逻辑电路17通过数据、命令和状态电路与单独芯片上的控制器19介接,且还向阵列13提供寻址、数据传送和感测以及其它支持.存储器阵列芯片的数目可从一到许多,视所提供的存储容量而定.控制器和部分或整个阵列可替代性地组合到单个集成电路芯片上,但这在当前不是经济的替代方案.
典型的控制器19包括微处理器21、主要用于存储固件的只读存储器(ROM)23和主要用于临时存储写入到存储器芯片11和13或从存储器芯片11和13读取的用户数据的缓冲存储器(RAM)25。电路27与存储器阵列芯片介接,且电路29通过连接31而与主机介接。在此实例中,通过用电路33计算ECC来确定数据的完整性,所述电路33专用于计算代码。当将用户数据从主机传送到快闪存储器阵列以供存储时,所述电路从所述数据计算ECC,且将所述代码存储在存储器中。当稍后从存储器读取所述用户数据时,所述用户数据再次经过电路33,所述电路33通过同一算法来计算ECC,并将所述代码与使用所述数据计算并与所述数据一起存储的那个代码进行比较。如果它们匹配,那么数据的完整性得到证实。如果它们不同,那么视所利用的特定ECC算法而定,可识别并校正那些错误的位(至多达由所述算法支持的数目)。
图1A的存储器的连接31与主机系统的连接31′紧密配合,所述连接31′的实例在图1B中给出。主机与图1A的存储器之间的数据传送是通过接口电路35的。典型的主机也包括微处理器37、用于存储固件代码的ROM 39和RAM 41。其它电路和子系统43通常包括高容量磁性数据存储盘驱动器(high capacity magnetic data storage disk drive),用于键盘、监视器和类似物的接口电路(视特定主机系统而定)。此类主机的一些实例包括桌上型计算机、膝上型计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、MP3和其它音频播放器、数码相机、摄像机、电子游戏机、无线和有线电话装置、应答机、录音机、网路路由器和其它装置。
图1A的存储器可实施为具有可移除地与图1B的主机连接的形式的小型封闭式卡,其含有控制器和所有其存储器阵列电路装置。也就是说,配合连接31和31′允许将卡分离并移到另一主机,或通过将另一卡连接到主机来代替所述卡。或者,存储器阵列装置可封闭在单独卡中,所述单独卡可与含有控制器和连接31的卡进行电连接和机械连接。作为另一替代方案,图1A的存储器可嵌入在图1B的主机内,其中可永久获得连接31和31′。在此情况下,存储器通常连同其它组件包含在主机的外壳内。
图2说明存储器阵列的一部分,其中存储单元被分组成若干擦除区块,作为单个擦除操作的一部分,每个擦除区块中的单元可一起被擦除(通常是同时的)。在此类型的存储器中,擦除区块是最小擦除单位。
图2的个别存储单元擦除区块的大小可变化,但一种商业上实践的形式在个别擦除区块中包括单个数据扇区。图3中说明此类数据扇区的内容。用户数据51通常是512个字节。除用户数据51之外还有开销数据,所述开销数据包括从用户数据计算得出的ECC 53、与扇区数据和/或擦除区块(在所述擦除区块中对扇区进行编程)相关的参数55和从所述参数55计算得出的ECC 57,以及可能包括在内的任何其它开销数据。
还可在参数55中包括一个或一个以上旗标,所述旗标指示状况或状态.用于编程和/或擦除所述擦除区块的电压电平的指示也可存储在参数55内,将这些电压更新为由擦除区块经历的循环的数目,且其它因数发生变化.参数55的其它实例包括擦除区块内任何有缺陷单元的标识、映射到此物理擦除区块中的所述擦除区块的逻辑地址和在主要擦除区块有缺陷的情况下任何替代擦除区块的地址.任何存储系统中所使用的参数55的特定组合将根据设计而变化.而且,所述开销数据中的一些或所有可存储在专用于此类功能的擦除区块中,而并非存储在含有用户数据或开销数据所属于的擦除区块中.
与图2的单数据扇区擦除区块不同的是图4的多扇区擦除块。实例性擦除区块59(仍然是最小擦除单位)含有四个页面0-3,所述页面中的每一者均为最小编程单位。每个页面中存储一个或一个以上主机数据扇区,通常连同至少包括从所述扇区的数据计算得出的ECC的开销数据,且所述主机数据扇区可具有图3的数据扇区的形式。
重新写入整个区块的数据通常涉及将新数据编程到擦除区块池的区块中,接着将原始区块擦除并放置在擦除池中。当更新少于区块的所有页面的数据时,通常将已更新数据存储在来自己擦除区块池的区块的页面中,且将剩余的未改变页面中的数据从原始区块复制到新区块中。接着擦除原始区块。此大区块管理技术的变化包括将已更新数据写入到另一区块的页面中,而不从原始区块移动数据或将数据擦除。这导致多个页面具有同一逻辑地址。最新近的数据页面由某一适宜技术(例如记录为扇区或页面开销数据中的字段的编程时间)来标识。
图5中说明另一多扇区区块布置。此处,整个存储单元阵列在物理上被划分为两个或两个以上平面(以四个平面0-3进行说明)。每个平面均为存储单元的子阵列,其具有其自己的数据寄存器、感测放大器、寻址解码器和类似物,以便能够在很大程度上独立于其它平面而进行操作。所有平面均可提供在单个集成电路装置上或多个装置上,实例是由一个或一个以上不同集成电路装置形成每个平面。图5的实例性系统中的每个区块均含有16个页面P0-P15,每个页面均具有一个、两个或更多主机数据扇区和某些开销数据的容量。
图6中说明又一存储单元布置。每个平面均含有较大数目的擦除单元区块。为了增加操作的并行度,不同平面内的擦除区块在逻辑上进行链接以形成元区块。图6中将一个此类元区块说明为由平面0的擦除区块3、平面1的擦除区块1、平面2的擦除区块1和平面3的擦除区块2形成。每个元区块均可在逻辑上进行寻址,且存储控制器分配并跟踪形成个别元区块的擦除区块。主机系统优选以等于个别元区块的容量的数据为单位与存储系统介接。举例来说,图6的此类逻辑数据区块61由逻辑区块地址(LBA)标识,所述LBA由控制器映射成组成元区块的区块的物理区块编号(PBN)。元区块的所有擦除区块一起被擦除,且优选地同时编程和读取来自每个擦除区块的页面。元区块可被视作系统中的擦除单位,在所述系统中,擦除区块以此方式链接。在具有元区块结构的某些存储阵列中,页面仅可与所述元区块的其它页面并行而进行编程。在这些存储阵列中,元页面是元区块的最小编程单位,所述元页面由来自所述元区块的每个平面的页面组成。
存在多种可用于实施上文相对于图2-6描述的存储器的不同存储器阵列结构、配置和特定单元结构.图7中展示与非型存储器阵列的一个擦除区块.串联连接的存储单元的较大数目的列导向串连接在电压Vss的共用源65与位线BL0-BLN中的一者之间,所述位线BL0-BLN又与电路67连接,所述电路67含有地址解码器、驱动器、读取感测放大器和类似物.具体地说,一个此类串含有串联连接在位于所述串的相对端的选择晶体管77与79之间的电荷存储晶体管70、71……72和74.在此实例中,每个串均含有16个存储晶体管,但其它数目也是可能的.字线WL0-WL15越过每个串的一个存储晶体管而延伸,且连接到电路81,其含有字线的地址解码器和电压源驱动器.线83和84上的电压对通过其选择晶体管将擦除区块中的所有串一起连接到电压源65和/或位线BL0-BLN进行控制.数据和地址来自存储控制器.
擦除区块的每个电荷存储晶体管(存储单元)行均可形成一起编程和读取的页面。可将恰当电压施加到此类页面的字线(WL)以用于编程或读取其数据,而选择施加到剩余字线的电压来使其各自的存储晶体管变得导电。在编程或读取一个存储晶体管行(页面)的过程中,由于越过所有串而施加且施加到其字线的电压的缘故,未选择的行上的先前存储的电荷电平可能受到干扰。这可防止在特定行中的其它单元已被编程之后对所述行的某些单元进行编程。多状态快闪存储器对于干扰特别敏感。逻辑状态的数目增加导致针对个别状态的阈值电压范围较窄,以使得电荷电平的较小变化可产生逻辑状态的变化。随着数据存储密度通过在单元中使用增加数目的逻辑状态而增加,对干扰的敏感性增加。因此,不可能在一行中的其它单元被编程之后将数据编程到所述行中的某些单元,而不破坏已编程单元中的数据。因此,由随后对相邻单元进行编程引起的干扰可界定页面大小。如果一行中的单元不能在对同一行中其它单元进行编程之后被编程,那么所述行界定最小编程单位。因此,一单元行可含有一个数据页面。在此类存储器阵列中,如果一行中的一组单元被编程,那么所述行被视作已编程的,即使所述行中的某些单元不含有任何数据。在存储器阵列中具有不能随后被编程的空白单元是低效的。
已编程页面中的空白单元可由存储系统同时接收较小数目的扇区引起。举例来说,单个扇区可由主机发送到存储系统。所述扇区存储在快闪存储器阵列的页面中。所述扇区阻止对所述页面的随后写入。在一页面保存多个扇区的存储系统中,这可能是低效的。举例来说,在一页面包含四个数据扇区的情况下,在将单个扇区写入到所述页面时,使存储器阵列中能保存三个数据扇区的一部分保持空白。随着页面尺寸增加,来自此类部分填充的页面的浪费空间也增加。元页面可含有大量的扇区,所以存储可能在使用元区块的存储器阵列中特别低效。在接收到两个或两个以上扇区但接收到的扇区的数目小于页面中扇区的数目的情况下,具有类似问题。此类部分页面可存储在高速暂存区块中,直到接收到完整数据页面为止。
在写入经部分填充的数据页面之后,可实施已存储数据的合并,以将来自部分填充的页面的数据组合到已填充页面中。这可作为周期性实施的垃圾收集的一部分来完成。此类数据合并将数据从部分填充的页面复制到位于不同擦除区块中的完整页面。接着,将保存部分填充的页面的擦除区块标记为废弃,以使得所述擦除区块可被擦除并重新使用。此类操作可采用能用于其它功能的系统资源。
对存储器的单扇区写入的实例
图8展示存储系统中的存储器阵列的擦除区块(指定为现用区块800),其中页面由四个数据扇区组成.图中将页面0-5展示为每一者均在水平方向上延伸.每个页面均可含有指定为扇区0、扇区1、扇区2和扇区3的四个数据扇区.主机将单数据扇区发送到存储系统,所述数据扇区存储在现用区块800中.接收扇区X且将其存储为页面0的扇区0.这防止随后对页面0进行编程.因此,页面0的扇区1、2和3不被编程且保持空白(擦除).在对页面0进行编程之后,接收扇区X+1.将扇区X+1存储为页面1的扇区0.页面1的扇区1、2和3保持空白.在对扇区X+1进行编程之后,接收扇区X+2.将扇区X+2存储为页面2的扇区0.页面2的扇区1、2和3保持空白.在对扇区X+2进行编程之后,接收扇区X+3.将扇区X+3存储为页面3的扇区0.页面3的扇区1、2和3保持空白.
图9展示在擦除区块(指定现用区块900)中存储扇区的替代性方法。此处,代替每个页面仅存储一个扇区,将先前存储的扇区复制到同一擦除区块中的新页面,在所述新页面中,先前存储的扇区与更新近接收到的扇区一起存储。如前所述,将扇区X存储为页面0的扇区0。接着,接收扇区X+1并将其存储为页面1的扇区1,其中将扇区X从页面0复制到页面1的扇区0。因此,扇区X和扇区X+1两者均存储在页面1中。随后,接收扇区X+2并将其存储为页面2的扇区2。将扇区X存储为页面2的扇区0,且将扇区X+1存储为页面2的扇区1。因此,扇区X、X+1和X+2一起存储在页面2中。随后,接收扇区X+3并将其存储为页面3的扇区3。将扇区X存储为页面3的扇区0,将扇区X+1存储为页面3的扇区1,且将扇区X+2存储为页面3的扇区2。因此,四个数据扇区均存储在页面3中,以使得页面3完全由数据填充。
在图8中或图9中所示的扇区存储之后,可对数据进行合并。可将图8或图9的扇区X、X+1、X+2和X+3复制到新擦除区块的单个页面。这可在适宜时间作为垃圾收集的一部分来完成。图10A展示存储在指定现用区块100的页面0中的扇区X、X+1、X+2和X+3。擦除区块1000的页面0由数据填充。当现用区块1100的页面0经编程而具有扇区X、X+1、X+2和X+3时,可从从中复制扇区X、X+1、X+2和X+3的擦除区块中擦除扇区X、X+1、X+2和X+3。当现用区块800、900的内容在垃圾收集期间进行合并时,可擦除现用区块800、900并使其可用于存储新数据。
在对页面0进行编程之后,接收扇区X+4并将其存储为现用区块1000的页面1的扇区0。接着,个别地接收扇区X+5、X+6和X+7并分别将其存储在页面2、3和4中。可能再次需要合并扇区,以将扇区X+4、X+5、X+6和X+7合并到单个页面。此类扇区合并在不能写入主机数据期间进行。在第二次将数据合并到另一擦除区块之后,将从中复制所述数据的擦除区块1000标记为废弃且随后可将其擦除。
图10B展示在第二次垃圾收集操作使来自先前现用区块1000的数据重新定位之后的现用区块1010。扇区X+4到X+7被合并到现用区块1010的单个页面(页面1)中。随后,可接收更多扇区且可将其存储在现用区块1010中。如果以单扇区的形式接收此类扇区,那么如前所述,可在一页面中存储单个扇区。
图10C展示现用区块1010,其中额外扇区X+8到X+11存储在页面2-5中。此时,可能需要另一垃圾收集操作来合并扇区X+8到X+11。因此,为了将从主机接收到的扇区作为单扇区进行有效存储,此方法使用多个垃圾收集操作,所述垃圾收集操作需要将数据从一个擦除区块传送到另一擦除区块,且擦除所述第一擦除区块。在更大擦除区块中,垃圾收集操作的数目更大。在使用元区块的存储系统中,一组擦除区块可经链接以使得其可一起擦除且一起编程。可在含有许多扇区的元页面中对数据进行编程。因此,由于所必需的垃圾收集的量的缘故,存储单扇区变得非常低效。
图11A展示存储数据的替代性方法.图11A展示存储器阵列的两个擦除区块.现用区块1110是数据可在其中编程以供长期存储的擦除区块.高速暂存区块1120是数据可在其中编程以供短期存储的擦除区块.当接收到小数目的扇区时,首先将其存储在高速暂存区块1120中.扇区继续被存储在高速暂存区块1120中,直到接收到足够扇区来填充数据页面为止.接着将这些扇区复制到现用区块1110的页面.
如前所述,接收扇区X并将其编程为高速暂存区块1120中的页面0的扇区0。随后,接收扇区X+1并将其存储为高速暂存区块1120的页面1的扇区1,其中将扇区X复制到页面1的扇区0。随后,接收扇区X+2并将其存储为高速暂存区块1120的页面2的扇区2,其中分别将扇区X和X+1存储为页面2的扇区0和扇区1。在将扇区X+2存储在高速暂存区块1120中之后,接收扇区X+3。此时,将扇区X、X+1、X+2和X+3写入到现用区块1110的页面0。这四个扇区形成完整的数据页面。因此,可有效地将扇区X、X+1、X+2和X+3存储在现用区块1110的页面0中。随后,个别地接收扇区X+4、X+5、X+6和X+7。将扇区X+4、X+5和X+6存储在高速暂存区块1120的页面3、4和5中,且在接收到扇区X+7时将扇区X+4、X+5和X+6复制到现用区块1110的页面1的扇区0、1和2。将扇区X+7直接编程到现用区块1110的页面1的扇区3。此时,高速暂存区块1120没有任何可用页面来存储数据,且可被指定为准备擦除(废弃)。可将新的擦除区块指定为用于待接收的下一扇区或扇区群组的高速暂存区块。尽管此实例展示接收单扇区,但此方法还可用于扇区群组,其中所述扇区群组具有少于页面中扇区数目的扇区。而且,尽管以上实例展示以最大并行性将来自高速暂存区块的数据写入到现用区块,但此类写入可以小于最大并行性的并行性来完成且仍然提供效率益处。因此,以一个并行度将扇区写入到高速暂存区块且随后以较高并行度将所述扇区写入到另一区块,以使得数据被更密集地压缩且不需要频繁的垃圾收集。
高速暂存区块还可用于使用元区块的存储器阵列。举例来说,图11B展示两个元区块,即现用区块1130和高速暂存区块1140。现用区块1130和高速暂存区块1140两者均具有四个平面(指示为平面0-3)。每个平面的宽度均为一个扇区,所以在区块1130或1140的元页面中存储四个扇区。两个区块均具有6个元页面(指示为元页面0-5)。用于有效地存储数据的技术与上文相对于擦除区块而描述的技术相同。在高速暂存区块1140中累积扇区,直到完整的数据元页面可用为止,此时将完整元页面编程到现用区块1130。举例来说,当接收到扇区X+3时,将完整元页面(扇区X、X+1、X+2和X+3)编程到现用区块1130的元页面0。元页面可具有大数目的扇区,因为元区块可具有许多平面,且平面的宽度可为若干页面。由于存储器阵列中原本会浪费的大量空间的缘故,上文所述的技术对于此类大元页面来说特别有价值。如相对于图11A和11B所示,相对于使用擦除区块结构的实例而描述的本发明的各方面还可应用于元区块结构,且反之亦然。视存储器阵列的配置而定,术语“区块”可指示擦除区块或元区块。在任一情况下,区块均为所述配置中所使用的擦除单位。类似地,术语“页面”可指代单个擦除区块内的页面或元区块的元页面。在任一情况下,页面均为所述配置的编程单位。
在接收到具有多于页面中扇区数目的扇区群组时,可将扇区直接编程到存储器阵列的现用区块,而无需首先将其存储在高速暂存区块中。因此,可以高并行度将完整数据页面直接编程到现用区块,而以低并行度将部分数据页面编程到高速暂存区块,直到其可作为完整页面程序的一部分写入到现用区块为止。控制器可确定特定扇区或扇区群组的目的地。在将扇区群组写入到现用区块将包括部分页面和完整页面写入两者的情况下,可将完整页面写入到现用区块,且可将部分页面写入到高速暂存区块。
图12A展示来自主机的扇区在存储于高速暂存区块中时得到更新的另一实例。接收第一扇区X0并将其存储在高速暂存区块1250的页面0中.此实例中的页面存储四个数据扇区.接着,接收X0的代替物(展示为X1)。此实例中的扇区根据其逻辑地址来编号,其中下标指示所述扇区是否为更新物,且如果是,哪种型式。因此,扇区X1是具有逻辑地址X的扇区,且是此扇区的第一更新型式。这是与X0具有相同逻辑地址的数据扇区,但可能含有反映某更新信息的不同数据。将扇区X1写入到高速暂存区块1250的页面1。控制器跟踪哪些扇区是当前的且哪些是废弃的。在高速暂存区块1250中,具有特定逻辑地址的扇区的最新近写入副本是当前型式。任何其它型式均是废弃的。因此,在对X1进行编程时,X0变为废弃的。在接收到扇区X1之后,接收扇区(X+1)0。这是在逻辑上与扇区X1连续的扇区。扇区X1和(X+1)0两者均被写入到页面2。随后,扇区(X+1)0由(X+1)1代替。这是代替扇区(X+1)0的扇区(X+1)0的更新型式。将扇区(X+1)1连同扇区X1写入到页面3。随后,接收扇区(X+2)0并将其写入到页面4。扇区(X+2)0随后由扇区(X+2)1代替,且连同扇区X1和(X+1)1写入到页面5。随后,接收扇区(X+3)0。因此,数据页面(扇区X1、(X+1)1、(X+2)1和(X+3)0)可用。将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到指定为现用区块1252的区块。以完整页面写入的并行性将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到现用区块1252。在此情况下,所述并行性为最大可能并行性。因此,即使已以低并行度将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到高速暂存区块1250,它们也随后以高并行度写入到现用区块1252。这意味着扇区X1、(X+1)1、(X+2)1和(X+3)0被更有效地存储在现用区块中。更有效存储可导致较不需要频繁地进行垃圾收集,从而改进性能。
图12B中提供替代性实例。此实例类似于图12A中所示的实例,但此处扇区(X+3)0在复制到现用区块1252之前被存储在高速暂存区块1250中。这允许扇区(X+3)0在写入到现用区块1252之前得到更新。扇区(X+3)0被展示为通过由扇区(X+3)1代替来得到更新。完整的数据页面(扇区X1、(X+1)1、(X+2)1和(X+3)1)可保存在高速暂存区块1250中,准备被更新,直到某触发事件为止。在此情况下,接收扇区(X+4)0,从而提供触发事件。此时,以最大并行性将扇区X1、(X+1)1、(X+2)1和(X+3)1写入到现用区块1252。将扇区(X+4)0写入到高速暂存区块1250中的下一可用页面(页面8)。
图12C展示使用高速暂存区块1250更新数据的另一实例。将数据扇区X0到(X+15)0存储在原始区块1254中。主机发送扇区(X+6)1,其是与扇区(X+6)0具有同一逻辑地址的已更新扇区。因此,扇区(X+6)1将代替(X+6)0。为了代替扇区(X+6)0,原始区块1254的页面1(含有扇区(X+4)0到(X+7)0)与扇区(X+6)1组合,且将所述组合写入到高速暂存区块1250的页面0。组合这些扇区可发生在随机存取存储器(例如控制器随机存取存储器(controller ram)25)中或可在连接到存储器阵列的存储器寄存器中完成。可将已更新页面数据保存在高速暂存区块1250中而不将其写入到现用区块持续某段时间。在从主机接收到随后更新的扇区(X+5)1的情况下,可通过将扇区(X+5)1连同复制的扇区(X+4)0、(X+6)1和(X+7)0写入到高速暂存区块1250的另一页面(在此情况下,页面1)来在高速暂存区块1250中更新数据。可以此方式来执行高速暂存区块1250中的数据页面的多次更新。通过在高速暂存区块1250的新页面中代替已更新的数据扇区且复制未改变的数据扇区来进行更新。所复制的扇区在同一平面内复制,以使得可有效地执行复制。随后,可将已更新的数据页面复制到存储器阵列中的现用区块1252。可以此方式执行非连续更新,而不需要混乱的更新区块。举例来说,在以上实例中以非连续方式接收已更新的扇区(X+6)1和(X+5)1,但现用区块1252是连续的.可以此方式在高速暂存区块中同时保存和更新多个数据页面.可在不再希望更新页面时,将所述页面复制到现用区块.
多级单元编程的实例
某些种类的存储器可通过将浮动栅极存储单元的阈值电压范围划分为两个以上等级来在存储器阵列的每个单元中存储一个以上数据位。图13展示可如何对此类多级单元(MLC)存储器进行编程以提供表示不同逻辑状态的多个阈值电压的实例。展示四个不同阈值电压,标记为A、B、C和D。可将多个单元编程到每个电压。图13代表单元状态的分布,其中在垂直轴上表示单元的数目。每个阈值电压A、B、C和D均代表不同的逻辑状态。所述四个状态代表两个数据位,即来自下层数据页面的一个位和来自上层数据页面的一个位,如所指示。在某些实例中,可首先对所述下层页面进行编程。在对下层页面进行编程之后,单元处于状态A或B中。随后,可对所述上层页面进行编程,以使得单元保持在状态A或B中(上层位=1)或被修改为状态C或D(上层位=0)。因为这四个状态每一者均具有相对较窄的电压窗口,所以MLC存储器特别容易由于阈值电压中的相对的较小变化而受到数据破坏。在某些实例中,同时对下层页面和上层页面两者进行编程可能是有利的。这可帮助降低单元中由对邻近单元进行编程而造成的数据破坏,所述数据破坏(例如)可能在对上层页面数据进行编程期间发生。
图14展示可如何使用高速暂存区块1460来降低MLC存储器中的数据破坏的实例。图14展示现用区块1462和高速暂存区块1460两者,作为MLC存储器的区块。两个区块的页面均被编号且展示为“上层”或“下层”,视使用哪些阈值电压状态来存储所述页面的数据位而定。在此实例中,存储器首先接收扇区X到X+3,并将这些扇区存储在高速暂存区块1460的下层页面0中。随后,存储器接收扇区X+4到X+7。此时,将下层页面(扇区X到X+3)和上层页面(X+4到X+7)两者同时写入到现用区块1462。这可避免在对现用区块1462的上层页面0进行编程期间破坏现用区块1462的下层页面0。通常,对上层页面和下层页面一起进行编程所必需的时间与单独对上层页面进行编程所必需的时间相同,以使得此系统不具有时间损失。在用扇区X到X+7对现用区块1462的下层页面0和上层页面0进行编程之后,接收扇区X+8到X+11并将其编程到高速暂存区块1460的上层页面0。当接收到扇区X+12到X+15时,扇区X+8到X+11和扇区X+12到X+15与现用区块的上层页面1和下层页面1并行编程。此系统继续用于随后的数据扇区,如图所示。因此,将数据页面写入到高速暂存区块1460,且随后将此页面连同额外页面写入到现用区块1462,作为同一存储单元群组的上层页面和下层页面。到高速暂存区块1460的编程可以页面的并行性来发生,而到现用区块1462的编程以页面并行性的两倍来进行。
在替代性实施例中,可在不同时间将上层页面和下层页面写入到现用区块,但在现用区块中的下层页面在对上层页面进行编程期间受到破坏的情况下,将下层页面的副本保存在高速暂存区块中.在图14中,可接收扇区X到X+3并同时将其编程到现用区块1462的下层页面0和高速暂存区块1460的下层页面0两者.随后,接收扇区X+4到X+7并将其编程到现用区块1462的上层页面0.不将扇区X+4到X+7保存在高速暂存区块1460中.如果在将X+4到X+7编程到现用区块1462的上层页面0期间存在任何问题(例如电力丧失),那么现用区块1462的下层页面0中的数据可能受到破坏.也就是说,正被编程的单元的阈值电压可经修改,以使得它们不再处于代表下层页面的数据的状态中,而是尚未被完全编程到代表下层页面的数据的状态.举例来说,正被从图13中的状态A编程到状态D的单元可在编程停止时处于状态B或C.如果数据以此方式受到破坏,那么正被写入的下层数据页面可自从中复制所述下层数据页面的位置恢复.然而,在许多情况下,不存在下层页面的任何其它副本.此处,将下层页面的副本保存在高速暂存区块1460中,直到上层页面的编程完成为止.因此,存在下层页面的未破坏的副本,且可使用其来恢复下层页面的数据.
多个文件的实例
来自一个以上主机数据文件的数据可存储在单个区块中。文件之间的破裂可发生在页面内,以使得页面的一部分含有来自一个文件的数据,且页面的一部分含有来自另一文件的数据。图15展示其中原始区块1570的页面0到页面i-1含有来自第一文件(文件1)的数据且页面i+1到页面n-1含有来自第二文件(文件2)的数据的实例。页面i含有来自文件1的扇区(i*4)和(i*4)+1和来自文件2的扇区(i*4)+2和(i*4)+3。用阴影表示文件2的扇区以说明存在来自两个文件的扇区。
图15展示文件2被更新到新区块1572。新区块1572的第一页面(页面0)被写入有原始区块1570的页面i的内容。因此,新区块1572的页面0含有来自文件2和文件1两者的扇区。来自文件1的扇区(i*4)和(i*4)+1此时不被更新,但可被复制以便对完整数据页面进行编程。将已更新文件2的剩余部分编程到新区块1572的页面1到i-1。随后,更新文件1。将扇区0到扇区(i*4)-1存储在页面i到页面n-1。然而,扇区(i*4)和(i*4)+1也是文件1的一部分,且必须被更新。因为新区块1572此时是完整的,所以将已更新扇区(i*4)和(i*4)+1编程到另一区块。随后,作为垃圾收集操作的一部分,可将扇区(i*4)和(i*4)+1以及新区块1572中的扇区合并到单个区块。然而,这耗费时间和系统资源,且一般来说是不合需要的。
图16展示用于更新图15的原始区块1570的扇区的替代性技术,所述原始区块1570含有来自两个不同文件的扇区。此技术使用高速暂存区块1674来存储已更新扇区,直到它们可以系统的最大并行性写入作为完整的已更新页面的一部分时为止。当更新文件2时,将已更新扇区(i*4)+2和(i*4)+3写入到高速暂存区块1674。此处,将它们写入到高速暂存区块1674的页面0,且不将任何数据写入到所述页面的其它部分,以使得使用低并行度。文件2的剩余扇区(扇区(i*4)+4到N-1)被复制到新区块1676的页面0到n-i。这些扇区均以使用最大并行性的完整页面写入进行写入。随后,更新文件1。以最大并行性将扇区0到(i*4)-1编程到页面n-i+1到n-2中。接着与将扇区(i*4)+2和(i*4)+3复制到新区块1676的页面n-1并行而对文件1的扇区(i*4)和(i*4)+1进行写入。因此,先前保存在原始区块1570中的所有扇区的已更新副本现保存在新区块1676中,且任何废弃数据均不保存在新区块1676中。一般不需要对例如新区块1676的区块进行垃圾收集。以最大并行性来对新区块1676的每个页面进行编程,以实现区块中最大数据密度。此时,可将高速暂存区块1674中的扇区(i*4)+2和(i*4)+3标记为废弃。然而,高速暂存区块1674可用于进一步操作,而不需要垃圾收集操作,因为高速暂存区块常规含有当前数据和废弃数据两者。
存储非连续数据扇区的实例
在某些先前实例中,以小于写入完整页面的并行度的并行度将数据扇区写入到高速暂存区块.在此类实例中,正被写入的高速暂存区块的页面中的剩余空间可能保持空白,因为不可能稍后在不干扰已存储数据的情况下对所述空间进行编程.在某些情况下,可能使用此原本空白的空间和原本未使用的编程带宽来在同一页面中存储不相关的数据.举例来说,在存储系统接收少于一页面的单个扇区或扇区群组中的主机数据的情况下,这些主机数据扇区可存储在高速暂存区块的也保存不相关数据(例如不相关的主机数据或控制数据扇区)的页面中.类似地,正存储在高速暂存区块中以供稍后存储为完整页面的一部分的来自文件的开始的扇区可能具有在逻辑上不相关的存储在同一高速暂存区块中的额外扇区.
图17展示如先前实例中那样将扇区X、X+1和X+2存储在高速暂存区块1780中的实例。然而,此处保存扇区X、X+1和X+2的高速暂存区块的页面中的剩余空间用于存储其它数据。扇区Y、Y+1和Y+2与扇区X一起存储在页面0中。扇区Y、Y+1和Y+2在逻辑上可与扇区X、X+1和X+2不相关。扇区Y、Y+1和Y+2可来自另一主机数据文件或来自同一文件内的另一扇区群集。扇区Y、Y+1和Y+2可与扇区X、X+1和X+2不连续,且可在逻辑地址空间中分离。类似地,扇区Z和Z+1与扇区X和X+1一起存储在页面1中。扇区Z和Z+1在逻辑上可与扇区X、X+1和X+2和扇区Y、Y+1和Y+2两者均不相关。随后在接收到扇区X+3时,将扇区X、X+1、X+2和X+3写入到另一区块的页面。在接收到扇区Y+3时,将扇区Y、Y+1、Y+2和Y+3写入到另一区块的页面。因此,不相关的数据可存储在高速暂存区块的同一页面中,以更有效地使用可用资源。
图18展示存储在高速暂存区块1890中的不相关数据的另一实例。此处,如前所述存储并更新扇区X、X+1和X+2。然而,此处还并行存储并更新扇区Y。已更新扇区由指示存储什么型式的下标表示。举例来说,扇区X0是扇区X的原始型式,而X1是扇区X的第一更新型式。扇区Y可以是主机数据扇区或频繁更新的控制数据扇区。在某些系统中,在存储主机数据时,更新例如FAT信息的控制数据。在接收到少量主机数据的情况下,更新高速暂存区块1890中的控制数据可能是有利的。这可避免在仅更新单个控制数据扇区的情况下更新控制结构。在某一稍后时间,可使用来自高速暂存区块的控制数据来更新控制数据结构。
高速暂存区块管理
高速暂存区块可以是存储器阵列中的指定区块。可选择固定的物理位置作为高速暂存区块。然而,这可能导致存储器阵列的不均匀损耗。或者,可不时地改变指定区块,以使得当高速暂存区块变成由废弃数据填充时,选择另一擦除区块作为高速暂存区块。在此情况下,存储控制器所使用的数据结构可识别高速暂存区块的位置或所指定的高速暂存区块可被标记,以使得如果控制器扫描存储器阵列的擦除区块,那么其可确定哪个擦除区块是高速暂存区块。可使用将其标识为高速暂存区块的扇区来标记高速暂存区块。举例来说,图19展示将扇区2110标记为高速暂存区块2100的第一扇区。当使卡通电时,可扫描存储器阵列(或存储器阵列的一部分)的擦除区块来确定高速暂存区块的位置。在图19的实例中,读取每个擦除区块的第一扇区来判断其是否是指示高速暂存区块的标记扇区。
可将数据写入到高速暂存区块作为数据群组.数据群组是从主机处接收到在逻辑上连续的扇区群组.当将数据群组存储在高速暂存区块中时,还写入提供关于所存储的数据群组的信息的索引扇区.所述数据群组的扇区的位置可存储在索引扇区中.高速暂存区块(例如图19的高速暂存区块2100)可用于存储多个数据群组.图20展示存储一个数据群组的高速暂存2100.数据群组1由两个扇区2220、2221组成.这些扇区(标记扇区2110和索引扇区2230)存储在高速暂存2100中.索引扇区2230存储关于群组1的信息.
图21展示在对由两个扇区2340、2341组成的数据群组2进行编程之后,图20的高速暂存区块2100。索引扇区2350是存储关于群组1和群组2的信息的新索引扇区。因此,索引扇区2230是废弃的,因为索引扇区2350含有高速暂存区块2100的数据群组(包括群组1)的完整记录。
图22展示在对由扇区2460、2461和2462组成的数据群组3进行编程之后,图21的高速暂存区块2100。索引扇区2470是存储关于数据群组1、2和3的信息的新索引扇区。索引扇区2470含有高速暂存区块2100的数据的完整记录,且因此将索引扇区2350标记为废弃。
图23展示在从高速暂存区块2100读取数据群组1和数据群组2并将其写入为存储器阵列的另一区块中的单个页面之后,图22的高速暂存区块2100。索引扇区2560存储关于数据群组3的信息。高速暂存2100中的数据群组1和数据群组2是废弃的,且不需要索引,因为它们存储在其它地方。因此,索引扇区2560含有高速暂存区块2100中所有当前数据的完整记录。
当主机从存储器阵列请求数据扇区时,控制器可首先核查所请求的扇区是否在高速暂存区块中。如果所述扇区不存在于高速暂存区块中,那么可以常规方式搜寻所述扇区。因此,高速暂存不需要改变常规媒体管理,所述常规媒体管理用于跟踪存储器阵列中数据扇区的位置。
虽然已相对于各个示范性实施例描述了本发明,但将了解本发明有权在所附权利要求书的整个范围内受到保护。