JP4846384B2 - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP4846384B2
JP4846384B2 JP2006042250A JP2006042250A JP4846384B2 JP 4846384 B2 JP4846384 B2 JP 4846384B2 JP 2006042250 A JP2006042250 A JP 2006042250A JP 2006042250 A JP2006042250 A JP 2006042250A JP 4846384 B2 JP4846384 B2 JP 4846384B2
Authority
JP
Japan
Prior art keywords
circuit
index
data
bit
subtraction
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.)
Expired - Fee Related
Application number
JP2006042250A
Other languages
English (en)
Other versions
JP2007220260A (ja
Inventor
春希 戸田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006042250A priority Critical patent/JP4846384B2/ja
Priority to US11/674,384 priority patent/US7941733B2/en
Publication of JP2007220260A publication Critical patent/JP2007220260A/ja
Priority to US13/080,035 priority patent/US8201055B2/en
Application granted granted Critical
Publication of JP4846384B2 publication Critical patent/JP4846384B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1068Adding 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)

Description

この発明は、半導体記憶装置に係り、特にオンチップのエラー検出訂正システムに関する。
電気的書き換え可能な不揮発性半導体メモリであるフラッシュメモリは、書き換え回数の増加に従ってエラー率が大きくなる。特に、大容量化と微細化が進むと、エラー率は上昇する。このため、フラッシュメモリチップ内に或いはこれを制御するメモリコントローラにECC(Error Correcting Code)回路を搭載することが行われる(例えば、特許文献1参照)。
フラッシュメモリを利用するホストデバイス側で、フラッシュメモリで生じたエラーを検出し訂正するECCシステムを持つようにすると、エラー率が増えた場合にホストデバイスの負荷が大きいものとなる。例えば、2ビットエラー訂正可能なECCシステムは、計算規模が大きなものとなることが知られている(例えば、特許文献2参照)。
従ってホストデバイスの負荷増大を抑えると共にエラー率増大に対処するためには、フラッシュメモリ内に2ビットエラー訂正可能なECCシステムを搭載することが望まれる。その場合に要求されることは、ECCシステムの演算速度を高速化して、フラッシュメモリの読み出しや書き込み速度の犠牲を抑えることである。
特開2000−173289号公報 特開2004−152300号公報
この発明は、高速演算可能なエラー検出訂正回路を搭載した半導体記憶装置を提供することを目的とする。
この発明の一態様による半導体記憶装置は、ガロア体GF(2)のエラー訂正符号を用いたエラー検出訂正回路が搭載された半導体記憶装置であって、前記エラー検出訂正回路は、2−1を法とする加減算を行う演算回路を有し、前記演算回路は、2−1を因数分解して互いに素でかつ差が可及的に小さくなるように選択された二つの数を第1及び第2の整数として、加減算の対象に第1の整数を乗じて第2の整数を法とした加減算を行う第1の演算部と、加減算の対象に第2の整数を乗じて第1の整数を法とした加減算を行う第2の演算部とを有し、これら第1及び第2の演算部が同時に並行して演算を行ってその演算結果から2−1を法とする加減算結果を得ることを特徴とする。
この発明によると、高速演算可能なエラー検出訂正回路を搭載した半導体記憶装置を提供することができる。
以下、図面を参照して、この発明の実施の形態を説明する。
図1は、一実施の形態によるフラッシュメモリの要部構成を示す図である。このフラッシュメモリは、4つのセルアレイ1即ち、T−cellアレイ(0−1),C−cellアレイ(0−2),T−cellアレイ(0−3)及びC−cellアレイ(0−4)により一つのバンクBNK0を構成し、残りの4つのセルアレイ1即ち、T−cellアレイ(1−1),C−cellアレイ(1−2),T−cellアレイ(1−3)及びC−cellアレイ(1−4)により、もう一つのバンクBNK1を構成している。
各セルアレイ1には、ワード線選択を行うロウデコーダ(RDEC)3が配置され、また隣接するT−cellアレイとC−cellアレイとが共有するセンスアンプ回路(SA)2を持つ。T−cellアレイとC−cellアレイは、詳細は後述するが、それぞれ複数の情報セルT−cellとC−cellを有し、それぞれ少なくとも一つずつの参照セルR−cellを有する。
情報セルT−cell,C−cellと参照セルR−cellとは同じメモリセル構造を有する。そして、T−cellアレイから情報セルT−cellが選択されたときに、これと対をなすC−cellアレイからは参照セルR−cellが選択される。同様に、C−cellアレイから情報セルC−cellが選択されたときに、これと対をなすT−cellアレイからは参照セルR−cellが選択される。
上下に4つずつ分けられたセルアレイ1の読み出し/書き込みデータは、データバス5,6を介し入出力バッファ7を介して、センスアンプ回路2と外部入出力端子との間で転送される。上下に4つずつ分けられたセルフアレイ1の間に、読み出しデータのエラー検出訂正回路であるECC回路8が設けられている。
図2は、センスアンプ回路2を共有するT−cellアレイとC−cellアレイの具体構成を示している。T−cellアレイには、一つのビット線BLに、複数の情報セルNANDストリング,T−NANDと、少なくとも一つの参照セルNANDストリングR−NANDとが接続されている。T−cellアレイには、T−cellアレイ側のビット線BLと対をなすビット線BBLに、複数の情報セルNANDストリング,C−NANDと、少なくとも一つの参照セルNANDストリングR−NANDとが接続されている。
センスアンプ回路2は、ビット線対BL,BBLのセル電流差を検出してデータをセンスする、電流検出型のセンスユニットSAUを配置して構成される。図では、一対のビット線BL,BBLに一つずつセンスユニットSAUを配置した場合を示しているが、通常は複数対のビット線で一つのセンスユニットを共有する方式が用いられる。
情報セルNANDストリングT−NAND,C−NAND及び参照セルNANDストリングR−NANDは、ビット線と直交する方向に複数個配列されて、セルブロックを構成する。セルブロックには共通に、ワード線TWL,CWL,RWLが配設される。
図3は、センスユニットSAUに接続される情報セルNANDストリングT−NAND(またはC−NAND)と参照セルNANDストリングR−NANDの具体構成を示している。それぞれ、複数個の直列接続された、電気的書き換え可能な不揮発性メモリセルM0−M31と、選択ゲートトランジスタSG1,SG2とを有する。同じ不揮発性メモリセルM0−M31を用いているが、情報セルNANDストリングT−NAND(またはC−NAND)ではこれらが情報セルT−cell(またはC−cell)として、また参照セルNANDストリングR−NANDでは参照セルR−cellとして用いられる。
センスユニットSAUは、データセンス時、情報セルNANDストリングT−NAND(またはC−NAND)と参照セルNANDストリングR−NAND内の対応するセルが同時に選択され、それらのセル電流Icと参照電流Irの差を検出して、データセンスを行う。
図4は、4値記憶を行う場合のメモリセルのデータレベル(しきい値レベル)分布を示している。情報セルT−cell,C−cellには、4つのデータレベルL0,L1,L2,L3のいずれか一つが書かれる。参照セルR−cellには、例えばデータレベルL0とL1の間に設定された参照レベルLrが書かれる。
4つのデータレベルL0−L3のビット割付は、情報セルT−cellとC−cellの間で異なる。例えば、4値データを上位ビットHBと下位ビットLBで(HB,LB)で表すものとして、T−cellアレイ側の情報セルT−cellでは、L0=(1,0),L1=(1,1),L2=(0,1),L3=(0,0)とされ、C−cellアレイ側の情報セルC−cellでは、L0=(0,0),L1=(0,1),L2=(1,1),L3=(1,0)とされる。
図4には、読み出し時、情報セルT−cell,C−cellに読み出すべきデータに応じて与えられる読み出し電圧R1,R2,R3及び参照セルR−cellに与えられる読み出し電圧Rrを示している。また、書き込み時、情報セルT−cell,C−cellに書き込むべきデータに応じて与えられる書き込みベリファイ電圧P1,P2,P3及び参照セルR−cellに与えられる書き込みベリファイ電圧Prを示している。
この実施の形態では、二つの512MbitのバンクBNK0,BNK1を用いて、1Gbitメモリを構成する場合のECC回路8の搭載方法とそのアクセスモードについて説明する。
ここで想定しているメモリは、×16IO構成であって、各バンクのページアドレスは独立に設定できるが、アドレス発生は全バンクに共通であり、ページアドレスをどのバンクに適用するのかを指定することによって、各バンクに割り付けるものとする。従って、バンク間でインターリーブしてページアドレスを利用する。
1バンク当たり1024kページである。各バンクの16IOに共通のページ長は32ビットで、このうち8ビットがパラレルに出力できるとする。ページ長は1回のワード線アドレスの設定とセンス動作で読み出せる1IOあたり、バンクあたりの最長データ長である。
このような構成ではセンスアンプ回路2からの1回のデータ転送で128ビットのデータが外部に出力される。すなわち構成上2のべき乗のデータが転送される。
このようなフラッシュメモリに搭載するECC回路8として、2ビットのエラーが訂正可能なBCH(Bose−Chaudhuri−Hocquenghem)符号即ち、2重エラー訂正BCH符号を導入する。以下、この符号を2EC−BCH符号という。2ビットエラー訂正を可能とするためには、異なる根をもつ連立方程式が必要である。2EC−BCHコードは、以下に述べるように、二つの原始多項式の積で表されるコード生成多項式を持つ巡回符号である。
使用するビット長は2−1であり、情報として利用できるデータビットは2−1−2nである。2ビットのデータを扱うにはn=m+1とすることになり、必要な量の2倍に近いデータ長を用いなければならない。
図1のメモリ構成で、128ビットの情報データの2ビットエラー訂正を行なうのに必要な2EC−BCHコードは、ガロア体GF(2)であり、使用するビット長は2−1=255であり、エラーの検査ビットとして16ビットが必要である。従って、128ビットデータ長に16ビットの検査ビットを加えた144ビットが必須となるが、残りの111ビットが余分になる。このとき図1に示すように例えば各バンクを2分した上下セルからのデータバス5は、各々72DQ線となり、トータル144ビットのデータを一括転送することになる。
必要のない余分な111ビットの扱いと、BCH符号の内でどのように情報ビット選択するかでECCシステムの効率が変わるので、最適なECCシステムを構成する方法を検討しなければならない。
必要なビット数は不良セルの置き換えのリダンダンシーをも含めて考えれば128ビットより多くなることもあるが、ここで検討する128ビットデータ長の場合から容易に拡張可能である。
(データのエンコーディング)
ガロア体GF(2)上の2EC−BCHについて概要を説明する。GF(256)の原始根をαとすると、これを根とする対応するGF(2)上の8次の原始多項式m(x)は、数1のように表される。即ち、αのべき乗とm(x)によるxのべき乗の既約多項式がお互いに対応するGF(256)の要素となる。
また、αの3乗を根とする8次の既約多項式として、m(x)と互いに素な数1に示す多項式m(x)を用いる。
Figure 0004846384

これらの二つの原始多項式をもとに、2ビットエラー訂正可能なECCが構成される。書き込むべきデータに検査ビットを付加してエンコードするには、コード生成多項式として、数2のようなm(x)とm(x)の積多項式g(x)を作る。
Figure 0004846384

2ビットエラー訂正が可能な、情報ビットとして利用できる最大ビット数は、2−1=255から検査ビット数16を引いた239ビットである。これらを、ビット位置16から254の係数をa16〜a254として、数3のような238次の情報多項式f(x)を作る。
Figure 0004846384

実際にはデータとして用いるのは、239ビット中例えば128ビットであり、このとき111ビットの係数は“0” に固定して対応する次数の項がない情報多項式となる。239の項数の情報多項式f(x)のうち、その係数を“0”に固定する111項として、どの次数を選ぶかによって、後述するデコード時のシンドローム計算の計算量が異なるのでこの選択のしかたが重要となる。これは後に説明する。
情報多項式f(x)から、検査ビット16ビットを含むデータ多項式f(x)x16を作る。このデータ多項式から検査ビットを作るには、データ多項式f(x)x16をコード生成多項式g(x)で割った、数4のような15次の剰余多項式r(x)を求める。
Figure 0004846384

この剰余多項式r(x)の係数b15〜bを検査ビットとして用いる。すなわち、239から選ばれた128の係数ai(128)〜ai(1)を“情報ビット”とし、b15〜bの16ビットを“検査ビット”として、下記数5に示す計144ビットがメモリに記憶させる“データビット”となる。
Figure 0004846384

ここで、ai(k)は、メモリに外部から書き込むデータであり、このデータをもとに、チップ内部のECCシステムで検査ビットbが作られ、これが同時にセルアレイに書き込まれることになる。
(データのデコーディング)
次に、セルアレイから読み出した144ビットのデータからエラーを検出し、2ビットのエラーまでを訂正する方法について説明する。
f(x)x16なる254次のデータ多項式の係数をメモリに記憶させてエラーが生じたとすれば、そのエラーも254次多項式で表される。このエラー多項式をe(x)とすれば、メモリから読み出したデータは、数6のような構造の多項式ν(x)になる。
Figure 0004846384

この数6のエラー多項式e(x)の係数が“1”の項がエラーとなる。即ち、e(x)を検出することがエラー検出と訂正を行なうことに相当する。
第一段階として、読み出しデータ多項式ν(x)を原始多項式m(x),m(x)で割って各々の剰余をS(x),S(x)とする。数7に示すように、これは、e(x)をm(x),m(x)で割った剰余に等しいことは、ν(x)の構造から明らかである。
Figure 0004846384

この剰余S(x)とS(x)をシンドローム(syndrome)多項式という。
2ビットのエラーがiとjビットにあるとすれば、エラー多項式は、e(x)=x+xである。この実施の形態においては、GF(256)の要素であるm(x)の根であるx=αの指数(インデックス)nを計算することにより、iとjを求める。即ち、xのm(x)での剰余をp(x)としたとき、α=p(α)である。下記数8に示すように、エラーの次数の対応するα,αのそれぞれをX,Xとし、シンドロームS(x),S(x)に対してS(α)とS(α)に対応する指数をσ,σとして、S(α)とS(α)をそれぞれSとSとする。
Figure 0004846384

(α)=0であることから、次の数9の関係式が得られる。
Figure 0004846384

第二段階として未知数XとXを根とする多項式Λ(x)を考えると、数10のように、積XがSとSで表現できるので、係数がsyndrome多項式から計算できる。
Figure 0004846384

第三段階としてΛ(x)のGF(256)での根となるαを見つければ、X,X=αからエラービット位置iやjがαのnとして求められる。即ち、Λ(α)=0を、n=0〜254で探索してヒットした指数nがエラービットとなる。
下記数11に示すように、1ビットエラーの時は、X=S,X =S=S となり、エラー位置がSからわかる。エラーがないときにはS=S=0となる。3ビット以上のエラーでその位置が計算出来ないときにはS,Sの一方のみが0となる。
Figure 0004846384

