首页> 中国专利> 具有数据修复功能的储存系统及其数据修复方法

具有数据修复功能的储存系统及其数据修复方法

摘要

本发明提供了一种具有数据修复功能的储存系统及其数据修复方法,主要是利用反复一或多次的测试与修复流程,使记忆媒体中的错误能降低至一般使用的错误侦测及校正(ECC)功能可以修复的范围,以确保资料读取的正确性,有效提升数据可靠度,其中数据修复步骤之较佳方式包括利用储存系统中的测试数据产生器提供一笔测试数据,并写入发生数据错误的记忆区块中,并通过读取其中数据来找到错误位,再通过修复程序使之能处于ECC技术可以修复的范围中,但是,若测试次数超过一测试的上限次数都无法找出错误位或无法将错误修复降低至错误侦测及校正技术可修复的范围,则将此记忆区块标记为损毁区块。

著录项

  • 公开/公告号CN101599305A

    专利类型发明专利

  • 公开/公告日2009-12-09

    原文格式PDF

  • 申请/专利权人 威刚科技股份有限公司;

    申请/专利号CN200810109903.8

  • 发明设计人 陈明达;林传生;谢祥安;张惠能;

    申请日2008-06-04

  • 分类号G11C29/12(20060101);G11C29/44(20060101);

  • 代理机构11243 北京银龙知识产权代理有限公司;

  • 代理人许静

  • 地址 台湾省台北县

  • 入库时间 2023-12-17 23:10:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-03-27

    授权

    授权

  • 2011-05-11

    实质审查的生效 IPC(主分类):G11C29/12 申请日:20080604

    实质审查的生效

  • 2009-12-09

    公开

    公开

说明书

技术领域

本发明涉及一种具有数据修复功能的储存系统及其数据修复方法,特别涉及利用写入一次或多次测试数据至储存错误数据的位置的方式进行内存的检测与数据修正。

背景技术

由于闪存具存取速度快、耗电量低、体积小及耐震等优于传统硬盘的特性,所以渐渐广泛地被应用在信息储存装置上。

闪存因结构上的关系,储存的数据容易受到高电压干扰或因记忆胞老化、损坏的影响,导致储存的数据产生错误,如原本记忆胞的状态为高电位,但控制器读取该记忆胞时却读出该记忆胞为低电位状态;或原本记忆胞的状态为低电位,控制器读取该记忆胞时却读出该记忆胞为高电位状态。

为避免闪存储存的数据发生错误,提高储存数据的可靠度,现有技术上主要利用错误侦测及校正技术(Error Checking and Correction,ECC)来侦测及校正错误数据。

简述ECC技术:

数据在写入闪存储存时,将先经过内存控制器中ECC单元运算,产生该笔数据的ECC码(ECC code),而ECC码便与该笔数据一起储存至闪存中。当读取数据时,控制器将数据及其ECC码一起读取出来,先经ECC单元执行侦测及修正错误位的运算,若经检查没有发现错误位,则输出该笔数据;若检查出数据中有错误位,在ECC能修正的范围下,便将数据修正后再输出;若检测出的错误位超过ECC能修正的范围,则控制器便回报数据读取错误。

关于闪存储存数据的侦测及修复的相关前案可参考美国专利公开号20040230879「Apparatus and method for responding to data retention loss in anon-volatile memory unit using error checking and correction techniques」(2004年11月18日公开),及美国专利第6,785,856号「Internal self-test circuit for amemory array」(2004年8月31日公告)两案。前者为闪存的错误位在ECC的修正能力下,提供一种错误侦测及修复方法,而后者则是于储存系统中设置测试电路来侦测内存的错误位,请参阅图1。

图1所示为美国专利第6,785,856号所提出的具有自我测试器(self-tester)104的记忆体装置100,其中记忆单元102连接到自我测试器104,其中有错误侦测及校正(ECC)电路106、自我测试电路108与一缓存器(register)110,此记忆单元102被分为多个记忆页(page)的内存结构。自我测试器104负责检测内存是否有错误并予以校正,当中的ECC电路106将于各记忆页中分组(group)检测,如使用Reed-Solomon算法的循环冗赘核对(cyclic redundancycheck,CRC)方法检测记忆单元中的错误,而自我测试电路108则计算当中错误的次数,并储存在暂存区110中,更可利用不同的数据检测各记亿位的读写状况来进行数据校正。

