JP2017216677A - 埋め込みパリティ行列生成器 - Google Patents

埋め込みパリティ行列生成器 Download PDF

Info

Publication number
JP2017216677A
JP2017216677A JP2017092217A JP2017092217A JP2017216677A JP 2017216677 A JP2017216677 A JP 2017216677A JP 2017092217 A JP2017092217 A JP 2017092217A JP 2017092217 A JP2017092217 A JP 2017092217A JP 2017216677 A JP2017216677 A JP 2017216677A
Authority
JP
Japan
Prior art keywords
parity matrix
circuit
sub
configuration
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017092217A
Other languages
English (en)
Inventor
ホルガー ブッシュ,
busch Holger
ホルガー ブッシュ,
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 JP2017216677A publication Critical patent/JP2017216677A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/033Theoretical methods to calculate these checking codes
    • H03M13/036Heuristic code construction methods, i.e. code construction or code search based on using trial-and-error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes

Abstract

【課題】 埋め込みパリティ行列生成器を提供する。
【解決手段】 任意のデータ幅のデータワードに対するパリティ行列を生成するように構成された埋め込みパリティ行列生成器と、パリティ行列に基づいてデータワードに冗長ワードを追加するように構成されたエンコーダと、エンコーダと結合されて、エンコーダからデータワード及び冗長ワードを受け取るように構成された副回路と、副回路と結合されて、副回路からデータワード及び冗長ワードを受け取ることと、パリティ行列に基づいて、データワード内にエラーがあれば検出することと、を行うように構成されたデコーダと、を含む回路。
【選択図】図1A

Description

内容がセーフティクリティカルであるメモリ及びレジスタは、エラーの検出及び訂正により保護される。パリティ行列は、コードワードが満たすべき線形関係を記述するものであり、個別のメモリ及びレジスタだけに関して導出されてきた。従って、新たなデータ幅を有するメモリが必要になると、必ず新しいパリティ行列が導出されてチップ設計に追加される。チップ設計には、メモリサイズごとにあらかじめ設計されたパリティ行列の集合体が含まれる。
別のアプローチでは、あらかじめ設計されたパリティ行列が、データ幅に対応する部分行列を有する。このアプローチは、あらかじめ設計されたパリティ行列が1つだけである点でシンプルであるが、実際に使用される部分行列は、幾つかの固定ワード長を除き、最適にバランシングされていない。更に、これらの部分行列は、一般に、対称コード生成が不可能である。
米国特許出願第14/166,360号明細書 米国特許出願第14/447,806号明細書
本開示の一態様による回路の概略図を示す。 本開示の別の態様による回路の概略図を示す。 本開示の別の態様による回路の概略図を示す。 本開示の別の態様による回路の概略図を示す。
本開示は、任意のコードワード幅のパリティ行列生成器に関する。本パリティ行列生成器は、エンコーダ及びデコーダに直接埋め込まれるか、より上位の階層に埋め込まれるのに十分な速度を有する。
図1Aは、本開示の一態様による回路100Aの概略図を示す。図1Bは、本開示の別の態様による回路100Bの概略図を示す。これらの回路100(100A及び100B)はよく似ており、異なるのは、後述される埋め込みパリティ行列生成器140の場所である。
回路100は、埋め込みパリティ行列生成器140(図1Aに示される140a及び140b、又は図1Bに示されるような140cを含む)と、エンコーダ110と、副回路120と、デコーダ130と、を含む。回路100は、マイクロコントローラ、又は任意の、保護される副回路を有するコンピュータシステムに内蔵されてよい。エンコーダ110及びデコーダ130は、チップの同じ領域、或いは別々の領域にあってよい。大まかに言うと、セーフティクリティカルなメモリ120が、エンコーダ110及びデコーダ130を有するラッパーに埋め込まれており、エンコーダ110及びデコーダ130は、両方とも、同じパリティ行列とともに構成されている。以下の説明では、タイミングについては考慮しない。
埋め込みパリティ行列生成器140は、任意のデータ幅(dw)のデータワードd_iに対してパリティ行列を生成するように構成されている。埋め込みパリティ行列生成器140により、これまでの保護方式では必要であった、副回路120ごとにパリティ行列をあらかじめ定義することが不要になる。埋め込みパリティ行列生成器140は、図1Aに示されるように、二重に、即ち、エンコーダ110及びデコーダ130のそれぞれに埋め込まれてよい。或いは、パリティ行列生成器140は、ラッパーアーキテクチャに埋め込まれるか、一度だけラッパーアーキテクチャに入れられてよく、結果として得られるパリティ行列がエンコーダ110及びデコーダ130に送り込まれる。パリティ行列は、一般に、その行数がデータワード幅と対応し、その列数が冗長ワード幅と対応するように定義される。埋め込みパリティ行列生成器140は、後で詳述される基準に従ってパリティ行列を動的に生成するように構成される。
エンコーダ110は、パリティ行列生成器140によって生成されるパリティ行列を使用して、データワード(d_i)をコードワードにエンコードするように構成されている。コードワードは、エンコード済みデータワード(d_i’)及び冗長ワード(r_i)を含む。データワード(d_i)は、プログラムデータ、ユーザデータ、構成データ、又は他の任意の適切なタイプのデータであってよい。冗長ワード(r_i)は、例えば、エラー訂正コード(ECC)ワードであってよい。パリティ行列(P)は、データワード(d)の関数、即ち、P=gp(dw)として生成され、dwはデータ幅であり、gpは生成関数である。
副回路120は、データワード(d_i’)及び冗長ワード(r_i)を記憶するように構成されているが、本開示はこの点に限定されない。エンコーダ110及びデコーダ130は、介在する副回路120がない状態で、又は副回路120がバスとして存在する状態で、あるポイントから別のポイントに送信されたデータワード(d_i)をエンコード及びデコードするように構成されてよい。副回路120は、任意のタイプの適切な副回路であってよく、例えば、メモリ、レジスタ、バス、インタフェースなどであってよい。図中の「N」は、副回路120の深さを表す。深さがNとは、N段の同期段階が直列接続されていることであり、各段は、dw+rw信号を次段に渡し、最終段は副回路120の出力(即ち、N×(dw+rw))に渡す。
デコーダ130は、エンコーダ110とデコーダ130とで同じである生成済みパリティ行列を使用して、コードワードをデータワード(d’_o)及び冗長ワード(r_o)にデコードするように構成されている。そして、デコーダ130は、パリティ行列に基づいて、データワード(d’_o)にエラーがあれば検出することと、任意選択で、エラーが検出されれば訂正することと、を行うように構成されている。デコーダ130は、パリティ行列を使用して、シングルビットエラーを訂正し、ダブルビットエラーを検出する。データワードのトリプルビットエラーは、検出可能だが訂正されない。
埋め込みパリティ行列生成器140があれば、パリティ行列のあらかじめ定義されたセットは与えられなくてよい。このことが特に有利であるのは、保護されるべきデータビットの数が製品派生物が異なれば変動する場合や、周波数要件が変動することでエンコード方式のXORツリー深さの変更を強いられる場合である。
図2は、本開示の別の態様による回路200の概略図を示す。
回路200は、図1A及び図1Bの回路100と似ており、エンコーダ210はエンコーダ110に対応し、副回路220は副回路120に対応し、デコーダ230はデコーダ130に対応し、埋め込みパリティ行列生成器240は埋め込みパリティ行列生成器140に対応する。
回路200は更に、コードワード(データワード+冗長ワード)を反転するように構成されたインバータ250a、250b及びマルチプレクサ260a、260bを含む。これらの追加インバータ構造は、対称冗長コードを使用して自己縮退試験を行う為のものである。シングルビットエラー訂正及びダブルビットエラー検出(SECDED)エラー訂正コード(ECC)が使用される場合、この縮退試験では、最大3件の縮退故障を、いかなる組み合わせであっても検出することが可能である。縮退試験中は通常のメモリアクセスがブロックされるが、試験後には元のデータが利用可能になる。縮退試験は、最初に元のデータを副回路220から読み出し、データを反転してからメモリ120に書き込み、そのデータを再度読み出し、反転し、書き込むことによって行われ、従って、データは最終的には2回反転されている。反転は、マルチプレクサ260a、260bと結合された制御信号によってオンにされ、反転によって、副回路220に書き込まれ、読み出された全てのデータ値及び冗長コード値が否定されるか、元のデータが書き込まれる。冗長コードが対称である場合、デコーダ230及びエンコーダ210は、コードワードの現在の極性を知る必要がない。冗長コードが非対称である場合、行列の、合計が偶数である列に対応するコードビットを、書き込み前にエンコーダ210で、且つ、読み出し後にデコーダ230で、更に反転しなければならない。従って、可能であれば、対称コードを使用することが好ましい。
この回路200については、参照により全内容が本明細書に組み込まれている、2014年1月28日に出願された(特許文献1)に詳述されている。
図3は、本開示の別の態様による回路300の概略図を示す。
回路300は、図2の回路200と似ており、エンコーダ310はエンコーダ210に対応し、副回路320は副回路220に対応し、デコーダ330はデコーダ230に対応し、インバータ350はインバータ250に対応し、マルチプレクサ360はマルチプレクサ260に対応し、埋め込みパリティ行列生成器340は埋め込みパリティ行列生成器240に対応する。
回路300は更に、変更ビットを追加する為の反転制御信号を含み、これは、この信号がエンコーダ310及びデコーダ330に接続されることで示されている。この変更が有利であるのは、パリティ行列の全ての列合計が奇数とは限らない場合、即ち、パリティ行列が対称でない場合である。より具体的には、行列の偶数列は、変更ビットによって調節される。変更ビットは、これらの偶数列を人為的に奇数にするものであり、これによって、パリティ行列が対称であった場合と同じ挙動が得られる。
この回路300については、参照により全内容が本明細書に組み込まれている、2014年7月31日に出願された(特許文献2)に詳述されている。
本明細書に開示のパリティ行列生成器は、様々な構成パラメータに対して最適なパリティ行列を素早く生成するように構成されている。パリティ行列生成器は、メモリ又はレジスタのサイズに従うどのような必要データワード幅に対しても均質で汎用的なエンコーダコンポーネント及びデコーダコンポーネントを自動的に生成するように構成されている。データ幅は別として、パリティ行列生成器は、対称SECDED及びDED冗長コード、変更可能な非対称SECDED/DEDコード、完全に等化又は最小化されたXORゲートカウント、最小化又はユーザ定義の限定がなされたXORツリー深さ、並びに、インクリメントされたコード幅によって増えた複数ビットのエラー検出に対して構成可能である。
対称行列は、その全ての列合計が奇数であり、このことは、変更ビットを使用しない非破壊反転試験の為の前提条件である。非対称行列は、少なくとも1つの列合計が偶数である。
パリティ行列生成アルゴリズムは、以下のいずれかの条件に基づいている。
a)パリティ行列の各列における「1」のバランシング:
パリティ行列の列合計は、何らかの必要且つ実施可能な方法でバランシングされる。例えば、目的が対称コード生成の為のパリティ行列を生成することであって、初期パリティ行列の2つの列の列合計が偶数である場合、1つの列の合計がインクリメントされ、別の列の合計がデクリメントされるように、行列の行における「1」の代替並べ替えが計算される。パリティ行列の各列における「1」の数に関連する、XORツリーの最大深さの、コード生成の為の最小化の為に、列合計の差が最小になるように「1」が分散される。このバランシングは、完全行列を基準とし、個々の相互依存の列合計が必ずしも最適にバランシングされていない幾つかの部分行列で構成されてよい。
b)対称コード生成の為のパリティ行列:
パリティ行列は、その全ての列合計が奇数である場合には、 (特許文献1)に記載のように、メモリの非破壊縮退試験に使用される対称コードを生成する。必要なエラー検出能力を達成する為に必要なハミング距離(hd)(hd≧2×BEc(但し、BEcは安全に訂正可能なビットエラーの数)、且つ、hd≧BE7d−1(但し、BEdは安全に検出可能なビットエラーの数))、所与のデータワード幅、及び任意選択で、所与のコードワード幅との組み合わせで、適切なパリティチェック行列の為の可能な解の空間が測られる。更に、エンコーダ110/210/310及びデコーダ130/230/330の回路の面積及び消費電力、並びに結合伝搬遅延を減らす為に、行列中の「1」の数に関連するXORゲートの総数と、行列の列中の「1」の数に関連するXORツリーのサイズとが最小化されるように、パリティ行列が構築される。更に、100%の検出が不要である検出可能なマルチビットエラーのパーセンテージを最大化することが望ましいが必須ではない。
c)汎用レジスタ転送レベル(RTL)コンポーネント:
検証環境における行列生成アルゴリズムの実施は、任意の環境及び任意のプログラミング言語(VHDLのようなハードウェア記述言語、又はSystemCやSystemVerilogのような検証言語を含む)において可能である。生成は、エンコーダ110/210/310及びデコーダ130/230/330コンポーネントの構成可能なRTLコンポーネントの形で行われ、設計の精緻化時に汎用パラメータ生成の直接指定又は間接派生に従って自動的に生成される。そのような汎用コンポーネントのうちの1つのコンポーネントは、全ての構成済み特性が汎用RTL設計に直接埋め込まれている、適切に生成されたパリティ行列を生成する関数である。検証試験ベンチでは、パリティ行列生成器は、現在必要な行列を動的に、即ち、オンザフライで生成することにより、必要な全てのインスタンスの為の行列のライブラリを保持することを不要にする。パリティ行列生成器は、固定の、あらかじめ生成された行列に比べて設計の精緻化の減速が目立たない程度に高速である。取得される生成時間は、いかなる実際の需要よりはるかに大きなコードワード幅に対してもわずか数秒である為、無視してかまわない。
d)パリティ行列の構成
パリティ行列の動的生成は、未だ全ての要件を満たしているわけではない中間解の一連の繰り返し変換に基づく。これらの中間解を明示的な行列として与えて操作することは、効率が悪すぎる。代わりに、1つの単一行列を一意指定するのではなく、全ての行列が特定の特性を共有する、行列の集合を一意指定する行列構成が存在する。行列構成は、3要素のタプルの並びC:={{dw bv}…{dw bv}…}として定義され、各タプルCi:={dw bv}はパリティチェック行列の行区画を指定し、

dwは、区画iの行数であり、

は、区画iの各行における「1」の数(行ハミング重み)であり、

