用于改进闪存的可靠性和寿命的系统和方法_3

文档序号:9383067阅读:来源:国知局
0] 然而,代替将页320作为坏页320丢弃,本发明的系统和方法的闪存控制器104可 使用来自常规数据区域(例如,可用数据字节)的原始比特单元来存储更多FEC比特,并且 减少页320中可用数据字节的数目。例如,可选择提供比当前FEC参数集112更大冗余度 的新FEC参数集112。在选择新FEC参数集112时,较少可用数据字节可供使用,这是因为 在FEC编码期间引入了更大的冗余度。在此图解中,已损坏页320b-c的可用数据字节数目 为2048字节。应注意,多个已损坏页320的可用数据字节可以相同或可以不相同。
[0061] 第一已损坏页320b和第二已损坏页320c可包括FEC比特、可用数据字节和元数 据。如同未损坏页320a -样,FEC比特可被闪存控制器304用在针对已损坏页320b-c的 前向纠错(FEC)中。然而,关于每个已损坏页320b-c,可选择提供更大冗余度的FEC参数集 112。在此情形中,FEC比特的数目为k2,其大于用于未损坏页320a的kl个FEC比特。
[0062] 已损坏页320b_c中的可用数据字节可少于未损坏页320a。这可以是因减少总可 用数据字节的已损坏比特所引起的。此外,可用数据字节可随FEC比特增多而减少。换言 之,由于更多FEC比特被用来提供更大冗余度以增强易出错的已损坏页320b-c的可靠性, 因此可用数据字节将减少。
[0063] 已损坏页320b_c可被组合以形成具有期望页大小的一个逻辑页324。闪存控制器 304可将多个已损坏页320b-c组合成一个逻辑"好"页324。以此方式,用户应用或操作系 统可以能够利用已损坏页320b-c。因此,闪存控制器304对用户应用隐藏复杂度并维持接 口一致性。尽管图3解说了组合两个已损坏页320b-c、每个已损坏页具有50%的期望可用 数据的配置,但可使用合计达100%的期望可用数据字节的任何组合。例如,10个具有10% 的期望可用数据字节的页320可被编组在一起。类似地,4个各自具有25%的期望可用数 据字节的页320可被编组,等等。替换地,对于被一起编组成单个逻辑页324的每个已损坏 页320,可用数据字节的百分比可以不同。例如,具有30 %容量的页320可与具有70 %容量 的页320相组合。
[0064] 应注意,逻辑页324可具有与未损坏页320a中相同的元数据中的一些。例如,逻 辑页324的元数据可指示页上一次被写入的时间。但逻辑页324还可包括指向构成逻辑页 324的多个物理页320b-c的元数据。从接口的角度来看,被呈现给操作系统的元数据不应 当改变,无论逻辑页324是包括一个还是多个物理页320。然而,附加元数据可被用来帮助 闪存控制器304标识逻辑页324以用于物理页映射。
[0065] 用于已损坏页320b_c的元数据可包括关于源信息比特如何被存储在已损坏页 320b-c中的信息。元数据可包括被用来编码源信息比特的FEC码122、为特定页320选择 的FEC参数集112以及页320是否被认为是已损坏页320b-c的指示。元数据可附加地包 括映射信息,其可包括哪些页320b-c被编组在一起、被编组的页320b-c的次序以及逻辑页 信息(例如,逻辑页ID)。
[0066] 图4是解说用于改进闪存406的可靠性和寿命的闪存控制器404的更详细配置的 框图。结合图4描述的闪存控制器404可以根据结合图1描述的闪存控制器104来实现。 例如,闪存控制器404可被包括在电子设备102中。
[0067] 在一些配置中,闪存控制器404可包括源缓冲器426、编码器408、动态FEC参数选 择器410、解码器414和映射模块418。源缓冲器426可接收要被保存在闪存406中的源信 息比特428。源信息比特428可始发于操作系统或用户应用。编码器408可使用FEC码422 来编码源信息比特。如以上结合图1描述的,FEC码422可被用来检测和纠正与闪存406相 关联的数据存储差错。编码器408可使用FEC码422来编码源信息比特428以产生所存储 码字430。
[0068] 在写操作期间,所存储码字430可被存储(例如,写)在闪存406中的页420中。 例如,在写操作期间,FEC比特432、可用数据字节434和元数据436可被写到页420。所存 储码字430可被写到可用数据字节434。FEC比特432可以是通过FEC码422添加到源信 息比特428的冗余纠错比特。元数据436可包括被用来编码源信息比特428的FEC码422、 为页420选择的FEC参数集412以及页420是否被认为是已损坏页420的指示。
[0069] -旦写入所存储码字430,闪存控制器404就可检索和读取所存储数据以验证所 存储数据的准确性。例如,解码器414可以对所检索码字438进行解码。差错校验器416可 执行FEC校验以确定是否已发生了写失败。差错校验器416可比较基于FEC码422的FEC 比特432以获得页差错率442。例如,差错校验器416可检测写失败,并且可使用FEC码422 来估计页差错率442。应注意,页差错率442也可被称为比特差错率。
[0070] 在一种配置中,特定类型的线性FEC码422可按使得可基于输入比特的某一部分 (例如,源信息比特428)来计算每个FEC比特432 (例如,该计算可涉及对不同位置的输入 比特子集进行XOR(异或)运算)的方式来产生FEC比特432 (也被称为奇偶校验比特)。 在执行读操作时,可基于输入数据比特来重新计算新FEC比特432并与闪存设备上的所存 储FEC比特432进行比较。以此方式,所存储FEC比特432和新FEC比特432的差异数目 可被计数并且此差异数目可指示比特差错率(例如,页差错率442)的程度。
[0071] 在一些情景中,闪存的给定页420可包括多个FEC码字。每个码字可具有其自己 的奇偶校验比特(例如,FEC比特432)。因此,比特差错的总数可通过聚集来自页420内的 FEC码字的所有比特差错来估计。即使在当前页420仍可被正确解码但所估计的页差错率 442被认为过于靠近不可解码区域时,可发生FEC编码参数(例如,FEC参数集412)的适 配。在此情形中,闪存控制器404可提前通过选取较强FEC参数集412来增大冗余度。
[0072] 在另一配置中,FEC参数集412适配也可在读操作之后发生。例如,闪存控制器404 可执行读操作,其中页420中的所估计比特差错率(例如,页差错率442)被认为过高从而 继续使用是不安全的。在此情形中,闪存控制器404可为当前页420选取另一 FEC参数集 412。闪存控制器404可附加地将一个或多个降级的闪存页420与当前页420组合以形成 逻辑页324并且将当前页420中的数据的某些部分重定位到组合逻辑页324。
[0073] 如果页差错率442高于最大差错率阈值440,则页420被确定为过于受损而不能 可靠地存储数据。闪存控制器404可将已损坏页420标记为受损并且逻辑地重新映射闪存 406,以使得已损坏页420不再被使用。然而,如果页差错率442低于最大差错率阈值440, 则在向FEC码422添加更大冗余度的情况下,页420仍可被可靠地使用。
[0074] 动态FEC参数选择器410可基于页差错率442来选择FEC参数集412。动态FEC参 数选择器410可包括多个FEC参数集412a-n,其可向FEC码422提供增大的冗余度。例如, 在闪存406寿命周期的开始,页420可以第一 FEC参数集412a开始,第一 FEC参数集412a 提供最高容量和最低纠错能力。随后,取决于页差错率442,动态FEC参数选择器410可选 择提供比第一 FEC参数集412a大的冗余度的新FEC参数集412。动态FEC参数选择器410 可基于页差错率442来选择将提供可靠数据存储的FEC参数集412。源信息比特428可用 新FEC参数集412来编码并且所存储码字430可被存储到闪存406的已损坏页420。闪存 控制器404还可将用来编码源信息比特的新FEC参数集412存储到元数据436。
[0075] 映射模块418可将多个已损坏页420组合成单个逻辑页324。在一种配置中,操 作系统可要求期望页大小444。然而,由于已损坏页420的容量可能因与新FEC参数集412 相关联的增大冗余度而减小,因此已损坏页420的可用数据字节434可能小于期望页大小 444。例如,期望页大小444可以为4096字节,但由于降级和FEC操作,已损坏页420的可 用数据字节434可能仅为2048字节。
[0076] 映射模块418可将已损坏页420与闪存406中的至少一个附加已损坏页420映射 到具有期望页大小444的单个逻辑页324。在一种配置中,映射模块418可包括部分降级页 列表446,其可在差错校验器416关于当前FEC参数集412的差错率检测到比FEC阈值高的 所估计差错率时被填充与已损坏页420相关联的条目。部分降级页列表446还可包括关于 已损坏页420的可用数据字节434的信息。映射模块418还可包括逻辑页信息表448,其可 包括逻辑页ID和被映射到特定逻辑页324的每个已损坏页420的地址。
[0077] 图5是解说用于向闪存406写入数据的方法500的流程图。方法500可由闪存控 制器404来执行。闪存控制器404可向当前页420执行(502)写操作。例如,闪存控制器 404可使用前向纠错(FEC)码422来编码源信息比特428以产生所存储码字430。闪存控 制器404可基于当前FEC参数集412用FEC比特432来编码源信息比特428。闪存控制器 404可将经编码源信息比特428 (例如,所存储码字430)写到闪存406中的当前页420。
[0078] 闪存控制器404可获得(504)页差错率442。一旦向当前页420写入内容(例 如,所存储码字430),闪存控制器404就可通过读回该内容(例如,所检索码字438)来获 得(504)页差错率442并且可使用FEC码422来执行差错率估计。在一种配置中,闪存控 制器404可将所存储的FEC比特432与基于FEC码422新计算出的FEC比特(从存储在可 用数据字节434中的数据比特获得)以获得(504)页差错率442。闪存控制器404可将页 420的所估计比特差错率(例如,页差错率442)与FEC参数集412所关联的预定FEC阈值 集进行比较(506)。例如,如果所估计页差错率442小于1 %,则将使用具有最小冗余度的第 一 FEC编码参数(例如,第一 FEC参数集412a);如果所估计页差错率442大于1 %但小于 2%,则将使用第二FEC编码参数(例如,第二FEC参数集412b);等等。并且最终,如果所 估计页差错率442大于最大差错率阈值440,则闪存控制器404可将当前页420标记(508) 为坏的并且当前页420将不再被使用。在一种配置中,最大差错率阈值440可以为10%的 所估计比特差错率。然而,如果页差错率442小于最大差错率阈值440,则当前页420仍可 被使用。
[0079] 如果闪存控制器404确定(506)页差错率442小于最大差错率阈值440,则闪存控 制器404可基于页差错率442选择(510)与FEC参数集412相关联的FEC编码率。对应于 给定页差错率442的FEC编码率被设计成使得闪存控制器404即使在有更多差错的情况下 也几乎
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1