半导体存储装置及其控制方法和错误纠正系统的制作方法

文档序号:6479641阅读:129来源:国知局
专利名称:半导体存储装置及其控制方法和错误纠正系统的制作方法
技术领域
本发明涉及半导体存储装置(semiconductor storage device)、控制该半导体存 储装置的方法、以及错误纠正系统,更具体地,本发明涉及包括纠正以非易失方式存储信息 的半导体存储器(semiconductor memory)的错误的错误纠正电路的半导体存储装置及其 控制方法和错误纠正系统。
背景技术
近来,存在广为人知的半导体存储器装置,例如依靠保持的电荷量存储信息的快 闪存储器。用于通过设置电荷量的多个阈值来存储两比特或更多比特信息的多值存储器技 术也得到发展。在半导体存储器装置中,电荷随着时间的流逝放电,因此,如果电荷被放电得超过 阈值,则当读取信息时可能发生错误。具体来说,多值类型的存储器装置在阈值之间一般具 有较窄的间隔,这导致发生错误的可能性增大。No. 2007-87464号日本已公开专利申请公开了一种使用半导体存储器装置的存储 装置,其包括正确地恢复不正确的信息的错误纠正机制。存在这样一种情况,其中在由多个比特组成的数据中包括很多由自从上次记录数 据以来时间的流逝导致的错误,并且即使在这种情况下,一般要求具有高错误纠正能力的 纠正机制来纠正错误。具有高错误纠正能力的纠正机制要求大的电路规模、大的功耗和较 长的处理时间。一般来说,提供具有高错误纠正能力的纠正机制来保证即使自从上次存储 信息以来已过去了较长时间也把不正确的信息恢复为正确的信息。高性能错误纠正机制相 同地可应用于存储装置而与自从上次存储信息以来流逝的时间的长度无关。因此,即使要在自从存储信息以来只经过了较短的一段时间以后读取信息时也使 用高性能错误纠正机制。因此,即使要被读取的信息没有包含这么多错误,高性能错误纠正 机制也被很浪费地使用了。这导致了存储装置的功耗浪费。此外,为了增加错误纠正能力,一般要求增加作为错误纠正的对象的信息。使用例 如4千字节数据(其中多个512字节数据相互连接作为一个单元)产生错误纠正码,而非 针对例如512字节数据产生错误纠正码。这种技术使错误纠正能力能被提高。但是,这种 技术导致尽管希望读取512字节数据却读取了 4千字节数据。这还迫使存储装置浪费地消 耗电功率。本发明的目的是提供一种能够减少功耗和电路规模而不损害错误纠正能力的半 导体存储装置及其控制方法和错误纠正系统。

发明内容
为了解决所述问题并实现所述目的,根据本发明的一个方面的半导体存储装置包 括临时存储单元,其能够在其中存储按矩阵排列、每一个均由多个数据形成的多个数据 块;错误检测码产生单元,其产生错误检测码来针对每一个数据块检测错误;第一错误纠正码产生单元,其产生第一错误纠正码来针对由数据块形成的每一个第一单元数据纠正错 误;第二错误纠正码产生单元,其产生第二错误纠正码来针对由按列方向排列的数据块形 成的每一个第二单元数据纠正错误;第三错误纠正码产生单元,其产生第三错误纠正码来 针对由按行方向排列的数据块形成的每一个第三单元数据纠正错误;和非易失半导体存储 器,其能够在其中存储数据块、产生的错误检测码和产生的第一到第三错误纠正码。一种根据本发明的另一方面的控制半导体存储装置的方法,包括主机装置;和 根据主机装置的指令执行从/向非易失存储器的数据读/写的半导体存储装置,其中,所述 半导体存储装置包括临时存储单元,其把从主机装置转移的数据划分为每一个均由多个 数据形成的多个数据块,并在其中按矩阵存储所述数据块;错误检测码产生单元,其产生错 误检测码来针对每一个数据块检测错误;第一错误纠正码产生单元,其产生第一错误纠正 码来针对由数据块形成的每一个第一单元数据纠正错误;第二错误纠正码产生单元,其产 生第二错误纠正码来针对由按列方向排列的数据块形成的每一个第二单元数据纠正错误; 第三错误纠正码产生单元,其产生第三错误纠正码来针对由按行方向排列的数据块形成的 每一个第三单元数据纠正错误;非易失半导体存储器,其能够在其中存储数据块、产生的 错误检测码和产生的第一到第三错误纠正码;第一错误纠正单元,其在每一个数据块上使 用与其对应的第一错误纠正码执行第一错误纠正;第一错误检测单元,其在经过第一错误 纠正的块中使用与其对应的错误检测码检测错误;第二错误纠正单元,其在经过第一错误 纠正的块中由第一错误检测单元检测到的错误上使用与其对应的第二错误纠正码执行第 二错误纠正;和第二错误检测单元,其在经过第二错误纠正的块中使用与其对应的错误检 测码检测错误;和传送单元,其把经过第二错误纠正的数据和第二错误检测单元检测的结 果传送到主机装置,并且,主机装置包括第三错误纠正单元,其在从半导体存储装置接收到 的、经过第二错误纠正的块中由第二错误检测单元检测到的错误上使用与其对应的第三错 误纠正码执行第三错误纠正。


