JP2010518464A - 半導体記憶装置 - Google Patents
半導体記憶装置 Download PDFInfo
- Publication number
- JP2010518464A JP2010518464A JP2009532473A JP2009532473A JP2010518464A JP 2010518464 A JP2010518464 A JP 2010518464A JP 2009532473 A JP2009532473 A JP 2009532473A JP 2009532473 A JP2009532473 A JP 2009532473A JP 2010518464 A JP2010518464 A JP 2010518464A
- Authority
- JP
- Japan
- Prior art keywords
- index
- data
- circuit
- error
- expression
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
エラー検出訂正システムを有する半導体記憶装置は、メモリセルアレイと、前記メモリセルアレイに書き込むデータを所定ビット数のまとまりであるシンボル毎にシンボル化し、解を表現するデコーダについての方程式を解いて前記メモリセルアレイから読み出されたデータのエラーを検出し、検出エラーに基づきデータを訂正し、訂正されたデータを他のデータの他の処理とは並列して出力するエラー検出訂正システムとを供えたエラー検出訂正システムを有する。
Description
この発明は、半導体記憶装置に係り、特にそのエラー検出訂正システムに関する。
電気的書き換え可能な不揮発性半導体メモリであるフラッシュメモリは、書き換え回数の増加と共にエラー率が大きくなる。特に、大容量化と製造プロセスの微細化が進むと、エラー率は上昇する。大容量化のためにデータを多値化すれば、更にエラー率は上昇する。このためフラッシュメモリにECC(Error Correcting Code)システムを搭載することは重要な技術となる。
フラッシュメモリチップ内に、或いはこれを制御するメモリコントローラ内にECC回路を搭載することは、従来より提案されている(例えば、特許文献1参照)。
有限ガロア体GF(2n)を利用するECCシステムで2ビット以上のエラー訂正を行う場合、エラー位置探索方程式の解を求めるのに有限体の要素を逐次代入して方程式を満足させる要素を解として選択してエラー位置探索を行うと、演算時間は膨大になり、オンチップとした場合にメモリの読み出しや書き込み性能を大幅に低下させる。
そこで、その様な逐次検索を行わず、従ってフラッシュメモリの性能を犠牲にしないような高速のECCシステムが望まれる。
特開2000−173289号公報
この発明は、シンボルデータエラー訂正システムを含む半導体記憶装置を提供することを目的とする。
この発明の一態様においては、メモリセルアレイと、前記メモリセルアレイに書き込むデータを所定ビット数のまとまりであるシンボル毎にシンボル化し、解を表現するデコーダについての方程式を解いて前記メモリセルアレイから読み出されたデータのエラーを検出し、検出エラーに基づきデータを訂正し、訂正されたデータを他のデータの他の処理とは並列して出力するエラー検出訂正システムとを供えたエラー検出訂正システムを有する半導体記憶装置が提供される。
この発明によると、オンチップ・シンボルデータエラー訂正システムを含む半導体記憶装置を提供することができる。
この発明の一態様においては、前記エラー検出訂正システムは、前記メモリセルアレイに書き込むデータを所定ビット数のまとまりであり、ガロア体の有限体要素に対応するシンボル毎にシンボル化し、特定のインデックスで表現された解要素を表現するデコーダについての有限体要素の方程式を解いて前記メモリセルアレイから読み出されたデータのエラーを検出し、検出エラーに基づきデータを訂正し、訂正されたデータを他のデータの他の処理と並列に出力するように構成される。
この発明の他の態様においては、前記エラー検出訂正システムは、エラー位置探索方程式について解の候補のテーブルを予め作成しておき、このテーブルを用いて根のインデックスを求めて、シンボルエラーを検出訂正する。前記エラー検出訂正システムは、前記エラー位置探索方程式に対して変数部分とシンドローム部分とを分離する変数変換を行い、その変数部分に代入する有限体要素とシンドローム部分に代入する有限体要素のインデックスの対応関係を利用して、シンボルエラー位置を検出する。
この発明の他の態様においては、前記エラー検出訂正システムは、シンボルエラー位置検出と訂正のインデックス計算において、ゼロ元を除く有限体GF(2m)の要素数をほぼ同じ大きさの互いに素な整数因子に分けて、有限体要素の原始根のインデックスをそれぞれの整数因子を法とする剰余で表す表現インデックスを用いる。
この発明の他の態様においては、前記エラー検出訂正システムは、前記メモリセルアレイに書き込むべきデータを所定ビット数ずつ原始多項式の既約剰余多項式の係数に対応させ、その既約剰余多項式とコード生成多項式とのかけ算により、前記所定ビット数ずつシンボル化されたコードデータを生成する。
この発明の他の態様においては、前記エラー検出訂正システムは、シンボルエラー位置検出と訂正のインデックス計算において、ゼロ元を除く有限体GF(2m)の要素数をほぼ同じ大きさの互いに素な整数因子に分けて、有限体要素の原始根のインデックスをそれぞれの整数因子を法とする剰余で表す表現インデックスを用いる。
この発明の他の態様においては、前記エラー検出訂正システムは、前記メモリセルアレイに書き込むべきデータを所定ビット数ずつ原始多項式の既約剰余多項式の係数に対応させ、その既約剰余多項式とコード生成多項式とのかけ算により、前記所定ビット数ずつシンボル化されたコードデータを生成する。
この発明の他の態様においては、前記エラー検出訂正システムは、有限体GF(2m)の要素数をほぼ同じ大きさの互いに素な整数因子に分けて、有限体要素の原始根のインデックスをそれぞれの整数因子を法とする剰余として表される表現インデックスを用い、前記メモリセルアレイに書き込むべきコードデータを表現インデックスの2進数表示として、またはその2進数表示から更に変換して得られるコードとして構成する。
この発明の他の態様においては、前記エラー検出訂正システムは、前記メモリセルアレイの読み出しデータを交互に取り込む第1及び第2のデータレジスタと、前記第1及び第2のデータレジスタの読み出しデータのエラー検出と訂正を行うエラー検出訂正部とを備えて、第1及び第2のデータレジスタの一方において読み出しデータについて前記エラー検出訂正部でエラー検出と訂正を行い、訂正されたデータを上書き保存する動作を行っている間、他方において上書き保存されたデータの出力動作を行う。
この発明の他の態様においては、前記エラー検出訂正システムは、前記メモリセルアレイの読み出しデータを交互に取り込む第1及び第2のデータレジスタと、前記第1及び第2のデータレジスタの読み出しデータのエラー検出と訂正を行うエラー検出訂正部とを備えて、第1及び第2のデータレジスタの一方において読み出しデータについて前記エラー検出訂正部でエラー検出と訂正を行い、訂正されたデータを上書き保存する動作を行っている間、他方において上書き保存されたデータの出力動作を行う。
この発明の他の態様においては、エラー検出訂正システムは、前記メモリセルアレイに書き込むデータをバイト毎に有限体GF(256)の要素に対応させて有限体要素としてシンボル化し、前記メモリセルアレイの読み出しデータからエラーが発生したシンボルを検出してデータ訂正する。前記エラー検出訂正システムは、有限体の要素数255を互いに素な因子17と15に分けて、有限体要素の原始根のインデックスを、17を法とする剰余としての表現インデックスa(17)及び15を法とする剰余としての表現インデックスb(15)により表し、
シンボル化すべきバイトデータを4ビットずつ上位部分と下位部分に分けて、a(17)が0〜15のとき、上位部分をa(17)の2進数表示、下位部分をb(15)の2進数表示とみなし、a(17)が16のとき、上位部分をb(15)の2進数表示、下位部分をa(17)の2進数表示とみなし、全ビットが1のとき有限体要素のゼロ元とみなす。
シンボル化すべきバイトデータを4ビットずつ上位部分と下位部分に分けて、a(17)が0〜15のとき、上位部分をa(17)の2進数表示、下位部分をb(15)の2進数表示とみなし、a(17)が16のとき、上位部分をb(15)の2進数表示、下位部分をa(17)の2進数表示とみなし、全ビットが1のとき有限体要素のゼロ元とみなす。
メモリにECCシステムを搭載する際には、リアルタイムでデータ訂正を行なう必要があるために高速の計算処理が要求される。また、ランダムなエラー発生に対してはBCH(Bose−Chaudhuri−Hocquenghem)コードやRS(Reed−Solomon)コードを用いたECCが有効であることは知られている。ここでは、RSコードを用いた高速のオンチップ・シンボルエラー検出訂正システムを提案する。
RSコードを用いたECCシステムでは、一定のデータビットのまとまりを有限体要素に対応させて有限体要素としてシンボル化し、エラーが発生したシンボルを検出してそのエラー訂正を行う。この場合シンボル内のエラーであればシンボルとしてコード化したビット数までのエラーを訂正できるので、エラー訂正率は、BCHコードを用いた場合より向上する。
高速にエラー検出演算を行なうには、予め作成しておいた解のテーブルとメモリからの読み出しデータから計算されたシンドロームを比較して、エラー位置探索方程式の解を求める。このシンドローム比較を行うには、エラー位置探索方程式で未知数を含む変数部分とシンドローム部分とが分離した方程式を、変数変換を利用して作ることが鍵となる。
以下の実施の形態では、2シンボルエラー訂正の場合に、その変数変換の方法としてパラメータをうまく設定するとこの変数部分とシンドローム部分の分離が行なえることを示す。また解のテーブルとシンドロームとの比較は、有限体要素のインデックス間の比較により行うが、その際に“表現インデックス”という概念を導入することで、短い計算の並列演算として高速に行なうことが出来ることを示す。
このようなRSコードを用いたECCシステムをフラッシュメモリにオンチップで搭載することによって、メモリ外部からはメモリの性能を落とさずにデータ保持の信頼性を向上させることができる。
RSコードを用いたこの実施の形態のECCシステムの特長をまとめると、次の通りである。
(a)エラー位置探索多項式をシンドロームから得られた有限体要素をパラメータとする変数変換を行い、変数部分とシンドローム部分とに分離する。そして、変数に代入する有限体要素とシンドローム部分の有限体要素のインデックス比較により、エラー位置探索多項式を満足させる有限体要素を求め、エラーの発生したシンボルを見つけ、シンボルのエラーを修正する。
(b)ゼロ元を除く有限体の要素数を表す数値をほぼ同じ大きさの互いに素な整数の因子に分けて、それぞれの因子の整数を法とする剰余で有限体要素の原始根によるインデックスを表す“表現インデックス”表示を用いて、エラー位置探索と修正の計算を並列化する。
(c)システムで利用するコードデータをメモリに記憶する際には、システムは、コードデータが表す有限体要素としての原始多項式の既約剰余多項式の係数を用いる。
(d)コードデータが表す有限体要素をメモリに記憶する際には、システムは、コードデータが表す有限体要素としての原始根の指数の表現インデックスの2進数表示または表現インデックスの2進数表示から変換して得られるコードを用いる。
(e)エラー位置探索とエラー訂正を高速で行うために、メモリから読み出したシンボルデータを保持する第1及び第2のデータレジスタを併設する。エラー位置探索計算のためにメモリから読み出したシンボルデータは、第1のデータレジスタに保持し、エラー修正後のコードデータをこれに上書き保存する。保存したコードデータを情報データに変換しながら出力する動作と並行して、メモリから読み出した次のシンボルデータを第2のデータレジスタに保持して、エラー位置探索計算を続ける。
(f)有限ガロア体GF(256)を用いてシンボルエラー検出訂正を行うシステムの場合、シンボル化すべきバイトデータを4ビットずつ上位部分と下位部分に分ける。そして、17と15をそれぞれ法とする剰余で表される表現インデックス15n(17)またはn(17)と17n(15)またはn(15)を用いて、15n(17)またはn(17)が0〜15のときは下位部分を17n(15)またはn(15)の2進数表示、上位部分を15n(17)またはn(17)の2進数表示とみなし、15n(17)またはn(17)が16のときは上位部分を17n(15)またはn(15)の2進数表示、下位部分を15n(17)またはn(17)の2進数表示とみなし、いずれもの全ビットが1である場合は有限体要素のゼロ元とみなして、シンボル化を行う。
以下、図面を参照して実施の形態のECCシステムの詳細を説明する。以下で説明するのは、RSコードを用いて2シンボルエラーまでの訂正を行うものであり、これを2EC−RS−ECCシステムと称する。
[2EC−RS−ECCシステムのデータ・エンコーディング]
まず、データのエンコーディングを説明する。2ECシステムでは、ガロア体(有限体)GF(28)を用いる。ガロア体GF(28)の原始既約多項式をm1(x)としてこの根をαとする。α はガロア体の原始根である。原始既約多項式m1(x)は、次のような8次多項式となる。
まず、データのエンコーディングを説明する。2ECシステムでは、ガロア体(有限体)GF(28)を用いる。ガロア体GF(28)の原始既約多項式をm1(x)としてこの根をαとする。α はガロア体の原始根である。原始既約多項式m1(x)は、次のような8次多項式となる。
2シンボルのエラー訂正をする場合は、α0 ,α1,α2およびα3を根とする既約多項式g(x)をコード生成多項式として、数2に示すように、xの次数4,3,2,1,0の項のGF(28)上の係数をg4,g3,g2,g1,g0とする。
各係数を具体的に計算すると、下記数3の通りである。
RSコードの方法では所定数のデータビット範囲を一つのシンボルとして扱うので、GF(28)では256個の有限体要素のそれぞれがシンボルとなり、おのおのの要素はm1(x)の既約剰余としてのGF(2)上の7次多項式(既約剰余多項式)の係数で表せる。従って、8ビットデータ(=1バイトデータ)を1シンボルとすると、256×8=2048ビット(=256バイト)が訂正可能な最大データビット長となる。
しかし、オンチップでのECCシステムの回路規模をある程度小さく抑えるためには、エラー検出訂正の単位として同時に扱う情報データ量を最大データビット長より小さい値を選択することが好ましい。以下の実施の形態では、これを128ビット(=16バイト)に制限した場合を説明するが、情報データ量を16バイトに限る必然性は方式上からはない。
ECCシステムのコードを作る要素は有限体のゼロ因子を含む256個であり、16バイトの情報データを有限体要素に対応させる。ビット位置32から159を8ビット毎のゼロ元を含むシンボル化係数を、a0,a1,…,a15として、数4に示すようにこれらを係数とするGF(28)上の15次情報多項式f(x)を用いる。
データをエンコードするために、この15次情報多項式f(x)に先の4次コード生成多項式g(x)をかけて、下記数5に示すチェックビットを含む19次コード多項式c(x)を作る。
数5のコード多項式c(x)の20個の係数c0,c1,…,c19がコード化されたデータとなる。即ち、数6に示すようにシンボルciのコード情報がメモリに記憶するデータビットとなる。各コードデータはバイトデータであり、有限体要素に対応している。
[2EC−RS−ECCシステムのデータ・デコーディング]
次にメモリから読み出されたデータについて、エラー検出訂正を行うためのデコーディング法を説明する。データシンボルに生じたエラーは19次のエラー多項式e(x)で表され、メモリから読み出したデータは、下記数7のような多項式ν(x)となる。
次にメモリから読み出されたデータについて、エラー検出訂正を行うためのデコーディング法を説明する。データシンボルに生じたエラーは19次のエラー多項式e(x)で表され、メモリから読み出したデータは、下記数7のような多項式ν(x)となる。
数7のエラー多項式e(x)の係数を求めることがデコードであり、その係数が求まればエラーの訂正が出来る。
デコードの第1段階として、ν(x)にg(x)の根α0,α1,α2およびα3を代入する。このときの値は、c(x)の作り方からして、e(x)に代入したものに等しく、下記数8に示すようにそれぞれ、S0,S1,S2及びS3とする。これをシンドロームと呼ぶ。
シンボルエラーがi,j次にあれば、e(x)=eixi+ejxjとなるので、このi,jを求めればエラー位置が確定し、ei,ejを求めればエラー訂正が可能となる。
これらのエラー位置を、m1(x)=0の根αのインデックスを主に用いたGF(256)内の計算で求める。xn≡pn(x)mod m1(x)なる剰余pn(x)を用いると、αn=pn(α)となる。
エラーが生じた次数iとjに対してX1=pi(α)=αi 、X2=pj(α)=αjとし、シンドロームS0,S1,S2,S3のαのインデックスをそれぞれσ0,σ1 ,σ2 ,σ3 とする。また、エラーシンボルeiとejをそれぞれE1とE2とする。
このように定義したGF(256)の要素間の関係は、シンドローム計算から明らかなように下記数9の関係式(1)〜(4)になる。
第2段階として、数9の関係式(1)〜(4)を用いて、X1,X2,E1,E2をシンドロームS0,S1,S2,S3で表現する。まず関係式(1)と(2)から、次の数10が得られる。
この数10を関係式(3),(4)に代入すれば、次の数11が得られる。
これに基づいて、X1とX2とを求めるエラー位置探索方程式ΛR(x)を、シンドロームを用いて次の数12のように表すことが出来る。
第3段階として、ΛR(x)=0の根をGF(256)内で求める。即ち、ΛR(αn)をn=0〜254の範囲で探索すれば、ヒットしたnがエラーシンボル位置X1,X2となり、これからシンボルエラーE1,E2が求められる。
なお、ΛR(x)=0の根が常に求まるわけではなく、この方程式が1次となることもあり、それぞれの場合にエラー数が異なる。詳細は後に説明するがエラー数とその場合の条件をまとめと、次の数13となる。
数13に示す0,1,2エラーの場合のシンドローム条件は、必要かつ十分条件である。具体的に説明すれば、次のとおりである。
0エラーのとき、S0=S1=S2=S3=0となるのは明らかであるので、逆も成り立つことを説明すると、ΣEi=0,ΣEiXi=0,ΣEiXi 2=0,ΣEiXi 3=0から、有限体上ではEi=0になることを云えばよい。
ガロア体の生成元をαとして、Xi=αa+δ(i)(δ(1)=0)とすると、ΣEiα0δ(i)=0,ΣEiα1δ(i)=0,ΣEiα2δ(i)=0,ΣEiα3δ(i)=0である。
有限体要素間の関係はユニークであるので、これらの関係が同時に満たされるためには、Ei=0又は、α0δ(i)=α1δ(i)=α2δ(i)=α3δ(i)から、δ(i)=0即ちXi=αaとなることが必要である。後者は1エラーであるから、E1=S0=0で0エラーとなる。
次に1エラーについて説明する。S0=E1,S1=E1X1,S2=E1X1 2,S3=E1X1 3より、S1 2=E1S2=S0S2,S1S2=E1S3=S0S3(S1S3=E1 2X1 4=S2 2)。E1≠0,X1≠0であるので、S0S1S2S3≠0で、E1=S0,X1=S1/S0。
逆に、S1 2=S0S2より(ΣEiXi)2=(ΣEi)(ΣEiXi 2)、従ってΣEiEj(δij−1)Xi 2=0である。また、S1S3=S2 2より(ΣEiXi 2)2=(ΣEiXi)(ΣEiXi 3)、従ってΣEiEj(δij−1)Xi 4=0である。
Xi=αa+δ(i)(δ(1)=0)とすると、ΣEiEj(δij−1)α2δ(i)=0,ΣEiEj(δij−1)α4δ(i)=0であり、要素間の関係がユニークであることから、α2δ(i)=α4δ(i)により、δ(i)=0となり、Xi=αaである。S0S1S2S3≠0よりEi≠0即ち1エラーである。
次に2エラーについて説明する。2エラーであるので、X1+X2≠0,X1X2≠0であり、E1+E2=S0,E1X1+E2X2=S1,E1X1 2+E2X2 2=S2,E1X1 3+E2X2 3=S3から、E1=(S0X2+S1)/(X1+X2),E2=(S0X1+S1)/(X1+X2)である。
GF(2)上の計算で連立方程式を変形して、S1(X1+X2)+S0X1X2=S2,S2(X1+X2)+S1X1X2=S3から、(S1 2+S0S2)(X1+X2)=S0S3+S1S2,(S1 2+S0S2)X1X2=S2 2+S1S3が得られる。
逆に、S0S2≠ S1 2なら、S0S3≠S1S2で、2根X1,X2を求める方程
式を、x=ayと変換できて、解を求めることが出来る。2エラーの場合のみ方程式が満たされるので、その解が2エラーとなる。有限体内でエラーが見つからなければ、2エラー以外である。
式を、x=ayと変換できて、解を求めることが出来る。2エラーの場合のみ方程式が満たされるので、その解が2エラーとなる。有限体内でエラーが見つからなければ、2エラー以外である。
[エラー位置探索の計算手法]
次に、エラー位置探索方程式ΛR(x)=0の計算法を説明する。この実施の形態では、xに逐次有限体要素を代入して方程式の解を求めるのではなく、解の候補を予めテーブルとして求めておき、ΛR(x)=0となる根x=αnのインデックスnを求める計算法を用いる。オンチップで搭載するECCシステムを高速化するには、この計算法がキーとなる。
次に、エラー位置探索方程式ΛR(x)=0の計算法を説明する。この実施の形態では、xに逐次有限体要素を代入して方程式の解を求めるのではなく、解の候補を予めテーブルとして求めておき、ΛR(x)=0となる根x=αnのインデックスnを求める計算法を用いる。オンチップで搭載するECCシステムを高速化するには、この計算法がキーとなる。
そのためにはまず、ΛR(x)を変形してこれを変数部分とシンドローム部分に完全に分離し、解の候補のインデックスとシンドロームのインデックスとの関係だけで解のインデックスnを求めることが出来るようにする。具体的に、A=S0S2+S1 2,B=S0S3+S1S2,C=S1S3+S2 2を導入して、次の数14のような変数変換を行う。
そうすると、エラー位置探索方程式ΛR(x)=0は、下記数15のように書き換えることが出来、変数部分y2+yとシンドローム部分AC/B2に分けることが出来る。
この様に変数変換された方程式を解く際にシンドローム計算から必要となる基本的なインデックスは、S0のσ0,S1のσ1,S2のσ2,S3のσ3,AのσA,BのσB,CのσC,DのσD及び、aのσaである。
変数yにαkを代入して、α2k+αk=αykなるインデックスykを予め求めておき、テーブルとする。方程式のシンドローム部分DのインデックスはσDであるから、σD≡ykmod255を満たすkがエラー位置に対応するyでのインデックスである。実際のエラー位置iとjは、x=ay=ασa+k=αnから、αnのnとして求まる。
エラー位置X1とX2に対応する変換前のy1とy2からシンボルエラーE1=eiとE2=ejは、数10の式に基づいて、次の数16のように求めることが出来る。
シンボルエラーE1,E2が求まれば、これとメモリから読み出されたデータdi,djとに基づいて、次の数17のように正しいコードci,cjが得られる。
最終的な情報データaiはもともとコードデータを情報データからエンコードした数18の関係式(前述の数6と同じ)を用いて変換して求める。
[エラー位置探索のインデックス合同式計算法]
次に、エラー位置探索で必要な計算はインデックス間の合同式からインデックスを確定することであり、システム構成上必要なこれらの計算法を以下に説明する。
次に、エラー位置探索で必要な計算はインデックス間の合同式からインデックスを確定することであり、システム構成上必要なこれらの計算法を以下に説明する。
インデックス合同式はいずれもGF(256)の要素のインデックスであるので、255を法としたものである。この計算はまともに行なうと255×255の規模の比較を行うことに相当し、回路規模が大きくなる。
そこで回路規模を小さくするために、インデックス合同式を、255を互いに素である二つの整数因子に分けてこれらを法とする二つの合同式に分離して並列化する。即ちこれらの二つの合同式を同時に満たす数はもともとの合同式も満たすことを利用する。具体的にこの実施の形態では、255=17×15に従って、各合同式(法255)を解く場合も17と15をそれぞれ法とする二つの合同式を同時に解くようにする。
以下では、15倍したインデックスの法17での剰余及び、17倍したインデックスの法15の剰余で表わされる有限体要素の原始根のインデックスのことを、“表現インデックス”と呼ぶことにする。
もちろん法17に対して15倍、法15に対して17倍するのは、便宜的なもので、法と互いに素である数なら1も含めて何でも乗数としてよく、一度定めてシステムの構築において変更しなければよい。乗数が変われば後に説明する表現インデックスとGF(256)の要素との関係表の対応が変化する。この変換の例は、後に示す。
下記数19は、シンドロームの積S0S2のインデックスσ02の計算合同式を二つに分離した合同式を示す。
下記数20は、シンドロームの積S0S3のインデックスσ03の計算合同式を二つに分離した合同式を示す。
下記数21は、シンドロームの積S1S2のインデックスσ12の計算合同式を二つに分離した合同式を示す。
下記数22は、シンドロームの積S1S3のインデックスσ13の計算合同式を二つに分離した合同式を示す。
シンドロームから得られたAとBのインデックスσAとσBとから、a=B/Aの表現インデックスσaを求める二つの合同式は、下記数23のようになる。
シンドローム間の計算から得られたA,Cから、ACの表現インデックスσACを求める二つの合同式は、下記数24のようになる。
シンドローム間の計算から得られたA,B,Cから、D=AC/B2の表現インデックスσDを求める二つの合同式は、下記数25のようになる。
シンドロームから得られたインデックスσDからインデックスkとykの対応関係テーブルを用いて、yk=σDとなるインデックスkが求められる。このインデックスkとインデックスσaとの和を求める合同計算式は、次の数26のようになる。
以上のようにインデックス合同式の計算は、mod17とmod15による剰余類インデックス、すなわち表現インデックスによって行なわれ、2つの成分による表現インデックスとしてのnが得られる。しかし、このときσDが対応するkが存在しないykに対応することもある。
シンドロームから得られたインデックスσAからS1/aのインデックスσS1/aを表現インデックスとして求める合同計算式は、次の数27のようになる。
インデックスkとykの対応関係テーブルを用いて、シンドロームから得られたインデックスσDからyk=σDに対応するkを求め、このkとS0のインデックスσ0との和である積S0yのインデックスを求める合同計算式は、次の数28にようになる。
この様な計算は、mod17とmod15による剰余類インデックスすなわち表現インデックスによって行なわれ、2つの成分による表現インデックスとしてσS0yが得られる。しかし、このときσDが対応するkが存在しないykに対応することもある。このインデックスσS0yを使用してシンボルエラーを計算する。
シンドローム間の計算から得られたS0のインデックスとS1のインデックスから X1=S1/S0のインデックスσXを表現インデックスとして求める合同計算式は、次の数29のようになる。このインデックスは、1エラーの場合のエラー位置の計算である。
以上のように、大きな数の法に対して剰余類間の関係を求めるとき、法の互いに素な因子で大きさがほぼ同じ数の因子を法とした表現インデックスの成分で並列処理をすることで計算の量を減らすことができる。
具体的にこの実施の形態では、計算を並列化するために255を互いに素である二つの因子15と17に分けてこれらを法とする二つの合同式に分離して、15倍したインデックスの法17での剰余と17倍したインデックスの法15の剰余のことを表現インデックスとした。
255を法とする剰余類nの表現インデックスは、一般的に{an(17),bn(15)}であり、(a,17)=1,(b,15)=1となる整数a,bが選ばれる。実施の形態では、a=15,b=17を選んでいるが、この選択に必然性はなく、例えばa=b=1の表現インデックスも可能である。
図1は、実施の形態で用いた表現インデックス{15n(17),17n(15)}に対して、別の表現インデックス{n(17),n(15)}を用いた場合の成分間の対応表を一例として示している。
また、実施の形態では255を15と17というほぼ同等な大きさの互い素な2 整数の積に分解したが、有限体の大きさによっては3つ以上の互いに素なほぼ同等な整数の積に分け、これらの整数を法とする3つ以上の成分を持つ表現インデックスで計算をして並列演算を行うことが可能なことは容易に類推できる。
図2は、αn のインデックスnと図1に示した2つの表現インデックスによる表現の対応を示した。
[2EC−RS−ECCシステム構成]
図3は、2シンボルまでのエラー訂正が可能で、3シンボル以上のエラーがあることの警告を出すことができる2EC−RS−ECCシステムの構成図である。
図3は、2シンボルまでのエラー訂正が可能で、3シンボル以上のエラーがあることの警告を出すことができる2EC−RS−ECCシステムの構成図である。
メモリコア10への入力データを生成する部分がエンコード部20である。16バイトのデータをa0〜a15としてこれらを係数とする15次の情報多項式f(x)が訂正単位の入力データとなる。
なお、GF(256)を用いる場合、情報多項式f(x)はデータビットの構成によって適宜必要なバイト数を256バイトまでで選んだ数に応じた次数の多項式と出来るが、本実施の形態ではオンチップシステムとして容易に構成できる16バイトの情報としている。
情報多項式f(x)にコード生成多項式g(x)をかけたGF(256)上の19 次の多項式c(x)の係数がコードデータであり、これをメモリにシンボルデータとして書き込む。
図4は、メモリコア10の一例として、NAND型フラッシュメモリの具体例を示している。セルアレイ1は、NANDセルユニットNUを配列して構成される。NANDセルユニットNUは、直列接続された複数個(図の例では32個)の電気的書き換え可能な不揮発性メモリセルM0−M31を有する。
NANDセルユニットNUの一端は選択ゲートトランジスタS1を介してビット線BLe(BLo)に接続され、他端は選択ゲートトランジスタS2を介して共通ソース線CELSRCに接続されている。
メモリセルM0−M31のコントロールゲートはそれぞれワード線WL0−WL31に接続され、選択ゲートトランジスタS1,S2のゲートは選択ゲート線SGD,SGSに接続されている。ワード線WL0−WL31及び選択ゲート線SGD,SGSを選択駆動するのがロウデコーダ3である。
ワード線を共有するNANDセルユニットの集合は、データ消去の単位となるブロックを構成し、図示のようにビット線方向に複数のブロックBLK0〜BLKnが配置される。
ビット線に接続されるセンスアンプ回路2は、同時書き込み及び読み出しが行われる1ページ分のセンスアンプSAを備える。ここでは、隣接する偶数番ビット線BLeと奇数番ビット線BLoとが一つのセンスアンプSAを共有する例を示している。
メモリコア10から読み出された20バイトのデータは19次の多項式ν(x)の係数として扱われる。この多項式ν(x)からシンドロームS0,S1,S2,S3を生成するのが、シンドローム演算部21である。ν(x)にg(x)の根α0,α1,α2,α3 を代入してそれぞれシンドロームS0,S1,S2,S3を得る。
求められたシンドロームに基づいて、エラー位置検索を行う。なおシンドロームS0,S1,S2,S3が全てゼロであれば、ゲート41により“no error”が出力される。
エラー位置探索の計算では、シンドロームに関する積は、インデックスで表されるバイナリの数としてのアダーを用いた加算として行なわれる。具体的に各加算部は、mod17とmod15の二つの合同式を同時並列的に解く二つのアダーにより構成されて、表現インデックスにより演算を行なう。和については、パリティチェッカで有限体の要素として7次の多項式の係数で表された各次数の係数間のmod2による和演算として行う。
まず、シンドローム間の積や商であるS0S2,S0S3,S1S2,S1S3及びS1/S0を計算する部分がそれぞれ加算部22,23,24,25及び29である。これらの加算部出力を受けて、パリティチェッカ26は、A=S0S2+S1 2なる和演算を行い、パリティチェッカ27は、B=S0S3+S1S2なる和演算を行い、パリティチェッカ28は、C=S1S3+S2 2なる和演算を行う。
S0S1S2S3≠0であり、A=0かつB=0の場合は、ゲート回路42により、1エラーであることを示す信号1EC=“H”が得られる。また、A≠0でB≠0の場合は、ゲート回路43により、2エラーであることを示す信号2EC=“H”が得られる。
加算部30は、2ECに対応するy2+y=Dによってyを求める際のDの因子ACを求める部分であり、入力部分はAとCである。加算部31は、変数変換x=ayを行うためのa=B/Aを計算する部分で、入力部はBとA−1である。
加算部32は、ACとB−2を入力として、Dを求める部分である。加算部33は、シンボルエラーEn=S0yk+S1/aのS1/aを計算する部分で、入力はS1とa−1である。
加算部34は、エラー位置nの表現インデックスを計算する部分である。この入力部ではy2+y=Dを満たすyのインデックスkをデコードする。対応するデコード出力が無い場合は信号“no index”を出力する。入力はDであり、デコード結果のkは、その下の加算部35の入力部に渡すとともに、他の入力aのインデックスとkの和を求めて変数変換x=ayを行っている。
信号“no index”が出力された場合は2エラーではないので、ゲート回路45は、この場合を判別する信号2Cを、信号2ECと“no index”の反転のANDで発生する。
加算部35は、シンボルエラーEn=S0yk+S1/aのS0ykを計算する部分である。入力はその上の加算部34の入力部でのデコード結果kとS0である。右端のパリティチェッカ36は、入力のインデックスを多項式に直した同じ次数の係数間のmod2による和を行なう部分であり、シンボルエラーS0yk+S1/aの計算を行う。
メモリコア10から読み出したデータを最終的に訂正する部分が点線で囲った訂正回路50である。1エラーの場合は信号1EC=“H”が出力され、これとエラー位置xとシンドロームS0とによりANDゲートG1の出力が“H”になる。これにより、メモリから読み出したシンボルの各ビットをXORゲートG3で訂正する。
2エラーの場合は信号2C=“H”が出力され、これとエラー位置nとシンボルエラーEnとでANDゲートG2の出力が“H”になる。これにより、メモリから読み出したシンボルの各ビットをXORゲートG3で訂正する。
“no error”,1EC,2ECのいずれの信号も発生されないときはエラーが3以上の場合であり、このときゲート回路44により訂正不可能を示す信号“non correctable”を発生する。
訂正回路50の出力を入力とする部分が出力デコード部51である。20バイトのコード情報をc0〜c19としてこれらを係数とする19次の多項式c(x)をg(x)により逆演算することで、情報多項式f(x)の16個の係数a0〜a15の16バイトデータに変換して出力する。
以下、ECCシステムの各部の詳細を説明する。
なお以下の説明は、3つの異なる方法について行うために、これらの方法について概要を説明する。これらは外部データをシンンボルとしてどう見るか、メモリに記憶させるシンボルは何かという点及び入出力インタフェースの高速化に関する。
図5にはその3つのケースC.1〜C.3を示している。
ケースC.1…外部データをバイト単位でGF(256)の要素である7次の既約剰余多項式pn(x)の係数と見なして、これを対象としてコードの演算を行なう。メモリに記憶させるデータのシンボル化も剰余多項式pn(x)の係数としてのバイト単位で行なう。このケースC.1の説明において、基本的なエンコードやデコードの方法を説明する。
ケースC.2…ケースC.1で回路規模が最も大きくなる部分であるpn(x)の係数表示とインデックス表示間のデコード回路の数を少なくする方法である。外部データをGF(256)の要素の表現インデックスのバイナリ表示と見なしてデコードなしで演算できる部分を増やす。
メモリに記憶させるシンボルも表現インデックスのバイナリ表示としてのバイト単位で行なう。このケースC.2については、ケースC.1から変更のある部分についてのみ説明する。
ケースC.3…ケースC.1,C.2ではECCシステムと外部とのデータのやり取りはバイト単位であり、ECCが同時に扱うデータブロックを16サイクルでメモリに読み込むことを想定した。しかし2バイト以上を同時に扱いデータ転送のバンド幅を上げることが必要な場合もある。従って、多バイト同時転送の例である4バイト単位でデータをやり取りする方法をケースC.3として、ケースC.2の方式の変形として、インターフェース構成を説明する。
[ケースC.1の説明]
まず、ケースC.1の詳細説明を行なう。
まず、ケースC.1の詳細説明を行なう。
(データエンコード部)
外部データからメモリに記憶するコードデータを係数として持つコード多項式c(x)を生成する方法について説明する。
外部データからメモリに記憶するコードデータを係数として持つコード多項式c(x)を生成する方法について説明する。
外部データは、8ビット(=1バイト)ずつシンボル化する。情報データ多項式f(x)の係数aiをシンボルとしての有限体要素と対応させるために、8ビットデータをGF(256)の7次の既約剰余多項式pn(x)の係数に対応させる。その場合、要素間の積演算をインデックスの加減算として行ない、しかもその計算規模を小さくするために、剰余多項式pn(x)の係数を表現インデックスに変換する。更にその際、図6に示すように、pn(x)の係数をプリデコードして、表現インデックスの回路規模を小さくし、表現インデックスはバイナリ表示されるように変換する。
この表示を用いてc(x)を生成するために要素giの積演算を行なう。即ち、コード多項式はc(x)=f(x)g(x)であるから、次数が同じ係数を比較することによって、c(x)の係数ciを、ci=g4ai−4+g3ai−3+g2ai−2+g1ai−1+g0a1を用いて計算する。
giは表現インデックスで表され、g4=1={0,0},g3=α75={3,0},g2=α249={12,3},g1=α78={14,6},g0=α6={5,12}であるから、全て表現インデックスの計算として処理できる。
αmαn=αm+nを表現インデックスで表すと、{15m(17),17m(15)}{15n(17),17n(15)}={15(m+n)(17),17(m+n)(15)}={15m+17n(17),17m+17n(15)}となる。即ち積は表現インデックス成分間の和として計算できる。
有限体要素間の和は表現インデックスを用いたパリティチェックにより行う。和としてのコードciは、有限体要素の剰余多項式pn(x)の係数表現として得られる。これをシンボルデータとしてメモリに直接記憶する。
なお表現インデックスへの変換の際に、GF(256)のゼロ元に対応するインデックスは根αの指数としては得られないので、その他の元では絶対使用されず、ゼロ元として事実上表現される表現インデックスである{32,15}、即ちバイナリ表示でバイトがオール“1”のFFに対応させて、ゼロ元の判定(ゼロ判定)“zero judge”を行なう。
図7は、コード計算の具体的なシステムである。
外部からのデータf(x)は、クロックCLで取り込む。このクロックCLの例えば2倍の速さでサイクル数が2倍のクロックCLK**でプリ/インデックスデコード回路700を動作させて、表現インデックスのバイナリ表示にする。
これは外部データの取り込み16サイクルに対して計算システムの処理は20サイクル必要であるためである。即ち、f(x)が15次多項式、c(x)が19次の多項式であることに対応する。
計算システムに入力されるデータは、時間順に、a15,a14,…,a3,a2,a1,a0,FF,FF,FF,FF,a’15,a’14,…である。FFは、全てのビットが“1”のデータでGF(256)のゼロ元を表す。
これらのインデックスバイナリデータは同時に、ag0,ag1,ag2,ag3及びag4のアダー系701,702,703,704及び705に入力される。
各アダー系への同時データ入力のために、ag0アダー系701は、4段のシフトレジスタSRを経たデータを受け取り、ag1アダー系702は3段のシフトレジスタSRを経たデータを受け取る。ag2アダー系703は2段のシフトレジスタSRを経たデータを受け取り、ag3アダー系704は1段のシフトレジスタSRを経たデータを受け取る。
ag4アダー系705は、g4=1であるので、実際にはアダーは存在せず、デコーダのみの構成で、シフトレジスタを介さずデータを直接受け取る。
図8は、図7で用いられるシフトレジスタSRやクロック回路を示している。シフトレジスタSRは、クロックCLKの立ち上がりでデータ取り込み確定し、今まで保持していたデータを出力する。クロックCLKは、クロックCLK*から一定遅延をもって発生される。クロックCLK*はトリガ信号である“start”によって20サイクル発生される。
クロックCLK**はクロックCLK*のはじめの16サイクルに相当する。信号“start”は外部データ取り込みのクロックCLの16サイクルごとに発生される信号である。
各アダー系701〜705には、ゼロ元の判定を行なうゼロ判定回路711が付属している。このゼロ判定回路711により、ゼロ元の場合にはアダーの計算結果によらずアダー出力デコード部のバイナリ値をインデックスに変換するバイナリ/インデックス変換出力が“0”となるようにする。
5つのアダー出力は、バイナリ/インデックス変換回路712で再度インデックスに変換される。そして、和を求めるためにインデックスデコーダ706を経て4ビットバイナリチェッカ・ラダー707にて計算され、コードデータc19,c18,…,c2,c1,c0として、即ちGF(256)の要素のpn(x)の係数として出力される。
図9は、GF(256)の要素の係数プリデコードと、表現インデックスの17を法とした成分との対応表である。即ちこの表は、既約剰余pn(x)のインデックスnを15倍して法17の剰余類15n(17)として分類したものである。
0から16のインデックスで分類されて、各々の類には15個のnが含まれ、これらに対応するpn(x)の各次数の係数に従ってプリデコーダされた信号Ai,Bi,Ci,Diの各i(=0〜3)を示した。Aは、m=0,1に、Bは、m=2,3に、Cは、m=4,5に、Dは、m=6,7にそれぞれ対応する。
これらのAi,Bi,Ci,Diでインデックス発生のデコーダのトランジスタゲートへの信号の接続が決まる。例えばインデックス1においては並列にNOR接続されるNANDのノードはnが161,59,246,127,42,93,178,144,212,229,110,195,8,76,25に相当し、NANDのトランジスタゲートへは対応するAi,Bi,Ci,Diを接続する。回路の具体的構成は後ほど示す。
図10は、GF(256)の要素の係数プリデコードと、表現インデックスの15を法とした成分との対応表である。即ちこの表は、既約剰余pn(x)のインデックスnを17倍して法15の剰余類17n(15)として分類したものである。
0から14のインデックスで分類され、各々の類には17個のnが含まれ、これらに対応するpn(x)の各次数の係数に従ってプリデコーダされた信号Ai,Bi,Ci,Diの各i(=0〜3)を示した。Aは、m=0,1に、Bは、m=2,3に、Cは、m=4,5に、Dは、m=6,7にそれぞれ対応する。
これらのAi,Bi,Ci,Diでインデックス発生のデコーダのトランジスタゲートへの信号の接続が決まる。例えばインデックス1においては並列にNOR接続されるNANDのノードはnが173,233,203,23,83,158,188,68,38,128,143,98,53,218,8,113,248に相当し、NANDのトランジスタゲートへは対応するAi,Bi,Ci,Diを接続する。回路の具体的構成は後ほど示す。
ここで、図11を参照して、入力データの取り込みとデータをコード計算システムに渡す際のクロックなどの関係について説明する。f(x)のバイトごとのデータはクロックCLで取り込まれる。このクロックCLの16サイクルが16バイト=128ビットの情報データであり、ECCの対象となる単位データブロックである。
ECCシステムを働かせるにはこの情報データをコード化して20バイト=160ビットのコードデータを構成する必要がある。データ取り込みにギャップを生じさせないためにこの実施の形態では、内部のデータはクロックCLの倍の速さのクロックCLK*およびCLK**で動かして、蓄積された取り込みデータに対して演算処理を行なうようにする。
即ち、16CLサイクルごとにトリガ信号“start”を発生させ、これによりクロックCLK**を16サイクル、クロックCLK*を20サイクル発生させて、8CLサイクル前のデータからプリ/インデックスデコード回路700で内部データとしての表現インデックスに変換していく。
16CLK**サイクルでプリ/インデックスデコード回路700により変換した後に、4CLK*サイクルはプリ/インデックスデコード回路700は働かないので、FFが計算システムに渡される。計算システムはクロックCLK*に遅延をかけたクロックCLKで駆動する。
図12から図14は、プリ/インデックスデコード回路700の各構成要素を示している。即ち図12はプリデコード回路700aを示し、図13はインデックスデコード回路700bを示し、図14は、インデックスをバイナリに変換するインデックス/バイナリ変換回路700cを示している。
プリデコード回路700aは、既約剰余pn(x)の係数とAi,Bi,Ci,Diの対応テーブルに従って各信号を発生させる。
インデックスデコード回路700bは、信号Ak,Bk,Ck,Dkをテーブルに従ってNAND接続したものを、グループ化してNOR接続して表現インデックスの各成分をクロックCLK**に同期して発生している。
インデックス/バイナリ変換回路700cは、インデックスデコード回路700bの出力を、クロックCLK**に同期してバイナリ表示に変換する。17を法とする成分は5ビットのバイナリ、15を法とする成分は4ビットのバイナリデータとして、変換する。クロックCLK**が発生されないときはバイナリ表示のビットは全て“1”でゼロ元の表現FFになる。
図15は、図7に示す各アダー系701〜705の入力部のゼロ判定回路711の構成を示す。これは、バイナリ表示がFFである場合にゼロ元と判定して、信号ZEROiを出力する。
図16は、図7に示す各アダー系701〜705の出力部のバイナリ/インデックス変換回路712の構成である。アダーの計算結果は、バイナリ表示でのインデックスであるから、これを次段の計算で表現インデックス間の計算として利用できるように、本来のインデックスに戻すのがこの回路である。入力部のゼロ判定回路711の出力ZEROiが“1”であればこの回路はクロックCKが立たずに不活性のままで、アダーの計算結果によらず全ての表現インデックス成分を“0”とする。
図15及び図16において、i=0〜4でag0,ag1,ag2,ag3,ag4のアダー系701〜705にそれぞれ対応する。
図17は、コード計算システムのアダー(agiアダー)のなかの17を法として成分計算する部分agiアダー(17)の回路構成である。入力171,172はそれぞれ、インデックス/バイナリ変換出力(5バイナリ出力)15n(17)b0〜15n(17)b4とgiの表現インデックスの17を法とする成分の2進表示gi(17)b0〜gi(17)b4である。gi入力は固定した入力となり、giそれぞれの図に示した第1成分である。
これらの入力171,172を5ビットアダー(17)173で和演算する。出力174はバイナリ/インデックス変換回路175でデコードされて、表現インデックス成分15σagi(17)となる。
図18は、コード計算システムのアダー(agiアダー)のなかの15を法として成分計算する部分agiアダー(15)の回路構成である。入力181,182はそれぞれ、インデックス/バイナリ変換出力(4バイナリ出力)17n(15)b0〜17n(15)b3とgiの表現インデックスの15を法とする成分の2進表示gi(15)b0〜gi(15)b3である。gi入力は固定した入力となり、giそれぞれの図に示した第2成分である。
これらの入力181,182を4ビットアダー(15)183で和演算する。出力184はバイナリ/インデックス変換回路185でデコードされて、表現インデックス成分17σagi(15)となる。
図19A及び図19Bは、図17に示す5ビットアダー(17)173の具体回路例及びその回路記号を示している。これは、AmとBmを2進数で表した各桁の和をハーフアダー、フルアダーで求めて、17を法としてその剰余としての和を求める加算回路である。
図示のように、5ビットの第1段加算器1731と、その和が17以上であることを検出して桁上げする桁上げ補正回路1732と、この桁上げ補正回路1732と共に、和が17以上の場合に32に対する17の補数15(=32−17)を加えるための第2段加算器1733とを有する。
桁上げ補正回路1732は、第1段加算器1731の出力状態に応じて、信号PF0を発生するものである。具体的にいえば、第1段加算器1731の最上位ビット出力S4’が“1”でありかつ、それ以外のビット出力S0,S1’〜S3’の少なくとも一つが“1”であること、即ち和が17以上であることを検出して、信号PF0(=“H”)を発生するように構成されている。
第2段加算器1733は、第1段加算器1731の出力が17以上の場合に、17の補数(01111)を加えるというロジックが組まれている。
図20A及び図20Bは、図18に示す4ビットアダー(15)183の具体回路例及びその回路記号を示している。これは、15を法としてその剰余としての和を求める4ビット加算回路であり、図示のように、4ビットの第1段加算器1831と、その和が15以上であることを検出して桁上げする桁上げ補正回路1832と、この桁上げ補正回路1832と共に、和が15以上の場合に15の補数を加えるための第2段加算器1833とを有する。
桁上げ補正回路1832は、第1段加算器1831の出力状態に応じて、信号PF0を発生するものである。
第2段加算器1833は、第1段加算器1831の出力が15以上の場合に、15の補数1=(0001)を加えるというロジックが組まれている。
これらのアダー173,183は、クロックなどの同期が必要でなく、入力が確定すれば出力も確定するようにして、システムのタイミング制御の負担を減らす構成となっている。
図21(a)(b)及び図22(a)(b)は、以上のアダー173,183で用いられる、2進数の足し算を行なう基本的な単位であるフルアダー及びハーフアダーの回路記号と具体回路を示している。フルアダーは、加えるビットAとBをXOR回路とXNOR回路でロジック演算を行い、桁上げ信号Cinとのロジックを更に取って、出力としてA,B,Cinの和Soutと桁上げ信号Coutを出力する。ハーフアダーは一般的なロジックゲートで構成できる。
以上のデータエンコードシステム内のアダー出力は、コードデータci=g4ai−4+g3ai−3+g2ai−2+g1ai−1+g0aiを計算するために使われる。ここでの計算は有限体の要素を剰余多項式pn(x)と見てその係数の2を法としての和を求めるものである。そこで表現インデックスによって表された剰余多項式pn(x)を加えてその係数を求める方法を説明する。
図23A及び図23Bは、剰余多項式pn(x)の次数mの係数と、要素αn のインデックスnと、表現インデックス{15n(17),17n(15)}の関係を、表現インデックス成分17n(15)の値0〜14ごとのグループにまとめて示したテーブルである。各グループ内で表現インデックス成分15n(17)は0から16までが昇順に並べられている。
また、“input 15n(17)”の部分には、pn(x)の係数の和では係数が0であるところは和に寄与しないので係数が1であるときの15n(17)の値を表示している。pn(x)と表現インデックス {15n(17),17n(15)} は一対一に対応しているので、ある表現インデックスが与えられたとき多項式のpn(x)の次数mの係数の和への寄与をこの表からデコードできる。
すなわち各次数mについて、ひとつの表現インデックス成分17n(15)をゲート入力とするひとつのトランジスタの下にこの17n(15)に属するpn(x)の次数mの係数が1である15n(17)をゲート入力とするトランジスタのNOR接続を作る。そして表現インデックスがこのグループにヒットすれば電流パスが出来るようにする。このような接続を各成分17n(15)について図のテーブルから作り、共通ノードを放電するようにする。
この共通ノードがひとつの表現インデックスに対してpn(x)の次数mの係数の反転を表している。例えば、m=7は、表から、次のNOR接続を作る。
(1)17n(15)=0の下の15n(17)=2,7,10,12,14,16のNOR接続、
(2)17n(15)=1の下の15n(17)=0,2,4,5,7,9,10,11,15,16のNOR接続、
(3)17n(15)=2の下の15n(17)=3,4,5,6,10,16のNOR接続、
(4)17n(15)=3の下の15n(17)=0,1,3,6,8,9のNOR接続、
(5)17n(15)=4の下の15n(17)=0,4,5,9,11,12,14,15のNOR接続、
(6)17n(15)=5の下の15n(17)=0,2,3,6,7,9,11,15のNOR接続、
(7)17n(15)=6の下の15n(17)=0,1,4,5,8,9,10,16のNOR接続、
(8)17n(15)=7の下の15n(17)=1,3,4,5,6,8,11,12,14,15のNOR接続、
(9)17n(15)=8の下の15n(17)=2,3,4,5,6,7,12,14のNOR接続、
(10)17n(15)=9の下の15n(17)=1,2,3,4,5,6,7,8,10,11,15,16のNOR接続、
(11)17n(15)=10の下の15n(17)=0,3,6,9,10,11,12,14,15,16のNOR接続、
(12)17n(15)=11の下の15n(17)=1,2,7,8,11,15のNOR接続、
(13)17n(15)=12の下の15n(17)=1,8,10,11,12,14,15,16のNOR接続、
(14)17n(15)=13の下の15n(17)=0,1,2,4,5,7,8,9,12,14のNOR接続、及び
(15)17n(15)=14の下の15n(17)=0,1,2,3,6,7,8,9,10,12,14,16のNOR接続。
(1)17n(15)=0の下の15n(17)=2,7,10,12,14,16のNOR接続、
(2)17n(15)=1の下の15n(17)=0,2,4,5,7,9,10,11,15,16のNOR接続、
(3)17n(15)=2の下の15n(17)=3,4,5,6,10,16のNOR接続、
(4)17n(15)=3の下の15n(17)=0,1,3,6,8,9のNOR接続、
(5)17n(15)=4の下の15n(17)=0,4,5,9,11,12,14,15のNOR接続、
(6)17n(15)=5の下の15n(17)=0,2,3,6,7,9,11,15のNOR接続、
(7)17n(15)=6の下の15n(17)=0,1,4,5,8,9,10,16のNOR接続、
(8)17n(15)=7の下の15n(17)=1,3,4,5,6,8,11,12,14,15のNOR接続、
(9)17n(15)=8の下の15n(17)=2,3,4,5,6,7,12,14のNOR接続、
(10)17n(15)=9の下の15n(17)=1,2,3,4,5,6,7,8,10,11,15,16のNOR接続、
(11)17n(15)=10の下の15n(17)=0,3,6,9,10,11,12,14,15,16のNOR接続、
(12)17n(15)=11の下の15n(17)=1,2,7,8,11,15のNOR接続、
(13)17n(15)=12の下の15n(17)=1,8,10,11,12,14,15,16のNOR接続、
(14)17n(15)=13の下の15n(17)=0,1,2,4,5,7,8,9,12,14のNOR接続、及び
(15)17n(15)=14の下の15n(17)=0,1,2,3,6,7,8,9,10,12,14,16のNOR接続。
これらのNOR接続により共通ノードが放電されるか否かにより、係数1がデコードされる。例えば、{15n(17),17n(15)}={11,4}は17n(15)=4の下の15n(17)=0,4,5,9,11,12,14,15のNOR接続を介してノードが放電され、m=7次の係数が1であることがデコードされる。
なお、pn(x)のゼロ元“00000000”には15n(17)=16,17n(15)=15を対応させる。pn(x)の係数が全て“0”であることと、そのデコードがこれらの表にないこととが対応している。
図24は、上述の図23A及び図23Bのテーブルを利用して、図7に示す、ci=g4ai−4+g3ai−3+g2ai−2+g1ai−1+g0aiを計算する4ビットパリティチェッカ・ラダー707の入力インデックスデコーダ部706の構成を示している。
入力信号は、アダーag4,ag3,ag2,ag1,ag0のそれぞれの出力要素の表現インデックスであり、これらの要素毎にm次の係数に相当する共通ノードN(ag4),N(ag3),N(ag2),N(ag1),N(ag0)を有する。これらの共通ノードは、信号CLKで駆動されるPMOSトランジスタP0によりVddにプリチャージされる。
各要素の共通ノードに対して、表現インデックス成分17n(15)によりゲートが駆動されるNMOSトランジスタN11と、表現インデックス成分15n(17)によりゲートが駆動されるNMOSトランジスタN12とによりNOR回路NOR1,NOR2,NOR3,NOR4,NOR5が構成される。NMOSトランジスタN11,N12の配置が図23A及び図23Bのテーブルにより決まる。
5つの共通ノードのパリティチェックを4ビットパリティチェッカ・ラダー707で行うことにより、ciのm次の係数(ci)mが得られる。
図25は、5入力4ビットパリティチェッカ・ラダー707の構成例を示す。N(ag0)からN(ag3)の4入力は4ビットパリティチェッカPC1に入り、その出力とN(ag4)の反転入力が2ビットパリティチェッカPC2に入力される。
図26(a)(b)は、2ビットパリティチェッカPC2の回路記号と具体的な回路例である。2ビットaとbをXOR部とXNOR部でロジック演算して偶数パリティすなわち入力端子中の“1”の数が偶数のときEP=“1”を出力する。
図27(a)(b)は、4ビットパリティチェッカPC1の回路記号と具体的な回路例を示している。4ビットa,b,c,dを入力として構成要素である2ビットパリティチェッカの出力のロジックを取り、偶数個の“1”が入力にあるときEP=“1”を出力する。
(データ読み出しとエラー訂正のタイミング制御)
次に、メモリからのデータ読み出し動作のタイミング同期の関係について、図28を参照して説明する。なお、クロック名などにはメモリへのシンボルデータの書き込みまでに用いたのと同じ名称を用いることもあるが、同一の信号ではないことに注意を要する。
次に、メモリからのデータ読み出し動作のタイミング同期の関係について、図28を参照して説明する。なお、クロック名などにはメモリへのシンボルデータの書き込みまでに用いたのと同じ名称を用いることもあるが、同一の信号ではないことに注意を要する。
メモリコアから読み出したデータの格納場所として20バイトのデータレジスタ(データラッチ)を2系統準備する。これら第1及び第2のデータラッチ系をインタリーブして使用することによりデータを切れ目なく出力する。
クロックは2種ある。一つは、データの転送を行うもので、データを出力するためのクロックCLとこれと周期は同じであるがメモリからデータを読み出すために5サイクルごとにまとまって間欠的に発生されるクロックCPである。もう一つは、ECCシステムを駆動するためのクロックCLKで、これは1CLKサイクル=16CLサイクルとする。
メモリからは20バイトのデータdi(i=19〜0)が4バイトずつ5CPサイクルで読み出されて、第1のデータラッチに保持されるとともに、シンドロームの計算が行われる。このシンドロームからエラー検索とシンボルエラーが計算され、コードデータがdiを修正したci(i=19〜4)としてラッチの出力を訂正する。c3〜c0は情報データの訂正には使われない。これでECCの1CLKサイクルが終了する。
次にラッチ出力に得られたコードciを用いて情報データai(i=15〜0)をクロックCLに同期して順次計算して出力するとともに、次の20バイトのデータを第2のデータラッチに読み出す。即ち、第1及び第2のラッチ系で、一方が訂正された情報データaiを出力する動作を行っている間に、同時に他方では次の読み出しデータをラッチして、シンドローム計算、エラー検出及び訂正を行うというインタリーブ動作が行われる。
次に、メモリから読み出したデータに対してエラー位置探索とエラー訂正を行うシステムについて、以下具体的に説明する。
(シンドローム演算部)
まず図29は、シンドロームの計算システム(図3のシンドローム演算部21)の概要である。メモリから読み出す19次の多項式の係数であるシンボルデータをd19,d18,…,d2,d1,d0とする。これらにαの適当な冪を乗じて加えることでシンドロームs0,s1,s2,s3を得るのがこのシステムである。このシンドローム計算システムはエラー検索訂正のためのメインクロックCLKをトリガとして、クロック発生器2908により短い周期のクロックCPを5サイクル発生して、このクロックCPに同期して計算を行う。
まず図29は、シンドロームの計算システム(図3のシンドローム演算部21)の概要である。メモリから読み出す19次の多項式の係数であるシンボルデータをd19,d18,…,d2,d1,d0とする。これらにαの適当な冪を乗じて加えることでシンドロームs0,s1,s2,s3を得るのがこのシステムである。このシンドローム計算システムはエラー検索訂正のためのメインクロックCLKをトリガとして、クロック発生器2908により短い周期のクロックCPを5サイクル発生して、このクロックCPに同期して計算を行う。
入力部は、GF(256)の要素をpn(x)の係数として表す各4バイトのデータd19〜d16,d15〜d12,d11〜d8,d7〜d4,d3〜d0を5サイクルで受け取る。入力部は、プリデコーダ2901,インデックスデコーダ2902及びインデックス/バイナリ変換回路2903から構成される。これらの入力回路部によってデータは表現インデックスに変換されてバイナリ表示となる。またゼロ元判定も行われる。
バイナリ表示の表現インデックスに基づいて、5サイクルで4つのシンドロームを同時に計算する。即ち4バイトのデータを同時に12個の表現インデックスのアダー回路2904に入力している。勿論回路規模を小さくしたければ、1バイトずつ20サイクルで計算するアダー3つとすることができる。
4つのシンドロームに対応して4つの4ビットパリティチェッカ2905があり、各同時に扱う4つのGF(256)の和を求めている。これにより、空間ドメインでの並列パリティチェックを行っている。このパリティチェッカ2905の5サイクル分の出力のパリティチェツクを行うのが“1”の計数回路2907の部分であり、こここで4ビットパリティチェッカが“1”を出力すると“1”と“0”を交互にシフトする。これは、時間ドメインでのシリアルパリティチェックを行っていることになる。なお、1バイトずつ20サイクルで計算する場合は、空間ドメインの並列パリティチェックは不要である。
一番上のシンドロームs0の計算はαの0乗すなわち1との掛け算であるので実質的にアダー回路は必要なく、表現インデックスが直接4ビットパリティチェッカ2905に入力される。
シンドロームs1の計算以降はアダー回路2904が必要となる。シンドロームsi(i=1〜3)の計算のアダー回路2904へはデータの表現インデックスをバイナリ表示したものを入力し、また計算に必要なαの累乗の指数の表現インデックスのバイナリ表示を入力して和を求める。その結果が表現インデックスとして4ビットパリティチェッカ2905へ入力される。入力データがゼロ元のときはアダーの計算結果によらずに出力の表現インデックスをすべて“0”とする。
4ビットパリティチェッカ2905の出力はクロックCPに同期して次段の計数回路2907を駆動する信号となる。計数回路2907はクロックCLKの立ち上がりで発生されるリセットパルスRSでリセットされて新たな“1”の計数を始める。
各々の4ビットパリティチェッカ2905と計数回路2907はpn(x)の計数で要素を表すから、それぞれのシンドロームに対してm=0〜7の8つ設けられる。これにより各シンドロームがGF(256)の要素としてpn(x)となって出力される。
図30は、図29の計算システムの入力部プリデコーダ2901の構成例である。ここでは、先のpn(x)の係数とAi,Bi,Ci,Diの対応テーブル従って各信号を発生させる。
図31は、同じく入力部のインデックスデコーダ2902の構成例である。ここでは、Ak,Bk,Ck,Dkをテーブルに従ってNAND接続したものをグループ化し、NOR接続して表現インデックスの各成分をクロックCPに同期して発生している。
図32は、同じく入力部のインデックス/バイナリ変換回路2903の構成例である。ここでは、クロックCPに同期して、インデックスを5バイナリ或いは4バイナリ表示に直す。即ち17を法とするインデックス成分は5ビット、15を法とするインデックス成分は4ビットのバイナリデータとする。
図33は、インデックス/バイナリ変換回路2903に付属するゼロ判定回路の構成を示している。データがゼロ元のときはA0,B0,C0,D0が“H”であるので、それらのNANDによりzerodi=“H”を発生する。またゼロ元の場合はインデックスデコーダ回路も対応するデコードが無いためインデックスはすべて“0”となる。
図34及び図35は、シンドローム計算システムにおけるアダー回路2904の構成例を示している。
図34は、メモリから読み出したデータν(x)のk次の係数dkについてk≡j mod4となるデータが入力して、ν(αi) を計算する際に用いられる、17を法とした表現インデックスについてのアダー回路部、αidjアダー(17)である。jは0から3の4つ、iは1から3の3つでこの種類のアダーは12個ある。
一方のデータ入力341は5サイクルのクロックCPの各サイクルCP0〜CP4に同期して入力される15σd(j+4×4)(17)のバイナリ表示、15σd(j+4×3)(17)のバイナリ表示、15σd(j+4×2)(17)のバイナリ表示、15σd(j+4×1)(17)のバイナリ表示及び15σd(j+4×0)(17)のバイナリ表示である。
もう一方の入力342は、クロックCP0〜CP4で順次切り替えられて入力される、15i(j+4×4)(17)のバイナリ表示、15i(j+4×3)(17)のバイナリ表示、15i(j+4×2)(17)のバイナリ表示、15i(j+4×1)(17)のバイナリ表示及び15i(j+4×0)(17)のバイナリ表示である。この入力部の回路の詳細は後ほど説明する。
これらの入力データについて5ビットアダー(17)343で和を求める。出力344は、出力部にあるバイナリ/インデックス変換回路345(即ち2909)で表現インデックス成分15σαidj(17)に変換される。
図35は、メモリから読み出したデータν(x)のk次の係数dkについてk≡j mod 4となるデータが入力し、ν(αi) を計算する際に用いられる、15を法とした表現インデックス成分に対するアダー回路部、αidjアダー(15)である。jは0から3の4つ、iは1から3の3つであり、この種のアダーも12個ある。
一方のデータ入力351は5サイクルのクロックCPの各サイクルCP0〜CP4に同期して入力される17σd(j+4×4)(15)のバイナリ表示、17σd(j+4×3)(15)のバイナリ表示、17σd(j+4×2)(15)のバイナリ表示、17σd(j+4×1)(15)のバイナリ表示及び17σd(j+4×0)(15)のバイナリ表示である。
もう一方の入力352は、クロックCP0〜CP4で順次切り替えられて入力される、17i(j+4×4)(15)のバイナリ表示、17i(j+4×3)(15)のバイナリ表示、17i(j+4×2)(15)のバイナリ表示、17i(j+4×1)(15)のバイナリ表示及び17i(j+4×0)(15)のバイナリ表示である。この入力部の回路の詳細は後ほど説明する。
これらの入力データについて4ビットアダー(15)353で和を求める。出力354は、出力部にあるバイナリ/インデックス変換回路355(即ち2909)で表現インデックス成分17σαidj(15)に変換される。
図36は、図34或いは図35のアダー出力部に用いられるバイナリ/インデックス変換回路345,355(即ち図29の変換回路2909)としてのデコーダ回路を示す。アダーの計算結果は2進表示でのインデックスであるからこれを次の段の計算で表現インデックス間の計算として利用できるようにインデックス信号へと変換する必要がある。
ここでは、クロックCPに同期したクロックCKでプリチャージされたノードを、バイナリ表示をデコードしたNANDロジックで放電して、インデックスとする。アダーへのデータ入力がゼロ元である場合は、信号zerodiによりクロックCKは“L”のままでインデックスもすべて“0”となる。
図37は、上述したαidjアダーのαのインデックス入力部の構成を示す。α の指数で表したGF(256)の要素は、後に説明するように、その冪の要素が表現インデックスの成分の変換から得られることを利用して、クロックCPのサイクルごとにインデックスの接続換えを行うことで、ν(x)にαi を代入した際の項xmの代入結果としてのインデックスを得ている。
具体的には、αidjアダーではクロックCPの最初のサイクルCP0ではインデックスi(j+16)の表現インデックス成分、CP1ではインデックスi(j+12)の表現インデックス成分、CP2ではインデックスi(j+8)の表現インデックス成分、CP3ではインデックスi(j+4)の表現インデックス成分、CP4ではインデックスijの表現インデックス成分が必要である。これらの配線の接続換えをクロックCPに同期して行うのがインデックスMUX371,372である。
これらのインデックスMUXから出てきた表現インデックス成分15i(j+4p)(17)と17i(j+4p)(15)(但し、p=4〜0)はインデックス/バイナリ変換回路373でインデックス成分の2進数表示に変換されてアダーに供給される。
次に、nの倍数についてその表現インデックスと剰余類がどの様に変換するかを説明する。αnのインデックスnに対応する表現インデックスは、mod 17とmod 15のペアとして{15n(17),17n(15)}で表す。本システムは次の3つの場合(a),(b),(c)がある。なお、15n(17)=σ17、17n(15)=σ15とする。
(a)nの表現インデックスσ17,σ15から法15と互いに素である数mの倍数mnの表現インデックスを求める。17は素数なので、どのようなmとも互いに素である。
nをm倍してもmが法と互いに素であるので、合同式の両辺を法を変えずにmで割ることが出来る。従って剰余類自体は変わらず含まれる要素の構成に変わりはない。表現インデックスはm倍され、{σ17(mod 17),σ15(mod 15)}から{mσ17(mod 17),mσ15(mod 15)}となる。
(b)法17は素数であるので因数を持たないが、法15は3や5を因数として持つ。このときσ15から法15の因数である数mの倍数mnの表現インデックスを求める。
mnとmn’が同じ剰余類に属するなら、17m(n−n’)≡0(mod 15)である。mが15の因数であるので合同式の両辺を割るときには法もその絶対値で割られてn≡n' (mod 15/|m|)であるから、15/|m|だけ差がある剰余類の要素は同じ剰余類の要素と見なされ、今まで分離していた剰余類が結合して新たな大きな剰余類となる。表現インデックスはこれらの結合によって同一の表現インデックスを持つように変換される。
例えばm=−3の場合はn≡n' (mod 5)となり、法15での剰余類3つが結合して15個の剰余類が5つの剰余類にまとまる。
表現インデックスの変換計算自体は(a)の場合と同じである。
(c)nの表現インデックスから法15と互いに素である数mのm分の1のn/mの表現インデックスを求める。
nをm分の1倍してもmが法と互いに素であるので合同式の両辺にmを掛けることが出来る。従って剰余類自体は変わらず含まれる要素の構成に変わりはない。表現インデックスは変換される表現インデックスに法の適当な倍数を加えてmを因数としてもつ数に変換し(法とmが互いに素なので可能)、これをmで割って法の剰余として得られる。
例えばm=2のとき、σ17が偶数なら、b17=σ17/2なる整数b17があり、奇数ならb17=(σ17+17)/2なる整数b17がある。同様に、σ15が偶数なら、b15=σ15/2なる整数b15があり、奇数ならb15=(σ15+15)/2なる整数b17がある。従って、{b17(mod 17),b15(mod 15)}なる表現インデックスが得られる。
図38は、表現インデックス間の関係の例として、nの表現インデックス{15n(17),17n(15)}の成分インデックスがnのm倍の変換後にとる値を欄×m(m=−1,2,−2,3,−3,1/2)の表にした。この変換を組みあわて本システムで必要な表現インデックスは全て得られる。
例えば表現インデックス{3、8}の−3/2倍の変換をする。最初の表現インデックス成分は15n(17)=3であるので、×(−3)の欄から8になり、これを新たに15n(17)と見なして×1/2の欄から4となる。
2番目の表現インデックス成分は17n(15)=8であるので、×(−3)の欄から6になり、これを新たに17n(15)と見なして×1/2の欄から3になる。これにより、{3,8}は、×(−3/2)で{4,3}に変換される。
この変換過程は、最初に×1/2を求め、次に×(−3)を求めても、結果は同じである。
次に、図39は、αidjアダーで用いられるαn の表現インデックスの成分の関係としてν(x)に代入されるα1,α2 ,α3 に対してj=0,1,2,3のアダーで使用される×(j+4p)(但し、p=4,3,2,1,0)の表現インデックスの値をテーブルにした。このテーブルに従って先のインデックスMUXでのクロックCPに同期したインデックス信号の切り替えを行う。
図40は、ν(α0)についてのシンドローム計算のアダー出力の和を求める4ビットパリティチェッカ2905の入力部のインデックスデコーダ2906の構成例である。ν(α0) ではアダーはなくデータ入力部のデコーダから直接データの表現インデックスを
受け取る。
受け取る。
入力信号はデータ要素d(3+4k),d(2+4k),d(1+4k),d(0+4k)であり、k=4,3,2,1,0がクロックCPの5サイクルに同期して表現インデックスとしてインデックスデコード部2906に入力される。入力のデータ要素ごとに和のpn(x)のm次の係数に相当するノードND0〜ND3を持ち、このノードを信号CPで駆動されるPMOSトランジスタP0により予めプリチャージしておく。
各要素の共通ノードに対して、表現インデックス成分17σdn(15)によりゲートが駆動されるNMOSトランジスタN11と、表現インデックス成分15σdn(17)によりゲートが駆動されるNMOSトランジスタN12とによりNOR回路NOR1,NOR2,NOR3,NOR4が構成される。NMOSトランジスタN11,N12の配置がGF(256)の要素の係数と表現インデックスの対応表から決まる。各mについて各要素からの4つのノードND0〜ND3のパリティチェックを4ビットパリティチェッカ2905で行うことにより、ν(α0) の5分の1の多項式の部分和のm次の係数CK0
が得られる。
が得られる。
ちなみに、偶数個の入力を持つパリティチェッカの入力は全入力が反転されていても出力は変わらないので、入力デコードがノードの放電であるロジックが作りやすい反転入力としている。4ビットパリティチェッカ2905の出力はクロックCPに同期して反転され出力される。
図41は、ν(αi)(i=1,2,3)についてのシンドローム計算のアダー出力の和を求める4ビットパリティチェッカ2905の入力部のインデックスデコーダ2906の構成例である。この場合、アダーからの出力の表現インデックスを入力信号として受け取る。
入力信号は要素αid3,αid2,αid1,αid0で、クロックCPの5サイクルに同期して表現インデックスとしてデコーダ部2906に入力される。入力のデータ要素ごとに和のpn(x)のm次の係数に相当するノードND0〜ND3を持ち、このノードを信号CPで駆動されるPMOSトランジスタP0により予めプリチャージしておく。
各要素の共通ノードに対して、表現インデックス成分17σαidi(15)によりゲートが駆動されるNMOSトランジスタN11と、表現インデックス成分15σαidi(17)によりゲートが駆動されるNMOSトランジスタN12とによりNOR回路NOR1,NOR2,NOR3,NOR4が構成される。このトランジスタゲートへの接続はGF(256)の要素の係数と表現インデックスの対応表から決まる。
各mについて各要素からの4つのノードのパリティチェックを4ビットパリティチェッカ2905で行い、ν(αi) の5分の1の多項式の部分和のm次の係数CKimが得られる。
(エラー検索の第1段階アダー回路部)
次に、シンドローム計算後のエラー検索の最初の段階である、シンドロームの積や商を計算する部分、即ち図3のアダー回路22,23,24,25及び29の部分の説明をする。まず、S0S2,S0S3,S1S2及びS1S3の積計算を行う最初の4つのアダー22,23,24及び25の部分を、まとめて、“SmSnアダー”として説明する。
次に、シンドローム計算後のエラー検索の最初の段階である、シンドロームの積や商を計算する部分、即ち図3のアダー回路22,23,24,25及び29の部分の説明をする。まず、S0S2,S0S3,S1S2及びS1S3の積計算を行う最初の4つのアダー22,23,24及び25の部分を、まとめて、“SmSnアダー”として説明する。
シンドローム計算システムのシリアルパリティチェッカからの出力S0,S1,S2,S3は7次の多項式として得られ、GF(256)の要素であるpn(x)のいずれかに一致している。そこで多項式をm1(x)の根αのインデックスをmod17,mod15によって表した表現インデックスに変換して、以後の計算で利用する。
即ち、SmSnアダーの入力部に、この変換を行なうために設けられるデコード回路が、図42に示すプリデコード回路及び図43に示すインデックスデコード回路である。
図42のプリデコード回路は、8ビットのpn(x)の係数の表す256のバイナリ信号状態を信号Ai,Bi,Ci,Di(i=0〜3)の組合せとして表す変換回路であり、NAND回路で構成される。8ビットのバイナリ信号を2ビットずつ下位から区切り、4進数としてそれぞれ表して、これらをAi,Bi,Ci,Diとしている。
S0,S1,S2,S3を表す多項式の項の係数の次数m=0,1がAi、m=2,3がBi、m=4,5がCi、m=6,7がDiに変換される。このプリデコードにり、次段のインデックスデコード回路の構成ユニットのトランジスタ数を8から4に削減できる。
図43のインデックスデコード回路は、17σ3 decode,15σ3 decode,17σ2decode,15σ2 decode,17σ1 decode,15σ1 decod,17σ0decode及び15σ0 decodeの8回路あり、構成は同じで入力信号が異なるのみである。
これらのデコード回路では、プリデコードされた信号を剰余類のグループに分けてそのインデックスを出力する。信号Ak,Bk,Ck,Dkを剰余類の各要素を表すデコードのNAND接続とこれら要素の集合を表すこれらのNOR接続で結合して、クロックCLK*でプリチャージされたノードを放電し、さらに反転して剰余類のインデックス信号を出力している。剰余類の数だけこの回路は必要である。
mod17及びmod15に対してこれらのインデックスをつくり、これらのペアとして表現インデックスとする。なおクロックCLK*はクロックCLKからシンドローム計算が終了したころに遅延して発生されるクロックである。
pn(x)=0の場合はαの指数で表現できず、表現インデックスは求まらない。後にこの状態を示す信号が必要になる場合のために、図44に示すゼロデコード回路が状態信号発生回路としてが設けられる。
具体的には、S3=0 decode,S2=0 decode,S1=0 decode,S0=0 decodeのように、A0=B0=C0=D0=“1”で信号(S3=0),(S2=0),(S1=0),(S0=0)をそれぞれ発生する。
図45は、シンドローム多項式からシンドロームS0,S1,S2,S3の表現インデックスに変換し、これらの−1乗,2乗の表現インデックスを×(−1),×2の変換で求める回路ブロックを示す。これらの要素は後のアダーでの計算で必要になる。
図45のデコード部451,452は、それぞれ先に示したプリデコード回路とインデックスデコード回路によって、各シンドロームS0,S1,S2,S3の表現インデックス{15σ0(17),17σ0(15)},{15σ1(17),17σ1(15)},15σ2(17),17σ2(15)},{15σ3(17),17σ3(15)}のインデックス成分を発生させる。
これらの表現インデックスのインデックス成分を、先の表現インデックス間の関係例の変換テーブルに従ってマルチプレクサ回路453,454で変換して、このあとのアダー回路での計算に利用する。マルチプレクサ回路453,454はインデックス間の対応関係に従って信号を配信するだけの分岐回路である。
図46は、SmSnの17を法とする表現インデックスを計算するSmSnアダー(17)の構成である。即ち数19〜数22に示した、二つの分離した合同式の一方、mod17の右辺の演算を行うアダーである。実際にアダーがあるのは、(m,n)=(0,1),(0,3),(1,2),(1,3)である。
入力461,462はそれぞれ表現インデックス成分15σm(17) と15σn(17) である。これらを5ビットアダー(17)465で加えるために、インデックスをインデックス/バイナリ変換回路463,464により2進数表示に変換する。そして加算結果を、バイナリ/インデックス変換回路466によりインデックスに戻して、出力467として、表現インデックス成分15σmn(17)を出力する。
図47は、数19〜数22におけるもう一つの合同式であるmod15の合同式の右辺の演算を行う、SmSnアダー(15)である。実際にアダーがあるのは、(m,n)=(0,1),(0,3),(1,2),(1,3)である。
入力471,472はそれぞれ表現インデックス成分17σm(15) と17σn(15) である。これらを4ビットアダー(15)475で加えるために、インデックスをインデックス/バイナリ変換回路473,474により2進数表示に変換する。そして加算結果を、バイナリ/インデックス変換回路476によりインデックスに戻して、出力477として、表現インデックス成分17σmn(15)を出力する。
図48は、図3のアダー回路29のなかの有限体要素S1/S0の17を法とする表現インデックスを計算するS1/S0アダー(17)、即ち15σx≡15σ1−15σ0(mod 17)の右辺の演算を行うアダーである。入力481,482は表現インデックス成分15σ0(17) に×(−1)変換を行った、−15σ1(17)と−15σ0(17)である。
これらを5ビットアダー(17)485で加えるために、インデックス/バイナリ変換回路483,484でバイナリ値に変換する。そして、17を法とした剰余として計算した後、その出力をバイナリ/インデックス変換回路486により再度インデックスに変換して、出力487として、表現インデックス成分15σx(17) を得る。
図49は、図3のアダー回路29のなかの有限体要素S1/S0の15を法とする表現インデックスを計算するS1/S0アダー(15)、即ち17σx≡17σ1−17σ0(mod 15)の右辺の演算を行うアダーである。入力491,492は表現インデックス成分17σ0(15) に×(−1)変換を行った、−17σ1(15)と−17σ0(15)である。
これらを4ビットアダー(15)495で加えるために、インデックス/バイナリ変換回路493,494でバイナリ値に変換する。そして、15を法とした剰余として計算した後、その出力をバイナリ/インデックス変換回路496により再度インデックスに変換して、出力497として、表現インデックス成分17σx(15) を得る。
(エラー検索の第1段階パリティチェック部)
次に、エラー検索で使用する第1段階パリティチェック部、即ち図3のパリティチェッカ26,27及び28の部分を説明する。これらはそれぞれ、A=S0S2+S1 2,B=S0S3+S1S2及びC=S1S3+S2 2を計算する部分である。
次に、エラー検索で使用する第1段階パリティチェック部、即ち図3のパリティチェッカ26,27及び28の部分を説明する。これらはそれぞれ、A=S0S2+S1 2,B=S0S3+S1S2及びC=S1S3+S2 2を計算する部分である。
図50は、図3のパリティチェッカ26,28の構成であり、A=S0S2+S1 2及びC=S1S3+S2 2を計算するパリティチェッカ501とその入力デコード部502の構成である。
入力信号はAに関しては要素S0S2とS1 2、 Cに関しては要素S1S3とS2 2のそれぞれの表現インデックスであり、これらの要素ごとにm次の係数に相当するノードND1,ND2を持ちこのノードを信号CLK*でプリチャージしておく。各要素のm次のノードの表現インデックス信号のトランジスタゲートへの接続は先のGF(256)の要素の係数と表現インデックスの対応表から決まる。
各mについて各要素からの2つのノードND1,ND2のパリティチェックを2ビットパリティチェッカ501で行うことにより、AとCのm次の係数(A)mと(C)mが得られる。ちなみにパリティチェッカ501の入力は全入力が反転されていても出力は変わらないので入力デコードがノードの放電であるのでロジックが作りやすい反転入力とした。
図51は、図3のパリティチェッカ27の構成であり、B=S0S3+S1S2を計算するパリティチェッカ511とその入力デコード部512である。
入力信号は要素S0S3とS1S2のそれぞれの表現インデックスであり、これらの要素ごとにm次の係数に相当するノードND1,ND2を持ちこのノードを信号CLK*でプリチャージしておく。各要素のm次のノードの表現インデックス信号のトランジスタゲートへの接続は先のGF(256)の要素の係数と表現インデックスの対応表から決まる。
各mについて各要素からの2つのノードND1,ND2のパリティチェックを2ビットパリティチェッカ511で行うことにより、Bのm次の係数(B)mが得られる。
A,B,Cは7次の多項式として得られ、GF(256)の要素であるpn(x)のいずれかに一致している。そこで多項式をm1(x)の根αのインデックスmod17,mod15によって表した表現インデックスに変換して以後の計算で利用する。この変換を行なうデコード回路部を、図52〜図54に示す。
図52のプリデコード回路は、8ビットのpn(x)の係数の表す256のバイナリ信号状態を信号Ai,Bi,Ci,Di(i=0〜3) の組合せとして表す変換回路でありNAND回路で構成される。8ビットのバイナリ信号を2ビットずつ下位から区切り4進数としてそれぞれ表して、これらをAi,Bi,Ci,Diとしている。
A,B,Cの次数m=0,1がAi、m=2,3がBi、m=4,5がCi、m=6,7がDiに変換される。このプリデコードにより、図53に示す次段のインデックスデコード回路の構成ユニットのトランジスタ数を8から4に削減できる。
図53のインデックスデコード回路は、17σA decode、15σA decode、17σBdecode、15σB decode、 17σC decode、15σC decodeの6種あり、入力信号が異なるのみである。これにより、プリデコードされた信号を剰余類のグループに分けてそのインデックスを出力するようになっている。
即ち信号Ai,Bi,Ci,Diを剰余類の各要素を表すデコードのNAND接続とこれら要素の集合を表すNOR接続で結合し、クロックCLK*でプリチャージされたノードを放電してさらに反転して剰余類のインデックス信号を出力する。剰余類の数だけこの回路は必要である。mod17,mod15に対してこれらのインデックスをつくりこれらのペアとして表現インデックスとする。
pn(x)=0の場合はαの指数で表現できず、表現インデックスが求まらないので、後でこの状態が必要になる場合のためにこの状態を示す信号を発生する。そのために、図54のゼロデコード回路が用意されている。具体的にはA=0 decode、B=0 decodeとして、A0=B0=C0=D0=“1”で信号(A=0),(B=0)をそれぞれ発生する。
(エラー検索の第2段階アダー回路部)
図3のエラー検索の第2段階アダー回路30,31の部分の構成を説明する。これらでは、パリティチェッカ26〜28により得られたA,B,Cを用いて、積ACとa=B/Aの計算を行なう。
図3のエラー検索の第2段階アダー回路30,31の部分の構成を説明する。これらでは、パリティチェッカ26〜28により得られたA,B,Cを用いて、積ACとa=B/Aの計算を行なう。
図55は、図3のアダー回路30の一つ、有限体要素ACの17を法とする表現インデックスを計算するACアダー(17)である。入力551,552は表現インデックス成分15σA(17) と15σC(17) である。これらを5ビットアダー(17)555で加えるために、インデックスを2進表示に変換するインデックス/バイナリ変換回路553,554を通す。
これにより、アダー555で17を法とした剰余とした計算を行い、その出力をバイナリ/インデックス変換回路556で再度インデックスに変換して、出力557として、表現インデックス成分15σAC(17) を得る。
図56は、図3のアダー回路30のもう一つ、有限体要素ACの15を法とする表現インデックスを計算するACアダー(15)である。入力561,562は表現インデックス成分17σA(15) と17σC(15) である。これらを4ビットアダー(15)565で加えるために、インデックスを2進表示に変換するインデックス/バイナリ変換回路563,564を通す。
これにより、アダー565で15を法とした剰余とした計算を行い、その出力をバイナリ/インデックス変換回路566で再度インデックスに変換して、出力567として、表現インデックス成分17σAC(15) を得る。
図57は、図3のアダー回路31の一つ、有限体要素a=B/Aの17を法とする表現インデックスを計算するaアダー(17)である。一方の入力571は表現インデックス成分15σB(17)であり、 他方の入力572は15σA(17)からマルチプレクサ573により×(−1)変換された−15σA(17) である。
これらを5ビットアダー(17)576で加えるために、インデックスを2進数表示に変換するインデックス/バイナリ変換回路574,575を通す。これにより、アダー576で17を法とした剰余とした計算を行い、その出力をバイナリ/インデックス変換回路577で再度インデックスに変換して、出力578として、表現インデックス成分15σa(17) を得る。
図58は、図3のアダー回路31のもう一つ、有限体要素a=B/Aの15を法とする表現インデックスを計算するaアダー(15)である。一方の入力581は表現インデックス成分17σB(15)であり、 他方の入力582は17σA(15)からマルチプレクサ583により×(−1)変換された−17σA(15) である。
これらを4ビットアダー(15)586で加えるために、インデックスを2進表示に変換するインデックス/バイナリ変換回路584,585を通す。これにより、アダー586で15を法とした剰余とした計算を行い、その出力をバイナリ/インデックス変換回路587で再度インデックスに変換して、出力588として、表現インデックス成分17σa(15) を得る。
(エラー検索の第3段階アダー回路部)
次に、図3のエラー検索の第2段階アダー回路32,33の部分の構成を説明する。これらでは、D=AC/B2とS1/aの計算を行なう。
次に、図3のエラー検索の第2段階アダー回路32,33の部分の構成を説明する。これらでは、D=AC/B2とS1/aの計算を行なう。
図59は、アダー回路32の一つ、有限体要素D=AC/B2の17を法とする表現インデックスを計算するDアダー(17)である。一方の入力591は表現インデックス成分15σAC(17)であり、もう一方の入力592は、15σB(17)をマルチプレクサ593によって×(−2)変換した−30σB(17) である。
これらを5ビットアダー(17)596で加えるために、インデックス/バイナリ変換回路594,595によりインデックスを2進表示に変換する。アダー596の計算結果を、バイナリ/インデックス変換回路597で再度インデックスに変換して、出力598として、表現インデックスの成分15σD(17)を得る。
図60は、アダー回路32のもう一つである、有限体要素D=AC/B2の15を法とする表現インデックスを計算するDアダー(15)である。一方の入力601は表現インデックス成分17σAC(15)であり、もう一方の入力602は、17σB(15)をマルチプレクサ603によって×(−2)変換した−34σB(15) である。
これらを4ビットアダー(15)606で加えるために、インデックス/バイナリ変換回路604,605によりインデックスを2進表示に変換する。アダー606の計算結果を、バイナリ/インデックス変換回路607で再度インデックスに変換して、出力608として、表現インデックスの成分17σD(15)を得る。
図61は、アダー回路33の一つ、有限体要素S1/aの17を法とする表現インデックスを計算するS1/aアダー(17)である。一方の入力611は表現インデックス成分15σ1(17)であり、もう一方の入力612は、15σa(17)をマルチプレクサ613によって×(−1)変換した−15σa(17) である。
これらを5ビットアダー(17)616で加えるために、インデックス/バイナリ変換回路614,615によりインデックスを2進表示に変換する。アダー616の計算結果を、バイナリ/インデックス変換回路617で再度インデックスに変換して、出力617として、表現インデックスの成分15σS1/a(17)を得る。
図62は、アダー回路33のもう一つである、有限体要素S1/aの15を法とする表現インデックスを計算するS1/aアダー(15)である。一方の入力621は表現インデックス成分17σ1(15)であり、もう一方の入力622は、17σa(15)をマルチプレクサ623によって×(−1)変換した−17σa(15) である。
これらを4ビットアダー(15)626で加えるために、インデックス/バイナリ変換回路624,625によりインデックスを2進表示に変換する。アダー626の計算結果を、バイナリ/インデックス変換回路627で再度インデックスに変換して、出力628として、表現インデックスの成分17σS1/a(15)を得る。
(エラー検索の最終段階アダー回路部)
次に、エラー探索の最終段階アダー回路34,35の説明を行う。アダー回路34は、二つのシンボルエラーの位置nを求めるものであり、アダー回路35はシンボルエラーを訂正するための演算に必要なS0yを計算する部分である。
次に、エラー探索の最終段階アダー回路34,35の説明を行う。アダー回路34は、二つのシンボルエラーの位置nを求めるものであり、アダー回路35はシンボルエラーを訂正するための演算に必要なS0yを計算する部分である。
2エラーについてエラー位置の検索を行なうには、y2+y=Dを解くが、y2+yのインデックスをykとし、yのインデックスをkとすれば、kとykの関係α2k+αk=αykが決まる。
図63は、アダー回路入力部のデコーダを構成するための、インデックスkとykの対応関係をまとめたテーブルである。kの順にykを並べたものと、ykの順にkを並べたものを併せて示した。k=0の場合を除いて同一のykに二つのkが対応することを示している。k=0はykがゼロ元対応していて1ビットエラーに対応する。またykの値が全ての255の剰余にわたっていないことが分かる。対応するykがない場合には2エラーではない。
図64は、2つのエラーがある場合に、ykの表現インデックス{15yk(17),17yk(15)}とkの表現インデックス成分15k(17)の間の関係を示したテーブルである。デコードの際のバス構成との関係も併せて示している。
テーブルは、15k(17)の値ごとにまとめてグループとしている。D=y2+yからαD≡yk(255)の計算で得られたykの表現インデックスに対して、このテーブルからデコーダを作ると、kの表現インデックス成分15k(17)が求まる。但し同じykが2つのkに対応するので、デコードの出力を2つに分けてkごとにデータ出力データがバスでぶつからないように、2つのバスbs1,bs2を設けている。
例えば、yk=17にはk=119,153が対応するので、k=119はバスbs1に、k=153はバスbs2に、というようにバスを分ける。
実際のデコードで利用されるのは表現インデックスであり、ykの各表現インデックスに対して各バスbs1,bs2に出力されるkの表現インデックス成分15k(17)の値を対応させる。表現インデックス間に対応がない場合は2エラーではない。
図65は、2つのエラーがある場合に、ykの表現インデックス{15yk(17),17yk(15)}とkの表現インデックス成分17k(15)の間の関係を示したテーブルである。デコードの際のバス構成との関係も併せて示している。
テーブルは、17k(15)の値ごとにまとめてグループとしている。D=y2+yからαD≡yk(255)の計算で得られたykの表現インデックスに対して、このテーブルからデコーダを作ると、kの表現インデックス成分17k(15)が求まる。但し同じykが2つのkに対応するので、デコードの出力を2つに分けてkごとにデータ出力データがバスでぶつからないように、2つのバスbs1,bs2を設けている。
例えば、yk=17にはk=119,153が対応するので、k=119はバスbs1に、k=153はバスbs2に、というようにバスを分ける。
実際のデコードで利用されるのは表現インデックスであり、ykの各表現インデックスに対して各バスbs1,bs2に出力されるkの表現インデックス成分17k(15)の値を対応させる。表現インデックス間に対応がない場合は2エラーではない。
図66は、アダー回路34の一つ、即ち2つのエラー位置yを上述のインデックスの対応表によるデコードで求めて、実際のエラー位置の有限体要素x=ayを求めるために17を法とする表現インデックス成分である15n(17)を計算するayアダー(17)である。
一方の入力661は表現インデックス成分15σa(17)である。もう一方の入力660は、ykの表現インデックスを先のテーブルによって構成されたデコーダ662で対応付けした表現インデックス成分15k(17)である。
15σa(17)についてはインデックス/バイナリ変換回路663により2進表示に変換し、15k(17)は2つのエラーのそれぞれに対応した2つの5ビットアダー(17)665a,665bで加えるために、インデックス/バイナリ変換回路664によりを2進数表示に変換してバス(bs1,bs2)666に出力する。
バイナリ値に変換された入力を各アダー665a,665bで17を法とした剰余として計算し、その出力をバイナリ/インデックス変換回路667a,667bで再度インデックスに戻して、それぞれ出力バス(bus1,bus2)669に、表現インデックス成分15n(17)として出力する。
図67は、アダー回路34のもう一つ、即ち2つのエラーyを上述のインデックスの対応表によるデコードで求めて、実際のエラー位置の有限体要素x=ayを求めるために15を法とする表現インデックス成分である17n(15)を計算するayアダー(15)である。
一方の入力671は表現インデックス成分17σa(15)である。もう一方の入力670は、ykの表現インデックスを先の表によって構成されたデコーダ672で対応付けした表現インデックス成分17k(15)である。17σa(15)についてはインデックス/バイナリ変換回路673により2進表示に変換し、17k(15)は2つのエラーのそれぞれに対応した2つの5ビットアダー(17)675a,675bで加えるために、インデックス/バイナリ変換回路674によりを2進表示に変換してバス(bs1,bs2)676にそれぞれ出力する。
バイナリ値に変換された入力を各アダー675a,675bで15を法とした剰余として計算し、その出力をバイナリ/インデックス変換回路677a,677bで再度インデックスに戻して、出力バス(bus1,bus2)679に表現インデックス成分17n(15)として出力する。
図68は、図66及び図67で用いるデコーダ662,672の構成である。これらは、ykの表現インデックスから対応するkの表現インデックスに変換するもので、yk(17)デコード回路,yk(15)デコード回路である。ひとつのykに2つのkが対応しているので、バスbs1,bs2にそれぞれkの表現インデックスを出力する。
ykの表現インデックス成分15yk(17),17yk(15)をゲート入力とするNAND接続によってこれらの表現インデックスを区別する。先の対応表テーブルに従って同じkの表現インデックス成分に対応するグループごとにNOR接続で結合して、CLK*でプリチャージされたノードを放電し、さらに反転してkの表現インデックス成分15k(17),17k(15)をバスごとに発生する。
図69は、表現インデックスの和をアダーで計算できるように2進数表示にする変換回路であり、これは以前に説明したものと同じである。
図70は、ykに対応するkが存在しないか、或いは1つ乃至2つのエラーとして解が求まらない場合に、“no index”信号を発生するためのデコーダである。インデックス間の対応がなければインデックス/バイナリ変換回路の出力が全ビット“1”となるので、この状態を検出するNAND回路で構成される。
バスbs1,bs2には必ず同時に信号が発生するので、このデコーダは一方のバスbs1のみの状態のみをモニターしていれば十分である。
図71は、アダー665a,665b,675a,675bの出力部に用いられるバイナリ/インデックス変換回路667a,667b,677a,677bの構成を示す。アダーの計算結果は2進表示でのインデックスであるからこれを次の段の計算で表現インデックス間の計算として利用できるようにインデックス信号へと再変換するのが、これらの回路である。
入力で“no index”信号が発生されたときはこの変換回路はアクティブにならず、アダーの結果によらず全てのインデックスを“0”として出力する。
図72は、図3のアダー回路35の一つ、即ちエラーシンボルの修正で必要となる有限体要素S0yの17を法とする表現インデックスを計算するS0yアダー(17)である。
一方の入力721はエラー位置探索のアダー計算で用いた入力部デコーダ662の出力である表現インデックス成分15k(17)の2進数表示であり、もう一方の入力722は、表現インデックス成分15σ0(17) である。後者については、インデックス/バイナリ変換回路723によりインデックスを2進表示に変換する。15k(17)は2つのエラーのそれぞれに対応した2つの5ビットアダー(17)724,725で加えるために、バス(bs1,bs2)721にそれぞれ出ている。
これらのアダー724,725で17を法とした剰余として計算し、その出力をバイナリ/インデックス変換回路726,727でインデックスに戻して、出力バス(bus1,bus2)728に表現インデックス成分15σS0y(17)を求めてそれぞれ出力する。
図73は、図3のアダー回路35のもう一つ、即ちエラーシンボルの修正で必要となる有限体要素S0yの15を法とする表現インデックスを計算するS0yアダー(15)である。
一方の入力731はエラー位置探索のアダー計算で用いた入力部デコーダ672の出力である表現インデックス成分17k(15)の2進表示であり、もう一方の入力732は、表現インデックス成分17σ0(15) である。後者については、インデックス/バイナリ変換回路733によりインデックスを2進表示に変換する。17k(15)は2つのエラーのそれぞれに対応した2つの4ビットアダー(15)734,735で加えるために、バス(bs1,bs2)731にそれぞれ出ている。
これらのアダー734,735で15を法とした剰余として計算し、その出力をバイナリ/インデックス変換回路736,737でインデックスに戻して、出力バス(bus1,bus2)738に表現インデックス成分17σS0y(15)を求めてそれぞれ出力する。
(シンボルエラー計算のパリティチェック部)
図74は、図3におけるパリティチェッカ36即ち、エラー位置のシンボルを修正するためのシンボルエラーEnを計算するための2ビットパリティチェッカ741とその入力デコーダ部742の回路構成である。シンボルエラーはEn=Soy+S1/aと表されるので、アダーによって得られている要素SoyとS1/aとの和を2ビットパリティチェッカ741で計算する。この計算はバスbus1,bus2でそれぞれ行なう。
図74は、図3におけるパリティチェッカ36即ち、エラー位置のシンボルを修正するためのシンボルエラーEnを計算するための2ビットパリティチェッカ741とその入力デコーダ部742の回路構成である。シンボルエラーはEn=Soy+S1/aと表されるので、アダーによって得られている要素SoyとS1/aとの和を2ビットパリティチェッカ741で計算する。この計算はバスbus1,bus2でそれぞれ行なう。
パリティチェッカの入力信号は要素S0yとS1/aのそれぞれの表現インデックスであり、これらの要素ごとにm次の係数に相当するノードND1,ND2を持ち、このノードを信号CLK*でプリチャージしておく。各要素のm次のノードの表現インデックス信号のトランジスタゲートへの接続は先のGF(256)の要素の係数と表現インデックスの対応テーブル表から決まる。
各mについて各要素からの2つのノードND1,ND2のパリティチェックを2 ビットパリティチェッカ741で行うことにより、m次の係数(En)mが得られる。
(エラー信号発生回路)
図75は、2エラーの場合の、各出力バスbus1,bus2ごとに得られたエラー位置nの表現インデックス15n(17),17n(15)を用いてエラー位置にエラー信号を発生する回路(エラー位置デコーダ)である。各バスのnの表現インデックス成分のNAND接続をつくりこれらの表現インデックスを選択できるようにする。
図75は、2エラーの場合の、各出力バスbus1,bus2ごとに得られたエラー位置nの表現インデックス15n(17),17n(15)を用いてエラー位置にエラー信号を発生する回路(エラー位置デコーダ)である。各バスのnの表現インデックス成分のNAND接続をつくりこれらの表現インデックスを選択できるようにする。
ビット位置iでエラーが発生したことを示す信号n=i(i=0〜19)を発生するためにバスbus1,bus2の表現インデックスをNOR接続で結合し、クロックCLK*でプリチャージされたノードN0,…,Ni,…,N19を選択的に放電させる。更にそのノードの状態を反転して出力信号とする。
図76は、1エラーの場合のエラー位置デコーダである。この場合エラー位置は、要素S1/S0でありインデックスは、σxで表される。その表現インデックス15σx(17),17σx(15)を用いてエラー位置に信号を発生する。
ビット位置iでエラーが発生したことを示す信号σx=i(i=0〜19)を発生するために、表現インデックス15σx(17),17σx(15)のNAND接続をつくり、クロックCLK*でプリチャージされたノードN0’,…,Ni’,…,N19’を選択的に放電させる。更にそのノード状態を反転して出力信号とする。
図77は、図75の2エラーの場合のエラー位置デコーダと、図76の1エラーの場合のエラー位置デコーダとを結合したエラー位置デコーダである。エラー位置計算システムでは、2エラーであることを示す信号2C、1エラーであることを示す信号1ECが発生されるので、これらにより切り換えられるように二つのエラー位置デコーダが結合されている。
なおここで、i=0〜19の全てのエラー位置は必要ではなく、後に説明するように情報データを計算するには、i=4から19までが用いられるので、エラー位置デコーダの数も16個でよい。
(エラー状態検出回路)
図78(a)〜(d)は、エラー状態検出用ゲート回路をまとめて示している。
図78(a)〜(d)は、エラー状態検出用ゲート回路をまとめて示している。
図78(a)は、信号(S0=0), (S1=0), (S2=0), (S3=0)の全てが“1”の場合にno error信号を発生するゲート回路41である。
図78(b)は、ノーエラーではなく(no error=“0”)、1エラーでもなく(1EC=“0”)、2エラーでもない(2C=“0”)場合に、エラーが3以上であって訂正不可能であることを示すnon−correctable信号を発生するゲート回路44である。
図78(c)は、(S0=0), (S1=0), (S2=0), (S3=0)の全てが“0”で、(A=0)または(B=0)のいずれかが“1”の場合に、1エラーであることを示す信号1ECを発生するゲート回路42である。
図78(d)は、(A=0)と(B=0)が“1”でかつnoインデックスが“0”の場合に2エラーであることを示す信号2Cを発生するゲート回路45である。
(エラーコード訂正回路)
図79は、シンボル位置nのコードを修正するエラーコード訂正回路である。この訂正回路は、図3の訂正回路50におけるXORゲートG3に対応して、各エラー位置iに対して1バイト分(m=0〜7)の2ビットパリティチェッカ791を持つ。
図79は、シンボル位置nのコードを修正するエラーコード訂正回路である。この訂正回路は、図3の訂正回路50におけるXORゲートG3に対応して、各エラー位置iに対して1バイト分(m=0〜7)の2ビットパリティチェッカ791を持つ。
エラー位置は信号n=i(i=4〜19)で選択されて、1エラーの場合はシンボルエラーはS0であるのでバイトの各ビットは(s0)mでエラーが判断される。2エラーの場合はシンボルエラーはエラー位置iのシンボルエラーEiで決まり各ビットは(Ei)mでエラーが判断される。
メモリから読み出したν(x)の係数シンボルのバイトを構成する各ビット(di)mは、シンドロームを計算する際のクロックCPの5サイクルでラッチ792に保持される。そのラッチしたデータ(bi)mと、(s0)mまたは(Ei)mの反転データとの排他的論理和の反転として、パリティチェッカ791で修正されて正しいコードのビット(ci)mとなる。
(情報データ多項式f(x)の再構成法)
訂正されたコード多項式c(x)から情報データ多項式f(x)を復元し再構成するための計算法を説明する。この計算はデータ入力の際の逆演算に相当し、多項式の係数間の数6(数18)の関係を利用する。
訂正されたコード多項式c(x)から情報データ多項式f(x)を復元し再構成するための計算法を説明する。この計算はデータ入力の際の逆演算に相当し、多項式の係数間の数6(数18)の関係を利用する。
g4=1={0,0},g3=α75={3,0},g2=α249={12,3},g1=α78={14,6},g0=α6={5,12}であり、g4は定数g4=1であるので、下記数30が得られる。
ciは同時に一斉に得られるから、図80に示す計算方法手順によって、aiを求める。即ち、c19のa15からはじめてiの降順に順次aiを求めて、全てのaiを求める。a0はc4から求まるので、c3〜c0は計算には不要である。
図81は、具体的な情報多項式f(x)の係数の計算システムである。訂正されたコードはpn(x)の係数として表現されているので外部にデータを出力するクロックCLに同期してコードデータciをプリ/インデックスデコーダ回路8101で表現インデックスの2進数表示に変換する。
この変換の順序はciのiの降順でありcg4アダー系8103に入力される。ただしこの系統にはg4=1であるのでアダーは存在しない。
ag3,ag2,ag1,ag0の各アダー系8104,8105,8106,8107へはそれぞれ1サイクル、2サイクル、3サイクル、4サイクル遅れた計算システムの出力結果を表現インデックスに変換したものを入力するように、シフトレジスタSRを必要な段数設けている。
ラッチと計算システムは、図82に示すように、クロックCLに必要な遅延回路を入れて発生するクロックCLLで駆動される。またこれらの入力段を構成するラッチは、リセット信号パルスRSTでリセットされ“0”をクロックCLLの16サイクルごとに保持するように、16サイクルカウンタが用意されている。この16サイクルの計数はc19の入力サイクルでトリガ信号STARTから開始される。
各agiアダー系ではまず入力要素がゼロ元であるか否かの判断をゼロ判定回路8108で行なう。ゼロ元ならアダーの結果によらず出力インデックスを“0”にする。アダーでは、入力の表現インデックスと定数giの表現インデックス成分の2進表示間の和の計算を行なう。
アダー出力は2進数表示であるから、これをバイナリ/インデックス変換回路8109により表現インデックスに変換して、インデックスデコーダ8110を介し、4ビットパリティチェッカ・ラダー8111にて要素の和を求める。これにより、aiをiの降順に計算する。
計算されたaiは計算システムを駆動するクロックCLLをさらに適当に遅延させたクロックCPPによって駆動されるプリ/インデックスデコーダ回路8102にて表現インデックスの2進数表示として計算システムの入力へフィードバックされる。
図83は、図81の入出力部のプリ/インデックスデコード回路8101,8102におけるプリデコード回路、図84は同じくインデックスデコード回路、図85は同じくインデックスをバイナリに変換するインデックス/バイナリ変換回路であり、図86は、各アダー系のゼロ判定回路8104の具体構成例である。
図83のプリデコード回路は、先のpn(x)の係数とAi,Bi,Ci,Diの対応テーブルに従って各ci,aiのプリデコード信号を発生させる。
図84のインデックスデコード回路は、Ak,Bk,Ck,Dkをテーブルに従ってNAND接続したものをグループ化しNOR接続して表現インデックスの各成分をクロックCLLまたはCPPに同期して発生している。
図85のインデックス/バイナリ変換回路は、インデックスデコード回路出力をクロックCLLまたはCPPに同期して、4バイナリまたは5バイナリ表示に直す。即ち、17を法とする成分は5ビット、15を法とする成分は4ビットのバイナリデータとする。
図86のゼロ判定回路はデータがゼロ元のとき、A0,B0,C0,D0が“H”により、信号ZEROiを発生する。ここでのiはgiのそれに対応して0〜4である。またゼロ元の場合はインデックスデコード回路も対応するデコードがないためインデックスはすべて“0”となる。
図87は、各アダー系出力のバイナリ値を表現インデックスに再度変換するバイナリ/インデックス変換回路8109の構成である。クロックCLLに同期して、アダー入力がゼロ元である場合は内部ノードをプリチャージ状態のままとしてインデックスを“0”とする。
図88は、先のGF(256)の要素の係数と表現インデックスの対応テーブル表を利用して、ai=ci+4+g3ai+1+g2ai+2+g1ai+3+g0ai+4を計算する4ビットパリティチェッカ・ラダー8111の入力部インデックスデコーダ8110の構成である。
入力信号は要素cg4,ag3,ag2,ag1,ag0のそれぞれの表現インデックスであり、これらの要素ごとにm次の係数に相当するノードN(cg4),N(ag3),N(ag2),N(ag1),N(ag0)を持ち、このノードを信号CLLでプリチャージしておく。各要素のm次のノードの表現インデックス信号のトランジスタゲートへの接続は表から決まる。
各mについて各要素からの5つのノードのパリティチェックを4ビットパリティチェッカ・ラダー8111で行うことにより、aiのm次の係数(ai)mが得られる。
図89は、5入力の4ビットパリティチェッカ・ラダー8111の構成例を示す。ノードN(ag0)からN(ag3)の4入力は4ビットパリティチェッカ8111aに入り、この出力とノードN(cg4)の反転入力が2ビットパリティチェッカ8111bに入力される。
[ケースC.2の説明]
次に、ここまで説明したケースC.1で回路規模が最も大きくなる部分であるpn(x)の係数表示とインデックス表示間のデコード回路の数を少なくする、ケースC.2の方法を説明する。ケースC.2では、外部データを、GF(256)の要素の表現インデックスのバイナリ表示と見なして、デコードなしで演算できる部分を増やす。メモリに記憶させるコードも表現インデックスのバイナリ表示としてのバイト単位で行なう。
次に、ここまで説明したケースC.1で回路規模が最も大きくなる部分であるpn(x)の係数表示とインデックス表示間のデコード回路の数を少なくする、ケースC.2の方法を説明する。ケースC.2では、外部データを、GF(256)の要素の表現インデックスのバイナリ表示と見なして、デコードなしで演算できる部分を増やす。メモリに記憶させるコードも表現インデックスのバイナリ表示としてのバイト単位で行なう。
以下では、ケースC.1から変更のある部分についてのみ具体的に説明する。
演算処理としては単純であるが、回路の規模が大きくなるのはGF(256)の要素のpn(x)の係数としての表現から、αの指数から得られる表現インデックスへの変換の回路である。ここには、256個の8ビットデータと17の剰余と15の剰余との変換のために、入力部は512個以上のインデックスデコーダ回路が必要になる。
このインデックスデコーダの数を減らすために、情報データを有限体要素の表現インデックスそのものと見なすことを考える。表現インデックスを成分ごとの2進表示で表すと5+4=9ビットが必要となるが、17も16も2進表示では全てのビットをフルに使わないのでバイトデータを表現インデックスの2進表示と関連つけることが出来る。その対応付けの方法を、図90に示した。
図90(a)に示すように、表現インデックス成分15n(17)が0〜15ではバイトデータを4ビットずつに分けて、下位部分4ビットを成分17n(15)、上位部分4ビットを成分15n(17)の2進数表示と見る。
図90(b)に示すように、表現インデックス要素が15n(17)=16の時は成分17n(15)が1111となることはないので、上位部分と下位部分の役割を入れ替えて、下位部分が1111のときは上位部分を成分17n(15)の2進数表示、下位部分を15(17)の2進数表示と見なす。
表現インデックスはゼロ元を表す2進表示を持たないので、図90(c)に示すように、表現インデックスの2進表示に対応しないバイトFFをゼロ元とする。
以上のように情報データと表現インデックスとの対応付けを行うと、インデックスデコーダを入力部に設ける代わりに、簡単なバイト処理のマルチプレクサを設ければよく回路規模を大幅に削減できる。
コードの生成の計算はケースC.1と変わらない。即ち、c(x)の係数ciを、ci=g4ai−4+g3ai−3+g2ai−2+g1ai−1+g0aiを用いて計算する。aiは、上述のように表現インデックスで表され、g4={0,0},g3=α75={3,0},g2=α249={12,3},g1=α78={14,6},g0=α6={5,12}であるから、全て表現インデックス間の計算として処理出来る。
αmαn=αm+nを表現インデックスで表すと、{15m(17),17m(15)}{15n(17),17n(15)}={15(m+n)(17),17(m+n)(15)}={15m+15n(17),17m+17n(15)}となり、積は表現インデックス間の和で計算できる。有限体要素間の和は表現インデックスを用いたパリティチェッカで行う。和としてのciは、有限体要素を剰余多項式pn(x)の係数表現として得られる。
図91は、コード計算の具体的なシステムである。
外部からのデータf(x)をクロックCLで取り込む。このクロックCLの例えば2倍の速さでサイクル数が2倍のクロックCLK*でマルチプレクサ(MUX)回路700aを動作させて、表現インデックスのバイナリ表示にする。これは外部データの取り込み16サイクルに対して計算システムの処理は20サイクル必要であるためである。即ち、f(x)が15次多項式、c(x)が19次の多項式であることに対応する。
図91のコード計算システムの、図7に示したケースC.1でのコード計算システムとの相違は、図7でのプリ/インデックスデコーダ700に代わってこのMUX回路700aが用いられる点であり、その他は図7と変わらない。従って、図7と対応する部分には同一符号を付して詳細な説明は省く。図91におけるシフトレジスタSRやクロック回路も図8と同様である。
図92A及び図92Bは、上述のc(x)計算システムで使用するMUX回路700aで使用する外部からのバイトデータとそのシンボル化に対応した表現インデックスと有限体要素の関係をまとめたテーブルである。256個の有限体要素の全てに対して対応を示したが、マルチプレクサとしてはビットデータごとの変化がほとんど無いため簡単な構成となり回路規模は小さい。
図93及び図94は、データシンボル化回路としてのシンボルMUX回路及びゼロ判定回路を示している。
バイトデータをクロックCLK**に同期してラッチして計算システム内部のビットbmとして、 シンボルMUX回路は、下位部がFである場合には信号SWAP=“1”を発生させる。信号SWAP=“1”が発生されると、バイトデータの上位部4ビットb4−b7と下位部4ビットb0−b3を入れ替えて表現インデックスの2進表示とする。表現インデックス成分15n(17)の2進表示のビットは15n(17)b4以外は全て“0”とする。
ゼロ判定回路はマルチプレクスして得られた表現インデックス成分17n(15)の2進表示がFの場合には入力データがゼロ元シンボルとなっているので、信号ZEROiを発生する。図94において、iはgiのiに対応する。CLK*はCLK**の16サイクル分に相当し、CLK**の17サイクル目から発生される信号RSがない場合のクロックCLK*である。またラッチはRSでリセットされて“1”になるのでビットbmはCLK**の17〜20サイクルでは入力がFFに相当することになる。
ケースC.2ではメモリに記憶させるデータは表現インデックスの2進表示をバイトデータに対応付けしたシンボルデータとすることで、シンドロームの並列計算で必要となるインデックスデコーダの数を減らすことができる。データ読み出しの際はスピードが要求されるのでシンドローム計算はできるだけ並列に行なうが、並列計算の分だけインデックスデコーダが多く必要となり、この部分で必要な回路規模は膨大となる。そこでケースC.2では、この部分のインデックスデコーダをなくすためにメモリから読み出したデータが表現インデックスとなるように記憶させるデータはシンボルデータとする。
図95は、メモリに有限体要素を表現インデックスのシンボルデータとして記憶させるための概要を示している。入力では、エンコード結果のコードデータはpn(x)の係数として(ci)m(m=0〜7)として表現されるので、これを表現インデックスの2進表示に変換するプリ/インデックスデコーダ回路9501と、その9ビットとなる出力データを、バイトシンボルデータに直すためのデマルチプレクサ(deMUX)回路9502が必要である。
この変換の系統は毎サイクルバイト単位で行なうので、1系統のインデックスデコーダがあればよい。deMUX回路9502の出力はバイトシンボルデータ(indi)mである。このデータがメモリ9503内でエラーを生じ読み出す際のバイトシンボルデータは(di)mとなる。
メモリの読み出しデータは、シンドローム演算部9505に入力する前に、(di)mを表現インデックスの2進表示にするため、シンボルMUXとゼロ判定を行う回路9504を通す。
図96及び図97は、プリ/インデックスデコード回路9501内のプリデコード回路及びインデックスデコード回路であり、図98はインデックスデコード回路の出力部のインデックス/バイナリ変換回路である。
図96のプリデコード回路は、先の剰余多項式pn(x)の係数Ai,Bi,Ci,Diの対応テーブル従って、各コードciのプリデコード信号を発生させる。図97のインデックスデコード回路は、Ak,Bk,Ck,Dkをテーブルに従ってNAND接続したものをグループ化し、NOR接続して表現インデックスの各成分をクロックCLKに同期して発生する。
図98のインデックス/バイナリ変換回路は、インデックスデコード回路出力をクロックCLKに同期してバイナリ表示に直すために、17を法とする成分は5ビット、15を法とする成分は4ビットのバイナリデータとする。データがゼロ元のときはA0,B0,C0,D0が“H”なので、インデックスデコード回路は対応するデコードがないためインデックスはすべて“0”となる。従って表現インデックスのバイナリ表示は、FFとなる。
図99は、メモリにバイトシンボルデータとして表現インデックスの2進表示を書き込むための変換回路、即ちdeMUX回路9502の構成である。表現インデックス成分15σcn(17)=16のときに信号SWAP=“1”,/SWAP=“0”を発生させて、切り換え回路991,992により、バイトデータの4ビット下位部から4ビット上位部へと表現インデックス成分17σcn(15)の2進表示の対応を切り替える。下位部の(indi)m(m=0〜3)はVddに接続して、全て“1”とする。ゼロ元であるciは表現インデックスの2進表示はFFなのでバイトシンボルデータもFFとなる。
次に、メモリからのデータ読み出しの動作のタイミング同期の関係について、図100を参照して説明する。これは、ケースC.1の場合の図28と基本的に同様である。メモリから読み出したデータの格納場所として、20バイトのデータレジスタ を2系統準備する。一方を偶数クロック(even clock)データラッチ系、他方を奇数クロック(odd clock)データラッチ系と呼ぶ。この2系統のレジスタをインタリーブして使用しデータを切れ目なく出力する。以下では、even clock系、odd clock系をそれぞれ、ECL系、OCL系と称する。
クロックの種類は主に2つである。ひとつはデータの転送を行うもので、データを出力するためのクロックCL、これと周期は同じであるがメモリからデータを読み出すために5サイクルごとにまとまって間欠的に発生されるクロックCP、及びエラー位置検索とエラー訂正の計算後4サイクルごとにまとまって間欠的に発生されるクロックCPKであり、もう一つは、ECCシステムを駆動するためのクロックCLKであり、これはクロックCLの16サイクル分を1サイクルとする。
ECL系またはOCL系の一方をまず用いる。
メモリからは20バイトのデータdi(i=19〜0)が4バイトずつ5CPサイクルで読み出され、例えばECL系データレジスタの各ラッチに保持されると共に、シンドローム計算が行われる。このシンドロームからエラー位置検索とシンボルエラーが計算されこれと各ラッチ内のデータのとの演算により、コードデータci(i=19〜4)が新たにラッチに4CPKサイクルで上書きされる。
コードデータc3〜c0は情報データの訂正には使われない。これで、ECCの1CLKサイクルが終了する。次にラッチに上書きされて保持されたコードciを用いて情報データai(i=15〜0)をクロックCLに同期して順次計算して出力する。
このECL系で情報データを出力している間、次の20バイトのデータを他方のOCL系に読み出し、同様の動作を行う。このようにして2系統のデータレジスタにより、一方がシンドローム計算及びエラー検出訂正を行っている間、同時に他方が訂正された情報データを出力するというインタリーブが行われる。
図101を用いて、データ,クロックとラッチの動作との関係をデータフローとして説明する。図示のように2系統のデータラッチ即ち、ECL系データラッチ1010aとOCL系のデータラッチ1010bとが併設される。
メモリに記憶されたデータdiは、4バイトごとにクロックCLに同期して読み出される。このときECL系またはOCL系の一方のラッチ系でのみクロックがアクティブになるが、これを区別するためにクロックの名称に上付きの“e”,“o”を付して区別する。クロックのサイクルで信号を分ける必要がある場合は数字を下付きで示す。まずECL系のラッチにデータを格納する場合を考える。
ECL系のデータラッチ1010aでは4バイト毎に、クロックCPe 0,CPe 1,CPe 2,CPe 3,CPe 4に同期してデータを格納すると同時に、4バイトごとのデータbiをシンボルMUX回路1016に送り出す。この間、OCL系データラッチ1010bではクロックCLoに同期して各データをqiとしてf(x)計算システム1015へ送りデータ出力を行なう。
ケースC.2では、表現インデックスの2進表示で表したものを更に本来の情報データとしてのバイトシンボルデータにする必要がある。このために、f(x)計算システム1015の出力部にはdeMUX回路1017が設けられている。
シンボルMUX回路1016は、ゼロ判定回路及びバイナリ/インデックス変換回路を含むが、クロックCPに同期してデータbiを表現インデックスの2進表示に変換してシンドローム計算システム1012へと送る。
シンドローム計算システム1012はクロックCPに同期してシンドロームを5CPサイクルで計算してエラー探索・シンボルエラー計算部1013へと送る。エラー探索・シンボルエラー計算部1013では、16CLを1サイクルとするクロックCLKに同期してシンドロームから20バイト中のエラー位置とシンボルエラーを計算する。
その計算結果は4バイト毎のデータ位置のエラーの有無とエラー訂正情報としてクロックCPK1,CPK2,CPK3,CPK4を用いて順番に4バイト分のシンボル訂正部1014に送られる。
一方、ECL系データラッチ1010aからはクロックCPK0,CPK1,CPK2,CPK3によって再びデータbiがシンボルMUX回路1016に送られる。このときシンボルMUX回路1016は、クロックCPKに同期してデータbiを表現インデックスの2進表示に変換してbbiデコーダ回路1011へと送る。
bbiデコーダ回路1011は、表現インデックスで表されたデータbiを4バイトずつ剰余pn(x)の係数表示に変換する回路であり、その出力はクロックCPKに同期してシンボル訂正部1014に送られる。
シンボル訂正部1014は、bbiデコーダ回路1011のデータとエラー探索・シンボルエラー計算部1013のデータを用いて、4サイクルのクロックCPKに同期してデータのビット毎のXOR演算でエラー修正を行う。これにより、コードデータciを4バイトずつ再生して、pn(x)の係数のバイトデータとしてECL系データラッチ1010aにクロックCPKの4サイクルで送る。
即ち、ECL系データラッチ1010aは、クロックCPKe 1,CPKe 2,CPKe 3,CPKe 4を用いて順番に4バイト分のデータciを各ラッチに上書きして保持する。以上で、ECL系データラッチ1010aの出力準備のCLKサイクルが終了する。その保持データをクロックCLeに同期してデータqiとしてf(x)計算システム1015へと送ると共に、OCL系データラッチ1010bで同様の動作が行われる。
なお、先に説明したケースC.1では、ラッチへのコードデータの上書きなどのデータフローまで説明しなかったが、デコーダなどを修正すれば同様の構成をとることができる。
図102は、データラッチ1010a,1010bの1ビット分のラッチ構成を示す。図の斜線部がm=0〜7の1バイト分であり、4バイトずつjまたはkで区別されるレジスタで単位レジスタを構成する。
データdiはECL系,OCL系のいずれを構成するかに従ってクロックCPe j,CPo jでラッチされ、同時にデータbiとして出力される。また保持されたデータは、クロックCPKe k,CPKo kに同期してデータbiとして出力される。
コードデータciは、クロックCPKe k+1,CPKo k+1に同期して上書きされる。1サイクルずれて上書きされるのは、出力したデータをもとに計算されたデータを上書きするためである。保持されたコードデータciはクロックCLe,CLoに同期して出力される。
図103は、シンボル訂正部1014の1ビット分の回路構成を示す。シンボル訂正部1014も4バイト分の回路要素を持ち、斜線部がその1バイト分であるが、具体回路構成は1ビット分についてのみ示している。その構成は、図79と同様であり、エラー検索・シンボルエラー計算回路の結果とデータbbiの各ビットデータとの間のXOR演算を2ビットパリティチェッカでとることにより、コードシンボルのビットを出力する。
図104は、ケースC.2でのシンドロームの計算システムの概要である。メモリから読み出す19次多項式の係数をd19,d18,d17,…,d2,d1,d0とする。これらにαの適当な冪を乗じて加えることでシンドローム係数s0,s1,s2,s3が得られる。
この計算システムでは5サイクルで4つのシンドロームを同時に計算する。従って4バイトのデータを同時に12個の表現インデックスのアダー回路1042に入力している。4つのシンドロームに対応して4つの4ビットパリティチェッカ1043が設けられ、同時に扱う4つのGF(256)の和を求めている。
このパリティチェッカ1043では、空間ドメインでのパラレル・パリティチェックを行っている。このパリティチェッカ1043の5サイクル分の出力のパリティチェックを行うのは、“1”の計数回路1045の部分である。ここでは、4ビットパリティチェッカ1043が“1”を出力すると、“1”と“0”を交互にシフトすることで、時間ドメインでのシリアル・パリティチェックを行っている。
このシンドローム計算システムは、エラー検索訂正のためのメインクロックCLKをトリガとして、クロック発生器1046によりより短い周期のクロックCPを5サイクル発生して、このクロックCPに同期して計算を行う。クロックCPの周期はデータ出力のクロックCLと同じとしても良い。
まず入力部は、GF(256)の要素を表現インデックスの2進表示のバイトシンボルデータとして表す4バイトのデータd19 〜d16 ,d15 〜d12 ,d11 〜d8 ,d7 〜d4 ,d3 〜d0 の5サイクルでデータを受け取るシンボルMUX回路1040である。ここには、ゼロ判定回路1041も付属する。
これらの入力回路部によってデータは表現インデックスのバイナリ表示となる。またゼロ元の判定も行われる。図で点線で囲った入力回路部分は先のデータフローで説明したbbi回路にも共通のデコーダである。
4つのシンドローム計算系のなかのシンドロームs0の計算系では、αの0乗すなわち1との掛け算を行うので、実質的にアダー回路は必要ない。従ってバイナリ変換された表現インデックスが直接パリティチェッカ1043に入力される。
シンドロームs1の計算以降はアダー回路1042が必要をなる。これらのシンドロームsi(i=1〜3)の計算のためのアダー回路1042には、データdiの表現インデックスをバイナリ表示したもの及び、計算に必要なαの累乗の指数の表現インデックスのバイナリ表示が入力され、その和演算の結果が表現インデックスとして4ビットパリティチェッカ1043に入力される。
入力データがゼロ元のときはアダー回路の計算結果によらずに出力の表現インデックスをすべて“0”とする。
4ビットパリティチェッカ1043の出力はクロックCPに同期して次段の計数回路1045を駆動する信号となる。計数回路1045はクロックCLKの立ち上がりで発生されるリセットパルスRSでリセットされて新たな“1”の計数を始める。
各々のパリティチェッカ1043と計数回路1045は、既約剰余pn(x)の係数で要素を表すから、それぞれのシンドロームに対してm=0〜7の8つが併設される。これにより、各シンドロームがGF(256)の要素としてpn(x)となって出力される。
図105は、シンボルMUX回路1040の構成例である。この回路にはバイトデータがクロックCPまたはCPKに同期して入力される。このシンボルMUX回路は、バイトデータの下位部4ビットがFである場合には、ゲート1050により、信号SWAP=“H”,/SWAP=“L”を発生させる。
SWAP=“H”を受けて、切り換え回路1051,1052では4ビット上位部と4ビット下位部を入れ替えて、表現インデックスの2進表示とする。表現インデックス成分16σbi(17)の2進表示のビットは15σbi(17)b4以外は全て“0”とする。
図106は、ゼロ判定回路1041である。シンボルMUX回路1040により得られた表現インデックス成分17σbi(15)の2進表示がFの場合には入力データがゼロ元シンボルとなっている。図106では、回路が信号ZEROiを発生する。この信号は、4バイトごとのデータにしたがってi=0〜3の4つで区別される。
図107は、シンボルMUX回路やアダー回路出力部で用いるデコード回路(バイナリ/インデックス変換回路)である。シンボルMUX及びアダーの計算結果は2進表示でのインデックスであるので、これを次の段階で表現インデックス間の計算に利用できるように、インデックス信号に変換する。
クロックCPまたはCPKに同期したクロックCKでプリチャージされたノードを、バイナリ表示をデコードしたNANDロジックで放電して、インデックスとする。シンボルMUX回路の入力がゼロ元の場合は、ゼロ判定回路の出力ZEROiによりクロックCKは“L”のままでインデックスもすべて“0”となる。
ν(α0)及びbbiデコーダ回路1011に対してのインデックスは、15bj(17)/17bj(15)(j=0〜3)で、ν(αi)(i=1〜3)に対するインデックスは15σαidj(17)/17σαidj(15)とした。
図108は、bbiデコーダ回路1011の構成であり、先のGF(256)の要素の係数と表現インデックスの対応の表を利用して、バイトデータbiを表現インデックスに直したものからpn(x)の係数(bbi)m を計算する回路である。この回路は、クロックCLKから遅延してシンドローム計算が終了するころに発生されるクロックCLK**からさらに遅延して、シンボルエラーの計算が終了したころに発生されるクロックCLK*をトリガとして5サイクル作られるクロックCPKに同期して動作する。
クロックCPKは5サイクルであるが、このデコーダとしては最初の4サイクル動作すれば最後の1サイクルの動作は不要なデータc3,c2,c1,c0に対応するので、4サイクルでのみ動作するようにしても良い。
入力信号は要素biの表現インデックス15bj(17),17bj(15)であり、m次の係数に相当するノードをクロックCPKでプリチャージしておく。各ノードの表現インデックス信号のトランジスタゲートへの接続は先のGF(256)の要素の係数と表現インデックスの対応表から決まる。
各mについて、ノードのレベルの反転としての多項式係数(bbi)mが得られる。これは入力デコードがノードの放電でロジックが作りやすくしたためである。
図109は、f(x)計算システム1015の回路構成である。これは、ケースC.1でのそれ(図81)と同じである。ECL系またはOCL系のデータレジスタからのデータを出力する際には、まずこのf(x)計算システムにクロックCLに同期してデータを送る。
訂正されたシンボルはpn(x)の係数として表現されているので外部にデータを出力するクロックCLに同期してコードciをプリ/インデックスデコーダ回路1091で表現インデックスの2進表示に変換する。この変換の順序はciのiの降順であり、cg4アダー回路1092に入力される。ただしこの系統には、g4=1であるので、実際にはアダーは存在しない。
ag3,ag2,ag1,ag0の各アダー回路1093,1094,1095,1096へはそれぞれ1サイクル,2サイクル,3サイクル,4サイクル遅れた計算システム出力結果を表現インデックスに変換したものを入力するように、それらの入力段にシフトレジスタSRを必要段数設けている。
シフトレジスタSRは、図110に示すように、クロックCLに必要な遅延を入れて発生するクロックCLLで駆動される。これらの入力段を構成するラッチはリセット信号パルスRSTでリセットされ、“0”をクロックCLLの16サイクル毎に保持するようになっている。この16サイクルの計数は、c19の入力サイクルで、図110に示すようにトリガ信号STARTから開始される。
各アダー回路では、入力要素がゼロ元であるか否かの判断がゼロ判定回路により行われる。ゼロ元ならアダーの結果によらず出力インデックスを“0”にする。アダー回路では入力の表現インデックスと定数giの表現インデックス成分の2進表示間の和の計算を行なう。
アダー出力は2進表示であるからこれを表現インデックスに変換した後、4ビットパリティチェッカラダー1097で要素の和を求め、aiをiの降順に計算する。計算されたaiは計算システムを駆動するクロックCLLをさらに適当に遅延させたクロックCPPによって駆動されるプリ/インデックスデコーダ回路1098にて表現インデックスの2進表示として計算システムの入力へフィードバックされる。
ケースC.1の場合とは異なり、クロックCPPによって駆動されるフィードバック用のプリ/インデックスデコーダ回路1098は、メモリへのシンボルデータ書き込みで使用したものを利用することができる。これはデータの入力と出力は異なるタイミングで行なわれるためである。
図111は、f(x)計算システム1015の出力部に設けられるdeMUX回路1017の構成である。有限体要素のaiの表現インデックスの2進表示を、これにより本来の情報データとしてのバイトシンボルデータに変換する。このdeMUX回路は、入力信号が異なるのみで回路構成はメモリにコードデータciを書き込む際の図99に示したdeMUX回路と同じである。
[ケースC.3の説明]
ケースC.1,C.2では、ECCシステムと外部とのデータのやり取りはバイト単位で行い、ECCが同時に扱うデータブロックを16サイクルでメモリに読み込むことを想定した。しかし、2バイト以上を同時に扱ってデータ転送のバンド幅を上げることが必要な場合もある。
ケースC.1,C.2では、ECCシステムと外部とのデータのやり取りはバイト単位で行い、ECCが同時に扱うデータブロックを16サイクルでメモリに読み込むことを想定した。しかし、2バイト以上を同時に扱ってデータ転送のバンド幅を上げることが必要な場合もある。
以下では、多バイト同時転送を行うケースC.3の例として、4バイト単位でデータをやり取りする方法をケースC.2の方式の変形として、そのインタフェース構成を説明する。4バイト毎にデータ入出力を行い、クロック4サイクルでデータ転送が完了するようにすれば、データ転送速度が向上するが、そのためにはエンコード回路とデコード回路の並列化が必要となる。
8ビットデータのシンボル化は、ケースC.2として図90で説明したように、8ビットデータaiを直接表現インデックス要素とみなして有限体要素と対応させる。この様なケースC.2で、コード生成の多重化を行うことを考えると、情報シンボルとコードシンボルの関係ci=g4ai-4+g3ai-3+g2ai-2+g1ai-1+g0aiを、次の数31に示す計算式を4つ連続して用いれば、1サイクルで4バイトデータから4コードを発生することができる。
すなわち、コードc19,c18,c17,c16を計算するには、データa15,a14,a13,a12までが必要であり、c15,c14,c13,c12を計算するにはさらにa11,a10,a9,a8が必要である、というように4シンボル毎にデータを読み込めば、4コード毎に5クロックサイクルでコードを計算できる。
ケースC.3でのコード生成のための具体的な回路、c(x)計算システムを図112に示す。
データf(x)はMUX回路1131により、クロックCL*に同期して有限体の4つの要素ごとに表現インデックスの2進数表示に変換される。これが順番に(a15,a14,a13,a12),(a11,a10,a9,a8),(a7,a6,a5,a4),(a3,a2,a1,a0)とし、5サイクル目にゼロ元に相当するデータ(FF,FF,FF,FF)を挿入して、4つの計算行1132a,1132b,1132c,1132dを持つアダー行列に入力する。
計算システムはクロックCL*から遅延したクロックCLKに同期して駆動される。クロックCL*はデータ転送のクロックCLの4サイクル中に5サイクル動作するクロックである。
一番上の計算行1132aはコードデータc19,c15,c11,c7,c3を計算する。2番目の計算行1132bは、c18,c14,c10,c6,c2を計算する。3行目1132cはc17,c13,c9,c5,c1を計算する。4行目1132dは、c16,c12,c8,c4,c0を計算する。
各計算行に、インデックスデコーダ回路1133とそのデコード出力に対する4ビットパリティチェッカ・ラダー1134が設けられる。
このコード計算は、上述の計算式(1)〜(4)でのi=19,15,11,7,3の計算に対応していて、計算式を素直に表現している。一行目の計算では1サイクル前の入力データを使用するので1サイクルデータを保持するシフトレジスタSRを2段目以降のアダーの入力に挿入している。シフトレジスタSRは、図113に示すように、クロックCL*を遅延させたクロックCLLにより動作する。
なお各行1段目はg4=1であるので実際にはアダーは存在しない。
コードデータ生成以降、エラー位置の検索訂正はケースC.1やC.2と同様の演算を行なえばよい。
コードデータciが再構成できた後の情報データの再構成においても、計算を並列化して高速化を図る。即ち、g4=1={1,1},g3=α75={3,0},g2=α249={12,3},g1=α78={14,6},g0=α6={5,12}を考慮して、先の数31の関係式を書き換えると、数32の関係式が得られる。
これらの4つの関係式に従って、4シンボル同時に4サイクルで計算することにより、各情報データaiは、コードデータciと前サイクルまでに得られた情報データとに基づいて得られる。
数32の各係数は、下記数33及び数34に示すように、表現インデックスとして固定される。
図114は、コードデータciと既に計算された情報データaiによって以下の情報データaiを順次まとめて計算する手順の説明図である。
情報データ(a15,a14,a13,a12)は、コードデータ(c19,c18,c17,c16)から直接計算で得られる。情報データ(a11,a10,a9,a8)は、コードデータ(c15,c14,c13,c12)と前サイクルで得られた情報データ(a15,a14,a13,a12)から計算で得られる。
情報データ(a7,a6,a5,a4)は、コードデータ(c11,c10,c9,c8)と前サイクルで得られた情報データ(a11,a10,a9,a8)から計算で得られる。情報データ(a3,a2,a1,a0)は、コードデータ(c7,c6,c5,c4)と前サイクルで得られた情報データ(a7,a6,a5,a4)から計算で得られる。
図115は、f(x)計算システムの具体構成例(1)であり、コードデータciの入力部である。入力は、係数表示のコードデータciをクロックCLに同期してプリ/インデックスデコード回路1171で表現インデックスの2進表示に変換したもので、4サイクルで(c19,c18,c17,c16),(c15,c14,c13,c12),(c11,c10,c9,c8),(c7,c6,c5,c4)が、アダー行列の4つの計算行1172a,1172b,1172c,1172cに並列に入力される。
最初の計算行1172aは、aiのci+4部分、2番目の計算行1172bは、ai−1のci+3+h3ci+4部分、3番目の計算行1172cは、ai−2のci+2+h3ci+3+h2ci+4部分、4番目の計算行1172dは、ai−3のci+1+h3ci+2+h2ci+3+h1ci+4部分を計算する。
計算結果は、インデックスデコード回路1173を介し、2ビットパリティチェッカ1174(但し第1行はインバータ1174a)を介することにより、それぞれ有限体要素の係数表示(H0)m,(H1)m,(H2)m,(H3)mとして求められる。
図116は、f(x)計算システムの具体構成例(2)であり、前サイクルで得られた結果の4バイトのデータaiの計算部分である。入力は係数表示の計算結果のデータaiをクロックCLに同期してプリ/インデックスデコード回路1181で表現インデックスの2進表示に変換したものであり、(a15,a14,a13,a12),(a11,a10,a9,a8),(a7,a6,a5,a4),(a3,a2,a1,a0)がアダー行列の4つの計算行1183a,1183b,1183c,1183dに4サイクルで並列に入力される。
なお2進表示に変換されたデータはdeMUX回路1182によってバイトデータとして情報データの係数に変換され、次サイクルのアダーで利用される。
一行目1183aはaiのg03ai+1+g02ai+2+g01ai+3+g00ai+4部分、二行目1183bはai−1のg13ai+1+g12ai+2+g11ai+3+g10ai+4部分、三行目1183cはai−2のg23ai+1+g22ai+2+g21ai+3+g20ai+4部分、四行目1183dはai−3のg3ai+1+g32ai+2+g31ai+3+g30ai+4部分をそれぞれ計算する。
計算結果は、インデックスデコーダ回路1184を介し、4ビットパリティチェッカ・ラダー1185を介することにより、有限体要素の係数表示(G0)m,(G1)m,(G2)m,(G3)mとして求められる。
次サイクルまでデータを保持するために、クロックCLに同期するシフトレジスタSRが設けられている。シフトレジスタSRには、図117に示すように、クロックCLから遅延されたクロックCLLでデータが取り込まれる。シフトレジスタSRは、クロックCLの4サイクルごとにカウンタ1186が発生するリセット信号RSTによってデータ出力がリセットされゼロ元を出力する。これは計算では(a3,a2,a1,a0)を利用しないことに相当する。
図118は、f(x)計算システムの具体構成例(3)であり、コードデータを用いた計算部分(図115)の計算結果(H0)m,(H1)m,(H2)m,(H3)m と、前サイクルで計算して得られた結果の4バイトのデータaiからの計算部分(図116)の計算結果(G0)m,(G1)m,(G2)m,(G3)mとの和を計算する2ビットパリティチェッカである。
このパリティチェッカ出力が、情報データがシンボルとして表した有限体要素のpn(x)の係数表示でのバイトデータである。このデータを表現インデックスの2 進表示に変換してdeMUX回路でシンボル化すれば情報データとなり、4バイトの情報データが毎サイクル得られる。
Claims (8)
- メモリセルアレイと、
前記メモリセルアレイに書き込むデータを所定ビット数のまとまりであり、ガロア体の有限体要素に対応するシンボル毎にシンボル化し、特定のインデックスで表現された解要素を表現するデコーダについての有限体要素の方程式を解いて前記メモリセルアレイから読み出されたデータのエラーを検出し、検出エラーに基づきデータを訂正し、訂正されたデータを次のデータの他のエラー検出訂正と並列に出力するエラー検出訂正システムと
を備えたエラー検出訂正システムを有する半導体記憶装置。 - メモリセルアレイと、
前記メモリセルアレイに書き込むデータを所定ビット数のまとまりであり、ガロア体の有限体要素に対応するシンボル毎にシンボル化し、特定のインデックスで表現された解要素を表現するデコーダについての有限体要素の方程式を解いて前記メモリセルアレイから読み出されたデータのエラーを検出し、検出エラーに基づきデータを訂正し、訂正されたデータを出力するエラー検出訂正システムと
を備えたエラー検出訂正システムを有する半導体記憶装置。 - 前記エラー検出訂正システムは、エラー位置探索方程式について解の候補のテーブルを予め作成しておき、このテーブルを用いて根のインデックスを求めて、シンボルエラーを検出訂正するものであって、
前記エラー位置探索方程式に対して変数部分とシンドローム部分とを分離する変数変換を行い、その変数部分に代入する有限体要素とシンドローム部分に代入する有限体要素のインデックスの対応関係を利用して、シンボルエラー位置を検出する
ことを特徴とする請求項1又は2記載の半導体記憶装置。 - 前記エラー検出訂正システムは、シンボルエラー位置検出と訂正のインデックス計算において、ゼロ元を除く有限体FG(2m)の要素数をほぼ同じ大きさの互いに素な整数因子に分けて、有限体要素の原始根のインデックスをそれぞれの整数因子を法とする剰余で表す表現インデックスを用いる
ことを特徴とする請求項1又は2記載の半導体記憶装置。 - 前記エラー検出訂正システムは、前記メモリセルアレイに書き込むべきデータを所定ビット数ずつ原始多項式の既約剰余多項式の係数に対応させる
ことを特徴とする請求項1または2記載の半導体記憶装置。 - 前記エラー検出訂正システムは、有限体GF(2m)の要素数をほぼ同じ大きさの互いに素な整数因子に分けて、有限体要素の原始根のインデックスをそれぞれの整数因子を法とする剰余として表される表現インデックスを用い、前記メモリセルアレイに書き込むべきコードデータを表現インデックスの2進数表示として、またはその2進数表示から更に変換して得られるコードとして構成する
ことを特徴とする請求項1又は2記載の半導体記憶装置。 - 前記エラー検出訂正システムは、
前記メモリセルアレイの読み出しデータを交互に取り込む第1及び第2のデータレジスタと、
前記第1及び第2のデータレジスタの読み出しデータのエラー検出と訂正を行うエラー検出訂正部とを備えて、
第1及び第2のデータレジスタの一方において読み出しデータについて前記エラー検出訂正部でエラー検出と訂正を行い、訂正されたデータを上書き保存する動作を行っている間、他方において上書き保存されたデータの出力動作を行う
ことを特徴とする請求項1又は2記載の半導体記憶装置。 - 前記エラー検出訂正システムは、前記メモリセルアレイに書き込むデータをバイト毎に有限体GF(256)の要素に対応させて有限体要素としてシンボル化し、前記メモリセルアレイの読み出しデータからエラーが発生したシンボルを検出してデータ訂正を行い、
前記エラー検出訂正システムは、有限体の要素数255を互いに素な因子17と15に分けて、有限体要素の原始根のインデックスを、17を法とする剰余としての表現インデックスa(17)及び15を法とする剰余としての表現インデックスb(15)により表し、
シンボル化すべきバイトデータを4ビットずつ上位部分と下位部分に分けて、a(17)が0〜15のとき、上位部分をa(17)の2進数表示、下位部分をb(15)の2進数表示とみなし、a(17)が16のとき、上位部分をb(15)の2進数表示、下位部分をa(17)の2進数表示とみなし、全ビットが1のとき有限体要素のゼロ元とみなす
ことを特徴とする請求項1または2記載の半導体記憶装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007023142 | 2007-02-01 | ||
PCT/JP2008/051903 WO2008099723A1 (en) | 2007-02-01 | 2008-01-30 | Semiconductor memory with reed- solomon decoder |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010518464A true JP2010518464A (ja) | 2010-05-27 |
Family
ID=39433792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009532473A Pending JP2010518464A (ja) | 2007-02-01 | 2008-01-30 | 半導体記憶装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20100107039A1 (ja) |
JP (1) | JP2010518464A (ja) |
WO (1) | WO2008099723A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011198253A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | メモリシステム及びメモリシステムのデータ書き込み・読み出し方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009181439A (ja) | 2008-01-31 | 2009-08-13 | Toshiba Corp | メモリシステム |
JP5259343B2 (ja) | 2008-10-31 | 2013-08-07 | 株式会社東芝 | メモリ装置 |
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
JP5204186B2 (ja) | 2010-09-24 | 2013-06-05 | 株式会社東芝 | メモリシステム |
JP5143203B2 (ja) | 2010-09-24 | 2013-02-13 | 株式会社東芝 | メモリシステム |
KR101636785B1 (ko) | 2010-12-01 | 2016-07-06 | 엘에스아이 코포레이션 | 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 |
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
JP2012123600A (ja) | 2010-12-08 | 2012-06-28 | Toshiba Corp | メモリシステム及びメモリコントローラ |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
JP2014507717A (ja) | 2011-01-18 | 2014-03-27 | エルエスアイ コーポレーション | より高いレベルの冗長な情報の計算 |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US8935592B2 (en) * | 2012-11-20 | 2015-01-13 | Arm Limited | Apparatus and method for correcting errors in data accessed from a memory device |
US10353837B2 (en) | 2013-09-09 | 2019-07-16 | Qualcomm Incorporated | Method and apparatus to enable multiple masters to operate in a single master bus architecture |
US9996488B2 (en) * | 2013-09-09 | 2018-06-12 | Qualcomm Incorporated | I3C high data rate (HDR) always-on image sensor 8-bit operation indicator and buffer over threshold indicator |
US9455746B2 (en) * | 2013-12-30 | 2016-09-27 | Netapp, Inc. | Variable speed Chien search architecture |
US9524207B2 (en) * | 2014-09-02 | 2016-12-20 | Micron Technology, Inc. | Lee metric error correcting code |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3668631A (en) * | 1969-02-13 | 1972-06-06 | Ibm | Error detection and correction system with statistically optimized data recovery |
US3668632A (en) * | 1969-02-13 | 1972-06-06 | Ibm | Fast decode character error detection and correction system |
US4099160A (en) * | 1976-07-15 | 1978-07-04 | International Business Machines Corporation | Error location apparatus and methods |
US4763332A (en) * | 1987-03-02 | 1988-08-09 | Data Systems Technology Corp. | Shared circuitry for the encoding and syndrome generation functions of a Reed-Solomon code |
US4928280A (en) * | 1988-04-29 | 1990-05-22 | International Business Machines Corporation | Fast processor for multi-bit error correction codes |
US5226043A (en) * | 1990-12-27 | 1993-07-06 | Raytheon Company | Apparatus and method for data error detection and correction and address error detection in a memory system |
US6308295B1 (en) * | 1996-10-08 | 2001-10-23 | Arizona Board Of Regents | Parallel spectral reed-solomon encoder and decoder |
US5978956A (en) * | 1997-12-03 | 1999-11-02 | Quantum Corporation | Five-error correction system |
US7458006B2 (en) * | 2002-02-22 | 2008-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
US7996748B2 (en) * | 2005-05-19 | 2011-08-09 | Stmicroelectronics, S.R.L. | ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix |
JP2007305267A (ja) * | 2006-05-15 | 2007-11-22 | Toshiba Corp | 半導体記憶装置 |
US7962540B2 (en) * | 2007-06-07 | 2011-06-14 | Harris Corporation | Mixed radix number generator with chosen statistical artifacts |
-
2008
- 2008-01-30 US US12/524,880 patent/US20100107039A1/en not_active Abandoned
- 2008-01-30 JP JP2009532473A patent/JP2010518464A/ja active Pending
- 2008-01-30 WO PCT/JP2008/051903 patent/WO2008099723A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011198253A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | メモリシステム及びメモリシステムのデータ書き込み・読み出し方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100107039A1 (en) | 2010-04-29 |
WO2008099723B1 (en) | 2008-10-23 |
WO2008099723A1 (en) | 2008-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010518464A (ja) | 半導体記憶装置 | |
JP5259343B2 (ja) | メモリ装置 | |
US8291303B2 (en) | Memory device with error correction system for detection and correction errors in read out data | |
US4928280A (en) | Fast processor for multi-bit error correction codes | |
JP3234130B2 (ja) | 誤り訂正符号復号化方法およびこの方法を用いる回路 | |
Chen et al. | An adaptive-rate error correction scheme for NAND flash memory | |
JP5043562B2 (ja) | エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
EP0026516B1 (en) | Apparatus for the processing of an information stream with the aid of an error-correcting convolutional code and for the detection of an error still irremediable in this processing | |
JP4836608B2 (ja) | 半導体記憶装置 | |
JP4846384B2 (ja) | 半導体記憶装置 | |
JPS59197940A (ja) | 誤り検出・補正メモリ | |
JPH0831803B2 (ja) | 誤り訂正のための方法と装置 | |
JP2007193910A (ja) | 半導体記憶装置 | |
JPS6037833A (ja) | 符号語の複号装置及び読み取り装置 | |
TWI479317B (zh) | Memory system | |
CN103283149A (zh) | 用于处理数据元素序列的装置和方法 | |
JP3345385B2 (ja) | チェンサーチ装置 | |
JP4891704B2 (ja) | 半導体記憶装置 | |
TWI459398B (zh) | Memory system | |
US10133628B2 (en) | Apparatuses and methods for encoding using error protection codes | |
JP2012123600A (ja) | メモリシステム及びメモリコントローラ | |
JP2015019276A (ja) | 記憶装置、crc生成装置およびcrc生成方法 | |
EP0584864B1 (en) | A hardware-efficient method and device for encoding BCH codes and in particular Reed-Solomon codes | |
JPS6150416B2 (ja) | ||
JP3552683B2 (ja) | 信号処理方法、信号処理システム、および信号処理のためのプログラムおよび該プログラムを記録したコンピュータ可読な記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120221 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120619 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090821 |