前述のように、エラー位置の検索は、Λ(x)=0を満たすαの指数nを求めることである。そのために、数10に示す式Λ(x)を変形して、指数関係だけでnを求められるようにする。具体的に、Λ(x)=0を解くことは、これにx=ασ1yなる変換を施すことにより、下記数12の変数yを求めることと等価になる。
Figure 0004846384
この式を用いることより、変数計算から決まる指数とシンドローム計算から決まる指数とを直接比較して、一致する変数を見つけることができる。具体的には、数12を解くために、yにαを代入して、下記数13の指数yを求める。
Figure 0004846384
そして、下記数14のように、シンドローム計算で求まる指数σ−3σと変数計算から決まる指数yとを比較して、一致したnがエラー位置対応のyの指数ということになる。
Figure 0004846384
この変数yの指数を本来の変数xの指数に戻すためには、下記数15のように、ασ1をyに掛ければよい。
Figure 0004846384
数15のαの指数σ+nが、エラー位置に対応するxの指数であり、このxに対して、Λ(x)=0となる。
具体的な計算を行なう際に必要となるものをまとめると、次の通りである。
エンコードでは、最高254次のデータ多項式f(x)x16からデータビットとして選ばれた128個の項のコード生成多項式g(x)による剰余多項式r(x)の係数の表(剰余テーブル)が必要である。検査ビットの計算にはデータビットで選ばれた項に対応するこの係数を選び、“0”または“1”の2元符号を用いたGF(2)上での加算をおこなう。
デコードでは、syndrome多項式S(x)及びS(x)の計算を行なう際に、254次から0次までのm(x)による剰余p(x)の係数の表(剰余テーブル)が必要でこれから検査ビットと同様にして計算を行なう。
GF(256)を用いた2EC−BCHで使用可能なデータビット239を全て使用しないメモリシステムで、ECCでの計算時間を少なくするためには、情報多項式の中から実際に使用する項(次数)を選択するための具体的な選択方法が必要である。特にシンドロームの計算は剰余を効率的に求められるような項(次数)の選択をしなければならない。
まず剰余の計算の具体的な方法を説明する。
GF(2)上での計算では掛け算、割り算とも多項式の係数の足し算すなわち“1”の数の偶奇判定で行なわれる。関係する項の係数“1”の数が偶数なら“0”、奇数なら“1”が演算結果となるパリティチェックが基本の計算回路となる。
構成の単純な4ビットのパリティチェック回路(PC)を図5Aに示し、その回路記号を図5Bに示す。いろいろな構成のパリティチェックが可能な回路は工夫が可能であるが、ここでは簡単のためにパリティチェックのロジックをそのままトランジスタで表現した回路を示す。
このパリティチェック回路は、4ビットa,b,c,dとその相補信号/a,/b,/c,/dを入力として、偶数個の“1”が入力にあるとき端子EPに“0”を出力する上段回路401と、奇数個の“1”が入力にあるとき端子OPに“0”を出力する下段回路402とから構成されている。回路401,402はいずれも、電源Vddと接地Vssとの間に、4ビットが入力される4つのPMOSトランジスタと4つのNMOSトランジスタが直列接続されたゲートを8個並列接続して構成されている。
即ち上段回路401は、“1”入力が0,2,4個のいずれかのときに、Vss側のNMOSトランジスタが導通して、EP=“0”となる。下段回路402は、“1”入力が1個又は3個のいずれかのときに、Vss側のNMOSトランジスタが導通して、OP=“0”となる。
このパリティチェック回路では、4ビットのパリティチェックをインバータ1段相当の遅延時間で計算できる。
このようなパリティチェック回路を用いて、GF(256)の多項式のGF(2)上での積の計算法を、図6に示す。GF(256)の多項式の演算は、原始多項式が8次であるから、全て7次多項式p(x)間の演算となり、四則演算結果は全てどれかの多項式p(x)になる。{p(x)}−1なる除算は、p(x)255−n(x)の積になる。
(x)のm次の項の係数をP と表して、下記数16の7次多項式p(x),p(x)の積は、図6のように計算される。係数P は無論“0”か“1”である。
Figure 0004846384

