专利名称:数据管理方法
技术领域:
本发明涉及数据存储技术领域,特别地,涉及一种闪存的数据管理方法。
背景技术:
闪存作为一种数据存储工具,在人们的工作和生活中占据越来越重要的地位。
对于次品闪存而言,虽然可接受数据写入(例如,对闪存的页编程操作),但在数 据读取时却出错。目前,采用错误检查纠正(Error Checking andCorrecting,简称"ECC") 算法对出错数据进行纠错。该方法的缺陷在于,若闪存中的错误数据超出了控制单元的ECC 算法能够纠错的范围,则读取数据时会出现错误。
发明内容
本发明提供了一种闪存的数据管理方法,旨在提高闪存存储数据的可靠性。所述 方法基于闪存,以及用于读写闪存数据的控制单元。该方法包括所述控制单元在写入数据 到闪存后,对于数据错误超出控制单元纠错范围的数据单元,将写入该数据单元的数据写 入另一数据单元中。该数据单元可以是闪存的页或块。 上述方法中,对于写入到闪存的数据,发送读数据命令至闪存,将写入闪存的数据 读出;并判断所读出的数据中的错误是否超出控制单元的纠错范围。 上述方法中,判断数据中的错误是否超出控制单元的纠错范围的步骤可以包括 发送读数据命令至闪存,将写入的数据读出。通过ECC纠错算法处理产生数据错误数。将 所产生的数据错误数与控制单元的纠错范围比较,根据比较结果判断所读出的数据中的错 误数是否超出控制单元的纠错范围。 当判断所读出的数据中的错误未超出控制单元的纠错范围时,数据被纠错。 在一个实施例中,上述方法还可包括,在向闪存写入数据时,判断写入数据到闪存
的操作出错,将写入操作出错的数据写入另一数据单元中。
其中,判断闪存中写入数据到闪存的操作出错的步骤可以包括 控制单元发送读状态命令到闪存,控制单元根据闪存反馈的状态信息判断写入数
据到闪存的操作是否出错。 根据上述方法,可以提高闪存存储数据的可靠性。
图1是本发明一种实施方式中数据管理的方法流程图; 图2是本发明上述方式中判断数据超出控制单元纠错范围的方法流程图;
图3是本发明上述方式中判断数据写入操作出错的方法流程图。
具体实施例方式图l示出了本发明的一个实施方式的闪存的数据管理方法流程,该方法基于闪存,以及用于读写闪存数据的控制单元。该方法可包括
在步骤SIO中,写入数据到闪存。 在一实施例中,控制单元包括存储数据和校验码的内存模块。写入数据到闪存的 过程可以是将要写入的数据通过控制单元的ECC纠错算法产生数据和校验码,存储数据 和校验码到控制单元的内存模块。然后发送数据写入命令到闪存,将数据和校验码写入闪存。 在步骤S20中,对于数据错误数超出控制单元纠错范围的数据单元,将写入该数 据单元的数据写入到另一数据单元中。 在一实施例中,步骤S20的过程包括将写入的数据读出,判断数据错误数是否超 出控制单元纠错范围,若数据错误未超出控制单元纠错范围,则数据被纠错;若数据错误超 出控制单元纠错范围,则将数据重新写入另一数据单元中。 应当说明的是,本发明中的数据单元可以是闪存中的页或块。例如,在向闪存写入
数据时,如果数据可被写入到闪存中的一页,通过判断数据错误数超出控制单元的纠错范
围,则将数据写入闪存中的另一页。如果数据被写入到闪存的多页或块,且通过判断数据错
误数超出控制单元的纠错范围,对应地,将数据写入闪存中的其他多页或块。
如图2所示,上述方法中判断数据错误数超出控制单元纠错范围的过程可包括 在步骤S210中,发送读数据命令至闪存,将写入闪存的数据读出,通过ECC纠错算
法产生数据错误数。 在一实施例中,控制单元发送读数据命令至闪存,将数据读出的过程可包括向闪 存写入读数据命令(例如,向闪存写入命令OOH),然后输入数据在闪存中的数据单元的地 址。接着,从闪存中读取对应的数据。 数据从闪存读出时,通过ECC纠错算法处理产生数据错误数的过程可以是将数 据从闪存读出,通过ECC纠错算法产生校验码,将数据和校验码与写入数据到闪存时所产 生的数据和校验码比较,得出数据错误数。 在步骤S220中,将步骤S210中所产生的数据错误数与控制单元的纠错范围比较, 根据比较结果判定数据错误数是否超出控制单元的纠错范围。 在步骤S230中,对于数据错误数超出控制单元纠错范围的数据单元,将数据写入 到另一数据单元中。 在一实施例中,若所读出的数据错误数超出控制单元中ECC纠错算法的纠错范 围,则将数据出错的数据单元进行替换。替换的方法可以是将数据重新写入另一数据单元 中。并重新对写入的数据进行上述操作。 例如,对于闪存而言,假设控制单元ECC纠错算法的纠错范围为每512字节,可纠 错16位错误。如果读出的数据中,每512字节中有17位错误,则将要写入该错误数据所在 的页或块的数据重新写入闪存的新页或新块中。 在另一实施例中,若所读出的数据错误在控制单元ECC算法的纠错范围内,则数 据可被纠错。例如,控制单元中纠错算法的纠错范围为每512字节,可纠错16位错误,而所 读出的数据中,每512字节中只有15位错误,则数据可被纠错,不需重写。
在另一实施方式中,写入数据到闪存的过程还可以包括在控制单元写入数据到 闪存中的一页或块后,判断数据写入操作是否成功。如果数据写入操作失败,则将数据写入另一页或块中,直至数据成功写入闪存。 图3示出了在上述方法中判断数据写入操作出错的方法流程的一个示例。如图所 示,首先将要写入的数据经ECC纠错算法处理。然后发送数据写入命令(例如,发送页编程 命令80H),将数据从控制单元写入闪存的一页或块。最后,写入数据写入操作确认命令(例 如,发送IOH至闪存),确认写入完毕。 在步骤S310中,控制单元发送读状态命令到闪存(例如,发送70H到闪存),以判 断写操作是否成功。 在步骤S320中,闪存向控制单元反馈写入操作状态信息(例如,闪存反馈一字节 信息1/00或1/01),该信息可表示上述将数据写入闪存的操作是否成功。
在步骤S330中,控制单元根据闪存反馈的状态信息判断数据写入操作是否成功。 例如,如果闪存反馈的状态信息为1/00,则表示写入操作失败。控制单元将已写入该页或块 中的数据重新写入另一页或块中。反之,如果反馈的状态信息为1/01,则表示写入操作成 功。此后可以执行对写入数据错误的校验判断。 在上述的方式中,通过将写入的数据读出并根据数据错误程度进行相应的处理, 提高了数据存储的可靠性。 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种闪存的数据管理方法,基于闪存,以及包括用于读写闪存数据的控制单元,其特征在于,所述方法包括所述控制单元在数据写入闪存后,对于数据错误数超出控制单元纠错范围的数据单元,将写入该数据单元的数据写入另一数据单元中。
2. 根据权利要求l所述的方法,其特征在于,还包括 发送读数据命令至闪存,将写入闪存的数据读出;禾口 判断所读出的数据中的错误数是否超出控制单元的纠错范围。
3. 根据权利要求2所述的方法,其特征在于,判断所读出的数据中的错误数是否超出 控制单元的纠错范围的步骤包括通过ECC纠错算法处理读出的数据,产生数据错误数;禾口 将数据错误数与控制单元的纠错范围比较。
4. 根据权利要求3所述的方法,其特征在于,进一步包括当判断所读出的数据中的错 误数未超出控制单元的纠错范围时,对数据进行纠错处理。
5. 根据权利要求l-4任一项所述的方法,其特征在于,写入数据到闪存的过程包括 在向闪存写入数据时,判断写入数据到该数据单元的操作是否出错;禾口 将写入操作出错的数据写入所述闪存的另一数据单元中。
6. 根据权利要求5所述的方法,其特征在于,判断写入数据到闪存的操作是否出错的 步骤包括所述控制单元发送读状态命令到所述闪存;禾口所述控制单元根据闪存反馈的状态信息判断写入数据到闪存的操作是否出错。
7. 根据权利要求6所述的方法,其特征在于,所述数据单元为闪存中的页或块。
全文摘要
本发明涉及数据存储技术领域,提供了一种闪存的数据管理方法。所述方法基于闪存,及用于读写闪存数据的控制单元,所述方法包括以下步骤所述控制单元在数据写入闪存后,对于数据错误数超出控制单元纠错范围的数据单元,将写入该数据单元的数据写入另一数据单元中。本发明将写入的数据重新读出并判断数据错误是否超出控制单元的纠错范围,提高了数据存储的可靠性。
文档编号G11C29/42GK101752007SQ20081018279
公开日2010年6月23日 申请日期2008年12月4日 优先权日2008年12月4日
发明者万红波 申请人:深圳市朗科科技股份有限公司