bvは、Cに対応する部分行列の列合計に対するバランシングベクトルである。
バランシングベクトルは、部分行列の各列合計C1の相対的な差を指定し、バランシングベクトル要素が小さいほど、対応する列の要素のより大きな合計に対応する。従って、各行列における「1」は、bvij値が最小である列jの列合計が最大になるように、バランシングされる。バランシングベクトルの全ての要素に定数が追加されている場合には、副構成に違いはない。
任意選択で、副構成の指定に列合計ベクトルが追加されてよく、(あくまで本明細書における例示として){dwbv}:svであってよい。
列合計ベクトルとバランシングベクトルとが追加されると、結果ベクトルの全ての要素が等しくなる。
従って、列合計の指定は、追加制約を全く追加するものではなく、バランシングベクトル∃c=svij+bvijから一意導出されてよく、cはバランシングベクトルの最小値である。c=0であれば、バランシングベクトルは正規化されていると言う。列合計の合計は、常にdw×k=Σsvijとして与えられる。
副構成の並びに対応する、任意に選択された部分行列を連結することにより、全体構成に適合する行列が構成される。
例えば、(副)構成{3 3{0 0 0 0 1 1}}:{2 2 2 1 1 1}は、行{{1 1 1 0 0 0}{1 0 0 1 1 0}{0 1 1 0 0 1}}又は{{1 1 1 0 0 0}{1 1 0 1 0 0}{0 0 1 0 1 1}}、或いは他の行を有する行列によって実施可能である。バランシングベクトルの全ての要素が定数だけインクリメントされる場合、構成に適合する行列の集合に違いはなく、例えば、{3 3{1 1 1 1 2 2}}:{2 2 2 1 1 1}である。このインクリメントは、後述されるように、ディスバランシングに用いられてよい。副構成の全ての行列解は、各行に「1」が3つあって、それらの列合計が{2 2 2 2 1}に等しいことが共通している。副構成{3 5{0 0 0 1 1 1}}:{3 3 3 2 2 2}は、解{{1 1 1 0 1 1}{1 1 1 1 0 1}{1 1 1 1 1 0}}を有する。従って、組み合わせ構成{{3 3{0 0 0 0 1 1}}:{2 2 2 1 1 1}}{3 5{0 0 0 1 1 1}}:{3 3 3 2 2 2}}}は、解{{1 1 1 0 0 0}{1 0 0 1 1 0}{0 1 1 0 0 1}{1 1 1 0 1 1}{1 1 1 1 0 1}{1 1 1 1 1 0}}、{{1 1 1 0 0 0}{1 1 0 1 0 0}{0 0 1 0 1 1}{1 1 1 0 1 1}{1 1 1 1 0 1}{1 1 1 1 1 0}}などを有する。
これらの組み合わせ解はいずれも、列合計ベクトル{5 5 5 3 3 3}と、対応するグローバルバランシングベクトル{0 0 0 2 2 2}とを有する。この小さな例から明らかなように、行列構成を操作することは、行列を使用することより、はるかに効率的である。例えば、データ幅267のパリティ行列の集合の場合でも、その構成は{{120 3{0 0 0 0 0 0 0 0 0 0}}{147 5{0 0 0 0 0 1 1 1 1 1}}}となり、非常に操作しやすい。これに対し、10×267個の要素を有する明示的な行列を伝達することは、非常に効率が悪いであろう。
バランシングベクトルが任意に選択可能であるとは限らない。バランシングベクトルが無効な副構成の場合には解は存在せず、例えば、{3 3{0 0 0 0 1 1}}又は{3 3{0 2 0 0 0 0}}或いは{3 3{0 0 1 2 3 3}}の場合には解は存在しない。これに対し、{3 3{0 0 3 2 2 2}}の場合には、解{{1 1 0 1 0 0}{1 1 0 0 1 0}{1 1 0 0 0 1}}が得られる。列合計ベクトル要素{3 2 1 1 1 1}の合計は、dw×k=3×3=9となる。
コード幅は、バランシングベクトルの長さ、即ち、任意のiに対するrw=length(bv)によって反映され、これは、パリティチェック行列の列数に直接対応する。部分行列の行数は、副構成ごとに、不等式
によって制限される。
例えば、{dwmax(5),3{0 0 0 0 0}}は、3つの「1」の位置の並びが全て異なる、
個の異なる行を有する完全部分行列を構成する。
e)パリティ行列の制約される構成
パリティ行列の制約される構成は、各副構成に追加制約パターンを含み、4要素のタプル{dw pat bv}の並びとして指定される。制約パターンは、副構成の全ての行がパターンに適合することを指定する。バランシングベクトルは、ここでは、制約されない位置だけを参照し、従って、length(bv)=rw−rwlを有し、rwlはnumber(constrained columns)(制約される列の数)であり、これはもちろん、バランシングが不可能な、固定の制約される位置を含むことが意味をなさないと考えられる為である。制約パターンがrwl個の行位置を制約する場合、部分行列の行数は、dw≦(rw−rwl)である。
例えば、{3,{* * * 0 *},3,{1 0 1 1}}構成には行列{{1 1 1 0 0}{1 1 0 0 1}{0 1 1 0 1}}が適合し、最大構成は、1つの追加行列行{1 0 1 0 1}を有する{4,{* * * 0 *},3,{0 0 0 0}}として与えられることになる。
c)に従う制約されない構成は、非制約パターン{*}を有する制約される構成と見なされてよい。
制約される副構成の妥当性は、制約パターンがないタプル要素に対応する制約されない構成の妥当性から直接得られる。
制約が、制約されない位置に関するワイルドカードを有するパターンによって指定される場合、副構成の妥当性は、制約されない副構成が妥当であれば、自動的に与えられる。
代替として、制約は、行ビットの論理関数として指定されてよい(例えば、「ビット1=1であればビット3=0」)。この場合、副構成は、パターン{* * * 1 0}、{* * * 0 *}、又は代替として{* * * 1 0}、{* * * 0 0}、{* * * 0 1}を有する、幾つかのパターン制約される副構成に分割されてよい。
簡単の為に、右端のコヒーレントワイルドカード位置は省略してよく、即ち、{* 0 * * *}は{* 0}としてよく、{1 * *}は{1}としてよい。長さの異なる制約パターンを有する制約される副構成が組み合わされて制約される構成になった場合、長さがより短い制約を有する構成がそれらのワイルドカード位置において、全てのパターンの長さが同じになるまで(例えば、{1 *}が{1 0}{1 1}になるまで)分割され、結果として得られるデータ幅dw0及びdw1、並びにバランシングベクトルbv0及びbv1が、後述の適切な方法で計算される。
f)バランシングとディスバランシング
最小要素と最大要素との差がせいぜい1であるバランシングベクトルを有する副構成は、バランシングされた副構成である。バランシングベクトルを並べ替えたものも全て、結果として、バランシングされた副構成になる。バランシングされた副構成は、タプル内のバランシングベクトルをコード幅で置き換えることにより、即ち、{dw pat rw}とすることにより、等価的に指定することが可能である。
最小要素0を有するバランシングベクトルは、正規化されたバランシングベクトルである。
最小要素と最大要素との差が1より大きいバランシングベクトルは、ディスバランシングベクトルである。この差が2であれば、ディスバランシングレベルは1であり、一般に、差nに対してn−1である。更に、ディスバランシングインデックスは、ディスバランシングの為に実施されるインクリメント/デクリメントのステップ数を意味する。これは、正規化されたバランシングベクトル及びディスバランシングベクトルをソートし、要素ごとの絶対差を有するベクトルを計算することにより、計算可能である。disbalance(bv,n,m)は、バランシングベクトル(又は対応する列合計)の最大要素と最小要素との最大差がnであって、m回のディスバランシングステップが実施された場合に、デフォルトのバランシングされた構成を変換する為に書かれている。disbalance(bv,n,m,c)は、正規化されたバランシングベクトルの全ての要素に定数cが追加されて、その最小要素と最大要素との差がn+1であって、バランシングベクトルとディスバランシングされたベクトルとの差ベクトルの全ての正の要素の合計がmである場合に書かれる。
以下は幾つかの例である。
disbalance({1 1 1 1 1 0 0},0,0,0)={1 1 1 1 1 0 0}
disbalance({1 1 1 1 1 0 0},0,0,1)={2 2 2 2 2 1 1}
disbalance({1 1 1 1 1 0 0},0,0,2)={3 3 3 3 3 2 2}
disbalance({1 1 1 1 1 0 0},1,1,0)={2 1 1 1 0 0 0}
disbalance({1 1 1 1 1 0 0},1,2,0)={2 2 1 0 0 0 0}
disbalance({1 1 1 1 1 0 0},1,1,1)={2 2 2 2 2 2 0}
disbalance({1 1 1 1 1 0 0},2,1,1)={3 2 2 2 2 1 0}
disbalance({1 1 1 1 1 0 0},2,2,1)={3 3 2 2 1 1 0}
バランシングされた構成が十分なコード幅に対する解を持つのに対して、ディスバランシングされた構成は、解を持たない場合がある。ディスバランシングされた構成が解を持たない場合、更に一層ディスバランシングされた構成も解を持たない。この関係性は、必要であれば、妥当な、バランシングされた構成から始めてディスバランシングを反復的に強めることを示唆する。
g)マルチバランシング
全体構成に関してグローバルバランシングベクトルに適合する為には、副構成のバランシングベクトルは、それらの合同の列合計がグローバルバランシングベクトルと一致するように決定される。個々のそれぞれのバランシングベクトルのディスバランシングレベルが、グローバルバランシングベクトルのディスバランシングレベルより高くなることはない。多くの場合、グローバルディスバランシングは、ディスバランシングなしで達成可能である。マルチバランシングにより、完全な構成の所与のグローバルバランシングベクトルに適合する為に、その構成の副構成に対するバランシングベクトルを生成することが可能である。例えば、並び{{dw}{dw}}:={{2 2}{5 3}}と、グローバルバランシングベクトルbvg:={0 0 3 0 3}とに対して、構成{{2 2{0 1 2 1 2}}:2 1 0 1 0{5 3{0 0 2 1 2}}:4 4 2 3 2}が取得される。
以下では、汎用のエンコーダコンポーネント及びデコーダコンポーネントに挿入された埋め込み行列生成機能のシステムを全体として構成する機能の集合の概要を示す。
h)行列生成器の集合の機能:
・制約されない副構成{dw bv}を、dw個の行を有するパリティチェック行列に変換する。これらの全てがハミング重みkを有し、その列合計のベクトルがそのバランシングベクトルbvに追加された結果として、同じ要素を有するベクトルが得られる。
・制約される副構成{dw pat bv}を、制約される列が制約パターンに応じて「0」のみ又は「1」のみを含むパリティチェック行列に変換する。実際には、この関数は、制約されない列に対する前の関数を最初に呼び出し、制約パターンに従って「0」列及び「1」列を追加する。
・副構成を有する構成をパリティチェック行列に変換する。これは、第1の関数を副構成に適用することによって与えられる部分行列を単純に連結することにより、行う。
・制約される副構成を有する制約される構成をパリティチェック行列に変換する。これは、第2の関数を制約される副構成に適用することによって与えられる部分行列を単純に連結することにより、行う。
i)構成生成器の集合の機能:
・所与のペイロードデータ幅、行列行ハミング距離、及び任意選択の(必要最低限以上の)コード幅について、デフォルト構成を計算する。例えば、SECDEDの場合の(Hsiao−)パリティ行列は、各行に「1」が少なくとも3つあって行ハミング距離が2以上であることを必要とする。
・3以上である奇数のkについて、副構成を有する構成を計算する。
・3以上である奇数及び偶数のkについて、副構成を有する構成を計算する。
・3以上である奇数のkについて、副構成を有する可逆構成を計算する。これは、最初の非可逆構成を可逆構成に変換することによって行い、これは、コード幅を増やさない場合には常に可能とは限らない。
・3以上である奇数及び偶数のkについて、副構成を有する可逆構成を計算する。これにより、多くの場合に、コード幅のインクリメントを回避できる。
j)構成変換関数の集合の機能:
・副構成iのdwをδ+dwiだけ増やし、副構成jのdwをδ−dwiだけ減らして、
となるようにする。そのような変換は、完全構成のグローバルバランシングベクトルを変更するものであり、これが意図されるのは、例えば、個々の副構成を、それらのデータ幅にさわらずに、バランシング又はディスバランシングするだけでは、偶数である列合計の数を、必要とされる様式で変更できない場合である。
・グローバルバランシングベクトル
が特定の必要とされる様式で
に変更されるように、
である変換仕様{δ+dwi0,…,δ+dwim,δ−dwj0,…δ−dwjn}を計算する。例えば、構成{{dw,k,bv,{0}},{dw,k,bv,{1}}を{dw−1,k,bv,{0}},{dwj+1,k,bv,{1}}に変更することにより、最左の列合計が1だけ増え、これによって、結果として得られるグローバルバランシングベクトルの最左成分が1だけ減って
になり、新しいグローバルバランシング副ベクトルの右側成分を再計算しなければならない。
k)補助関数の集合の機能:
・(制約される)行列構成に関連する(左右に区画された)列合計のベクトルを計算する。
・行列構成の並びに関連する(左右に区画された)列合計のベクトルを計算する。
・列合計ベクトルをバランシングベクトルに変換する。
・構成のグローバルバランシングベクトルをその副構成から計算する。
・列合計ベクトルに関連する偶奇インジケータのベクトルと(区画された)偶数の列合計の数とを計算する。
・所与のコード幅及び行ハミング距離に対する(ペイロード)データビットの最大数、又は所与のデータ幅に対する最小コード幅を計算する。
・以下のレンマに従う解が存在しない場合の構成を試験する。
1.(十分なコード幅を有する)バランシングされたデフォルト構成に対する解が常に存在する。
2.バランシングベクトルの1つの選択された場所を反復的に小さくし、同じ差だけ別の場所を大きくすることによって、バランシングされた構成に変換することができない構成に対する解が存在しない。例えば、バランシングベクトル{0 0 0 0 1}が構成に関係する場合、{0 2 0 2 2}に対する解が存在しない場合があるが、{1 0 0 0 1}に対する解は間違いなく存在しない。
3.n+m>dwである場合、或いは、コード幅に対応する最大データ幅と所与のデータ幅との差がnより小さい場合、即ち、n+m>dwmax(rw)−dwである場合に、disbalance(n,m,c)に対する解が存在しない。例えば、構成{3,3,{0 0 0 0 1}}を{3,3,{0 4 0 2 0}}に変換することができない。
4.ある構成に対する解が存在する場合、任意の並びのバランシングベクトルを有する任意の構成が解を有する。
5.偶数の列合計の数が奇数である場合、奇数行にのみハミング重みを有する、解くことが可能な可逆構成が存在しない。これは、奇偶行列行重みの生成器を呼び出すかどうかを決定する為の強力且つシンプルな基準である。
6.disbalance(n0,m0,c0)の解が存在しない場合、n1+m1>n0+m0であれば、disbalance(n1,m1,c1)も解を持たない。
これらのレンマは、副構成の解が存在するかどうかについての高速試験を提供する。別の、より高コストになる可能性がある試験は、構成の解が存在するかどうかを、構成{dw,k,bv,{*}}を、制約パターン{dw0{0}k0 bv0}及び{dw1{1}k1 bv1}を有する2つの制約される部分に分割することによって得られる2つの副構成に対する解が存在するかどうか、から再帰的に導出する。この目的の為に、構成を妥当な副構成に分割するマルチバランシング機能が提供されている。構成の妥当性検査に使用される場合、構成の妥当性の再帰的調査は、その全ての副構成が0−1のみを有するバランシングベクトルを有する場合には停止され、それらは、レンマ1によれば妥当である。
複数の試験を、それらの複雑さに応じて順序付けることは、必要とされる特性を有する少なくとも1つの解を有する構成の効率的な構築手順において非常に重要である。
l)構成変換関数の集合の機能:
・副構成iのdwをδ+dwiだけ増やし、副構成jのdwをδ−dwiだけ減らして、
となるようにする。そのような変換は、完全構成のグローバルバランシングベクトルを変更するものであり、これが意図されるのは、例えば、個々の副構成を、それらのデータ幅にさわらずに、バランシング又はディスバランシングするだけでは、偶数である列合計の数を、必要とされる様式で変更できない場合である。
・グローバルバランシングベクトル
が特定の必要とされる様式で
に変更されるように、
である変換仕様{δ+dwi0,…,δ+dwim,δ−dwj0,…δ−dwjn}を計算する。例えば、構成{{dw,k,bv,{0}},{dw,k,bv,{1}}を{dw−1,k,bv’,{0}},{dw+1,k,bv’,{1}}に変換することにより、最左の列合計が1だけ増え(これによって、その列合計が奇数になってよく)、これによって、結果として得られるグローバルバランシングベクトルの最左成分が1だけ減って
になり、新しいグローバルバランシング副ベクトルの右側成分を再計算しなければならない。
m)構成生成器の集合の機能:
・所与のペイロードデータ幅、行列行ハミング距離、及び任意選択の(必要最低限以上の)コード幅について、デフォルト構成を計算する。例えば、SECDEDの場合の(Hsiao−)パリティ行列は、各行に「1」が少なくとも3つあって行ハミング距離が2以上であることを必要とする。
・3以上である奇数のkについて、副構成を有する構成を計算する。
・3以上である奇数及び偶数のkについて、副構成を有する構成を計算する。
・3以上である奇数のkについて、副構成を有する可逆構成を計算する。これは、最初の非可逆構成を可逆構成に変換することによって行い、これは、コード幅を増やさない場合には常に可能とは限らない。
・3以上である奇数及び偶数のkについて、副構成を有する可逆構成を計算する。これにより、多くの場合に、コード幅のインクリメントを回避できる。
n)構成の妥当性についての完全な決定手順
副構成は、少なくとも1つの適合する部分行列が存在すれば妥当であるとされ、幾つかの副構成からなる構成は、その全ての副構成が妥当であれば妥当である。
従って、ある構成の妥当性は、最左の「1」行及び最左の「0」行についての副構成の妥当性、即ち、V{dw bv}:=V{dw1{1}k1 bv1}∧V{dw0{0}k0 bv0 pat0}から再帰的に導出され、
dw1:=C1s({dw,k,bv},rw−1)(即ち、最左の列(インデックスrw−1)の合計)であり、
dw0:=dw−dw1;k1:=k−1;k0:=kpat1:={1},pat0:={0}である。
バランシングベクトルbv1及びbv0は、{dw,k}ペアの所与の並びとグローバルバランシングベクトルとから妥当な副構成を計算するマルチバランシング手順cfgdbvsによって生成され、これは、この特殊なケースでは、その最左要素がない状態での元のバランシングベクトルに対応し、従って、cfgdbvs{{dw1 k1}{dw0 k0}}bvi(rw−2..0)={{dw1 k1 bv1}{dw0 k0 bv0}}が得られる。
構成{3,3,{0 0 0 0 1}}の妥当性は、{2,2,{0 0 0 0}}とともに2行を有する「1」の副構成、並びに、{1 3{0 0 0 1}}の1行を有する「0」の副構成の妥当性から得られる。
本開示の有利な点は多くある。概説された手順により、任意のデータワード及びコード幅に対する任意選択の反転機能を有するパリティチェック行列が生成される。
様々な最適化基準、例えば、XORゲート数、XORツリー深さ、コード幅、複数ビット検出などによれば、最適であることが実証可能な解が生成される。このことは、最初から全ての要件を満たすわけではない最低限の解から始めて、必要最小限のステップ数だけで行列構成を徐々に変換して、全ての制約を満たす解を生成することによって保証される。
この、行列構成及び優先的な妥当性検査の概念により、最終の明示的な行列解が生成される前に、バックトラッキングによる非常に簡潔且つ高速な変換を実施することが可能になる。
(デフォルトの設定が使用されていない場合のみ)パラメータの選択後は、人間による対話が不要であり、メモリ又はレジスタのサイズから直接導出可能な任意のパラメータセットに対して、全ての生成が自動的に行われる。
様々な要件に対して、多種多様なアプローチのセットではなく、均一で包括的な、汎用の関数、エンコーダコンポーネント、及びデコーダコンポーネントが提供される。
中間タスクを、既に基本関数によってカバーされているサブタスクまで縮小することにより、再帰的な生成アルゴリズムが簡潔に保たれる。例えば、制約されない副構成の妥当性を検査する関数は、副構成が、全てが「1」である列が先頭である副副構成と、全てが「0」である列が先頭である副構成とに分割されている場合には、再帰的に適用される。
この目的の為に、グローバルバランシングベクトルに適合するように、任意の数の副構成の(ディス)バランシングベクトルを計算する、より一般的な関数が考案されている。
モジュール設計者は、モジュールレベルでの面積及び静的タイミング分析を根拠として判定されるべき様々な基準に応じて生成エラー処理回路を最適化する為に、様々な選択肢に直接アクセスすることが可能であり、内蔵されている事前定義済みRTLコンポーネントの様々な汎用パラメータを選択するだけでよい。モジュールが高い周波数で動作する場合、モジュール設計者は、例えば、1クロックサイクル内で処理可能である最大遅延を連結経路が超えないことを保証する限界値に、最大XOR深さを設定してよい。面積が課題である場合は、「1」の総数が最小である行列が最良の選択肢である。安全分析を行うと、結果として新たな要件が発生する可能性があるが、これは、単に様々なパラメータセットを選択すること以上の余分な作業を必要としない、同等の再構成によって対応可能である。
以下では、SECDED保護の為のパリティ行列の生成方法を、より詳細に示す。パリティ行列は、必要な全ての特性を有する構成が決定された後にのみ、生成される。以下の構築ステップを実施することにより、データ幅128及びECC幅9の可逆行列が生成される。
ステップa)
構成の構築では、まず、3から始まる奇数行重みを有する初期デフォルト(Hsiao)構成がはたして可逆解を持ちうるかどうかを判定するクイック試験を行う。以下の場合には解は存在しない。
ただし、k:=2×i+3 (k≦rw)、
更に、ここでのx%nは、モジュロn関数、即ち、nによる整数除算x/nを表す。
例えば、次のように、ECC幅9を有する128データビットについては、解が存在しない。
これらのうちの5つが偶数である為、この非可逆解は可逆解に変換できない。これは、「3」の行のそれぞれが「5」の行で置き換えられ、2つの「1」が追加されて、偶数である列合計の数が奇数のままである為である。初期解は、最大でも、奇数である列合計を8個有する解に変換可能であるが、奇数である列合計を9個有する解には変換できない。これは、例えば、以下の構成を有する場合である。
{{84 3{0 0 0 0 0 0 0 0 0}:{28 28 28 28 28 28 28 28 28}
{44 5{0 0 0 0 0 0 1 2 2}:{25 25 25 25 25 25 24 23 23}}、これは列合計{53 53 53 53 53 53 52 51 51}を生成する。
これに対し、データワード長が127の場合、デフォルト構成
は、偶数個の、偶数である列合計{52 52 52 52 52 52 52 52 51}を有し、従って、ディスバランシングベクトル{0 0 0 0 2 2 2 2 2}を有する第2の副構成をディスバランシングすることによって可逆にされることが可能であり、結果として、列合計{53 53 53 53 51 51 51 51 51}を有するCfg1_127_9:={{84,3,{0 0 0 0 0 0 0 0 0}{43,5,{0 0 0 0 2 2 2 2 2}}}が得られる。一般には、ディスバランシングを行うことにより、行列中の「1」の総数は変更されない。代替として、5つの「3」の行を5つの「5」の行で置き換え、従って、「1」の総数を5×2=10だけ増やしたとしても、列合計{54 54 54 53 53 53 52 52 52}に対応する可逆構成Cfg2_127_9:={{79 3{0 0 0 1 1 1 1 1 1}{48 5{0 0 0 0 0 0 1 1 1}}}が得られたであろう。この構成はまだ可逆ではないけれども、ここではディスバランシングは不要であり、相互の再バランシングで十分であり、これによって、Cfg2_127_9:={{79 3{0 0 0 1 1 1 1 1 1}:{27 27 27 26 26 26 26 26 26}{48 5{1 1 1 0 0 0 0 0 0}:{26 26 26 27 27 27 27 27 27}}が得られ、各列合計が等しく53になる。
構成Cfgo_128_9の評価は、ECCビットで保護されるデータ幅128に対して、奇数行重みを有する対称解が存在しないことを示している。
ステップb)
この理由により、行に偶数重みを追加する別のアルゴリズムが存在する。しかしながら、奇数重み解の場合と同等のエラーの訂正及び検出の機能の為に必要な最小限の、行列行のハミング距離を維持する為に、更なる制約が課せられる。本アプローチの普遍性に影響を及ぼすものではないが、理解がより容易になるように、3つの最左行列列に対する制約が例示されている。
奇数の、3以上の行重みを有する行が、それらの最左位置にある組み合わせ{0 0 0}、{0 0 1}、{0 1 0}、{1 0 0}により、制約される。偶数の、4以上の行重みを有する行が、それらの最左位置に{1 1 1}を有する。このように構築することにより、ハミング重みkを有する全ての行が、ハミング重みk−1を有する全ての行と、ハミング重みk+1を有する全ての行とから、少なくともハミング距離2を有することが保証され、これは、2ビットエラー検出/1ビットエラー訂正には十分である。偶数のkについては、k個の「1」を有する行とk+2個の「1」を有する行との間のハミング距離が1より大きいことも保証され、これは、3つの最右行位置がk−3個の「1」とk−1個の「1」とを有する為である。奇数のkについては、最悪の場合、k行が、k個の「1」をew−3個の最右位置に有し、k+2−1=k+1個の「1」をew−3個の最右位置に有することになる。右の副行のハミング距離が1しかないことになるが、これは、このシナリオの発現が、k行が制約パターン{0 0 0}を有し、k+2行が制約パターン{0 0 1}、{0 1 0}、又は{1 0 0}を有する場合に限られるという事実を以て補償される。従って、この場合、左の副行は、ハミング距離を必要最小限の2まで延ばす。
ステップc)偶数解を生成するアルゴリズムが以下のステップを実施する。
ステップc1)以下のように、制約の奇数及び偶数のk個の重み区画を有する初期最小解を生成する。
2k+1=3から始めて、制約される奇数の副構成
{dw2k+1,{0 0 1}{0 0 1}2k+1 bv2k+1,{0 0 1}}、
{dw2k+1,{0 1 0}{0 1 0}2k+1 bv2k+1,{0 1 0}}、
{dw2k+1,{1 0 0}{1 0 0}2k+1 bv2k+1,{1 0 0}}、
{dw2k+1,{0 0 0}{0 0 0}2k+1 bv2k+1,{0 0 0}
を、それぞれ、
、並びにdw2k+1{0 1 0}、及びdw2k+1{1 0 0}によって生成する。
2k+2=4から始めて、制約される副構成
{dw2k+2,{1 1 1}{1 1 1}2k+2 bv2k+2,{1 1 1}}を、
により、
全てのdwの合計が、必要とされる総データ幅dwに等しくなるまで、生成する。
この構築により、「1」の総数が最小である行列の構成が生成され、これは、通常では、まだ対称ではない。
ステップc2)必要に応じて、初期構成を、最良の場合は既に0である、偶数である列合計を少なくとも偶数個有するように変換する。純粋な奇数のkの構成ではそのような変換が不可能である場合、ここでは、幾つかのdwkiをインクリメントし、幾つかのdwkjをデクリメントすることにより(kiは奇数でkjは偶数、又はその逆)、必要とされる効果が達成される。更に、全ての制約される列(本願発明者らの設定では3つの最左の「1」)の合計が全て奇数になるように、交換ペアを選択する。特定のサブルーチンがインクリメント可能な副構成とデクリメント可能な別の副構成とを選択し、これによって、全ての副構成の全てのデータ幅の必要とされる全合計dwが保全されるように、インクリメントの合計とデクリメントの合計が厳密に等しくなる。
ステップc3)次に、飽和していない副構成同士の(ディス)バランシングを行うことにより、2.から得られた左対称構成を完全対称構成に変換する。この為には、純粋に奇数である副構成に既に使用された手順を再使用する。
そのような全面的に対称な解が存在しない場合は、同じ制約パターンを有する、対応するdwk及びdwk+n×2のペアをインクリメント/デクリメントする。これにより、制約される列の対称性が保全される。そして、結果として得られる構成は完全対称である。
ステップc4)最大の列合計を最小化する為に、任意選択の追加変換を実施する。これにより、全体対称性が保全されるように左部分の列合計を増やすことで、右部分の列合計が減る。この効果は、偶数個の{0 0 0}−、{0 0 1}−、{0 1 0}−、又は{1 0 0}−行を、一段階高い行重みを有する同じ数の{1 1 1}行で置き換えることにより、達成される。各2*{0 0 0},2k+1を2*{1 1 1},2k+2に交換することにより、全ての左列の合計が全部で6だけインクリメントされ、全ての右列の合計が全部で4だけデクリメントされる。
各2*{0 0 1},2k+1を2*{1 1 1},2k+2に交換することにより、全ての左列の合計が全部で4だけインクリメントされ、全ての右列の合計が全部で2だけデクリメントされる。
等しい奇数重み行2*{0 0 0},2k+1だけを2*{0 0 1},2k+1、2*{0 1 0},2k+1、又は2*{1 0 0},2k+1に交換することにより、全ての左列の合計が全部で2だけインクリメントされ、全ての右列の合計が全部で2だけデクリメントされる。
ステップd)次の表は、最小ECC幅(ew)で保護可能な最大データワード幅を示す。
データ幅dwの範囲がdwmax(ew−1)≦dw≦dwevmax(ew)である場合、奇数の可逆解が存在しないのであれば、偶数の可逆解に対してであっても、ecc幅ewは、理論的には十分である。
しかしながら、ディスバランシングに関する他の制約の為に、場合によっては、偶数の可逆解さえも存在しない可能性がある。逆に、データ幅の範囲がdwevmax(ew)<dw≦dwmax(ew)である場合、奇数の可逆解が存在しないのであれば、ewを有するECCとともに存在する偶数の可逆解はない。この場合には、ewを1だけインクリメントしなければならず、これによって可逆解が常に有効になる。
列dwev0では、奇数(ハミング重み)解が存在しない場合に偶数解が使用される実際の最小dwが与えられている。列dwev1では、実際の最大dwが示されており、即ち、奇数解が存在しない全てのより大きなdwに対して、ewは、必然的に1だけインクリメントされなければならない。
上述の説明は例示的実施形態に関連して行われてきたが、当然のことながら、「例示的」という語は、最良又は最適という意味ではなく、一例という意味に過ぎない。従って、本開示は、代替形態、修正形態、及び等価形態を包含するものとし、これらは本開示の範囲に包含されてよい。
本明細書では特定の実施形態が図解及び説明されてきたが、当業者であれば理解されるように、本開示の範囲から逸脱しない限り、その、図解及び説明された特定の実施形態は、様々な代替且つ/又は等価な実施態様で置き換えられてよい。本開示は、本明細書に記載の特定の実施形態のあらゆる適応又は変形を包含するものとする。
100A、100B、200 回路
110、210、310 エンコーダ
120、220、320 副回路
130、230、330 デコーダ
140a、140b、140c、240、340 埋め込みパリティ行列生成器
250a、250b インバータ
260a、260b マルチプレクサ

Claims (20)

  1. 任意のデータ幅のデータワードに対するパリティ行列を生成するように構成された埋め込みパリティ行列生成器と、
    前記パリティ行列に基づいて前記データワードに冗長ワードを追加するように構成されたエンコーダと、
    前記エンコーダと結合されて、前記エンコーダから前記データワード及び前記冗長ワードを受け取るように構成された副回路と、
    前記副回路と結合されて、前記副回路から前記データワード及び前記冗長ワードを受け取ることと、前記パリティ行列に基づいて、前記データワード内にエラーがあれば検出することと、を行うように構成されたデコーダと、
    を含む回路。
  2. 前記副回路は、メモリ、レジスタ、バス、及びインタフェースからなる副回路群から選択される、請求項1に記載の回路。
  3. 前記パリティ行列生成器は、前記エンコーダ及び前記デコーダの両方に埋め込まれる、請求項1に記載の回路。
  4. 前記デコーダは更に、前記パリティ行列に基づいて前記データワードを訂正するように構成されている、請求項1に記載の回路。
  5. 前記パリティ行列生成器は更に、前記パリティ行列を生成することにより、前記デコーダが、前記データワード内にシングルビットエラーがあれば訂正することと、前記データワード内にダブルビットエラーがあれば検出することと、最大3ビットのエラーを検出するが訂正しないことと、を可能にするように構成されている、請求項1に記載の回路。
  6. 前記パリティ行列生成器は更に、前記パリティ行列を、前記データワードと前記冗長ワードとを合わせた幅が、バランシングされて非対称であるパリティ行列と等しくなることを可能にする最小個数の変更ビットとともに生成するように構成されている、請求項1に記載の回路。
  7. 前記パリティ行列生成器は更に、バランシングベクトルに従ってバランシングされた列合計を含む前記パリティ行列を生成するように構成されている、請求項1に記載の回路。
  8. 前記パリティ行列生成器は更に、前記パリティ行列の列合計に対するバランシング又はディスバランシングの指定が実行可能かどうかの高速試験を実施するように構成されている、請求項1に記載の回路。
  9. 前記パリティ行列生成器は更に、バランシングベクトルに従ってバランシングされた列合計を含む前記パリティ行列を生成して、列合計の差が1より大きくなるようにディスバランシングするように構成されている、請求項1に記載の回路。
  10. 前記パリティ行列生成器は更に、前記冗長ワードの必要最小限の幅を自動的に計算するように構成されている、請求項1に記載の回路。
  11. 前記パリティ行列生成器は更に、前記パリティ行列を、対称であるように生成するように構成されている、請求項1に記載の回路。
  12. 前記パリティ行列生成器は更に、奇数及び偶数の行ハミング重みを有し、非対称形の場合には前記パリティ行列と同じコードワード幅を有する、制約される部分行列に対して対称であるように前記パリティ行列を生成するように構成されている、請求項1に記載の回路。
  13. 前記パリティ行列生成器は更に、データ幅を保全しながら非対称パリティ行列に最小限の数の「1」を追加することによって、前記パリティ行列を、対称であるように生成するように構成されている、請求項1に記載の回路。
  14. 前記パリティ行列生成器は更に、前記パリティ行列のXORツリー深さが所定の限界値より小さくなるまで前記パリティ行列に「1」を追加することにより、前記パリティ行列のバランシングを行うように構成されている、請求項13に記載の回路。
  15. 前記パリティ行列生成器は更に、XORツリー深さが所定値を下回るように、ちょうど十分な量だけ前記冗長ワードの幅を増やすように構成されている、請求項14に記載の回路。
  16. 前記パリティ行列生成器は更に、所定の行ハミング重みのセットを有する前記パリティ行列を生成するように構成されている、請求項1に記載の回路。
  17. 埋め込みパリティ行列生成器により、任意のデータ幅のデータワードに対するパリティ行列を生成するステップと、
    エンコーダにより、前記パリティ行列に基づいて前記データワードに冗長ワードを追加するステップと、
    前記エンコーダと結合された副回路により、前記エンコーダから前記データワード及び前記冗長ワードを受け取るステップと、
    前記副回路と結合されたデコーダにより、前記副回路から前記データワード及び前記冗長ワードを受け取るステップと、
    前記デコーダにより、前記パリティ行列に基づいて、前記データワード内にエラーがあれば検出するステップと、
    を含む方法。
  18. 前記パリティ行列生成器により、先頭が「1」である行と先頭が「0」である行とを有する2つの部分行列を生成するステップと、
    前記パリティ行列生成器により、前記パリティ行列を再帰的にバランシングして、バランシングされたパリティ行列にするステップと、
    を更に含む、請求項17に記載の方法。
  19. 前記パリティ行列を生成する前記ステップは、
    個別のサブデータ幅、行ハミング重み、バランシングベクトル、及び制約パターンを有する、制約される副構成を再帰的に生成するステップ
    を含む、請求項17に記載の方法。
  20. 前記パリティ行列を生成する前記ステップは、
    様々な行ハミング重み及び/又は制約パターンを有する部分行列を再区画するステップと、
    前記部分行列をマルチバランシングするステップと、を含み、
    最初の非対称なパリティ行列が対称なパリティ行列に変換される、
    請求項17に記載の方法。
