多级数据存储单元的维护操作的制作方法

文档序号:6781163阅读:146来源:国知局

专利名称::多级数据存储单元的维护操作的制作方法
技术领域
:这里的各种实施方式主要涉及非易失性存储设备,并且某些特定实施方式涉及的是用于操作多级闪存单元的系统和方法。
背景技术
:随着计算设备能力和特征的提升,对数据存储设备的需求也在增长。例如,数据存储设备业已用于存储可以由处理器执行的程序指令(也就是代码)。此外,数据存储设备还用于存储其他类型的数据,其中包括例如音频、图像和/或文本信息。近来,具有能够存储大量数据内容(例如歌曲、音乐视频等等)的数据存储设备的系统在便携设备中已经可以广泛^f吏用。这些便携设备包括具有很小的形状因子并且能用电池之类的便携电源操作的数据存储设备(datastoragedevice,DSD)。便携设备中的某些DSD可以提供非易失性存储器,该存储器能在从电源断开的时候保持数据。便携设备已经使用了各种非易失性数据存储设备,例如硬盘驱动器、EEPROM(电可擦写可编程只读存储器)和闪存存储器(flashmemory)。闪存存储器已经成为一种广泛使用的DSD。例如,闪存存储器可以在便携电子设备和消费应用中提供非易失性存储器。目前存在的两种类型的闪存存储器是NOR闪存(flash)和NAND闪存。NOR闪存通常提供的是原地执行代码的能力,并且它是可以被随机存取的(也就是类似于RAM)。而NAND闪存通常可以更快擦除数据以及以脉冲串的形式(例如512字节的组块)存取数据,此外,与类似的NOR闪存相比,它可以提供更长寿命的擦除周期。NAND闪存通常能以很低的每比特成本来提供非易失性存储,以此作为例如数码相机9和MP3播放器这类消费设备的高密度文件存储介质。典型的闪存存储器是通过在每一个存储单元(memorycell)中将电荷存储在代表数字数据值的电压上来存储一个单位的信息的。对单级单元来说,它是基于将其充电成"高,,电压或者放电成"低,,电压来存储一比特信息的。对NAND闪存存储器来说,已开发的NAND闪存存储器能够对电荷进行解码,使之处于四个不同电压范围之一,从而在单个单元中存储两比特之多的信息。此外,对NOR闪存存储器来说,已开发的NOR闪存存储器能够对电荷进行解码,使之处于256个不同电压范围之一,由此就能在单个单元中存储8比特之多的信息。
发明内容所描述的装置和相关联的系统、方法及计算机程序产品涉及的是闪存存储设备中的多级数据存储。在一个通常方面中,通过检测来自第一存储单元的电压电平,可以对包含了多个存储单元的多级闪存存储设备进行管理,其中所述第一存储单元存储了达到代表数据值的电压电平的电荷。该电压电平所代表的数据值至少部分是根据与第一存储单元相对应的分辨率寄存器条目(resolutionregisterentry)来确定。电荷^皮施加于一个或多个存储单元,以便达到代表数据值的目标电压。该目标电压至少部分是根据与一个或多个存储单元相对应的分辨率寄存器条目来确定的。本实施方式可以包括一个或多个下列特征。所述一个或多个存储单元是笫一存储单元,并且将电荷施加于第一存储单元的操作包括将附加电荷施加于第一存储单元,以便调整第一存储单元中的电压暂降(voltagesag)。通过检测存储在基准单元中的基准电压电平,可以确定笫一存储单元中的暂降量。该基准单元与相应的预定电压电平相关联,并且暂降量是通过将预定电压电平与检测到的存储在基准单元中电压电平相比较来确定的。暂降量是通过检测存储在多个基准单元中的电压电平来确定的。施加于第一存储单元的附加电荷量是根据一个校正函数来确定的。从主机设备接收一个启动维护操作的信号,响应于接收到的信号,电荷将被施加于一个或多个存储单元,以便达到代表数据值的目标电压。来自主机设备的信号指示的是电源条件。这个来自主机设备的信号指示了是否用交流电源为主机设备供电和/或是否将主机设备的电池充电至预定电荷等级。此外,来自主机设备的信号还指示了所调度的维护操作。从闪存存储器处理器接收启动维护操作的信号,响应于接收到的信号,电荷将被施加于一个或多个存储单元,以便达到代表数据值的目标电压。这个来自闪存存储器处理器的信号指示的是该闪存存储器处理器具有足够带宽来执行维护操作。此外,来自闪存存储器处理器的信号还指示该闪存存储器处理器空闲。与第一存储单元相对应的分辨率寄存器条目指示的是与第一可能数据值数量相对应的第一分辨率。接收以与第二可能数据值数量相对应的第二分辨率写入的信号,并且更新与一个或多个存储单元相对应的分辨率寄存器条目,以便指示该第二分辨率。目标电压基于第二分辨率。第一可能数据值数量大于第二可能数据值数量,并且所述一个或多个存储单元包含从多个存储单元中选出的多于一个的存储单元。作为替换,第一可能数据值数量等于笫二可能数据值数量,并且所述一个或多个存储单元包含了与第一存储单元不同的存储单元。第二可能数据值数量超过第一可能数据值数量。第一可能数据值数量不超过4比特;例如,第一可能数据值数量是2比特或1比特。第二可能数据值数量至少是4比特;例如,第二可能数据值数量至少是8比特。以第一分辨率存储在第一存储单元中的数据值是将从主机设备接收的数据写入闪存存储设备的写入操作的结果。从主机设备接收将从主机设备接收的数据写入闪存存储设备的信号。从主机设备接收的数据值是以与第一可能数据值数量相对应的第一分辨率而被写入到第一存储单元中的,并且所述第一分辨率被记录在与笫一存储单元相对应的分辨率寄存器中。以与第二可能数据值数量相对应的第二分辨率写入的信号将被接收,并且第二可能数据值数量超过第一数据值数量。与一个或多个存储单元相对应的分辨率寄存器被更新,以便指示第二分辨率,并且目标分辨率基于第二分辨率。从主机设备接收指示主机设备的电源条件的信号。与第一存储单元相对应的分辨率寄存器条目指示的是与第一可能数据值数量相对应的第一分辨率。与第一存储单元相关联的分辨率寄存器条目被更新,以便指示与第二可能数据值数量相对应的第二分辨率,并且第一可能数据值数量大于第二可能数据值数量。第二数据值以第二分辨率被写入第一存储单元。对更新与第一存储单元相关联的分辨率寄存器条目和以第二分辨率写入第一存储单元的处理来说,这些处理是由与包含第一存储单元的存储单元页面相关联的差错条件触发的。存储单元页面与降级存储单元的第二页面进行配对。此外,逻辑寻址软件代码被更新,以便将存储单元页面配对视为处于第一分辨率的单个存储单元页面。在另一个通常方面中,确定是否执行维护操作。在确定应该执行维护操作时,作为响应,与存储单元页面相关联的差错信息被识别,并且确定该差错信息是否满足差错判据。与存储单元页面相对应的一个或多个分辨率寄存器被从第一分辨率调整到第二分辨率。所述第一和第二分辨率中的每一个都定义了多个电压范围,并且每一个电压范围都对应于一个可能的数据值。与第二分辨率相比,第一分辨率具有更多的电压范围。本实施方式可以包括一个或多个下列特征。确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源,例如主机是否正在接收交流电源或者主机设备是否具有充电至预定电荷等级的电池。确定是否执行维护操作包括确定处理器是否具有超过预定阈值的未使用带宽。在另一个通常方面中,针对已存储数据值暂降所进行的调整可以通过将电荷施加于多个存储单元来实施。每一个存储单元都被充电至与数据值相对应的目标电压。这些存储单元包括基准单元,其中所述基准单元被充电至预定电压。基准单元中的电压电平被检测,此外还会检测来自一组存储单元的电压电平。基于在基准单元中检测到的电压电平与预定电压之间的差值,向存储单元施加附加电荷。本实施方式还可以包括一个或多个下列特征。第二基准单元中的电压电平被检测。将附加电荷施加于存储单元的处理进一步基于在第二基准单元中检测到的电压电平以及预定的第二基准单元电压。该存储单元是NAND闪存存储单元或NOR闪存存储单元。并且每一个数据值都包括多于四个的比特。在又一个通常方面中,数据被存储在多个存储单元中。每一个存储单元都被适配成在写入操作中接收电荷,以便达到与具有规定比特数量的数据值相对应的电压电平。与存储单元相关联的分辨率寄存器包含多个条目,每一个条目都指示了存储在一个或多个相应存储单元中的多个比特。主机接口被适配成接收来自主机设备的信号,其中该信号指示的是主机设备的电源条件。处理器被适配成将数据值重新写入存储单元,以及响应于指示预定电源条件的信号,将分辨率寄存器从指示第一比特数量调整为指示第二比特数量。本实施方式可以包括一个或多个下列特征。逻辑寻址软件代码将地址。主机接口还被适配成接收来自主机设备的命令,以及与主机设备交换数据。在另一个通常方面中,确定是否执行维护操作。与多个闪存存储单元相关联的维护日志被读取。记录在维护日志上的维护活动被执行。该维护活动可以包括下列各项中的一项或多项以更高分辨率来重新写入初始以较低分辨率存储的数据值;降低与预定差错条件相关联的存储单元组的分辨率;以与初始数据值相同的分辨率来重新写入超过预定差错阈值的数据值;将最频繁存取数据与最不频繁存取的数据进行交换;或者通过向存储单元施加附加电荷来校正电压暂降,以便刷新数据值。本实施方式还可以包括一个或多个下列特征。确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源,例如主机设备是否接收交流电源,或者主机设备是否具有充电至预定电荷等级的电池。确定是否执行维护操作包括确定内部处理器是否具有超过预定阈值的未使用带宽。对于在一个或多个维护活动中被重新写入到不同物理存储单元的数据值来说,这些数据值的逻辑寻址软件代码被更新。某些实施方式可以提供一个或多个优点。例如,某些实施方式可以提供高性能数据存储功能。存储密度和/或容量可以增加。某些实例可以提供改善的可靠性和/或降低的数据差错率。某些实施方式可以允许提高的集成等级、小型化、减小的电磁噪声和/或改进的噪声余量。某些实施方式可以在辅助系统中实现更低的系统成本,例如提供给逻辑和/或编程/擦除电路的电压供应。在附图和后续描述中将会阐述本发明的一个或多个实施方式的细节。从该描述和附图以及权利要求中可以显见本发明的其他特征。图1显示的是包含NAND闪存存储颗粒(die)和闪存盘(flashdisk)控制器的多芯片组件架构的实例。图2A2B共同地显示了单元电压与存储在存储单元中的数字值之间的映射。图3A3B显示的是对从多级单元闪存存储器中读取数据页面的处理实例进行描述的流程图。图4显示的是对从闪存存储器中读取数据页面的处理实例进行描述的流程图。图5显示的是对通过执行差错校正操作来校正包含比特差错的数据页面的处理实例进行描述的流程图。图6A6C共同地显示了用于执行备选值命令的操作实例。图7A7B显示的是对将数据写入闪存存储页面的处理实例进行描述的流程图。图8A8B显示的是对调整存储页面的单元分辨率的处理实例进行描述的流程图。图9显示的是描述维护处理实例的流程图。图10显示的是对在闪存盘控制器中实施的逻辑寻址处理实例进行描述的流程图。图ll显示的是包含了处于NAND闪存存储颗粒外部的电荷泵和模数转换器的系统实例。图12显示的是包含了在NAND闪存存储颗粒上的去耦电源输入的系统实例。在不同的图中,相似的附图标记指示的是相似的部件。具体实施例方式这里的不同实施例涉及的是能够在深多级单元(MLC)中存储信息的闪存存储器。深多级单元可以根据单元电压来编码至少若干个数据比特。某些实施方式涉及的是用于实施包括深MLC闪存存储器的系统的架构。某些实施方式涉及的是用深MLC闪存存储器来执行数据存储操作的技术。图1显示的是为主机设备(未显示)提供数据存储的多芯片组件(multi-chippackage,MCP)100的一个实例。MCP100包括用于存储数据的NAND闪存存储颗粒103,以及有助于响应来自主机的读取和/或写入命令来访问闪存存储器的闪存盘控制器(FlashDiskController,FDC)106。在某些实施方式中,NAND闪存存储颗粒103将数据存储在深MLC中。例如,闪存存储颗粒103中的单元可以保持3、4、5、6、7、8、9、IO个或更多的信息比特。MCP100可以在各种便携设备中提供数据存储,其中举例来说,所述便携设备可以是数码相机、其他图像存储设备、便携音频设备、个人数字助理(PDA)以及数字摄像机。某些实施方式还可以在其他应用中使用,这些应用的实例可以包括台式计算机、服务器、无线路由器或是嵌入式应用(例如汽车),特别地,在需要快速存取数据的情形中,这些应用实例也是可以使用的。通常,通过实施依照这里描述的实例的装置和技术,可以提高闪存存储器密度和/或实现高性能和/或可靠的非易失性数据15存储操作。作为说明性实例,MCP100可以通过在闪存存储器的单元组(例如,按页或块)的每一个单元中存储一个字节的信息(也就是8比特)来存储数据文件。某些其他实例可以具有16比特、32比特、64比特或更高的分辨率。在某些实施方式中,分辨率可以通过单元栅极上的单个或多个电子检测来确定。在其他实施方式中,信息的任何实际比特数量都可以编码成在单个闪存存储单元充电达到的电压。FDC106包括主机接口109、处理器112和闪存接口115。FDC106经由主才几接口109而从主4几i殳备接收命令和/或数据(例如软件代码更新或用户数据),和/或向主机设备传送数据,其中该主机设备可以是台式计算机、服务器或便携计算设备上的处理器。与主机进行的通信可以使用定制或标准协议,例如高级技术附件(AdvancedTechnologyAttachment,ATA)、串行ATA(SATA)、块提取(BlockAbstracted)NAND、安全数字(SD)或是多士某体卡(MMC)。在某些实施方式中,MCP100可以是与主机设备相同的产品的一部分。在其他实施方式中,主机设备可以通过与至少一个基于处理器的其他设备相连的通信链路(例如USB、火线、蓝牙)来与MCP100进行可操作通信。例如,主才几可以通过在至少一个网络上发送控制消息以及发送和接收数据消息来远程访问MCP100,其中所述至少一个网络可以包括有线、无线或光纤链路,或是其组合。这些网络可以支持基于分组的通信,并且可以包括局域网或广域网,例如因特网。主机设备lh的处理器可以使用由FDC106处理且用于识别闪存存储器中的物理地址的逻辑寻址方案来从NAND闪存存储颗粒103中读取数据和/或向其写入数据。在某些实施方式中,主机接口109可以被配置成使用ATA/IDE接口来与主机设备进行通信。处理器112可以对接收到的命令进行处理,并且可以使用闪存接口115来存取NAND闪存存储颗粒103。FDC106可以被配置成提供诸如磨损管理(wearmanagement)、块管理、差错校正和逻辑寻址管理功能之类的功能,以便提高NAND闪存存储颗粒103的性能,例如增加可靠性、缩短读写时间、改善电源效率,以及提高每芯片体积的容量。这里描述的某些技术和装置既适用于NAND和/或NOR闪存存储器,也适用于其他类型的电可擦写或电可写入存储器,还适用于那些数据存取分辨率以页面或块为单位的存储器。虽然在图1中只显示了一个NAND闪存存储颗粒103,但是MCP100也可以包括多于一个的NAND闪存存储颗粒103。某些实施方式可以包括非易失性存储器的任何组合,这些组合可以包括NAND闪存、NOR闪存或电可擦写可编程只读存储器(EEPROM)。在某些i兌明性实例中,MCP100可以包括两个、三个、四个或者至少八个NAND闪存存储颗粒103。例如,MCP100可以包括处于与四个NAND闪存存储颗粒103封装在一起(例如在堆栈中)的颗粒上的闪存盘控制器106。在某些实施方式中,闪存盘控制器106和闪存存储颗粒103可以在单个颗粒上实施。在其他实施方式中,闪存盘控制器106中的一个或多个组件可以部分或者完全在单个颗粒或MCP100的外部实施。例如,某些或所有同步动态随机存取存储器(SDRAM)151和/或非易失性存储器(NVM)154可以在MCPIOO的外部实施。在某些实施例中,某些或所有闪存盘控制器106可以按与闪存存储颗粒103分离的方式封装。在一个说明性实例中,NVM154、SDRAM151、主机接口109以及至少一部分处理器112中的每一个都可以在MCP100的外部实施。在其他实施方式中,闪存接口115与闪存存储颗粒103之间的模拟和/或数字信号可以在外部被路由到集成组件。通过实施远程或分布式传输结构(例如受到屏蔽和/或控制的阻抗信号路径),可以传送往来于至少一个闪存存储颗粒103的信号。在某些实施方式中,通过安装非易失性存储器的附加组件,可以提供存储器扩展。緩沖和/或路由设备可以用于支持将模拟和/或数字信号分发到数量可变的存储颗粒103。此外,处理器112的功能可以在MCP100的外部实施。在各个实施例中,处理器112既可以完全或部分在同一基底(例如印刷电路板)上的电路中实施,也可以在与MCP17100相同的产品中实施。该处理器112还可以由另一个经通信链路(例如有线、无线、光纤或是其组合)而与MCPIOO进行可操作通信的计算设备来实施。MCP100可以是任何实际存储器大小,例如高达至少100吉字节或以上。在所描述的实例中,NAND闪存存储颗粒103被组织成包含多个闪存存储块(flashmemoryblock)118。在某些实施方式中,NAND闪存存储颗粒103可以包括数百或数千个闪存存储块118。每一个闪存存储块118都包括多个闪存存储页面(flashmemorypage)121。如所示,每一个闪存存储页面121都包括可以存储数据124的单元以及可以存储与数据相关联的纠错码(ECC)127的单元。作为例示,闪存存储页面121可以存储2048字节的数据和64字节的ECC数据。数据单元124存储的是从闪存盘控制器106接收的信息。ECC单元127存储的是与存储在数据单元124中的数据相关联的附加完整性元数据(例如ECC数据)。在各个实施方式中,ECC数据允许闪存盘控制器106检测和/或校正数据中的比特差错。在图示实例中,每一个闪存存储块118还包括一个或多个基准单元130a、130b、130c。在某些实施方式中,FDC106可以监视基准单元130a、130b、130e中的电压,以便估计单元124、127中的电压暂降(voltagesag)或漂移。在每个块118中,基准单元130a可以位于块118的开端,并且基准单元130b可以位于块118的末端。每一个闪存存储页面121可以包括基准单元130c。在某些实施方式中,在页面、块和存储颗粒103的任何图案中可以分布数量更多或更少的基准单元,以便确定单元124、127的可能性能。在某些实施方式中,基准单元可以位于经历读/写使用等级(usagelevel)的单元之中或是其周围,其中所述等级代表的是所关注的某些数据单元的使用等级。补偿方法可基于非基准单元与其他非基准单元的比较。举个例子,如果同一页面或块中的多个单元中的电压相对较低,那么所述补偿可以包括根据测量得到的值来向下调整阈值(例如单元中不同值等级之间的电压阈值),由此可以显著降低读取差错。其他实例包括根据在基准单元中检测到的电压来确定校正函数,其中该校正函数会在将检测到的电压转换成存储单元所代表的数字数据值之前调整检测到的电压。在某些实施方式中,通过将附加电荷施加于多个单元,可以校正检测到的电压暂降,由此刷新存储单元。举个例子,如果一个或多个基准单元的电压电平指示的是一个超过某个阈值量的电压漂移,那么与一个或多个基准单元相关联的一个或多个页面或是一个或多个块中的存储单元既可以通过施加附加电荷来调整,也可以被重写,以便根据所存储的数据而将这些单元恢复到适当的电压电平。这些调整既可以在检测到一个或多个基准单元中的电压漂移的时候立即执行,也可以作为以后的维护操作的一部分。在某些实施方式中,可以根据检测到的一个或多个基准单元电压与一个或多个目标基准单元电压之间的差值来施加附加电荷或是重写该存储单元,其中所述差值可以被假设成是指示了一个或多个基准单元以及相应数据单元的恰当电压漂移或暂降量。在某些实施方式中,施加附加电荷或重写存储单元的处理可以通过读取所有单元,对照阈值来执行必要调整(例如根据基准单元电压数据执行差错校正以获取所存储的数据而被执行。此后,该数据可以用于确定恰当的电压电平,或是用于确定各个存储单元需要多少附加电荷来校正所识别的电压漂移或暂降。在某些实施方式中,所施加的附加电荷量可以根据一个校正函数来确定,其中该校正函数与用于在将检测到的电压转换成数字数据值之前调整被检测电压的校正函数是相同或相似的。在某些实施方式中,其中可以自适应地重新指定闪存存储器中的单元。例如,基准单元可以在需要时响应于读取或写入使用信息、温度、产品使用年限、电源电压(例如低电池、AC线路功率)和/或检测到的差错等级而被添加、移除、再分配和/或再分布。如果某些存储块或页面中的差错很低,那么可以将较少的单元指定为ECC单元127和/或基准单元130,这样做将会提供更多的数据单元124。将单元指定给基准、数据和ECC功能的相对指定关系以及单个单元的分辨率可以根据当前工作条件和/或根据预定条件而被动态调整。举个例子,该分辨率可以根据差错率而被调整,而每页面的ECC单元数量则可基于差错率以及读写历史信息,并且基准单元的位置和分布可以基于差错率和产品使用年限。本实例仅仅描述的是可以根据各种判据进行动态调整的控制器106和闪存存储颗粒。其他判据可以包括数据重要性、电源可用性(例如AC线路功率、电池功率)以及关于最大存储器大小的相对重要性、速度性能以及数据完整性的定义判据。举个例子,如果保持需要大量软件校正来维护高单元分辨率,那么有可能导致较长的存取时间。这些判据可以由用户、产品制造商或软件根据应用的需要来进行设计。在某些实施方式中,在维护操作中可以重写需要大量软件校正的数据,以便校正与经过的时间相关联的电荷的变化,或是校正已经开始降级的存储单元页面。通常,在改变一个或多个存储单元的分辨率的时候,数据将被写入到存储单元的不同页面中,并且可以按相同或不同的分辨率写入。在某些实施方式中,存储单元的初始页面将被降低到某个较低分辨率,随着存储单元的老化和降级,这种情况通常是必然的。在由于所识别的电压漂移或暂降而执行数据重写时,可以将数据写入存储单元的相同或不同的页面或块。闪存接口115提供了针对闪存存储颗粒103的直接控制、握手处理以及数据传送访问。该闪存接口115包括控制接口133和模拟接口136。在某些实施方式中,控制接口133可以向闪存存储颗粒103发送控制、地址和数据信号。这些命令和存储地址可以在数字信号或模拟信号中传送。闪存盘控制器106还可以接收来自闪存存储颗粒103的模拟信号。闪存盘控制器106可以包括用于与闪存颗粒103上的闪存存储器逻辑对接的处理器,并且这个用于与闪存存储颗粒上的闪存存储器逻辑对接的处理器可以集成在闪存接口115中。响应于读取命令,闪存存储颗粒103可以输出代表存储在单个数20据单元124中的数据的单元电压。闪存盘控制器106可以接收从闪存存储颗粒103上的每一个存储单元输出的模拟电压信号。这些模拟单元电压或模拟电压信号可以被传送到FDC106中的模拟接口136。在某些实施方式中,闪存接口115还可以包括与控制接口133以及模拟接口136分离的数据总线,用以与闪存存储颗粒103进行通信。模拟接口136可以包括模拟前端(模拟FE)139和模数转换器(ADC)142。一旦接收到模拟信号,那么模拟FE139可以根据需要来调节(condition)信号,例如提供偏移、校正电平偏移、增益、緩冲、滤波或是用于最小化反射的受控阻抗。模拟FE可以提供高阻抗输入,以便最小化闪存存储单元的负载,此外它还可以提供低阻抗输出,以便驱动与ADC142的输入相耦合的采样和保持或追踪和保持电路。在某些实施方式中,模拟FE139还可以包括模拟复用器(未显示),以便从来自一个或多个闪存存储颗粒的多个模拟输出线路中选择其中一个。ADC142对模拟值进行处理,以便确定数据单元124、127中的电压的相应数字数据值表示。ADC142接收经过调节的模拟信号,并且将模拟信号转换成模拟电压的数字表示。然后,ADC142(或ADC中的处理器)将数字表示转换成存储在存储单元上的且由电压所代表的数字数据值,其中举例来说,所述转换基于映射函数。处理器112还可以用于将数字表示转换成数字数据值。模拟电压的数字表示可以包括足以允许ADC142或处理器区分多个模拟电压电平的信息,其中每一个模拟电压电平都代表了一个特定的数字数据值。该数字表示可以包括数量多于数字数据值的数据比特。在某些实施方式中,ADC142可以集成在闪存存储颗粒103中,而不是包含在闪存盘控制器106中。在这种情况下,闪存接口115可以接收来自闪存存储颗粒103的单元电压的数字表示或数字数据值。在这里显示了映射函数145的一个实例。根据映射函数145,ADC142或处理器112可以将模拟单元电压转换成数字表示和/或数字数据值。举个例子,在这里可以使用一系列模拟电压阔值来将模拟电压映21射成数字表示和/或数字数据值。同样,该映射函数145还可以描述将模拟电压的数字表示转换成数字数据值的处理。举个例子,模拟电压的一个或多个数字表示可以映射成一个特定的数字数据值,其中每一个数字数据值都具有相应的一个或多个数字表示的不同集合。在某些实施方式中,ADC142或处理器112可以接收用于改变映射函数145的参数。例如,FDC106可以根据当前温度、电源电压、页面数据读写次数和/或基准单元130a、130b和/或130c中的电压来适配映射函数145。在某些实施方式中,映射函数适配可以基于相邻数据单元124、ECC单元127和/或其他单元的电压特性。关于单元电压与数字数据值之间的映射145的更多细节是参考图2A2B描述的。在某些实施方式中,ADC142或处理器还可以响应于备选值命令来执行操作,以便为接收到的模拟信号或模拟信号的数字表示检索备选值(alternativevalue)。关于备选值命令的例示实施方式的更多细节是参考图6A6C来描述的。闪存盘控制器106还包括ECC引擎148。在不同的实施方式中,ECC引擎148可以使用ECC单元127来执行硬件和/或软件差错检查和校正。在某些实施方式中,ECC引擎148可以提供基于状态机的数据恢复。例如,ECC引擎148可以检测数据页面中的差错比特数量。然后,ECC引擎148可以确定所使用的是哪一种ECC算法。举个例子,ECC引擎148可以被配置成首先尝试硬件ECC算法,其中举例来说,此类算法使用的是汉明(Hamming)或里德-所罗门(Reed-Solomn)码。如果硬件ECC算法无法成功恢复数据页面,那么可以尝试软件ECC校正。在这里参考图5描述了一种例示方法,其中该方法描述的是组合使用硬件ECC、软件ECC以及其他技术。在某些实施例中,ECC引擎148可以提供至少达到约10。/。或以上的数据页面大小的差错校正。在某些实施方式中,处理器可以确定使用哪一种ECC算法。在某些实施方式中,如果使用ECC算法来恢复包含超过某个预定数量或百分比的差错的数据,那么处理器U2将会重写或刷新存储在闪存存储页面中的数据。在其他实施方式中,处理器112会在维护日志中记录包含此类差错的数据的位置、物理和/或逻辑位置。然后,处理器112会在维护操作过程中重写或刷新该数据(参见图9)。维护操作可以在发生如下情况时执行在主机设备依照某个预定电源条件工作时,在处理器112具有预定量的过剩带宽和/或以所调度的间隔工作时。闪存盘控制器(FDC)106可以包括动态随机存取存储器(DRAM)。本实例的闪存盘控制器106还包括同步动态随机存取存储器(SDRAM)151。举个例子,SDRAM151可以是单倍数据速率的SDRAM或双倍数据速率的SDRAM。在某些实施方式中,FDC106可以使用SDRAM151作为高速和高密度緩沖器,以便存储诸如用于主机设备的输出数据之类的临时数据,以及用于数据页面的备选数字值。FDC106还可以包括其他类型的RAM,例如DRAM。举个例子,FDC106可以接收来自NAND闪存存储颗粒103的才莫拟数据。然后,FDC106可以将检测到的模拟电压转换成数字数据,在某些情况下,该数字数据包括用于一个或多个单元的备选数字数据值。然后,ECC引擎148检查和校正数字数据,由此可以为每一个闪存存储页面121上的单元检查数据值和备选数据值的多个不同组合。如果差错校正成功,那么处理器112可以将数字数据存入SDRAM151的主机输出緩沖器。在某些实施方式中,主机设备可以从主机输出緩沖器中检索数据。作为替换,闪存盘控制器106可以将数据从主机输出緩冲器转发到主机设备。SDRAM151或其他高速緩存还可以用于存储那些将被写入闪存存储颗粒103的数据。FDC106还包括非易失性存储器(NVM)154。在本实例中,NVM154包括磨损管理软件代码157、块管理软件代码160、逻辑寻址软件代码163以及单元分辨率寄存器(resolutionregister)166,这其中的每一个都包含了指令(或者指向闪存存储器中指令的指针),其中当由处理器112执行时,所述指令(或者指向闪存存储器中指令的指针)将会执行一定的操作。在某些实施方式中,NVM154可以与NAND23闪存存储颗粒103分离。例如,NVM154可以是NOR闪存存储器或是另一个NAND闪存存储器。在其他实施方式中,NVM154可以是NAND闪存存储颗粒103中的一个或多个页面。在其他实施方式中,NVM154可以存储指向存储在NAND闪存存储颗粒103中的数据的指针或存储位置。在某些实施方式中,处理器112可以执行磨损管理软件代码157、块管理软件代码160以及逻辑寻址软件代码163,以便提高MCP100的效率、性能和/或可靠性。处理器112可以使用磨损管理软件代码157来管理MCP100中的页面121、块118或颗粒103的磨损度(wear)。举个例子,磨损管理软件代码157可以包括在由处理器112运行时执行包括负栽平衡操作在内的多种操作的指令,以便将最频繁使用的存储页面中的数据交换(swap)到较少使用的存储页面。所述交换操作还可以包括对逻辑寻址软件代码163进行更新。磨损管理软件代码157可以在维护操作中被激活。在某些实施方式中,每一个读取操作的物理和/或逻辑地址都被记录在维护日志中。每一个写入操作同样可以记录在维护日志中。然后,磨损管理软件代码157可以使用预定阈值来确定如何在存储单元页面中重新排列已存储数据。其中举例来说,这些阈值可以包括在一周或一个月的时间将存储单元页面读取100或1000次。在其他实施方式中,阁值可以基于读取操作总数的百分比,或者基于与每时间每页面的读取平均次数的偏差。在图9中描述了维护操作的一个实例。块管理软件代码160可以包括用于管理闪存存储颗粒103中的不良块的代码。例如,块管理软件代码160可以包括闪存存储块118的历史差错信息。在某些实施方式中,该差错信息可以用于保持每一个闪存存储页面中的单元分辨率。关于块管理软件代码实例的更多细节是参考图8A和8B来描述的。块管理软件代码160可以与逻辑寻址软件代码163和/或单元分辨率寄存器166相结合,该代码还可以用于对闪存存储颗粒103中具有降低分辨率(在单元分辨率寄存器166中更新)的不良块或不良页面配对,并且处于逻辑寻址目的而将不良块或不良页面的集合视为等价于具有初始较高分辨率的存储单元中的单个块或单个页面。块管理软件代码157可以在维护操作过程中被激活。在图9中描述了维护操作的一个实例。逻辑寻址软件代码163可以包括用于将主机命令中的逻辑地址转换成NAND闪存存储颗粒103中的物理地址的代码。在某些实例中,逻辑页面可以与NAND闪存存储颗粒103中的多个物理存储页面相关联。逻辑寻址软件代码163对NVM154中的逻辑地址的转换和更新进行管理。在一个实例中,举例来说,在将页面从10比特分辨率降级到8比特分辨率的时候,或者在出于磨损管理目的而将逻辑块地址映射至不同物理页面地址的时候,逻辑寻址软件代码163可以动态维护物理页面地址与来自主机的逻辑块地址之间的联系。此外,举例来式。通过产生、处理、存储、使用和/或以其他方式操纵中间地址形式,可以执行各种非易失性存储器操作。关于逻辑寻址软件代码实例的更多细节是参考图10来描述的。单元分辨率寄存器166存储了每一个闪存存储页面121中的单元分辨率的信息。例如,NAND闪存存储颗粒103可以是一个8比特MLC闪存存储器。在某些实施方式中,某些闪存存储块118可以响应于各种条件而被降级或升级。关于此类条件的说明性实例包括差错性能、温度、电压条件、单个单元的读写循环次数、单元组、页面、相邻位置中的单元、基准单元、具有类似的读和/或写使用历史记录的单元或是其他因素,例如设备使用年限。关于某些或所有这些条件的信息可以存储在数据存储设备中,或者也可以从已存储信息的一个或多个其他比特中确定或估计。在一个实例中,已存储的信息可以包括历史读取和写入使用数据,其中该数据代表的是存储颗粒103中的至少某些单元的使用等级。处理器112可以更新单元分辨率寄存器166,以便减小降级存储页面的单元分辨率,例如将其降低至4比特,由此闪存存储页面121仍旧可以结合较小的存储器大小来使用。在其他实施方式中,单元分辨率寄存器166还可以存储每一个闪存存储块118的单元分辨率。在某些实施方式中,在将数据从主机设备传送给MCP100中的存储单元之前,单元分辨率寄存器166将被向下调整到单比特分辨率或是另一个低数量比特分辨率。在图7B中更详细地描述了这个处理。由于在为每一个存储单元充电的时候需要较低的精度,因此,通过在传送数据之前降低单元分辨率寄存器166,可以提供更快的数据传输速率。所传送的数据随后可以按较高分辨率被重新写入存储单元。在某些实施方式中,在维护操作过程中(例如在以后有足够处理资源可用并且重写处理不会干扰其他读写操作的时候)可以按较高的分辨率来重新写入所传送的数据。在某些实施方式中,在维护日志中做出低单元分辨率数据传送的记录。在某些实施方式中,逻辑寻址软件代码163、分辨率寄存器166和/或块管理软件代码160会将降级存储页面(或降级存储块)一起组(或块)'。降级存储页面组的存储页面不必与存储页面相邻。降级存储页面组可以包括来自不同块的存储页面,甚至可以包括来自不同存储颗粒的页面。在某些实施方式中,处于一组降级存储页面或块中的每一个降级存储页面或块都会响应于与页面或块相关联的差错条件而被降级。图2A2B共同地显示了单元电压与存储在存储单元中的数字数据值之间的映射。如图2A所示,该图显示了一个8比特存储单元的说明性的数字数据值分布200。8比特存储单元包括256个可能的数字数据值;4比特存储单元包括16个可能的数据值。可能数据值的数量等于2n(其中n等于比特数量),但是可能数字数据值的数量不必与n比特的可能数字数据值数量相对应。每一个存储单元都可以具有大于1的整数个可能数字数据值,其中举例来说,某些存储单元可以具有10个可能的数据值。数字值分布200包括数字值分布曲线205210,其中这些曲线代表的是每一个数字数据值的电压分布。每一个数字值分布曲线(例如205210)都代表了某个范围的数字电压值,其中该范围与关联于每一个可能数字数据值的电压电平相对应。在写入操作过程中,每一个存储单元都会接收电荷,直至达到与从可能数字数据值之一选出的数字数据值相对应的模拟电压。这个对应的电压通常会落入期望数字数据值的分布曲线205-210以内。此外,这个对应电压还可以是与数字数据值相对应的目标电压。举个例子,如果单元电压位于分布207以内,那么存储在该单元中的数字值可以是02h。在读取操作过程中,模拟电压信号是从每个单元中检测到的。然后,ADC136将模拟电压信号转换成模拟电压信号的数字表示。之后,这个数字表示会与至少一个数字值分布曲线进行比较,以便确定存储在所读取的存储单元中的模拟电压所代表的数字数据值。数字数据值分布200包括处于数字数据值分布曲线205210之间的灰色区域215。在某些实施方式中,举例来说,当ADC142接收到单元电压或者检测到位于某一个灰色区域215以内的模拟电压信号时,ADC142可以将单元电压转换成最接近的相邻数字数据值。例如,倘若ADC142接收到非常接近电压电平220的单元电压,那么ADC142可以将其解析成是最接近的相邻数字数据值,即FEH。在某些实施方式中,FDC106还可以包括备选值命令,其中该命令指示ADC142根据某些参数来解析出与最接近的相邻值不同的备选值。在某些实施方式中,FDC106可以在尝试解析页面或数据块值的差错校正处理中同时使用最接近的相邻数字数据值以及一个或多个备选值。此外,FDC106可以根据单元电压在数字数据值分布曲线205210或灰色区域215中的位置而将某个不确定性指定给特定的单元电压或相应数据值。所指定的不确定性可以供尝试解析页面或数据块值的算法使用。关于这些参数的某些实例可以包括下列各项中的一项或多项温度、针对该单元的读取次数、针对该单元的写入次数、电源电压以及基准单元130a、130b、130c中的电压。在某些实例中,单元电压可以降到最小单元电压(Vmin)以下。FDC106可以通过向接收到的单元电压添加一个偏移量来实施校正。这个偏移量既可以27由模拟FE139添加,也可以由ADC142或处理器112以数字方式添加。在某些实施方式中,FDC106可以通过变更数字数据值分布200来动态调整灰色区域215的位置和宽度。例如,FDC106可以包括基于参数调整灰色区域的维护软件代码,其中举例来说,所述参数可以是一个或多个基准单元电压,存储单元使用率,以及可以在NVM154中预先加栽的其他启发(heuristics)。维护软件代码还可以执行单元分辨率寄存器166的更新。例如每一个颗粒103、模拟接口135和/或MCP100都可以在制造时被表征,并且线性化表格、校正因数或其他校正调整可以存储在MCP100的非易失性存储器中。在某些情况下,最大和最小电压电平(Vmax和Vmin)以及数字值分布曲线205-210可以在其使用寿命中根据单元的经验测试而被调整和/或再分布。如图2B所示,该图显示的是单元电压-数字值曲线图250。该图250包括理想电压特性255,并且ADC142〗吏用该特性来将才莫拟电压转换成数字值。在某些实例中,数字单元124可以根据非理想电压特性260、265来存储数字值,其中举例来说,所述非理想电压特性归因于温度启发、单元使用年限、电荷泵或电源电压容差、ADC136的非线性、在存储单元中检测到的差错、和/或单元的读写次数。FDC106可以采用不同方式来补偿电压特性260、265,使之更接近理想特性255。例示的补偿方法是参考图3A、3B、4、5、6A6C来描述的。图3A和3B显示的是对从NAND闪存存储器读取数据页面的处理350和300的实例进行描述的流程图。处理350和300包括通常可以由处理器112执行的操作。在某些实施方式中,处理350和300还可以由那些可以与ADC142结合的其他处理和/或控制部件来执行、补充或增加。例如,在模拟接口136中可以存在一个用于执行处理350和300中的某些或所有操作的控制器或补偿器。图3A描述的是将从多级存储单元中检测到的电压电平转换成数字数据值的处理。处理350是以检测来自多级存储单元的模拟电压电平为开始的(步骤355)。其中举例来说,该电压可以由模拟接口13628来检测。模拟接口136可以包括一个能够通过操作来接收来自闪存存储颗粒103的模拟信号的输入。闪存盘控制器106还可以包括一个控制模块,以便选择可供所述输入接收模拟信号的存储单元。在步骤360中,模拟电压信号被转换成所检测到的模拟电压的数字表示。这个转换可以由ADC142来执行。该数字表示可以具有充足的数据,以便允许ADC142或处理器112在代表数字数据值的多个可能的电压电平中区分存储单元存储的模拟电压电平。这个处理可以通过让数字表示包现。、、'、、,、'—'^图2A协助描述了这个概念。可能的模拟单元电压的范围可以分成多个分段(例如用电压电平220表示的分段),其中每一个分段都与模拟单元电压的数字表示相对应。每一个数字值分布曲线205-210以及每一个灰色区域215都可以包括多个此类分段,由此允许使用分辨率高于数字值分布曲线205~210的数字表示,这样做可以提供附加信息,其中举例来说,该附加信息涉及的是单元电压在数字值分布曲线205-210或灰色区域215中的位置。在步骤365,数字表示将会基于数字数据值分布而被转换成数字数据值。所述数字数据值分布可以存储在单元分辨率寄存器166中,并且可以是图2A所示的数字数据值分布200。在步骤335,处理器或控制器确定是否要对更多存储单元进行读取。如果是的话,那么处理返回到步骤355。否则,处理350结束。图3B更详细地描述了一个用于存储所识别的数字数据值以及标记不确定的数字数据值的位置的处理。举例来说,处理300是在处理器112从NAND闪存存储颗粒103接收到检索数据页面的命令的时候开始的。在步骤305,处理器112从单元分辨率寄存器166中检索某个页面的单元分辨率信息。然后,在步骤310,处理器112从ADC142接收用于数据单元的数字输出值。这个用于数据单元的数字输出值是从数据单元中检测到的电压的数字表示。ADC142根据步骤310中存储的阈值来确定接收到的数字数据值。在某些实施方式中,处理器112可以使用单元分辨率寄存器166中的信息来确定所使用的是哪一个阈值集合。这些阈值可以涉及在上文中结合图2A论述的数字值分布曲线205~210。例如,处理器112可以为8比特单元使用一个阈值集合,并且为2比特单元使用另一个阈值集合。在某些情况下,处理器112可以为一个8比特单元使用一个阁值集合,并且为一个不同的8比特单元使用另一个阈值集合。每一个阈值集合都可以对应于一个可能的数字数据值分布,并且可以构成与可能的数字数据值相对应的模拟电压的数字表示的各个范围。在步骤320,处理器112确定用于所接收的模拟电压值的数字数据值是否是不确定的。在某些实施方式中,如果单元电压处于数字值分布200的灰色区域215中,或者如果单元电压接近于数字值分布曲线205-210与灰色区域215之间的边界,那么处理器112可以确定数字数据值是不确定的。在某些实施方式中,可以取决于单元电压落在数字值分布200内的位置来指定不确定性的不同等级(例如,较高的电压往往具有较大的不确定性,和/或对较为接近灰色区域215的中部的单元电压来说,不确定性有可能会较高)。在步骤320,如果处理器112确定接收到的数字值并非是不确定的,那么处理器112会在步骤325中将接收到的数字值存储在主机输出緩冲器中。如果处理器112在步骤320中确定接收到的数字值是不确定的,那么在步骤330中,处理器112可以在一个掩码表(masktable)中标记不确定的数字值的位置,然后执行步骤325。在某些实施方式中,还可以存储一个或多个备选值,以便随后用于解析哪些值(例如不确定的值或备选值之一)是正确的。在处理器112存储了接收到的数字值之后,在步骤335,处理器112将会确定是否还要读取更多单元。例如,处理器112可以检查是否达到存储页面末端。如果还要读取更多单元,那么该处理返回到步骤310。如果没有要读取的单元,那么处理300结束。在某些实施方式中,该处理还会在维护日志中记录与存储单元页面或块相关联的不确定数据值的数量。在其他实施方式中,如果不确定的数据值的数量超过预定阈值,那么该处理将会记录存储单元页面和/或块的物理和/或逻辑位置。图4显示的是对使用从MLC闪存存储器中读取数据页面处理400的实例进行描述的流程图,其中该MLC闪存存储器可以是诸如NAND闪存存储颗粒103,并且所述读取使用一个校正函数来调整单元电压与数字值的映射关系。举例来说,处理400可以由处理器112执行。该处理400是在步骤405中开始的,其中该处理器112确定是否接收到读取命令。例如,FDC106可以通过主机接口109接收来自主机设备的读取命令。在步骤405,如果处理器112确定没有接收到读取命令,则重复执行步骤405。如果处理器112在步骤405中确定接收到读取命令,那么在步骤410中,处理器112将会#4居温度、存储页面中的读写次数、电源电压和/或NAND闪存存储颗粒103的其他工作条件来更新校正函数。在某些实施方式中,在将单元电压转换成数字值之前,ADC142或模拟接口136可以使用校正函数来调整在模拟前端139测得的单元电压。在其他实施方式中,处理器112可以使用校正函数来调整映射函数中的阈值,由此ADC142可以将模拟电压转换成经过调整的数字值。对不同的单元来说,该校正函数可以是不同的。例如,对检测到的电压很高的存储单元来说,该单元可以因为校正函数而具有较大的调整。接下来,处理器112可以在步骤415中选择基准单元。例如,处理器112可以选择基准单元130a、130b或130c之一。然后,在步骤420中,处理器112读取存储在选定基准单元中的基准电压。在步骤425,处理器112根据基准电压来更新校正函数。举个例子,如果基准电压表现为暂降了10%,那么处理器112可以通过调整校正函数来补偿数据中的暂降电压。在某些实施方式中,校正功能将会以非线性方式来调整检测到的电压电平。与较低的检测到的电压电平相比,该校正函数可以对较高的检测到的电压电平进行更多的调整。校正函数可以以不同的调整量或是不同的调整百分比来调整检测到的处于不31同电压电平的电压。在某些实施方式中,在操作过程中可以动态实时(onthefly)调整阈值。在某些实施方式中,处理器112可以存储固定数量的先前读取的基准电压的采样,例如一百个采样,并且该处理器112可以使用已存储的基准电压的移动平均来更新校正函数。此外,该校正函数还可以根据其他函数来更新,这其中可以包括例如均值、中数、众数或加权平均。举个例子,在这里可以使用经过加权的移动平均。然后,在步骤430,处理器112确定是否选择另一个基准单元。举个例子,处理器112可以确定是否有足够信息来调整校正函数。另举一例,处理器112可以被配置成根据读取命令来读取某些存储块以及某些存储页面中的所有基准单元。在步骤430,如果处理器112确定还有要读取的其它基准单元,那么处理400将会返回到步骤415。在某些实施方式中,通过读取基准单元中的电压来调整校正函数的处理是通过检测从存储单元组检索的数据中的差错来触发的。在其他实施方式中,检测到的差错将会导致用于确定与检测到的电压相关联的数据值的阈值发生偏移。在某些实施方式中,这些阈值可以自动向下偏移,但是在其他实施方式中,这些阈值是根据一个或多个基准单元中的电压而被调整的。该差错可以使用与该组存储单元相关联的ECC127来检测。在步骤430中,如果处理器112确定没有要读取的其他基准单元,那么在步骤435,处理器112将会根据读取命令来选择所要读取的页面。然后,在步骤440,处理器112从闪存存储器中读取所选择的数据页面,其中举例来说,所述读取是使用处理300(图3B)来进行的。在步骤445,处理器112使用校正函数来校正页面数据。例如,处理器112可以设置模拟接口136中的某些参数,以便调整映射函数。另举一例,处理器112可以使用校正函数来调整从ADC142输出的数字表示。接下来,在步骤450,处理器112可以执行差错检查操作,以便检查在页面中是否存在差错。在某些实施方式中,差错检查操作可以通过使用硬件差错检测电路而在ECC引擎148中完成。在其他实施方式中,差错检查操作可以在软件中完成,其中处理器112可以执行存储在NVM154中的差错检测代码,以便检查页面中的差错。在差错检查操作之后,在步骤455,处理器112可以确定是否检测到差错。如果没有检测到差错,那么在步骤460,处理器112可以将所读取的数据传送到主机设备。然后,处理器112可以在步骤465中确定是否还有要读取的其它页面。如果还有要读取的页面,则重复执行步骤435。否则,处理400结束。如果在步骤455中检测到一个或多个差错,那么在步骤470,处理器112可以执行差错校正操作,其中该操作的一个实例是参考图5来描述的。然后,在步骤475,处理器112可以确定差错校正操作是否成功。如果差错校正操作成功,则重复执行步骤460。如果差错校正操作没有成功,那么处理器112可以在步骤480中将差错信息(例如差错日志)存入NVM154,并且该处理可以在步骤465处继续。该差错信息还可以存储在维护日志中。所存储的差错信息可以用于块管理操作,其实例是参考图8A来描述的。在某些实施方式中,处理器112会在NVM154的维护日志中记录存储单元页面或块中的基准单元之间的暂降变化。在其他实施方式中,如果基准单元中的暂降程度满足预定条件,那么处理器112只在维护日志中记录存储单元页面和/或块的物理和/或逻辑位置。举个例子,如果基准单元中的暂降超出10%,或者如果不同基准单元中的暂降程度之间的差值超出10%,则可以通过在维护操作过程中将附加电荷施加于存储单元或是通过完全重写页面来刷新存储单元页面和/或块中存储的数据。关于维护操作的实例是参考图9来描述的。图5显示的是描述了处理实例500的流程图,其中该处理通过执行差错校正操作来校正包含比特差错的数据页面。举例来说,该处理500是在处理器112在从闪存存储器读取的数据页面中检测到比特差错的时候开始的,并且在步骤505,该处理器会向ECC引擎148发送一个命令,以便通过执行硬件ECC算法来校正比特差错。在某些实施方式中,ECC引擎148和ADC142和/或模拟接口136可以通过协33作来校正比特差错。接下来,在步骤510,ECC引擎148可以检查硬件ECC算法是否成功。如果硬件ECC算法能够校正数据页面中的所有差错,那么硬件ECC算法成功。然后,在步骤515,ECC引擎148存储ECC结果,例如将其存入SDRAM151。接下来,在步骤518,ECC引擎148产生一个用于指示"差错校正成功"的消息,并且该处理500结束。如果存在的差错比特数量超出了硬件ECC算法所能校正的差错比特数量,那么ECC引擎148会向模拟接口136发送一个消息,以便在步骤520中重新从闪存存储器中读取数据页面。接下来,在步骤525,ECC引擎148再次执行硬件ECC算法。在步骤530,ECC引擎148检查硬件ECC算法是否成功。如果硬件ECC算法可以校正,那么石更件ECC算法成功,并且该处理继续执行步骤515。在步骤530,如果ECC引擎148确定存在的差错比特数量超出硬件ECC算法可以校正的差错比特数量,那么ECC引擎148执行备选值命令,以便校正比特差错。关于备选值命令的例示实施方式是参考图6A6C来描述的。然后,ECC引擎148可以在步骤535中检查备选值命令是否校正了比特差错。如果ECC引擎148确定比特差错已被校正,那么处理继续执行步骤515。如果ECC引擎148确定比特差错未被校正,那么ECC引擎148可以在步骤540中执行扩展软件ECC算法,以便恢复数据页面。例如,扩展软件ECC算法可以包括使用更多ECC比特的更深的ECC算法。举个例子,硬件ECC算法有可能需要四个ECC比特,并且扩展软件ECC算法可以使用128个ECC比特。然后,ECC引擎148可以在步骤550中检查扩展软件ECC算法是否成功。如果ECC引擎148确定扩展软件ECC算法成功,那么该处理继续执行步骤515。如果在步骤550,扩展软件ECC算法没有成功,那么在步骤555,ECC引擎148将会产生一个消息"差错校正失败",并且处理500结束。图6A显示的是对产生和使用备选数据值的处理实例600进行描述的流程图。处理器112、ECC引擎148、闪存接口115或上述和其他部件的其他组合可以执行处理600中的操作。在步骤605,处理器112从掩码表中检索信息,以便识别数据页面中的不确定的数字数据值(相关实例参见图3B的步骤330),并且在某些情况下,该处理器还会检索与不确定程度相关的信息。然后,在步骤610,处理器112可以根据参数(例如温度、从数据页面读取的次数、向数据页面写入的次数、单元分辨率寄存器166中的信息、电源电压、电荷泵电压、数据页面中的基准电压等等)来检索校正数据。举个例子,处理器112可以通过计算一个校正函数来确定数据页面的校正数据。作为补充或替换,在步骤615中,处理器112可以使用校正数据来为每一个不确定的数据值确定备选数字值。每一个不确定数据值的备选数字值通常包括最接近的相邻数字值以及次接近的相邻数字值。此外,它还可以包括与所检测到的存储单元的模拟电压的数字表示相隔两个数字数据值的数字数据值。通常,并不是每一个存储单元都具有不确定的数据值。在步骤620,处理器112会在緩冲器中存储所识别的备选数字值,以及为具有确定数字数据值的存储单元存储的数字数据值。在存储了备选数字值之后,在步骤625,处理器112从緩冲器中选择备选数字值的组合。对备选数字值组合来说,其自身可以根据某种算法来选择,其中举例来说,所述算法尝试识别那些正确的可能性较大的备选数字值。这个选择算法可以使用涉及与每一个数字数据值相关联的不确定程度的数据。此外,无论是否使用此类选择算法,所选择的备选数字值组合都不必包含所有可能的备选数字值。换句话说,即使在被识别为不确定的数据值中,某些初始数据值也是可以与某些备选数据值子集一起使用的。接下来,在步骤630中,处理器112使用所选择的备选数字值组合以及结合用足够确定性确定的数字数据值将页面数据存入緩冲器。然后,在步骤635,处理器112对所存储的页面数据执行ECC算法。例如,处理器112可以执行处理500中描述的操作。在某些情况下,通过执行ECC算法,有可能会改变一个或多个备选数字值,甚至有35可能改变用某些确定性假设来确定的一个或多个数字数据值。在步骤640,处理器112将会确定ECC算法是否成功。如果处理器112确定ECC算法成功,那么在步骤645,处理器112将会存储具有成功的ECC结果的页面数据,并且处理600结束。在步骤640,如果处理器112确定ECC算法没有成功,那么在步骤650,处理器112将会确定是否可以尝试另一个备选值组合。可能的备选值组合的数量取决于具有不确定数字数据值的存储单元的数量以及所识别的备选数字值的数量。通常,大多数存储单元不具有不确定的数字数据值。如果处理器112确定可以尝试使用另一个备选值組合,那么该处理将会返回到步骤625。在步骤650,如果处理器112确定已经尝试了所有备选组合,那么处理器112会在步骤655中产生一个差错消息,并且处理600结束。在某些实施方式中,其中还可以产生附加备选值和/或调整用于读取各个数据值的电压阈值,以及重新尝试通过执行ECC算法来识别页面数据的校正值。例如,在这里可以为先前被确定成以足够确定性代表了某个值但却相对接近于数字值分布曲线205210之一(如在上文中右A图i▲!^":i'、Mi'3乂A—由/X士亚z在々夂血乂古AA扶4在夂入朵A字值分布曲线205210的电压阈值可以采用如上所述的方式来调整,并且可以重新产生数据值,这其中包括识别新的备选值。在某些实施方式中,步骤655中的差错消息被记录在NVM154的维护日志中。然后,在如图9所示的维护操作过程中,还可以产生附加备选值和/或调整用于读取各个数据值的电压阈值,以及重新尝试通过执行ECC算法来识别页面数据的校正值。然后,所识别的校正值可以用于重写数据。图6B显示的是对产生和使用备选值的另一个处理660的实例进行描述的流程图。处理660具有一些与处理600—样的步骤。在本实例中,在步骤605,在通过使用掩码表或以其他方式识别了不确定的数据值之后,在步骤665,处理器112将会使用最接近的相邻数字值来为每一个不确定值确定一个备选值。例如,处理器112可以使用数字值分布200(图2A)以及选择次接近的相邻数字值,以此来取代与单元电压最接近的相邻数字值。然后,处理器112通过执行以步骤620为开始并且结合图6A描述的操作来继续实施处理660。图6C显示的是对产生和使用备选值的另一个处理实例670进行描述的流程图。在本实例中,处理器112没有必要从掩码表中检索不确定的数字值信息。在步骤672中,该处理670是在处理器112接收到对选定页面执行备选值识别和分析的命令的时候开始的(相关实例参见图5的步骤535)。在步骤674,处理器112启动选定页面的读取。在步骤676,处理器112通过选择页面中的某个单元来读取单元电压。在步骤678,处理器112确定单元电压是否是不确定的。例如,处理器112可以使用图2A所示的数字值分布200来确定接收到的单元电压是否处于某一个灰色区域220。如果处理器112确定单元电压处于灰色区域,那么处理器112会在步骤680中使用第二最接近的数字数据值来确定该单元的数字数据值。在其他实施方式中,处理器112将会使用第一最接近的数字数据值来确定该单元的数字数据值。接下来,在步骤682,处理器112会将数字数据值存储在緩冲器中。在步骤678,如杲处理器112确定单元电压不在灰色区域内,那么在步骤684,处理器112将会根据已存储的阈值来确定该单元的数字数据值,并且处理器112将会执行步骤682。在步骤682之后,在步骤686中,处理器112将会确定是否读取页面中的另一个单元。如果处理器112确定读取另一个单元,那么该处理返回到步骤676。如果处理器112确定没有更多单元需要读取,那么处理670结束。图7A显示的是对4吏用基准单元130a、130b、130c而将数据写入闪存存储页面121的处理700的实例进行描述的流程图。处理700通常可以由处理器112来执行。处理700在步骤705开始,其中处理器112接收到一个写入命令。例如,写入命令可以包括写入指令、所要写入的数据、以及将被写入数据的存储地址,其中举例来说,所述地址可以是作为逻辑块地址而从主机接收的。然后,根据写入命令,处理器112会在步骤710中选择闪存存储器中的存储页面。接下来,在步骤715,处理器112可以将所要写入的数据拷贝到SDRAM151之类的緩冲器中。该数据可以是从外部主机设备或是别的存储页面传送的。在某些实施方式中,存储在选定存储页面上的数据被拷贝到緩冲器中,以便再拷贝回到选定页面中。在其他实施方式中,要写入选定存储页面的数据不会被拷贝到緩沖器中,而是直接从数据源(从外部主机设备或是从其他存储单元)写入到选定的存储页面。然后,在步骤725,处理器112将会擦除选定页面中存储的任何数据。在步骤730,处理器112将数据从緩冲器写入到选定的存储页面中,其中举例来说,所述写入是通过将电荷施加于数据单元124和基准单元130c来实施的。步骤730将根据期望数据值以及每一个单元的相应模拟电压电平来向存储单元施加不同的电荷量。在某些实施方式中,其中可以使用电荷泵来向选定存储页面中的存储单元施加电荷。然后,在步骤735,处理器读取选定页面中的基准单元130c的基准电压。该基准电压是通过检测基准单元130c中的电压电平而被读取的。在步骤740,处理器112检查基准电压是否小于目标电压。如果处理器112确定基准电压小于目标电压,那么该处理返回到步骤730,以便施加附加电荷,以及提高存储在选定存储页面的单元中的电压。所施加的附加电荷量可以根据期望电压电平在百分比上与一个或多个基准单元电压的比较来扩缩(举个例子,如果检测到的基准电压比目标低10%,并且特定存储单元应该具有双倍于基准单元的电压电平,那么施加于特定存储单元的附加电荷量可以是施加于基准单元的二倍)。在步骤740,如果处理器112确定基准电压不小于目标电压,那么在步骤745,处理器112将会选择一个数据单元,并且在步骤750中读取所选择的数据单元的电压。然后,在步骤755中,处理器112确定所读取的电压是否过高。例如,处理器112可以将所读取的单元电压与数字值分布相比较,并且检查单元电压是否处于目标数字值的38电压范围内。如果处理器112确定该电压并未过高,那么在步骤760,处理器确定是否选择另一个数据单元。如果处理器112确定没有必要选捧另一个数据单元,那么处理700结束。否则,处理700将会返回到步骤745,以便测试附加数据单元。在某些实施方式中,其中还可以测试在步骤745中选择的数据单元,以便确定它们是否过低。如果是的话,那么处理700可以返回到步骤730,以便将附加电荷施加于一个或多个数据单元。在某些实施方式中,一旦完成了步骤740中关于一个或多个基准单元的测试,那么在步骤745(或是步骤745的迭代重复)中将可以选择所有数据单元的电压电平,以便确定这些电平是否过高和/或过低。这样一来,基准单元可以用于执行页面或块的初始充电处理,其后跟随的是对单元中的电压电平进4亍测试,并且可以补偿配置(tweaking)该电压电平。此外,在某些实施方式中,在步骤740使用的基准单元的目标电压可以被设置成略低于期望数据值的阈值电压,以便尝试避免过度充电,并且其后跟随的是检查实际数据单元值以及将电压电平补偿配置成达到与实际数据单元的期望数据值相对应的电压电平。在步骤755,如果处理器112确定电压过高,那么处理器112将会确定是否有必要重写选定页面。例如,处理器112可以将比特差错数量与一个阈值相比较,其中该阈值小于或等于可以使用参考图5描述的校正算法之一来校正的差错数量。如果比特差错数量大于该阈值,则重写选定的页面。否则,处理器112可以确定不需要重写选定页面。在步骤765中,如果处理器112确定不需要重写页面,那么处理700将会继续执行步骤760。如果处理器112在步骤765中确定需要重写页面,那么处理700将会返回到步骤725,以便重新启动存储页面的写入处理。在某些实施方式中,在步骤765之后可以逐步降低目标电压,以便减小过调目标电压的可能性。图7B显示的是对在主机i殳备与MCP100之间实现更高数据传送速率的处理770的实例进行描述的流程图。在步骤772中,当处理器112接收到来自主机设备的写入命令时,该处理770开始执行。例39如,来自主机设备的写入命令可以包括写入指令,所要写入的数据,以及要写入数据的存储地址,其中举例来说,所述地址可以作为逻辑块地址而从主机那里进行接收。接下来,处理器112确定是否执行快速写入处理(例如以单等级单元分辨率或其他相对较低的分辨率来写入)或是以更高分辨率来使用时间更长、功率更大且处理器更为密集的写入处理。在步骤774,处理器112确定是否存在来自主机接口并且要求执行快速写入的命令。在某些实施方式中,主机设备还可以规定快速写入的分辨率。如果主机设备未规定快速写入,那么处理器112可以独立确定是否保证了快速写入。然后,步骤776将会确定MCP100或者与MCP100相连的主机设备是否满足预定电源条件。在所显示的实施方式中,步骤776确定是否为主机设备供应AC电源。在其他实施方式中,步骤776改为确定是否将一个为主机设备供电的电池充电至预定电荷。在某些实施方式中,步骤776将会确定是否将一个为主机设备供电的电池充电至最大容量或是至少90%的容量。然后,步骤778确定处理器112是否具有满足预定带宽条件的过剩带宽。在某些实施方式中,不同的是,如果处理器112空闲,则满足步骤778。在其他实施方式中,如果未使用预定百分比的处理器112的带宽,则满足步骤778。如果同时满足步骤776和778,那么在步骤780,处理将会使用处理700而以高分辨率写入存储单元。如果不满足条件776和778之一或是这二者,那么该处理将会执行快速写入过程。在快速写入过程中,在步骤782处理器112从主机设备中选择一个或多个可用存储单元页面,以便将数据写入其中。在某些实施方式中,处理器可以将数据从主机设备拷贝到SDRAM151之类的緩冲器。在其他实施方式中,来自主机设备的数据并没有被拷贝到緩冲器中,而是在步骤725和784之后在步骤786中被直接写入到选定的存储页面。在步骤725,处理器擦除存储在一个或多个选定页面中的任何数据。在步骤774,处理器112将与选定的一个或多个存储页面相关联的任何单元分辨率寄存器更新为低分辨率。在某些实施方式中,低分辨率将会是每存储单元1比特的分辨率。在其他实施方式中,低分辨率是每单元2、3或4比特。由于在为每一个存储单元充电的时候需要较低精度,因此,在将数据从主机设备拷贝到MCP100的时候,以较低分辨率写入将会提高数据传输速率,由此,在写入存储单元时需要的电压调整的关注度和总量可以减小。在以低分辨率将数据写入一个或多个存储单元之后,步骤784将会记录一个维护日志条目来指示在维护处理过程(处理卯0)中应该以较高分辨率来重新写入存储在选定存储页面中的数据。图8A显示的是对调整存储页面的单元分辨率的处理800的实例进行描述的流程图。举例来说,当处理器112通过执行维护程序来更新单元分辨率寄存器166时,该处理800可以执行处理800中的操作。在步骤805,处理800是在处理器112在步骤805中读取所存储的差错信息的时候开始的。该差错信息可以在读取出错或写入出错的过程中被存储,例如以图4步骤480描述的方式被存储。接下来,在步骤810中,处理器112将会选择一个页面。在步骤815,处理器112确定选定页面的差错计数是否大于阈值。如果选定页面的差错计数不大于该阈值,那么处理器112在步骤820中检查是否还有更多页面需要检查。如果处理器112确定没有更多页面需要检查,那么处理800结束。在步骤820,如果处理器112确定还有更多页面需要检查,那么该处理将会返回到步骤810。在某些实施方式中,处理器112可以检查带有差错的所有存储页面。在其他实施方式中,处理器112可以只检查带有在差错信息中记录的新差错的存储页面。在步骤815,如果选定页面的差错计数大于阁值,那么在步骤825,处理器112会将数据页面从选定页面拷贝到緩冲器中。接下来,处理器112将会更新单元分辨率寄存器166,以便降低选定页面的单元分辨率。例如,闪存接口115可以检查单元分辨率寄存器166,以便发现单元分辨率减小,然后,闪存接口115可以使用新的减小的单元分辨率来读取和写入选定页面。然后,在步骤835中,处理器112可以为所拷贝的数据指定物理41地址。取决于可用存储页面,处理器112可以指定一个、两个、四个或其他数量的物理存储页面,以便存储所拷贝的数据。接下来,处理器112在步骤840中更新逻辑地址表,以便与所指定的物理地址相对应。该逻辑地址表可以用于将逻辑页面映射到一个或多个物理页面。逻辑地址表在存储器存取操作过程中的例示使用是参考图10来描述的。在步骤845中,处理器112将所拷贝的数据从緩冲器移动到处于指定物理地址的页面。接下来,在步骤820中,处理器112确定是否还有更多页面需要检查。如果是的话,那么处理800返回到步骤810。否则,处理800结束。图8B描述的是与图8A中的处理相类似的处理,其中该处理关注的是一组降级的存储单元页面或块,以及在逻辑上将该组视为具有初始分辨率的存储单元的单个页面或块。在图8B中,处理860还会读取已存储的差错信息805,选择页面810,并且确定与页面相关联的差错计数是否超出阈值815。如果与页面相关联的差错计数超出阈值,则将存储在页面中的数据拷贝到緩冲器825,并且通过更新与该页面相关联的一个或多个单元分辨率寄存器来降低页面的分辨率830。但是,在图8B描述的实施方式中,处理器还会选择单元分辨率降低的另一个数据页面855,并且将会更新块管理代码和/或逻辑寻址代码,以便将这两个页面配对。然后,这两个单元分辨率降低的页面在逻辑上将被视为具有较高初始分辨率的单个页面。该处理可以将两个以上的存储单元页面集中在一起。在某些实施方式中,该处理将会降级整个存储单元块,并对其进行配对或以其他方式来将其关联。在某些实施方式中,每一个配对页面都具有相同的下调单元分辨率,并且包含了相同数量的存储单元。例如,从每一个存储单元存储8比特数据降级到每一个存储单元存储4比特数据的存储单元页面将会与每一个存储单元存储4比特数据的另一存储单元页面一起组成组。然后,这两个存储单元页面的组合在逻辑上被闪存盘控制器视为在每个存储单元上存储8比特数据的单个页面(或是单个块)。这些配对的存储单元页面没有必要处于相同的块,并且有可能处于不同的闪存存储颗粒上。接下来,处理860将会执行步骤820中确定是否还有更多存储页面需要检查的处理,并且将会按照图8A描述的相同方式来进行。图9是描述了维护处理900的流程图。对维护处理900来说,它的一个可能的功能是以相对较高的分辨率来重写那些以相对较低的分辨率存储在闪存存储器中的数据(相关实例参见图7B)。举例来说,该维护处理可以用于最大化主机设备的电池寿命,同时最大化数据存储容量。在某些实施方式中,维护处理900是由处理器作为按照惯例调度的维护操作的一部分来触发的。此外,在某些实施方式,维护处理卯O是由来自主机设备并且表明主机设备是用AC电源供电的信号触发的。在其他实施方式中,其他条件也可以使主机设备或处理器112触发维护处理900,例如空闲处理器112。处理900是以步骤卯5为开始的,其中该步骤可以确定MCP100是否是在预定电源条件(powercondition)下工作的。在某些实施方式中,这个电源条件是通过主机设备接收AC电源来满足的。在某些实施方式中,这个电源条件是通过主机设备电池满足预定电荷总量、例如电池电量完全充满来满足的。充满电的电池可以表明主机设备正在用AC电源供电。如果MCP100没有满足预定电源条件,那么处理900结束。接下来,在步骤910,处理器112可以确定该处理器112是否具有足够带宽来完全执行维护处理900。在某些实施方式中,维护操作仅仅是作为需要最小带宽的后台进程来运行的。在某些实施方式中,维护操作需要一个空闲处理器112。在其他实施方式中,处理卯0并未确定是否处理器112具有足够带宽。在某些实施方式中,带宽需要将会根据对于维护操作的需要而改变,其中所述需要可以用成功维护处理之间的时间或是闪存存储器上的可用空间量来量度。如果处理器112不具有足够带宽,那么处理900结束。如果满足预定电源条件,并且处理器112具有足够带宽,那么在步骤915,处理900可以读取已存储的维护日志。在某些实施方式中,已存储的维护日志被存储在NVM154中。在某些实施方式中,已存储的维护日志指示的是可能的维护操作的优先级。此外,在某些实施方式中,已存储的维护日志被用于确定是否可以在简化操作中执行任何维护步骤(例如步骤920、925、930和935)。例如,维护日志可以指示降级特定存储单元页面并重写同一存储单元页面上的数据的需要。在其他实施方式中,维护操作是一个预定序列,其中举例来说,该序列包括重写以较高分辨率传送的数据(步骤920);下调单元分辨率以及对页面组进行配对,其中举例来说,所述配对可以通过执行处理800和850来实施(步骤925);重写满足预定差错条件的数据(例如使用处理700)(步骤930);使用磨损管理软件代码157来交换最频繁存取的数据与最不频繁使用的数据(步骤935);为每一个将数据从一个物理位置移动到另一个物理位置的维护操作更新逻辑寻址软件代码163(例如使用处理1000)(步骤940);以及通过将附加电荷施加于存储单元页面来刷新那些超过阈值量的电压暂降的数据页面(步骤945)。同样可以使用其他那些包含了某些、所有或附加操作的序列。在某些实施方式中,处理900会在每一个维护步骤920、925、930、935或945之间重复执行步骤905和/或步骤910,如果条件905或910中有任何一个改变,那么该处理可以结束。然后,处理900将会结束。图10是描述在FDC106中执行逻辑寻址处理1000的实例的流程图。例如,FDC106可以将接收到的带有逻辑地址的读取或写入命令映射到一个或多个物理页面。在某些实施方式中,FDC106可以动态地将逻辑页面映射到一个或多个可变物理页面。例如,FDC106可以改变映射关系,以便平衡物理存储页面的负载。在某些实施方式中,逻辑页面与物理页面之间的映射可以存储在逻辑地址表中。在某些实施方式中,在处理器112执行逻辑寻址代码163的时候,处理1000可以由处理器112来执行。处理1000是在FDC接收来自主机设备的要求存取(例如读取、写入或擦除)存储页面的命令的时候开始的。然后,在步骤1005,处理器112接收一个逻辑页面地址,以便存取闪存存储器中的页面。接下来,在步骤1010中,处理器112确定与接收到的逻辑地址相关联的一个或多个物理页面地址。在一个实例中,接收到的逻辑页面地址可以只与一个物理页面地址相关联。在另一个实例中,接收到的逻辑页面地址可以与两个或更多物理页面相关联,这是因为物理页面具有少于正常分辨率的单元分辨率,或者物理页面在闪存存储器中是不连续的,亦或是它们处于不同块内或在不同颗粒上。然后,在步骤1015中,处理器112选择第一个已确定的物理页面地址。在步骤1020中,处理器112在选定的物理地址上读取页面数据。然后,在步骤1025,处理器112将页面数据存入主机输出緩冲器。在步骤1030,处理器112确定是否有必要存取另一个存储页面。举个例子,如果有一个以上的物理页面地址与逻辑页面地址相关联,那么处理器112可以存取另一个存储页面。在步骤1030中,如果处理器112确定有必要存取另一个存储页面,那么在步骤1035,处理器将会选择下一个已确定物理页面地址,并且该处理将会返回到步骤1020。否则,处理1000将会结束。图11显示的是包含了多个NAND闪存存储颗粒103和FDC106的例示系统1100。FDC106包括处于^^拟接口115内的复用器(MUX)1105以及电荷泵1110。虽然系统110(M皮显示成^f吏用了NAND闪存存储颗粒103,但是在系统1100中使用的某些技术同样适用于NOR闪存存储颗粒,或是NAND与NOR颗粒的组合。系统1100可以使用分立的IC来实施,或者它也可以部分或者完全集成到单个组件中。FDC106通过才莫拟接口115接收来自NAND闪存存储颗粒103的模拟数据。在本实例中,MUX1105接收多个模拟输入。在某些实施方式中,MUX1105接收来自多个闪存存储颗粒103的多个模拟输入。模拟接口115可以控制MUX1105,以便选择将要传送至ADC142的一个模拟输入。例如,模拟接口115可以根据接收到的读取命令来控制MUX1105。在写操作过程中,FDC106使用电荷泵1110来将电荷施加于其中一个NAND闪存存储颗粒103的存储单元。在某些实施方式中,电荷泵1110净皮适配成向多个闪存存储颗粒103上的存储单元提供电荷。例如,FDC106可以发送一个选择指定存储颗粒的控制信号,以便接收来自电荷泵1110的电荷。然后,当电荷泵1110施加电荷时,所选择的存储颗粒将会接收电荷。通过在多个颗粒103之间共享ADC1105和电荷泵1110,可以增大存储颗粒103的存储大小。此外,闪存存储颗粒103可以在没有ADC142和电荷泵1110的情况下以很低的成本来制造。在某些实施方式中,电荷泵1110可以集成在带有FDC106的颗粒上,或者单独安装在不同颗粒或不同基底上,例如安装在印刷电路板上。为了便于使用被适配成与多个闪存存储颗粒103—起使用的ADC1105和电荷泵1110,某些闪存存储颗粒103可以包括净皮适配成接收来自外部供电节点的编程电荷(programmingcharge)的输入。由此,闪存存储颗粒103不需要包含附加电路来改变或调整所供应的编程电荷。此外,闪存存储颗粒103还可以包括被适配成向闪存盘控制器106发送模拟电压信号的输出。在某些实施方式中,FDC106还可以包括一种用于向存储颗粒103中写入数据的电荷泵交织方法。图12显示了一个例示系统1200,其中该系统描述的是单独向NAND闪存存储颗粒103提供编程和逻辑级功率(logical-levelpower)的架构。系统1200包括电荷泵1110和低信号丢失(dropout)调节器(LDO)1205,其中该调节器接收来自电源1210的功率。如所示,NAND闪存存储颗粒103包括两个功率输入,即用于电荷泵电压(Vcp)的功率输入和用于逻辑电压(V1()gi<:)的功率输入。在某些实例中,Vcp可以远远大于V,。gie。举个例子,Vep可以是大约12~20V或是大约12-30V,并且V,。gie可以是大约13V。在某些实施方式中,Vcp的调整和当前需要有可能与V,。gic的调整和当前需要有很大区别。例如,NAND闪存存储颗粒103有可能需要V^c在低逻辑电压上具有密集调整(例如0.5。/。,1.0%,5%)的电压容限,以便将功耗、切换时间等等减至最小。此外,逻辑电压有可能在低电压电平上需要46高频旁路电容。相比之下,电荷泵供电调整需求可以介于约5%与10%之间,并且其需要很低频率和较高电压容限。为了向图12的系统提供便利,闪存存储颗粒103可以包括第一接口,用于接收有选择地对每一个闪存存储单元进行编程的功率,以及第二接口,用于接收提供给逻辑级电路的功率,以便选择在写操作过程中将要为之供应来自第一输入的功率的闪存存储单元。闪存盘控制器106可以包括用于以编程电压来向第一接口供电的第一电源,以及向第二接口供应逻辑级功率的第二电源。所述第一和第二电源可以位于闪存存储颗粒103的外部。虽然在这里描述了各种处理和技术的实施方式,但是其他实施方式也可以按不同的序列执行各步骤或是经过修改的装置,以便实现相同的主要功能。此外,虽然有时将不同处理中的操作描述成是由特定设备或元件来执行的,但是这些设备或元件仅仅是实例,并且在某些实施方式中,这些操作可以使用备选设备或元件来执行。在某些实例中,NAND闪存存储颗粒103还可以具有任何实际比特数量的分辨率,例如6、7、10、12比特的分辨率。在这里可以使用各种实施方式来执行结合闪存存储器的ECC操作,其中所述闪存存储器可以包括NAND闪存存储器、NOR闪存存储器、或是这些或其他非易失性存储器的组合。在MCP100中可以按彼此相邻的方式来堆叠和/或安装一种或多种闪存存储颗粒。本领域普通技术人员将会了解,这里描述的某些技术实例还可以很有利地适用于NAND闪存技术,并且这里描述的某些方法通常还可以应用于NAND和/或NOR闪存之类的非易失性存储器。在这里参考上图描述了可以是^l携式的系统实例,但是其他实施方式也可以部署在台式机和联网安装之类的其他处理应用中。虽然在这里描述了特定的架构特征,但是也可以引入其他特征,以便改进性能。例如,在FDC106中可以使用高速緩存(例如L1、L2.......)技术。此外,举例来说,通过包含随机存取存储器,可以提供便笺式存储器和/或加栽存储在闪存存储器中的可执行代码或参47数信息,以便在运行时操作中使用。此外,通过提供其他硬件和软件,还可以执行如下操作,例如使用了一种或多种协议的网络或其他通信、无线(例如红外)通信、已存储工作能量和电源供应(例如电池)、切换和/或线性供电电路,软件维护(例如自检测、升级等等)等等。在支持数据存储和相关操作的过程中,其中还可以提供一个或多个通信接口。在某些实施方式中,可以使用一种方法或是方法组合来提高数据完整性。例如,通过将阈值和/或重写单元调整至少一次,可以寻址单元电压差错。单元重写可以响应于与理想单元电压的偏差和/或作为后台活动来执行。举个例子,通过重写多级单元电压,可以刷新页面中的一个或多个有损单元的电压。对于那些被表征为倾向于随着时间的流逝而会丧失电压的单元来说,这些单元所要充电的电压电平可以被升压,以便接近于每一个单元范围的上限,由此补偿这些单元中随着时间的流逝所导致的预期电荷损失。所升压的电压电平在初始时可以位于预定范围的上限的附近或是其上,其中所述上限可以位于范围之间的灰色区域。根据所估计或确定的损失速率,在这里可以足够频繁地重写数据,以便将单元电压基本保持在期望范围以内。相似的补偿可以用于补偿那些^皮表征成具有上漂移的单元。作为例示,这些重写过程可以作为低优先级的后台进程来执行,其中所述后台进程是在资源可用的时候执行的。对于那些被识别为高值数据的数据来说,在这里可以将重写处理调度成足够频繁地发生,以便将单元电压保持在期望范围以内,其中该频率是以预期电压漂移速率以及与每一个比特电平相关联的电压范围大小为基础的。在某些实施方式中,当便携设备与外部电源耦合、例如在其与源自电力网的电源相耦合的时候,重写处理可以被配置成更频繁地执行。重写操作也可以响应于与此类电源的耦合而被执行。此外,重写处理还可以被配置成在某些情况下不那么频繁地执行,例如在节电模式、在低电池条件下、或者在存储持续时间短或是不重要的数据(例如流式音频/视频)的时候。某些系统可以作为一个能与本发明的实施方式结合使用的计算施方式可以包括数字和/或才莫拟电路、计算机硬件、固件、软件或是其组合。装置可以在有形地具体化为信息栽体、例如在具体化为机器可读存储设备或传播信号的计算机程序产品中实施,其中举例来说,该产品是由可编程处理器来执行的;此外,这里的方法可以由可编程处理器来执行,其中该处理器作用于输入数据并且产生输出,以便通过执行指令程序来实施本发明的功能。非常有利的是,本发明可以在一个或多个计算机程序中运行,其中该程序可以在包含在至少一个可编程处理器的可编程系统上执行,并且该处理器被耦合成从数据存储系统、至少一个输入设备和/或至少一个输出设备接收数据和指令,并且向其传送数据和指令。计算机程序是一组指令,该指令可以直接或间接地在计算机中使用,以便执行某些活动或是产生某个结果。计算机程序可以用任何形式的编程语言编写,包括编译或解释语言,并且它可以用任何形式来部署,包括独立程序或模块、组件、子例程或是适合在计算环境中使用的其他单元。例如,用于执行指令程序的适当处理器包括通用和专用微处理器,这些处理器可以包括单个处理器或是任何类型的计算机的多个处理器之一。通常,处理器接收来自只读存储器、随机存取存储器或是这二者的指令和数据。计算机的基本部件是用于执行指令的处理器,以及用于存储指令和数据的一个或多个存储器。一般来说,计算机还包括或者以可操作方式耦合成与用于存储数据文件的一个或多个大容量存储设备进行通信;此类设备包括磁盘,例如内部硬盘和可移除盘;磁光盘;以及光盘。适合有形地具体化计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,其中举例来说,该存储器可以是半导体存储设备,例如EPROM、EEPROM和闪存存储i殳备;/磁盘,例如内部硬盘和可移除盘;石兹光盘,以及CD-ROM和DVD-ROM盘。处理器和存储器可以由ASIC(专用集成电路)补充或是集成在其内。在某些实施方式中,每一个系统100都可以用相同或相似信息编程,和/或使用存储在易失性和/或非易失性存储器中的基本相同的信49息来初始化。例如,在与恰当主机设备、例如与台式计算机或服务器相耦合时,一个数据接口可以被配置成执行自动配置、自动下载和/或自动更新功能。在某些实施方式中,一个或多个用户界面特征可以被定制配置成执行具体功能。本发明可以在包含图形用户界面和/或因特网浏览器的计算机系统中实施。为了提供与用户的交互,某些实施方式可以在这样一种计算机上实施,其中该种计算机具有向用户显示信息的CRT(阴极射线管)或LCD(液晶显示器)监视器之类的显示设备、键盘、以及可供用户向计算机提供输入的鼠标或轨迹球之类的指示设备。在各个实施方式中,系统100可以使用适当的通信方法、仪器和技术来进行通信。举个例子,系统100可以使用点对点通信来与兼容设备(例如能够传送往来于系统100的数据的设备),其中在点对点通信中,数据是直接从信源经由专用物理链路(例如光纤链路、点对点布线、菊花链(daisychain))而^L传送到接收机。该系统的组件可以通过模拟或者数字数据通信的任何形式或者介质来交换信息,包括通信网络上基于分组的消息。通信网络的实例包括LAN(局域网)、WAN(广域网)、MAN(城域网)、无线和/或光学网络,以及形成因特网的计算机和网络。其他实施方式可以通过将消息广播至所有设备或者基本上广播给通过通信网络耦合在一起的所有设备来运送数据,例如,可以使用全向射频(RF)信号来广播。其他实施方式可以传送表征为具有高方向性的消息,例如使用定向(也就是窄波束)天线或红外信号传送的RF信号,其中作为选择,该信号可以与聚焦光学器件结合使用。此外,其他那些使用恰当接口和协议的实施方式也是可以实现的,例如,该接口包括但不限于USB2.0、火线、ATA/IDE、RS-232、RS-422、RS485、802.11a/b/g、Wi-Fi、以太网、IrDA,FDDI(光纤分布式数据接口)、令牌环网、或是基于频分、时分或码分的复用技术。作为选择,某些实施方式可以引入如下特征,例如用于数据完整性的差错检查和校正(ECC),或是诸如加密(例如WEP)和密码保护之类的安全量度。在这里描述了本发明的众多实施方式。但是应该理解,在不脱离本发明的精神和范围的情况下,各种修改都是可行的。例如,如果所公开技术的步骤是以不同的序列执行的,如果所公开系统中的元件是以不同方式组合的,或者如果使用了其他元件来替换或补充这些元件,那么也将会实现有利的结果。这些功能和处理(包括算法)可以在硬件、软件或软硬件组合中实施,并且某些实施方式可以在与这里描述的模块或硬件不相等同的模块或硬件上执行。权利要求1.一种管理多级闪存存储设备的方法,所述闪存存储设备包括多个存储单元,所述方法包括检测来自第一存储单元的电压电平,所述第一存储单元存储达到代表数据值的电压电平的电荷;确定电压电平所代表的数据值,其中所述数据值是至少部分基于与第一存储单元相对应的分辨率寄存器条目来确定的;将电荷施加于所述多个存储单元中的至少一个,以便达到代表数据值的目标电压,其中所述目标电压是至少部分基于与所述多个存储单元中的至少一个相对应的分辨率寄存器条目来确定的。2.根据权利要求1所述的方法,其中所述多个存储单元中的至少一个是第一存储单元,并且将电荷施加于第一存储单元的操作包括将附加电荷施加于第一存储单元,以便调整第一存储单元中的电压暂降。3.根据权利要求2所述的方法,还包括通过检测基准单元中存储的基准电压电平来确定笫一存储单元中的暂降量。4.根据权利要求3所述的方法,其中基准单元与相应的预定电压电平相关联,并且所述暂降量是通过将预定电压电平与存储在基准单元中的检测到的电压电平相比较来确定的。5.根据权利要求3所述的方法,其中所述暂降量是通过检测在多个基准单元中存储的电压电平来确定的。6.根据权利要求2所述的方法,其中施加给第一存储单元的附加电荷量是基于校正函数确定的。7.根据权利要求1所述的方法,还包括从主机设备接收启动维护操作的信号,其中响应于接收到的信号,执行将电荷施加给所述多个存储单元中的至少一个存储单元来达到代表数据值的目标电压。8.根据权利要求7所述的方法,其中来自主机设备的信号指示的是电源条件。9.根据权利要求8所述的方法,其中来自主机设备的信号指示的是主机设备是否是用交流电源供电。10.根据权利要求8所述的方法,其中来自主机设备的信号指示的是主机设备的电池是否充电至预定电荷等级。11.根据权利要求7所述的方法,其中来自主机设备的信号指示的是所调度的维护操作。12.根据权利要求1所述的方法,还包括接收从闪存存储器处理器接收启动维护操作的信号,其中响应于接收到的信号,执行将电荷施加给所述多个存储单元中的至少一个来达到代表数据值的目标电压。13.根据权利要求12所述的方法,其中来自闪存存储器处理器的信号指示该闪存存储器处理器具有足够带宽来执行维护操作。14.根据权利要求13所述的方法,其中来自闪存存储器处理器的信号指示的是该闪存存储器处理器空闲。15.根据权利要求1所述的方法,其中与第一存储单元相对应的分辨率寄存器条目指示的是第一分辨率,所述第一分辨率对应于第一可能数据值数量;该方法还包括接收一个以第二分辨率写入的信号,所述第二分辨率对应于第二可能数据值数量;以及更新与所述多个存储单元中的至少一个相对应的分辨率寄存器条目,以便指示第二分辨率,其中目标电压基于第二分辨率。16.根据权利要求15所述的方法,其中第一可能数据值数量大于第二可能数据值数量,并且其中所述多个存储单元中的至少一个包括从所述多个存储单元中选出的多于一个的存储单元。17.根据权利要求15所述的方法,其中第一可能数据值数量等于第二可能数据值数量,并且其中所述多个存储单元中的至少一个包括与第一存储单元不同的存储单元。18.根据权利要求15所述的方法,其中第二可能数据值数量超过第一可能数据值数量。19.根据权利要求18所述的方法,其中第一可能数据值数量不超过4比特。20.根据权利要求19所述的方法,其中第一可能数据值数量是2比特。21.根据权利要求19所述的方法,其中第一可能数据值数量是1比特。22.根据权利要求18所述的方法,其中第二可能数据值数量至少是4比特。23.根据权利要求18所述的方法,其中第二可能数据值数量至少是8比特。24.根据权利要求18所述的方法,其中以第一分辨率存储在第一存储单元中的数据值是写入操作的结果,在该操作中,从主机设备接收的数据被写入到闪存存储设备中。25.根据权利要求1所述的方法,还包括接收来自主机设备的信号,以便将从主机设备接收的数据写入闪存存储设备;以第一分辨率将从主机设备接收的数据值写入第一存储单元,所述第一分辨率对应于第一可能数据值数量;将第一分辨率记录在与第一存储单元相对应的分辨率寄存器中;接收一个信号,以便以第二分辨率写入,所述第二分辨率对应于第二可能数据值数量,其中所述第二可能数据值数量超过第一可能数据值数量;以及更新与所述多个存储单元中的至少一个相对应的分辨率寄存器,以便指示第二分辨率,其中目标电压基于第二分辨率。26.根据权利要求25所述的方法,还包括从主机设备接收指示主机设备电源条件的信号。27.根据权利要求1所述的方法,其中与第一存储单元相对应的分辨率寄存器条目指示的是第一分辨率,所述第一分辨率对应于第一可能数据值数量;该方法还包括更新与第一存储单元相关联的分辨率寄存器条目,以便指示第二分辨率,所述第二分辨率对应于第二可能数据值数量,其中第一可能数据值数量大于第二可能数据值数量;以及以第二分辨率将第二数据值写入第一存储单元。28.根据权利要求27所述的方法,其中更新与第一存储单元相关联的分辨率寄存器条目和以第二分辨率写入第一存储单元是由与存储单元页面相关联的差错条件触发的,其中存储单元页面包括第一存储单元。29.根据权利要求28所述的方法,其中存储单元页面与降级的存储单元的第二页面配对;该方法还包括更新逻辑寻址软件代码,以便将存储单元页面配对视为处于第一分辨率的单个存储单元页面。30.—种包含机器可读指令的制品,其中在被执行时,该指令使操作被执行,所述操作包括确定是否执行维护操作;在确定应该执行维护操作时,作为响应,识别与存储单元页面相关联的差错信息;确定差错信息是否满足差错判据;以及将对应于存储单元页面的一个或多个分辨率寄存器从第一分辨率调整到第二分辨率,所述第一和第二分辨率中的每一个都定义了多个电压范围,每一个电压范围都对应于一个可能数据值,所述第一分辨率具有的电压范围多于第二分辨率的电压范围。31.根据权利要求30所述的制品,其中确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源。32.根据权利要求31所述的制品,其中预定条件包括主机设备接收交流电源。33.根据权利要求31所述的制品,其中预定条件包括主机设备具有充电至预定电荷等级的电池。34.根据权利要求30所述的制品,其中确定是否执行维护操作包括确定处理器是否具有超过预定阈值的未使用带宽。35.—种用于调整已存储数据值中的暂降的方法,该方法包括将电荷施加于多个存储单元,每一个存储单元都被充电至与数据值相对应的目标电压,所述多个存储单元包括基准单元,所述基准单元,皮充电至预定电压;检测基准单元中的电压电平;检测来自存储单元组的电压电平;以及基于在基准单元中检测到的电压电平与预定电压之间的差值而将附加电荷施加于多个存储单元。36.根据权利要求35所述的方法,还包括检测第二基准单元中的电压电平,其中将附加电荷施加于多个存储单元进一步基于在第二基准单元中检测到的电压电平以及预定的第二基准单元电压。37.根据权利要求35所述的方法,其中所述多个存储单元包括NAND闪存存储单元。38.根据权利要求35所述的方法,其中所述多个存储单元包括NOR闪存存储单元。39.根据权利要求35所述的方法,其中每一个数据值都包括多于四个的比特。40.—种用于数据存储的系统,该系统包括多个存储单元,每一个存储单元都被适配成在写入操作过程中接收电荷,以便达到与具有指定数量的比特的数据值相对应的电压电平;与所述多个存储单元相关联的分辨率寄存器,该分辨率寄存器包括多个条目,每一个条目指示的是存储在一个或多个相应存储单元中的比特数量;主机接口,它被适配成从主机设备接收信号,该信号指示的是主机设备的电源条件;以及处理器,它被适配成将数据值重写到所述多个存储单元中,以及响应于指示预定电源条件的信号而将分辨率寄存器从指示第一比特数量调整成指示第二比特数量。41.根据权利要求40所述的系统,还包括逻辑寻址软件代码,用于将从主机设备接收的逻辑地址转换成物理地址,以便存取数据。42.根据权利要求40所述的系统,其中主机接口还被适配成接收来自主机设备的命令,以及与主机设备交换数据。43.根据权利要求40所述的系统,其中所述多个存储单元包括NAND闪存存储单元。44.一种包含机器可读指令的制品,其中在被执行时,该指令使操作被执行,所述操作包括确定是否执行维护操作;读取与多个闪存存储单元相关联的维护日志;执行记录在维护日志上的维护活动,其中该维护活动是从包含下列各项的組中选出的以更高分辨率来重写初始以较低分辨率存储的数据值;降低与预定差错条件相关联的存储单元组的分辨率;以与初始数据值相等同的分辨率重写超过预定差错阈值的数据值;交换最频繁存取的数据与最不频繁存取的数据;以及通过将附加电荷施加于存储单元来刷新数据值,以便校正电压暂降。45.根据权利要求44所述的制品,其中确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源。46.根据权利要求45所述的制品,其中预定条件包括主机设备接收交流电源。47.根据权利要求45所述的制品,其中预定条件包括主机设备具有充电至预定充电等级的电池。48.根据权利要求44所述的制品,其中确定是否执行维护操作包括确定内部处理器是否具有超过预定阈值的未使用带宽。49.根据权利要求44所述的制品,其中所述操作还包括在一个或多个维护活动中,为那些被重新写入到不同物理存储单元的数据值更新逻辑寻址软件代码。全文摘要本发明涉及多级数据存储单元的维护操作。包括计算机软件的用于从闪存存储单元(124)中读取数据的系统和方法涉及检测来自存储单元组的电压。该组存储单元具有用于差错检测(605)的相关元数据,并且每一个存储单元都存储了一个电压,该电压代表的是从多个可能数据值中选出的一个数据值。每一个可能的数据值都与多个非重叠模拟电压范围中的一个范围相对应。具有不确定数据值的存储单元是根据检测到的电压来识别的(610)。对于具有不确定数据值的存储单元来说,其备选数据值将被确定(615)。备选数据值的组合将被选择(625),并且使用与存储单元相关联的元数据以及选定的备选数据值组合来执行差错检查(635)。文档编号G11C11/56GK101484947SQ200780024848公开日2009年7月15日申请日期2007年5月14日优先权日2006年5月15日发明者C·P·杜得特,M·J·康威尔申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1