CN107436821B - 为包括多个数据位和地址位的块生成错误码的装置和方法 - Google Patents

为包括多个数据位和地址位的块生成错误码的装置和方法 Download PDF

Info

Publication number
CN107436821B
CN107436821B CN201710374844.6A CN201710374844A CN107436821B CN 107436821 B CN107436821 B CN 107436821B CN 201710374844 A CN201710374844 A CN 201710374844A CN 107436821 B CN107436821 B CN 107436821B
Authority
CN
China
Prior art keywords
mask
bits
bit
data
error code
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
Application number
CN201710374844.6A
Other languages
English (en)
Other versions
CN107436821A (zh
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN107436821A publication Critical patent/CN107436821A/zh
Application granted granted Critical
Publication of CN107436821B publication Critical patent/CN107436821B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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
    • 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
    • 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
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • H03M13/2909Product 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/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/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

Abstract

提供了为包括多个数据位和地址位的块生成错误码的装置和方法。装置具有:块生成电路,生成包括多个数据位和地址位的块;及错误码生成电路,接收块和包括多行掩码行的掩码阵列,应用错误码生成算法来生成针对块的错误码。错误码包括多个校验位,每个校验位使用块及掩码阵列的相应掩码行来确定。每个掩模行包括多个掩码位,每个掩码位与块的对应位相关联。至少一行掩模行的掩码位值受到限制,以确保当块的所有数据位具有相同值时,由错误码生成电路生成的错误码具有至少一个具有与数据位的值不同而与地址位的值无关的值的校验位。除支持数据位中的错误的检测和/或校正外,此方法还允许检测存储器地址解码错误、检测存储器输出中卡于0或1的错误。

Description

为包括多个数据位和地址位的块生成错误码的装置和方法
技术领域
本公开涉及用于为包含多个数据位和多个地址位的块生成错误码的装置和方法。
背景技术
本技术涉及用于生成可以与相关联的数据一起存储在存储器中的错误码以使得后面能够进行错误的检测和/或校正的机制。例如,这样的错误码可用于检测(例如由于软错误或硬错误)相关联的数据已经被破坏的情况。
取决于所使用的错误码方案,这样的错误码可能仅允许检测到一定数量的位中的错误,但不进行校正,或者可以允许检测到一定数量的位中的错误,而且允许校正减少数目的位中的错误。通常,不论错误码是否仅提供错误的检测,或者还提供错误的校正,这些错误码被称为纠错码(ECC)。
在现代数据处理系统中,对于需要检测和/或校正的错误类型,有许多要求。例如,考虑到要存储在存储器内的数据值(这里的数据值也称为数据),所生成的以供与该数据相关联地存储的错误码可能不仅需要使数据中的错误能够被检测和/或校正。例如,也可能希望使用错误码来检测在读操作期间获得的存储器输出卡在全部为0或卡在全部为1的情况。
然而,另外,可能期望使用错误码来寻找检测存储器地址解码操作中的故障,这可能导致从存储器返回的内容具有正确的完整性,但错误的地址已被访问。为了实现这种存储器地址解码保护,可以在生成存储在存储器中的错误码时同时使用数据和地址。然后,当从存储器读取数据时,读取的地址和数据用于生成另一错误码,该另一错误码可以校验从存储器读取的与数据相关联的错误码。
虽然这种方法可以提供用于检测存储器地址解码中的故障的有效机制,但是它损害了检测存储器输出卡在全部为0或卡在全部为1的情况的能力,这是由于在生成代码时地址被与数据结合使用,并且地址可以具有相对于数据的任意值。
因此,期望提供一种改进的机制,用于生成包括多个数据位和多个地址位的块(此处也称为数据块)的错误码,该改进的机制允许检测存储器地址解码错误,同时还允许检测存储器输出中卡在0或卡在1的故障。
发明内容
在第一示例性配置中,提供了一种装置,包括:块生成电路,生成包括多个数据位和多个地址位的块;和错误码生成电路,接收所述块和包括多行掩码行的掩码阵列,并且应用错误码生成算法来生成针对所述块的错误码,错误码包括多个校验位,其中每个校验位使用所述块和掩码阵列的对应掩码行来确定;其中,每行掩码行包括多个掩码位,每个掩码位与所述块的相应位相关联,并且至少一行掩码行的掩码位值受到约束,以便确保当所述块的所有数据位具有相同的值时,由错误码生成电路生成的错误码具有至少一个具有与数据位的值不同而与地址位的值无关的值的校验位。
在另一示例性配置中,提供了一种写保护电路,用以生成要与写数据相关联地存储在存储设备的指定存储器地址处的错误码,该写保护电路包括:如第一示例性配置所述的装置,用于从写数据和指定存储器地址生成错误码,其中,所述块的多个数据位由写数据形成,并且所述块的多个地址位由指定存储器地址形成。
在另一示例性配置中,提供了一种读取保护电路,用以对从存储设备中的指定存储器地址获得的读数据执行错误校验处理,包括:如第一示例性配置所述的装置,用于从读数据和指定存储器地址生成错误码,其中所述块的多个数据位由读数据形成,并且所述块的多个地址位由指定存储器地址形成;和校验电路,用于将所生成的错误码与在存储设备中与读数据相关联地存储的错误码进行比较,以便当所生成的错误码与所存储的错误码不同时检测错误状况。
在又一示例性配置中,提供了一种生成掩码阵列的计算机实现的方法,包括:确定掩码阵列的掩码行的数量,以使得针对使用掩码阵列要生成的错误码的每个校验位提供一行掩码行;根据要生成错误码的块的位的数量来确定每行掩码行中的掩码位的数量,所述块包括多个数据位和多个地址位;且对于至少一行掩码行,在处理电路上执行掩码位生成处理以限制该掩码行的掩码位值,以便确保当所述块的所有数据位都具有相同的值时,使用所述掩码阵列为所述块生成的错误码具有至少一个具有与所述数据位的值不同而与所述地址位的值无关的值的校验位。
在另外的示例性配置中,提供了包含根据上述示例配置的计算机实现的方法生成的掩码阵列的存储介质。
附图说明
将仅通过示例的方式,参考附图所示的实施例来进一步描述本技术,其中:
图1示出了根据已知方案生成的ECC掩码阵列;
图2是示出根据一个实施例生成ECC掩码阵列的方法的流程图;
图3示出了根据一个实施例的技术生成的ECC掩码阵列;
图4是示出根据一个实施例的由ECC生成电路执行的用于生成错误码的ECC计算算法的流程图;
图5A和5B示出了可以使用所描述的实施例的技术生成的掩码阵列的另外的示例;
图6是示出了针对可以采用的许多不同类型的错误码方案的掩码阵列内需要经受所描述的实施例的特定行生成规则的最小行数的表格;
图7是根据一个实施例的ECC生成器电路的框图;
图8是示意性地示出了根据一个实施例的写保护电路和读保护电路的框图;和
图9示意性地示出了可以用于实现所描述的实施例的掩码生成技术的类型的通用计算机。
具体实施方式
在参考附图讨论实施例之前,提供了对实施例的以下描述。
在一个实施例中,提供了一种装置,包括:块生成电路,生成包括多个数据位和多个地址位的块;和错误码生成电路,生成针对所述块的错误码。具体地,错误码生成电路访问包括多行掩码行的掩码阵列,并且利用掩码阵列和所述块,应用错误码生成算法来生成针对所述块的错误码。错误码包括多个校验位,其中每个校验位使用所述块和掩码阵列的对应掩码行来确定。
每行掩码行包括多个掩码位,每个掩码位与所述块的相应位相关联。至少一行掩码行的掩码位值受到约束,以便确保当所述块的所有数据位具有相同的值时,由错误码生成电路生成的错误码具有至少一个具有与数据位的值不同而与地址位的值无关的值的校验位。
根据所描述的技术,为包含数据位和地址位两者的块生成错误码,结果可以使用错误码来检测存储器地址解码故障。然而,另外,通过以上述方式约束至少一行掩码行中的掩码位值,可以确保相关联的错误码的数据位和校验位不会都具有相同值,因此可以确保可靠地检测到卡在0和卡在1的故障。特别地,通过上述机制,当数据位全为0时,不管生成错误码时使用的地址位的值如何,都不会产生全0的错误码。类似地,当数据位全为1时,不会产生全1的错误码。因此,如果从存储器执行读取操作时,读取的数据位和相关的错误码校验位是全1或全0,这将指示卡在1或卡在0的错误。
存在多种方式可用于约束至少一行掩码行中的掩码位值,以便确保当所有数据位具有相同的值时,所生成的错误码具有至少一个与数据位的值不同而与地址位无关的值的校验位。在一个实施例中,这是通过至少一行掩码行中的每行掩码行使其掩码位值被布置为使得所述块的地址位都不会被选择以用于生成相应的校验位。因此,在这样的掩码行中,地址位值被屏蔽掉,使得它们在生成相应的校验位时不被使用。相反地,至少一些地址位可以用在不受上述限制的其他掩码行中。
在一个实施例中,形成所述至少一行掩码行的掩码行的数量取决于装置采用的错误码方案,以及所述块中的多个数据位是偶数还是奇数。通常,由错误码方案可纠正的数据位数越多,需要经受上述约束的掩码行数越多。此外,在所描述的实施例中,对于任何特定的错误码方案,依赖于在块中是存在偶数数量的数据位还是奇数数量的数据位,可能需要在经过上述约束的掩码行的集合内包括一个附加的掩码行。
上述技术可以应用于各种不同的错误码方案。然而,在一个实施例中,采用的错误码方案基于汉明码。当采用这样的汉明码时,形成所述至少一行掩码行的掩码行的数量取决于特定汉明码的汉明距离,以及取决于块中的多个数据位是偶数还是奇数。如本领域技术人员将理解的,汉明距离表示从任何一个有效代码字到任何其他有效代码字所需的最小位数变化。当增加可通过错误码方案校正的位数时,汉明距离增加。
在一个实施例中,形成所述至少一行掩码行的掩码行的数量N0由下式给出:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
其中,C是能由错误码方案校正的位的数量,Dt是所述多个数据位中的数据位的数量,%表示取模运算符。
在一个实施例中,所述至少一行掩码行中的每行掩码行的掩码位值被布置成使得块内的奇数数目的数据位被选择用于生成相应的校验位。该要求可以与错误码生成算法组合使用以确保当数据位全部相同时,产生的校验位具有与这些数据位不同的值。
此外,在一个实施例中,当所述至少一行掩码行包括多行掩码行时,所述多行掩码行中的掩码位值被布置成确保块内的不同数据位被这些多行掩码行中的每行选择以用于生成相应的校验位。
此外,在一个实施例中,当所述至少一行掩码行包括多行掩码行时,所述多行掩码行中的掩码位值被布置成进一步确保块内的每个数据位由这些多行掩码行之一选择以用于产生相应的校验位。
在一个实施例中,每当错误码方案不仅允许检测错误而且允许至少一个错误的校正时,将存在多行掩码行。如稍后将参考图2将更详细地讨论的,上述对多行掩码行的约束确保卡在0或卡在1的错误不会被错误地解释为一位可校正错误。
在一个实施例中,由错误码生成电路使用的错误码生成算法适于考虑如上所述的掩码阵列的形式。特别地,在一个实施例中,错误码生成算法包括从块生成第一校验位和相应的掩码行的主处理,以及选择性地应用来反转第一校验位以产生第二校验位的附加处理。于是,由错误码生成电路产生的错误码包括使用形成所述至少一行掩码行的任何掩码行生成的第二校验位,以及使用剩余的掩码行中的每行产生的第一校验位。因此,通过这种方法,当产生与已经经历上述掩码位值约束的任何掩码行相关联的校验位时,校验位的值的最终翻转在其被用在错误码内之前执行。
具体地,如前所述,所述至少一行掩码行中的每行掩码行的掩码位值被布置成使得块内的奇数数目的数据位被选择以用于生成相应的校验位。通过确保使用奇数数目的数据位,并且假设当为任何这样的掩码行生成校验位时不使用地址位,在一个实施例中这可以用于确保当所有这些数据位都具有相同的值时,由主处理产生的初始校验位也将具有与这些数据位相同的值,然后附加处理将该校验位在被用在错误码中之前将该校验位反转。这确保至少对于错误码的最终产生的校验位将与数据位具有不同的值。因此,这确保当数据全为0时,至少一个校验位将不为0,以及类似地,如果数据全为1时,则至少一个校验位将为0。
主处理可以采取各种形式,但是在一个实施例中包括使用掩码行来选择形成块的位的子集,然后对所选择的位子集执行异或归约运算,以产生相关联的第一校验位。此外,在一个实施例中,附加处理包括用于反转第一校验位的值的异或运算。
上述装置可以用于各种情况。例如,在一个实施例中,提供一种写保护电路,该写保护电路用于产生要与写数据相关联地存储在存储设备的指定存储器地址处的错误码。该写保护电路可以被布置为包括上述装置,以便从写数据和指定存储器地址生成错误码。在这样的实施例中,块的多个数据位由写数据形成,并且块的多个地址位由指定存储器地址形成。在一个实施例中,当构造块时,写数据的所有位和存储器地址的所有位都被使用。
在另一示例中,上述装置可用于读保护电路中,该保护电路用于对从存储装置中的指定存储器地址获得的读数据执行错误校验处理。读保护电路将包括上述装置,以便从读数据和指定存储器地址生成错误码。该块的多个数据位由读数据形成,并且该块的多个地址位由指定存储器地址形成。此外,读保护电路具有检查电路,以便将生成的错误码与和读数据相关联地存储在存储设备中的错误码进行比较,以便当所生成的错误码与存储的错误码不同时检测错误状况。
在另一示例性实施例中,提供了一种产生掩码阵列的计算机实现的方法,其包括:确定掩码阵列的掩码行的数量,以使得针对使用掩码阵列要生成的错误码的每个校验位提供一个掩码行;根据要生成错误码的块的位的数量来确定每行掩码行中的掩码位的数量。该块包括多个数据位和多个地址位。对于至少一行掩码行中,该方法包括在处理电路上执行掩码位生成处理以限制该掩码行的掩码位值,以便确保当所述块的所有数据位都具有相同的值时,使用所述掩码阵列为所述块生成的错误码具有至少一个具有与所述数据位的值不同且与所述地址位的值无关的值的校验位。
在一个实施例中,对于除了所述至少一行掩码行之外的所有剩余掩码行,掩码位生成处理使用默认掩码生成规则来确定掩码位值。因此,尽管在确定掩码阵列的一定数量的掩码行的掩码位值时使用了前面提到的约束,但是使用默认规则来完成掩码阵列的所有其余部分的掩码位值。存在用于计算掩码阵列的掩码位值的许多已知技术,其可以用作填充掩码阵列的不受前面提到的特定约束的剩余部分的默认掩码生成规则。在一个示例中,默认掩码生成规则包括基于列的汉明规则。
现在将参考附图描述具体实施例。
图1是示出可以根据用于双重错误检测(DED)错误码方案的已知技术(对于该技术,汉明距离为3)来生成的ECC掩码阵列10的表格。在这个例子中,假设地址由四位构成,数据由八位构成,数据位和地址位被级连连接以形成块(此后也称为数据块),然后该块被用作错误码生成算法的输入。鉴于在要保护的块内存在12位,并且给定使用汉明距离为3的DED方案,这需要五个校验位C0至C4来形成错误码。如图1所示,掩码阵列中的每行掩码行与这些校验位之一相关联。
根据一个错误码生成技术,对于要生成的每个校验位,将相关联的掩码行用作掩码,以便选择与掩码中的逻辑1值相关联的数据位和地址位,并丢弃该掩码中的与逻辑0值相关联的数据位和地址位(可以理解,在替代实施例中,掩码中的逻辑1和逻辑0值的含义可以颠倒)。然后,基于掩码行值选择的数据位和地址位进行XOR(异或)归约运算,以产生校验位值。
一旦使用上述方法生成了校验码,则该校验码可以与数据位(数据位也称为数据)相关联地存储在存储器中。当稍后从存储器中读取数据时,首先使用与用于生成原始校验码相同的掩码阵列,从读取的数据和呈现给存储器的地址重新生成校验码,从而进行校验。所生成的校验码然后被与从存储器读取的原始校验码进行比较,例如通过执行XOR运算。如果两个校验码不同,则提供错误的指示。
如前所述,这样的错误码不仅可用于当从存储器读取数据时检测和/或校正数据中的错误,还可以用于在从存储器返回的内容具有正确的完整性但错误地址已被访问的情况中检测地址解码故障。这是可能的,因为将地址位因素包括到错误码生成机制中。还希望能够检测完整存储器输出被卡在0或卡在1的情况,并且当使用ECC方案也检测地址解码错误时这可能是有问题的,如下面的示例所示。特别地,根据地址位,当数据位全部为0时,可以使用图1的掩码阵列合法地生成全0校验码。类似地,当数据位全部为1时,可以产生全1校验码。在这种情况下,不可能检测到卡在0或卡在1的故障,因为可以合理地预期从存储器读取的内容将全为0或全部为1。考虑例如地址是4'b1111(即全1),数据是8'b0000_0000(即全零)的情况。当使用图1的掩码阵列时,为上述地址和数据组合生成的校验码为5×100000(即使数据全为零)。因此,当使用图1的掩码阵列时,当从存储器读取该数据和返回的校验码时,不可能检测到卡在0的故障。
可以认为解决这个问题的一个方法是选择性地在掩码阵列的一些行上包括XNOR功能,这可以用来基本将0翻转到1。然而,当通过使用地址位来支持地址解码器保护时,地址可以采取任何值(具有任何可能的数据值),并且已经发现地址和数据的某些组合可以抵消XNOR功能(或者在一些行为XOR功能),再次产生全0校验码。
参考其余附图描述的实施例旨在减轻这个问题,使得ECC方案可以用于同时支持地址解码故障检测和卡在0或卡在1的检测。
图2是示出根据一个实施例可以执行以生成掩码阵列的ECC掩码生成方法的流程图。
在步骤50,确定掩码阵列所需的大小。从图1的先前讨论可以理解,掩码阵列的大小取决于数据块大小(由数据位和地址位组成)和ECC方案,因此取决于适用的汉明距离。特别地,数据块大小将影响掩码阵列中的列数,并且数据块大小与汉明距离组合将确定ECC码中所需的校验位的数量,并且因此将确定在该掩码阵列内所需的掩码行的数量。
在步骤50之后,然后在步骤55确定要经受特殊行生成规则(将在下面更详细描述)的掩码行的数目。需要经受特殊行生成规则的掩码行的数量将取决于要使用掩码阵列的ECC方案,以及数据是具有偶数数量的位还是奇数数量的位。特别地,在一个实施例中,掩码行的数量可以由下式确定:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
其中,C是能由错误码方案校正的位的数量,Dt是所述多个数据位中的数据位的数量,%表示取模运算符。
从上述等式可以看出,如果错误码方案仅支持多个位的错误检测,但不支持对这些错误的任何形式的校正,则变量“C”将等于零。因此,上述等式表示在仅支持错误检测的情况下,要经受特殊行生成规则的掩码行的数量将是1。但是,如果支持纠错,那么至少两行掩码行需要经受特殊行生成规则。此外,取决于数据中的位数是偶数还是奇数,可能需要额外的行。例如,如果通过错误码方案可以校正一个位,则上述等式表示在数据位的数量是偶数的情况下,需要经受特殊行生成规则的掩码行的数量是2,或者在数据位的数量是奇数的情况下,需要经受特殊行生成规则的掩码行的数量是3。
此外,同样的公式表示当可校正的位数为2时,如果数据位的数目是奇数,则三个掩码行将需要经受特殊行生成规则,否则四个掩码行将需要经受这些规则。
在步骤55执行的确定之后,对于要经受特殊行生成规则的那些掩码行中的每一行,在步骤60,将与数据块的地址位相关联的每行这样的掩码行的位设置为能防止这些地址位影响ECC码的相应校验位的值。使用前面讨论的示例,其中掩码行中的逻辑1值导致相应的数据位或地址位被选择,并且逻辑0值导致对应的数据位或地址位被屏蔽,可以理解,该要求可以是通过将与地址位相关联的所有掩码行位设置为逻辑0值来满足。这确保了,无论地址位值如何,对于在步骤55确定的任何掩码行,都不选择那些地址位,因此这些地址位将不会影响相关联的校验位的值。因此,这可以防止地址位值潜在地干扰所采取的任何步骤,以确保全0数据不会导致全0校验码(同样,全1数据不会导致全1校验码)。
在步骤65中,对于要经受行生成规则的每行掩码行,与数据相关联的掩码行的位使它们的值布置为使得当使用该掩码行时将选择奇数数目的数据位。如稍后将参考所使用的ECC计算算法将更详细地讨论的,该要求可以与ECC计算算法组合使用,以确保当数据位全部为0时,产生1的校验位,或者当数据位全部为1时,产生0的校验位。
在错误码方案允许在检测到错误时校正至少一个位的情况下,如前所述,将存在多行掩码行要经受特殊行生成规则。在这种情况下,需要采取额外的步骤,以确保纠错方案不会意外地尝试纠正卡在0或卡在1的故障。考虑到0故障问题时,如果数据具有逻辑1值处的单个位和逻辑0值处的所有其他位,则需要确保不能生成全0错误码,因为在该情况下如果随后从存储器读回的数据和ECC码全部为0,则这可能被检测为是一位可校正错误检测,而不是卡在0故障。为了确保不会发生这种情况,在一个实施例中,对经受特殊行生成规则的多行掩码行进行额外的约束,以确保在数据的一位是非0的情况下不能产生全0校验码。类似地,相同的约束将确保当数据的仅一位为0时不能产生全1的检验码。
特别地,如在步骤65中标识的,如果多行掩码行经受行生成规则,则确保导致数据位被选择的掩码位对于多行掩码行是互补的。这因此确保块内的不同数据位被这些多行掩码行中的每行选择以用于生成相应的校验位。例如,考虑到之前的情况,其中数据具有设置为1的一位并且所有其他位都为0,设置为1的一位将仅由多行掩码行之一而不是由其他掩码行选择。这将确保那些多行掩码行不产生相同的校验位,因此将确保错误码至少有一个位设置为1。因此,这将导致原始数据和错误码的组合,然后该组合写入存储器中,其中至少有两个逻辑1值。因此,如果从存储器读回该数据和错误码,则全部为0,这可以被可靠地解释为卡在零的故障。
此外,当多行掩码行经受上述行生成规则时,还确保数据的所有数据位被由多行掩码行指定的选择掩码位覆盖。因此,块内的每个数据位由多行掩码行之一选择,以用于生成相应的校验位,从而确保通过组合掩码位值经受了上述确定的规则的多行掩码行来将所有数据位都纳入考虑。
在步骤65之后,在步骤70,计算掩码阵列的其余掩码位。这些剩余的掩码位不受使用上述技术的约束,因此可以使用任何先以已存在的掩码生成规则进行设置。因此,例如,可以使用基于列的汉明规则来完成掩码阵列的这些剩余位。
图3示出了可以使用图2的技术针对与先前参考图1讨论的数据块相同的数据块来生成的ECC掩码阵列100。因此,再次,数据块具有八个数据位和四个地址位,并且假设使用DED错误码方案,因此导致在校验码中需要五个校验位。在该示例中,掩码阵列100的第一掩码行105受到参考图2讨论的特殊行生成规则的限制。特别地,由于错误码方案仅支持错误检测,并且不进行纠错,仅单行掩码行需要遵守这些规则。可以看出,对于掩码行105,与地址位相关联的所有掩码位都将其值设置为0,使得地址位对校验位C0的产生没有影响。如图所示,掩码行105的掩码位被设置为从数据中选择奇数位,从而满足步骤65的要求。如将参照图4更详细地讨论的,在描述ECC计算算法时,由ECC计算算法选择性地执行的计算有效地向ECC掩码添加额外的列110,其中该列对于经受特殊行生成规则的每行掩码行具有逻辑1值,并且对于所有其他掩码行具有逻辑0值。
图4是示出根据一个实施例的可以在ECC生成器的ECC计算电路内执行的ECC计算算法的流程图。ECC计算算法的公式显示在图4的顶部。从该公式可以看出,对于每个校验位,相应的掩码行用于选择数据位和地址位的子集,然后对其进行XOR异或运算。然后,所得到的值被选择性地经受与逻辑1值的进一步XOR异或运算,这依赖于正在处理的校验位(以及因此的掩码行)。参考图4的流程图进一步讨论这一点。
在步骤150,将参数i设置为等于0,然后在步骤155,使用掩码行i来选择随后用于校验位产生的数据位和地址位。因此,使用前面的示例,对于设置为逻辑1值的每行掩码行位,相应的数据或地址位被选择以用于校验位生成处理。
然后,在步骤160,对所选择的数据位和地址位进行XOR异或运算,以产生校验位值。然而,在决定是否在校验码中直接使用该校验位之前,或者是否在产生最终校验位前对该校验位进行进一步操作之前,执行另一校验。特别地,在步骤165中,确定掩码行i是否是特殊行之一,即已经受到参照图2的步骤60和65讨论的行生成规则的行之一。如果是,则处理进行到步骤170,其中使用在步骤160输出的校验位和逻辑1值来执行最终XOR异或运算。应当理解,这因此导致从步骤160输出的校验位的值被翻转。然后在步骤175缓冲得到的校验位,或者如果正在考虑的掩码行不是特殊行之一,则在步骤175直接缓冲从步骤160输出的校验位。
此后,在步骤180,确定参数i是否小于最大值,如果是,则参数i被递增,并且处理返回到步骤155。然而,一旦在步骤180中确定所有掩码行已被处理,并且因此参数i等于i_最大,则处理进行到步骤190,其中所有校验位被输出作为ECC码。应当理解,尽管图4的过程已经被示出为迭代过程,但是在替代实施例中,每个校验位可以并行地生成。
返回到图3,因此可以看出,图4中的步骤165、170的执行通过对掩码行105进行进一步与逻辑1值的XOR运算来有效地将附加列110添加到图3的掩码阵列中,以便翻转在步骤160产生的掩码行的校验位,但是对于使用所有其他掩码行产生的校验位,不执行这种翻转。在一个实施例中,可以通过实现与逻辑0值的XOR运算来实现防止由其他掩码行产生的校验位的翻转,从而不会导致状态的改变,或者替代地可以绕过最终的异或运算,完全地按照图4所示的流程。
考虑到在使用图3的掩码阵列时图4的ECC计算算法的应用,观察到以下特性。首先,考虑数据的所有数据位为0的情况。当考虑掩码阵列的第一行105时,这将导致逻辑0值被作为地址的异或归约运算的结果输出(由于地址的掩码为0,所以不管地址输入如何,输出为0)。第一掩码行105还将导致在数据的异或归约上输出逻辑0(因为数据输入全为0,因此无论掩码如何,XOR归约将输出0)。
与执行步骤170产生的逻辑1值的最终XOR将提供为1的校验位,使得至少一个校验位不为0。因此,这使得可以可靠地检测卡在0故障,因为当数据全为0时,所有0的校验码不是有效的校验码。因此,如果从存储器读回的数据和校验码都为0,则表示卡在0故障。
作为第二种情况,考虑所有数据输入都是逻辑1值的情况。再次,由于掩码行105内的对应于所有地址位的逻辑0值,地址的异或归约将导致逻辑0值。第一行105将在数据的XOR归约上输出逻辑1值(由于奇数数目的位将导致最终归约为1)。因此,在步骤170执行的最后的异或运算将翻转逻辑1值,以便产生0校验位,使得结果校验码中的校验位中的至少一个为零。因此,这使得能够可靠的检测卡在1的故障,因为,如果从存储器读回的数据和关联的错误码都是1,则这表示卡在1故障(所有1的错误码都不是所有为1的数据的有效错误码)。
图5A示出了可以使用图2的掩码生成方法来生成的ECC掩码(针对汉明距离为4的单重错误校正双重错误检测(SECDED)方案)。再次假设数据块与之前相同,因此由八个数据位和四个地址位组成。基于该数据块大小和汉明距离为4,错误码需要六个校验位,因此掩码阵列具有如图5A所示的六行。使用前面参考图2讨论的过程,将确定掩码行中的两个掩码行205、210需要经受特殊行生成规则。虽然这些被示为阵列内的前两个掩码行,但是应当理解,哪两个掩码行被选择并不重要。如图5A所示,掩码行205、210中的每一行具有与设置为等于0的地址位相关联的掩码位,使得地址位不能影响校验位C0和C1的值。此外,每行掩码行205、210在与数据位相对应的位置中具有奇数个设置为1的掩码行位,以便选择奇数数目的数据位。此外,设置为1的掩码位在两行掩码行205、210之间是互补的,因此确保任何特定数据位仅用于计数校验位C0或校验位C1。此外,可以看出,两行掩码行205、210的组合确保所有的数据位被选择用于产生校验位C0或校验位C1。因此,这两行掩码行205、210符合图2的步骤60和65中规定的规则。
当执行图4的处理时,步骤165、170提供由图5A中的附图标记215所示的形式的有效的额外列,其包含与掩码行205、210相关联的逻辑1值和剩余掩码的逻辑0值。
由于数据位的数量是偶数,所以在图2的步骤55中使用的早先讨论的公式来确定要经受特殊行生成规则的掩码行的数量将标识出只有两行掩码行需要受制于这些规则。然而,如果数据位的数量是奇数,则第三行掩码行将需要经受特殊行生成规则。
图5B示出了可以使用图2的先前描述的技术产生的ECC掩码阵列的另一示例,假设错误码方案是双重误差校正三重误差检测(DECTED)方案,因此汉明距离为6。在该示例中,假设该数据块由四个地址位和九个数据位组成。考虑到数据块大小,汉明距离为6,这需要校验码内的9个校验位,如图5B所示。根据先前参考图2的步骤55所讨论的公式,将确定三行掩码行需要经受图2的步骤60和65的行生成规则。如果数据位的数目已经为偶数,则第四行掩码行也需要受到这些规则的约束。
如图5B所示,对于掩码阵列250,经受特殊行生成规则的三个掩码行是掩码行255、260、265。如清楚地示出的,这些掩码行中的每行掩码行的对应于地址位的位位置的掩码位被设置为0。此外,这些掩码行中的每一个导致奇数数目的数据位被选择,并且每行掩码行对这三行掩码行中的另外的每一行选择不同的数据位。此外,在这三行掩码行255、260、265之间,每个数据位被选择一次。因此,可以看出,符合图2的步骤60和65的规则。列270示出了由执行图4的步骤165、170产生的有效额外列,其中与特殊掩码行255、260、265相关联的每行位置中为逻辑1值,与所有其他掩码行相关联为逻辑0值。
图6是当采用图2的掩码生成方案时,针对各种不同的错误码方案,示出了地址位置中的0所需的汉明距离和最小行数的表格。从图中可以看出,前面参考图2的步骤55讨论的公式,对于支持一个或多个位进行校正的任何方案,实际的行数可能需要增加一个,取决于数据是具有偶数数目的位还是奇数数目的位。此外,应当理解,图6仅示出了四个示例错误码方案,但是上述技术也适用于其他错误码方案,其中每种情况下所需的行数由前面参考图2的步骤55讨论的公式确定。
图7是可以根据一个实施例用来利用先前讨论的掩码阵列生成ECC码的ECC发生器电路的框图。特别地,数据位和地址位被输入到数据块生成器305,数据块生成器305通过将地址位附加到数据位来生成数据块。然后,ECC计算电路310接收该数据块,并且还可以访问存储在存储器315中的掩码阵列。然后,ECC计算电路310执行先前参照图4讨论的过程,以便产生ECC码位,ECC码位通过路径320输出。从先前的讨论中可以看出,当该数据全为0时,ECC计算电路将产生至少有一个校验位被设置为逻辑1值的ECC码,或当数据位全为1时,ECC计算电路将产生至少有一个校验位被设置为逻辑0值的ECC码。此外,在错误码方案允许校正一定数量的错误位的情况中,通过使用经受特殊行生成方案的多行掩码行,ECC计算电路将确保生成的以供与数据一起存储的错误码将足以可靠地检测卡在0或卡在1的故障(而不是错误地将其解释为可纠正的错误)。
图8是示出可以与存储器375相关联使用的写保护电路350和读保护电路380的图。当将写数据写入存储器375时,写地址和写数据被提供给写保护电路350内的ECC生成器355。ECC生成器355可以采用先前参考图7所述的ECC生成器300的形式。因此,ECC生成器将可以访问存储装置365内的掩码阵列,该掩码阵列已经使用上述技术生成。ECC生成器355将生成ECC码,该ECC码被转发到附加电路360,附加电路360然后将ECC码附加到写数据,写数据和ECC码都经过路径370输出以存储在存储器375内与写数据相关联的写地址处。
当随后通过指定的读地址通过路径377从存储器读取该数据和相关联的ECC码时,从存储器的读地址处读取的数据与指定的读地址一起被转发到ECC生成器385。ECC生成器385也采用图7所示的ECC生成器300的形式,并且可以访问存储装置365内的掩码阵列。因此,它将使用掩码阵列、读地址和读取的数据来生成ECC码,并且该ECC码将被转发到检查电路387,其可以确定所计算的ECC码是否与从存储器地址读取的ECC码相匹配。检查电路387产生作为校验结果的校正子(syndrome)信息,该校正子信息与从存储器读取的数据一起被传递到错误检测/校正电路390。校正子信息将识别由ECC生成器385生成的ECC码是否与从存储器读取的ECC码匹配,并且在不匹配的情况下,还可以提供关于错误类型的附加信息。然后,此信息可以由电路390使用来确定来自读保护电路380的适当输出。
例如,如果确定两个ECC码匹配,因此没有错误,则可以输出读取的数据。类似地,如果校正子信息识别出存在可纠正的数据错误,则电路390可校正该数据并输出经校正的数据。如果校正子信息识别出存在不可校正的数据故障,则电路390将识别出存在数据故障作为其输出。类似地,校正子信息可以识别地址中而不是数据中存在故障,因此可以从电路390输出地址解码故障错误。最后,如果从存储器读取的数据全为0(或全为1),并且从存储器读取的ECC全为0(或全为1),则这将指示存在卡在0或卡在1的故障,并且因此也可以从电路390输出。或者,地址解码错误并且卡在0/1的错误可能不会与任何其他类型的不可校正错误分开明确地标识,而是可能仅仅引起从电路390输出不可校正错误的指示。
图9示意性地示出了可以用于实现上述技术(特别是生成用于为包括多个数据位和多个地址位的块生成错误码的掩码阵列)的类型的通用计算机400。通用计算机400包括中央处理单元(CPU)402、随机存取存储器(RAM)404、只读存储器(ROM)406、网络接口卡(NIC)408、硬盘驱动器(HDD)410、显示驱动器412和监视器414以及用户输入/输出(I/O)电路416(具有键盘418和鼠标420),这些都经由公共总线422连接。在操作中,中央处理单元402将执行可存储在随机存取存储器404、只读存储器406和硬盘驱动器410中的一个或多个中的计算机程序指令,或者经由网络接口卡408动态下载。所执行的处理的结果可以经由显示驱动器412和监视器414显示给用户。用于控制通用计算机400操作的用户输入可以经由用户输入/输出电路416从键盘418或鼠标420接收。应当理解,计算机程序可以用各种不同的计算机语言来编写。计算机程序可以存储和分发在记录介质上或者动态地下载到通用计算机400。当在适当的计算机程序的控制下操作时,通用计算机400可以执行上述掩码阵列生成技术并且可以被考虑以形成用于执行上述技术的装置。通用计算机的架构可能有很大差异,图9只是一个例子。
从上述实施例可以理解,所描述的技术使得能够生成掩码阵列,其不仅使得能够检测和/或校正存储在存储器中的数据中的数据位错误,而且还可以允许地址解码错误被识别,同时另外提供对存储器输出中卡在0或卡在1的故障的检测的支持。这被实现,同时仍然提供错误码,其校验位数由被保护的数据块的大小以及正在采用的错误码方案的类型所规定,因此不需要添加任何额外的冗余位(否则这些位将对存储器的大小造成面积占用)。
在本申请中,词语“配置为...”用于表示装置的元件具有能够执行定义的操作的配置。在这种情况下,“配置”是指硬件或软件的互连的布置或方式。例如,设备可以具有提供定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行功能。“配置为”并不意味着设备元素需要以任何方式进行更改才能提供定义的操作。
尽管本文参考附图已经详细描述了本发明的说明性实施例,但是应当理解,本发明不限于这些精确实施例,并且在不脱离由所附权利要求限定的本发明的范围和精神的情况下,可以由本领域技术人员在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以对从属权利要求的特征与独立权利要求的特征进行各种组合。

Claims (22)

1.一种用于检测存储器错误的装置,包括:
块生成电路,生成包括多个数据位和多个地址位的块;和
错误码生成电路,接收所述块和包括多行掩码行的掩码阵列,并且应用错误码生成算法来生成针对所述块的错误码,所述错误码包括多个校验位,其中每个校验位使用所述块和所述掩码阵列的对应掩码行来确定;
其中,每行掩码行包括多个掩码位,每个掩码位与所述块的相应位相关联,并且至少一行掩码行的掩码位值受到约束,以便确保当所述块的所有数据位具有相同的值时,由所述错误码生成电路生成的错误码具有至少一个具有与所述多个数据位的值不同且与所述多个地址位的值无关的值的校验位。
2.根据权利要求1所述的装置,其中,所述至少一行掩码行中的每行掩码行的掩码位值被布置成使得所述块的所述多个地址位都不会被选择以用于生成相应的校验位。
3.根据权利要求1所述的装置,其中,形成所述至少一行掩码行的掩码行的数量取决于所述装置采用的错误码方案以及所述块中的所述多个数据位是偶数还是奇数。
4.根据权利要求3所述的装置,其中,形成所述至少一行掩码行的掩码行的数量N0由下式给出:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
其中,C是能由所述错误码方案校正的位的数量,Dt是所述多个数据位中的数据位的数量,%表示取模运算符。
5.根据权利要求1所述的装置,其中,所述至少一行掩码行中的每行掩码行的掩码位值被布置成使得所述块内的奇数数目的数据位被选择以用于生成相应的校验位。
6.根据权利要求5所述的装置,其中,当所述至少一行掩码行包括多行掩码行时,所述多行掩码行中的掩码位值被布置为确保这些多行掩码行中的每一行选择所述块内的不同数据位以用于生成相应的校验位。
7.根据权利要求6所述的装置,其中,当所述至少一行掩码行包括多行掩码行时,所述多行掩码行中的掩码位值被布置为进一步确保所述块内的每个数据位由这些多行掩码行之一选择以用于生成相应的校验位。
8.如权利要求1所述的装置,其中:
所述错误码生成算法包括从所述块和对应的掩码行生成第一校验位的主处理以及选择性地应用来反转所述第一校验位以生成第二校验位的附加处理;以及
由错误码产生电路生成的错误码包括使用形成所述至少一行掩码行的任意掩码行生成的第二校验位和使用剩余的掩码行中的每行生成的第一校验位。
9.根据权利要求8所述的装置,其中,所述主处理包括使用掩码行来选择形成所述块的位的子集,然后对所选择的位子集执行异或归约运算以生成相关联的第一校验位。
10.根据权利要求9所述的装置,其中,所述附加处理包括用于反转所述第一校验位的值的异或运算。
11.一种写保护电路,用以生成要与写数据相关联地存储在存储设备的指定存储器地址处的错误码,该写保护电路包括:如权利要求1所述的装置,用于从所述写数据和所述指定存储器地址生成错误码,其中,所述块的所述多个数据位由所述写数据形成,并且所述块的所述多个地址位由所述指定存储器地址形成。
12.一种读取保护电路,用以对从存储设备中的指定存储器地址获得的读数据执行错误校验处理,包括:
如权利要求1所述的装置,用于从所述读数据和所述指定存储器地址生成错误码,其中所述块的多个数据位由所述读数据形成,并且所述块的多个地址位由所述指定存储器地址形成;和
校验电路,用于将所生成的错误码与在存储设备中与所述读数据相关联地存储的错误码进行比较,以便当所生成的错误码与所存储的错误码不同时检测错误状况。
13.一种生成掩码阵列的计算机实现的方法,包括:
确定掩码阵列的掩码行的数量,以使得为使用所述掩码阵列要生成的错误码的每个校验位提供一个掩码行;
根据要生成错误码的块中的位的数量来确定每行掩码行中的掩码位的数量,所述块包括多个数据位和多个地址位;以及
对于至少一行掩码行,在处理电路上执行掩码位生成处理以限制该掩码行的掩码位值,以便确保当所述块的所有数据位都具有相同的值时,使用所述掩码阵列为所述块生成的错误码具有至少一个具有与所述多个数据位的值不同且与所述多个地址位的值无关的值的校验位。
14.根据权利要求13所述的计算机实现的方法,其中,对于除所述至少一行掩码行之外的所有剩余掩码行,所述掩码位生成处理使用默认掩码生成规则来确定掩码位值。
15.如权利要求14所述的计算机实现的方法,其中,所述默认掩码生成规则包括基于列的汉明规则。
16.根据权利要求13所述的计算机实现的方法,其中,对于所述至少一行掩码行中的每行掩码行,所述掩码位生成处理确定掩码位值,以使得所述块的所述多个地址位都不会被选择以用于生成相应的校验位。
17.根据权利要求13所述的计算机实现的方法,还包括确定形成所述至少一行掩码行的掩码行的数量,这取决于要使用的错误码方案以及取决于所述块中的所述多个数据位是偶数还是奇数。
18.根据权利要求17所述的计算机实现的方法,其中,形成所述至少一行掩码行的掩码行的数量N0由下式给出:
N0=1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)
其中,C是能由所述错误码方案校正的位的数量,Dt是所述多个数据位中的数据位的数量,%表示取模运算符。
19.根据权利要求13所述的计算机实现的方法,其中,对于所述至少一行掩码行中的每行掩码行,所述掩码位生成处理确定掩码位值,以使得所述块中的奇数数目的数据位被选择以用于生成相应的校验位。
20.根据权利要求19所述的计算机实现的方法,其中,当所述至少一行掩码行包括多行掩码行时,所述掩码位生成处理确定所述多行掩码行中的掩码位值,以确保这些多行掩码行中的每一行选择所述块内的不同数据位以用于生成相应的校验位。
21.根据权利要求20所述的计算机实现的方法,其中,当所述至少一行掩码行包括多行掩码行时,所述掩码位生成处理确定所述多行掩码行中的掩码位值,以进一步确保所述块内的每个数据位由这些多行掩码行之一选择以用于生成相应的校验位。
22.一种包含根据权利要求13所述的计算机实现的方法生成的掩码阵列的存储介质。
CN201710374844.6A 2016-05-31 2017-05-24 为包括多个数据位和地址位的块生成错误码的装置和方法 Active CN107436821B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1609538.2 2016-05-31
GB1609538.2A GB2550929A (en) 2016-05-31 2016-05-31 An apparatus and method for generating an error code for a block comprising a plurality of data bits and a plurality of address bits

Publications (2)

Publication Number Publication Date
CN107436821A CN107436821A (zh) 2017-12-05
CN107436821B true CN107436821B (zh) 2022-08-19

Family

ID=56410795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710374844.6A Active CN107436821B (zh) 2016-05-31 2017-05-24 为包括多个数据位和地址位的块生成错误码的装置和方法

Country Status (6)

Country Link
US (1) US10084478B2 (zh)
EP (1) EP3260980B1 (zh)
JP (1) JP6982982B2 (zh)
KR (1) KR102292212B1 (zh)
CN (1) CN107436821B (zh)
GB (1) GB2550929A (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10908995B2 (en) 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system
JP2019109806A (ja) * 2017-12-20 2019-07-04 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
CN109669669B (zh) * 2018-12-06 2022-06-24 镕铭微电子(济南)有限公司 误码生成方法及误码生成器
CN109872754B (zh) * 2019-02-15 2021-02-26 长江存储科技有限责任公司 数据编程方法及装置、存储器及存储介质
CN112289366B (zh) * 2019-07-25 2024-03-26 华邦电子股份有限公司 存储器存储装置及数据存取方法
CN113055259B (zh) * 2021-02-08 2022-05-13 西安电子科技大学 一种基于axi总线协议的功能安全保护方法
CN114153648B (zh) * 2021-12-03 2022-09-16 海光信息技术股份有限公司 数据读取、写入方法及装置、软错误处理系统
US11947409B2 (en) * 2022-01-12 2024-04-02 Xilinx, Inc. Parity protection of control registers based on register bit positions
US11960358B1 (en) * 2022-09-30 2024-04-16 Nxp B.V. More secure data reading with error correction codes
CN116959540B (zh) * 2023-08-16 2024-03-01 沐曦集成电路(上海)有限公司 具有写掩码的数据校验系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991801A (zh) * 2005-11-30 2007-07-04 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
CN101042682A (zh) * 2006-03-22 2007-09-26 株式会社东芝 访问控制装置、系统和方法,处理器
CN101647004A (zh) * 2007-02-12 2010-02-10 美光科技公司 存储器阵列错误校正设备、系统和方法
WO2015133095A1 (ja) * 2014-03-04 2015-09-11 日本電気株式会社 パリティ検査符号生成装置、符号化方法、符号化装置および記録媒体

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3319710A1 (de) * 1983-05-31 1984-12-06 Siemens AG, 1000 Berlin und 8000 München Speichersteueranordnung, insbesondere fuer ein fehlertolerantes fernsprech-vermittlungssystem
US6757862B1 (en) * 2000-08-21 2004-06-29 Handspring, Inc. Method and apparatus for digital data error correction coding
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US6978343B1 (en) * 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US7509541B2 (en) * 2004-06-24 2009-03-24 Intel Corporation Detection mechanism
JP4498295B2 (ja) * 2005-11-30 2010-07-07 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法
KR100746225B1 (ko) * 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
US7702978B2 (en) * 2006-04-21 2010-04-20 Altera Corporation Soft error location and sensitivity detection for programmable devices
US8589762B2 (en) * 2011-07-05 2013-11-19 International Business Machines Corporation Adaptive multi-bit error correction in endurance limited memories
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991801A (zh) * 2005-11-30 2007-07-04 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
CN101042682A (zh) * 2006-03-22 2007-09-26 株式会社东芝 访问控制装置、系统和方法,处理器
CN101647004A (zh) * 2007-02-12 2010-02-10 美光科技公司 存储器阵列错误校正设备、系统和方法
WO2015133095A1 (ja) * 2014-03-04 2015-09-11 日本電気株式会社 パリティ検査符号生成装置、符号化方法、符号化装置および記録媒体

Also Published As

Publication number Publication date
EP3260980B1 (en) 2019-02-13
EP3260980A1 (en) 2017-12-27
US20170346504A1 (en) 2017-11-30
US10084478B2 (en) 2018-09-25
JP6982982B2 (ja) 2021-12-17
GB2550929A (en) 2017-12-06
JP2017215958A (ja) 2017-12-07
CN107436821A (zh) 2017-12-05
GB201609538D0 (en) 2016-07-13
KR102292212B1 (ko) 2021-08-23
KR20170135691A (ko) 2017-12-08

Similar Documents

Publication Publication Date Title
CN107436821B (zh) 为包括多个数据位和地址位的块生成错误码的装置和方法
US6044483A (en) Error propagation operating mode for error correcting code retrofit apparatus
US7227797B2 (en) Hierarchical memory correction system and method
JP4071940B2 (ja) メモリ設計のための共有式誤り訂正
US8099651B2 (en) Subsystem and method for encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use in a 76-bit memory module
US6397365B1 (en) Memory error correction using redundant sliced memory and standard ECC mechanisms
US8010875B2 (en) Error correcting code with chip kill capability and power saving enhancement
US4740968A (en) ECC circuit failure detector/quick word verifier
Rossi et al. Error correcting code analysis for cache memory high reliability and performance
US7587658B1 (en) ECC encoding for uncorrectable errors
TW201515000A (zh) 二次組態記憶體裝置之錯誤更正碼方法與裝置
US9665423B2 (en) End-to-end error detection and correction
US7293221B1 (en) Methods and systems for detecting memory address transfer errors in an address bus
US9626242B2 (en) Memory device error history bit
US20160139988A1 (en) Memory unit
US6463563B1 (en) Single symbol correction double symbol detection code employing a modular H-matrix
Saiz-Adalid et al. Modified Hamming codes to enhance short burst error detection in semiconductor memories (short paper)
US8103934B2 (en) High speed memory error detection and correction using interleaved (8,4) LBCs
US20160147598A1 (en) Operating a memory unit
US6460157B1 (en) Method system and program products for error correction code conversion
CN117413252A (zh) 具有内置错误纠正和检测的存储器的错误率
GB2455212A (en) Error detection in processor status register files
US11256569B2 (en) Error correcting bits
TWI569279B (zh) 記憶體保護裝置與方法

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
GR01 Patent grant
GR01 Patent grant