CN101484947A - 多级数据存储单元的维护操作 - Google Patents

多级数据存储单元的维护操作 Download PDF

Info

Publication number
CN101484947A
CN101484947A CNA2007800248486A CN200780024848A CN101484947A CN 101484947 A CN101484947 A CN 101484947A CN A2007800248486 A CNA2007800248486 A CN A2007800248486A CN 200780024848 A CN200780024848 A CN 200780024848A CN 101484947 A CN101484947 A CN 101484947A
Authority
CN
China
Prior art keywords
storage unit
resolution
data value
voltage
processor
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.)
Granted
Application number
CNA2007800248486A
Other languages
English (en)
Other versions
CN101484947B (zh
Inventor
M·J·康威尔
C·P·杜得特
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Priority to CN201210212473.9A priority Critical patent/CN102768853B/zh
Priority to CN201210212474.3A priority patent/CN102779554B/zh
Publication of CN101484947A publication Critical patent/CN101484947A/zh
Application granted granted Critical
Publication of CN101484947B publication Critical patent/CN101484947B/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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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/5642Sensing or reading circuits; Data output 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/30Power supply circuits
    • 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

Abstract

本发明涉及多级数据存储单元的维护操作。包括计算机软件的用于从闪存存储单元(124)中读取数据的系统和方法涉及检测来自存储单元组的电压。该组存储单元具有用于差错检测(605)的相关元数据,并且每一个存储单元都存储了一个电压,该电压代表的是从多个可能数据值中选出的一个数据值。每一个可能的数据值都与多个非重叠模拟电压范围中的一个范围相对应。具有不确定数据值的存储单元是根据检测到的电压来识别的(610)。对于具有不确定数据值的存储单元来说,其备选数据值将被确定(615)。备选数据值的组合将被选择(625),并且使用与存储单元相关联的元数据以及选定的备选数据值组合来执行差错检查(635)。

Description

多级数据存储单元的维护操作
技术领域
这里的各种实施方式主要涉及非易失性存储设备,并且某些特定实施方式涉及的是用于操作多级闪存单元的系统和方法。
背景技术
随着计算设备能力和特征的提升,对数据存储设备的需求也在增长。例如,数据存储设备业已用于存储可以由处理器执行的程序指令(也就是代码)。此外,数据存储设备还用于存储其他类型的数据,其中包括例如音频、图像和/或文本信息。近来,具有能够存储大量数据内容(例如歌曲、音乐视频等等)的数据存储设备的系统在便携设备中已经可以广泛使用。
这些便携设备包括具有很小的形状因子并且能用电池之类的便携电源操作的数据存储设备(data storage device,DSD)。便携设备中的某些DSD可以提供非易失性存储器,该存储器能在从电源断开的时候保持数据。便携设备已经使用了各种非易失性数据存储设备,例如硬盘驱动器、EEPROM(电可擦写可编程只读存储器)和闪存存储器(flash memory)。
闪存存储器已经成为一种广泛使用的DSD。例如,闪存存储器可以在便携电子设备和消费应用中提供非易失性存储器。目前存在的两种类型的闪存存储器是NOR闪存(flash)和NAND闪存。NOR闪存通常提供的是原地执行代码的能力,并且它是可以被随机存取的(也就是类似于RAM)。而NAND闪存通常可以更快擦除数据以及以脉冲串的形式(例如512字节的组块)存取数据,此外,与类似的NOR闪存相比,它可以提供更长寿命的擦除周期。NAND闪存通常能以很低的每比特成本来提供非易失性存储,以此作为例如数码相机和MP3播放器这类消费设备的高密度文件存储介质。
典型的闪存存储器是通过在每一个存储单元(memory cell)中将电荷存储在代表数字数据值的电压上来存储一个单位的信息的。对单级单元来说,它是基于将其充电成“高”电压或者放电成“低”电压来存储一比特信息的。对NAND闪存存储器来说,已开发的NAND闪存存储器能够对电荷进行解码,使之处于四个不同电压范围之一,从而在单个单元中存储两比特之多的信息。此外,对NOR闪存存储器来说,已开发的NOR闪存存储器能够对电荷进行解码,使之处于256个不同电压范围之一,由此就能在单个单元中存储8比特之多的信息。
发明内容
所描述的装置和相关联的系统、方法及计算机程序产品涉及的是闪存存储设备中的多级数据存储。
在一个通常方面中,通过检测来自第一存储单元的电压电平,可以对包含了多个存储单元的多级闪存存储设备进行管理,其中所述第一存储单元存储了达到代表数据值的电压电平的电荷。该电压电平所代表的数据值至少部分是根据与第一存储单元相对应的分辨率寄存器条目(resolution register entry)来确定。电荷被施加于一个或多个存储单元,以便达到代表数据值的目标电压。该目标电压至少部分是根据与一个或多个存储单元相对应的分辨率寄存器条目来确定的。
本实施方式可以包括一个或多个下列特征。所述一个或多个存储单元是第一存储单元,并且将电荷施加于第一存储单元的操作包括:将附加电荷施加于第一存储单元,以便调整第一存储单元中的电压暂降(voltage sag)。通过检测存储在基准单元中的基准电压电平,可以确定第一存储单元中的暂降量。该基准单元与相应的预定电压电平相关联,并且暂降量是通过将预定电压电平与检测到的存储在基准单元中电压电平相比较来确定的。暂降量是通过检测存储在多个基准单元中的电压电平来确定的。施加于第一存储单元的附加电荷量是根据一个校正函数来确定的。
从主机设备接收一个启动维护操作的信号,响应于接收到的信号,电荷将被施加于一个或多个存储单元,以便达到代表数据值的目标电压。来自主机设备的信号指示的是电源条件。这个来自主机设备的信号指示了是否用交流电源为主机设备供电和/或是否将主机设备的电池充电至预定电荷等级。此外,来自主机设备的信号还指示了所调度的维护操作。
从闪存存储器处理器接收启动维护操作的信号,响应于接收到的信号,电荷将被施加于一个或多个存储单元,以便达到代表数据值的目标电压。这个来自闪存存储器处理器的信号指示的是该闪存存储器处理器具有足够带宽来执行维护操作。此外,来自闪存存储器处理器的信号还指示该闪存存储器处理器空闲。
与第一存储单元相对应的分辨率寄存器条目指示的是与第一可能数据值数量相对应的第一分辨率。接收以与第二可能数据值数量相对应的第二分辨率写入的信号,并且更新与一个或多个存储单元相对应的分辨率寄存器条目,以便指示该第二分辨率。目标电压基于第二分辨率。第一可能数据值数量大于第二可能数据值数量,并且所述一个或多个存储单元包含从多个存储单元中选出的多于一个的存储单元。作为替换,第一可能数据值数量等于第二可能数据值数量,并且所述一个或多个存储单元包含了与第一存储单元不同的存储单元。第二可能数据值数量超过第一可能数据值数量。第一可能数据值数量不超过4比特;例如,第一可能数据值数量是2比特或1比特。第二可能数据值数量至少是4比特;例如,第二可能数据值数量至少是8比特。以第一分辨率存储在第一存储单元中的数据值是将从主机设备接收的数据写入闪存存储设备的写入操作的结果。
从主机设备接收将从主机设备接收的数据写入闪存存储设备的信号。从主机设备接收的数据值是以与第一可能数据值数量相对应的第一分辨率而被写入到第一存储单元中的,并且所述第一分辨率被记录在与第一存储单元相对应的分辨率寄存器中。以与第二可能数据值数量相对应的第二分辨率写入的信号将被接收,并且第二可能数据值数量超过第一数据值数量。与一个或多个存储单元相对应的分辨率寄存器被更新,以便指示第二分辨率,并且目标分辨率基于第二分辨率。从主机设备接收指示主机设备的电源条件的信号。
与第一存储单元相对应的分辨率寄存器条目指示的是与第一可能数据值数量相对应的第一分辨率。与第一存储单元相关联的分辨率寄存器条目被更新,以便指示与第二可能数据值数量相对应的第二分辨率,并且第一可能数据值数量大于第二可能数据值数量。第二数据值以第二分辨率被写入第一存储单元。对更新与第一存储单元相关联的分辨率寄存器条目和以第二分辨率写入第一存储单元的处理来说,这些处理是由与包含第一存储单元的存储单元页面相关联的差错条件触发的。存储单元页面与降级存储单元的第二页面进行配对。此外,逻辑寻址软件代码被更新,以便将存储单元页面配对视为处于第一分辨率的单个存储单元页面。
在另一个通常方面中,确定是否执行维护操作。在确定应该执行维护操作时,作为响应,与存储单元页面相关联的差错信息被识别,并且确定该差错信息是否满足差错判据。与存储单元页面相对应的一个或多个分辨率寄存器被从第一分辨率调整到第二分辨率。所述第一和第二分辨率中的每一个都定义了多个电压范围,并且每一个电压范围都对应于一个可能的数据值。与第二分辨率相比,第一分辨率具有更多的电压范围。
本实施方式可以包括一个或多个下列特征。确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源,例如主机是否正在接收交流电源或者主机设备是否具有充电至预定电荷等级的电池。确定是否执行维护操作包括确定处理器是否具有超过预定阈值的未使用带宽。
在另一个通常方面中,针对已存储数据值暂降所进行的调整可以通过将电荷施加于多个存储单元来实施。每一个存储单元都被充电至与数据值相对应的目标电压。这些存储单元包括基准单元,其中所述基准单元被充电至预定电压。基准单元中的电压电平被检测,此外还会检测来自一组存储单元的电压电平。基于在基准单元中检测到的电压电平与预定电压之间的差值,向存储单元施加附加电荷。
本实施方式还可以包括一个或多个下列特征。第二基准单元中的电压电平被检测。将附加电荷施加于存储单元的处理进一步基于在第二基准单元中检测到的电压电平以及预定的第二基准单元电压。该存储单元是NAND闪存存储单元或NOR闪存存储单元。并且每一个数据值都包括多于四个的比特。
在又一个通常方面中,数据被存储在多个存储单元中。每一个存储单元都被适配成在写入操作中接收电荷,以便达到与具有规定比特数量的数据值相对应的电压电平。与存储单元相关联的分辨率寄存器包含多个条目,每一个条目都指示了存储在一个或多个相应存储单元中的多个比特。主机接口被适配成接收来自主机设备的信号,其中该信号指示的是主机设备的电源条件。处理器被适配成将数据值重新写入存储单元,以及响应于指示预定电源条件的信号,将分辨率寄存器从指示第一比特数量调整为指示第二比特数量。
本实施方式可以包括一个或多个下列特征。逻辑寻址软件代码将从主机设备接收的逻辑地址转换成在存取数据的过程中使用的物理地址。主机接口还被适配成接收来自主机设备的命令,以及与主机设备交换数据。
在另一个通常方面中,确定是否执行维护操作。与多个闪存存储单元相关联的维护日志被读取。记录在维护日志上的维护活动被执行。该维护活动可以包括下列各项中的一项或多项:以更高分辨率来重新写入初始以较低分辨率存储的数据值;降低与预定差错条件相关联的存储单元组的分辨率;以与初始数据值相同的分辨率来重新写入超过预定差错阈值的数据值;将最频繁存取数据与最不频繁存取的数据进行交换;或者通过向存储单元施加附加电荷来校正电压暂降,以便刷新数据值。
本实施方式还可以包括一个或多个下列特征。确定是否执行维护操作包括确定主机设备是否具有满足预定条件的电源,例如主机设备是否接收交流电源,或者主机设备是否具有充电至预定电荷等级的电池。确定是否执行维护操作包括确定内部处理器是否具有超过预定阈值的未使用带宽。对于在一个或多个维护活动中被重新写入到不同物理存储单元的数据值来说,这些数据值的逻辑寻址软件代码被更新。
某些实施方式可以提供一个或多个优点。例如,某些实施方式可以提供高性能数据存储功能。存储密度和/或容量可以增加。某些实例可以提供改善的可靠性和/或降低的数据差错率。某些实施方式可以允许提高的集成等级、小型化、减小的电磁噪声和/或改进的噪声余量。某些实施方式可以在辅助系统中实现更低的系统成本,例如提供给逻辑和/或编程/擦除电路的电压供应。
在附图和后续描述中将会阐述本发明的一个或多个实施方式的细节。从该描述和附图以及权利要求中可以显见本发明的其他特征。
附图说明
图1显示的是包含NAND闪存存储颗粒(die)和闪存盘(flashdisk)控制器的多芯片组件架构的实例。
图2A~2B共同地显示了单元电压与存储在存储单元中的数字值之间的映射。
图3A~3B显示的是对从多级单元闪存存储器中读取数据页面的处理实例进行描述的流程图。
图4显示的是对从闪存存储器中读取数据页面的处理实例进行描述的流程图。
图5显示的是对通过执行差错校正操作来校正包含比特差错的数据页面的处理实例进行描述的流程图。
图6A~6C共同地显示了用于执行备选值命令的操作实例。
图7A~7B显示的是对将数据写入闪存存储页面的处理实例进行描述的流程图。
图8A~8B显示的是对调整存储页面的单元分辨率的处理实例进行描述的流程图。
图9显示的是描述维护处理实例的流程图。
图10显示的是对在闪存盘控制器中实施的逻辑寻址处理实例进行描述的流程图。
图11显示的是包含了处于NAND闪存存储颗粒外部的电荷泵和模数转换器的系统实例。
图12显示的是包含了在NAND闪存存储颗粒上的去耦电源输入的系统实例。
在不同的图中,相似的附图标记指示的是相似的部件。
具体实施方式
这里的不同实施例涉及的是能够在深多级单元(MLC)中存储信息的闪存存储器。深多级单元可以根据单元电压来编码至少若干个数据比特。某些实施方式涉及的是用于实施包括深MLC闪存存储器的系统的架构。某些实施方式涉及的是用深MLC闪存存储器来执行数据存储操作的技术。
图1显示的是为主机设备(未显示)提供数据存储的多芯片组件(multi-chip package,MCP)100的一个实例。MCP 100包括用于存储数据的NAND闪存存储颗粒103,以及有助于响应来自主机的读取和/或写入命令来访问闪存存储器的闪存盘控制器(Flash DiskController,FDC)106。在某些实施方式中,NAND闪存存储颗粒103将数据存储在深MLC中。例如,闪存存储颗粒103中的单元可以保持3、4、5、6、7、8、9、10个或更多的信息比特。MCP 100可以在各种便携设备中提供数据存储,其中举例来说,所述便携设备可以是数码相机、其他图像存储设备、便携音频设备、个人数字助理(PDA)以及数字摄像机。某些实施方式还可以在其他应用中使用,这些应用的实例可以包括台式计算机、服务器、无线路由器或是嵌入式应用(例如汽车),特别地,在需要快速存取数据的情形中,这些应用实例也是可以使用的。通常,通过实施依照这里描述的实例的装置和技术,可以提高闪存存储器密度和/或实现高性能和/或可靠的非易失性数据存储操作。
作为说明性实例,MCP 100可以通过在闪存存储器的单元组(例如,按页或块)的每一个单元中存储一个字节的信息(也就是8比特)来存储数据文件。某些其他实例可以具有16比特、32比特、64比特或更高的分辨率。在某些实施方式中,分辨率可以通过单元栅极上的单个或多个电子检测来确定。在其他实施方式中,信息的任何实际比特数量都可以编码成在单个闪存存储单元充电达到的电压。
FDC 106包括主机接口109、处理器112和闪存接口115。FDC106经由主机接口109而从主机设备接收命令和/或数据(例如软件代码更新或用户数据),和/或向主机设备传送数据,其中该主机设备可以是台式计算机、服务器或便携计算设备上的处理器。与主机进行的通信可以使用定制或标准协议,例如高级技术附件(AdvancedTechnology Attachment,ATA)、串行ATA(SATA)、块提取(BlockAbstracted)NAND、安全数字(SD)或是多媒体卡(MMC)。在某些实施方式中,MCP 100可以是与主机设备相同的产品的一部分。在其他实施方式中,主机设备可以通过与至少一个基于处理器的其他设备相连的通信链路(例如USB、火线、蓝牙)来与MCP 100进行可操作通信。例如,主机可以通过在至少一个网络上发送控制消息以及发送和接收数据消息来远程访问MCP 100,其中所述至少一个网络可以包括有线、无线或光纤链路,或是其组合。这些网络可以支持基于分组的通信,并且可以包括局域网或广域网,例如因特网。
主机设备上的处理器可以使用由FDC 106处理且用于识别闪存存储器中的物理地址的逻辑寻址方案来从NAND闪存存储颗粒103中读取数据和/或向其写入数据。在某些实施方式中,主机接口109可以被配置成使用ATA/IDE接口来与主机设备进行通信。处理器112可以对接收到的命令进行处理,并且可以使用闪存接口115来存取NAND闪存存储颗粒103。FDC 106可以被配置成提供诸如磨损管理(wear management)、块管理、差错校正和逻辑寻址管理功能之类的功能,以便提高NAND闪存存储颗粒103的性能,例如增加可靠性、缩短读写时间、改善电源效率,以及提高每芯片体积的容量。这里描述的某些技术和装置既适用于NAND和/或NOR闪存存储器,也适用于其他类型的电可擦写或电可写入存储器,还适用于那些数据存取分辨率以页面或块为单位的存储器。
虽然在图1中只显示了一个NAND闪存存储颗粒103,但是MCP100也可以包括多于一个的NAND闪存存储颗粒103。某些实施方式可以包括非易失性存储器的任何组合,这些组合可以包括NAND闪存、NOR闪存或电可擦写可编程只读存储器(EEPROM)。在某些说明性实例中,MCP 100可以包括两个、三个、四个或者至少八个NAND闪存存储颗粒103。例如,MCP 100可以包括处于与四个NAND闪存存储颗粒103封装在一起(例如在堆栈中)的颗粒上的闪存盘控制器106。
在某些实施方式中,闪存盘控制器106和闪存存储颗粒103可以在单个颗粒上实施。在其他实施方式中,闪存盘控制器106中的一个或多个组件可以部分或者完全在单个颗粒或MCP 100的外部实施。例如,某些或所有同步动态随机存取存储器(SDRAM)151和/或非易失性存储器(NVM)154可以在MCP 100的外部实施。在某些实施例中,某些或所有闪存盘控制器106可以按与闪存存储颗粒103分离的方式封装。在一个说明性实例中,NVM 154、SDRAM151、主机接口109以及至少一部分处理器112中的每一个都可以在MCP 100的外部实施。在其他实施方式中,闪存接口115与闪存存储颗粒103之间的模拟和/或数字信号可以在外部被路由到集成组件。
通过实施远程或分布式传输结构(例如受到屏蔽和/或控制的阻抗信号路径),可以传送往来于至少一个闪存存储颗粒103的信号。在某些实施方式中,通过安装非易失性存储器的附加组件,可以提供存储器扩展。缓冲和/或路由设备可以用于支持将模拟和/或数字信号分发到数量可变的存储颗粒103。此外,处理器112的功能可以在MCP 100的外部实施。在各个实施例中,处理器112既可以完全或部分在同一基底(例如印刷电路板)上的电路中实施,也可以在与MCP100相同的产品中实施。该处理器112还可以由另一个经通信链路(例如有线、无线、光纤或是其组合)而与MCP 100进行可操作通信的计算设备来实施。
MCP 100可以是任何实际存储器大小,例如高达至少100吉字节或以上。在所描述的实例中,NAND闪存存储颗粒103被组织成包含多个闪存存储块(flash memory block)118。在某些实施方式中,NAND闪存存储颗粒103可以包括数百或数千个闪存存储块118。每一个闪存存储块118都包括多个闪存存储页面(flash memory page)121。如所示,每一个闪存存储页面121都包括可以存储数据124的单元以及可以存储与数据相关联的纠错码(ECC)127的单元。作为例示,闪存存储页面121可以存储2048字节的数据和64字节的ECC数据。数据单元124存储的是从闪存盘控制器106接收的信息。ECC单元127存储的是与存储在数据单元124中的数据相关联的附加完整性元数据(例如ECC数据)。在各个实施方式中,ECC数据允许闪存盘控制器106检测和/或校正数据中的比特差错。
在图示实例中,每一个闪存存储块118还包括一个或多个基准单元130a、130b、130c。在某些实施方式中,FDC 106可以监视基准单元130a、130b、130c中的电压,以便估计单元124、127中的电压暂降(voltage sag)或漂移。在每个块118中,基准单元130a可以位于块118的开端,并且基准单元130b可以位于块118的末端。每一个闪存存储页面121可以包括基准单元130c。在某些实施方式中,在页面、块和存储颗粒103的任何图案中可以分布数量更多或更少的基准单元,以便确定单元124、127的可能性能。
在某些实施方式中,基准单元可以位于经历读/写使用等级(usage level)的单元之中或是其周围,其中所述等级代表的是所关注的某些数据单元的使用等级。补偿方法可基于非基准单元与其他非基准单元的比较。举个例子,如果同一页面或块中的多个单元中的电压相对较低,那么所述补偿可以包括根据测量得到的值来向下调整阈值(例如单元中不同值等级之间的电压阈值),由此可以显著降低读取差错。其他实例包括根据在基准单元中检测到的电压来确定校正函数,其中该校正函数会在将检测到的电压转换成存储单元所代表的数字数据值之前调整检测到的电压。
在某些实施方式中,通过将附加电荷施加于多个单元,可以校正检测到的电压暂降,由此刷新存储单元。举个例子,如果一个或多个基准单元的电压电平指示的是一个超过某个阈值量的电压漂移,那么与一个或多个基准单元相关联的一个或多个页面或是一个或多个块中的存储单元既可以通过施加附加电荷来调整,也可以被重写,以便根据所存储的数据而将这些单元恢复到适当的电压电平。这些调整既可以在检测到一个或多个基准单元中的电压漂移的时候立即执行,也可以作为以后的维护操作的一部分。在某些实施方式中,可以根据检测到的一个或多个基准单元电压与一个或多个目标基准单元电压之间的差值来施加附加电荷或是重写该存储单元,其中所述差值可以被假设成是指示了一个或多个基准单元以及相应数据单元的恰当电压漂移或暂降量。
在某些实施方式中,施加附加电荷或重写存储单元的处理可以通过读取所有单元,对照阈值来执行必要调整(例如根据基准单元电压和/或使用这里描述的其他技术来使用校正函数)以及通过对检测到的数据执行差错校正以获取所存储的数据而被执行。此后,该数据可以用于确定恰当的电压电平,或是用于确定各个存储单元需要多少附加电荷来校正所识别的电压漂移或暂降。在某些实施方式中,所施加的附加电荷量可以根据一个校正函数来确定,其中该校正函数与用于在将检测到的电压转换成数字数据值之前调整被检测电压的校正函数是相同或相似的。
在某些实施方式中,其中可以自适应地重新指定闪存存储器中的单元。例如,基准单元可以在需要时响应于读取或写入使用信息、温度、产品使用年限、电源电压(例如低电池、AC线路功率)和/或检测到的差错等级而被添加、移除、再分配和/或再分布。如果某些存储块或页面中的差错很低,那么可以将较少的单元指定为ECC单元127和/或基准单元130,这样做将会提供更多的数据单元124。将单元指定给基准、数据和ECC功能的相对指定关系以及单个单元的分辨率可以根据当前工作条件和/或根据预定条件而被动态调整。举个例子,该分辨率可以根据差错率而被调整,而每页面的ECC单元数量则可基于差错率以及读写历史信息,并且基准单元的位置和分布可以基于差错率和产品使用年限。本实例仅仅描述的是可以根据各种判据进行动态调整的控制器106和闪存存储颗粒。其他判据可以包括数据重要性、电源可用性(例如AC线路功率、电池功率)以及关于最大存储器大小的相对重要性、速度性能以及数据完整性的定义判据。举个例子,如果保持需要大量软件校正来维护高单元分辨率,那么有可能导致较长的存取时间。这些判据可以由用户、产品制造商或软件根据应用的需要来进行设计。
在某些实施方式中,在维护操作中可以重写需要大量软件校正的数据,以便校正与经过的时间相关联的电荷的变化,或是校正已经开始降级的存储单元页面。通常,在改变一个或多个存储单元的分辨率的时候,数据将被写入到存储单元的不同页面中,并且可以按相同或不同的分辨率写入。在某些实施方式中,存储单元的初始页面将被降低到某个较低分辨率,随着存储单元的老化和降级,这种情况通常是必然的。在由于所识别的电压漂移或暂降而执行数据重写时,可以将数据写入存储单元的相同或不同的页面或块。
闪存接口115提供了针对闪存存储颗粒103的直接控制、握手处理以及数据传送访问。该闪存接口115包括控制接口133和模拟接口136。在某些实施方式中,控制接口133可以向闪存存储颗粒103发送控制、地址和数据信号。这些命令和存储地址可以在数字信号或模拟信号中传送。闪存盘控制器106还可以接收来自闪存存储颗粒103的模拟信号。闪存盘控制器106可以包括用于与闪存颗粒103上的闪存存储器逻辑对接的处理器,并且这个用于与闪存存储颗粒上的闪存存储器逻辑对接的处理器可以集成在闪存接口115中。
响应于读取命令,闪存存储颗粒103可以输出代表存储在单个数据单元124中的数据的单元电压。闪存盘控制器106可以接收从闪存存储颗粒103上的每一个存储单元输出的模拟电压信号。这些模拟单元电压或模拟电压信号可以被传送到FDC 106中的模拟接口136。在某些实施方式中,闪存接口115还可以包括与控制接口133以及模拟接口136分离的数据总线,用以与闪存存储颗粒103进行通信。
模拟接口136可以包括模拟前端(模拟FE)139和模数转换器(ADC)142。一旦接收到模拟信号,那么模拟FE139可以根据需要来调节(condition)信号,例如提供偏移、校正电平偏移、增益、缓冲、滤波或是用于最小化反射的受控阻抗。模拟FE可以提供高阻抗输入,以便最小化闪存存储单元的负载,此外它还可以提供低阻抗输出,以便驱动与ADC 142的输入相耦合的采样和保持或追踪和保持电路。在某些实施方式中,模拟FE 139还可以包括模拟复用器(未显示),以便从来自一个或多个闪存存储颗粒的多个模拟输出线路中选择其中一个。
ADC 142对模拟值进行处理,以便确定数据单元124、127中的电压的相应数字数据值表示。ADC 142接收经过调节的模拟信号,并且将模拟信号转换成模拟电压的数字表示。然后,ADC 142(或ADC中的处理器)将数字表示转换成存储在存储单元上的且由电压所代表的数字数据值,其中举例来说,所述转换基于映射函数。处理器112还可以用于将数字表示转换成数字数据值。模拟电压的数字表示可以包括足以允许ADC 142或处理器区分多个模拟电压电平的信息,其中每一个模拟电压电平都代表了一个特定的数字数据值。该数字表示可以包括数量多于数字数据值的数据比特。在某些实施方式中,ADC 142可以集成在闪存存储颗粒103中,而不是包含在闪存盘控制器106中。在这种情况下,闪存接口115可以接收来自闪存存储颗粒103的单元电压的数字表示或数字数据值。
在这里显示了映射函数145的一个实例。根据映射函数145,ADC142或处理器112可以将模拟单元电压转换成数字表示和/或数字数据值。举个例子,在这里可以使用一系列模拟电压阈值来将模拟电压映射成数字表示和/或数字数据值。同样,该映射函数145还可以描述将模拟电压的数字表示转换成数字数据值的处理。举个例子,模拟电压的一个或多个数字表示可以映射成一个特定的数字数据值,其中每一个数字数据值都具有相应的一个或多个数字表示的不同集合。
在某些实施方式中,ADC 142或处理器112可以接收用于改变映射函数145的参数。例如,FDC 106可以根据当前温度、电源电压、页面数据读写次数和/或基准单元130a、130b和/或130c中的电压来适配映射函数145。在某些实施方式中,映射函数适配可以基于相邻数据单元124、ECC单元127和/或其他单元的电压特性。关于单元电压与数字数据值之间的映射145的更多细节是参考图2A~2B描述的。在某些实施方式中,ADC 142或处理器还可以响应于备选值命令来执行操作,以便为接收到的模拟信号或模拟信号的数字表示检索备选值(alternative value)。关于备选值命令的例示实施方式的更多细节是参考图6A~6C来描述的。
闪存盘控制器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算法来恢复包含超过某个预定数量或百分比的差错的数据,那么处理器112将会重写或刷新存储在闪存存储页面中的数据。在其他实施方式中,处理器112会在维护日志中记录包含此类差错的数据的位置、物理和/或逻辑位置。然后,处理器112会在维护操作过程中重写或刷新该数据(参见图9)。维护操作可以在发生如下情况时执行:在主机设备依照某个预定电源条件工作时,在处理器112具有预定量的过剩带宽和/或以所调度的间隔工作时。
闪存盘控制器(FDC)106可以包括动态随机存取存储器(DRAM)。本实例的闪存盘控制器106还包括同步动态随机存取存储器(SDRAM)151。举个例子,SDRAM 151可以是单倍数据速率的SDRAM或双倍数据速率的SDRAM。在某些实施方式中,FDC 106可以使用SDRAM 151作为高速和高密度缓冲器,以便存储诸如用于主机设备的输出数据之类的临时数据,以及用于数据页面的备选数字值。FDC 106还可以包括其他类型的RAM,例如DRAM。举个例子,FDC 106可以接收来自NAND闪存存储颗粒103的模拟数据。
然后,FDC 106可以将检测到的模拟电压转换成数字数据,在某些情况下,该数字数据包括用于一个或多个单元的备选数字数据值。然后,ECC引擎148检查和校正数字数据,由此可以为每一个闪存存储页面121上的单元检查数据值和备选数据值的多个不同组合。如果差错校正成功,那么处理器112可以将数字数据存入SDRAM151的主机输出缓冲器。在某些实施方式中,主机设备可以从主机输出缓冲器中检索数据。作为替换,闪存盘控制器106可以将数据从主机输出缓冲器转发到主机设备。SDRAM 151或其他高速缓存还可以用于存储那些将被写入闪存存储颗粒103的数据。
FDC 106还包括非易失性存储器(NVM)154。在本实例中,NVM154包括磨损管理软件代码157、块管理软件代码160、逻辑寻址软件代码163以及单元分辨率寄存器(resolution register)166,这其中的每一个都包含了指令(或者指向闪存存储器中指令的指针),其中当由处理器112执行时,所述指令(或者指向闪存存储器中指令的指针)将会执行一定的操作。在某些实施方式中,NVM 154可以与NAND闪存存储颗粒103分离。例如,NVM 154可以是NOR闪存存储器或是另一个NAND闪存存储器。在其他实施方式中,NVM 154可以是NAND闪存存储颗粒103中的一个或多个页面。在其他实施方式中,NVM 154可以存储指向存储在NAND闪存存储颗粒103中的数据的指针或存储位置。在某些实施方式中,处理器112可以执行磨损管理软件代码157、块管理软件代码160以及逻辑寻址软件代码163,以便提高MCP 100的效率、性能和/或可靠性。
处理器112可以使用磨损管理软件代码157来管理MCP 100中的页面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对NVM 154中的逻辑地址的转换和更新进行管理。在一个实例中,举例来说,在将页面从10比特分辨率降级到8比特分辨率的时候,或者在出于磨损管理目的而将逻辑块地址映射至不同物理页面地址的时候,逻辑寻址软件代码163可以动态维护物理页面地址与来自主机的逻辑块地址之间的联系。此外,举例来说,在逻辑与物理地址之间的转换处理过程中可以产生中间地址形式。通过产生、处理、存储、使用和/或以其他方式操纵中间地址形式,可以执行各种非易失性存储器操作。关于逻辑寻址软件代码实例的更多细节是参考图10来描述的。
单元分辨率寄存器166存储了每一个闪存存储页面121中的单元分辨率的信息。例如,NAND闪存存储颗粒103可以是一个8比特MLC闪存存储器。在某些实施方式中,某些闪存存储块118可以响应于各种条件而被降级或升级。关于此类条件的说明性实例包括:差错性能、温度、电压条件、单个单元的读写循环次数、单元组、页面、相邻位置中的单元、基准单元、具有类似的读和/或写使用历史记录的单元或是其他因素,例如设备使用年限。关于某些或所有这些条件的信息可以存储在数据存储设备中,或者也可以从已存储信息的一个或多个其他比特中确定或估计。在一个实例中,已存储的信息可以包括历史读取和写入使用数据,其中该数据代表的是存储颗粒103中的至少某些单元的使用等级。处理器112可以更新单元分辨率寄存器166,以便减小降级存储页面的单元分辨率,例如将其降低至4比特,由此闪存存储页面121仍旧可以结合较小的存储器大小来使用。在其他实施方式中,单元分辨率寄存器166还可以存储每一个闪存存储块118的单元分辨率。
在某些实施方式中,在将数据从主机设备传送给MCP 100中的存储单元之前,单元分辨率寄存器166将被向下调整到单比特分辨率或是另一个低数量比特分辨率。在图7B中更详细地描述了这个处理。由于在为每一个存储单元充电的时候需要较低的精度,因此,通过在传送数据之前降低单元分辨率寄存器166,可以提供更快的数据传输速率。所传送的数据随后可以按较高分辨率被重新写入存储单元。在某些实施方式中,在维护操作过程中(例如在以后有足够处理资源可用并且重写处理不会干扰其他读写操作的时候)可以按较高的分辨率来重新写入所传送的数据。在某些实施方式中,在维护日志中做出低单元分辨率数据传送的记录。
在某些实施方式中,逻辑寻址软件代码163、分辨率寄存器166和/或块管理软件代码160会将降级存储页面(或降级存储块)一起组成组,并且出于逻辑寻址目的而将该组视为单个的非降级存储页面(或块)。降级存储页面组的存储页面不必与存储页面相邻。降级存储页面组可以包括来自不同块的存储页面,甚至可以包括来自不同存储颗粒的页面。在某些实施方式中,处于一组降级存储页面或块中的每一个降级存储页面或块都会响应于与页面或块相关联的差错条件而被降级。
图2A~2B共同地显示了单元电压与存储在存储单元中的数字数据值之间的映射。如图2A所示,该图显示了一个8比特存储单元的说明性的数字数据值分布200。8比特存储单元包括256个可能的数字数据值;4比特存储单元包括16个可能的数据值。可能数据值的数量等于2n(其中n等于比特数量),但是可能数字数据值的数量不必与n比特的可能数字数据值数量相对应。每一个存储单元都可以具有大于1的整数个可能数字数据值,其中举例来说,某些存储单元可以具有10个可能的数据值。数字值分布200包括数字值分布曲线205~210,其中这些曲线代表的是每一个数字数据值的电压分布。每一个数字值分布曲线(例如205~210)都代表了某个范围的数字电压值,其中该范围与关联于每一个可能数字数据值的电压电平相对应。
在写入操作过程中,每一个存储单元都会接收电荷,直至达到与从可能数字数据值之一选出的数字数据值相对应的模拟电压。这个对应的电压通常会落入期望数字数据值的分布曲线205~210以内。此外,这个对应电压还可以是与数字数据值相对应的目标电压。举个例子,如果单元电压位于分布207以内,那么存储在该单元中的数字值可以是02H。在读取操作过程中,模拟电压信号是从每个单元中检测到的。然后,ADC 136将模拟电压信号转换成模拟电压信号的数字表示。之后,这个数字表示会与至少一个数字值分布曲线进行比较,以便确定存储在所读取的存储单元中的模拟电压所代表的数字数据值。
数字数据值分布200包括处于数字数据值分布曲线205~210之间的灰色区域215。在某些实施方式中,举例来说,当ADC 142接收到单元电压或者检测到位于某一个灰色区域215以内的模拟电压信号时,ADC 142可以将单元电压转换成最接近的相邻数字数据值。例如,倘若ADC 142接收到非常接近电压电平220的单元电压,那么ADC142可以将其解析成是最接近的相邻数字数据值,即FEH。在某些实施方式中,FDC 106还可以包括备选值命令,其中该命令指示ADC142根据某些参数来解析出与最接近的相邻值不同的备选值。
在某些实施方式中,FDC 106可以在尝试解析页面或数据块值的差错校正处理中同时使用最接近的相邻数字数据值以及一个或多个备选值。此外,FDC 106可以根据单元电压在数字数据值分布曲线205~210或灰色区域215中的位置而将某个不确定性指定给特定的单元电压或相应数据值。所指定的不确定性可以供尝试解析页面或数据块值的算法使用。关于这些参数的某些实例可以包括下列各项中的一项或多项:温度、针对该单元的读取次数、针对该单元的写入次数、电源电压以及基准单元130a、130b、130c中的电压。在某些实例中,单元电压可以降到最小单元电压(Vmin)以下。FDC 106可以通过向接收到的单元电压添加一个偏移量来实施校正。这个偏移量既可以由模拟FE139添加,也可以由ADC 142或处理器112以数字方式添加。
在某些实施方式中,FDC 106可以通过变更数字数据值分布200来动态调整灰色区域215的位置和宽度。例如,FDC 106可以包括基于参数调整灰色区域的维护软件代码,其中举例来说,所述参数可以是:一个或多个基准单元电压,存储单元使用率,以及可以在NVM 154中预先加载的其他启发(heuristics)。维护软件代码还可以执行单元分辨率寄存器166的更新。例如每一个颗粒103、模拟接口135和/或MCP 100都可以在制造时被表征,并且线性化表格、校正因数或其他校正调整可以存储在MCP 100的非易失性存储器中。在某些情况下,最大和最小电压电平(Vmax和Vmin)以及数字值分布曲线205~210可以在其使用寿命中根据单元的经验测试而被调整和/或再分布。
如图2B所示,该图显示的是单元电压-数字值曲线图250。该图250包括理想电压特性255,并且ADC 142使用该特性来将模拟电压转换成数字值。在某些实例中,数字单元124可以根据非理想电压特性260、265来存储数字值,其中举例来说,所述非理想电压特性归因于温度启发、单元使用年限、电荷泵或电源电压容差、ADC136的非线性、在存储单元中检测到的差错、和/或单元的读写次数。FDC 106可以采用不同方式来补偿电压特性260、265,使之更接近理想特性255。例示的补偿方法是参考图3A、3B、4、5、6A~6C来描述的。
图3A和3B显示的是对从NAND闪存存储器读取数据页面的处理350和300的实例进行描述的流程图。处理350和300包括通常可以由处理器112执行的操作。在某些实施方式中,处理350和300还可以由那些可以与ADC 142结合的其他处理和/或控制部件来执行、补充或增加。例如,在模拟接口136中可以存在一个用于执行处理350和300中的某些或所有操作的控制器或补偿器。
图3A描述的是将从多级存储单元中检测到的电压电平转换成数字数据值的处理。处理350是以检测来自多级存储单元的模拟电压电平为开始的(步骤355)。其中举例来说,该电压可以由模拟接口136来检测。模拟接口136可以包括一个能够通过操作来接收来自闪存存储颗粒103的模拟信号的输入。闪存盘控制器106还可以包括一个控制模块,以便选择可供所述输入接收模拟信号的存储单元。在步骤360中,模拟电压信号被转换成所检测到的模拟电压的数字表示。这个转换可以由ADC 142来执行。该数字表示可以具有充足的数据,以便允许ADC 142或处理器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从ADC 142接收用于数据单元的数字输出值。这个用于数据单元的数字输出值是从数据单元中检测到的电压的数字表示。ADC 142根据步骤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可以在一个掩码表(mask table)中标记不确定的数字值的位置,然后执行步骤325。在某些实施方式中,还可以存储一个或多个备选值,以便随后用于解析哪些值(例如不确定的值或备选值之一)是正确的。
在处理器112存储了接收到的数字值之后,在步骤335,处理器112将会确定是否还要读取更多单元。例如,处理器112可以检查是否达到存储页面末端。如果还要读取更多单元,那么该处理返回到步骤310。如果没有要读取的单元,那么处理300结束。在某些实施方式中,该处理还会在维护日志中记录与存储单元页面或块相关联的不确定数据值的数量。在其他实施方式中,如果不确定的数据值的数量超过预定阈值,那么该处理将会记录存储单元页面和/或块的物理和/或逻辑位置。
图4显示的是对使用从MLC闪存存储器中读取数据页面处理400的实例进行描述的流程图,其中该MLC闪存存储器可以是诸如NAND闪存存储颗粒103,并且所述读取使用一个校正函数来调整单元电压与数字值的映射关系。举例来说,处理400可以由处理器112执行。该处理400是在步骤405中开始的,其中该处理器112确定是否接收到读取命令。例如,FDC 106可以通过主机接口109接收来自主机设备的读取命令。在步骤405,如果处理器112确定没有接收到读取命令,则重复执行步骤405。
如果处理器112在步骤405中确定接收到读取命令,那么在步骤410中,处理器112将会根据温度、存储页面中的读写次数、电源电压和/或NAND闪存存储颗粒103的其他工作条件来更新校正函数。在某些实施方式中,在将单元电压转换成数字值之前,ADC 142或模拟接口136可以使用校正函数来调整在模拟前端139测得的单元电压。在其他实施方式中,处理器112可以使用校正函数来调整映射函数中的阈值,由此ADC 142可以将模拟电压转换成经过调整的数字值。对不同的单元来说,该校正函数可以是不同的。例如,对检测到的电压很高的存储单元来说,该单元可以因为校正函数而具有较大的调整。
接下来,处理器112可以在步骤415中选择基准单元。例如,处理器112可以选择基准单元130a、130b或130c之一。然后,在步骤420中,处理器112读取存储在选定基准单元中的基准电压。在步骤425,处理器112根据基准电压来更新校正函数。举个例子,如果基准电压表现为暂降了10%,那么处理器112可以通过调整校正函数来补偿数据中的暂降电压。在某些实施方式中,校正功能将会以非线性方式来调整检测到的电压电平。与较低的检测到的电压电平相比,该校正函数可以对较高的检测到的电压电平进行更多的调整。校正函数可以以不同的调整量或是不同的调整百分比来调整检测到的处于不同电压电平的电压。
在某些实施方式中,在操作过程中可以动态实时(on the fly)调整阈值。在某些实施方式中,处理器112可以存储固定数量的先前读取的基准电压的采样,例如一百个采样,并且该处理器112可以使用已存储的基准电压的移动平均来更新校正函数。此外,该校正函数还可以根据其他函数来更新,这其中可以包括例如均值、中数、众数或加权平均。举个例子,在这里可以使用经过加权的移动平均。然后,在步骤430,处理器112确定是否选择另一个基准单元。举个例子,处理器112可以确定是否有足够信息来调整校正函数。另举一例,处理器112可以被配置成根据读取命令来读取某些存储块以及某些存储页面中的所有基准单元。
在步骤430,如果处理器112确定还有要读取的其它基准单元,那么处理400将会返回到步骤415。在某些实施方式中,通过读取基准单元中的电压来调整校正函数的处理是通过检测从存储单元组检索的数据中的差错来触发的。在其他实施方式中,检测到的差错将会导致用于确定与检测到的电压相关联的数据值的阈值发生偏移。在某些实施方式中,这些阈值可以自动向下偏移,但是在其他实施方式中,这些阈值是根据一个或多个基准单元中的电压而被调整的。该差错可以使用与该组存储单元相关联的ECC 127来检测。
在步骤430中,如果处理器112确定没有要读取的其他基准单元,那么在步骤435,处理器112将会根据读取命令来选择所要读取的页面。然后,在步骤440,处理器112从闪存存储器中读取所选择的数据页面,其中举例来说,所述读取是使用处理300(图3B)来进行的。在步骤445,处理器112使用校正函数来校正页面数据。例如,处理器112可以设置模拟接口136中的某些参数,以便调整映射函数。另举一例,处理器112可以使用校正函数来调整从ADC 142输出的数字表示。接下来,在步骤450,处理器112可以执行差错检查操作,以便检查在页面中是否存在差错。在某些实施方式中,差错检查操作可以通过使用硬件差错检测电路而在ECC引擎148中完成。在其他实施方式中,差错检查操作可以在软件中完成,其中处理器112可以执行存储在NVM 154中的差错检测代码,以便检查页面中的差错。在差错检查操作之后,在步骤455,处理器112可以确定是否检测到差错。
如果没有检测到差错,那么在步骤460,处理器112可以将所读取的数据传送到主机设备。然后,处理器112可以在步骤465中确定是否还有要读取的其它页面。如果还有要读取的页面,则重复执行步骤435。否则,处理400结束。如果在步骤455中检测到一个或多个差错,那么在步骤470,处理器112可以执行差错校正操作,其中该操作的一个实例是参考图5来描述的。然后,在步骤475,处理器112可以确定差错校正操作是否成功。如果差错校正操作成功,则重复执行步骤460。如果差错校正操作没有成功,那么处理器112可以在步骤480中将差错信息(例如差错日志)存入NVM 154,并且该处理可以在步骤465处继续。该差错信息还可以存储在维护日志中。所存储的差错信息可以用于块管理操作,其实例是参考图8A来描述的。在某些实施方式中,处理器112会在NVM 154的维护日志中记录存储单元页面或块中的基准单元之间的暂降变化。在其他实施方式中,如果基准单元中的暂降程度满足预定条件,那么处理器112只在维护日志中记录存储单元页面和/或块的物理和/或逻辑位置。举个例子,如果基准单元中的暂降超出10%,或者如果不同基准单元中的暂降程度之间的差值超出10%,则可以通过在维护操作过程中将附加电荷施加于存储单元或是通过完全重写页面来刷新存储单元页面和/或块中存储的数据。关于维护操作的实例是参考图9来描述的。
图5显示的是描述了处理实例500的流程图,其中该处理通过执行差错校正操作来校正包含比特差错的数据页面。举例来说,该处理500是在处理器112在从闪存存储器读取的数据页面中检测到比特差错的时候开始的,并且在步骤505,该处理器会向ECC引擎148发送一个命令,以便通过执行硬件ECC算法来校正比特差错。在某些实施方式中,ECC引擎148和ADC 142和/或模拟接口136可以通过协作来校正比特差错。
接下来,在步骤510,ECC引擎148可以检查硬件ECC算法是否成功。如果硬件ECC算法能够校正数据页面中的所有差错,那么硬件ECC算法成功。然后,在步骤515,ECC引擎148存储ECC结果,例如将其存入SDRAM 151。接下来,在步骤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执行备选值命令,以便校正比特差错。关于备选值命令的例示实施方式是参考图6A~6C来描述的。然后,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算法,有可能会改变一个或多个备选数字值,甚至有可能改变用某些确定性假设来确定的一个或多个数字数据值。在步骤640,处理器112将会确定ECC算法是否成功。如果处理器112确定ECC算法成功,那么在步骤645,处理器112将会存储具有成功的ECC结果的页面数据,并且处理600结束。
在步骤640,如果处理器112确定ECC算法没有成功,那么在步骤650,处理器112将会确定是否可以尝试另一个备选值组合。可能的备选值组合的数量取决于具有不确定数字数据值的存储单元的数量以及所识别的备选数字值的数量。通常,大多数存储单元不具有不确定的数字数据值。如果处理器112确定可以尝试使用另一个备选值组合,那么该处理将会返回到步骤625。
在步骤650,如果处理器112确定已经尝试了所有备选组合,那么处理器112会在步骤655中产生一个差错消息,并且处理600结束。在某些实施方式中,其中还可以产生附加备选值和/或调整用于读取各个数据值的电压阈值,以及重新尝试通过执行ECC算法来识别页面数据的校正值。例如,在这里可以为先前被确定成以足够确定性代表了某个值但却相对接近于数字值分布曲线205~210之一(如在上文中参考图2A所述)的阈值的电压电平确定备选值。作为替换,各个数字值分布曲线205~210的电压阈值可以采用如上所述的方式来调整,并且可以重新产生数据值,这其中包括识别新的备选值。
在某些实施方式中,步骤655中的差错消息被记录在NVM 154的维护日志中。然后,在如图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显示的是对使用基准单元130a、130b、130c而将数据写入闪存存储页面121的处理700的实例进行描述的流程图。处理700通常可以由处理器112来执行。处理700在步骤705开始,其中处理器112接收到一个写入命令。例如,写入命令可以包括写入指令、所要写入的数据、以及将被写入数据的存储地址,其中举例来说,所述地址可以是作为逻辑块地址而从主机接收的。然后,根据写入命令,处理器112会在步骤710中选择闪存存储器中的存储页面。
接下来,在步骤715,处理器112可以将所要写入的数据拷贝到SDRAM 151之类的缓冲器中。该数据可以是从外部主机设备或是别的存储页面传送的。在某些实施方式中,存储在选定存储页面上的数据被拷贝到缓冲器中,以便再拷贝回到选定页面中。在其他实施方式中,要写入选定存储页面的数据不会被拷贝到缓冲器中,而是直接从数据源(从外部主机设备或是从其他存储单元)写入到选定的存储页面。
然后,在步骤725,处理器112将会擦除选定页面中存储的任何数据。在步骤730,处理器112将数据从缓冲器写入到选定的存储页面中,其中举例来说,所述写入是通过将电荷施加于数据单元124和基准单元130c来实施的。步骤730将根据期望数据值以及每一个单元的相应模拟电压电平来向存储单元施加不同的电荷量。在某些实施方式中,其中可以使用电荷泵来向选定存储页面中的存储单元施加电荷。然后,在步骤735,处理器读取选定页面中的基准单元130c的基准电压。该基准电压是通过检测基准单元130c中的电压电平而被读取的。在步骤740,处理器112检查基准电压是否小于目标电压。如果处理器112确定基准电压小于目标电压,那么该处理返回到步骤730,以便施加附加电荷,以及提高存储在选定存储页面的单元中的电压。所施加的附加电荷量可以根据期望电压电平在百分比上与一个或多个基准单元电压的比较来扩缩(举个例子,如果检测到的基准电压比目标低10%,并且特定存储单元应该具有双倍于基准单元的电压电平,那么施加于特定存储单元的附加电荷量可以是施加于基准单元的二倍)。
在步骤740,如果处理器112确定基准电压不小于目标电压,那么在步骤745,处理器112将会选择一个数据单元,并且在步骤750中读取所选择的数据单元的电压。然后,在步骤755中,处理器112确定所读取的电压是否过高。例如,处理器112可以将所读取的单元电压与数字值分布相比较,并且检查单元电压是否处于目标数字值的电压范围内。如果处理器112确定该电压并未过高,那么在步骤760,处理器确定是否选择另一个数据单元。如果处理器112确定没有必要选择另一个数据单元,那么处理700结束。否则,处理700将会返回到步骤745,以便测试附加数据单元。
在某些实施方式中,其中还可以测试在步骤745中选择的数据单元,以便确定它们是否过低。如果是的话,那么处理700可以返回到步骤730,以便将附加电荷施加于一个或多个数据单元。在某些实施方式中,一旦完成了步骤740中关于一个或多个基准单元的测试,那么在步骤745(或是步骤745的迭代重复)中将可以选择所有数据单元的电压电平,以便确定这些电平是否过高和/或过低。这样一来,基准单元可以用于执行页面或块的初始充电处理,其后跟随的是对单元中的电压电平进行测试,并且可以补偿配置(tweaking)该电压电平。此外,在某些实施方式中,在步骤740使用的基准单元的目标电压可以被设置成略低于期望数据值的阈值电压,以便尝试避免过度充电,并且其后跟随的是检查实际数据单元值以及将电压电平补偿配置成达到与实际数据单元的期望数据值相对应的电压电平。
在步骤755,如果处理器112确定电压过高,那么处理器112将会确定是否有必要重写选定页面。例如,处理器112可以将比特差错数量与一个阈值相比较,其中该阈值小于或等于可以使用参考图5描述的校正算法之一来校正的差错数量。如果比特差错数量大于该阈值,则重写选定的页面。否则,处理器112可以确定不需要重写选定页面。在步骤765中,如果处理器112确定不需要重写页面,那么处理700将会继续执行步骤760。如果处理器112在步骤765中确定需要重写页面,那么处理700将会返回到步骤725,以便重新启动存储页面的写入处理。在某些实施方式中,在步骤765之后可以逐步降低目标电压,以便减小过调目标电压的可能性。
图7B显示的是对在主机设备与MCP 100之间实现更高数据传送速率的处理770的实例进行描述的流程图。在步骤772中,当处理器112接收到来自主机设备的写入命令时,该处理770开始执行。例如,来自主机设备的写入命令可以包括写入指令,所要写入的数据,以及要写入数据的存储地址,其中举例来说,所述地址可以作为逻辑块地址而从主机那里进行接收。
接下来,处理器112确定是否执行快速写入处理(例如以单等级单元分辨率或其他相对较低的分辨率来写入)或是以更高分辨率来使用时间更长、功率更大且处理器更为密集的写入处理。在步骤774,处理器112确定是否存在来自主机接口并且要求执行快速写入的命令。在某些实施方式中,主机设备还可以规定快速写入的分辨率。如果主机设备未规定快速写入,那么处理器112可以独立确定是否保证了快速写入。然后,步骤776将会确定MCP 100或者与MCP 100相连的主机设备是否满足预定电源条件。在所显示的实施方式中,步骤776确定是否为主机设备供应AC电源。在其他实施方式中,步骤776改为确定是否将一个为主机设备供电的电池充电至预定电荷。在某些实施方式中,步骤776将会确定是否将一个为主机设备供电的电池充电至最大容量或是至少90%的容量。然后,步骤778确定处理器112是否具有满足预定带宽条件的过剩带宽。在某些实施方式中,不同的是,如果处理器112空闲,则满足步骤778。在其他实施方式中,如果未使用预定百分比的处理器112的带宽,则满足步骤778。如果同时满足步骤776和778,那么在步骤780,处理将会使用处理700而以高分辨率写入存储单元。如果不满足条件776和778之一或是这二者,那么该处理将会执行快速写入过程。
在快速写入过程中,在步骤782处理器112从主机设备中选择一个或多个可用存储单元页面,以便将数据写入其中。在某些实施方式中,处理器可以将数据从主机设备拷贝到SDRAM 151之类的缓冲器。在其他实施方式中,来自主机设备的数据并没有被拷贝到缓冲器中,而是在步骤725和784之后在步骤786中被直接写入到选定的存储页面。在步骤725,处理器擦除存储在一个或多个选定页面中的任何数据。在步骤774,处理器112将与选定的一个或多个存储页面相关联的任何单元分辨率寄存器更新为低分辨率。在某些实施方式中,低分辨率将会是每存储单元1比特的分辨率。在其他实施方式中,低分辨率是每单元2、3或4比特。由于在为每一个存储单元充电的时候需要较低精度,因此,在将数据从主机设备拷贝到MCP 100的时候,以较低分辨率写入将会提高数据传输速率,由此,在写入存储单元时需要的电压调整的关注度和总量可以减小。在以低分辨率将数据写入一个或多个存储单元之后,步骤784将会记录一个维护日志条目来指示在维护处理过程(处理900)中应该以较高分辨率来重新写入存储在选定存储页面中的数据。
图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可以为所拷贝的数据指定物理地址。取决于可用存储页面,处理器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是由处理器作为按照惯例调度的维护操作的一部分来触发的。此外,在某些实施方式,维护处理900是由来自主机设备并且表明主机设备是用AC电源供电的信号触发的。在其他实施方式中,其他条件也可以使主机设备或处理器112触发维护处理900,例如空闲处理器112。
处理900是以步骤905为开始的,其中该步骤可以确定MCP 100是否是在预定电源条件(power condition)下工作的。在某些实施方式中,这个电源条件是通过主机设备接收AC电源来满足的。在某些实施方式中,这个电源条件是通过主机设备电池满足预定电荷总量、例如电池电量完全充满来满足的。充满电的电池可以表明主机设备正在用AC电源供电。如果MCP 100没有满足预定电源条件,那么处理900结束。
接下来,在步骤910,处理器112可以确定该处理器112是否具有足够带宽来完全执行维护处理900。在某些实施方式中,维护操作仅仅是作为需要最小带宽的后台进程来运行的。在某些实施方式中,维护操作需要一个空闲处理器112。在其他实施方式中,处理900并未确定是否处理器112具有足够带宽。在某些实施方式中,带宽需要将会根据对于维护操作的需要而改变,其中所述需要可以用成功维护处理之间的时间或是闪存存储器上的可用空间量来量度。如果处理器112不具有足够带宽,那么处理900结束。
如果满足预定电源条件,并且处理器112具有足够带宽,那么在步骤915,处理900可以读取已存储的维护日志。在某些实施方式中,已存储的维护日志被存储在NVM 154中。在某些实施方式中,已存储的维护日志指示的是可能的维护操作的优先级。此外,在某些实施方式中,已存储的维护日志被用于确定是否可以在简化操作中执行任何维护步骤(例如步骤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是描述在FDC 106中执行逻辑寻址处理1000的实例的流程图。例如,FDC 106可以将接收到的带有逻辑地址的读取或写入命令映射到一个或多个物理页面。在某些实施方式中,FDC 106可以动态地将逻辑页面映射到一个或多个可变物理页面。例如,FDC 106可以改变映射关系,以便平衡物理存储页面的负载。在某些实施方式中,逻辑页面与物理页面之间的映射可以存储在逻辑地址表中。在某些实施方式中,在处理器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和FDC 106的例示系统1100。FDC 106包括处于模拟接口115内的复用器(MUX)1105以及电荷泵1110。虽然系统1100被显示成使用了NAND闪存存储颗粒103,但是在系统1100中使用的某些技术同样适用于NOR闪存存储颗粒,或是NAND与NOR颗粒的组合。系统1100可以使用分立的IC来实施,或者它也可以部分或者完全集成到单个组件中。
FDC 106通过模拟接口115接收来自NAND闪存存储颗粒103的模拟数据。在本实例中,MUX1105接收多个模拟输入。在某些实施方式中,MUX 1105接收来自多个闪存存储颗粒103的多个模拟输入。模拟接口115可以控制MUX 1105,以便选择将要传送至ADC 142的一个模拟输入。例如,模拟接口115可以根据接收到的读取命令来控制MUX 1105。在写操作过程中,FDC 106使用电荷泵1110来将电荷施加于其中一个NAND闪存存储颗粒103的存储单元。在某些实施方式中,电荷泵1110被适配成向多个闪存存储颗粒103上的存储单元提供电荷。例如,FDC 106可以发送一个选择指定存储颗粒的控制信号,以便接收来自电荷泵1110的电荷。然后,当电荷泵1110施加电荷时,所选择的存储颗粒将会接收电荷。
通过在多个颗粒103之间共享ADC 1105和电荷泵1110,可以增大存储颗粒103的存储大小。此外,闪存存储颗粒103可以在没有ADC 142和电荷泵1110的情况下以很低的成本来制造。在某些实施方式中,电荷泵1110可以集成在带有FDC 106的颗粒上,或者单独安装在不同颗粒或不同基底上,例如安装在印刷电路板上。
为了便于使用被适配成与多个闪存存储颗粒103一起使用的ADC 1105和电荷泵1110,某些闪存存储颗粒103可以包括被适配成接收来自外部供电节点的编程电荷(programming charge)的输入。由此,闪存存储颗粒103不需要包含附加电路来改变或调整所供应的编程电荷。此外,闪存存储颗粒103还可以包括被适配成向闪存盘控制器106发送模拟电压信号的输出。
在某些实施方式中,FDC 106还可以包括一种用于向存储颗粒103中写入数据的电荷泵交织方法。
图12显示了一个例示系统1200,其中该系统描述的是单独向NAND闪存存储颗粒103提供编程和逻辑级功率(logical-level power)的架构。系统1200包括电荷泵1110和低信号丢失(dropout)调节器(LDO)1205,其中该调节器接收来自电源1210的功率。
如所示,NAND闪存存储颗粒103包括两个功率输入,即用于电荷泵电压(Vcp)的功率输入和用于逻辑电压(Vlogic)的功率输入。在某些实例中,Vcp可以远远大于Vlogic。举个例子,Vcp可以是大约12~20V或是大约12~30V,并且Vlogic可以是大约1~3V。在某些实施方式中,Vcp的调整和当前需要有可能与Vlogic的调整和当前需要有很大区别。
例如,NAND闪存存储颗粒103有可能需要Vlogic在低逻辑电压上具有密集调整(例如0.5%,1.0%,5%)的电压容限,以便将功耗、切换时间等等减至最小。此外,逻辑电压有可能在低电压电平上需要高频旁路电容。相比之下,电荷泵供电调整需求可以介于约5%与10%之间,并且其需要很低频率和较高电压容限。
为了向图12的系统提供便利,闪存存储颗粒103可以包括第一接口,用于接收有选择地对每一个闪存存储单元进行编程的功率,以及第二接口,用于接收提供给逻辑级电路的功率,以便选择在写操作过程中将要为之供应来自第一输入的功率的闪存存储单元。闪存盘控制器106可以包括用于以编程电压来向第一接口供电的第一电源,以及向第二接口供应逻辑级功率的第二电源。所述第一和第二电源可以位于闪存存储颗粒103的外部。
虽然在这里描述了各种处理和技术的实施方式,但是其他实施方式也可以按不同的序列执行各步骤或是经过修改的装置,以便实现相同的主要功能。此外,虽然有时将不同处理中的操作描述成是由特定设备或元件来执行的,但是这些设备或元件仅仅是实例,并且在某些实施方式中,这些操作可以使用备选设备或元件来执行。
在某些实例中,NAND闪存存储颗粒103还可以具有任何实际比特数量的分辨率,例如6、7、10、12比特的分辨率。在这里可以使用各种实施方式来执行结合闪存存储器的ECC操作,其中所述闪存存储器可以包括NAND闪存存储器、NOR闪存存储器、或是这些或其他非易失性存储器的组合。在MCP 100中可以按彼此相邻的方式来堆叠和/或安装一种或多种闪存存储颗粒。本领域普通技术人员将会了解,这里描述的某些技术实例还可以很有利地适用于NAND闪存技术,并且这里描述的某些方法通常还可以应用于NAND和/或NOR闪存之类的非易失性存储器。
在这里参考上图描述了可以是便携式的系统实例,但是其他实施方式也可以部署在台式机和联网安装之类的其他处理应用中。
虽然在这里描述了特定的架构特征,但是也可以引入其他特征,以便改进性能。例如,在FDC 106中可以使用高速缓存(例如L1、L2、......)技术。此外,举例来说,通过包含随机存取存储器,可以提供便笺式存储器和/或加载存储在闪存存储器中的可执行代码或参数信息,以便在运行时操作中使用。此外,通过提供其他硬件和软件,还可以执行如下操作,例如使用了一种或多种协议的网络或其他通信、无线(例如红外)通信、已存储工作能量和电源供应(例如电池)、切换和/或线性供电电路,软件维护(例如自检测、升级等等)等等。在支持数据存储和相关操作的过程中,其中还可以提供一个或多个通信接口。
在某些实施方式中,可以使用一种方法或是方法组合来提高数据完整性。例如,通过将阈值和/或重写单元调整至少一次,可以寻址单元电压差错。单元重写可以响应于与理想单元电压的偏差和/或作为后台活动来执行。举个例子,通过重写多级单元电压,可以刷新页面中的一个或多个有损单元的电压。对于那些被表征为倾向于随着时间的流逝而会丧失电压的单元来说,这些单元所要充电的电压电平可以被升压,以便接近于每一个单元范围的上限,由此补偿这些单元中随着时间的流逝所导致的预期电荷损失。所升压的电压电平在初始时可以位于预定范围的上限的附近或是其上,其中所述上限可以位于范围之间的灰色区域。根据所估计或确定的损失速率,在这里可以足够频繁地重写数据,以便将单元电压基本保持在期望范围以内。相似的补偿可以用于补偿那些被表征成具有上漂移的单元。作为例示,这些重写过程可以作为低优先级的后台进程来执行,其中所述后台进程是在资源可用的时候执行的。对于那些被识别为高值数据的数据来说,在这里可以将重写处理调度成足够频繁地发生,以便将单元电压保持在期望范围以内,其中该频率是以预期电压漂移速率以及与每一个比特电平相关联的电压范围大小为基础的。在某些实施方式中,当便携设备与外部电源耦合、例如在其与源自电力网的电源相耦合的时候,重写处理可以被配置成更频繁地执行。重写操作也可以响应于与此类电源的耦合而被执行。此外,重写处理还可以被配置成在某些情况下不那么频繁地执行,例如在节电模式、在低电池条件下、或者在存储持续时间短或是不重要的数据(例如流式音频/视频)的时候。
某些系统可以作为一个能与本发明的实施方式结合使用的计算机系统来实施。例如,各个实施方式可以包括数字和/或模拟电路、计算机硬件、固件、软件或是其组合。装置可以在有形地具体化为信息载体、例如在具体化为机器可读存储设备或传播信号的计算机程序产品中实施,其中举例来说,该产品是由可编程处理器来执行的;此外,这里的方法可以由可编程处理器来执行,其中该处理器作用于输入数据并且产生输出,以便通过执行指令程序来实施本发明的功能。非常有利的是,本发明可以在一个或多个计算机程序中运行,其中该程序可以在包含在至少一个可编程处理器的可编程系统上执行,并且该处理器被耦合成从数据存储系统、至少一个输入设备和/或至少一个输出设备接收数据和指令,并且向其传送数据和指令。计算机程序是一组指令,该指令可以直接或间接地在计算机中使用,以便执行某些活动或是产生某个结果。计算机程序可以用任何形式的编程语言编写,包括编译或解释语言,并且它可以用任何形式来部署,包括独立程序或模块、组件、子例程或是适合在计算环境中使用的其他单元。
例如,用于执行指令程序的适当处理器包括通用和专用微处理器,这些处理器可以包括单个处理器或是任何类型的计算机的多个处理器之一。通常,处理器接收来自只读存储器、随机存取存储器或是这二者的指令和数据。计算机的基本部件是用于执行指令的处理器,以及用于存储指令和数据的一个或多个存储器。一般来说,计算机还包括或者以可操作方式耦合成与用于存储数据文件的一个或多个大容量存储设备进行通信;此类设备包括:磁盘,例如内部硬盘和可移除盘;磁光盘;以及光盘。适合有形地具体化计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,其中举例来说,该存储器可以是:半导体存储设备,例如EPROM、EEPROM和闪存存储设备;磁盘,例如内部硬盘和可移除盘;磁光盘,以及CD-ROM和DVD-ROM盘。处理器和存储器可以由ASIC(专用集成电路)补充或是集成在其内。
在某些实施方式中,每一个系统100都可以用相同或相似信息编程,和/或使用存储在易失性和/或非易失性存储器中的基本相同的信息来初始化。例如,在与恰当主机设备、例如与台式计算机或服务器相耦合时,一个数据接口可以被配置成执行自动配置、自动下载和/或自动更新功能。
在某些实施方式中,一个或多个用户界面特征可以被定制配置成执行具体功能。本发明可以在包含图形用户界面和/或因特网浏览器的计算机系统中实施。为了提供与用户的交互,某些实施方式可以在这样一种计算机上实施,其中该种计算机具有向用户显示信息的CRT(阴极射线管)或LCD(液晶显示器)监视器之类的显示设备、键盘、以及可供用户向计算机提供输入的鼠标或轨迹球之类的指示设备。
在各个实施方式中,系统100可以使用适当的通信方法、仪器和技术来进行通信。举个例子,系统100可以使用点对点通信来与兼容设备(例如能够传送往来于系统100的数据的设备),其中在点对点通信中,数据是直接从信源经由专用物理链路(例如光纤链路、点对点布线、菊花链(daisy chain))而被传送到接收机。该系统的组件可以通过模拟或者数字数据通信的任何形式或者介质来交换信息,包括通信网络上基于分组的消息。通信网络的实例包括LAN(局域网)、WAN(广域网)、MAN(城域网)、无线和/或光学网络,以及形成因特网的计算机和网络。其他实施方式可以通过将消息广播至所有设备或者基本上广播给通过通信网络耦合在一起的所有设备来运送数据,例如,可以使用全向射频(RF)信号来广播。其他实施方式可以传送表征为具有高方向性的消息,例如使用定向(也就是窄波束)天线或红外信号传送的RF信号,其中作为选择,该信号可以与聚焦光学器件结合使用。此外,其他那些使用恰当接口和协议的实施方式也是可以实现的,例如,该接口包括但不限于:USB 2.0、火线、ATA/IDE、RS-232、RS-422、RS 485、802.11a/b/g、Wi-Fi、以太网、IrDA,FDDI(光纤分布式数据接口)、令牌环网、或是基于频分、时分或码分的复用技术。作为选择,某些实施方式可以引入如下特征,例如用于数据完整性的差错检查和校正(ECC),或是诸如加密(例如WEP)和密码保护之类的安全量度。
在这里描述了本发明的众多实施方式。但是应该理解,在不脱离本发明的精神和范围的情况下,各种修改都是可行的。例如,如果所公开技术的步骤是以不同的序列执行的,如果所公开系统中的元件是以不同方式组合的,或者如果使用了其他元件来替换或补充这些元件,那么也将会实现有利的结果。这些功能和处理(包括算法)可以在硬件、软件或软硬件组合中实施,并且某些实施方式可以在与这里描述的模块或硬件不相等同的模块或硬件上执行。

Claims (49)

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所述的制品,其中所述操作还包括:
在一个或多个维护活动中,为那些被重新写入到不同物理存储单元的数据值更新逻辑寻址软件代码。
CN2007800248486A 2006-05-15 2007-05-14 多级数据存储单元的维护操作 Active CN101484947B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210212473.9A CN102768853B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作
CN201210212474.3A CN102779554B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US80035706P 2006-05-15 2006-05-15
US60/800,357 2006-05-15
US11/694,739 US7639542B2 (en) 2006-05-15 2007-03-30 Maintenance operations for multi-level data storage cells
US11/694,739 2007-03-30
PCT/US2007/068851 WO2007134277A2 (en) 2006-05-15 2007-05-14 Maintenance operations for multi-level data storage cells

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN201210212474.3A Division CN102779554B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作
CN201210212473.9A Division CN102768853B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作

Publications (2)

Publication Number Publication Date
CN101484947A true CN101484947A (zh) 2009-07-15
CN101484947B CN101484947B (zh) 2012-08-15

Family

ID=38684942

Family Applications (3)

Application Number Title Priority Date Filing Date
CN2007800248486A Active CN101484947B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作
CN201210212474.3A Active CN102779554B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作
CN201210212473.9A Active CN102768853B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201210212474.3A Active CN102779554B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作
CN201210212473.9A Active CN102768853B (zh) 2006-05-15 2007-05-14 多级数据存储单元的维护操作

Country Status (10)

Country Link
US (3) US7639542B2 (zh)
EP (10) EP2330597A1 (zh)
JP (1) JP5358431B2 (zh)
KR (16) KR101283145B1 (zh)
CN (3) CN101484947B (zh)
AT (2) ATE475183T1 (zh)
DE (1) DE602007007938D1 (zh)
ES (2) ES2392334T3 (zh)
HK (3) HK1127155A1 (zh)
WO (1) WO2007134277A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222099A (zh) * 2011-06-21 2011-10-19 中兴通讯股份有限公司 一种数据存储、查找方法及装置
CN105144302A (zh) * 2013-03-15 2015-12-09 美光科技公司 存储器装置中的错误校正操作
CN105264496A (zh) * 2013-03-15 2016-01-20 桑迪士克企业知识产权有限责任公司 用于软信息生成的数据传输的性能优化

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
US7800951B2 (en) * 2007-08-20 2010-09-21 Marvell World Trade Ltd. Threshold voltage digitizer for array of programmable threshold transistors
US7948802B2 (en) * 2007-12-04 2011-05-24 Micron Technology, Inc. Sensing memory cells
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
WO2009090731A1 (ja) * 2008-01-16 2009-07-23 Fujitsu Limited 半導体記憶装置、制御装置、制御方法
KR101378365B1 (ko) * 2008-03-12 2014-03-28 삼성전자주식회사 하이브리드 메모리 데이터 검출 장치 및 방법
JP5057340B2 (ja) * 2008-03-31 2012-10-24 株式会社ジャパンディスプレイウェスト 光検出装置、電気光学装置及び電子機器
US7768832B2 (en) * 2008-04-07 2010-08-03 Micron Technology, Inc. Analog read and write paths in a solid state memory device
KR101407361B1 (ko) * 2008-04-14 2014-06-13 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US20090292971A1 (en) * 2008-05-21 2009-11-26 Chun Fung Man Data recovery techniques
US8365039B2 (en) * 2008-05-21 2013-01-29 Intel Corporation Adjustable read reference for non-volatile memory
US8276028B2 (en) * 2008-05-23 2012-09-25 Intel Corporation Using error information from nearby locations to recover uncorrectable data in non-volatile memory
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
US8406048B2 (en) * 2008-08-08 2013-03-26 Marvell World Trade Ltd. Accessing memory using fractional reference voltages
JP5504507B2 (ja) * 2008-10-20 2014-05-28 国立大学法人 東京大学 集積回路装置
JP5422976B2 (ja) * 2008-11-19 2014-02-19 富士通株式会社 半導体記憶装置
US8645792B2 (en) * 2008-12-16 2014-02-04 Micron Technology, Inc. Memory with guard value dependent error correction
US7653779B1 (en) 2009-02-04 2010-01-26 Gene Fein Memory storage using a look-up table
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
US8259506B1 (en) * 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8732389B2 (en) 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8407564B2 (en) * 2009-07-15 2013-03-26 Intel Corporation Prediction and cancellation of systematic noise sources in non-volatile memory
JPWO2011013351A1 (ja) * 2009-07-30 2013-01-07 パナソニック株式会社 アクセス装置およびメモリコントローラ
US8189357B2 (en) * 2009-09-09 2012-05-29 Macronix International Co., Ltd. Memory with multiple reference cells
US9003153B2 (en) * 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
US8713404B2 (en) * 2011-07-01 2014-04-29 Apple Inc. Controller interface providing improved data reliability
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
KR101882853B1 (ko) * 2011-12-21 2018-08-27 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US8884679B2 (en) 2012-05-10 2014-11-11 Sandisk Technologies Inc. Apparatus and method for high voltage switches
US8910000B2 (en) * 2012-05-17 2014-12-09 Micron Technology, Inc. Program-disturb management for phase change memory
US9064575B2 (en) 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
US8848453B2 (en) 2012-08-31 2014-09-30 Micron Technology, Inc. Inferring threshold voltage distributions associated with memory cells via interpolation
US9063879B2 (en) 2012-12-13 2015-06-23 Sandisk Technologies Inc. Inspection of non-volatile memory for disturb effects
KR102089613B1 (ko) * 2013-01-02 2020-03-16 삼성전자주식회사 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
US9324438B2 (en) 2013-08-05 2016-04-26 Jonker Llc Method of operating incrementally programmable non-volatile memory
US9342401B2 (en) 2013-09-16 2016-05-17 Sandisk Technologies Inc. Selective in-situ retouching of data in nonvolatile memory
US9570198B2 (en) * 2014-05-16 2017-02-14 SK Hynix Inc. Read disturb detection
US10552043B2 (en) * 2014-09-09 2020-02-04 Toshiba Memory Corporation Memory system
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10839086B2 (en) 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US20160225459A1 (en) * 2015-01-30 2016-08-04 Micron Technology, Inc. Apparatuses operable in multiple power modes and methods of operating the same
US9502129B1 (en) 2015-09-10 2016-11-22 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
US10241701B2 (en) * 2015-09-16 2019-03-26 Samsung Electronics Co., Ltd. Solid state memory system with power management mechanism and method of operation thereof
US11216323B2 (en) 2015-09-16 2022-01-04 Samsung Electronics Co., Ltd. Solid state memory system with low power error correction mechanism and method of operation thereof
KR102643916B1 (ko) * 2016-10-18 2024-03-08 삼성전자주식회사 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
FR3065826B1 (fr) * 2017-04-28 2024-03-15 Patrick Pirim Procede et dispositif associe automatises aptes a memoriser, rappeler et, de maniere non volatile des associations de messages versus labels et vice versa, avec un maximum de vraisemblance
US10354732B2 (en) * 2017-08-30 2019-07-16 Micron Technology, Inc. NAND temperature data management
US20190102105A1 (en) * 2017-09-29 2019-04-04 Burlywood, LLC Variable configuration media controller
US10446246B2 (en) * 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
KR102532084B1 (ko) * 2018-07-17 2023-05-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10573390B1 (en) * 2018-11-30 2020-02-25 Samsung Electronics Co., Ltd. High-density storage system
JP2020113347A (ja) 2019-01-08 2020-07-27 キオクシア株式会社 半導体記憶装置
US10742227B1 (en) 2019-02-25 2020-08-11 Intel Corporation Differential source follower with current steering devices
US11923017B2 (en) 2019-07-02 2024-03-05 Rohm Co., Ltd. Non-volatile storage device
TWI722490B (zh) * 2019-07-16 2021-03-21 大陸商合肥兆芯電子有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN110706735B (zh) * 2019-09-30 2021-09-14 中国科学院微电子研究所 一种NAND Flash存储器读阈值电压修复方法
CN112906071B (zh) * 2020-12-01 2023-07-14 深圳安捷丽新技术有限公司 一种基于页温动态冷热切换的数据保护方法和装置
WO2023177582A1 (en) * 2022-03-14 2023-09-21 Micron Technology, Inc. Host controlled media testing of memory

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5570986A (en) 1978-11-24 1980-05-28 Hitachi Ltd Semiconductor intergrated circuit device
DE3341564A1 (de) 1983-11-17 1985-05-30 Messerschmitt-Bölkow-Blohm GmbH, 8012 Ottobrunn Gekruemmtes flaechenbauteil, insbesondere fuer luftfahrzeuge und vorrichtung zu deren herstellung
JPS61137846A (ja) * 1984-11-21 1986-06-25 アトランテイツク・リツチフイールド・カンパニー アルコキシル化第四級アンモニウム化合物
US4831403A (en) * 1985-12-27 1989-05-16 Minolta Camera Kabushiki Kaisha Automatic focus detection system
DE69034227T2 (de) * 1989-04-13 2007-05-03 Sandisk Corp., Sunnyvale EEprom-System mit Blocklöschung
US5109496A (en) * 1989-09-27 1992-04-28 International Business Machines Corporation Most recently used address translation system with least recently used (LRU) replacement
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
WO1993022770A1 (en) 1992-05-01 1993-11-11 Motorola, Inc. Method and apparatus for storage of digital information
US5412601A (en) * 1992-08-31 1995-05-02 Nippon Steel Corporation Non-volatile semiconductor memory device capable of storing multi-value data in each memory cell
EP0613151A3 (en) 1993-02-26 1995-03-22 Tokyo Shibaura Electric Co Semiconductor memory system with flash EEPROM.
US5424978A (en) * 1993-03-15 1995-06-13 Nippon Steel Corporation Non-volatile semiconductor memory cell capable of storing more than two different data and method of using the same
US5394450A (en) * 1993-04-13 1995-02-28 Waferscale Integration, Inc. Circuit for performing arithmetic operations
US7137011B1 (en) * 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
JP3205658B2 (ja) * 1993-12-28 2001-09-04 新日本製鐵株式会社 半導体記憶装置の読み出し方法
US5563838A (en) * 1994-02-01 1996-10-08 Micron Electronics, Inc. Module having voltage control circuit to reduce surges in potential
US5440524A (en) * 1994-02-01 1995-08-08 Integrated Device Technology, Inc. Method and apparatus for simuilataneous long writes of multiple cells of a row in a static ram
US5629890A (en) * 1994-09-14 1997-05-13 Information Storage Devices, Inc. Integrated circuit system for analog signal storing and recovery incorporating read while writing voltage program method
US5838603A (en) 1994-10-11 1998-11-17 Matsushita Electric Industrial Co., Ltd. Semiconductor device and method for fabricating the same, memory core chip and memory peripheral circuit chip
US5541886A (en) * 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5867721A (en) * 1995-02-07 1999-02-02 Intel Corporation Selecting an integrated circuit from different integrated circuit array configurations
US5745409A (en) * 1995-09-28 1998-04-28 Invox Technology Non-volatile memory with analog and digital interface and storage
KR100239870B1 (ko) * 1995-09-28 2000-03-02 다카노 야스아키 기억 분해능을 가변할 수 있는 불휘발성 다치 메모리 장치
KR0157122B1 (ko) * 1995-12-23 1999-02-18 김광호 디지탈 보상형 아날로그 디지탈 변환기
JPH09205615A (ja) * 1996-01-25 1997-08-05 Canon Inc 記録装置
US5726934A (en) 1996-04-09 1998-03-10 Information Storage Devices, Inc. Method and apparatus for analog reading values stored in floating gate structures
US5712815A (en) * 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US5946257A (en) * 1996-07-24 1999-08-31 Micron Technology, Inc. Selective power distribution circuit for an integrated circuit
JP3709246B2 (ja) * 1996-08-27 2005-10-26 株式会社日立製作所 半導体集積回路
US5754566A (en) 1996-09-06 1998-05-19 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using interleaving
US6023781A (en) * 1996-09-18 2000-02-08 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
JP3930074B2 (ja) * 1996-09-30 2007-06-13 株式会社ルネサステクノロジ 半導体集積回路及びデータ処理システム
JPH10124381A (ja) 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
US6097638A (en) * 1997-02-12 2000-08-01 Kabushiki Kaisha Toshiba Semiconductor memory device
US5828592A (en) 1997-03-12 1998-10-27 Information Storage Devices, Inc. Analog signal recording and playback integrated circuit and message management system
JP3189740B2 (ja) * 1997-06-20 2001-07-16 日本電気株式会社 不揮発性半導体メモリのデータ修復方法
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
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
JP4074697B2 (ja) * 1997-11-28 2008-04-09 株式会社ルネサステクノロジ 半導体装置
JPH11176178A (ja) * 1997-12-15 1999-07-02 Sony Corp 不揮発性半導体記憶装置およびそれを用いたicメモリカード
US6072676A (en) 1998-04-13 2000-06-06 Analog Devices, Inc. Protection circuit for an excitation current source
US6208542B1 (en) * 1998-06-30 2001-03-27 Sandisk Corporation Techniques for storing digital data in an analog or multilevel memory
EP1005213A3 (en) 1998-11-02 2000-07-05 Information Storage Devices, Inc. Multiple message multilevel analog signal recording and playback system containing configurable analog processing functions
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6058060A (en) 1998-12-31 2000-05-02 Invox Technology Multi-bit-per-cell and analog/multi-level non-volatile memories with improved resolution and signal-to noise ratio
US6134141A (en) * 1998-12-31 2000-10-17 Sandisk Corporation Dynamic write process for high bandwidth multi-bit-per-cell and analog/multi-level non-volatile memories
US7139196B2 (en) 1999-01-14 2006-11-21 Silicon Storage Technology, Inc. Sub-volt sensing for digital multilevel flash memory
TW417381B (en) * 1999-04-01 2001-01-01 Mustek Systems Inc Conversion method for increasing the bits of scanning signals of scanner
JP2000298992A (ja) 1999-04-13 2000-10-24 Hitachi Ltd 多値記憶不揮発性半導体メモリの制御装置
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
JP2001052476A (ja) 1999-08-05 2001-02-23 Mitsubishi Electric Corp 半導体装置
JP2001067884A (ja) * 1999-08-31 2001-03-16 Hitachi Ltd 不揮発性半導体記憶装置
WO2001022232A1 (fr) * 1999-09-17 2001-03-29 Hitachi, Ltd. Memoire dans laquelle le nombre de corrections d'erreurs est enregistre
US6166960A (en) 1999-09-24 2000-12-26 Microchip Technology, Incorporated Method, system and apparatus for determining that a programming voltage level is sufficient for reliably programming an eeprom
JP2001110184A (ja) * 1999-10-14 2001-04-20 Hitachi Ltd 半導体装置
US6259627B1 (en) * 2000-01-27 2001-07-10 Multi Level Memory Technology Read and write operations using constant row line voltage and variable column line load
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
US6297988B1 (en) * 2000-02-25 2001-10-02 Advanced Micro Devices, Inc. Mode indicator for multi-level memory
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
JP2002074999A (ja) 2000-08-23 2002-03-15 Sharp Corp 不揮発性半導体記憶装置
US6538922B1 (en) 2000-09-27 2003-03-25 Sandisk Corporation Writable tracking cells
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6552929B1 (en) * 2001-02-08 2003-04-22 Advanced Micro Devices, Inc. Piggyback programming using an extended first pulse for multi-level cell flash memory designs
US6577535B2 (en) 2001-02-16 2003-06-10 Sandisk Corporation Method and system for distributed power generation in multi-chip memory systems
US6738289B2 (en) * 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6785180B2 (en) * 2001-03-15 2004-08-31 Micron Technology, Inc. Programmable soft-start control for charge pump
JP3829088B2 (ja) * 2001-03-29 2006-10-04 株式会社東芝 半導体記憶装置
JP3828376B2 (ja) 2001-05-07 2006-10-04 株式会社東芝 記憶システム
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US6643169B2 (en) * 2001-09-18 2003-11-04 Intel Corporation Variable level memory
GB0123422D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
US6678192B2 (en) * 2001-11-02 2004-01-13 Sandisk Corporation Error management for writable tracking storage units
US6850441B2 (en) * 2002-01-18 2005-02-01 Sandisk Corporation Noise reduction technique for transistors and small devices utilizing an episodic agitation
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
JP3796457B2 (ja) * 2002-02-28 2006-07-12 富士通株式会社 不揮発性半導体記憶装置
US7031196B2 (en) * 2002-03-29 2006-04-18 Macronix International Co., Ltd. Nonvolatile semiconductor memory and operating method of the memory
US6721820B2 (en) * 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
JP4086583B2 (ja) * 2002-08-08 2008-05-14 シャープ株式会社 不揮発性半導体メモリ装置およびデータ書き込み制御方法
JP2004086991A (ja) * 2002-08-27 2004-03-18 Renesas Technology Corp 不揮発性記憶装置
US6963505B2 (en) 2002-10-29 2005-11-08 Aifun Semiconductors Ltd. Method circuit and system for determining a reference voltage
JP4129170B2 (ja) * 2002-12-05 2008-08-06 シャープ株式会社 半導体記憶装置及びメモリセルの記憶データ補正方法
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
JP4554598B2 (ja) * 2003-03-27 2010-09-29 サンディスク アイエル リミテッド すべてのユーザによる完全なアクセスが可能なデータ記憶デバイス
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
US7240219B2 (en) * 2003-05-25 2007-07-03 Sandisk Il Ltd. Method and system for maintaining backup of portable storage devices
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7752380B2 (en) 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
US7212067B2 (en) * 2003-08-01 2007-05-01 Sandisk Corporation Voltage regulator with bypass for multi-voltage storage system
US6970395B2 (en) * 2003-09-08 2005-11-29 Infineon Technologies Ag Memory device and method of reading data from a memory device
US7019998B2 (en) * 2003-09-09 2006-03-28 Silicon Storage Technology, Inc. Unified multilevel cell memory
US6937513B1 (en) 2003-10-16 2005-08-30 Lsi Logic Corporation Integrated NAND and nor-type flash memory device and method of using the same
JP2005141811A (ja) * 2003-11-05 2005-06-02 Renesas Technology Corp 不揮発性メモリ
US7085152B2 (en) * 2003-12-29 2006-08-01 Intel Corporation Memory system segmented power supply and control
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7164561B2 (en) * 2004-02-13 2007-01-16 Sandisk Corporation Voltage regulator using protected low voltage devices
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
DE102005009700B4 (de) * 2004-02-26 2009-02-05 Samsung Electronics Co., Ltd., Suwon Programmierverfahren und nichtflüchtiger Speicher
US7218137B2 (en) * 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7109750B2 (en) * 2004-04-30 2006-09-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-controller
US7233532B2 (en) * 2004-04-30 2007-06-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-system monitor interface
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
CN100595923C (zh) * 2004-05-27 2010-03-24 株式会社瑞萨科技 集成半导体非易失性存储器的控制方法
US7535759B2 (en) * 2004-06-04 2009-05-19 Micron Technology, Inc. Memory system with user configurable density/performance option
JPWO2005122177A1 (ja) * 2004-06-09 2008-04-10 松下電器産業株式会社 半導体集積回路
JP2006031795A (ja) * 2004-07-14 2006-02-02 Renesas Technology Corp 不揮発性半導体記憶装置
US7817469B2 (en) 2004-07-26 2010-10-19 Sandisk Il Ltd. Drift compensation in a flash memory
US7493457B2 (en) * 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7218570B2 (en) * 2004-12-17 2007-05-15 Sandisk 3D Llc Apparatus and method for memory operations using address-dependent conditions
US7391193B2 (en) * 2005-01-25 2008-06-24 Sandisk Corporation Voltage regulator with bypass mode
KR100704628B1 (ko) 2005-03-25 2007-04-09 삼성전자주식회사 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
JP4772363B2 (ja) * 2005-04-12 2011-09-14 株式会社東芝 不揮発性半導体記憶装置
WO2006129339A1 (ja) 2005-05-30 2006-12-07 Spansion Llc 記憶装置、および記憶装置の制御方法
US20060294295A1 (en) 2005-06-24 2006-12-28 Yukio Fukuzo DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device
US7317630B2 (en) 2005-07-15 2008-01-08 Atmel Corporation Nonvolatile semiconductor memory apparatus
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7954037B2 (en) * 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
KR101224919B1 (ko) * 2006-02-07 2013-01-22 삼성전자주식회사 온도 변화에 따라 고전압 발생 회로의 출력 전압 레벨을조절하는 반도체 메모리 장치
US7483327B2 (en) * 2006-03-02 2009-01-27 Freescale Semiconductor, Inc. Apparatus and method for adjusting an operating parameter of an integrated circuit
KR101208312B1 (ko) * 2006-05-12 2012-12-05 애플 인크. 조절가능한 용량을 가진 메모리 디바이스
US7672161B2 (en) * 2007-04-30 2010-03-02 Spansion Llc Adaptive detection of threshold levels in memory

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222099A (zh) * 2011-06-21 2011-10-19 中兴通讯股份有限公司 一种数据存储、查找方法及装置
CN105144302A (zh) * 2013-03-15 2015-12-09 美光科技公司 存储器装置中的错误校正操作
CN105264496A (zh) * 2013-03-15 2016-01-20 桑迪士克企业知识产权有限责任公司 用于软信息生成的数据传输的性能优化
CN105144302B (zh) * 2013-03-15 2018-01-12 美光科技公司 存储器装置中的错误校正操作
CN105264496B (zh) * 2013-03-15 2018-06-22 桑迪士克科技有限责任公司 用于软信息生成的数据传输的性能优化

Also Published As

Publication number Publication date
KR20120001814A (ko) 2012-01-04
KR101206630B1 (ko) 2012-11-29
KR101184554B1 (ko) 2012-09-20
HK1159305A1 (en) 2012-07-27
JP5358431B2 (ja) 2013-12-04
KR101217416B1 (ko) 2013-01-02
HK1159307A1 (en) 2012-07-27
EP2221827B1 (en) 2013-09-25
EP2337030A1 (en) 2011-06-22
EP2221823B1 (en) 2012-02-29
WO2007134277A3 (en) 2008-08-14
ES2383588T3 (es) 2012-06-22
KR101116554B1 (ko) 2012-02-28
EP2022058B1 (en) 2010-07-21
KR20120098965A (ko) 2012-09-05
WO2007134277A2 (en) 2007-11-22
CN102768853A (zh) 2012-11-07
HK1127155A1 (en) 2009-09-18
EP2330593A1 (en) 2011-06-08
CN102768853B (zh) 2015-07-15
KR20120001816A (ko) 2012-01-04
CN102779554B (zh) 2015-12-16
EP2330597A1 (en) 2011-06-08
ES2392334T3 (es) 2012-12-07
US20100070801A1 (en) 2010-03-18
KR20110073559A (ko) 2011-06-29
KR20090026283A (ko) 2009-03-12
US20100070798A1 (en) 2010-03-18
KR101155751B1 (ko) 2012-06-12
US8116133B2 (en) 2012-02-14
ATE475183T1 (de) 2010-08-15
KR101121493B1 (ko) 2012-02-28
KR20110073561A (ko) 2011-06-29
EP2330592B1 (en) 2012-08-22
US7881108B2 (en) 2011-02-01
EP2337030B1 (en) 2016-03-23
KR101206714B1 (ko) 2012-11-29
KR20120098964A (ko) 2012-09-05
EP2330592A1 (en) 2011-06-08
US20070263454A1 (en) 2007-11-15
KR20110069159A (ko) 2011-06-22
ATE547794T1 (de) 2012-03-15
KR101184557B1 (ko) 2012-09-19
EP2333780A1 (en) 2011-06-15
KR101193696B1 (ko) 2012-10-22
JP2009537935A (ja) 2009-10-29
EP2330595A1 (en) 2011-06-08
KR20110069160A (ko) 2011-06-22
EP2022058A2 (en) 2009-02-11
EP2221823A1 (en) 2010-08-25
KR101151597B1 (ko) 2012-05-31
EP2333781A1 (en) 2011-06-15
EP2221827A1 (en) 2010-08-25
KR20120098962A (ko) 2012-09-05
KR20120098961A (ko) 2012-09-05
KR101173721B1 (ko) 2012-08-13
KR101283145B1 (ko) 2013-07-05
KR20120001815A (ko) 2012-01-04
KR20110073558A (ko) 2011-06-29
KR20110073560A (ko) 2011-06-29
DE602007007938D1 (de) 2010-09-02
KR101116512B1 (ko) 2012-02-28
KR20110073562A (ko) 2011-06-29
CN101484947B (zh) 2012-08-15
KR20120098963A (ko) 2012-09-05
KR101133897B1 (ko) 2012-04-09
EP2333780B1 (en) 2013-03-27
KR101217438B1 (ko) 2013-01-02
US7639542B2 (en) 2009-12-29
KR101116468B1 (ko) 2012-03-07
CN102779554A (zh) 2012-11-14

Similar Documents

Publication Publication Date Title
CN101484947B (zh) 多级数据存储单元的维护操作
US7974132B2 (en) Shifting reference values to account for voltage sag

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