图1是固态驱动器(SSD)的结构例子的框图;图2是NAND存储器芯片中所包含的一个块的结构例子的电路图;图3是用于说明错误纠正码(ECC)电路中的错误纠正原理的概要的示意图;图4是ECC电路中的编码系统的主要部分的框图;图5是存储在DRAM中的数据的格式的例子的示意图;图6是转移到NAND存储器的数据的格式的示意图;图7是用于说明ECC电路的错误检测码产生操作和错误纠正码产生操作的示意 图;图8是从图7继续的示意图;图9是从图8继续的示意图;图10是ECC电路中的解码系统的主要部分的框图;图11是用于说明第一错误纠正之后的错误检测的示意图;图12是第一错误信息的例子的示意图;图13是用于说明第二错误纠正之后的错误检测的示意6
图14是第二错误信息的例子的示意图;图15是在由第二 ECC纠正单元执行过第一轮错误纠正以后块数据的示意图;图16是在由第三ECC纠正单元执行过第一轮错误纠正以后块数据的示意图;图17是在由第二 ECC纠正单元执行过第二轮错误纠正以后块数据的示意图;图18是在由第三ECC纠正单元执行过第二轮错误纠正以后块数据的示意图;图19是从写开始经过的时间与所需的纠正能力之间的关系的示意图;图20是用于说明根据本发明的第二实施例的错误纠正的原理的示意图;图21是根据第二实施例的SSD和主机装置的结构的示意图;图22是根据第二实施例的ECC电路中的解码系统的主要部分的框图。
具体实施例方式下面将参考附图详细说明本发明的示范性实施例。应该注意,本发明不局限于这 些实施例。此外,下列实施例中的部件包括本领域技术人员可以想到的那些,或者包括大致 相同的部件。当错误纠正编码/解码被施加于具有缺陷比特的存储器(例如快闪存储器)时, 本发明的第一实施例通过执行三种类型的具有不同错误纠正能力的纠正编码,允许减小功 耗和电路规模。图1是固态驱动器(SSD) 100的结构例子的框图。SSD 100通过例如先进技术附件 (ATA)接口(I/F) (ATA/IF)2的存储器连接接口连接到例如个人计算机或者中央处理单元 (CPU)核的主机装置(主机)1,所以SSD 100起到主机装置1的外部存储器的作用。SSD100 可以通过例如RS232C接口(RS232C I/F)的通信接口 3与调试装置200执行数据传送/接 收。SSD 100包括作为非易失存储器的NAND快闪存储器(此后称为“NAND存储器”)10、作 为控制器的驱动控制电路4、作为易失存储器的动态随机访问存储器(DRAM) 20、电源电路5 和用于状态指示的发光二极管(LED)6。电源电路5从由设置在主机装置1侧中的电源电路提供的外部直流电源产生内部 直流电源的多个不同电压,并把这些电压提供给SSD100中的电路。此外,电源电路5检测 外部电源的上升沿或者下降沿,产生加电复位信号或者关机复位信号,并把信号提供给驱 动控制电路4。在这种情况下,NAND存储器10包括执行四个并行操作的四个并行操作元件IOa 到10d,并且每一个并行操作元件均包括两个NAND存储器包(memory package)。每一个 NAND存储器包由多个堆叠的NAND存储器芯片形成(例如每芯片2吉字节(GB))。在图1 中,NAND存储器包由四个堆叠的NAND存储器芯片形成,因此,NAND存储器10具有64吉字 节的容量。如果NAND存储器包由8个堆叠的NAND存储器芯片形成,则NAND存储器10具 有128吉字节的容量。DRAM 20起到主机装置1和NAND存储器10之间的数据转移高速缓存的作用,并且 也起到用于工作区域的存储器的作用。驱动控制电路4控制主机装置1和NAND存储器10之间通过DRAM 20的数据转 移,并且也控制SSD 100中的部件。驱动控制电路4具有以下功能把状态指示信号提供给 LED 6、从电源电路5接收加电/关机复位信号,并把复位信号和时钟信号提供给自己的电路和SSD 100中的部件。NAND存储器芯片被配置成排列多个块,每一个块均为数据删除的单元。图2是 NAND存储器芯片中所包含的一个块的结构例子的电路图。该块包括(m+1)个沿着X方向 顺序排列的NAND串(其中m:零或更大的整数)。分别被包含在(m+1)个NAND串中的选 择晶体管STl在其漏极被连接到位线BLO到BLm,并分别在其栅极共同连接到选择栅极线 SGD0选择晶体管ST2分别在其源极共同连接到源极线SL,并在其栅极共同连接到选择栅极 线 SGS。存储器单元晶体管MT由包括在半导体衬底上形成的叠栅结构的金属氧化物半导 体场效应晶体管(MOSFET)形成。叠栅结构具有在半导体衬底上通过栅极绝缘薄膜形成的 电荷存储层(浮栅电极)和在所述电荷存储层上通过栅极间绝缘薄膜形成的控制栅电极。 存储器单元晶体管MT导致阈值电压根据存储在浮栅电极中的电子数量变化,并根据阈值 电压的不同在其中存储数据。存储器单元晶体管MT可以被配置成存储一个比特,或者可以 被配置成存储多个值(2比特或者更多数据)。在NAND串中,(n+1)个存储器单元晶体管MT被在选择晶体管STl的源极和选择 晶体管ST2的漏极之间排列,使得其电流路径被串联连接。更具体地,多个存储器单元晶体 管MT被沿Y方向以使扩散区域(源极区域或者漏极区域)由相邻晶体管共享的方式串联。控制栅电极按从位置最靠近选择晶体管STl的存储器单元晶体管MT开始的顺序 依次连接到字线WLO到WLn。因此,连接到字线WLO的存储器单元晶体管MT的漏极被连接 到选择晶体管STl的源极,而连接到字线WLn的存储器单元晶体管MT的源极被连接到选择 晶体管ST2的漏极。块的NAND串中的存储器单元晶体管MT的控制栅电极共同连接到字线WLO到WLn 中的每一个。即,在块的同一行中的存储器单元晶体管MT的控制栅电极被连接到相同的字 线WL。连接到相同字线WL的(m+1)个存储器单元晶体管MT被作为一个页面处理,并且数 据的写和读被针对每一个页面执行。位线BLO到BLm中的每一个中的选择晶体管STl的漏极共同连接到另一个块。即, 多个块的同一列中的NAND串被连接到相同的位线BL。如图1中所示,在NAND存储器10中,四个并行操作元件(NAND包)IOa到IOd通 过四个通道(chO到ch3)并联连接到驱动控制电路4,所述每一个通道具有8比特。基于 四个并行操作元件IOa到IOd被单独操作还是并行操作,并且基于这两者之一与是否使用 NAND存储器10的双倍速模式的组合,提供了下列三种类型的访问方式(1)8比特正常模式操作一个通道以8比特为单元来读/写数据。数据转移的尺寸单元是页面尺寸(4 千字节)。(2)32比特正常模式并行操作四个通道以32比特为单元来读/写数据。数据转移的尺寸单元是页面 尺寸X4(16千字节)。(3)32比特双倍速模式并行操作四个通道,此外使用NAND存储器10的双倍速模式来读/写数据。数据 转移的尺寸单元是页面尺寸X4X2(32千字节)。
在其中四个通道被并行操作的32比特正常模式或者32比特双倍速模式中,并行 操作的四个或八个块被确定为NAND存储器10的删除的单元,并且并行操作的四个或八个 页面被确定为向NAND存储器10写的单元和从NAND存储器10读的单元。驱动控制电路4包括控制器41、错误纠正码(ECC)电路42和NAND I/F 43。控制器41通过ATA接口 2与主机装置1执行数据传送/接收,并且也执行对DRAM 20的访问控制。NAND I/F 43与NAND存储器10的NAND包IOa到IOd中的每一个执行接口处理 (或者执行向/从NAND存储器10的NAND包IOa到IOd中的每一个的输入/输出控制(ctrl I/O))。ECC电路42为要被写到NAND存储器10的数据产生错误检测码和错误纠正码。ECC 电路42也在从NAND存储器10读取的数据上执行错误检测和错误纠正。下面说明如上配置的SSD 100的操作的概述。当被请求写入的数据(写数据)从 主机装置1提供到SSD 100时,控制器41把写数据暂时存储在DRAM 20中。控制器41通 过每一个预定单元把存储的写数据提供给ECC电路42。ECC电路42为写数据产生错误纠 正码和错误检测码。NAND I/F 43把添加了错误纠正码和错误检测码的写数据写到NAND存 储器10。在SSD 100中,当从主机装置1输入数据读请求时,NAND I/F 43读取被请求读取 的数据(读数据),并且也读取被添加到所述数据的错误纠正码和错误检测码,并把带有所 述码的数据提供给ECC电路42。ECC电路42在读数据上执行错误检测和错误纠正。控制 器41把经过错误纠正的数据存储在DRAM 20中,然后把数据转移到主机装置1。下面说明ECC电路42的基本操作过程。ECC电路42在要被写到NAND存储器10 的数据上执行具有不同错误纠正能力的三种类型的错误编码,从而允许减少功耗和电路规 模。使用第一错误纠正码(图6中的ECC 1)以数据块D为基础执行错误纠正。使用第二 错误纠正码(图6中的ECC 2)执行逐列的错误纠正,列由多个数据块D形成。使用第三错 误纠正码(图6中的RS)来执行逐行的错误纠正,行由多个数据块D形成。这三者的错误 纠正能力的水平按如下的升序提供第一错误纠正码〈第二错误纠正码〈第三错误纠正码。图3是用于说明ECC电路42中的错误纠正的原理的概要的示意图。图3表示从 NAND存储器10读取的数据,并且每一个均由多个数据形成的数据块D被按矩阵排列。阴影 区域代表包含错误数据的错误数据块。首先,以数据块D为基础执行错误纠正(第一错误 纠正)(A)。接着,在其中错误不能被纠正的数据块D上执行逐列的错误纠正(第一轮第二 错误纠正)(B)。进一步,在其中错误不能被纠正的数据块D上执行逐行的错误纠正(第一 轮第三错误纠正)(C)。在其中错误不能被纠正的数据块D上再次执行逐列的错误纠正(第 二轮第二错误纠正)(D)。进一步,在其中错误不能被纠正的数据块D上执行逐行的错误纠 正(第二轮第三错误纠正)(E)。利用这些操作,没有错误的数据被解码(F)。如上面所说明的那样,在第一实施例中,首先以数据块为基础执行错误纠正(第 一错误纠正)。如果存在其中错误不能被纠正的任何数据块,则逐列的错误纠正(第二错误 纠正)和逐行的错误纠正(第三错误纠正)被交替重复,直到错误被消除,并且没有错误的 数据被解码为止。图4是ECC电路42中的编码系统的主要部分的框图。图5是当要从主机装置1转移的数据被存储在DRAM 20中时的格式的例子的示意图。图6是转移到NAND存储器10 的数据的格式的示意图。如图4中所示,ECC电路42包括八个错误检测码产生器50_1到50_8 (错误检测 码产生单元)、八个第一 ECC产生器51-1到51-8 (第一错误纠正码产生单元)、第二 ECC产 生器52 (第二错误纠正码产生单元)和八个第三ECC产生器53-1到53-8 (第三错误纠正 码产生单元)。错误检测码产生器50-1到50-8 (或者它们可以被表示为错误检测码产生器50) 中的每一个产生错误检测码以便在写数据的每一个数据块D中检测错误。数据块D的大小 是例如512字节。可以使用循环冗余校验和(CRC)-32、CRC_16等作为错误检测码。第一实施例使用 CRC-32,并且CRC-32(此后称为“CRC”)的大小被设置为4字节。任何公知的装置可以被用 作错误检测码产生器50,因此,省略其详细说明。第一 ECC产生器51-1到51_8 (或者,它们可以被表示为第一错误检测码产生器 51)中的每一个产生第一错误纠正码以便纠正由数据块D和对应的错误检测码形成的每一 个第一单元数据中的错误。可以使用例如Hamming 码和 BCH 码(Bose-Chaudhuri-Hocquenghem 码)的错误纠 正码作为第一错误纠正码以便实现按一个比特或者按多个比特的错误纠正。第一实施例使 用Hamming码作为第一错误纠正码,并且Hamming码的大小被设置为4字节。任何公知的 装置可被用作第一 ECC产生器51,因此,省略其详细说明。第二 ECC产生器52为每一个第二单元数据UDa产生第二错误纠正码,第二单元数 据UDa由按列方向排列的多个第一单元数据形成。根据期望实现的错误纠正能力和要使用 的错误纠正码来决定作为产生第二错误纠正码的单元的写数据的数量。使用与第一错误纠正码相比具有更高的错误纠正能力的错误纠正码作为第二错 误纠正码,并且使用允许多个比特的错误纠正的错误纠正码。具体来说,可以使用BCH码和 低密度奇偶校验(LDPC)码等等。第一实施例被配置成为由按列方向排列的八个第一单元 数据形成的每一个第二单元数据UDa产生BCH码,并把BCH码的大小设置为24字节。任何 公知的装置可被用作第二 ECC产生器52,因此,省略其详细说明。 第三ECC产生器53-1到53_8 (或者,它们可以被表示为第三ECC产生器53)中的 每一个为每一个第三单元数据UDb产生第三错误纠正码,第三单元数据UDb由按行方向排 列的多个数据块D形成。根据期望实现的错误纠正能力和要使用的错误纠正码来决定作为 产生第三错误纠正码的单元的数据块D的数量。使用与使用第二错误纠正码的错误纠正相比允许具有更高能力的错误纠正的 错误纠正码作为第三错误纠正码,其执行多个比特的错误纠正。更具体地,可以使用 Reed-Solomon(RS)码等作为第三错误纠正码。第一实施例被配置成为由1024个第一单元 数据D形成的每一个第三单元数据UDb产生RS码,并把RS码的大小设置为512字节,和数 据块D相同。第三ECC产生器53例如为每一个第三单元数据UDb产生四个RS码。因此, 能够纠正组成第三单元数据UDb的1024个数据块D中的四个写数据中的错误。任何公知 的装置可被用作第三ECC产生器53,因此,省略其详细说明。如图5中所示,当从主机装置1接收写数据D(l,l)到D(8,1024)时,控制器41在DRAM 20中按列方向顺序地存储八个数据块D(l,ρ)到D(8,ρ)作为第一 ECC产生器51的 处理的单元,并在DRAM 20中存储1024个第一单元数据D (q,1)到D (q,1024)作为第三ECC 产生器53的处理的单元,并顺序地把所存储的数据逐列地转移到ECC电路42。其中ρ是1 到1024的任意数字,并且q是1到8的任意数字。对应于按列方向排列的八个数据块D (1,ρ)到D(8,ρ),分别提供八个错误检测码 产生器50-1到50-8。八个错误检测码产生器50-1到50-8为八个数据块D(1,ρ)到D(8, P)分别产生八个CRC。使用所述八个CRC来检测与其对应的八个数据块D(1,ρ)到D(8,p) 中的错误。所述八个CRC被分别输出到第一 ECC产生器51-1到51-8和第二 ECC产生器 52。注意,错误检测码产生器50-1到50-8分别为按列方向排列的八个RS(l,r)到RS(8, r)产生CRC,其中,r是1到4的任意数字。对应于按列方向排列的八个数据块D(l,p)到D(8,p),分别提供八个第一ECC产生 器51-1到51-8。八个第一 ECC产生器51-1到51_8为每一个第一单元数据产生Hamming 码,或者分别从八个数据块D(l,p)到D(8,p)以及从八个CRC(l,p)到CRC(8,p)产生。八 个Hamming码被分别用于对应的八个单元数据D(l,p)到D(8,p)的第一错误纠正。所述八 个Hamming码被输出到第二 ECC产生器52。第一 ECC产生器51_1到51_8为八个RS (l,r) 到RS (8,r)和按列方向排列的对应的八个CRC分别产生Hamming码,其中r是1到4的任 意数字。第二 ECC产生器52为由按列方向排列的八个第一单元数据形成的每一个第二单 元数据UDa产生一个BCH码,或者为数据块D (1,ρ)到D (8,ρ)和对应的八个CRC (1,ρ)到 CRC (8, ρ)产生一个BCH码。所述BCH码被用于第二单元数据UDa中的错误纠正(排除ECC I(Lp)到ECC 1(8,ρ))。在第一实施例中,由第二单元数据UDa和BCH码形成的数据的大 小对应于一个页面(对NAND存储器10的最小存取单元)。第三ECC产生器53为由按行方向排列的1024个数据块D (q,l)到D (q,1024)形 成的每一个第三单元数据UDb产生四个RS码。对应于存储在DRAM 20中的写数据行,提供 了八个第三ECC产生器53-1到53-8。第三ECC产生器53包括其中存储第三单元数据UDb 的缓冲器。具体来说,第三ECC产生器53-1为由数据D(l,l)到D(l,1024)形成的第三单 元数据UDbl产生四个RS(1,1)到RS(1,4)。对于分别对应于第二到第八行的第三ECC产生 器53-2到53-8也是如此。对于图6中所示的每一个页面,数据块D、CRC、Hamming码、BCH码和RS码被通过 NAND I/F 43转移到NAND存储器10。NAND存储器10按页面的顺序在其中存储这些数据。 例如,当一个存储器块由1028个页面形成时,图6中所示的数据被存储在NAND存储器10 中的一个存储器块中(按8比特正常模式)。但是,在32比特模式(32比特正常模式或者 32比特双倍速模式)中,这些数据被并行写到每一个通道的存储器芯片。下面将参考图4到图9说明数据写操作以后ECC电路42的错误检测码产生操作 和错误纠正码产生操作。首先,参考图5,针对每一个沿列方向的八个数据块D(l,ρ)到D(8,p),控制器41 顺序地把作为要被写到NAND存储器10的对象的数据写到DRAM 20,在其中存储数据块 D(Ll)到D(8,1024),并顺序地把所存储的八个数据块D(l,l)到D(8,1024)逐列分别输出 到错误检测码产生器50-1到50-8、第一 ECC产生器51-1到51_8、第二 ECC产生器52、和第
11三ECC产生器53-1到53-8。然后,如图7中所示,错误检测码产生器50-1到50-8产生分别对应于接收到的八 个数据块D(l,l) IlJD(8,1)的八个错误检测码CRC(1,1)到CRC(8,1)。第一ECC产生器51-1 到51-8从八个写数据D(l,l) IlJ D(8,1)和八个CRC(1,1)到CRC(8,1)分别产生Hamming 码 ECC 1(1,1)到 ECC 1(8,1)。随后,如图8中所示,由八个数据块D(l,l)到D(8,l)和对应的八个错误检测码 CRC(Ll)到CRC(8,1)形成的第二单元数据UDa 1被输出到第二 ECC产生器52。第二 ECC 产生器52使用第二单元数据UDa 1产生BCH码ECC 2来纠正第二单元数据UDa 1中的错 误。BCH码ECC 2被连接到第二单元数据UDa 1的末端以形成页面1 (页面1)。页面1被 存储在NAND存储器10中。图6中所示的用于页面2到页面1024的数据用与上面相同的产生操作产生。页 面2到页面1024被存储在NAND存储器10中。如图9中所示,第三ECC产生器53-1到53_8顺序地把接收到的第一单元数据D (1, P)到D(8,p)逐列地分别存储在缓冲器中,并使用第三单元数据UDbl、UDb 2,...UDb 8来 分别产生四个RS(q,l)到RS (q,4)。更具体地,第三ECC产生器53-1使用第三单元数据UDb 1来产生四个RS(1,1)到RS(1,4)。由第三ECC产生器53-2到53-8执行的RS产生操作与 第三ECC产生器53-1的操作相同。在第一实施例中,第三ECC产生器53-1到53_8相互并 行地执行错误纠正码产生操作。第三ECC产生器53-1到53-8的并行操作允许减少处理时 间。当使用RS码时,使用四个冗余码来一般地获取两个错误位置信息和两个错误纠 正信息,因此,两个错误可以被纠正。但是,在第一实施例中,CRC被单独用来识别数据块D 的错误位置。因此,在第一实施例中,使用四个冗余码可以纠正四个错误。具体来说,能够 在1024个数据块D (1,1) IlJ D (1,1024)中纠正四个错误。随后,错误检测码产生器50-1到50-8为每一个RS(1,1)到RS(8,4)分别产生 CRC α,1025)到CRC (8,1028),与数据块D类似。第一 ECC产生器51-1到51-8分别为每一 个 RS(1,1) IljRS (8,4)和每一个 CRC (1,1025)到 CRC (8,1028)产生 Hamming 码(1,1025)到 (8,1028)。此外,第二 ECC 产生器 52 分别为 RS (1,1) |lj RS (8,4)和对应的 CRC (1,1025)到 CRC(8,1028)产生BCH码ECC 2,并且BCH码ECC 2被分别连接到这些码的末端以形成页面 1025到页面1028。页面1025到页面1028被转移到NAND存储器10,并存储于其中。利用 这些操作,产生了如图6中所示的数据。图10是ECC电路42中的解码系统的主要部分的框图。图11到图19是用于说明 ECC电路42中的数据读取的示意图。如图10中所示,ECC电路42包括八个错误检测单元 60-1到60-8、八个第一 ECC纠正单元61-1到61-8、第二 ECC纠正单元62,以及八个第三 ECC纠正单元63-1到63-8。在这个图中,省略了控制器41和NANDI/F 43以简化说明。在SSD 100中,当从主机装置1输入数据读取请求时,存储在NAND存储器10的一 个存储器块中的块数据(图6中所示的数据)被通过NAND I/F 43(按8比特正常模式) 读取,并且控制器41把读取的块数据存储在DRAM 20中。具体来说,DRAM 20在其中存储图 6中所示的块数据。注意,在32比特模式(32比特正常模式或者32比特双倍速模式)中, 块数据被并行地从通道的存储器芯片读取。
八个第一 ECC纠正单元61-1到61_8 (或者,它们可以被表示为第一 ECC纠正单元 61)被对应于按列方向排列的八个数据块D (1,ρ)到D (8,ρ)和对应的CRC(1,ρ)到CRC (8, P)提供,或者,被对应于行数提供。第一ECC 纠正单元 61-1 到 61-8 使用 Hamming 码 ECC l(l,p)到 ECC 1(8,ρ)分别 在按列方向排列的八个数据块D(l,ρ)到D(8,ρ)和CRC(1, P)到CRC(8, ρ)上执行第一错 误纠正,并在存储在DRAM 20中的数据中更新对应于经过第一错误纠正的数据DC 1_1到DC 1-8(图10)的数据。同样地,第一 ECC纠正单元61-1到61-8分别在RS(1,1)到RS(8,4) 和对应的CRC(1,1025)到CRC(8,1028)上执行第一错误纠正。任何公知的装置可以被用作 第一 ECC纠正单元61,因此省略其详细说明。八个错误检测单元60-1到60-8 (或者,它们可以被表示为错误检测单元60)被对 应于按列方向排列的八个数据块D(l,p)到D(8,p)和对应的CRC(l,p)到CRC(8,p)提供, 或者被对应于行数提供。错误检测单元60-1到60-8分别使用为八个数据块D(l,ρ)到D(8,ρ)产生的八 个CRC(l,p)到CRC(8,p)在第一单元数据D(l,p)到D(8,p)中检测错误。任何公知的装 置可以被用作错误检测单元60,因此省略其详细说明。第二 ECC纠正单元62使用为每一个页面产生的BCH码ECC 2在由八个第一单元 数据D(l,ρ)到D(8,ρ)和对应的八个CRC(1,ρ)到CRC(8,ρ)形成的第二单元数据中执行 第二错误纠正,并在存储在DRAM 20中的数据中更新对应于经过第二错误纠正的数据DC 2 的数据。以和上面相同的方式在页面1025到1028上执行第二错误纠正。对应于按列方向排列的八个第一单元数据D(l,ρ)到D(8,ρ)提供八个第三ECC 纠正单元63-1到63-8 (或者,它们可以被表示为第三ECC纠正单元63)。第三ECC纠正单 元63-1使用四个RS(1,1)到RS(1,4)在由按行方向排列的1024个读数据D(1,1)到D(l, 1024)形成的第三单元数据UDb 1中执行第三错误纠正。同样地,第三ECC纠正单元63-2 到63-8在第三单元数据UDb 2到UDb 8中执行第三错误纠正。任何公知的装置可以被用 作第三ECC纠正单元63,因此省略其详细说明。在第一实施例中,所有的四个Reed-Solomon码RS(1,1)到RS(1,4)都被用于错误 纠正。因此,第三ECC纠正单元63-1可以在1024个读数据D (1,1)到D (1,1024)中恢复四 个读数据。分别对应于第二到第八行的第三ECC纠正单元63-2到63-8也是如此。由第三 ECC纠正单元63-1到63-8纠正的经过第三错误纠正的数据DC 3被转移到DRAM 20,并且 在存储在DRAM 20中的数据中,对应于经过第三错误纠正的数据DC 3的数据被更新。被第一 ECC纠正单元61-1到61_8、第二 ECC纠正单元62和第三ECC纠正单元 63-1到63-8纠正的数据块D(l,l)到D(8,1024)的数据被控制器41转移到主机装置1。下面将参考图11到图19说明数据读取操作后ECC电路42的错误检测操作和错 误纠正操作。在错误纠正操作之前,存储在NAND存储器10的一个存储器块中的块数据(图6 中所示的数据)被转移到DRAM 20(按8比特正常模式)。S卩,DRAM 20在其中存储图6中 所示的块数据。页面1到页面1028的数据被逐页面地(排除BCH码ECC 2)顺序地分别转移到第 一 ECC纠正单元61-1到61-8。第一 ECC纠正单元61-1到61-8使用Hamming码ECC 1(1,
131)到 ECC 1(8,1028)在数据块 D(l,l)到 D (8,1024)和对应的 CRC(1,1)到 CRC(8,1024) 上,以及逐页面地在RS(1,1) IlJ RS(8,4)和对应的CRC(1,1025) |lj CRC(8,1028)上执行第 一错误纠正,并且经过第一错误纠正的数据DCl-I到DC1-8被存储在DRAM 20中。随后,错误检测单元60执行错误检测操作。更具体地,经过第一错误纠正的第一 单元数据D(l,l)到D(8,1024)和对应的CRC(1,1)到CRC(8,1024),以及经过第一错误纠正 的 RS(1,1) IlJ RS(8,4)和对应的 CRC(1,1025)到 CRC(8,1028)被逐页面地从 DRAM 20 分别 转移到错误检测单元60-1到60-8。错误检测单元60-1到60-8使用对应的CRC(1,1)到CRC (8,1028)分别在经过第 一错误纠正的数据块D(l,l)到D(8,1024)和经过第一错误纠正的RS(1,1)到RS(8,4)中 逐页面地检测错误。错误检测单元60-1到60-8逐页面地产生第一错误信息Sl到S8,作 为错误检测结果分别指示在哪个读数据块D和RS码RS中存在错误。第一错误信息Sl到 S8被转移到第二 ECC纠正单元62。如果错误检测单元60-1到60_8分别检测到在数据块D 中存在错误,则被纠正之前的数据块D而非经过第一错误纠正的数据DCl-I到DC1-8被转 移到第二 ECC纠正单元62。这是因为被错误检测单元60-1到60-8检测到其中存在错误 的数据块D不可能被纠正,或者,数据块D包含超出了第一 ECC纠正单元61-1到61-8的纠 正能力的错误,并且由第一 ECC纠正单元61-1到61-8执行的错误纠正导致了施加给数据 块D的额外错误。结果,被纠正之前的数据包含比具有额外错误的数据更少的错误,因此, 被纠正之前的数据被发送到第二 ECC纠正单元62。对于RS(1,1)到RS(8,4)也是如此。图11是用于说明第一错误纠正之后的错误检测的示意图,并且图12是第一错误 信息Sl到S8的例子的示意图。在图11和图12中,如果作为第一错误纠正后错误检测的 结果,存在不具有错误的第一单元数据,则用于该数据的第一错误信息被设置为S = 0,而 如果作为第一错误纠正后错误检测的结果存在具有错误的第一单元数据,则用于该数据的 第一错误信息被设置为S = 1。图11和图12的例子指示在第一单元数据1、4和5中存在 错误。具有错误的第一单元数据是用于第二错误纠正的对象。在第一错误纠正后的第二单元数据UDa 1到UDa 1028和第一错误信息Sl到S8 被逐页面地转移到第二 ECC纠正单元62。第二 ECC纠正单元62通过使用包含在第二单元 数据UDa中的BCH码ECC 2并参考第一错误信息Sl到S8,在作为第二错误纠正的对象的第 一单元数据上执行第二错误纠正。被第二 ECC纠正单元62纠正的经过第二错误纠正的数 据DC 2被转移到DRAM 20,并且存储在DRAM 20中的数据中对应于经过第二错误纠正的数 据DC 2的数据被更新。随后,错误检测单元60-1到60-8执行错误检测操作。更具体地,经过第二错误纠 正的数据块D (1,1)到D (8,1024)和对应的CRC (1,1)到CRC (8,1024),以及经过第二错误纠 正的 RS(1,1) IlJ RS(8,4)和对应的 CRC(1,1025) IljCRC(8,1028)被逐页面地从 DRAM 20 分 别转移到错误检测单元60-1到60-8。错误检测单元60-1到60-8使用对应的CRC(1,1)到CRC(8,1028)分别在经过第 二错误纠正的数据块D(l,l)到D(8,1024)和经过第二错误纠正的RS(1,1)到RS(8,4)中 检测错误。错误检测单元60-1到60-8逐页面地产生第二错误信息Sl到S8,作为错误检测 结果分别指示在哪个第一单元数据和RS码RS中存在错误。第二错误信息Sl到S8被分别 转移到第三ECC纠正单元63-1到63-8。和第一错误纠正的情况类似,如果作为错误检测单
14元60-1到60-8的检测结果有其中存在错误的数据块D,则被纠正之前的数据块D而非经 过第二错误纠正的数据DC 2被分别转移到第三ECC纠正单元63-1到63-8。这是因为具 有被错误检测单元60-1到60-8检测到的错误的数据块D不可能被纠正,或者,数据块D包 括超出了第二 ECC纠正单元62的纠正能力的错误,并且由第二 ECC纠正单元62执行的错 误纠正导致了施加给数据块D的额外错误。结果,被纠正之前的数据包含比具有额外错误 的数据更少的错误,因此,被纠正之前的数据被发送到第三ECC纠正单元63-1到63-8。对 于RS(1,1)到RS(8,4)也是如此。在第一实施例中,错误检测单元60-1到60-8并行地执 行错误检测操作。错误检测单元60-1到60-8的并行操作允许减少处理时间。图13是用于说明在第二错误纠正后的错误检测的示意图,并且图14是第二错误 纠正之后第二错误信息Sl到S8的例子的示意图。在图13和图14中,如果作为第二错误 纠正后错误检测的结果存在不具有错误的第一单元数据,则用于该数据的第二错误信息被 设置为S = 0,而如果作为第二错误纠正后错误检测的结果存在具有错误的块,则用于该块 的第二错误信息被设置为S = 1。图13和图14的例子指示在第一单元数据5中存在错误。 具有错误的第一单元数据是用于第三错误纠正的对象。图15是在由第二 ECC纠正单元62执行的第一轮错误纠正之后的块数据的例子的 示意图。阴影线指示错误检测单元60-1到60-8在其中检测到错误的数据,因为错误不能 被由第二 ECC纠正单元62执行的第一轮错误纠正所纠正。如果作为由第二 ECC纠正单元62执行的第一轮错误纠正的结果在所有的读数据 中不存在错误,则在这个步骤结束错误纠正操作。即,以后说明的第三ECC纠正单元63将 不执行错误纠正。例如,第三ECC纠正单元63通过停止来自电源电路5的电源,或者通过 停止来自时钟电路(未示出)的时钟信号的供给来停止错误纠正操作。结果,当只有很少 的错误时,数据读取时间可被减少。此外,第三ECC纠正单元63不执行错误纠正操作,并且 这允许减少功耗。随后,由第三ECC纠正单元63执行第一轮错误纠正操作。更具体地,由按行方向 排列的1024个数据块D(l,l)到D(l,1024)形成的第三单元数据UDb 1和与其对应产生的 四个RS(1,1)到RS(1,4)被从DRAM 20发送到第三ECC纠正单元63_1。第三ECC纠正单元 63-1使用RS(1,1) IlJ RS(1,4)在数据块D(l,l)到D(l,1024)中执行错误纠正。对于对应 于第二到第八行的第三ECC纠正单元63-2到63-8也是如此。在第一实施例中,第三ECC纠正单元63-1到63-8并行地执行错误纠正操作,并且 其并行操作允许减少处理时间。被第三ECC纠正单元63-1到63-8纠正的经过第三错误纠 正的数据DC 3被转移到DRAM 20。在存储在DRAM 20中的数据中,对应于经过第三错误纠 正的数据DC 3的数据被更新。图16是在由第三ECC纠正单元63执行过第一轮第三错误纠正以后块数据的例子 的示意图。读数据D(l,2)和D(l,6)中的错误被第三ECC纠正单元63-1纠正,如图16中 所示,并且读数据D(8,1)和D(8,1022)中的错误被第三ECC纠正单元63_8纠正。如上面所说明的那样,在由第三ECC纠正单元63执行错误纠正之前,使用错误检 测单元60来识别其中存在错误的读数据的位置。结果,第三ECC纠正单元63仅在其中检 测到错误的读数据上执行错误纠正。这允许减少由第三ECC纠正单元63执行纠正的时间, 并且也减少功耗。
随后,由第二 ECC纠正单元62在页面1到页面1028上执行第二轮的第二错误纠 正。第二错误纠正操作和由第二 ECC纠正单元62执行的第一轮的错误纠正相同。图17是 在由第二 ECC纠正单元62执行过第二轮第二错误纠正之后块数据的例子的示意图。读数 据D(2,1)、D(3,2)和D(2,1022)中的错误被第二 ECC纠正单元62纠正,如图17中所示。此后,错误检测单元60-1到60-8在所有的数据块D和RS码中检测错误。该错误 检测操作和由错误检测单元60-1到60-8执行的第一轮错误检测操作相同。由第三ECC纠 正单元63-1到63-8在第三单元数据UDb 1到UDb 8上分别执行第二轮的第三错误纠正。 第三错误纠正操作和由第三ECC纠正单元63-1到63-8执行的第一轮的错误纠正相同。图18是在由第三ECC纠正单元63执行过第二轮第三错误纠正之后块数据的例 子的示意图。数据块D(2,5)中的错误被第三ECC纠正单元63-2纠正。此外,数据块D(3, 4)、D(3,7)和D(3,1023)中的错误被第三ECC纠正单元63_3纠正。利用这些操作,数据块 D(Ll)到D(8,1024)中的所有错误都被纠正。此后,其中所有错误都被纠正的数据块D(l,l)到D(8,1024)被从DRAM 20输出到
主机装置1。图19是自从写入数据到NAND存储器10所经过的时间和所需的纠正能力之间的 关系的示意图。如图19中所示,如果经过的时间变得更长,则写到NAND存储器10的数据 中的错误的数量增加。错误纠正能力因此与错误数量上的增加相关联地改变。此外,第一 ECC纠正单元61到第三ECC纠正单元63的每一个错误纠正能力被判定,以便不使用过剩 水平或者不足水平的错误纠正能力。更具体地,第一 ECC纠正单元61到第三ECC纠正单元 63的错误纠正能力被判定,以便当经过的时间较短时错误纠正只能由第一 ECC纠正单元61 执行,并且,在经过的时间已经经过预定的时间(当错误数量急剧增加时的时间)后,错误 纠正可以被第一 ECC纠正单元61、第二 ECC纠正单元62和第三ECC纠正单元63执行。如上面所说明的那样,根据第一实施例,能够在读数据上首先使用第一错误纠正 码(Hamming码)执行第一错误纠正,然后在第一错误纠正的结果上使用第二错误纠正码 (BCH码)执行第二错误纠正,并且在第二错误纠正的结果上使用第三错误纠正码(RS码) 进一步执行第三错误纠正。因此,即使第一错误纠正码到第三错误纠正码的错误纠正能力 被降低,也可以保证期望的纠正能力,并且电路规模也可以被减小。使用具有低水平错误纠正能力的第一错误纠正码(Hamming码)、具有中等水平 错误纠正能力的第二错误纠正码(BCH码)以及具有高水平错误纠正能力的第三错误纠正 码(RS码),错误纠正被三重地执行,并且这能够极大地降低高水平错误纠正的解码的频 率。结果,即使不提供硬件,使用软件也能够令人满意地执行错误纠正,这使电路规模得以 减小。当确定在所有读数据中不存在错误时,作为由第一 ECC纠正单元61执行的第一错 误纠正的结果,第二 ECC纠正单元62和第三ECC纠正单元63不执行错误纠正。因此,当只 有很少的错误时,数据读取时间可被减少。更具体地,当只有很少的错误时数据读取时间上 的减少与当存在很多错误时具有高纠正能力的性能相容。此外,通过停止第二 ECC纠正单 元62和第三ECC纠正单元63的操作,功耗可以被降低。此外,使用第二错误纠正码(BCH码)来按列方向在数据上执行错误纠正,而使用 第三错误纠正码(RS码)来按行方向在数据上执行错误纠正。这些纠正允许NAND存储器10的存储器块中所有页面上的错误纠正。而且,第一实施例对于其中因要存储的数据的位 置所致错误概率大大不同的半导体存储器特别有用,因为可以在具有高错误概率的区域上 执行很多次错误纠正。使用错误检测单元60来实现识别其中存在错误的数据的位置,因此,第二 ECC纠 正单元62和第三ECC纠正单元63只须在其中检测到错误的读数据上执行错误纠正。这使 得能够减少第二 ECC纠正单元62和第三ECC纠正单元63的处理时间。此外,因为使用错误检测码(CRC)可以检测其中存在错误的数据的位置,第三ECC 纠正单元63无需执行错误检测。这使得所有RS码(在第一实施例中的四个RS码)能够 用于错误纠正。下面将参考图20到图22说明根据本发明的第二实施例的SSD。第二实施例被配 置成使得SSD 100执行第一和第二错误纠正,而主机装置201而非SSD 100执行具有高水 平错误纠正能力的第三错误纠正。这种配置允许减少SSD 100上的负载,因为几乎所有的 错误都可以被第一和第二错误纠正纠正,而第三错误纠正与其他的错误纠正相比使用得远 远不那么频繁,却要求长的处理时间。图20是用于说明根据第二实施例的错误纠正的原理的示意图。图21是根据第二 实施例的SSD 100和主机装置201的配置的示意图。参考图20,第一错误纠正(A)和第二 错误纠正(B)由SSD 100执行,而第三错误纠正(C)及此后的处理由主机装置201执行。如图21中所示,主机装置201包括使用CRC在每一个数据块D中检测错误的错 误检测单元101、使用BCH码(第二错误纠正码)执行第二错误纠正的第二 ECC纠正单元 102,以及使用RS码(第三错误纠正码)执行第三错误纠正的第三ECC纠正单元103。主机 装置201的CPU执行软件以允许错误检测单元101、第二 ECC纠正单元102和第三ECC纠正 单元103的实施。SSD 100把经过第二错误纠正的数据块D (1,1)到D (8,1024)和对应的CRC(1,1) 到 CRC (8,1024)、RS (1,1)到 RS (8,4)以及对应的 CRC (1,1025)到 CRC (8,1028)、ECC 1(1, 1)到ECC 1(8,1028)和第二错误信息传送到主机装置201。主机装置201使用第二错误信息在从SSD 100接收到的经过第二错误纠正的数据 上执行第三错误纠正,并使用CRC检查纠正的结果。如果检测到错误,则第二错误纠正被再 次执行,并且第二和第三错误纠正被交替地重复,直到错误被消除为止(执行图15到图19 中的处理)。图22是根据第二实施例的ECC电路242中的解码系统的主要部分的框图。ECC电 路242中的解码系统无需包含第三ECC纠正单元,因此,电路规模可被减小。根据第二实施例,因为第三错误纠正被主机装置201执行,所以无需由SSD 100执 行第三错误纠正,这使得SSD 100上的负荷和电路规模得以减小。在第二实施例中,本发明被应用于具有NAND存储器的SSD,但是,本发明可以被应 用于具有例如NOR型存储器的其他快闪电可擦除可编程只读存储器(EEPROM)的任何SSD。工业适用性根据本发明,能够提供能减少功耗和电路规模而不损害错误纠正能力的半导体存 储装置、用于控制其的方法和错误纠正系统。
权利要求
一种半导体存储装置,包含临时存储单元,其能够在其中存储多个数据块,所述多个数据块按矩阵排列并且每一个数据块均由多个数据形成;错误检测码产生单元,其产生错误检测码来针对每一个数据块检测错误;第一错误纠正码产生单元,其产生第一错误纠正码来针对由数据块形成的每一个第一单元数据纠正错误;第二错误纠正码产生单元,其产生第二错误纠正码来针对由按列方向排列的数据块形成的每一个第二单元数据纠正错误;第三错误纠正码产生单元,其产生第三错误纠正码来针对由按行方向排列的数据块形成的每一个第三单元数据纠正错误;和非易失半导体存储器,其能够在其中存储数据块、产生的错误检测码和产生的第一到第三错误纠正码。
2.如权利要求1所述的半导体存储装置,还包含第一错误纠正单元,其在每一个数据块上使用与其对应的第一错误纠正码执行第一错 误纠正;第一错误检测单元,其在经过第一错误纠正的块中使用与其对应的错误检测码检测错误;第二错误纠正单元,其在经过第一错误纠正的块中被第一错误检测单元检测到的错误 上使用与其对应的第二错误纠正码执行第二错误纠正;第二错误检测单元,其在经过第二错误纠正的块中使用与其对应的错误检测码检测错 误;和第三错误纠正单元,其在经过第二错误纠正的块中被第二错误检测单元检测到的错误 上使用与其对应的第三错误纠正码执行第三错误纠正。
3.如权利要求1所述的半导体存储装置,其中,错误纠正能力的水平按如下降序提供 第三错误纠正 > 第二错误纠正 > 第一错误纠正。
4.如权利要求2所述的半导体存储装置,其中,第二错误纠正单元和第三错误纠正单 元交替地重复各自的错误纠正操作。
5.如权利要求1所述的半导体存储装置,其中,错误检测码产生单元产生错误检测码 来检测第三错误纠正码中的错误。
6.如权利要求1所述的半导体存储装置,其中,第一单元数据包含对应于数据块的错 误检测码。
7.如权利要求1所述的半导体存储装置,其中,第二单元数据包含分别对应于形成第 二单元数据的数据块的错误检测码。
8.如权利要求1所述的半导体存储装置,其中,第二错误纠正码产生单元产生第二错 误纠正码来纠正每一按列方向排列的多个第三错误纠正码中的错误。
9.如权利要求2所述的半导体存储装置,其中第一错误检测单元产生第一错误信息来识别其中检测到错误的数据块, 第二错误纠正单元基于第一错误信息执行第二错误纠正, 第二错误检测单元产生第二错误信息来识别其中检测到错误的数据块,并且第三错误纠正单元基于第二错误信息执行第三错误纠正。
10.如权利要求1所述的半导体存储装置,其中,非易失半导体存储器是NAND快闪存储ο
11.一种控制半导体存储装置的方法,包含在临时存储装置中存储多个数据块,所述多个数据块按矩阵排列并且每一个数据块均 由多个数据形成;产生错误检测码来针对每一个数据块检测错误;产生第一错误纠正码来针对由数据块形成的每一个第一单元数据纠正错误; 产生第二错误纠正码来针对由按列方向排列的数据块形成的每一个第二单元数据纠 正错误;产生第三错误纠正码来针对由按行方向排列的数据块形成的每一个第三单元数据纠 正错误;和在非易失半导体存储器中存储数据块、产生的错误检测码和产生的第一到第三错误纠 正码。
12.如权利要求11所述的控制半导体存储装置的方法,还包含在每一个数据块上使用与其对应的第一错误纠正码执行第一错误纠正; 在经过第一错误纠正的块中使用与其对应的错误检测码检测错误; 在经过第一错误纠正的块中被第一错误检测单元检测到的错误上使用与其对应的第 二错误纠正码执行第二错误纠正;在经过第二错误纠正的块中使用与其对应的错误检测码检测错误;和 在经过第二错误纠正的块中被第二错误检测单元检测到的错误上使用与其对应的第 三错误纠正码执行第三错误纠正。
13.一种错误纠正系统,包含 主机装置;和半导体存储装置,其根据主机装置的指令执行从/向非易失存储器的数据读/写,其中 所述半导体存储装置包括临时存储单元,其把从主机装置转移的数据划分为每一个均由多个数据形成的多个数 据块,并在其中按矩阵存储所述数据块;错误检测码产生单元,其产生错误检测码来针对每一个数据块检测错误; 第一错误纠正码产生单元,其产生第一错误纠正码来针对由数据块形成的每一个第一 单元数据纠正错误;第二错误纠正码产生单元,其产生第二错误纠正码来针对由按列方向排列的数据块形 成的每一个第二单元数据纠正错误;第三错误纠正码产生单元,其产生第三错误纠正码来针对由按行方向排列的数据块形 成的每一个第三单元数据纠正错误;非易失半导体存储器,其能够在其中存储数据块、产生的错误检测码和产生的第一到 第三错误纠正码;第一错误纠正单元,其在每一个数据块上使用与其对应的第一错误纠正码执行第一错 误纠正;第一错误检测单元,其在经过第一错误纠正的块中使用与其对应的错误检测码检测错误;第二错误纠正单元,其在经过第一错误纠正的块中被第一错误检测单元检测到的错误 上使用与其对应的第二错误纠正码执行第二错误纠正;第二错误检测单元,其在经过第二错误纠正的块中使用与其对应的错误检测码检测错 误;和传送单元,其把经过第二错误纠正的数据和第二错误检测单元检测的结果传送到主机 装置,并且主机装置包括第三错误纠正单元,其在从半导体存储装置接收到的、经过第二错误纠正的块中被第 二错误检测单元检测到的错误上使用与其对应的第三错误纠正码执行第三错误纠正。
全文摘要
一种允许减少功耗和电路规模而不损害错误纠正能力的半导体存储装置、控制其的方法和错误纠正系统。固态驱动器(SSD)的错误纠正码(ECC)电路使用第一错误纠正码(Hamming码)在读数据上执行第一错误纠正,并进一步使用第二错误纠正码(BCH码)在第一错误纠正的结果上执行第二错误纠正。此外,ECC电路使用第三错误纠正码(RS码)在第二错误纠正的结果上执行第三错误纠正。
文档编号G06F12/16GK101946239SQ20088012699
公开日2011年1月12日 申请日期2008年9月19日 优先权日2008年2月29日
发明者山家阳 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1