[go: up one dir, main page]

JP2015142381A - データ反転によってデータ記憶を改良するための装置および方法 - Google Patents

データ反転によってデータ記憶を改良するための装置および方法 Download PDF

Info

Publication number
JP2015142381A
JP2015142381A JP2015012913A JP2015012913A JP2015142381A JP 2015142381 A JP2015142381 A JP 2015142381A JP 2015012913 A JP2015012913 A JP 2015012913A JP 2015012913 A JP2015012913 A JP 2015012913A JP 2015142381 A JP2015142381 A JP 2015142381A
Authority
JP
Japan
Prior art keywords
bits
bit
memory
value
inverted
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.)
Granted
Application number
JP2015012913A
Other languages
English (en)
Other versions
JP5923631B2 (ja
Inventor
トーマス ケルン,
Kern Thomas
トーマス ケルン,
カール ホフマン,
Hofmann Karl
カール ホフマン,
ミヒャエル ゲッセル,
Goessel Michael
ミヒャエル ゲッセル,
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 JP2015142381A publication Critical patent/JP2015142381A/ja
Application granted granted Critical
Publication of JP5923631B2 publication Critical patent/JP5923631B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/025Detection or location of defective auxiliary circuits, e.g. defective refresh counters in signal lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • 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
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • 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/611Specific encoding aspects, e.g. encoding by means of decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • 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/152Bose-Chaudhuri-Hocquenghem [BCH] 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

【課題】 データ反転によってデータ記憶を改良するための装置および方法を提供する。【解決手段】 装置が、処理ユニットと、メモリとを含む。処理ユニットは、複数のビットを符号化して複数の符号化ビットを取得するように構成され、処理ユニットは、反転指定を特定するように構成される。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成される。符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、符号化ビットの部分集合の各符号化ビットを反転させて第2のコードワードを取得し、第2のコードワードをメモリに記憶するように構成される。【選択図】 図1

Description

本発明は、データ反転によってデータ記憶を改良するための装置および方法に関する。
マルチビット訂正のための改良された概念を提供できれば非常に有益である。
メモリの信頼性を高めるとともに、新種のメモリでの電力消費を減少させることがますます重要となっている。
MRAM(磁気抵抗ランダムアクセスメモリ)、R−RAM(抵抗性ランダムアクセスメモリ)など多くのタイプのメモリは、永久的な故障および誤りに関して非対称の挙動を示す。例えば、多くのメモリは、一般に、1縮退(stuck−at−1)メモリ故障よりも多くの0縮退(stuck−at−0)メモリ故障を示す。他のメモリは、一般に、0縮退メモリ故障よりも多くの1縮退メモリ故障を示す。
例えば、フラッシュメモリは、「1」または「0」を書き込むための電力消費に関して非対称である。すなわち、メモリに「1」が書き込まれるときと、メモリに「0」が書き込まれるときで、電力消費が異なる。R−RAMでは、誤りは単方向性であり、主に、1縮退誤りではなく0縮退誤りが生じる。MRAMに関しても、主に、1縮退故障ではなく0縮退故障が生じる。
データ記憶のための改良された概念を提供できれば非常に有益である。
Lin,S.and Costello,D.Error Control Coding,Prentice Hall,1983,page 149
処理ユニットと、メモリとを備える装置が提供される。処理ユニットは、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成され、ここで、複数の符号化ビットはそれぞれビット値を有し、線形誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成する。さらに、処理ユニットは、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定(inversion decision)を特定するように構成され、ここで、部分集合は、複数の符号化ビットのうちの少なくとも3つの符号化ビットを含む。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成され、ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含む。さらに、符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、ビット値を変更することによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得するように構成され、記憶ワードとして、第2のコードワードのビットをメモリに記憶するように構成され、ここで、第2のコードワードのビットは、反転された指示ビットを含み、それにより、指示ビットは、第1の所定のビット値とは異なる第2の所定のビット値を有する。
方法が提供される。この方法は、エンコーダを使用して、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するステップを含み、ここで、複数の符号化ビットはそれぞれビット値を有し、線形誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成し、方法はさらに、処理ユニットを使用して、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するステップを含み、ここで、部分集合は、複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、方法はさらに、符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、記憶ワードとして、第1のコードワードのビットをメモリに記憶するステップを含み、ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含み、符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得し、記憶ワードとして、第2のコードワードのビットをメモリに記憶するステップを含み、ここで、第2のコードワードのビットは、反転された指示ビットを含み、それにより、指示ビットは、第1の所定のビット値とは異なる第2の所定のビット値を有する。
処理ユニットと、メモリとを備える装置が提供される。処理ユニットは、複数のビットを符号化して複数の符号化ビットを取得するように構成され、さらに、処理ユニットは、反転指定を特定するように構成される。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成される。符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、符号化ビットの部分集合の各符号化ビットを反転させて第2のコードワードを取得し、第2のコードワードをメモリに記憶するように構成される。
装置が提供される。装置は、処理ユニットと、メモリとを備える。処理ユニットは、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成され、ここで、複数の符号化ビットはそれぞれビット値を有し、誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成する。さらに、処理ユニットは、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するように構成され、ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合のうちの1つの符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値である。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成され、ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含む。符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得するように構成され、さらに、記憶ワードとして、第2のコードワードをメモリに記憶するように構成され、ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
さらに、別の実施形態が提供される。装置は、処理ユニットと、メモリとを備える。そのような別の実施形態では、処理ユニットは、アドレス可能なメモリにアドレスaで記憶されるペイロードデータビットx,…,xを、定数値を有するl(l≧1)個のビットbf,…,bfによって補完するように構成される。
処理ユニットは、アドレスビットから導出されるビットがコードワードの形成に含まれないときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、定数値を有するビットbf,…,bfおよびペイロードデータビットx,…,xをコードワードc,…,c,bf1,…,bfl,1,…,xに符号化するように構成され、ここで、c,…,cは、bf,…,bfl,,…,xから決定されるチェックビットであり、さらに、処理ユニットは、アドレスビットa,…,aから導出されるビットA,…,Aが符号化に含まれるときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、ビットbf,…,bf,x,…,x,A,…,Aをコードワードc,…,c,bf1,…,bf,x1,…,xn,,…,Aにコード化するように構成され、ここで、c,…,cは、bf,…,bf,x,…,x,A,…,Aから決定されるチェックビットであり、A,…,A=f(a,…,a)は、アドレスビットから関数f:{0,1}→{0,1}によって決定される。
さらに、処理ユニットは、直接または反転されて記憶されるビットc,…,c,bf,…,bf,x,…,xのK(K≧1)個のビットグループY,…,Yを定義するように構成され、それにより、所定のビットbf,…,bfの部分集合が、これらのグループそれぞれに一意に割り振られる。
さらに、処理ユニットは、グループY,…,Yのうちのどのビットグループが、反転されてまたは反転されずにメモリに記憶されるかを選択するように構成される。
処理ユニットは、メモリにアドレスaでビットc,…,c,bf,…,bf,x,…,xを書き込むように構成され、ここで、反転されてメモリに書き込まれるビットのグループに属するビットは、書込み前に反転され、反転されるビットを含むグループに属さないビットは、反転されずにメモリに書き込まれる。
さらに、処理ユニットは、メモリにアドレスaで記憶されているビットを読み出すように構成される。
アドレスビットから導出されるビットがコードワードの形成に含まれない場合には、処理ユニットは、同じアドレスに書き込まれた値とは誤りにより異なることがある、メモリから読み出されたビットを、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて訂正するように構成される。
アドレスビットから導出されるビットがコードワードの形成に含まれる場合には、処理ユニットは、メモリから読み出された、誤りであり得る値を、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて、誤りであり得るアドレスビットから導出されるやはり誤りであり得るビット
Figure 2015142381
も使用することによって訂正するように構成される。
処理ユニットは、符号Cを使用することによって訂正され、それぞれのビットグループに一意に割り振られた読み出された定数値から、どのビットグループがメモリに直接または反転されて書き込まれているかを決定するように構成される。
処理ユニットは、前のステップでの書込みに際して反転したビットを含むビットグループと判断されるビットグループから読み出して訂正したビットを反転するように構成される。
一実施形態では、k=r、および(A,…,A)=(a,…,a)が成り立つ。
一実施形態によれば、k=1、A=f(a,…,a)=a+a+…+aが成り立ち、Aは、アドレスビットa,…,aのパリティである。
さらに、さらなる実施形態は、少なくとも1ビット誤りを訂正する線形符号Cのコードワードを形成するビットの部分集合をメモリセルのメモリに直接または反転させて書き込むため、および、メモリに書き込まれているビットを読み出し、直接または反転されて記憶されていた、メモリから誤り状態で読み出されていることがあるビットから、元のビットを回復するために提供される。装置は、処理ユニットと、メモリとを備える。
そのようなさらなる実施形態では、処理ユニットは、メモリに直接または反転させて書き込むことができる、少なくとも1ビット誤りを訂正する線形符号Cを用いて符号化されたビットの部分集合の数K(K≧1)を定義するように構成される。
処理ユニットは、アドレスa=a1,…,a(r≧2)で、少なくとも1ビット誤りを訂正する線形系統的符号のコードワードのサブワードとして記憶されるn個のペイロードデータビットx,…,xを提供するように構成される。
処理ユニットは、符号Cの情報ビットu,…,uを生成するように構成され、ここで、アドレスaが符号Cのコードワードの形成に含まれない場合には、データビットx,…,xは、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x
が成り立ち、ここで、N=l+nであり、アドレスaが符号Cのコードワードの形成に含まれる場合には、データビットx,…,x、およびアドレスビットa,…,aから導出されるビットA,…,Aが、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x,A,…,A
が成り立ち、ここで、N=l+n+kであり、ここで、
,…,A=f(a,…,a
は、r個のアドレスビットa,…,aの値から関数fによって一意に決定される2進値であり、l≧1および1≦k≦rであり、
ここで、アドレスビットが誤り検出および誤り訂正に含まれない場合には、処理ユニットは、符号Cのコードワードy,…,yを生成するように構成され、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)G=c,…,c,bf,…,bf,x1,…,x
が成り立ち、c,…,cは、m個のチェックビットであり、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、m=P−NおよびN=n+lが成り立ち、
ここで、処理ユニットは、ビット
,…,y=c,…,c,bf,…,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するように構成され、
したがって、ビットbf,…,bfの部分集合が、各部分集合Y,…,Yに一意に割り振られ、
したがって、
Figure 2015142381
がビットy,…,yの2進値である場合、k=1,…,Kおよびj=1,…,Pに関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードであり、したがって、
Figure 2015142381
が成り立ち、Hは、符号CのH行列であり、
ここで、処理ユニットは、ビットグループY,…,Yのうちのどのグループがメモリに直接または反転されて書き込まれるかを定義するように構成され、
処理ユニットは、メモリに書き込まれるP個のビットd,…,dを生成するように構成され、ここで、i=1,…,Pに関して、yが、反転されてメモリに書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、yが、反転されてメモリに書き込まれるビットを含むグループに属さないときには、d=yであり、
ここで、処理ユニットは、メモリにアドレスaでビットd,…,dを書き込むように構成され、
ここで、処理ユニットは、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すように構成され、これらの値は、アドレスaに書き込まれた値d,…,dから、生じ得る誤りに起因して生じており、
ここで、処理ユニットは、符号Cによって訂正すべきL個のビット位置k,…,kを定義するように構成され、ここで、l≦Pおよび{k,…,k}⊆{1,…,P}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、
ここで、処理ユニットは、符号Cによって訂正可能な誤りに関して、符号Cに基づいて訂正すべき所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するように構成され、
ここで、処理ユニットは、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するように構成され、ここで、opは、一意に可逆のブール演算であり、
ここで、処理ユニットは、既知の挿入された値bf,…,bfと、符号Cを使用することによって訂正されたそれぞれの読出し値とに基づいて、どのグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するように構成され、
ここで、処理ユニットは、
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するように構成され、ここで、「op」は、2項の一意に可逆のブール演算であり、
ここで、アドレスビットが誤り検出および誤り訂正に含まれる場合には、処理ユニットは、符号Cのコードワードy=y,…,yを生成するように構成され、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)・G=c,…,c,bf,…,bf,x1,…,x,A,…,A
が成り立ち、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+l+m+kであり、c,…,cは、チェックビットであり、
ここで、処理ユニットは、ビット
,…,yn+l,yn+l+k+1,…,y=c,…,c,bf,…,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するように構成され、
したがって、ビットbf,…,bfの各ビットは、部分集合Y,…,Yの1つのみに属し、したがって、
Figure 2015142381
がビットy,…,yの2進値である場合、k=1,…,Kおよびj=1,…,Pに関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードであり、したがって、
Figure 2015142381
が成り立ち、Hは、符号CのH行列であり、
ここで、処理ユニットは、どのビットグループY,…,Yがメモリに直接または反転されて書き込まれるかを定義するように構成され、
ここで、処理ユニットは、メモリに書き込まれるP−k個のビットd,…,dm+l+nを生成するように構成され、ここで、i=1,…,m+n+lに関して、
が、メモリに直接書き込まれるビットを含むグループに属するときには、d=yであり、
が、メモリに反転されて書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、
ここで、処理ユニットは、メモリにアドレスaでビットd,…,dm+n+lを書き込むように構成され、
ここで、処理ユニットは、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すように構成され、これらの値は、アドレスaに書き込まれた値d,…,dn+l、n+k+1,…,dから、生じ得る誤りに起因して生じており、
ここで、処理ユニットは、符号Cによって訂正すべきL個のビット位置k,…,kを定義するように構成され、ここで、l≦P−kおよび{k,…,k}⊆{1,…,n+l,n+l+k+1,…,P}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、
ここで、処理ユニットは、符号Cによって訂正可能な誤りに関して、所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するように構成され、
ここで、処理ユニットは、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するように構成され、ここで、「op」は、2進の明瞭に可逆な演算であり、
ここで、処理ユニットは、既知の挿入された値bf,…,bfと、読み出され、符号Cを使用することによって訂正された対応する訂正値とに基づいて、どのビットグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するように構成され、
ここで、処理ユニットは、
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するように構成され、ここで、「op」は、2項の一意に可逆のブール演算である。
別の実施形態によれば、ビットをメモリに記憶するための装置が提供され、ここで、ビットは、線形誤り訂正符号Cを用いて符号化され、線形誤り訂正符号Cは、少なくとも3の符号距離を有し、線形誤り訂正符号Cを用いて符号化されたビットの部分集合がメモリに直接書き込まれるか、それともビット毎に反転されて書き込まれるかが判断され、符号Cは、H行列Hを備え、ここで、装置は、処理ユニットと、メモリとを備える。メモリに直接または反転されて書き込まれたビットの部分集合は、少なくとも1つの2進定数値を含み、この値は、ペイロードデータビットと共に、線形符号Cのコードワードを形成するためにコード化に使用される。処理ユニットは、それぞれのビット部分集合のビットがメモリに直接書き込まれるときに、2進定数値を2進値bfとしてメモリに書き込むように構成される。処理ユニットは、それぞれのビット部分集合のビットがメモリに反転されて書き込まれるときに、2進定数値を反転値
Figure 2015142381
としてメモリに書き込むように構成される。
処理ユニットは、メモリに直接または反転されて書き込まれたビットの部分集合が反転されるときに、符号Cのコードワードを同じ符号のコードワードに変換するように構成され、符号のH行列は、メモリに直接または反転されて書き込まれたビットの部分集合に対応するH行列の列の各成分の「1」の数が偶数であるように生成される。
さらに、処理ユニットは、メモリからの読出し時に、メモリから読み出された、誤りであり得るビットを、線形誤り訂正符号Cを使用することによって訂正するように構成され、ここで、それぞれのビット部分集合がメモリに直接書き込まれているときには、少なくとも、定数2進値bfが書き込まれているビット位置にあるビットが訂正され、または、それぞれのビット部分集合がメモリに反転されて書き込まれているときには、少なくとも、定数2進値
Figure 2015142381
が書き込まれているビット位置にあるビットが訂正される。
さらに、処理ユニットは、読出し後、定数値bfまたは反転された定数値
Figure 2015142381
が記憶されているビット位置から読み出されている訂正された値が
Figure 2015142381
であるときには、メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、この値がbfであるときには反転しないように構成される。
別の実施形態によれば、方法が提供される。この方法は、以下のステップを含む。
線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するステップ。ここで、複数の符号化ビットがそれぞれビット値を有し、線形誤り訂正符号が、少なくとも3の符号距離を有し、複数の符号化ビットが、線形誤り訂正符号の第1のコードワードを形成する。
符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するステップ。ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合のうちの1つの符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値である。
符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、記憶ワードとして、第1のコードワードのビットをメモリに記憶するステップ。ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含む。
符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得し、記憶ワードとして、第2のコードワードをメモリに記憶するステップ。ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
いくつかの実施形態は、データ記憶に関してデータ反転を採用することができるという知見に基づく。いくつかの実施形態によれば、データ反転は、永久的な故障をマスクすることを可能にする。これは特に、メモリが比較的新しいときに誤り率が比較的高いときに有用である。
あるデータ位置で0縮退故障が生じる場合、この位置に記憶すべきビットが0である場合には誤りが生じない。しかし、記憶すべきビットが1である場合には誤りが生じる。記憶すべきビットが1である場合、反転されたデータに関しては、この位置に記憶すべきビットは0であり、したがって、ビットが反転されて記憶される場合には誤りが生じない。
いくつかの実施形態によれば、複数の縮退故障が存在する場合、データワード内の異なるデータグループを個別に反転する、または反転しないことが非常に有用である。これにより、データのグループを反転させることによって、記憶されるデータを、生じている故障に適合させることができる。
さらに、例えば「1」を記憶するのに「0」を記憶するよりも多くのエネルギーが必要である場合、またはその逆の場合に、データ反転は、電力消費を減少させることを可能にする。
例えば、消去状態が「1」によって表される場合、「1」を書き込むよりも「0」を書き込むのにはるかに多くのエネルギーが必要となることがある。あるいは、例えば、データワード内の「0」の数が「1」の数よりも多い場合、記憶前にデータを反転させることが有用である。
いくつかの実施形態によれば、データがグループ毎に反転される場合に、より良い適応を実現することができる。
いくつかの実施形態によれば、誤り率を減少させるためにデータ反転が採用される。誤りが単方向で生じる場合、例えば、記憶すべき「1」が例えば0縮退故障により「0」に変えられる場合、「0」のビットは誤り状態に変えられない。
データワード内の「1」の数が「0」の数よりも多い場合、1縮退故障よりも多くの0縮退故障が存在するときには、記憶前にデータを反転させることが有用である。それにより、反転後、「0」の数が「1」の数よりも多くなり、生じ得る誤りの数が減少される。
データがグループ毎に反転される場合に、より良い適応を実現することができる。
いくつかの実施形態によれば、「フィックスビット(fixbit)」がデータビットに追加される。データビットとフィックスビットは、合わせて、誤り訂正線形符号Cの情報ビットとして使用され、情報ビット、すなわちデータビットとフィックスビットから、チェックビットが決定される。
いくつかの実施形態によれば、符号Cは、ワードwがコードワードである場合に、反転されたコードワード
Figure 2015142381
もコードワードであるように選択される。いくつかの実施形態では、コードワードは、直接または反転されて記憶される。
いくつかの実施形態では、誤りビットが生じた場合、誤り訂正符号Cを使用してフィックスビットも訂正される。訂正後、訂正されたフィックスビットは、メモリに記憶されるデータが反転されるべきか否かを示す。いくつかの実施形態によれば、フィックスビットは、データビットおよびチェックビットが訂正されるのと同じ線形符号Cによって訂正される。
いくつかの実施形態では、コードワードのビットのグループまたは部分集合が反転される。グループが反転されるか否かを示すフィックスビットが、あらゆるサブグループに割り当てられる。これらのフィックスビットは全て、チェックビットを決定するための情報ビットの一部である。
いくつかの実施形態によれば、サブグループは、サブグループのビットの反転が符号Cのコードワードを符号Cの別のコードワードに変換するように選択される。
いくつかの実施形態では、アドレスビットは、コードワードの一部であるが、記憶されず、アドレスビットは反転されない。
いくつかの実施形態によれば、フィックスビット(反転フラグビット)は、線形符号による誤り訂正の一部である。
いくつかの実施形態では、ビットのサブグループが反転される。
いくつかの実施形態によれば、サブグループのビットの反転がコードワードを別のコードワードに変換するように符号が選択される。
いくつかの実施形態では、チェックビットの決定にアドレスが含まれるが、それらは反転されない。
添付図面を使用していくつかの実施形態を詳細に述べる前に、同じまたは機能的に同一の要素は、図中で同じ参照番号を付されており、同じ参照番号を付されている要素に関する説明は繰り返さないことを指摘しておく。したがって、同じ参照番号を有する要素に関して与えられる説明は、相互に交換可能である。
一実施形態による装置を示す図である。 さらなる実施形態による装置を示す図である。 別の実施形態による装置を示す図である。 さらなる実施形態による装置を示す図である。 さらなる実施形態による装置を示す図である。 別のさらなる実施形態による装置を示す図である。
処理ユニットと、メモリとを備える装置が提供される。処理ユニットは、複数のビットを符号化して複数の符号化ビットを取得するように構成され、処理ユニットは、反転指定を特定するように構成される。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成される。符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、第1のコードワードの符号化ビットの部分集合の各符号化ビットを反転させて第2のコードワードを取得し、第2のコードワードをメモリに記憶するように構成される。
図1は、一実施形態による装置を示す。この装置は、処理ユニット120と、メモリ110とを備える。処理ユニット120は、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成され、ここで、複数の符号化ビットはそれぞれビット値を有し、誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成する。さらに、処理ユニット120は、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するように構成され、ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合のうちの1つの符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値である。符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニット120は、記憶ワードとして、第1のコードワードのビットをメモリ110に記憶するように構成され、ここで、メモリ110に記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含む。符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニット120は、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得するように構成され、さらに、記憶ワードとして、第2のコードワードをメモリ110に記憶するように構成され、ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
上述したように、複数の符号化ビットが、線形誤り訂正符号の第1のコードワードを形成する。これは、複数の全ての符号化ビットのうちのいくつかの符号化ビットが、誤り訂正符号の第1のコードワードを形成することを意味する。
一実施形態では、処理ユニットは、例えば、反転指定として決定信号を生成するように構成されてもよく、ここで、決定信号は、例えば、符号化ビットの部分集合が反転されるべきか否かを示すことができる。
一実施形態によれば、装置は回路でよい。
一実施形態では、符号化ビットの部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含む。
一実施形態によれば、符号化ビットの部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含むわけではない。
一実施形態では、誤り訂正符号は、線形誤り訂正符号Cであり、第1の所定の値は、第1の定数2進値bfであり、第2の所定の値は、第2の定数2進値
Figure 2015142381
であり、処理ユニット120は、記憶ワードをメモリ110から読み出すように構成され、処理ユニット120は、記憶ワードを読み出した後、指示ビットが記憶されているメモリ110内のビット位置から読み出されているビット値が第2の定数2進値
Figure 2015142381
であるときには、メモリ110に直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、指示ビットが記憶されているメモリ110内のビット位置から読み出されているビット値が第1の定数2進値bfであるときには反転しないように構成される。
一実施形態によれば、誤り訂正符号は、線形誤り訂正符号Cであり、第1の所定の値は、第1の定数2進値bfであり、第2の所定の値は、第2の定数2進値
Figure 2015142381
であり、処理ユニット120は、記憶ワードをメモリ110から読み出すように構成され、処理ユニット120は、1つまたは複数のビットが誤りである場合には、線形誤り訂正符号Cを使用することによって、記憶ワードの1つまたは複数のビットを訂正するように構成され、少なくとも指示ビットが書き込まれているビット位置に記憶されているビットが、前記ビットが誤りである場合に訂正され、処理ユニット120は、前記記憶ワードを読み出した後、かつ1つまたは複数のビットを訂正した後、指示ビットが記憶されているメモリ110内のビット位置から読み出されているビット値が第2の定数2進値
Figure 2015142381
であるときには、メモリ110に直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、指示ビットが記憶されているメモリ110内のビット位置から読み出されているビット値が第1の定数2進値bfであるときには反転しないように構成される。
一実施形態では、線形誤り訂正符号Cは、パリティチェック行列Hを含み、パリティチェック行列Hの列の各成分の「1」の数は偶数である。
一実施形態によれば、メモリ110は、レジスタ、レジスタアレイ、またはアドレス可能なメモリ110である。
一実施形態では、メモリは、アドレス可能なメモリであり、処理ユニット120は、線形誤り訂正符号を採用することによって、かつアドレスビットを使用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成される。
一実施形態によれば、処理ユニット120は、符号化ビットの部分集合の「0」の数または符号化ビットの部分集合の「1」の数に応じて反転指定を特定するように構成される。
一実施形態では、書込み値をメモリに書き込んだ後、次いで書込み値をメモリから読み出して読出し値を取得した後、さらに、書込み値と読出し値とを比較した後に、誤りが生じていないときには、処理ユニットは、符号化ビットの部分集合が反転されるべきでないことを示す反転指定を特定するように構成される。
一実施形態では、書込み値をメモリに書き込んだ後、次いで書込み値をメモリから読み出して読出し値を取得した後、さらに、書込み値と読出し値とを比較した後に、せいぜいT(Tは、線形誤り訂正符号によって訂正することができる誤りの数以下である)個の誤りが生じているときには、処理ユニットは、符号化ビットの部分集合が反転されるべきでないことを示す反転指定を特定するように構成される。
一実施形態では、ビット部分集合の反転された書込み値をメモリ110に書き込んだ後、次いで書き込まれている反転されている書込み値をメモリ110から読み出して読出し値を取得した後、さらに、書き込まれている反転されている書込み値と読出し値とを比較した後に、直接書き込み、次いで読出し値と書込み値とを比較した後に生じるのとせいぜい同数の誤りが生じているときには、処理ユニット120は、符号化ビットの部分集合が反転されるべきであることを示す反転指定を特定するように構成される。
一実施形態によれば、ビット部分集合の反転された書込み値をメモリ110に書き込んだ後、次いで書き込まれている反転されている書込み値をメモリ110から読み出して読出し値を取得した後、さらに、書き込まれている反転されている書込み値と読出し値とを比較した後に、せいぜいT(Tは、符号Cによって訂正することができる誤りの数よりも小さい)個の誤りが生じているときには、処理ユニット120は、符号化ビットの部分集合が反転されるべきであることを示す反転指定を特定するように構成される。
一実施形態では、メモリ110はFlashメモリ110である。
別の実施形態によれば、メモリ110はM−RAMであり、またはメモリ110はR−RAMである。
一実施形態では、誤り訂正符号は、生成行列を含み、処理ユニット120は、符号化のために系統的形態での生成行列を使用することによって、複数のビットを符号化するように構成される。
別の実施形態によれば、符号Cは、ハミング符号または短縮ハミング符号である。
一実施形態では、誤り訂正符号は、Hsiao符号または短縮Hsiao符号である。
別の実施形態によれば、符号Cは、BCH符号または短縮BCH符号である。
さらに、別の実施形態が提供される。そのような別の実施形態では、処理ユニット120は、アドレス可能なメモリ110にアドレスaで記憶されるペイロードデータビットx,…,xを、定数値を有するl(ここでl≧1)個のビットbf,…,bfによって補完するように構成される。
処理ユニット120は、アドレスビットから導出されるビットがコードワードの形成に含まれないときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、定数値を有するビットbf,…,bfおよびペイロードデータビットx,…,xをコードワードc,…,c,bf1,…,bfl,1,…,xに符号化するように構成され、ここで、c,…,cは、bf,…,bf,x,…,xから決定されるチェックビットであり、さらに、処理ユニット120は、アドレスビットa,…,aから導出されるビットA,…,Aが符号化に含まれるときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、ビットbf,…,bf,x,…,x,A,…,Aをコードワードc,…,c,bf1,…,bfl,1,…,xn,,…,Aにコード化するように構成され、ここで、c,…,cは、bf,…,bf,x,…,x,A,…,Aから決定されるチェックビットであり、A,…,A=f(a,…,a)は、アドレスビットから関数f:{0,1}→{0,1}によって一意に決定される。
さらに、処理ユニット120は、直接または反転されて記憶されるビットc,…,c,bf,…,bf,x,…,xのK(K≧1)個のビットグループY,…,Yを定義するように構成され、それにより、所定のビットbf,…,bfの部分集合が、これらのグループそれぞれに一意に割り当てられる。
処理ユニット120は、ビットグループY,…,Yを決定するように構成され、それにより、1グループY(j=1,…,K)の全てのビットが反転される場合には、線形符号Cの第1のコードワードが符号Cの第2のコードワードに変換され、処理ユニットは、グループY,…,Yのうちのどのビットグループが、反転されてまたは反転されずにメモリに記憶されるかを選択するように構成される。
処理ユニット120は、メモリにアドレスaでビットc,…,c,bf,…,bf,x,…,xを書き込むように構成され、ここで、メモリ110に反転されて書き込まれるビットのグループに属するビットは、書込み前に反転され、反転されるビットを含むグループに属さないビットは、反転されずにメモリ110に書き込まれる。
さらに、処理ユニット120は、メモリ110にアドレスaで記憶されているビットを読み出すように構成される。
アドレスビットから導出されるビットがコードワードの形成に含まれない場合には、処理ユニット120は、同じアドレスに書き込まれた値とは誤りにより異なることがある、メモリ110から読み出されたビットを、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて訂正するように構成される。
アドレスビットから導出されるビットがコードワードの形成に含まれる場合には、処理ユニット120は、メモリ110から読み出された、誤りであり得る値を、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて、誤りであり得るアドレスビットから導出されるやはり誤りであり得るビット
Figure 2015142381
も使用することによって訂正するように構成される。
処理ユニット120は、それぞれのビットグループに一意に割り当てられた、符号Cを使用することによって訂正された読み出された定数値から、どのビットグループがメモリに直接または反転されて書き込まれているかを決定するように構成される。
処理ユニット120は、前のステップで書込み中に反転されているビットを含むビットグループと判断されているビットグループの読み出されて訂正されたビットを反転するように構成される。
一実施形態では、k=r、および(A,…,A)=(a,…,a)が成り立つ。
一実施形態によれば、k=1、A=f(a,…,a)=a+a+…+aが成り立ち、Aは、アドレスビットa,…,aのパリティである。
さらに、さらなる実施形態は、少なくとも1ビット誤りを訂正する線形符号Cのコードワードを形成するビットの部分集合をメモリセルのメモリ110に直接または反転させて書き込むため、および、メモリ110に書き込まれているビットを読み出し、直接または反転されて記憶されていた、メモリ110から誤り状態で読み出されることがあるビットから、元のビットを回復するために提供される。そのようなさらなる実施形態では、処理ユニット120は、メモリ110に直接または反転させて書き込むことができる、少なくとも1ビット誤りを訂正する線形符号Cを用いて符号化されたビットの部分集合の数K(K≧1)を定義するように構成される。
処理ユニット120は、アドレスa=a1,…,a(r≧2)で、少なくとも1ビット誤りを訂正する線形系統的符号のコードワードのサブワードとして記憶されるn個のペイロードデータビットx,…,xを提供するように構成される。
処理ユニット120は、符号Cの情報ビットu,…,uを生成するように構成され、ここで、アドレスaが符号Cのコードワードの形成に含まれない場合には、データビットx,…,xは、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x
が成り立ち、ここで、N=l+nであり、アドレスaが符号Cのコードワードの形成に含まれる場合には、データビットx,…,x、およびアドレスビットa,…,aから導出されるビットA,…,Aが、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x,A,…,A
が成り立ち、ここで、N=l+n+kであり、ここで、
,…,A=f(a,…,a
は、r個のアドレスビットa,…,aの値から関数fによって一意に決定される2進値であり、l≧1および1≦k≦rであり、
ここで、アドレスビットが誤り検出および誤り訂正に含まれない場合には、処理ユニット120は、符号Cのコードワードy,…,yを生成するように構成され、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)G=c,…,c,bf,…,bf,x1,…,x
が成り立ち、c,…,cは、m個のチェックビットであり、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、m=P−N、N=n+l、およびP=n+m+lが成り立ち、
ここで、処理ユニット120は、ビット
,…,y=c,…,c,bf,…,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するように構成され、
したがって、ビットbf,…,bfの部分集合が、各部分集合Y,…,Yに明瞭に割り振られ、
したがって、
Figure 2015142381
がビットy,…yの2進値である場合、k=1,…,Kおよびj=1,…,Pに関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードであり、したがって、
Figure 2015142381
が成り立ち、Hは、符号CのH行列であり、
ここで、処理ユニット120は、ビットグループY,…,Yのうちのどのグループがメモリ110に直接または反転されて書き込まれるかを定義するように構成され、
ここで、処理ユニット120は、メモリ110に書き込まれるP個のビットd,…,dを生成するように構成され、ここで、i=1,…,Pに関して、yが、反転されてメモリ110に書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、yが、反転されてメモリ110に書き込まれるビットを含むグループに属さないときには、d=yであり、
ここで、処理ユニット120は、メモリ110にアドレスaでビットd,…,dを書き込むように構成され、
ここで、処理ユニット120は、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すように構成され、これらの値は、アドレスaに書き込まれた値d,…,dから、生じ得る誤りに起因して生じており、
ここで、処理ユニット120は、符号Cによって訂正すべきL個のビット位置k,…,kを定義するように構成され、ここで、l≦Pおよび{k,…,k}⊆{1,…,P}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、
ここで、処理ユニット120は、符号Cによって訂正可能な誤りに関して、符号Cに基づいて訂正すべき所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するように構成され、
ここで、処理ユニット120は、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するように構成され、ここで、opは、一意に可逆のブール演算であり、
ここで、処理ユニット120は、既知の挿入された値bf,…,bfと、符号Cを使用することによって訂正されたそれぞれの読出し値とに基づいて、どのグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するように構成され、
ここで、処理ユニット120は、
Figure 2015142381
が、メモリ110に直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリ110への書込み中にメモリ110に反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するように構成され、ここで、「op」は、2項の一意に可逆のブール演算であり、
ここで、アドレスビットが誤り検出および誤り訂正に含まれる場合には、処理ユニット120は、符号Cのコードワードy=y,…,yを生成するように構成され、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)・G=c,…,c,bf,…,bf,x1,…,x,A,…,A
が成り立ち、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+l+m+k、N=n+l+kが成り立ち、c,…,cは、チェックビットであり、
ここで、処理ユニット120は、ビット
,…,yn+l,yn+l+k+1,…,y=c,…,c,bf,…,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するように構成され、
したがって、ビットbf,…,bfの各ビットは、部分集合Y,…,Yの1つのみに属し、したがって、
Figure 2015142381
がビットy,…,yの2進値である場合、k=1,…,Kおよびj=1,…,Pに関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードであり、したがって、
Figure 2015142381
が成り立ち、Hは、符号CのH行列であり、
ここで、処理ユニット120は、どのビットグループY,…,Yがメモリ110に直接または反転されて書き込まれるかを定義するように構成され、
ここで、処理ユニット120は、メモリ110に書き込まれるP−k個のビットd,…,dm+l+nを生成するように構成され、ここで、i=1,…,m+n+lに関して、
が、メモリ110に直接書き込まれるビットを含むグループに属するときには、d=yであり、
が、メモリ110に反転されて書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、
ここで、処理ユニット120は、メモリ110にアドレスaでビットd,…,dm+n+lを書き込むように構成され、
ここで、処理ユニット120は、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すように構成され、これらの値は、アドレスaに書き込まれた値d,…,dn+l、n+k+1,…,dから、生じ得る誤りに起因して生じており、
ここで、処理ユニット120は、値が誤りである場合には符号Cを使用することによって訂正されるL(L≦P−k)個のビット位置k,…,kを定義するように構成され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、
ここで、処理ユニット120は、符号Cによって訂正可能な誤りに関して、所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するように構成され、
ここで、処理ユニット120は、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するように構成され、ここで、「op」は、2進の一意に可逆の演算であり、
ここで、処理ユニット120は、既知の挿入された値bf,…,bfと、読み出され、符号Cを使用することによって訂正された対応する訂正値とに基づいて、どのビットグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するように構成され、
ここで、処理ユニット120は、
Figure 2015142381
が、メモリ110に直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリ110への書込み中にメモリ110に反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するように構成され、ここで、「op」は、2桁の可逆の一意のブール演算である。
別の実施形態によれば、ビットをメモリ110に記憶するための装置が提供され、ここで、ビットは、線形誤り訂正符号Cを用いて符号化され、線形誤り訂正符号Cは、少なくとも3の符号距離を有し、線形誤り訂正符号Cを用いて符号化されたビットの部分集合がメモリ110に直接書き込まれるか、それともビット毎に反転されて書き込まれるかが判断され、符号Cは、H行列Hを備え、ここで、装置は、処理ユニット120と、メモリ110とを備える。メモリ110に直接または反転されて書き込まれたビットの部分集合は、少なくとも1つの2進定数値を含み、この値は、ペイロードデータビットと共に、線形符号Cのコードワードを形成するためにコード化に使用される。処理ユニット120は、それぞれのビット部分集合のビットがメモリ110に直接書き込まれるときに、2進定数値を2進値bfとしてメモリ110に書き込むように構成される。処理ユニット120は、それぞれのビット部分集合のビットがメモリ110に反転されて書き込まれるときに、2進定数値を反転値
Figure 2015142381
としてメモリ110に書き込むように構成される。
処理ユニット120は、メモリ110に直接または反転されて書き込まれたビットの部分集合が反転されるときに、符号Cのコードワードを同じ符号のコードワードに変換するように構成され、符号のH行列は、メモリ110に直接または反転されて書き込まれたビットの部分集合に対応するH行列の列の各成分の「1」の数が偶数であるように生成される。
さらに、処理ユニット120は、メモリ110からの読出し時に、メモリ110から読み出された、誤りであり得るビットを、線形誤り訂正符号Cを使用することによって訂正するように構成され、ここで、それぞれのビット部分集合がメモリ110に直接書き込まれているときには、少なくとも、定数2進値bfが書き込まれているビット位置にあるビットが訂正され、または、それぞれのビット部分集合がメモリ110に反転されて書き込まれているときには、少なくとも、定数2進値
Figure 2015142381
が書き込まれているビット位置にあるビットが訂正される。
さらに、処理ユニット120は、読出し後、定数値bfまたは反転された定数値
Figure 2015142381
が記憶されているビット位置から読み出されている訂正された値が
Figure 2015142381
であるときには、メモリ110に直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、この値がbfであるときには反転しないように構成される。
別の実施形態によれば、方法が提供される。方法は、以下のステップを含む。
線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するステップ。ここで、複数の符号化ビットがそれぞれビット値を有し、線形誤り訂正符号が、少なくとも3の符号距離を有し、複数の符号化ビットが、線形誤り訂正符号の第1のコードワードを形成する。
符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するステップ。ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合のうちの1つの符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値である。
符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、記憶ワードとして、第1のコードワードのビットをメモリに記憶するステップ。ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含む。
さらに、符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得し、記憶ワードとして、第2のコードワードをメモリに記憶するステップ。ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
以下、いくつかの実施形態の基本原理を述べる。
いくつかの実施形態は、メモリへのデータの書込みおよびメモリからのデータの読出しに関する。いくつかの実施形態は、記憶すべきビットの部分集合またはグループを効果的にメモリに直接または反転させて書き込むことを可能にし、さらに、メモリから読み出すときにそれらを元の形態に復元することを可能にする。
ビットの部分集合またはグループがメモリに直接記憶されるか、それとも反転されて記憶されるかは、例えば部分集合のビットの値によって決定することができ、または、例えば誤りもしくはエネルギー消費に関するメモリの特性によって決定することができ、または、例えば他の特性によって決定することができる。
例えば、値0を有する永久的なメモリ誤りを、値1を有するメモリ誤りよりも頻繁に示すメモリに関しては、記憶すべきビットを(そのビットが「1」よりも「0」を多く有するときには)メモリに直接書き込むことが有利となり得る。なぜなら、それにより、ビットが0に縮退した永久的なメモリ誤りを示すメモリセルに値0が書き込まれる可能性が、そのようなメモリセルに値1が書き込まれる可能性よりも高くなるからである。それにより、永久的なメモリ誤りが誤った挙動を引き起こす可能性を減少させることができる。
また、ビットを暫定的にメモリに直接書き込み、次いで反転させて書き込んで、生じている誤りがより少ない形態を決定することも可能である。
従来の浮動ゲートメモリ(例えば、EEPROM=電気的に消去可能なプログラマブルリードオンリーメモリ、Flash)や電荷トラップメモリ(例えば、MONOS、Nanodot)など多くの不揮発性メモリの概念、さらにまた、MRAM(磁気抵抗ランダムアクセスメモリ)、R−RAM、PCRAM、またはCBRAM(導電性ブリッジングランダムアクセスメモリ)など新規のメモリ概念は、本質的に、セルの信頼性、または書込み中の電流消費に関する好ましい値を提供している。例えば、従来の浮動ゲートは、当業者によく知られている不規則ビットを示し、不規則ビットは、低いカットオフ電圧で状態をプログラミングするときにデータ破壊を示す。読出しまたは書込み中の電流消費は、プログラムすべき/読み出すべきデータパターンに大きく依存する。低いカットオフ電圧でのセルからの読出しは、本来的に、高いカットオフ電圧での読出しに比べてかなり多くの電流を必要とする。プログラミング時、この状況は、場合によっては逆になり得る。例えばホットキャリアプログラミング時、高いカットオフ電圧を有する状態にしなければならないセルのみが、プログラミング電流を必要とする。この状況は、電荷捕捉の概念に関しても同様である。同様に、磁気異方性エネルギーのエネルギー非対称性を示すMRAMなどの新規のメモリに関して、データ記憶に際し、より高いエネルギー状態は、より低いエネルギーを有する状態よりも危険である。しかし、いくつかの実施形態は、不揮発性メモリに関して採用することができるだけでなく、例えば、SRAMもしくはDRAM内部での永久的な誤り、または特定の状態においてより頻繁に生じる誤りに関しても使用することができる。
第1の2進値bの書込み中のエネルギー消費が、第1の2進値
Figure 2015142381
の書込み中よりも高い場合、書き込むべきビットが値bをより多く含むか、値bをより多く含むかに応じて、データをメモリに直接または反転させて書き込むことが可能である。このようにすると、値bの数とせいぜい同数の値bを書き込むことが可能であり、それにより、エネルギー消費が減少される。
ビットグループのビット部分集合の値bの数またはビットbの数に基づいて、グループのビットをメモリに反転させて書き込むべきか、それとも直接書き込むべきかを決定することができる。これにより、ビットの部分集合がメモリに直接書き込まれるか、それとも反転されて書き込まれるかを判断するための労力を減らすことができる。
いくつかの実施形態では、記憶すべきビットは、例えば、生成行列Gと、H行列もしくはパリティチェック行列Hとを有する線形誤り訂正符号Cを使用することによって符号化すべきであるが、ビットが記憶されるべき場所を示すアドレスビットは、符号化に含まれる必要がないことがある。例えば、系統的形態での生成行列Gを用いて符号化を行うことが有利となることがあり、G行列は、部分行列として単位行列を含み、H行列は、いくつかの実施形態での系統的形態を示すことがあり、他の実施形態では非系統的形態を示すことがある。メモリからビットを読み出すときに、ビット部分集合のビットがメモリに直接書き込まれているか、それとも反転されて書き込まれているかをチェックするために、ビット(これは、例えば、後に再び記憶されることがある)が、定数2進値によって補完される。ここで、補完された定数2進値は、線形符号のそれぞれのコードワードの形成に含まれる。
メモリに直接または反転されて書き込まれるビットの部分集合は、メモリに反転させてまたは直接書き込むことができるビット部分集合のビットが反転されるときに、反転されていないビットから形成されている符号Cのコードワードがその符号Cの別のコードワードに変換されるように形成される。
この特性により、有利には、メモリから読み出されるビットの訂正に関して、読み出されたビット部分集合からのビットがメモリに直接または反転されて書き込まれているかどうかを知る必要なく、誤り訂正符号Cに基づいて、メモリから読み出されているビットの訂正および場合によっては誤りビットの訂正を行うことが可能になる。
メモリからデータを読み出したとき、次いで、定数値を有するビットが直接または反転されて書き込まれているビット位置で、訂正されたビットを使用することによってデータを訂正した後、ビット部分集合またはビットグループのビットがメモリに直接書き込まれているか、それとも反転されて書き込まれているかを見出すことができる。
誤り訂正符号として、当業者に知られている線形誤り訂正符号が使用される。そのような符号に関する例は、ハミング符号、Hsiao符号、BCH符号などである。記憶すべきデータの所要のビット幅に符号を適合させるために、短縮ハミング符号、短縮Hsiao符号、または短縮BCH符号などの短縮符号が使用されることがよくある。短縮符号は、短縮されていない符号から、チェックビットに対応しないそれぞれのH行列の列を削除することによって取得することができる。
使用される用語および実施形態の説明をより良く理解できるように、符号のいくつかの基本的な用語を以下に簡単に説明する。
線形符号Cは、生成行列またはG行列Gと、H行列Hとを含む。Cが、(Q,N)符号である場合、コードワードはQ個のビットを含み、コードワードは、y=y,…,yによって表され、u=u,…,uと称されるN個の情報ビットが存在し、ここでQ>Nが成り立つ。
G行列は、N行とQ列を有する(N,Q)行列であり、H行列は(m,Q)行列であり、ここで、m=Q−Nが成り立つ。情報ビットuから、コードワードyは、関係
y=u・G
に従って決定される。
符号Cが系統的符号である場合、生成行列Gは、形態
G=(PN,m,
を有し、ここで、m=Q−Nであり、lは、N次元の単位行列であり、PN,mは、パリティ行列である。
割り当てられたH行列は、
Figure 2015142381
と定義することができ、ここで、lは、m次元の単位行列であり、
Figure 2015142381
は、行と列が交換された、パリティ行列PN,mの転置行列である。N、Q、mの値が特に言及されない場合、またはこれらの値が文脈から分かる場合には、単にG=(P,I)およびH=(I,P)と書く。
系統的形態でのG行列およびH行列は、G=(I,P)およびH=(P,I)としても使用されることが知られており、これにより、チェックビットがコードワード内で情報ビットの左に配置される、またはチェックビットがコードワード内で情報ビットの右に配置される。
G行列のN個の行が、符号Cのコードワードである。
系統的符号Cにおいて、
y=y,…,y=(u,…,u)・G=c,…,c,u1,…,u
が成り立ち、ここで、c,…,c,u1,…,u・Pが、コードワードy,…,yのチェックビットである。情報ビットu,…,uは、コードワードの修正されない部分であり、チェックビットが情報ビットに追加される。誤りにより、コードワードy=y,…,yは、破壊されて別のワード
Figure 2015142381
になることがあり、ここで、
Figure 2015142381
としてのeが、誤りベクトルと呼ばれ、ここで、「+」は、成分毎のmod2加算またはXOR演算を表す。
ワードy’の誤りシンドロームsは、
s=H・y’
であり、ここで、s=s,…,sは、m個の成分を含む。ワードy*の誤りシンドロームは、y*が符号Cのコードワードである場合には、正確に0である。
yがコードワードであり、y’が、誤りに起因する誤りワードである(ここで、y+y’=eである)場合、
H・(y’)=H・(0+y’)=H・(y+y’)=H・e
が成り立ち、ワードy’の誤りシンドロームは、誤りベクトルeのみに依存し、y’は、コードワードyとeだけ異なる。
iビット誤りが存在する場合、誤りベクトルeの正確にi個のビットが1であり、他の成分は全て0である。例えば、誤りベクトルeの正確に1つの成分が1である場合、eの成分が1であるビットにおいて1ビット誤りが存在する。
符号Cが1ビット誤り訂正符号である場合、全ての1ビット誤りの誤りシンドロームは、相異なり、0とは異なり、これらの誤りシンドロームそれぞれに対して、次いで特定の1ビット誤りが一意に割り振られる。次いで、復号器回路として実装される復号器が、その入力に印加される誤りシンドロームから、どのビット位置が反転/訂正されるべきか判断する。
符号Cが2ビット誤り訂正符号である場合、全ての2ビット誤りの誤りシンドロームは、相異なり、やはり0とは異なり、これらの誤りシンドロームそれぞれに対して、決定された2ビット誤りまたは1ビット誤りが一意に割り振られる。次いで、復号器回路として実現される復号器が、その入力に印加される誤りシンドロームから、どのビット位置が反転/訂正されるか判断する。それぞれの言明は、3ビット誤り訂正符号、4ビット誤り訂正符号などにも当てはまる。
誤りシンドロームは、例えば、シンドローム生成器が、ワードw=w,…,wに関して、例えばXORゲートを使用することによって関係
s(w)=H・w
を実施することによって決定することができる。
y=y,…,yおよびv=v1,…,vが符号Cのコードワードである場合、y+vも符号Cのコードワードである。
さらに、以下のことが成り立つ。
y=y,…,yが符号Cのコードワードであり、w=w,…,wが、誤りシンドロームs(w)=H・wを有するワードである場合、ワードw+yの誤りシンドロームは、ワードwの誤りシンドロームs(w)に等しい。なぜなら、
H・(y+w)=H・y+H・w=s(w)
が成り立つからであり、また、コードワードが、ワードへの成分毎の加算によってmod2加算されるとき、ワードの誤りシンドロームが変化しないからである。コードワードy=y,…,yをワードw=w,…,wに追加することは、wのそれらの成分が反転されることを意味し、ここで、yの成分は1である。
特に、
Figure 2015142381
が符号Cのコードワードである場合、y=y,…,yについて、
Figure 2015142381
も同様に符号Cのコードワードであり、ワードw=w,…,wのシンドロームs(w)は、wの全ての成分が反転されるときに変化しない。
Mが、メモリに直接または反転されて書き込まれたビットを含む、誤り訂正符号Cのコードワードy=y,…,yのビットの部分集合である場合、ワード
Figure 2015142381
が符号Cのコードワードであると有利である。
集合Mに属するコードワードy,…,yのビットが反転される場合、得られるワード
Figure 2015142381
もやはりコードワードである。元のコードワードy,…,yがメモリに書き込まれるか、それとも集合Mに属するビットで反転されたコードワードがメモリに書き込まれるかに関係なく、どちらの場合にも、符号Cのコードワードがメモリに書き込まれる。記憶されている誤りであり得るコードワード
Figure 2015142381
または(y+y)’を読み出すとき、符号Cを用いた読出しビットの訂正は、y’または(y+y’)から形成された誤りシンドロームに基づいて行うことができ、yがメモリに書き込まれているか、それとも集合Mに属するビットで反転されたコードワードy+yがメモリに書き込まれているかを知る必要はない。なぜなら、誤りシンドロームは、生成された誤りのみに依存し、例えば、生成された誤りベクトルeのみに依存し、どのコードワードがメモリに書き込まれているかには依存しないからである。例えば、定数2進値bf,…,bfが書き込まれているビット位置で読み出された値を、読出し後に訂正することができ、符号Cを用いた訂正後に、これらの既に訂正された値に基づいて、コードワードyが直接記憶されているか、それともMに属するビットで反転されて記憶されているか判断することができると有利になり得る。
さらに、定数2進値が、記憶されているペイロードデータビットと同じ符号Cで訂正されると有利であり、チェックビットの数は通常、この訂正によって増加しない。
Figure 2015142381
が符号Cのコードワードである場合、アドレスビットが符号化に含まれないときには、ビットの部分集合Mは、コードワードy=y,…,yの全てのビットからなっていてよい。
コードワードをそこで反転させることができ、そこで反転されたコードワードも符号CのコードワードであるようなビットM(i=1,2,…)のグループは、容易に決定することができる。
部分集合のビットで反転された符号Cのコードワードも符号Cのコードワードとなるようなビットのグループまたは部分集合は、容易に決定することができる。なぜなら、「1」である符号Cの任意のコードワードのビットの部分集合がそのような部分集合を形成するからである。
そのようなビット部分集合は各コードワード毎に決定することができるので、複数の適切なビット部分集合が存在する。
次に、特定の実施形態を述べる。
第1の実施形態では、誤り訂正符号Cの一例として、N=11の情報ビットを有する長さQ=15の1ビット誤り訂正(15,11)ハミング符号を考察する。
考察する符号CのH行列は、
Figure 2015142381
であり、変数c、c、c、c、bf、x、x、x、x、x、x、x、x、x、x10が、左から右に、式(1)のH行列の列に対応する。
H行列の4つの行はそれぞれ8個の「1」を含み、8は偶数であるので、
Figure 2015142381
が符号Cのコードワードであり、その15ビット全てで成分毎に反転されたコードワードも、符号Cのコードワードである。
K=1、およびコードワードの全てのビットを含む部分集合M=M={y,…,y15}が選択される。
10個のペイロードデータビットx,…,x10が提供され、これらは、定数2進値bfによって補完されて、11個の情報ビット
u=u,…,u11=bf,x,…,x10
にされる。
一実施形態では、定数2進値は、bf=0と定義される。符号Cは、4つのチェックビットc,…,cを含む。符号化ビットy,…,y15は、符号CのG行列Gを使用することによって、
,…,y15=c,…c,bf,x,…,x10=(bf,x,…,x10)・G
として決定される。それにより、G行列は、行列G=(l11,P11,5)であり、ここで、l11は、11次元の単位行列であり、P11,5に関して、
Figure 2015142381
が成り立ち、
Figure 2015142381
が成り立つ。
コーダは、式(3)で定義される関係に従って、情報ビットbf,x,…,x10からのチェックビットc,…,cを生成する。例えば、コーダは、XORゲートで実装されても、一般的な合成ツールを使用することによって実装されてもよい。K=1が成り立ち、反転させるべきただ1つのビット部分集合Y={y,…,y15}が存在する。
y=y,…,y15について、
Figure 2015142381
が符号Cのコードワードであるので、その結果、
Figure 2015142381
も符号Cのコードワードである。なぜなら、全てのビットy,…,y(Q=15)がYに属するからである。
特定のコードワードとして、データビットx,x,…,x10=1,0,1,1,0,1,1,1,1,1から形成されるコードワード、および定数2進値bf=0を次に考察する。式(3)に従って、c=1、c=0、c=1、およびc=0であり、したがって、それぞれのコードワードは、
,…,y15=1,0,1,0,0,1,0,1,1,0,1,1,1,1,1
である。
コードワードは、10個の「1」と、5個の「0」とを有する。できるだけ多くの「0」をメモリに書き込むことが有利である一例を考察する。MRAMに当てはまるように、記憶値0が破壊されて記憶値1になることは、その逆に比べてあまり頻繁ではない。また、Flashメモリに当てはまるように、値0を書き込むことは、値1を書き込むよりもエネルギーを必要としないことがあり得る。また、メモリ内の1つまたは複数の位置に永久的な誤りが存在することもあり得る。したがって、0縮退誤りが、ビットy=y15の位置に存在することがあり得る。Flashメモリへの書込み時に当てはまるように、例としてワード1,0,1,0,0,1,0,1,1,0,1,1,1,1,1がメモリに書き込まれる場合、および書き込まれた値が読み出された値と比較される場合、y15=1がメモリに書き込まれているため、書き込まれた値1の代わりに値0が読み出されるので、y15の位置に0縮退誤りが存在することが分かる。しかし、Yのビット、例えばこの場合には全てのビットが反転されてメモリに書き込まれることが決定される場合、
Figure 2015142381
が、メモリにアドレスaで書き込まれ、15番目のビットでの生じ得る0縮退誤りが影響を持たなくなる。さらなる誤りが存在せず、アドレスaで読出しが行われる場合、
Figure 2015142381
である。
例えば、読み出されたワードの誤りシンドローム
s=H・(1,0,1,1,1,0,0,1,0,0,0,0,0)=0
を決定することによって、符号Cのコードワードが読み出されており、誤り訂正が必要ないことが分かる。

Figure 2015142381
から、ワードが反転されてメモリに書き込まれていると結論付けることができる。元のワードを復元するために、全ての読み出されたビット
Figure 2015142381
を反転させるべきであり、したがって、
Figure 2015142381
が成り立つ。
例えば、読み出された値
Figure 2015142381
を1から0に破壊する誤りが存在する場合、この誤りは、同じ符号Cによって1に訂正され、この符号Cは、以下により詳細に述べるように、他のビットでの誤りも訂正する。
有利には、誤り訂正のための労力が小さい。コードワードのビットがメモリに直接または間接的に(反転させて)書き込まれているかどうかを示すために、定数値を有するただ1つの追加のビットしか必要ない。
それにより、メモリは、例えば、レジスタ、レジスタアレイ、RAM、M−RAM、またはFlashメモリでよい。
次に、図2を参照して、一例としてアドレス可能なメモリを使用して、メモリへの書込みを論じる。
図2で、データビットx,…,x(n=10)と、定数値、例えば値0を有するビットbfとが、コーダCod11の入力に供給され、コーダCod11は、
y=y,…,y15=c,…c,bf,x,…,x10=(bf,x,…,x10)・G
に従ってコードワードy=y,…,y(Q=15)を生成するように実装され、コードワードyは、コーダCod11の15ビット幅の出力で出力される。
ここで、符号Cがその系統的形態で与えられると仮定する。コーダ11の出力は、第1の15ビット幅の入力を有するXOR回路12に供給される。さらに、XOR回路12は、2進反転信号Invが印加される第2の1ビット幅の入力を備える。さらに、XOR回路12は、15ビット幅の出力を備え、この出力は、値d,…,d15を有し、メモリMem13の15ビット幅のデータ入力に接続される。
図2で、XOR回路12は、例えば、15個のXORゲートを備えることがあり、15個のXORゲートはそれぞれ、2つの入力と、1つの出力とを有し、これらのXORゲートそれぞれの第1の入力が、コーダCod11の15個の2進出力ラインの1つに接続され、15個のXORゲートそれぞれの第2の入力が、反転信号Invを有するXOR回路12の第2の入力に接続される。
Inv=0である場合には、d,…,d15=y,…,y15が成り立ち、Inv=1の場合には、
Figure 2015142381
が成り立ち、したがって、反転信号に応じて、コーダによって出力されるビットは、直接(修正されず/変更されずに)または反転されてメモリに書き込まれる。
データを書き込むとき、メモリMem13は、書込みアドレスaを提供され、メモリMem13のデータ入力に印加されるデータは、アドレスaに記憶される。
読出しアドレスa’が適用されるとき、およびデータを読み出すとき、読出しアドレスa’に記憶されているデータが読み出される。書込みアドレスaが読出しアドレスa’に等しい場合、すなわちa=a’であるとき、値
Figure 2015142381
がデータ出力で出力される。アドレスaに書き込まれたデータd,…,d15と、同じアドレスaから読み出されるデータ
Figure 2015142381
とは、誤りにより異なることがあり得る。
メモリMem13から読み出された値から、s=(s,s,s,s)として、誤りシンドローム
Figure 2015142381
および
Figure 2015142381
が成り立つ。誤りシンドロームs=(s,s,s,s)は、式(4)を実現するシンドローム生成器Syn(図2には図示せず)によって決定される。式(4)の実施は、例えば合成ツールを使用することによって行うことができる。表1に示され、式(4)から読み取ることができるように、訂正すべきビット
Figure 2015142381
それぞれに対して、シンドロームが、一意に可逆に割り振られる。
Figure 2015142381
d1,…,d15=0,1,0,1,1,0,1,0,0,1,0,0,0,0,0として反転された、y=bf=0を有するコードワードy1,…,y15=1,0,1,0,0,1,0,1,1,0,1,1,1,1,1がメモリMem13に書き込まれている場合、および読出しビット
Figure 2015142381
が、
Figure 2015142381
である場合、式(4)に従って、s=0、s=0、s=0、およびs=0が成り立ち、読出し値は訂正されない。
Figure 2015142381
および定数値bf=0が、第5のビットに直接または反転されて記憶されているので、読出しワードは、成分毎に反転され、したがって、
Figure 2015142381
が成り立つ。
誤りにより、ビット
Figure 2015142381
が破壊されて0になる場合、
Figure 2015142381
がメモリMem13から読み出され、シンドローム生成器が、式(4)に従って、誤りシンドロームs=(1,1,1,1)を決定する。表1の最終行に従って、値
Figure 2015142381

Figure 2015142381
に訂正される。訂正された値1は、出力された訂正後のワード0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0が反転されていることを特定し、したがって、
Figure 2015142381
が回路によって出力される。
以下、データ中の誤りを考察する。例えば、誤りにより、値
Figure 2015142381
が1である場合、ワード
Figure 2015142381
がメモリMem13から読み出される。シンドローム生成器は、式(4)に従って、誤りシンドロームs=(0,1,1,1)を生成し、そこに、訂正すべきビット
Figure 2015142381
が復号器によって割り振られ、したがって、訂正されたワード
Figure 2015142381
が、
Figure 2015142381
に従って生成され、したがって、訂正後のワードは、
Figure 2015142381
である。
Figure 2015142381
が成り立つので、ワードが反転され、したがって、
Figure 2015142381
が成り立ち、適切に訂正されたワードが回路によって出力される。
図3は、誤りであり得るデータ
Figure 2015142381
を読み出すため、誤りデータを訂正するため、および書込み前にデータが反転されている場合にはデータを反転するための一実施形態による装置を示す。
図2と同様に、装置は、メモリMem13を備え、メモリMem13に、データd,…,d15が書き込まれている。
図3において、メモリがアドレス可能なメモリであり、書込みアドレスaが書込み中に生成され、読出しアドレスa’が読出し中に生成されると仮定する。ここで、書込みアドレスaは、読出しアドレスa’と同じでよい。いくつかの実施形態は、さらに、書込みおよび読出しのためのイネーブル信号など、メモリMem13の制御信号を備える。
いくつかの実施形態では、メモリMem13は、例えば15個のメモリ要素を備えることがあるレジスタでよい。メモリ要素は、例えばフリップフロップまたはラッチでよい。
読出しアドレスa’を生成するとき、誤りであり得るビット
Figure 2015142381
が、メモリMem13の15個のデータ出力で出力される。a’=aが成り立ち、メモリMem13に書込みアドレスaで書き込まれたデータが、同じ読出しアドレスaから読み出されると仮定することができる。読み出されるビット
Figure 2015142381
は、例えば、書き込まれたビットd,…,d15とは異なることがある。なぜなら、読み出されるビットは、メモリ誤りにより、またはデータラインでの誤りにより、誤りであり得るからである。
メモリMem13のデータ出力上に読み出されたビット
Figure 2015142381
は、シンドローム生成器Synd21の15ビット幅の入力に供給され、またXOR回路23の15ビット幅の第1の入力にも供給される。シンドローム生成器Synd21は、式(4)に従って誤りシンドロームs=s,s,s,sを生成するように実装される。この誤りシンドロームは、シンドローム生成器Synd21の4ビット幅の出力で提供され、この出力は、復号器Dec22の4ビット幅の入力に接続される。復号器Dec22は、その15ビット幅の出力で、訂正信号e=e,…,e15を出力する。復号器Dec22は、表1に従って訂正信号を生成するように構成される。XOR回路23は、例えば、15個のXORゲートXOR,…,XOR15を備え、15個のXORゲートはそれぞれ、2つの入力と、1つの出力とを有する。
i=1,…,15に関して、値
Figure 2015142381
が、XOR回路23のXORゲートXORの第1の入力に供給され、値eが、XORゲートXORの第2の入力に供給され、したがって、値
Figure 2015142381
が、XORゲートXORの出力で出力される。bf=0が選択されているので、値
Figure 2015142381
を有するXOR回路23のXORゲートXORの出力が、XOR回路26の第1の1ビット幅の入力に直接供給され、XOR回路26は、例えば、15個のXORゲート
Figure 2015142381
を備えることができ、15個のXORゲートがそれぞれ、1つの2進出力と、2つの2進入力とを有する。
XOR回路23の15ビット幅の出力は、XOR回路26の第2の15ビット幅の入力に接続される。
i=1,…,15に関して、値
Figure 2015142381
が、XORゲート
Figure 2015142381
の第1の入力に供給され、このゲートの第2の入力にXORゲートXORの出力が接続され、この出力は、信号
Figure 2015142381
を有する。したがって、訂正された値
Figure 2015142381
は、
Figure 2015142381
の場合には反転され、
Figure 2015142381
の場合には反転されない。図3に示されるように、シンドローム生成器Synd21と、復号器Dec22と、XOR回路23とが、訂正器24を生成する。
y=y,…,y15がメモリに書き込まれているか、それとも
Figure 2015142381
がメモリに書き込まれているかに関係なく、メモリMem13から読み出された値
Figure 2015142381
の訂正が訂正器24によって行われる場合に有利である。さらに、データがメモリMem13に直接書き込まれているか、それとも反転されて書き込まれているかを決定するために使用することができる定数2進値が、メモリMem13から読み出される誤りであり得るビット
Figure 2015142381
の線形符号Cによる訂正に含まれると有利であり、それにより、追加のビット、例えば追加のチェックビットが訂正に必要とされない。
図3の実施形態によれば、復号器Dec15は、2進訂正値e=e,…,e15を生成し、それにより、例示の場合には、ビットが誤りである場合、および誤りが符号Cによって訂正可能である場合には、15個のビット
Figure 2015142381
が全て訂正される。
しかし、いくつかの実施形態によれば、ビットの一部のみ、例えば、データビットに対応するビットと、定数2進値bfに対応するビット
Figure 2015142381
とのみが訂正される。いくつかの実施形態では、データビットに割り振られた値の一部のみが訂正される。
図3は、bfがbf=0に設定される場合を示す。bfをbf=1に設定することも可能である。次いで、XOR回路26の第1の入力に印加された値
Figure 2015142381
を有するデータラインが反転される。
図4は、誤り検出器FE31が採用される一実施形態を示す。
図3の回路部分に対応する回路部分は、図3におけるものと同じ参照番号で示されており、再び説明はしない。
図4で、誤りシンドロームs=s,s,s,sを有するシンドローム生成器Synd21の出力が、復号器Dec22の入力に接続され、さらに、誤り検出器FE31の4ビット幅の入力に接続され、誤り検出器FE31は、その出力でq(q≧1)ビット幅の誤り信号Eを出力する。
誤り検出器FE31は、シンドロームsがs≠0である場合には1ビット幅の誤り信号E=1を出力し、シンドロームsがs=0である場合にはE=0を出力するように実装することが可能である。このとき、誤り検出器FE31は、4つの入力と1つの出力とを有するORゲートによって実現することができる。
一実施形態では、q=2である。そのような実施形態では、s=0のとき、E=(E,E)=0,0が出力される。sが符号CのH行列の列の1つに等しいとき、E=1,0が出力される。s≠0であり、H行列の列の1つに等しくないとき、E=0,1が出力される。
E=1,0の場合、符号Cによって訂正可能な誤りが検出される。E=0,1の場合、符号Cによって訂正可能でない誤りが検出される。E=0,0の場合、これは、検出可能な誤りが存在しないことを意味する。
いくつかの実施形態によれば、誤り検出器FE31は、q=2が成り立つように実装することができ、例えば、E=0,0およびE=1,1は、誤りが存在しないことを示し、E=0,1またはE=1,0は、誤りが存在することを示す。
以下、符号Cが8個のデータビットx,…,xと6個のチェックビットc,…,cとを有するさらなる実施形態を説明する。
K=2個のビット部分集合Y、Yが生成され、これらを、メモリMem13に直接または反転させて書き込むことができると定義する。8個のデータビットx,…,xは、2つの定数2進値bf、bfによって保管されて、10個の情報ビットu,…,u10を生成し、したがって、
,…,u10=bf,bf,x,…,x
である。
考察される符号CのH行列は、例えば、
Figure 2015142381
と定義することができる。
左から右に、変数c、c、c、c、c、c、bf、bf、x、x、x、x、x、x、x、xが、左から右へのH行列(5)の列にそれぞれ対応し、したがって、cが第1の列に対応し、cが第2の列に対応し、以下同様である。
この実施形態の符号Cは、短縮Hsiao符号である。H行列の全ての列が、対として異なり、各列は、1個または3個の「1」を有するので、奇数個の「1」を有する。
H行列の各列が偶数個の「1」を含むので、
Figure 2015142381
は符号Cのコードベクトルであり、したがって、y=y,…,y16が符号Cのコードワードである場合、
Figure 2015142381
も符号Cのコードワードである。なぜなら、線形符号の2つのコードワードの成分毎のXOR和もこの符号のコードワードであるからである。
一例として、集合Y={c,c,c,c,c,c,bf,x}が、メモリに直接または反転されて書き込まれるビットの第1の部分集合Yとして選択され、集合Y={bf,x,x,x,x,x,x,x}が、第2の部分集合として選択される。
それに対応して、H行列の第1〜第7、および第12の列が、集合Yに割り振られる。これらの列それぞれの成分に2つの「1」が存在し、したがって、H行列のこれらの列の成分毎のmod2の和は0であり、ここで、
+h+h+h+h+h+h+h12=0
であり、ここで、
H・(1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0)=0
が成り立ち、(1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0)がコードワードである。
H行列の第8〜第11および第13〜第16の列は、集合Yに割り振られる。これらの列それぞれの成分において、4つの「1」が存在し、したがって、H行列のこれらの列の成分毎のmod2の和は0であり、ここで、
+h+h10+h11+h13+h14+h15+h16=0
であり、ここで、
H・(0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1)=0
が成り立ち、(0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1)も、考察される符号のコードワードである。
集合YとYは異なり、それらの和集合は、コードワードの16成分全てを含む。
ここで、メモリMem13に直接または反転させて書き込むことができるビットの第3の集合Yを選択することも可能である。そのような集合Yは、コードワードの全てのビットを含むこともある。メモリから読み出されている訂正された値
Figure 2015142381
は、ビットのどの部分集合がメモリMem13に反転されて書き込まれており、ビットのどの部分集合がメモリMem13に直接書き込まれているかを決定する。
そのような実施形態において、コードワードy,…,y16をメモリに直接、一部反転させて、または完全に反転させて書き込む4つの異なるオプションが存在する。yとyが、定数2進値y=bf=0、y=bf=0に設定されると仮定する。
ワード
Figure 2015142381
をメモリに書き込むことができる。
,c,c,c,c,c,0,0,x,x,x,x,x,x,x,xが符号Cのコードワードである場合、ビットのどの部分集合が反転されているかに関係なく、メモリに書き込まれている値d,…,d16が符号Cのコードワードであるので、メモリから読み出される誤りであり得る値
Figure 2015142381
は、どのビットグループがメモリに直接書き込まれており、どのビットグループが反転されてメモリに書き込まれているかを知る必要なく、符号Cを使用することによって訂正することができる。
特に、読み出された値
Figure 2015142381

Figure 2015142381
に訂正することができ、ここで、
Figure 2015142381
は、どのビットグループのビットも反転されていないことを示し、
Figure 2015142381
は、ビットグループYのビットが反転されていることを示し、
Figure 2015142381
は、ビットグループYのビットが反転されていることを示し、
Figure 2015142381
は、ビットグループY=Y∪Yのビットが反転されていることを示す。
次に、以下の実施形態を参照して一態様を論じる。4つのチェックビット(c、c、c、c)と、6つのデータビット(x、x、x、x、x、x)と、2つの定数2進値(bf、bf)と、1つのH行列Hとを有する1ビット誤り訂正符号Cを考察し、ここで、
Figure 2015142381
であり、変数c、c、c、c、bf、bf、x、x、x、x、x、xが、式(6)のH行列Hの列に対応する。
H行列の第3の列および第4の列の「1」の数は奇数であり、y=y,…,y12=c,…,c,bf,bf,x,…,xが符号Cのコードワードである場合、
Figure 2015142381
は、コードワードでない。ビットの2つの部分集合YおよびYをメモリに直接または反転させて書き込むことができると定義される。ここで、
Figure 2015142381
が符号Cのコードベクトルである必要はない。
部分集合Yは、例えば、
={c,c,c,c,bf,x
と定義することができ、部分集合Yは、例えば、
={c,c,bf,x,x,x,x
と定義することができる。
集合YとYは、ビットcとおよびcを共通して有するので、互いに素ではない。
以下のことが成り立つ。y=y,…,y12が符号Cのコードワードである場合、Yに属するビットを反転させることによってyから得られるワードもコードワードである。
同様に、以下のことが成り立つ。y=y,…,y12が符号Cのコードワードである場合、Yに属するビットを反転することによってyから得られるワードもコードワードである。
以下、コードワードy*=1,0,1,1,1,1,1,1,0,1,0,1が、メモリに例えばアドレスaで直接または反転されて記憶される場合を考察する。テストにおいて、例えば、第12のビットy*12が0縮退誤りを有すると特定されていると仮定する。このとき、コードワード
y*=1,0,1,1,1,1,1,1,0,1,0,1=c,c,c,c,bf,bf,x,x,x,x,x,x
の代わりに、コードワード
Figure 2015142381
をメモリに記憶することができ、これは、部分集合Yのビットで反転され、第12のビットでの値は0である。これにより、このビット位置での0縮退誤りは影響を持たなくなる。
さらなる誤りが存在しない場合、アドレスaから読み出すときに、ワード
Figure 2015142381
が読み出される。
Figure 2015142381
が符号Cのコードワードであるので、
Figure 2015142381
および値
Figure 2015142381
は、部分集合Yのビットが反転されていることを示し、したがって、
Figure 2015142381

が成り立つ。部分集合Yのビットで反転されたビットをメモリに書き込むことによって、また、行われている反転を定数2進値に基づいて元に戻すことによって、(0縮退)誤りは影響を持たず、許容することができる。
ここで、既に述べたように、誤りがテストによって検出されていることがあり得る。
一実施形態によれば、コードワードy,…,yがメモリに直接書き込まれ、その後、それぞれの値が読み出されて、書き込まれた値と比較されて、誤りが生じているか否かおよびどこで誤りが生じているかを決定する。
誤り検出器が存在する場合、以下のように処理を進めることができる。
誤り検出器が、アドレスaにコードワードy,…,yを書き込んだ後に、アドレスaからの読出し時に誤りを示さない場合、アドレスaに新たなワードは書き込まれない。誤り検出器が誤りを示す場合、Yのビットで反転されたワードが、メモリにアドレスaで書き込まれる。ここで、そのアドレスからの読出し時に誤り検出器が誤りを示さない場合、メモリにさらなるワードは書き込まれない。誤り検出器が、アドレスaに記憶されているワードを読み出すときに誤りを示す場合、Yのビットで反転されたワードがメモリに書き込まれる。ここで、そのアドレスからの読出し時に誤り検出器が誤りを示さない場合、メモリにさらなるワードは書き込まれない。これは、読出し中に誤りが示されなくなるまで、または反転されたビットのさらなる部分集合Yが存在しなくなるまで続けられる。
さらに、以下の手順が可能である。
アドレスaで、コードワードy,…,y、または部分集合Yのビットで反転されたコードワードがメモリに書き込まれ、この書き込まれたワードは、誤り検出器がいくつかの誤りを示し、それらの誤りが符号Cによって訂正可能であるときには、保たれる。
また、誤りが特定の数を越えていないことを誤り検出器が示すときには、メモリに書き込まれたビットを保つことも可能である。符号Cが2ビット誤り訂正符号である場合、誤り検出器がせいぜい1ビット誤りを示すときには、メモリに書き込まれているワードを保つことができる。なぜなら、このとき、さらなるランダムな誤りを訂正することができるからである。
誤り処理のために、いくつかの異なる部分集合Y,…,Y(k>1)が存在すると有利であり、それらの部分集合のビットはそれぞれ、メモリに直接または反転させて書き込むことができ、これは、永久的であり得る様々な誤りへの良好な適応を可能にする。
以下、さらなる実施形態を述べる。
メモリにアドレスa=a,…,aで直接または反転されて記憶される、5つのチェックビットc,…,cと、8つのペイロードデータビットx,…,xと、定数2進値bfとを有する短縮ハミング符号を、符号Cとして考察する。そのような実施形態では、アドレスビットa,…,aが符号化に含まれる。
符号のH行列Hは、
Figure 2015142381
であり、ここで、H行列の列をh,…,h14と呼ぶ。変数c、c、c、c、c、bf、x、x、x、x、x、x、x、x、a、a、a、a、aが、左から右へ、H行列(7)のそれぞれの列に対応する。系統的形態での対応するG行列Gは、
G=(P14,5,l14
であり、ここで、l14は、14次元の単位行列であり、P14,5は、形式
Figure 2015142381
を有する。
メモリへの書込み時、データがメモリに書き込まれるメモリアドレスのアドレスビットa,…,aを採用することによって、符号Cのコードワードは、
Figure 2015142381
と定義され、ここで、
=bf+x+x+x+x+x+a+a+a
=bf+x+x+x+x+x+x+a+a+a
=bf+x+x+x+x+x+a+a+a
=bf+x+x+x+x+x+a+a+a
=x+x+x+x+x+x+a+a+a
が成り立ち、a,…,aを書込みアドレスと呼ぶ。
ビットの集合
={c,c,c,c,c,bf,x,x,x,x,x,x,x,x
が定義され、それにより、この集合のビットを、メモリに直接または反転させて書き込むことができる。bfは、定数値bf=1に設定される。
v=c,c,c,c,c,bf,x,x,x,x,x,x,x,x,a,a,a,a,a
が符号Cのコードワードである場合、
Figure 2015142381
も符号Cのコードワードである。
アドレスa=a1,…,a5で、ビットが直接記憶されるときには、ビット
=c、d=c、d=c、d=c、d=c、d=bf=1、d=x、d=x、d=x、d10=x、d11=x、d12=x、d13=x、d14=x
がメモリに書き込まれ、
または、アドレスaで、ビット
Figure 2015142381
がメモリに書き込まれる。
次いで、読出しアドレスa’でメモリから読み出すとき、a=a’であり、誤りが存在しないときには、i=1,…,14に関して、ビット
Figure 2015142381
が読み出され、ビット
Figure 2015142381
が、符号Cのコードワードを形成する。
ビット
Figure 2015142381
に、符号Cによって訂正することができる誤りが存在する場合、ワード
Figure 2015142381
の誤りが訂正されて
Figure 2015142381
とされ、値
Figure 2015142381
に基づいて、データがメモリに直接または反転されて書き込まれているかどうかが判断される。例えば、
Figure 2015142381
の場合、データはメモリに直接書き込まれており、
Figure 2015142381
の場合、データはメモリに反転されて書き込まれている。アドレスビットでの誤りは訂正されない。それらは、誤りが符号Cによって検出可能であるときに検出される。
例えば、1ビット誤りがアドレスビットaに存在する場合、関連の誤りシンドロームは[1,0,0,1,0]である。H行列の列h,…,h14はどれも[1,0,0,1,0]に等しくないので、ビット
Figure 2015142381
の「1」の訂正は行われず、誤りは、訂正不可能な誤りとして示される。これにより、例えば、読出しアドレスと書込みアドレスが一致せず、符号Cによって検出可能な誤りの位置で異なることを検出することができる。
図5は、一実施形態に関して、アドレスビットa=a,…,aが、記憶されるデータの符号化に含まれる様子を示す。図5の回路は、9ビット幅の第1の入力と、5ビット幅の第2の入力と、14ビット幅の出力とを有するコーダCod41を備える。さらに、図5の回路は、14ビット幅の第1の入力と、1ビット幅の第2の入力と、14ビット幅の出力とを有する反転回路42を備える。さらに、図5の回路は、14個のデータ入力と、14個のデータ出力と、書込みアドレスおよび読出しアドレス用の5ビット幅のアドレス入力とを有するアドレス可能なメモリMem43を備える。
例えば、8個のペイロードデータビットx,…,xが記憶される。ペイロードデータビットは、定数2進値を有するビットbfによって保管され、ここでは、定数値は、例えばbf=1である。
ビットbf,x,…,xは、コーダCod41の9ビット幅の第1の入力に印加され、書込みアドレスのビットa,…,aは、コーダCod41の5ビット幅の第2の入力に印加される。
コーダCod41は、その14個の出力で、コードワードc,…,c,bf=1,x,…,x,a,…,aのビットc,…,c,bf=1,x,…,xを出力するように構成され、ここで、コードワードは、
(c,…,c,1,x,…,x,a,…,a)=(1、x,…,x,a,…,a)・G
に従って生成され、ここで、Gは、考察される符号の生成行列である。
符号Cがその系統的形態で提供されると仮定する。
符号Cod41の14ビット幅の出力は、XOR回路42の第1の14ビット幅の入力に接続され、XOR回路42の第2の1ビット幅の入力に、反転信号Invが印加される。
値d,…,d14を有するXOR回路12の14ビット幅の出力が、メモリMem43の14ビット幅のデータ入力に接続される。
ここで、XOR回路42は、それぞれ2つの入力と1つの出力とを有する14個のXORゲートを備え、これらのXORゲートそれぞれの第1の入力は、コーダCod41の14個の2進出力ラインの1つにそれぞれ接続され、これらのXORゲートの第2の入力は、反転信号Invを有するXOR回路42の第2の入力にそれぞれ接続される。
Inv=0に関しては、d,…,d14=c,…,c,1,x,…,xが成り立ち、一方、Inv=1に関しては、
Figure 2015142381
が成り立ち、したがって、反転信号に応じて、符号によって出力されるビットは、直接、すなわち修正されずに、または反転されてメモリに書き込まれる。
ここで、いくつかの実施形態によれば、コーダは、
,…,c,1,x,…,x,a,…,a
が符号Cのコードワードである場合に、
Figure 2015142381
も符号Cのコードワードであるように実装される。
一実施形態では、データの書込み時、メモリMem43は、書込みアドレスaを提供され、したがって、メモリMem43のデータ入力に印加されたデータは、アドレスa=a,…,aに記憶される。書込みアドレスのビットa,…,aは、符号の情報ビット
,…,u14=bf,x,…,x,a,…,a
の一部である。
データの読出し時、読出しアドレスa’が印加されるときに、読出しアドレス
Figure 2015142381
に記憶されているデータがメモリから読み出される。
書込みアドレスaと読出しアドレスa’が一致する場合、すなわちa=a’であるとき、値
Figure 2015142381
がデータ出力で出力される。アドレスaに書き込まれたデータd,…,d15と、同じアドレスaから読み出されるデータ
Figure 2015142381
とは、誤りにより異なることがある。誤りが生じていない場合、読出し値
Figure 2015142381
は、データがメモリに直接書き込まれているか、それとも反転されて書き込まれているかを示す。符号によって訂正可能な誤りが生じている場合、メモリから読み出され、
Figure 2015142381
に基づいて訂正されたデータに応じて、誤りが符号Cによって訂正可能であるときにデータがメモリに反転されて書き込まれているか、それとも直接書き込まれているかを検出することができる。
図5の装置の補完として、図6は、誤りであり得るビット
Figure 2015142381
を読み出すため、誤りビットを訂正するため、および、メモリへの書込み前にビットが反転されている場合にはビットを反転するための一実施形態による装置を示す。図5を参照して既に説明したように、アドレスビットa,…,aは、符号Cのコードワードの形成に含まれる。ビットd,…,d14がメモリMem43に書き込まれる。
読出しアドレスa’がメモリMem43に提供され、誤りであり得るビット
Figure 2015142381
が読み出される。誤りであり得るビット
Figure 2015142381
は、メモリMem43の14個の2進データ出力で出力される。a=a’が成り立ち、書込みアドレスaで書き込まれたビットが、同じアドレスa’=aから読み出されると仮定することができる。例えば永久的または非永久的もしくは一時的なメモリ誤りにより、読み出されたビットd’は誤りであり得るので、読み出されたビット
Figure 2015142381
は、書き込まれたビットd,…,d14に必ずしも等しくない。
誤りが存在しない場合、
Figure 2015142381
が符号Cのコードワードである。
(d’,a’)が符号のコードワードでない場合、メモリMem43に誤りが存在するか、またはアドレスの決定時に誤りが生じている。
メモリ43のデータ出力で出力されるビット
Figure 2015142381
は、同時に、シンドローム生成器Synd51の14ビット幅の第1の入力に供給され、シンドローム生成器Synd51の5ビット幅の第2の入力には、読出しアドレスa’のビット
Figure 2015142381
が供給される。シンドローム生成器Synd51は、その5ビット幅の出力で、5ビット幅の誤りシンドロームs=(s,…,s)を出力する。ここで、シンドローム生成器Synd51は、
Figure 2015142381
に従って誤りシンドロームを生成するように構成され、ここで、例えば式(7)のH行列Hを使用することができる。読出しアドレスa’は、シンドローム形成に含まれる。
シンドローム生成器Synd51の5ビット幅の出力は、復号器Dec52の5ビット幅の入力に接続され、復号器Dec52は、例えば、シンドローム生成器Synd51が、メモリから読み出されたビット
Figure 2015142381
に関する訂正ビットe,e,…,e14を備える訂正ベクトルe=(e,e,…,e14)を生成するように実装することができる。
チェックビットも訂正すべきときには、訂正器がさらに訂正信号e,…,eも生成することが可能である。
さらに、訂正器がアドレスビット
Figure 2015142381
に関する訂正ビットも生成することが可能であり、ここで、アドレスビットに関する0ではない訂正信号は、アドレス誤りが存在することを示し、誤りアドレスa’から読み出されたビットはさらには使用されない。
図6で、XOR回路53は、例えば9個のXORゲートXOR,…,XOR14を備えることができ、9個のXORゲートそれぞれが、2つの入力と1つの出力とを有する(図6には、9個のXORゲートは個々には図示されていない)。i=6,…,14に関して、値
Figure 2015142381
がXORゲートXORの第1の入力に供給され、値eが第2の入力に供給され、したがって、値
Figure 2015142381
が第iのXORゲートXORの出力で出力される。シンドローム生成器Synd51と、復号器Dec52と、XOR回路53とは、一体となって訂正器54を形成する回路部分とみなすことができる。訂正器54は、図6に示されるように誤り検出器FE57も備えることができる。
XOR回路53の最下位の出力、すなわち、値
Figure 2015142381
を有するXORゲートXORの出力は、インバータ55の入力に供給され、インバータ55は、その出力で値
Figure 2015142381
を出力する。XOR回路53の8個のより上位の出力、すなわち、値
Figure 2015142381
を有するXORゲートXOR,…,XOR14の出力は、図6ではそれぞれ2つの入力と1つの出力とを有する8個のXORゲート
Figure 2015142381
を備える反転回路54の第1の8ビット幅の入力に接続され、反転回路54の第2の1ビット幅の入力は、インバータ55の出力に接続される。
i=7,…,14に関して、値
Figure 2015142381
が、XORゲート
Figure 2015142381
の第1の入力に印加され、インバータ55によって出力される値
Figure 2015142381
が、第2の入力に供給される。XORゲート
Figure 2015142381
は、その出力で値
Figure 2015142381
を出力する。
図6は、定数2進値bfとペイロードデータビットx,…,xとが記憶されているビット位置が訂正されることを示す。
また、さらなるビット、例えばチェックビットも訂正される、またはペイロードデータビットの部分集合のみが訂正されることもあり得る。
図6に示される実施形態では、誤り検出器FE57が存在し、その5ビット幅の入力がシンドローム生成器51の出力に接続され、そのqビット幅の出力で誤り信号Eを出力し、ここでq≧1が成り立つ。
いくつかの実施形態に関して、書込みアドレスaのビットa,…,a、および読出しアドレスのビット
Figure 2015142381
(r=5)が、符号化および復号化に含まれ、それにより、チェックビットが、情報ビットから、例えば、
,…,u14=bf,x,…,x,a,…,a
に従って決定されることが示されている。
また、ビットが、関数f:{0,1}→{0,1}(t<r)によって、アドレスビットa,…,aから導出されてもよく、前記導出されるビット
,…,A=f(a,…,a
は、
,…,u=bf1,1,…,xn,,…,A
が、線形符号Cの情報ビットを形成するように決定される。したがって、例えば、t=1とすることができ、
=a+a+…+a
に従って定義されるAが、アドレスビットのパリティである。
次に、いくつかの実施形態のさらなる態様を、BCH符号に関して論じる。
1ビットおよび2ビット誤りを訂正することができる(15,7)BCH符号CのH行列は、H行列H
Figure 2015142381
である((非特許文献1)参照)。
変数y,…,y15が、左から右へのH行列の列に割り振られる。
このBCH符号CのH行列の各行は、6個、8個、または12個の「1」を含み、したがって偶数個の「1」を含むので、
Figure 2015142381
が符号Cのコードワードであり、ビットd,…,d15としてメモリに直接または反転させて書き込むことができる全てのビットの集合
Figure 2015142381
を形成することができる。式(10)のH行列が8行を有するので、BCH符号は、8個のチェックビットと、7個の情報ビットとを有する。y15=bfが定数値として選択される場合、6個のペイロードデータビットを記憶することができる。誤りであり得るビット
Figure 2015142381
をメモリから読み出した後、1ビットおよび2ビット誤りをBCH符号によって訂正することができる。例えば、
Figure 2015142381
が誤りである場合、
Figure 2015142381
は、さらなるビットが誤りである場合でさえ、訂正値
Figure 2015142381
に訂正される。
いくつかの実施形態は、メモリに直接または反転されて書き込まれたビットの集合Yを識別するためにt個の定数値bf,…,bf(t>1)が使用されるさらなる態様を実施することができる。メモリから読み出されている値
Figure 2015142381
が、誤り訂正符号Cに従って訂正された後、定数値bf,…,bfに対応する訂正されたビットから、ビットグループYのビットが反転されるべきか否かを決定することができる。これにより、Yのビットが反転されべきるか否かに関する言明の信頼性を高めることができる。
例えば、t=3であり、符号Cは、符号距離5を有する2ビット誤り訂正符号でよい。部分集合Yの定数2進値bfi1、bfi2、bfi3に関して、bfi1=bfi2=bfi3=0を適用することができる。1ビット誤りまたは2ビット誤りの場合、全ての1ビットおよび全ての2ビット誤りが符号Cによって訂正されるので、定数2進値が直接または反転されて記憶されているビット位置でのビット
Figure 2015142381
全てが同じわけではないことがある。それにより、有利には、Yのビットがメモリに直接または反転されて書き込まれているかどうかの決定の信頼性が特に高くなる。
以下、アドレスビットが符号化に含まれない一実施形態の後続の方法ステップを述べる。
記憶すべきデータビットを提供し、それらのデータビットを定数2進値によって補完するステップ。
誤り訂正符号Cを用いてデータビットおよび定数2進値を符号化するステップ。
記憶すべきビットの部分集合のビットが反転されるべきかどうか判断するステップと、
ビット部分集合のビットが反転されるべきであるときには、部分集合のビットを反転させるステップと、
ビット部分集合のビットが反転されるべきでないときには、部分集合のビットを反転させないステップと
によって、記憶すべきビットを生成するステップ。
4.記憶すべきビットをメモリに書き込むステップ。
5.記憶されている、場合によってば誤りのビットをメモリから読み出すステップ。
6.読み出された、誤りであり得るビットを、誤り訂正符号Cを使用することによって訂正するステップ。ここで、生じている誤りが符号Cによって訂正可能である場合には、定数2進ビットが記憶されているビット位置と、データビットが記憶されている少なくとも1つのビット位置とが訂正される。
7.記憶されるビットの値を反転する、または反転しないステップ。ここで、定数値が記憶されているビット位置での訂正されたビットに基づいて、ビットの部分集合が反転されるべきか反転されないべきかが決定される。
以下、アドレスビットが符号化に含まれるさらなる実施形態の後続の方法ステップを述べる。
記憶すべきデータビットを提供し、それらのデータビットを定数2進値によって補完するステップ。
誤り訂正符号Cを用いて、データビット、定数2進値、および書込みアドレスのアドレスビットを符号化するステップ。
記憶すべきビットの部分集合のビットが反転されるべきかどうか判断するステップと、
ビット部分集合のビットが反転されるべきであるときには、部分集合のビットを反転させるステップと、
ビット部分集合のビットが反転されるべきでないときには、部分集合のビットを反転させないステップと
によって、記憶すべきビットを生成するステップであって、アドレスビットが、記憶すべきビットに属さないステップ。
4.符号化に含まれる書込みアドレスで、記憶すべきビットをメモリに書き込むステップ。
5.読出しアドレスで、記憶されている、場合によってば誤りのビットをメモリから読み出すステップ。
6.誤り訂正符号Cを使用することによって、読出しアドレスを考慮に入れて、読み出された、誤りであり得るビットを訂正するステップ。ここで、生じている誤りが符号Cによって訂正可能である場合には、定数2進ビットが記憶されているビット位置と、データビットが記憶されている少なくとも1つのビット位置とが訂正される。
7.記憶されるビットの値を反転する、または反転しないステップ。ここで、定数値が記憶されているビット位置での訂正されたビットに基づいて、ビットの部分集合が反転されるべきか反転されないべきかが決定される。
以下に、いくつかの実施形態をまとめる。
一実施形態によれば、ビットをメモリに記憶するための方法が提供され、ここで、ビットは、線形誤り訂正符号Cを用いて符号化され、線形誤り訂正符号Cは、少なくとも3の符号距離を有し、線形誤り訂正符号Cを用いて符号化されたビットの部分集合が直接書き込まれるか、それともビット毎に反転されてメモリに書き込まれるかが判断され、符号Cは、H行列Hを備え、ここで、
メモリに直接または反転されて書き込まれたビットの部分集合は、少なくとも1つの2進定数値を含み、この値は、ペイロードデータビットと共に、線形符号Cのコードワードを形成するためにコード化に使用され、ここで、それぞれのビット部分集合のビットがメモリに直接書き込まれるときには、2進定数値が2進値bfとしてメモリに書き込まれ、それぞれのビット部分集合のビットが反転されてメモリに書き込まれるときには、2進値bfが反転値
Figure 2015142381
としてメモリに書き込まれ、
ここで、メモリに直接または反転されて書き込まれたビットの部分集合が反転されるときに、符号Cのコードワードが同じ符号のコードワードに変換され、符号のH行列は、メモリに直接または反転されて書き込まれたビットの部分集合に対応するH行列の列の各成分の「1」の数が偶数であるように生成され、
2.メモリからの読出し時に、線形誤り訂正符号Cを使用することによって、メモリから読み出された、誤りであり得るビットが訂正され、ここで、それぞれのビット部分集合がメモリに直接書き込まれているときには、少なくとも、定数2進値bfが書き込まれているビット位置にあるビットが訂正され、または、それぞれのビット部分集合がメモリに反転されて書き込まれているときには、少なくとも、定数2進値
Figure 2015142381
が書き込まれているビット位置にあるビットが訂正され、
3.読出し後、定数値bfまたは反転された定数値
Figure 2015142381
が記憶されているビット位置から読み出されている訂正された値が
Figure 2015142381
であるときには、メモリに直接または反転されて書き込まれているビット部分集合のビットが反転され、この値がbfであるときには反転されない。
一実施形態によれば、メモリは、レジスタである。
別の実施形態によれば、メモリは、レジスタアレイである。
さらなる実施形態によれば、メモリは、アドレス可能なメモリである。
一実施形態では、誤り訂正符号Cを用いて符号化されたビットは、アドレスビットを使用することによって符号化される。
一実施形態によれば、メモリに直接または反転されて書き込まれるビット部分集合のうちの1つのビット部分集合内の「0」の数または「1」の数が、その部分集合がメモリに直接書き込まれるか、それとも反転されて書き込まれるかを決定する。
一実施形態では、直接書き込み、次いで読み出し、書込み値と読出し値とを比較した後に、誤りが生じていないときには、ビットの部分集合は、メモリに直接書き込まれる。
一実施形態によれば、直接書き込み、次いで読み出し、書込み値と読出し値とを比較した後に、せいぜいT(Tは、符号Cによって訂正することができる誤りの数よりも小さい)個の誤りが生じているときには、ビットの部分集合は、メモリに直接書き込まれる。
一実施形態では、反転させて書き込み、次いで読み出し、書込み値と読出し値とを比較した後に、直接書き込み、次いで読出し値と書込み値とを比較した後に生じるのとせいぜい同数の誤りが生じているときには、ビットの部分集合は、メモリに反転されて書き込まれる。
一実施形態によれば、反転させて書き込み、次いで読み出し、書込み値と読出し値とを比較した後に、せいぜいT(Tは、符号Cによって訂正することができる誤りの数よりも小さい)個の誤りが生じているときには、ビットの部分集合は、反転されてメモリに書き込まれる。
さらに、別の実施形態によれば、さらなる方法が提供される。この方法は、以下のステップを含む。
アドレス可能なメモリにアドレスaで記憶されるペイロードデータビットx,…,xを、定数値を有するl(l≧1)個のビットbf,…,bfによって補完するステップ。
アドレスビットから導出されるビットがコードワードの形成に含まれないときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、定数値を有するビットbf,…,bfおよびペイロードデータビットx,…,xをコードワードc,…,c,bf1,…,bfl,1,…,xに符号化するステップ。ここで、c,…,cは、bf,…,bf,x,…,xから決定されるチェックビットである。さらに、アドレスビットa,…,aから導出されるビットA,…,Aが符号化に含まれるときには、少なくとも1ビット誤りを訂正する線形符号Cを用いて、ビットbf,…,bf,x,…,x,A,…,Aをコードワードc,…,c,bf1,…,bfl,1,…,xn,,…,Aにコード化するステップ。ここで、c,…,cは、bf,…,bf,x,…,x,A,…,Aから決定されるチェックビットであり、A,…,A=f(a,…,a)は、アドレスビットから関数f:{0,1}→{0,1}によって一意に決定される。
直接または反転されて記憶されるビットc,…,c,bf,…,bf,x,…,xのK(K≧1)個のビットグループY,…,Yを定義するステップ。それにより、所定のビットbf,…,bfの部分集合が、これらのグループそれぞれに一意に割り振られる。
グループY,…,Yのうちのどのビットグループが、メモリに反転されてまたは反転されずに記憶されるかを選択するステップ。
メモリにアドレスaでビットc,…,c,bf,…,bf,x,…,xを書き込むステップ。ここで、反転されてメモリに書き込まれるビットのグループに属するビットは、書込み前に反転され、反転されるビットを含むグループに属さないビットは、直接、すなわち反転されずにメモリに書き込まれる。
メモリにアドレスaで記憶されているビットを読み出すステップ。
アドレスビットから導出されるビットがコードワードの形成に含まれない場合には、ステップ8に進む。アドレスビットから導出されるビットがコードワードの形成に含まれる場合には、ステップ10に進む。
同じアドレスに書き込まれた値とは誤りにより異なることがある、メモリから読み出されたビットを、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて訂正するステップ。
ステップ11に進む。
メモリから読み出された、誤りであり得る値を、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて、誤りであり得るアドレスビットから導出されるやはり誤りであり得るビット
Figure 2015142381
も使用することによって訂正するステップ。
それぞれのビットグループに一意に割り当てられた符号Cを使用することによって訂正された読み出された定数値から、どのビットグループがメモリに直接または反転されて書き込まれているかを決定するステップ。
前のステップで書込み中に反転されているビットを含むビットグループと判断されているビットグループの読み出されて訂正されたビットを反転するステップ。
方法が終了する。
さらに、別の実施形態によれば、少なくとも1ビット誤りを訂正する線形符号Cのコードワードを形成するビットの部分集合をメモリセルのメモリに直接または反転させて書き込むため、および、メモリに書き込まれているビットを読み出し、直接または反転されて記憶されていた、メモリから誤り状態で読み出されていることがあるビットから、元のビットを回復するための方法が提供され、この方法は、以下のステップを含む。
メモリに直接または反転させて書き込むことができる、少なくとも1ビット誤りを訂正する線形符号Cを用いて符号化されたビットの部分集合の数K(K≧1)を定義するステップ。
アドレスa=a1,…,a(r≧2)で、少なくとも1ビット誤りを訂正する線形系統的符号のコードワードのサブワードとして記憶されるn個のペイロードデータビットx,…,xを提供するステップ。
符号Cの情報ビットu,…,uを生成するステップ。ここで、アドレスaが符号Cのコードワードの形成に含まれない場合には、データビットx,…,xは、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x
が成り立ち、ここで、N=l+nであり、アドレスaが符号Cのコードワードの形成に含まれる場合には、データビットx,…,x、およびアドレスビットa,…,aから導出されるビットA,…,Aが、l個の所定の2進値bf,…,bfによって補完され、それにより、
,…,u=bf,…,bf,x,…,x,A,…,A
が成り立ち、ここで、N=l+n+kであり、ここで、
,…,A=f(a,…,a
は、r個のアドレスビットa,…,aの値から関数fによって一意に決定される2進値であり、l≧1および1≦k≦rである。
4.アドレスaが誤り検出または誤り訂正に含まれない場合には、方法はステップ5に進み、アドレスaが誤り検出または誤り訂正に含まれる場合には、方法はステップ16に進む。
5.符号Cのコードワードy,…,yを生成するステップ。ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)G=c,…,c,bf,…,bf,x1,…,x
が成り立ち、c,…,cは、m個のチェックビットであり、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+m+l、m=P−N、N=n+l、およびm=P−Nが成り立つ。
6.ビット
,…,y=c,…,c,bf,…,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するステップ。それにより、以下のことが成り立つ。
第1の所定の値を有するビットまたは複数のビットbf,…,bfが、各部分集合Y,…,Yに1対1で割り当てられる。
Figure 2015142381
がビットy,…,yの2進値である場合、j=1,…,Pおよびあらゆる部分集合Y(K≧q≧1)に関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードである。
7.ビットグループY,…,Yのうちのどのグループがメモリに直接または反転されて書き込まれるかを定義するステップ。
8.メモリに書き込まれるP個のビットd,…,dを生成するステップ。ここで、i=1,…,Pに関して、以下のことが成り立つ。
が、反転されてメモリに書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、yが、反転されてメモリに書き込まれるビットを含むグループに属さないときには、d=yである。
9.メモリにアドレスaでビットd,…,dを書き込むステップ。
読出し:
10.アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すステップ。これらの値は、アドレスaに書き込まれた値d,…,dから、生じ得る誤りに起因して生じている。
11.符号Cによって訂正すべきL個のビット位置k,…,kを定義するステップ。ここで、l≦Pおよび{k,…,k}⊆{1,…,P}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属する。
12.符号Cによって訂正可能な誤りに関して、符号Cに基づいて訂正すべき所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するステップ。
13.少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するステップ。ここで、opは、一意に可逆のブール演算である。
14.既知の挿入された値bf,…,bfと、符号Cを使用することによって訂正されたそれぞれの読出し値とに基づいて、どのグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するステップ。
15.
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するステップ。ここで、「op」は、2項の一意に可逆のブール演算である。方法が終了する。
16.符号Cのコードワードy=y,…,yを生成するステップ。ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、
y=y,…,y=(u,…,u)・G=c,…,c,bf,…,bf,x1,…,x,A,…,A
が成り立ち、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+l+m+k、N=n+l+kであり、c,…,cは、m=P−N個のチェックビットである。
17.ビット
,…,yn+l+m=c,…,c,bf,x,…,x
のK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するステップ。それにより、以下のことが成り立つ。
第1の所定の値を有するビットまたは複数のビットbf,…,bfが、各部分集合Y,…,Yに1対1で割り当てられる。
Figure 2015142381
がビットy,…,yの2進値である場合、j=1,…,Pおよびあらゆる部分集合Y(K≧q≧1)に関して、
Figure 2015142381
が部分集合Yの要素である場合には、
Figure 2015142381
であり、
Figure 2015142381
が部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は符号Cのコードワードである。
18.どのビットグループY,…,Yがメモリに直接または反転されて書き込まれるかを定義するステップ。
19.メモリに書き込まれるP−k個のビットd,…,dm+l+nを生成するステップ。ここで、i=1,…,m+n+lに関して、以下のことが成り立つ。
が、メモリに直接書き込まれるビットを含むグループに属するときには、d=yであり、
が、メモリに反転されて書き込まれるビットを含むグループに属するときには、
Figure 2015142381
である。
20.メモリにアドレスaでビットd,…,dm+n+lを書き込むステップ。
読み出し:
21.アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すステップ。これらの値は、アドレスaに書き込まれた値d,…,dn+m+lから、生じ得る誤りに起因して生じている。
22.符号Cによって訂正すべきL個のビット位置k,…,kを定義するステップ。ここで、l≦P−kおよび{k,…,k}⊆{1,…,n+m+l}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属する。
23.符号Cによって訂正可能な誤りに関して、所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するステップ。
24.少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するステップ。ここで、「op」は、2進の一意に可逆の演算である。
25.既知の値bf,…,bfと、読み出され、符号Cを使用することによって訂正された対応する値とに基づいて、どのビットグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するステップ。
26.
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するステップ。ここで、「op」は、2項の一意に可逆のブール演算である。方法が終了する。
一実施形態によれば、メモリは、フラッシュメモリである。
別の実施形態によれば、メモリは、M−RAMである。
さらなる実施形態によれば、メモリは、R−RAMである。
一実施形態では、系統的形態での符号Cの生成行列は、符号化を行う働きをする。
別の実施形態によれば、符号Cは、ハミング符号または短縮ハミング符号である。
別の実施形態では、符号Cは、Hsiao符号または短縮Hsiao符号である。
さらなる実施形態によれば、符号Cは、BCH符号または短縮BCH符号である。
別の実施形態では、k=r、および(A,…,A)=(a,…,a)が成り立つ。
別の実施形態によれば、k=1、A=f(a,…,a)=a+a+…+aが成り立ち、Aは、アドレスビットa,…,aのパリティである。
第1の態様によれば、装置は、処理ユニットと、メモリとを備え、処理ユニットは、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成され、ここで、複数の符号化ビットはそれぞれビット値を有し、線形誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成し、ここで、処理ユニットは、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するように構成され、ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合の符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値に等しく、ここで、符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、処理ユニットは、記憶ワードとして、第1のコードワードのビットをメモリに記憶するように構成され、ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含み、符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、処理ユニットは、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得するように構成され、さらに、記憶ワードとして、第2のコードワードをメモリに記憶するように構成され、ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
第1の態様を再び参照したときの第2の態様によれば、装置は回路である。
第1の態様を再び参照したときの第3の態様によれば、符号化ビットの部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含む。
第1の態様を再び参照したときの第4の態様によれば、符号化ビットの部分集合は、複数の符号化ビットのうちの全ての符号化ビットは含まない。
第1の態様を再び参照したときの第5の態様によれば、第1の所定の値は、第1の定数2進値bfであり、第2の所定の値は、第2の定数2進値
Figure 2015142381
であり、処理ユニットは、記憶ワードをメモリから読み出すように構成され、処理ユニットは、記憶ワードを読み出した後、指示ビットが記憶されているメモリ内のビット位置から読み出されているビット値が第2の定数2進値
Figure 2015142381
であるときには、メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、指示ビットが記憶されているメモリ内のビット位置から読み出されているビット値が第1の定数2進値bfであるときには反転しないように構成される。
第1の態様を再び参照したときの第6の態様によれば、第1の所定の値は、第1の定数2進値bfであり、第2の所定の値は、第2の定数2進値
Figure 2015142381
であり、処理ユニットは、記憶ワードをメモリから読み出すように構成され、処理ユニットは、1つまたは複数のビットが誤りである場合には、線形誤り訂正符号を使用することによって、記憶ワードの1つまたは複数のビットを訂正するように構成され、ここで、少なくとも、指示ビットが書き込まれているビット位置に記憶されているビットが、前記ビットが誤りである場合に訂正され、処理ユニットは、記憶ワードを読み出した後、かつ1つまたは複数のビットを訂正した後、指示ビットが記憶されているメモリ内のビット位置から読み出されているビット値が第2の定数2進値
Figure 2015142381
であるときには、メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、指示ビットが記憶されているメモリ内のビット位置から読み出されているビット値が第1の定数2進値bfであるときには反転しないように構成される。
第1の態様を再び参照したときの第7の態様によれば、線形誤り訂正符号は、パリティチェック行列Hを含み、パリティチェック行列Hの列の各成分の「1」の数は偶数である。
第1の態様を再び参照したときの第8の態様によれば、メモリは、レジスタ、レジスタアレイ、またはアドレス可能なメモリである。
第1の態様を再び参照したときの第9の態様によれば、メモリは、アドレス可能なメモリであり、処理ユニットは、線形誤り訂正符号を採用することによって、かつアドレスビットを使用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成される。
第1の態様を再び参照したときの第10の態様によれば、処理ユニットは、符号化ビットの部分集合の「0」の数または符号化ビットの部分集合の「1」の数に応じて反転指定を特定するように構成される。
第1の態様を再び参照したときの第11の態様によれば、書込み値をメモリに書き込んだ後、次いで書込み値をメモリから読み出して読出し値を取得した後、さらに、書込み値と読み出された書込み値とを比較した後に、誤りが生じていないときには、処理ユニットは、符号化ビットの部分集合が反転されるべきでないことを示す反転指定を特定するように構成される。
第1の態様を再び参照したときの第12の態様によれば、書込み値をメモリに書き込んだ後、次いで書込み値をメモリから読み出して読出し値を取得した後、さらに、書込み値と読み出された書込み値とを比較した後に、せいぜいT(Tは、線形誤り訂正符号によって訂正することができる誤りの数よりも小さい)個の誤りが生じているときには、処理ユニットは、符号化ビットの部分集合が反転されるべきでないことを示す反転指定を特定するように構成される。
第1の態様を再び参照したときの第13の態様によれば、ビット部分集合の反転された書込み値をメモリに書き込んだ後、次いで書き込まれている反転されている書込み値をメモリから読み出して読出し値を取得した後、さらに、書き込まれている反転されている書込み値と読み出された反転されている書込み値とを比較した後に、直接書き込み、次いで読出し値と書き込まれた反転されていない値とを比較した後に生じるのとせいぜい同数の誤りが生じているときには、処理ユニットは、符号化ビットの部分集合が反転されるべきであることを示す反転指定を特定するように構成される。
第1の態様を再び参照したときの第14の態様によれば、ビット部分集合の反転された書込み値をメモリに書き込んだ後、次いで書き込まれている反転されている書込み値をメモリから読み出して読出し値を取得した後、さらに、書き込まれている反転されている書込み値と読出し値とを比較した後に、せいぜいT(Tは、線形誤り訂正符号によって訂正することができる誤りの数よりも小さい)個の誤りが生じているときには、処理ユニットは、符号化ビットの部分集合が反転されるべきであることを示す反転指定を特定するように構成される。
第1の態様を再び参照したときの第15の態様によれば、メモリは、Flashメモリ、磁気ランダムアクセスメモリ(M−RAM)、または抵抗性ランダムアクセスメモリ(R−RAM)である。
第1の態様を再び参照したときの第16の態様によれば、誤り訂正符号は、生成行列を含み、処理ユニットは、符号化のために系統的形態での生成行列を使用することによって、複数のビットを符号化するように構成される。
第1の態様を再び参照したときの第17の態様によれば、線形誤り訂正符号は、ハミング符号または短縮ハミング符号である。
第1の態様を再び参照したときの第18の態様によれば、線形誤り訂正符号は、Hsiao符号または短縮Hsiao符号である。
第1の態様を再び参照したときの第19の態様によれば、線形誤り訂正符号は、BCH符号または短縮BCH符号である。
第1の態様を再び参照したときの第20の態様によれば、処理ユニットは、符号化ビットのさらなる部分集合に応じて、符号化ビットのさらなる部分集合が反転されるべきか否かを示すさらなる反転指定を特定するように構成される。
第21の態様によれば、装置は、処理ユニットと、メモリとを備え、処理ユニットは、メモリにアドレスaで記憶されるペイロードデータビットx,…,xを、定数値を有するl(ここでl≧1)個のビットbf,…,bfによって補完するように構成され、ここで、処理ユニットは、アドレスビットから導出されるビットがコードワードの形成に含まれないときには、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cを用いて、定数値を有するビットbf,…,bfおよびペイロードデータビットx,…,xをコードワードc,…,c,bf1,…,bfl,1,…,xに符号化するように構成され、ここで、c,…,cは、bf,…,bf,x,…,xから決定されるチェックビットであり、さらに、処理ユニットは、アドレスビットa,…,aから導出されるビットA,…,Aが符号化に含まれるときには、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cを用いて、ビットbf,…,bf,x,…,x,A,…,Aをコードワードc,…,c,bf1,…,bfl,1,…,xn,,…,Aにコード化するように構成され、ここで、c,…,cは、bf,…,bf,x,…,x,A,…,Aから決定されるチェックビットであり、A,…,A=f(a,…,a)は、アドレスビットから関数f:{0,1}→{0,1}によって一意に決定され、ここで、処理ユニットは、直接または反転されて記憶されるビットc,…,c,bf,…,bf,x,…,xのK(K≧1)個のビットグループY,…,Yを定義するように構成され、それにより、所定のビットbf,…,bfの部分集合が、これらのグループそれぞれに一意に割り当てられ、ここで、処理ユニットは、ビットグループY,…,Yを決定するように構成され、それにより、1グループY(j=1,…,K)の全てのビットが反転される場合には、線形誤り訂正符号Cの第1のコードワードが線形誤り訂正符号Cの第2のコードワードに変換され、処理ユニットは、グループY,…,Yのうちのどのビットグループが、反転されてまたは反転されずにメモリに記憶されるかを選択するように構成され、ここで、処理ユニットは、メモリにアドレスaでビットc,…,c,bf,…,bf,x,…,xを書き込むように構成され、ここで、メモリに反転されて書き込まれるビットのグループに属するビットは、書込み前に反転され、反転されるビットを含むグループに属さないビットは、反転されずにメモリに書き込まれ、ここで、処理ユニットは、メモリにアドレスaで記憶されているビットを読み出すように構成され、ここで、アドレスビットから導出されるビットがコードワードの形成に含まれない場合には、処理ユニットは、同じアドレスに書き込まれた値とは誤りにより異なることがある、メモリから読み出されたビットを、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、線形誤り訂正符号Cに基づいて訂正するように構成され、アドレスビットから導出されるビットがコードワードの形成に含まれる場合には、処理ユニットは、メモリから読み出された、誤りであり得る値を、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、線形誤り訂正符号Cに基づいて、誤りであり得るアドレスビットから導出されるやはり誤りであり得るビット
Figure 2015142381
も使用することによって訂正するように構成され、処理ユニットは、それぞれのビットグループに一意に割り当てられた線形誤り訂正符号Cを使用することによって訂正された読み出された定数値から、どのビットグループがメモリに直接または反転されて書き込まれているかを決定するように構成され、処理ユニットは、前のステップで書込み中に反転されているビットを含むビットグループと判断されているビットグループの読み出されて訂正されたビットを反転するように構成される。
第21の態様を再び参照したときの第22の態様によれば、k=r、および(A,…,A)=(a,…,a)が成り立つ。
第21の態様を再び参照したときの第23の態様によれば、k=1、A=f(a,…,a)=a+a+…+aが成り立ち、Aは、アドレスビットa,…,aのパリティである。
第24の態様によれば、ビットをメモリに記憶するための装置であって、ビットが線形誤り訂正符号Cを用いて符号化され、線形誤り訂正符号Cが、少なくとも3の符号距離を有し、線形誤り訂正符号Cを用いて符号化されたビットの部分集合がメモリに直接書き込まれるか、それともビット毎に反転されて書き込まれるかが判断され、符号Cが、H行列Hを備える装置が、処理ユニットと、メモリとを備え、ここで、メモリに直接または反転されて書き込まれたビットの部分集合は、少なくとも1つの2進定数値を含み、この値は、データビットと共に、線形誤り訂正符号Cのコードワードを形成するためにコード化に使用され、処理ユニットは、それぞれのビット部分集合のビットがメモリに直接書き込まれるときに、2進定数値を2進値bfとしてメモリに書き込むように構成され、処理ユニットは、それぞれのビット部分集合のビットがメモリに反転されて書き込まれるときに、2進定数値を反転値
Figure 2015142381
としてメモリに書き込むように構成され、処理ユニットは、メモリに直接または反転されて書き込まれたビットの部分集合が反転されるときに、線形誤り訂正符号Cのコードワードを同じ符号のコードワードに変換するように構成され、線形誤り訂正符号CのH行列は、メモリに直接または反転されて書き込まれたビットの部分集合に対応するH行列の列の各成分の「1」の数が偶数であるように生成され、処理ユニットは、メモリからの読出し時に、メモリから読み出された、誤りであり得るビットを、線形誤り訂正符号Cを使用することによって訂正するように構成され、ここで、それぞれのビット部分集合がメモリに直接書き込まれているときには、少なくとも、定数2進値bfが書き込まれているビット位置にあるビットが訂正され、または、それぞれのビット部分集合がメモリに反転されて書き込まれているときには、少なくとも、定数2進値
Figure 2015142381
が書き込まれているビット位置にあるビットが訂正され、処理ユニットは、読出し後、定数値bfまたは反転された定数値
Figure 2015142381
が記憶されているビット位置から読み出されている訂正された値が
Figure 2015142381
であるときには、メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、この値がbfであるときには反転しないように構成される。
第25の態様によれば、方法が、エンコーダを使用して、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するステップを含み、ここで、複数の符号化ビットはそれぞれビット値を有し、線形誤り訂正符号は、少なくとも3の符号距離を有し、複数の符号化ビットは、線形誤り訂正符号の第1のコードワードを形成し、方法はさらに、処理ユニットを使用して、符号化ビットの部分集合に応じて、符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するステップを含み、ここで、符号化ビットの部分集合は、部分集合の全てのビットが反転される場合に線形誤り訂正符号の第1のコードワードがその符号の第2のコードワードに変換されるように決定され、部分集合は、複数の符号化ビットのうちの全ての符号化ビットを含み、または複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、符号化ビットの部分集合のうちの1つの符号化ビットは、指示ビットであり、指示ビットのビット値は、第1の所定のビット値に等しく、方法はさらに、符号化ビットの部分集合が反転されるべきでないことを反転指定が示すときには、記憶ワードとして、第1のコードワードのビットをメモリに記憶するステップを含み、ここで、メモリに記憶される第1のコードワードのビットは、第1の所定のビット値を有する指示ビットを含み、符号化ビットの部分集合が反転されるべきであることを反転指定が示すときには、ビット値を変えることによって符号化ビットの部分集合の各符号化ビットを反転させることによって、線形誤り訂正符号の第1のコードワードを修正して線形誤り訂正符号の第2のコードワードを取得し、記憶ワードとして、第2のコードワードをメモリに記憶するステップを含み、ここで、第2のコードワードは、反転された指示ビットを含み、それにより、指示ビットのビット値は、第1の所定のビット値とは異なる第2の所定のビット値である。
第26の態様によれば、方法は、アドレス可能なメモリにアドレスaで記憶されるペイロードデータビットx,…,xを、定数値を有するl(l≧1)個のビットbf,…,bfによって補完するステップを含み、方法はさらに、エンコーダによって、アドレスビットから導出されるビットがコードワードの形成に含まれないときには、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cを用いて、定数値を有するビットbf,…,bfおよびペイロードデータビットx,…,xをコードワードc,…,c,bf1,…,bfl,1,…,xに符号化するステップを含み、ここで、c,…,cは、bf,…,bf,x,…,xから決定されるチェックビットであり、方法はさらに、アドレスビットa,…,aから導出されるビットA,…,Aが符号化に含まれるときには、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cを用いて、ビットbf,…,bf,x,…,x,A,…,Aをコードワードc,…,c,bf1,…,bfl,1,…,xn,,…,Aにコード化するステップを含み、ここで、c,…,cは、bf,…,bf,x,…,x,A,…,Aから決定されるチェックビットであり、A,…,A=f(a,…,a)は、アドレスビットから関数f:{0,1}→{0,1}によって明瞭に決定され、方法はさらに、処理ユニットを使用して、直接または反転されて記憶されるビットc,…,c,bf,…,bf,x,…,xのK(K≧1)個のビットグループY,…,Yを定義するステップを含み、それにより、所定のビットbf,…,bfの部分集合が、これらのグループそれぞれに一意に割り振られ、それにより、ビットグループのビットが反転される場合に、線形誤り訂正符号Cの第1のコードワードが線形誤り訂正符号Cの第2のコードワードに変換され、方法はさらに、処理ユニットを使用して、グループY,…,Yのうちのどのビットグループが、反転されてまたは反転されずにメモリに記憶されるかを選択するステップを含み、方法はさらに、処理ユニットを使用して、メモリにアドレスaでビットc,…,c,bf,…,bf,x,…,xを書き込むステップを含み、ここで、反転されてメモリに書き込まれるビットのグループに属するビットは、書込み前に反転され、反転されるビットを含むグループに属さないビットは、直接、すなわち反転されずにメモリに書き込まれ、方法はさらに、処理ユニットを使用して、メモリにアドレスaで記憶されているビットを読み出すステップを含み、アドレスビットから導出されるビットがコードワードの形成に含まれない場合には、h)に進み、アドレスビットから導出されるビットがコードワードの形成に含まれる場合には、j)に進み、方法はさらに、処理ユニットを使用して、同じアドレスに書き込まれた値とは誤りにより異なることがある、メモリから読み出されたビットを、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、誤り訂正符号Cに基づいて訂正するステップを含み、k)に進み、方法はさらに、処理ユニットを使用して、メモリから読み出された、誤りであり得る値を、少なくとも定数値bf,…,bfが直接または反転されて記憶されているビット位置で、線形誤り訂正符号Cに基づいて、誤りであり得るアドレスビットから導出されるやはり誤りであり得るビット
Figure 2015142381
も使用することによって訂正するステップを含み、方法はさらに、処理ユニットを使用して、それぞれのビットグループに一意に割り当てられた線形誤り訂正符号Cを使用することによって訂正された読み出された定数値から、どのビットグループがメモリに直接または反転されて書き込まれているかを決定するステップを含み、方法はさらに、処理ユニットを使用して、前のステップで書込み中に反転されているビットを含むビットグループと判断されているビットグループの読み出されて訂正されたビットを反転するステップを含む。
第27の態様によれば、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cのコードワードを形成するビットの部分集合をメモリセルのメモリに直接または反転させて書き込むため、および、メモリに書き込まれているビットを読み出し、直接または反転されて記憶されていた、メモリから誤り状態で読み出されていることがあるビットから、元のビットを回復するための方法が、処理ユニットを使用して、メモリに直接または反転させて書き込むことができる、少なくとも1ビット誤りを訂正する線形誤り訂正符号Cを用いて符号化されたビットの部分集合の数K(K≧1)を定義するステップを含み、方法はさらに、処理ユニットを使用して、アドレスa=a1,…,a(r≧2)で、少なくとも1ビット誤りを訂正する線形系統的符号のコードワードのサブワードとして記憶されるn個のペイロードデータビットx,…,xを提供するステップを含み、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cの情報ビットu,…,uを生成するステップを含み、ここで、アドレスaが線形誤り訂正符号Cのコードワードの形成に含まれない場合には、データビットx,…,xは、l個の所定の2進値bf,…,bfによって補完され、それにより、u,…,u=bf,…,bf,x,…,xが成り立ち、ここで、N=l+nであり、アドレスaが線形誤り訂正符号Cのコードワードの形成に含まれる場合には、データビットx,…,x、およびアドレスビットa,…,aから導出されるビットA,…,Aが、l個の所定の2進値bf,…,bfによって補完され、それにより、u,…,u=bf,…,bf,x,…,x,A,…,Aが成り立ち、ここで、N=l+n+kであり、ここで、A,…,A=f(a,…,a)は、r個のアドレスビットa,…,aの値から関数fによって一意に決定される2進値であり、l≧1および1≦k≦rであり、d)アドレスaが誤り検出または誤り訂正に含まれない場合には、方法はステップe)に進み、アドレスaが誤り検出または誤り訂正に含まれる場合には、方法はステップp)に進み、方法はさらに、e)処理ユニットを使用して、線形誤り訂正符号Cのコードワードy,…,yを生成するステップを含み、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、y=y,…,y=(u,…,u)G=c,…,c,bf,…,bf,x1,…,xが成り立ち、c,…,cは、m個のチェックビットであり、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+m+l、m=P−N、N=n+l、およびm=P−Nが成り立ち、方法はさらに、f)処理ユニットを使用して、ビットy,…,y=c,…,c,bf,…,bf,x,…,xのK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するステップを含み、それにより、以下のことが成り立つ:第1の所定の値を有するビットまたは複数のビットbf,…,bfが、各部分集合Y,…,Yに1対1で割り当てられ、
Figure 2015142381
がビットy,…,yの2進値である場合、j=1,…,Pおよびあらゆる部分集合Y(K≧q≧1)に関して、yが部分集合Yの要素である場合には、
Figure 2015142381
であり、yが部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は線形誤り訂正符号Cのコードワードである;方法はさらに、g)処理ユニットを使用して、ビットグループY,…,Yのうちのどのグループがメモリに直接または反転されて書き込まれるかを定義するステップを含み、方法はさらに、h)処理ユニットを使用して、メモリに書き込まれるP個のビットd,…,dを生成するステップを含み、ここで、i=1,…,Pに関して、以下のことが成り立つ:yが、反転されてメモリに書き込まれるビットを含むグループに属するときには、
Figure 2015142381
であり、yが、反転されてメモリに書き込まれるビットを含むグループに属さないときには、d=yである;方法はさらに、処理ユニットを使用して、メモリにアドレスaでビットd,…,dを書き込むステップを含み、方法はさらに読出しを行い、方法はさらに、処理ユニットを使用して、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すステップを含み、これらの値は、アドレスaに書き込まれた値d,…,dから、生じ得る誤りに起因して生じており、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cによって訂正すべきL個のビット位置k,…,kを定義するステップを含み、ここで、l≦Pおよび{k,…,k}⊆{1,…,P}であり、これらのビット位置k,…,kは、値が誤りである場合には線形誤り訂正符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cによって訂正可能な誤りに関して、線形誤り訂正符号Cに基づいて訂正すべき所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するステップを含み、方法はさらに、処理ユニットを使用して、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するステップを含み、ここで、opは、一意に可逆のブール演算であり、方法はさらに、処理ユニットを使用して、既知の挿入された値bf,…,bfと、線形誤り訂正符号Cを使用することによって訂正されたそれぞれの読出し値とに基づいて、どのグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するステップを含み、方法はさらに、
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するステップを含み、ここで、「op」は、2項の一意に可逆のブール演算であり、方法が終了し、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cのコードワードy=y,…,yを生成するステップを含み、ここで、Cは、系統的形態での生成行列Gと、H行列Hとを有する線形系統的符号であり、ここで、y=y,…,y=(u,…,u)・G=c,…,c,bf,…,bf,x1,…,x,A,…,Aが成り立ち、生成行列Gは、(N,P)行列であり、H行列H=(h,…,h)は、([P−N],P)行列であり、それにより、H行列の全ての列が、相異なり、0でなく、P=n+l+m+k、N=n+l+kであり、c,…,cは、m=P−N個のチェックビットであり、方法はさらに、処理ユニットを使用して、ビットy,…,yn+l+m==c,…,c,bf,…,bf,x,…,xのK個の部分集合Y={y1,1,…,y1,q1},…,Y={yK,1,…,yK,qK}を決定するステップを含み、それにより、以下のことが成り立つ:第1の所定の値を有するビットまたは複数のビットbf,…,bfが、各部分集合Y,…,Yに1対1で割り当てられ、
Figure 2015142381
がビットy,…,yの2進値である場合、j=1,…,Pおよびあらゆる部分集合Y(K≧q≧1)に関して
Figure 2015142381
が部分集合Yの要素である場合には、
Figure 2015142381
であり、
Figure 2015142381
が部分集合Yの要素でない場合には、
Figure 2015142381
であるとき、
Figure 2015142381
は線形誤り訂正符号Cのコードワードである;方法はさらに、処理ユニットを使用して、どのビットグループY,…,Yがメモリに直接または反転されて書き込まれるかを定義するステップを含み、方法はさらに、処理ユニットを使用して、メモリに書き込まれるP−k個のビットd,…,dm+l+nを生成するステップを含み、ここで、i=1,…,m+n+lに関して、以下のことが成り立つ:yが、メモリに直接書き込まれるビットを含むグループに属するときには、d=yであり、yが、メモリに反転されて書き込まれるビットを含むグループに属するときには、
Figure 2015142381
である;方法はさらに、処理ユニットを使用して、メモリにアドレスaでビットd,…,dm+n+lを書き込むステップを含み、方法はさらに読出しを行い、方法はさらに、処理ユニットを使用して、アドレスaを作成し、アドレスaに記憶されている誤りであり得る値
Figure 2015142381
を読み出すステップを含み、これらの値は、アドレスaに書き込まれた値d,…,dn+m+lから、生じ得る誤りに起因して生じており、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cによって訂正すべきL個のビット位置k,…,kを定義するステップを含み、ここで、l≦P−kおよび{k,…,k}⊆{1,…,n+m+l}であり、これらのビット位置k,…,kは、値が誤りである場合には符号Cを使用することによって訂正され、ここで、bf,…,bfが直接または反転されて記憶されているビット位置が、訂正すべきビット位置に属し、方法はさらに、処理ユニットを使用して、線形誤り訂正符号Cによって訂正可能な誤りに関して、所定のL個のビット位置k,…,kの2進訂正値
Figure 2015142381
を決定するステップを含み、方法はさらに、処理ユニットを使用して、少なくとも値bf,…,bfが直接または反転されて記憶されているビット位置で、訂正されたビット
Figure 2015142381
を生成するステップを含み、ここで、「op」は、2進の一意に可逆の演算であり、方法はさらに、処理ユニットを使用して、既知の値bf,…,bfと、読み出され、線形誤り訂正符号Cを使用することによって訂正された対応する値とに基づいて、どのビットグループY,…,Yに関してビットが直接または反転されて記憶されているかを判断するステップを含み、方法はさらに、
Figure 2015142381
が、メモリへの書込み中にメモリに直接書き込まれているビットを含むビットグループに属する場合には、ビット
Figure 2015142381
を出力し、
Figure 2015142381
が、メモリへの書込み中にメモリに反転されて書き込まれているビットのグループに属する場合には、ビット
Figure 2015142381
を出力するステップを含み、ここで、「op」は、2項の一意に可逆のブール演算であり、方法が終了する。
いくつかの態様を装置の文脈で述べてきたが、これらの態様が、対応する方法の説明でもあることは明らかである。ここで、ブロックまたはデバイスは、方法ステップまたは方法ステップの特徴に対応する。同様に、方法ステップの文脈で述べられる態様は、対応する装置の対応するユニット、要素、または特徴の説明でもある。
本発明の分解された信号は、デジタル記憶媒体に記憶することができ、または、インターネットなど、無線伝送媒体や有線伝送媒体などの伝送媒体で伝送することができる。
特定の実装要件に応じて、いくつかの実施形態は、ハードウェアまたはソフトウェアで実装することができる。実装は、それぞれの方法が実施されるようにプログラマブルコンピュータシステムと協働する(または協働可能である)、電子的に可読の制御信号が記憶されているデジタル記憶媒体、例えば、フロッピディスク、DVD、CD、ROM、PROM、EPROM、EEPROM、またはFLASHメモリを使用して行うことができる。
いくつかの実施形態は、本明細書で述べる方法の1つが実施されるようにプログラマブルコンピュータシステムと協働することが可能な電子的に可読の制御信号を担持する非一時的なデータキャリアを含む。
一般に、本発明のいくつかの実施形態は、プログラムコードを含むコンピュータプログラム製品として実装することができ、プログラムコードは、コンピュータプログラム製品がコンピュータ上で実行されるときに方法の1つを実施するように動作可能である。プログラムコードは、例えば機械可読キャリアに記憶することができる。
他の実施形態は、機械可読キャリアに記憶された、本明細書で述べる方法の1つを実施するためのコンピュータプログラムを含む。
すなわち、したがって本発明の方法の一実施形態は、コンピュータプログラムがコンピュータ上で実行されるときに本明細書で述べる方法の1つを実施するためのプログラムコードを有するコンピュータプログラムである。
したがって、本発明の方法のさらなる実施形態は、本明細書で述べる方法の1つを実施するためのコンピュータプログラムを記録して含むデータキャリア(またはデジタル記憶媒体もしくはコンピュータ可読媒体)である。
したがって、本発明の方法のさらなる実施形態は、本明細書で述べる方法の1つを実施するためのコンピュータプログラムを表すデータストリームまたは信号シーケンスである。データストリームまたは信号シーケンスは、例えば、データ通信接続を介して、例えばインターネットを介して伝送されるように構成することができる。
さらなる実施形態は、本明細書で述べる方法の1つを実施するように構成または適合された処理手段、例えばコンピュータまたはプログラマブル論理回路を含む。
さらなる実施形態は、本明細書で述べる方法の1つを実施するためのコンピュータプログラムをインストールしたコンピュータを含む。
いくつかの実施形態では、プログラマブル論理デバイス(例えば、フィールドプログラマブルゲートアレイ)を使用して、本明細書で述べる方法の機能のいくつかまたは全てを実施することができる。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書で述べる方法の1つを実施するためにマイクロプロセッサと協働することができる。一般に、方法は、任意のハードウェア装置によって実施される。
本開示をいくつかの有利な実施形態に関して述べてきたが、本開示の範囲内での変更形態、置換形態、および均等物が存在する。また、本発明の方法および組成を実施する多くの代替方法が存在することにも留意すべきである。したがって、以下の添付の特許請求の範囲は、本発明の真の精神および範囲に入る全てのそのような変更形態、置換形態、および均等物を含むものと解釈されることが意図される。
上述した実施形態は、本発明の原理に関する単なる例示にすぎない。本明細書で述べる構成および詳細の修正および変更が当業者には明らかであることを理解されたい。したがって、添付の特許請求の範囲によってのみ限定を与え、本明細書における実施形態の記述および説明によって表される具体的な詳細によっては限定を与えないことが意図される。
各請求項は、ただ1つの請求項のみを引用するが、本発明は、想定可能な請求項の任意の組合せをも包含する。
11 コーダ
12 XOR回路
13 メモリ
21 シンドローム生成器
22 復号器
23 XOR回路
24 訂正器
26 XOR回路
31 誤り検出器
41 コーダ
42 反転回路
43 メモリ
51 シンドローム生成器
52 復号器
53 XOR回路
54 訂正器
55 インバータ
57 誤り検出器
110 メモリ
120 処理ユニット