JP2017092217A 2016-05-06 2017-05-08 埋め込みパリティ行列生成器 Pending JP2017216677A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/148,599 2016-05-06
US15/148,599 US20170324425A1 (en) 2016-05-06 2016-05-06 Embedded parity matrix generator

Publications (1)

Publication Number Publication Date
JP2017216677A true JP2017216677A (ja) 2017-12-07

Family

ID=60119568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017092217A Pending JP2017216677A (ja) 2016-05-06 2017-05-08 埋め込みパリティ行列生成器

Country Status (3)

Country Link
US (1) US20170324425A1 (ja)
JP (1) JP2017216677A (ja)
DE (1) DE102017109588B4 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018132982A1 (zh) * 2017-01-18 2018-07-26 深圳市汇顶科技股份有限公司 码字生成方法、错误位确定方法及其电路
KR102583797B1 (ko) * 2018-04-09 2023-10-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20200313694A1 (en) * 2019-03-28 2020-10-01 Intel Corporation Detection of adjacent two bit errors in a codeword
US11050437B1 (en) * 2020-06-26 2021-06-29 Mahesh Rameshbhai Patel Implementation of invertible functions using party logic

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61139846A (ja) * 1984-12-12 1986-06-27 Hitachi Ltd 誤り訂正・検出方式
WO2005122455A1 (ja) * 2004-06-14 2005-12-22 Nec Corporation 双方向通信方法と装置、システムならびにプログラム
JP2006244259A (ja) * 2005-03-04 2006-09-14 Tokyo Institute Of Technology 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
WO2007088870A1 (ja) * 2006-02-02 2007-08-09 Mitsubishi Electric Corporation 検査行列生成方法、符号化方法、復号方法、通信装置、符号化器および復号器
JP2010506547A (ja) * 2006-10-18 2010-02-25 パナソニック株式会社 多入力多出力(mimo)システムにおいてデータを送信する方法およびシステム
JP2012119736A (ja) * 2010-11-29 2012-06-21 Mitsubishi Electric Corp 最短経路演算装置、最短経路演算方法及び検査行列生成方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3811108A (en) * 1973-05-29 1974-05-14 Honeywell Inf Systems Reverse cyclic code error correction
EP0563491A1 (en) * 1992-03-31 1993-10-06 International Business Machines Corporation Method and apparatus for implementing a triple error detection and double error correction code
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US7870459B2 (en) * 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
JP5247355B2 (ja) * 2007-10-31 2013-07-24 パナソニック株式会社 送信装置
FR2953666B1 (fr) * 2009-12-09 2012-07-13 Commissariat Energie Atomique Procede de codage ldpc a redondance incrementale
US8566667B2 (en) * 2011-07-29 2013-10-22 Stec, Inc. Low density parity check code decoding system and method
US9311181B2 (en) * 2012-11-15 2016-04-12 Samsung Electronics Co., Ltd. Memory controller changing partial data in memory device and method for changing partial data thereof
KR101439815B1 (ko) * 2013-03-08 2014-09-11 고려대학교 산학협력단 메모리에서의 에러 정정 처리 회로 및 에러 정정 처리 방법
DE102013215055B4 (de) 2013-07-31 2021-01-28 Infineon Technologies Ag Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
US9582354B2 (en) 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
FR3027756B1 (fr) * 2014-10-24 2017-11-10 Thales Sa Procede et systeme de traitement de donnees dans un systeme de telecommunications pour une adaptation dynamique a la quantite de donnees a transmettre

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61139846A (ja) * 1984-12-12 1986-06-27 Hitachi Ltd 誤り訂正・検出方式
WO2005122455A1 (ja) * 2004-06-14 2005-12-22 Nec Corporation 双方向通信方法と装置、システムならびにプログラム
JP2006244259A (ja) * 2005-03-04 2006-09-14 Tokyo Institute Of Technology 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
WO2007088870A1 (ja) * 2006-02-02 2007-08-09 Mitsubishi Electric Corporation 検査行列生成方法、符号化方法、復号方法、通信装置、符号化器および復号器
JP2010506547A (ja) * 2006-10-18 2010-02-25 パナソニック株式会社 多入力多出力(mimo)システムにおいてデータを送信する方法およびシステム
JP2012119736A (ja) * 2010-11-29 2012-06-21 Mitsubishi Electric Corp 最短経路演算装置、最短経路演算方法及び検査行列生成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
廣友 雅徳 他: "擬巡回符号から構成されるLDPC畳込み符号の重み分布計算について", 電子情報通信学会技術研究報告, vol. 第112巻,第215号, JPN6018007234, 20 September 2012 (2012-09-20), pages 1 - 6 *

Also Published As

Publication number Publication date
US20170324425A1 (en) 2017-11-09
DE102017109588A1 (de) 2017-11-09
DE102017109588B4 (de) 2022-05-12

Similar Documents

Publication Publication Date Title
JP2017216677A (ja) 埋め込みパリティ行列生成器
US8516339B1 (en) Method of and circuit for correcting adjacent bit errors in a memory
KR102599033B1 (ko) 저전력 이중 에러 정정―삼중 에러 검출(deb―ted) 디코더
US8291303B2 (en) Memory device with error correction system for detection and correction errors in read out data
US8069392B1 (en) Error correction code system and method
KR20150083028A (ko) 데이터 처리 장치
US20130080863A1 (en) Storage device
US10725841B1 (en) Method and apparatus for error detection and correction
Li et al. Low delay single error correction and double adjacent error correction (SEC-DAEC) codes
US20180343018A1 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
JP5284069B2 (ja) メモリシステム及びメモリアクセス方法
US20140281794A1 (en) Error correction circuit
US8166356B2 (en) Memory system and memory access method
US10367529B2 (en) List decode circuits
Li et al. Low delay 3-bit burst error correction codes
Ghosh et al. Selecting error correcting codes to minimize power in memory checker circuits
CN106021012B (zh) 数据处理电路
Koppala et al. Low overhead optimal parity codes
Liu et al. Fault secure encoder and decoder designs for matrix codes
KR20220011641A (ko) 무결성 검사를 이용한 오류 검출 및 정정 기법
Priya et al. Error detection and correction for SRAM systems using improved redundant matrix code
JP3895118B2 (ja) シングルイベントアップセット補償回路
Shirol et al. A FPGA Implementation of Hard Systematic Error Correcting codes based Matching of Data Encoded Architecture with Low-Complexity, Low-Latency
JP2020150515A (ja) 誤り訂正回路及びメモリシステム
Maity et al. An Improved Single and Double-Adjacent Error Correcting Codec with Lower Decoding Overheads

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180306

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181106