≡p(x)(mod m(x))であるので、14次の項は掛けるp(x)の7つ先にpj+7(x)が出てくる、という規則を使うと、多項式p(x)とp(x)の積は、図6に示すように、各多項式の係数間の掛け算と和演算(=パリティチェック)とで可能となる。
すなわち、1か0との掛け算を行なったものを7から0の各次数ごとに和であるパリティチェックを行い、その結果がp(x)p(x)の各次数の係数になる。掛けるp(x)については7つ先までの多項式の係数が必要となる。
回路としてはパリティチェック回路のみでよく、掛けるp(x)からpj+7(x)の係数に固有の入力を行なう回路をもうけることになる。これは係数P =0のパリティチェックはないからである。パリティチェック回路は、図7に示すように、4ビットパリティチェック回路のほか、必要な入力数に応じて、3ビットパリティチェック回路、2ビットパリティチェック回路等を用いることができる。
このような演算方法をエンコードで検査ビットを生成する際に応用する。次にこれを説明する。
検査ビットの計算は、コード生成多項式g(x)で情報データから作られたデータ多項式f(x)x16を割って剰余多項式r(x)を求めることによって得られる。この演算を行うためには単項のxをg(x)で割った15次の剰余多項式r(x)の係数を予め求めておき、この係数をp(x)の積の場合と同じように用いる。r(x)の係数をR (m=0〜15)とし、情報ビットとしてのf(x)x16のxの係数をaとする。
具体的な計算は、データビットをa16〜a254としたとき、このうちの111ビット分を後のシンドローム計算が少なくなるように選んで“0”に固定してから、図8に示すように、データ多項式の係数aと剰余多項式の係数R の掛け算と、同じ次数の項の係数の和演算(パリティチェック)によって行なわれる。すなわちデータビットaが“1”である次数の剰余r(x)の係数R を各mごとにGF(2)上での和すなわちパリティチェックを行い、結果を検査ビットbとする。
次に、111ビットの“0”に固定するビット位置の選択を行なう際に必要となるデコードでの計算法を説明する。
まず、メモリセルから読み出したデータdを係数とする多項式ν(x)のm(x)での剰余を求めるのがシンドローム多項式S(x)の計算である。この演算は、図9に示すように、x(i=254〜0)のm(x)による剰余p(x)の係数P (m=0〜7)とdの積と、その結果の和(パリティチェック)とにより行なわれる。すなわち、dが“1”であるp(x)のm次の係数P のパリティチェックの結果をシンドローム多項式S(x)のm次の係数とする。
この計算では、dが“0”であるところと、P が“0”であるときは計算を行なわないので、238の情報ビット全てを使用しない場合に使用しないビットの選択が計算量を決めることになる。
次にもう一つのシンドローム多項式S(x)に関連する計算法を説明する。
シンドローム多項式S(x)に関連してエラー位置jの検索に必要なのは多項式S(x)である。S(x)自体は、ν(x)のm(x)での剰余である。ν(x)とS(x)との間には、xのm(x)による剰余多項式p(x)の係数をP (m=0〜7)とし、xの係数をdとして、次の数17のような関係がある。
Figure 0004846384
以上の数17から、S(x)はν(x)の係数dと剰余p3i(x)によって計算できる。従って必要なのは、xのm(x)でのp(x)の係数P であり、具体的な計算法は、図10のようになる。
この計算でもdが“0”であるところと、P3i が“0”であるときは計算を行なわないので、238の情報ビット全てを使用しない場合に使用しないビットの選択が計算量を決めることになる。デコードではシンドローム多項式の計算の後エラー位置を検索する演算などを行なうので、計算時間を短くするためにも計算量を出来るだけ少なくしたい。これは、238次の情報多項式f(x)の中から、例えば最適な128個の項(次数)の選択を行なうことにより可能となる。次にこの選択の方法について説明する。
シンドローム多項式S(x)とS(x)は同時に並列に計算を行なう。各多項式の各次数の係数の計算は“1”のパリティチェックであるのでどの次数の係数の計算もバラツキなくほぼ同じ時間で行なわれれば計算量は減る。
そのための選択の一つの方法は、シンドローム計算に用いられる7次の剰余多項式p(x)とp3n(x)の係数が“1”の総和を、各nについて求め、総和の数の少ない方から必要なデータビット数だけのnを選択する。この際最初の16個は検査ビットとしてx〜x15の係数を使うので固定し、17個目以降の選択に係数の“1”の総和の昇順選択をする。
また、同じ総和の数のグループ内で選択が終了する際には、係数“1”がp(x)とp3n(x)内で各次数の項の間に均等に分布するnを基準に同じ次数項での“1”の重なりが少ない順に選択する。すなわち基準となるnのp(x),p3n(x)の係数“1”の次数での項の係数の総和が少ない順に選択する。
このような選択方法で選んだ254次のデータ多項式f(x)x16で144ビットデータを扱う場合に使用する、144個の次数nを、図11に示す。
この選択方法は必ずしもパリティチェックを行なう多項式の各次数の係数“1”の数の最大のものを最も少なくするとは限らないが、全ての組合せの中から計算ステップが最小となるものを探索する様な大規模な計算を必要としないでシンドローム計算回路規模を減らしかつ、シンドローム計算のステップ数を減らす簡便な方法ではある。
図12は、g(x)の剰余r(x)であって、選択されたxの剰余r(x)の各次数での係数が“1”であるnの表である。
例えば、x15の係数が“1”であるr(x)の次数nは、図12のm=15の列の係数“1”の数が1から62の欄に書かれている17,18,22,…,245,249,250である。チェックビットのx15の係数に相当するb15は情報データ多項式f(x)x16の中のこの選択されたn次の項の係数のパリティチェックの結果として得られる。
このようにして、図12の表から行なう検査ビットの計算回路例を図13に示す。xのm=11,5,2は図12の表からパリティチェックするビット数が最大72個であるので、図13ではこの場合を例として示す。xのg(x)による剰余多項式r(x)のm次項の係数P が“0”でない次数nは表にしてあるので、各mについて表からnを選択し、aと/aを用いてパリティチェックを行なう。
入力の数が4の剰余系のいずれに属するかによって用いるパリティチェック回路(PC)を組合せる。すなわち、4で割り切れれば4ビットPCのみで、1が余れば5ビットPCを加え、2が余れば2ビットPCを加え、3が余れば3ビットPCを加える。
m=11,5,2の例では72入力である。このとき検査ビット計算回路は図13に示すように、3段のパリティチェック回路により構成することができる。初段は、18個の4ビットPCで構成する。2段目は18入力となるので、4個の4ビットPCと1個の2ビットPCを用いて構成する。3段目は5入力となるので1個の5ビットPCで構成する。3段目のパリティチェック回路の出力が検査ビットb,/bとなる。
検査ビットの計算の場合と同様の計算をシンドローム計算でも行なうので次にこれを説明する。
図14はシンドローム多項式S(x)の計算で使用する7次の剰余多項式p(x)の選択されたnでの各次数の係数“1”のnの表である。例えばxの係数が“1”であるp(x)の次数nは、表のm=7の列の係数“1”の数が1から56の欄に書かれている7,11,12,…,237,242,245である。S(x)のxの係数はデータ多項式ν(x)の中のこの選択されたn次の項の係数のパリティチェックの結果として得られる。
このようにして、図14の表から行なうシンドロームS1(x)の計算回路例を図15に示す。m=6,2の場合に、図14からパリティチェックするビット数が最大66個となるので、図15ではこの場合を例として示す。xのm(x)の剰余多項式p(x)のm次項の係数P が“0”でない次数nは表にしてあるので、各mについて表からnを選択し、データビットdと/dを用いてパリティチェックを行なう。
入力の数が4の剰余系のいずれに属するかによって用いるパリティチェッカ(PC)を組合せる。すなわち4で割り切れれば4ビットPCのみで、1が余れば5ビットPCを加え、2が余れば2ビットPCを加え、3が余れば3ビットPCを加える。
m=6,2の例では66入力であるので、この場合も3段のパリティチェック回路で構成する。初段は、4ビットPCを16個と2ビットPC1個で構成する。2段目は17入力となるから、4ビットPCを3個と5ビットPCを1個で構成する。3段目は4入力となるので4ビットPC一つでよい。3段目出力が、係数(s1)となる。
シンドローム多項式S(x)の計算にも同様であり、次にこれを説明する。
図16は、シンドローム多項式S(x)の計算で使用するx3nのm(x)での剰余p3n(x)の選択されたnでの各次数の係数“1”の次数nの表である。
例えば、xの係数が“1”であるp3n(x)の次数nは、表のm=7の列の係数“1”の数が1から58の欄に書かれている4,8,14,…,241,242,249である。S(x)のxの係数に相当する(s3)はデータ多項式ν(x)の中のこの選択されたn次の項の係数のパリティチェックの結果として得られる。
その計算回路例を図17に示す。図16から、xのm=5がパリティチェックするビット数が最大73個であるので、図17はこの場合を例として示す。x3nのm(x)の剰余多項式p3n(x)のm次項の係数P3n が“0”でないnは表にしてあるので、各mについて表からnを選択し、dと/dを用いてパリティチェックを行なう。
入力の数が4の剰余系のいずれに属するかによって用いるパリティチェッカを組合せる。すなわち4で割り切れれば4ビットPCのみで、1が余れば5ビットPCを加え、2が余れば2ビットPCを加え、3が余れば3ビットPCを加える。
m=5の例では73入力であるので、この場合も3段のパリティチェック回路で構成する。初段は、4ビットPCを17個と5ビットPCを1個で構成する。2段目は18入力となるので、4ビットPCを4個と2ビットPCを1個とで構成する。3段目は5入力となるので5ビットPCを1個で構成できる。3段目出力が、係数(s3),/(s3)となる。
次に指数比較によりエラー位置検索を行うエラー位置検索回路の回路規模を小さくするための方法について説明する。
必要な計算は、数14に示す指数の合同式を解くことであり、具体的には二つの合同式を解く必要がある。まずはじめに、シンドロームの指数からy+y+1=αynのyを求める。次に、このyに対応するy=αの指数nを対応関係で見つけた後、x=ασ1yによってxの指数iを合同式を解いて求める。
合同式はいずれもGF(256)であるので255を法としたものである。この計算はまともに行なうと、255×255の規模の比較を行うことに相当し、回路規模が大きくなる。そこで回路規模を小さくするために、計算を並列化する。
すなわち、255を互いに素である二つの因数(第1と第2の整数)に分解し、これらを法とする二つの合同式に分離して、これらの合同式を同時に満たす数はもともとの合同式も満たすことを利用する。この場合、二つの整数はできるだけ差が小さいことが、二つの合同式の演算を同時に並行させる場合に、それらの回路規模と計算時間を近いものとする上で好ましい。
具体的に、255は、17×15,51×5,85×3のように分解できるが、これらのうち17×15を用いて、17と15をそれぞれ法とする合同式を同時に解くことにする。
まず、yを求めるには、数18の合同式を用いる。即ち、15倍した指数間の17を法とした加減算と、17倍した指数間の15を法とした加減算とを同時並行させる。
Figure 0004846384
次に、指数iを求めるには、数19の合同式を用いる。ここでも、15倍した指数間の17を法とした加減算と、17倍した指数間の15を法とした加減算とを同時並行させる。
Figure 0004846384
以上の指数の和演算や差演算は、後に説明するが、インデックス・ローテータ(index rotator)という新たに工夫した演算回路を用いる。この回路は和や差を行なう指数の係数の255を法としての指数の積の規模を持つ。従って、上述のような分解をしなければ、最初の合同式は255×85=21675の規模、2番目の合同式は、255×255=65025の規模となる。
これに対して、合同式を分解してその演算を同時並行させることにより、最初の合同式の解法の規模は17×17=289と、15×5=75の合わせて364となり、1.7%ほどの規模になる。2番目の合同式の解法の規模は、17×17=289と15×15=225の合わせて514となり0.8%ほどの規模となる。以上により、計算規模を小さく、従って計算時間を短くすることができる。
次に、GF(256)での各インデックス間の関係をまとめておく。
図18は、xのm(x)による剰余であるp(x)の各次数の係数の“0”,“1”と、その0〜3次と4〜7次の係数をそれぞれ16進表示で表したものを各インデックスnについて示した。以下の全てのインデックスの関係はこの表をもとに計算される。すなわちインデックスを用いたm(x)の根αの四則はこの表のどこかに一対一で対応する。
図19A及び図19Bは、インデックスn=0〜255について、y=αに対してy+y+1=αynのインデックスyと、対応する多項式の係数及びその16進表示を示している。同じyに二つのnが対応する場合がエラー数2であり、ひとつの場合がエラー数1である。エラー数2の場合はペアとなるインデックスの値も示した。
なおインデックス85と170では、y+y+1=0である。これは、SとSが両方とも0か、Sのみが0であることを意味し、それぞれエラーなしか3つ以上のエラーかある場合に相当する。この場合はシンドロームの値を用いてデータ訂正の回路を直接制御する系を設けるようにする。
図20は、インデックスnとyの対応関係を改めてまとめたもので、nの順にyを並べた表と、yの順にnを並べた表とを併せて示している。後者ではy=0の場合を除いて、同一のyに二つのnが対応することを示している。なお、nが85と170では対応するyはない(ガロア体の要素0に対応)。
図21は、各インデックスyが15y(mod 17)と17y(mod 15)によって一意的に分類されること示すもので、左半分は15y(mod 17)の値の小さいものから、右半分は17y(mod 15)の小さいものから、それぞれyを並べている。
この図21の表から、数18に示した合同式の解法の並列化によって計算規模を縮小できることが分かる。15y(mod 17)と17y(mod 15)の合同式計算の結果の共通要素がシンドロームのインデックスから求められるyになる。
図22は、データビットとして選択されたインデックスiと対応するデータビットの物理的なビット位置kの対応を示すともに、インデックスiについて15i(mod 17)と15i(mod 15)で分類したものである。インデックスiが、15i(mod 17)と15i(mod 15)のペアで一対一に分類されることが見て取れる。この表から、数19に示した合同式の解法の並列化によって計算規模を縮小できることが分かる。
15i(mod 17)と15i(mod 15)の合同式計算の結果の共通要素が物理的なビット位置を計算する際にnとシンドロームSのインデックスから求められるi(すなわちk) になる。
図23Aは、インデックスの和や差を入力端から出力端への経路を巡回的に切り替えることにより演算するインデックス・ローテータであり、図23Bはその回路記号である。インデックス間の差は和とは逆方向へのシフトに対応するので和について説明する。インデックスの和は根αの表現では積であるので、インデックス・ローテータへの2入力をασiとασjで表し、出力をασi+σjと表す。
図23Aに示すように、インデックス・ローテータは、入力端201上の入力α,α,α,…,α254をスイッチ回路203と配線接続関係のみで出力端202のいずれかに伝える回路である。ここでは、GF(256)の全ての要素数の入出力端をもつ場合を示しており、このとき入力αはトランジスタスイッチ回路203を介して出力α,α,α,α,…,α254の出力端202のいずれにも接続可能とされている。
スイッチ回路トランジスタのゲートは、乗数や除数に相当する制御入力端204であって、α,α,α,α,…,α254の反転信号を制御入力として指数の和に相当する出力端へのトランジスタがオンするようにしている。図のようにスイッチトランジスタとしてNチャネルを利用する場合は、入出力端201,202は予めプリチャージしておき、入力端201の放電をどの出力端202に伝えるかを制御入力でコントロールすることになる。
上記説明ではGF(256)の全ての要素が使われるものとしたが、入出力に関係する要素の数はどのような和や差をインデックス間で行なうかで大きく異なる。このために前述のように、合同式の解法を並列化して規模を小さくする工夫をしたのであった。
次に実際にエラー位置検索に適用する例を示す。
図24のインデックス・ローテータ200aは、数18の第1式、15y≡15σ−45σ(mod 17)の右辺の演算を行うものである。入力はσである。シンドローム計算で得られた7次の多項式の係数(s3) (m=0〜7)をデコードして15σの17を法としての剰余類のインデックス位置の入力信号をドライブするために、17個のドライバ211aが設けられる。
制御入力はσである。シンドローム計算で得られた7次の多項式の係数(s1)(m=0〜7)をデコードして−45σの17を法としての剰余類のインデックス位置の制御信号をドライブするために、17個のドライバ212aが設けられる。
このインデックス・ローテータ200aにより、出力には前に示した表の15y(17)に相当する15yの17を法としての類を示すインデックスが得られる。
図25は、図24における入力及び制御入力のドライバ211a,212aに用いられるデコーダ回路を示す。シンドローム多項式の係数であるm=0〜7の信号を選択的にゲート信号とするトランジスタを直列したNAND回路を各剰余類に属する既約多項式p(x)の数だけ並列接続して構成される。
クロックCLKにより制御されるプリチャージトランジスタにより共通ノードをプリチャージし、その放電の有無で剰余類のインデックス信号とする。係数信号配線と、その反転信号配線とがペアをなして配設され、これがNAND回路を構成するトランジスタのゲートにデコードのコードに従って接続される。
並列接続されるNANDノードは、各剰余類インデックスあたり法が17なら255の二つの互いに素な因数への分解のもう一方の数15であり、法が15なら17である。
同様のデコーダ回路を制御信号入力にも用いるが、具体的なデコードのコードを図26に示す。この表は既約剰余p(x)のインデックスnを15倍した法17の剰余類15n(17)として分類したものである。0から16のインデックスで分類され、各々の類には15個のnが含まれ、これらに対応するp(x)の各次数の係数に従ってデコーダのトランジスタゲートへの信号配線接続が決まる。
例えばインデックス1においては、並列にOR接続されるNANDのノードは、nが161,59,246,127,42,93,178,144,212,229,110,195,8,76,25に相当する。
図27は、既約剰余p(x)のインデックスnを−45倍して法17の剰余類−45n(17)として分類したものである。0から16のインデックスで分類され、各々の類には15個のnが含まれ、これらに対応するp(x)の各次数の係数に従ってデコーダのトランジスタゲートへの信号配線接続が決まる。
例えばインデックス1においては、並列にOR接続されるNANDのノードは、nが88,173,122,156,71,20,190,207,241,54,37,139,105,224,3に相当する。
図28のインデックス・ローテータ200bは、数18の第2式、17y≡17σ−51σ(mod 15)の右辺の演算を行うもの、即ちシンドロームのインデックスσとσからインデックス17σ−51σ(mod15)を求めるものである。
入力はσである。シンドローム計算で得られた7次の多項式の係数(s3)(m=0〜7)をデコードして17σの法15の剰余類のインデックス位置の入力信号をドライブするために、15個のドライバ211bが設けられる。
制御入力はσである。シンドローム計算で得られた7次の多項式の係数(s1)(m=0〜7)をデコードして−51σの法15の剰余類のインデックス位置の制御信号をドライブするために、5個のドライバ212bが設けられる。即ち、法が15なので51とは3を共通因子として含み、剰余類の数は15を3で割った5となり、その剰余類の法15でのインデックスは0,3,6,9,12となるのでドライバ212bの数は5個で制御入力は5本となる。
出力には、前に示した表の17y(15)に相当する17yの15を法としての類を示すインデックスが得られる。
ドライバのデコーダ回路は、図24のそれと同じであり入力信号のコードなどが異なる。
図29は、既約剰余p(x)のインデックスnを17倍して法15の剰余類17n(15)として分類したものである。0から14のインデックスで分類され、各々の類には17個のnが含まれ、これらに対応するp(x)の各次数の係数に従ってデコーダのトランジスタゲートへの信号接続が決まる。
例えばインデックス1においては、並列にOR接続されるNANDのノードは、nが173,233,203,23,83,158,188,68,38,128,143,98,53,218,8,113,248に相当する。
図30は、既約剰余p(x)のインデックスnを−51倍して法15の剰余類−17n(15)として分類したものである。0,3,6,9,12のインデックスで分類され、各々の類には51個のnが含まれ、これらに対応するp(x)の各次数の係数に従ってデコーダのトランジスタゲートへの信号接続が決まる。
例えば、インデックス3においては、並列にOR接続されるNANDのノードはnが232,22,117,122,62,…,47,52,27,2に相当する。
図31は、上述した二つのインデックス・ローテータ200a,200bの演算結果を統合して、次の演算の信号を出力するための出力バス構造を示す。ローテータ200a,200bの出力を出すためにそれぞれ、17,15本の出力バス215a,215bが用意される。
これらのバス215a,215bにより、エラー位置をyのインデックスとして検出するデコーダ部分へ17+15のインデックスデータが送られる。ここでは、ローテータ演算回路出力を反転して選択されたインデックスが“H”として出力されるようになっている。
この出力バス215a,215bの信号から、これまで示した表から得られる {15y(17),17y(15)}からyへ、 yからnへ、nから15n(17),17n(15)へのデコードを一気に行い、次の計算へと移る。
図32は、数19の第1式、15i≡15n+15σ(mod 17)の右辺の演算を行うインデックス・ローテータ300aである。入力はインデックスバス215a,215bの信号で、これをデコードして15nの17を法としてのインデックスを入力とするために17個のドライバ311aが設けられる。
制御入力はσである。シンドローム計算で得られた7次の多項式の係数(s1)(m=0〜7)をデコードして15σ1の法17での剰余類のインデックス位置の制御信号をドライブするために17個のドライバ311bが設けられる。
出力には、15i(17)に相当する15iの17を法としての類を示すインデックスが得られる。
図33は、図32の入力側ドライバ311aのデコーダ回路を示す。前段のインデックスローテータ200a,200bの出力である剰余類インデックス17y(15)と15y(17)の信号を選択的にゲート信号とするトランジスタを直列接続したNAND回路を、各剰余類間の関係によって決まる数だけ並列接続して構成される。NAND回路の共通ノードを制御信号/prによりオンするプリチャージトランジスタによりプリチャージして、その放電の有無で選択された剰余類のインデックス信号とする。
NAND回路を構成するトランジスタとして、図でゲートがないものとして示しているのは、実際にはトランジスタを置かず次のトランジスタへの配線があるのみであり、実際に直列接続されるトランジスタ数は2つのみである。
次に、剰余類インデックス間の関係とデコーダの入力となるコードを示す。
図34は、剰余類インデックス15y(17),17y(15),15n(17)の間の関係を示している。またこれらのインデックスに対応するyとnの類を併せて示している。実際のデコードに利用されるのは剰余類インデックスのみである。
例えば、剰余類15n(17)には、{15y(17),17y(15)}={0,7},{1,14},{2,13},{4,3},{4,4},{7,0},{7,11},{8,1},{8,14},{11,3},{11,13},{12,6},{12,12},{15,11},{15,14}が対応しているので、これらのORがデコーダ出力となる。
この表に従ってデコードされて、インデックスローテータ300aの入力となる。
図35は、数19の第2式、17i≡17n+17σ(mod 15)の右辺の演算を行うインデックス・ローテータ300bである。入力はインデックスバス215a,215bの信号でこれをデコードして17nの15を法としてのインデックスを入力するための、15個のドライバ311bが設けられている。
制御入力はσである。シンドローム計算で得られた7次の多項式の係数(s1)(m=0〜7)をデコードして17σの法15による剰余類のインデックス位置の制御信号をドライブする、15個のドライバ312bが設けられている。
出力には、17i(15)に相当する17iの15を法としての類を示すインデックスが得られる。
ドライバに用いられるデコーダ回路は図33と同じであり、そのコードの表を図36に示す。この表は剰余類インデックス15y(17),17y(15),17n(15)の間の関係を示している。またこれらのインデックスに対応するyとnの類を併せて示している。実際のデコードに利用されるのは剰余類入インデックスのみである。
例えば、剰余類17n(15)=1には、{15y(17),17y(15)}={0,10},{1,1},{1,13},{2,9},{3,1},{4,3},{5,12},{6,3},{6,8},{11,3},{11,8},{12,12},{13,3},{14,1},{15,9},{16,1},{16,13}が対応しているので、これらのORがデコーダ出力となる。
この表に従ってデコードされた出力がインデックス・ローテータ300bの入力となる。
図37は、インデックス・ローテータ300a,300bの演算結果を統合して、エラー位置yをビット位置として検出する部分を示す。それぞれのローテータ300aと300bの出力はそれぞれ、15i(17)バス315aと17i(15)バス315bに出力される。
これらのバス315a,315b上のペアによってiを一意的に指定できることは、図22のkとiと15i(17)および17i(15)の表から明らかである。{15i(17),17i(15)}の組からkを指定できるので、2入力NORゲート群からなるデコーダ回路316でkを選択する。αが演算結果の最終的な出力となる。kは、選択される場合1又は2個選択され、2ビットまでのエラー位置を示すことになる。
図38は、剰余類インデックス15i(17),17i(15),i,kの関係をまとめて示している。物理的なビット位置kの順番にビット位置のインデックスiを並べている。また各i に対応する剰余類インデックス{15i(17),17i(15)}も示した。
これらの情報をもとに最終的にエラーを訂正する回路を、図39示す。エラー訂正回路はシンドロームの計算結果によって動作が異なる。すなわち、シンドロームS×Sが0でなければ、1つ又は2つのエラーが発生しており、データ訂正を行なう。S×S=0の場合は二つに別れ、S=S=0であればエラーなしでデータを修正する必要はない。S又はSの一方のみが0であれば、3ビット以上のエラーが発生しており修正は不可能である。
これらの場合の動作を判別するために、シンドローム多項式の係数(s1)と(s3)の係数がすべて“0”の場合を検出するNORゲートG1,G2を用いた判定回路401が設けられている。3ビット以上のエラーがある場合は、ゲートG1,G2の一方の出力が“0”となる。これを受けて、NORゲートG5が訂正不能(non correctable)を示す“1”を出力する。このとき、NORゲートG4の出力は“0”となり、エラー訂正を行うデコード回路402を非活性にする。
エラーがない場合は、ゲートG1,G2の出力が共に“1”となり、NORゲートG4,G5ともに“0”を出力し、デコード回路402を非活性にする。
1又は2ビットのエラーがある場合、ゲートG1,G2の出力は共に“0”となり、NORゲートG4の出力“1”がNORゲートG6とNANDゲートG7からなるデコード回路402を活性にする。αで選択されたビット位置kのデータdkを反転する反転回路403として、図40に示すような2ビットパリティチェック回路を用いて、エラーがない場合はdkをそのまま、エラー位置ではこれを反転して出力する。
この実施の形態によると、2ビットエラー訂正BCHコードを用いたオンチップのECC回路の回路規模と計算時間を効果的に小さくすることができる。即ち、エラー位置検索のためにこの実施の形態では、GF(256)の要素の積や商演算を、要素の生成元の指数の加減算として行う。その際、255を互いに素である因数15と17に分解し、17を法として、加減算の対象数に15を乗じた加減算と、15を法として、加減算の対象数に17を乗じた加減算とを並列に行い、その演算結果から255を法とする加減算結果を得る。
これにより、因数分解を行うことなく、255を法とする加減算をそのまま行う場合に比べると、指数の加減算を行うインデックス・ローテータの規模を、約2%以下に縮小することが可能になる。
図41は、1ブロック化して示したメモリコア回路10との関係で、ECC回路8の機能ブロック構成を示したものである。
エンコード部81では、データ多項式f(x)x16をコード生成多項式g(x)で割って、その剰余多項式r(x)の係数として検査ビットを求める。情報ビットと共に検査ビットがメモリコア回路10のセルアレイに書き込まれる。
多項式ν(x)で表されるメモリコア回路10からの読み出しデータは、シンドローム演算部82でシンドローム計算が行われる。得られたシンドロームに基づくエラー位置検索のためのインデックス計算部83は、インデックス・ローテータ200a,200bによる並列演算、更にその演算結果に対するインデックス・ローテータ300a,300bによる並列演算により行われる。エラー訂正部84でエラー位置のビットデータが反転される。
この発明は、上記実施の形態で説明したフラッシュメモリの他、如何なる半導体メモリにも適用可能である。
例えば図42は、通常のNAND型フラッシュメモリのメモリコア回路構成を示している。このメモリコア回路は、セルアレイ1a、センスアンプ回路2a及びロウデコーダ3aを有する。セルアレイ1aは、直列接続されたメモリセルM0−M31を有するNANDセルユニット(NANDストリング)を配列して構成されている。NANDセルユニットNUの一端は選択ゲートトランジスタS1を介してビット線BLe(BLo)に、他端は選択ゲートトランジスタS2を介して共通ソース線CELSRCに接続されている。
メモリセルの制御ゲートは、ワード線WL0−WL31に接続され、選択ゲートトランジスタS1,S2のゲートは選択ゲート線SGD,SGSに接続されている。ワード線WL0−WL31と選択ゲート線SGD,SGSを選択駆動するのがロウデコーダ3aである。
センスアンプ回路2aは、同時書き込み及び読み出しを行う1ページ分のセンスユニットSAを有する。各センスユニットSAには、ビット線選択回路4により、隣接するビット線BLe,BLoのいずれかが選択されて接続される。これにより、一つのワード線WLiと複数の偶数番ビット線BLe(或いは複数の奇数番ビット線BLo)により同時に選択されるメモリセルの集合が、同時に書き込み/読み出しが行われる1ページ(1セクタ)となる。非選択側のビット線は所定電位を与えたシールド線として利用することにより、選択ビット線間の干渉を防止することができる。
ワード線WL0−WL31を共有するNANDセルユニットの集合は、データ消去の単位とするブロックを構成し、図のようにビット線の方向に複数のブロックBLK0−BLKnが配置される。
この様なコア回路を持つNAND型フラッシュメモリにおいても、微細化や多値化が進むと、2ビット以上のエラー訂正をチップ内で実現する必要性が増える。この発明のエラー訂正システムは、エラー検出訂正の計算規模を抑えて高速演算可能としており、従ってこの様なメモリに適用して有効である。

