发明内容
本发明是鉴于上述问题而完成的,其目的在于提供一种既可以提高闪存等半导体存储设备中的存储数据的可靠性,又可以通过再利用故障区域而有效利用存储区域的方法及装置。
本发明是一种存储装置的数据写入、读取方法,所述存储装置具有存储单元,所述存储单元由分别具有多个数据存储区的多个物理存储区域构成,并以各物理存储区域单位一并执行数据的写入或读取操作,所述存储装置的数据写入、读取方法的特征在于,当向所述存储单元存储数据时,将从上位主机输入的、应按所述物理存储区域单位写入的一连串的数据通过重新排列而分离写入多个所述物理存储区域中;当从所述存储单元读取数据时,将从所述多个物理存储区域的各个物理存储区域分别一并读取的数据通过再次重新排列而还原成所述输入的一连串数据来输出。
此外,本发明的特征在于,设置有写入了纠错数据的纠错用物理存储区域,其中所述纠错数据用于对分别写入所述多个物理存储区域中的各对应位置上的数据进行纠错,当在存入所述多个物理存储区域的数据中检测出错误时,对所述检测出数据错误的物理存储区域的所有数据进行检查,将正常数据转移写入用于替代的物理存储区域中的对应位置,并且将错误数据通过利用所述纠错用物理存储区域的纠错数据纠正后写入所述用于替代的物理存储区域中的对应位置,并将所述检测出数据错误的物理存储区域的数据全部删除。
而且,当执行了所述检测出数据错误的物理存储区域的数据的删除的结是,所有数据删除成功时,将该物理存储区域登记为替代备用物理存储区域,从而使其作为替代物理存储区域而可再次使用;当未能删除所述检测出数据错误的物理存储区域的所有数据时,将该物理存储区域登记为不可删除的物理存储区域,以便以后不再使用该物理存储区域。
此外,本发明的数据存储系统的特征在于,包括:存储单元,由分别具有多个数据存储区的多个物理存储区域构成,并以各物理存储区域单位一并执行数据的写入或读取操作;重新排列单元,具有将从上位主机输入的向所述存储单元的写入数据重新排列并向所述存储单元输出的功能,和将从所述存储单元读取的数据重新排列并向所述上位主机输出的功能;以及控制单元,控制所述存储单元及重新排列单元的操作,其中所述重新排列单元具有将从所述上位主机输入的、应按所述物理存储区域单位写入的一连串的数据通过重新排列而分离写入多个所述物理存储区域中的功能,以及将从所述多个物理存储区域的各物理存储区域分别一并读取的数据通过再次重新排列而还原为所述输入的一连串的数据来输出的功能。
此外,本发明的数据存储系统的特征在于,在所述存储单元中设置有写入了纠错数据的纠错用物理存储区域,所述纠错数据用于纠正分别写入所述多个物理存储区域中的各对应位置上的数据的错误,所述控制单元具有以下功能:当在存入所述存储单元的数据中检测出错误时,对所述被检测出错误的物理存储区域的所有数据进行检查,将所述检查的结果被判定为正常的数据转移写入用于替代的物理存储区域中的对应位置,并且将被判定为错误的数据通过利用所述纠错用物理存储区域的纠错数据纠正后写入所述用于替代的物理存储区域中的对应位置,并执行将检测出所述错误的物理存储区域的数据全部删除的控制。
即,本发明的特征在于,在闪存等数据存储系统中,通过使各数据具有横跨发生故障的物理单位的存储区域而配置数据及纠错信息的结构,从而即使在某种任意的发生故障的物理单位的数据存储区域发生了故障的情况下,也能够容易地进行原数据的还原。
发明效果
根据本发明,由于将应存储在一个物理存储区域中的一连串的数据分离存储在多个物理存储区域中,并且还将其纠错数据存储在其他的物理存储区域中,所以,即使在由于制造时的缺陷、由电子迁移或静电等而造成的破坏等在特定区域发生的各种故障,而导致一个或可纠错的任意数量的物理存储区域无法读取数据的情况下,也能够容易地还原数据。
此外,既便是发生错误的物理存储区域,也由于在通过删除来可再利用的情况下对其进行了再次利用的操作,所以,即使对于数据的长期保存性能差的存储设备来说,也能够以某种程度的可靠性使用。
此外,数据存储方法与以往的数据存储方法不同,通过将本应存储在一个物理存储区域中的一连串数据分离存储在多个物理存储区域中,并对数据存储的顺序进行加密等,可实现即使只将写入完毕的存储设备连接到其它系统上也无法正常读取数据的结构,从而还能够用于安全用途。
具体实施方式
图1是表示本发明第一实施方式的数据存储系统的框图。
本实施方式的数据存储系统具有存储单元104,所述存储单元104包括物理存储区域111、物理存储区域112、…、物理存储区域11n的n个在物理上被划分的存储区域。这里所称的物理存储区域是指具有对数据的写入、读取、删除等的任一种或所有行为同时操作的一批功能的存储区域,该区域表示各种故障发生的一批区域,其中所述故障例如是制造时的缺陷、或由电子迁移和静电等造成的破坏等的在特定区域发生的故障,或者是由控制电路的不良、电源电压稳定性的影响引起的故障等。
图2是作为具体的例子,表示普通闪存中的数据存储结构。在闪存中,字节单位、字单位等数据读写最小单位的数据被从数据1到数据X汇集成一组,并将所述连续的X个数据的组作为一页存储。然后,通常在高速读入适应型的闪存中,多具有所述页单位的读入功能。
此外,这里将汇集了Y个所述页的组作为一个块(block)。通常闪存与EEPROM(Electronically Erasable and Programmable Read OnlyMemory:电可擦除可编程只读存储器)等不同,只能以所述块的单位进行删除。NAND型闪存在此基础上,通常只能以块的单位读写。这里,Z个该块的集合构成一个闪存。在本实施方式中,作为具体例子,以在这里定义的块为物理存储区域的单位,并将具有Z个物理存储区域的存储装置作为对象来进行说明。
本实施方式中的数据存储系统的特征在于具有数据重新排列单元103。该数据重新排列单元103进行所输入的一连串的数据的重新排列,以便将这些数据依次存储到存储单元104的多个(n个)物理存储区域(块)中,从而将本应作为一组连续数据而存储在一个物理存储区域中的数据横跨多个(n个)物理存储区域来分离存储。
由于闪存通常只有例如对一个页单位进行读取等的、将一个物理存储区域内的数据作为连续数据来进行读写的功能,所以,若对于通过本实施方式存储的存储装置进行与以往相同的读写的话,由于数据排列不同,因此在通常的CPU(Central Processing Unit:中央运算处理装置)等上位主机101中不能直接作为数据进行处理。为此,从多个(n个)物理存储区域中分别读取的数据串通过数据重新排列单元103被再次重新排列,从而被转换为可用通常的CPU等处理的数据串,由此上位主机101能够直接作为数据进行处理。
控制单元102是控制存储单元104及数据重新排列单元103的单元,根据来自上位主机101的数据读取、写入的请求,进行从存储单元104读取数据的控制、向存储单元104写入数据的控制。此外,数据的读取、写入的切换,以及芯片选择、地址指定等的各种控制信号的收发也由该控制单元102来进行。
在本实施方式的数据存储系统中,假设进行读取、写入数据的收发的数据信号与数据重新排列单元103连接,表示进行数据读写的地址的地址信号与存储单元104连接,但是根据实施方式可以考虑各种连接方法。在数据重新排列单元103与存储单元104之间连接有数据信号(数据总线),写入存储单元104中的数据或从存储单元104读取的数据必须通过数据重新排列单元103重新排列后才向存储单元104或上位主机101输出。上位主机101是对控制单元102请求数据读写的单元,是CPU、存储控制器等数据处理装置。
图3~图4是用于说明以往及本实施方式中的数据存储方法的图,图5~图6是表示用于实现本实施方式的数据存储方法的数据重新排列单元的一个例子的结构图。以下,参照图1~图6对本实施方式的操作进行说明。
如图3所示,存储单元104包括物理存储区域1(301)、物理存储区域2(302)、…、物理存储区域n(30n)的n个物理存储区域。这里所述的物理存储区域相当于在具有例如图2所示的结构的闪存中作为删除的最小单位的块。在图3中,每个一个物理存储区域(块)分别有m个数据存储区。在该例中,存储单元104有m×n个数据存储区。
可存储在一个数据存储区中的数据量通常多是1字节或2字节(=1字)、4字节(=2字)等的单位。在以往的数据存储系统中,如图3所示,数据的(数据1)~(数据m)被存储在物理存储区域1(301)中,(数据m+1)~(数据2m)被含在其后连续的物理存储区域2(302)中,(数据2m+1)~(数据3m)被含在物理存储区域3(303)中,…,(数据(n-1)m+1)~(数据nm)被含在物理存储区域n(30n)中,就这样在一个物理存储区域填满后再转向下一个物理存储区域的顺序来存储数据。
另一方面,在本实施方式中的数据存储系统中,如图4所示,在物理存储区域1(401)的第一个区域中存储(数据1),在物理存储区域2(402)的第一个区域中存储(数据2),在物理存储区域3(403)的第一个区域中存储(数据3),…,在物理存储区域n(40n)的第一个区域中存储(数据n),接着在物理存储区域1(401)的第二个区域中存储(数据n+1),在物理存储区域2(402)的第二个区域中存储(数据n+2),…,在物理存储区域n(40n)的第二个区域中存储(数据2n),…,在物理存储区域1(401)的第m个区域中存储(数据(m-1)n+1),…,在物理存储区域n(40n)的第m个区域中存储(数据mn)这样地依次存储数据。
这样,在本实施方式的数据存储方法中,由于对存储单元104以与以往不同的顺序存储数据,所以难以直接利用数据。因此,将从存储单元104的各物理存储区域一并读取的数据用数据重新排列单元103进行重新排列后再向上位主机101输出,并且,将从上位主机101送来的写入数据进行重新排列后再写入存储单元104中。从而,在本实施方式中,m×n个的数据存储区(n个物理存储区域)起着用于一并写入数据或一并读取数据的大小的作用。
图5(a)及(b)示出了本实施方式中的数据读取时的数据重新排列映像及数据写入时的数据重新排列映像,图5(a)的501、502以及图5(b)的504、505相当于图1的数据重新排列单元103,图5的503相当于图1的存储单元104。在图5中,为了简单假设有4个具有4个数据存储区的物理存储区域,从而具有4×4=16的数据存储区。
由于在存储单元503中按照图4的数据存储方法存储了数据,所以在读取数据时,将存储于存储单元503的4个物理存储区域中的数据暂时分别存储到数据重新排列单元502内所设的4个路径(route)中,并在从502通过501的期间,首先重新排列成数据1、数据2、数据3、数据4的列来输出,接着依次读取数据5~数据8、数据9~数据12、数据13~数据16的数据。
另一方面,在写入数据时,写入数据经由数据重新排列单元505、504而被存储到存储单元503中。例如若数据串(1、2、3、4)被输入到505中,则这4个数据分别通过504内的不同路径,接着同样地以使(5、6、7、8)、(9、10、11、12)、(13、14、15、16)的4个数据分别通过504内的不同路径地进行数据的重新排列。然后,按各路径的数据串将它们一并存储到存储单元503的各个物理存储区域中。
图6示出了通过移位寄存器来实现图5(a)所示的数据读取时的数据重新排列单元的例子。
图6(a)是由4个D型触发器构成的4位移位寄存器的一般电路,若将其用图6(b)所示的图来表示的话,则如图6(c)所示,图5(a)所示的数据重新排列电路可用将来自4个4位移位寄存器的各个输出连接到另外一个4位移位寄存器中的各预置端上的电路来实现。
这里,假设在存储单元104中例如图5(a)的503所示的那样存储有数据,并具有以物理存储区域单位一并读取的功能。最初,作为重新排列前的数据以(1,5,9,13)的顺序一并读取数据。此时,在S1~S4的开关中,只有S1导通,从而数据被依次存储到FF11~FF14中。接着在只有S2导通的状态下读取数据串(2,6,10,14),之后依次在只有S3导通时读取数据串(3,7,11,15),在只有S4导通时读取数据串(4,8,12,16)。
在FF11~FF14、FF21~FF24、FF31~FF34、FF41~FF44这16个的所有的触发器中存储数据后,接着控制FF51~FF54使其操作。由于输出B1~B4连接在FF51~FF55的预置端上,所以可依次取出数据。即,在最初的时刻,数据串(1,2,3,4)被置于FF51~FF54中,并从B5输出。进而,在下一时刻将下一个B1~B4的输出被置于FF51~FF54中,从而取出数据串(5,6,7,8)。之后同样地以数据串(9,10,11,12)、(13,14,15,16)的顺序取出数据。
此外,就数据写入的重新排列电路而言,也能够根据图5(b)的映像,与图6相同地通过使用移位寄存器的电路结构来容易地实现。
在本实施方式中,对于由多个物理存储区域构成,且以一个物理存储区域单位一并执行写入或读取数据的操作的存储装置来说,由于不将一连串的数据存储到一个物理存储区域单位中,而是将它们分离存储在多个物理存储区域中,所以即使仅将写入完毕的存储设备连接到其它系统上也无法正常读取数据,从而,例如可通过对数据存储的顺序进行加密来用于安全用途。
图7是本发明第二实施方式的示意图,示出了本实施方式中的数据及纠错数据的存储方法。此外,图8示出了本实施方式中的发生错误时的物理存储区域替代映像。
在闪存等中,通常,为了数据的纠错,通过给每个某种任意的数据单位添加奇偶校验等冗余数据,来进行检错、纠错(参见专利文献1、2等),但是存在如下问题:即,由于通常与该纠错数据成对的数据的一部分或是全部被存储在单一的物理存储区域内,所以当由于物理上的故障而产生数据错误等时,被存储在该物理存储区域中的一批数据中的大部分将会丢失,从而无法进行纠错。
因此,在本实施方式中,不将一连串的数据存储到一个物理存储区域单位中,而是将它们分离存储在多个物理存储区域中,并且增加存储纠错数据的物理存储区域,从而将与存储于多个物理存储区域中的数据相对的纠错数据一并存储在该物理存储区域中,由此,即使在一个或是可纠错的任意数量的物理存储区域无法读取数据的情况下,也能够容易地进行纠错,从而可还原数据。下面说明本实施方式的数据存储系统中的数据还原方法。
在图7中,示出了具备n+1个物理存储区域的存储单元,其中所述物理存储区域具有m各数据存储区,从而在该存储单元中总共有(m)×(n+1)个数据存储区。这里,将数据1~数据n作为一组,并将该一组数据的纠错数据作为数据p1存储在另外的物理存储区域n+1中。同样地存储与数据n+1~数据2n相对的纠错数据p2、…、与数据(m-1)n+1~数据mn相对的纠错数据pm。
通过这样存储数据,例如存储于图7的物理存储区域2中的数据发生异常时,如图8所示,可在替代的物理存储区域A中存储通过纠错还原的数据,并恢复为通常状态。所述纠错数据根据数据的重要程度、可添加的数据量、电路规模等,可使用一般所用的各种类型。作为奇偶校验或循环码的CRC(Cyclic Redundancy Code;循环冗余校验码)、BCH码、RS(Reed Solomon)码等为其代表例。
这里,使用图9来说明一个数据存储区由4位构成,并利用奇偶校验进行数据纠错的情况。如图9所示,在数据1由位1-1、位1-2、位1-3、位1-4构成,数据2由位2-1、位2-2、位2-3、位2-4构成、…、数据n由位n-1、位n-2、位n-3、位n-4构成时,对于将位1-1、位2-1、…、位n-1作为一组数据串确定奇偶校验1,同样,可通过确定奇偶校验2、奇偶校验3、奇偶校验4来进行纠错。
图10是表示本实施方式中的纠错步骤的流程图,图11是所述数据还原操作的映像图。下面,参照图7~图11说明本实施方式的数据还原操作。
首先如通常那样,在进行存储于数据存储区i(1≤i≤mn)中的数据的读或写(1002)时,在检测出发生错误(不可读或写失败)的情况(在1003为“是”)下,为了判别该故障是针对包含数据i的一个物理存储区域(块)全体的,还是仅是存储数据i的特定的数据存储区的,而首先读取同一块内的其他数据(1004)。
当该块内的其他所有的数据或是任意设定数量的错误存在时(在1005为“是”),由于上述故障是针对包含数据i的一个物理存储区域(块)全体的可能性高,所以不使用该块中存储的数据而直接进行错误块的删除(1007)。在此外的情况,将上述故障视作只是存储数据i的特定的数据存储区的故障,从而只将正常读取的数据转移到其他块(1006)中后,再进行错误块的删除(1007)。
然后,进行块删除是否失败的判定。这里,当块删除成功(在1008为“否”)时,将发生错误的块登记到替代备用块中(1009)。该替代备用块是在产生了不可删除的块时,替代不可删除的块而使用的块的备用,通常由用软件实现的存储器管理系统来管理。当通过判定(1008)而得知块删除失败时(在1008为“是”),将该块登记为不可删除的块(1010)来进行管理,以便以后不再使用。
然后,对替代块进行分配(1011)。接着在替代块中还原数据,但首先进行(1012)是否有在步骤(1006)转移的数据的检查。当没有转移的数据时,单纯从剩下的块的数据和纠错数据(奇偶校验)全部还原不可删除的块中所存储的数据(1013)(图11(b))。此外,当有转移的数据时,将转移的数据写入替代块中(1014),并通过纠错只还原没有转移的错误数据(图11(a))。
通过以上那样的操作,当只在一个物理存储区域(块)发生数据错误时还原数据。这样,在本实施方式中,由于有对发生错误的所述块的其他数据进行读入等的、特定不可删除的块的操作,所以,即使如图9所示对一个数据串只设置一位只能检测通常错误的奇偶校验位,也能够进行纠错。
通过动态地进行以上的操作,从而在各种故障发生的一批物理存储区域发生了故障时,能够立即还原数据,其中各种故障例如是制造时的缺陷、或由电子迁移和静电等造成的破坏等在特定区域发生的故障,或者是由控制电路的不良、电源电压稳定性的影响引起的故障等。并且可使上位主机意识不到这一点而稳定地读写数据。而且,既便是发生不可删除的块,若是通过删除等而可再利用的故障的话,仍能够将其作为替代备用块来再次使用。
此外,在上述操作中,既便是发生不可删除的块,在通过删除等而可再利用时,仍将其作为替代备用块,但是,当在同一块中发生了某一设定的任意次数以上的不可删除时,对其进行控制,以便以后不再使用,由此可提高可靠性。
图12是表示本发明其他实施方式的数据存储系统框图。
本实施方式的基本结构与上述实施方式相同,但其特点是增加了硬件的纠错单元105。纠错单元105是对输入数据重新排列单元103中的数据进行纠错的单元。此外,纠错单元由控制单元102指示是否进行纠错的控制、纠错方法的控制等。此外,纠错单元105还具有检错功能。
图13示出了本实施方式中的数据及纠错数据的存储方法的一个例子,图14示出了本实施方式中的纠错操作。下面,使用图12~图14来说明本实施方式的操作。
如图13所示,本实施方式中数据的存储,虽然与图7相同地将与横跨物理存储区域之间的数据1、数据2、数据3、…、数据n的数据串相对的纠错数据作为p1存储,但在本实施方式中,将与物理存储区域1的数据,即数据1、数据n+1、数据2n+1、…,数据(m-1)n+1的数据串相对的纠错数据作为q1存储。同样地存储p2~pm以及q2~q(n+1)。通过这样配置纠错数据,从而例如在将奇偶校验用作纠错数据时,即使不特定存在故障的物理存储区域也可以直接进行纠错。
使用图14来具体说明。这里,1403表示存储单元,1401、1402表示数据重新排列单元。当在存储单元1403的数据6有故障的情况下将数据输入到数据重新排列单元1402中时,由纠错单元105进行检错,并在检测出错误时进行纠错。在使用了奇偶校验等的情况下,如图14所示,利用p2、q2的纠错数据来进行检错及纠错。
这样,在本实施方式中,由于设有硬件的纠错单元,所以即使在使用更复杂的纠错方法的情况下,也能够获得纠错处理速度很快的效果。
此外,在以上的实施例中,说明了数据重新排列单元使用移位寄存器的例子,但不限于此,例如也可以利用SRAM(Static RAM:静态存储器)、闪存、EEPROM等来进行软件上的重新排列。在这种情况下,如图13所示,具有以下效果:通过在两轴方向上添加纠错数据,从而既便在作为重新排列单元的存储器自己出现了在物理存储区域单位上的故障的情况下,也同样能够还原。
此外,在上述实施例中,将纠错数据作为与一个数据存储区相当的量,但是根据纠错方法,也可以对一个数据串赋予多个数据存储区。此外,当将多个闪存层叠并封入一个封装件内的闪存LSI时,狭义上的物理存储区域是块,而更广义上的物理存储区域则是一个闪存。
在这样的情况下可分为两个阶段来适用本发明是很显然的。此外,本实施例由于数据重新排列、纠错比较费时,所以对于只将本实施例应用在由于数据损坏而导致的损伤较大的文件管理区、重要的用户数据等的一部分上的利用方法,其效果更好。
此外,本发明不限于上述各实施例,在本发明的技术构思的范围内能够适当改变各实施例是很显然的。