但是,于上述现有技术所提出的技术中,若发生错误位超过ECC能修正的范围,仍将发生数据读取错误的情形。

发明内容

本发明所要解决的技术问题是克服现有技术利用错误侦测及校正技术(ECC)进行记忆媒体的数据侦测与校正的限制,为此,本发明提供了一种应用于记忆媒体中的数据修复技术,主要是通过一或多次的测试流程,修正记忆媒体中的错误,并能降低错误的位至ECC所能修正的范围,若下一次测试次数超过一上限次数后,则会将错误的记忆区块标记为损毁区块,以提高记忆媒体的数据可靠度。

本发明所提供的具有数据修复功能的储存系统主要包括有控制单元及记忆单元,其中控制单元中包括测试数据产生器、比较单元、修复单元、数据缓存器及ECC单元。

上述测试数据产生器提供测试数据;比较单元用于比较由测试数据产生器写入记忆单元的测试数据与由记忆单元中读取出来的测试数据,以此判断此储存空间是否存在错误的位;数据缓存器用于暂存记忆单元中ECC无法修正的错误数据;修复单元根据比较单元提供的错误位的信息修正数据缓存器中与错误位相对应的位数据;ECC单元除在一般正常读写作业时执行对数据的侦错及修正外,也用于对数据缓存器中的数据执行错误检查及校正的作业。

而上述储存系统中的数据修复方法的较佳实施例则是当记忆单元中一第一记忆区块的一或复数记忆页发生ECC无法修正错误数据的情况下,先将该第一记忆区块的数据复制到此冗余的第二记忆区块上并抹除该第一记忆区块,接着,控制单元中的测试数据产生器即提供一笔测试数据写入发生数据错误的第一记忆区块中,并通过读取此第一记忆区块中发生数据错误的记忆页中的数据来检查两笔数据是否有不同。

若没有发现错误位,本发明所提供的方法则继续进行下一次测试流程,令测试数据产生器产生另一组不同的测试数据,执行第二次测试步骤,侦测第一记忆区块上发生数据错误的记忆页上的错误位,若经反复数次测试步骤,并超过一测试的上限次数,都无法找出错误位,则将第一记忆区块标记为损毁区块。但是,若在第一次或是几次的测试流程后发现错误位,则接着修正数据缓存器中对应错误位的数据,使之能在ECC技术可以修复的范围内,但是若此时仍无法以ECC技术进行修复,则将继续进行下一次测试流程,以进一步修正数据缓存器中的错误数据,以期将错误位降至ECC可修正的范围。

与现有技术相比,本发明具有以下有益效果:

本发明利用写入测试数据至储存错误数据的位置的方式来检测并修正数据的错误位,将数据中错误位的数目降至ECC能修复的范围,而使发生ECC无法修复错误数据的情形时,通过一或多次的测试流程,修正记忆媒体中的错误,若下一次测试次数超过一上限次数后,则会将错误的记忆区块标记为损毁区块,从而确保了数据读取的正确性,有效提升了数据的可靠度。

附图说明

图1为现有技术具有自我修复能力的记忆装置电路方块图;

图2为本发明储存系统的功能方块图;

图3A至图3I显示本发明各内存区块间互动的一状态示意图;

图4所示为本发明一较佳实施例的数据修复的流程步骤;

图5所示为本发明另一较佳实施列的数据修复的流程步骤;

图6显示为数据修复时进行再次测试流程的步骤;

图7A至图7H显示本发明各内存区块间互动的另一状态示意图。

其中,

内存装置100       记忆单元102

自我测试器104     ECC电路106

自我测试电路108   缓存器110

储存系统20        控制单元22

记忆单元24        测试数据产生器221

比较单元223       修复单元225

数据缓存器227     ECC单元229

具体实施方式

本发明提供了一种具有数据修复功能的储存系统及其数据修复方法,特别是当一般使用的错误侦测及校正(ECC)技术无法修复储存数据的错误位时,本发明储存系统可提供侦测错误位进而修复错误位的功能,确保数据读取的正确性,有效提升数据可靠度。

现有技术为确保数据的可靠度,控制单元在读取内存的数据时会采用ECC功能来检查及修复错误的数据。然而ECC错误修复的能力有限,若数据的错误位超出ECC的修正范围,将仍发生数据读取错误的情形。因此,本发明的储存系统将针对ECC无法修正的错误数据,利用写入测试数据至储存错误数据的位置的方式来检测并修正数据的错误位,将数据中错误位的数目降至ECC能修复的范围,而使发生ECC无法修复错误数据的情形时,可利用本发明的修复方法来读取出正确的数据。

请参阅图2,本发明储存系统的功能方块图所示,储存系统20包括一控制单元22及一记忆单元(非挥发性)24,两者电性相连接,其中控制单元22中包括测试数据产生器221、比较单元223、修复单元225、数据缓存器227及错误侦测及校正(ECC)单元229。

上述测试数据产生器221用以产生测试数据,并将测试数据写入记忆单元中,测试数据可以是全为”0”的数据,如0x00、全为”1”的资料,如0xFF、或”0”与”1”相间排列的资料,如0x55或0xAA,或者可为随机产生的二位随机数数据。比较单元223用于比较由测试数据产生器221写入记忆单元24(实施例可为闪存等非挥发性内存)的测试数据,与由记忆单元24中读取出来的数据,判断此记忆单元24是否存在错误的位,并判断记忆单元中错误位的地址等错误位的信息。

举例来说,当写入记忆单元24的测试数据为全为”0”的数据,而由记忆单元24读出来的数据中有一个位的数据为”1”,则该位为错误的位。数据缓存器227用于暂存上述记忆单元24中ECC无法修正的错误数据。修复单元225根据比较单元223提供的错误位的信息修正数据缓存器227中与错误位相对应的位数据,特别的是,数据缓存器227可选自随机存取内存(RAM)、非挥发性内存(Non-volatile)、相变化内存(Phase Change Memory)、自由铁电式随机存取内存(Free erroelectric random access memory)、磁性随机存取内存(Magnetic RAM)等内存。

另设置一ECC单元229,用以执行上述记忆单元24中的数据的侦错及修正,并用于对数据缓存器227中的数据,以执行错误检查及校正的作业,此ECC单元229除在一般正常读写作业时执行对数据的侦错及修正外,也用于对数据缓存器227中的数据执行错误检查及校正的作业。

图3A至图3I说明本发明各内存区块间互动的状态,主要说明利用写入测试数据的方式进行错误位的检查与校正的流程。

开始时,先发现错误数据。图3A显示为记忆单元中的区块A、区块B与区块C等三个记忆区块(block),当控制单元读取到记忆单元的区块A时,发现其中有一记忆页(假设为图式中标示「缺陷」的第一页)发生ECC无法修正错误数据的情形,则控制单元执行复制,将区块A中的数据复制到区块B中,其中标示「缺陷」的第一页的数据不经由ECC处理,而将数据完整原始的复制到区块B第一页中,接着其它页次将仍通过ECC功能由区块A复制到区块B上。

之后,进行数据复制与抹除。如图3B所示,假设在上述复制的过程中,于顺利复制完第二页(标示「原始资料」)后,发现区块A第三页也发生ECC无法修复错误数据的情形,标示为「缺陷」,则同样的将区块A第三页中的数据完整原始的复制到区块B第三页中;接着复制第四页的数据,顺利复制完第四页的数据后,在复制第五页的数据时又发现第五页的数据其错误的位超过ECC可修正的范围,标示为「缺陷」,则同样将区块A第五页中的数据完整原始的复制到区块B的第五页中。依上述复制规则,将区块A中的数据都复制到区块B中,然后抹除区块A。