Claims (20)

  1. 処理ユニットと、
    メモリとを備える装置であって、
    前記処理ユニットが、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するように構成され、前記複数の符号化ビットがそれぞれビット値を有し、前記線形誤り訂正符号が、少なくとも3の符号距離を有し、前記複数の符号化ビットが、前記線形誤り訂正符号の第1のコードワードを形成し、
    前記処理ユニットが、前記符号化ビットの部分集合に応じて、前記符号化ビットの部分集合が反転されるべきか否かを示す反転指定を特定するように構成され、前記部分集合が、前記複数の符号化ビットのうちの少なくとも3つの符号化ビットを含み、
    前記符号化ビットの部分集合が反転されるべきでないことを前記反転指定が示すときには、前記処理ユニットが、記憶ワードとして、前記第1のコードワードのビットを前記メモリに記憶するように構成され、前記メモリに記憶される前記第1のコードワードの前記ビットが、第1の所定のビット値を有する指示ビットを含み、
    前記符号化ビットの部分集合が反転されるべきであることを前記反転指定が示すときには、前記処理ユニットが、ビット値を変更することによって前記符号化ビットの部分集合の各符号化ビットを反転させることによって、前記線形誤り訂正符号の前記第1のコードワードを修正して前記線形誤り訂正符号の第2のコードワードを取得するように構成され、前記記憶ワードとして、前記第2のコードワードのビットを前記メモリに記憶するように構成され、前記第2のコードワードの前記ビットが、反転された前記指示ビットを含み、それにより、前記指示ビットが、前記第1の所定のビット値とは異なる第2の所定のビット値を有する
    装置。
  2. 回路である請求項1に記載の装置。
  3. 前記符号化ビットの前記部分集合が、前記複数の符号化ビットのうちの全ての符号化ビットを含む請求項1に記載の装置。
  4. 前記符号化ビットの前記部分集合が、前記複数の符号化ビットのうちの全ての符号化ビットは含まない請求項1に記載の装置。
  5. 前記第1の所定の値が、第1の定数2進値bfであり、
    前記第2の所定の値が、第2の定数2進値
    Figure 2015142381
    であり、
    前記処理ユニットが、前記記憶ワードを前記メモリから読み出すように構成され、前記処理ユニットが、前記記憶ワードを読み出した後、前記指示ビットが記憶されている前記メモリ内のビット位置から読み出されているビット値が前記第2の定数2進値
    Figure 2015142381
    であるときには、前記メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、前記指示ビットが記憶されている前記メモリ内の前記ビット位置から読み出されているビット値が前記第1の定数2進値bfであるときには反転しないように構成される
    請求項1に記載の装置。
  6. 前記第1の所定の値が、第1の定数2進値bfであり、
    前記第2の所定の値が、第2の定数2進値
    Figure 2015142381
    であり、
    前記処理ユニットが、前記記憶ワードを前記メモリから読み出すように構成され、前記処理ユニットが、前記記憶ワードの1つまたは複数のビットが誤りである場合に、前記誤り訂正符号を使用することによって前記1つまたは複数のビットを訂正するように構成され、少なくとも前記指示ビットが書き込まれている前記ビット位置に記憶されているビットが、前記ビットが誤りである場合に訂正され、
    前記記憶ワードを読み出し、前記1つまたは複数のビットを訂正した後に、前記処理ユニットが、前記指示ビットが記憶されている前記メモリ内のビット位置から読み出されているビット値が前記第2の定数2進値
    Figure 2015142381
    であるときには、前記メモリに直接または反転されて書き込まれているビット部分集合のビットを反転するように構成され、前記指示ビットが記憶されている前記メモリ内の前記ビット位置から読み出されている前記ビット値が前記第1の定数2進値bfであるときには反転しないように構成される
    請求項1に記載の装置。
  7. 前記線形誤り訂正符号が、パリティチェック行列Hを含み、前記パリティチェック行列Hの列の各成分の1の数が偶数である請求項6に記載の装置。
  8. 前記メモリが、レジスタ、レジスタアレイ、またはアドレス可能なメモリである請求項1に記載の装置。
  9. 前記メモリが、アドレス可能なメモリであり、前記処理ユニットが、前記線形誤り訂正符号を採用することによって、かつアドレスビットを使用することによって、前記複数のビットを符号化して前記複数の符号化ビットを取得するように構成される請求項1に記載の装置。
  10. 前記処理ユニットが、前記符号化ビットの前記部分集合の0の数または前記符号化ビットの前記部分集合の1の数に応じて、前記反転指定を特定するように構成される請求項1に記載の装置。
  11. 前記メモリに書込み値を書き込んだ後、次いで前記書込み値を前記メモリから読み出して読出し値を取得した後、さらに、前記書き込まれた書込み値と前記読み出された書込み値とを比較した後に、誤りが生じていないとき、前記処理ユニットが、前記符号化ビットの前記部分集合が反転されるべきでないことを示す前記反転指定を特定するように構成される請求項1に記載の装置。
  12. 前記メモリに書込み値を書き込んだ後、次いで前記書込み値を前記メモリから読み出して読出し値を取得し、さらに、前記書き込まれた書込み値と前記読み出された書込み値とを比較した後に、せいぜいT個の誤りが生じているとき、前記処理ユニットが、前記符号化ビットの前記部分集合が反転されるべきでないことを示す前記反転指定を特定するように構成され、ここで、Tは、前記線形誤り訂正符号によって訂正することができる誤りの数よりも小さい請求項1に記載の装置。
  13. ビットの部分集合の反転されている書込み値を前記メモリに書き込んだ後、次いで前記書き込まれた反転されている書込み値を前記メモリから読み出して読出し値を取得した後、さらに、前記書き込まれた反転されている書込み値と前記読み出された反転されている書込み値とを比較した後に、直接書き込み、前記読出し値と前記書き込まれた反転されていない値とを比較した後に生じるのとせいぜい同数の誤りが生じているとき、前記処理ユニットが、前記符号化ビットの前記部分集合が反転されるべきであることを示す前記反転指定を特定するように構成される請求項1に記載の装置。
  14. ビットの部分集合の反転された書込み値を前記メモリに書き込み、次いで前記書き込まれた反転されている書込み値を前記メモリから読み出して、読み出された反転されている書込み値を取得し、さらに、前記書き込まれた反転されている書込み値と前記読み出された値とを比較した後に、せいぜいT個の誤りが生じている場合、前記処理ユニットが、前記符号化ビットの前記部分集合が反転されるべきであることを示す前記反転指定を特定するように構成され、ここで、Tは、前記線形誤り訂正符号によって訂正することができる誤りの数よりも小さい請求項1に記載の装置。
  15. 前記メモリが、Flashメモリ、磁気ランダムアクセスメモリ(M−RAM)、または抵抗性ランダムアクセスメモリ(R−RAM)である請求項1に記載の装置。
  16. 前記線形誤り訂正符号が、生成行列を含み、
    前記処理ユニットが、符号化のためにその系統的形態での前記生成行列を使用することによって、前記複数のビットを符号化するように構成される
    請求項1に記載の装置。
  17. 前記線形誤り訂正符号が、ハミング符号もしくは短縮ハミング符号であり、または
    前記線形誤り訂正符号が、Hsiao符号もしくは短縮Hsiao符号であり、または
    前記線形誤り訂正符号が、BCH符号もしくは短縮BCH符号である
    請求項1に記載の装置。
  18. 前記処理ユニットが、前記符号化ビットのさらなる部分集合に応じて、前記符号化ビットの前記さらなる部分集合が反転されるべきか否かを示すさらなる反転指定を特定するように構成される請求項1に記載の装置。
  19. ビットをメモリに記憶するための装置であって、前記ビットが、線形誤り訂正符号Cを用いて符号化され、前記線形誤り訂正符号Cが、少なくとも3の符号距離を有し、前記線形誤り訂正符号Cを用いて符号化された前記ビットの部分集合がメモリに直接書き込まれるか、それともビット毎に反転されて書き込まれるかが判断され、前記線形誤り訂正符号Cが、H行列Hを含み、前記装置が、
    処理ユニットと、
    メモリと
    を備え、
    前記メモリに直接または反転されて書き込まれるビットの部分集合が、少なくとも1つの2進定数値を含み、前記2進定数値が、データビットと共に、前記線形誤り訂正符号Cのコードワードを形成するためにコード化に使用され、
    前記処理ユニットが、前記それぞれのビット部分集合の前記ビットが前記メモリに直接書き込まれるときに、前記2進定数値を2進値bfとして前記メモリに書き込むように構成され、
    前記処理ユニットが、前記それぞれのビット部分集合の前記ビットが前記メモリに反転されて書き込まれるときに、前記2進定数値を反転値
    Figure 2015142381
    として前記メモリに書き込むように構成され、
    前記処理ユニットが、前記メモリに直接または反転されて書き込まれるビットの前記部分集合が反転されるときに、前記線形誤り訂正符号Cのコードワードを同じ符号のコードワードに変換するように構成され、前記線形誤り訂正符号Cの前記H行列が、前記メモリに直接または反転されて書き込まれるビットの前記部分集合に対応する前記H行列の前記列の各成分の1の数が偶数であるように生成され、
    前記処理ユニットが、前記メモリから読み出すときに、前記メモリから読み出された、誤りであり得るビットを、前記線形誤り訂正符号Cを使用することによって訂正するように構成され、前記それぞれのビット部分集合が前記メモリに直接書き込まれているときには、少なくとも、前記定数2進値bfが書き込まれている前記ビット位置にあるビットが訂正され、または、前記それぞれのビット部分集合が前記メモリに反転されて書き込まれているときには、少なくとも、前記定数2進値
    Figure 2015142381
    が書き込まれている前記ビット値にあるビットが訂正され、
    前記処理ユニットが、読出し後、前記定数値bfまたは前記反転された定数値
    Figure 2015142381
    が記憶されている前記ビット位置で読み取られている前記訂正値が
    Figure 2015142381
    であるときには、前記メモリに直接または反転されて書き込まれている前記ビット部分集合のビットを反転するように構成され、前記値がbfであるときには反転しないように構成される
    装置。
  20. エンコーダを使用して、線形誤り訂正符号を採用することによって、複数のビットを符号化して複数の符号化ビットを取得するステップであって、前記複数の符号化ビットがそれぞれビット値を有し、前記線形誤り訂正符号が、少なくとも3の符号距離を有し、前記複数の符号化ビットが、前記線形誤り訂正符号の第1のコードワードを形成するステップと、
    処理ユニットを使用して、前記符号化ビットの部分集合に応じて、前記符号化ビットの前記部分集合が反転されるべきか否かを示す反転指定を特定するステップであって、ここで、前記部分集合は、前記複数の符号化ビットのうちの少なくとも3つの符号化ビットを含む、ステップと、
    前記符号化ビットの前記部分集合が反転されるべきでないことを前記反転指定が示すときには、記憶ワードとして、前記第1のコードワードのビットを前記メモリに記憶するステップであって、前記メモリに記憶される前記第1のコードワードの前記ビットが、第1の所定のビット値を有する指示ビットを含む、ステップと、
    前記符号化ビットの前記部分集合が反転されるべきであることを前記反転指定が示すときには、ビット値を変えることによって前記符号化ビットの前記部分集合の各符号化ビットを反転させることによって、前記線形誤り訂正符号の前記第1のコードワードを修正して前記線形誤り訂正符号の第2のコードワードを取得し、前記記憶ワードとして、前記第2のコードワードのビットを前記メモリに記憶するステップであって、ここで、前記第2のコードワードの前記ビットが、反転された前記指示ビットを含み、それにより、前記指示ビットが、前記第1の所定のビット値とは異なる第2の所定のビット値を有する、ステップと
    を含む方法。
JP2015012913A 2014-01-28 2015-01-27 データ反転によってデータ記憶を改良するための装置および方法 Active JP5923631B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/166,360 2014-01-28
US14/166,360 US9582354B2 (en) 2014-01-28 2014-01-28 Apparatus and method for improving data storage by data inversion

Publications (2)

Publication Number Publication Date
JP2015142381A true JP2015142381A (ja) 2015-08-03
JP5923631B2 JP5923631B2 (ja) 2016-05-24

Family

ID=53523168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015012913A Active JP5923631B2 (ja) 2014-01-28 2015-01-27 データ反転によってデータ記憶を改良するための装置および方法

Country Status (4)

Country Link
US (1) US9582354B2 (ja)
JP (1) JP5923631B2 (ja)
CN (1) CN104900271B (ja)
DE (1) DE102015201384B4 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017138235A1 (ja) * 2016-02-08 2017-08-17 ソニー株式会社 メモリコントローラ、不揮発性メモリおよびメモリコントローラの制御方法
JP2023169327A (ja) * 2018-12-11 2023-11-29 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム
JP7754612B2 (ja) 2018-12-11 2025-10-15 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6540703B2 (ja) * 2014-07-24 2019-07-10 ソニー株式会社 メモリコントローラおよびメモリコントローラの制御方法
US9779465B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Apparatus and method for implementing power saving techniques when processing floating point values
DE102015104841B4 (de) * 2015-03-30 2024-08-14 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
US10489241B2 (en) * 2015-12-30 2019-11-26 Arteris, Inc. Control and address redundancy in storage buffer
US10097207B2 (en) 2016-03-10 2018-10-09 Toshiba Memory Corporation ECC circuit, storage device and memory system
US10176040B2 (en) * 2016-04-05 2019-01-08 Micron Technology, Inc. Error correction code (ECC) operations in memory
US20170324425A1 (en) 2016-05-06 2017-11-09 Infineon Technologies Ag Embedded parity matrix generator
GB2550929A (en) * 2016-05-31 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for generating an error code for a block comprising a plurality of data bits and a plurality of address bits
US10372535B2 (en) * 2017-08-29 2019-08-06 Winbond Electronics Corp. Encoding method and a memory storage apparatus using the same
US10514980B2 (en) * 2018-03-22 2019-12-24 Winbond Electronics Corp. Encoding method and memory storage apparatus using the same
DE102018112816A1 (de) * 2018-05-29 2019-12-05 Infineon Technologies Ag Adresscodierter Zugriff auf Speicher
US10951232B2 (en) 2018-11-26 2021-03-16 Micron Technology, Inc. Error correction bit flipping scheme
US11144393B2 (en) 2019-04-29 2021-10-12 Samsung Electronics Co., Ltd. Memory controller, memory system including the same, and method of operating the memory controller
FR3100369B1 (fr) * 2019-08-29 2022-03-04 Commissariat Energie Atomique Procédé d’inversion sélective de mots à écrire dans une mémoire et dispositif pour sa mise en œuvre
US11237906B1 (en) * 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) * 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
DE102020120719A1 (de) 2020-08-05 2022-02-10 Infineon Technologies Ag Zugriff auf einen speicher
DE102021109391B3 (de) * 2021-04-14 2022-08-25 Infineon Technologies Ag Multibytefehler-Erkennung
US11916570B1 (en) * 2022-11-11 2024-02-27 Texas Instruments Incorporated Codeword format for data storage

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163273A (ja) * 1998-11-25 2000-06-16 Nec Corp メモリ誤り訂正・検出回路試験システムおよび試験方法
JP2011518369A (ja) * 2008-03-27 2011-06-23 ジーイー・ヘルスケア・バイオサイエンス・バイオプロセス・コーポレイション 使い捨てバイオプロセス部品の不正使用を防止する方法
JP2012124623A (ja) * 2010-12-07 2012-06-28 Sony Corp データ処理装置、及びデータ処理方法
JP2012129591A (ja) * 2010-12-13 2012-07-05 Toshiba Corp 誤り訂正復号器及び記憶装置
JP2013198128A (ja) * 2012-03-22 2013-09-30 Fuji Xerox Co Ltd データ伝送システム、データ送信装置およびデータ受信装置
US20130283121A1 (en) * 2008-12-31 2013-10-24 Micron Technology, Inc. Error correction code for unidirectional memory
US20140095956A1 (en) * 2012-09-28 2014-04-03 Serkan Ozdemir Endurance aware error-correcting code (ecc) protection for non-volatile memories

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19935497A1 (de) 1999-07-28 2001-03-01 Infineon Technologies Ag Verfahren und Schaltungsanordnung zum Korrigieren von Speicherfehlern
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
JP3935149B2 (ja) 2004-01-16 2007-06-20 株式会社東芝 半導体集積回路
US7437653B2 (en) 2004-12-22 2008-10-14 Sandisk Corporation Erased sector detection mechanisms
JP4261575B2 (ja) * 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
JP4491000B2 (ja) * 2007-08-17 2010-06-30 株式会社東芝 メモリシステム
US7864606B2 (en) * 2007-09-18 2011-01-04 Spansion Israel Ltd Method, device and system for regulating access to an integrated circuit (IC) device
JP5214422B2 (ja) * 2008-02-15 2013-06-19 株式会社東芝 データ記憶システム
JP5303325B2 (ja) 2009-03-18 2013-10-02 ルネサスエレクトロニクス株式会社 データ処理装置
KR101650130B1 (ko) 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US8621328B2 (en) * 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
EP2549482B1 (en) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Apparatus, system and method for determining a configuration parameter for solid-state storage media
US8887025B2 (en) 2011-11-16 2014-11-11 HGST Netherlands B.V. Techniques for storing data in stuck memory cells
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163273A (ja) * 1998-11-25 2000-06-16 Nec Corp メモリ誤り訂正・検出回路試験システムおよび試験方法
JP2011518369A (ja) * 2008-03-27 2011-06-23 ジーイー・ヘルスケア・バイオサイエンス・バイオプロセス・コーポレイション 使い捨てバイオプロセス部品の不正使用を防止する方法
US20130283121A1 (en) * 2008-12-31 2013-10-24 Micron Technology, Inc. Error correction code for unidirectional memory
JP2012124623A (ja) * 2010-12-07 2012-06-28 Sony Corp データ処理装置、及びデータ処理方法
JP2012129591A (ja) * 2010-12-13 2012-07-05 Toshiba Corp 誤り訂正復号器及び記憶装置
JP2013198128A (ja) * 2012-03-22 2013-09-30 Fuji Xerox Co Ltd データ伝送システム、データ送信装置およびデータ受信装置
US20140095956A1 (en) * 2012-09-28 2014-04-03 Serkan Ozdemir Endurance aware error-correcting code (ecc) protection for non-volatile memories

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JPN6015047644; 藤原 英弘 他: 'ビット線の電力を削減する実時間動画像処理応用2-port SRAM' 電子情報通信学会技術研究報告 Vol.107, No.1, 20070405, pp.35-40 *
JPN6015047645; Fradi Aymen et al.: 'A new efficient self-checking Hsiao SEC-DED memory error correcting code' Microelectronics (ICM), 2011 International Conference on , 20111222, pp.1-5 *
JPN6015047646; You-Sung Chang et al.: 'Conforming block inversion for low power memory' Very Large Scale Integration(VLSI) Systems, IEEE Transactions on Vol.10, No.1, 200202, pp.15-19 *
JPN6015047647; 多和田 雅師 他: '最大ハミング距離を制限した符号とこれを用いた不揮発メモリの書き込み削減手法' 電子情報通信学会技術研究報告 Vol.113, No.120, 20130704, pp.95-100 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017138235A1 (ja) * 2016-02-08 2017-08-17 ソニー株式会社 メモリコントローラ、不揮発性メモリおよびメモリコントローラの制御方法
US10664343B2 (en) 2016-02-08 2020-05-26 Sony Corporation Memory controller, non-volatile memory, and method of controlling memory controller
JP2023169327A (ja) * 2018-12-11 2023-11-29 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム
JP7754612B2 (ja) 2018-12-11 2025-10-15 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Also Published As

Publication number Publication date
US20150212877A1 (en) 2015-07-30
JP5923631B2 (ja) 2016-05-24
DE102015201384A1 (de) 2015-07-30
US9582354B2 (en) 2017-02-28
CN104900271B (zh) 2018-04-27
DE102015201384B4 (de) 2020-08-20
CN104900271A (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
JP5923631B2 (ja) データ反転によってデータ記憶を改良するための装置および方法
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US10333558B2 (en) Decoding device and decoding method
US11438015B2 (en) Two-level error correcting code with sharing of check-bits
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
JPH0449139B2 (ja)
JP5805727B2 (ja) 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化
CN104393878A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
US20080082870A1 (en) Parallel bit test device and method using error correcting code
CN106469099A (zh) 在应用wom码的情况下的错误纠正
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
CN102546095B (zh) 用于检测编码二进制字中的错误的设备和方法
US20210091792A1 (en) Memory system
US10056921B2 (en) Memory system having flexible ECC scheme and method of the same
JP5284069B2 (ja) メモリシステム及びメモリアクセス方法
JP2017022651A (ja) 誤り訂正装置、半導体記憶装置、および誤り訂正方法
Badack et al. Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors
US10970166B2 (en) Memory system and method of controlling non-volatile memory
KR101543081B1 (ko) 고착 고장을 갖는 메모리 셀을 수용하기 위한 리던던트 비트의 인코딩 및 디코딩
CN104424046B (zh) 数据处理的方法、装置和设备
Hwang et al. Scrubbing with partial side information for radiation-tolerant memory
US20160043741A1 (en) Coding method and device
JP5563125B2 (ja) メモリアクセス装置
Yang Improving memory ECC via defective memory columns
CN103269231A (zh) Bch码检纠错方法、电路及容错存储器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160229

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160418

R150 Certificate of patent or registration of utility model

Ref document number: 5923631

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250