なお、この実施の形態の並列演算方式は、有限体の剰余類の一般的性質を利用するものであって、GF(2)のBCHコードを用いる2ビットエラー訂正システム以外にも適用可能である。また実施の形態では、2ビットエラーまで訂正可能な2EC−BCHコードを説明したが、より一般的に、t≧2として、t重エラー訂正BCH符号を用いることができる。この場合、ガロア体GF(2)のt個の元α,α,…,α2t−1をコードの根に持つBCH符号となる。
この発明の実施の形態によるフラッシュメモリの要部構成を示す図である。 同フラッシュメモリのセルアレイの具体的構成を示す図である。 同セルアレイの更に具体的な構成を示す図である。 同フラッシュメモリのデータレベル関係を示す図である。 ECC回路に用いられる“1”の偶奇判定を行う4ビットパリティチェック回路を示す図である。 同パリティチェック回路の記号を示す図である。 GF(2)上での多項式の積演算の方法を示す図である。 その積演算に用いられるパリティチェック回路を示す図である。 ECC回路のエンコードにおける検査ビット計算法を示す図である。 ECC回路のデコードにおけるシンドローム多項式S(x)の計算法を示す図である。 同じくシンドローム多項式S(x)の計算法を示す図である。 情報多項式のうち、データビットに使用するために選択された144個の次数を示す図である。 同15次の剰余多項式の各次数の係数が“1”であるnの表である。 検査ビットの計算に用いられるパリティチェック回路構成を示す図である。 シンドローム多項式S(x)の計算で使用する剰余多項式p(x)の選択されたnでの各次数の係数“1”のnの表である。 シンドローム多項式S(x)の計算回路例である。 シンドローム多項式S(x)の計算で使用する剰余多項式p3n(x)の選択されたnでの各次数の係数“1”のnの表である。 シンドローム多項式S(x)の計算回路例である。 デコードで必要となる剰余多項式p(x)の係数表である。 エラー位置検索のためのインデックスnとyの対応関係を示す図である。 エラー位置検索のためのインデックスnとyの対応関係を示す図である。 インデックスnとyの対応関係をまとめて示す図である。 インデックスyの15y(mod 17)と17y(mod 15)による分類図である。 インデックスiと対応するデータビットの物理的位置kとの対応関係を示す図である。 インデックスの加減算を行うインデックス・ローテータ回路を示す図である。 同インデックス・ローテータ回路の回路記号を示す図である。 数18の第1式の演算を行うインデックス・ローテータ回路部を示す図である。 図25に用いられるデコーダ回路を示す図である。 インデックスnを剰余類インデックス15n(17)として分類して示す図である。 インデックスnを剰余類インデックス−45n(15)として分類して示す図である。 数18の第2式の演算を行うインデックス・ローテータ回路部を示す図である。 インデックスnを剰余類インデックス17n(15)として分類して示す図である。 インデックスnを剰余類インデックス−17n(15)として分類して示す図である。 図24,28のインデックス・ローテータの出力を統合する出力バス部を示す図である。 数19の第1式の演算を行うインデックス・ローテータ回路部を示す図である。 図32のデコーダ回路の構成を示す図である。 剰余類インデックス15y(17),17y(15),15n(17)の関係を示す図である。 数19の第2式の演算を行うインデックス・ローテータ回路部を示す図である。 図35のデコーダ回路のコード表を示す図である。 図32,35のインデックス・ローテータの出力を統合してエラービット位置を出力する回路部を示す図である。 剰余類インデックス15i(17),17i(15),i,kの関係を示す図である。 エラー訂正回路の構成を示す図である。 図39に用いられる2ビットパリティチェック回路の構成を示す図である。 1ブロック化したメモリコア回路との関係でECC回路の機能ブロック構成を示す図である。 メモリコア回路の他の構成例である。
符号の説明
1…セルアレイ、2…センスアンプ回路、3…ロウデコーダ、5,6…データバス、7…IOバッファ、8…ECC回路、201…演算部、201…入力端、202…出力端、203…スイッチ回路、204…制御入力端、200a,200b,300a,300b…インデックス・ローテータ回路、211a,211b,212a,212b,311a,311b,312a,312b…デコーダ回路、215a,215b,315a,315b…データバス、316…デコーダ回路、401…判定回路、402…デコード回路、403…2ビットパリティチェック回路(データ反転回路)。

Claims (6)

  1. 多値NANDセルユニットにより構成されたメモリセルアレイと、
    前記メモリセルアレイに対してデータの書き込み及び読み出しを行う書き込み/読み出し回路と、
    前記メモリセルアレイから読み出されたデータに対し、ガロア体GF(2)のエラー訂正符号を用いたエラー検出訂正を行うエラー検出訂正回路と、
    同一チップ内に搭載された半導体記憶装置において、
    前記書き込み/読み出し回路は、前記エラー検出訂正回路で生成された検査ビットを前記データと共に前記メモリセルアレイに書き込み、前記メモリセルアレイから前記データと共に前記検査ビットを読み出すものであり、
    前記エラー検出訂正回路は、
    外部から入力され前記メモリセルアレイに書き込むデータから検査ビットを生成するエンコード部と、
    前記メモリセルアレイから読み出された前記データ及び検査ビットから−1を法とする加減算を行う演算回路を有し、
    前記演算回路は、2−1を因数分解して互いに素でかつ差が可及的に小さくなるように選択された二つの数を第1及び第2の整数として、加減算の対象に第1の整数を乗じて第2の整数を法とした加減算を行う第1の演算部と、加減算の対象に第2の整数を乗じて第1の整数を法とした加減算を行う第2の演算部とを有し、これら第1及び第2の演算部が同時に並行して演算を行ってその演算結果から2−1を法とする加減算結果を得る
    ことを特徴とする半導体記憶装置。
  2. 前記エラー検出訂正回路は、2ビットのエラー訂正が可能なBCH符号を用いたものであって、エラー訂正可能な最大ビット数対応の次数を持つ情報多項式の中から、情報ビットとして利用する次数が、シンドローム多項式の計算規模が可及的に小さくなるように選択されている
    ことを特徴とする請求項1記載の半導体記憶装置。
  3. 前記演算回路は、ガロア体GF(2)の要素の積或いは商を求める演算を要素の生成元の指数の加減算により行うものであって、
    前記第1及び第2の演算部はそれぞれ、
    加減する一方の要素数に対応する数の入力端と、
    加減算結果を出力するための所定数の出力端と、
    加減する他方の要素数に対応する数の制御入力端を持って前記各入力端を任意の出力端に接続するための配線切り換えを行うスイッチ回路とを有するインデックス・ローテータである
    ことを特徴とする請求項1記載の半導体記憶装置。
  4. 前記エラー検出訂正回路は、ガロア体GF(256)による2ビットエラー訂正が可能なBCH符号を用いたものであり、
    前記演算回路は、係数が読み出しデータからデコードされたシンドロームS,Sで表現される多項式Λ(x)=x+Sx+(S+S )/Sの根αの指数nを求めるエラー位置検索回路である
    ことを特徴とする請求項1記載の半導体記憶装置。
  5. 前記エラー位置検索回路は、加減する一方の要素数に対応する数の入力端と、加減算結果を出力するための所定数の出力端と、加減する他方の要素数に対応する数の制御入力端を持って前記各入力端を任意の出力端に接続するための配線切り換えを行うスイッチ回路とを有するインデックス・ローテータを用いて構成されるものであり、
    デコードされた二つのシンドロームの指数σ,σを用いて、合同式σ−3σ≡y(mod255)を解くための、制御入力端と入力端のペアがそれぞれ(17,17)と(5,15)であって17を法とする加減算と15を法とする加減算を並列的に行う第1及び第2のインデックス・ローテータと、
    第1及び第2のインデックス・ローテータによる演算結果に基づいて、エラー位置xの指数iを合同式i≡n+σ(mod 255)を解いて求めるための、制御入力端と入力端のペアがそれぞれ(17,17)と(15,15)であって17を法とする加減算と15を法とする加減算を並列的に行う第3及び第4のインデックス・ローテータとを有する
    ことを特徴とする請求項4記載の半導体記憶装置。
  6. 前記メモリセルアレイは、多値のデータレベルを取り得る情報セルと、前記情報セルの取り得るデータレベルのうちの所定の2つのデータレベルの間の参照レベルに設定された参照セルとを有し、
    前記書き込み/読み出し回路は、前記情報セルと前記参照セルの読み出しデータを比較してデータの読み出しを行う
    ことを特徴とする請求項1〜5のいずれか1項記載の半導体記憶装置。
JP2006042250A 2006-02-20 2006-02-20 半導体記憶装置 Expired - Fee Related JP4846384B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006042250A JP4846384B2 (ja) 2006-02-20 2006-02-20 半導体記憶装置
US11/674,384 US7941733B2 (en) 2006-02-20 2007-02-13 Semiconductor memory device
US13/080,035 US8201055B2 (en) 2006-02-20 2011-04-05 Semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006042250A JP4846384B2 (ja) 2006-02-20 2006-02-20 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2007220260A JP2007220260A (ja) 2007-08-30
JP4846384B2 true JP4846384B2 (ja) 2011-12-28

Family

ID=38429656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006042250A Expired - Fee Related JP4846384B2 (ja) 2006-02-20 2006-02-20 半導体記憶装置

Country Status (2)

Country Link
US (2) US7941733B2 (ja)
JP (1) JP4846384B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
JP4621715B2 (ja) * 2007-08-13 2011-01-26 株式会社東芝 メモリ装置
US8533563B2 (en) * 2008-03-31 2013-09-10 Qimonda Ag Memory read-out
US8806294B2 (en) 2012-04-20 2014-08-12 Freescale Semiconductor, Inc. Error detection within a memory
JP2016126813A (ja) * 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
US10236917B2 (en) * 2016-09-15 2019-03-19 Qualcomm Incorporated Providing memory bandwidth compression in chipkill-correct memory architectures
US10565055B2 (en) * 2016-12-22 2020-02-18 SK Hynix Inc. Semiconductor memory device including an error correction code circuit
KR102580944B1 (ko) * 2018-04-20 2023-09-20 삼성전자주식회사 에러 정정 기능을 갖는 메모리 장치와 그 동작 방법

Family Cites Families (62)

* Cited by examiner, † Cited by third party
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
JPS5725047A (en) * 1980-07-23 1982-02-09 Sony Corp Error correcting method
US4413339A (en) * 1981-06-24 1983-11-01 Digital Equipment Corporation Multiple error detecting and correcting system employing Reed-Solomon codes
JPS58139399A (ja) * 1982-02-15 1983-08-18 Hitachi Ltd 半導体記憶装置
US4943967A (en) * 1982-02-15 1990-07-24 Hitachi, Ltd. Semiconductor memory with an improved dummy cell arrangement and with a built-in error correction code circuit
US5177743A (en) * 1982-02-15 1993-01-05 Hitachi, Ltd. Semiconductor memory
FR2528613B1 (fr) * 1982-06-09 1991-09-20 Hitachi Ltd Memoire a semi-conducteurs
GB2136248A (en) * 1983-02-25 1984-09-12 Philips Electronic Associated Text error correction in digital data transmission systems
US4597083A (en) * 1984-04-06 1986-06-24 Ampex Corporation Error detection and correction in digital communication systems
JPS61216045A (ja) * 1985-03-21 1986-09-25 Canon Inc 信号処理装置
US4709345A (en) * 1985-04-04 1987-11-24 Harris Corporation Apparatus for executing Chinese remainder theorem for residue decoding through quotient-remainder conversion
JPS61232731A (ja) * 1985-04-06 1986-10-17 Nec Corp 選択呼出受信機
JPS6246893A (ja) 1985-08-22 1987-02-28 日本鋼管株式会社 クレ−ンの位置決め方法
US4796260A (en) * 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US4849975A (en) * 1987-11-10 1989-07-18 International Business Machines Corporation Error correction method and apparatus
JP2881773B2 (ja) * 1988-07-30 1999-04-12 ソニー株式会社 誤り訂正装置
JPH02125532A (ja) * 1988-11-04 1990-05-14 Sony Corp Bch符号の復号装置
DE69230768T2 (de) * 1991-08-23 2000-09-28 Kabushiki Kaisha Toshiba, Kawasaki Funkinformations- und kommunikationssystem mit einem mehrträger-spreizspektrum-übertragungssystem
JPH0582613A (ja) 1991-09-20 1993-04-02 Fujitsu Miyagi Electron:Kk Icキヤリア及びic試験方法
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
US5754753A (en) * 1992-06-11 1998-05-19 Digital Equipment Corporation Multiple-bit error correction in computer main memory
US5459742A (en) * 1992-06-11 1995-10-17 Quantum Corporation Solid state disk memory using storage devices with defects
KR950008789B1 (ko) * 1992-07-30 1995-08-08 삼성전자주식회사 멀티-이씨씨(ecc)회로를 내장하는 반도체 메모리 장치
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
US5995559A (en) * 1995-08-31 1999-11-30 Telefonaktiebolaget Lm Ericsson Methods for improved communication using repeated words
US5978953A (en) * 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
JP3626315B2 (ja) * 1997-03-11 2005-03-09 株式会社東芝 剰余算装置、情報処理装置及び剰余算方法
US6457156B1 (en) * 1998-01-29 2002-09-24 Adaptec, Inc. Error correction method
JPH11283396A (ja) * 1998-03-27 1999-10-15 Sony Corp メモリ装置
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
JP2000214777A (ja) * 1999-01-21 2000-08-04 Fujitsu Ltd 巾乗剰余演算を行う演算装置
US6581178B1 (en) * 1999-02-15 2003-06-17 Nec Corporation Error correction coding/decoding method and apparatus
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
US6532565B1 (en) * 1999-11-15 2003-03-11 Hewlett-Packard Company Burst error and additional random bit error correction in a memory
JP3975245B2 (ja) * 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
US6640282B2 (en) * 2000-01-25 2003-10-28 Hewlett-Packard Development Company, L.P. Hot replace power control sequence logic
US6785835B2 (en) * 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6854070B2 (en) * 2000-01-25 2005-02-08 Hewlett-Packard Development Company, L.P. Hot-upgrade/hot-add memory
US6766469B2 (en) * 2000-01-25 2004-07-20 Hewlett-Packard Development Company, L.P. Hot-replace of memory
JP3415541B2 (ja) * 2000-01-31 2003-06-09 Necエレクトロニクス株式会社 半導体記憶装置
JP2001297038A (ja) * 2000-04-11 2001-10-26 Toshiba Corp データ記憶装置および記録媒体並びに記録媒体制御方法
US6757862B1 (en) * 2000-08-21 2004-06-29 Handspring, Inc. Method and apparatus for digital data error correction coding
JP4877894B2 (ja) * 2001-07-04 2012-02-15 ルネサスエレクトロニクス株式会社 半導体装置
US6981173B2 (en) * 2001-09-28 2005-12-27 Hewlett-Packard Development Company, L.P. Redundant memory sequence and fault isolation
US6684292B2 (en) * 2001-09-28 2004-01-27 Hewlett-Packard Development Company, L.P. Memory module resync
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6886048B2 (en) * 2001-11-15 2005-04-26 Hewlett-Packard Development Company, L.P. Techniques for processing out-of-order requests in a processor-based system
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US6907497B2 (en) * 2001-12-20 2005-06-14 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US6906964B2 (en) * 2003-06-27 2005-06-14 Hewlett-Packard Development Company, L.P. Multiple buffer memory interface
EP1612949B1 (en) * 2004-06-30 2010-04-21 STMicroelectronics Srl Method and system for correcting errors in electronic memory devices
JP4728726B2 (ja) * 2005-07-25 2011-07-20 株式会社東芝 半導体記憶装置
US7650557B2 (en) * 2005-09-19 2010-01-19 Network Appliance, Inc. Memory scrubbing of expanded memory
JP4791831B2 (ja) * 2006-01-20 2011-10-12 株式会社東芝 半導体記憶装置
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
JP5259343B2 (ja) * 2008-10-31 2013-08-07 株式会社東芝 メモリ装置

Also Published As

Publication number Publication date
JP2007220260A (ja) 2007-08-30
US7941733B2 (en) 2011-05-10
US8201055B2 (en) 2012-06-12
US20110185261A1 (en) 2011-07-28
US20070198626A1 (en) 2007-08-23

Similar Documents

Publication Publication Date Title
JP4791831B2 (ja) 半導体記憶装置
JP4846384B2 (ja) 半導体記憶装置
JP4836608B2 (ja) 半導体記憶装置
JP2007305267A (ja) 半導体記憶装置
KR101138120B1 (ko) 치엔 검색 장치 및 치엔 검색 방법
US8291303B2 (en) Memory device with error correction system for detection and correction errors in read out data
JP5259343B2 (ja) メモリ装置
JP2020047312A (ja) メモリシステム
JP2010518464A (ja) 半導体記憶装置
TWI479317B (zh) Memory system
JP4891704B2 (ja) 半導体記憶装置
JP5143203B2 (ja) メモリシステム
US10133628B2 (en) Apparatuses and methods for encoding using error protection codes
KR101566088B1 (ko) 조합 숫자 시스템을 사용한 인코딩 및 디코딩 기법
JP2012123600A (ja) メモリシステム及びメモリコントローラ
CN108574495B (zh) 错误定位多项式解码器及方法
KR102021560B1 (ko) 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치
US11831335B2 (en) Memory system and control method of controlling nonvolatile memory
KR20230116051A (ko) 프로그래밍가능 오류 정정 코드 인코딩 및 디코딩 로직
JP2014057203A (ja) ガロア体演算回路、及びメモリ装置
JP2014064242A (ja) 誤り検出訂正回路及び半導体メモリ
JP2014068058A (ja) 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110902

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110920

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111012

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees