数据恢复电路、半导体存储装置及数据恢复方法与流程

文档序号:12120278阅读:261来源:国知局
数据恢复电路、半导体存储装置及数据恢复方法与流程

本发明的实施方式涉及数据恢复电路、半导体存储装置及数据恢复方法。



背景技术:

为了纠正数据恢复时的数据错误,存在对成为恢复对象的数据附加冗余数据的方法。作为该冗余数据的代表例,例如有通过多个数据的XOR(异或)运算而获得的码字。在附加通过XOR运算获得的码字的方法中,在多个数据中的2个以上的数据存在错误的情况下无法恢复原始数据。



技术实现要素:

本发明的一个实施方式的目的是提供即使在多个数据存在错误的情况下也能够使用XOR运算来恢复原始数据的数据恢复电路、半导体存储装置及数据恢复方法。

实施方式的数据恢复电路具备XOR运算部、错误位位置推定部、错误要因推定部和错误临时判定部。XOR运算部进行包括N位的M个数据的各位彼此间的XOR运算,所述N、M为2以上的整数。错误位位置推定部基于上述XOR运算结果来推定错误位位置。错误要因推定部推定上述错误位的反转方向。错误临时判定部向与上述反转方向相反的方向进行上述错误位位置处的位反转。

附图说明

图1是表示第1实施方式所涉及的使用了一个数据存在错误时的XOR 运算的数据恢复方法的图。

图2是表示第1实施方式所涉及的使用了多个数据存在错误时的XOR运算的数据恢复方法的图。

图3(a)及图3(b)是表示第1实施方式所涉及的使用了多个数据存在错误时的XOR运算的数据恢复方法的图。

图4(a)~图4(d)是表示第1实施方式所涉及的使用了多个数据存在错误时的XOR运算的数据恢复方法的图。

图5是表示存储单元的存储状态被4值化时的阈值分布的一例的图。

图6是表示第2实施方式所涉及的数据恢复电路的概略构成的框图。

图7是表示第2实施方式所涉及的数据恢复电路的工作的流程图。

图8是表示第3实施方式所涉及的半导体存储装置的概略构成的框图。

图9是表示图6的数据管理信息的一例的图。

具体实施方式

以下参照附图来详细说明实施方式所涉及的数据恢复电路、半导体存储装置及数据恢复方法。另外,并非通过这些实施方式限定本发明。另外,以下的实施方式中,作为记录数据的半导体存储装置,以将NAND闪速存储器适用于SSD(Solid State Drive:固态硬盘)的情况为例,但也可以是将NAND闪速存储器适用于存储卡、USB存储器等便携存储介质的情况,还可以是将NAND闪速存储器适用于智能手机、平板型终端等电子设备的情况。另外,也适用于取代NAND闪速存储器而使用MRAM(Magnetoresistive Random Access Memory:磁阻随机存取存储器)、FRAM(注册商标)(Ferroelectric Random Access Memory:铁电随机存取存储器)、ReRAM(Resistive Random Access Memory:电阻随机存取存储器)或PCRAM(Phase Change Random Access Memory:相变随机存取存储器)等非易失性半导体存储装置的情况,也适用于使用DRAM、SRAM等易失性半导体存储装置的情况。

(第1实施方式)

图1是表示第1实施方式所涉及的使用了一个数据存在错误时的XOR运算的数据恢复方法的图。另外,以下的实施方式中,以存在成为恢复对象的6个数据C0~C5的情况为例。

图1中,设为对成为恢复对象的数据C0~C5在记录时附加有数据X0。各数据C0~C5例如可以按扇区单位来提供。1个扇区的大小例如可以设定成512字节或4k字节。此时,数据X0可以通过数据C0~C5的XOR运算来生成,可以以X0=C0^C1^C2^C3^C4^C5的式来提供。这里,^表示各数据中处于相同位置的位彼此间的XOR运算。

