CN109947674A - 数据处理器件和数据处理方法 - Google Patents

数据处理器件和数据处理方法 Download PDF

Info

Publication number
CN109947674A
CN109947674A CN201811557353.6A CN201811557353A CN109947674A CN 109947674 A CN109947674 A CN 109947674A CN 201811557353 A CN201811557353 A CN 201811557353A CN 109947674 A CN109947674 A CN 109947674A
Authority
CN
China
Prior art keywords
ecc
circuit
data
matrix
mark
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.)
Pending
Application number
CN201811557353.6A
Other languages
English (en)
Inventor
坪井幸利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN109947674A publication Critical patent/CN109947674A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding

Abstract

本申请涉及数据处理器件和数据处理方法。本发明用于使用ECC提高数据错误检测中的检测性能。数据处理器件1包括编码器器件2,编码器器件2包括:编码器单元,用于通过根据第一ECC生成矩阵执行操作来生成ECC;以及编码器单元5,用于通过根据第二ECC生成矩阵执行操作来生成ECC,所述第二ECC生成矩阵通过置换第一ECC生成矩阵的列而获得。编码器单元4为第一数据生成第一ECC。编码器单元5为通过置换第一数据的位而获得的第二数据生成第二ECC。

Description

数据处理器件和数据处理方法
相关申请的交叉引用
2017年12月20日提交的日本专利申请No.2017-243558的公开内容,包括说明书、附图和摘要,通过引用整体并入本文。
技术领域
本发明涉及数据处理器件和数据处理方法,尤其涉及用于检测数据错误的数据处理器件和数据处理方法。
背景技术
作为具有单位(single-bit)错误校正和双位(double-bit)错误检测功能的ECC(错误校正码)的特性(所谓的SEC-DED(单错误校正和双错误检测)),众所周知无法检测到4个或更多个偶数位错误,并且存在将3个或更多个奇数位错误错误地识别为单位错误的情况,导致错误地校正正常位(非专利文献1)。
另一方面,专利文献1公开了一种用于在使用能够进行单错误校正和双错误检测的ECC的错误检测电路中以相对高的速率实现多位(3位或更多位)的错误检测的技术。该错误检测电路使用ECC和每个数据位中出现“1”的计数,并且即使当仅通过使用ECC的检查不能成功检测到数据错误时,也能够正确检测错误。
(专利文献1)日本未审查专利申请公开No.2005-4288
(非专利文献1)M.Y.Hsiao;“A Class of Optimal Minimum Odd-weight-columnSEC-DED Codes”,IBM Journal of Research and Development,第14卷,第4期,由IBM出版,1970年7月。
发明内容
然而,根据专利文献1公开的技术,需要提供对包括在数据中的“1”的数量进行计数的计数器电路,并且计数处理需要多个时钟的周期。因此,它需要额外的时间来写入和读取存储器,或者需要提高时钟频率。因此,期望开发一种在使用ECC的数据错误检测中提高检测性能的新方法。
从本说明书的描述和附图中,本发明的其他问题和新特征将变得清楚。
根据一个实施例,一种数据处理器件包括:编码器器件,被设置有通过根据第一ECC生成矩阵执行操作来生成ECC的第一编码器单元以及通过根据第二ECC生成矩阵执行操作来生成ECC的第二编码器单元,第二ECC生成矩阵是通过置换第一ECC生成矩阵的列而获得的。第一编码器单元为第一数据生成第一ECC。第二编码器单元为通过置换第一数据的位而获得的第二数据生成第二ECC。
根据一个实施例,可以使用ECC来改善数据的错误检测中的检测性能。
附图说明
图1是示出根据实施例概要的数据处理器件1的配置示例的框图;
图2是示出根据比较示例的编码器器件90的框图;
图3是示出用于ECC编码器电路21的ECC生成矩阵的图;
图4示出了表示由图3中所示的ECC生成矩阵执行的操作的等式;
图5是示出ECC编码器电路21的具体电路配置的示例的框图;
图6是示出根据比较示例的解码器器件91的框图;
图7是示出用于ECC解码器电路31的ECC检查矩阵的图;
图8示出了表示由图7中所示的ECC检查矩阵执行的操作的等式;
图9是示出ECC解码器电路31的具体电路配置的示例的框图;
图10是概述根据比较示例的错误检测算法中出现的错误检测错失的表;
图11是概述根据比较示例的错误检测算法中出现误校正的情况的次数的表;
图12是示出根据实施例的数据处理器件的示例的框图;
图13是示出编码器器件20的框图;
图14是示出用于ECC编码器电路22的ECC生成矩阵的图;
图15是示出ECC编码器电路22的具体电路配置的示例的框图;
图16是示出解码器器件30的框图;
图17是指示用于解码器器件30的ECC解码器电路31的ECC检查矩阵的图;
图18是示出用于解码器器件30的ECC解码器电路32的ECC检查矩阵的图;
图19是示出ECC解码器电路32的具体电路配置的示例的框图。
图20A是示出用于从64位输入数据生成8位ECC的ECC生成矩阵的示例的图;
图20B是示出用于从64位输入数据生成8位ECC的ECC生成矩阵的示例的图;
图21是示出解码器器件30A的配置的框图;
图22是概述在根据实施例2的错误检测算法中出现的错误检测错失的表;
图23是概述在根据实施例2的错误检测算法中出现误校正的情况的次数的表;
图24是示出编码器器件20A的框图;
图25是示出用于ECC编码器电路23的ECC生成矩阵的示例的图;
图26是示出解码器器件30B的框图;
图27是示出用于解码器器件30B的ECC解码器电路31的ECC检查矩阵的图;
图28是示出用于解码器器件30B的ECC解码器电路34的ECC检查矩阵的图;
图29是示出解码器器件30C的框图;
图30是概述在根据实施例3的修改示例的错误检测算法中出现的错误检测错失的表;
图31是概述在根据实施例3的修改示例的错误检测算法中出现误校正的情况的次数的表;
图32是示出编码器器件20B的框图;
图33示出了ECC生成全矩阵、ECC生成子矩阵和检查位生成矩阵的示例;
图34是示出检查位生成电路24的具体电路结构的示例的框图;
图35是示出解码器器件30D的配置的框图;
图36示出了ECC检查全矩阵、ECC检查子矩阵和检查位检查矩阵的示例;
图37是示出解码器器件30D的症状生成电路303和症状解码器电路312的具体电路配置的示例的框图;
图38是概述在根据实施例4的错误检测算法中出现的错误检测错失的表;以及
图39是概述在根据实施例4的错误检测算法中出现误校正的情况的次数的表。
具体实施方式
在以下描述和附图中,为了说明的清楚,适当地进行缩写和简化。在每个附图中,相同的符号或附图标记附于相同元件,并且适当省略其重复说明。
<实施例概要>
首先,在详细说明实施例之前解释实施例的概要。图1是示出根据实施例概述的数据处理器件1的配置示例的框图。数据处理器件1包括编码器器件2和解码器器件3。
编码器器件2包括编码器单元4和编码器单元5。第一数据被输入到编码器器件2中。然后,第一数据被输入到编码器单元4,第二数据被输入到编码器单元5。这里,第一数据是要存储在存储器6中的数据。第二数据是通过置换第一数据的位而获得的数据。例如,第二数据可以是通过将第一数据的每个位在预定方向上旋转指定的步数而获得的数据,或者可以是通过相互置换第一数据的多个预定位而获得的数据。
编码器单元4通过根据第一ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC(即,SEC-DED码)。编码器单元5通过根据通过置换第一ECC生成矩阵的列而获得的第二ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC(即,SEC-DED码)。第二数据中的上述置换对应于第二ECC生成矩阵中的上述置换。也就是说,在用于从第一数据导出第二数据的位的置换中的置换源的位位置对应于在用于从第一ECC生成矩阵导出第二ECC生成矩阵的列的置换中的置换源的列号。用于导出第二数据的位的置换中的置换目的地的位位置对应于用于导出第二ECC生成矩阵的列的置换中的置换目的地的列号。
编码器单元4为第一数据生成第一ECC。编码器单元5为第二数据生成第二ECC。然后,编码器器件2将作为存储对象的第一数据、从第一数据生成的第一ECC和从第二数据生成的第二ECC存储在存储器6中。
解码器器件3基于从存储器6读取的第一数据、第一ECC和第二ECC,生成指示第一数据的错误出现状态的通知信号。
如上所述,在数据处理器件1中生成两个不同的ECC。导致错失的错误的出现模式取决于ECC生成矩阵。当详细描述时,即使对于在使用第一ECC的检测处理中导致错失的错误的出现模式,也可以在使用与第一ECC不同的第二ECC的检测处理中发现该错误。注意到这一点,在本实施例中,使用从不同ECC生成矩阵生成的第一ECC和第二ECC。因此,根据数据处理器件1,与仅通过使用第一ECC的数据错误检测相比,可以提高检测性能。
<比较示例>
接下来,解释比较示例以便于理解实施例的细节。图2是示出根据比较示例的编码器器件90的框图。作为示例,编码器器件90从8位输入数据(D0-D7)生成5位ECC(E0-E4)。然后,编码器器件90输出作为写入数据的输入数据(D0-D7)和所生成的ECC。编码器器件90包括ECC编码器电路21,并且通过ECC编码器电路21生成ECC。
例如,ECC编码器电路21通过根据图3所示的ECC生成矩阵执行操作,生成能够进行单错误校正和双错误检测的ECC。图3中所示的ECC生成矩阵是用于从将被作为写入数据写入存储器6中的8位输入数据(D0-D7)生成5位ECC(E0-E4)的矩阵。图3中所示的ECC生成矩阵的每一列具有彼此不同的位模式,并且每列包括奇数个1。因此,图3中所示的ECC生成矩阵是用于生成能够进行单错误校正和双错误检测的ECC的矩阵。ECC生成矩阵的每列对应于输入数据的每个位,并且每行对应于要生成的ECC的每个位。
具体地,ECC编码器电路21执行图4中所示的操作。图4示出了表示由图3中所示的ECC生成矩阵执行的操作的等式。也就是说,ECC编码器电路21通过将输入数据乘以ECC生成矩阵来生成ECC。当以另一种方式表示时,ECC编码器电路21通过关于由ECC生成矩阵指定的位位置的组合、执行输入数据的位值的XOR(异或逻辑和)操作来生成ECC。例如,由ECC生成矩阵的第一行指定的位位置的组合是(D0,D1,D2,D3,D4),并且ECC编码器电路21通过对这些值执行XOR运算来计算E0。
图5是示出ECC编码器电路21的具体电路配置的示例的框图。如上所述,ECC编码器电路21通过根据图3所示的ECC生成矩阵执行XOR操作,从8位输入数据(D0-D7)生成5位ECC(E0-E4)。ECC编码器电路21包括ECC生成电路200,并且通过ECC生成电路200生成ECC。如图5所示,ECC生成电路200配置有五个XOR电路200a-200e。XOR电路200a-200d是5输入XOR电路,XOR电路200e是4输入XOR电路。XOR电路200a-200e分别对应于图4中所示的算术表达式,并且每个电路确定5位ECC(E0-E4)中的一位的值。
获得E0作为XOR电路200a的输出。具体地,XOR电路200a计算D0、D1、D2、D3和D4的XOR,并将计算结果输出为E0。以相同的方式,获得E1作为XOR电路200b的输出。获得E2作为XOR电路200c的输出。获得E3作为XOR电路200d的输出。获得E4作为XOR电路200e的输出。从ECC编码器电路21输出的数据(D0-D7)和ECC(E0-E4)存储在存储器6中。
图6是示出根据比较示例的解码器器件91的框图。从存储器6读取的数据(D0-D7)和类似地从存储器6读取的ECC(E0-E4)被输入到解码器器件91的ECC解码器电路31中。基于已经输入的读取数据(D0-D7)和ECC(E0-E4),ECC解码器电路31确定读取数据(D0-D7)和ECC(E0)的错误的存在或不存在,并输出错误通知信号。当检测到读取数据中包括单位错误时,解码器器件91的ECC解码器电路31输出已经校正了单位错误的数据作为输出数据(D'0-D'7)。在其他情况下,ECC解码器电路31输出所输入的读取数据作为输出数据(D'0-D'7)。
ECC解码器电路31根据错误的存在或不存在来输出错误通知信号。具体地,ECC解码器电路31输出“单位错误通知信号”,其指示单位错误是否包括在由读取数据和ECC组成的位串中,以及“双位错误通知信号”,其指示位串中是否包括两位或更多位错误。当单位错误通知信号是1并且双位错误通知信号是0时,ECC解码器电路31通知位串具有单位错误,并且用于读取数据的错误校正数据被输出作为输出数据(D'0-D'7)。当单位错误通知信号为0并且双位错误通知信号为1时,ECC解码器电路31通知可能具有错误的数据被输出作为输出数据(D'0-D'7)。当单位错误通知信号为0并且双位错误通知信号也为0时,ECC解码器电路31通知没有错误的读取数据被输出作为输出数据(D'0-D'7)。
例如,ECC解码器电路31通过根据图7所示的ECC检查矩阵执行操作来生成症状码,并基于生成的症状码来生成错误通知信号并校正错误。图7中所示的ECC检查矩阵是用于从存储器6读取的8位读取数据(D0-D7)和5位ECC(E0-E4)生成5位症状码(S0-S4)的矩阵。ECC检查矩阵是将单元矩阵与ECC生成矩阵组合的矩阵。ECC检查矩阵的每列对应于输入数据的每个位(读取数据和ECC),并且每行对应于要生成的症状码的每个位。
具体地,ECC解码器电路31执行图8中所示的操作。图8示出了表示由图7中的ECC检查矩阵执行的操作的等式。也就是说,ECC解码器电路31通过将输入数据(读取数据和ECC)乘以ECC检查矩阵来生成症状码。当以另一种方式表示时,ECC解码器电路31通过关于由ECC检查矩阵指定的位位置的组合、执行输入数据的位值的XOR运算,来生成症状码。例如,由ECC检查矩阵的第一行指定的位位置的组合是(D0,D1,D2,D3,D4,E0),并且ECC解码器电路31通过对这些值执行XOR运算来计算S0。
图9是示出ECC解码器电路31的具体电路配置的示例的框图。ECC解码器电路31包括症状生成电路300、症状解码器电路310和错误校正电路320。
症状生成电路300从8位读取数据(D0-D7)和5位ECC(E0-E4)生成并输出5位症状码(S0-S4)。如图9所示,症状生成电路300配置有五个XOR电路300a-300e。XOR电路300a-300d是6输入XOR电路,并且XOR电路300e是5输入XOR电路。XOR电路300a-300e分别对应于图8中所示的算术表达式,并且每个确定5位症状码(S0-S4)中的一位的值。
获得S0作为XOR电路300a的输出。具体地,XOR电路300a计算D0、D1、D2、D3、D4和E0的XOR,并将计算结果输出作为S0。以相同的方式,获得S1作为XOR电路300b的输出。获得S2作为XOR电路300c的输出。获得S3作为XOR电路300d的输出。获得S4作为XOR电路300e的输出。从症状生成电路300输出的症状码(S0-S4)被输入到症状解码器电路310。
症状解码器电路310对5位症状码(S0-S4)进行解码,并且生成和输出13位“错误位位置标志”(C0-C7,CE0-CE4)和1位“无错误标志”(Cxx)。如图9所示,症状解码器电路310配置有13个附接INV(反相器)的AND(逻辑积)电路310a-310m和NOR(非分离)电路310n。
附接INV的AND电路310a-310m是5输入的附接INV的AND电路。当在图7所示的ECC检查矩阵的每列中出现的5位位模式(具体地,图7中所示的D0-D7和E0-E4的13列)与5位症状码(S0-S4)(对应于图7中所示的S0-S4)的位模式匹配时,附接INV的AND电路310a-310m分别输出1。用于输出错误位位置标志(C0-C7)的附接INV的AND电路310a-310h上的症状解码器电路310的这种操作等效于检查出现在图3所示的ECC生成矩阵的每列(具体地,图3中示出的八列D0-D7)中的5位位模式和5位症状码(S0-S4)的位模式(对应于图3中示出的E0-E4)之间的匹配。当症状码的位模式与ECC检查矩阵的任何一列的位模式(具体地,图7中所示的D0-D7和E0-E4的13列)匹配时,确定在对应于列的位位置(D0-D7和E0-E4的位中的任何一个)中出现单位错误。每个附接INV的AND电路310a-310h输出错误位位置标志(C0-C7)。每个附接INV的AND电路310i-310m输出错误位位置标志(CE0-CE4)。错误位位置标志(C0-C7)是指示在读取数据(D0-D7)中出现的单位错误的位置的标志,并且错误位位置标志(CE0-CE4)是指示在ECC(E0-E4)中出现单位错误的位置的标志。
错误位位置标志有以下两种输出模式。
第一输出模式指示所有C0-C7和CE0-CE4都是0。这是在未检测到错误或检测到两位或更多位错误的情况下的输出模式。
第二输出模式指示C0-C7和CE0-CE4中的任何一个为1。这是检测到单位错误的情况下的输出模式。
当参考图7中所示的ECC检查矩阵的第一列时,位模式是(11100)。对应于此,在症状解码器电路310中,提供附接INV的AND电路310a以生成错误位位置标志C0。具体地,在附接INV的AND电路310a的输入端口中,症状码的S0、S1和S2耦合到三个未附接INV的输入端口,并且症状码的S3和S4耦合到两个附接INV的输入端口。对附接INV的AND电路310b-310m进行类似的耦合。
NOR电路310n是5输入NOR电路。当5位症状码(S0-S4)的所有位的值为0时,NOR电路310n输出1。当症状码(S0-S4)的所有位的值为0时,确定不存在位错误。NOR电路310n输出无错误标志(Cxx)。无错误标志有以下两种输出模式。
第一输出模式是Cxx=1的输出模式。这是在没有检测到错误的情况下的输出模式,如上所述。
第二输出模式是Cxx=0的输出模式。这是在检测到一位或多位错误的情况下的输出模式。
以这种方式,在SEC-DED码中,可以通过检测症状码的位模式与ECC生成矩阵的任何一个位模式匹配来检测单位错误。还可以通过检测症状码的位模式与ECC生成矩阵的任何位模式不匹配并且不完全为0来检测两位或更多位错误。
错误校正电路320包括:校正单元320A,配置用于在检测到读取数据的单位错误时校正错误的电路;以及通知处理单元320B,配置用于生成错误通知信号的电路。
校正单元320A基于8位读取数据(D0-D7)和8位错误位位置标志(C0-C7)执行错误校正,并输出8位输出数据(D'0-D'7)。当执行错误校正时,输出数据(D'0-D'7)是经校正的数据,而当不执行错误校正时,输出数据(D'0-D'7)与读取数据(D0-D7)相同。如图9所示,校正单元320A配置有八个XOR电路320a-320h。XOR电路320a-320h是2输入XOR电路。每个XOR电路320a-320h通过执行错误位位置标志和对应于错误位位置标志的读取数据的位的XOR运算来校正单位错误。也就是说,校正单元320A通过在8位错误位位置标志(C0-C7)中的任何一个标志为1时使读取数据(D0-D7)的相应位位置(位D0-D7中的任何一个)的值反相来执行单错误校正。
通知处理单元320B基于13位的错误位位置标志(C0-C7和CE0-CE4)和1位的无错误标志(Cxx)来输出“单位错误通知信号”和“双位错误通知信号”作为错误通知信号。如图9所示,通知处理单元320B配置有OR(逻辑加法)电路320i和NOR电路320j。OR电路320i是13输入OR电路,并且接收13位的位位置标志(C0-C7和CE0-CE4)。NOR电路320j是2输入NOR电路,并且接收OR电路320i的输出和无错误标志(Cxx)。
当输入的13位的位位置标志(C0-C7和CE0-CE4)中的任何一个标志为1时,OR电路320i输出1作为单位错误通知信号。当OR电路320i的输出和无错误标志(Cxx)都为0时,NOR电路320j输出1作为双位错误通知信号。通知处理单元320B的错误通知信号存在以下三种输出模式。
第一输出模式是其中单位错误通知信号和双位错误通知信号都是0的输出模式。这种输出模式的错误通知信号指示读取数据(D0-D7),并且因此输出数据(D'0-D'7)不包括错误。
第二输出模式是其中单位错误通知信号是1并且双位错误通知信号是0的输出模式。这种输出模式的错误通知信号指示由读取数据和ECC组成的位串包括单位错误并且输出数据(D'0-D'7)不包括错误。
第三输出模式是其中单位错误通知信号是0并且双位错误通知信号是1的输出模式。这种输出模式的错误通知信号指示由读取数据和ECC组成的位串包括两位或更多位错误并且输出数据(D'0-D'7)可能包括该错误。
图10是概述在根据比较示例的错误检测算法中出现的错误检测错失的表。具体而言,图10是通过模拟在读取数据(D0-D7)和ECC(E0-E4)的总共13位数据中出现位错误时、无法检测到位错误和错失位错误(进行了表明没有出现位错误的误检测)的情况的次数的验证结果表。这里,位错误意味着任何一个位的值反转的错误(位的值从0变为1或从1变为0)。在该表中,n是总位数(即,n=13),k是出现错误的位数(k=0,1,...,13),C(n,k)是在n位中出现k位错误的组合的总数,W(k)是在k位错误中出现错失的情况的次数,并且Pk是对于k位错误的检测错失概率。
在使用ECC的错误检测中,理论上可以100%地检测奇数位错误。在没有位错误(k=0)的情况下以及在双位错误(k=2)的情况下,理论上可以100%检测位错误。因此,W(0)和W(2)在表的检测错失数上为零。另一方面,该表显示4位或更多位的偶数位错误以一定的概率(百分比)无法被检测到并且错失,例如4位错误的检测错失数W(4)(k=4)是55。
图11是概述在根据比较示例的错误检测算法中出现误校正的情况的次数的表(即,出现多位错误但错误被误检测为单位错误和一些正常位被误校正的情况)。具体而言,图11示出了以下的表,其概述了当在读取数据(D0-D7)和ECC(E0-E4)的总共13位数据中出现位错误时、从图10所示的结果导出误校正的情况的次数。在图11所示的表中,X(k)是当出现k位错误时出现误校正的情况的次数,并且Qk是k位错误的误校正概率。
在使用ECC的错误检测中,理论上可以100%地检测奇数位错误,也就是说,将不会出现错误未被检测到和错误错失。然而,可能出现这种误校正。如图10所示,可能错失偶数位错误;因此,例如,可能出现以下误校正。考虑检测错失数W(4)=55的4位错误(k=4)被错失的情况作为示例。这里,当在13位数据中的第b1位、第b2位、第b3位和第b4位的总共4位中同时出现错误时,假设确定为没有出现错误。b1、b2、b3和b4的值自然地由ECC生成矩阵的每列如何建立来定义。
在这种情况下,当某些数据中只在b1、b2、b3和b4中的任何三位的位位置处有错误时,将误判断为仅在剩余位位置的位中出现了错误。例如,当第b1位、第b2位和第b3位有错误并且包括第b4位的剩余10位没有错误时,将误判断为只有第b4位有错误。也就是说,将误判断为出现了单位错误,并且将对被确定为具有错误的一个位(在上面的示例中为第b4位)进行校正。也就是说,将对正常位进行误校正。此时,将错失在剩余的三位中出现错误的事实。因此,对三位(k=3)的误校正数X(3)是W(4)的数量的4倍,即220。
考虑出现另一单位错误以及错失4位错误(k=4)的检测的情况。也就是说,考虑在13位数据中在第b1位、第b2位、第b3位、第b4位和第b5位的总共5位中同时出现错误的情况。在这种情况下,将误判断为仅在第b5位出现了错误,换句话说,出现了单位错误。因此,第b5位被正确校正,但是,错失了错误出现在4位(第b1位、第b2位、第b3位和第b4位)的事实。这也被认为是一种误校正。因此,在图11所示的表中,在5位错误(k=5)的误校正数X(5)中加上9(=13-4)倍于W(4)的数即495。作为除此之外有助于X(5)的误校正数,以与上述类似的思考方式,可能出现6倍于W(6)的误校正即576。因此,误校正数X(5)由1071(=495+576)给出。以类似的方式获得除X(5)之外的误校正数。从图11中所示的表中可以看出,在三个或更多个奇数位错误的情况下,以相当大的概率(百分比)出现误校正。
<实施例1>
接下来,描述实施例1。图12是示出根据实施例1的数据处理器件的示例的框图。在图12中,输入/输出接口10对应于图1中所示的数据处理器件1。输入/输出接口10是用于存储器6的输入输出的接口。例如,输入/输出接口10被提供在SOC(片上系统)中并且被提供在SOC的总线系统和作为外部存储器的例如DDR(双倍数据速率)存储器的存储器6之间。显然,输入/输出接口10的错误检测/校正功能不仅可以应用于外部存储器6,还可以应用于内置在SOC中的存储器6等。
如图12所示,输入/输出接口10包括编码器器件20和解码器器件30。编码器器件20对应于图1中所示的编码器器件2。编码器器件20对要写入存储器6的输入数据执行稍后描述的处理,并将处理结果存储在存储器6中。解码器器件30对应于图1中所示的解码器器件3。解码器器件30对从存储器6读取的数据执行稍后描述的处理,并输出输出数据和错误通知信号。
图13是示出编码器器件20的框图。如图13所示,编码器器件20包括ECC编码器电路21和ECC编码器电路22。ECC编码器电路21通过根据第一ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC。ECC编码器电路22通过根据通过置换第一ECC生成矩阵的列而获得的第二ECC生成矩阵执行操作,生成ECC作为能够进行单错误校正和双错误检测的检查位。ECC编码器电路21和ECC编码器电路22具有相同的电路配置;然而,它们因为输入数据的位顺序不同而生成不同的ECC。
编码器器件20的ECC编码器电路21与根据比较示例的编码器器件90中包括的ECC编码器电路21相同。因此,ECC编码器电路21使用作为第一ECC生成矩阵的例如图3中所示的ECC生成矩阵来执行操作,并且从该8位输入数据(D0-D7)生成5位ECC(E0-E4)。编码器器件20的ECC编码器电路21的具体电路配置的示例如图5所示。
ECC编码器电路22根据通过旋转8位输入数据的位位置获得的数据(D7,D0-D6)生成5位ECC(F0-F4)。也就是说,输入到ECC编码器电路22的数据是通过旋转要输入到ECC编码器电路21的数据的每个位而获得的数据。由ECC编码器电路22生成的ECC被用于补充由ECC编码器电路21生成的ECC的错误检测和校正。因此,由ECC编码器电路22生成的ECC被称为“检查位”,以区别于ECC编码器电路21生成的ECC。ECC编码器电路22具有与ECC编码器电路21相同的电路配置,除了要使用的ECC生成矩阵不同。也就是说,ECC编码器电路22的具体电路配置与ECC编码器电路21的具体电路配置的不同之处在于,通过旋转8位输入数据的位位置获得的数据(D7,D0-D6)被输入到ECC编码器电路22中,并且ECC编码器电路22的输出变为5位检查位(F0-F4)而不是5位ECC(E0-E4)。
当ECC编码器电路21根据图3中所示的ECC生成矩阵执行操作时,ECC编码器电路22通过执行例如图14所示的ECC生成矩阵的操作,生成能够进行单错误校正和双错误检测的ECC(检查位)。图14中所示的ECC生成矩阵是用于从8位输入数据(D0-D7)生成5位检查位(F0-F4)的矩阵,并且通过将图3所示的ECC生成矩阵的每一列向左旋转一列来获得。以这种方式,用于ECC编码器电路22的ECC生成矩阵中的旋转对应于输入到ECC编码器电路22的数据的旋转。也就是说,用于导出要输入到ECC编码器电路22的位串的位旋转中的旋转之后的位位置对应于用于导出由ECC编码器电路22使用的ECC生成矩阵的列旋转中的旋转之后的列编号。图14中所示的ECC生成矩阵仅通过旋转图3中所示的ECC生成矩阵来获得。因此,与图3中所示的ECC生成矩阵的情况一样,每列的位模式相互不同并且每列包括奇数个1。因此,图14中所示的ECC生成矩阵还是用于生成能够进行单错误校正和双错误检测的ECC的矩阵。
图15是示出ECC编码器电路22的具体电路配置的示例的框图。如上所述,ECC编码器电路22通过根据图14所示的ECC生成矩阵执行XOR运算,从8位输入数据(D7,D0-D6)生成5位检查位(F0-F4)。ECC编码器电路22包括ECC生成电路201,并通过ECC生成电路201生成检查位。与图5中所示的电路的情况一样,ECC生成电路201配置有五个XOR电路201a-201e。XOR电路201a-201d是5输入XOR电路,XOR电路201e是4输入XOR电路。XOR电路201a-201e中的每一个执行与图14中所示的ECC生成矩阵相对应的操作,并且确定5位检查位(F0-F4)中的一位的值。
获得F0作为XOR电路201a的输出。具体地,XOR电路201a对D0、D1、D2、D3和D7执行XOR运算,并将运算结果输出为F0。类似地,获得F1作为XOR电路201b的输出。获得F2作为XOR电路201c的输出。获得F3作为XOR电路201d的输出。获得F4作为XOR电路201e的输出。
在这里描述的示例中,ECC编码器电路22使用通过将ECC编码器电路21使用的ECC生成矩阵的每一列向左旋转一列而获得的矩阵。然而,旋转方向和旋转级数不限于上述示例。然而,在这种情况下,如上所述,要输入到ECC编码器电路22的数据需要是通过对输入到ECC编码器电路21的数据执行与对ECC生成矩阵执行的旋转相同的旋转而获得的数据。
编码器器件20将作为8位写入数据(D0-D7)的输入数据与生成的5位ECC(E0-E4)和生成的5位检查位(F0-F4)一起存储到存储器6中。
接下来,解释解码器器件30。图16是示出解码器器件30的框图。解码器器件30包括ECC解码器电路31、ECC解码器电路32和错误通知检查电路33。ECC解码器电路31和ECC解码器电路32具有相同的电路配置。但是,要输入的数据的位顺序是不同的;因此,要解码的对象是不同的。ECC解码器电路31接收从存储器6读取的读取数据(D0-D7)和ECC(E0-E4)。ECC解码器电路32接收通过以与输入到ECC编码器电路22的数据相同的方式置换从存储器6读取的读取数据(D0-D7)的位而获得的数据(D7,D0-D6)以及从存储器6读取的检查位(F0-F4)。
ECC解码器电路31与根据比较示例的解码器器件91中包括的ECC解码器电路31相同。因此,ECC解码器电路31对从存储器6读取的8位读取数据(D0-D7)和5位ECC(E0-E4)执行单错误校正和双错误检测。当检测到单位错误时,校正所述位的错误。ECC解码器电路32对通过旋转从存储器6读取的8位读取数据的位位置获得的数据(D7,D0-D6)和5位检查位(F0-F4)执行单错误校正和双错误检测。ECC解码器电路32具有与ECC解码器电路31相同的电路配置,除了要使用的ECC检查矩阵不同。也就是说,当ECC解码器电路31根据第一ECC检查矩阵执行操作时,ECC解码器电路32根据第二ECC检查矩阵执行操作。
图17示出了用于解码器器件30的ECC解码器电路31的ECC检查矩阵。与根据比较示例的用于解码器器件91的ECC解码器电路31的ECC检查矩阵的情况一样,用于解码器器件30的ECC解码器电路31的ECC检查矩阵是用于从8位读取数据(D0-D7)和5位ECC(E0-E4)生成5位症状码(S0-S4)的矩阵。图17中所示的ECC检查矩阵包括对应于检查位(F0-F4)的列(用斜线绘制),其中元素用0填充,因为它们不用于操作。在左侧没有用斜线绘制的13列具有与图7所示的ECC检查矩阵相同的内容。
图18示出了用于解码器器件30的ECC解码器电路32的ECC检查矩阵。用于解码器器件30的ECC解码器电路32的ECC检查矩阵是用于从8位读取数据(D0-D7)和5位检查位(F0-F4)生成5位症状码(R0-R4)的矩阵。图18中所示的ECC检查矩阵包括对应于ECC(E0-E4)的列(用斜线绘制),其中元素用0填充,因为它们不用于操作。用斜线绘制的列中的左侧的八列(对应于D0-D7的列)具有通过旋转将图17所示的ECC检查矩阵左侧的八列(对应于D0-D7的列)中的每一列向左旋转一列而获得的内容。以这种方式,对于用于ECC解码器电路32的ECC检查矩阵,对应于用于编码器器件20中的ECC编码器电路22的ECC生成矩阵的列的置换,执行列的置换。
图18示出了当ECC编码器电路22使用通过将ECC编码器电路21使用的ECC生成矩阵的每一列向左旋转一列而获得的矩阵时ECC解码器电路32使用的ECC检查矩阵。因此,对应于旋转方向和旋转级数,ECC解码器电路32使用的ECC检查矩阵是不同的。
解码器器件30的ECC解码器电路31的具体电路配置的示例如图9所示,ECC解码器电路31包括症状生成电路300、症状解码器电路310和错误校正电路320。也就是说,根据图17中所示的ECC检查矩阵的操作是通过图9所示的症状生成电路300执行的。
除了要使用的ECC检查矩阵不同之外,解码器器件30的ECC解码器电路32的具体电路配置与ECC解码器电路31的具体电路配置相同。图19是示出ECC解码器电路32的具体电路配置的示例的框图。ECC解码器电路32包括症状生成电路301、症状解码器电路311和错误校正电路321。
除了以下三点之外,症状生成电路301与症状生成电路300相同。首先,症状生成电路301接收通过旋转8位读取数据的位位置而获得的数据(D7,D0-D6)。其次,症状生成电路301不接收5位ECC而是接收5位检查位(F0-F4)。第三,症状生成电路301不输出5位症状码(S0-S4)而是输出5位症状码(R0-R4)。
因此,症状生成电路301从8位数据(D7,D0-D6)和5位检查位(F0-F4)生成并输出5位症状码(R0-R4)。与图9中所示的电路的情况一样,症状生成电路301配置有五个XOR电路301a-301e。XOR电路301a-301d是6输入XOR电路,XOR电路301e是5输入XOR电路。XOR电路301a-301e中的每一个根据图18中所示的ECC检查矩阵执行操作并确定5位症状码(R0-R4)中的一位的值。
获得R0作为XOR电路301a的输出。具体地,XOR电路301a对D0、D1、D2、D3、D7和F0执行XOR运算,并将运算结果输出为R0。类似地,获得R1作为XOR电路301b的输出。获得R2作为XOR电路301c的输出。获得R3作为XOR电路301d的输出。获得R4作为XOR电路301e的输出。从症状生成电路300输出的症状码(R0-R4)被输入到症状解码器电路311。
除了以下两点之外,症状解码器电路311与症状解码器电路310相同。首先,症状解码器电路311不接收症状码(S0-S4)而是接收另一症状码(R0-R4)。第二,症状解码器电路311不输出错误位位置标志(C0-C7,CE0-CE4)和无错误标志(Cxx),而是输出另一个错误位位置标志(B0-B7,BF0-BF4)和无错误标志(Bxx)。
因此,症状解码器电路311对5位症状码(R0-R4)进行解码,并生成和输出13位错误位位置标志(B0-B7,BF0-BF4)和1位无错误标志(Bxx)。如图19所示,症状解码器电路311配置有13个附接INV的AND电路311a-311m和NOR电路311n。
附接INV的AND电路311a-311m是5输入INV附接的AND电路。当在图18所示的ECC检查矩阵的每列(具体地,图18中所示13列的D0-D7和F0-F4)中出现的5位位模式(对应于图18中所示的R0-R4)与5位症状码(R0-R4)的位模式匹配时,附接INV的AND电路311a-311m分别输出1。通过检测症状码的位模式与ECC检查矩阵的任何一列的位模式匹配来检测单位错误。附接INV的AND电路311a-311h分别输出错误位位置标志(B0-B7)。附接INV的AND电路311i-311m分别输出错误位位置标志(BF0-BF4)。错误位位置标志(B0-B7,BF0-BF4)的输出模式与错误位位置标志(C0-C7,CE0-CE4)的输出模式相同,并且有以下两种。
第一输出模式是所有B0-B7和BF0-BF4都为0的输出模式。这是在没有检测到错误的情况和检测到两位或更多位错误的情况下的输出模式。
第二输出模式是B0-B7和BF0-BF4中的任何一个为1的输出模式。这是在检测到单位错误的情况下的输出模式。
当观察到图18所示的ECC检查矩阵的第一列时,位模式是(1,1,0,1,0)。为了对应于此,症状解码器电路311设置有附接INV的AND电路311a以生成错误位位置标志B0。具体地,在附接INV的AND电路311a的输入端口中,症状码的R0、R1和R3耦合到三个未附接INV的输入端口,并且症状码的R2和R4耦合到两个附接INV的输入端口。对附接INV的AND电路311b-311m进行类似的耦合。
NOR电路311n是5输入NOR电路。当5位症状码(R0-R4)的所有位的值为0时,NOR电路311n输出1。当症状码(R0-R4)的所有位的值为0时,确定没有出现位错误。NOR电路311n输出无错误标志(Bxx)。作为无错误标志(Bxx)的输出模式,存在以下两种与无错误标志(Cxx)的输出模式相同的类型。
第一输出模式是Bxx为1。这是在如上所述未检测到错误的情况下的输出模式。
第二种输出模式是Bxx为0。这是在检测到一位或多位错误的情况下的输出模式。
除了以下两点之外,错误校正电路321与错误校正电路320相同。首先,在错误校正电路321中,输入不是错误位位置标志(C0-C7,CE0-CE4)也不是无错误标志(Cxx),而是另一错误位位置标志(B0-B7,BF0-BF4))和无错误标志(Bxx)。其次,不使用作为错误校正电路321的输出的单位错误校正之后的输出数据(D'0-D'7),而是仅使用单位错误通知信号和双位错误通知信号。作为解码器器件30的输出数据,使用ECC解码器电路31的输出数据。
错误校正电路321包括:校正单元321A,其组成用于在检测到读取数据的单位错误时校正错误的电路;以及通知处理单元321B,其组成用于生成指示读取数据的错误出现状态的错误通知信号的电路。
校正单元321A基于8位读取数据(D7,D0-D6)和8位错误位位置标志(B0-B7)执行错误校正。具体地,与图9中所示的校正单元320A的情况一样,校正单元321A配置有八个XOR电路321a-321h。XOR电路321a-321h是2输入XOR电路。每个XOR电路321a-321h通过执行错误位位置标志和对应于错误位位置标志的读取数据的位的XOR运算来校正单位错误。也就是说,当8位错误位位置标志(B0-B7)的标志中的任何一个为1时,校正单元321A通过反转读取数据的相应位位置处的值来执行单位错误校正(D0-D7)。在本实施例中,使用具有与ECC解码器电路31相同的电路配置的ECC解码器电路32,从而可以容易地配置解码器器件30。因此,错误校正电路321包括校正单元321A。然而,如上所述,在本实施例中,不使用ECC解码器电路32的校正功能。因此,错误校正电路321可以不包括校正单元321A。
通知处理单元321B基于13位错误位位置标志(B0-B7,BF0-BF4)和1位无错误标志(Bxx)输出单位错误通知信号和双位错误通知信号作为错误通知信号。与图9中所示的通知处理单元320B的情况一样,通知处理单元321B配置有OR电路321i和NOR电路321j。OR电路321i是13输入OR电路,并接收13位位位置标志(B0-B7,BF0-BF4)。NOR电路321j是2输入NOR电路,并且接收OR电路321i的输出和无错误标志(Bxx)。
当输入的13位位位置标志(B0-B7,BF0-BF4)的任何一个标志为1时,OR电路321i输出1作为单位错误通知信号。当OR电路321i的输出和无错误标志(Bxx)都为0时,NOR电路321j输出1作为双位错误通知信号。与通知处理单元320B的错误通知信号的输出模式的情况一样,存在以下三种通知处理单元321B的错误通知信号的输出模式。
第一输出模式是单位错误通知信号和双位错误通知信号都是0。这种输出模式的错误通知信号指示读取数据(D7,D0-D6)不包括任何错误。
第二输出模式是单位错误通知信号是1并且双位错误通知信号是0。这种输出模式的错误通知信号指示由读取数据(D7,D0-D6)和检查位(F0-F4)组成的位串包括单位错误。
第三输出模式是单位错误通知信号为0并且双位错误通知信号为1。这种输出模式的错误通知信号指示由读取数据(D7,D0-D6)和检查位(F0-F4)组成的位串包括两位或更多位错误。
如图16所示,从ECC解码器电路31的错误校正电路320输出的错误通知信号(单位错误通知信号和双位错误通知信号)和从ECC解码器电路32的错误校正电路321输出的错误通知信号(单位错误通知信号和双位错误通知信号)被输入到错误通知检查电路33。从错误校正电路320输出的错误通知信号和从错误校正电路321输出的错误通知信号都是用于通过错误通知检查电路33生成最终通知信号的信号。
由错误校正电路320生成的单位错误通知信号也可以被称为指示在由读取数据(D0-D7)和ECC(E0-E4)组成的位串中是否存在可校正的单位错误的信号。从错误校正电路320输出的单位错误通知信号也称为第一确定信号。
由错误校正电路320生成的双位错误通知信号也可以被称为指示在由读取数据(D0-D7)和ECC(E0-E4)组成的位串中是否存在两位或更多位错误的信号。从错误校正电路320输出的双位错误通知信号也称为第二确定信号。
由错误校正电路321生成的单位错误通知信号也可以被称为指示在由读取数据(D7,D0-D6)和检查位(F0-F4)组成的位串中是否存在可校正的单位错误的信号。从错误校正电路321输出的单位错误通知信号也称为第三确定信号。
由错误校正电路321生成的双位错误通知信号也可以被称为指示在由读取数据(D7,D0-D6)和检查位(F0-F4)组成的位串中是否存在两位或更多位错误的信号。从错误校正电路321输出的双位错误通知信号也称为第四确定信号。
错误通知检查电路33基于上述第一至第四确定信号生成指示错误出现状态的最终错误通知信号。错误通知检查电路33输出“单位错误通知信号”和“双位错误通知信号”作为错误通知信号,所述单位错误通知信号指示读取数据(D0-D7)中是否包括单位错误,所述双位错误通知信号指示读取数据(D0-D7)中是否包含两位或更多位错误。然而,实际上,当ECC(E0-E4)和检查位(F0-F4)中都包括单位错误时,单位错误通知信号也被设置为1。此外,当ECC(E0-E4)或检查位(F0-F4)中包含两位或更多位错误时,双位错误通知信号被设置为1。当错误通知检查电路33输出1的单位错误通知信号和0的双位错误通知信号时,解码器器件30通知位串具有单位错误并且通过校正读取数据的错误获得的数据被作为输出数据(D'0-D'7)输出。当错误通知检查电路33输出0的单位错误通知信号和1的双位错误通知信号时,解码器器件30通知可能包括错误的数据被作为输出数据(D'0-D'7)输出。在当前情况下,错误可能仅出现在ECC或检查位中。因此,输出数据(D'0-D'7)不一定包括错误。此外,当解码器器件30输出0的单位错误通知信号和0的双位错误通知信号时,解码器器件30通知没有错误的读取数据被作为输出数据(D'0-D'7)输出。
以这种方式,解码器器件30基于从存储器6读取的读取数据、ECC和检查位生成指示读取的位串不包括错误、位串包括单位错误或者位串包括两位或更多位错误的通知信号。
如图16所示,错误通知检查电路33配置有AND电路33a、XOR电路33b和OR电路33c。AND电路33a是2输入AND电路,XOR电路33b是2输入XOR电路,OR电路33c是3输入OR电路。
AND电路33a接收由ECC解码器电路31生成的单位错误通知信号(第一确定信号)和由ECC解码器电路32生成的单位错误通知信号(第三确定信号)。AND电路33a对这些输入执行AND操作,并输出所获得的信号作为最终单位错误通知信号。
XOR电路33b接收由ECC解码器电路31生成的单位错误通知信号(第一确定信号)和由ECC解码器电路32生成的单位错误通知信号(第三确定信号)。XOR电路33b对这些输入执行XOR运算,并将获得的信号输出到OR电路33c。
OR电路33c接收由ECC解码器电路31生成的双位错误通知信号(第二确定信号)、由ECC解码器电路32生成的双位错误通知信号(第四确定信号)以及XOR电路33b的输出信号。OR电路33c对这些输入执行OR运算,并输出所获得的信号作为最终双位错误通知信号。
根据这样的配置,当ECC解码器电路31的单位错误通知信号和ECC解码器电路32的单位错误通知信号之一是1时(即,当指示存在可校正的单位错误时),错误通知检查电路33输出1作为双位错误通知信号。也就是说,当ECC解码器电路31的单位错误通知信号和ECC解码器电路32的单位错误通知信号中的仅一个是1时,错误通知检查电路33生成指示从存储器6读取的位串(D0-D7,E0-E4,F0-F4)包括两位或更多位错误的通知信号。当ECC解码器电路31的双位错误通知信号和ECC解码器电路32的双位错误通知信号中的至少一个是1时(即,当指示存在两位或更多位错误时),则错误通知检查电路33输出1作为双位错误通知信号。也就是说,当ECC解码器电路31的双位错误通知信号和ECC解码器电路32的双位错误通知信号中的至少一个是1时,错误通知检查电路33生成指示从存储器6读取的位串(D0-D7,E0-E4,F0-F4)包括两位或更多位错误的通知信号。
如上所述,在本实施例中,生成ECC编码器电路21的ECC和检查位作为ECC编码器电路22的ECC。它们是根据不同ECC生成矩阵的ECC。即使是在使用ECC编码器电路21生成的ECC的检测处理中错失的错误的出现模式,也可以在使用ECC编码器电路22生成的检查位的检测处理中发现错误。因此,与数据的错误检测相比,仅基于ECC编码器电路21生成的ECC,可以提高检测性能。
在实施例1中,解释了将5位ECC和5位检查位添加到8位数据的示例。然而,附加ECC(检查位)的数据(作为存储对象的数据)的位数和ECC(检查位)的位数可以是任意的。例如,还可以将8位ECC和8位检查位附加到64位数据。
图20A和图20B示出了ECC生成矩阵的示例,所述ECC生成矩阵从64位输入数据(D0-D63)生成8位ECC(E0-E7)以作为写入数据写入存储器中。对应于该ECC生成矩阵,根据从存储器中读取的64位读取数据(D0-D63)和8位ECC(E0-E7)确定出生成8位症状码(S0-S7)的ECC检查矩阵。该ECC检查矩阵的左侧64列具有与ECC生成矩阵的64列相同的内容,并且8行×8列的单元矩阵(unit matrix)被添加到该ECC检查矩阵的右侧8列。
对于用于生成检查位的ECC生成矩阵,可以使用通过执行任意旋转获得的矩阵,与实施例1的情况一样。对应于检查位的ECC生成矩阵来确定检查位的ECC检查矩阵。用于检查位的编码器电路和解码器电路可以接收通过执行与ECC生成矩阵相同的旋转而获得的数据。
此外,当将8位ECC和8位检查位附加到64位数据时,可以提高多位错误的检测性能。ECC的总位数和要附加到64位数据的检查位可以是16位。也就是说,检查位和ECC的总位数可以是2个字节,其是适合于数据通信的大小。
<实施例2>
接下来,描述实施例2。在实施例2中,使用与实施例1中使用的相同的编码器器件20。然而,对于解码器器件,使用解码器器件30A代替解码器器件30。
图21是图示根据实施例2的解码器器件30A的配置的框图。解码器器件30A包括症状生成电路300和301、症状解码器电路310和311、症状检查电路330和错误校正电路320。
解码器器件30A的症状生成电路300与ECC解码器电路31(参考图9)的症状生成电路300相同,并且根据8位读取数据(D0-D7)和5位ECC(E0-E4)生成并输出5位症状码(S0-S4)。
解码器器件30A的症状生成电路301与ECC解码器电路32(参考图19)的症状生成电路301相同,并且根据通过旋转8位读取数据的位位置获得的数据(D7,D0-D6)和5位检查位(F0-F4)来生成并输出5位症状码(R0-R4)。
解码器器件30A的症状解码器电路310与ECC解码器电路31(参见图9)的症状解码器电路310相同,解码5位症状码(S0-S4),并生成和输出13位错误位位置标志(C0-C7,CE0-CE4)和无错误标志(Cxx)。
解码器器件30A的症状解码器电路311与ECC解码器电路32(参见图19)的症状解码器电路311相同,解码5位症状码(R0-R4),并生成和输出13位错误位位置标志(B0-B7,BF0-BF4)和无错误标志(Bxx)。
解码器器件30A的症状生成电路300和症状解码器电路310也称为第一症状单元。第一症状单元根据从存储器6读取的读取数据(D0-D7)和ECC(E0-E4)生成第一症状码(S0-S4)。第一症状单元生成第一标志(C0-C7,CE0-CE4)和第二标志(Cxx)。第一标志(C0-C7,CE0-CE4)指示第一症状码是否与ECC检查矩阵(第一ECC检查矩阵)的任何一列的位模式匹配,所述ECC检查矩阵由用于生成ECC(E0-E4)的ECC生成矩阵(第一ECC检查矩阵)和单元矩阵组成。第二标志(Cxx)指示第一症状码的所有位是否为0。
解码器器件30A的症状生成电路301和症状解码器电路311也称为第二症状单元。第二症状单元根据通过置换从存储器6读取的读取数据(D0-D7)获得的数据(D7,D0-D6)以及从存储器6读取的检查位(F0-F4)来生成第二症状码(R0-R4)。第二症状单元生成第三标志(B0-B7,BF0-BF4)和第四标志(Bxx)。第三标志(B0-B7,BF0-BF4)指示第二症状码是否与ECC检查矩阵(第二ECC检查矩阵)的任何一列的位模式匹配,所述ECC检查矩阵由用于生成检查位(F0-F4)的ECC生成矩阵(第二ECC生成矩阵)和单元矩阵组成。第四标志(BXX)指示第二症状码的所有位是否为0。
症状检查电路330也称为症状检查单元,并将第一标志(C0-C7,CE0-CE4)与第三标志(B0-B7,BF0-BF4)进行比较,并将第二标志(Cxx)与第四标志(Bxx)进行比较。也就是说,症状检查电路330检查两种错误位位置标志(C0-C7和B0-B7)的匹配,生成其精度(可靠性)得到改善的错误位位置标志(C'0-C'7),并输出对错误位位置标志(CE0-CE4)和错误位位置标志(BF0-BF4)执行OR运算的结果作为错误位位置标志(CE'0-CE'4)。类似地,症状检查电路330检查两种无错误标志(Cxx和Bxx)的匹配,并生成精度(可靠性)得到改善的无错误标志(C'xx)。
症状检查电路330配置有AND电路330a-330h、OR电路330i-330m和AND电路330n,如图21所示。AND电路330a-330h是2输入AND电路。OR电路330i-330m是2输入OR电路。AND电路330a-330h接收从症状解码器电路310输出的错误位位置标志(C0-C7)和从症状解码器电路311输出的错误位位置标志(B0-B7)。当两个输入值均为1时,AND电路330a-330h输出1,否则输出0。也就是说,当参考第一标志(C0-C7)、第三标志(B0-B7)、第一症状码(S0-S4)、第二症状码(R0-R4)、第一ECC检查矩阵和第二ECC检查矩阵解释时,症状检查电路330输出标志(C'0-C'7)如下。仅当满足第一条件和第二条件两者时,症状检查电路330输出第五标志(C'0-C'7),该第五标志(C'0-C'7)指示第一症状码(S0-S4)与第一ECC检查矩阵的第t列(这里,t是正整数,并且是与第一ECC检查矩阵中包括的第一ECC生成矩阵的任何一列相对应的列号)的位模式匹配。这里,第一条件是第一标志(C0-C7)指示第一症状码(S0-S4)与第一ECC检查矩阵的第t列的位模式匹配。第二条件是第三标志(B0-B7)指示第二症状码(R0-R4)与第二ECC检查矩阵的第t列的位模式匹配。
OR电路330i-330m接收从症状解码器电路310输出的错误位位置标志(CE0-CE4)和从症状解码器电路311输出的错误位位置标志(BF0-BF4)。当输入值中的至少一个是1时,OR电路330i-330m输出1,否则输出0。也就是说,当参考第一标志(CE0-CE4)、第三标志(BF0-BF4)、第一症状码(S0-S4)、第二症状码(R0-R4)、第一ECC检查矩阵和第二ECC检查矩阵解释时,症状检查电路330如下输出标志(CE'0-CE'4)。当第一标志(CE0-CE4)指示第一症状码(S0-S4)与第一ECC检查矩阵的第s列的位模式匹配时(这里,s是正整数,是与第一ECC检查矩阵中包括的单元矩阵的任意一列对应的列号)或者当第三标志(BF0-BF4)指示第二症状码(R0-R4)与第二ECC检查矩阵的第s列的位模式匹配时,症状检查电路330输出指示第一症状码(S0-S4)与第一ECC检查矩阵的第s列的位模式匹配的第五标志(CE'0-CE'4)。
AND电路330n接收从症状解码器电路310输出的无错误标志(Cxx)和从症状解码器电路311输出的无错误标志(Bxx)。当两个输入值均为1时,AND电路330n输出1,否则输出0。也就是说,当参考第二标志(Cxx)、第四标志(Bxx)、第一症状码(S0-S4)和第二症状码(R0-R4)解释时,症状检查电路330如下输出标志(C'xx)。仅当第二标志指示第一症状码的所有位都是0并且第四标志指示第二症状码的所有位都是0时,症状检查电路330输出指示第一症状码的所有位都是0的第六标志(C'xx)。
从症状检查电路330输出的错误位位置标志(C'0-C'7、CE'0-CE'4)和无错误标志(C'xx)被输入到错误校正电路320。解码器器件30A的错误校正电路320与ECC解码器电路31(参考图9)的错误校正电路320相同,并使用从症状检查电路330输出的错误位位置标志(C'0-C'7、CE'0-CE'4)和无错误标志(C'xx)执行错误校正和错误通知。当错误位位置标志(C'0-C'7)的任何一个标志为1时,错误校正电路320通过反转在读取数据(D0-D7)对应的位位置(D0-D7的任何一个位)处的位的值来执行单位错误校正,并在单位错误校正之后输出输出数据(D'0-D'7)。错误校正电路320基于错误位位置标志(C'0-C'7,CE'0-CE'4)和无错误标志(C'xx),生成由单位错误通知信号和双位错误通知信号组成的错误通知信号。以这种方式,除了使用由症状检查电路330输出的错误位位置标志(C'0-C'7,CE'0-CE'4)和无错误标志(C'xx)来代替症状解码器电路310输出的错误位位置标志(C0-C7,CE0-CE4)和无错误标志(Cxx)之外,解码器器件30A的错误校正电路320的配置和操作与图9中所示的错误校正电路320的配置和操作相同。
以这种方式,在本实施例中,解码器器件30A基于症状检查电路330的比较结果执行单位错误校正和错误通知。也就是说,解码器器件30A基于通过症状检查电路330改善了精度的错误位位置标志(C'0-C'7)的值,对从存储器6读取的读取数据(D0-D7)执行单位错误校正。解码器器件30A基于通过症状检查电路330改善了精度的错误位位置标志(C'0-C'7,CE'0-CE'4)的值和无错误标志(C'xx)的值来执行错误通知。通过ECC统一错误检测结果并通过检查位统一错误检测结果来进行该错误通知。因此,在本实施例中也可以改善错误的检测性能。
如上所述,症状检查电路330通过使用AND电路330a-330h检查错误位位置标志(C0-C7)和错误位位置标志(B0-B7)。因此,例如,当错误位位置标志C0的值与错误位位置标志B0的值不同时,C'0的值被设置为0。在这种情况下,在错误校正电路320中不校正对应于C0的位位置处的位的值。即,在本实施例中,仅当错误位位置标志(C0-C7)的值与错误位位置标志(B0-B7)的值匹配时才执行校正处理。也就是说,根据本实施例,可以避免误校正。症状检查电路330通过使用AND电路330n检查无错误标志(Cxx)和无错误标志(Bxx)。因此,当无错误标志Cxx的值与无错误标志Bxx的值不同时,C'xx的值被设置为0。也就是说,在这种情况下,不输出指示没有错误的1作为C'xx的输出。因此,可以避免错失对错误的检测。
图22是概括在根据实施例2的错误检测的算法中出现的错误检测错失的表。图23是概括在根据实施例2的错误检测算法中出现的误校正的情况的次数的表。这些表的解释与图10和图11的解释是相同的。然而,在实施例2中,8位写入数据(D0-D7)、5位ECC(E0-E4)以及5位检查位(F0-F4)被存储在存储器6中。因此,图22和图23示出从k=1到k=18的结果。
如图10和图22所示,对错误的检测错失的总数是相同的;然而,在比较示例中,在k=4时出现55次错误的检测错失;相反,在实施例2中它变为零。在比较示例中,在k=5和k=6时出现总共96次对错误的检测错失;相反,在实施例2中它变为28。这样,在实施例2中,当k相对较小时,可以减少错失次数。如图11和图23所示,与此相关,当k相对较小时,误校正的次数也减少。
<实施例3>
接着,解释实施例3。实施例3与实施例1的不同之处在于,通过使用ECC的部分位作为检查位来减少检查位的位数。具体地,在实施例1中,与5位ECC相比,使用5位检查位。然而,在实施例3中,使用3位检查位。根据实施例3的输入/输出接口10包括编码器器件20A来代替编码器器件20,并且包括解码器器件30B来代替解码器器件30。
图24是示出编码器器件20A的框图。如图24所示,编码器器件20A包括ECC编码器电路21和ECC编码器电路23。编码器器件20A的ECC编码器电路21与编码器器件20的ECC编码器电路21相同,并且通过根据第一ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC。ECC编码器电路23通过根据通过置换第一ECC生成矩阵中预定行的值相同的多列而获得的第二ECC生成矩阵来执行操作,生成能够进行单错误校正和双错误检测的ECC作为检查位。ECC编码器电路21和ECC编码器电路23具有相同的电路配置。然而,ECC编码器电路21和ECC编码器电路23生成不同的ECC,因为所输入的数据的位顺序不同。
图25示出了用于ECC编码器电路23的ECC生成矩阵的示例。如图25所示,该ECC生成矩阵从8位输入数据(D0-D7)生成5位检查位(F0-F4),并且具有以下的布置:ECC编码器电路21使用的图3所示的ECC生成矩阵在下三行左侧(F2-F4的部分)的部分(三列(D0-D2的部分)中的每列向左旋转一列。在图3中所示的ECC生成矩阵中,左侧的三列(D0-D2的部分)在第一行中具有相同的元素值,并且在第二行中具有相同的元素值。因此,图25中所示的ECC生成矩阵是通过对图3所示的ECC生成矩阵中的其中第一行和第二行具有相同值的三列(左侧的三列)进行置换而获得的矩阵。在已经执行了这种置换的ECC生成矩阵中,第一行和第二行的值在置换之前和之后的任何列中都不改变。也就是说,在置换之前为ECC生成矩阵的第一行生成的ECC(E0)与在置换之后为ECC生成矩阵的第一行生成的检查位(F0)相同。类似地,在置换之前为ECC生成矩阵的第二行生成的ECC(E1)与在置换之后为ECC生成矩阵的第二行生成的检查位(F1)相同。因此,不必在存储器6中存储在ECC编码器电路23中生成的检查位(F0,F1)。
ECC编码器电路23接收已经执行了位置换的数据。该置换对应于用于导出图25中所示的ECC生成矩阵的置换。也就是说,ECC编码器电路23接收已经执行了置换以仅旋转D0-D2的数据。具体而言,如图24所示,ECC编码器电路23接收通过仅旋转8位输入数据中的低位三位的位位置而获得的数据(D2,D0,D1,D3-D7),并且ECC编码器电路23生成5位检查位(F0-F4)。
编码器器件20A将输入数据作为8位写入数据(D0-D7)与生成的5位ECC(E0-E5)和生成的5位检查位的高位3位(F2-F4)一起写入存储器6中。如上所述,由ECC编码器电路23生成的5位检查位中的低位2位(F0-F1)变为与由ECC编码器电路21生成的5位ECC中的低位2位(E0-E1)完全相同。因此,不必重复写入到存储器6中。以这种方式,编码器器件20A将输入数据、由ECC编码器电路21生成的ECC的所有位以及由ECC编码器电路23生成的ECC的部分位存储到存储器6中。所涉及的位的一部分是通过使用ECC编码器电路23使用的ECC生成矩阵中的上述预定行以外的行的操作而获得的位。
接下来,解释解码器器件30B。图26是示出解码器器件30B的框图。解码器器件30B包括ECC解码器电路31、ECC解码器电路34和错误通知检查电路33。
解码器器件30B的ECC解码器电路31与解码器器件30的ECC解码器电路31相同,对从存储器6读取的8位读取数据(D0-D7)和5位ECC(E0-E4)进行单错误校正和双错误检测,并校正检测到单位错误的位的错误。ECC解码器电路34从存储器6读取并使用通过仅旋转8位读取数据中低位3位的位位置而获得的数据(D2,D0,D1,D3-D7)、5位ECC的低位2位(E0=F0,E1=F1)以及5位检查位的高位3位(F2-F4),执行单错误校正和双错误检测。ECC解码器电路31和ECC解码器电路34具有相同的电路配置;然而,它们具有不同的解码对象,因为所输入的数据的位顺序是不同的。
图27示出了用于解码器器件30B的ECC解码器电路31的ECC检查矩阵。用于解码器器件30B的ECC解码器电路31的ECC检查矩阵是用于从8位读取数据(D0-D7)和5位ECC(E0-E4)生成5位症状码(S0-S4)的矩阵。图27中所示的ECC检查矩阵包括对应于元素用0填充(因为不用于操作)的5位检查位中的高位3位(F2-F4)的列(用斜线绘制)。未用斜线绘制的左侧的13列具有与图7中所示的ECC检查矩阵相同的内容。
图28示出了用于解码器器件30B的ECC解码器电路34的ECC检查矩阵。用于解码器器件30B的ECC解码器电路34的ECC检查矩阵是用于从8位读取数据(D0-D7)、5位ECC中的低位2位(E0=F0,E1=F1)以及5位检查位中的高位3位(F2-F4)生成5位症状码(R0-R4)的矩阵。图28中所示的ECC检查矩阵包括对应于元素用0填充(因为不用于操作)的5位ECC中的高位3位(E2-E4)的列(用斜线绘制)。左侧的八列(对应于D0-D7的列)具有通过旋转图27中所示的ECC检查矩阵左侧的八列(对应于D0-D7的列)中的一些列(对应于D0-D2的列)而获得的布置。这里,上面的2行都是1;因此,当详细描述时,在图28的左侧的八列(对应于D0-D7的列)具有通过将图27所示的ECC检查矩阵的左侧八列(对应于D0-D7的列)中的一部分(在下3行(对应于R2-R4的行)左侧的3列(对应于D0-D2的列))中的每一列向左旋转一列而获得的布置。
解码器器件30B的错误通知检查电路33与解码器器件30的错误通知检查电路33相同,并且基于由ECC解码器电路31输出的错误通知和由ECC解码器电路34输出的错误通知来生成最终错误通知信号。
以这种方式,解码器器件30B基于从存储器6读取的读取数据(D0-D7)、ECC(E0-E4)和检查位的部分位(F2-F4)来生成通知信号。
在上文中,解释了实施例3。与实施例1的情况一样,在本实施例中,执行通过ECC的错误检测和通过检查位的错误检测。因此,与仅基于一种ECC的数据的错误检测相比,可以提高检测性能。如上所述,ECC的低位2位可以与检查位的低位2位共享。因此,数据、ECC和检查位的总位数可以设置为16位。也就是说,总位数可以设置为2个字节,其是适合于数据通信的大小。
以下,说明实施例3的修改示例。在实施例2中,还优选如实施例3那样共享ECC和检查位的位。也就是说,可以使用根据实施例3的编码器器件20A和图29中所示的解码器器件30C。图29中示出的解码器器件30C与图21所示的根据实施例2的解码器器件30A相同,除了用症状生成电路302代替症状生成电路301之外。症状生成电路302具有与症状生成电路301相同的电路配置。但是,所输入的数据的位顺序是不同的;因此,要生成的症状码不同。
与上述ECC解码器电路34的情况一样,症状生成电路302接收通过旋转从存储器6读取的8位读取数据的低位3位的位位置而获得的数据(D2,D0,D1,D3-D7)、5位ECC的低位2位(E0=F0,E1=F1)以及5位检查位的高位3位(F2-F4)。基于这些输入生成症状码。
通过采用这样的配置,同样在实施例2中,总位数可以设置为2字节,其是适合于数据通信的大小。
图30是概述在根据实施例3的修改示例的错误检测的算法中出现的错误检测错失的表。图31是概述在根据实施例3的修改示例的错误检测算法中出现的误校正的情况的次数的表。这些表的解释与图10和图11的解释相同。然而,在实施例3的修改示例中,8位写入数据(D0-D7)、5位ECC(E0-E4)和3位检查位(F2-F4)存储在存储器6中。因此,图30和图30示出了从k=1到k=16的结果。
如图10和图30所示,尽管错误检测错失的总和没有改变,但是在比较示例中,在k=4时出现55次错误检测错失;然而,在实施例3的修改示例中,错误检测错失变为4次。在比较示例中,在k=5和k=6时总共出现96次错误检测错失。但是,在实施例3的修改示例中,检测错失次数为59。以这种方式,在实施例3的修改示例中,当k的值相对较小时,可以减少错失次数。与此相关,当k的值相对较小时,误校正次数也减少,如图11和图31所见。
<实施例4>
接下来,描述实施例4。在实施例1至实施例3中,编码器器件包括具有相同电路配置的两个ECC编码器电路,并且ECC编码器电路之一用作生成检查位的电路。与此相反,根据实施例4的编码器器件20B包括具有彼此不同的电路配置的ECC编码器电路21和检查位生成电路24。
根据实施例4的输入/输出接口10包括代替编码器器件20的编码器器件20B以及代替解码器器件30的解码器器件30D。
图32是示出编码器器件20B的框图。如图32所示,编码器器件20B包括ECC编码器电路21和检查位生成电路24。编码器器件20B的ECC编码器电路21例如与根据实施例1的ECC编码器电路21相同,并且通过根据预定的ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC。在实施例4中,ECC编码器电路21使用的ECC生成矩阵被称为ECC生成子矩阵。检查位生成电路24通过根据预定的检查位生成矩阵执行操作来生成检查位。
这里,说明ECC编码器电路21使用的ECC生成子矩阵和检查位生成电路24使用的检查位生成矩阵。ECC生成子矩阵和检查位生成矩阵是预定ECC生成矩阵(以下称为ECC生成全矩阵)的子矩阵。这里,假设ECC生成全矩阵是用于生成能够进行单错误校正和双错误检测的p位ECC(p是正整数)的ECC生成矩阵。在这种情况下,检查位生成矩阵是ECC生成全矩阵的q行的子矩阵(q是小于p的正整数),并且ECC生成子矩阵是ECC生成全矩阵的从中去除了q行子矩阵的r行子矩阵(r=p-q)。ECC编码器电路21通过根据这样的ECC生成子矩阵执行操作来生成能够进行单错误校正和双错误检测的r位ECC。检查位生成电路24通过根据检查位生成矩阵执行操作来生成q位检查位。实施例4的具体例子假设p=8、q=3并且r=5。
图33示出了ECC生成全矩阵、ECC生成子矩阵和检查位生成矩阵的示例。在图33中,上部示出的5行×8列矩阵是ECC生成子矩阵,下部示出的3行×8列矩阵是检查位生成矩阵,并且整个8行×8列矩阵是ECC生成全矩阵。图33中所示的ECC生成全矩阵是可以从8位输入数据(D0-D7)生成能够进行单错误校正和双错误检测的8位ECC的ECC生成矩阵。图33中所示的ECC生成子矩阵是可以从8位输入数据(D0-D7)生成能够进行单错误校正和双错误检测的5位ECC(E0-E4)的ECC生成矩阵。图33中所示的检查位生成矩阵是可以从8位输入数据(D0-D7)生成3位检查位(G5-G7)的矩阵。应注意,在图33中所示的检查位生成矩阵中,每列的位模式不是八种而是仅四种。因此,检查位不是SEC-DED码。
8位数据(D0-D7)被输入到编码器器件20B的ECC编码器电路21中。ECC编码器电路21使用图33的上部所示的ECC生成子矩阵执行操作并生成对应于8位输入数据(D0-D7)的5位ECC(E0-E4)。编码器器件20B的ECC编码器电路21的具体电路配置的示例如图5所示。
8位数据(D0-D7)被输入到编码器器件20B的检查位生成电路24。检查位生成电路24使用图33的下部所示的检查位生成矩阵来执行操作并生成对应于8位输入数据(D0-D7)的3位检查位(G5-G7)。图34是示出检查位生成电路24的具体电路配置的示例的框图。检查位生成电路24通过根据图33所示的检查位生成矩阵执行XOR运算,从8位输入数据(D0-D7)生成3位检查位(G5-G7)。检查位生成电路24配置有三个XOR电路24a-24c。XOR电路24a-24c是4输入XOR电路。XOR电路24a-24c中的每一个根据图33中所示的检查位生成矩阵执行操作,并确定3位检查位(G5-G7)中的一位的值。
作为XOR电路24a的输出获得G5。具体地,XOR电路24a对D1、D2、D4和D5执行XOR运算,并输出运算结果作为G5。类似地,作为XOR电路24b的输出获得G6。作为XOR电路24c的输出获得G7。
编码器器件20B将输入数据作为8位写入数据(D0-D7)与生成的5位ECC(E0-E4)和生成的3位检查位(G5-G7)一起存储到存储器6中。
接下来,解释解码器器件30D。图35是示出根据实施例4的解码器器件30D的配置的框图。解码器器件30D包括症状生成电路300和303、症状解码器电路310和312、错误通知信号生成电路331和错误校正电路320。
解码器器件30D的症状生成电路300与ECC解码器电路31(参考图9)的症状生成电路300相同,并且从8位读取数据(D0-D7)和5位ECC(E0-E4)生成并输出5位症状码(S0-S4)。症状生成电路300将生成的症状码输出到症状解码器电路310。
解码器器件30D的症状解码器电路310与ECC解码器电路31(参见图9)的症状解码器电路310相同,并且解码5位症状码(S0-S4),以生成和输出13位错误位位置标志(C0-C7,CE0-CE4)和无错误标志(Cxx)。从解码器器件30D的症状解码器电路310输出的错误位位置标志(C0-C7)被输入到错误校正电路320。然而,从症状解码器电路310输出的错误位位置标志(CE0-CE4)和无错误标志(Cxx)被输入到错误通知信号生成电路331而不是错误校正电路320。从解码器器件30D的症状解码器电路310输出的错误位位置标志(C0-C7)也被输入到错误通知信号生成电路331中。
解码器器件30D的症状生成电路303从8位读取数据(D0-D7)和3位检查位(G5-G7)生成并输出3位症状码(Q5-Q7)。症状生成电路303将生成的症状码输出到症状解码器电路312。
解码器器件30D的症状解码器电路312对3位症状码(Q5-Q7)进行解码,并生成和输出t位的错误位位置指定辅助标志(A0-A3,AG5-AG7)。症状解码器电路312将所生成的错误位位置指定辅助标志输出到错误通知信号生成电路331。
解码器器件30D的错误校正电路320与ECC解码器电路31的错误校正电路320相同(参考图9)。在实施例4中,错误校正电路320仅使用错误校正功能,并且不使用错误通知功能。因此,如上所述,位位置标志(C0-C7)被输入到错误校正电路320中;但是,没有输入无错误标志(Cxx)。以这种方式,在实施例4中,仅使用错误校正电路320的校正单元320A,并且不使用通知处理单元320B。因此,在实施例4中,可以使用仅包括校正单元320A的电路来代替错误校正电路320。
解码器器件30D的错误通知信号生成电路331从13位位置标志(C0-C7,CE0-CE4)、1位无错误标志(Cxx)和7位错误位位置指定辅助标志(A0-A3,AG5-AG7)生成并输出由单位错误通知信号和双位错误通知信号组成的错误通知信号。稍后将描述错误通知信号生成电路331的具体电路配置。
症状生成电路300和303通过根据图36所示的检查矩阵执行操作来生成症状码。在以下说明中,在症状生成电路300中使用的检查矩阵被称为ECC检查子矩阵,并且在症状生成电路303中使用的检查矩阵被称为检查位检查矩阵。ECC检查矩阵和检查位检查矩阵是预定ECC检查矩阵的子矩阵(下文称为ECC检查全矩阵)。这里,ECC检查全矩阵是通过将ECC生成全矩阵与单元矩阵组合而获得的矩阵。ECC检查子矩阵是ECC检查全矩阵的r行子矩阵(在图36所示的示例中,r=5),并且检查位检查矩阵是ECC检查全矩阵的去除了r行子矩阵的q行子矩阵(在图36中所示的示例中,q=3)。症状生成电路300通过根据ECC检查子矩阵执行操作来生成r位症状码。症状生成电路303通过根据检查位检查矩阵执行操作来生成q位症状码。
图36中所示的8行×16列矩阵是ECC检查全矩阵,上部的5行×16列矩阵是症状生成电路300中使用的ECC检查子矩阵,3行×16列矩阵是症状生成电路303中使用的检查位检查矩阵。
图36中所示的ECC检查子矩阵是从8位读取数据(D0-D7)和5位ECC(E0-E4)生成5位症状码(S0-S4)的矩阵。图36中所示的ECC检查子矩阵包括对应于检查位(G5-G7)的列(用斜线绘制),其中元素用0填充(因为不用于操作)。未用斜线绘制的左侧的13列具有与图7所示的ECC检查矩阵相同的内容。
图36中所示的检查位检查矩阵是从8位读取数据(D0-D7)和3位检查位(G5-G7)生成3位症状码(Q5-Q7)的矩阵。图36中所示的检查位检查矩阵包括对应于ECC(E0-E4)的列(用斜线绘制),其中元素用0填充(因为不用于操作)。
图37是示出解码器器件30D的症状生成电路303和症状解码器电路312的具体电路配置的示例的框图。
如图37所示,症状生成电路303配置有三个XOR电路303a-303c。XOR电路303a-303c是5输入XOR电路。每个XOR电路303a-303c根据图36所示的检查位检查矩阵确定3位症状码(Q5-Q7)中的一位的值。
作为XOR电路303a的输出获得Q5。具体地,XOR电路303a对D1、D2、D4、D5和G5执行XOR运算,并将运算结果输出为Q5。类似地,作为XOR电路303b的输出获得Q6。作为XOR电路303c的输出获得Q7。从症状生成电路303输出的症状码(Q5-Q7)被输入到症状解码器电路312。
症状解码器电路312配置有NOR电路312a和六个附接INV的AND电路312b-312g,如图37所示。NOR电路312a是3输入NOR电路。附接INV的AND电路312b-312g是3输入附接INV的AND电路。当在图36所示的检查位检查矩阵的每列中出现的3位位模式(它对应于图36中所示的Q5-Q7)与症状码的3位位模式(Q5-Q7)匹配时,NOR电路312a和附接INV的AND电路312b-312g分别输出1。
如图36所示,在检查位检查矩阵的每列中出现的3位位模式为七种(000,110,101,011,100,010,001)。症状解码器电路312的关于NOR电路312a和附接INV的AND电路312b-312d的用于输出错误位位置指定辅助标志(A0-A3)的操作等同于:检查在图33中所示的检查位生成矩阵的每列中出现的3位位模式和3位症状码的位模式(Q5-Q7)之间的匹配。
NOR电路312a和附接INV的AND电路312b-312g中的每一个输出错误位位置指定辅助标志(A0-A3,AG5-AG7)。作为错误位位置指定辅助标志的输出模式,有以下两种。第一种输出模式是所有A0-A3和AG5-AG7都为0的输出模式。第二种输出模式是A0-A3和AG5-AG7中的任何一个为1的输出模式。
只有当症状码(S0-S4)的所有位都为0时,症状解码器电路310才与C0-C7分开地输出设置为1的标志Cxx。另一方面,在症状解码器电路312中,由NOR电路312a生成的错误位位置指定辅助标志(A0)是仅在症状码的所有位(Q5-Q7)为0时才被设置为1的标志。因此,症状解码器电路312仅输出错误位位置指定辅助标志(A0-A3,AG5-AG7)。症状解码器电路312将错误位位置指定辅助标志(A0-A3,AG5-AG7)输出到错误通知信号生成电路331。
解码器器件30D的症状生成电路300和症状解码器电路310也称为第一症状单元。第一症状单元根据从存储器6读取的读取数据(D0-D7)和ECC(E0-E4)生成第一症状码(S0-S4)。第一症状单元生成:第一标志(C0-C7,CE0-CE4),其指示该第一症状码是否与ECC检查子矩阵的一列的位模式匹配;以及第二标志(Cxx),其指示第一症状码的所有位是否都为0。
解码器器件30D的症状生成电路303和症状解码器电路312也称为第二症状单元。第二症状单元根据从存储器6读取的读取数据(D0-D7)和检查位(G5-G7)生成第二症状码(Q5-Q7)。第二症状单元生成第三标志(A0-A3,AG5-AG7),其指示第二症状码是否与检查位检查矩阵的一列的位模式匹配。
错误通知信号生成电路331也称为通知单元,将由第一症状单元生成的标志(C0-C7,CE0-CE4,Cxx)与由第二症状单元生成的标志(A0-A3,AG5-AG7)进行比较,并根据比较结果生成错误通知信号。也就是说,错误通知信号生成电路331检查由第一症状单元生成的标志和由第二症状单元生成的标志之间的匹配,并生成具有改善精度(可靠性)的错误位位置标志(C'0-C'7,CE'0-CE'4)和错误位位置指定辅助标志(AG'5-AG'7)。以类似的方式,错误通知信号生成电路331检查无错误标志(Cxx)和错误位位置指定辅助标志(A0)之间的匹配,并生成具有改善精度(可靠性)的无错误标志(C'xx)。
如图35所示,错误通知信号生成电路331配置有17个AND电路331a-331q、OR电路331r和NOR电路331s。AND电路331a-331q是2输入AND电路。
当症状码(Q5-Q7)的位模式与在与图36示出的检查位检查矩阵中的D0或D7所对应的列的位模式匹配时,错误位位置指定辅助标志(A0)被设置为1。当症状码(S0-S4)的位模式与图36所示的ECC检查子矩阵中的D0所对应的列的位模式匹配时,错误位位置标志(C0)被设置为1。
当校正码(S0-S4)的位模式与图36所示的ECC检查子矩阵中的D7所对应的列的位模式匹配时,错误位位置标志(C7)被设置为1。因此,错误通知信号生成电路331将C0与A0进行比较并将C7与A0进行比较。因此,C0和A0被输入到AND电路331a,并且AND电路331a输出C'0。C7和A0被输入到AND电路331h,并且AND电路331h输出C'7。
错误通知信号生成电路331关于其他错误位位置标记执行类似比较。即,C1和A1被输入到AND电路331b,并且AND电路331b输出C'1。C2和A2被输入到AND电路331c,并且AND电路331c输出C'2。C3和A3被输入到AND电路331d,并且AND电路331d输出C'3。C4和A1被输入到AND电路331e,并且AND电路331e输出C'4。C5和A2被输入到AND电路331f,并且AND电路331f输出C'5。C6和A3被输入到AND电路331g,并且AND电路331g输出C'6。
当症状码(S0-S4)的位模式与图36所示的ECC检查子矩阵中的E0所对应的列的位模式匹配时,错误位位置标志(CE0)被设置为1。这里,如从图36清楚的那样,当症状码(S0-S4)的位模式与E0所对应的列的位模式匹配时,症状码(Q5-Q7)的位模式应设置为模式(0,0,0)。通过使用A0,可以确定症状码(Q5-Q7)的位模式是否等于模式(0,0,0)。因此,错误通知信号生成电路331将CE0与A0进行比较。即,CE0和A0被输入到AND电路331i,并且AND电路331i输出CE'0。
类似地,CE1和A0被输入到AND电路331j,并且AND电路331j输出CE'1。CE2和A0被输入到AND电路331k,并且AND电路331k输出CE'2。CE3和A0被输入到AND电路331l,并且AND电路331l输出CE'3。CE4和A0被输入到AND电路331m,并且AND电路331m输出CE'4。AG5和Cxx被输入到AND电路331n,并且AND电路331n输出AG'5。AG6和Cxx被输入到AND电路331o,并且AND电路331o输出AG'6。AG7和Cxx被输入到AND电路331p,并且AND电路331p输出AG'7。
当两种输入标志的值均为1时,AND电路331a-331p输出1,否则输出0。也就是说,当根据第一标志(C0-C7,CE0-CE4)、第三标志(A0-A3,AG5-AG7)、第一症状码(S0-S4)、第二症状码(Q5-Q7)、ECC检查子矩阵和检查位检查矩阵进行说明时,错误通知信号生成电路331如下生成标志。仅当满足第一条件和第二条件两者时,错误通知信号生成电路331生成指示第一症状码(S0-S4)与ECC检查子矩阵的第t列(t是正整数)的位模式匹配的第五标志(C'0至C'7,CE'0-CE'4)。这里,第一条件是第一标志(C0-C7,CE0-CE4)指示第一症状码(S0-S4)与ECC生成子矩阵的第t列的位模式匹配。第二条件是第三标志(A0-A3,AG5-AG7)指示第二症状码(Q5-Q4)与检查位检查矩阵的第t列的位模式匹配。
当症状码(Q5-Q7)的位模式与图33所示的检查位生成矩阵中的D0或D7的列所对应的位模式即(0,0,0)匹配时,错误位位置指定辅助标志(A0)被设置为1。因此,从症状解码器电路310输出的无错误标志(Cxx)和从症状解码器电路312输出的错误位位置指定辅助标志(A0)被输入到AND电路331q。当两个输入值均为1时,AND电路331q输出1,否则输出0。也就是说,当根据第二标志(Cxx)、第三标志(A0-A3,AG5-AG7)、第一症状码(S0-S4)和第二症状码(Q5-Q7)进行说明时,错误通知信号生成电路331如下生成标志(C'xx)。仅当第二标志(Cxx)指示第一症状码(S0-S4)的所有位为0并且预定的第三标志(A0)指示第二症状码(Q5-Q7)的所有位都是0时,错误通知信号生成电路331生成指示第一症状码(S0-S4)的所有位都为0的第六标志(C'xx)。
标志(C'0-C'7,CE'0-CE'4,AG'5-AG'7)输入到OR电路331r,标志(C'xx)输入NOR电路331s。类似于通知处理单元320B的电路配置有OR电路331r和NOR电路331s。也就是说,OR电路331r对应于图9的OR电路320i,NOR电路331s对应于图9的NOR电路320j。通过采用这样的配置,错误通知信号生成电路331基于错误位位置标志(C'0-C'7,CE'0-CE'4)和无错误标志(C'xx),生成由单位错误通知信号和双位错误通知信号组成的错误通知信号。
根据实施例4,解码器器件30D基于症状解码器电路310的输出和症状解码器电路312的输出的比较结果来进行错误通知。也就是说,解码器器件30D基于通过错误通知信号生成电路331改善了精度的无错误标志的值(C'xx)和错误位位置标志(C'0-C'7,CE'0-CE'4)的值进行错误通知。通过组合ECC的错误检测结果和检查位的错误检测结果来进行这种错误通知。因此,同样在实施例4中,可以提高错误的检测性能。
图38是概述在根据实施例4的错误检测算法中出现的错误检测错失的表。图39是概述在根据实施例4的错误检测算法中出现的误校正的情况的次数的表。这些表的解释与图10和图11的解释相同。然而,在实施例4中,8位写入数据(D0-D7)、5位ECC(E0-E4)和3位检查位(G5-G7)被存储在存储器6中。因此,图38和图39示出了从k=1到k=16的结果。
从图10和图38可见,错误的检测错失的总数没有变化,但是,在比较示例中,在k=4时出现55次的错误检测错失,但是在实施例4中,出现了9次检测错失。在比较示例中,在k=5和k=6时出现总共96次的错误检测错失;然而,在实施例3中出现了76次检测错失。因此,在实施例4中,当k的值相对较小时,可以减少错失次数。与此相关,如图11和图39所示,当k的值相对较小时的误校正的次数也减少。
<实施例的修改示例>
最后,说明实施例的修改示例。在上述实施例中,执行输入到生成ECC(检查位)的电路中的输入数据的位位置的旋转。然而,可以使用其他方法。例如,可以使用通过置换一些位位置而获得的数据来生成检查位。
应用于编码器器件的两种ECC生成矩阵的列位模式的组合可以是不同的。也就是说,当在两种ECC生成矩阵中的一种的每列中出现的位模式中不包括的不同位模式可用作ECC时,这两种ECC生成矩阵中的另一种可以通过考虑所述不同位模式来置换所述两种ECC生成矩阵中的一种的一列的位模式来组成。还可以一起使用位位置的旋转和一些位位置的置换。
在实施例1至实施例4中,作为多位错误,例如,假设一些位的值反转(位的值从0变为1或从1变为0)的错误。然而,可以检测到其他模式的多位错误。例如,在由于数据信号系统的处理电路的故障或输入/输出端子的故障而出现的多位错误中,假设多位的所有数据或取决于电路配置的预定位宽度的数据受到固定型故障(位的值保持0或1)的影响。即使在这种假设的情况下,也可以类似地改善多位错误的检测性能。
顺便提及,例如,当使用图3中所示的ECC生成矩阵和图7中所示的ECC检查矩阵时,如果所有数据位都是0,则ECC的所有位也被设置为0。因此,理论上将错失其中ECC和数据的所有位受到固定型故障(保持0)影响的多位错误。然而,如果ECC的一位的反转值存储在存储器中,则变得可以检测到该错误而不会错失。因此,当假设固定型故障(保持0或1)时,通过使用具有特定位反转值的ECC(和检查位),可以降低错失多位错误的概率(百分比)。也就是说,通过反转根据ECC生成矩阵从数据生成的ECC的一个特定位的值并将其存储在存储器中,并且通过在反转从存储器读取的ECC的特定位的值之后根据ECC检查矩阵生成症状,可以减少错失多位错误的概率(百分比)。这是由于以下原因。用作ECC解码器电路中的症状生成电路的输入的ECC(和检查位)的每个位的值和读取数据的每个位的值不是独立的;因此,由于固定型故障(保持0或1)引起的多位错误的组合的总数变少,并且多位错误错失和误校正的情况的次数也变少。
在实施例1至实施例4中,例如,可以改善由于用于读取/写入存储器的接口电路中的数据信号系统的输入/输出端子或处理电路的故障(以及存储器内的数据输入/输出电路的故障)而出现的多位错误的检测性能。然而,用于错误检测的上述配置可以用在其他模式中。例如,可以通过使用组合了以下配置的配置来执行错误检测,所述配置为:通过被附加用于至存储器的数据的读取/写入的ECC(和检查位)来执行处理的配置,以及通过被附加用于SOC的内部总线中的数据传输的EDC(错误检测码)来执行处理的配置。
顺便提及,当ECC被附加用于至存储器的数据的读取/写入时,在某些情况下采用双冗余硬件配置,以防止单错误校正和双错误检测的功能由于ECC解码器电路中的故障而停止正常操作。在该配置中,提供附加ECC解码器电路(用于检查),并且比较器电路检查原始ECC解码器电路的输出信号是否与附加ECC解码器电路(用于检查)的输出信号匹配。类似地,在ECC编码器电路中,在某些情况下采用双冗余硬件配置。在上述实施例中,通过采用另外提供ECC解码器电路(用于检查位)和ECC编码器电路(用于检查位)的配置,也将获得相当于双冗余硬件的效果以防止ECC解码器电路或ECC编码器电路的故障,但该配置与双冗余硬件配置不同。
以上说明是针对编码器器件和解码器器件由硬件电路实现的配置。然而,编码器器件中的一些或全部或者解码器器件中的一些或全部可以由包括由处理器运行的指令的程序在软件方面实现。
可以使用各种类型的非瞬态计算机可读介质来存储上述程序,并且可以将其提供给计算机。非瞬态计算机可读介质包括各种类型的有形存储介质。非瞬态计算机可读介质的示例包括磁记录介质(例如,软盘、磁带和硬盘驱动器)、光磁记录介质(例如,磁光盘)、CD-ROM(只读存储器)、CD-R、CD-R/W、半导体存储器(例如,掩模ROM、PROM(可编程ROM)、EPROM(可擦除PROM)、闪存ROM、RAM(随机存取存储器))。可以通过各种类型的瞬态计算机可读介质将程序提供给计算机。瞬态计算机可读介质的示例包括电信号、光信号和电磁波。瞬态计算机可读介质可以经由有线通信路径(例如电线和光纤)或无线通信路径向计算机提供程序。
如上所述,基于实施例具体说明了本发明人完成的本发明。然而,不言而喻,本发明不限于如上所述的实施例,并且可以在不偏离本发明的范围内进行各种改变。例如,输入数据、ECC和检查位的位数是示例,并且位数可以不同于上述实施例中提及的位数。
一些或所有实施例也可以描述为以下附加说明;但是,它们不限于以下内容。
(附加说明1)
一种数据处理器件,包括:
编码器器件;和
解码器器件,
所述编码器器件包括:
第一编码器单元,用于通过根据第一ECC(错误校正码)生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC;和
第二编码器单元,用于通过根据第二ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC,所述第二ECC生成矩阵是通过置换所述第一ECC生成矩阵的列而获得的,
第一编码器单元接收第一数据以生成用于所述第一数据的第一ECC,
第二编码器单元接收通过置换所述第一数据的位而获得的第二数据以生成用于所述第二数据的第二ECC,
编码器器件将所述第一数据、所述第一ECC和所述第二ECC存储在存储器中,以及
解码器器件基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC,生成指示所述第一数据的错误出现状态的通知信号。
(附加说明2)
在根据附加说明1的数据处理器件中,
所述解码器器件包括:
第一解码器单元,用于接收第一位串,并且生成指示所述第一位串中是否存在可校正的单位错误的第一确定信号和指示所述第一位串中是否存在两位或更多位错误的第二确定信号,所述第一位串包括从所述存储器读取的所述第一数据和所述第一ECC;
第二解码器单元,用于接收第二位串,并且生成指示所述第二位串中是否存在可校正的单位错误的第三确定信号和指示所述第二位串中是否存在两位或更多位错误的第四确定信号,所述第二位串包括第三数据和从所述存储器读取的所述第二ECC,所述第三数据是通过如所述第二数据中那样、通过置换从所述存储器读取的所述第一数据的位而获得的;和
通知单元,用于基于所述第一确定信号、所述第二确定信号、所述第三确定信号和所述第四确定信号生成所述通知信号。
(附加说明3)
在根据附加说明2的数据处理器件中,
当仅所述第一确定信号和所述第三确定信号中的一个指示存在可校正的单位错误时,所述通知单元生成指示包括从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的位串包括两位或更多位错误的所述通知信号。
(附加说明4)
在根据附加说明2的数据处理器件中,
当所述第二确定信号和所述第四确定信号中的至少一个指示存在两位或更多位错误时,所述通知单元生成指示包括从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的位串包括两位或更多位错误的所述通知信号。
(附加说明5)
在根据附加说明1的数据处理器件中,
所述解码器器件包括:
第一症状单元,用于根据从所述存储器读取的所述第一数据和所述第一ECC来生成第一症状码,并且生成指示所述第一症状码是否与包括所述第一ECC生成矩阵和单元矩阵的第一ECC检查矩阵的任何列的位模式匹配的第一标志以及指示所述第一症状码的所有位是否为0的第二标志;
第二症状单元,用于根据第三数据和从所述存储器读取的所述第二ECC来生成第二症状码,并且生成指示所述第二症状码是否与包括所述第二ECC生成矩阵和单元矩阵的第二ECC检查矩阵的任何列的位模式匹配的第三标志以及指示所述第二症状码的所有位是否为0的第四标志,所述第三数据是通过如所述第二数据中那样、通过置换从所述存储器读取的所述第一数据的位而获得的;和
症状检查单元,用于比较所述第一标志和所述第三标志,并且比较所述第二标志和所述第四标志,以及
所述解码器器件基于所述症状检查单元的比较结果生成所述通知信号。
(附加说明6)
在根据附加说明5的数据处理器件中,
仅当所述第一标志指示所述第一症状码与所述第一ECC检查矩阵的第t列的位模式匹配时(t是指示与包括在所述第一ECC检查矩阵中的所述第一ECC生成矩阵的任何列对应的列号的正整数)并且当所述第三标志指示所述第二症状码与所述第二ECC检查矩阵的第t列的位模式匹配时,所述症状检查单元输出指示所述第一症状码与所述第一ECC检查矩阵的第t列的位模式匹配的标志作为第五标志,以及
当所述第一标志指示所述第一症状码与所述第一ECC检查矩阵的第s列的位模式匹配时(s是指示与包括在所述第一ECC检查矩阵中的所述单元矩阵的任何列对应的列号的正整数),或者当所述第三标志指示所述第二症状码与所述第二ECC检查矩阵的第s列的位模式匹配时,所述症状检查单元输出指示所述第一症状码与所述第一ECC检查矩阵的第s列的位模式匹配的标志作为所述第五标志。
(附加说明7)
在根据附加说明6的数据处理器件中,
所述解码器器件还包括:
错误校正单元,用于基于所述第五标志校正从所述存储器读取的所述第一数据的所述单位错误。
(附加说明8)
在根据附加说明6的数据处理器件中,
仅当所述第二标志指示所述第一症状码的所有位都是0时并且当所述第四标志指示所述第二症状码的所有位都是0时,所述症状检查单元输出指示所述第一症状码的所有位都是0的第六标志,以及
所述解码器器件还包括:
通知单元,用于基于所述第五标志的值和所述第六标志的值生成所述通知信号。
(附加说明9)
在根据附加说明1的数据处理器件中,
通过旋转所述第一ECC生成矩阵的每一列来获得所述第二ECC生成矩阵,以及
通过旋转所述第一数据的每个位获得所述第二数据。
(附加说明10)
在根据附加说明1的数据处理器件中,
所述第二ECC生成矩阵是通过置换所述第一ECC生成矩阵中预定行的值相同的多列来获得的,
所述编码器器件在所述存储器中存储所述第一数据、由所述第一编码器单元生成的所述第一ECC的所有位以及由所述第二编码器单元生成的所述第二ECC的部分位,
所述部分位是通过使用所述第二ECC生成矩阵中的所述预定行以外的行的操作获得的,以及
所述解码器器件基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的部分位来生成所述通知信号。
(附加说明11)
一种数据处理器件,包括:
编码器器件;和
解码器器件,
其中所述编码器器件包括:
检查位生成单元,用于通过根据第一ECC生成矩阵的q行子矩阵执行操作来生成q个检查位,以生成能够进行单错误校正和双错误检测的p位ECC(错误校正码)(p和q是正整数且q小于p);和
ECC生成单元,用于通过根据作为所述第一ECC生成矩阵的子矩阵的、去除了q行子矩阵的r行第二ECC生成矩阵(r=p-q)来执行操作,以生成能够进行单错误校正和双错误检测的r位ECC,
所述ECC生成单元接收第一数据以生成用于所述第一数据的ECC,
所述检查位生成单元接收所述第一数据以生成用于所述第一数据的检查位,
所述编码器器件将所述第一数据、所述ECC和所述检查位存储在存储器中,
所述解码器器件包括:
第一症状单元,用于根据从所述存储器读取的所述第一数据和所述第一ECC生成第一症状码,并且生成指示所述第一症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述r行子矩阵的任何列的位模式匹配的第一标志以及指示所述第一症状码的所有位是否为0的第二标志;
第二症状单元,用于根据从所述存储器读取的所述第一数据和所述检查位生成第二症状码,并且生成第三标志,所述第三标志指示所述第二症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述q行子矩阵的任何列的位模式匹配;和
通知单元,用于将由所述第一症状单元生成的标志与由所述第二症状单元生成的标志进行比较,并且基于比较结果生成指示所述第一数据的错误出现状态的通知信号。
(附加说明12)
一种数据处理方法,包括以下步骤:
通过根据第一ECC(错误校正码)生成矩阵执行操作,生成能够对第一数据进行单错误校正和双错误检测的第一ECC;
通过根据通过置换所述第一ECC生成矩阵的列而获得的第二ECC生成矩阵执行操作,生成能够对通过置换所述第一数据的位而获得的第二数据进行单错误校正和双错误检测的第二ECC;
将所述第一数据、所述第一ECC和所述第二ECC存储在存储器中;以及
基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC,生成指示所述第一数据的错误出现状态的通知信号。
(附加说明13)
一种数据处理方法,包括以下步骤:
通过根据第一ECC生成矩阵的q行子矩阵执行操作来生成q位检查位,以生成能够进行单错误校正和双错误检测的p位ECC(错误校正码)(p和q是正整数且q小于p);
通过根据作为所述第一ECC生成矩阵的子矩阵的、去除了q行子矩阵的r行第二ECC生成矩阵(r=p-q)来执行操作,以生成能够进行单错误校正和双错误检测的r位ECC;
将所述第一数据、所述ECC和所述检查位存储在存储器中;
所述解码器器件包括:
根据从所述存储器读取的所述第一数据和所述第一ECC生成第一症状码,并且生成指示所述第一症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述r行子矩阵的任何列的位模式匹配的第一标志以及指示所述第一症状码的所有位是否为0的第二标志;
根据从所述存储器读取的所述第一数据和所述检查位生成第二症状码,并且生成第三标志,所述第三标志指示所述第二症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述q行子矩阵的任何列的位模式匹配;
将基于所述第一症状码生成的标志与基于所述第二症状码生成的标志进行比较;以及
基于比较结果生成指示所述第一数据的错误出现状态的通知信号。

Claims (12)

1.一种数据处理器件,包括:
编码器器件;和
解码器器件,
其中所述编码器器件包括:
第一编码器单元,用于通过根据第一ECC(错误校正码)生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC;和
第二编码器单元,用于通过根据第二ECC生成矩阵执行操作来生成能够进行单错误校正和双错误检测的ECC,所述第二ECC生成矩阵是通过置换所述第一ECC生成矩阵的列而获得的,
其中,所述第一编码器单元接收第一数据,以生成用于所述第一数据的第一ECC,
其中,所述第二编码器单元接收通过置换所述第一数据的位而获得的第二数据,以生成用于所述第二数据的第二ECC,
其中,所述编码器器件将所述第一数据、所述第一ECC和所述第二ECC存储在存储器中,以及
其中,所述解码器器件基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC,生成指示所述第一数据的错误出现状态的通知信号。
2.根据权利要求1所述的数据处理器件,
其中,所述解码器器件包括:
第一解码器单元,用于接收第一位串,并且生成指示所述第一位串中是否存在可校正的单位错误的第一确定信号、以及指示所述第一位串中是否存在两位或更多位错误的第二确定信号,所述第一位串包括从所述存储器读取的所述第一数据和所述第一ECC;
第二解码器单元,用于接收第二位串,并且生成指示所述第二位串中是否存在可校正的单位错误的第三确定信号、以及指示所述第二位串中是否存在两位或更多位错误的第四确定信号,所述第二位串包括第三数据和从所述存储器读取的所述第二ECC,所述第三数据是通过如所述第二数据中那样、通过置换从所述存储器读取的所述第一数据的位而获得的;和
通知单元,用于基于所述第一确定信号、所述第二确定信号、所述第三确定信号和所述第四确定信号生成所述通知信号。
3.根据权利要求2所述的数据处理器件,
其中,当仅所述第一确定信号和所述第三确定信号中的一个指示存在可校正的单位错误时,所述通知单元生成指示包括从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的位串包括两位或更多位错误的所述通知信号。
4.根据权利要求2所述的数据处理器件,
其中,当所述第二确定信号和所述第四确定信号中的至少一个指示存在两位或更多位错误时,所述通知单元生成指示包括从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的位串包括两位或更多位错误的所述通知信号。
5.根据权利要求1所述的数据处理器件,
其中,所述解码器器件包括:
第一症状单元,用于根据从所述存储器读取的所述第一数据和所述第一ECC来生成第一症状码,并且生成指示所述第一症状码是否与包括所述第一ECC生成矩阵和单元矩阵的第一ECC检查矩阵的任何列的位模式匹配的第一标志、以及指示所述第一症状码的所有位是否为0的第二标志;
第二症状单元,用于根据第三数据和从所述存储器读取的所述第二ECC来生成第二症状码,并且生成指示所述第二症状码是否与包括所述第二ECC生成矩阵和单元矩阵的第二ECC检查矩阵的任何列的位模式匹配的第三标志、以及指示所述第二症状码的所有位是否为0的第四标志,所述第三数据是通过如所述第二数据中那样、通过置换从所述存储器读取的所述第一数据的位而获得的;和
症状检查单元,用于比较所述第一标志和所述第三标志,并且比较所述第二标志和所述第四标志,以及
其中,所述解码器器件基于所述症状检查单元的比较结果生成所述通知信号。
6.根据权利要求5所述的数据处理器件,
其中,仅当所述第一标志指示所述第一症状码与所述第一ECC检查矩阵的第t列的位模式匹配时(t是指示与包括在所述第一ECC检查矩阵中的所述第一ECC生成矩阵的任何列对应的列号的正整数)、并且当所述第三标志指示所述第二症状码与所述第二ECC检查矩阵的第t列的位模式匹配时,所述症状检查单元输出指示所述第一症状码与所述第一ECC检查矩阵的第t列的位模式匹配的标志,作为第五标志,以及
其中,当所述第一标志指示所述第一症状码与所述第一ECC检查矩阵的第s列的位模式匹配时(s是指示与包括在所述第一ECC检查矩阵中的所述单元矩阵的任何列对应的列号的正整数),或者当所述第三标志指示所述第二症状码与所述第二ECC检查矩阵的第s列的位模式匹配时,所述症状检查单元输出指示所述第一症状码与所述第一ECC检查矩阵的第s列的位模式匹配的标志,作为所述第五标志。
7.根据权利要求6所述的数据处理器件,
其中,所述解码器器件还包括:
错误校正单元,用于基于所述第五标志校正从所述存储器读取的所述第一数据的所述单位错误。
8.根据权利要求6所述的数据处理器件,
其中,仅当所述第二标志指示所述第一症状码的所有位都是0时、并且当所述第四标志指示所述第二症状码的所有位都是0时,所述症状检查单元输出指示所述第一症状码的所有位都是0的第六标志,以及
其中,所述解码器器件还包括:
通知单元,用于基于所述第五标志的值和所述第六标志的值生成所述通知信号。
9.根据权利要求1所述的数据处理器件,
其中,通过旋转所述第一ECC生成矩阵的每一列来获得所述第二ECC生成矩阵,以及
其中,通过旋转所述第一数据的每个位获得所述第二数据。
10.根据权利要求1所述的数据处理器件,
其中,所述第二ECC生成矩阵是通过置换所述第一ECC生成矩阵中预定行的值相同的多列来获得的,
其中,所述编码器器件在所述存储器中存储所述第一数据、由所述第一编码器单元生成的所述第一ECC的所有位、以及由所述第二编码器单元生成的所述第二ECC的部分位,
其中,所述部分位是通过使用所述第二ECC生成矩阵中的所述预定行以外的行的操作获得的,以及
其中,所述解码器器件基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC的部分位来生成所述通知信号。
11.一种数据处理器件,包括:
编码器器件;和
解码器器件,
其中所述编码器器件包括:
检查位生成单元,用于通过根据第一ECC生成矩阵的q行子矩阵执行操作来生成q个检查位,以生成能够进行单错误校正和双错误检测的p位ECC(错误校正码)(p和q是正整数、且q小于p);和
ECC生成单元,用于通过根据作为所述第一ECC生成矩阵的子矩阵的、去除了q行子矩阵的r行第二ECC生成矩阵(r=p-q)来执行操作,以生成能够进行单错误校正和双错误检测的r位ECC,
其中,所述ECC生成单元接收第一数据,以生成用于所述第一数据的ECC,
其中,所述检查位生成单元接收所述第一数据,以生成用于所述第一数据的检查位,
其中,所述编码器器件将所述第一数据、所述ECC和所述检查位存储在存储器中,
其中,所述解码器器件包括:
第一症状单元,用于根据从所述存储器读取的所述第一数据和所述第一ECC生成第一症状码,并且生成指示所述第一症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述r行子矩阵的任何列的位模式匹配的第一标志、以及指示所述第一症状码的所有位是否为0的第二标志;
第二症状单元,用于根据从所述存储器读取的所述第一数据和所述检查位生成第二症状码,并且生成第三标志,所述第三标志指示所述第二症状码是否与包括所述第一ECC生成矩阵和单元矩阵的ECC检查矩阵中的所述q行子矩阵的任何列的位模式匹配;和
通知单元,用于将由所述第一症状单元生成的标志与由所述第二症状单元生成的标志进行比较,并且基于比较结果生成指示所述第一数据的错误出现状态的通知信号。
12.一种数据处理方法,包括以下步骤:
通过根据第一ECC(错误校正码)生成矩阵执行操作,生成能够对第一数据进行单错误校正和双错误检测的第一ECC;
通过根据通过置换所述第一ECC生成矩阵的列而获得的第二ECC生成矩阵执行操作,生成能够对通过置换所述第一数据的位而获得的第二数据进行单错误校正和双错误检测的第二ECC;
将所述第一数据、所述第一ECC和所述第二ECC存储在存储器中;以及
基于从所述存储器读取的所述第一数据、所述第一ECC和所述第二ECC,生成指示所述第一数据的错误出现状态的通知信号。
CN201811557353.6A 2017-12-20 2018-12-19 数据处理器件和数据处理方法 Pending CN109947674A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017243558A JP2019109806A (ja) 2017-12-20 2017-12-20 データ処理装置及びデータ処理方法
JP2017-243558 2017-12-20

Publications (1)

Publication Number Publication Date
CN109947674A true CN109947674A (zh) 2019-06-28

Family

ID=64331678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811557353.6A Pending CN109947674A (zh) 2017-12-20 2018-12-19 数据处理器件和数据处理方法

Country Status (5)

Country Link
US (1) US10735028B2 (zh)
EP (1) EP3503411B1 (zh)
JP (1) JP2019109806A (zh)
CN (1) CN109947674A (zh)
TW (1) TW201929442A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210019676A (ko) * 2019-08-13 2021-02-23 삼성전자주식회사 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법
JP2021150733A (ja) * 2020-03-17 2021-09-27 キオクシア株式会社 半導体装置及び半導体記憶装置
US11416331B2 (en) * 2020-12-09 2022-08-16 Micron Technology, Inc. Modified checksum using a poison data pattern
JP2023005919A (ja) 2021-06-29 2023-01-18 ルネサスエレクトロニクス株式会社 半導体装置および誤り検出方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675349B1 (en) * 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6675344B1 (en) * 2000-05-01 2004-01-06 Hewlett-Packard Development Company, L.P. Multiple ECC schemes to improve bandwidth
CN1538298A (zh) * 2003-04-17 2004-10-20 国际商业机器公司 计算机系统中的纠错方法和装置
JP2005176244A (ja) * 2003-12-15 2005-06-30 Tokyo Institute Of Technology スポッティバイト誤り訂正・検出方法及び装置
JP2006060465A (ja) * 2004-08-19 2006-03-02 Tokyo Institute Of Technology スポッティバイト誤り訂正・検出方法及び装置
US20140143635A1 (en) * 2012-11-21 2014-05-22 Nvidia Corporation Techniques for storing ecc checkbits in a level two cache
CN104393878A (zh) * 2010-11-10 2015-03-04 英飞凌科技股份有限公司 用于纠正在编码比特序列中的至少单比特错误的设备和方法
CN104765650A (zh) * 2014-01-08 2015-07-08 瑞萨电子株式会社 数据处理装置
US20170286217A1 (en) * 2016-04-05 2017-10-05 Micron Technology, Inc. Error correction code (ecc) operations in memory
CN107436821A (zh) * 2016-05-31 2017-12-05 Arm 有限公司 为包括多个数据位和地址位的块生成错误码的装置和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289000B1 (en) * 2000-05-19 2001-09-11 Intellon Corporation Frame control encoder/decoder for robust OFDM frame transmissions
JP2005004288A (ja) 2003-06-10 2005-01-06 Digital Electronics Corp 誤り検出回路
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675344B1 (en) * 2000-05-01 2004-01-06 Hewlett-Packard Development Company, L.P. Multiple ECC schemes to improve bandwidth
US6675349B1 (en) * 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
CN1538298A (zh) * 2003-04-17 2004-10-20 国际商业机器公司 计算机系统中的纠错方法和装置
JP2005176244A (ja) * 2003-12-15 2005-06-30 Tokyo Institute Of Technology スポッティバイト誤り訂正・検出方法及び装置
JP2006060465A (ja) * 2004-08-19 2006-03-02 Tokyo Institute Of Technology スポッティバイト誤り訂正・検出方法及び装置
CN104393878A (zh) * 2010-11-10 2015-03-04 英飞凌科技股份有限公司 用于纠正在编码比特序列中的至少单比特错误的设备和方法
US20140143635A1 (en) * 2012-11-21 2014-05-22 Nvidia Corporation Techniques for storing ecc checkbits in a level two cache
CN104765650A (zh) * 2014-01-08 2015-07-08 瑞萨电子株式会社 数据处理装置
US20150194984A1 (en) * 2014-01-08 2015-07-09 Renesas Electronics Corporation Data Processing Apparatus
US20170286217A1 (en) * 2016-04-05 2017-10-05 Micron Technology, Inc. Error correction code (ecc) operations in memory
CN107436821A (zh) * 2016-05-31 2017-12-05 Arm 有限公司 为包括多个数据位和地址位的块生成错误码的装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RICHTER等: "New Linear SEC-SES Codes with Reduced Triple Bit Error Miscorrection Probability", PROC.OF 14TH IEEE INERNATIONAL ON-LINE TESTING SYMPOSIUN2008, 7 July 2008 (2008-07-07), pages 37 - 42, XP031287412 *

Also Published As

Publication number Publication date
EP3503411A3 (en) 2019-08-07
EP3503411B1 (en) 2023-07-05
US10735028B2 (en) 2020-08-04
EP3503411A2 (en) 2019-06-26
TW201929442A (zh) 2019-07-16
US20190190540A1 (en) 2019-06-20
JP2019109806A (ja) 2019-07-04

Similar Documents

Publication Publication Date Title
CN109947674A (zh) 数据处理器件和数据处理方法
US3755779A (en) Error correction system for single-error correction, related-double-error correction and unrelated-double-error detection
CN105340022B (zh) 用于校正数据错误的电路、设备及方法
EP1204921B1 (en) System and method for detecting double-bit errors and for correcting errors due to component failures
CN107436821B (zh) 为包括多个数据位和地址位的块生成错误码的装置和方法
US20030023928A1 (en) Manufacturing test for a fault tolerant magnetoresistive solid-state storage device
US11093331B2 (en) Method, device and computer program product for detecting incomplete write of data
CN101477481A (zh) 一种自动纠错系统及方法
TW200828328A (en) Method of improving accessing reliability of flash memory
CN103703447B (zh) Mram场的干扰检测和恢复
US8918707B2 (en) Codeword error injection via checkbit modification
KR0168844B1 (ko) 반도체 메모리 내부 병렬시험을 위한 방법 및 장치
JP7343709B2 (ja) 誤り訂正システム
KR102142602B1 (ko) 신규 메모리 디바이스
JP2023512892A (ja) 比較システム
CN105022675B (zh) 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置与方法
CN109215726B (zh) 存储器测试方法及其存储器装置
US11069421B1 (en) Circuitry for checking operation of error correction code (ECC) circuitry
CN110716824B (zh) 编码方法及使用所述编码方法的存储器存储装置
US8671317B2 (en) Built-in self test circuit and designing apparatus
CN105027084A (zh) 在移动通信系统中控制存储器的装置和方法
CN115729746A (zh) 一种基于crc和ecc存储数据保护方法
CN114220474A (zh) 一种数据处理方法、设备及存储介质
CN101373641B (zh) 存储器及其1位读取错误检测方法
WO2020242621A1 (en) Error detection and correction with integrity checking

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination