CN103811075B - 错误检测和纠正装置及方法、失配检测装置及存储器系统 - Google Patents
错误检测和纠正装置及方法、失配检测装置及存储器系统 Download PDFInfo
- Publication number
- CN103811075B CN103811075B CN201310513810.2A CN201310513810A CN103811075B CN 103811075 B CN103811075 B CN 103811075B CN 201310513810 A CN201310513810 A CN 201310513810A CN 103811075 B CN103811075 B CN 103811075B
- Authority
- CN
- China
- Prior art keywords
- data
- reading
- code word
- unit
- delete position
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6306—Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
Abstract
本发明涉及错误检测和纠正装置及方法、失配检测装置及存储器系统,其中错误检测和纠正装置包括码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去预定时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,所述多个码元通过检测删除位置来提高错误纠正能力;定时控制删除位置检测单元,通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,来将具有不匹配值的码元的位置检测作为所述码字中的所述删除位置;以及错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置纠正错误。
Description
相关申请的交叉引用
本申请要求于2012年11月2日提交的日本优先专利申请JP2012-242975的权益,其全部内容合并于此以供参考。
技术领域
本技术涉及错误检测和纠正装置、失配检测装置、存储器系统和错误检测和纠正方法。具体地,本技术涉及用于检测和纠正从非易失性存储器读出的数据中的错误的错误检测和纠正装置、失配检测装置、存储器系统和错误检测以及纠正方法。
背景技术
在最新的信息处理系统中,NVM(非易失性存储器)将被用作辅助存储设备或存储器。非易失性存储器的示例包括闪存存储器、ReRAM(电阻RAM)、PCRAM(相变RAM)和MRAM(磁阻RAM)。在非易失性存储器中,由于热噪声,记录的数据会被破坏并且不会被正确读出。由于这个原因,数据存储设备从要被记录的数据生成ECC(错误检测和纠正码)以将ECC记录在非易失性存储器中。当数据被再现时,数据存储设备可以基于ECC检测和纠正数据错误。
在错误检测和纠正时,提出一种系统,在该系统中,使用不同的阀值电压多次读取数据,每个数据被比较以检测删除,并基于所检测到的删除纠正错误(例如,参见美国专利申请公开第2010/0077279号)。
发明内容
然而,在上述相关技术中,数据错误不会被正确纠正。例如,在非易失性存储器中,会产生使所记录的数据值根据时间波动的随机电报噪声。一旦生成随机电报噪声,以相同阀值电压读出的每个数据会在读取时具有不同的值。在上述比较以不同阀值电压读出的每个数据的系统中,这样的错误不能够被检测到。由于这个原因,数据错误不会被正确纠正。
鉴于上述的情况,需要一种数据错误被准确纠正的技术。
根据本技术的实施例,提供一种错误检测和纠正装置,以及利用所述错误检测和纠正装置的错误检测和纠正方法,其中错误检测和纠正装置包括码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去预定时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,所述多个码元通过检测删除(eraser,擦除)位置来提高错误纠正能力;定时控制删除位置检测单元,用于通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,来将具有不匹配值的码元的位置检测作为所述码字中的所述删除位置;以及错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置纠正错误。读取数据和再读取数据中具有不匹配的值的码元的位置被检测作为码字中的删除位置,以及具有所检测出的删除位置的码字中的错误被纠正。
在错误检测和纠正装置中,当检测出的所述删除位置的总数量超出对应于所述错误纠正能力的预定数量时,所述错误纠正单元以对应于所检测出的删除位置中的所述删除位置的总数量与所述预定数量之间的差的位置数量不是删除位置的方式纠正错误。当所检测出的删除位置的总数超出预定数量时,以对应于所检测出的删除位置之中删除位置的总数量与预定数量之间差异的位置数量不是删除位置的方式纠正错误。
在错误检测和纠正装置中,可以进一步包括数据替换单元,当所检测出的所述删除位置的总数量超出所述预定数量时,所述数据替换单元用具有特定值的数据替换数目对应于所述差的所述删除位置处的码元,并将其提供给所述错误纠正单元;以及错误纠正单元,可以以被具有所述特定值的数据替换的位置不是所述删除位置的方式纠正错误。数目号对应于删除位置的总数与预定数量之间差的删除位置处的所述码元被具有特定值的数据替代,以及以该位置不是删除位置的方式纠正错误。
在错误检测和纠正装置中,所述特定值可以基于将所述码元的两个值中的一个值反转到另一个值的可能性以及基于所述码元的另一个值反转到所述一个值的可能性确定。所述特定值基于将所述码元的两个值中的一个值反转到另一个值的可能性以及基于所述码元的另一个值反转到所述一个值的可能性被确定。
在错误检测和纠正装置中,可以进一步包括阀值控制读出单元,将用于确定被保持在所述存储器地址中的所述码元的值是两个值中哪一个的阀值控制为第一值,从所述存储器地址读出所述码字作为第一数据,将所述阀值控制为不同于所述第一值的第二值,以及从所述存储器地址读出码字作为第二数据;以及阀值控制删除位置检测单元,用于确定所述第一数据和所述第二数据中每个码元的值是否匹配,以及检测具有不匹配值的码元的位置作为所述码字中的删除位置,其中所述错误纠正单元可以对所述定时控制删除位置检测单元检测出所述删除位置的所述码字中的错误进行纠正,以及对所述阀值控制删除位置检测单元检测出所述删除位置的码字中的错误进行纠正。在第一和第二数据中具有不匹配的值的所述码元的位置被检测为所述码元中的删除位置。
在错误检测和纠正装置中,可以进一步包括读取数据错误检测单元,当码字读出单元执行读取处理时,检测读取数据中的错误,并且码字读出单元可以在所述读取数据错误检测单元检测到所述错误时,执行再读取处理。当读出处理被执行时,所述读取数据中的错误(如果有的话)被检测到。一旦检测出错误,所述再读取处理被执行。
在错误检测和纠正装置中,可以进一步包括获取温度的温度获取单元;以及确定单元,根据所述读取处理被执行前的温度,确定预定时间的长度,以及当所述预定时间长度被确定时,所述码字读出单元可以执行读出处理。当所述预定时间长度根据温度被确定时,所述读取处理被执行。
根据本技术的另一个实施例,提供一种失配检测装置包括:码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去预定时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据;失配检测单元,检测所述读取数据和再读取数据是否失配;以及登记单元,将检测出所述失配的所述存储器地址作为禁止进行存取的缺陷地址来登记。当数据读取数据和再读取数据失配时,所述存储器地址被登记为缺陷地址。
在错误检测和纠正装置中,所述失配检测单元可以针对每个码元确定所述值是否失配,以及其中当被确定为失配的码元的数量超出预定阀值时,所述登记单元将存储器地址登记为缺陷地址。当被确定为失配的码元的数量超出预定阀值时,所述存储器地址被登记为缺陷地址。
根据本技术的另一个实施例,提供一种失配检测装置,包括供给单元,按顺序提供具有不同长度的多个时间作为候选时间;码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去所述候选时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,每次设定所述候选时间都执行一定次数的所述读取处理和所述再读取处理;失配检测单元,每次执行所述读取处理和所述再读取处理时,检测所述读取数据和所述再读取数据是否失配;计数器,对所述多个时间的每一个计数检测为失配的次数;以及设定单元,基于所述检测次数,在所述多个时间中,设定检测为失配的频率最高的时间。所述具有失配的最高检测频率的时间被设定。
根据本技术的另一个实施例,提供一种存储器系统,所述存储器系统包括将包括多个码元的码字存储到存储器地址的存储器,所述多个码元通过检测删除位置来提高错误纠正能力;码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,以及在自读出所述读取数据的时间逝去预定时间后,执行再读取处理,以从所述存储器地址读出码字作为再读取数据;定时控制删除位置检测单元,通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,检测具有不匹配的值的码元的位置,作为所述码字中的删除位置;以及错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置,纠正错误。读取数据和再读取数据中具有不匹配的值的码元的位置被检测为删除位置,以及基于检测出删除位置的所述码字中的删除位置,纠正错误。
根据本技术的实施例,数据中的错误可以被准确纠正。
鉴于对附图中示出本发明的最佳模式实施方式的以下详细描述,本技术的这些和其他目标、特征和优势将变得更加显而易见。
附图说明
图1是示出根据第一实施例的信息处理系统的配置示例的框图;
图2是示出根据第一实施例的存储器控制器的配置示例的框图;
图3是示出根据第一实施例的存储器控制器的配置示例的框图;
图4是示出根据第一实施例的码字的数据配置示例的示意图;
图5是示出根据第一实施例的读取处理单元的配置示例的框图;
图6是示出根据第一实施例的BCH码的校验矩阵示例的示意图;
图7是示出根据第一实施例的错误纠正单元的配置示例的框图;
图8A、8B和8C是分别示出读取的数据、再读取的数据和删除位置的数据的示例;
图9是示出根据第一实施例的存储器控制器的操作示例的流程图;
图10是示出根据第一实施例的读取处理示例的流程图;
图11是示出第一实施例的替代实施例的读取处理示例的流程图;
图12是示出根据第二实施例的读取处理单元的配置示例的框图;
图13A、13B、13C和13D分别示出根据第二实施例的读取数据、再读取数据、替换后的读取数据和纠正后的删除位置数据的示例;
图14是示出根据第二实施例的读取处理的操作示例的流程图;
图15是示出根据第三实施例的读取处理单元的配置示例的框图;
图16是示出根据第三实施例的可变电阻元件的电阻分布示例的示意图;
图17是示出根据第三实施例的码字读取单元的配置示例的框图;
图18是示出根据第三实施例的删除位置检测单元的配置示例的框图;
图19是示出根据第三实施例的读取处理的操作示例的流程图;
图20是示出根据第四实施例的存储器控制器的配置示例的框图;
图21是示出根据第四实施例的存储器检查单元的配置示例的框图;
图22是示出根据第四实施例的存储器控制器的操作示例的流程图;
图23是示出根据第四实施例的存储器检查处理示例的流程图;
图24是示出根据第五实施例的存储器控制器的配置示例的框图;
图25是示出根据第五实施例的RTN周期设定单元的配置示例的框图;
图26是示出根据第五实施例的每个RTN周期的失配数量的计数结果示例的直方图;
图27是示出根据第五实施例的存储器控制器的操作示例的流程图;
图28是示出根据第五实施例的RTN周期示例的流程图;以及
图29是示出根据第六实施例的存储器控制器的配置示例的框图。
具体实施方式
在下文中,将参考附图来描述本技术的实施例。
将以下列顺序描述本技术的实施例。
1.第一实施例(检测和纠正删除位置的示例)
2.第二实施例(检测删除位置以及替换和纠正数据的示例)
3.第三实施例(在控制阀值时,检测和纠正删除位置的示例)
4.第四实施例(检测失配和存取控制的示例)
5.第五实施例(确定RTN周期以及检测和纠正删除位置的示例)
6.第六实施例(根据温度确定RTN周期以及检测和纠正删除位置的示例)
<1.第一实施例>
[信息处理系统的配置示例]
图1是示出根据第一实施例的信息处理系统的配置示例的框图。信息处理系统包括主机系统100和存储系统200。
主机系统100控制整个信息处理系统。具体地,主机系统100生成命令和写入数据,并经由信号线109将命令和写入数据提供给存储系统200。主机系统100接收来自存储系统200的读取数据。在这里,命令用于控制存储系统200,并且包括用于指示将写入数据写入的写入命令以及用于指示将读取数据读出的读取命令。
存储系统200包括存储器控制器300和非易失性存储器400。存储器控制器300用于控制非易失性存储器400。当从主机系统100接收写入命令和写入数据时,存储器控制器300从写入数据生成ECC(错误检测和纠正码)。具体地,存储器控制器300将写入数据转换(即,编码)成包括写入数据和奇偶校验位的码字。存储器控制器300通过信号线309存取非易失性存储器400,以及将编码后的数据写入非易失性存储器400中。
而且,当从主机系统100接收读取命令时,存储器控制器300通过信号线309存取非易失性存储器400,并且读出编码后的数据。接着,存储器控制器300将编码后的数据转换(即,解码)为编码前的原始数据。此外,存储器控制器300基于ECC检测和纠正数据中的错误。存储器控制器300向主机系统100提供纠正后的数据。存储器控制器300是根据本技术实施例的错误检测和纠正装置的示例。
非易失性存储器400存储正被存储器控制器300控制的数据。例如,ReRAM被用作非易失性存储器400。非易失性存储器400包括多个存储器单元。这些存储器单元被划分为多个块。在这里,块是非易失性存储器400的存取单元,并且也被称为“扇区”。存储器地址被分配给每个块。除了ReRAM以外,闪存存储器、PCRAM、MRAM等可以被用作非易失性存储器。
[存储器控制器的配置示例]
图2是示出根据第一实施例的存储器控制器300的配置示例的框图。存储器控制器300包括RAM(随机存取存储器)301、CPU(中央处理单元)302、ECC处理单元303和ROM(只读存储器)304。进一步地,存储器控制器300包括主机接口305、总线306和非易失性存储器接口307。
RAM 301临时保持CPU 302执行处理所需要的数据。CPU 302控制整个存储器控制器300。ROM 304存储由CPU 302执行的程序等。主机接口305与主机系统100交换数据或命令。总线306是在RAM 301、CPU 302、ECC处理单元303、ROM 304、主机接口305与非易失性存储器接口307之间互换数据的公用路径。非易失性存储器接口307与非易失性存储器400互换数据或命令。
ECC处理单元303编码写入数据和解码读取数据。在编码写入数据后,ECC处理单元303将多个数据中的每个用作要被编码的数据,以及向要被编码的数据添加奇偶校验位,从而将数据编码到预定单元中。预定单元中的每个编码数据被称为“码字”。接着,ECC处理单元303经由总线306向非易失性存储器400提供编码后的写入数据。
而且,ECC处理单元303将编码后的读取数据解码为要被编码的原始数据。在解码后,ECC处理单元303利用奇偶校验位,检测和纠正码字的错误。ECC处理单元303经由总线306向主机系统100提供要被编码的解码数据。
图3是示出根据第一实施例的存储器控制器300的配置示例的框图。存储器控制器300包括写入处理单元310和读取处理单元320。在图3中示出的写入处理单元310由RAM301、CPU 302、ECC处理单元303、ROM304、主机接口305、总线306、非易失性存储器接口307等实现。同样适用于读取处理单元320。
写入处理单元310根据写入命令,执行将写入数据写入到非易失性存储器400。当写入处理单元310从主机系统100接收写入命令和写入数据时,写入处理单元310使用写入数据作为要被编码的数据,以及将要被编码的数据编码成码字。在编码后,要被编码的数据被编码到例如具有根αi的二进制BCH码中。在这里,“i”是1或2t的整数,其中t是整数。“α”是伽罗瓦域GF(2m)的元素。在二进制BCH码中,每个αi取值“1”或“0”。在BCH码的编码中,例如由下列表达式1表示的生成多项式被使用。
G(x)=LCM[M1(x),M2(x),…,M2t(x)]…表达式1
在表达式1中,LCM[]表示[]中每个多项式的最小公倍数多项式。Mi(x)是αi的伽罗瓦域GF(2m)上的最小多项式。
写入处理单元310从要被编码的数据生成码多项式,以及确定通过将码多项式除以在表达式1中示出的生成多项式所得的余数。码多项式是具有要被编码的数据的每个位值的因子的多项式。写入处理单元310生成被确定为奇偶校验位的余数中每个因子的数据,以及向非易失性存储器400输出要被编码的数据和作为码字的奇偶校验位数据。
而且,写入处理单元310可以不通过使用生成多项式的多项式运算而是通过矩阵运算进行编码。写入处理单元310将写入数据编码到二进制BCH码中,以及可以将写入数据编码到非BCH码的码中,只要该码具有错误纠正能力即可。写入处理单元310可以将写入数据编码到RS(里德-索罗门)码或卷积码中。而且,写入处理单元310可以将写入数据编码到比二进制码更高维的码中。
读取处理单元320根据读取命令,执行从非易失性存储器400读出读取数据。当读取处理单元320接收来自主机系统100的读取命令时,读取处理单元320从被命令指定的存储器地址读出码字来作为读取数据。读取处理单元320将读取数据解码为被编码的原始数据。在解码后,读取处理单元320使用包括在读取数据中的奇偶校验位,纠正读取数据中的错误。稍后将详细描述纠正错误的方法。读取处理单元320向主机系统100输出被编码的解码数据。
图4是示出根据第一实施例的码字的数据配置示例的示意图。如图4所示,写入处理单元310将具有k位的要被编码的每个数据编码为具有n位的码字。在这里,k是整数,以及n是比k大的整数。每个码字包括具有k位的要被编码的数据和n-k位的奇偶校验位。当码字照原状包括要被编码的数据,并且可以很容易被分离成要被编码的数据和奇偶校验位时,码被称为系统码。但是,码可以是非系统码。
[读取处理单元的配置示例]
图5是示出根据第一实施例的读取处理单元320配置示例的框图。读取处理单元320包括读取命令缓冲器321、RTN周期计数器322、码字读取单元323、读取数据缓冲器324、错误纠正单元325和删除位置检测单元328。
读取命令缓冲器321保持从主机系统100接收的读取命令。
RTN周期计数器322计数RTN周期。RTN周期是随机电报噪声使数据值波动的周期。RTN周期被设定为,使得在RTN期间检测的失配的频率成为与非易失性存储器400相同类型存储器中最高的。
码字读取单元323从非易失性存储器400以每个码字单元读出数据。具体地,码字读取单元323从读取命令缓冲器321获得读取命令,向非易失性存储器400输出读取命令,以及从存储器地址读出码字来作为读取数据RD。而且,码字读取单元323发送读取命令,以开始由RTN周期计数器322进行计数。
接着,码字读取单元323接收关于从错误纠正单元325读出的读取数据的错误纠正结果。如果纠正是成功的,则码字读取单元323初始化RTN周期计数器322的计数值。另一方面,当纠正失败时,码字读取单元323参照RTN周期计数器的计数值,并且确定是否自读取命令的输出逝去了RTN周期。如果逝去了RTN周期,则码字读取单元323从读取命令缓冲器321获得读取命令,向非易失性存储器400输出读取命令,以及从存储器地址读出码字作为再读取数据rRD。码字读取单元323是所要求的码字读出单元的示例。
读取数据缓冲器324保持从非易失性存储器400读出的读取数据RD和再读取数据rRD。
错误纠正单元325纠正读取数据RD中的错误。当读取数据RD被读取数据缓冲器324读出时,错误纠正单元325利用包括在读取数据RD中的奇偶校验位,检测和纠正读取数据RD中的错误。显示纠正是否成功的纠正结果由错误纠正单元325提供给码字读取单元323和删除位置检测单元328。
如果读取数据RD的错误纠正是成功的,则错误纠正单元325向主机系统100输出从纠正后的读取数据移除奇偶校验位的数据RD’。另一方面,如果纠正是失败的,则错误纠正单元325从删除位置检测单元328接收删除位置数据。删除位置数据显示读取数据RD中被删除数据的删除位置。例如,删除位置数据被生成为具有与读取数据RD相同大小的数据,在删除位置时,位值为“1”,以及不在删除位置时,位值为“0”。
一旦错误纠正单元325接收删除位置数据,则错误纠正单元325基于由删除位置数据示出的删除位置,执行删除纠正。在这里,删除纠正是用于确定删除位置的数据值以使得在删除位置删除数据的纠正处理。删除纠正是在假定删除位置被检测到的条件下执行的。错误纠正单元325向主机系统100输出从经删除纠正后的读取数据移除奇偶校验位的数据RD’。
删除纠正的错误纠正能力比删除位置不清楚时的错误纠正能力更高,即比删除位置不清楚时的错误纠正能力大两倍。在这里,错误纠正能力是每个码字可以被纠正的码元(例如,位)的数量。码元是构成码字的最小单位,并且也被称为符号。
错误纠正能力由最小汉明距离dmin确定。最小汉明距离dmin是码所属的任何不同码字之间的汉明距离的最小值。如果满足2t+1<=dmin的t(整数)的最大值是tmax,则当删除位置不清楚时,码元可以被纠正到tmax。规则被称为有界距离译码算法。
另一方面,在删除位置被检测出的删除纠正中,删除位置的数量是h,以及位置不清楚时的错误的数量是t,那么,只要2t+h+1<=dmin是真,两者可以被纠正。换句话说,当t=0时,码元可以被纠正到作为满足h+1<=dmin的h(整数)的最大值的hmax。由于hmax大于tmax,所以删除位置被检测出时的码字的错误纠正能力比删除位置未被检测出时的错误纠正能力更高。
删除位置检测单元328检测码字的删除位置。当删除位置检测单元328接收到显示读取数据RD的纠正是失败的纠正结果时,删除位置检测单元328从读取数据缓冲器324获得读取数据RD和再读取数据rRD。如上所述,由于再读取数据rRD是自读出读取数据RD的时间逝去RTN周期之后被读出,所以当在RTN周期中生成随机电报噪声时,再读取数据rRD可以具有不同的值。由于这个原因,通过确定读取数据RD和再读取数据rRD中的每个位的值是否匹配,删除位置检测单元328可以检测数据被删除的位的位置。删除位置检测单元328向错误纠正单元325提供显示所检测出的删除位置的删除位置数据。
存储器控制器300被配置为检测删除位置和纠正错误,但是非易失性存储器400可以被配置为执行这些处理。
图6是示出根据第一实施例的BCH码的校验矩阵示例的示意图。校验矩阵被用于检测码错误。在BCH码中,码字的错误通过图6所示的校验矩阵乘以码字来检测。
[错误纠正单元的配置示例]
图7是示出根据第一实施例的错误纠正单元325的配置示例的框图。错误纠正单元325包括读取数据错误检测和纠正单元326以及删除纠正单元327。
读取数据错误检测和纠正单元326检测和纠正读取数据RD中的错误。如果错误在BCH码中被纠正,则读取数据错误检测和纠正单元326利用被包括在码字(读取数据RD)中的奇偶校验位,检测码字中的错误位置。具体地,读取数据错误检测和纠正单元326从码字和如图6所示的校验矩阵确定症候(syndrome)。在这里,症候是通过将所接收的码字乘以校验矩阵获得的矢量,并且被用于确定错误位置。
上述用于确定症候的矩阵运算可以由下列表达式2表示:
si=Y(αi),i=1,…,2t …表达式2
在表达式2中,Y(x)是具有读取数据的每个位值的因子的接收多项式。Si表示症候。
如果症候Si完全是“0”,则读取数据错误检测和纠正单元326确定读取数据没有错误。在这种情况下,读取数据错误检测和纠正单元326向主机系统100提供从读取数据RD移除奇偶校验位的数据RD’。
另一方面,如果任何症候Si不是“0”,则读取数据错误检测和纠正单元326确定读取数据有错误。在这种情况下,为了确定错误位置,读取数据错误检测和纠正单元326生成下列表达式3和4:
σ(z)=(1-αj1z)(1-αj2z)…(1-αjLz) …表达式3
…表达式4
在表达式3和4中,每个j1到jL表示错误位置。如果错误位置的数量(即错误数量)在错误纠正能力t内,则错误纠正是成功的。在表达式4中,Πx意思是x的无穷乘积,以及ei表示错误位置的码元值。
通过确定表达式4中σ(z)的根,错误位置可以被确定。因此,σ(z)被称为错误位置多项式。而且,错误位置值可以由表达式5中的ω(z)确定。因此,ω(z)被称为错误评估多项式。
读取数据错误检测和纠正单元326从所生成的表达式3和4生成下列表达式5。
σ(z)S(z)≡ω(z)modz2t …表达式5
在表达式5中,AmodB意思是A除以B的余数。S(z)是具有每个症候Si的因子的多项式。
读取数据错误检测和纠正单元326确定满足所生成的表达式5和下列表达式6至8的σ(z)和ω(z)。满足表达式5至8的σ(z)和ω(z)可以由彼得森算法、欧几里德算法或类似算法确定。
…表达式6
LCM[ω(z),σ(z)]=常数…表达式7
σ(0)=1 …表达式8
在表达式7中,degF(z)示出多项式F(z)的最大程度。
如果没有满足表达式5至8的σ(z)和ω(z),可以确定错误纠正是失败的,这是因为错误的数量超出错误纠正能力。读取数据错误检测和纠正单元326向删除位置检测单元328提供纠正是失败的纠正结果。
另一方面,如果存在满足表达式5至8的σ(z)和ω(z),读取数据错误检测和纠正单元326确定σ(z)的根α-j1到α-jL。读取数据错误检测和纠正单元326检测j1~jL作为对应于这些根的错误位置。通过反转被检测出错误的位置的每个位,读取数据错误检测和纠正单元326纠正错误。读取数据检测和纠正单元326向主机系统100提供从所纠正的读取数据RD移除奇偶校验位的数据RD’。
如果具有比二进制码更高维码的BCH码被使用,则需要在除了错误位置以外的位置确定码元(符号)的值ei。在这种情况下,码元的值ei可以由下列表达式9和10确定:
…表达式9
…表达式10
在表达式9和10中,σ’(z)是σ(z)的导数。
虽然读取数据错误检测和纠正单元326具有检测和纠正错误的配置,但只有错误的检测可以被执行而没有纠正。读取数据错误检测和纠正单元326是所要求的读取数据错误检测单元的示例。
删除纠正单元327基于删除位置数据,删除和纠正读取数据RD。删除纠正单元327从删除位置检测单元328接收删除位置数据,接着从读取数据缓冲器324获得读取数据RD。接着,删除纠正单元327基于由删除位置数据示出的删除位置,生成下列表达式11和12。
λ(z)=(1-αj1′z)(1-αj2′z)…(1-αjh′z) …表达式11
…表达式12
在表达式11和12中,j1′~jh′中的每个是删除位置。
而且,删除纠正单元327利用表达式2,确定读取数据RD的症候。删除纠正单元327从所生成的表达式11和12和症候生成表达式13。
σ(z)λ(z)S(z)=ψ(z)modzd-1 …表达式13
在这里,当2t+h+1<=dmin是真时,其中位置未被检测出的错误的数量是t,被删除码元的数量是h,最小汉明距离是dmin,表达式21中的σ(z)为t的程度或更少。为此,degσ(z)<=t是真。删除纠正单元327确定满足degσ(z)<=t以及表达式7和8的σ(z),以及满足表达式13的ψ(z)。σ(z)和ω(z)可以由彼得森算法、欧几里德算法或类似算法确定。
当存在满足条件的σ(z)和ψ(z)时,删除纠正单元327利用表达式14从确定的σ(z)和ψ(z),确定删除位置ji’的位值ei’。删除纠正单元327将删除位置ji’的位值纠正到读取数据RD中已确定的值ei’。
…表达式14
在表达式14中,λ’(z)是λ(z)的导数。
删除纠正单元327检测对应于σ(z)的根α-j1到α-jL的j1~jL中的每个作为删除位置,并将这些位置的每个位反转。接着,删除纠正单元327向主机系统100输出从所纠正的读取数据RD移除奇偶校验位的数据RD’。
如果没有满足条件的σ(z)和ω(z),则删除纠正单元327确定错误纠正是失败的,这是因为所生成的错误数量超出错误纠正能力。在这种情况下,删除纠正单元327向主机系统100输出通知读取数据不能被准确读出的读取错误。
如果具有比二进制码更高维码的BCH码被使用,则需要确定错误位置的码元(符号)的值。在这种情况下,错误位置ji的码元的值ei可以由例如下列表达式15确定:
…表达式15
图8A、8B和8C中的每个示出根据第一实施例的读取数据、再读取数据和删除位置数据的示例。图8A是读取数据的示例。图8B是再读取数据的示例。作为示例,读取数据是在0到3位的“0110”,以及再读取数据是在0到3位的“0001”。
如果读取数据的错误纠正是失败的,则删除位置检测单元328确定读取数据和再读取数据中每个位的值是否匹配。值不匹配的位置被检测作为删除位置。在图8A和8B中,1到3位的值不匹配,这些位置被检测作为删除位置。
删除位置检测单元328生成显示所检测出的删除位置的删除位置数据。图8C示出删除位置数据的示例。删除位置数据的数据大小(n位)等于读取数据的大小。匹配位置的位被设定为“0”,以及在失配位置(即,在删除位置)的位被设定为“1”。例如,如果1到3位的值是失配的,则位被设定为“1”,以及剩下的位被设定为“0”。因此,这样的删除位置数据被生成。删除位置数据的数据配置不限于在图8A到8C中示出的配置。
[存储器控制器的操作示例]
图9是示出根据第一实施例的存储器控制器300的操作示例的流程图。在存储器控制器300被开启后,操作被启动。
存储器控制器300确定是否从主机系统100接收到写入命令(步骤S931)。如果接收到写入命令(步骤S931:是),则存储器控制器300将写入数据编码并写入到非易失性存储器400中(步骤S932)。
如果未接收到写入命令(步骤S931:否)或在步骤S932后,存储器控制器300确定读取命令是否被接收到(步骤S933)。如果读取命令被接收到(步骤S933:是),则存储器控制器300执行读出所编码的读取数据的读取处理(步骤S940)。如果读取命令未被接收到(步骤S933:否)或在步骤S940后,存储器控制器300返回步骤S931。
图10是示出根据第一实施例的读取处理示例的流程图。存储器控制器300从读取命令指定的存储器地址读出码字作为读取数据(步骤S941)。存储器控制器300执行读取数据中的错误检测和纠正(步骤S942)。存储器控制器300确定错误纠正是否成功(步骤S943)。
如果错误纠正是失败的(步骤S943:否),存储器控制器300确定自读出读取数据的时间是否逝去RTN周期(步骤S944)。如果未逝去RTN周期(步骤S944:否),则存储器控制器300返回步骤S944。另一方面,如果已经逝去RTN周期(步骤S944:是),则存储器控制器300将从相同存储器地址读出的码字作为再读取数据(步骤S945)。
通过确定读取数据和再读取数据中的每个位的值是否匹配,存储器控制器300检测删除位置(步骤S946)。接着,基于所检测的删除位置,存储器控制器300执行读取数据中的删除纠正(步骤S949)。存储器控制器300确定删除纠正是否成功(步骤S950)。
如果错误纠正是成功的(步骤S943:是)或删除纠正是成功的(步骤S950:是),则存储器控制器300向主机系统100输出被纠正的读取数据并结束读取处理(步骤S951)。另一方面,如果删除纠正是失败的(步骤S950:否),则存储器控制器300向主机系统100输出读取错误并结束读取处理(步骤S953)。
如上所述,根据第一实施例,存储器控制器300可以根据读取数据以及在自读出读取数据的时间逝去RTN周期后所读出的再读取数据,来检测删除位置,并纠正码字的错误。通过这样的方式,在逝去RTN周期后,由随机电报噪声造成的错误可以被检测到并被纠正。此外,码的错误纠正能力通过删除位置的检测而被改善,由此存储器控制器300可以更准确纠正数据。在第一实施例中,假设错误纠正时间比RTN周期更长,以及在步骤S944等待RTN周期,直到在步骤S943确定错误纠正是失败之后。然而,如果错误纠正时间比RTN周期短,则在错误纠正处理期间等待RTN周期以及再读取数据可以被事先读取是可行的。
[替代实施例]
根据第一实施例,当最初的删除纠正失败时,存储器控制器300向主机系统100输出读取错误。当删除纠正失败时,删除纠正可以被再次执行。根据替代实施例的存储器控制器不同于第一实施例之处在于,当删除纠正失败时,删除纠正被再次执行。
图11是示出第一实施例的替代实施例中的读取处理示例的流程图。根据替代实施例的读取处理不同于第一实施例之处在于,步骤S952被进一步执行。
当删除纠正失败时(步骤S950:否),存储器控制器300确定执行删除纠正的数量是否少于特定次数(步骤S952)。
如果执行删除纠正的数量少于特定次数(步骤S952:是),则存储器控制器300返回步骤S944。另一方面,如果执行删除纠正的数量超出特定次数(步骤S952:否),则存储器控制器300向主机系统100输出读取错误并结束读取处理(步骤S953)。
因此,根据第一实施例的替代实施例,存储器控制器300可以在自删除纠正失败的时间逝去一个RTN周期后,执行删除纠正。通过这样的方式,即使在逝去RTN周期后生成的失配不能被检测到或被纠正,存储器控制器300也可以检测和纠正逝去另一个RTN周期后所生成的失配。此外,还在替代实施例中,如果错误纠正时间比RTN周期更短,类似于第一实施例,在错误纠正处理期间等待RTN周期,并且再读取数据可以被事先读取是可行的。
<2.第二实施例>
[读取处理单元的配置示例]
在第一实施例中,当失配超出删除纠正的错误纠正能力时,存储器控制器300确定删除纠正是失败的。然而,存储器控制器300可以用具有指定值的数据替换对应于错误纠正能力与失配数据数量之间差异的失配数据数量,以及当失配的数量超出错误纠正能力时,可以执行错误纠正能力内的删除纠正。根据第二实施例的存储器控制器300不同于根据第一实施例的之处在于,对应于错误纠正能力与失配数据数量之间的差的失配数据数量被具有指定值的数据替换,以及在错误纠正能力内执行删除纠正。
图12是示出根据第二实施例的读取处理单元320配置示例的框图。根据第二实施例的读取处理单元320不同于根据第一实施例的之处在于,进一步包括数据替换单元329。
数据替换单元329用具有特定值的数据替换数量超出错误纠正能力的删除位置的数据。数据替换单元329从删除位置检测单元328接收删除位置数据和读取数据,并且确定由删除位置数据示出的删除位置的数量h是否超出错误纠正能力。具体地,可以确定删除位置的数量是否比对应于错误纠正能力的dmin-1更多。dmin是最小汉明距离。
如果h比dmin-1更多,则数据替换单元329用具有指定值(“0”或“1”)的位替换读取数据中作为h与dmin-1之间的差的删除位置h-(dmin-1)处的位。例如通过预先测量将存储器单元中数据的“0”反转到“1”或“1”反转到“0”的概率并确定哪个更高,来确定对值“1”或“0”的替换。可选择地,如果根据非易失性存储器的设备特性,存在将“0”反转到“1”和将“1”反转到“0”的概率的偏差,则该值被具有更高概率的值替换。数据替换单元329纠正删除位置数据,使得被替换的位置没有删除,并将其与部分被替换的读取数据一起提供给错误纠正单元325。通过这样的方式,删除位置的数量少于错误纠正能力。因此,只要删除位置的数量和错误数量的总和未超出错误纠正能力,则错误纠正单元325就可以纠正读取数据中的错误。
另一方面,如果h不比dmin-1更多,则删除纠正是可能的。数据替换单元329向错误纠正单元325提供原始读取数据。
图13A、13B、13C和13D分别示出根据第二实施例的读取数据、再读取数据、部分替换的读取数据和删除位置数据的示例。图13A是读取数据的示例。图13B是再读取数据的示例。在读取数据和再读取数据中1至3位和和n-1位的值是不匹配的,其中n表示读取数据的数据大小。
在这种情况下,删除位置检测单元328将四个位置检测为删除位置。如果错误纠正能力(dmin-1)是3位,那么,删除位置的数量超出错误纠正能力。因此,通过删除纠正来进行纠正是不可行的。在这种情况下,数据替换单元329用具有指定值的位替换在被看作是删除的位置的位(1位),其中该位对应于错误纠正能力(3位)与删除位置(4位)的数量之间的差。图13C示出在替换后读取数据的示例。在读取数据中,第n-1个位被位值“0”替换。
数据替换单元329纠正删除位置数据,使得被替换的位置没有删除。图13D示出纠正后删除位置数据的示例。在删除位置数据中,被替换的第n-1个位被纠正为位值“0”。当删除位置的数量超出错误纠正能力时,读取处理单元320替换数据。然而,读取处理单元320可以不替换数据,并且可以仅将超出错误纠正能力的删除位置看作没有删除。在这种情况下,读取处理单元320不包括数据替换单元329,以及删除位置检测单元328可以将删除位置数据中的h-(dmin-1)位纠正为“0”。
[存储器控制器的操作示例]
图14是示出根据第二实施例的读取处理的操作示例的流程图。根据第二实施例的读取处理不同于第一实施例之处在于,步骤S947和S948被进一步执行。
在检测到删除位置后(步骤S946),存储器控制器300确定删除位置的数量h是否超出dmin-1(步骤S947)。如果其超出dmin-1(步骤S947:是),则存储器控制器300用具有指定值的数据替换在h-(dmin-1)删除位置的数据。而且,存储器控制器300将删除位置数据中对应于替换位置的位纠正为“0”(步骤S948)。如果h不比dmin-1多(步骤S947:否)或在步骤S948后,存储器控制器300执行删除纠正(步骤S949)。
如上所述,根据第二实施例,存储器控制器300用具有指定值的数据替换失配数据的数量,其中失配数据的数量对应于所检测出的删除位置数量与错误纠正能够纠正的错误数量之间的差。此外,存储器控制器300纠正删除位置数据,使得在被替换位置没有删除,并且将被看作删除的位的数量减少为小于误纠正能力。通过这样的方式,存储器控制器300可以在错误纠正能力内纠正读取数据的错误,即使检测到删除位置的数量超出错误纠正能力。
<3.第三实施例>
[读取处理单元的配置示例]
根据第一实施例,存储器控制器300读出读取数据,而未控制阀值来确定被保持在存储器地址的位值具有两个值中的任一个。存储器控制器300可以在控制阀值的同时,读出读取数据。通过将阀值控制为不同值的同时读出读取数据,由不是随机电报噪声的因素造成的删除位置可以被检测到。根据第三实施例的读取处理单元320不同于根据第一实施例之处在于,在控制阀值同时读出读取数据。
图15是示出根据第三实施例的读取处理单元320的配置示例的框图。根据第三实施例的读取处理单元320包括码字读取单元330和删除位置检测单元340,不同于第一实施例的码字读取单元323和删除位置检测单元328。
码字读取单元330将用于控制阀值的阀值控制信号和读取命令一起输出至非易失性存储器400。
当非易失性存储器400是ReRAM时,非易失性存储器400包括多个可变电阻元件,并且使用电阻值作为阀值。这些可变电阻元件可以在两个状态下记录1位数据:HRS(高阻状态)和LRS(低阻状态)。当被记录在这些可变电阻元件上的数据被读出时,阀值通常用于确定可变电阻元件的两个状态中的任一个:即所记录数据具有两个值中的任一个。这样的阀值被称为“标准阀值”。
一旦码字读取单元330从主机系统100接收到读取命令,码字读取单元330从存储器地址读出读取数据,同时由阀值控制信号将阀值控制在标准阀值。如果错误纠正单元325不能纠正读取数据,则码字读取单元330读出再读取数据,同时将阀值控制在设置为比标准阀值更高的高阻阀值。而且,码字读取单元330读出再读取数据,同时将阀值控制在被设置为比标准阀值更低的低阻阀值。在下文中,通过标准阀值读出的读取数据被称为“标准阀值读取数据RD_N”。通过高阻阀值读出的再读取数据被称为“高阻阀值再读取数据rRD_H”。通过低阻阀值读出的再读取数据被称为“低阻阀值再读取数据rRD_L”。
删除位置检测单元340确定高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L中的每个位的值是否匹配,以及将值不匹配的位置检测为删除位置。
错误纠正单元325基于从高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L所检测出的删除位置,执行删除纠正。如果错误纠正单元325不能纠正读取数据,则在自读出标准阀值读取数据RD_N的时间逝去RTN周期后,码字读取单元330使用标准阀值读出再读取数据。在下文中,使用标准阀值读出的再读取数据被称为“标准阀值再读取数据rRD_N”。
删除位置检测单元340从标准阀值读取数据RD_N和标准阀值再读取数据rRD_N检测删除位置。错误纠正单元325基于删除位置,执行删除纠正。
码字读取单元330读出高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L,接着读出标准阀值再读取数据rRD_N。然而,码字读取单元330可以读出标准阀值再读取数据rRD_N,接着读出高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L。
图16是示出根据第三实施例的可变电阻元件的电阻分布示例的示意图。横轴表示电阻R,以及纵轴表示作为相对值的单元数量相对分布。如图16所示,可变电阻元件的电阻分布被分为LRS和HRS。为了将高阻状态和低阻状态分开,通常使用标准阀值。
通过将可变电阻元件的高阻状态和低阻状态与逻辑值0和逻辑值1中的任一个关联,可变电阻元件起存储器单元的作用。逻辑值0和逻辑值1中的任一个可以与状态中的任一个关联。例如,高阻状态与逻辑值1关联,低阻状态与逻辑值0关联。
当HRS中的电阻值相对低,以及LRS中的电阻值相对高时,数据保持特性不是很好。当数据在高阻阀值和低阻阀值被读出并且值不同时,推定可变电阻元件的数据保持特性会被降低,以及被记录在可变电阻元件上的数据会被删除。
[码字读取单元的配置示例]
图17示出根据第三实施例的码字读取单元330的配置示例的框图。码字读取单元330包括传输定时控制单元331和阀值控制单元332。
传输定时控制单元331控制读取命令的传输定时。阀值控制单元332控制阀值控制信号的阀值。
当读取命令被保持在读取命令缓冲器321时,传输定时控制单元331向非易失性存储器400输出读取命令。另一方面,阀值控制单元332向非易失性存储器400输出用于将阀值控制为标准阀值的阀值控制信号。通过这样的方式,标准阀值读取数据RD_N被读出。
当传输定时控制单元331接收显示纠正失败的纠正结果No.1时,传输定时控制单元331从读取命令缓冲器321获取读取命令,以及两次输出读取命令。另一方面,当阀值控制单元332接收显示纠正失败的纠正结果No.1时,阀值控制单元332顺次输出用于将阀值控制为高阻阀值的阀值控制信号以及用于将阀值控制为低阻阀值的阀值控制信号。通过这样的方式,高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L被读出。
下一步,当传输定时控制单元331接收显示纠正是失败的纠正结果No.2时,传输定时控制单元331在自将标准阀值读取数据RD_N传输的时间逝去RTN周期后,再次输出读取命令。在纠正结果No.1被生成后,生成纠正结果No.2。另一方面,当阀值控制单元332接收显示纠正是失败的纠正结果No.2时,阀值控制单元332输出用于将阀值控制为标准阀值的阀值控制信号。通过这样的方式,标准阀值再读取数据rRD_N被读出。
[删除位置检测单元的配置示例]
图18是示出根据第三实施例的删除位置检测单元340的配置示例的框图。删除位置检测单元340包括阀值删除位置检测单元341和定时控制删除位置检测单元342。
阀值删除位置检测单元341用于从高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L检测删除位置。当阀值删除位置检测单元341接收到显示纠正是失败的纠正结果No.1时,阀值删除位置检测单元341获取高阻阀值再读取数据rRD_H和低阻阀值再读取数据rRD_L。阀值删除位置检测单元341检测数据的删除位置,以生成删除位置数据No.1,并将其提供给错误纠正单元325。
定时控制删除位置检测单元342用于从标准阀值读取数据RD_N和标准阀值再读取数据rRD_N检测删除位置。当定时控制删除位置检测单元342接收到显示纠正是失败的纠正结果No.2时,定时控制删除位置检测单元342获取标准阀值读取数据RD_N和标准阀值再读取数据rRD_N。定时控制删除位置检测单元342检测数据的删除位置,以生成删除位置数据No.2,并将其提供给错误纠正单元325。
[存储器控制器的操作示例]
图19是示出根据第三实施例的读取处理的操作示例的流程图。根据第三实施例的读取处理不同于第一实施例之处在于,步骤S961到S965被进一步执行。
如果错误纠正第一次是失败的(步骤S943:否),存储器控制器300以高阻阀值读出再读取数据(步骤S961)。存储器控制器300以低阻阀值读出再读取数据(步骤S962)。存储器控制器300检测以不同的阀值读取的两个再读取数据的删除位置(步骤S963)。基于所检测的删除位置,存储器控制器300执行删除纠正(步骤S964)。接着,存储器控制器300确定删除纠正是否成功(步骤S965)。如果错误纠正是成功的(步骤S965:是),存储器控制器300向主机系统100输出被纠正的读取数据,并结束读取处理。另一方面,如果删除纠正是失败的(步骤S950:否),存储器控制器300执行步骤S944。
如上所述,根据第三实施例,存储器控制器300通过检测以不同的阀值读出的两个数据的删除位置并纠正码字错误,来纠正由非随机电报噪声的因素造成的错误。
<4.第四实施例>
[存储器控制器的配置示例]
根据第一实施例,存储器控制器300存取非易失性存储器400,而不管在RTN期间内的失配的检测结果。然而,存储器控制器300可以基于关于失配的检测结果,控制对存储器地址的存取。根据第四实施例的存储器控制器300不同于第一实施例之处在于,对存储器地址的存取根据关于失配的检测结果来控制。
图20是示出根据第四实施例的存储器控制器300的配置示例的框图。根据第四实施例的读取控制器300不同于根据第一实施例之处在于,进一步包括存储器检查单元350和存取控制单元360。
存储器检查单元350检查RTN是否生成关于非易失性存储器400中每个存储器地址的失配。例如当存储器控制器300被激活时,存储器检查单元350执行检查。存储器检查单元350可以在工厂或维修时执行检查。在存储器控制器300发货操作期间,可以以比RTN周期更长的预定周期重复和执行该检查。
在检查时,存储器检查单元350从要被检查的存储器地址读出读取数据,以及在逝去RTN周期后读出再读取数据。存储器检查单元350基于读取数据是否匹配于再读取数据这一事实,检查RTN期间内的失配。存储器检查单元350检测所有存储器地址的失配,并且经由具有失配的存储器地址的信号线359通知存取控制单元360,其中该存储器地址作为缺陷地址。
存储器检查单元350执行关于所有存储器地址的检查。然而,存储器检查单元350可以被配置为执行关于一部分存储器地址的检查。例如,存储器检查单元350可以记录每个存储器地址的存取频率,以及仅仅检查具有高存取频率的存储器地址。
存取控制单元360控制对缺陷地址的存取。例如,存取控制单元保持其中逻辑地址与物理地址关联的表格,并且登记用于向表格显示物理地址是否是缺陷地址的标记。在这里,逻辑地址是由主机系统100定义的地址空间中的地址。物理地址是被分配给非易失性存储器400的每个块的存储器地址。
虽然存储器检查单元350和存取控制单元360被布置在存储器控制器300内部,然而,这些可以布置在存储器控制器300的外部。存取控制单元360是所要求的登记单元的示例。存储器控制器300是所要求的失配检测装置的示例。
根据第四实施例的写入处理单元310将不是缺陷地址的物理地址分配给由写入命令指定的逻辑地址,其中写入命令从主机系统100接收。
根据第四实施例的读取处理单元320确定对应于由从主机系统100接收的读取命令指定的逻辑地址的物理地址是否是缺陷地址。如果物理地址不是缺陷地址,则读取处理单元320从物理地址读出读取数据,以检测和纠正错误。另一方面,如果物理地址是缺陷地址,读取处理单元320向主机系统100输出读取错误。
虽然存储器检查单元350将一次检测出失配的存储器地址确定为缺陷地址,但可以对每个存储器地址进行多次检查。当失配的发生率超出特定值时,存储器地址可以被确定为缺陷地址。而且,存储器检查单元350可以将删除位置的数量超出错误检测能力的存储器地址登记为缺陷地址。在这种情况下,存储器检查单元350可以生成类似于第一实施例的删除位置,以及确定由数据示出的删除位置的数量是否超出错误纠正能力。
[存储器检查单元的配置示例]
图21是示出根据第四实施例的存储器检查单元350的配置示例的框图。存储器检查单元350包括读取命令发布单元351、读取命令缓冲器352、RTN周期计数器353、码字读取单元354、读取数据缓冲器355、失配检测单元356和缺陷地址通知单元357。
读取命令发布单元351发出用于从要被检查的存储器地址读出数据的读取命令。例如,读取命令发布单元351检查所有存储器地址,并顺次发出用于指定上述所有存储器地址的读取命令,并将读取命令保持在读取命令缓冲器352中。
读取命令缓冲器352、RTN周期计数器353和读取数据缓冲器335的配置类似于根据第一实施例的读取命令缓冲器321、RTN周期计数器322和读取数据缓冲器324的配置。
码字读取单元354每存储器地址读出读取数据和再读取数据。码字读取单元354以RTN周期间隔向非易失性存储器400输出被保持在读取命令缓冲器352上的读取命令中的每个两次。通过这样的方式,每存储器地址读出读取数据和再读取数据。
失配检测单元356基于读取数据是否匹配于再读取数据这一事实,检测RTN造成的失配。失配检测单元356检测每个存储器地址的失配,以及向缺陷地址通知单元357提供检测结果。
缺陷地址通知单元357向存取控制单元360通知其中检测出失配的存储器地址作为缺陷地址。缺陷地址通知单元357从读取命令缓冲器352获取对应于其中检测出失配的读取数据的读取命令,以及向存取控制单元360通知由读取命令指定的存储器地址作为缺陷地址。
[存储器控制器的操作示例]
图22是示出根据第四实施例的存储器控制器的操作示例的流程图。根据第四实施例的存储器控制器300的操作不同于第一实施例之处在于,步骤S910被进一步执行。
存储器控制器300首先执行用于检查非易失性存储器的存储器检查处理(步骤S910),以及接着执行步骤S931至S933和S940。
图23是示出根据第四实施例的存储器检查处理示例的流程图。存储器控制器300从要被检查的存储器地址中的任一个读出读取数据(步骤S911)。接着,存储器控制器300确定自读出读取数据的时间是否逝去RTN周期(步骤S944)。如果未逝去RTN周期(步骤S912:否),则存储器控制器300返回步骤S912。另一方面,如果已经逝去RTN周期(步骤S912:是),则存储器控制器300读出再读取数据(步骤S913)。
存储器控制器300基于读取数据是否匹配于再读取数据这一事实,检查RTN造成的失配(步骤S914)。存储器控制器300将其中检测出失配的存储器地址作为缺陷地址而登记,并限制随后的存取(步骤S915)。存储器控制器300确定是否所有存储器地址都被检查(步骤S916)。如果尚未检查所有存储器地址(步骤S916:否),则存储器控制器300返回步骤S911。另一方面,如果所有存储器地址都被检查(步骤S912:是),存储器控制器300结束存储器检查处理。
通过这样的方式,根据第四实施例,存储器控制器300可以检测读取数据和再读取数据中由随机电报噪声造成的失配。接着,存储器控制器300将其中生成失配的存储器地址作为缺陷地址而登记,从而限制对地址的存取。
<5.第五实施例>
[存储器控制器的配置示例]
根据第一实施例,基于预定的RTN周期值纠正数据错误。然而,失配的检测周期为最高的周期可以被非易失性存储器400的每个产品的特性变异、温度条件等改变。预定的RTN周期可以不同于实际的RTN周期值。因此,期望的是存储器控制器300自身测量非易失性存储器400中RTN期间内的失配的检测频率,以及根据所测量的值设定RTN周期。根据第五实施例的存储器控制器300不同于根据第一实施例之处在于,根据所测量的值设定RTN周期。
图24是示出根据第五实施例的存储器控制器300的配置示例的框图。不同于第一实施例,根据第五实施例的存储器控制器300进一步包括RTN周期设定单元370。
RTN周期设定单元370根据RTN期间内的失配的检测频率,确定RTN周期,以及向读取处理单元320设定RTN周期。例如当存储器控制器300被激活时,RTN周期设定单元370设定RTN周期。而且,RTN周期设定单元370可以在工厂或维修时设定RTN周期,或在存储器控制器300出厂操作期间,以比RTN周期更长的恒定周期执行RTN周期的设定处理。
在RTN周期设定时,RTN周期设定单元370将具有预定周期的周期设定为RTN周期的候选周期,以及从任何存储器地址读出码字作为读取数据。接着,RTN周期设定单元370在逝去候选周期后,从相同的存储器地址读出码字作为再读取数据。RTN周期设定单元370通过确定读取数据是否匹配于再读取数据,来检测在RTN期间内的失配。RTN周期设定单元370执行失配的检测处理一特定次数。接着,RTN周期设定单元370改变候选周期的长度,以及以类似程序执行失配的检测处理一特定次数。
RTN周期设定单元370将多个候选周期之中具有失配最大检测次数的周期选出作为RTN周期,以及将其值设定到读取处理单元320。当RTN周期被RTN周期设定单元370设定时,根据第五实施例的读取处理单元320基于该值读出再读取数据。
RTN周期设定单元370被配置为布置在存储器控制器300的内部。然而,其可以布置在存储器控制器300的外部。RTN周期设定单元370是所要求的失配检测装置的示例。
[RTN周期设定单元的配置示例]
图25是示出根据第五实施例的RTN周期设定单元370的配置示例的框图。RTN周期设定单元370包括读取命令发布单元371、读取命令缓冲器372、候选周期计数器373、候选周期设定单元374和码字读取单元375。而且,RTN周期设定单元370包括读取数据缓冲器376、失配检测单元377、失配数计数器378和RTN周期设定电路379。
读取命令发布单元371发出用于指定任何存储器地址的读取命令。读取命令发布单元371将所发出的读取命令保持在读取命令缓冲器372中。
读取命令缓冲器372和读取数据缓冲器376的配置类似于根据第一实施例的读取命令缓冲器321和读取数据缓冲器324的配置。
候选周期计数器373对候选周期进行计数。候选周期设定单元374将具有不同长度的多个时间中的任一个设定为候选周期。候选周期设定单元374向码字读取单元375提供所设定的候选周期。
码字读取单元375从指定的存储器地址读出读取数据和再读取数据。码字读取单元375基于候选周期,执行读取数据和再读取数据的读出处理特定次数,其中每次设定候选周期。
失配检测单元377通过确定每次被读出的读取数据和再读取数据是否匹配,检测RTN期间内的失配。失配检测单元377向失配数计数器378提供失配的检测结果。
失配数计数器378计数每个候选周期的失配数量。失配数计数器378向RTN周期设定电路379提供计数结果。
RTN周期设定电路379将多个候选周期之中具有最大失配检测数量的周期设定为RTN周期。RTN周期设定电路379向读取处理单元320中的RTN周期计数器322提供所设定的RTN周期的值。
失配检测单元377不检测读取数据和再读取数据中每个位的失配,而是可以检测每个位的失配。在这种情况下,类似于第一实施例,失配检测单元377生成删除位置数据,并向失配数计数器378提供该数据。接着,失配数计数器378计数删除位置的数量,作为每次失配的数量。如果失配检测数量是多次,则失配数量计数器378向RTN周期设定电路379输出每次检测失配数量的总数量作为计数结果。
图26是示出根据第五实施例的每个RTN周期的失配数量的计数结果的示例的直方图。纵轴表示失配检测的数量,以及横轴表示候选周期。在具有不同长度的T1~T9周期中,T4周期中的失配检测的数量最大。在这种情况下,T4周期被用作RTN周期。
[存储器控制器的操作示例]
图27是示出根据第五实施例的存储器控制器300的操作示例的流程图。根据第五实施例的存储器控制器300的操作不同于第一实施例之处在于,步骤S920被进一步执行。
存储器控制器300首先执行用于设定RTN周期的RTN周期设定处理(步骤S920),以及接着执行步骤S931至S933和S940。
图28是示出根据第五实施例的RTN周期示例的流程图。存储器控制器300从任一个存储器地址读出读取数据(步骤S921)。接着,存储器控制器300确定自读出读取数据的时间是否逝去候选周期(步骤S922)。如果未逝去候选周期(步骤S922:否),则存储器控制器300返回步骤S922。如果已经逝去候选周期(步骤S922:是),则存储器控制器300读出再读取数据(步骤S923)。存储器控制器300通过确定读取数据和再读取数据是否匹配,检测RTN期间内的失配(步骤S924)。如果检测到失配,则存储器控制器300计数候选周期中失配检测的数量(步骤S925)。
接着,存储器控制器300确定候选周期中读取数据和再读取数据的读出数量是否达到特定次数(步骤S926)。如果读出数量未达到特定次数(S926:否),则存储器控制器300返回步骤S921。如果读出数量达到特定次数(S926:是),则存储器控制器300改变候选周期(步骤S927)。
存储器控制器300确定是否在具有不同长度的所有多个候选周期中计算了失配检测的数量(步骤S928)。如果未在所有周期中计算失配检测的数量(步骤S928:否),则存储器控制器300返回步骤S921。如果所有周期计算了失配检测的数量(步骤S928:是),则存储器控制器300将失配检测数量(检测频率)最高的候选周期设定为RTN周期(步骤S929)。在步骤S929后,存储器控制器300结束RTN周期设定处理。
通过这样的方式,根据第五实施例,存储器控制器300可以测量要被控制的非易失性存储器400中RTN期间内的失配的检测频率,以及根据所测量的值设定RTN周期。因此,存储器控制器300可以更准确纠正数据的错误。
<6.第六实施例>
[存储器控制器的配置示例]
在第一实施例中,存储器控制器300基于恒定RTN周期,检测删除位置。然而,RTN周期的长度可以根据温度而改变。根据第六实施例的存储器控制器300不同于第一实施例之处在于,RTN周期的长度根据温度而改变。
图29是示出根据第六实施例的存储器控制器300的配置示例的框图。根据第六实施例的存储器控制器300不同于第一实施例之处在于,进一步包括温度获取单元380和RTN周期确定单元390。
温度获取单元380获取由非易失性存储器400内的温度传感器测量的温度。温度获取单元380向RTN周期确定单元390提供所获取的温度。
RTN周期确定单元390根据温度,确定RTN周期的长度。RTN周期确定单元390以例如比RTN周期更长的特定频率确定RTN周期的长度。
一般来说,温度越高时,非易失性存储器400中的各种噪声(例如随机电报噪声)的发生率增加。因此,当温度更高时,RTN周期确定单元390缩短RTN周期。RTN周期确定单元390向读取处理单元320提供具有确定长度的RTN周期。
根据第六实施例的读取处理单元320从RTN周期确定单元390接收RTN周期的值,以及基于该值读出再读取数据。
虽然温度获取单元380和RTN周期确定单元390被布置在存储器控制器300内部,然而,他们中的一个或两者可以布置在存储器控制器300的外部。
通过这样的方式,根据第六实施例,存储器控制器300可以根据温度改变RTN周期的长度。因此,即使温度是变化的,存储器控制器300也可以根据当前温度准确纠正RTN周期的数据。
上述实施例示出用于实现本技术的示例,并且存在实施例中的情况与限定本发明权利要求的情况之间的对应关系。类似地,存在限定本发明权利要求的情况与具有相同主题的本技术的实施例中的情况之间的对应关系。本技术不限于上述实施例,并且在不背离本发明精神的前提下,可以通过各种更改和变化加以实现。
在上述实施例中描述的过程可以被看作是包括一系列步骤的方法,或可以被看作是由计算机执行的一系列步骤的程序,或记录程序的记录介质。作为记录介质,CD(光盘)、MD(迷你盘)、DVD(数字通用光盘)、存储卡、蓝光盘TM等可以被使用。
本技术可以具有下列配置。
[1]一种错误检测和纠正装置,其包括:
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去预定时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,所述多个码元通过检测删除位置来提高错误纠正能力;
定时控制删除位置检测单元,用于通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,来将具有不匹配值的码元的位置检测作为所述码字中的所述删除位置;以及
错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置纠正错误。
[2]根据[1]的错误检测和纠正装置,其中
当检测出的所述删除位置的总数量超出对应于所述错误纠正能力的预定数量时,所述错误纠正单元以对应于所检测出的删除位置中的所述删除位置的总数量与所述预定数量之间的差的位置数量不是删除位置的方式纠正错误。
[3]根据[2]的错误检测和纠正装置,其进一步包括:
数据替换单元,当所检测出的所述删除位置的总数量超出所述预定数量时,所述数据替换单元用具有特定值的数据替换数目对应于所述差的所述删除位置处的码元,并将其提供给所述错误纠正单元,
所述错误纠正单元以被具有所述特定值的数据替换的位置不是所述删除位置的方式纠正错误。
[4]根据[3]的错误检测和纠正装置,其中
基于将所述码元的两个值中的一个值反转到另一个值的可能性以及将所述码元的另一个值反转到所述一个值的可能性,来确定所述特定值。
[5]根据[1]到[4]中任意一个的错误检测和纠正装置,进一步包括:
阀值控制读出单元,将用于确定被保持在所述存储器地址中的所述码元的值是两个值中哪一个的阀值控制为第一值,从所述存储器地址读出所述码字作为第一数据,将所述阀值控制为不同于所述第一值的第二值,以及从所述存储器地址读出码字作为第二数据;以及
阀值控制删除位置检测单元,用于确定所述第一数据和所述第二数据中每个码元的值是否匹配,以及检测具有不匹配值的码元的位置作为所述码字中的删除位置,
所述错误纠正单元对所述定时控制删除位置检测单元检测出所述删除位置的所述码字中的错误进行纠正,以及对所述阀值控制删除位置检测单元检测出所述删除位置的码字中的错误进行纠正。
[6]根据[1]到[5]中任意一个的错误检测和纠正装置,其进一步包括:
读取数据错误检测单元,当所述码字读出单元执行读取处理时,检测所述读取数据中的错误,
当所述读取数据错误检测单元检测到所述错误时,所述码字读出单元执行再读取处理。
[7]根据[1]到[6]中任意一个的错误检测和纠正装置,其进一步包括:
获取温度的温度获取单元;以及
确定单元,根据所述读取处理被执行前的温度,确定所述预定时间的长度,
当所述预定时间的长度被确定时,所述码字读出单元执行所述读取处理。
[8]一种失配检测装置,包括:
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去预定时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据;
失配检测单元,检测所述读取数据和所述再读取数据是否失配;以及
登记单元,将检测出所述失配的所述存储器地址作为禁止进行存取的缺陷地址来登记。
[9]根据[8]的失配检测装置,其中
失配检测单元确定每个码元的值是否失配,以及
所述失配检测单元针对每个码元确定所述值是否失配,以及其中当被确定为失配的码元的数量超出预定阀值时,所述登记单元将存储器地址登记为缺陷地址。
[10]一种失配检测装置,其包括:
供给单元,按顺序提供具有不同长度的多个时间作为候选时间;
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去所述候选时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,每次设定所述候选时间都执行一定次数的所述读取处理和所述再读取处理;
失配检测单元,每次执行所述读取处理和所述再读取处理时,检测所述读取数据和所述再读取数据是否失配;
计数器,对所述多个时间的每一个计数检测为失配的次数;以及
设定单元,基于所述检测次数,在所述多个时间中,设定检测为失配的频率最高的时间。
[11]一种存储器系统,其包括:
将包括多个码元的码字存储到存储器地址的存储器,所述多个码元通过检测删除位置来提高错误纠正能力;
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,以及在自读出所述读取数据的时间逝去预定时间后,执行再读取处理,以从所述存储器地址读出码字作为再读取数据;
定时控制删除位置检测单元,通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,检测具有不匹配的值的码元的位置,作为所述码字中的删除位置;以及
错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置,纠正错误。
[12]一种检测和纠正错误的方法,其包括:
由所述码字读出单元执行的码字读出步骤,用于执行读取处理,以从存储器地址读出包括多个码元的码字作为读取数据,以及在自读出所述读取数据的时间逝去预定时间后,执行再读取处理,以从所述存储器地址读出码字作为再读取数据;
由所述定时控制删除位置检测单元执行的定时控制删除位置检测步骤,用于通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,检测具有不匹配的值的码元的位置作为所述码字中的删除位置;以及
由所述错误纠正单元执行的错误纠正步骤,基于被检测出所述删除位置的所述码字中的删除位置,纠正错误。
本领域的技术人员应当理解,根据设计要求和其他因素,可以出现各种修改、组合、子组合和变化,只要这些变化和修改在本发明附属权利要求及其等价要求的范围内。
Claims (12)
1.一种错误检测和纠正装置,包括:
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去RTN周期后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,所述多个码元通过检测删除位置来提高错误纠正能力,其中,所述RTN周期是随机电报噪声使数据值波动的周期;
定时控制删除位置检测单元,用于通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,来将具有不匹配值的码元的位置检测作为所述码字中的所述删除位置;以及
错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置纠正错误。
2.根据权利要求1所述的错误检测和纠正装置,其中,当检测出的所述删除位置的总数量超出对应于所述错误纠正能力的预定数量时,所述错误纠正单元以对应于所检测出的删除位置中的所述删除位置的总数量与所述预定数量之间的差的数量的位置不是删除位置的方式纠正错误。
3.根据权利要求2所述的错误检测和纠正装置,进一步包括:
数据替换单元,当所检测出的所述删除位置的总数量超出所述预定数量时,所述数据替换单元用具有特定值的数据替换数目对应于所述差的所述删除位置处的码元,并将经替换的码元提供给所述错误纠正单元,
所述错误纠正单元以被具有所述特定值的数据替换的位置不是所述删除位置的方式纠正错误。
4.根据权利要求3所述的错误检测和纠正装置,其中,基于将所述码元的两个值中的一个值反转到另一个值的可能性以及将所述码元的另一个值反转到所述一个值的可能性,来确定所述特定值。
5.根据权利要求1所述的错误检测和纠正装置,进一步包括:
阀值控制读出单元,将用于确定被保持在所述存储器地址中的所述码元的值是两个值中哪一个的阀值控制为第一值,从所述存储器地址读出所述码字作为第一数据,将所述阀值控制为不同于所述第一值的第二值,以及从所述存储器地址读出码字作为第二数据;以及
阀值控制删除位置检测单元,用于确定所述第一数据和所述第二数据中每个码元的值是否匹配,以及检测具有不匹配值的码元的位置作为所述码字中的删除位置,
所述错误纠正单元对所述定时控制删除位置检测单元检测出所述删除位置的所述码字中的错误进行纠正,以及对所述阀值控制删除位置检测单元检测出所述删除位置的码字中的错误进行纠正。
6.根据权利要求1所述的错误检测和纠正装置,进一步包括:
读取数据错误检测单元,当所述码字读出单元执行读取处理时,检测所述读取数据中的错误,
当所述读取数据错误检测单元检测到所述错误时,所述码字读出单元执行再读取处理。
7.根据权利要求1所述的错误检测和纠正装置,进一步包括:
获取温度的温度获取单元;以及
确定单元,根据所述读取处理被执行前的温度,确定所述RTN周期的长度,
当所述RTN周期的长度被确定时,所述码字读出单元执行所述读取处理。
8.一种失配检测装置,包括:
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去RTN周期后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,其中,所述RTN周期是随机电报噪声使数据值波动的周期;
失配检测单元,检测所述读取数据和所述再读取数据是否失配;以及
登记单元,将检测出所述失配的所述存储器地址作为禁止进行存取的缺陷地址来登记。
9.根据权利要求8所述的失配检测装置,其中,所述失配检测单元确定每个码元的值是否失配,以及其中当被确定为失配的码元的数量超出预定阀值时,所述登记单元将所述存储器地址登记为缺陷地址。
10.一种失配检测装置,包括:
供给单元,按顺序提供具有不同长度的多个时间作为候选时间;
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,并且在自读出所述读取数据的时间逝去所述候选时间后,执行再读取处理以从所述存储器地址读出码字作为再读取数据,每次设定所述候选时间都执行一定次数的所述读取处理和所述再读取处理;
失配检测单元,每次执行所述读取处理和所述再读取处理时,检测所述读取数据和所述再读取数据是否失配;
计数器,对所述多个时间计数检测为失配的次数;以及
设定单元,基于检测的次数,在所述多个时间中,将检测为失配的频率最高的时间设定为RTN周期,其中,所述RTN周期是随机电报噪声使数据值波动的周期。
11.一种存储器系统,包括:
将包括多个码元的码字存储到存储器地址的存储器,所述多个码元通过检测删除位置来提高错误纠正能力;
码字读出单元,执行读取处理以从存储器地址读出包括多个码元的码字作为读取数据,以及在自读出所述读取数据的时间逝去RTN周期后,执行再读取处理,以从所述存储器地址读出码字作为再读取数据,其中,所述RTN周期是随机电报噪声使数据值波动的周期;
定时控制删除位置检测单元,通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,检测具有不匹配的值的码元的位置,作为所述码字中的所述删除位置;以及
错误纠正单元,基于被检测出所述删除位置的所述码字中的所述删除位置,纠正错误。
12.一种检测和纠正错误的方法,包括:
由码字读出单元执行的码字读出步骤,用于执行读取处理,以从存储器地址读出包括多个码元的码字作为读取数据,以及在自读出所述读取数据的时间逝去RTN周期后,执行再读取处理,以从所述存储器地址读出码字作为再读取数据,所述多个码元通过检测删除位置来提高错误纠正能力,其中,所述RTN周期是随机电报噪声使数据值波动的周期;
由定时控制删除位置检测单元执行的定时控制删除位置检测步骤,用于通过确定所述读取数据和所述再读取数据中每个码元的值是否匹配,检测具有不匹配的值的码元的位置作为所述码字中的所述删除位置;以及
由错误纠正单元执行的错误纠正步骤,基于被检测出所述删除位置的所述码字中的所述删除位置,纠正错误。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012-242975 | 2012-11-02 | ||
JP2012242975A JP5870901B2 (ja) | 2012-11-02 | 2012-11-02 | 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103811075A CN103811075A (zh) | 2014-05-21 |
CN103811075B true CN103811075B (zh) | 2018-02-02 |
Family
ID=50623536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310513810.2A Active CN103811075B (zh) | 2012-11-02 | 2013-10-25 | 错误检测和纠正装置及方法、失配检测装置及存储器系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9110827B2 (zh) |
JP (1) | JP5870901B2 (zh) |
CN (1) | CN103811075B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102089532B1 (ko) * | 2013-02-06 | 2020-03-16 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9489252B1 (en) | 2013-11-08 | 2016-11-08 | Amazon Technologies, Inc. | File recovery using diverse erasure encoded fragments |
US9753807B1 (en) | 2014-06-17 | 2017-09-05 | Amazon Technologies, Inc. | Generation and verification of erasure encoded fragments |
KR102318561B1 (ko) | 2014-08-19 | 2021-11-01 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법 |
US9552254B1 (en) | 2014-09-29 | 2017-01-24 | Amazon Technologies, Inc. | Verification of erasure encoded fragments |
US9489254B1 (en) * | 2014-09-29 | 2016-11-08 | Amazon Technologies, Inc. | Verification of erasure encoded fragments |
US10489243B2 (en) | 2017-03-13 | 2019-11-26 | Toshiba Memory Corporation | Memory controller and memory system |
GB201710839D0 (en) * | 2017-07-05 | 2017-08-16 | Irdeto Bv | Data protection |
KR102418856B1 (ko) | 2017-11-02 | 2022-07-07 | 삼성전자주식회사 | 데이터 저장 장치 |
KR20190056890A (ko) | 2017-11-17 | 2019-05-27 | 삼성전자주식회사 | 메모리 장치 및 그것의 동작 방법 |
KR102370278B1 (ko) * | 2017-11-30 | 2022-03-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 |
JP7213130B2 (ja) | 2019-04-24 | 2023-01-26 | 株式会社メガチップス | 不揮発性記憶装置、データ読み出し方法、および、プログラム |
CN113656218A (zh) * | 2021-07-23 | 2021-11-16 | 深圳市宏旺微电子有限公司 | 闪存数据重读方法、装置及计算机可读存储介质 |
US11861175B2 (en) * | 2022-03-10 | 2024-01-02 | International Business Machines Corporation | Latency in data storage systems |
US11761057B1 (en) * | 2022-03-28 | 2023-09-19 | Lyten, Inc. | Method for refining one or more critical minerals |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3708619B2 (ja) * | 1996-03-25 | 2005-10-19 | 株式会社東芝 | 消失フラグを用いたエラー訂正システム |
JP4824936B2 (ja) * | 2005-03-10 | 2011-11-30 | 株式会社日立製作所 | ダイナミック・ランダム・アクセス・メモリ装置の検査方法 |
KR101466270B1 (ko) * | 2008-09-19 | 2014-11-28 | 삼성전자주식회사 | 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법 |
JP2010108029A (ja) * | 2008-10-28 | 2010-05-13 | Panasonic Corp | 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
CN102141944B (zh) * | 2010-02-02 | 2012-12-12 | 慧荣科技股份有限公司 | 用来减少无法更正的错误的方法以及记忆装置及其控制器 |
JP2012089085A (ja) * | 2010-10-22 | 2012-05-10 | Toshiba Corp | 半導体メモリ装置および半導体メモリシステム |
-
2012
- 2012-11-02 JP JP2012242975A patent/JP5870901B2/ja active Active
-
2013
- 2013-10-09 US US14/049,248 patent/US9110827B2/en active Active
- 2013-10-25 CN CN201310513810.2A patent/CN103811075B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103811075A (zh) | 2014-05-21 |
JP5870901B2 (ja) | 2016-03-01 |
US9110827B2 (en) | 2015-08-18 |
US20140129904A1 (en) | 2014-05-08 |
JP2014093654A (ja) | 2014-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103811075B (zh) | 错误检测和纠正装置及方法、失配检测装置及存储器系统 | |
KR101750662B1 (ko) | 데이터 에러 교정용 회로, 장치, 및 방법 | |
JP6339137B2 (ja) | メモリデバイス、および記憶されているビットシーケンスを訂正するための方法 | |
US9075742B2 (en) | Memory device | |
US8479062B2 (en) | Program disturb error logging and correction for flash memory | |
TWI509624B (zh) | 快閃記憶體裝置、記憶體控制器及快閃記憶體的控制方法 | |
WO2016063592A1 (ja) | メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法 | |
WO2016013285A1 (ja) | メモリコントローラおよびメモリコントローラの制御方法 | |
KR20180089104A (ko) | 메모리 모듈, 이를 포함하는 메모리 시스템 및 이의 에러 정정 방법 | |
US7747926B2 (en) | Methods and apparatus for a memory device with self-healing reference bits | |
CN108228381A (zh) | 存储系统及其错误校正方法 | |
US8738989B2 (en) | Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page | |
KR101527690B1 (ko) | 낸드 플래시 메모리 테스트 인터페이스 장치 및 그 운용방법 | |
US10025652B2 (en) | Error location pointers for non volatile memory | |
JP6497395B2 (ja) | メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法 | |
CN114203252A (zh) | 非易失存储器的坏块检测方法、装置、设备及存储介质 | |
TWI437572B (zh) | 運用錯誤控制碼於記憶元件的存取方法與系統 | |
US11424765B2 (en) | ECC decoders having low latency | |
US9519539B2 (en) | Monitoring data error status in a memory | |
CN113284533B (zh) | 存储器装置和调整用于存储器装置的参数的方法 | |
JP2003115196A5 (zh) | ||
TW200539607A (en) | System and method for data redundancy checking and correcting | |
TW202101470A (zh) | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 | |
CN110825557A (zh) | 存储方法及存储系统 | |
CN112151104A (zh) | 存储器存放装置及其动态数据修复的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |