JP2024029084A - グループ誤りを用いる誤り検出 - Google Patents

グループ誤りを用いる誤り検出 Download PDF

Info

Publication number
JP2024029084A
JP2024029084A JP2023216831A JP2023216831A JP2024029084A JP 2024029084 A JP2024029084 A JP 2024029084A JP 2023216831 A JP2023216831 A JP 2023216831A JP 2023216831 A JP2023216831 A JP 2023216831A JP 2024029084 A JP2024029084 A JP 2024029084A
Authority
JP
Japan
Prior art keywords
byte
error
data
code
data byte
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
JP2023216831A
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2024029084A publication Critical patent/JP2024029084A/ja
Pending legal-status Critical Current

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/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/2942Coding, 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 wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks 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/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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon 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/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/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • 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/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/158Finite field arithmetic processing
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/251Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with block coding
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2735Interleaver using powers of a primitive element, e.g. Galois field [GF] interleaver

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】グループ誤りを用いる誤り訂正を改善する方法を提供する。【解決手段】データビットを処理する方法は、第1の変換によって、データビットが第1のデータバイトに変換され、第1のデータバイトがメモリに記憶され、第2のデータバイトがメモリから読み出され、第2のデータバイトはそれぞれ、誤りのない場合には、ブロック誤り符号の符号語であり、第2のデータバイト毎に、その第2のデータバイトが符号語であるか否かを示す誤り信号が決定される。【選択図】図1

Description

本発明の課題は、誤り訂正を改善することである。
この課題は、独立請求項の特徴部分に記載の構成によって解決される。好適な実施形態は、特に従属請求項から明らかになる。
この課題を解決するために、データビットを処理するための方法が提案され、この方法においては、
-第1の変換によって、データビットが第1のデータバイトに変換され、
-第1のデータバイトがメモリに記憶され、
-第2のデータバイトがメモリから読み出され、
-第2のデータバイトはそれぞれ、誤りのない場合には、1つのブロック誤り符号の1つの符号語であり、
-第2のデータバイト毎に、その第2のデータバイトが符号語であるか否かを表す誤り信号が決定される。
1つのデータバイトは、複数のデータビットを含んでいる。データビットないしデータバイトは、任意の情報、例えばデータ、プログラム、鍵などを含むことができる。
データビットは、特に可逆的かつ一義的に第1のデータバイトに変換することができる。変換によって、第1のデータバイトがそれぞれ、ブロック誤り符号の符号語を形成することを保証することができる。第1のデータバイトは、メモリセル値のバイトであってよく、それらのバイトが続けてメモリに書き込まれる。
第1のデータバイトは、第2のデータバイトと同じであると考えられる。第2のデータバイトは、例えばメモリが誤りを有する場合、または一般的に、第2のデータバイトを読み出す際に誤りが発生した場合には、第1のデータバイトと相異すると考えられる。
誤りがない場合には、読み出された第2のデータバイトは、書き込まれた第1のデータバイトと同じである。したがって、読み出された誤りのない第2のデータバイトは、1つのブロック誤り符号の符号語である(または、例えば各データバイトに対して固有のブロック誤り符号が使用される場合には、複数のブロック誤り符号の符号語である)。
第2のデータバイトはそれぞれ、固有の誤り検出回路を用いて、符号語であるか否かについて検査される。すなわち、第2のデータバイト毎に1つずつ、したがって複数の誤り検出回路が設けられている。誤り検出回路を用いて、第2のデータバイトが1つまたは複数のブロック誤り符号の符号語であるか否かを検査することができる。例えば、誤り検出回路毎に、別個のブロック誤り符号を検査することができる。
上記の変換によって、データビットのビットの個数が、変換された第1のデータバイト毎のビットの個数よりも少ないように、データビットを第1のデータバイトに変換することができる。1つのオプションでは、第1のデータバイトに変換されるデータビットの個数は、少なくともビット2個分、第1のデータバイトのビットの個数よりも少ない。つまり、例えば、それぞれ4個のデータビットを、それぞれが6個のデータビットを有する第1のデータバイトに変換することができ、したがって、それぞれ4個のビットが6個のビットに変換され、それら6個のビットが(変換が成功した際には)、使用されるブロック誤り符号の符号語を表す。
例えば32個のデータビットが第1のデータバイトに変換される場合には、それら32個のデータビットを、それぞれが4個のビットを含んでいる8個の小ブロックに分割することができる。4ビットの大きさの各ブロックが、例示的に6個のビットを含んでいる第1のデータバイトに変換される。すなわち、全体として、それぞれ4個のデータビットから成る8個のブロックを形成する32個のデータビットが、それぞれ6個のビットを有する8個の第1のデータバイトに変換される。すなわち32個のデータビットからは48個のビットが生じ、それら48個のビットがメモリにファイルされる。
この例によれば、8個の第2のデータバイトがメモリから読み出され、それら第2のデータバイトはそれぞれ、やはり6個のビットを含んでいる。第2のデータバイト毎に、それぞれの第2のデータバイトが(それぞれの)ブロック誤り符号の符号語であるか否かを表す誤り信号が決定される。
第2のデータバイトは、さらに逆データバイト(読み出された、場合によっては誤りのあるデータビットのバイト、または逆変換されたデータビットないしデータバイトとも記す)に逆変換され、この逆データビットは、誤り訂正によって訂正することができる。誤り訂正では、既に誤りがあるものとして検出された逆データバイト(いわゆる、グループ誤り)に誤り信号を集中させるために、誤り訂正を利用することができる。
例えば、第2のデータバイトのうちの1つに誤りがある場合には、そのデータバイトは、逆変換によって、誤りのある逆データバイトに逆変換される。この第2のデータバイトは、ブロック誤り符号の符号語ではないので、例えば、逆データバイトの値は0である。このことから、ここでは誤りが存在することを検出することができ、この誤りは可能な限り訂正されるべきである。
したがって、結果として、誤りを検出するだけでなく、その誤りを相応のバイトに限定することも、特に効率的に実現することができる。したがって、例えば、誤りのないバイトのデータビットを使用すること、または誤りのあるデータバイトのデータビットだけを使用しないことが実現される。
特に、グループ誤りの訂正は、バイト位置が事前に既知でない誤りの訂正よりも効率的に実現される。決定された誤り符号によって、バイト位置が事前に既知でない誤りよりも多くのグループ誤りを訂正することができる。これによって、記憶されているデータの信頼性を改善することができる。
各ビットおよび/または各メモリセル値を、少なくとも2つの値を記憶するために設けることができる。値が2つより多い場合には、各ビットはマルチビットである。特に、マルチビットメモリセルを設けることができる。
1つの発展形態では、少なくとも1つのブロック誤り符号を用いて、データビットが第1のデータバイトに変換される。
異なる第1のデータバイトに対して、異なるブロック誤り符号を使用することができる。また、第1のデータバイトに対して、同じブロック誤り符号を変換のために使用することができる。
1つの発展形態では、少なくとも1つのブロック誤り符号が、m-out-of-n符号である。
m-out-of-n符号では、ビットの一方のグループがビットの他方のグループに一義的かつ可逆的に変換され、この際、変換に誤りがなかった場合には、変換されたビットのグループは、複数m個の第1の値および複数(n-m)個の第2の値を含む複数n個のビットを有する。すなわち、全体でn個のビットにおいては、複数m個の第1の値が存在する。第1の値は、値がバイナリの場合には、例えば値0または値1であると考えられる。
この例では、誤り信号は、第2のデータバイト毎の読み出された第1の値の個数がmと同じでない場合には、第2のデータバイトに誤りが存在することを示すことができる。
1つの発展形態では、少なくとも1つの誤り信号に基づいて、誤り訂正が実施される。
1つの発展形態では、データビットが誤り符号を用いてコーディングされている。
誤り符号は、例えば、データビットに基づいて決定されており、データビットは、ビットのグループを形成することができる。
誤り符号は、ブロック誤り符号についての付加的な誤り符号である。誤り符号は、例えば、バイト誤り訂正符号および/またはバイト誤り検出符号である。また、誤り符号は、ビット誤り訂正符号および/またはビット誤り検出符号であってもよい。誤り符号は、ブロック誤り符号の上位の符号である。つまり、誤り符号は、ブロック誤り符号に付加的に利用される。ブロック誤り符号を用いて、誤り信号が決定され、また誤り符号は、少なくとも1つの誤りのある第2のデータバイトの訂正を1つの誤り信号(または複数の第2のデータバイトに対しては複数の誤り信号)に基づいて実現する。
誤り符号は、誤りのあるバイト位置が既知であるバイト誤り、いわゆるグループ誤りを訂正するために使用することができる。また誤り符号は、誤りのあるバイト位置が既知でないバイト誤りを訂正するためにも使用することができる。
例えば、データビットは、誤り符号の符号語であってもよいし、そのような符号語を含んでいてもよい。
第1のデータバイトがそれぞれ多値であることも考えられる。この場合には、読み出された第2のデータバイトも多値である。したがって、例えば、メモリのメモリセル毎に、2つより多くのディジタル値を記憶することができる。したがって、読み出された第2のデータバイトは、例えば複数n個の0、複数n個の1および複数n個の2を有することができる。読み出された0の個数がnと同じでない場合、読み出された1の個数がnと同じでない場合、または読み出された2の個数がnと同じでない場合には、誤りを検出することができる。
1つの発展形態では、誤り符号は、バイト誤り訂正符号であり、特にリード・ソロモン符号である。
1つの発展形態では、第2のデータバイトが、第1の変換とは逆の変換である第2の変換によって、第2の逆データバイトに変換される。
したがって、第1の変換でもって、データビットが第1のデータバイトに変換され、また第2の変換でもって、メモリから読み出された、場合によっては誤りのある第2のデータバイトが第2の逆データバイトに逆変換される。ここで、それらの第2の逆データバイトを、誤り符号を用いて訂正することができる。
1つの発展形態では、第2のデータバイトがブロック誤り符号の符号語ではない場合には、誤り信号に基づいて、第2の逆データバイトの訂正が誤り符号を用いて行われる。
1つの発展形態では、第2の逆データバイトの基礎をなす第2のデータバイトがブロック誤り符号の符号語ではないことを誤り信号が示す場合には、少なくとも1つの第2の逆データバイトが、誤り信号に基づいて、誤り符号を用いて訂正される。
1つの発展形態では、誤り信号が誤りのあるi番目の第2のデータバイトおよび誤りのあるj番目の第2のデータバイトを示す場合には、i番目の第2の逆データバイトX’に対するバイト訂正値eは、誤りシンドロームの部分シンドロームsならびにs、バイト位置i、および成分毎のXOR和α+α(ただし、αは使用されるガロア体の生成元である)に依存して決定される。
1つの発展形態では、i番目の第2の逆データバイトX’を訂正するためのバイト訂正値eが、次式に従い決定される。
Figure 2024029084000002
1つの発展形態では、バイト訂正値eが、次式に従い決定される。
Figure 2024029084000003
ただし、
Figure 2024029084000004
が成り立ち、またE,E,...,EL-1は、(L-1)個の第2のデータバイトに対するブロック誤り信号を表す。
有利には、i番目のバイトに対するバイト訂正値eは、1つのグループ誤りが存在する場合、または(i番目の第2のデータバイトおよびj番目の第2のデータバイトに関して)2つのグループ誤りが存在する場合には、同じ関数関係に従って、それゆえ、Σが
Figure 2024029084000005
として決定されている場合には(ただし、EおよびEは、i番目の第2のデータバイトおよびj番目の第2のデータバイトに対する誤り信号である)、Σに依存する回路タイプも用いて決定することができる。
i番目の第2のデータバイトの位置にグループ誤りが1つだけ存在する場合には、誤り信号E=1となり、他の全ての誤り信号は0となる。i番目の第2のデータバイトの位置およびj番目の第2のデータバイトの位置に2つのグループ誤りが存在する場合には、誤り信号E=E=1となり、他の全ての誤り信号は0となる。
1つの発展形態では、少なくとも2つのバイト訂正値が並列に決定され、その場合、少なくとも1つのバイト訂正値は、訂正の必要がない正しい第2の逆データバイトに対して決定される。
この関係において、並列とは特に、バイト訂正値の決定および/または提供を少なくとも部分的に時間的に重畳させて、特に実質的に同時に行えることを意味している。したがって1つの有利なオプションでは、バイト毎に、訂正のために1つの定数乗算器、2つのXOR回路および1つのAND回路だけが必要とされる。
1つの発展形態では、
-第1のデータバイト、および第1のデータバイトに基づいて決定される第1の検査ビットがメモリに記憶され、
-第2のデータバイトおよび第2の検査ビットがメモリから読み出され、
-第2のデータバイトがブロック誤り符号の符号語ではない場合には、誤り信号および第2の検査ビットに基づいて、第2のデータバイトの訂正が行われる。
したがって、訂正は、第2のデータバイトおよび検査ビットに基づいて行われる。この際に、訂正された第2のデータバイトが決定される。訂正された第2のデータバイトは、特に、バイト訂正値生成器(例えば、図3bにおける参照番号37を参照されたい)によって処理された第2のデータバイトである。各第2のデータバイトの個々のビットを変更することができる(すなわち、訂正することができる)。また、この訂正ステップでは、(単一のまたは複数の)第2のデータバイトの変更が行われないことも考えられるが、それにもかかわらず、訂正ステップ(すなわち、図3bによるバイト訂正値生成器37およびXOR回路380~38L-1による処理)後の第2のデータバイトは、以下では「訂正された第2のデータバイト」と記す第2のデータバイトに相当する。このことの本質は、(バイト訂正値生成器37およびXOR回路380~38L-1を含む)訂正回路が、誤りのない第2のデータバイトは最終的に変更されない(訂正値0は誤りのない第2のデータバイトと成分毎にXOR結合される)ことがXOR回路によって保証されている場合であっても、第2のデータバイトの(実質的にまたは実際に)並列な訂正を実現することにある。その限りにおいて、訂正回路は、第2のデータバイトから、上述の「訂正された第2のデータバイト」を、個々の訂正された第2のデータバイトが第2のデータバイトと異なるか否かに依存せずに生成する。
1つのオプションとして、誤り訂正が、データビットに関する誤り符号を使用して、かつ/またはデータバイトに関する検査ビットを使用して実施される。
1つの発展形態では、訂正された第2のデータバイトが、第1の変換とは逆の変換である第2の変換によって、訂正された第2の逆データバイトに変換される。
1つの発展形態では、第2のデータバイトがブロック誤り符号の符号語ではないことを誤り信号が示す場合には、少なくとも1つの第2のデータバイトが、誤り信号に基づいて、検査ビットを用いて訂正される。
1つの発展形態では、少なくとも2つの第2のデータバイトに対する少なくとも2つのバイト訂正値が並列に決定され、その場合、少なくとも1つのバイト訂正値は、訂正の必要がない正しい第2のデータバイトに対して決定される。
1つの発展形態では、検査ビットに基づいて、誤り信号が決定されている第2のデータバイトが、検査ビットを用いて訂正される。
また、1つの発展形態では、少なくとも2つの誤り信号に基づいて、それら少なくとも2つの誤り信号が決定されている第2のデータバイトが、検査ビットを用いて訂正される。
1つの発展形態では、少なくとも2つのグループ誤り、または既知でないバイト位置における誤りの誤り訂正が実施される。
グループ誤りとは、そのバイト誤り位置が既知である誤りである。
1つの発展形態では、ある特定の第2のデータバイトが対応するブロック誤り符号の符号語ではないことを誤り信号が示す場合には、その第2のデータバイトの少なくとも1つの誤りのあるビットが、グループ誤りを考慮して訂正される。
1つの発展形態では、誤りのある第2のデータバイトが、並列に、または実質的に並列に訂正される。
この関係において、並列とは特に、バイト訂正値の決定および/または提供を少なくとも部分的に時間的に重畳させて、特に実質的に同時に行えることを意味している。
特に、複数のバイト訂正値生成器を、訂正されるべきバイトに対して並列に実装することができる。特に、バイト訂正値を、少なくとも1つのクロックの間に、例えば共通のクロックのシーケンスの間に、または共通のクロックの一部のシーケンスの間に(すなわち、時間的に重畳させて)決定することができる。少なくとも部分的に時間的に重畳させることによって、並列な処理が実現される。ここで、「並列な決定」という概念には、特に、部分的に並列な処理(すなわち、例えば部分的に同時の処理)も含まれることを言及しておく。
例えば、誤りのある第2のデータバイトに対しては、0ではない訂正値を提供することができ、また誤りのない第2のデータバイトに対しては、0の訂正値を提供することができる。したがって、訂正されるべき全ての第2のデータバイトに対して訂正値を決定して、訂正回路の異なる出力側において提供することができる。訂正値を、可逆的かつ一義的に、例えばXOR回路によって、訂正されるべきバイトのビットと結合させることができる。誤り信号に基づいて、第2のデータバイトが訂正されるべきか否かを決定することができる。第2のデータバイトが訂正されない場合には、例えば、第2のデータバイトの個々のビットを値0とXOR結合させることができる。
誤り信号が、該当する第2のデータバイトのバイト位置にグループ誤りが存在することを示す場合には、訂正回路によってグループ誤りに対して決定および訂正されたビットが、訂正されるべきバイトのビットと、例えばXOR回路によって結合される。
誤り信号が、第2のデータバイトのバイト位置にグループ誤りが存在しないことを示す場合には、例えば、訂正回路によって、0の値を有するビットを提供することができ、それらのビットを誤りのないビットとXOR結合させることができ、その際、誤りのないビットが変更されることはない。
誤り信号が存在しない場合であっても、バイト誤りが存在する可能性があるが、もっともこのバイト誤りは、ブロック誤り符号によって検出されなかったものである。この場合には、事前に決定されたバイト誤り位置による支援がなくとも、誤り符号を用いてバイト誤りを訂正することができる。
1つのオプションでは、第2のデータバイトの訂正は、ペイロードビットが関係しており、かつ検査ビットが相応に訂正する必要がない場合にのみ実施される。代替的に、ペイロードビットおよび検査ビットも訂正することができる。
1つの発展形態では、第1のデータバイトも第2のデータバイトも、それぞれ12個より多くのビットを含んでいない。
第1のデータバイトおよび/または第2のデータバイト毎に6、7、8、9、10、11または12個より多くのビットが使用されないことは有利であると考えられる。1つのバイトは、リード・ソロモン符号では、ガロア体GF(2)(ここで、bはバイト毎のビットの個数である)の元とみなされる。場合によっては誤りのある個々のバイトに対する訂正値が、異なるバイトのための異なる出力側において提供される実現形態、例えば誤り訂正回路の並列な実現形態は、例えば10個のビットまたは12個のビットよりも大きい値に対しては非常に繁雑であると考えられる。
1つの発展形態では、第2のデータバイトのうちの少なくとも2つに対する少なくとも2つの誤り信号が、並列に、または実質的に並列に決定される。
この関係において、並列ないし実質的に並列とは特に、誤り信号の決定を少なくとも部分的に時間的に重畳させて、特に実質的に同時に行えることを意味している。
上記の課題を解決するために、データビットを処理するための装置も提案され、この装置は、
-処理ユニットを含んでおり、この処理ユニットは、
-第1の変換によって、データビットを第1のデータバイトに変換し、
-第1のデータバイトをメモリに記憶し、
-誤りのない場合にはそれぞれがブロック誤り符号の符号語である第2のデータバイトをメモリから読み出し、
-第2のデータバイト毎に、その第2のデータバイトが符号語であるか否かを表す誤り信号を決定する、
ように構成されている。
ここに記載した処理ユニットを、特に、例えば本明細書に記載するような方法を実施することができるように構成されており、また少なくとも部分的にハードワイヤード式の回路装置または論理回路装置および/またはプロセッサユニットとして形成することができる。上述の処理ユニットは、相応に必要とされる周辺装置(メモリ、入力/出力インタフェース、入出力装置など)を備えた、あらゆる種類のプロセッサまたは計算機またはコンピュータであってもよいし、それらを含んでいてもよい。
1つのオプションでは、第2のデータバイト毎に、その第2のデータバイトに対する誤り信号を決定するように構成されている誤り検出回路が1つ設けられている。
さらに、1つのオプションでは、メモリセル値を訂正するための訂正値生成器が設けられている。訂正値生成器は、例えば、メモリセル値のバイトに誤りがあることを誤り信号が示す場合には、誤りのあるメモリセル値のバイトを訂正するための、0ではないバイト訂正値を決定する。
また1つのオプションでは、訂正値生成器がデータビットを訂正するために使用される。訂正値生成器は、例えば、メモリセル値のバイトに誤りがあることを誤り信号が示す場合には、メモリセル値の誤りのあるバイトに事前に変換されていた誤りのあるデータバイトを訂正するための、0ではないバイト訂正値を決定する。
ブロック誤り符号の誤り信号を使用して、メモリセル値のバイトに対して、使用される誤り信号のうちの1つが誤りを示す場合には第1の値を取り、全ての誤り信号が誤りを示さない場合には第2の値を取る、組合せ誤り信号を形成することができる。
誤り信号は、バイナリであってよく、また組合せ誤り信号を、複数の誤り信号のXOR結合またはOR結合として決定することができる。
方法に関する前述の説明は、装置についても相応に当てはまる。装置を1つのコンポーネントにおいて形成することができるか、または複数のコンポーネントに分散させて形成することができる。
また上記の課題は、本明細書で説明する装置のうちの少なくとも1つを含んでいるシステムによって解決される。
1つの発展形態では、メモリが、以下のコンポーネントのうちの少なくとも1つを含んでいる。
-キャッシュメモリ、
-レジスタまたはレジスタアレイ、
-フラッシュメモリ、
-MRAM、
-SRAM、
-RE-RAM、
-PC-RAM、
-FE-RAM、
-CB-RAM、
-マルチビットメモリ、
-マルチレベルメモリ。
1つの発展形態では、メモリが装置の一部であるか、または装置とは別個に形成されている。
1つの発展形態では、さらに、第1の変換とは逆の変換である第2の変換によって、第2のデータバイトが第2の逆データバイトに変換されるように、処理ユニットが構成されている。
1つの発展形態では、処理ユニットが、さらに、
-第1のデータバイト、および第1のデータバイトに基づいて決定される第1の検査ビットを記憶し、
-第2のデータバイトおよび第2の検査ビットをメモリから読み出し、
-第2のデータバイトがブロック誤り符号の符号語ではない場合には、誤り信号および第2の検査ビットに基づいて、その第2のデータバイトを訂正するように構成されている。
さらに、データビットを処理するための装置が提案され、この装置は、
-第1の変換によって、データビットを第1のデータバイトに変換する手段、
-第1のデータバイトをメモリに記憶する手段、
-誤りのない場合にはそれぞれがブロック誤り符号の符号語である第2のデータバイトをメモリから読み出す手段、
-第2のデータバイト毎に、その第2のデータバイトが符号語であるか否かを表す誤り信号を決定する手段、
を含んでいる。
さらに、ディジタルコンピュータのメモリに直接的にロードすることができる、コンピュータプログラム製品が提案され、このコンピュータプログラム製品は、本明細書において説明する方法のステップを実施することに適しているプログラムコード部分を含んでいる。
また、コンピュータ読み出し可能な記憶媒体が提供され、この記憶媒体は、コンピュータが本明細書において説明する方法のステップを実施することに適している、コンピュータによって実行可能な命令を含んでいる。
本発明の上述の特性、特徴および利点、ならびにそれらがどのように達成されるかを、以下では図面と関連させて詳細に説明する実施例の概略的な説明と関係させて説明する。各図においては、明瞭性のために、同一または同様に機能する素子には同一の参照符号を付している場合がある。
メモリにデータを記憶するための例示的な回路。 情報ビットに対する検査ビットが利用される、符号語のデータビットの訂正を例示した概略図の第1の部分。 情報ビットに関する検査ビットが利用される、符号語のデータビットの訂正を例示した概略図の第2の部分。 特にメモリセル値に関する検査ビットが利用される、符号語のデータビットの訂正を例示した概略図の第1の部分。 特にメモリセル値に関する検査ビットが利用される、符号語のデータビットの訂正を例示した概略図の第2の部分。 組合せ誤り信号Eを決定するための例示的な回路装置。 図2aに示した変換回路22の例示的な実現形態。 図2bに示した逆変換回路25の例示的な実現形態。 例示的な誤り検出回路。 バイトW’のビットにおける奇数の全てのビット誤りを検出する例示的な誤り検出回路。 特に、訂正値
Figure 2024029084000006
を決定するためのバイト訂正値生成器が正しく機能するか否かを検査することができる、誤り訂正を検査するための例示的な回路装置。
誤りのあるk番目のバイトを訂正するためのバイト訂正値eを決定するための例示的な回路装置。 i番目、j番目およびk番目のバイトにおけるバイト誤りが誤り信号E=E=E=1によって示される場合の、積
Figure 2024029084000007
を形成するための例示的な回路装置。
誤りのある1つのバイト位置または誤りのある2つのバイト位置が既知であり、したがって1つのグループ誤りまたは2つのグループ誤りが生じているという前提のもとで、任意の、場合によっては誤りのあるl番目のバイトに対するバイト訂正値を決定する例示的な回路装置。 15個のバイト訂正値生成器を並列に実現するための例示的な回路装置。 Σ-1を決定するための例示的な回路装置。 XOR回路を用いて誤り信号E~E14からΣを形成するための、図12に示した組合せ回路121の例示的な実現形態。 誤り検出回路130~13L-1によって決定された誤り信号E~EL-1に依存したグループ誤りの訂正、および誤り検出回路130~13L-1によってグループ誤りとして検出できない誤りの訂正を行うための例示的な回路装置。 ベクトル表現で与えられている、ガロア体の2つの元を乗算するための例示的な回路装置。 ベクトル表現a=1000を用いる定数αに関する定数乗算器の1つの考えられる実現形態。 ベクトル表現a=0100を用いる定数αに関する定数乗算器の1つの考えられる実現形態。 ベクトル表現a=0011を用いる定数αに関する定数乗算器の1つの考えられる実現形態。
誤り符号についての一般的な注釈
本願において使用される誤り符号(符号とも記す)は、線形符号または非線形符号である。
例えば、線形符号Cを、生成行列G(G行列とも記す)またはH行列Hによって表すことができる。この例では、簡潔な説明のために、先ず線形符号、特にペイロードがバイナリペリロードビット(ないしペイロードバイト)である線形符号を考察する。ここで、1つのバイトは、複数b(ただし、b≧2)個のビットを含んでいる。ペイロードビットは、情報ビットとも記す。
符号Cが、複数q個のペイロードビット
Figure 2024029084000008
を有する場合には、符号語
Figure 2024029084000009
を、生成行列Gを使用して、以下の関係
Figure 2024029084000010
によって決定することができる。生成行列Gは、(q,k)行列である。
符号Cが、線形組織符号である場合には、符号Cの符号語は、q個のペイロードビットuと、付加的なp個の検査ビットc,...,cとを含んでおり、この場合、符号語のビットの個数は、k=q+pによって決定されている。
組織符号の符号語を形成する際に、ペイロードビットは、例えば複数のペイロードビットの線形組合せである検査ビットによって補完される。
線形組織符号に関して、生成行列は、以下の形式を有し、
Figure 2024029084000011
ただし、Pq,pは、符号Cのパリティ行列とも記す(q,p)行列であり、ここで、p=k-qであり、かつIは、q次元の単位行列である。
符号Cは、符号Cの符号語である複数の語
Figure 2024029084000012
の集合によって決定されている。検査ビットc~cに関しては、以下の関係が成り立つ。
Figure 2024029084000013
G=(I,Pq,p)が、組織形式の符号Cの生成行列である場合には、符号CのH行列Hを、
Figure 2024029084000014
に従い決定することができ、ただし
Figure 2024029084000015
は、パリティ行列Pq,pの転置行列であり、Iは、p次元の単位行列である。転置パリティ行列
Figure 2024029084000016
は、パリティ行列Pq,pから、その行と列が入れ替えられることによって得られる。
各符号のように、長さkの線形ブロック符号も、考えられる全てのk成分の語の集合の部分集合である、自身の複数の符号語の集合によって表すことができる。換言すれば、符号Cは、長さkの考えられる全ての語の語x,...,xの部分集合によって表すことができ、この場合、次式が成り立つ。
Figure 2024029084000017
したがって、線形符号Cは、式(4)が満たされているk項の全ての語の部分集合によって決定されている。ここで、ベクトル[x,...,xは、行ベクトル[x,...,x]の転置列ベクトルである。
符号語x,...,x(ただし、H×[x,...,x=0)を、k個の成分x,...,xを有する符号ベクトルと記すこともできる。
成分x(ただし1≦i≦k)が0または1の値しか取ることができない場合には、xはバイナリである。成分xは、多値であってもよい。成分xが3値である場合には、成分xは、3つの異なる値、例えば0、1または2を取ることができる。成分xがK値(ただし、K≧2)である場合には、成分xは、K個の異なる値、例えば0,1,...,K-1を取ることができる。
符号語の成分xが、複数b個のビットを有するbビット・バイトを表すことも考えられ、これは例えば、リード・ソロモン符号などのバイト誤り訂正符号またはバイト誤り検出符号の場合である。
各符号に関する場合と同様に、線形符号Cについても、符号語xを誤りのある語
Figure 2024029084000018
に改ざんする誤りを、その誤りのある語が符号Cの符号語ではない場合には検出できる。改ざんされた語x’も符号Cの符号語である場合には、誤りを検出することはできない。
Hが符号CのH行列である場合には、
Figure 2024029084000019
であることの誤りを検出することができる。これに対して、
Figure 2024029084000020
である場合には、誤りは検出されない。ここで、sは、誤りのある語x’の誤りシンドロームを表す。[x’]は、行ベクトルx’の転置列ベクトルである。
例:多値の符号
例示的に、3項アルファベット0、1および2に関して符号Cを説明する。この符号は非線形である。符号Cを、
Figure 2024029084000021
として表すことができる。つまり、この符号Cの符号語は、この場合2つの2、1つの1および1つの0を有する。
Figure 2024029084000022
個の符号語、つまり
Figure 2024029084000023
が存在する。
アルファベット{0,1,2}に関する長さ4の全ての語の集合{0,1,2}
Figure 2024029084000024
は、3=81個の要素を有する。符号Cは、長さ4の全ての語のこの集合{0,1,2}の部分集合である。
また、b個(ただし、b≧2であると考えられる)のビットを含むことができるバイトのアルファベットに関して符号を考察することもできる。この種の符号に関する例は、リード・ソロモン符号である。
メモリセル値のバイトの誤り検出
図1は、メモリ11にデータを記憶するための例示的な回路を示す。メモリ11は、複数のメモリセル値を記憶するための複数のメモリセルを有している。メモリセルがバイナリである場合には、メモリセルは、2つの異なるメモリセル値(例えば、0または1)を記憶することができる。メモリセルが、K個(ただし、K>2)の異なるメモリセル値を記憶する場合には、メモリセルを、K値メモリセル(多値メモリセルまたは「Multi-Valued」メモリセル)と記す場合もある。K個の異なるメモリセル値は、例えば0,1,2,...,K-1であってよい。
メモリ11は、バイナリメモリセルおよび/または多値メモリセルを有することができる。特に、1つのオプションでは、メモリ11が、複数のK値メモリセルを有しており、この場合、K値メモリセルの第1の部分には、多値の値0,1,...,K-1の部分集合のみ、例えば値0またはK-1のみを書き込むことができ、またメモリセルの第2の部分には、考えられるK個全ての異なるメモリセル値を書き込むことができる。
以下では、例示的に、メモリ11のメモリセルがバイナリであることを想定する。
さらに、図1による回路は、1つの変換回路12および複数L個の誤り検出回路FE130,FE131,...,FEL-113L-1を有している。ここで、「L-1」と組み合わされた数字の表記は、それがL番目のコンポーネントであること、ここではL番目の誤り検出回路であることを表していることを言及しておく。例えばL=4個の誤り検出回路が設けられている場合には、それらの誤り検出回路には、参照番号130、131、132および133が付与される。したがって、最後の参照番号は、13L-1(ただし、L=4)から133となる。これらの表記によって、可変の多数のL個のコンポーネントを示唆することができ、また特に、大きい数Lを漠然と表すことができる。
変換回路12は、k個のデータビットx=x,...,xを入力するためのkビット幅の入力側と、n個のメモリセル値w=w,...,wを出力するためのnビット幅の出力側と、を有している。
符号語xのk=q+p個のデータビットは、複数q個の情報ビットu,u,...,uと、分離可能な誤り符号Cの複数p個の検査ビットc,...,cと、を形成することができ、それによって、
Figure 2024029084000025
が成り立つ。ただし
Figure 2024029084000026
は、誤り符号Cの符号語である。
誤り符号Cを、データビット誤り符号と記す場合もある。誤り符号Cは、誤り訂正符号および/または誤り検出符号である。情報ビットu,...,uは、検査ビットc,...,cで補完され、変換回路12の入力側に印加される誤り符号Cの符号語xとなる。例えば、誤り符号Cが、バイト誤り訂正符号および/またはバイト誤り検出符号であることも考えられる。符号語xが、分離できない符号の符号語であることも考えられる。
さらに、符号語x,...,xのk個のビットの代わりに、ペイロードビットu,...,uのq個のビットを印加することもできる。換言すれば、符号語xが変換回路12に供給されることは必要なく、その代わりに、ペイロードビットuの集合が変換回路12に供給されてもよい。
変換回路12の入力側には、k個のデータビットx=x,...,xが印加される。ここで、以下の関係が成り立つ。
-このデータビットのmが0番目のバイトXを形成する、
-このデータビットのmが1番目のバイトXを形成する、以下同、
-最終的にこのデータビットのmL-1が(L-1)番目のバイトを形成するまで同じことが繰り返される。
さらに、以下の関係が成り立つ。
Figure 2024029084000027
データビットの少なくとも2つのバイトが形成されるので、L≧2となる。さらに、この実施例によるデータビットのバイトは、少なくとも2つのビットを有するので、以下の関係が成り立つ。
Figure 2024029084000028
データビットのバイト、例えば「データビットのバイトX」は、「データバイトX」または「データビットのグループX」とも記す。
複数のビットのグループのビットまたはデータビットのバイトX,X,...,XL-1のビットが連続して配置されていることも考えられるが、しかしながらこれは必須ではない。
単に例示ではあるが、多くの実施例において、複数のデータビットから成るバイトの各ビットが連続して配置されており、
Figure 2024029084000029
が成り立つことが前提とされる。
変換回路12は、自身のk個の入力側に印加される、符号語xのk個のデータビットを、n個のメモリセル値w=w,...,wに変換し、それらのメモリセル値w=w,...,wを、自身のn個の出力線に出力し、これらの出力線は、メモリ11のn個のメモリセルの対応するデータ入力線に接続されている。したがって、変換回路12は、データビットの割り当てを、メモリセル値の割り当てに変換する。
k個のデータビットの複数Anz<2個の割り当てしか生じない場合には、生じた割り当てをメモリセル値の対応する割り当てに一対一で変換するように変換回路12が構成されていれば十分である。生じない割り当てに関しては、変換回路の機能を任意に規定することができる。
変換回路12は、以下のように構成されている。
-0番目のバイトWのメモリセル値の割り当てが長さnの誤り符号CFの符号語であるように、データビットの0番目のバイト
Figure 2024029084000030
の割り当てを、メモリセル値の0番目のバイト
Figure 2024029084000031
の割り当てに変換する、
-1番目のバイトWのメモリセル値の割り当てが長さnの誤り符号CFの符号語であるように、データビットの1番目のバイト
Figure 2024029084000032
の割り当てを、メモリセル値の1番目のバイト
Figure 2024029084000033
の割り当てに変換する、
-最終的に、メモリセル値のnL-1番目のバイトWL-1の割り当てが長さnL-1の誤り符号CFL-1の符号語であるように、データビットの(L-1)番目のバイト
Figure 2024029084000034
の割り当てを、メモリセル値のL-1番目のバイト
Figure 2024029084000035
の割り当てに変換するまで同じことを繰り返す。
誤り符号CF,CF,...,CFL-1は、それぞれ、ブロック誤り符号とも記す。
考察する実施例においては、以下の関係が成り立つ。
Figure 2024029084000036
メモリセル値のバイトを、複数のメモリセルから成るグループに記憶することができる。この場合、とりわけ、少なくともL=2個のバイトと、メモリセル値の対応するバイトを記憶することができる、複数のメモリセルから成る少なくとも2つのグループと、が存在している。
データビットのバイトおよびメモリセル値のバイトが2個よりも多く存在していてもよい。例えば、異なる個数のバイトが存在していてもよく、その場合には、各バイトがメモリセル値の相応のバイトに変換され、またバイトの各メモリセル値がブロック誤り符号の符号語である。
メモリセルのバイトは、とりわけ少なくとも3つのメモリセル値を有する。
メモリ11は、少なくともn=n+n+...+nL-1個のメモリセルを有している。ブロック誤り符号CFは、長さnのブロック符号であり、ブロック誤り符号CFは、長さnのブロック符号であり、この関係は、長さnL-1のブロック符号であるブロック誤り符号CFL-1まで続く。
例えば、ブロック誤り符号CFが、q-out-of-n符号であることも考えられ、それによって、このブロック誤り符号の符号語は、複数q個の1と、複数n-q個の0と、を有する。
また例えば、ブロック誤り符号CFが、全てのn項バイナリ語の集合の所定の部分集合として決定されていることも考えられる。
例えば、ブロック誤り符号の各符号語が、それぞれ、3つの1と3つの0とを有する、3-out-of-6符号語であってもよい。全部で、20個のその種の符号語が存在する。例示として、データビットの4ビット・バイトが、メモリセル値の6ビット・バイトに変換される。2=16個の異なる4ビット・バイトが存在し、それらが可逆的かつ一義的に、メモリセル値の全部で20個の6ビット・バイトのうちの16個の6ビット・バイトに変換される。したがって、(20-16=)4個の3-out-of-6符号語は、変換の際に使用されない。したがって、ブロック誤り符号CFは、3-out-of-6符号の複数の3-out-of-6符号語の部分集合だけを含んでいる。この例では、考えられる16個のデータバイトのうちの1つが変換される16個の3-out-of-6符号語から、ブロック誤り符号CFが形成されている。
長さnのブロック誤り符号は、n項バイナリ語の真部分集合であると考えられる。つまり例えば、長さn=6のブロック誤り符号は、3-out-of-6符号の20個の考えられる符号語のうちの16個の符号語の部分集合であると考えられる。20個の考えられる符号語もまた、メモリセル値の6ビットの2=64個の考えられるバイナリ語の部分集合である。
例えば、ブロック誤り符号は、バーガ符号またはその他の公知の符号である。
1つのオプションでは、n=n=...=nL-1が成り立つ場合、全てのブロック誤り符号は、同じブロック長さを有する。また、CF=CF=...=CFL-1が成り立ち、メモリセル値のL個のバイトに対して使用されるブロック誤り符号が同じであり、かつデータビットのL個のバイトの割り当てのそれぞれに対して、同じ変換が変換回路12によって実施されることも考えられる。
さらに、データビットの異なるバイトが異なる変換によって、メモリセル値のバイトに変換されることも考えられる。
1つの別のオプションでは、データビットの0番目のバイトXの複数Anz個(ただし、Anz<2m0)の割り当てだけが、変換回路12のm個の第1の入力側に生じ、生じた割り当てだけが可逆的かつ一義的に、メモリセル値のバイトのAnz個の割り当てに、変換回路12によって変換され、また相応の入力側に生じない割り当てに関する変換は定義する必要はない。相応のことが、データビットの他の各バイトについても成り立つと考えられる。
変換回路12によって、自身の対応する出力側に提供されたメモリセル値
Figure 2024029084000037
を、0番目のメモリセルと称されるn個のメモリセルに記憶することができる。
変換回路12によって、自身の対応する出力側に提供されたメモリセル値
Figure 2024029084000038
を、1番目のメモリセルと称されるn個のメモリセルに記憶することができる。
このことは、最終的に、変換回路12によって、自身の対応する出力側に提供されたメモリセル値WL-1が、(L-1)番目のメモリセルとも称されるnL-1個のメモリセルに記憶されるまで継続される。
個の0番目のメモリセルから、そこに記憶されているメモリセル値
Figure 2024029084000039
を読み出すことができる。
誤りに起因して、読み出されたメモリセル値W’は、事前に書き込まれているメモリセル値Wとは異なる可能性がある。
誤りが存在しない場合には、W=W’が成り立ち、読み出されたメモリセル値W’は、ブロック誤り符号CFの符号語を形成する。読み出されたメモリセル値W’がブロック誤り符号CFの符号語を形成しない場合には、誤りが存在し、この誤りはブロック誤り符号CFを用いて検出することができる。第1のn個のメモリセルから読み出されたメモリセル値W’は、誤り検出回路FE130のnビット幅の入力側に印加される。この誤り検出回路FE130は、読み出されたメモリセル値W’がブロック誤り符号CFの符号語である場合には、自身の出力側に誤り信号Eの第1の値を出力し、読み出されたメモリセル値W’がブロック誤り符号CFの符号語ではない場合には、自身の出力側に第2の値を出力するように構成されている。したがって、第2の値が出力されるということは、0番目のn個のメモリセルから出力されたメモリセル値には誤りがあることを示す。
個の1番目のメモリセルないしnL-1個の(L-1)番目のメモリセルからは、それらのメモリセルに記憶されているメモリセル値W’~WL-1’を読み出すことができる。読み出されたメモリセル値W’,...,WL-1’が、誤りに起因して、書き込まれたメモリセル値W,...,WL-1とは異なる可能性がある。
誤りが存在しない場合には、書き込まれたメモリセル値は、読み出されたメモリセル値と同じであり、また読み出されたメモリセル値は、それぞれ対応するブロック誤り符号の符号語を形成する。
上記の説明は、残りの誤り検出回路FE131~FEL-113L-1についても相応に当てはまる。つまり、誤り検出回路FE131は、読み出されたメモリセル値W’に基づき、(ブロック誤り符号CFを基礎とする)誤り信号Eを決定し、また誤り検出回路FEL-113L-1は、読み出されたメモリセル値WL-1’に基づき、(ブロック誤り符号CFL-1を基礎とする)誤り信号EL-1を決定する。
図2aおよび図2b:情報ビットuに対する検査ビット
メモリから出力されたメモリセル値は、バイトまたはメモリセル値W’,...,WL-1’のグループを形成する。そのようなバイトの全てのビットに誤りがないわけではない場合には、いわゆるグループ誤りが存在する。
例えば、読み出されたバイトW’の全ての値
Figure 2024029084000040
に誤りがないわけではない場合には、読み出されたメモリセル値のi番目のバイトにおけるグループ誤り(読み出されたメモリセル値のi番目のグループとも記す)が存在する。
i番目のバイトのグループ誤りは、このバイトの少なくとも1つのメモリセル値に誤りがあることを表す。したがって、グループ誤りとは、バイト位置が検出されている誤りである。つまり、グループ誤りは、特定のバイトに誤りがあることを示す。もっとも、グループ誤り単独では、(1つまたは複数の)どのビットに誤りがあるかをまだ示さない。
換言すれば、グループ誤りは、バイトの集合のうちの(1つまたは複数の)どのバイトに誤りがあるか否かという情報を供給する。
例えば、3-out-of-6符号では、グループ誤りが誤りのある6ビット・バイトを示すが、その際に既に、6個のビットのうちの少なくとも1つのどのビットに実際に誤りがあるかが示されることはない。
グループ誤りが存在するということを、バイト誤り位置信号によっても示すことができ、これを以下では例示的に説明する。
図2aは、符号語のデータビットの訂正を例示した概略図を示す。図2aには、コーディングユニット21、変換回路22ならびにメモリ23が含まれている。
ペイロードビットuが、コーディングユニット21によって、誤り符号を用いて符号語xのデータビットにコーディングされる。続いて、符号語xが変換回路22に供給され、この変換回路22に基づいて、符号語xは、書き込まれるべきメモリセル値W,W,...,WL-1に変換される。
この例においては、コーディングユニット21は、ペイロードビットuが、誤り符号Cの(ペイロードビットuならびに検査ビットcを含む)符号語x、ただし
Figure 2024029084000041
に変換されるように構成されている。したがって、符号語xは、
-データビットのグループXを形成するm個のビット、
-データビットのグループXを形成するm個のビット、以下同、
-データビットのグループXL-1を形成するm個のビット、
を含んでいる。
したがって、
Figure 2024029084000042
が成り立つ。ただし、kは符号語xのビットの個数である。
符号語は、誤り符号Cが分離可能な符号である場合には、ペイロードビットおよび検査ビットを含んでいる。誤り符号Cが分離不可能な符号である場合には、符号語のペイロードビットと検査ビットとが区別されないことも考えられる。
=m=...=m=bが成り立ち、かつX,X,...,XL-1がそれぞれ、b個のビット(ただし、b≧2)から成るバイトを形成することも考えられる。
グループX,X,...,XL-1が複数のバイトである場合には、各バイトは少なくとも2つのビットを含んでいる。バイトX,X,...,XL-1のビットは、変換回路22の対応するmビット幅の入力側、mビット幅の入力側,...,mビット幅の入力側に印加される。変換回路22は、自身のnビット幅の出力側nに、書き込まれるべきメモリセル値Wを提供し、自身のnビット幅の出力側nにメモリセル値Wを提供し、この提供を、自身のnビット幅の出力側nにメモリセル値WL-1を出力するまで繰り返す。
ここで変換回路は、とりわけ、
-書き込まれるべきメモリセル値Wの集合が、ブロック誤り符号CFのそれぞれ1つの符号語である、
-書き込まれるべきメモリセル値Wの集合が、ブロック誤り符号CFのそれぞれ1つの符号語である、以下同、
-書き込まれるべきメモリセル値WL-1の集合が、ブロック誤り符号CFL-1のそれぞれ1つの符号語である、
ように構成されている。
変換回路22は、書き込まれるべきメモリセル値W,W,...,WL-1をメモリ23のメモリセルに書き込むことができるように、メモリ23に接続されている。
メモリ23は、アドレッシング可能なメモリ、レジスタアレイおよび/またはレジスタを含むことができる。
メモリ23からは、メモリセル値W’,W’,...,WL-1’を読み出すことができる。上記において説明したように、読み出されたメモリセル値には誤りがある可能性がある。読み出されたメモリセル値のバイトW’,W’,...,WL-1’のうちの1つが、各ブロック誤り符号の符号語ではない場合には(上記の説明を参照されたい)、読み出されたブロックのバイトにおける誤りが検出される。
図2bは、メモリ23、複数L個の誤り検出回路240,241,...,24L-1、逆変換回路25、バイト訂正値生成器26およびL個の排他的論理和回路270,271,...,27L-1を含んでいる概略的な回路装置を例示的に示す。
メモリ23の各出力側には、読み出されたメモリセル値W’,W’,...,WL-1’が提供される。それらは、逆変換回路25の対応する入力側に供給される。それらの読み出されたメモリセル値はそれぞれ、さらに誤り検出回路240~24L-1のうちの1つにも供給される。誤り検出回路240~24L-1はそれぞれ、自身の出力側に誤り信号E~EL-1を提供する。誤り信号は、読み出されたメモリセル値W’~WL-1’が、ブロック誤り符号CF~CFL-1の符号語であるか否かを示す。
例えば、誤り検出回路240に供給される、読み出されたメモリセル値W’に関しては次の事項が当てはまる。誤り信号Eは、読み出されたメモリセル値W’がブロック誤り符号CFの符号語を表す場合には、第1の値を取り、そうでない場合には、誤り信号Eは、第2の値を取る。
したがって、誤り検出回路240~24L-1によって、メモリセル値の読み出された各バイトW’~WL-1’に誤りがあるか否かを決定することができる。
誤り検出回路240~24L-1の誤り信号E~EL-1は、バイト訂正値生成器26に供給される。
逆変換回路25は、場合によっては誤りのある、読み出されたメモリセル値W’,W’,...,WL-1’のバイトを、読み出されたデータビットのバイトX’=X’,X’,...,XL-1’に、
Figure 2024029084000043
が成り立つように変換するように構成されている。
誤りが生じていない場合には、以下の事項が当てはまる。変換回路22によって、バイトX,...,XL-1が、メモリセル値のバイトW,...,WL-1に変換され、メモリ23のメモリセルに記憶される。メモリ23から読み出された、メモリセル値のバイトW’,...,WL-1’は、逆変換回路25によってバイトX’,...,XL-1’に変換される。
読み出されたデータビットのバイトX’が、逆変換回路25からバイト訂正値生成器26に提供される。また、読み出されたデータビットのそれらのバイトX’が、排他的論理和回路(XOR回路とも記す)270~27L-1の第1の入力側に供給される。
バイト訂正値生成器26は、自身の入力側に印加される
-誤り信号E~EL-1および
-読み出された(また場合によっては誤りのある)データビットのバイトX’
に依存して、データバイトを訂正するための誤り符号Cに応じたバイト訂正値
Figure 2024029084000044
を自身の出力側に供給するように構成されている。このために、バイト訂正値生成器26の出力側は、XOR回路270~27L-1の第2の入力側に接続されている。XOR回路270~27L-1の出力側には、訂正されたバイト
Figure 2024029084000045
が提供され、この際、以下の関係が成り立つ。
Figure 2024029084000046
さらに、場合によっては発生する誤りが各誤り符号Cによって訂正することができる場合には、以下の関係が成り立つ。
Figure 2024029084000047
例えば、メモリセル値のバイトWがデータビットのバイトXのみによって決定されており、別のデータビットには依存しないように、変換回路22を構成することができる。相応のことが、メモリセル値の別のバイトW~WL-1に対しても、バイトX~XL-1とのその依存性に関して当てはまると考えられる。
読み出されたメモリセル値のバイトが、書き込むべきメモリセル値のバイトと同じ場合、すなわち、
Figure 2024029084000048
である場合には、読み出されたバイトには誤りは存在しない。すなわち、誤り検出回路240の誤り信号Eは、読み出されたメモリセル値のバイトW’がブロック誤り符号CFの符号語であることを示す第1の値に相当する。したがって、訂正は必要ない。
これに対して、
Figure 2024029084000049
が成り立つ場合には、読み出されたメモリセル値のバイトW’は、ブロック誤り符号CFの符号語ではない。誤り信号Eは、第2の値に相当する。バイト訂正値生成器26は、0番目の読み出されたバイトX’のビットを訂正するための訂正信号
Figure 2024029084000050
を生成し、またそれをXOR回路270に供給する。この場合、誤り符号の訂正可能な誤りに対して、訂正可能なバイトを決定できるように、訂正信号
Figure 2024029084000051
は決定されている。
Figure 2024029084000052
相応のことが、読み出されたメモリセル値の別のバイト、すなわちW’~WL-1’に対しても当てはまる。
誤り信号E~EL-1がその第1の値によって、読み出された対応するバイトが、対応するブロック誤り符号の符号語であることを示す場合には、バイト訂正値生成器26によって、0とは異なるバイト訂正値は決定されない。XOR回路の(2つの入力側のうちの)一方の入力側に供給される0のバイト訂正値によって、XOR回路の出力側には、他方の入力側の信号が出力される。換言すれば、0のバイト訂正値は、XOR回路の出力側を変化させない。この場合には確かに誤りは訂正されるべきではないので、出力側が変化しないことは所望でもある。
相応に、誤り信号E~EL-1が第2の値を示す場合には、訂正が実施される。この場合、データビットの該当するバイトを訂正することができる。
すなわち結果として、誤り信号E~EL-1によって、どのバイトが訂正されなければならないか否か、またいつどのバイトが訂正されなければならないかが示される。これによって、有利には、誤り符号の訂正能力を高めることができる。
別の利点として、メモリセル値が逆変換回路25によってデータビットのバイトX’に変換される前に、誤り信号E~EL-1を、読み出されたメモリセル値のバイトから決定することができる。
ここでは例示的に、ペイロードビットu=u,...,uおよび検査ビットc=c,...,cが、バイト誤り訂正符号および/またはバイト誤り検出符号である誤り符号Cのデータビット
Figure 2024029084000053
を形成する。
データビットxは、バイトX,...,XL-1に分割され、それらが、変換回路22に基づいて、メモリセル値のバイトW,...,WL-1に変換される。これらのバイトW~WL-1は、ブロック誤り符号CF~CFL-1の符号語であり、またメモリ23のメモリセルに記憶される。
メモリ23からは、場合によっては誤りのあるメモリセル値のバイトW’~WL-1’が読み出され、誤り検出回路240~24L-1に基づいて、バイトW’~WL-1’毎に、それぞれがブロック誤り符号CF~CFL-1の符号語であるか否かが検査される。誤り信号E~EL-1を用いて、読み出された(また場合によっては誤りのある)各バイトW’~WL-1’が符号語であるか否かが示される。
場合によっては誤りのあるメモリセル値のこれらのバイトW’~WL-1’は、逆変換回路25によって、データビットの場合によっては誤りのあるバイトX’~XL-1’に変換される。各誤り信号E~EL-1を用いて、バイト訂正値生成器26には、バイトX’~XL-1’のうちのどのバイトに対してグループ誤りが検出され、またどのバイトに対してそのようなグループ誤りが検出されなかったかが示される。また、あるバイトに対して、(例えば、複数の誤りに起因して、ある符号語が別の符号語に改ざんされた場合に)そのバイトに誤りがあるにもかかわらず、グループ誤りが検出されないことも考えられる。
場合によっては誤りのあるバイトX’~XL-1’および誤り信号E~EL-1は、バイト訂正値生成器26に供給され、このバイト訂正値生成器26は、それらから誤り符号Cに応じたバイト訂正値
Figure 2024029084000054
を形成し、それらのバイト訂正値は、XOR回路270~27L-1に基づいて、バイトX’~XL-1’と成分毎にXOR結合される。
誤り訂正、ひいてはバイト訂正値の決定も、誤り符号Cを使用して行われる。誤り検出回路240~24L-1に基づいて、またブロック誤り符号CF~CFL-1を用いて、グループ誤りを決定することができ、それによって、誤り符号Cに基づいた誤り訂正に関しては、(1つまたは複数の)どのバイトに誤りがあるか、ひいては(1つまたは複数の)どのバイトが訂正されなければならないかが既知となる。
換言すれば、場合によっては誤りのあるデータバイトの誤り訂正は、誤り符号Cを使用して行われる。読み出されたデータバイトにおけるグループ誤りの検出を、それらが誤りのあるバイトに逆変換される前に、ブロック誤り符号CF~CFL-1を使用して行うことができる。
1つのオプションでは、誤り検出回路240~24L-1のうちの少なくとも1つおよび逆変換回路25が一緒に実現され、それによって回路の少なくとも一部を共通して使用することができる。
図3aおよび図3b:メモリセル値に対する検査ビット
以下では、例示的に、(図2aのようなデータビットに対する検査ビットとは異なり)メモリセル値に対する検査ビットPrが形成される。メモリセル値の検査ビットを、例えば、その形成後に、メモリセル値に変換し、続いて記憶することができる。
メモリセル値の検査ビットを、データビットの場合と同じやり方で、またはそれとは異なるやり方でメモリセル値に変換することができる。
図3aは、変換回路31、検査ビット生成器32、検査ビット変換回路33およびメモリ34を含んでいる概略的な回路装置を示す。
変換回路31の入力側には、誤り符号Cの符号語xの、複数のバイトXに分割されるデータビットが印加され、このデータビットは、ここでは例示的にペイロードビットuならびに検査ビットcを含んでいる。
代替的に、変換回路31には、複数のバイトに分割されたペイロードビットuのみを供給することもできる。
変換回路31は、自身の出力側に、記憶すべきメモリセル値のバイトW~WL-1を提供する。記憶すべきメモリセル値W~WL-1は、n~nL-1の各語幅を有する。さらに、記憶すべきメモリセル値W~WL-1は、各ブロック誤り符号CF~CFL-1の符号語である。
出力側では、変換回路31はメモリ34および検査ビット生成器32に接続されている。
検査ビット生成器32は、バイトW,W,...,WL-1のメモリセル値および検査ビットPrが、誤り符号Cの符号語
Figure 2024029084000055
を形成するように、検査ビットPrを決定するように構成されている。
検査ビット生成器32の出力側は、検査ビット変換回路33の入力側に接続されている。検査ビット変換回路33は、自身の入力側に印加された検査ビットPrをメモリセル値W[Pr]に変換するように構成されている。それらのメモリセル値W[Pr]は、メモリセル値W~WL-1と共にメモリ34に記憶される。
例えば、バイトX~XL-1が、全て同じ個数の4個のビットを有しており、つまりm=m=...mL-1=4であり、かつ例えば全てのメモリセル値W~WL-1が、6個のビットの語幅を有する場合、つまりn=n=...=nL-1=6である場合には、バイトX~XL-1は、それぞれ、2=16個の考えられる割り当てを有する4ビット・バイトを形成する。
この場合には、ブロック誤り符号CF~CFL-1が、それぞれ、
Figure 2024029084000056
個の符号語を有する3-out-of-6符号であると考えられる。4ビット・バイトの16個の考えられる割り当てを、変換回路31によって、可逆的かつ一義的に、20個の考えられる3-out-of-6符号語のうちの16個にマッピングすることができる。
この例においては、検査ビット生成器32が自身の入力側に印加される、メモリセル値W~WL-1の6×L個のビットから、誤り符号Cに対応する検査ビットPrを決定する。例えば、検査ビット生成器32は、第1の検査ビットを、バイトW~WL-1のメモリセル値の各第1のビットのXOR和として決定することができ、第2の検査ビットを、バイトW~WL-1のメモリセル値の各第2のビットのXOR和として決定することができ、これは、バイトW~WL-1のメモリセル値の各第6のビットのXOR和として形成される第6の検査ビットが決定されるまで繰り返される。したがって、6個の検査ビット
Figure 2024029084000057
が得られる。
これらの検査ビットは、3-out-of-6符号の符号語を形成することもできるが、しかしながら必須ではない。
さらに、この例においては、変換回路を用いて、6個の検査ビットPr~Prが、2つの3-out-of-6符号語に変換され、この変換は、最初の3つの検査ビットが0を用いて、4ビット・バイト
Figure 2024029084000058
に補完され、また最後の3つの検査ビットも同様に0を用いて、別の4ビット・バイト
Figure 2024029084000059
に補完されることによって行われる。これら2つの4ビット・バイトは、検査ビット変換回路33に基づき、3-out-of-6符号の符号語に変換される。この例によれば、続いて、3-out-of-6符号のそれら2つの符号語がメモリ34に書き込まれる。
例えば、検査ビット変換回路33に基づいて、6個の検査ビットPr~Prが以下の検査ビットに変換されることも考えられる。
Figure 2024029084000060
この例においては、各検査ビットPr~Prに対して、反転された検査ビット
Figure 2024029084000061
が決定されることによって、検査ビットが二重にされる。つまりこれによって、検査ビット毎に2つのメモリセルがメモリ34に記憶される。
1つの別の例によれば、検査ビットPr~Prを、三重にして記憶することもできる。
Figure 2024029084000062
メモリ34から、場合によっては誤りのある検査ビットが読み出された場合には、例えば、場合によっては誤りのある検査ビットの訂正を、多数決を使用して行うことができる。
また一例では、検査ビットPr~Prが、
Figure 2024029084000063
による(少なくとも)1つの付加的なパリティビットPaでもって補完され、この場合、
Figure 2024029084000064
がメモリ34に書き込まれるように、検査ビット変換回路33が構成されている。ここで「+」はモジュロ2加算を表す。場合によっては誤りのある検査ビットが読み出された場合には、検査ビットにおける奇数の誤りを、パリティビットに基づき検出することができる。検査ビットにおける誤りが検出された場合には、例えば、そのような誤りを示すことができるが、しかしながら、メモリセル値の訂正を省略することができる。
誤り符号Cの検査ビットPrは、ここでは例示的に、バイトW~WL-1のメモリセル値を使用して形成され、バイトX~XL-1からは直接的に形成されない。検査ビットPrは、その記憶の前に、対応するメモリセル値に変換することができる。
メモリ34からの読み出しの際に、メモリ34の対応する出力側において、場合によっては誤りのあるメモリセル値W’,W’,...,WL-1’,W[Pr]’が出力される。
図3bは、場合によっては誤りのあるメモリセル値W’,W’,...,WL-1’,W[Pr]’を訂正するためのコンポーネントを含む概略図を示す。
図3bには、1つのメモリ34、複数L個の誤り検出回路350~35L-1、1つの誤り検出回路40、1つの逆検査ビット変換回路36、複数L個のXOR回路380~38L-1、1つの逆変換回路39および1つのバイト訂正値生成器37が示されている。
バイト訂正値生成器37は、L個の誤り信号E~EL-1を入力するためのL個の入力側、誤り信号EPrを入力するための入力側、場合によっては誤りのあるメモリセル値W’~WL-1’を入力するためのL個の入力側、および場合によっては誤りのある検査ビットPr’を入力するための入力側を有している。さらに、バイト訂正値生成器37は、場合によっては誤りのあるメモリセル値W’,W’,...,WL-1’を訂正するためのL個のバイト訂正値
Figure 2024029084000065
を出力するためのL個の出力側を有している。
メモリ34からは、場合によっては誤りのあるメモリセル値W’,W’,...,WL-1’およびW[Pr]’が読み出される。
読み出されたメモリセル値W’~WL-1’は、一方では、バイト訂正値生成器37に供給され、他方では、それらのメモリセル値はそれぞれ、XOR回路380~38L-1の第1の入力側に供給され、この場合、各メモリセル値には1つのXOR回路が対応付けられている。
読み出されたメモリセル値W[Pr]’は、逆検査ビット変換回路36の入力側および誤り検出回路40の入力側に関連付けられている。
誤り検出回路350~35L-1は、誤り信号E~EL-1を提供し、誤り検出回路40は、誤り信号EPrを提供する。これら全ての誤り信号は、バイト訂正値生成器37に印加される。
逆検査ビット変換回路36の出力側は、場合によっては誤りのある検査ビットPr’をバイト訂正値生成器37に提供する。
誤り信号EPrが誤りを示す場合には、バイト訂正値生成器37は、誤りが示されたこと、また誤りの訂正が行われないことを決定することができる。
バイト訂正値生成器37は、誤り信号EPrが誤りを示す場合には、誤り符号Cに応じて、場合によっては誤りのあるメモリセル値W’,W’,...,WL-1’を訂正するためのバイト訂正値
Figure 2024029084000066
を決定し、自身のL個の出力側に提供するように構成されている。L個の出力側はそれぞれ、XOR回路380~38L-1のうちの1つの第2の入力側に接続されている。
XOR回路380,381,...,38L-1は、自身の出力側に訂正されたメモリセル値
Figure 2024029084000067
を提供する。誤りを誤り符号Cによって訂正できる場合、以下の関係が得られる。
Figure 2024029084000068
XOR回路380~38L-1の出力側は、逆変換回路39の対応する入力側に接続されている。この逆変換回路39は、自身の出力側において、訂正されたバイト
Figure 2024029084000069
を提供する。誤りを誤り符号Cによって訂正できる場合、以下の関係が得られる。
Figure 2024029084000070
図4:誤り信号の形成
以下では、個々の誤り信号E~EL-1から、どのように組合せ誤り信号Eが決定されるかを説明する。
図4は、図1に示したメモリ11および誤り検出回路130~13L-1を備えた例示的な回路装置を示す。既に図1に示したコンポーネントの他に、図4には、誤り検出回路41が示されており、そのL個の入力側には、誤り検出回路130~13L-1の誤り信号E,E,...,EL-1が印加される。誤り検出回路41は、自身の出力側に組合せ誤り信号Eを提供する。
誤り検出回路41は、以下のように構成されている。
-組合せ誤り信号Eが第1の値を取り、それによって、自身の入力側に印加される全ての誤り信号E~EL-1が第1の値を取る場合には、誤りが誤り検出回路130~13L-1によって検出されなかったことを示す、または
-組合せ誤り信号Eが第2の値を取り、それによって、自身の入力側に印加される誤り信号E~EL-1のうちの少なくとも1つが第2の値を取る場合には、少なくとも1つの誤りが誤り検出回路130~13L-1によって検出されたことを示す。
誤り信号E~EL-1に対して、第1の値としてバイナリ値0が使用され、第2の値としてバイナリ値1が使用される場合には、誤り検出回路41は、L個の入力側および1つの出力側を備えているOR回路(論理和回路とも記す)として実現することができる。この例においては、組合せ誤り信号Eの第1の値として、バイナリ値0がもたらされ、またその第2の値として、バイナリ値1がもたらされる。
誤り検出回路41は、自身の出力側に、2つより多くの異なる値を取ることができる組合せ誤り信号Eを出力することもできる。例えば、誤り検出回路41は以下のように構成されていてもよい。
-誤り信号E~EL-1の第2の値の個数を決定し、誤り信号Eとして出力する、または
-誤り信号E~EL-1のうちの所定数Sw個(ただし、所定数Swは1以上であってよい)より多い誤り信号が第2の値を取り、したがって、読み出されたメモリセル値W’~WL-1’の、誤り検出回路41によってそれぞれ検査されたバイトにおける誤りを示す場合には、バイナリ値1を出力する。
特に誤り検出回路41として、自身の入力側に印加される誤り信号に依存して組合せ誤り信号Eを提供するものであれば、いずれの回路も使用することができる。とりわけ、誤り検出回路41の入力側における誤り信号は、メモリセル値のバイト(すなわち、グループ)における誤りの誤り信号として決定されている。既に説明したように、ここでは各バイトが少なくとも2つのビットを含んでいる。
図5aおよび図5b:変換回路
図5aは、図2aに示した変換回路22の例示的な実現形態を示す。既に説明したように、変換回路22は、符号語のデータビットのバイト
Figure 2024029084000071
を、メモリセル値のバイト
Figure 2024029084000072
に変換する。
この例では、バイトX~XL-1がそれぞれ同じ個数のμ個のデータビットを有する。また例示的に、バイトW~WL-1は、それぞれ同じ個数のv個のメモリセル値を有する。メモリセル値は例示的にバイナリである。
さらに、例示的に、ブロック誤り符号CF~CFL-1に対して、同じブロック誤り符号CFが使用され、その結果、バイトX~XL-1それぞれを、その都度、機能的に同じ変換によって、メモリセル値のバイトに変換することができる。この意味において、図5aは、機能的に同じ変換回路510~51L-1を示している。つまり、バイトX~XL-1それぞれに関して、印加されたμ個のビットが、それぞれv個のメモリセル値(ここでは例示的にバイナリのメモリセル値)を有するそれぞれ1つのバイトW~WL-1に変換される。
図5bは、図2bに示した逆変換回路25の例示的な実現形態を示す。既に説明したように、逆変換回路25は、メモリセル値の読み出されたバイト
Figure 2024029084000073
を、符号語の読み出されたバイト
Figure 2024029084000074
に変換する。
メモリセル値の読み出されたバイトW’も、符号語の読み出されたバイトX’も、誤りを有する可能性がある。それらの誤りは、例えば、符号語が存在しないことによって検出される。
逆変換回路25は、機能的に同じ逆変換回路520~52L-1を有している。読み出された(場合によっては誤りのある)バイトW’~WL-1’それぞれに関して、印加されたv個のビットが、場合によっては誤りのある符号語のそれぞれμ個のビットを有する、読み出されたバイトのそれぞれ1つのバイトX’~XL-1’に変換される。
例:3-out-of-6符号:
例として、それぞれμ=4個のビットを有する符号語のバイトX~XL-1およびそれぞれv=6(バイナリ)個のメモリセル値を有するバイトW~WL-1を考察する。ブロック誤り符号CFとして、16個の6ビット語の部分集合が使用され、この場合、それらの語はそれぞれ、1と0とを3つずつ有する。
3-out-of-6符号では、値1および値0が3回ずつ現れる、それぞれ6個のビットを有する、
Figure 2024029084000075
個の語が存在する。これら20個の語の集合は、3-out-of-6符号とも表される。
この例において使用されるブロック誤り符号CFは、それら20個の考えられる符号語のうちの16個だけを有する部分集合である。
下記の表1は、バイトX~XL-1の4個のビットの16個の考えられる割り当ての、6個のビット・メモリセル・バイトW~WL-1の全部で20個の考えられる符号語のうちの16個への例示的な変換Tを示し、この変換によって、ブロック誤り符号CFの16個の符号語が得られる。4個のデータビットの16個の割り当てはそれぞれ、ブロック誤り符号CFの16個の符号語のうちの1つに可逆的かつ一義的に対応付けられている。ブロック誤り符号CFの符号語は、3-out-of-6符号の符号語であり、メモリセル値のバイトを形成する。
Figure 2024029084000076
表1によって表される変換Tは、以下の特性を有している。つまり、バイトX~XL-1のうちの1つのビットx~xが、メモリセル値のバイトW~WL-1のうちの1つのメモリセル値w~wに変換されると、反転されたビット
Figure 2024029084000077
も反転されたメモリセル値
Figure 2024029084000078
に変換される。
この例においては、メモリから読み出されたバイトW’~WL-1’それぞれが、場合によっては誤りのある6個のビット
Figure 2024029084000079
を有しており、また場合によっては誤りのある変換されたバイトX’~XL-1’それぞれが、場合によっては誤りのある4個のビット
Figure 2024029084000080
を有することを言及しておく。
下記の表2は、(バイナリの)メモリセル値
Figure 2024029084000081
の読み出されたバイト毎の、場合によっては誤りのあるビット
Figure 2024029084000082
のバイトへの考えられる逆変換T-1を表す。ここで、表2は、ビット
Figure 2024029084000083
の全部で64個の考えられる割り当てのうちの16個を抜粋したものに過ぎないことを言及しておく。ビット
Figure 2024029084000084
の表2に示した全ての割り当ては符号語である。ビット
Figure 2024029084000085
の残りの64-16=48個の割り当て(図示せず)は符号語ではない。それら48個の割り当てに関して、ビット
Figure 2024029084000086
はそれぞれ0である。
Figure 2024029084000087
メモリセル値
Figure 2024029084000088
の表2には記載していない値に関しては、ビット
Figure 2024029084000089
の所属の値を、逆変換回路T-1の合成のために任意に設定することができる。例えば、それらの値を不定値(「冗長(don’t-care)」値とも称される)として、合成ツールによる最適化の際に規定することも可能である。例えば、それらの値を0にセットすることも可能である。
図6:ブロック誤り符号のための誤り検出回路
図6は、上記の例に従い、場合によっては誤りのある6個のメモリセル値
Figure 2024029084000090
のバイトW’のための、例示的な誤り検出回路61を示す。ここでは、ブロック誤り符号CFが、16個の符号語を有する3-out-of-6符号である。
誤り検出回路61の入力側には、メモリセル値W’が印加される。誤り検出回路61は、例示的に、自身の入力側にブロック誤り符号CFの符号語が印加された場合には、誤りは存在しないことを示す誤り信号E=0を出力するように構成されている。誤り検出回路61の入力側に、ブロック誤り符号CFの符号語が印加されない場合には、誤り検出回路61は、誤り信号E=1を出力し、この誤り信号Eに基づき、誤りの存在が示される。
表3は、誤り信号Eが0である(ブール関数のオフセット)場合のメモリセル値
Figure 2024029084000091
の16個の割り当てを示す。表3には記載していない、メモリセル値の他の全ての割り当てに関しては、誤り信号Eは1である。つまりこのことは、ブール関数のオンセットに相当する(このオンセットは、表3には示していない)。
Figure 2024029084000092
表3に従い、誤り検出回路61は、
-ブロック誤り符号CFの16個の符号語のうちの1つが、符号語ではない6ビット語に改ざんされた場合、または
-ブロック誤り符号CFの16個の符号語のうちの1つが、それぞれがブロック誤り符号の符号語ではない、4個の3-out-of-6語のうちの1つに改ざんされた場合には、
誤りを示す。
図7:1ビット誤りのための誤り検出回路
図7は、バイトW’のビットにおける奇数の全てのビット誤りを検出する例示的な誤り検出回路71を示す。誤り検出回路71は、このために反転XOR回路を含んでいるので、誤り検出回路71の出力側に印加される誤り信号
Figure 2024029084000093
に対しては、以下の関係が成り立つ。
Figure 2024029084000094
ここで「+」はモジュロ2加算を表す。
表3に示した、メモリセル値
Figure 2024029084000095
の割り当てに関して、またそれらのメモリセル値における奇数個のビット誤りに関して、誤り信号Eおよび誤り信号
Figure 2024029084000096
は一致する。これに対して、3-out-of-6符号の符号語をその3-out-of-6符号の符号語ではないビット組合せに改ざんする偶数個のビット誤りに関しては、以下の関係が成り立つ。
Figure 2024029084000097
誤り検出回路71は、有利には、(ほぼ)1ビット誤りしか生じない場合に適用することができる。
図8:訂正が可能であるか否かの検査
図8は、誤り訂正を検査するための例示的な回路装置を示す。特に、この回路装置でもって、訂正値
Figure 2024029084000098
を決定するためのバイト訂正値生成器26が正しく機能するか否かを検査することができる。
このために、図8に示した回路装置は、複数L個のNOR回路(否定論理和回路とも記す)810~81L-1と、複数のAND回路820~82L-1と、1つのOR回路83と、を有している。
以下では、AND結合が、記号「∧」によっても略記される。相応に、OR結合が記号「∨」によって略記される。
各バイト訂正値
Figure 2024029084000099
は、所属のNOR回路810~81L-1の入力側に供給される。このNOR回路810~81L-1の出力側は、所属のAND回路820~82L-1の第1の入力側に接続されている。誤り信号E~EL-1は、それぞれ1つずつ、AND回路820~82L-1の第2の入力側に印加される。AND回路820~82L-1の出力側は、OR回路83の入力側に接続されている。OR回路83の出力側には、組合せ誤り信号Eが供給される。
誤り信号E,E,...,EL-1は、図2bに示した誤り検出回路240~24L-1の誤り信号である。
例えば、値E=1を有する誤り信号Eが、バイトX’のデータビットはブロック誤り符号CFの符号語ではないことを示す場合には、誤り訂正を成功させるためには、バイトX’がバイト訂正値
Figure 2024029084000100
でもって訂正されなければならない。訂正は、訂正値生成器26がバイト訂正値
Figure 2024029084000101
を提供し、それによってXOR回路270が訂正されたバイト値
Figure 2024029084000102
を提供する場合にのみ成功すると考えられる。発生した誤りを誤り符号Cによって訂正できる場合には、以下の関係が成り立つ。
Figure 2024029084000103
誤り信号に関してE=1が成り立ち、かつバイト訂正値に関して
Figure 2024029084000104
が成り立つ場合には、X’における誤りが誤り検出回路240によって検出され、またバイト訂正値生成器26がX’に対して、訂正信号
Figure 2024029084000105
を生成する。この場合、AND回路820は、自身の出力側に値0を供給する。
誤り信号に関してE=1が成り立ち、かつバイト訂正値に関して
Figure 2024029084000106
が成り立つ場合には、X’における誤りが誤り検出回路240によって検出され、またバイト訂正値生成器26がX’に対して、訂正信号
Figure 2024029084000107
を生成するので、バイトX’は、誤りがあるにもかかわらず、訂正されない。この場合、誤りは確かに検出されるが、しかしながら訂正は実現されない。AND回路820は、自身の出力側に値1を供給する。組合せ誤り信号Eは、値E=1を取る。これによって、値1を有する組合せ誤り信号は、訂正に誤りが存在すること、もしくはバイトX’~XL-1’のうちの少なくとも1つの訂正が不可能であることを示す。考えられる1つの原因として、バイト訂正値生成器26に誤りがある、かつ/または誤り符号Cを使用して訂正できない誤りが存在することが挙げられる。
誤りが誤り検出回路240によって検出されず、かつ誤り信号がE=0である場合には、AND回路820の出力側にも、値0が印加される。
上記の説明は、回路811~81L-1、821~82L-1および83に関する別の誤り信号E~EL-1ないし別のバイト訂正値
Figure 2024029084000108
についても相応に当てはまる。
したがって、OR回路83が、自身のL個全ての入力側に値0が印加される場合にのみ、自身の出力側に組合せ誤り信号Eに対して値0を出力する。OR回路83が自身の出力側に値1を供給する場合、このことは、誤り検出回路240~24L-1のうちの1つによって、バイトX’~XL-1’のうちの少なくとも1つに誤りがあることが検出されたこと、またそのバイトをバイト訂正値生成器26によって訂正できないことを意味している。これによって、例えば、バイト訂正値生成器26の機能を実行中の動作において検査することができる。
この説明は、バイト訂正値生成器37についても同様に適用することができる。
リード・ソロモン符号
以下では、例としてリード・ソロモン符号を使用する。
1バイト誤り訂正リード・ソロモン符号を、例えば[1]に記載されているように、H行列
Figure 2024029084000109
ただし、n=2-1、によって表すことができ、この場合
Figure 2024029084000110
かつ
Figure 2024029084000111
が成り立つ。この場合、αは、例えばべき表現でのガロア体GF(2)の元である。αは、ガロア体の生成元であり、またここでは、ガロア体GF(2)の原始元として選択されている。式(5)においては、ガロア体の1元がαで表されている。ガロア体の1元を、1で表すこともできる。
式(5)に従ったH行列によって表されるリード・ソロモン符号は、バイト位置が既知でない1バイト誤り、または2つの既知の誤りのあるバイト位置における2バイト誤りもしくは2つのグループ誤りを訂正することができる。
αの累乗は、モジュロ2-1と解することができ、また累乗iは、値0,1,...,2-2を取ることができる。
1つの実施例において、r=4とし、それによって、ガロア体は2=16個の元から成る。αの累乗は、モジュロ15と解することができ、また式(5)に従うH行列は、2-1=15個の列を有する。1つの列はそれぞれ4ビット・バイトに相当する。誤り符号Cの符号語x=x,...,x(ただし、k=60)のデータビットは、それぞれ4個のビットを有する15個のバイトX,X,...,X14を形成する。したがって、以下の関係が成り立つ。
Figure 2024029084000112
誤りがない場合には、x=X,...,X14は、リード・ソロモン符号の符号語であるので、誤りシンドロームs(ただし、s=[s,s)に対して
Figure 2024029084000113
が成り立ち、ここでsは、誤りシンドロームsの第1の部分シンドロームとして表され、またsは、誤りシンドロームsの第2の部分シンドロームとして表される。
あるベクトルが右から行列と乗算される場合には、これは列ベクトルと解することができる。あるベクトルに関して、特にそれが列ベクトルであることが強調される場合には、このベクトルを転置ベクトルと称することができる。あるベクトルが左から行列と乗算される場合には、これは行ベクトルと解することができる。
バイトX~X14を、ガロア体GF(2)の元として、そのベクトル表現で4ビット・ベクトルと表すことができる。式(6)および式(7)に従い部分シンドロームsおよびsを計算するために、それらのバイトを多項式表現またはべき表現で使用することができる。
ガロア体GF(2)の元の種々の表現、およびガロア体上の乗算ならびに加算のためのそれらの元の使用は、例えば[2]に記載されている。
例えば、符号語xが、次式に従い誤りe≠0でもって改ざんされている可能性がある。
Figure 2024029084000114
したがって、H×x=0かつH×x=0に基づき、式(6)および式(7)から次式が得られる。
Figure 2024029084000115
ここで、4ビット・バイトe,...,e14は、バイト位置0~14のバイト訂正値を表す。
バイト位置iにおいて、あるバイトの1個のビット、2個のビット、3個のビットまたは4個のビットに誤りがある1バイト誤りに関しては、次式が成り立つ。
Figure 2024029084000116
相応のことが、バイト位置iおよびjにおける2バイト誤りに対しても当てはまる。
Figure 2024029084000117
1バイト誤りの場合には、誤りのあるバイト位置iおよびバイト訂正値eを、式(10)および(11)に応じて、2つの部分シンドロームから決定することができる。
バイト訂正値eは、第1のシンドローム成分sと同じであり、またべき表現αの誤りのあるバイト位置iを、例えば、式
Figure 2024029084000118
の解yとして決定することができる。2つの式(10)および(11)からは、2つの未知数αおよびeを決定することができる。
2バイト誤りの場合には、2つのバイト訂正値eおよびeと、2つの誤りのあるバイト位置iおよびjとを、例えばべき表現αおよびαで2つの式(12)および(13)から決定することは不可能である。何故ならば、2つだけの式に対して4つの未知数が存在するからである。
しかしながら、誤りのあるバイト位置iおよびjが既知であり、したがってべき表現αおよびαが既知である場合には、対応するバイト訂正値eおよびeを2つの式(12)および(13)を使用して決定することができる。誤りのあるバイト位置が既知であり、さらには対応するバイト訂正値を決定できる場合、これはグループ誤りに相当する。
例えば、図1に示した誤り検出回路140~14L-1のブロック誤り信号によって、誤りのあるバイト位置を検出することができる。誤りのある例えば2つのバイト位置iおよびjの既知の誤りのあるバイト位置でもって、バイト訂正値eおよびeを既に2つの式(12)および(13)によって決定することができる。この例において、誤りシンドロームsおよびsは、それぞれ4個のビットしか有しておらず、したがって2個のバイト、全部で8個のビットが存在する。
バイト位置iおよびjにおける2バイト誤りに対して、またはバイト位置iおよびjにおける2つのグループ誤りに対して、バイト訂正値eおよびeについては次式が成り立つ。
Figure 2024029084000119
式(14)を以下のように導き出すことができる。
Figure 2024029084000120
これと同様にして式(15)が得られる。
バイト位置iにおける1バイト誤りに対して、バイト訂正値e
Figure 2024029084000121
によって決定することができる。これは、s=eかつs=α×eから直接的に従う。
和Σ、ただし
Figure 2024029084000122
は、バイト位置iにおける1バイト誤りに対しては
Figure 2024029084000123
であり、またバイト位置iおよびjにおける2バイト誤りに対しては
Figure 2024029084000124
である。
和Σの逆数Σ-1を使用して、バイト位置iにおけるバイト訂正値eに対しては、バイト位置iにおける1バイト誤りについても、バイト位置iおよびjにおける2バイト誤りについても
Figure 2024029084000125
が成り立つので、バイト位置iにおけるバイト誤りの場合には、そのバイト位置iにおける1バイト誤りまたはそのバイト位置iおよび他のバイト位置における2バイト誤りに基づいて、バイト訂正値eは式(17)に従い、部分シンドロームsならびにs、Σ-1の値および誤り位置iによって、べき表現αで決定されている。
3つのグループ誤り
誤りのある3つのバイト位置が既知である3つのバイト誤りを訂正するためのリード・ソロモン符号に対しては、H行列
Figure 2024029084000126
ただしn=2-1、が利用され、これは例えば、[Fujiwara,E.:「Code Design for Dependable Systems」,Wiley,2006,65頁]にリード・ソロモン符号のH行列に関する一般的な形態も含めて説明されている。
H行列における列が式(18)に従い削除される場合には、これを短縮された符号と称することができる。使用される符号の長さを必要な語幅に適合させるために、そのように短縮された符号を使用することができる。
[1]においては1で表されている、ガロア体の1元は、式(18)においてαで表されている。
誤りのあるバイト位置が既知であるバイト誤りを、既に説明したように、グループ誤りと称することができる。
3つのグループ誤り、すなわち誤りのあるバイト位置i,jおよびkにおけるバイト誤りの場合には、バイト訂正値e,eおよびeでもって、次式が成り立つ。
Figure 2024029084000127
、eおよびeについて式(19)~(21)を解くことによって、次式が得られる。
Figure 2024029084000128
式(24)を、以下のように導き出すことができる。
式(19)からeについて次式が得られる。
Figure 2024029084000129
式(25)が、式(20)において使用されると、それにより次式が得られる。
Figure 2024029084000130
相応に、式(25)が、式(21)において使用されると、それにより次式が得られる。
Figure 2024029084000131
ここで、式(27)を式(26)で除算することができ、それによって
Figure 2024029084000132
でもって、次式が得られる。
Figure 2024029084000133
Figure 2024029084000134
でもって、eについて乗算し、まとめ、解くと次式が得られる。
Figure 2024029084000135
このことは式(24)にも当てはまる。他の2つの式(22)および(23)を相応に導き出すことができる。
和Σ、ただし
Figure 2024029084000136
は、バイト位置i,j,kにおける3バイト誤りに関して
Figure 2024029084000137
となる。
3つのバイト位置i,jおよびkにおけるバイト誤りの場合には、誤りのあるバイト位置の積Πも、べき表現で使用することができる。
Figure 2024029084000138
以下では、べき表現α,α,αを有する3つのバイト位置i,j,kに誤りがある場合を考察する。
和Σおよびべき表現αの誤りのあるバイト位置kから、誤りのある2つの別のバイト位置iおよびjに関する和α+α
Figure 2024029084000139
に従い決定することができる。
和Σおよびべき表現αの誤りのあるバイト位置jから、誤りのある2つの別のバイト位置iおよびkに関する和α+α
Figure 2024029084000140
に従い決定することができる。
和Σおよびべき表現αの誤りのあるバイト位置iから、誤りのある2つの別のバイト位置jおよびkに関する和α+α
Figure 2024029084000141
に従い決定することができる。
積Πおよびべき表現αの誤りのあるバイト位置kから、誤りのある2つの別のバイト位置iおよびjに関する積α×α
Figure 2024029084000142
に従い決定することができる。
積Πおよびべき表現αの誤りのあるバイト位置jから、誤りのある2つの別のバイト位置iおよびkに関する積α×α
Figure 2024029084000143
に従い決定することができる。
積Πおよびべき表現αの誤りのあるバイト位置iから、誤りのある2つの別のバイト位置jおよびkに関する積α×α
Figure 2024029084000144
に従い決定することができる。
例示的に、式(24)
Figure 2024029084000145
に従った、誤りのあるバイト位置kにおけるバイト訂正値eの表現を考察する。式(24)の分母に関しては、次式が成り立ち、
Figure 2024029084000146
したがって、バイト訂正値eに対しては、次式が成り立つ。
Figure 2024029084000147
したがって、式(36)に従い、k番目のバイトに対するバイト訂正値eをシンドローム成分s,s,s、ΣならびにΠの値によって、および決定すべきバイト誤り位置kによって決定することができる。誤りのあるバイト位置iおよびjは、k番目のバイトに対するバイト訂正値eの決定には必要ない。
したがって、例えば中央で決定されて提供される、シンドローム成分s,s,sの値、および値ΣならびにΠを用いて、局所的に、考えられる各バイト誤り位置kに対して相応のバイト訂正値を決定し、相応のバイト誤り位置信号の値に基づいて、そのように決定されたバイト訂正値eが実際に誤り訂正使用されるべきか否かを決定することができる。バイト(例えばビットのグループ)のバイト誤り位置信号は、その場合、このバイトに関してグループ誤りが存在するか(または存在しないか)を示す。
3つのグループ誤りにおける1つのグループ誤りの訂正
図9aは、誤りのあるk番目のバイトを訂正するためのバイト訂正値eを決定するための例示的な回路装置を示す。この回路装置でもって、グループ誤りが全部で3つ存在する場合に、1つのグループ誤りが訂正される。
例示的に、i番目、j番目およびk番目のバイトに誤りがある。したがって、誤り信号E=E=E=1は、3つのグループ誤りが存在することを示す。この例では、その他の誤り信号は0である。つまり別のグループ誤りは存在しない。例として、ガロア体GF(2)を考察する。
図9aに示した装置は、
-それぞれが第1の4ビット幅の入力側、第2の4ビット幅の入力側および4ビット幅の出力側を1つずつ備えた、4つの定数乗算器91、94、97および99、
-それぞれが第1の4ビット幅の入力側、第2の4ビット幅の入力側および4ビット幅の出力側を1つずつ備えた、3つのXOR回路92、95、98、
-4ビット幅の入力側および4ビット幅の出力側を1つずつ備えた、ガロア体GF(2)上の反転器96、
-第1の4ビット幅の入力側、第2の4ビット幅の入力側および4ビット幅の出力側を1つずつ備えた、ガロア体乗算器93、および
-値s、Π、Π×s、Σ、Σ×sが印加される、それぞれ4ビット幅の5つの入力側910、911、912、913、914、
を含んでいる。
入力側912は、定数乗算器91の第1の入力側に接続されており、この定数乗算器91の第2の入力側には値α-kが印加され、また定数乗算器91の出力側は、XOR回路92の第1の入力側に案内されている。
入力側910は、定数乗算器94の第1の入力側に接続されており、この定数乗算器94の第2の入力側には値αが印加され、また定数乗算器94の出力側は、XOR回路95の第1の入力側に接続されている。
入力側914は、XOR回路95の第2の入力側に接続されており、このXOR回路95の出力側は、XOR回路92の第2の入力側に接続されている。XOR回路92の出力側は、ガロア体乗算器93の第1の入力側に接続されている。
入力側913は、定数乗算器97の第1の入力側に接続されており、この定数乗算器97の第2の入力側には値αが印加され、また定数乗算器97の出力側は、XOR回路98の第1の入力側に接続されている。
入力側911は、定数乗算器99の第1の入力側に接続されており、この定数乗算器99の第2の入力側には値α-kが印加され、また定数乗算器99の出力側は、XOR回路98の第2の入力側に接続されている。XOR回路98の出力側は、反転器96の入力側に接続されている。
反転器96の出力側は、ガロア体乗算器93の第2の入力側に接続されており、ガロア体乗算器93の出力側は、バイト訂正値eを供給する。
回路入力側910、911、912、913および914に印加される値s、Π、Π×s、Σ、Σ×sを、種々のバイト訂正値e,e,...,e,...を形成するために使用することができる。したがって、これらの値を1回だけ決定することは効率的であると考えられる。
図9bには、i番目、j番目およびk番目のバイトにおけるバイト誤りが誤り信号E=E=E=1によって示される場合の、積
Figure 2024029084000148
を形成するための例示的な回路装置が示されている。すなわち、例示的に、上記における図9aについての例と同じ誤りが存在している。
図9bに示した装置は、
-誤り信号E~Eを入力するための8ビット幅の入力側および4ビット幅の信号ESu0,7を出力するための4ビット幅の出力側を備えた部分回路915、
-誤り信号E,E,...,E14を入力するための7ビット幅の入力側および4ビット幅の信号ESu8,14を出力するための4ビット幅の出力側を備えた部分回路916、
-第1の4ビット幅の入力側、第2の4ビット幅の入力側、および値
Figure 2024029084000149
を提供する4ビット幅の出力側を備えた加算器917、
-4ビット幅の入力側および値Π=α×α×αを出力するための4ビット幅の出力側を備えた組合せ回路918、
を含んでいる。
部分回路915の出力側は、加算器917の第1の入力側に接続されている。部分回路916の出力側は、加算器917の第2の入力側に接続されている。加算器917の出力側は、組合せ回路918の入力側に接続されている。
加算器917は、モジュロ15加算を実施する。例えば、この加算器917を、4ビット加算器として、4番目の加算ステージの桁上げキャリービットを、第1の加算ステージの入力キャリービットとなるように実装することができる。加算器917は、いわゆる循環桁上げ加算器として形成することができる。
第1の部分回路915は、誤り信号E~Eが入力されると、信号
Figure 2024029084000150
を自身の出力側に提供するように構成されている。
式(37)によって、バイナリの各8個組E,E,...,Eには、4ビット値ないし4個組ESu0,7が対応付けられ、この対応付けをテーブルとして表すことができ、また組合せ回路として、例えば統合ツールを用いて作成することができる。
第2の部分回路916は、誤り信号E~E14が入力されると、自身の出力側に
Figure 2024029084000151
を出力するように構成されている。
式(38)によって、バイナリの各7個組E,E,...,E14には、4ビット値ないし4個組ESu8,14が対応付けられ、この対応付けをテーブルとして表すことができ、また組合せ回路として、例えば統合ツールを用いて行うことができる。
加算器917は、自身の出力側に、値
Figure 2024029084000152
を提供する。誤り信号に関してE=E=E=1かつE=0(ただし、l≠i,j,k)が成り立つ場合には、加算器917の出力側には、値
Figure 2024029084000153
が印加され、この値は
Figure 2024029084000154
の累乗に相当する。
組合せ回路918は、自身の入力側に印加された値[ESu0,7+ESu8,14]mod15に、べき表現の元
Figure 2024029084000155
を対応付けることによって、自身の出力側に値
Figure 2024029084000156
を提供するように構成されている。
図10:1つのグループ誤りまたは2つのグループ誤りの訂正
図10は、誤りのある1つのバイト位置または誤りのある2つのバイト位置が既知であり、したがって1つのグループ誤りまたは2つのグループ誤りが生じているという前提のもとで、任意の、場合によっては誤りのあるl番目のバイトに対するバイト訂正値を決定する例示的な回路装置を示す。誤りのある少なくとも1つのバイト位置は、ここでは、誤り信号の値によって既知である。
訂正すべき各バイトに対して、バイト訂正値は2つの値
Figure 2024029084000157
を使用して求められ、それらの値はそれぞれ(例えば中央で)一度だけ決定されればよく、また全てのバイトの訂正に使用することができる。これらの値の形成は、ガロア体乗算器の形態の比較的高いハードウェアコストを必要とする。有利には、異なるバイト位置における全てのバイト訂正のために、全部で2つのガロア体乗算器だけを使用すればよい。
異なるバイト位置に関する異なるバイト訂正値は、単に、各バイト位置に対応する定数乗算器を使用することで得られ、この定数乗算器は、ガロア体乗算器よりも低いハードウェアコストで実現することができる(l番目のバイトに対して、定数乗算器102に基づいてαとの乗算が実施される)。
また1つの利点として、同じ回路を、バイト誤り位置が既知である1バイト誤りに対しても、バイト誤り位置が既知である2バイト誤りに対しても利用できることが挙げられる。したがって、1つまたは2つのグループ誤りが訂正される。既に説明したように、1つのグループ誤りは、バイト位置が既知であり、また訂正値(すなわち、誤りのあるバイト位置におけるビットの訂正の訂正値)が決定されるべきバイト誤りである。
図10とは異なり、図9aによる3つのグループ誤りの訂正は、訂正すべきバイト位置毎に1つのガロア体乗算器93を必要とする。
図10は、場合によっては誤りのあるl番目のデータバイトX’を訂正するバイト訂正値eを決定するための式(17)を基礎とする例示的な実現形態を示す。この例では、1つのデータバイトが4つのビットを含んでおり、またガロア体はGF(2)である。図10には、定数乗算器102、XOR回路103およびAND回路104を備えたバイト訂正値生成器101が含まれている。さらに図10には、XOR回路105が示されている。
入力線106には、4ビット幅の信号s+s×Σ-1が印加される。入力線106は、XOR回路103の第1の4ビット幅の入力側に接続されている。
入力線107には、4ビット幅の信号s×Σ-1が印加される。入力線107は、定数乗算器102の第1の入力側に接続されている。定数乗算器102の第2の入力側には、定数αが印加される。
したがって、定数乗算器102の4ビット幅の出力側には、値
Figure 2024029084000158
が提供される。定数乗算器102の出力側は、XOR回路103の第2の入力側に接続されている。XOR回路103の4ビット幅の出力側には、信号
Figure 2024029084000159
が提供される。
XOR回路103の出力側は、AND回路104の第1の4ビット幅の入力側に接続されている。AND回路104の第2の入力側には、誤り信号Eが印加される。AND回路104の4ビット幅の出力側には、場合によっては誤りのあるl番目のバイトX’を訂正するためのバイト訂正値eが提供され、ここでは、次式が成り立つ。
Figure 2024029084000160
AND回路104の出力側は、XOR回路105の第1の4ビット幅の入力側に接続されている。XOR回路105の第2の4ビット幅の入力側には、訂正すべきバイトX’が印加される。XOR回路105の4ビット幅の出力側には、訂正されたl番目のバイト
Figure 2024029084000161
が出力される。
誤り信号Eが0である場合には、l番目のバイトの訂正は行われない。
XOR回路は、自身の入力側にそれぞれ印加された4ビット幅の入力信号の成分毎のXOR和を形成する。
AND回路104は、自身の第1の入力側に印加された4つのバイナリ値と誤り信号Eとの成分毎のAND結合を実現する。誤り信号Eが0である場合には、AND回路104は自身の4ビット幅の出力側にその都度値0を出力する。誤り信号Eが1である場合には、AND回路104は、自身の第1の入力側に印加された値を、自身の4ビット幅の出力側に出力する。
バイト訂正値生成器101は、信号s×Σ-1と定数αとのガロア体乗算を実現する。そのようなガロア体乗算は、XORゲートを使用した線形回路を用いて実現することができ、これを下記においてさらに詳細に説明する。
したがって、バイト訂正値生成器101は、l番目のバイトに対するバイト訂正の機能を提供する。バイト訂正値生成器は、誤り信号E=1がl番目のバイトに対して、すなわちl番目のバイト位置に対して誤りを示す場合には、バイト訂正値eを自身の出力側に提供する。誤り信号Eが0である場合には、バイト訂正値eは0である。
入力すべき信号s+s×Σ-1およびs×Σ-1は、一度だけ決定されればよく、また複数のバイト訂正値生成器に対して、したがって場合によっては訂正する必要がある種々のバイトに対して使用することができる。
また1つの利点として、誤りのある1つのバイトまたは誤りのある2つのバイトの誤りのある少なくとも1つのバイト位置が誤り信号の値に基づき既知である場合には、回路装置を、1バイト誤りを訂正するためにも、2バイト誤りを訂正するためにも使用することができる。
したがって、場合によっては誤りのある種々のバイトに対して、バイト訂正値を効率的に並列に決定することができる。
この関係において、並列とは、特に、バイト訂正値の決定および/または提供を少なくとも部分的に時間的に重畳して、特に実質的に同時に行えることを意味している。したがって、1つの有利なオプションでは、図10において例示的にl番目のバイトについて説明したように、バイト毎に、訂正のために1つの定数乗算器、2つのXOR回路および1つのAND回路だけが必要とされる。
特に、複数のバイト訂正値生成器を、訂正すべきバイトに関して並列に実装することができる。特に、バイト訂正値を、少なくとも1つのタスク中に、例えば共通のタスクのシーケンス中に、または共通のタスクの一部のシーケンス中に(すなわち、時間的に重畳して)決定することができる。少なくとも部分的かつ時間的に重畳することによって、並列な処理が実現される。ここで、並列に決定するという概念には、特に部分的に並列な処理(すなわち、例えば部分的に同時の処理)も含まれることを言及しておく。
誤りが存在しない場合には、全ての誤り信号E,...,E14は0であり、かつ全てのバイト訂正値は0であるので、誤り訂正は行われない。
図11:訂正値生成器の並列の実現
図11は、15個のバイト訂正値生成器を並列に実現するための例示的な回路装置を示す。したがって、場合によっては誤りのある15個のバイトX’X’,...,X14’を訂正することができる。各バイトは、例示的に4の語幅を有する。
15個のバイトX’,X’,...,X14’それぞれに対して、図11には、バイト訂正値e~e14を形成するためのバイト訂正値生成器BK111、BK112~BK14113が示されている。バイト訂正値e~e14は、読み出された、場合によっては誤りのあるバイトX’~X14’と、15個のXOR回路114、115、116において成分毎に結合され、訂正されたバイト
Figure 2024029084000162
となる。
ここで、それぞれ15個のバイト訂正値生成器および15個のXOR回路が設けられているが、見やすくするために、それらのうちそれぞれ3つが図示されていることを言及しておく。バイト訂正値生成器111~113を、図10に示したバイト訂正値生成器101に従い構成することができる。
図12:Σ-1の形成
図12は、Σ-1を決定するための例示的な回路装置を示し、ここでΣ-1は、例示として想定するガロア体GF(2)におけるΣの逆数である。
図12には、組合せ回路121および反転器122が含まれている。
組合せ回路121は、自身の4ビット幅の出力側に、ここでは例示として表されたバイナリの誤り信号E~E14に依存する、
Figure 2024029084000163
による値Σを供給する。ここで、α~α14は、それぞれのベクトル表現で4成分のバイナリベクトルである。
組合せ回路121の出力側は、反転器122の4ビット幅の入力側に接続されている。反転器122は、ガロア体GF(2)上の反転器である。反転器の4ビット幅の出力側には、
Figure 2024029084000164
による4ビット幅の値Σ-1が提供される。ガロア体GF(2)上の反転器122を、4つの入力側および4つの出力側を備えた組合せ回路として実現することができる。
図13:Σの形成
図13は、XOR回路を用いて誤り信号E~E14からΣを形成するための、図12に示した組合せ回路121の例示的な実現形態を示す。ここに図示した例は、やはりガロア体GF(2)に関する。
Figure 2024029084000165
の4つの成分Σ,Σ,Σ,Σは、誤り信号E~E14のXOR結合によって決定される。
図13の装置には4つの出力側が示されており、第1の出力側には信号Σが提供され、第2の出力側には信号Σが提供され、第3の出力側には信号Σが提供され、また第4の出力側には信号Σが提供される。
0≦i≦14とした場合の誤り信号Eが1である場合には、1であるαの成分は、式(40)において、Σの相応の成分に寄与する。0である成分αは、Σの相応の成分に寄与しない。
例えば、誤り信号に関して、E=1、ただしα=[1000]が成り立つ場合には、誤り信号Eは、Σの第1の成分ΣについてのXOR和に寄与する。したがって、Eが供給される入力側は第1の出力側に接続されている。誤り信号Eは、Σの第2の成分Σ、第3の成分Σおよび第4の成分ΣについてのXOR和に寄与しない。相応に、誤り信号Eが供給される線路は、それらの出力側には接続されていない。
例えば、誤り信号に関して、E=1、ただしα=[0110]が成り立つ場合には、誤り信号Eは、Σの第2の成分Σおよび第3の成分Σに関して寄与する。相応に、誤り信号Eが供給される線路は、XOR回路1325を介して、値Σをもたらす第2の出力側に接続されており、またXOR回路1335を介して、値Σをもたらす第3の出力側に接続されている。誤り信号Eは、Σの第1の成分Σおよび第4の成分ΣについてのXOR和に寄与しない。相応に、誤り信号Eが供給される線路は、それらの出力側には接続されていない。
Σに関しては、次式が成り立つ。
Figure 2024029084000166
Σについての式(42)に従った誤り信号E,E,E,E,E10,E12,E13,E14のXOR結合は、それぞれが2つの入力側および1つの出力側を備えたXOR回路1314、1317、1318、13110、13112、13113、13114によって行われる。
Σに関しては、次式が成り立つ。
Figure 2024029084000167
Σについての式(43)に従った誤り信号E,E,E,E,E,E10,E11,E12のXOR結合は、それぞれが2つの入力側および1つの出力側を備えたXOR回路1324、1325、1328、1329、13210、13211、13212によって行われる。
Σに関しては、次式が成り立つ。
Figure 2024029084000168
Σについての式(44)に従った誤り信号E,E,E,E,E10,E11,E12,E13のXOR結合は、それぞれが2つの入力側および1つの出力側を備えたXOR回路1335、1336、1338、13310、13311、13312、13313によって行われる。
Σに関しては、次式が成り立つ。
Figure 2024029084000169
Σについての式(45)に従った誤り信号E,E,E,E,E11,E12,E13,E14のXOR結合は、それぞれが2つの入力側および1つの出力側を備えたXOR回路1346、1347、1349、13411、13412、13413、13414によって行われる。
図14:バイト訂正信号の形成
以下では、誤りのあるバイト位置が既知である場合のバイト誤りの訂正(グループ誤り訂正)と、誤りのあるバイト位置が既知でない場合のバイト誤りの訂正(一般的なバイト誤りの訂正)との組合せを説明する。
誤りのあるバイト位置がグループ誤りによって既知である場合には、誤りのあるバイトに対するバイト訂正値を決定するだけで十分である。
誤りのあるバイト位置が既知でない場合には、バイト位置に誤りがあるか否かを検査することができ、またバイト位置に誤りがある場合には、バイト訂正値も決定することができる。
例示的に、2つのグループ誤りまたは1つのバイト誤りを訂正することができるリード・ソロモン符号が使用される。グループ誤りが検出されなかった場合には、バイト誤りが訂正される。
ここで使用する例においては、組合せ誤り信号Eが誤り信号E~E14から形成される。組合せ誤り信号Eは、何らかの誤り信号がバイトのうちの1つに対してグループ誤りを示すか否かを示す。グループ誤りが示される場合には、1つのグループ誤りまたは2つのグループ誤りが訂正される。
誤り信号E~E14のうちの1つによってグループ誤りが決定されなかったことが、組合せ誤り信号Eによって示される場合には、バイト誤り位置が決定されないまま誤り訂正が行われる。つまり、誤りが存在しない場合には、訂正は行われない。
1つの例によれば、ブロック誤り符号CF~CF14と組み合わされた誤り符号Cによって、以下の誤りを訂正することができる。
-ブロック誤り符号によって検出された1つまたは2つのグループ誤りを以下のように訂正することができる。
図1による誤り検出回路130~13L-1(ただし、L=14)の誤り信号E~E14が、1つのバイトの位置、または(それぞれが)1つのグループ誤りを有する2つのバイトの位置を決定する。
グループ誤りが決定されたバイト位置に対して、バイト訂正値(すなわち、誤りがあると識別された、該当するバイトに対する訂正値)の誤り符号Cを使用して決定される。特に、そのような誤りが、グループ誤りの事前に決定された位置において訂正される場合には有利である。
-誤り検出回路130~13L-1のうちの1つによってグループ誤りとして検出されなかった単一のバイト誤りも、誤り符号Cを使用して訂正することができる。
この場合には、誤り符号Cを用いて、誤りのあるバイトのバイト位置も、対応するバイト訂正値も決定され、また誤りが訂正される。
この場合には、誤り符号Cを用いて、誤りのあるバイトのバイト位置も、誤りのあるバイトに対するバイト訂正値も決定されなければならない。これによって、誤りのある1つのバイトまたは誤りのある2つのバイトの位置がグループ誤りとして決定された既述の場合とは異なり、単一のバイト誤りもこの誤り符号Cを用いて訂正することができる。
この際、誤り検出回路FE~FE14の誤り信号E~E14は誤りを示さない。考えられる1つの原因として、ブロック誤り符号の符号語がこのブロック誤り符号の別の符号語に改ざんされたことが挙げられる。例えば、ブロック誤り符号が3-out-of-6符号である場合には、決定された符号語がこの3-out-of-6符号の別の符号語に変化すると、誤り検出回路は誤りを確認することができない。
ここで詳細に説明する例においては、組合せ誤り信号が誤り信号E~E14のOR結合から形成され、誤り信号はそれぞれ、誤りがある場合には値1を取り、誤りが検出されなかった場合には値0を取る。
したがって、組合せ誤り信号
Figure 2024029084000170
は、誤り信号E~E14のうちのいずれかがグループ誤りを決定したか否かを示す。
1つのグループ誤りが示される場合には、このグループ誤りは、誤り符号Cを用いて訂正される。2つのグループ誤りが示される場合には、それら2つのグループ誤りは、誤り符号Cに基づいて訂正される。
誤り信号E~E14のいずれによってもグループ誤りが示されない場合には、組合せ誤り信号Eも誤りを示さない。この場合には、誤りが存在しないか、または少なくとも1つのバイト誤りが既知でない誤り位置に存在し、後者の場合には、ブロック誤り符号の符号語が、このブロック誤り符号の別の符号語に改ざんされている。
少なくとも1つのそのようなバイト誤りが存在する場合には、そのバイト誤りは、訂正が可能である限り、誤り符号Cを使用するだけで訂正される。説明したように、誤りのあるバイト位置も対応するバイト訂正値も、(ブロック誤り符号によって確かにグループ誤りは示されなかったので)誤り符号Cを用いるだけで決定される。
誤り検出回路FE~FE14によって決定された誤り信号E~E14、およびそれらの誤り信号E~E14から導出された組合せ誤り信号Eは、単一のグループ誤りの訂正または2つのグループ誤りの訂正、もしくは1つのバイト誤りの訂正が、決定すべきバイト位置でもって行えるか否かを決定する。
ブロック符号の符号語を、同じブロック符号の非符号語に改ざんし、したがってグループ誤りとしてブロック誤り符号の誤り検出回路に基づいて検出することができる誤りが、ブロック誤り符号の符号語を同じブロック誤り符号の別の符号語に改ざんする誤りよりも多く発生する場合には、固定数の検査ビットを用いて、誤りのあるバイト位置が予め決定されていないバイト誤りよりも多くのグループ誤りを訂正することができる回路装置を使用することが有利であると考えられる。換言すれば、ブロック誤り符号を用いて検出された少なくとも1つのグループ誤りでは、誤り符号Cが、その誤り符号Cだけによって検出および訂正されなければならない(少なくとも1つの)バイト誤りが存在するにもかかわらずグループ誤りが検出されなかった場合よりも多くの数のバイト誤りを訂正できることは有利である。
誤り符号Cの比較的少ない数の検査ビットを用いることで、ここで説明する例では、したがって2つまでのグループ誤り、または1つのバイト誤りを、誤り位置が事前に既知でなくても訂正することができる。
下記において例示的に説明する、図14に示した回路装置においては、誤り検出回路130~13L-1によって決定された誤り信号E~EL-1に依存して、いわゆるグループ誤りである第1の個数の誤りと、誤り検出回路130~13L-1によってグループ誤りとして検出することができない第2の個数の誤りと、が誤り符号Cを使用して訂正される。
オプションとして、2つより多くの誤り信号E~E14が誤りを示すか否かを決定することができる。そのような場合には、少なくとも3つのグループ誤りが検出され、またこの例によれば、訂正できない誤りを示すことができる(ここで選択した例では、グループ誤りとして検出された2つまでのバイト誤り、またはグループ誤りとして検出されなかった場合には1つのバイト誤りが、誤り符号Cを用いて訂正される)。
基本的に、例、使用分野および選択されたブロック誤り符号ならび誤り符号に応じて、複数の検出されたグループ誤り、検出されなかったグループ誤りおよびバイト誤りの種々の組合せを検出する、かつ/または訂正することができる。
例えば、誤り符号Cに関して、誤り信号E~EL-1を用いる回路装置を使用して、以下の訂正のうちの少なくとも1つが実現される。
-第1の個数までのグループ誤りの訂正、さらなるバイト誤りの訂正は行われない、
-第2の個数までのグループ誤りおよび第3の個数までのバイト誤りの訂正、この場合、第3の個数のバイト誤りに関してグループ誤りは示されない、
-グループ誤りが示されない第4の個数までのバイト誤りの訂正。
図14は、場合によっては誤りのあるデータバイトX’に対するバイト訂正信号を形成するための例示的な回路装置を示す。例示的に、式(5)によるH行列を用いたバイト誤り訂正符号が使用される。さらに例示的に、ガロア体GF(2)が想定される。
誤り信号Eが、l番目のバイトの誤りを示すことができ、またバイト訂正値生成器101に即した、図10において説明したバイト訂正値生成器KBが、訂正すべきデータバイトX’との成分毎のXOR結合によって
Figure 2024029084000171
となるバイト訂正信号eを提供することによって、この誤りの訂正を行うことができる。
例示的に、E=1の場合にはl番目のバイトの誤りが示され、またE=0の場合にはl番目のバイトの誤りが示されないことを想定する。
組合せ誤り信号Eを、図4に応じて、誤り検出回路41の出力信号として提供することができる。この場合、誤り検出回路41は、組合せ誤り信号Eに関して、
Figure 2024029084000172
が成り立つように構成されている。
誤り信号に関してE=1が成り立つ場合、組合せ誤り信号に関してもE=1が得られる。データバイトXはここでは、例えばメモリセル値の3-out-of-6符号の符号語Wにブロック誤り符号BFを使用してコーディングされている4ビット・バイトである。誤り信号Eは、値1によって、3-out-of-6符号の符号語Wが誤りによって、3-out-of-6符号の符号語ではないビット列W’に改ざんされたことを示す。
特に、1ビット誤りが存在し、バイトW’が3つの1の代わりに1を2つしか有していない場合には、誤り信号E=1によって誤りが示される。
しかしながら、バイトWが、ブロック誤り符号BCの符号語である誤りのあるバイトW’に改ざんされることも考えられる。例えば、正しいバイトW=111000が、誤りのあるバイトW’=100101に改ざんされる可能性がある。つまり、これら2つのバイトはいずれもブロック誤り符号BCの符号語である。この場合、誤り信号Eは0であり、誤りは検出されない。メモリセル値の誤りのあるバイトW’が、相応の変換回路によって、誤りのあるデータバイトX’に変換される可能性がある。
誤り符号Cがバイト誤り訂正符号である場合には、場合によっては誤りのあるデータバイトX’を、この誤り符号を使用して、誤り信号Eが0であるにもかかわらず訂正することができる。
バイト誤り位置が既知でない、場合によっては誤りのあるバイトX’の訂正は、バイト誤り信号E=0であり、かつ別のバイト誤り信号が0でない場合には、誤り符号Cを使用して行うことができる。
組合せ誤り信号Eが式(46)によって決定されている場合には、組合せ誤り信号Eに関する値0は、誤り信号E~E14のいずれも、メモリセル値のバイトのうちの1つにおける誤りを示さないことを示す。
図14に示した回路装置に基づいて、ブロック誤り符号CFの相応のバイト誤り信号Eがメモリセル値のl番目の読み出されたバイトW’におけるバイト誤りを示す場合には、l番目の誤りのあるデータバイトX’における誤りを訂正することができる。この場合には、最大でも1つの別のバイト誤り信号がl番目のバイトとは異なるバイトにおける1つのバイト誤りを示すか、または別のブロック誤り符号の別のバイト誤り信号がバイト誤りを示さないことが考えられる。誤り符号Cを使用した誤りのあるバイトX’の訂正に関して、ここでは、誤り信号Eの値によって、l番目のデータバイトにおいて誤りを訂正できることが既知である。このことは、グループ誤りの訂正に相当する。ここで例示的に使用するバイト誤り訂正符号でもって、1つまたは2つのグループ誤りを訂正することができる。
ブロック誤り符号CFを用いて、l∈{0,...,L-1}の場合の誤り信号Eは、誤り検出回路FEによって決定されている(例えば、図1を参照されたい)。バイト訂正値eないしバイト訂正値el’は、誤り符号Cを使用して決定されている。誤り信号がE=1である場合には、グループ誤りが存在し、また誤り符号Cは、この場合、バイト訂正値生成器101の出力側に提供されるバイト訂正値e≠0だけを決定する。誤り信号E=0である場合には、バイト訂正値生成器101は、バイト訂正値e=0を出力する。
誤り信号がE=0である場合に、l+1番目のバイト位置にバイト誤りが存在するならば、誤りがない場合にはブロック誤り符号CFの所定の符号語であるそのl+1番目のバイトは、このブロック誤り符号CFの別の符号語に誤って改ざんされている。NOR回路144は値1を出力し、この値1は、組合せ誤り信号がE=0であることから、AND回路148を介して案内される。したがって、AND回路145は、自身の出力側に、バイト訂正値e’と同じ値sを提供し、この値sは、e=0であることから、XOR回路146の出力側において出力され、XOR回路147において、訂正すべきバイトX’とXOR結合され、訂正されたバイト
Figure 2024029084000173
となる。
さらに、l番目のデータバイトが誤ってX’に改ざんされている場合、またブロック誤り符号のバイト誤り信号がバイト誤りを示さない場合には、誤り符号Cを使用して誤りを訂正できる場合には、誤りのあるデータバイトを訂正することができる。この場合には、図14に示した回路装置を用いて、誤りがl番目のバイト位置に存在していることが決定される。ここで例示的に使用するバイト誤り訂正誤り符号Cを用いて、決定すべきバイト位置におけるバイト誤りを訂正することができる。
バイト訂正値eを用いたl番目のデータバイトX’の誤り訂正は、誤り信号Eが1である場合に行われる。したがって、組合せ誤り信号Eが0であり、かつ
Figure 2024029084000174
が成り立つ場合には、バイト訂正値el’を用いて訂正が行われる。
図14には、
-2つの4ビット幅の入力側、誤り信号Eが印加される1つの1ビット幅の入力側およびバイト訂正値eを提供する1つの4ビット幅の出力側を備えたバイト訂正値生成器、
-4ビット幅の入力線1410~1413、
-1つの4ビット幅の第1の入力側、1つの1ビット幅の第2の入力側および4ビット幅の出力側を備えた定数乗算器142、
-それぞれが2つの4ビット幅の入力側および1つの4ビット幅の出力側を備えたXOR回路143、146および147、
-1つの4ビット幅の入力側および1つの1ビット幅の出力側を備えたNOR回路144、
-1つの4ビット幅の第1の入力側、1つの1ビット幅の第2の入力側および4ビット幅の出力側を備えたAND回路145、
-2つの1ビット幅の入力側および1つの1ビット幅の出力側を備えたAND回路148、
-1つの1ビット幅の入力側および1つの1ビット幅の出力側を備えた反転器149、
が含まれている。
バイト訂正値生成器101は、例えば図10にも示されている。
誤り信号に関してE=0が成り立つ場合には、4ビット幅のバイト訂正値eは0000である。
入力線1410~1413には、(記載した端子の順序で)4ビット幅の信号値:s+s×Σ-1、s×Σ-1、sおよびsが印加される。
バイト訂正値生成器101の2つの入力側は、入力線1410および1411に接続されている。
入力線1412は、XOR回路143の第1の入力側に接続されており、このXOR回路143の第2の入力側には、定数乗算器142の出力側が接続されている。定数乗算器142の第1の入力側は、入力線1413に接続されており、また定数乗算器142の第2の入力側には、定数αが印加される。XOR回路143の出力側は、NOR回路144の入力側に接続されている。
NOR回路144は、自身の入力側に値0000が印加されると値1を出力し、また自身の入力側に0000ではない値が印加されると値0を出力する。
NOR回路144の出力側は、AND回路148の第1の入力側に接続されており、AND回路148の第2の入力側は、反転器149の出力側に接続されており、この反転器149の入力側には、組合せ誤り信号Eが印加される。
AND回路148の出力側は、AND回路145の1ビット幅の第2の入力側に接続されており、このAND回路145の4ビット幅の第1の入力側は、入力線1413に接続されている。AND回路145の出力側は、XOR回路146の第1の入力側に接続されている。XOR回路146の第2の入力側は、バイト訂正値生成器101の出力側に接続されている。
AND回路145は、自身の第2の入力側にバイナリ信号0が印加されると、自身の4ビット幅の出力側に値0000を出力するように構成されている。相応に、AND回路145は、自身の第2の入力側にバイナリ信号1が印加されると、自身の出力側に値sを提供する。
XOR回路146の出力側は、XOR回路147の第1の入力側に接続されている。XOR回路147の第2の入力側には、場合によっては誤りのある、訂正すべきデータバイトX’が印加される。XOR回路147の出力側には、訂正されたデータバイト
Figure 2024029084000175
が出力される。
誤り信号E=1の値が、メモリセル値のl番目のバイトW’の誤りを示す場合には、対応するl番目のデータバイトX’の訂正を、バイト訂正値生成器101によって決定されたバイト訂正値eに基づいて行うことができる。この場合には、組合せ誤り信号はE=1であり、またAND回路145は値0000を出力する。メモリセル値のl番目のバイトに1つの誤りしか存在しないか、またはメモリセル値のl番目のバイトにおける誤りおよび別のバイトにおける誤りが存在する場合には、訂正された値
Figure 2024029084000176
は、誤りのない値Xと同じである。何故ならば、ここで例示的に使用する誤り符号Cは、誤りのあるバイト位置が既知である1つまたは2つのバイト誤り、換言すれば2つのグループ誤りを訂正することができるバイト訂正符号だからである。
誤り信号の値がE=0である場合には、ブロック誤り符号CFによって、l番目のバイトに誤りはないことが検出され、またバイト誤り訂正値eは0000である。
すなわち、組合せ誤り信号に関してE=0が成り立つ場合には、メモリセル値のバイトのいずれにおいても、対応するブロック誤り符号によって誤りは検出されていない。さらに、式(47)による条件が満たされている場合には、AND回路145の第2の1ビット幅の入力側には値1が印加されるので、AND回路145は、自身の出力側に値el’=sを提供する。この場合には、データバイトX’に誤りがあり、またメモリセル値の読み出されたバイトW’はブロック誤り符号CFの誤りのある符号語(すなわち、複数のビット誤りによって本来正しい符号語から生じているブロック誤り符号の符号語)であるので、誤りをブロック誤り符号CFによって検出することはできない。XOR回路146は、値e’=sを出力し、この値e’は、XOR回路147において訂正すべきデータバイトX’と結合されて、
Figure 2024029084000177
となる。この実施例では、使用されるデータビット誤り符号Cが、別の誤りが存在しない場合には、誤りのあるデータバイトX’を誤りのない値Xに訂正する1バイト誤り訂正符号である。
訂正すべきバイト位置0,...,14に関して、図14においてl(ただし、0≦l≦14)について説明した、場合によっては誤りのあるバイトX’~X14’を訂正するための回路装置を並列に提供するか、または並列に実装することが可能であるので、必要とされるバイト訂正値の決定が種々のバイトに対して並列に実施される。「並列」と言う語句の解釈については、上記の説明を参照されたい。
誤り信号に関してE=1が成り立ち、かつ別のバイトに関する誤り信号が0である場合には、l番目の回路装置は、自身の出力側にバイト訂正値e≠0000を提供し、その一方で、残りの全ての回路装置は、並列にバイト訂正値0000を提供する。
以下の関係、すなわち、
-誤り信号に関して、E=1、
-別の誤り信号に関して、E=1、ただしl≠K、かつ
-他の全ての誤り信号は0である、
が成り立つ場合には、
-l番目の回路装置は、自身の出力側にバイト訂正値e≠0000を提供し、
-K番目の回路装置は、自身の出力側にバイト訂正値e≠0000を提供し、
-これに対して、残りの他の全ての回路装置は、バイト訂正値0000を(並列に)提供する。
全ての誤り信号E,...,E14が0であり、かつN番目のバイトX’に1バイト誤りが存在する場合には、N番目の回路装置が自身の出力側にバイト訂正値e’≠0000を提供し、その一方で、残りの全ての回路装置がバイト訂正値0000を並列に提供する。
この例では、例示的に、4ビットの語幅およびガロア体GF(2)を前提とした。これは、単に説明を目的として使用される例である。したがって、別の語幅および別のガロア体を利用することもできる。さらに、別の誤り符号、特に複数のバイト誤りを検出する、かつ/または訂正する誤り符号を使用することができる。
さらに例示的に、短縮されていない符号が誤り符号として使用された。したがって、短縮されていない符号のH行列の列が消去された短縮された符号を使用することもできる。
ガロア体
以下の例では、特に、ここでは例として挙げるガロア体GF(2)を参照する。
この例ではr=4であるガロア体GF(2)に関して、以下では、ガロア体の幾つかの基本概念、例えば、ガロア体の元の種々の表示およびガロア体上での演算の幾つかの基本概念を説明する。例えば、この関係においては、[3]を参照されたい。この文献には、リードオンリメモリ(ROM)を使用したガロア体演算の実現形態が記載されている。
ガロア体GF(2)に関して、表4は、ガロア体の(2=)16個の元が、生成元αの累乗としてのべき表現、3次多項式としての多項式表現、および4つの成分を有するバイナリベクトルとしてのベクトル表現で示されている。モジュラ多項式として、多項式
Figure 2024029084000178
が使用される。
Figure 2024029084000179
例示的な原始モジュラ多項式の同伴行列の累乗としてのガロア体の元の表現は、例えば[4]から公知である。これによって、特別な適用事例においては、バイト誤り検出符号およびバイト誤り訂正符号のH行列およびG行列の有利な表現が実現される。
バイナリ係数を用いる全部で16個の3次多項式は、それぞれ、ガロア体GF(2)の1つの元を表す。それらは、表4の第2列において多項式としてzで記載されている。多項式の累乗z、z、z、zのバイナリ係数は、ベクトル表現の成分である。
表4の第1列は、生成元αの累乗α~α14としての、ガロア体GF(2)における元のべき表現を示す。多項式表現の元0またはベクトル表現の0000については、べき表現での表現は存在しない。
多項式表現の多項式
Figure 2024029084000180
は、べき表現の元αに対応し、ここでM(z)は、ガロア体のモジュラ多項式、ここではモジュラ多項式M(z)=z+z+1、である。
つまり、例えばべき表現のαは、多項式表現の多項式
Figure 2024029084000181
に対応する。
べき表現の2つの元αおよびαの乗算に関しては、
Figure 2024029084000182
が成り立つので(ただし、2-1=15)、べき表現の2つの元の乗算は、モジュロ(2-1)指数部加算に対応する。つまり例えば、次式も成り立つ。
Figure 2024029084000183
元αの逆元αは、以下の関係
Figure 2024029084000184
によって決定されているか、または
Figure 2024029084000185
によって決定されている。元αの逆元を、α-iとも記す。
つまり例えば、
Figure 2024029084000186
表5は、ガロア体GF(2)に関するベクトル表現の相互の逆元の表現を示す。ただし、ベクトル表現の元0000は逆元を有していない。
Figure 2024029084000187
つまり例えば、表5の4行目に応じて、「0001」および「1111」は、相互に逆元のベクトル表現である。表4によれば、0001のベクトル表現はαであり、また1111のベクトル表現はα12であり、したがって、
Figure 2024029084000188
が成り立つ。
表6は、ガロア体GF(2)の元のベクトル表現に関して、べき表現の元の累乗の値を示す。この対応付けは、関数LOGとして表される。表6によるべき表現の元の累乗に、対応するベクトル表現を対応付ける逆の対応付けは、関数EXPとして表される。
Figure 2024029084000189
つまり、例えば、ベクトル表現の元0001には、αがベクトル表現0001を有することから、関数LOG(0001)=3によって値3が対応付けられている。相応に、LOG(0001)=3なので、EXP(3)=0001が成り立つ。
したがって関数LOGは、元のベクトル表現をべき表現の累乗に写像する。関数EXPは、変換LOGの逆変換である。この関数EXPは、べき表現の元の累乗を、その元のベクトル表現に写像する。
多項式表現では、16個の元がバイナリ係数を用いる16個の3次多項式によって表される。ガロア体上の2つの元の乗算を、多項式表現でも実施することができる。モジュラ多項式M(z)の多項式モジュロの乗算は、多項式表現の2つの元P(z)およびP(z)の乗算に対応するので、M(z)=z+z+1では、
Figure 2024029084000190
が成り立つ。
つまり例えば、次式が成り立つ。
Figure 2024029084000191
ベクトル表現の2つの元の加算は、成分の成分毎のモジュロ2加算に対応する。多項式の係数のモジュロ2加算は、多項式表現の2つの元の加算に対応する。
図15:GF(2)上のガロア体乗算器
以下では、GF(2)上のガロア体乗算器の例示的な実現形態を説明する。ベクトル表現のべき表現への変換、モジュロ15指数部加算、および累乗のベクトル表現への逆変換が行われる。べき表現が存在しない元0を個別に考慮することができる。
図15は、ベクトル表現で与えられている、ガロア体の2つの元を乗算するための例示的な回路装置を示す。例として、ここでもまたガロア体GF(2)が使用される。そのような回路装置を、ガロア体乗法器またはガロア体乗算器と称することができる。
図15に示した回路装置は、
-それぞれが1つの4ビット幅の入力側、および関数LOGを実現するための1つの4ビット幅の出力側を備えた、2つの変換回路151、152、
-2つの4ビット幅の入力側および1つの4ビット幅の出力側を備えた、1つの加算回路153、
-1つの4ビット幅の入力側、および関数EXPを実現するための1つの4ビット幅の出力側を備えた、変換回路156、
-1つの第1の4ビット幅の入力側、1つの第2の1ビット幅の入力側および1つの4ビット幅の出力側を備えた、1つのAND回路158、
-それぞれが1つの4ビット幅の入力側および1つの1ビット幅の出力側を備えた、2つのNOR回路154、155、
-2つの1ビット幅の入力側および1つの1ビット幅の出力側を備えた、1つのNOR回路157、
を含んでいる。
変換回路151の入力側は、NOR回路154の入力側に接続されている。変換回路151の入力側には、ベクトル表現のガロア体GF(2)の元
Figure 2024029084000192
の4つの成分v,v,v,vが印加される。変換回路151は、加算回路153の第1の入力側に接続されている自身の出力側に、4ビット幅の信号LOG(v)を出力する。
変換回路152の入力側は、NOR回路155の入力側に接続されている。変換回路152の入力側には、ベクトル表現のガロア体GF(2)の元
Figure 2024029084000193
の4つの成分
Figure 2024029084000194
が印加される。変換回路152は、加算回路153の第2の入力側に接続されている自身の出力側に、4ビット幅の信号LOG(v)を出力する。
加算回路153は、
Figure 2024029084000195
の場合に、和
Figure 2024029084000196
を形成して、自身の出力側に提供するように構成されている。加算回路153の出力側は、変換回路156の入力側に接続されており、この変換回路156は、
Figure 2024029084000197
の場合に、値
Figure 2024029084000198
を形成して、自身の出力側に提供する。この値は、v,v≠0が成り立つ場合には、ガロア体GF(2)上のvおよびvの積と同じである。
変換回路156の出力側は、AND回路158の第1の入力側に接続されており、このAND回路158は、自身の出力側において、ガロア体GF(2)上の乗算v×vの結果を提供する。
NOR回路154の出力側は、NOR回路157の第1の入力側に接続されており、またNOR回路155の出力側は、NOR回路157の第2の入力側に接続されている。NOR回路157の出力側は、AND回路158の第2の入力側に接続されている。
したがってAND回路158は、自身の第2の入力側にバイナリ値0が印加された場合には、自身の出力側に値0000を出力するか、または自身の第2の入力側にバイナリ値1が印加された場合には、第1の入力側に印加された値を自身の出力側に提供するように構成されている。
v=0000である場合には、NOR回路154は値1を出力し、またNOR回路157は、自身の出力側に信号0を出力し、それによってAND回路158は値0000を出力する。
=0000である場合には、NOR回路155は値1を出力し、またNOR回路157は、自身の出力側に信号0を出力し、それによってAND回路158は値0000を出力する。
2つの乗算vおよびvが値0000とは異なる場合には、NOR回路154および155はそれぞれ値0を供給する。その結果、NOR回路157は自身の出力側にバイナリ値1を供給するので、AND回路158は自身の出力側に、自身の第1の入力側に印加された値を出力する。
したがって、換言すれば、NOR回路154、155および157に基づき、乗算のうちの少なくとも1つが0000となる未定義のケースがマスキングされる。
乗算vの値が一定である場合には、vと定数との乗算はガロア体上で行われる。
ガロア体上の定数乗算器
以下では、線形回路としてXOR回路を用いて形成されている、ガロア体上の定数乗算器についての例を説明する。
任意の元と定数との乗算は、多項式表現で表される。任意の元の多項式および定数の多項式は、ガロア体のモジュロ多項式のモジュロと乗算される。結果として生じた多項式の成分は、積のベクトル表現の成分を形成する。積のベクトル表現の成分は、以下に説明するように、係数のXOR結合である。
したがって、定数乗算器を線形回路として表すことができる。ここでは、各定数乗算器の出力側を、複数の入力側のXOR結合として決定することができる。
ガロア体上で定数と乗算すべき、ガロア体GF(2)の任意の元を、例示的にvと記す。ベクトル表現では、以下の関係が成り立つ。
Figure 2024029084000199
ガロア体の例として、GF(2)が選択される。したがって、4ビット幅のベクトル(バイナリベクトル)としてのベクトル表現のvは、
Figure 2024029084000200
となる。
ここで、v~vは、vの成分として表される。vと乗算される定数はaで表され、ベクトル表現では、
Figure 2024029084000201
が成り立ち、またべき表現では、
Figure 2024029084000202
が成り立つ。
乗算の積は、ベクトル表現で
Figure 2024029084000203
でもって表され、ここでy~yは、積yの成分である。
既に説明したように、ガロア体GF(2)上の2つの元の乗算は、多項式表現を使用しても実現することができる。例示的に、ここでもまたガロア体GF(2)を考察する。
以下では、元vが一定の元a(いずれもベクトル表現)と乗算される。多項式表現では、次式が成り立つ。
Figure 2024029084000204
元vとaとの乗算によって次式が得られる。
Figure 2024029084000205
ここで、成分a~aは、バイナリ値、すなわち0または1である。
例えば、a,a,a,a=1,0,0,0がαのベクトル表現である場合には、αの多項式表現は1である。つまり多項式表現では、
Figure 2024029084000206
が成り立ち、したがって
Figure 2024029084000207
となるので、この場合には、ベクトルvは変更されないままであり、y=vが成り立つ。定数αに関する定数乗算器の出力側は、対応する入力側に直接的に接続されている。
図16aは、ベクトル表現a=1000を用いる定数αに関する式(53)に応じた定数乗算器の1つの考えられる実現形態を示す。
ここでは、定数αと乗算すべき、ガロア体の元vのベクトル表現の成分v、v、v、vが供給される定数乗算器の入力側は、積yの成分y、y、y、yを提供する出力側に直接的に接続されている。
別の例として、定数αとの乗算を考察する。αのベクトル表現はa=0100であり、αの多項式表現はzである。したがって、多項式表現では次式が成り立つ。
Figure 2024029084000208
これによって、以下の関係が生じる。
Figure 2024029084000209
図16bは、ベクトル表現a=0100を用いる定数αに関する式(54)に応じた定数乗算器の1つの考えられる実現形態を示す。
成分vが供給される入力側は、XOR回路161の第1の入力側に接続されている。XOR回路161の第2の入力側は、成分vに接続されている。成分vは、成分yを供給する出力側にも印加される。XOR回路161の出力側は、成分yを供給する出力側に接続されている。
成分vが供給される入力側は、成分yを供給する出力側に接続されており、また成分vが供給される入力側は、成分yを供給する出力側に接続されている。
付加的な例として、定数αとの乗算を考察する。αのベクトル表現はa=0011であり、αの多項式表現はz+zである。したがって、多項式表現では次式が成り立つ。
Figure 2024029084000210
これによって、以下の関係が生じる。
Figure 2024029084000211
図16cは、ベクトル表現a=0011を用いる定数αに関する式(55)に応じた定数乗算器の1つの考えられる実現形態を示す。
これに関して、定数乗算器は5個のXOR回路162、163、164、165、166を含んでいる。
成分vが供給される入力側は、XOR回路164の第1の入力側およびXOR回路165の第1の入力側に接続されている。XOR回路165の出力側は、XOR回路166の第1の入力側に案内されている。成分vが供給される入力側は、XOR回路162の第1の入力側、XOR回路163の第1の入力側、およびXOR回路165の第2の入力側に接続されている。成分vが供給される入力側は、XOR回路162の第2の入力側およびXOR回路164の第2の入力側に接続されている。成分vが供給される入力側は、XOR回路163の第2の入力側およびXOR回路166の第2の入力側に接続されている。
XOR回路162の出力側は、成分yを供給する定数乗算器の出力側に接続されている。XOR回路163の出力側は、成分yを供給する定数乗算器の出力側に接続されている。XOR回路164の出力側は、成分yを供給する定数乗算器の出力側に接続されている。XOR回路166の出力側は、成分yを供給する定数乗算器の出力側に接続されている。
アドレス誤り検出
1つのオプションでは、データビットがアドレス情報を含んでいる。アドレス情報として、アドレスビット、アドレスビットのグループ、アドレスビットから導出されたビット、またはアドレスビットから導出されたビットのグループが考えられる。アドレスビットのグループを、アドレスバイトと称することもできる。
これによって、アドレス誤りも効率的に検出することができる。
メモリアドレスadは、特にn個のアドレスビットad,...,adn-1を有することができるので、
Figure 2024029084000212
(ただし、nは例えば2×m以上)が成り立つ。ここで、mはバイトにおけるビットの個数である。
メモリアドレスadは、変換TrによってL個のアドレスバイト
Figure 2024029084000213
に変換される。ただし、L≧2である。さらに、
Figure 2024029084000214
が成り立つ。
ここではアドレスバイトが、例示的にm個のビットを有する。
記憶すべきデータビットはデータバイトUを形成する。それらのデータバイトUおよびアドレスバイトAdからは、データバイト、アドレスバイトおよび検査バイトが誤り符号Codの符号語を形成するように検査バイトCが決定される。したがって、検査バイトCは、データバイトUにもアドレスバイトAdにも依存する。
誤り符号Codは、バイト誤りを訂正するか、またはバイト誤りを検出して訂正する誤り符号であってよい。例えば、誤り符号はリード・ソロモン符号であってもよいし、一般化リード・ソロモン符号であってもよい。
アドレッシング可能なメモリへの書き込みの際に、データバイトUおよび対応する検査バイトCがアドレスadに記憶される。検査バイトCは、データバイトU、アドレスバイトAdおよび検査バイトCが、誤り符号Codの符号語を形成するように決定されている。
この際、書き込みアドレスadのアドレスビットad,...,adn-1は、変換Trによって、L個のアドレスバイトAd,...,AdL-1に変換される。
ここでは例示的に、アドレスバイトまたはアドレスビットまたはアドレスビットから導出されたビットは記憶されない。何故ならば、アドレスは読み出しアクセスの際に提供され、したがって、逆変換の際に相応に考慮することができるからである。
読み出しアクセスの際に、メモリにおいて読み出しアドレスad’へのアクセスが行われる。この際、場合によっては誤りのあるデータバイトU’と、場合によっては誤りのある対応する検査バイトC’とが読み出される。読み出しアドレスad’のアドレスビット
Figure 2024029084000215
は、読み出しアクセスの際に提供され、変換TrによってL個のアドレスバイトAd’に変換される。ここでもまた、やはりL≧2である。
データバイトに誤りが存在する際に、その誤りを誤り符号に基づき訂正できる場合には(また訂正されるべき場合には)、データバイトのうちの少なくとも1つにおける誤りが訂正される。
検査バイトに誤りが存在する際に、1つのオプションでは、その誤りが誤り符号によって訂正できる場合には、少なくとも1つの検査バイトにおける誤りも訂正される。
付加的に、L個のアドレスバイトにおける任意の誤りも、誤り符号を使用して検出される。
メモリアドレスadへの読み出しアクセスが行われるべきであるが、しかしながら実際にはメモリアドレスad’≠adにアクセスが行われる場合には、アドレス誤りが存在する。この場合には、コーディングされたメモリアドレスadは実際に使用されるメモリアドレスad’と同じではないので、そのような誤りは検出される。すなわち換言すれば、2つのメモリアドレスadおよびad’が同じでない場合には、アドレス誤りを確認することができる。
誤り符号Codがτバイト誤り訂正符号(ただし、τ≧2)であり、かつ誤りのあるアドレスビットが変換Trによって変換されるL=τ個のアドレスバイトが存在する場合には、アドレス誤りは以下のようにして検出される。つまり、τ個のアドレスバイトのうちの少なくとも1つに対して、バイト誤りを示すバイト誤り位置信号が決定されると、誤りが検出される。誤り符号がτバイト誤り訂正符号であるので、L=τ個のアドレスバイトのうちの少なくとも1つを改ざんするあらゆるアドレス誤りが検出される。
アドレスバイトは、バイト誤り位置信号が決定され、かつバイト訂正値を決定する必要がない、誤り符号のバイトである。
アドレスバイトのうちの少なくとも1つを改ざんするアドレス誤りが発生した場合には、そのアドレス誤りを、そのアドレスバイトに対するバイト誤り位置信号に基づいて、一義的にアドレス誤りとして識別することができる。
誤り符号Codがt個のバイト誤り訂正符号および(t+1)個のバイト誤り検出符号(ただし、t≧1かつL=t+1≧2)であり、かつ誤りのあるアドレスビットが変換Trによって変換されたものである、L=t+1個のアドレスバイトが存在する場合には、アドレス誤りを以下のように検出することができる。
1.t+1個のアドレスバイトのうちの少なくとも1つに対して、バイト誤りを示すバイト誤り位置信号が決定される場合には、誤りが検出される。誤り符号はtバイト誤り訂正符号であるので、最大でt個のアドレスバイトを改ざんするあらゆるアドレス誤りが検出される。
2.全部でL=t+1個のアドレスバイトがアドレス誤りによって改ざんされる場合には、(t+1)個のバイト誤りが存在する。誤り符号は(t+1)個のバイト誤り検出符号であるので、この場合には、(t+1)個のバイト誤りが検出される。この場合には、例えばデータバイトまたは検査バイトにおける他の考えられる(t+1)個のバイト誤りと、アドレスバイトにおける誤りと、は区別されない。これは検出できるが、しかしながら訂正できない誤りであるので、そのような区別も必要ない。
既に説明したように、アドレスバイトは、バイト誤り位置信号が決定されるが、しかしながらバイト訂正値を決定する必要はない誤り符号のバイトである。この場合には、アドレス誤り、すなわち誤ったアドレスへのアクセスが存在することが検出されれば十分である。
L個のアドレスバイトに対するバイト誤り位置信号を、少なくとも部分的に同時に(すなわち広義の意味で時間的に並列に)決定することができる。相応に、バイト誤り位置信号のうちの少なくとも2つを同時に決定することもできる。
これまでは、アドレスビットadが変換TrによってL個のアドレスバイトAdに変換され、また変換されたアドレスバイトのアドレスビットがメモリに格納されないヴァリエーションを説明した。むしろ、アドレスは、データの読み出しの際に、例えばアドレス発生器によって提供される。
1つの別のヴァリエーションでは、アドレスビットも(完全にまたは部分的に)メモリに記憶される。代替的または付加的に、アドレスビットから導出されたビットも、例えばアドレスビットのパリティビットもメモリに格納することができる。
さらに1つのオプションでは、アドレスビットに由来するバイトおよび/またはアドレスビットから導出されたビットを基礎とするバイトがメモリに記憶される。
さらに1つのオプションでは、アドレスバイトのビットがデータバイトのビットと、かつ/または検査ビットのビットと、例えば成分毎のXOR演算によって論理結合され、また結合されたビットがメモリに記憶される。
メモリアドレスのアドレスバイトへの変換を、種々の回路、例えば組合せ回路またはシーケンシャル回路によって、例えばフィードバックシフトレジスタを使用して、または処理ユニット、例えばプロセッサユニット、マイクロプロセッサおよび/またはマイクロコントローラを用いて行うことができる。
つまり1つのオプションでは、アドレスビットが線形回路によってXORゲートを使用してアドレスバイトに変換される。
また1つのオプションでは、アドレスビットがリードオンリメモリ(ROM)の形態の非線形回路によってアドレスバイトに変換される。
さらに1つのオプションでは、アドレスビットがプロセッサユニット、マイクロプロセッサおよび/またはマイクロコントローラを使用してアドレスバイトに変換される。
さらに1つのオプションでは、アドレスビットがコンピュータプログラムを用いてアドレスバイトに変換される。
すなわちこれによって、例えばデータビットを処理することで、アドレス誤りの検出を実現する方法も提案することができ、この方法では、
-第1の変換によって、データビットが第1のデータバイトに変換され、
-第1のメモリアドレスのアドレスビットが第1のアドレスバイトに変換され、
-第1のデータバイトおよび第1のアドレスバイトを使用して、第1のデータバイト、第1のアドレスバイトおよび第1の検査バイトが誤り符号の符号語を形成するように第1の検査バイトが決定され、
-第1のデータバイトおよび第1の検査バイトがメモリに記憶され、
-所定の第2のメモリアドレスにおける第2のデータバイトおよび第2の検査バイトがメモリから読み出され、
-第2のメモリアドレスのアドレスビットが第2のアドレスバイトに変換され、
-第2のデータバイト、第2のアドレスバイトおよび第2の検査バイトが誤り符号の符号語を形成するか否かが検査され、
-符号語が存在しない場合には、アドレスバイトに対してバイト誤り位置信号が決定される。
アドレスバイトに対するバイト誤り位置信号に基づき、アドレス誤りが存在するか否かを決定することができる。
1つのオプションでは、少なくとも2つのアドレスバイトに対してバイト誤り位置信号が決定される。
1つの別のオプションでは、バイト誤り位置信号のうちの少なくとも2つが少なくとも部分的に時間的に重畳されて、または同時に決定される。相応に、バイト誤り位置信号のうちの少なくとも2つを時間的に連続して決定することもできる。
さらに1つのオプションでは、アドレスビットのアドレスバイトへの変換が、線形変換を使用して行われる。線形変換を、組合せ回路として実現することができる。
この場合、有利には、既述のアドレス誤り検出によって、誤りのあるアドレスに基づいて誤ったデータへのアクセスが行われることが効率的に阻止される。そうでなければ、このことは、誤って選択されたデータそれ自体は確かに正しいものなので、後段の誤り検出回路によって発見されない虞がある。
本明細書において説明したアプローチによって、付加的に、アドレスビットのグループにおける複数の誤りまたはアドレスビットの複数のグループにおける誤りを検出することができる。
術語
以下に、本明細書において使用した符号および関係の一部を一覧表で再度示す。
Figure 2024029084000216
参考文献目録:
[1]Fujiwara,E.:「Code Design for Dependable Systems」、Wiley 2006、第65頁
[2]Lin,S.;Costello,D.:「Error Control Coding」、Prentice Hall 1983、第32頁および第33頁
[3]Okano,H.;Imai,H.:「A Construction Method for High-Speed Decoders Using ROM’s for Bose-Chaudhuri-Hocquenghem and Reed-Solomon Codes」、Trans.Computers、C-36、第1165頁~第1171頁、1987
[4]Rao,T.;Fujiwara,E.:「Error Control codes for Computer Systems」,Prentice Hall 1989、第222頁~第226頁
11 メモリ
12 変換回路
130~13L-1 誤り検出回路
21 コーディングユニット
22 変換回路
23 メモリ
240~24L-1 誤り検出回路
25 逆変換回路
26 バイト訂正値生成器
270~27L-1 XOR回路
31 変換回路
32 検査ビット生成器
33 検査ビット変換回路
34 メモリ
350~35L-1 誤り検出回路
36 逆検査ビット変換回路
37 バイト訂正値生成器
380~38L-1 XOR回路
39 逆変換回路
40 誤り検出回路
41 誤り検出回路
510~51L-1 変換回路(バイト毎)
520~52L-1 逆変換回路(バイト毎)
61 誤り検出回路
71 誤り検出回路
810~81L-1 NOR回路
820~82L-1 AND回路
83 OR回路
910 入力側
911 入力側
912 入力側
913 入力側
914 入力側
91 定数乗算器
92 XOR回路
93 ガロア体乗算器
94 定数乗算器
95 XOR回路
96 反転器
97 定数乗算器
98 XOR回路
99 定数乗算器
915 部分回路
916 部分回路
917 加算器
918 組合せ回路
101 バイト訂正値生成器
102 定数乗算器
103 XOR回路
104 AND回路
105 XOR回路
106 入力線
107 入力線
111 バイト訂正値生成器
112 バイト訂正値生成器
113 バイト訂正値生成器
114 XOR回路
115 XOR回路
116 XOR回路
121 組合せ回路
122 反転器
1314 XOR回路
1317 XOR回路
1318 XOR回路
1324 XOR回路
1325 XOR回路
1328 XOR回路
1329 XOR回路
1335 XOR回路
1336 XOR回路
1338 XOR回路
1346 XOR回路
1347 XOR回路
1349 XOR回路
13110 XOR回路
13112 XOR回路
13113 XOR回路
13114 XOR回路
13210 XOR回路
13211 XOR回路
13212 XOR回路
13310 XOR回路
13311 XOR回路
13312 XOR回路
13313 XOR回路
13211 XOR回路
13411 XOR回路
13412 XOR回路
13413 XOR回路
13414 XOR回路
1410 入力線
1411 入力線
1412 入力線
1413 入力線
142 定数乗算器
143 XOR回路
144 NOR回路
145 AND回路
146 XOR回路
147 XOR回路
148 AND回路
149 反転器
151 変換回路
152 変換回路
153 加算回路
154 NOR回路(否定論理和回路)
155 NOR回路(否定論理和回路)
156 変換回路
157 NOR回路(否定論理和回路)
158 AND回路
161 XOR回路
162 XOR回路
163 XOR回路
164 XOR回路
165 XOR回路
166 XOR回路

Claims (26)

  1. データビットを処理するための方法において、
    -第1の変換によって、前記データビットを第1のデータバイトに変換し、
    -前記第1のデータバイトをメモリに記憶し、
    -第2のデータバイトを前記メモリから読み出し、
    -前記第2のデータバイトはそれぞれ、誤りのない場合には、ブロック誤り符号の符号語であり、
    -第2のデータバイト毎に、前記第2のデータバイトが符号語であるか否かを表す誤り信号を決定する、
    方法。
  2. 少なくとも1つの前記ブロック誤り符号を用いて、前記データビットを第1のデータバイトに変換する、
    請求項1記載の方法。
  3. 前記少なくとも1つのブロック誤り符号は、m-out-of-n符号である、
    請求項2記載の方法。
  4. 少なくとも1つの前記誤り信号に基づいて、誤り訂正を実施する、
    請求項1から3までのいずれか1項記載の方法。
  5. 前記データビットは、誤り符号を用いてコーディングされている、
    請求項1から4までのいずれか1項記載の方法。
  6. 前記第2のデータバイトを、前記第1の変換とは逆の変換である第2の変換によって第2の逆データバイトに変換する、
    請求項5記載の方法。
  7. 前記第2のデータバイトが前記ブロック誤り符号の符号語ではない場合には、前記誤り信号に基づいて、前記第2の逆データバイトの訂正を、前記誤り符号を用いて行う、
    請求項6記載の方法。
  8. 前記第2の逆データバイトの基礎をなす前記第2のデータバイトが前記ブロック誤り符号の符号語ではないことを前記誤り信号が示す場合には、少なくとも1つの第2の逆データバイトを、前記誤り信号に基づいて、前記誤り符号を用いて訂正する、
    請求項6または7記載の方法。
  9. 誤り信号が誤りのあるi番目の第2のデータバイトおよび誤りのあるj番目の第2のデータバイトを示す場合には、i番目の第2の逆データバイトX’に対するバイト訂正値eを、誤りシンドロームの部分シンドロームsおよびs、バイト位置i、および成分毎のXOR和α+αに依存して決定し、ただしαは使用されるガロア体の生成元である、
    請求項6から8までのいずれか1項記載の方法。
  10. 前記i番目の第2の逆データバイトX’を訂正するための前記バイト訂正値eを、次式に従い決定する、
    Figure 2024029084000217
    請求項9記載の方法。
  11. 前記バイト訂正値eを、次式に従い決定する、
    Figure 2024029084000218
    ただし、
    Figure 2024029084000219
    が成り立ち、またE,E,...,EL-1は、(L-1)個の前記第2のデータバイトに対するブロック誤り信号を表す、
    請求項9記載の方法。
  12. 少なくとも2つのバイト訂正値を並列に決定し、少なくとも1つのバイト訂正値を、訂正の必要がない正しい第2の逆データバイトに対して決定する、
    請求項9から11までのいずれか1項記載の方法。
  13. -前記第1のデータバイト、および前記第1のデータバイトに基づいて決定される第1の検査ビットを前記メモリに記憶し、
    -第2のデータバイトおよび第2の検査ビットを前記メモリから読み出し、
    -前記第2のデータバイトが前記ブロック誤り符号の符号語ではない場合には、前記誤り信号および前記第2の検査ビットに基づいて、前記第2のデータバイトの訂正を行う、
    請求項1から12までのいずれか1項記載の方法。
  14. 訂正された前記第2のデータバイトを、前記第1の変換とは逆の変換である第2の変換によって、訂正された第2の逆データバイトに変換する、
    請求項13記載の方法。
  15. 少なくとも2つの第2のデータバイトに対する少なくとも2つのバイト訂正値を並列に決定し、少なくとも1つのバイト訂正値を、訂正の必要がない正しい第2のデータバイトに対して決定する、
    請求項13または14記載の方法。
  16. 少なくとも2つのグループ誤り、または既知でないバイト位置における誤りの誤り訂正を実施する、
    請求項1から15までのいずれか1項記載の方法。
  17. ある特定の第2のデータバイトが対応する前記ブロック誤り符号の符号語ではないことを前記誤り信号が示す場合には、前記第2のデータバイトの少なくとも1つの誤りのあるビットを、前記グループ誤りを考慮して訂正する、
    請求項16記載の方法。
  18. 誤りのある第2のデータバイトを、並列にまたは実質的に並列に訂正する、
    請求項13から17までのいずれか1項記載の方法。
  19. 前記第1のデータバイトも前記第2のデータバイトも、それぞれ12ビットより多くのビットを含んでいない、
    請求項1から18までのいずれか1項記載の方法。
  20. 前記第2のデータバイトのうちの少なくとも2つに対する少なくとも2つの誤り信号を、並列にまたは実質的に並列に決定する、
    請求項1から19までのいずれか1項記載の方法。
  21. データビットを処理するための装置において、
    -前記装置は、処理ユニットを含んでおり、前記処理ユニットは、
    -第1の変換によって、前記データビットを第1のデータバイトに変換し、
    -前記第1のデータバイトをメモリに記憶し、
    -誤りのない場合にはそれぞれがブロック誤り符号の符号語である第2のデータバイトを前記メモリから読み出し、
    -第2のデータバイト毎に、前記第2のデータバイトが符号語であるか否かを表す誤り信号を決定する、
    ように構成されている、
    装置。
  22. 前記メモリは、以下のコンポーネント、すなわち、
    -キャッシュメモリ、
    -レジスタまたはレジスタアレイ、
    -フラッシュメモリ、
    -MRAM、
    -SRAM、
    -RE-RAM、
    -PC-RAM、
    -FE-RAM、
    -CB-RAM、
    -マルチビットメモリ、
    -マルチレベルメモリ、
    のうちの少なくとも1つを含んでいる、
    請求項21記載の装置。
  23. 前記メモリは、前記装置の一部であるか、または前記装置とは別個に形成されている、
    請求項21または22記載の装置。
  24. 前記処理ユニットは、さらに、前記第1の変換とは逆の変換である第2の変換によって、前記第2のデータバイトを第2の逆データバイトに変換するように構成されている、
    請求項21から23までのいずれか1項記載の装置。
  25. 前記処理ユニットは、さらに、
    -前記第1のデータバイト、および前記第1のデータバイトに基づいて決定される第1の検査ビットを記憶し、
    -前記第2のデータバイトおよび第2の検査ビットを前記メモリから読み出し、
    -前記第2のデータバイトが前記ブロック誤り符号の符号語ではない場合には、前記誤り信号および前記第2の検査ビットに基づいて、前記第2のデータバイトを訂正する、
    ように構成されている、
    請求項21から24までのいずれか1項記載の装置。
  26. データビットを処理するための装置において、前記装置は、
    -第1の変換によって、前記データビットを第1のデータバイトに変換する手段、
    -前記第1のデータバイトをメモリに記憶する手段、
    -誤りのない場合にはそれぞれがブロック誤り符号の符号語である第2のデータバイトを前記メモリから読み出す手段、
    -第2のデータバイト毎に、前記第2のデータバイトが符号語であるか否かを表す誤り信号を決定する手段、
    を含んでいる、
    装置。
JP2023216831A 2018-04-10 2023-12-22 グループ誤りを用いる誤り検出 Pending JP2024029084A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
DE102018108446 2018-04-10
DE102018108446.3 2018-04-10
DE102018131613.5A DE102018131613A1 (de) 2018-04-10 2018-12-10 Fehlererkennung mittels Gruppenfehler
DE102018131613.5 2018-12-10
JP2019074125A JP2019186939A (ja) 2018-04-10 2019-04-09 グループ誤りを用いる誤り検出

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019074125A Division JP2019186939A (ja) 2018-04-10 2019-04-09 グループ誤りを用いる誤り検出

Publications (1)

Publication Number Publication Date
JP2024029084A true JP2024029084A (ja) 2024-03-05

Family

ID=67991460

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019074125A Pending JP2019186939A (ja) 2018-04-10 2019-04-09 グループ誤りを用いる誤り検出
JP2023216831A Pending JP2024029084A (ja) 2018-04-10 2023-12-22 グループ誤りを用いる誤り検出

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019074125A Pending JP2019186939A (ja) 2018-04-10 2019-04-09 グループ誤りを用いる誤り検出

Country Status (3)

Country Link
US (1) US10903859B2 (ja)
JP (2) JP2019186939A (ja)
DE (1) DE102018131613A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020120719A1 (de) * 2020-08-05 2022-02-10 Infineon Technologies Ag Zugriff auf einen speicher
DE102022101798B3 (de) 2022-01-26 2023-07-20 Infineon Technologies Ag Fehlerverarbeitung
US20240028247A1 (en) * 2022-07-19 2024-01-25 Micron Technology, Inc. Efficient error signaling by memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59201557A (ja) * 1983-04-28 1984-11-15 Matsushita Electric Ind Co Ltd 送受信システム
JPH1145188A (ja) * 1997-07-25 1999-02-16 Sony Corp エラー訂正装置およびその方法、ならびに、ディジタル信号再生装置およびその方法
KR100265769B1 (ko) * 1998-05-19 2000-09-15 윤종용 광 디스크 시스템에서의 에러 정정 장치 및 그 에러 정정 방법
JP4048617B2 (ja) * 1998-09-07 2008-02-20 ソニー株式会社 誤り訂正符号の復号方法および復号装置
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
KR100917883B1 (ko) * 2003-02-25 2009-09-16 삼성전자주식회사 에러 정정을 위한 에러 플래그 생성 장치 및 그 방법
US7861141B2 (en) * 2005-10-21 2010-12-28 Mediatek Inc. Method and device for error analysis of optical disc
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
JP2010257523A (ja) * 2009-04-24 2010-11-11 Panasonic Corp データテープ制御装置
US8605489B2 (en) * 2011-11-30 2013-12-10 International Business Machines Corporation Enhanced data retention mode for dynamic memories
US20140013181A1 (en) * 2012-07-04 2014-01-09 Lisa Fredrickson Error Correction Coding Using Large Fields
JP6209880B2 (ja) * 2013-07-04 2017-10-11 富士通株式会社 データ管理装置、及びデータ管理装置の制御方法
US9594642B1 (en) * 2016-01-05 2017-03-14 International Business Machines Corporation Iterative decode and post-decode microcode cut and paste optimization

Also Published As

Publication number Publication date
JP2019186939A (ja) 2019-10-24
DE102018131613A1 (de) 2019-10-10
US10903859B2 (en) 2021-01-26
US20190312601A1 (en) 2019-10-10

Similar Documents

Publication Publication Date Title
JP2024029084A (ja) グループ誤りを用いる誤り検出
US5099484A (en) Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection
US6640327B1 (en) Fast BCH error detection and correction using generator polynomial permutation
US7398449B1 (en) Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US4777635A (en) Reed-Solomon code encoder and syndrome generator circuit
US6615387B1 (en) Method and apparatus for error detection
US7203890B1 (en) Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits
EP0290349B1 (en) Method and apparatus for encoding using a Reed-Solomon error correction code
EP0114938A2 (en) On-the-fly multibyte error correction
US5668976A (en) Error correction method and apparatus for disk drive emulator
JPS6122826B2 (ja)
CN102084335A (zh) 任意伽罗瓦域算术在可编程处理器上的实施
JP2013070122A (ja) 誤り訂正装置、誤り訂正方法及び演算装置
US10812109B2 (en) Determination and use of byte error position signals
JP2011514743A (ja) 受信したシンボル列におけるフェーズドバーストエラー、消失、シンボルエラー、及び、ビットエラーを検出及び訂正するための方法及びシステム
US20190253078A1 (en) Integrated circuit and method for processing an encoded message word
US20060168495A1 (en) Computation of cyclic redundancy check
US7093183B2 (en) Symbol level error correction codes which protect against memory chip and bus line failures
JP2005293557A (ja) 復号器、データ記憶装置およびデータの誤り訂正の方法
US7085988B1 (en) Hashing system utilizing error correction coding techniques
US10567007B2 (en) Device and method of processing a data word using checkbits
US20080140740A1 (en) Systems and methods for processing data sets in parallel
US20080154998A1 (en) Method and apparatus for dividing information bit string
JPH0220124A (ja) インタリーブ式エンコーディング方法及び装置
US10623026B2 (en) Error correction

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240119