并且,设为数据C0、C1、C3~C5能够正常再现,但数据C2无法纠错而无法正常再现。另外,数据C2′是无法纠错的C2的纠错前的数据。纠错例如可以使用RS码或LDPC码等纠错码。此时,可以用这样的纠错码对数据C0~C5、X0编码后进行记录。这里,若能够正常再现数据X0,则通过数据C0、C1、C3~C5、X0的XOR运算,能够正常再现数据C2。此时,数据C2可以以C2=C0^C1^C3^C4^C5^(C0^C1^C2^C3^C4^C5)的式来提供。

这样,在将通过XOR运算获得的码字作为冗余数据进行附加的方法中,在多个数据中的一个数据存在错误的情况下,能够通过XOR运算来恢复原始数据。

图2、图3(a)及图3(b)及图4(a)~图4(d)是表示第1实施方式所涉及的使用了多个数据存在错误时的XOR运算的数据恢复方法的图。另外,以下的实施方式中,以各数据C0~C5为8位(bit)的情况为例。

图2中,设为数据C0、C3、C5、X0能够正常再现,但数据C1、C2、C4纠错失败而无法正常再现。另外,数据C1′、C2′、C4′分别是无法纠错的C1、C2、C4的纠错前的数据。在存在无法纠错的多个数据的情况下,对于错误位位置的推定,使用XOR运算。

即,图3(a)中,将各数据C1′、C2′、C4′的存在错误的位位置b0~b7的一例用×表示。即,设为数据C1′在位位置b4、b5、b7存在错误,数据C2′在位位置b0、b2、b6、b7存在错误,数据C4′在位位置b1、b3、b6、 b7存在错误。然后,通过数据C0、C1′、C2′、C3、C4′、C5、X0的XOR运算来生成数据E。该XOR运算中,对于数据C1′、C2′、C4′,使用纠错前的数据C1′、C2′、C4′。此时,数据C1′、C2′、C4′的存在错误的位位置b0~b7反映到数据E,在数据C1′、C2′、C4′的错误位位置候选,设1。即,如图3(b)所示,若将数据E的设1的位位置b0~b5、b7设为错误位位置e0~e6,则表示在错误位位置e0~e6处某一个数据C1′、C2′、C4′存在错误。另外,如数据E的b6所示,当多个数据在相同位位置存在错误、且存在错误的数据数为偶数的情况下,XOR运算结果成为零,错误位位置的信息消失。

这里,在通过XOR运算来生成数据E时使用纠错前的数据C1′、C2′、C4′,是因为:对于无法纠错的码字,很多情况下纠错前的数据C1′、C2′、C4′比纠错后的数据离正确的码字的汉明距离更近。

仅通过观察数据E的设1的错误位位置e0~e6,并不知道在哪个数据C1′、C2′、C4′的各错误位位置e0~e6存在错误。因而,假定在各错误位位置e0~e6处数据C1′、C2′、C4′中的仅任一个存在错误,能够推定该一个数据。此时,能够在预定条件下假定错误位的有预见性的反转方向。例如,若设为数据C0~C5、X0记录在NAND闪速存储器中,则基于NAND闪速存储器特有的错误要因,能够假定错误位位置e0~e6的错误位的反转方向。作为NAND闪速存储器特有的错误要因,可以例举数据滞留、读出干扰、写入干扰、读出时的单元间耦合效应或写入时的单元间耦合效应。数据滞留是存储器所保持的电荷随着时间经过而减少的现象。读出干扰、写入干扰及单元间耦合效应是存储器所保持的电荷在读出时或写入时增大的现象。对于NAND闪速存储器,由于读出及写入按页面单位来进行,所以读出干扰及写入干扰按页面单位而发生。例如,在记录2值数据的单电平单元中,若发生数据滞留,则存储单元存储的数据有时从0变为1。另外,在单电平单元中,若发生读出干扰、写入干扰或单元间耦合效应,则存储单元存储的数据有时从1变为0。

此时,按NAND闪速存储器特有的一个错误要因,能够将错误位的反 转方向确定为一个方向。因而,通过指定NAND闪速存储器特有的一个错误要因,能够在存在错误的全部的错误位位置e0~e6处将错误位的反转方向确定为一个方向。并且,在各错误位位置e0~e6处无法纠错的数据C1′、C2′、C4′中仅有一个取错误位的反转方向的值的数据的情况下,能够推定在该错误位位置e0~e6处该一个数据存在错误。并且,通过进行数据C1′、C2′、C4′中的任一个数据的各错误位位置e0~e6处的位反转,能够临时恢复无法纠错的数据C1′、C2′、C4′。并且,通过对临时恢复的数据再次进行纠错,能够判断该临时恢复是否正确。

例如,如图4(a)所示,设数据C1′=00011101、C2′=11100011、C4′=01010111。在各数据C1′、C2′、C4′中,将真正的错误位位置用阴影表示。这里,例如,在错误位位置e0,由于E=1,因此知道多个数据C1′、C2′、C4′中的任意一个以上存在错误,但是不知道哪个数据C1′、C2′、C4′存在错误。这里,设为错误位位置处的位反转是由数据滞留引起的。对于数据滞留,单电平单元存储的数据从0变为1。因而,能够视为在各数据C1′、C2′、C4′的取0值的位位置没有错误。因而,例如,在错误位位置e0,从数据C1′、C2′、C4′中搜索取1值的数据。此时,在错误位位置e0,取1值的数据只有一个的情况下,能够判断为在该一个数据的错误位位置e0存在错误。即,如图4(b)所示,因为在错误位位置e0处取1值的数据仅为C2′,所以能够判断为在数据C2′的错误位位置e0存在错误。同样,因为在错误位位置e2处取1值的数据仅为C2′,所以能够判断为在数据C2′的错误位位置e2存在错误。同样,因为在错误位位置e4处取1值的数据仅为C1′,所以能够判断为在数据C1′的错误位位置e4存在错误。将能够唯一判断为存在错误的数据的位位置用○标记表示。

另一方面,例如,因为在错误位位置e1处取1值的数据为C2′、C4′,所以无法判定哪个数据C2′、C4′存在错误。

然后,如图4(c)所示,若发现数据C1′、C2′、C4′中的仅任一个取1值的错误位位置e0、e2、e4,则通过在该错误位位置e0、e2、e4处使成为1的值反转为0,生成数据C1″、C2″。这里,通过将1反转为0,能够 将由数据滞留引起的位反转恢复如初。然后,例如,对数据C2″进行纠错。此时,如果数据C2″的错误位数被控制在可纠正范围内,则能够恢复数据C2。这里,如图4(d)所示,设为通过数据C2″的纠错恢复了数据C2=01000000。此时,在错误位位置e1处取1值的数据仅为C4′,能够判断为在数据C4′的错误位位置e1存在错误。然后,在该错误位位置e1处将成为1的值反转为0,能够进行纠错。然后,若此时的错误位数被控制在可纠正范围内,则能够恢复数据C4。通过反复进行以上的处理,最终能够恢复全部的数据。

由此,在由数据滞留引起的错误的情况下,通过使各错误位位置e0~e6处的值从1反转为0,能够将错误位的位反转确定为一个方向来进行临时恢复。因而,能够高效地进行错误位的推定,提高能够恢复数据的可能性。

另一方面,在包括N(N是2以上的整数)位的M(M是2以上的整数)个数据中,在错误位位置为P(P是2以上且N以下的整数)个的情况下,若使错误位的位反转随机发生来确定临时恢复后的数据,则按各数据,存在2的P次方个组合。并且,此时为了通过纠错来判断临时恢复的数据是否正确,需要对这些组合进行纠错运算,纠错的运算次数变得巨大。即,在恢复无法纠错的多个数据的情况下,即使能够通过XOR运算求出错误位候选,若无法假定错误位的位反转的方向,则位反转的组合会发散,难以恢复无法纠错的多个数据。