接着,写入测试数据与检测错误位。在抹除区块A后,由测试数据产生器提供第一测试数据写入区块A,如图3C所示,第一测试资料写入区块A的各页后,标示为各页上的「样本1」,控制单元将针对区块A第一页、第三页及第五页中的数据进行读取程序,以与区块A的第一测试数据作比较,检测是否有错误的位。过程中若有发现记忆页中的错误位,便将区块B相关记忆页的数据复制到控制单元的缓存器中,再根据错误的位作数据修正。错误的数据修正后,控制单元于闪存中找一区块,如区块C,将修正后的数据及其它不需修正的数据由暂存区存入区块C。

如图3D所示,控制单元先比对区块A第一页中的数据,若发现错误位,标示为「缺陷」,便将区块B第一页的数据读回数据缓存器中,于数据缓存器中根据错误位信息修正数据,接着将在缓存器中修正后的数据写入区块C,标示为「已修正」。而区块B第二页为正确的数据,标示为「原始数据」,便直接复制到区块C中。

控制单元接着比对区块A第三页中的数据(因为数据错误),若发现错误位,便将区块B第三页的数据读回数据缓存器,并于缓存器中修正错误位,于修正错误位后再将修正后的数据写入区块C,如表示为「已修正」的第三页。

区块B第四页为正确的数据,便直接复制到区块C中,标示为「原始资料」。接着比对区块A第五页中的数据,若发现错误位,便同样将区块B第五页的数据读回数据缓存器,并于缓存器中修正错误位,于修正错误位后再将修正后的数据写入区块C。根据上述的修复方法,将区块B中原本正确的数据及修正后的数据写到区块C。

然后如图3E所示,当数据都写入区块C后,便抹除区块B,而区块C中第一页、第三页及第五页的数据都已经过修正,各页的错误位都已降到ECC能修正的范围,便接着将区块A标示为损毁区块。

然而,当第一测试数据写入区块A时,有可能无法发现错误位,或是发生有发现错误位,但经过修正仍无法将错误位降至ECC能修正的范围的情况。

图3F显示区块A中记载第一测试数据,标示为「样本1」;区块B记载有标示着「缺陷」的错误数据与标示「原始数据」的原始数据;区块C则记载着经过修正的记忆页(标示为「已修正」)、原始资料(标示为「原始数据」)与经过修正仍未达ECC可以修复的范围或是并未发现错误位而数据仍错误的数据(标示为「缺陷」)。

当控制单元写入第一测试数据到区块A中,假设于区块A中第一页顺利侦测到错误位,经读回区块B第一页的数据并修正后,使错误位降到ECC能修复的范围,便将修正后的数据写入区块C中。接着复制区块B第二页的数据到区块C。

而当利用第一测试数据侦测区块A中第三页的错误位时,比较单元没有发现错误的位,或是有发现错误位,但经修正仍无法使错误位的数目降至ECC能修复的范围。在前者状况中(无发现错误位),控制单元将区块A第三页中的数据复制到区块C中;或在后者状况中(有发现错误位),将控制单元数据缓存器中修复过的数据复制到区块C中,如区块C中标示为「缺陷」的记忆页。然后复制区块B第四页的数据到区块C。

接着侦测区块A中第五页的错误位,假设区块B第五页的错误数据可顺利修复并使错误位降至ECC能修正的范围内,在读取区块B第五页的数据至数据缓存器并修正数据后,将数据缓存器中的修复数据写入区块C中。接着将区块B接下来的记忆页复制到区块C。

在上述图3F将资料皆写入区块C后,即抹除区块A及区块B的资料,接着请参阅图3G,测试数据产生器产生第二测试数据(标示为「样本2」),并写入区块A,为了要测试上述区块A第三页的错误位。如图3H所示,区块C第一页及第二页中的数据直接复制到闪存中另一区块,区块D。接着,控制单元根据第二测试数据侦测区块A第三页的错误位,若顺利发现错误位,便将区块C第三页的数据读回数据缓存器中,根据错误位修正缓存器中的数据,假设此次修正已可将错误位降至ECC能修正的范围,接着将数据缓存器中修正后的数据写入区块D。然后将区块C接下来的记忆页复制到区块D中。最后如图3I所示,在数据都写入区块D后,抹除区块C及将区块A标示为损毁区块。

根据上述本发明所提供的储存系统架构与各记忆区块应用数据修复功能时的互动状态,其数据修复的方法至少包括先侦测到一个记忆区块发生错误侦测及校正技术(ECC)无法修正错误数据的情况,本发明即将此错误的内容降至ECC可以处理的范围内,并接着复制记忆区块中的数据到一暂存空间中,包括本发明实施例所利用的另一冗余记忆区块,或是随机存取内存(RAM)中,并抹除记忆区块之数据。之后,通过测试流程找寻错误位的位置,如通过比较写入的测试数据与读出的数据得到错误位的位置。并根据错误位的信息来修正暂存空间中相对错误位位置的数据,再判断经修正后是否仍存在ECC技术所无法修复的错误数据,或是再通过一次或多次的测试流程来降低错误位数,使之达到ECC技术可以处理的范围中,以执行错误侦测及校正,最后更将发生错误的记忆区块标记为损毁区块,以免日后继续发生错误,以提升储存媒体的读取效率。其中较佳实施例如图4所示的流程。

步骤一开始,如步骤S401,当储存系统中的控制单元在读取记忆单元(如闪存)的其中一实体区块时,如第一记忆区块,其中一或多个记忆页侦测到发生ECC无法修正错误数据的情况,此时,需将原记忆区块中的数据复制到一暂存空间(如上述随机存取内存、非挥发性内存、相变化内存、自由铁电式随机存取内存或磁性随机存取内存的数据缓存器)中,此例如步骤S403,控制单元利用一没有使用的冗余区块,假设为第二记忆区块,将第一记忆区块的数据复制到此冗余的第二记忆区块上,然后便将第一记忆区块抹除,如步骤S405。值得一提的是,在第一记忆区块的数据复制到第二记忆区块的过程中,控制单元将控制ECC单元针对错误的数据页停止执行错误侦测及修复的功能,以确保数据的传输不受ECC影响,而使第一记忆区块的记忆页的数据完全不变的复制到第二记忆区块中。

接着进行一测试流程,由控制单元中的测试数据产生器即产生一笔测试数据(若是第一次测试流程,则是写入第一测试数据)写入发生数据错误的第一记忆区块中(步骤S407),如图3C中区块A中的数据「样本1」,然后控制单元读取此第一记忆区块中发生数据错误的记忆页中的数据(步骤S409),并通过比较单元作比较,比较单元将比对测试数据产生器所提供的第一测试数据与从第一记忆区块中发生错误的记忆页中读取出来的数据(步骤S411),检查两笔资料是否有不同。

如步骤S413,由比对结果来判断是否有错误的位,也就是错误的硬件地址,若发现两笔数据间相对应的位分别纪录不同的数据,则该记忆页的记忆地址为错误的位;若两笔数据间相对应的位没有发现不同的数据,则没有发现错误的位。

若在比较单元没有发现错误位的状况下,本发明所提供的方法则继续进行一次测试流程(步骤S415),令测试数据产生器产生另一组不同的测试数据(第二测试数据),执行第二次测试步骤,同样将第二测试数据写入上述第一记忆区块中,包括发生数据错误的记忆页,继续侦测第一记忆区块上发生数据错误的记忆页上的错误位。

本发明在进行上述测试循环时,将设定一测试的上限次数(大于1),若是经过此次数的测试之后,都无法找出错误位,则控制单元便回报读取错误的信息,然后将第一记忆区块标记为损毁区块(Bad block)。

但若在第一次或是几次的测试流程(包括上述步骤S405、S407、S409、S411与S413)后,确实发现到错误位,则将错误位的信息传送给修复单元,然后控制单元从第二记忆区块上相对有错误的记忆页的数据复制到数据暂存区(步骤S417)。

接着修复单元便根据错误位的信息,修正数据缓存器中对应错误位的数据(步骤S419)。例如,若错误的位为第一及第三位,而数据缓存器中该记忆页的数据为11110101,则将数据缓存器中的数据由1变为0或由0变为1,修正为01010101。在修正数据缓存器中的数据后,接着要判断控制单元中的ECC单元是否能够对数据缓存器中的数据进行错误侦测及修复的程序,是否在ECC单元可以修复的范围之内(步骤S421),若数据缓存器中的错误数据的位数仍超过ECC单元能修复的范围,也就是ECC单元对数据缓存器中所侦测的错误数据仍无法进行错误数据的修复,则令测试数据产生器产生另一组测试数据去写入第一记忆区块发生数据错误的记忆页中(步骤S415),继续侦测记忆页中的错误位,以进一步修正数据缓存器中的错误数据,以期将错误位降至ECC可修正的范围。

同样,若是经过多笔测试数据测试后,大于上述设定的测试次数上限,仍无法有效将数据缓存器中错误的位降低至ECC所能修正的范围,则控制单元便回报读取错误的讯息,然后将发生错误的第一记忆区块标记为损毁区块。

若数据缓存器中的数据经修复后,其错误的位数已降至ECC单元能修复的范围,换句话说,就是ECC单元可对数据缓存器中所侦测的错误数据进行错误数据的修复,则控制单元于记忆单元中再找一冗余区块,假设为第三记忆区块(如图3E的区块C),将数据缓存器中经修正后的数据写入此第三记忆区块中相对发生错误的记忆页的位置,而第三记忆区块中其它的记忆页的数据则由已有复制数据的第二记忆区块中对应的记忆页复制过来(步骤S423)。当第三记忆区块中的数据都复制完毕后,控制单元便抹除上述第二记忆区块(步骤S425),并将第一记忆区块标记为损毁区块(步骤S427)。

所以,依据上述流程,若一个记忆区块中存在多个ECC无法修复错误数据的记忆页的情形,本发明所提出的储存系统仍可利用写入测试数据来侦测及修复错误位的方法来处理。

接着再提供另一实施例,如图5所示的数据修复方法步骤流程图。此例中,当控制单元在读取记忆单元(如闪存)的其中一实体区块时,假设为第一记忆区块,在读取到实体第一记忆区块的某一记忆页发生ECC无法修正错误数据的情况(步骤S501),此时,需将原记忆区块中的数据复制到一暂存空间中,此例则是由控制单元将第一记忆区块中的数据全部复制到一数据缓存器中(步骤S503),如储存系统中的一个记忆空间,或是储存系统所连接的计算机系统的内存,然后抹除第一记忆区块(步骤S505)。其中,在第一记忆区块的数据复制到数据缓存器的过程中,控制单元将控制ECC单元针对ECC无法修正错误数据的记忆页,停止执行错误侦测及修复的功能,以确保数据的传输不受ECC影响,使第一记忆区块发生数据错误的记忆页中的数据可完全不变的复制到数据缓存器中。

接着进行测试流程,如步骤S507所述由测试数据产生器提供一笔测试数据写入第一记忆区块中,包括发生错误的记忆页,然后控制单元读取第一记忆区块发生错误的记忆页的数据(步骤S509)到比较单元作比较(步骤S511),比较单元比对测试数据产生器所提供的测试数据与从第一记忆区块中该记忆页中读取出来的数据,检查两笔数据是否有不同,如步骤S513,判断是否有错误位,包括两种状况:

状况一:

若发现两笔数据间相对应的位分别纪录不同的数据,则判断第一记忆区块中具有错误位,此时,需修正该位所记载的数据,即修正在步骤S503写入暂存区的数据。

状况二:

若两笔数据间相对应的位没有发现不同的数据,则没有发现错误的位,此时需进行下一次的测试流程(步骤S515),令测试数据产生器产生另一组测试数据去写入第一记忆区块至其中发生错误的记忆页中,以继续侦测第一记忆区块记忆页上的错误位,包括重复步骤S505、S507、S509、S511与S513。

在状况二中,反复数次上述步骤之后,若测试数据产生器所提供的测试数据之数目已超过一预设上限都无法找出第一记忆区块中记忆页的错误位,则控制单元便于记忆单元中找一冗余区块,为第二记忆区块,将数据缓存器中的区块数据写入此第二记忆区块,之后,控制单元回报读取错误的信息,然后将此第一记忆区块标记为损毁区块,步骤叙述于图6。

在上述状况一中,当比较单元发现错误的位时,将此错误位的信息传送给修复单元,然后修复单元便根据错误位的信息,于数据缓存器中修正区块数据记忆页上对应错误位的位数据(步骤S517),在修正数据缓存器中的数据后,ECC单元对数据缓存器中区块数据记忆页的数据进行错误侦测及修复的程序,并须判断是否在ECC可以修复的范围之内(步骤S519),若数据缓存器中记忆页(原第一记忆区块中发生错误的记忆页)的错误数据的位数仍超过ECC单元能修复的范围,则令测试数据产生器产生另一组测试数据去写入第一记忆区块中上述的记忆页中,继续前述的侦测及修正程序,如上述步骤S515。

若已经过一个预设数量的测试程序后,若仍无法有效将数据缓存器中记忆页上错误的位降低至ECC所能修正的范围,则控制单元便于记忆单元中找一冗余区块,假设为第二记忆区块,将数据缓存器中的区块数据写入此第二记忆区块,之后,控制单元回报读取错误的信息,然后将发生错误的第一记忆区块标记为损毁区块(Bad block),步骤叙述于图6。

而若数据缓存器中的数据经修复后,其错误的位数已降至ECC单元能修复的范围,则控制单元于记忆单元中找一冗余区块,假设为第二记忆区块,将数据缓存器中的数据写入此区块中(步骤S521),当第二记忆区块中的数据皆复制完毕后,控制单元将发生数据错误的第一记忆区块标记为损毁区块,如步骤S523。

接着,若储存系统遇到一个区块中存在多个记忆页为ECC无法修正错误的情况,本发明的储存系统系将区块中的数据全部复制到数据缓存器中,然后一一针对区块中ECC无法修正错误的记忆页进行如上述的错误侦错及修复的程序,当数据缓存器中原本ECC无法修正错误的各记忆页,其错误位皆已降至ECC能修复的范围,便将数据暂存区中的数据写回记忆单元中,之后即通过ECC单元进行修复,并将先前发生ECC无法修正错误数据的区块标记为损毁区块。

上述图4步骤S415与图5步骤S515所述的流程,在比较单元没有发现错误位的状况下,本发明则反复实施此测试流程,令测试数据产生器产生下一组不同的测试数据,再执行一或复数次测试步骤,侦测记忆区块上发生数据错误的记忆页上的错误位,直到找到错误位为止。

本发明在进行上述测试循环时,将设定一测试的上限次数(大于1),主要是于没有发现错误位或是经过修复但是ECC仍无法修复的状况下(步骤S601),将进行下一次的测试流程,在此之前先需判断是否已超过测试数量的上限?(步骤S603),若是经过此次数的测试之后,都无法找出错误位,即进行的测试流程已超过预设的数量,则会进行步骤S611,控制单元回报读取错误的结果给储存系统,并标记当下欲进行测试的记忆区块为一损毁区块(步骤S613)。若即将进行的测试流程仍在预设的数量以下或是刚好等于此预设数量,则会继续进行下一次测试流程(步骤S605),测试流程请参阅图4或图5。并于测试结果判断是否发现错误位?(步骤S607),或经修复后判断ECC是否可修复?(步骤S609),若仍没有发现错误位或是经修复后ECC仍无法修复,则反复图6所述步骤。

根据上述实施例,本发明提出的具有数据修复功能的储存系统通过一个内建之暂存内存进行数据交换,尤其是进行数据修复的暂存内存,而图7A至7H图则显示利用计算机系统内的随机存取内存作为数据暂存与修复的暂存记忆位置,而非利用储存系统中记忆单元中的记忆区块,尤其是于此例中的储存系统连接于计算机系统时,如桌上型计算机、笔记型计算机、随身计算机系统等,且计算机系统中的随机存取内存的储存容量够大,而可用于提供储存系统暂存。

