CN1499531A - 管理非易失存储器系统中的数据完整性的方法和装置 - Google Patents
管理非易失存储器系统中的数据完整性的方法和装置 Download PDFInfo
- Publication number
- CN1499531A CN1499531A CNA2003101046447A CN200310104644A CN1499531A CN 1499531 A CN1499531 A CN 1499531A CN A2003101046447 A CNA2003101046447 A CN A2003101046447A CN 200310104644 A CN200310104644 A CN 200310104644A CN 1499531 A CN1499531 A CN 1499531A
- Authority
- CN
- China
- Prior art keywords
- section
- data
- page
- ecc
- data area
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
揭示通过划分页为区段并使用扩展的纠错码(ECC)计算独立地地编码区段来编码和页关联的数据的方法和装置。根据本发明的一个方面,编码和在存储器系统的非易失存储器中有数据区域和开销区域的页关联的数据的方法包括划分页的至少一部分为至少两个数据区段,至少两个数据区段包括第一个区段和第二个区段,并在第一个区段上执行ECC计算来编码第一个区段。该方法还包括本质上独立于第一个区段在第二个区段上执行ECC计算来编码第二个区段。
Description
本发明请求2002年10月28日提交的美国专利预申请No.60/421,746的优先权,通过引用将其内容完整合并于此。
相关申请的交叉引用
本发明和2002年10月28日一起提交的美国专利申请No.10/281,739,10/281,823,10/281,670,10/281,824,10/281,631,10/281,855,10/281,762,10/281,696,10/281,626和10/281,804,及一起待批准的美国专利预申请No.60/421,910,60/421,725,60/422,166,和60/421,911相关,通过引用将其内容完整合并于此。
技术领域
本发明涉及大规模数字数据存储系统。更特别地,本发明涉及提高数据存储错误恢复能力而不带来显著数量开销的系统和方法。
背景技术
由于其紧凑的物理尺寸,及能被反复地再编程的能力,非易失存储器系统如闪存存储系统的使用在增长。闪存存储系统的紧凑的物理尺寸帮助其使用在越来越流行的装置中。使用闪存存储系统的设备包括,但不仅限于,数码相机、数码摄像机、数码音乐播放器、手持个人计算机及全球定位系统。能够反复地再编程包括在闪存存储系统中的非易失存储器的能力使得闪存存储系统能够被使用并重用。
通常,闪存存储系统可以包括闪存卡和闪存芯片组。闪存芯片组通常包括闪存组件和一个控制器组件。通常,闪存芯片组可以被组装到一个嵌入系统中。这样的部件或主机系统的制造者通常以组件形式获取闪存和其他组件,然后组装闪存和其他组件到主机系统中。
通常,为了确保存储在闪存的物理块中的数据的正确,使用纠错码(ECC)算法,或错误检查和纠正码算法来编码数据用于存储,和解码已存储的数据。通常ECC算法使用专门的电路或软件来编码和解码数据。很多ECC算法或方法会加入一个或多个用来检测和纠正和已存储的数据关联的错误的校验比特。
一些用来编码和解码数据用于存储的ECC算法被称为1比特ECC算法和2比特ECC算法。1比特ECC算法能够表示一组符号以使得如果1比特的表示不正确,例如,如果反转,仍然能够正确地标识并纠正该符号。2比特ECC算法能够表示一组符号以使得如果2比特的表示反转或不正确,仍然能够正确地标识并纠正该符号。
2比特ECC算法的实现,虽然于1比特ECC算法相比提供了增强的错误纠正能力,通常包括更多的计算,并且因此比1比特ECC算法的实现有更多的计算开销。当需要更多的计算开销时,非易失存储器将消耗更多的能耗,例如,电池能耗。另外,2比特ECC算法的实现通常需要比1比特ECC算法所需更多的校验比特的存储,如熟悉技术的人理解的那样,这是不太现实的。
ECC算法通常被用来编码物理页的内容。图1为物理页的图形表示。物理页200通常包括数据部分202和开销部分204。数据部分202包含多个字节的用户数据,例如,大约512字节的用户数据,而开销部分204包含多个开销字节,例如,大约16字节。通常,或者使用ECC算法编码物理页200的所有内容,或者只对数据部分202的内容进行编码而开销部分204的内容不编码,如图2b所示。
当使用1比特ECC算法编码物理页200的所有内容,如图2a所示,那么本质上在物理页200中只会检测到两个不正确比特,并且只有一个检测到的不正确比特会被纠正。通过使用2比特ECC算法编码物理页200的所有内容,虽然可以检测到4个不正确的比特并且可以纠2个检测到的不正确比特,使用2比特ECC算法通常会带来附加的开销。在一些情况下,带来附加的开销并潜在地导致性能下降被认为并不值得通过允许纠正2个不正确的比特获得的好处。
一些系统本质上只编码数据部分的内容,并且不编码开销部分的内容,如图2b所示。当只编码数据部分的内容时,会有更少的比特需要通过ECC算法的使用潜在地纠正。然而,整个数据部分如图2b的数据部分202中使用1比特ECC算法本质上只有一个不正确的比特会被纠正,这在一些情况下时不足的,而本质上在开销部分204中没有比特会被纠正。
因此,所需的是一种可以提高使用ECC算法纠正的比特数而不带来显著的开销或性能下降的方法和装置。即,所需的是一种允许在使用ECC算法编码的页中可以被纠正的不正确比特数本质上得到提高而不显著地增加开销的需求并使性能下降的系统和装置。
发明内容
本发明涉及一种通过划分页为区段并使用扩展的纠错码(ECC)计算独立地地编码区段来编码和页关联的数据的方法和装置。根据本发明的一个方面,编码和在存储器系统的非易失存储器中有数据区域和开销区域的页关联的数据的方法包括划分页的至少一部分为至少两个数据区段,至少两个数据区段包括第一个区段和第二个区段,并在第一个区段上执行ECC计算来编码第一个区段。该方法还包括本质上独立于第一个区段在第二个区段上执行ECC计算来编码第二个区段。
在一个实例中,第一个区段包括数据区域并且第二个区段包括开销区域。在另一实例中,第一个区段包括数据区域的第一个部分并且第二个区域包括数据区域的第二个部分。
通过允许ECC计算本质上独立地编码包含在页的区段内的数据,可以增加整个页中可以被纠正的坏的或不正确的比特数量而不带来显著的性能下降或带来显著数量的附加开销。当划分页为至少两个数据区段时,可以使用ECC算法独立地编码两个区段。当同一ECC算法被用来编码每个区段,例如,ECC算法最多检测两个不正确比特并纠正一个不正确比特时,在每个区段中最多会检测到两个不正确比特,而在每个区段中会纠正一个不正确比特。因此,本质上可以检测到并且纠正附加的不正确比特而不需要额外的开销。纠正页内的附加的不正确比特能力通常会提高存储在页内的数据的可靠性。
本发明的这些和其他优点将在阅读后面详细说明并且研究附图中不同的图形时变得显而易见。
附图说明
通过引用下面的说明和附图一起,能够得到对本发明最好的理解。
图1为非易失存储器的物理页的图形表示。
图2a为使用ECC算法对其整体编码的物理页的图形表示。
图2b为使用ECC算法对其数据部分整体编码而不对开销部分编码的物理页的图形表示。
图3a为包含非易失存储器的通用主机系统的图形表示。
图3b为存储器设备,如,图3a的存储器设备120的图形表示。
图3c为包含嵌入非易失存储器的主机系统的图形表示。
图4a为根据本发明的一个实例使用本质上独立地应用于该页的数据部分和该页的开销部分的ECC算法编码的物理页的图形表示。
图4b为根据本发明的一个实例使用本质上独立地应用于该页的数据部分的两个区段的ECC算法编码的物理页的图形表示。
图4c为根据本发明的一个实例使用本质上独立地应用于该页的数据部分的多个区段的ECC算法部分地编码的物理页的图形表示。
图5为有使用本质上独立地应用于该页的多个区段的1比特ECC算法纠正的不正确比特的页的图形表示。
图6为展示一种通过划分或分隔该页为区段并实现扩展的ECC算法编码和页关联的数据的方法的处理流图。
图7根据本发明的一个实例为系统架构的方框图表示。
具体实施方式
纠错码(ECC)算法如1比特ECC算法或2比特ECC算法通常被用来编码将存储在非易失存储器的物理页上的数据,并解码已存储的数据。使用ECC算法通常能够提高存储在物理页内的数据的正确率。由于2比特ECC算法可以纠正更多使用1比特ECC算法纠正的错误比特的能力,相对较少计算密集的1比特ECC算法首选使用更加计算密集的2比特算法。然而,2比特ECC算法的实现虽然提供了增强的错误纠正能力,却在计算的数量和能耗需求方面比1比特ECC算法更加昂贵。
通常,当ECC算法如1比特ECC算法被用来编码包含在页中的数据,或者整个页被一起编码,或者只有页的一个数据部分被编码而该页开销部分不编码。当整个页被一起使用1比特ECC算法编码,那么最多可以检测到两个不正确比特并且最多一个不正确比特会被纠正。替换地,当仅使用1比特ECC算法编码该页的数据部分,那么最多检测出数据部分中的两个不正确比特并且最多纠正数据部分中的一个不正确比特,而没有检测到或纠正开销区域中的不正确比特。通常,增加在页中可以被检测并纠正的不正确比特的数量,即增加错误恢复能力,能够提高包含在页内的数据的完整性。结果,会提高包含该页的存储器系统的整体可靠性。
在本发明的一个实例中,页可以被划分或分组为独立的区段。通过划分页为区段,ECC计算可以被应用于编码包含在区段中的数据以使得每个区段本质上被独立地编码。能够单独地编码区段的扩展ECC计算能够提高在包含区段的页中检测到并纠正的不正确比特的整体数量而不带来显著数量的额外开销。如果页被划分为每个包含一些和页关联的数据的至少两个区段,可以使用ECC算法如1比特ECC算法独立地编码两个区段。当同一ECC算法被用来编码每个区段,例如,最多检测两个不正确比特并纠正一个不正确比特的ECC算法,在每个区段中最多可以检测到两个不正确比特,而在每个区段中可以纠正一个不正确比特。例如,当使用在每个区段中最多纠正一个不正确比特的ECC算法编码两个区段,那么这样的ECC算法可以有效地纠正一个页中的两个不正确的比特,而在两个区段中的每一个最多纠正一个比特。即,本质上可以纠正附加的不正确比特而本质上无需额外的开销或带来显著的性能下降。纠正附加的页内的不正确比特的能力提高了所存储的数据的完整性,并且因此提高了整个存储器系统的可靠性。
闪存系统,或更一般地,使用允许系统内的物理页本质上划分为独立地使用ECC算法编码的数据区段完整性关联实现的非易失存储器设备通常包括闪存,例如,NAND或MLC NAND,卡和芯片组。通常,闪存系统和主机系统一起使用以使得主机系统能够对闪存系统写数据或读取数据。然而,一些闪存系统包括嵌入闪存和在主机上执行本质上作为嵌入闪存的控制器的软件,如下面引用图3c所述。引用图3a,说明包含非易失存储器设备的通用主机系统,例如,CF卡。主机或计算机系统100通常包括允许微处理器108、随机访问存储器(RAM)112,及输入/输出电路116通讯的系统总线104。应理解主机系统100通常可以包括其他组件,例如,显示设备和网络设备,为展示的目的并未标出它们。
通常,主机系统可以能够获取包括但不仅限于,静止图像信息、音频信息,和视频图像信息的信息。这样的信息可以实时获取,并且以无线方式发送到主机系统100。虽然主机系统100本质上可以为任何系统,主机系统100通常为这样的系统,如数码相机、摄像机、蜂窝通讯设备、音频播放器,或视频播放器。然而应理解主机系统100本质上通常可以为任何存储数据或信息并检索数据或信息的系统。
主机系统100也可以为仅获取数据,或仅检索数据的系统。即,主机系统100可以为,在一个实例中,存储数据的专用系统,或主机系统100可以为读取数据的专用系统。作为例子,主机系统100可以为仅用来写或存储数据的存储器写入器。替换地,主机系统100可以为如MP3播放器这样通常用来读取或检索数据,并且不获取数据的设备。
非易失存储器设备120在一个实例中为可移动非易失存储器设备,和总线104连接来存储信息。可选的接口块130可以允许非易失存储器设备120间接地和总线104连接。熟悉技术的人应理解,当存在时,输入/输出电路块116用来降低总线104的负担。非易失存储器设备120包括非易失存储器124和可选的存储器控制系统128。在一个实例中,非易失存储器设备120可以实现在单个芯片或电路小片上。替换地,非易失存储器设备120可以实现在多芯片模块、或可以构成芯片组并一起作为非易失存储器设备120使用的多个离散组件上。下面引用图3b更详细地说明非易失存储器设备120的一个实例。
非易失存储器124(例如NAND闪存或MLC NAND闪存)用来存储数据以使得数据在需要的时候能被访问或读取。存储在非易失存储器124中的数据在适当的时候也可以被删除,虽然应理解在非易失存储器124中的一些数据不能被删除。存储数据、读取数据和删除数据的处理通常由存储器控制系统128或当存储器控制系统128不存在时,由微处理器108执行的软件来控制。非易失存储器124的操作可以被管理以使得通过致使非易失存储器124的各部分平均地消耗,非易失存储器124的生命期本质上得到最大化。
非易失存储器设备120通常以包含可选的存储器控制系统128,即,控制器来说明。通常,非易失存储器设备120可以包括独立的芯片用于非易失存储器124和存储器控制器系统128,即,控制器,功能。作为例子,虽然非易失存储器设备包括,但不仅限于,包括实现在独立的芯片上的控制器的PC卡、CF卡、多媒体卡和安全数字卡,其他非易失存储器设备也可以不包括实现在独立芯片上的控制器。熟悉技术的人应理解,在非易失存储器设备120不包括独立的存储器和控制器芯片的一个实例中,存储器和控制器功能可以被集成到单个芯片中。替换地,存储器控制系统128的功能可以由微处理器108提供,例如上述在非易失存储器设备120不包括存储器控制器128的实例中。
引用图3b,根据本发明的一个实例更详细地说明非易失存储器设备120。如上所述,非易失存储器设备120包括非易失存储器124并且可以包括存储器控制系统128。存储器124和控制系统128,或控制器,可以为非易失存储器设备120的主要组件,虽然当存储器124为嵌入NAND设备,如嵌入MLCNAND存储器时,例如,非易失存储器设备120可以不包括控制系统128。存储器124可以为在半导体基片上构成的存储器单元阵列,其中通过在存储器单元的单独存储元件上存储一个或两个或多个水平的电荷存储一个或多个比特的数据在单独的存储器单元中。一个非易失的快闪电可擦除只读存储器(EEPROM)是这样的系统的存储器的普通类型的例子。
当存在时,控制系统128在总线15上和主机计算机或其他使用该存储器系统存储数据的系统通讯。总线15通常为图3a的总线104的一部分。控制系统128也控制存储器124的操作,它可以包括存储器单元阵列11,来写入由主机提供的数据,读取由主机请求的数据并且在操作存储器124中执行各种常用功能。控制系统128通常包括有关联的非易失软件存储器、各种逻辑电路和类似部分的通用微处理器。一个或多个状态机常被包括用来控制特定例行程序的性能。
存储器单元阵列11通常由控制系统128或微处理器108通过地址解码器17来寻址。解码器17加载正确的电压到阵列11的门和位线以写入数据、读取数据,或删除一组由控制系统128寻址的存储器单元。附加电路19包含取决于被写入一组寻址的单元的数据控制加载到阵列的元件的电压的编程驱动器。电路19也包括传感放大器和从一组寻址的存储器单元读取数据所需的其他电路。被写出阵列11的数据,或最近从阵列11读取的数据,通常存储在控制系统128中的缓冲存储器21中。控制系统128通常也包括各种寄存器用来临时地存储命令和状态数据,和类似信息。
阵列11被划分为大量数目的块0到N存储器单元。如对快闪EEPROM系统很普通的那样,块通常时最小的删除单元。即,每个块包含一起删除的最小数量的存储器单元。每个块通常被划分为多个页。熟悉技术的人应理解,页可以是最小的编程单元。即,基本的程序操作对至少一个存储单元的页写数据或读取数据。一个或多个数据区段通常被存储在每个页中。如图2b所示,一个区段包括用户数据和开销数据。开销数据通常包括从区段的用户数据计算出的纠错码(ECC)。控制系统128的部分23在写入数据到阵列11时计算ECC,并且在从阵列11读取数据时检验ECC。替换地,ECC被存储在包含用户数据的不同的页,或不同的块中。
用户数据的一个区段通常为512字节,对应于磁盘驱动器一个扇区的尺寸。开销数据,或冗余数据,通常为附加的16字节。一个数据区段最常包含在每个页中但是两个或更多的区段相反可以构成一个页。任何数量的页可以构成一个块。作为例子,一个块可以由8到512、1024或更多页构成。选择块的数量以提供所需的存储器系统的数据存储容量。阵列11通常划分为几个字阵列(未标出),每个子阵列包含一部分块,它们独立于彼此操作以在各种存储器操作的执行中提高并行的程度。使用多个子阵列的一个例子在美国专利No.5,890,192中说明,通过引用将其内容合并于此。
在一个实例中,非易失存储器如MLC NAND存储器被嵌入到一个系统,例如,主机系统。图3c为包含嵌入非易失存储器的主机系统的图形表示。主机或计算机系统150通常包括允许微处理器158、RAM 162,及输入/输出电路166,和主机系统150的其他组件(未标出)通讯的系统总线154。非易失存储器174,例如,闪存,允许信息被存储在主机系统150中。可以在非易失存储器174和总线154之间提供接口180来对非易失存储器174进行信息的读取和写入。
非易失存储器174可以由有效地执行用来控制非易失存储器174的软件或固件或两者的微处理器158管理。即,微处理器158可以运行允许控制非易失存储器174的编码设备,即,软件编码设备或固件编码设备。这样的编码设备,可以为和CPU一起包装在微处理器158内的闪存、独立的快闪ROM或在非易失存储器174内部,下面将对其说明,可以使非易失存储器174中的物理块能够被寻址,并且可以对物理块进行信息的存储、读取和删除。
包含在非易失存储器如非易失性存储器174中的页可以被划分为可以独立地使用ECC算法编码的多个数据区段,如上所述。这些区段的大小可以相同也可以不同。通常,当编码页的开销或冗余区域时,页的开销或冗余区域构成一个区段,其中页的数据区域可以为单个区段或多个区段。
如图4a所示,包含用户数据和开销区域404,或冗余区域的数据部分402,可以本质上独立地作为第一个区段406和第二个区段408进行编码或处理。即,包含数据部分402和开销区域404的页400可以被划分为独立地编码的区段406、408。通常,使用本质上同一ECC算法,例如,1比特ECC算法编码区段406、408两者,虽然应理解用来编码区段406的算法和用来编码区段408的算法可以不同。
由于坏的或不正确的比特可以本质上随机地分布在页400内,使用1比特ECC算法独立地编码区段406和区段408潜在地允许在区段406内纠正一个不正确比特,而在区段406中可以检测到两个不正确比特,并且在区段408内纠正一个不正确比特,而在区段408内可以检测到两个不正确比特。因此,通过在页400上两次实现1比特ECC算法,最多两个不正确比特可以有效地被纠正而不带来显著的和实现2比特ECC算法关联的开销。
在一个实例中,2比特ECC算法可以被用来独立地编码区段406和区段408,从而能够在区段406内最多纠正两个不正确比特并且在区段408内最多纠正两个不正确比特。虽然和实现2比特ECC算法关联的开销显著地高于和实现1比特ECC算法关联的开销,为了进一步确保包含在数据部分402或开销区域404中的字节的完整性,选择使用2比特ECC算法。
通常,包含在页内的区段的数量可以由系统希望检测并纠正的不正确比特数量确定。通常,随着将被纠正的不正确比特的数量增加,区段的数量增加。另外,区段的数量也可以取决于系统能够存储的校验比特数量,例如在页的开销区域中。 作为例子,页可以被划分为大约三个区段,虽然区段的数量本质上通常可以为任何大于等于二的数。
图4b为根据本发明的一个实例有效地划分为三个可以使用ECC算法独立地编码的区段的页的图形表示。包含数据部分422和开销区域424的页420可以被划分为三个区段426、428。通常,开销区域424为单个区段428,而用户区域可以被划分为大小近似相同,例如,每个大约256字节的区段426a、426b当开销区域424为包含512字节时。
使用ECC算法独立编码每个区段426、428。当用来编码区段426、428的ECC算法为1比特ECC算法,那么在每个区段426、428中最多可以检测到两个不正确比特,并且可以纠正每个区段中的一个不正确比特。因此,当实现1比特ECC算法时,在页420内的最多可以检测到六个不正确比特,而最多可以纠正三个不正确比特。替换地,应理解用来编码区段426、428的ECC算法允许纠正每个区段426、428中的大约两个比特,而在每个区段426、428中最多可以纠正三个不正确比特。
当使用1比特ECC算法或扩展的1比特ECC计算编码每个区段426、428时,那么最多可以使用1比特算法有效地在页420内纠正三个比特。当不正确比特分布在区段426a、区段426b,和区段428之间时,通常纠正三个比特。因此,可以有效地提高存储在数据部分422中的用户数据的完整性及存储在开销区域424中的开销数据完整性而不带来本质上附加的开销,因为可以检测到并纠正页420内更多的错误。
虽然通常使用ECC算法编码页的开销区域,可以对开销区域不编码或在一些实例中使用其他算法编码。如图4c所示,页440的数据部分442可以作为独立的区段446使用ECC算法如1比特ECC算法编码,而开销区域444可以不使用ECC算法编码,例如,使用不同的算法编码。独立的区段446通常为近似相同的大小,即,区段446a和区段446b通常每个都包含相同数量的字节。
数据部分442通常可以作为两个独立区段446a、446b编码,虽然数据部分442可以划分区段的数量可以不同。作为例子,数据部分442可以被划分为三个区段,而不是划分为两个区段446a、446b。当扩展ECC计算以编码三个独立的区段时,和ECC算法关联并且因此存储在开销区域444中的校验比特的数量,通常大约为八。开销校验比特也存储在开销区域中。虽然数据部分422通常可以划分为三个以上的区段,当数据部分442划分为三个易失区段时,通常需要用来纠正数据字段的校验比特的数量会很高而不能即时存储到开销区域444中。
如上所述,通过划分页为使用扩展的ECC计算或ECC算法编码的独立的区段,可以使用ECC算法纠正的比特的数量会增加。即,通常能够纠正一个比特的1比特ECC算法可以扩展为能够纠正页的每个区段的一个比特。下面引用图5,根据本发明的一个实例说明使用1比特ECC算法纠正一个以上和页关联的比特的处理。页500可以包含两个区段506。应理解区段506a和区段506b都可以和页500的数据部分或区域关联,或区段506a可以包含页500的数据部分而区段506b包含页500的开销区域。
在上述实例中,1比特ECC算法被扩展以编码区段506。同样,可以使用1比特ECC算法纠正每个区段506中的一个比特。区段506a内的比特包括不正确比特512a,而区段506b内的比特包括不正确比特512b。在和1比特ECC算法关联的错误恢复处理中,纠正不正确比特512a成为区段506a’内的比特512a’,而纠正不正确比特512b成为区段506b’内的比特512b’。
引用图6,根据本发明的一个实例说明一种通过划分或分隔页为区段并实现扩展的ECC算法编码和页关联的数据的方法。编码数据的处理600开始于步骤604,在其中标识出使用ECC算法编码的页。一旦标识出该页,在步骤608确定是否划分该页的数据部分为区段。如果确定该页的数据部分将划分为区段,那么数据部分在步骤620被划分为区段。和数据部分关联的区段的数量通常是不同的。作为例子,数据部分可以包含两个或三个区段。
在数据部分被划分为区段后,在步骤624本质上单独地编码数据部分中的每个区段。即,可以扩展ECC计算,例如和1比特ECC算法关联的ECC计算,以使得可以本质上独立地编码在步骤620创建的每个区段。编码数据部分的每个区段后,在步骤624使用本质上相同的ECC算法来编码和数据部分关联的区段,并且编码数据的处理完成。
回到步骤608,如果确定不划分数据部分为区段,那么指示数据部分本质上作为单个区段来编码。相应地,处理流从步骤608移至步骤612,在其中数据编码作为单个区段编码。如上所述,可以使用ECC算法如1比特ECC算法编码数据部分。一旦编码了数据部分,在步骤616本质上作为独立的区段编码开销部分或区域,并且编码数据的处理完成。
和实现允许使用ECC算法独立地编码和页关联的区段的系统关联的功能通常在软件,例如,作为程序代码设备,或包含非易失存储器或非易失存储器组件的主机系统的固件中提供。图7展示和提供给主机系统的软件或固件关联的适合的系统架构的一个实例。系统架构700通常包括多种模块,包括但不仅限于,应用接口模块704、系统管理器模块708、数据管理器模块712、数据完整性管理器716,和设备管理器和接口模块720。通常,系统架构700可以用可以由处理器如图3a的处理器108访问的软件代码设备或固件实现。
通常,应用接口模块704可以和主机、操作系统或用户直接通讯。应用接口模块704也和系统管理器模块708和数据管理器模块712通讯。当用户请求读、写或格式化闪存时,用户通常发送请求到操作系统,然后操作系统传送该请求到应用接口模块704。取决于请求,应用接口模块704传递该请求到系统管理器模块708或数据管理器模块712。
系统管理器模块708包括系统初始化子模块724、删除计数块管理子模块726和电源管理块子模块730。系统初始化子模块724通常使初始化请求被处理,并通常和删除计数块管理子模块726通讯。系统初始化模块724也用来解决一对多的逻辑到物理块的指定。
删除计数块管理子模块726包括使删除计数块被存储的功能,和使用单独的删除计数使平均删除计数被计算和更新的功能。换句话说,删除计数块管理子模块726有效地允许对删除计数分类并且有效地允许维护平均删除计数。进一步来说,在一个实例中,删除计数块管理子模块726本质上也在整个系统初始化请求的过程中同步本质上删除计数块中所有的块的删除计数。虽然删除计数块管理子模块726可以使平均删除计数存储在删除计数块中,应理解可以用电源管理块子模块730使平均删除计数被存储。
除了和应用接口模块704通讯,系统管理器模块708也和数据管理器模块712以及设备管理器和接口模块720通讯。数据管理器模块712,它和系统管理器模块708和应用接口模块704两者通讯,可以包含提供有效地转换逻辑区段为物理区段的区段映射的功能。即,数据管理器模块712映射逻辑块到物理块。数据管理器模块712也可以包含和操作系统和文件系统接口层关联的功能,并使得块内的组能够被管理,如共同待批准的美国专利申请No._____,提交于_____(律师记录号No.SANDP029)中所述,在此完整引用。在一个实例中,数据管理器模块712用来使本质上能够出现非顺序的写处理。
设备管理器和接口模块720,它和系统管理器模块708、数据管理器712,及数据完整性管理器716通讯,通常提供一个闪存接口,并包括和硬件抽象,例如,I/O接口关联的功能。数据完整性管理器模块716在其他功能之间提供ECC处理。
虽然只说明了本发明的几个实例,应理解本发明能够以很多其他具体的形式实现而不偏离本发明的精神或范围。作为例子,1比特ECC算法是作为适合用于本质上独立地编码页的区段的内容来说明的。然而,应理解在一些实例中,其他类型的ECC算法如2比特ECC算法可以用来本质上独立地编码页的区段的内容。2比特ECC算法适合的实例包括在其中页划分为两个区段的实例,及在其中有足够的存储空间来保存和2比特ECC算法关联的校验位的实例。
另外,虽然作为1比特ECC算法或2比特ECC算法一般地说明ECC算法,ECC算法可以各自为1符号ECC算法或2符号ECC算法。进一步来说,实际的ECC算法可以完全不同。适合的ECC算法可以包括,但不仅限于,Reed-Solomon算法、Hamming编码算法及二进制Hamming编码算法。例如,在一个实例中,本质上能够独立地编码页的区段的适合的1比特ECC算法可以为Hamming编码算法,而适合的2比特ECC算法可以为Reed-Solomon算法。
虽然本质上同一ECC算法会应用到页的不同区段,应理解不同ECC算法可以被应用到页的不同区段。换句话说,虽然通常对页的编码部分进行相同类型的编码,可以使用不同类型的编码。
通常,当页的数据部分被划分为区段时,区段有本质上相等的大小,即,每个区段包含大约相等数量的比特。然而,应理解在一些情况下区段的大小也可以不同。
和本发明的各种方法关联的步骤可以完全不同。通常,可以增加、删除、重排及变更步骤而不偏离本发明的精神或范围。因此,上述例子应被看作说明性的而非限制性的,并且本发明并不仅限于上述给出的细节,而是可以在后附的权利要求的范围内可以被修改。
Claims (31)
1.一种编码和存储器系统的非易失存储器内的页关联的数据的方法,该页有数据区域和开销区域,其特征在于,所述方法包括:
划分至少页的部分为至少两个数据区段,至少两个数据区段包括第一个区段和第二个区段;
对第一个区段进行纠错码(ECC)计算来编码第一个区段;及
对第二个区段进行纠错码(ECC)计算来编码第二个区段,所述第二个区段本质上独立于第一个区段被编码。
2.如权利要求1所述的方法,其特征在于,所述第一个区段包括数据区域并且第二个区段包括开销区域。
3.如权利要求1所述的方法,其特征在于,所述第一个区段包括数据区域的第一个部分并且第二个区段包括数据区域的第二个部分。
4.如权利要求1所述的方法,其特征在于,所述ECC计算与安排在第一个区段和第二个区段的每一个中检测最多两个不正确比特并纠正最多一个不正确比特的ECC算法关联。
5.如权利要求4所述的方法,其特征在于,所述ECC算法为Hamming编码ECC算法。
6.如权利要求1所述的方法,其特征在于,所述划分至少页的部分为至少两个数据区段包括:
划分页为三个区段,三个区段包括第一个区段,第二个区段和第三个区段。
7.如权利要求6所述的方法,其特征在于,进一步包括:
对第三个区段进行ECC计算来编码第三个区段,所述第三个区段本质上独立于第一个区段和第二个区段被编码。
8.如权利要求6所述的方法,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区域包括开销数据。
9.如权利要求6所述的方法,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区域包括数据区域的第三个部分。
10.如权利要求1所述的方法,其特征在于,所述非易失存储器为NAND闪存和MLC NAND闪存之一。
11.一种存储器系统,其特征在于,所述系统包括:
非易失存储器,所述非易失存储器包括页,所述页有数据区域和开销区域,所述数据区域和开销区域被安排以包含数据位;
划分至少页的部分为至少两个数据区段的编码设备,至少两个数据区段包括第一个区段和第二个区段;
对第一个区段进行纠错码(ECC)计算来编码第一个区段并且对第二个区段进行纠错码(ECC)计算来编码第二个区段的编码设备,所述第二个区段本质上独立于第一个区段被编码;及
用于所述存储编码设备的存储器区域。
12.如权利要求11所述的存储器系统,其特征在于,进一步包括:
控制器,所述控制器安排用于处理所述编码设备。
13.如权利要求11所述的存储器系统,其特征在于,所述第一个区段包括数据区域并且第二个区段包括开销区域。
14.如权利要求11所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分并且第二个区段包括数据区域的第二个部分。
15.如权利要求1所述的存储器系统,其特征在于,所述ECC计算与安排在第一个区段和第二个区段的每一个中检测最多两个不正确比特并纠正最多一个不正确比特的ECC算法关联。
16.如权利要求15所述的存储器系统,其特征在于,所述ECC算法为Hamming编码ECC算法。
17.如权利要求11所述的存储器系统,其特征在于,所述划分至少页的部分为至少两个数据区段的编码设备包括:
划分页为三个区段,三个区段包括第一个区段,第二个区段和第三个区段的编码设备。
18.如权利要求17所述的存储器系统,其特征在于,进一步包括:
对第三个区段进行ECC计算来编码第三个区段的编码设备,所述第三个区段本质上独立于第一个区段和第二个区段被编码。
19.如权利要求17所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区域包括开销数据。
20.如权利要求17所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区段包括数据区域的第三个部分。
21.如权利要求11所述的存储器系统,其特征在于,所述非易失存储器为NAND闪存和MLC NAND闪存之一。
22.如权利要求11所述的存储器系统,其特征在于,所述编码设备为软件编码设备和固件编码设备之一
23.一种存储器系统,其特征在于,所述系统包括:
非易失存储器,所述非易失存储器包括页,所述页有数据区域和开销区域,所述数据区域和开销区域被安排以包含数据位;
划分至少页的部分为至少两个数据区段的方法,至少两个数据区段包括第一个区段和第二个区段;
对第一个区段进行纠错码(ECC)计算来编码第一个区段并且对第二个区段进行纠错码(ECC)计算来编码第二个区段的方法,所述第二个区段本质上独立于第一个区段被编码。
24.如权利要求23所述的存储器系统,其特征在于,所述第一个区段包括数据区域并且第二个区段包括开销区域。
25.如权利要求23所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分并且第二个区段包括数据区域的第二个部分。
26.如权利要求1所述的存储器系统,其特征在于,所述ECC计算与安排在第一个区段和第二个区段的每一个中检测最多两个不正确比特并纠正最多一个不正确比特的Hamming编码ECC算法关联。
27.如权利要求23所述的存储器系统,其特征在于,所述划分至少页的部分为至少两个数据区段的方法包括:
划分页为三个区段,三个区段包括第一个区段,第二个区段和第三个区段的方法。
28.如权利要求27所述的存储器系统,其特征在于,进一步包括:
对第三个区段进行ECC计算来编码第三个区段的方法,所述第三个区段本质上独立于第一个区段和第二个区段被编码。
29.如权利要求27所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区域包括开销数据。
30.如权利要求27所述的存储器系统,其特征在于,所述第一个区段包括数据区域的第一个部分,第二个区段包括数据区域的第二个部分,并且第三个区域包括数据区域的第三个部分。
31.如权利要求23所述的存储器系统,其特征在于,所述非易失存储器为NAND闪存和MLC NAND闪存之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42174602P | 2002-10-28 | 2002-10-28 | |
US60/421,746 | 2002-10-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1499531A true CN1499531A (zh) | 2004-05-26 |
Family
ID=32094173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2003101046447A Pending CN1499531A (zh) | 2002-10-28 | 2003-10-28 | 管理非易失存储器系统中的数据完整性的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20040083334A1 (zh) |
EP (1) | EP1416380A3 (zh) |
JP (1) | JP2004152300A (zh) |
KR (1) | KR20040038709A (zh) |
CN (1) | CN1499531A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957767A (zh) * | 2010-09-21 | 2011-01-26 | 深圳创维数字技术股份有限公司 | 基于与非型闪存存储设备的系统软件升级方法 |
CN102414666A (zh) * | 2009-05-06 | 2012-04-11 | 苹果公司 | 用于受管理的非易失性存储器的低等待时间读取操作 |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN101627371B (zh) * | 2007-01-26 | 2012-09-05 | 美光科技公司 | 用于nand存储器的编程管理数据 |
CN101650974B (zh) * | 2008-08-12 | 2012-12-19 | 创见资讯股份有限公司 | 可自我检测使用状态的储存装置及其检测方法 |
CN101868830B (zh) * | 2007-11-21 | 2014-03-12 | 美光科技公司 | 容错非易失性集成电路存储器 |
CN108418589A (zh) * | 2018-03-05 | 2018-08-17 | 华中科技大学 | 一种单层非易失存储器的动态编解码方法 |
Families Citing this family (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7559004B1 (en) | 2003-10-01 | 2009-07-07 | Sandisk Corporation | Dynamic redundant area configuration in a non-volatile memory system |
US7424659B2 (en) * | 2003-10-31 | 2008-09-09 | Sandisk Il Ltd. | System-in-package and method of testing thereof |
US7099221B2 (en) | 2004-05-06 | 2006-08-29 | Micron Technology, Inc. | Memory controller method and system compensating for memory cell data losses |
US20060010339A1 (en) * | 2004-06-24 | 2006-01-12 | Klein Dean A | Memory system and method having selective ECC during low power refresh |
US7340668B2 (en) * | 2004-06-25 | 2008-03-04 | Micron Technology, Inc. | Low power cost-effective ECC memory system and method |
US7116602B2 (en) * | 2004-07-15 | 2006-10-03 | Micron Technology, Inc. | Method and system for controlling refresh to avoid memory cell data losses |
US6965537B1 (en) * | 2004-08-31 | 2005-11-15 | Micron Technology, Inc. | Memory system and method using ECC to achieve low power refresh |
EP1635261B1 (en) * | 2004-09-10 | 2008-06-11 | STMicroelectronics S.r.l. | Memory with embedded error correction code circuit |
KR100645058B1 (ko) | 2004-11-03 | 2006-11-10 | 삼성전자주식회사 | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 |
US20060140007A1 (en) * | 2004-12-29 | 2006-06-29 | Raul-Adrian Cernea | Non-volatile memory and method with shared processing for an aggregate of read/write circuits |
US8341371B2 (en) * | 2005-01-31 | 2012-12-25 | Sandisk Il Ltd | Method of managing copy operations in flash memories |
US8112513B2 (en) * | 2005-11-30 | 2012-02-07 | Microsoft Corporation | Multi-user display proxy server |
US7844879B2 (en) * | 2006-01-20 | 2010-11-30 | Marvell World Trade Ltd. | Method and system for error correction in flash memory |
JP4791831B2 (ja) | 2006-01-20 | 2011-10-12 | 株式会社東芝 | 半導体記憶装置 |
US8055979B2 (en) * | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
JP4778321B2 (ja) * | 2006-01-30 | 2011-09-21 | 富士通セミコンダクター株式会社 | 半導体メモリ、メモリシステム |
JP4846384B2 (ja) * | 2006-02-20 | 2011-12-28 | 株式会社東芝 | 半導体記憶装置 |
JP4836608B2 (ja) * | 2006-02-27 | 2011-12-14 | 株式会社東芝 | 半導体記憶装置 |
US7913110B2 (en) | 2006-03-07 | 2011-03-22 | Nxp B.V. | Electronic circuit with a memory matrix that stores pages including extra data |
CN103280239B (zh) | 2006-05-12 | 2016-04-06 | 苹果公司 | 存储设备中的失真估计和消除 |
WO2007132452A2 (en) * | 2006-05-12 | 2007-11-22 | Anobit Technologies | Reducing programming error in memory devices |
US8239735B2 (en) * | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
US8156403B2 (en) * | 2006-05-12 | 2012-04-10 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US7809994B2 (en) * | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US20070300130A1 (en) * | 2006-05-17 | 2007-12-27 | Sandisk Corporation | Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
US7971071B2 (en) * | 2006-05-24 | 2011-06-28 | Walkoe Wilbur J | Integrated delivery and protection device for digital objects |
US8060806B2 (en) | 2006-08-27 | 2011-11-15 | Anobit Technologies Ltd. | Estimation of non-linear distortion in memory devices |
US7894289B2 (en) * | 2006-10-11 | 2011-02-22 | Micron Technology, Inc. | Memory system and method using partial ECC to achieve low power refresh and fast access to data |
US7900120B2 (en) | 2006-10-18 | 2011-03-01 | Micron Technology, Inc. | Memory system and method using ECC with flag bit to identify modified data |
US7821826B2 (en) | 2006-10-30 | 2010-10-26 | Anobit Technologies, Ltd. | Memory cell readout using successive approximation |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7924648B2 (en) | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
US8151163B2 (en) * | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
CN101558452B (zh) * | 2006-12-07 | 2012-08-29 | Nxp股份有限公司 | 用于在闪速eeprom存储页中重构可靠性数据的方法和装置 |
US7593263B2 (en) * | 2006-12-17 | 2009-09-22 | Anobit Technologies Ltd. | Memory device with reduced reading latency |
US7900102B2 (en) * | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
US8583981B2 (en) * | 2006-12-29 | 2013-11-12 | Marvell World Trade Ltd. | Concatenated codes for holographic storage |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
WO2008111058A2 (en) * | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US7797480B2 (en) * | 2007-03-29 | 2010-09-14 | Sandisk Corporation | Method for reading non-volatile storage using pre-conditioning waveforms and modified reliability metrics |
US7904793B2 (en) | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US8174905B2 (en) * | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US8068360B2 (en) * | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
WO2009050703A2 (en) | 2007-10-19 | 2009-04-23 | Anobit Technologies | Data storage in analog memory cell arrays having erase failures |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
KR101509836B1 (ko) * | 2007-11-13 | 2015-04-06 | 애플 인크. | 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택 |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US8209588B2 (en) * | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
US8085586B2 (en) * | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
KR101378349B1 (ko) | 2008-01-30 | 2014-03-28 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 읽기 방법 |
US8156398B2 (en) * | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) * | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
US8230300B2 (en) * | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US8059457B2 (en) * | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
JP2010009141A (ja) * | 2008-06-24 | 2010-01-14 | Toshiba Corp | データ転送方法 |
US7995388B1 (en) | 2008-08-05 | 2011-08-09 | Anobit Technologies Ltd. | Data storage using modified voltages |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8000135B1 (en) | 2008-09-14 | 2011-08-16 | Anobit Technologies Ltd. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
US8208304B2 (en) * | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US8473815B2 (en) * | 2008-12-22 | 2013-06-25 | Industrial Technology Research Institute | Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data |
US8397131B1 (en) | 2008-12-31 | 2013-03-12 | Apple Inc. | Efficient readout schemes for analog memory cell devices |
US8248831B2 (en) * | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8832354B2 (en) * | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
EP2299362A3 (en) * | 2009-08-18 | 2011-05-04 | ViaSat, Inc. | Forward error correction for memories |
CN102004701B (zh) * | 2009-08-28 | 2013-01-09 | 炬才微电子(深圳)有限公司 | 一种次级内存的分配方法和装置 |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8645794B1 (en) | 2010-07-31 | 2014-02-04 | Apple Inc. | Data storage in analog memory cells using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
JP2012094132A (ja) * | 2010-10-01 | 2012-05-17 | Siglead Inc | 不揮発性半導体メモリ装置とデータ誤り訂正方法 |
KR101861247B1 (ko) * | 2011-04-06 | 2018-05-28 | 삼성전자주식회사 | 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템 |
US8910017B2 (en) | 2012-07-02 | 2014-12-09 | Sandisk Technologies Inc. | Flash memory with random partition |
KR102081980B1 (ko) | 2012-10-08 | 2020-02-27 | 삼성전자 주식회사 | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 |
US9146809B2 (en) | 2013-10-07 | 2015-09-29 | Macronix International Co., Ltd. | ECC method for double pattern flash memory |
US9535785B2 (en) | 2014-01-17 | 2017-01-03 | Macronix International Co., Ltd. | ECC method for flash memory |
US9778983B2 (en) | 2015-08-06 | 2017-10-03 | Nxp B.V. | Integrated circuit device and method for reducing SRAM leakage |
US10437666B2 (en) | 2015-08-06 | 2019-10-08 | Nxp B.V. | Integrated circuit device and method for reading data from an SRAM memory |
US10223197B2 (en) * | 2015-08-06 | 2019-03-05 | Nxp B.V. | Integrated circuit device and method for applying error correction to SRAM memory |
US10304550B1 (en) | 2017-11-29 | 2019-05-28 | Sandisk Technologies Llc | Sense amplifier with negative threshold sensing for non-volatile memory |
KR102076624B1 (ko) * | 2018-12-06 | 2020-02-12 | 한국외국어대학교 연구산학협력단 | 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법 |
US10643695B1 (en) | 2019-01-10 | 2020-05-05 | Sandisk Technologies Llc | Concurrent multi-state program verify for non-volatile memory |
US11024392B1 (en) | 2019-12-23 | 2021-06-01 | Sandisk Technologies Llc | Sense amplifier for bidirectional sensing of memory cells of a non-volatile memory |
US11455254B2 (en) * | 2020-12-10 | 2022-09-27 | Macronix International Co., Ltd. | Flash memory system and flash memory device thereof |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
DE69033438T2 (de) * | 1989-04-13 | 2000-07-06 | Sandisk Corp | Austausch von fehlerhaften Speicherzellen einer EEprommatritze |
US5164944A (en) * | 1990-06-08 | 1992-11-17 | Unisys Corporation | Method and apparatus for effecting multiple error correction in a computer memory |
US5222109A (en) * | 1990-12-28 | 1993-06-22 | Ibm Corporation | Endurance management for solid state files |
US5438573A (en) * | 1991-09-13 | 1995-08-01 | Sundisk Corporation | Flash EEPROM array data and header file structure |
US6230233B1 (en) * | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
JP2856621B2 (ja) * | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5603001A (en) * | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
US5509119A (en) * | 1994-09-23 | 1996-04-16 | Hewlett-Packard Company | Fast comparison method and apparatus for error corrected cache tags |
US5666371A (en) * | 1995-02-24 | 1997-09-09 | Unisys Corporation | Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements |
US5845313A (en) * | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US5907856A (en) * | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5835935A (en) * | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
JP3604466B2 (ja) * | 1995-09-13 | 2004-12-22 | 株式会社ルネサステクノロジ | フラッシュディスクカード |
US6125435A (en) * | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
US5860082A (en) * | 1996-03-28 | 1999-01-12 | Datalight, Inc. | Method and apparatus for allocating storage in a flash memory |
JPH10207726A (ja) * | 1997-01-23 | 1998-08-07 | Oki Electric Ind Co Ltd | 半導体ディスク装置 |
US5896404A (en) * | 1997-04-04 | 1999-04-20 | International Business Machines Corporation | Programmable burst length DRAM |
US6182239B1 (en) * | 1998-02-06 | 2001-01-30 | Stmicroelectronics, Inc. | Fault-tolerant codes for multi-level memories |
KR100297986B1 (ko) * | 1998-03-13 | 2001-10-25 | 김영환 | 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법 |
KR100287018B1 (ko) * | 1998-08-07 | 2001-04-16 | 윤종용 | 에러 정정 회로를 구비한 반도체 메모리 장치 |
US6260156B1 (en) * | 1998-12-04 | 2001-07-10 | Datalight, Inc. | Method and system for managing bad areas in flash memory |
JP2000173289A (ja) * | 1998-12-10 | 2000-06-23 | Toshiba Corp | エラー訂正可能なフラッシュメモリシステム |
US6041001A (en) * | 1999-02-25 | 2000-03-21 | Lexar Media, Inc. | Method of increasing data reliability of a flash memory device without compromising compatibility |
US6353910B1 (en) * | 1999-04-09 | 2002-03-05 | International Business Machines Corporation | Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage |
JP3975245B2 (ja) * | 1999-12-16 | 2007-09-12 | 株式会社ルネサステクノロジ | 記録再生装置および半導体メモリ |
US6662333B1 (en) * | 2000-02-04 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Shared error correction for memory design |
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 |
US6747827B1 (en) * | 2000-03-27 | 2004-06-08 | Texas Instruments Incorporated | Error correction codes applied variably by disk zone, track, sector, or content |
JP2001297038A (ja) * | 2000-04-11 | 2001-10-26 | Toshiba Corp | データ記憶装置および記録媒体並びに記録媒体制御方法 |
US6941505B2 (en) * | 2000-09-12 | 2005-09-06 | Hitachi, Ltd. | Data processing system and data processing method |
US6961890B2 (en) * | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
US6948026B2 (en) * | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
GB0123422D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved memory controller |
GB0123419D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Data handling system |
US8412879B2 (en) * | 2002-10-28 | 2013-04-02 | Sandisk Technologies Inc. | Hybrid implementation for error correction codes within a non-volatile memory system |
-
2003
- 2003-10-02 US US10/679,000 patent/US20040083334A1/en not_active Abandoned
- 2003-10-27 KR KR1020030075138A patent/KR20040038709A/ko not_active Application Discontinuation
- 2003-10-28 EP EP03256796A patent/EP1416380A3/en not_active Withdrawn
- 2003-10-28 CN CNA2003101046447A patent/CN1499531A/zh active Pending
- 2003-10-28 JP JP2003368139A patent/JP2004152300A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627371B (zh) * | 2007-01-26 | 2012-09-05 | 美光科技公司 | 用于nand存储器的编程管理数据 |
CN101868830B (zh) * | 2007-11-21 | 2014-03-12 | 美光科技公司 | 容错非易失性集成电路存储器 |
CN101650974B (zh) * | 2008-08-12 | 2012-12-19 | 创见资讯股份有限公司 | 可自我检测使用状态的储存装置及其检测方法 |
CN102414666A (zh) * | 2009-05-06 | 2012-04-11 | 苹果公司 | 用于受管理的非易失性存储器的低等待时间读取操作 |
CN102414666B (zh) * | 2009-05-06 | 2015-03-25 | 苹果公司 | 用于受管理的非易失性存储器的低等待时间读取操作 |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN101957767A (zh) * | 2010-09-21 | 2011-01-26 | 深圳创维数字技术股份有限公司 | 基于与非型闪存存储设备的系统软件升级方法 |
CN108418589A (zh) * | 2018-03-05 | 2018-08-17 | 华中科技大学 | 一种单层非易失存储器的动态编解码方法 |
CN108418589B (zh) * | 2018-03-05 | 2020-07-10 | 华中科技大学 | 一种单层非易失存储器的动态编解码方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1416380A3 (en) | 2006-04-26 |
JP2004152300A (ja) | 2004-05-27 |
US20040083334A1 (en) | 2004-04-29 |
EP1416380A2 (en) | 2004-05-06 |
KR20040038709A (ko) | 2004-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1499531A (zh) | 管理非易失存储器系统中的数据完整性的方法和装置 | |
US9390774B2 (en) | Systems and methods of storing data | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US7559004B1 (en) | Dynamic redundant area configuration in a non-volatile memory system | |
US10062418B2 (en) | Data programming method and memory storage device | |
CN1512511A (zh) | 非易失存储器系统中不可用块的管理 | |
US11385962B2 (en) | Method and apparatus for error correction encoding compressed data | |
US11057060B1 (en) | Method and apparatus for matrix flipping error correction | |
TW202338851A (zh) | 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW202040370A (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US11169873B2 (en) | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive | |
KR20170012006A (ko) | 메모리 컨트롤러와 이를 포함하는 메모리 시스템 | |
CN113628655B (zh) | 用以存取闪存模块的方法、闪存控制器与电子装置 | |
TWI732642B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US10713160B1 (en) | Data writing method, memory control circuit unit and memory storage device | |
CN112051963A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
US11853613B2 (en) | Encoding control method, memory storage device and memory control circuit unit | |
TWI777087B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US11430538B1 (en) | Memory control method, memory storage device, and memory control circuit unit | |
CN111858389B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
US10310941B2 (en) | Data encoding method, memory control circuit unit and memory storage device | |
KR101419335B1 (ko) | 멀티 레벨 셀 플래시 메모리의 페이지 단위 클러스터링 장치 및 방법 | |
CN114613420A (zh) | 编码控制方法、存储器存储装置及存储器控制电路单元 | |
CN117762819A (zh) | 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置 | |
CN114077515A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |