专利名称:Mbc闪存中的错误校正的方法
技术领域:
本发明涉及数字数据的错误校正(error correction ),更特别地, 涉及对于每个单元存储多个位的闪存(flash memory)装置的错误校 正的方法。
背景技术:
闪存装置为人所知已有很多年了。 一般地,闪存内各个单元存储 一个位的信息。常规上,用于存储位的方式是通过支持单元的两种状态——一种状态代表逻辑"o",另一种状态代表逻辑"r 。在闪存 单元中,通过在单元的沟道(连接单元的晶体管的源极和漏极元件的 区域)之上具有浮动栅极并在该浮动栅极内具有对于所存储的电荷量 的两种有效状态,实现这两种状态。 一般地, 一种状态在浮动栅极中 具有零电荷,并且是被擦除之后的单元的初始未写入状态(一般被定义为代表"r状态),另一种状态在浮动栅极中具有一定量的负电荷 (一般被定义为代表"o"状态)。在栅极中具有负电荷导致单元的晶 体管的阈值电压(即,为了使晶体管导电而必须施加到晶体管的控制 栅极的电压)增大。现在,能够通过检查单元的阈值电压而读取所存储的位如果阈值电压处于较高的状态,那么位值是"0",如果阈值电压处于较低的状态,那么位值是"r 。实际上,不需要精确地读取 单元的阀值电压。所需要的只是正确地识别单元当前处于两种状态中 的哪一种。出于该目的,与处于两种状态之间的中间的基准电压值进 行比较并由此确定单元的阈值电压是低于还是高于该基准值就足够 了。图1A以图示的方式示出这如何工作。具体而言,图IA示出大量的单元的阈值电压的分布。由于闪存中的单元在它们的特性和行为方面不是完全地相同(例如,由于杂质浓度的小差异或由于硅结构中的 缺陷),因此,对于所有的单元施加相同的编程操作不导致所有的单 元具有完全相同的阈值电压。(注意,出于历史原因,将数据写入闪存一般被称为对闪存进行"编程"。)而是,阈值电压类似于图1A所示的方式而分布。存储"r的值的单元一般具有负的阈值电压,使 得大多数单元具有接近图ia的左峰所示的值的阈值电压,而一些较少量的单元具有更低或更高的阈值电压。类似地,存储"0"的值的单 元一般具有正的阈值电压,使得大多数单元具有接近图1A的右峰所示的值的阈值电压,而一些较少量的单元具有更低或更高的阈值电压。近年来,使用常规上称为"多级单元(Multi Level Cells )"或简 称为MLC的技术,在市场上出现了新型的闪存。(由于以前的类型 的闪存单元也具有多于一个的级如上所述,它们具有两个级,因此, 该术语容易使人误解。因此,这两种类型的闪存单元在这里被称为"单 位单元(Single Bit Cells ) " ( SBC )和"多位单元(Multi-Bit Cells )" (MBC) 。 ) MBC闪存带来的改进是在各个单元中存储两个或更多 个位。为了使得单个单元存储两个位的信息,单元必须能够处于四种 不同的状态中的一个中。由于单元的"状态"由其阈值电压代表,因 此,很显然2位MBC单元应对于其阈值电压支持四种不同的有效范 围。图1B示出典型的2位MBC单元的阈值电压分布。如所期望的那 样,图1B具有四个峰,每个峰与一种状态对应。至于SBC的情况, 各状态实际是范围而不是单个的数字。当读取单元的内容时,所有必 须保证的是,单元的阈值电压所处的范围被正确地识别。对于MBC 闪存的现有技术例子,参见Harari的美国专利No. 5434825。类似地,为了使得单个单元存储三个位的信息,单元必须能够处 于八种不同的状态中的一个中。因此,3位MBC单元应对于其阈值电 压支持八种不同的有效范围。图1C示出典型的3位MBC单元的阈值 电压分布。如所期望的那样,图1C具有八个峰,每个峰与一种状态 对应。图1D表示4位MBC单元的阈值电压分布,对于该4位MBC 单元,需要由十六个阈值电压范围代表的十六种状态。当通过四种状态对MBC单元中的两个位进行编码时, 一般^(吏图
ib中的最左边的状态( 一般具有负的阈值电压)代表两个位均具有"r 的值的情况。(在以下的讨论中,使用以下的表示法——单元的两个 位被称为"下位"和"上位"。以形式["上位""下位"书写位的
明确的值,下位值在右边。因此,将下位为"0"且上位为"1"的情 况写为"10"。必须理解,该术语和表示法的选择是任意的,并且,
其它的名称和编码是可能的)。使用该表示法,最左边的状态代表"ir
的情况。 一般通过从左到右的以下次序对其它三种状态进行分配
"10" 、 "00" 、 "01"。可以在Chen的美国专利No. 6522580中看 到^使用该编码的MBC NAND闪存的实施的例子,出于所有的目的通 过参考而加入该专利,如同在这里被全面阐述那样。特别参见Chen 专利的图8。 Tanaka的美国专利No. 6643188也示出MBC NAND闪 存的类似的实施,但是,参见那里的图7,位编码有不同的状态分配 "11" 、 "10" 、 "01" 、 "00" 。 Chen编码是在图1B中示出的编 码。
我们如下面那样将以上的术语和表示法扩展到每单元多于两位的 情况。最左边的未写入状态代表"全部l" ( "1…1"),串"1…10"
代表仅单元的最下位被写为"o"的情况,并且串"oi...r代表仅单 元的最上位被写为"o"的情况。
当读取MBC单元的内容时,单元的阈值电压所处的范围必须被 正确地识别;仅在这种情况下,通过仅与一个基准电压相比较不能总 是实现这一点,而是,可能必需几次比较。例如,在图1B所示的情 况下,为了读取下位,首先将单元的阀值电压与基准比较电压^相比 较,然后,根据比较的结果,与零基准比较电压或基准比较电压K2 相比较。作为替代方案,通过无条件地将阈值电压与零基准电压和基 准比较电压K2相比较来读取下位,也是需要两次比较。对于每单元多 于两个的位,可能需要甚至更多的比较。
单个MBC单元的位可能均属于同一闪存页面(flash page),或 者,它们可被分配到不同的页面,使得,例如在4位单元中,最下位在页面0中,下一位在页面l中,下一位在页面2中,并且最高位在 页面3中。(页面是可在闪存中单独写入的数据的最小部分)。虽然 两种方法均在使用,但本发明的意图主要在于用于"各位处于其自身 的页面中"方法。
Lasser的美国专利申请系列No. 11/035807涉及对于每单元存储 多个位的闪存单元中的位进行编码的方法。Lasser的美国专利申请系 列No. 11/061634和Murin的美国专利申请系列No. 11/078478涉及位 编码的这些方法对于跨过(across)多位闪存单元的不同逻辑页面的 错误分布的问题的含意。具体而言,Lasser的'634教导用于通过使 用位编码的逻辑到物理映射而实现数据的用户所看到的以及错误校正 代码(ECC)电路所应对的跨过不同逻辑页面的错误的均匀分布的方 法;并且,Murin教导用于通过使用物理位页面之间的逻辑页面的交 错(interleaving)而实现数据的用户所看到的以及ECC电路所应对 的跨过不同逻辑页面的错误的均匀分布的方法。出于所有的目的,所 有的这三个现有技术的专利申请均通过参考而加入,如同在这里被全
面阐述那样。
Lasser的'634和Murin均针对同一目标应设计ECC电路以 降低错误率。在两个申请给出的例子中, 一组15000个4位MBC闪 存单元被用于存储数据的4个逻辑页面,每个逻辑页面15000位。假 定的单元错误率是1比1000。得到的位错误的最佳数量是15,因此, 逻辑页面中的最佳平均位错误是3.75。该例子显示,除非使用所提出 的创新,否则,特定的逻辑页面最终会有高得多的位错误率——在所 示的例子中有6个位错误。这意味着,即使跨过存储在单元中的所有 位的位错误的总平均值相对较低(15比60000,或者1比4000),除 非采取特别的措施,也必须设计应对逻辑页面中的错误校正的ECC 电路以处理相对较高的平均位错误率(在该例子中——6比15000或1 比2500)。
因此,广泛意识到需要一种能克服上述的目前已知方法的缺点的 MBC闪存的错误校正的方法,并且具有这种方法会是高度有利的。定义
"逻辑页面"是要通过单个命令被存储的从外面向存储器系统提 供的最小数据块。例如,在同一单元的多个位属于不同页面的每单元
两位的MBC NAND闪存装置中,通过首先发送用于组中的单元的第 一位的第一 "页面写入"命令并然后发送用于组中的单元的第二位的 第二 "页面写入"命令,完成一组单元的写入。提供有第一命令的数 据位构成第一逻辑页面,并且,提供有第二命令的数据位构成第二逻 辑页面。
如在Murin中那样,"位页面"是在它们的单元组中占据相同的 位位置的所有位的集合,这里,该集合在一个命令中被一起写入。例 如,如果逻辑页面中的位的数量与物理页面中的单元的数量相同,那 么物理页面中的所有单元的所有最高(或最低)阶次的位的集合构成 一个位页面。在前面的例子中,在它们的单元中作为第一位存储的所 有位构成单个位页面。在大多数的系统中,在逻辑页面和逻辑页面被
存储入其中的位页面之间存在--对应关系。但是,在Murin中可以
看出,这种对应关系不是强制的在Murin的方法中,逻辑页面跨过 多个位页面而交错。
发明内容
本发明对于必须设计ECC电路以使位错误率最小化的同一问题 使用不同的方法。Lasser的'634和Murin共享相同的基本方法以解 决该问题——均依赖于每次在单个的逻辑页面上操作的ECC电路。根 据以上的例子,ECC校正各为15000位的数据块。各个这种数据块伴 随有其自身的ECC奇偶校验位(parity bit)。在ECC技术的术语中, 数据位和它们的相关的ECC奇偶校验位的联合被称为"代码字"。 代码字中的数据位的数量和位的总数的比被称为ECC方案的"比率"。 比率越高越好,因为越少的存储位被"浪费"用于保护数据位。很显 然,数据中的所预期的位错误率越高,则越多的位应被分配给ECC 奇偶校验位并且ECC比率越低。本发明的创新在于,使ECC电路不是每次在单个逻辑页面上操 作,而是作为一个大的块在存储在单元中的所有位上或者至少在多于 一个逻辑页面的位上操作。根据以上的例子,ECC校正各为60000位 的数据块。这60000个数据位伴随有允许发生较大数据块的校正的相 应ECC奇偶校验位。
以上例子中的包含共享相同单元的所有逻辑页面的数据位的较大 数据位块中的预期位错误率为15比60000或1比4000。这等于通过 Lasser的'634和Murin的方法所实现的最佳平均值,但没有代码映 射或交错的额外复杂性。很容易看到,这不是巧合,而是该方法的一 般性能——不管页面尺寸或错误分布剖面(profile)如何,当使用在 作为一个块的单元中的所有位上操作、将它们全部作为一个代码字而 对待的ECC方案时,预期的平均位错误率总是通过Lasser的'634 和Murin实现的最佳值。
的确,在更大的代码字上操作的ECC方案需要更复杂的电路, 但是,通过错误校正理论的公知结果补偿这一点,根据该错误校正理 论,对于相同的位错误率,所操作的代码字越大,则可实现的代码率 越高。换句话说,通过使用更长的ECC代码字,使得必须在闪存中 存储的ECC奇偶校验位的数量更少,并因此使得被"浪费"用于错 误校正的存储空间的量更少。这通常多于对额外ECC电路的补偿。
有人会争辩,如果逻辑页面中的每一个通过使用不同代码率的不 同ECC方案在其自身上被处理,那么可使得用于所有逻辑页面的奇 偶校验位的总数比当使用本发明的大代码字时的奇偶校验位的数量 小。这是因为,已知逻辑页面中的一些具有低错误率,并因此仅需要 小数量的奇偶校验位。但是,这种争辩忽略了会是昂贵的以每个逻辑 页面一个的方式实施多个ECC模块的需求。作为替代方案, 一个ECC 模块被用于所有的逻辑页面,每次一个地校正它们,但是,所实施的 模块于是必须是能够校正具有最高错误率的逻辑页面并使用低代码率 的模块,并且,通过本发明的方法,我们的情况再次较好。
因此,根据本发明,提供一种在每单元多位的闪存中存储数据的方法,包括以下步骤(a)对于数据位的多个逻辑页面计算错误校正 奇偶校验位,其中,错误校正奇偶校验位中的至少一个共同(jointly) 应用于逻辑页面中的至少两个;和(b)用数据位和错误校正奇偶校 验位对MBC闪存进行编程,用来自应用有所述至少一个共同的错误 校正奇偶校验位的所述至少两个逻辑页面中的多于一个逻辑页面的数 据位对MBC闪存的至少一个单元进行编程。
并且,给定用多个逻辑页面的数据位并用对所述数据位计算的错 误校正奇偶校验位来编程的MBC闪存,所述错误校正奇偶校验位中 的至少一个共同应用于所述逻辑页面中的至少两个,并且,用来自应 用有所述至少一个共同的错误校正位的所述至少两个逻辑页面中的多 于一个逻辑页面的数据位对MBC闪存的至少一个单元进行编程根 据本发明,提供一种恢复数据位的方法,包括以下步骤(a)从MBC 闪存读取(i)应用有所述至少一个共同的错误校正奇偶校验位的所 述至少两个逻辑页面的数据位;和(ii)应用于应用有所述至少一个 共同的错误校正奇偶校验位的所述至少两个逻辑页面中的任一个逻辑 页面的错误校正奇偶校验位;和(b)根据从MBC闪存读取的错误校 正奇偶校验位来校正从MBC闪存读取的数据位。
并且,才艮据本发明,提供一种控制器,该控制器用于MBC闪存, 该控制器操作为通过以下步骤在MBC闪存中存储多个逻辑页面的数 据位,所述步骤包含对于数据位计算错误校正奇偶校验位,至少一 个错误校正奇偶校验位共同应用于逻辑页面中的至少两个,并且,来 自应用有所述至少一个共同的错误校正奇偶校验位的所述至少两个逻
辑页面中的多于一个逻辑页面的数据位被共同存储在MBC闪存的至 少一个单元中的每一个中。
并且,根据本发明,提供一种在计算机可读存储介质上实施计算 机可读代码的计算机可读存储介质,该计算机可读代码用于管理MBC 闪存,该计算机可读代码包括(a)用于对于要被存储在MBC闪存 中的数据位的多个逻辑页面计算错误校正奇偶校验位的程序代码,其 中,错误校正奇偶校验位中的至少一个共同应用于逻辑页面中的至少两个;和(b)用于用所述数据位和所述错误校正奇偶校验位对MBC 闪存进行编程的程序代码,用来自应用有所述至少一个共同的错误校 正奇偶校验位的所述至少两个逻辑页面中的多于 一个逻辑页面的数据 位对MBC闪存的至少一个单元进行编程。
并且,给定用多个逻辑页面的数据位并用对所述数据位计算的错 误校正奇偶校验位来编程的每单元多位(MBC)闪存,错误校正奇偶 校验位中的至少一个共同应用于逻辑页面中的至少两个,并且,用来 自应用有所述至少 一个共同的错误校正位的所述至少两个逻辑页面中 的多于一个逻辑页面的数据位对MBC闪存的至少一个单元进行编程 根据本发明,提供一种在计算机可读存储介质上实施计算机可读代码 的计算机可读存储介质,该计算机可读代码包括(a)用于从MBC 闪存读取以下内容的程序代码(i)应用有所述至少一个共同的错误
校正奇偶校验位的所述至少两个逻辑页面的数据位;和(ii)应用于 应用有所述至少 一个共同的错误校正奇偶校验位的所述至少两个逻辑 页面中的任一个逻辑页面的错误校正奇偶校验位;和(b)用于根据 从MBC闪存读取的错误校正奇偶校验位来校正从MBC闪存读取的 数据位的程序代码。
并且,根据本发明,提供一种在MBC闪存中存储数据的方法, 包括以下步骤(a)对于数据位的多个逻辑页面中的至少两个计算共 同的ECC代码字;和(b)用所述共同的ECC代码字对MBC闪存进 行编程。
并且,给定用对于数据位的多个逻辑页面中的至少两个计算的共 同的ECC代码字编程的MBC闪存根据本发明,提供一种恢复数据 位的方法,包括以下步骤(a)从闪存读取所述共同的ECC代码字; 和(b)从于闪存读取的所述共同的ECC代码字来恢复从其计算所述 共同的ECC代码字的所述至少两个逻辑页面的数据位。
并且,根据本发明,提供一种控制器,该控制器用于MBC闪存, 该控制器操作为通过包含对于逻辑页面中的至少两个计算共同的 ECC代码字的步骤,在MBC闪存中存储多个逻辑页面的数据位。并且,根据本发明,提供一种在计算机可读存储介质上实施计算
机可读代码的计算机可读存储介质,该计算机可读代码用于管理MBC 闪存,该计算机可读代码包括(a)用于对于要被存储在MBC闪存 中的数据位的多个逻辑页面中的至少两个计算共同的ECC代码字的 程序代码;和(b)用于用所述共同的ECC代码字对MBC闪存进行 编程的程序代码。
并且,给定用对于数据位的多个逻辑页面中的至少两个计算的共 同的ECC代码字来编程的MBC闪存根据本发明,提供一种在计算 机可读存储介质上实施计算机可读代码的计算机可读存储介质,该计 算机可读代码包括(a)用于从闪存读取所述共同的ECC代码字的 程序代码;和(b)用于从于闪存读取的所述共同的ECC代码字来恢 复从其计算所述共同的ECC代码字的所述至少两个逻辑页面的数据 位的程序代码。
根据本发明的第一基本方法,当在MBC闪存中存储数据位的多 个逻辑页面时,对于数据位计算错误校正奇偶校验位,使得错误校正 奇偶校验位中的至少一个应用于逻辑页面中的至少两个。错误校正奇 偶校验位"应用于"逻辑页面意味着所述错误校正奇偶校验位从该逻 辑页面的数据计算,并且必须被用于该逻辑页面的数据的校正中。在 所附的权利要求中,应用于两个或更多个逻辑页面的这种错误校正奇 偶校验位被称为"共同的"错误校正奇偶校验位。于是,用所述数据 位并用所述错误校正奇偶校验位对MBC闪存进行编程,用来自应用 有所述共同的错误校正奇偶校验位的逻辑页面中的多于 一个逻辑页面 的数据位对MBC闪存的至少一个单元进行编程。换句话说,并不是 MBC闪存的用数据位编程的所有单元都用仅来自一个逻辑页面的数 据位编程。
优选地,所有的错误校正奇偶校验位应用于所有的逻辑页面。作 为替代方案,如果存在三个或更多个逻辑页面,那么对于逻辑页面中 的至少两个而不是对于所有的逻辑页面共同地计算错误校正位。并且, 作为替代方案,只有一些错误校正奇偶校验位应用于多个逻辑页面,而其它的错误校正奇偶校验位仅应用于单个逻辑页面。
优选地,用如所述多个逻辑页面中的逻辑页面那样多的位对用所 述数据位和所述错误校正奇偶校验位编程的闪存的各个单元进行编 程。并且,优选地,在编程之后,与所述共同的错误校正奇偶校验位 以及存在的、应用于所述两个或更多个逻辑页面的其它错误校正奇偶 校验位一起,从闪存读取应用有所述错误校正奇偶校验位的所述两个 或更多个逻辑页面的数据位。通常地,所有的错误校正位应用于那两 个或更多个逻辑页面,但是,可能错误校正奇偶校验位中的一些或者 甚至大多数仅应用于那些逻辑页面中的一些(当存在三个或更多个这 种逻辑页面时)或者甚至仅应用于那些逻辑页面中的一个。然后,根
根据本发明的第二基i方法,当在MBC闪存中存储数据位的多 个逻辑页面时,对于逻辑页面中的至少两个计算共同的ECC代码字。 ECC可以是系统的或非系统的。然后,用于所述共同的ECC代码字 对MBC闪存进行编程。
在所述方法的一些实施例中,所述多个逻辑页面包括三个或更多 个逻辑页面,并且对于少于所有的逻辑页面计算所述代码字。
优选地,用如对其计算所述共同的ECC代码字的逻辑页面那样 多的所述共同的ECC代码字的位对用所述共同的ECC代码字的位来 编程的闪存的各个单元进行编程。作为替代方案,用与所述多个逻辑 页面中的逻辑页面数量相同的所述共同的ECC代码字的位对用所述 共同的ECC代码字的位来编程的闪存的各个单元进行编程。
优选地,在编程之后,从闪存读取所述共同的ECC代码字,然 后,从于闪存读取的所述共同的ECC代码字来恢复从其计算所述共 同的ECC代码字的逻辑页面的数据位。
本发明的范围还包括根据本发明的方法中的一个来管理MBC存 储器的控制器、包括所述控制器和MBC存储器的存储器装置、以及 在其上面实施用于根据本发明的方法中的一个来管理存储器的计算机 可读代码的计算机可读存储介质。优选地,控制器操作为根据通过控制器实施的本发明的方法,给存储器装置的主机提供存储在MBC 存储器中的数据位。
这里参照附图仅作为例子说明本发明,其中, 图1A 1D示出一位闪存单元、两位闪存单元、三位闪存单元和四 位闪存单元中的阈值电压分布;
图2A和图2B示出各跨越两个逻辑页面的系统ECC代码字; 图3A和图3B示出各跨越两个逻辑页面的非系统ECC代码字; 图4是本发明的闪存装置的高级框图; 图5是本发明的数据存储器系统的高级部分框图。
具体实施例方式
本发明是每单元多位的存储器中的错误校正方法。 参照附图和伴随的说明,可以更好地理解根据本发明的MBC错 误校正的原理和操作。
在所有的现有技术的方法(诸如Lasser的,634和Murin的方法) 中,姜被存储在一组MBC单元中的数据作为多个逻辑页面从外面被 提供给存储器系统,并且,然后对于各个逻辑页面单独地计算ECC 奇偶校验位。并且,在大多数的这样的系统中,逻辑页面的所有的数 据位和该同 一页面的相应奇偶校验位被存储在同 一位页面中。由于交 错方案导致逻辑页面的位散布在多个位页面中,因此Murin的方法是 该第二观察的例外。但是,即使Murin也遵循逻辑页面的奇偶校验位 仅取决于该逻辑页面的数据位的第一观察。使用本发明的方法,这不 再是这种情况。 一些或所有的奇偶校验位是来自多个逻辑页面而非仅 来自单个逻辑页面的数据位的函数。这是将所有的位作为一个长代码 字对待的结果。
写入过程的该特性(即, 一些或所有的奇偶校验位是来自多个逻 辑页面的数据位的函数)的结果是在读取和错误校正过程中使用奇偶校验位的方式。在所有的现有技术的系统(包括Lasser的'634和 Murin)中,特定的奇偶校验位仅用于校正单个的逻辑页面。这是可 合理地预期的一由于最初仅使用单个逻辑页面的数据位来计算各奇 偶校验位,该奇偶校验位不代表关于其它逻辑页面中的数据位的任何 信息,并因此应仅被用于校正基于其来计算它的该单个逻辑页面。在 本发明的方法中不是这种情况——一些奇偶校验位是基于来自多个逻 辑页面的数据而计算的,且因此那些位可在实现那些多个逻辑页面的 校正中被直接使用。
Ban等人的美国专利申请系列No. 10/867645应对相关的问题。根 据Ban等人的方法,如所有其它的现有技术中一样,各逻辑页面具有 仅基于相应逻辑页面的数据位而计算的其自身的ECC奇偶校验位。 但是,Ban等人与其它现有技术的不同在于,允许同一组单元的校正 的逻辑页面以有限的方式相互影响。如果在某个位页面的位中检测到 和校正了错误,那么一些校正可被应用于同一单元的更有效 (significant )的位页面的相应的位。但是,它没有公开本发明的方法。 在Ban等人的方法中,奇偶校验位对于多个逻辑页面的ECC计算没 有直接的影响,对于另一逻辑页面的仅有的有限的影响是间接的,是 通过在ECC计算的范围之外的高级物理考虑。
本发明的方法的另一含意在于,存储在单元組中的位,包括数据 位和奇偶校验位,均作为所使用的ECC方案的一个长代码字而被处 理。使用什么特定的ECC方案无关紧要;从ECC的观点看,要紧的 是位于同一组单元中的所有逻辑页面作为一个实体一起被处理。如上 面解释的那样,除了提供最佳的位错误率以外,该方法还以奇偶校验
位与数据位的减小的比率提供更有效的错误校正。
本发明的方法的范围还包括更一般化的情况,其中,只有位于同 一组单元中的逻辑页面的子集作为共同的代码字被处理。例如,在每 单元四位的MBC闪存中,可以将逻辑页面分组为各两个逻辑页面的 两个组、或三个逻辑页面的一个組加上一个单个逻辑页面、或者甚至 两个逻辑页面的一个组加上两个单个逻辑页面。本发明的方法应被理解为包括任意情况,其中,共享相同单元的至少两个逻辑页面被ECC 方案作为单个代码字而一起处理,而不管如何处理共享相同单元的其
它迷辑页面。
现在返回附图,图2A和图2B作为表格示出在应用本发明的方法 前后的MBC闪存的(用于解释的目的,非常小的)块。在图2A和图 2B中的每一个中,表格的各列代表块的一个单元,各个行代表位编码 的有效性顶行代表最高有效位(the most significant bit),第二行 代表次最高有效位,第三行代表次最低有效位,最后一行代表最低有 效位(the least significant bit)。各表格的各条目表示由相应存储器 单元中的相应有效性的位所代表的位的源逻辑页面。存储数据位的存 储器单元未加阴影。存储ECC位的存储器单元被加阴影。
最初,各具有十个位的数据的四个逻辑页面被存储在存储器块中。
第一逻辑页面的位被编码为数据单元的最低有效位。第二逻辑页面的 位被编码为数据单元的次最低有效位。第三逻辑页面的位被编码为数 据单元的次最高有效位。第四逻辑页面的位被编码为数据单元的最高 有效位。例如,如果第一逻辑页面的第一位是"1",如果第二逻辑页 面的第一位是"0",如果第三逻辑页面的第一位是"0",并且如果 笫四逻辑页面的第一位是"1",那么,使用图ID所示的位编码方案, 笫一 (最左边)单元被编程为从左边的第五电压带。此时,ECC单元 仍未被编程。
然后,使用本发明的方法以将数据位变成两个28位代码字, 一个 代码字用于第一和第二逻辑页面,另一代码字用于笫三和第四逻辑页 面。如图2B所示,第一代码字的ECC位在ECC单元的最低有效位 和次最低有效位中被编码,并且,第二代码字的ECC位在ECC单元 的次最高有效位和最高有效位中被编码。
到现在为止已在"系统的"错误校正方案的背景中给出了本发明。 系统错误校正编码的特征在于,可以通过编码过程来保存并且可在所 存储的位中识别原始的数据位。换句话说,错误校正机构获取原始的 数据位,将一些奇偶校验位添加到它们上,并且存储数据位和奇偶校验位。然后,当读取所存储的位时,数据位和奇偶校验位均被读取,并且,奇偶校验位使得能够校正所读取的数据位中的错误,由此产生原始的数据位。
但是,本发明同样可应用于非系统的错误校正代码。在这样的代码中,原始数据位不被保存并且不被存储。而是,编码过程将原始数据位转变成作为所存储的位的更大的一组位(这里称为"被保护的数
据位")。与系统的错误代码的数据位和相关ECC奇偶校验位的联合类似,非系统的错误代码的被保护的数据位在这里被视为与原始数据位对应的代码字。当读取所存储的被保护的数据位时,即使在被保护的数据位中存在错误,也重新产生原始数据位。非系统的代码的限定特性是,在特定的原始数据位和特定的所存储的位之间没有直接的对应关系。原始数据位"散布"于多个所存储的位中,并且只有那些多个所存储的位的组合表明原始位的值。
图3A和图3B与图2A和图2B对应,但是使用非系统的ECC而不是系统的ECC。图3A与图2A相同。图3B示出,在本发明的非系统的ECC编码之后,在数据位和ECC位之间不能作出有意义的区别。第一代码字的所有的位在数据单元和ECC单元的最低有效位和次最低有效位中被编码,并且,第二代码字的所有的位在数据单元和ECC单元的次最高有效位和最高有效位中被编码。
图4是与主机30耦接的本发明的闪存装置20的高级框图。图4是由Ban的美国专利No. 5404485的图1改编的,该专利出于所有的目的通过参考而被加入,如同在这里被全面阐述那样。闪存装置20包括闪存24、控制器22和随机存取存储器(RAM)26。与美国5404485的"闪存控制14"对应的控制器22如在美国5404485中说明的那样借助于RAM 26来管理闪存24。控制器22还用上述的错误校正以闪存24的每个单元两个或更多个位的方式对数据进行编码,
图5是本发明的替代性数据存储器系统50的高级部分框图。数据存储器系统50包括处理器52和四个存储器装置RAM 54、引导(boot)ROM56、大容量存储器装置(硬盘)58和闪存装置40,它们均通过共用的总线60通信。与闪存装置20类似,闪存装置40包含闪存42。与闪存装置20不同,闪存装置40缺少其自身的控制器和RAM。而是,处理器52通过执行以例如Kfar Saba, Israel的M-Systems FlashDisk Pioneers Ltd.的TrueFFSTM驱动器的方式实施美国5404485的方法的软件驱动器而仿真控制器22,并且其还如上面说明的那样以闪存42的每个单元两个或更多个位的方式对数据进行编码。闪存装置40还包括总线接口 44以使得处理器52能够与闪存42通信。
处理器52执行以管理闪存42的软件驱动器的代码被存储在大容量存储器装置58中,并被转移至RAM 54用于执行。大容量存储器装置58因此是计算机可读代码存储介质的例子,在其中嵌入用于才艮据本发明的原理管理闪存42的计算机可读代码。
虽然已针对有限数量的实施例说明了本发明,但可以理解,可以作出本发明的许多改变、修改和其它的应用。
权利要求
1. 一种在每单元多位(MBC)的闪存中存储数据的方法,包括以下步骤(a)对于数据位的多个逻辑页面计算错误校正奇偶校验位,其中,所述错误校正奇偶校验位中的至少一个共同应用于所述逻辑页面中的至少两个;和(b)用所述数据位和所述错误校正奇偶校验位对MBC闪存进行编程,用来自应用有所述至少一个共同的错误校正奇偶校验位的所述至少两个逻辑页面中的多于一个逻辑页面的数据位对MBC闪存的至少一个单元进行编程。
2. 根据权利要求l的方法,其中,所有的所述错误校正奇偶校验 位应用于所有的所述逻辑页面。
3. 根据权利要求l的方法,其中,所述多个包含多于两个的所述 逻辑页面,并且,所述计算包含对于至少两个所述逻辑页面但对于少 于所有的所述逻辑页面共同地计算所述错误校正奇偶校验位,
4. 根据权利要求l的方法,其中,用如在所述多个逻辑页面中存 在的逻辑页面那样多的所述位对用所述位编程的所述闪存的各单元进 行编程。
5. —种恢复数据位的方法,给定用多个逻辑页面的数据位并用对 所述数据位计算的错误校正奇偶校验位编程的每单元多位(MBC)的 闪存,所述错误校正奇偶校验位中的至少一个共同应用于所述逻辑页 面中的至少两个,并且,用来自应用有所述至少一个共同的错误校正 位的所述至少两个逻辑页面中的多于一个逻辑页面的数据位对MBC 闪存的至少一个单元进行编程,该方法包括以下步骤(a)从MBC闪存读取(i) 应用有所述至少一个共同的错误校正奇偶校验位的所述 至少两个逻辑页面的数据位;和(ii) 应用于应用有所述至少一个共同的错误校正奇偶校验位的所述至少两个逻辑页面中的任一个逻辑页面的所述错误校正奇偶校验位;和(b )根据从MBC闪存读取的所述错误校正奇偶校验位来校正从 MBC闪存读取的所述数据位。
6. —种控制器,用于每单元多位(MBC)的闪存,该控制器操 作为通过包含对于所述数据位计算错误校正奇偶校验位的步骤而在 MBC闪存中存储多个逻辑页面的数据位,至少 一个错误校正奇偶校验 位共同应用于所述逻辑页面中的至少两个,并且,来自应用有所述至 少 一个共同的错误校正奇偶校验位的所述至少两个逻辑页面中的多于 一个逻辑页面的数据位被一起存储在MBC闪存的至少一个单元中的 每一个中。
7. 根据权利要求6的控制器,其中,所述控制器操作为通过包含 以下内容的步骤给包含所述控制器和MBC闪存的存储器装置的主机 提供所述数据位U)从MBC闪存读取(i) 应用有所述至少一个共同的错误校正奇偶校验位的所述 至少两个逻辑页面的数据位;和(ii) 应用于应用有所述至少一个共同的错误校正奇偶校验 位的所述至少两个逻辑页面中的任一个逻辑页面的错误校正奇偶校验 位;和(b)根据从MBC闪存读取的所述错误校正奇偶校验位来校正从 MBC闪存读取的所述数据位。
8. —种存储器装置,包括(a) 根据权利要求6的控制器;和(b) 由权利要求6的控制器控制的MBC闪存。
9. 一种在计算机可读存储介质上实施计算机可读代码的计算机可 读存储介质,该计算机可读代码用于管理每单元多位(MBC )的闪存, 该计算机可读代码包括(a )用于对于要被存储在MBC闪存中的数据位的多个逻辑页面计算错误校正奇偶校验位的程序代码,其中,所述错误校正奇偶校验位中的至少一个共同应用于所述逻辑页面中的至少两个;和(b )用于用所述数据位和所述错误校正奇偶校验位对MBC闪存 进行编程的程序代码,用来自应用有所述至少一个共同的错误校正奇 偶校验位的所述至少两个逻辑页面中的多于一个逻辑页面的数据位对 MBC闪存的至少一个单元进行编程。
10. —种在计算机可读存储介质上实施计算机可读代码的计算机 可读存储介质,给定用多个逻辑页面的数据位并用对所述数据位计算 的错误校正奇偶校验位编程的每单元多位(MBC)的闪存,所述错误 校正奇偶校验位中的至少一个共同应用于所述逻辑页面中的至少两 个,并且,用来自应用有所述至少一个共同的错误校正位的所述至少 两个逻辑页面中的多于一个逻辑页面的数据位对MBC闪存的至少一 个单元进行编程,该计算机可读代码包括(a) 用于从MBC闪存读取以下内容的程序代码(i )应用有所述至少一个共同的错误校正奇偶校验位的所述 至少两个逻辑页面的数据位;和(ii)应用于应用有所述至少一个共同的错误校正奇偶校验 位的所述至少两个逻辑页面中的任一个逻辑页面的所述错误校正奇偶 校验位;和(b )用于根据从MBC闪存读取的所述错误校正奇偶校验位来校 正从MBC闪存读取的所述数据位的程序代码。
11. 一种在每单元多位(MBC)的闪存中存储数据的方法,包括 以下步骤(a )对于数据位的多个逻辑页面中的至少两个计算共同的错误校 正代码(ECC)代码字;和(b) 用所述共同的ECC代码字对MBC闪存进行编程。
12. 根据权利要求ll的方法,其中,所述ECC是系统的
13. 根据权利要求ll的方法,其中,所述ECC是非系统的。
14. 根据权利要求ll的方法,其中,所述多个包含多于两个的所迷逻辑页面,并且,所述计算用于少于所有的所述逻辑页面。
15. 根据权利要求11的方法,其中,用如对其计算所述共同的 ECC代码字的所述逻辑页面那样多的所述共同的ECC代码字的位对 用所述共同的ECC代码字来编程的MBC闪存的各单元进行编程。
16. 根据权利要求ll的方法,其中,用如所述多个逻辑页面那样 多的位对用所述共同的ECC代码字来编程的所述闪存的各单元进行 编程。
17. —种恢复数据位的方法,给定用对于数据位的多个逻辑页面 中的至少两个计算的共同的错误校正代码(ECC)代码字编程的每单 元多位(MBC)的闪存,该方法包括以下步骤(a) 从闪存读取所述共同的ECC代码字;和(b) 从于闪存读取的所述共同的ECC代码字恢复从其计算所述 共同的ECC代码字的所述至少两个逻辑页面的数据位。
18. —种控制器,用于每单元多位(MBC)的闪存,该控制器操 作为通过包含对于所述逻辑页面中的至少两个计算共同的错误校正代 码(ECC)代码字的步骤而在MBC闪存中存储多个逻辑页面的数据 位。
19. 根据权利要求18的控制器,其中,所述控制器操作为通过包 含以下内容的步骤给包含所述控制器和MBC闪存的存储器装置的主 机提供数据位(a) 从MBC闪存读取所述共同的ECC代码字;和(b) 从于MBC闪存读取的所述共同的ECC代码字恢复从其计 算所述共同的ECC代码字的所述至少两个逻辑页面的数据位。
20. —种存储器装置,包括(a) 根据权利要求18的控制器;和(b) 由权利要求18的控制器控制的MBC闪存。
21. —种在计算机可读存储介质上实施计算机可读代码的计算机 可读存储介质,该计算机可读代码用于管理每单元多位(MBC)的闪 存,该计算机可读代码包括(a )用于对于要被存储在MBC闪存中的数据位的多个逻辑页面 中的至少两个计算共同的错误校正代码(ECC)代码字的程序代码; 和(b)用于用所述共同的ECC代码字对MBC闪存进行编程的程 序代码。
22. —种在计算机可读存储介质上实施计算机可读代码的计算机 可读存储介质,给定用对于数据位的多个逻辑页面中的至少两个计算 的共同的错误校正代码(ECC)代码字编程的每单元多位(MBC)的 闪存,该计算机可读代码包括(a)用于从闪存读取所述共同的ECC代码字的程序代码;和 (b )用于从于闪存读取的所述共同的ECC代码字恢复从其计算 所述共同的ECC代码字的所述至少两个逻辑页面的数据位的程序代 码。
全文摘要
多个逻辑页面与相应的ECC位一起被存储在MBC闪存(42)中,MBC单元中的至少一个存储来自多于一个逻辑页面的位,并且ECC位中的至少一个应用于逻辑页面中的两个或更多个。当从存储器(42)读取页面时,使用所读取的ECC位来校正所读取的数据位。作为替代方案,共同的、系统的或非系统的ECC代码字对于逻辑页面中的两个或更多个而被计算,并代替那些逻辑页面而被存储。当读取共同的代码字时,从所读取的代码字恢复逻辑位。本发明的范围还包括相应的存储器装置(54,56,5S)、这样的存储器装置(54,56,58)的控制器以及承载有用于实施所述方法的计算机可读代码的计算机可读存储介质。
文档编号G11C29/00GK101536109SQ200680044505
公开日2009年9月16日 申请日期2006年10月4日 优先权日2005年10月13日
发明者E·沙龙, I·奥罗德, M·拉瑟, M·穆里恩, S·利特辛 申请人:特拉维夫大学拉莫特有限公司