另外,图4(c)中,说明了在数据C1′、C2′、C4′中的仅任一个取1值的错误位位置e0、e2、e4将成为1的值反转为0,并进行纠错的方法。作为在各错误位位置e0~e6中数据C1′、C2′、C4′中的仅任一个存在错误,可以选择反转位,也可以使多个数据或全部的数据的位进行反转。例如,在由数据滞留引起的错误的情况下,也可以使在各错误位位置e0~e6成为1的值全部反转为0后进行纠错。此时,由于数据滞留是NAND存储器特有的错误要因,所以也有时能够高概率地选择实际因错误而反转的位,能够提高可通过再次纠错而恢复的可能性。

另外,上述实施方式中,说明对由纠错码进行编码前的数据C0~C5、 X0进行XOR运算的方法,但是,对于由纠错码进行编码后的数据,也可以也包含纠错码的编码所使用的冗余数据来进行XOR运算。在该情况下,需要对纠错的冗余部分的XOR数据进行存储的存储器,但是可以不需要XOR数据的纠错编码。

图5是表示存储单元的存储状态被4值化时的阈值分布的一例的图。

图5中,存储4值时的电平最低的阈值分布设为E,电平第3高的阈值分布设为A,电平第2高的阈值分布设为B,电平最高的阈值分布设为C。这些阈值分布E、A~C可以分别与2位的数据“11”、“10”、“01”、“00”对应。此时,数据滞留在阈值Vth减少的方向上使阈值分布变化。因而,若发生数据滞留,则阈值分布从C向B变化,或者从B向A变化。其结果是,在单电平单元中,由数据滞留使0变为1,而在多电平单元中,无法特定由数据滞留使0变为1还是使1变为0。因而,在多电平单元中,根据与伴随存储单元保持的电荷的增减的阈值偏移相应的位的变化方式,能够推定错误位的反转方向。

另外,在图5的例子中,以存储单元的存储状态被4值化的情况为例,但是,同样也可以适用于存储单元的存储状态按3值以上被多值化的情况。

(第2实施方式)

图6是表示第2实施方式所涉及的数据恢复电路的概略构成的框图。

图6中,数据恢复电路1设有复用器11、14、17、数据存储器12、16、纠错部13、XOR运算部15、数据管理信息18、错误要因推定部19、错误位位置推定部20及错误临时判定部21。另外,数据恢复电路1可以由硬件构成,也可以由固件构成。数据存储器12存储NAND存储器2记录的纠错前的数据。复用器11选择从NAND存储器2读出的数据和数据存储器12存储的数据中的某一方并输出。纠错部13执行从复用器11输出的数据的纠错。该纠错例如可以使用RS码或LDPC码等纠错码。复用器14选择从纠错部13输出的没有错误的数据和NAND存储器2存储的纠错前的数据中的某一方并输出。XOR运算部15执行从复用器14输出的数据的XOR运算。数据存储器16存储XOR运算部15的XOR运算结果。数据 管理信息18管理NAND存储器2记录的数据。例如,数据管理信息18可以按页面单位管理NAND存储器2记录的数据的记录后的经过时间。错误要因推定部19根据NAND存储器2特有的错误要因,推定错误位的反转方向。错误位位置推定部20根据XOR运算部15的XOR运算结果,推定错误位位置。错误临时判定部21向与由错误要因推定部19推定的反转方向相反的方向进行由错误位位置推定部20推定的错误位位置处的位反转。

数据恢复电路1经由NANDI/F控制部4与NAND存储器2连接,经由主机I/F控制部5与主机3连接。NANDI/F控制部4控制与NAND存储器2的数据的收发。主机I/F控制部5控制与主机3的数据的收发。

并且,在NANDI/F控制部4中,将从NAND存储器2按页面单位读出的数据变换为扇区单位,发送到复用器11,并存储在数据存储器12中。然后,通过复用器11选择从NAND存储器2读出的数据和从数据存储器12读出的数据中的某一方而发送到纠错部13。

然后,在纠错部13中,对从复用器11输出的数据进行纠错,在没有无法纠错的数据的情况下,没有错误的数据经由复用器17按扇区单位发送到主机3。

另外,在纠错部13中,在无法纠错的数据仅为一个的情况下,将除了该无法纠错的数据以外的没有错误的数据经由复用器14发送到XOR运算部15。然后,在XOR运算部15中,通过进行它们的XOR运算,无法纠错的一个数据被恢复,存储在数据存储器16中。然后,从纠错部13输出的没有错误的数据和从数据存储器16读出的没有错误的数据经由复用器17按扇区单位发送到主机3。

另外,在纠错部13中,在无法纠错的数据为多个的情况下,没有错误的数据从纠错部13发送到复用器17,并且无法纠错的纠正前的数据从数据存储器12发送到复用器14。然后,经由复用器14,这些数据被发送到XOR运算部15。然后,在XOR运算部15中,通过进行从复用器14送来的数据的XOR运算,检测错误位位置,存储到数据存储器16。然后,在错误要因推定部19中,根据数据管理信息18来推定错误位的反转方向, 将该推定结果发送到错误临时判定部21。此时,在本次从NAND存储器2读出的数据的记录时起的经过时间超过预定值的情况下,能够假定是数据滞留引起的错误。对于该错误,能够假定为单电平单元的数据从0变为1。或者,在将本次从NAND存储器2读出的页面记录在NAND存储器2之后存在与该页面相邻的页面的读出或写入的情况下,能够假定是读出干扰、写入干扰或单元间耦合效应引起的错误。对于该错误,能够假定为单电平单元的数据从1变为0。另外,在错误位位置推定部20中,根据数据存储器16存储的XOR运算结果推定错误位位置,将该推定结果发送到错误临时判定部21。然后,在错误临时判定部21中,向与由错误要因推定部19推定的反转方向相反的方向进行由错误位位置推定部20推定的错误位位置处的位反转,存储到数据存储器12。然后,通过将数据存储器12存储的数据经由复用器11发送到纠错部13,再次进行上次无法纠错的数据的纠错。然后,通过反复以上的处理直到本次从NAND存储器2读出的全部数据的错误消失为止,能够恢复本次从NAND存储器2读出的全部数据。

图7是表示第2实施方式所涉及的数据恢复电路的工作的流程图。

在图7中,从NAND存储器2读出数据(S1)。接着,判断本次读出的数据是否为纠错对象(S2)。然后,在是纠错对象的情况下(S2=是),进行纠错(S3),在不是纠错对象的情况下(S2=否),跳过纠错。

接着,判断不是纠错对象的数据和被纠错的数据是否为XOR运算对象(S4)。然后,在是XOR运算对象的情况下(S4=是),进行XOR运算(S5),在不是XOR运算对象的情况下(S4=否),跳过XOR运算。

接着,判断是否从NAND存储器2接着读出数据(S6)。然后,在是接着读出的情况下(S6=是),反复S1到S6的处理,在不是接着读出的情况下(S6=否),推定错误位置及错误要因(S7)。另外,接着读出可以按页面单位反复进行,直到按扇区单位获得纠错所需要的数据为止。

接着,在根据错误位置及错误要因的推定结果进行了错误临时判定之后(S8),再次进行纠错(S9)。接着,判断是否能够进行错误临时判定后的数据的纠错(S10)。然后,在能够纠错的情况下(S10=是),结束 处理,在不能纠错的情况下(S10=否),判断是否重试(S11)。然后,在重试的情况下(S11=是),反复S7到S11的处理,在不重试的情况下(S11=否),处理结束。

(第3实施方式)

图8是表示第3实施方式所涉及的半导体存储装置的概略构成的框图。

在图8中,在固态驱动器(SSD)30设有数据保存用的NAND存储器32、检测固态驱动器30内部的温度的温度传感器34、状态显示用的发光二极管35及控制它们的控制器31。在控制器31设有电路控制用总线B1、B2及数据存取用总线B3。并且,在电路控制用总线B2上连接有控制控制器31整体的处理器41。另外,在电路控制用总线B2上经由ROM控制器44连接有存储了各管理程序(FW)的引导用程序的引导ROM43。

另外,在电路控制用总线B2上连接有接受通电(power on)/停机(off reset)信号SP并将复位信号CK及时钟信号RS供给到各部的时钟控制器42。

另外,在电路控制用总线B2上连接有电路控制用总线B1。并且,在电路控制用总线B1上,经由接口IF3连接有接受来自温度传感器34的数据的I2C电路45、经由接口IF4连接有向发光二极管35供给状态显示用信号的并行IO电路46、经由RS232C接口IF2连接有与调试用设备36通信的串行IO电路47。

另外,在数据存取用总线B3和电路控制用总线B2这两方,连接有控制ATA接口IF1的ATA接口控制器48、进行NAND存储器32的读写数据的纠错的ECC电路49、进行NAND存储器32的读写删除的控制的NAND控制器51、进行DRAM54的读写删除的控制的DRAM控制器50连接。在DRAM控制器50连接有数据传送用或作业区域用的DRAM54。

这里,ATA接口控制器48用于经由ATA接口IF1与主机33的数据收发。

另外,在数据存取用总线B3上经由SRAM控制器52连接有用作数据作业区域的SRAM53。

另外,在NAND控制器51设有用于相对于NAND存储器32收发数据的NAND接口63、NAND存储器32与DRAM54之间的DMA传送控制用的DMA控制器61。另外,在NAND控制器51设有数据恢复电路64。在数据恢复电路64设有进行NAND存储器32的读写数据的纠错的ECC电路62。数据恢复电路64可以构成为与图6的数据恢复电路1同样。此时,作为图6的纠错部13,可以使用ECC电路62。另外,作为图6的数据存储器12、16,也可以使用DRAM54。另外,图6的数据管理信息18可以存储在NAND存储器32中。

图9是表示图6的数据管理信息的一例的图。

在图9中,数据管理信息18可以按页面单位具有针对NAND存储器32的数据的读出时刻及写入时刻。并且,根据本次从NAND存储器32读出的页面的读出时刻及写入时刻,能够判断从向NAND存储器32的记录起到读出为止的经过时间。并且,在从向NAND存储器32的记录起到读出为止的经过时间超过预定值的情况下,能够假定由数据滞留引起的错误。另外,根据本次从NAND存储器32读出的页面的读出时刻和与该页面相邻的页面的读出时刻或写入时刻,能够假定由读出干扰、写入干扰或单元间耦合效应引起的错误。

返回图8,若向时钟控制器42供给通电/停机信号SP,则时钟控制器42将复位信号CK及时钟信号RS供给到各部。然后,ROM控制器44从引导ROM43读出引导用程序,向处理器41传送。然后,处理器41从NAND存储器32向SRAM53加载各管理程序。然后,NAND控制器51按照加载到SRAM53的管理程序,能够访问NAND存储器32,并进行NAND存储器32的读写删除的控制。这里,在ECC电路62中,进行从NAND存储器32读出的数据的纠错。此时,在无法纠错的数据为多个的情况下,从NAND存储器32读出数据管理信息18,提供给错误要因推定部19。然后,从NAND存储器32读出的数据中的无法通过ECC电路62纠错的多个数据,通过数据恢复电路64进行恢复。

另外,在图8中,示出了在NAND控制器51设有数据恢复电路64的 构成,但是,也可以通过处理器41实现数据恢复电路64的处理。

另外,上述实施方式中,说明了对固态驱动器30适用数据恢复电路的构成,但是,也可以向SD卡或USB存储器等适用数据恢复电路。数据恢复电路可以适用于搭载NAND闪速存储器的所有产品。

说明了本发明的几个实施方式,但是这些实施方式是作为例子而举出的,没有限定发明范围的意图。这些新的实施方式能够以其他的各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含于发明的范围或要旨内,并且包含于权利要求所记载的发明及其等同的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1