请先参阅图7A至图7C。在数据读取时,发生ECC无法修正记忆页的情形,比如图7A中区块中A的第一页(其中标示「缺陷」的记忆页),则控制单元便执行将区块A的数据复制到数据缓存器中的动作,此例中将区块A的数据复制到RAM暂存区块。假设在复制过程当中又发现记忆页第三页及第五页亦为ECC无法修正错误数据的情形,所以第一页、第三页及第五页的数据与其它无发生ECC无法修正错误数据的页次直接由此区块A复制到RAM暂存区块中,如图7B所示。

在完成数据搬移后,抹除区块A原来数据,并写入第一测试数据至区块A中,如图7C中标示的「样本1」。接着如图7D所示,接着根据写入各记忆页的第一测试资料检查区块A第一页、第三页及第五页的错误位,若发现错误位,则根据发现的错误位直接于图中的RAM暂存区块修改相关记忆页中的数据,当数据缓存器中第一页、第三页及第五页的错误数据的位数已降至ECC能修正的范围(如图7D中RAM暂存区块中标示「已修正」的记忆页,其余为「原始数据」),控制单元便于记忆单元中找一区块,假设为区块B,将RAM暂存区块中的数据复制到区块B中,最后将区块A标记为损毁区块。

然而,若如图7E所示,当控制单元要侦测区块A第三页的错误位以修正数据缓存器第三页的数据时,有以下状况,第一个状况是,利用第一测试数据(如「样本1」)的测试流程仍无法侦测区块A第三页中的错误位,如图中标示「缺陷」的第三记忆页;或是第二个状况,有侦测出错误位,但经修正后的数据的错误位数仍超出ECC能修正的范围。

在上述第二个有侦测出错误位的状况时,控制单元仍根据错误位修改数据缓存器第三页中的数据,接着读取区块A第五页的数据来比对,修正RAM暂存区块第五页中的错误位。若在无法侦测出错误位的第一个状况时,则不修正RAM资料区块中第三页的数据,如图7E中RAM暂存区块中标示「缺陷」的记忆页,而接着去读取区块A第五页的数据来比对,以修正数据暂存区第五页中的错误位。

接着如图7F所示,在区块A第一页、第三页及第五页都经过第一测试资料的测试后,抹除区块A以写入第二测试数据(如标示「样本2」)。然后参阅图7G及图7H,在第二测试数据写入区块A后,控制单元读取区块A第三页的数据来与第二测试数据作比较,以发现错误位,再根据错误位修正RAM暂存区块中第三页的资料,如图7G RAM暂存区块中标示「已修正」的第三记忆页。

但是,若第二测试数据仍无法修正数据缓存器中第三页的数据,则可再写入另一测试数据至区块A中,重复上述处理程序,以修复数据缓存器中第三页的数据。而若下一次的测试次数超过一预设之测试上限数量,仍然无法将错误位修正至ECC能修正的范围,则控制单元输出读取错误信息,并将此例中RAM暂存区块中的数据存回记忆单元另一区块中,然后将区块A标记为损毁区块,如图7H中区块A标示的「损毁区」。

另一情况是,当RAM暂存区块中第一页、第三页及第五页的数据都经修正,使该些页次的错误位数都降至ECC能修正的范围,控制单元便于记忆单元上找一区块B,将数据缓存器中的数据写入区块B,然后将区块A标记为损毁区块。

所以原本一区块中发生ECC无法修正的错误,而导致数据读取错误的情形,其通过本发明数据修复的方法,可将区块中数据错误的位降低至ECC能修正的范围,将修复的区块数据储存于另一区块中,并将ECC无法修正错误数据的区块标记为损毁区块避免再次使用,从而有效提高储存系统数据的可靠度。

综上所述,本发明揭露一种具有数据修复功能的储存系统及其数据修复方法,利用反复一或多次的测试与修复流程,使记忆媒体中的错误能降低至一般使用的错误侦测及校正(ECC)功能可以修复的范围,以确保资料读取的正确性,有效提升数据可靠度。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号