特許文献1には、エラー基準値をどのように選択したら良いかについて、具体的記述が無い。ここで、ECC回路が救済できるビット数を大幅に増やせば、外部インターフェースから見た不良ビット発生率は減少する。しかしながら、ECC回路が救済できるビット数、つまり、誤り訂正可能なビット数kを増やすと、不良を生じたビットの位置を計算するのに、例えば、k次の(ガロア体上の)誤り位置多項式の解を求める必要が生じる。このため、計算回路が複雑化し、計算時間や計算回路の面積が急増する。
さらに、BCH(Bose-Chaudhuri-Hocquenghem)符号の場合には、ECCビットを含む符号長を“n”として、ECCビットが、nビットのどこが誤りビットであるかの情報を含む必要がある。このため、ECCで救済できるビットが1ビット増えると、少なくとも、
log2(n)個
の小数点を切り上げたビット数だけ、ECCが使う検査ビット数が増大する。よって、符号長が長くなってしまい、結果、チップ面積が増加したり、ユーザが使用できるデータビット数が減少したりする。
また、特許文献1には、システムの具体的構成、例えば、空き記憶領域の構成や、記憶領域をどの程度準備すれば、チップ面積の増大を抑えつつ外部インターフェースから見た不良ビット発生率を抑制できるか、あるいはどの程度効果があるかについての開示が無い。
さらに、特許文献1には、どのように空き記憶領域を準備し、置き換えたら高速に置き換えができるかについての開示が無い。
また、空き記憶領域はデータ記憶領域と同じ領域として、両者を含む初期容量を、ユーザの使用できるデータ記憶領域として保証している。このため、上記ECC回路が救済できるビット数を越えた不良が生じると、ユーザの使用できるデータ記憶領域が実質減ってしまい、どのくらい減ってしまうかの保証も困難である。
この発明の実施形態に開示される不揮発性半導体記憶装置は、概略、ECC(error correcting code)を分析し、1ビットより多い規定数以上の不良ビットを生じたページを、予備ページに置き換える。このようにして、ECC回路の検査ビット数を増加させること無しに、規定数以上の不良ビットが生じた場合でも、外部インターフェースから見た不良ビット発生率を低減する。さらに、予備ページに置き換えるのに必要な処理時間を削減する。
特に、空き記憶領域として準備する数について、ある数以上、予めスペア領域として用意する。これにより、ユーザの使用できるデータ記憶領域をライフエンドまで保証しつつ、外部インターフェースから見た不良ビット発生率を抑制できるCriticality(臨界性)を生じさせ、高速置き換えを可能とした半導体メモリを含むデータ記憶システムが実現される。
以下、この発明の実施形態のいくつかを、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
(第1実施形態)
図1はこの発明の第1実施形態に係るデータ記憶システムの構成例を示すブロック図、図2はこの発明の第1実施形態に係るデータ記憶システムのセルアレイ部、及びセンスアンプ部の構成例を示すブロック図である。図1では、データ選択線(WL)、ブロック選択線(SSL、GSL)は省略する。
なお、本明細書では、メモリセルブロックとは、単一または複数のページを含み、同時に消去動作が行われるメモリセルの単位を示す。ここで、例えば、電荷蓄積層を有したフラッシュメモリセルのように、1ページのメモリセルの消去時間が1ページのメモリセルの書き込み時間よりも長い場合には、メモリセルブロックは複数のページを含み、複数のページで一度に消去動作が行われるように構成されても良い。このように構成すると、1ブロックあたりの書き込み時間と1ブロックあたりの消去時間とを同程度にすることができ、システムから見た書き込みデータ転送速度、及び消去速度のパフォーマンスを向上できる。メモリセルブロック49の具体的構成例を以下に述べる。
図3はNANDセルブロック49の等価回路例を示す等価回路図、図4はNANDセルブロック49の平面パターン例を示す平面図である。図4では、図3に示すセルブロック49を3つ並列した構造を示している。また、図4では、セル構造をわかりやすくするために、制御ゲート電極27よりも下の構造のみを示している。
図3に示すように、電荷蓄積層26を有するMOSトランジスタからなる不揮発性メモリセルM0〜M15が直列に接続され、その一端は選択トランジスタS1を介して“BL”と記したデータ転送線に接続され、その他端は選択トランジスタS2を介して“SL”と記した共通ソース線に接続されている。メモリセルM0〜M15、及び選択トランジスタS1、S2はそれぞれ、同一のp型ウェル23上に形成されている。メモリセルM0〜M15それぞれの制御電極は、“WL0〜WL15”と記したデータ選択線に接続されている。データ転送線BLに沿った複数のメモリセルブロック49から1つのメモリセルブロック49を選択し、選択したメモリセルブロックをデータ転送線BLに接続するため、選択トランジスタS1の制御電極はブロック選択線SSLに接続され、選択トランジスタS2の制御電極はブロック選択線GSLに接続されている。これにより、いわゆるNAND型メモリセルブロック49(点線の領域)が構成されている。本第1実施形態では、選択トランジスタS1、S2の制御配線(ブロック選択線)SSL、GSLが、メモリセルM0〜M15の電荷蓄積層26と同じ層の導電体によって、図3中の紙面上下方向に隣接する選択トランジスタS1、S2それぞれのゲートを接続しながら形成されている。ブロック選択線SSL、GSLは、メモリセルブロック49に少なくとも1本以上あればよい。ブロック選択線SSL、GSLは、データ選択線WL0〜WL15と同一方向に形成されることが、これに限られる訳ではないが望ましい。高密度化が図ることができるためである。図3では、メモリセルブロック49に16=24個のメモリセルが接続されている例を示したが、データ転送線、及びデータ選択線に接続するメモリセルの数は複数であればよく、2n個(nは正の整数)であることが、これに限られる訳ではないが望ましい。アドレスデコードが容易となるためである。
図5は図4中のV−V線に沿う断面図、図6は図4中のVI−VI線に沿う断面図である。図5に示す断面はメモリセルの構造例を示す断面に相当し、図6に示す断面はメモリセルブロックの構造例を示す断面に相当する。
図5、及び図6に示すように、p型シリコン領域23は、例えば、不純物濃度が1014cm-3から1019cm-3程度のボロンを含む。p型シリコン領域23上には、トンネル絶縁膜25、25SSL、25GSLが形成されている。トンネル絶縁膜25の一例は、例えば、3nmから15nm程度の厚みを持つシリコン酸化膜、またはシリコンオキシナイトライド膜である。トンネル絶縁膜25、25SSL、25GSL上には、電荷蓄積層26、26SSL、26GSLが形成されている。電荷蓄積層26、26SSL、26GSLの一例は、例えば、リン、または砒素を1018cm-3から1021cm-3程度含み、10nmから500nm程度の厚みを持つポリシリコンである。トンネル絶縁膜25(25、25SSL、25GSL)、及び電荷蓄積層26(26、26SSL、26GSL)は、例えば、シリコン酸化膜からなる素子分離絶縁膜24が形成されていない領域上に、p型シリコン領域23に対して自己整合的に形成されている。この構造は、例えば、トンネル絶縁膜25及び電荷蓄積層26を堆積し、堆積したトンネル絶縁膜25及び電荷蓄積層26をパターニングし、p型シリコン領域23内にかけてエッチングをさらに進め、p型シリコン領域23内に、深さが、例えば、0.05μm〜0.5μm程度の浅い溝(Shallow Trench)を形成する。次いで、浅い溝を絶縁物(素子分離絶縁膜24)で埋めることで形成できる。この構造の利点は、例えば、トンネル絶縁膜25及び電荷蓄積層26を、段差がない平面、即ち、浅い溝が形成されていないp型シリコン領域23上に形成でき、トンネル絶縁膜25及び電荷蓄積層26に対して、均一性が良く、特性の揃った膜が得られることである。
電荷蓄積層26、26SSL、26GSL上には、ブロック絶縁膜50、50SSL、50GSLが形成されている。ブロック絶縁膜50、50SSL、50GSLの例は、例えば、厚さが5nmから30nm程度の、シリコン酸化膜、またはオキシナイトライド膜、またはシリコン酸化膜/シリコン窒化膜/シリコン酸化膜の三層膜である。ブロック絶縁膜(インターゲート絶縁膜)50、50SSL、50GSL上には、制御ゲート27が形成されている。制御ゲート27の一例は、例えば、10nmから500nm程度の厚さを持ち、リン、砒素、またはボロンを1017cm-3から1021cm-3程度含むポリシリコン、または金属シリサイドとポリシリコンとのスタック構造である。金属シリサイドの例は、例えば、WSi(タングステンシリサイド)、NiSi(ニッケルシリサイド)、MoSi(モリブデンシリサイド)、TiSi(チタンシリサイド)、CoSi(コバルトシリサイド)である。制御ゲート27は、例えば、図2に示すように、データ選択線WL0〜WL15を構成する。データ選択線WL0〜WL15は、隣接するメモリセルブロック49どうしを接続し、ロウ方向に沿ってメモリセルアレイ1の一端から他端まで形成される。p型シリコン領域23は、例えば、p型シリコン基板21から、n型シリコン領域22によって分離される。これにより、p型シリコン領域23は、p型シリコン基板21から独立して電圧を印加できる。p型シリコン領域23は、p型シリコン基板21から独立して電圧を印加できるように形成すると、消去時の昇圧回路負荷を減らし、消費電力を抑制できる利点を得られる。
また、図5に示すメモリセルは、電荷蓄積層26をメモリセル毎に分離する際のエッチング工程において、p型シリコン領域23の側壁(浅い溝の側壁)が外界に露出することがない。これは、電荷蓄積層26の側壁、及びp型シリコン領域23等の側壁が素子分離絶縁膜24によって覆われているためである。このゲート構造によれば、電荷蓄積層26がp型シリコン領域23よりも下の部分にまで形成されることを抑制できる。これによる利点は、例えば、p型シリコン領域23と素子分離絶縁膜24との境界において、ゲート電界集中の抑制、及びしきい値が低い寄生トランジスタが発生することを抑制できることにある。さらに、例えば、p型シリコン領域23と素子分離絶縁膜24との境界において、ゲート電界集中を抑制でき、ゲート電界集中に起因した書き込みしきい値の低下現象、いわゆるサイドウォーク(sidewalk)現象を生じ難くできることにある。これらの利点により、図5に示すメモリセルは高い信頼性を持つ。
図6に示すように、トンネル絶縁膜25(25、25SSL、25GSL)、電荷蓄積層26(26、26SSL、26GSL)、ブロック絶縁膜50(50、50SSL、50GSL)、制御ゲート27を含む積層ゲート構造の両側壁には、それぞれ側壁絶縁膜43が形成される。側壁絶縁膜43の例は、例えば、5nmから200nmの厚みを持つシリコン窒化膜、またはシリコン酸化膜である。積層ゲート構造間の下に位置するp型シリコン領域23の部分には、n型拡散層28が形成される。n型拡散層28は、メモリセルや選択トランジスタのソース電極、またはドレイン電極である。メモリセルは、n型拡散層28、トンネル絶縁膜25、電荷蓄積層26、ブロック絶縁膜50、制御ゲート27により構成される。これは、いわゆる、浮遊ゲート型EEPROMセルと呼ばれるセルであり、そのゲート長は、例えば、0.5μm以下0.01以上とされる。n型拡散層28は、例えば、リンや砒素、アンチモンを表面濃度が1017cm-3から1021cm-3の範囲で含み、深さ10nmから500nm程度に形成される。さらに、n型拡散層28は隣接するメモリセル同士共有され、いわゆる、NAND接続が実現されている。
図6に示す“26SSL”、“26GSL”は、それぞれ“SSL”に相当するブロック選択線、“GSL”に相当するブロック選択線に接続されたゲート電極であり、上記浮遊ゲート型EEPROMの浮遊ゲート(電荷蓄積層26)と同じ導電体層を用いて形成されている。なお、本明細書では、便宜上、“26SSL”、“26GSL”を電荷蓄積層と呼んでいるが、実際には“26SSL”、“26GSL”は電荷蓄積層ではなくゲート電極である。以下、ゲート電極26SSL、26GSLと読み替える。ゲート電極26SSL、26GSLそれぞれのゲート長、即ち、選択トランジスタのゲート長は、メモリセルのゲート長よりも長い。例えば、1μm以下0.02μm以上である。選択トランジスタのゲート長を、メモリセルのゲート長より長くすることにより、ブロック選択時とブロック非選択時とのオンオフ比を大きく確保できる。オンオフ比を大きくできることは、誤書き込みの防止、及び誤読み出しの防止に有利である。
ゲート電極26SSLを挟んで、n型拡散層28の反対側に形成されたn型拡散層28dは、コンタクト31d、中間配線33d、及びコンタクト34dを介してデータ転送線36(BL)に接続されている。n型拡散層28dは、n型拡散層28と同様に、ソース電極、またはドレイン電極である。データ転送線36(BL)の材料例は、例えば、タングステン、タングステンシリサイド、チタン、チタンナイトライド、またはアルミニウムである。中間配線33dの材料も、例えば、データ転送線36(BL)と同様で良い。データ転送線36(BL)は、カラム方向に隣接するメモリセルブロックどうしを接続するように、図4において紙面左右方向に、例えば、メモリセルアレイの境界まで形成されている。ゲート電極26GSLを挟んで、n型拡散層28の反対側に形成されたn型拡散層28sは、コンタクト31sを介してソース線33(SL)に接続されている。n型拡散層28sは、n型拡散層28と同様に、ソース電極、またはドレイン電極である。ソース線33sは、例えば、中間配線33dと、同じ導電体層により形成される。ソース線33sは、ロウ方向に隣接するメモリセルブロックどうしを接続するように、図4において紙面上下方向に、例えば、メモリセルアレイの境界まで形成されている。本例では、ソース線33(SL)を有する例を示しているが、n型拡散層28sを、図4において紙面上下方向に、例えば、メモリセルアレイの境界まで形成し、ソース線としても良い。コンタクト31d、31sは導電領域であり、例えば、層間絶縁膜68に形成された開口30d、30s内に充填された導電物で形成される。導電物の材料例は、例えば、n型またはp型にドープされたポリシリコン、タングステン、タングステンシリサイド、アルミニウム、チタンナイトライド、チタンである。コンタクト34dも、コンタクト31d、31sと同様である。上記層間絶縁膜68は、ソース線33(SL)、データ転送線36(BL)、選択トランジスタ、メモリセルをそれぞれ絶縁する絶縁膜である。層間絶縁膜68の材料例は、例えば、二酸化シリコン、窒化シリコンである。層間絶縁膜68、及びデータ転送線36(BL)の上層には、データ転送線36(BL)よりも上層に存在する上部配線(図示せず)や、絶縁膜保護層37が形成される。上部配線の材料例は、例えば、タングステン、アルミニウム、銅である。絶縁膜保護層37の材料例は、例えば、二酸化シリコン、窒化シリコン、ポリイミドである。
図1、図2に示すように、メモリセルアレイ1には、メモリセルブロック49が配列される。メモリセルブロック49は、直列接続された不揮発性メモリセルを含む。または後述するように並列接続された不揮発性メモリセルを含む。
センスアンプ回路46a、…、46kは、データ読み出し時においてデータ転送線BL1a、BL2a、…、BL1k、BL2kに読み出された読み出しデータをセンス増幅する。センスアンプ回路46a、…、46kは、データレジスタを兼ねており、データ書き込み時において書き込みデータを保持する。このため、センスアンプ回路46a、…、46kは、例えば、フリップフロップ回路を主体とした回路にて構成される。
センスアンプ回路46aは、データ転送線BL1a、BL2aに、それぞれデータ転送線選択トランジスタQ1a、Q2aを介して接続される。以下、同様に、センスアンプ回路46kは、データ転送線BL1k、BL2kに、それぞれデータ転送線選択トランジスタQ1k、Q2kを介して接続される。
センスアンプ回路46a〜46kは、データ入出力バッファ45に接続される。センスアンプ回路46a〜46kとデータ入出力バッファ45との接続は、例えば、カラムデコーダ48の出力によって制御される。
カラムデコーダ48は、アドレスバッファ47からアドレス信号を受け、アドレス信号をデコードしたデコード結果を出力する。これにより、データ入出力バッファ45に与えられた書き込みデータはメモリセルアレイ1に書き込むことができ、また、メモリセルアレイ1から読み出された読み出しデータはデータ入出力バッファ45に、図1に示す第3の内部I/O線を介して読み出すことができる。
ロウデコーダ3は、メモリセルアレイ1内のメモリセルを選択する。具体的には、ロウデコーダ3は、データ選択線WL0〜WL15、及びブロック選択ゲートSSL、GSLを制御し、メモリセルアレイ1内のメモリセルを選択する。ロウデコーダ3は、スペア領域のロウデコーダ3sと、非スペア領域のロウデコーダ3nとに分けられる。スペア領域のロウデコーダ3sが指定するブロックアドレスは、限られる訳ではないが、消去の“0”ビットを含む数が少なくなるように形成されていると良い(例えば、図12参照)。この理由は後述する。
本実施形態のメモリセルアレイ1は、非スペア領域1nとスペア領域1sとを含む。非スペア領域1n、及びスペア領域1sは、それぞれ複数個のメモリセルブロック49を有する。非スペア領域1nにおいて、複数個のメモリセルブロック49は行列状に配置される。同じくスペア領域1sにおいても(ただし、図2は行列のうち、行(ロウ)のみを示す)、複数個のメモリセルブロック49は行列状に配置される。非スペア領域1n、及びスペア領域1sにおいて、ロウ方向に配置されたメモリセルブロック49はそれぞれ、データ選択線WLに共通に接続され、いわゆるページを構成する。
スペア領域1sは、非スペア領域1n内のメモリセルブロック49において置き換えの必要が生じた場合に、置き換えの必要が生じた非スペア領域1n内のメモリセルブロック49のデータをコピーし、置き換えるメモリセルブロック49を含む。スペア領域1s内のメモリセルブロック49の総数は、例えば、非スペア領域1n内のメモリセルブロック49の総数よりも少なくなるように形成されている。ここで、複数ページを含むブロックのデータをフラッシュ消去(全消去)し、書き込むデータがある場合にのみ書き込みを行うメモリでは、スペア領域1sのデータを予め消去状態としておき、置き換えの必要が生じた場合に、スペア領域1sを用いるようにする。このようにスペア領域1sのデータを予め消去状態としておくことで、置き換えの必要が生じた場合に、スペア領域1sからデータを消去する時間を短縮できる。
基板電位制御回路42は、メモリセルアレイ1が形成されるp型シリコン領域23(またはp型シリコン基板21)の電位を制御する。基板電位制御回路42は、限られる訳ではないが、消去時に、例えば、10V以上の消去電圧を発生できることが望ましい。
Vpgm発生回路41aは、例えば、電源電圧を昇圧した書き込み電圧Vpgmを発生する。書き込み電圧Vpgmは、データ書き込み時、選択されたメモリセルに対して使用される。書き込み電圧Vpgmは、例えば、選択されたメモリセルの制御ゲート(データ選択線WL)に与えられる。書き込み電圧Vpgmの電圧例は、6V以上30V以下である。
Vpass発生回路41bは、書き込み用中間電圧Vpassを発生する。書き込み用中間電圧Vpassは、データ書き込み時、非選択のメモリセルに対して使用される。書き込み用中間電圧Vpassは、データ書き込み時、非選択のメモリセルの、例えば、制御ゲート(データ選択線WL)に与えられる。書き込み用中間電圧Vpassの電圧例は、3V以上15V以下である。
Vread発生回路41cは、読み出し用中間電圧Vreadを発生する。読み出し用中間電圧Vreadは、データ読み出し時、非選択のメモリセルに対して使用される。読み出し用中間電圧Vreadは、データ読み出し時、非選択のメモリセルの、例えば、制御ゲート(データ選択線WL)に与えられる。読み出し用中間電圧Vreadの電圧例は、1V以上9V以下である。メモリセルアレイ1が、NAND型メモリセルアレイである場合には、限られる訳では無いが、メモリセルの書き込みしきい値電圧の上限よりも、例えば、1V程度高い電圧にすると良い。十分な読み出し電流の確保、及びリードディスターブ(read-disturb)の抑制の、双方を満足する観点からである。
Vref発生回路41dは、しきい値判定電圧Vrefを発生する。しきい値判定電圧Vrefは、データ読み出し時、選択されたメモリセルに対して使用される。しきい値判定電圧Vrefは、データ読み出し時、選択されたメモリセルの、例えば、制御ゲート(データ選択線WL)に与えられる。しきい値判定電圧Vrefの電圧例は、メモリセルの、論理的に分離され、かつ論理的に隣接するしきい値電圧分布どうしの中間の電圧である。例えば、2値メモリであるならば、データ“1”に対応するしきい値電圧分布と、データ“0”に対応するしきい値電圧分布との間の電圧に設定される。多値メモリであって、多値データの判定を、しきい値判定電圧Vrefによって実行する場合には、しきい値判定電圧Vrefは複数設定される。例えば、4値メモリならば、例えば、3つのしきい値判定電圧Vref1〜Vref3がそれぞれ、
データ“11”に対応するしきい値電圧分布と、データ“10”に対応するしきい値電圧分布との間の電圧、
データ“10”に対応するしきい値電圧分布と、データ“00”に対応するしきい値電圧分布との間の電圧、及び
データ“00”に対応するしきい値電圧分布と、データ“01”に対応するしきい値電圧分布との間の電圧それぞれに設定される。
これらの電圧を発生する電圧発生回路41a、41b、41c、41d、42はそれぞれ、制御回路40によって制御される。これにより、発生回路41a、41b、41c、41d、42はそれぞれ、“データ書き込み”、“データ読み出し”、及び“データ消去”の各状態において、必要な電圧出力を、データ選択線ドライバ2や、もしくはp型シリコン領域23(またはp型シリコン基板21)に与える。
データ線制御ドライバ2は、ロウデコーダ3の出力に従って、電圧発生回路41a、41b、41c、41dの電圧出力を、書き込み、または読み出しが必要なメモリセルの制御ゲート(データ選択線WL0〜WL15)、及び選択された選択トランジスタの制御ゲート(ブロック選択線SSL、GSL)に対して与えるスイッチ回路である。
本明細書の全ての実施形態では、一連のシーケンスで読み出されるデータビット数が、“t”を“1”より大きな自然数として一連のシーケンスで読み出されるデータビット数“n”が、{2m-1−t×(m−1)−1}より大きく、(2m−t×m−1)以下である場合、少なくとも(n+t×m)個以上のメモリセルブロック49を、図2に示す紙面左右、つまりデータ選択線WLが延びる方向(ロウ方向)に沿って並列に用意する。これは1ページである。
図2に示す例では、センスアンプ回路46についても、メモリセルブロック49の1ページ分の並列接続数と同様に、少なくとも(n+t×m)個以上用意すると良い。このようにセンスアンプ回路46及びメモリセルを準備することにより、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号を用いて、メモリセルアレイ1の一連のシーケンスで読み出された1ページの2ビット以上tビット以下のビット誤りを検出し、その位置を求めることができる。1ページに属する複数のメモリセルは、例えば、1つのデータ選択線WLに共通に接続すると、1度のデータ選択によって、複数のメモリセルを同時選択できる。
さらに、センスアンプ回路46の入出力は、メモリセルの読み出しや書き込み、および消去を制御する制御回路40に接続されている。制御回路40は、例えばデータバッファに与えられたデータをコマンド入力とし、メモリセルの読み出しや書き込み、および消去を制御する。
また、図1では単純化のため示していないが、センスアンプ回路46には、制御回路40からセンスアンプ回路46の動作を制御する制御信号や、奇数番のデータ転送線(BL1)か偶数番のデータ転送線(BL2)かを選択する制御信号(図2中のsel1、sel2)が入力される。図1中、破線枠7で囲まれた部分は、例えば、NAND型フラッシュメモリとして、典型的に1つの半導体基板上に形成される記憶装置を示している。破線枠7については、例えば、特開2002−150783号に記載された回路ブロックを用いれば良い。従って、その詳しい説明は省略する。
次に、ECC回路100について説明する。以後の説明においては、慣例に従って、符号化前のデータ列を情報ビット、符号化時に付加されるビットを検査ビット、復号化後のデータ列で、情報ビットに引き続き誤り位置を示すビット列をシンドローム、記憶装置から読み出しによって得た誤りを含む可能性がある符号を受信符号と呼ぶ。
データ入出力バッファ45は、ECC回路100に内部I/O線を介して接続される。ECC回路100は、誤りビット検出回路5及び誤りビット数判定回路6を含む。誤りビット検出回路5は、誤りビット数判定回路6に誤り情報を含む誤り検出信号を出力しても良い。さらに、誤り検出信号は、誤りビット検出回路5から、第1のI/O線を通じて出力されるシンドロームによって代用してもよい。誤りビット数判定回路6は、外部入出力端子(外部I/O)を介して、実施形態に係るデータ記憶システムと外部とのデータの授受を行う。誤りビット数判定回路6は、誤りビット数が予め決められた1を超えた基準値以上であることを判定する。基準値は、ECCで救済できるビット数と等しくしても良い。基準値を、ECCで救済できるビット数と等しくすると、ECCで救済後、誤りビットを発生させずに置き換えするブロック数を減少させ、必要とするスペアブロックの数を削減できる利点が得られる。また、誤りビット数が予め決められた1を超えた基準値以上の状態になった場合、この状態が生じたことを外部に知らせる信号を外部I/Oを通じて出力し、誤りビットを生じたブロックのデータを外部I/Oにつながれた外部回路によってコピーし、スペアブロックに置き換える動作を行うようにしても良い。
図7はECC回路100の構成例を示すブロック図である。
図7に示すように、誤りビット数判定回路6は、CPU108と、ページバッファ11と、誤りビット数基準値を記憶するROM111と、I/Oポート106、107とを含む。ECC回路100は、例えば、フリップフロップや揮発性メモリからなるページカウンタ10を含んでいても良い。ページカウンタ10は、例えば、CPU108に設けられる。ページカウンタ10は、ブロック内容を転送するブロック内のページ数のインデックスを記憶する。ページカウンタ10には、ページ数を“i”として、log2(i)以上のビット数の段数を持つカウンタを用意すれば良い。さらに、ページカウンタ10は、少なくともカウンタの全てのビットを一定の初期値とするリセット機能と、1ブロック内のすべてのページを1度ずつアクセスするようにページ数を増やす機能を有する。以下では、ページカウンタ10の、最も機能的に簡単な例として、最初のページのインデックスを初期値とするリセット機能と、ページを“1”だけ増やす機能を有する、として説明する。
誤りビット数判定回路6は、さらに、例えば、SRAMやDRAMなどの揮発性メモリからなるページバッファ11を含んでいても良い。ページバッファ11を含むと、図1に示すデータ記憶システム内でデータ訂正とスペア領域に対する修正データの書き込みが行え、外部I/O線にデータ出力し、外部装置(例えば、外部メモリ)とのデータの授受する時間や手順が必要ないので、動作を高速化できる利点がある。勿論、ページバッファ11は、図1のデータ記憶システムの外にあり、外部I/Oによって記憶読み出し可能な状態にあれば、本例で示すスペアブロックへの置換動作を実現することはできる。ページバッファ11に必要なビット数は、符号ビット数に等しいビット数以上あれば良い。
誤りビット検出回路5は、シンドロームを出力する回路である。シンドロームは、データ入出力バッファ45から出力された一連のデータのビット誤りを含む。本例のように、2ビット以上のエラー修正が必要な場合には、シンドロームから不良ビット位置を求めるのに、ガロア体上の乗除算を行う必要がある。なお、本例では、不良ビット位置を特定し、その位置情報を誤り検出信号線、または第1の内部I/O線に出力するのは、誤りビット数判定回路6で行うものとする。誤りビット検出回路5としては、本例では、2ビット以上のエラー修正が可能な符号を用いる。このためには、誤りビット検出回路5とし、例えば、巡回符号復号器を用いれば良い。2ビット以上のエラー修正が可能な符号とする理由は後で詳しく説明する。2ビット以上のエラー修正が可能な符号は、不良ビットを含むページを置き換えるスペアページ数を、非スペアページ数に対して、例えば、5%以下の十分少ない割合で面積増加を抑制しつつ、効果を得るためにも有用である。また、1ビット誤りを訂正する符号では、訂正できる誤りビットは存在しても、訂正できる誤りビットは当然に1ビットである。本例のような1より大きな基準値を有する誤りビット数判定回路6の構成要素に含まれないことは言うまでも無い。
図8は、誤りビット検出回路5内に設けられる符号器14の回路例を示す回路図、図9及び図10はそれぞれ、誤りビット検出回路5内に設けられる複号器(シンドローム計算器)15の例を示す回路図である。図8に示す符号器14は、データ巡回BCH符号符号器の具体的な一例である。図9及び図10はそれぞれ、データ巡回BCH符号複号器の具体的な例である。これらのデータ巡回BCH符号符号器/復号器は、例えば、7ビットのデータビットで2ビット誤り訂正可能な、15ビットの符号を形成する。以下の説明では2ビット誤りを生じた場合に、誤りを生じたページの内容をスペアブロックにコピーし、ブロック置き換えを行う例を示す。さらに、以下の説明では、説明を簡単とするために、ガロア体GF(24)上の元を用いた巡回BCH符号を示すが、勿論、任意のガロア体上の巡回BCH符号やリードソロモン符号を同様に回路構成し用いることができるのは明らかである。さらに、慣例では消去状態の論理値を“1”、書き込み状態の論理値を“0”とするが、本例では消去状態の論理値を“0”、書き込み状態の論理値を“1”と逆に定義する。これは、本例では、線形な誤り訂正を行う回路を用いることを実施形態として述べているために、シンドロームが全て論理値“0”であることが“誤り無し”の状態に対応し、シンドロームを含む1ブロック全消去を行った場合に、あらためてシンドロームに符号を書き込まなくても、誤りが無い初期値を形成することができるようにするためである。勿論、メモリセルの書き込み及び消去論理値を慣例通りとし、第1の内部I/O線に論理反転回路を介在させることによって、誤りビット検出回路5において論理値がメモリセルと逆となるように設定しても良い。
図8に示すように、情報ビット入力は単位時間ごとに時系列として7ビット与えられるとする。また、参照符号8に示す回路は、1単位時間遅延させる回路であり、例えば、公知であるD型フリップフロップ等のフリップフロップ、又はラッチ回路で構成すれば良い。D型フリップフロップの場合、クロックが与えられる前は論理値“0”に設定されているものとする。また、クロックは各複数の回路8全てに対し、同期して与えても良い。クロック配線を単純化できる利点があるためである。参照符号S1(S1a、S1b)はスイッチ回路である。スイッチ回路S1は、情報ビット入力中、つまり、1ビットから7ビットまでは“S1a”側に接続され、情報ビット入力終了後で検査ビット出力中、つまり8ビットから15ビットまでは“S1b”側に接続される。参照符号S2もまたスイッチ回路である。スイッチ回路S2は、情報ビット入力中、つまり、1ビットから8ビットまでは接続状態となり、情報ビット入力終了後で検査ビット出力中、つまり8ビットから15ビットまでは論理値“0”を、図8中の○(白丸)方向に出力する。このような動作を、15ビットの出力が終了するまで、15回クロックを与えることにより、2ビット修正可能な巡回BCH符号を作成することができる。
図13に本例でのガロア体GF(24)の元αiを示す。よく知られているように、ガロア体上での加算は、図13に示す各ベクトル表示の各因子の排他的論理和を取ったものとなる。例えば、
α0+α4=(0001)+(0011)=(0010)=α1
となる。
乗算、及び除算は、“24−1=15”なので、それぞれ
αi×αj=α(i+j)mod15
αi/αj=α(i-j)mod15
と計算すれば良い。
元αiの逆元α-iは、
α-i=α0/αi
で求めることができる。
15ビットの符号長を持つ2重誤り訂正2元BCH符号の原始生成多項式Gs(x)は、Mi(x)をαiの最小多項式として、
Gs(x)=M1(x)×M3(x)
=(x4+x+1)×(x4+x3+x2+x+1)
=x8+x7+x6+x4+1
で与えられる。図8に示す回路は、上記Gs(x)を回路的に表現する。従って、符号化においては、符号出力をI/O線1に電気的に接続し、外部I/Oを、誤りビット数判定回路6を含むデータ入出力制御回路を通じて、情報ビット入力に電気的に接続する。これによって、メモリセルに2ビットの訂正が可能な符号を書き込むことができる。
なお、外部I/Oは、具体的には、例えば、メモリカードの入出力端子や、本例のデータ記憶システムを収容したパッケージの外に、コネクタ、又は無線通信手段を通じて接続される入出力部分を示す。
図9及び図10に示すデータ巡回BCH符号複号器の具体的な例はそれぞれ、上記巡回BCH符号から2値4ビット、即ち、ガロア体GF(24)上のシンドロームを計算するシンドローム計算器15の回路例である。
シンドローム計算器15は、受信符号入力から15単位時間遅れた後に、誤り位置情報を示すシンドロームs1、s3の出力を得る。シンドロームs1、s3は、それぞれ前述のM1(x)、M3(x)に対応するシンドロームである。後で誤り訂正の詳細は説明するが、シンドロームs1、s3が全て“0”の場合には、誤りが無いと判断できる。
また、上記以外で、“s13+s3”が(0000)である場合には、1ビットの誤りが生じたと判断でき、“s13+s3”が(0000)でない場合には、2ビット以上の誤りが生じたと判断できる。
なお、“s13+s3”は、原始多項式を、
M1(x)=x4+x+1
としたガロア体上にて計算するものとする。
以上から、“s13+s3”を、図7に示すCPU108を用いて計算することで、メモリセルに2ビット以上の誤りを検出し、その位置情報を出力する回路が具体的に構成できる。復号化においては、符号入力をI/O線1に電気的に接続し、符号とシンドロームs1、s3を誤りビット数判定回路6に電気的に接続する図7に示す構成とする。
なお、15ビットの符号長を持つ1重誤り訂正2元BCH符号の原始生成多項式は、
M1(x)=x4+x+1
で与えられる。従って、図9に示すように、1単位時間遅延させる回路の2値4本の出力を、ガロア体GF(24)上の単位元をα倍するα倍回路200を通じて、複数の回路8に順次フィードバックする。これにより、αを単位元とするシンドロームs1を得ることができる。同様に、図10に示すように、α倍回路200を3つ直列に接続してから、複数の回路8に順次フィードバックする。これによりα3を単位元とするシンドロームs3を得ることができる。同様に、αkを単位元とするシンドロームskは、α倍回路200をk個直列に接続してから、複数の回路8に順次フィードバックすることで得ることができる。
次に、誤りビット数判定回路6の動作例を、図11に示すフローチャートを用いて説明する。本動作例の説明においては、2ビットの誤り訂正を行う場合を例示する。
図11に示す動作例は、読み出し時に“1”より大きな誤り判断ビット数、ここでは、2ビットの誤りを生じたページについて、選択的に空きスペアブロックに、ページデータをECCにて修正し、置き換える例である。本実施形態は、2ビットという1ビットよりもビット数が大きい誤りを生じたページを選び、選択的に置き換える。
まず、SE1において、シンドロームs1、s3を、誤りビット検出回路5からI/Oポート106を通じて、誤りビット数判定回路6に転送する。また、受信符号を、誤りビット検出回路5からI/Oポート106を通じて、誤りビット数判定回路6内のページバッファ11に転送する。
次に、SE2において、シンドロームs1、s3のいずれかが、少なくとも1つの“1”を含むか否かを判別する。シンドロームs1、s3のいずれもが“1”を含まない場合は、“誤りビット無し”である(N:No)。この場合、符号ビットの最初の7ビットを情報ビットとして出力する。また、シンドロームs1、s3のいずれかが、少なくとも1つの“1”を含む場合は、“誤りビット有り”である(Y:Yes)。この場合、SE3に進み、CPU108において、Peterson法の行列式、
sp=s13+s3
を計算する。この際、ガロア体GF(24)上の乗算表、及び逆元表をそれぞれ、誤りビット数判定回路6の、例えば、ROM111に内蔵させる(乗算表ROM、及び逆元表ROM)。これにより、乗除算計算を高速に行うことができる。ちなみに、乗算表ROMは、本例では、シンドロームs1、s3が4ビットであるため、“4ビット+4ビット=8ビット”の入力で、4ビットの出力をすれば良く、例えば、28×24=4096ビットの記憶素子で実現できる。同様に、逆元表ROMは、4ビット入力で4ビット出力すれば良く、例えば、24×24=256ビットの記憶素子で実現できる。後述するように、2ビット以上の誤り訂正を、シンドロームをアドレス入力とし、誤り位置ローケータを出力とする対応表を作成して対応する場合には、上記(4096+256)ビットよりも遥かに多いビット数を持つ対応表が必要となる。一方、2ビット以上の誤りがあっても、計算によって誤り位置ローケータを求める方法は、上記ビット数の記憶素子で良い。このように、乗算表ROMと逆元表ROMを用いる方法では、誤り訂正ビット数が大きく増えても記憶素子の個数を減らすことができ、回路面積を小さくできる利点がある。勿論、乗算表ROMや逆元表ROMは、いわゆるROMマッピングではなく、シンドロームをアドレス入力とし、誤り位置ローケータを出力とする論理回路によって形成されても良い。
次に、SE4において、行列式spが、少なくとも1つの“1”を含むか否かを判別する。行列式spが、1つも“1”を含まない場合にはSE5に進み(N)、SE5において、シンドロームs1が少なくとも1つの“1”を含むか否かを判定する。
SE5において、シンドロームs1が、少なくとも1つの“1”を含む場合、誤りビットは1ビットである。この場合、SE6に進む(Y)。SE6において、シンドロームs1の逆元を、CPU108を用いてまず計算する。シンドロームs1の逆元を、図13に示す元を参照して“αk”すると、“15ビットで最後に入力したビットから数えて、(k+1)ビット目が誤りである”、と考えることができる。従って、SE6において、最後に入力したビットから数えて、(k+1)ビット目を、ビット反転して修正すれば良い。この後、この修正符号ビットの最初の7ビットを情報ビットとして出力する。
一方、SE5において、シンドロームs1が、1つも“1”を含まない場合、3ビット以上のビット誤りを生じたことになる。この場合、SE14に進む(N)。SE14において、外部I/OにECC救済不可能である信号を出力して終了する。
また、SE4において、行列式spが、少なくとも1つの“1”を含む場合にはSE7に進み(Y)、SE7において、シンドロームs1が少なくとも1つの“1”を含むか否かを判定する。
SE7において、シンドロームs1が、1つも“1”を含まない場合、3ビット以上のビット誤りを生じたことになる。従って、SE14に進み(N)、SE14において、外部I/OにECC救済不可能である信号を出力して終了する。
一方、SE7において、シンドロームs1が、1つでも“1”を含む場合、2ビット以上のビット不良を生じたことになる。この場合、SE8に進む(Y)。
SE8において、誤り位置多項式σ(z)の係数σ1、σ2を、ガロア体上で、
σ1=s1
σ2=sp/s1
として計算する。
次に、SE9において、誤り位置多項式、
σ(z)=1+z×σ1+z2×σ2
の“z”に、ガロア体GF(24)の元を代入し、
σ(z)=0
となる解を求める。この際、上述したが、ガロア体GF(24)上の乗算表ROMを、誤りビット数判定回路6、例えば、ROM111に内蔵させることによって、乗算計算を高速に行うことができる。
次に、SE10において、“i”、“j”をそれぞれ、{(ガロア体の元の数)−1}から0以上の、互いに異なる整数(i≠j)として“αi”、“αj”という解が求めることができたか否かを判定する。
解が求まらない場合には、3ビット以上のビット誤りを生じたことになり、SE14に進む(N)。SE14において、外部I/OにECC救済不可能である信号を出力して終了する。
解が求まった場合は、図13に示す元を参照し、“αi”、“αj”とすると、“15ビットで最後に入力したビットから数えて、(i+1)ビット目、及び(j+1)ビット目が誤りである”、と考えることができる。従って、SE11において、最後に入力したビットから数えて、(i+1)ビット目、及び(j+1)ビット目をそれぞれ、ビット反転して修正すれば良い。
次に、SE12において、使用していないスペアブロックが、まだ有るか否かを確認する。これは、例えば、FAT(File Allocation Table)領域に、予め使用できるスペアブロックのアドレスを記憶するブロックアドレス情報記憶領域を準備する。例えば、使用したスペアブロックのアドレスは、ブロックアドレス情報記憶領域に記憶する。SE12において、ブロックアドレス情報記憶領域に記憶されたスペアブロックのアドレスを調べることによって、使用していないスペアブロックが、まだ有るか否かを確認できる。ブロック置き換えの方法については、後で詳述する。SE12において、“空きスペアブロック領域が有る”と判定された場合には、SE13に進む(Y)。SE13において、当該ページ内容を、空きスペアブロックにエラー訂正して転送する。この操作に引き続いて、FAT領域に記載された当該ページのブロックアドレスを、空きスペアブロックのアドレスに置き換えする作業を行っても良い。
一方、SE12において、“空きスペアブロック領域が無い”と判定された場合には、SE15に進む(N)。SE15において、空きスペアブロックが無いことを示す信号を外部I/Oから出力する。この操作に引き続いて、当該ページ内容を、元のメモリブロックアドレスに書き戻す作業を行っても良い。
以上、図11に示す動作例は、Peterson法を用いて、誤りビット位置を計算で求める方法である。この方法によれば、誤り位置ローケータを、対応表を引くことではなく計算によって求めるので、対応表のために必要な、大きなROM領域111を必要とせず、より小さいROM容量の回路で実現できる。よって、ROM回路の面積縮小に有利であり、しかも、ROM回路に消費される電力を少なく保つことができる。
さらに、本実施形態では、特に、非スペア領域のブロックアドレス、及びスペア領域のブロックアドレスの割り当てにも工夫が為されている。
図12は、非スペア領域のブロックアドレス、及びスペア領域のブロックアドレスの割り当て例を示す。
図12に示す割り当て例においては、非スペア領域の実アドレスに、非スペア領域とスペア領域とを判別するフラグアドレスビットを付加する。さらに、非スペア領域ではフラグアドレスビットを“0”とし、スペア領域ではフラグアドレスビットを“1”とする。図12に示す割り当て例では、非スペア領域のブロックアドレスは、例えば、“y”を“0”か“1”かのいずれかとなるビットとし、最上位ビットを非スペア領域とスペア領域とを判別するフラグアドレスビットとしている。つまり、非スペア領域のブロックアドレスは、
(0yyyyyyyyyy)
とし、スペア領域のブロックアドレスは、
(1yyyyyyyyyy)
とする。勿論、非スペア領域とスペア領域とを判別するフラグアドレスビットは、最上位ビットである必要はなく、最下位ビットなど任意の位置のビットを用いることができる。
さらに、本実施形態では、ブロックアドレスを、スペア領域のブロックアドレスに含まれる“0”のビットの数をなるべく減少させるように、割り当てる。このためには、まず、例えば、“1”ビットの数よりも“0”ビットの数が少なくなるように、ブロックアドレスを割り当てる必要がある。これには、スペア領域のブロックアドレスに、アドレスが全て“1”ビットであるようなブロックアドレス、例えば、
(11111111111)
が含まれるようにする。さらに、ブロックアドレスを、より適切に割り当てる方法の一例を以下に説明する。
フラグアドレスビット以外のアドレスビットが全て“1”の場合、図10に示す例では、
(11111111111)
をクラス0とする。また、クラスiは、クラス0の任意の“1”であるi個のビットを“0”に置き換えたものとする。例えば、クラス1はクラス0から1個のビットを“0”に置き換えたもの、クラス2はクラス0から2個のビットを“0”に置き換えたもの、…、となる。このようにして、クラス0、クラス1、クラス2、クラス3のように、クラスの少ないブロックアドレスを、選択的にスペア領域のブロックアドレスに割り当てる。このため、スペア領域のブロックアドレスは、結果として非連続となる。このようにすることにより、SE13に示したスペアブロックへのデータ転送に伴うブロックアドレスを記憶する領域、例えば、FAT領域の書き換えを、FAT領域の消去を必要とせず、高速に書き換えることができる。なぜなら、“1”データを“0”にするには、FATを含むブロック全体のデータを退避し、消去する必要があるのに対して、フラッシュメモリにおいて、“0”データを“1”データにする書き込みは、各ページに追加書き込みを行うことによって消去よりも高速に実現できるからである。
一方、連続アドレスを非スペア領域として割り当てる典型的な方法では、ブロックアドレスが、たとえ適切に割り付けられたとしても、
クラス0である(11111111111)、
クラス1である(11111111110)、
クラス1である(11111111101)、
クラス2である(11111111100)、
クラス1である(11111111011)、
クラス2である(11111111010)、
クラス2である(11111111001)、
クラス3である(11111111000)、
のように、クラス3がクラス0の7個後に現れてしまう。同様に、クラスnはクラス0の(2n−1)個後に現れてしまう。
これに対して、本実施形態のアドレス割り当てでは、クラス0、クラス1、クラス2のアドレスのそれぞれの個数は、スペア領域を示すフラグを除いたデータビット数を“k”として、
1+k+k×(k−1)/2
となり、k=10である図12に示す例では、例えば、典型的な例の8−1=6個よりも遥かに多い最大56個のブロックアドレスまでクラス2以下に保つことができる。スペアブロックのアドレス選択は、非スペア領域の任意のアドレスに対して、例えば、図14に示すシーケンスに従って行えば良い。
図14に示す例は、クラス2までのスペアブロックを準備した場合の置き換え例である。クラス数は、SE31〜SE33と同様なフローを各クラスについて作成し、クラスの高い順にSE30とSE31との間にシーケンスとして並べることにより、拡張できる。図14は、図11に示すSE13、又は後述する図19に示すSE25に対応するスペアブロックのアドレス選択シーケンスの例である。
まず、SE30において、置き換えを行う元ページを含むブロックアドレスを取得し、取得したブロックアドレスの論理反転a1を作成する。この際、一般的には、スペア領域を示すフラグ領域を含まないで反転する必要があるが、上述したように、非スペア領域のブロックアドレスを、
(0yyyyyyyyyy)
とし、スペア領域のブロックアドレスを、
(1yyyyyyyyyy)
とした場合には、スペア領域を含んで反転しても良い。
次に、SE31において、論理反転a1とクラス2の空きスペアブロックアドレス(a2)との論理和を取り、各ビットで、1ビットでも“0”が含まれているか否かを判定する。“0”が含まれている場合、当該スペア領域のアドレスビットが“0”、即ち、消去状態であり、同時に、当該元データページ領域のアドレスビットが“1”、つまり、書き込み状態であることとなる。これ以外の場合には、FAT領域に含まれるデータページ領域のアドレスの変更に対して、各ビットで“0”の消去状態から、“0”の消去状態、又は書き込み状態“1”への変更のみとなる。よって、SE32において当該ページを、SE31で得たアドレスのスペアブロックに誤り訂正して転送し、FAT領域の、データページ領域のアドレスの変更については、消去を必要とせず追加書き込みを行えば良い。
次に、SE33において、クラス2のデータ置き換えに、既に使用していない空きのスペアアドレスを全て調べたか否かを判定する。このSE31、SE33のシーケンスによって、全てのクラス2のブロックが調査される。
次に、SE34において、論理反転a1とクラス1の空きスペアブロックアドレス(a2)との論理和を取り、各ビットで、1ビットでも“0”が含まれているか否かを判定する。“0”が含まれている場合、当該スペア領域のアドレスビットが“0”、即ち、消去状態であり、同時に、当該元データページ領域のアドレスビットが“1”、つまり、書き込み状態であることとなる。これ以外の場合には、FAT領域に含まれるデータページ領域のアドレスの変更に対して、各ビットで、“0”の消去状態から、“0”の消去状態、又は書き込み状態“1”への変更のみとなる。よって、SE35において当該ページを、SE34で得たアドレスのスペアブロックに誤り訂正して転送し、FAT領域の、データページ領域のアドレスの変更については、消去を必要とせず追加書き込みを行えば良い。
次に、SE36において、クラス1のデータ置き換えに、既に使用していない空きのスペアアドレスを全て調べたか否かを判定する。このSE34、SE36のシーケンスによって、全てのクラス1のブロックが調査される。
次に、SE37において、クラス0の空きスペアブロックが既に使用されているか否かを調べる。なお、クラス0は全アドレスビットが“1”であるため、必ず追加書き込みのみでFATアドレスのスペアアドレスへの置き換えができる。使用されていない場合には、SE38において、当該ページをSE37で得たスペアブロックに誤り訂正して転送し、FAT領域の、データページ領域のアドレスの変更については、消去を必要とせず追加書き込みを行えば良い。SE37において、使用されていた場合には、SE39において、なるべくクラスの大きな空きスペアブロックアドレスを探し、当該ページをSE37で得たスペアブロックに誤り訂正して転送する。この際、FAT領域の、データページ領域のアドレスの変更については、“1”の書き込み状態から“0”の消去状態への転移をするビットが含まれる。よって、FAT領域のデータを一時退避し、FAT領域を消去した後、スペア領域へのアドレス置き換えを行ったFAT領域のデータを書き戻す必要がある。
以上のように、FAT領域は、追加書き込みで変更が行われ、FAT領域の書き込み、及び消去の繰り返しによる劣化を防ぐことができ、より信頼性の高い半導体記憶装置が実現できる。さらに、FAT領域に対し、消去が必要になる確率を減少させることができるので、より高速にページの置き換え動作を実現することができる。
次に、本実施形態のように、誤りビット数が予め決められた“1”を超えた基準値以上であることを判定し、スペアブロックに置き換える効果に関する、本件発明者の知見を説明する。
1ビットあたりの良品率を“p”として、ページ長mビットの各ページにiビットのビット誤りを含む確率P
iは、ページ長ビット数mが、誤りビット数iよりも充分大きな範囲においては以下のようなポアソン分布で与えられる。
信頼性の高い半導体記憶装置では、当然にビット不良を小さく抑制する必要があるので、“mp<1”は満たされている。つまり、確率Piは、誤りビット数iが大きくなると急激に減少する関数となる。
次に、半導体記憶装置内のページ総数を“n”とし、iビットのビット誤りを含むページ数を“k
i”とした場合、1、2、…、s個のビット誤りを含むページ数がk
1、k
2、…、k
s個である確率(期待値)P
exは以下のようになる。
期待値P
exを、ビット不良となり得るk
1、k
2、…、k
sの組み合わせで和を取ることにより、外部I/Oからみた不良率の計算を行うことができる。次いで、期待値P
exの対数を取って、“ki”で偏微分する。これによって、期待値P
exが最大となる点は、“n”が各“k
i”よりも充分に大きく、各“k
i”が1以上の場合、±8%以下の誤差で以下のようになる。
よって、“ki”の期待値は、“ki”が1より充分に大きい場合には、
nPi/P0
に等しくなる。また、“ki≧1”の場合の“ki”の期待値は、
0.6×nPi/P0以上nPi/P0以下
の範囲に抑えられる。ここで、“Pi”は、“i”が大きくなると急激に減少する関数なので、i個の誤りビットを含むページ数の期待値kiは、“i”が大きくなるほど、
(mp)i/i!
に比例して急激に減少する。よって、誤りビット数が2以上の判定基準値以上に達したことを判定し、スペアブロックに置き換える本実施形態では、判定基準値を大きくすることによって、置き換えに必要なスペアブロック数を激減できる。
加えて、判定基準値を、ECCの救済可能なビット数以内とすれば、判定基準値以下のビット誤りが生じても全てECCで救済可能であり、外部I/Oから出力されるデータは、誤りを全て訂正した情報ビットを出力できる。よって、判定基準値を、ECCで救済可能なビット数の最大値に設定する。判定基準値を、ECCで救済可能なビット数の最大値に設定することで、置き換えに必要なスペアブロック数を減少できる、という利点を得ることができる。
また、本件発明者は以下の事項も見出した。
ページ総数nが、iビットのビット誤りを含むページ数kiより充分大きい場合には、“Pex”の書式から“Pi”が1より充分に小さい場合、“ki”の分布は、ほぼポアソン分布、
(nPi)ki/(ki)!×exp(−nPi)
に従う。よって、“ki”の分散は“ki”の期待値に等しいと考えて良い。よって、1、2、…、s個のビット誤りを含むページ数の個数分布が求められ、k1、k2、…、ks個の期待値、及び分散を求めることができる。従って、判定基準値以上の誤りビットを含むページを置き換えるべきスペアブロック数を、統計的に計算することができる。例えば、t個のビット誤りを含むページ数の個数は、“kt”の期待値が5以上では、ポアソン分布の性質より正規分布に近似すると考えて良い。よって、t個のビット誤りを含むページに対し、
kt+3×(kt)0.5個
のスペアブロックを用意すれば、99.7%以上の信頼度で、t個のビット誤りを含むページを全て置き換えることができる。
さらに、本件発明者は、判定基準値以上の全てのページを置き換えられるだけのスペアブロックを統計的に見積もり、予め準備しておくことで、外部I/Oから見た誤りビットを生じさせる確率を減少できることを見出した。
ここで、本実施形態に係る記憶装置のビット誤りは、例えば、書き込みや消去を繰り返すことによって出荷時より不可逆的に増大し、一度ビット誤りが生じたビットは正常には戻らないものとする。この場合、例えば、ページ長がmビットでtビットの誤り訂正を行えるECC回路を備えた構成で、tビットの誤りを生じた場合のページ置き換えを、n回まで行える場合には、ページ置き換えを行った当該データ単位に対して、(n+1)×tビットまでの誤り訂正を行えるECC回路を備えた構成と同等の不良率救済が可能である。
ここで、“Pi”を計算したところで述べたように、ランダムビット不良の場合には、1ビットあたりの良品ビット確率を“p”として、ページ長mビットの各ページにiビットのビット誤りを含む確率Piは、“mp”が1よりも充分小さい場合、“i”が大きくなるほど、
(mp)i/i!
に比例して急激に減少する。よって、n回ページ置き換えを行ったページのデータは、少なくとも置き換えを行わないページのデータよりも、誤り訂正の行えないビット数を超えた誤りを生じる確率は、
(mp)nt倍以上
に急激に減少する。
以上より、2以上の判定基準値t以上に達したことを判定し、t個以上のビット誤りを含むページを全て置き換えする場合には、外部I/Oから見た誤りビットを生じさせる不良率を(mp)nt倍以上に急激に減少させることができる。
また、以上の議論から、一度置き換えたスペアブロックが不良になった場合に、さらに、スペアブロックで置き換えしても良い。それぞれのページに対してn回まで置換可能なスペアブロックを準備する、とすると、(n+1)×tビットまでの誤り訂正を行えるECC回路を備えた構成と同等の不良率救済が可能となる。しかも、不良率は
(mp)nt/(nt)!
に比例して急激に減少する。
さらに、詳細検討した結果、ECCで修正できるビット数を超えたページを置き換えられるスペアブロックの数を“bk”とすると、本実施形態のブロック置き換えを用いた場合には、少なくとも置き換えを行わない場合のECCを超えた許容誤り総ビット数akに、(bk×t)だけ加えた許容不良ビット数、即ち、ak+(bk×t)まで、ECCを超えた許容誤り総ビット数が緩和されることを見出した。よって、置き換えを行わない場合のECCを超えた許容誤り総ビット数をak´として、bk>ak´/tとするように、スペアブロックの数bkをさらに追加する。このようにすれば、不良率は、
(mp)nt/(nt)!
に比例して急激に減少するので、外部I/Oから見た誤りビット数が、ほぼ1ビットも無い状態を実現できる。
さらに、2回目に置き換えするのに必要なスペアブロック数の期待値を“k2s”とし、1回置き換えするのに必要なスペアブロック数の期待値を“ks”として、
k2s≧1 かつ ks≧1
の場合には、(k2s/ks)が(P2s/Ps)に比例するので、(mp)sに比例して急激に減少する。よって、2回以上の置き換えに必要なスペアブロック数によるチップ面積増加は、1回以上の置き換えに必要なスペアブロック数によるチップ面積増加よりも充分小さい範囲に抑えられる。勿論、図12に示すスペア領域のアドレス構成を用いることによって、一度置き換えたスペアブロックが不良になった場合に、さらにスペアブロックで置き換えする場合でも、図12に示した、よりクラスの小さいアドレスを、2度以上の置き換えに用いることによって、FAT領域のデータページ領域の、アドレスの変更については、消去を必要とせず追加書き込みを行えば良く、高速で置き換え動作が実現できる。これは大きな利点である。
一方、置き換えるべきスペアブロック数が、判定基準値を超えたページ数の、例えば、期待値よりも少ない場合には、スペアブロックで置き換えることができないtビット以上の誤りを含むデータページが存在する場合の数と、確率要素Pexとが存在する。このため、この場合には、全ての置き換えを行ったページよりも、少なくとも(mp)-nt倍、不良ビットを含む確率が大きくなり、外部I/Oから見た誤りビットを生じさせる確率を大幅に増大させてしまう。
例えば、全ブロック数を“n
block”規定の最大書き込み及び消去回数後での不良ブロック数の最大保証値を“n
bad”とし、ECCの誤り訂正可能なビット数を“ECC”ビット、誤りビット判定基準値ビット数を“id”ビットとすると、ブロック置き換えを行わない場合の平均的な誤りビットの状態は、統計的に以下の式が成立する。
よって、上式を等号で置いた場合より、“mp”の上限mp
maxを求めることができる。これにより、本実施形態で必要な置き換えするブロック数の平均値の上限n
replaceは、以下の式で与えられる。
ブロック数のばらつきまで考慮する場合は、上述の議論のように“nblockPi”の分散を、“nblockPi”と考え、信頼度を設定して計算すれば良い。本実施形態では当然に、信頼度を大きく取れば、上記“nreplace”よりも大きな置き換えブロック数が必要となる。また、式のnblock、nbad、及びnreplaceは、1ブロックを分割して各ページで置き換えたり、分割ページで置き換えたりする場合には、ブロック数を、それぞれページ数、分割ページ数と考えて計算すれば良い。なお、ECCで救済不可能なビット不良が生じる確率の総和の計算は、確率Pexを、各場合の数で足し合わせることで計算できる。
以上より、本実施形態の構成、即ち、ECCでの誤りビットの判定基準値以上の全てのページを置き換えられるだけのスペアブロックを統計的に見積もり、予め準備しておくことで、外部I/Oから見た誤りビットを生じさせる確率を減少できる。
ここで、ROM111には、ページ置き換えを行う誤りビットの基準値を記憶するものとするが、これは、例えば、図11に示したように、フローチャートのプログラムの判断値として記憶しても良い。また、勿論、例えばシーケンサーなどのハードウェアで誤りビット数判定回路6を構成してもよい。
また、図11に示す例では、Peterson法を用いて誤り位置ローケータを計算する方法を示したが、勿論、他の方法、例えば、ユークリッド法やBerlekamp-Massey法を用いて誤り位置ローケータを計算しても良い。
さらに、本実施形態以外の全ての実施形態について言えることであるが、Reed-Solomon(RS)符号についても、BCH符号と同様に、Peterson法、ユークリッド法、あるいはBerlekamp-Massey法を用いて、シンドロームから誤り位置ローケータを求めることができる。従って、本実施形態により説明した構成、及び効果を実現できる。
図15に、第1のメモリセルブロックの内容の誤りを訂正し、第2のメモリセルブロックに書き込み、誤りビットを含むデータを置き換える例を示す。なお、ここでスペア領域からなる第2のメモリセルブロックを、第1のメモリセルブロックと実質上同じ構造とする。これにより、メモリセルアレイの面積が縮小され、より安価なチップを構成できる、という利点を得ることができる。また、本例の第2のメモリセルブロックの1ブロック内の総ページ数は、少なくとも第1のメモリセルブロックの1ブロック内の総ページ数以上である必要がある。
まず、SE40において、ページカウンタ10を、最初のページを示すようにリセットする。
次に、SE41において、誤りビット判定基準値以上のページを含む第1のメモリセルブロックについて、ページカウンタ10の示すページを読み出し、誤り訂正してページバッファ11に記憶する。この際、必要に応じ、例えば、本ブロックの読み出し操作が当該システム外より指示されている場合には、本読み出し内容を外部I/Oから出力しても良い。
次に、SE42において、ページカウンタ10の示すスペア領域の第2のメモリセルブロックに、ページバッファ11の内容を誤り検出符号になるように符号化して書き込む。この書き込みの情報ビットに加え、データ書き込み終了フラグを、書き込み終了後に第2のメモリセルブロックの他のビットに書き込んでも良い。このようにすると、書き込み時の電源の遮断による書き込み失敗を検出し、復帰シーケンスを行うことができる。
次に、SE43において、ページカウンタ10のカウント値を、例えば、“1”増やす。
次に、SE44において、ページカウンタ10が全てのページのインデックスを参照したか否かを判定する)。これは、ページカウンタ10のカウント値を、“1”ずつ増やすSE43のシーケンスを用いている場合には、第1のメモリセルブロックに含まれる総ページ数と比較してインデックスがそれ以下か否かを判定することと等価である。本例では、メモリセルブロックごとの置き換えの方法を示したが、勿論、各ページごとに置き換えを行っても良い。この場合には、ページカウンタ10は必要ない。スペアブロック領域で置き換えを行うページのページアドレスは、誤りビット判定基準値以上の元のページのページアドレス対して、“0”ビットが“0”か“1”ビットに対応し、“1”ビットは“1”ビットに対応するように、スペアブロック領域のページアドレスを選択する。これにより、ページアドレスについてのFAT変更についても追加書き込みで対応でき、消去する必要がなくなり、高速書き換えが実現できる。
図16にページバッファの回路例を示す。図16に示す回路例は、情報ビット数であるkビットのデータを一時記憶するページバッファ11の例である。
本例では、D型フリップフロップ201を直列にk段接続し、最終段の出力をnチャネル型トランジスタ202、pチャネル型トランジスタ203、及びインバータ204からなる双方向スイッチ回路(bi-lateral switching circuit)によって接続している。なお、本例のD型フリップフロップ201としては、クロック入力が“L”(ここでは便宜的に0Vとする)から、“H”(ここでは便宜的にVccとする)に立ち上がる瞬間に出力が確定し、それ以後はクロックが“H”のままでも、“L”のままでも、“H”から“L”へ変化しても出力は変化しないエッジトリガー(edge trigger)型のフリップフロップとする。さらに、双方向スイッチ回路は、データ出力制御入力が“H”の場合に、トランジスタ202、203の電流端子が導通状態となり、“L”の場合に遮断状態となる回路である。図17に、その回路の動作を示す。
図17に示すように、D型フリップフロップ201にデータを記憶する場合には、まず、データ出力制御入力を“L”とし、フリップフロップ201の出力がデータ入出力線に出力されないようにする。さらに、データ入出力(I/O)線に、Vcc(“H”)か0V(“L”)のディジタルデータDin1を与えた後、クロックを“L”から“H”にする。これにより、データDin1のデータが、図16中の最も左側に示されるフリップフロップ201に保持される。次いで、データ入出力(I/O)線に、Vcc(“H”)か0V(“L”)のディジタルデータDin2を与えた後、クロックを“L”から“H”にする。これにより、データDin1が、図16中の左から2番めに示されるフリップフロップ201に転送及び保持され、最も左側に示されるフリップフロップ201にデータDin2が保持される。後は、順次kビットまでデータ入出力(I/O))線にディジタルデータを与え、クロックを与えることにより、図16中の最も右側に示されるフリップフロップ201から順に、“Din1、Din2、…Dink”のデータが保持される。このようにして、ページバッファ11は、kビットのデータを保持する。
本例に係るページバッファ11からデータを読み出す際、まず、データ出力制御入力を“H”とし、図16中の最も右側に示されるフリップフロップ201の出力をデータ入出力(I/O)線に出力する。これにより、データ入出力(I/O)線には、データDin1のデータと同じデータ(ここではDout1とする)が出力される。さらに、クロック入力を“L”から“H”にする。これにより、図16中の最も右側に示されるフリップフロップ202に1ビットデータが転送され、保持される。その結果、データ入出力(I/O)線には、データDin2のデータと同じデータ(ここではDout2とする)が出力される。後は、全部で(k−1))回クロック入力を“L”から“H”にすることにより、データ入出力(I/O)線に、図16中の最も右側に示されるフリップフロップ201から順に“Din1、Din2、…、Dink”のデータが出力される。このようにして、ページバッファ11は、kビットのデータを出力する。
本実施形態は、さらに以下の要件、及び効果を持つ。
(1) 本明細書に開示する全ての実施形態は、ECCの救済できるビット数を増やさなくても、外部I/Oから見た不良率を減少できる。よって、ECCの救済できるビット数を増やす時に生じる、ECC誤りビットの位置を計算する計算時間、及び回路面積をそれぞれ削減できる。また、ECCで救済できるビットが1ビット増えると、少なくとも、log2(n)個の小数点を切り上げたビット数だけ、ECCが使うビット数が増大する。よって、符号長が長くなってしまう事情や、結果、チップ面積が増加したり、ユーザが使用できるデータビット数が減少する事情を解消でき、より小さなメモリセルアレイ面積で信頼度の高い記憶装置を実現できる。
システムの具体的構成で述べた量、空きスペア領域を準備することにより、外部I/Oから見たメモリ領域を、スペア領域との置き換えによってメモリの寿命まで信頼度を踏まえて保証することができる。
また、ECCで修正できるビット数を超えたページを、置き換えられる置き換えスペアブロックの数を“bk”とし、誤りビット判定基準値を“t”とし、置き換えを行わない場合のECCを超えた許容誤り総ビット数を“ak´”として、“bk>ak´/t”とするように、スペアブロックの数bkを、さらに追加しておけば、外部I/Oから見た誤りビット数が、ほぼ1ビットもない状態を実現することができ、従来には無い程に信頼性が高い半導体記憶装置を実現できる。また、1ビットより大きい誤りビット基準値を用いることによって、従来には無い程に置き換えスペアブロックの数を少なくすることができ、より面積の小さな集積回路を実現できる。特に、全ブロック数を“n
block”、規定の最大書き込み及び消去回数後、または製品保証寿命時点での置き換え必要なブロック数の最大保証値を“n
bad”とし、ECCの誤り訂正可能なビット数をECCビット、誤りビット判定基準値ビット数をidビットとすると、少なくとも以下の式以上の置き換えブロック数n
replaceを形成することにより、実施形態における不良率低減の効果が、さらに高まる。
なお、上式中の“a”は、式を連立させることにより消去できる変数である。また、式のnblock、nbad、及びnreplaceは、1ブロックを分割して各ページで置き換えたり、分割ページで置き換えたりする場合には、ブロック数を、それぞれページ数、分割ページ数と考えて計算すればよい。
(2) さらに、置き換えスペアブロックによってブロック置き換えを行う確率は、
1−(全てのページで誤り地が判定基準値より小さくなる条件でのPexの総和)
として、定量的に計算することができる。よって、ブロック置き換えに必要な時間が生じる発生確率を求めることができ、システムのパフォーマンスを定量的に保証することができる。これは、例えば、n1、n2をn1<n2となる自然数として、書き込み及び消去回数がn1回までは、スペアブロックの置き換え確率が0%でシステムが外部I/Oからアクセスできない時間が生じないという保証に加え、例えば、n1回からn2回までは、スペアブロックの置き換え確率をr、書き換えに係る時間をtkとすると、tk×rだけシステムが外部I/Oからアクセスできない時間が生じる、という製品保証をすることができる。これにより、従来装置よりも、信頼度を定量的に保証した信頼性の高い半導体記憶装置を実現できる。
(3) データ記憶システムの半導体記憶装置7は、誤り訂正ビットを含む複数の半導体メモリが形成されており、誤り訂正ビットを含まない記憶回路とメモリセルアレイのロウ方向の数が異なるのみでデータ破壊検出専用セルなど特別な回路や手段は半導体記憶装置7には必要ない。よって、特に、誤り訂正ビットと情報記憶ビットとを隣接して同様のパターンで繰り返し形成することができるため、従来と同じ半導体記憶装置7を用いて安価でチップ面積の小さいデータ記憶システムを実現できる。さらに、本実施形態では、データを実際読み出す場合に、各ページごとに誤りを生じたビット数の検知を行う。例えば、従来装置のように、電源投入および遮断時などの外部I/Oからのデータを読み出す必要がない時に、リフレッシュのためにデータを読み出す必要はない。よって、データのリフレッシュに必要な処理時間や電力を削減でき、より実読み出しの回数の多いページに対して多く誤り検知ができる。特に、この構成は、消去及び書き込み時にしきい値が設定内に入っているか否か調べるべりファイ読み出し動作を含む場合には、書き込み及び消去による誤りビット発生も検知することができ、より信頼性の高い半導体記憶装置が実現できる。さらに、誤り訂正必要な情報ビットが発生した時点より後に、必ず誤り検知がなされる。よって、誤りビットを生じる、いわゆる“裾ビット”の統計的挙動がチップ間または経時変化によって変化しても正しく誤り検知を行うことができる。
(4) ECC回路100は、誤りビット訂正を行える回路を有しており、データを外部I/Oに出力する過程で“1”から“0”へのデータ誤りでも、“0”から“1”へのデータ誤りのいずれでも訂正を行える。よって、本構成で、読み出しストレスによる消去ビットの書き込み状態への転移(read-disturb)のデータ訂正と共に、書き込みデータ保持不良のデータ訂正、NAND構造で課題となる設定以上のしきい値への過剰書き込み(over program)のデータ訂正、非選択データ線に接続されたメモリセルに書き込みを行うことによる誤書き込みのデータ訂正も行うことができる。
(5) 例えば、図3に示すように、選択ゲートトランジスタS1、S2間に、複数のページに相当するメモリセルM0〜M15を形成し、これらを1ブロックとして用い、メモリセルM0からM15までのデータを同時消去するメモリでは、1ブロックの消去時間に対して、1ページの書き込み時間を非常に小さくできるので、予め消去されたスペアブロックを形成しておくことで、スペア領域への置き換え時間を短くできる。
(6) 本実施形態では、従来装置と異なり、実際の誤りビットを、誤り訂正符号化したデータより直接検出している。よって、符号化したいずれのビットが、書き込みストレスや読み出しストレスに非常に弱いセル、即ち“裾ビット”であっても、データ誤りが生じた時点で正しく検出できる。よって、データ置き換え間隔を実メモリセルの“裾ビット”の特性に即して設定でき、より長くすることによりデータ置き換えに費やされる時間を短くできる。
(7) 本実施形態では、1ページに対して1回のデータ読み出しによって誤りビット検出を行っている。よって、従来の誤り訂正を検出しない場合と比較して読み出しにかかる時間は変化せず、高速で読み出しを行うことができる。
(8) 本実施形態に係るデータ記憶システムでは、電源遮断、電源投入、及び1つのページのデータを外部データ出力端子より読み出す一連の動作を複数回繰り返した場合にはブロック置き換え動作を行えるため、ページに書き込んだ情報データと同じ情報データが読み出せる回数は、ブロック置き換え動作を行えるため、前記1つのページのデータを連続的に読み出す操作をページに書き込んだ情報データと同じ情報データが読み出せる回数よりも多くできる。よって、システム外部から見て、半導体記憶回路7単体よりも、読み出しストレスによる消去ビットの書き込み状態への転移(read-disturb)に対して信頼性が向上したデータ記憶システムとなる。また、書き込み消去を繰り返すことにより頻度が増大する書き込み設定値を超えた不良ビット(over- program)に対しても、本実施形態の置き換えを行うことにより、書き込み消去の繰り返し回数を実質伸ばすことができ、より信頼性が向上する。
(9) 本実施形態では、スペア領域である第2のメモリセルブロックを、出荷前に予め消去すればよく、スペア領域へのデータ書き換えに対して、消去時間分を短くすることができる。
(10) ここでは2ビットの誤り修正可能な巡回BCH符号の、符号回路および復号回路を示したが、勿論、他の符号系、例えば、一般のBCH符号やM系列符号、畳み込み符号(convolutional code)、差集合巡回符号でも良く、それらを組み合わせても良い。ただし、第2の内部I/O線の配線数、及び第1の内部I/O線の配線数を少なくするためには、時系列で情報ビットを与えられ、少ない回路規模で符号化及び復号化できる巡回符号であるのが良い。また、例えば、符号語を、rビットまとめた2r個の元を持つ、いわゆるバイト符号でも勿論良く、例えば、BCH符号系の中でのバイト符号であるリードソロモン符号でもよい。バイト符号の場合には、まず、元の何れかが誤りがあるというバイト誤りを検出し、その後に、誤り訂正前のバイトと誤り訂正後のバイトを1ビットずつ比較することにより、そのバイト内のデータの各ビットで誤りを生じたビットを“1”か“0”かを判別すれば良い。この後、例えば、上記判定結果で、少なくとも1つのビットで誤っている場合に、置き換え動作を行うようにすれば良い。また、畳み込み符号としては、例えば1ビット誤り訂正可能なワイナー・アッシュ符号(Wyner-Ash code)や、バースト誤り訂正可能な岩垂符号(Iwadare code), ハーゲルバーガー符号(Hagelbarger code)を用いることができる。
(11) 図15に示すシーケンスにおいて、センスアンプ/データレジスタ回路46は、1ページ分の情報を貯えるだけで、本コピーを実現でき、外部I/Oから外部に対してデータを読み出したり、外部テンポラリメモリを設けたりする必要はない。よって、外部I/Oを通じることによるデータ転送にかかる時間がなく、高速にシーケンスを実行でき、外部I/O回路を駆動する電力を削減できる。
(第2実施形態)
第2実施形態は、第1実施形態とほぼ同一であるが、ECCで救済する場合のシーケンス及び回路構成が、第1実施形態と異なっている。第2実施形態において、第1実施形態と同一の部分や同一の電圧関係については、図面において同一符号を付し、もしくは割愛し、重複する説明は省略することにする。
図18は、第2実施形態に係る装置が備えるECC回路100のブロック例を示すブロック図である。
図18に示すように、第2実施形態に係る装置が備えるECC回路100は、シンドローム計算器15の出力(シンドローム)s1、s3、…、s2t-1(シンドローム入力)を、誤り位置ローケータ対応ROM112に入力する。誤り位置ローケータ対応ROM112は、誤り位置ローケータα-i、α-j、…α-n(誤り位置ローケータ入力)と、誤りビット個数を示す情報ビットとを出力する。これらの出力は、I/Oポート106に入力される。誤りビット数判定回路6は、誤りビット個数分だけ、誤り位置ローケータの示す誤り位置のビットを反転することによって、誤り訂正された符号出力を得ることができる。誤りビット数基準値記憶部111のROMは、本例では、ページ置き換えを行う誤りビットの基準値を記憶するものとするが、これは、例えば、第1実施形態のROM111と同様に、図11に示すフローチャートのプログラムの判断値を記憶するようにしても良い。勿論、例えば、シーケンサーなどのハードウェアで誤りビット数判定回路6を構成しても良い。
図19は、第2実施形態に係る装置の動作例を示す流れ図である。
図19は、読み出し時に1ビットより大きな誤り判断ビット数、ここでは、tビットの誤りを生じた場合ページについて、選択的に空きスペアブロックに、ページデータをECCにて修正して置き換える例を示している。また、本例では、シンドロームs1、s3、s2t-1と、誤り位置ローケータとの対応表をROM111上に、予め作成しておくことで高速に誤りビット位置を求める方法を記述している。
まず、SE1´において、シンドロームs1、s3、…、s2t-1を、誤りビット検出回路5からI/Oポート106を通じて誤りビット数判定回路6に転送する。また、受信符号を、誤りビット検出回路5からI/Oポート106を通じてビット数判定回路6内のページバッファ11に転送する。
次に、SE16において、シンドロームs1、s3、…、s2t-1を、ROM111上の“シンドローム→誤り位置ローケータ対応表”のアドレス入力に与え、誤り位置ローケータと誤り個数とをデータとして得る。図20に、シンドロームから誤り位置ローケータを得る対応表の例を示す。本例では、アドレス入力として、それぞれガロア体GF(24)上の根であるシンドロームをtセット、即ち、シンドロームs1、s3、…、s2t-1を与える。よって、入力アドレスビット数は、本例では4×tビットとなる。これに対して、それぞれガロア体GF(24)上の根である誤り位置ローケータα-i、α-j、…α-nと、誤りビット個数を出力する情報ビットとを出力する。誤りビット個数を出力する情報ビットは、例えば、log2(t+1)の小数点を切り上げた数(以後cnとする)だけあれば2進法によって、誤りビットの個数を出力することができる。BCHは線形符号のため、全てシンドロームが“0”の場合に、誤りビット無しとなる。
1ビット誤りのアドレス数としては、(ガロア体の元の数)をq(GF(24)の場合には16)とすると、
q-1C1=q−1個
のアドレスが対応し、誤り位置ローケータα-iを出力する。また、シンドロームs1の逆元はα-iとなるので、シンドロームs1より直接、逆元表ROMで計算しても良い。ここで、図20中のi、j、…、nは、0以上(q−1)以下の整数で、互いに異なる整数とする。また、(e1、f1、g1、h1)、(e2、f2、g2、h2)、…、(et、ft、gt、ht)は、シンドロームs1、s3、…、s2t-1のベクトル表示であり、(a、b、c、d)は、ベクトル表示した誤り位置ローケータ出力の任意の値で良い。
同様に、2ビット誤りのアドレス数としては、
q-1C2=(q−1)(q−2)/2個
のアドレスが対応し、2つの誤り位置ローケータα-i、α-jを出力する。この代替として、1ビット目の誤り位置ローケータα-iが判れば、2ビット目の誤り位置ローケータは、
α-j=1/(s1+1/α-i)
となるため、2ビット目の誤り位置ローケータα-jは逆元表ROMがあれば簡単に計算できる。従って、一個のローケータでも良い。なお、逆元表ROMは、誤りビット数判定回路6に内蔵されても良い。逆元表ROMを、誤りビット数判定回路6に内蔵することで、動作を高速化できる。この場合、逆元表ROMは、例えば、ROM111上に形成される。
同様に、“k”を1以上t以下の整数とすると、kビット誤りのアドレス数としては、
q-1Ck個
のアドレスが対応し、k個の誤り位置ローケータα-i、α-j、…、α-kを出力する。この代替として、1ビット目から(k−1)ビット目の誤り位置ローケータα-i、α-j、…、α-(k-1)が判れば、kビット目の誤り位置ローケータは、
α-k=1/(s1+1/α-i+…+1/α-(k-1))
となるため、2ビット目の誤り位置ローケータα-jは逆元表ROMがあれば簡単に計算できる。同様にして、tビットまでの対応表としては、図20に示すように、(0ビット誤り出力)、(1ビット誤り出力)、(2ビット誤り出力)、…、(tビット誤り出力)でそれぞれ、1、q-1C1、q-1C2、…、q-1Ct個のアドレスに対して誤り位置ローケータの出力を設定すれば良く、他のアドレスの場合には“誤りビットがtビットを超える”、と出力すれば良い。また、それぞれの出力データビット数は、ガロア体GF(24)の本例では、(0ビット誤り出力)、(1ビット誤り出力)、(2ビット誤り出力)、…、(tビット誤り出力)でそれぞれ、cn、(4×1+cn)、(4×2+cn)、…、(4×t+cn)個用意すれば良い。例えば、ECCが2ビットまで救済する場合、t=2であり、q=16の図11と同様な不良救済条件の例では、
(1+16-1C1+16-1C2)=1+15+105=121個
のアドレスに対して誤り位置ローケータの出力を設定しておき、0ビット不良、1ビット不良、2ビット不良のそれぞれの出力データビット数は、2、6、10ビット用意すれば良い。この場合、ROM111のデータ数としては、少なくとも、
1×2+15×6+105×10=1142ビット
のROMデータ領域を用意すれば良い。なお、逆元表ROMを用いた場合には、ガロア体GF(24)の本例では、(0ビット誤り出力)、(1ビット誤り出力)、(2ビット誤り出力)、…、(tビット誤り出力)でそれぞれ、cn、cn、{4×(2−1)+cn}、…、{4×(t−1)+cn}個用意すれば良い。この場合、121個のアドレスに対して誤り位置ローケータの出力を設定しておき、0ビット不良、1ビット不良、2ビット不良のそれぞれの出力データビット数は、2、2、6ビット用意すれば良い。この場合、ROM111のデータ数としては、少なくとも、
1×2+15×2+105×6=662ビット
のROMデータ領域を用意すれば良い。この逆元表ROMと変換表ROM111とを用いる方法は、逆元表ROMに必要なデータ数16ビットを加えても、678ビットと必要なROM領域を小さく保つことができる。
このようにして得た誤り位置ローケータ、及び誤り個数より、SE17において、ビット誤りが1個以上か否かを判定する。これは、具体的には、図20中の誤り個数出力例に示すデータビットで、例えば、2進数で“001”以上であることを判別すれば良い。“001”より小さい、つまり、“000”の場合には、誤りビットは無いので、符号ビットの最初の7ビットを情報ビットとして出力する。ビット誤りが1個以上ある場合(Y)、SE18に進む。
SE18において、ビット誤りがt個以上か否かを判定する。これは、具体的には、図20中の誤り個数出力例に示すデータビットで、例えば、2進数でtビットの2進数表現、例えば、“110”以上であることを判別すれば良い。“110”より小さい場合には、ビット誤りは、1ビット以上で(t−1)ビット以下である(N)。この場合、SE19に進む。SE19において、例えば、ページバッファ11上で誤り位置ローケータの示す位置のビットを反転させて誤り訂正を行い、正しいデータを外部I/Oから出力する。また、“110”以上である場合には、ビット誤りは、tビット以上である(Y)。この場合、SE20に進む。
SE20において、ビット誤りがtビットか否かを判定する。これは、具体的には、図20中の誤り個数出力例に示すデータビットで、例えば、2進数でtビットの2進数表現、例えば、“110”と等しいことを判別すれば良い。t個よりビット誤りが多い場合には、誤り訂正を行うことができない(N)。よって、この場合は、SE21において、例えば、tビットを超えたビット不良を生じたこと、つまり、エラー修正不能なビット不良が生じたことを外部I/Oに出力する。一方、ビット誤りがtビットの場合、SE22において、15ビットで最後に入力したビットから数えて(i+1)ビット目、(j+1)ビット目、…、及び(n+1)ビット目が誤りであると考え、t個の誤りビットローケータの位置のビットをビット反転して修正する。
次に、SE23において、使用していないスペアブロック領域が有るか否かを確認する。これは、例えば、FAT領域に予め使用できるスペアブロックアドレスを記憶する記憶領域を準備しておき、使用したスペアブロックについては上記記憶領域にスペアブロックアドレスを記憶しておく。つまり、SE23において、上記記憶領域に記憶されたアドレスを調べることによって、使用していないスペアブロック領域が有るか否かを確認することができる。このブロック置き換えの方法については、第1実施形態で述べた方法を用いれば良い。次いで、SE23において、“空きスペアブロック領域が有る”、と判定した場合には(Y)、SE25において、当該ページ内容を空きスペアブロック領域にエラー訂正して転送する。この操作に引き続いて、FAT領域のアドレスを、空きスペアブロックに置き換えする作業を行っても良い。
また、SE23において、“空きスペアブロック領域が無い”、と場合と判定した場合には(N)、SE24において、空きスペアブロック領域が無いことを示す信号を外部I/Oから出力する。この操作に引き続いて、当該ページ内容を元のメモリブロックアドレスに書き戻す作業を行っても良い。
以上、図19に示す操作は、第1実施形態に比較して、誤り位置ローケータの対応表を引く方法を用いているために、高速で誤り位置を求めることができ、より高速にデータ変換することができる。勿論、本実施形態中で示したように、逆元表ROMなどと組み合わせて、誤り位置ローケータの対応表の容量を小さく保つ方法を用いても良い。この場合には、比較的高速でECC訂正に必要なROM容量の小さいメモリを実現することができる。
(第2実施形態の変形例)
次に、第2実施形態の変形例を説明する。
図21は、第2実施形態の変形例に係る装置が備えるECC回路100のブロック例を示すブロック図である。また、図22に、第2実施形態の変形例に係る装置に利用されるシンドローム入力とが備えるROMの誤り位置ローケータの出力例を示す。本変形例のROMは、基本的には第2実施形態のROMと同じであるが、シンドローム計算器15の出力(シンドローム)s1、s3、s2t-1を、誤り位置ローケータ対応ROM112に入力し、誤り位置ローケータβi、βj、…、βnと、誤りビット個数を出力する情報ビットとを出力する。また、図22における(abcd)は、符号長の2進表現値の最大値よりも大きいか、(0000)となるアドレス表現とする。ここで、βは、例えば、前述のガロア体上の元ではなく、例えば、通常の2進数での誤り位置ビットのアドレス表現で良い。つまり、iビット目の誤り位置を示すローケータβiと(i+1)ビット目の誤り位置を示すローケータβi+1とは、2進数的に1増加、又は減少した符号となるようなアドレス表現とする。例えば、最初に入力した誤り位置から数えてiビット目である場合には、“βi”は“i”の2進数での誤り位置ビットのアドレス表現とすれば良い。例えば2ビット目が誤っている場合で“i=2”であると、(0010)とすれば良いし、“i=1”であると、(0001)とすれば良い。この出力を、本変形例では、例えば、t個のカウンタ116の初期値設定入力とし、クロック入力CLKを与えることにより、1ビットづつカウンタ116の値を減じ、(0000)以下にはならないようにするものとする。ここで、t個のカウンタ116のいずれかのカウンタの値が(0001)となった場合に、“1”を出力するように回路(図21ではカウンタの出力に接続されたOR回路に相当する)を形成し、その出力が“1”の場合に、バッファの出力を反転するようにすれば(図21では、排他的OR回路が対応する)、符号ビットの出力範囲では、誤りビットが訂正された符号を得ることができる。本変形例では、第2実施形態の誤りビット数判定回路6を、ハードウェアのみで構成できる。したがって、繰り返しなどを含むソフトウェアによるプログラムを必要とせず、誤りビット個数に従った誤り位置のビットを反転することによって、高速に誤り訂正された符号出力を得ることができる。例えば、シンドローム計算をシンドローム計算器15にて終了した時点で、ページバッファ11には、全符号が記憶される。よって、本変形例では、誤り位置ローケータ対応ROM112の出力遅れ時間後に、ページバッファ11とカウンタ116にクロック入力CLKを与えることにより、誤り訂正した符号を、瞬時に得ることができる。また、ROM111には、ページ置き換えを行う誤りビットの基準値を記憶するものとするが、これは、例えば、第1実施形態の図7に示した回路と同様に、図11のフローチャートのプログラムの判断値として記憶しても良い。
このような第2実施形態に係る装置、及び第2実施形態の変形例に係る装置においても、第1実施形態と同様な要件、及び効果、例えば、(1)〜(11)に記載した要件、及び効果を持つ。
(第3実施形態)
図23、及び図24は、第3実施形態に係る装置が備えるメモリセルの断面例を示す断面図である。図23に示す断面は第1実施形態の図5に示す断面に対応し、同じく図24に示す断面は図6に示す断面に対応する。なお、平面パターンは、第1実施形態の図4に示した平面パターンと同一であるので、本実施形態においては省略する。
第3実施形態は、第1実施形態において説明した浮遊ゲート型MOSトランジスタを用いたNANDセルアレイブロック49を、M-NO-Sトランジスタ、又はM-ONO-Sトランジスタを用いたNANDセルアレイブロック49に変更したものである。
図23、及び図24に示すように、第1実施形態と同様に、不揮発性メモリセルは直列に接続される。本実施形態の不揮発性メモリセルは、例えば、SiNやSiONを電荷蓄積層26とする、いわゆるM-NO-S型EEPROMセル、又はM-ONO-S型EEPROMセルである(以下、M-ONO-S型セルとする)。直列に接続されたM-ONO-S型セルの一端は、選択トランジスタを介してデータ転送線36(BL)に接続され、その他端は、選択トランジスタを介して共通ソース線33(SL)に接続される。M-ONO-S型セル、及び選択トランジスタはそれぞれ、同一のp型シリコン領域23上に形成される。p型シリコン領域23の不純物濃度、例えば、ボロン濃度は、第1実施形態と同様に1014cm-3から1019cm-3の範囲である。p型シリコン領域23は、例えば、p型シリコン基板21から、n型シリコン領域22によって分離される。これにより、p型シリコン領域23は、p型シリコン基板21とは独立して電位を印加でき、第1実施形態と同様に、消去時の昇圧回路の負荷が減り、消費電力を抑制できる利点を得られる。p型シリコン領域23上のメモリセルが形成される部分上にはトンネル絶縁膜25が形成され、同じく選択トランジスタが形成される部分上にはゲート絶縁膜25SSL、25GSLが形成される。本実施形態におけるトンネル絶縁膜25の例は、例えば、1nmから10nmの範囲の厚みを持つシリコン酸化膜、またはシリコンオキシナイトライド膜である。ゲート絶縁膜25SSL、25GSLの一例は、例えば、厚さがトンネル絶縁膜25よりも厚いシリコン酸化膜、またはシリコンオキシナイトライド膜である。ゲート絶縁膜25SSL、25GSLの厚さの一例は、例えば、3nmから15nmの範囲である。トンネル絶縁膜25上には、電荷蓄積層26が形成される。本実施形態における電荷蓄積層26の例は、例えば、3nmから50nmの範囲の厚みを持つシリコン窒化膜、またはシリコンオキシナイトライド膜である。電荷蓄積層26上には、ブロック絶縁膜(インターゲート絶縁膜)50が形成される。本実施形態におけるブロック絶縁膜50の例は、例えば、2nmから10nmの厚みを持つシリコン酸化膜、Al2O3、HfSiO、ZrSiO、HfSiON、ZrSiONである。ブロック絶縁膜50上にはポリシリコン層51が形成され、ゲート絶縁膜25SSL、25GSL上にはポリシリコン層51SSL、51GSLが形成される。ポリシリコン層51、51SSL、51GSLは、例えば、10nmから500nmの範囲の厚さを持ち、リン、砒素、またはボロンを1019cm-3から1021cm-3の範囲で含む。なお、ポリシリコン層51、51SSL、51GSLは必要に応じて設けられれば良い。ポリシリコン層51上には制御ゲート27(WL0〜WL15)が形成され、ポリシリコン層51SSL上には制御ゲート27(SSL)が形成され、ポリシリコン層51GSL上には制御ゲート27(GSL)が形成される。制御ゲート27の例は、第1実施形態と同様に、例えば、10nmから500nmの範囲の厚さを持ち、リン、砒素、またはボロンを1017cm-3から1021cm-3の範囲で含むポリシリコン、または金属シリサイドとポリシリコンとのスタック構造である。金属シリサイドの例は、例えば、WSi、NiSi、MoSi、TiSi、CoSiである。なお、ポリシリコン層51、51SSL、51GSL、及び/又は制御ゲート27(WL0〜WL15)のリン、砒素、またはボロンの濃度を1019cm-3以上に設定すると、ポリシリコン層51、及び/又は制御ゲート27(WL0〜WL15)の空乏化を防ぐことができ、ONO積層膜(ブロック絶縁膜50、又は電荷蓄積層26)にかかる電界が大きくなり、消去時間または書き込み時間の増大を抑制できる利点を得られる。
制御ゲート27(WL0〜WL15)はそれぞれ、例えば、図2に示すデータ選択線WL0〜WL15を構成する。データ選択線WL0〜WL15はそれぞれ、例えば、隣接するメモリセルブロック49どうしを接続し、ロウ方向に沿ってメモリセルアレイ1の一端から他端まで形成される。
制御ゲート27(SSL、GSL)はそれぞれ、例えば、図2に示すブロック選択線SSL、GSLを構成する。ブロック選択線SSL、GSLはそれぞれ、例えば、隣接するメモリセルブロック49どうしを接続し、ロウ方向に沿ってメモリセルアレイ1の一端から他端まで形成される。
本実施形態のゲート構造も、第1実施形態と同様に、電荷蓄積層26の側壁、及びp型シリコン領域23等の側壁が絶縁膜24によって覆われている。このため、p型シリコン領域23の側壁(浅い溝の側壁)が外界に露出せず、電荷蓄積層26がp型シリコン領域23よりも下の部分にまで形成されることを抑制できる。したがって、本実施形態においても、第1実施形態と同様に、ゲート電界集中を抑制できること、寄生トランジスタの発生を抑制できること、サイドウォーク(Sidewalk)現象を抑制できること、という利点が得られる。
ゲート構造の両側壁にはそれぞれ、側壁絶縁膜43が形成される。側壁絶縁膜43の例は、第1実施形態と同様に、例えば、5nmから200nmの厚みを持つシリコン窒化膜、またはシリコン酸化膜である。ゲート構造間の下に位置するp型シリコン領域23の部分には、n型拡散層28、28d、28sが形成される。n型拡散層28、28d、28sは、メモリセルや選択トランジスタのソース電極、またはドレイン電極である。n型拡散層28、28d、28sは、例えば、リン、又は砒素、又はアンチモンを、表面濃度が1017cm-3から1021cm-3の範囲で含み、深さ10nmから500nmの範囲に形成される。
本実施形態に係るメモリセル、例えば、M-ONO-S型セルは、n型拡散層28、トンネル絶縁膜25、電荷蓄積層26、ブロック絶縁膜50、及び制御ゲート27によって構成される。導電体層、例えば、ポリシリコン層51は、ブロック絶縁膜50と制御ゲート27との間に、必要に応じて設けられる。M-ONO-S型EEPROMセルのゲート長の例は、例えば、0.01μm以上0.5μm以下である。
選択トランジスタは、n型拡散層28、28s、28d、ゲート絶縁膜25SSL、25GSL、及び制御ゲート27(SSL、GSL)によって構成される。導電体層、例えば、ポリシリコン層51は、ゲート絶縁膜25SSLと制御ゲート27(SSL)との間、及びゲート絶縁膜25GSLと制御ゲート27(GSL)との間に、必要に応じて設けられる。選択トランジスタのゲート長の例は、M-ONO-S型EEPROMセルのゲート長よりも長く、例えば、0.02μm以上1μm以下である。選択トランジスタのゲート長を、M-ONO-S型EEPROMセルのゲート長よりも長くすると、ブロック選択時とブロック非選択時とのオンオフ比を大きく確保できる。これは、誤書き込みや誤読み出しの抑制に効果がある。
本実施形態はNAND型を示しており、M-ONO-S型セル、選択トランジスタは、互いに直列に接続される。このため、n型拡散層28、28d、28sは、隣接するM-ONO-S型セルどうし、隣接するM-ONO-S型セルと隣接する選択トランジスタ、隣接する選択トランジスタどうしでそれぞれ共有される。
n型拡散層28dは、データ転送線36(BL)に、コンタクト31d、中間配線33d、及びコンタクト34dを介して接続される。データ転送線36(BL)は、例えば、図2に示すデータ転送線BL1a〜BL2kを構成する。データ転送線BL1a〜BL2kは、例えば、隣接するメモリセルブロック49どうしを接続し、カラム方向に沿ってメモリセルアレイ1の一端から他端まで形成される。データ転送線36(BL)の材料例は、例えば、タングステン、タングステンシリサイド、チタン、チタンナイトライド、又はアルミニウムである。
n型拡散層28sは、ソース線33(SL)に、コンタクト31sを介して接続される。ソース線33(SL)は、例えば、図2に示すソース線SLを構成する。ソース線SLは、例えば、隣接するメモリセルブロック49どうしを接続し、ロウ方向に沿ってメモリセルアレイ1の一端から他端まで形成される。ソース線SLは、n型拡散層28sを、隣接するメモリセルブロック49どうしを接続し、ロウ方向に沿ってメモリセルアレイ1の一端から他端まで形成し、n型拡散層28s自体をソース線SLとしても良い。
コンタクト31s、31d、34dは、層間絶縁膜68に形成された開口30s、30d、35d内に形成される。コンタクト31s、31d、34dの材料例は、例えば、n型またはp型にドープされたポリシリコン、タングステン、タングステンシリサイド、アルミニウム、チタンナイトライド、又はチタン、又はこれら導電材料の積層構造である。層間絶縁膜68の材料例は、シリコン酸化膜、又はシリコン窒化膜である。層間絶縁膜68上、及びデータ転送線36(BL)上には、絶縁膜保護層37や、図示せぬ上部配線層が形成される。絶縁保護層37の材料例は、例えば、シリコン酸化膜、シリコン窒化膜、又はポリイミドである。上部配線層の材料例は、タングステン、アルミニウム、又は銅である。
第3実施形態によれば、第1実施形態から得られる利点に加え、M-ONO-S型セルを用いているために、第1実施形態に係る浮遊ゲート型セルよりも、書き込み電圧、及び消去電圧を低電圧化できる。低電圧化できる結果、素子分離間隔を狭め、ゲート絶縁膜を薄膜化しても、絶縁耐圧を充分に維持できる。したがって、高電圧が印加される回路の面積を小さくでき、チップ面積を縮小し易い。
さらに、浮遊ゲート型セルに比較して、電荷蓄積層26の厚さを薄く、例えば、20nm以下にでき、ゲート構造のアスペクト比を小さくできる。ゲート構造のアスペクト比を小さくできる結果、ゲート構造の加工性が向上する。さらに、層間絶縁膜68の、ゲート構造間への埋め込み性も良くなり、絶縁耐圧も向上する。
また、浮遊ゲート型セルに比較して、浮遊ゲートを形成するためのプロセス、及び浮遊ゲートを、例えば、ロウ方向に沿って分離するスリットを形成するためのプロセスが不要である。したがって、製造工程時間が短縮される。
また、浮遊ゲート型セルに比較して、電荷蓄積層26が絶縁体であり、電荷は、電荷トラップにトラップされる。このため、電荷が抜け難く、例えば、放射線に対して、強い耐性が得られる。しかも、側壁絶縁膜43が薄くなっても、電荷トラップにトラップされた電荷は、全て抜けてしまうこともなく、良好な電荷保持特性を維持できる。
さらに、電荷畜積層26は、p型シリコン領域23と合わせずれなく形成できるので、電荷蓄積層26とp型シリコン領域23との間の容量を、より均一にできる。したがって、メモリセル間の容量ばらつきが低減される。
(第4実施形態)
図25はこの発明の第4実施形態に係るデータ記憶システムのセルアレイ部、及びセンスアンプ部の構成例を示すブロック図である。図25に示すブロック図は、図2に示すブロック図に対応する。
第4実施形態は、例えば、第1実施形態において説明したNANDセルアレイブロック49を、Virtual Ground(仮想接地)セルアレイブロック49´に変更したものである。また、メモリセルは、第3実施形態において説明したM-NO-S型EEPROMセル、又はM-ONO-S型EEPROMセルとする。
図25に示すように、メモリセルアレイ1には、仮想接地セルアレイブロック49´が配置される。セルアレイブロック49´は、第1データ転送線BL(BL1a、BL2a、…、BL1k、BL2k)と第2データ転送線BL(BL1a´、…、BL1k´)との間に並列接続された不揮発性メモリセルを含む。第2データ転送線BL(BL1a´、…、BL1k´)は、例えば、ソース線として機能する。
その他の回路構成、及び回路接続はそれぞれ、図2に示すセルアレイ部、及びセンスアンプ部の構成例と同様であるので、図2と同一の参照符号を付し、その説明は省略する。図2及びその説明を参照されたい。
図26、及び図27は、第4実施形態に係る装置のメモリセルの断面例を示す断面図である。図26に示す断面は第1実施形態の図5に示す断面と同様に、例えば、ロウ方向に沿った断面であり、同じく図27に示す断面は図6に示す断面と同様に、例えば、ロウ方向と交差、例えば、直交するカラム方向に沿った断面である。図26、及び図27にはそれぞれ、2つずつのメモリセルの断面が含まれている。
図26、及び図27に示すように、本実施形態の不揮発性メモリセルは、M-NO-S型EEPROMセル、又はM-ONO-S型EEPROMセルである(以下、M-ONO-S型セルとする)。基本構造は、第3実施形態において説明したメモリセルと同じである。特に、異なるところは、メモリセルのチャネル形成方向(チャネル長方向に一致する)が、データ選択線27、27´が延びる方向(ロウ方向)に一致していることにある。
さらに、本実施形態のメモリセルは、ソース電極28の近傍及びドレイン電極28の近傍それぞれに電荷を蓄積させ、1セル当たり少なくとも2ビットの情報を記憶する。これら2ビットの情報はそれぞれ、ソース電極28及びドレイン電極28に印加する電圧の方向により読み出すことができる。この方法の公知例は、例えば、米国特許第6、201、202号がある。この方法で情報を読み出す場合、情報を読み出さない側のビットの電流端子と、情報を読み出す側のビットの電流端子とは、直列接続されていることと等価である。このため、情報を読み出さない側のビットは、NAND型セルと同様なリードディスターブ(read disturb)ストレスが印加される。よって、情報を読み出さない側のビットは、読み出しを繰り返すと、消去状態から書き込み状態に変化する。
図26、及び図28に示すように、p型シリコン領域23上には、第1の絶縁膜25が形成される。p型シリコン領域23は、不純物濃度が1014cm-3から1019cm-3の範囲の、ボロン、又はインジウムを含む。本実施形態における第1の絶縁膜25の例は、例えば、0.5nmから10nmの範囲の厚みを持つシリコン酸化膜、又はシリコンオキシナイトライド膜である。第1の絶縁膜25上には、電荷蓄積層26が形成される。本実施形態における電荷蓄積層26の例は、例えば、3nm以上50nm以下の厚さを持つシリコン窒化膜である。電荷蓄積層26上には、第2の絶縁膜(ブロック絶縁膜)50が形成される。本実施形態における第2の絶縁膜50の例は、5nm以上30nm以下の厚さを持つシリコン酸化膜、オキシナイトライド膜、Al2O3、ZrSiO、HfSiO、ZrSiON、又はHfSiONである。第2の絶縁膜50上には、導電体層51、27が形成される。本実施形態における導電体層51、27の例は、例えば、ポリシリコン層である。ポリシリコン層の具体例は、例えば、10nmから500nmの範囲の厚さを持ち、例えば、ボロン、リン、又はヒ素を1019cm-3から1021cm-3の範囲で含む。なお、導電体層51は、必要に応じて設けられれば良い。なお、導電体層51、27をポリシリコン層とした場合、ポリシリコン層が含むボロン、リン、又は砒素の濃度は、1019cm-3以上にすると良い。制御電極の空乏化を防ぐことができるので、ONO積層膜(第2の絶縁膜50、電荷蓄積層26、第1の絶縁膜25)にかかる電界が大きくなり、消去時間または書き込み時間の増大を抑制できる、という利点が得られる。導電体層27上には、低抵抗導電体層27´が形成される。低抵抗導電体層27´の例は、例えば、10nmから500nmの範囲の厚さを持つ、WSi、NiSi、MoSi、TiSi、CoSi、W、Al、又はAlCuである。低抵抗導電体層27´は、必要に応じて設けられれば良い。本実施形態においては、導電体層51、27が制御ゲート電極を構成し、低抵抗導電体層27´が制御ゲート電極、即ちデータ選択線を低抵抗化する。低抵抗導電体層27´上には、絶縁膜60が形成される。絶縁膜60の例は、例えば、5nmから500nmの範囲の厚さを持つシリコン窒化膜、又はシリコン酸化膜である。絶縁膜60は、ゲート電極加工時のマスクとして機能する。絶縁膜60は、必要に応じて設けられれば良い。
ゲート電極の両側壁にはそれぞれ、側壁絶縁膜19が形成される。本実施形態における側壁絶縁膜19は、導電体層51のロウ方向に沿った断面の両側壁から導電体層27内にかけて形成される。側壁絶縁膜19の例は、例えば、シリコン酸化膜、又はシリコンオキシナイトライド膜である。さらに、導電体層51が、例えば、シリコンを含む導電体であった時、本実施形態における側壁絶縁膜19の、少なくとも導電体層51に接する面は、導電体層51を酸化する又は酸窒化することによって形成される。酸化法、及び酸窒化法の例は、それぞれ熱酸化、熱酸窒化である。これによる利点は、堆積法、例えば、CVD法を用いて形成した堆積膜よりも、電荷トラップ密度が小さく、絶縁耐圧(dielectric breakdown voltage)も高く、かつ導電体層51と側壁絶縁膜19との間の界面準位密度が低くなることにある。側壁絶縁膜19には、堆積法を用いて形成した堆積膜よりも品質の高い熱酸化膜、又は熱酸窒化膜を用いることが可能である。
なお、図26に示すように、本実施形態における電荷蓄積層26は、n型ソース/ドレイン領域28上方において部分的に取り除かれ、取り除いた部分に層間絶縁膜68が形成される例が示されている。本実施形態における電荷蓄積層26は絶縁体である。したがって、電荷蓄積層26は、n型ソース/ドレイン領域28上方において部分的に取り除く必要は、必ずしも無い。電荷蓄積層26は、連続的に形成されていても良い。
第4実施形態に係るメモリセルは、例えば、次のような手順で形成できる。
まず、例えば、n型シリコン領域22をp型シリコン基板21内に形成し、p型シリコン領域23をn型シリコン領域22内に形成する。
次に、第1の絶縁膜25をp型シリコン領域23上に形成し、電荷蓄積層26を第1絶縁膜25上に形成し、第2の絶縁膜50を電荷蓄積層26上に形成し、導電体層51、例えば、シリコンを含む導電体層51を第2の絶縁膜50上に形成する。
次に、導電体層51、第2の絶縁膜50、電荷蓄積層26及び第1の絶縁膜25をエッチング、例えば、異方性エッチングし、導電体層51、第2の絶縁膜50、電荷蓄積層26及び第1の絶縁膜25を部分的に取り除く。これにより、カラム方向(紙面表裏方向)に沿って長手となる、導電体層51、第2の絶縁膜50、電荷蓄積層26及び第1の絶縁膜25をそれぞれ含む複数の第1線状構造をp型シリコン領域23上に得る。
次に、導電体層51の表面を酸化又は酸窒化、例えば、熱酸化又は熱酸窒化し、側壁絶縁膜19を導電体層51の表面上に得る。
次に、第1線状構造をマスクに用いて、n型不純物、例えば、リン、砒素又はアンチモンをp型シリコン領域23内に、表面濃度が1017cm-3から1021cm-3の範囲となるように、深さ10nmから500nmの間にイオン注入する。これにより、n型拡散層28をp型シリコン領域23内に得る。n型拡散層28は、メモリセルのソース領域及びドレイン領域である。
次に、絶縁物、例えば、酸化シリコン、シリケートガラス又は無機ガラスを、第1線状構造及びp型シリコン領域23(n型拡散層28)それぞれの露出面上に、10nmから1000nmの厚さの範囲に堆積し、層間絶縁膜68を得る。
次に、層間絶縁膜68の上面をエッチバック、例えば、CMP(Chemical Mechanical Polishing)し、層間絶縁膜68の上面を平坦化する。
次に、導電体層51の上面上に存在する側壁絶縁膜19を除去、例えば、フッ化アンモニウム溶液等を用いてウェットエッチングし、導電体層51の上面を露出させる。
次に、導電物、例えば、導電性ポリシリコン又はSiGe混晶を、導電体層51上及び層間絶縁膜68上に10nmから300nmの厚さの範囲に堆積し、導電体層27を得る。なお、導電体層27に導電性不純物、例えば、ボロン、リン又は砒素を含有させる場合、その濃度を1×1019cm-3以上とすると、上述したように、ONO積層膜(第2の絶縁膜50、電荷蓄積層26、第1の絶縁膜25)にかかる電界が大きくなり、消去時間または書き込み時間の増大を抑制できる。
次に、導電体層27よりも低抵抗な導電物、例えば、WSi、NiSi、MoSi、TiSi、CoSi、W、Al又はAlCuを導電体層27上に堆積し、低抵抗導電体層27´を得る。
次に、マスク材、例えば、窒化シリコン又は酸化シリコンを低抵抗導電体層27´上に堆積し、絶縁膜60を得る。
次に、絶縁膜60、低抵抗導電体層27´、導電体層27、導電体層51、側壁絶縁膜19、第2の絶縁膜50、電荷蓄積層26及び第1の絶縁膜25をエッチング、例えば、異方性エッチングし、これらを部分的に取り除く。これにより、ロウ方向(紙面左右方向)に沿って長手となる、絶縁膜60、低抵抗導電体層27´、導電体層27、導電体層51、側壁絶縁膜19、第2の絶縁膜50、電荷蓄積層26及び第1の絶縁膜25をそれぞれ含む複数の第2の線状構造をp型シリコン領域23上に得る。この工程において、メモリセルが、ロウ方向及びカラム方向それぞれに沿って1つ1つ分離される。
次に、第2の線状構造をマスクに用いて、p型不純物、例えば、ボロン、フッ化ボロン(BF2)又はインジウムをp型シリコン領域23内に、表面濃度が1016cm-3から1018cm-3の範囲となるように、深さ10nmから500nmの間にイオン注入する。これにより、p型シリコン領域23よりも濃度が高い高濃度p型拡散層18をp型シリコン領域23内に得る。高濃度p型拡散層18は、カラム方向に沿って隣接するメモリセルのチャネル間に流れるリーク電流を低減する層である。高濃度p型拡散層18は、必要に応じて設けられれば良い。
次に、絶縁物、例えば、窒化シリコン、酸窒化シリコン又はアルミナを、第2線状構造及びp型シリコン領域23(n型拡散層28、高濃度p型拡散層18)それぞれの露出面上に、5nmから200nmの厚さの範囲に堆積し、絶縁膜61を得る。絶縁膜61は、例えば、CVD(Chemical Vapor Deposition)法又はスパッタ法を用いて形成された堆積絶縁膜である。このような絶縁膜61を、メモリセル上に堆積、例えば、全てのメモリセル上に堆積又はメモリセルアレイの全面上に堆積すると、絶縁膜61より上方に形成される膜からのガス、ラジカル又はイオンが、メモリセルに対して悪い影響を及ぼす事情を抑制できる、という利点が得られる。
次に、シリケートガラス、例えば、BPSG、PSG又はBSGを絶縁膜61上に、10nmから1000nmの厚さの範囲に堆積し、層間絶縁膜62を得る。BPSG、PSG、BSGは、例えば、ボロン、リンを1×1020cm-3以上含む。シリケートガラスはアルカリイオンをゲッタリングする機能がある。したがって、層間絶縁膜62は、メモリセル上、例えば、全てのメモリセル上又はメモリセルアレイの全面上に形成堆積すると、アルカリイオンによる汚染を抑制できる、という利点が得られる。
本実施形態では、層間絶縁膜62は、絶縁膜61に直接接して形成されているが、必ずしも接して形成される必要は無い。例えば、層間絶縁膜62は、配線層間の絶縁膜や配線層上の絶縁膜として形成しても、ゲッタリングの効果はあるので構わない。
シリケートガラスは、一般的に堆積直後の埋め込み性が悪い。このため、堆積後に、例えば、750℃から1000℃の間で2分から120分の範囲でアニールすると、粘性流動が起こり、表面が平坦化する。アニールの際、シリケートガラスに含まれる水分又はヒドロニウムイオンが遊離する。例えば、水分はメモリセルのゲート端を酸化する。このため、例えば、第2の絶縁膜50の膜厚が厚くなり、ゲート形状が変化する。しかし、絶縁膜61を形成すると、例えば、水分が遮蔽されるので、上記ゲート形状の変化を抑制できる、という利点を得られる。
層間絶縁膜62としては、例えば、シクロペンタシラン又はポリシラザンを用いて形成した無機ガラスを用いても良い。この場合、シクロペンタシラン又はポリシラザンを無機ガラスに転換するための酸化工程が必要である。酸化剤は、水分同様に、ゲート形状を変化させてしまう。しかし、絶縁膜61を形成すると、例えば、酸化剤が遮蔽されるので、上記ゲート形状の変化を抑制できる、という利点を得られる。これらのように、絶縁膜61を形成することは、例えば、微細なメモリセルを集積する場合に有利である。
なお、層間絶縁膜62には、例えば、TEOSやHDPを用いて形成したシリコン酸化膜や、HSQ等の他の絶縁膜との積層構造を用いても良い。
次に、上部配線36を、層間絶縁膜62上に形成する。上部配線36は、半導体集積回路装置内に設けられる様々な配線である。上部配線36は、例えば、半導体集積回路装置の用途に応じて様々に変化する。したがって、本実施形態では、上部配線36の具体的な形状については省略し、上部配線36が層間絶縁膜62上に形成されることを図示するにとどめる。例えば、図26及び図27には、上部配線36は、あたかも“1枚の板”のように示すにとどめる。上部配線36は、1層のみを示しているが、もちろん2層以上の多層配線構造としても良い。
次に、絶縁物、例えば、TEOS又はHDPを用いて形成した酸化シリコン、又はHSQを堆積し、層間絶縁膜37を、上部配線36上及び層間絶縁膜62上に得る。
次に、窒化シリコンを層間絶縁膜37上に、例えば、プラズマ化学気相成長法を用い、20nmから1μmの厚さの範囲で堆積し、シリコン窒化膜層37´を得る。シリコン窒化膜層37´は、チップ外部(半導体集積回路装置の上面)から拡散してくる水分をブロックする機能がある。
第4実施形態によれば、上記実施形態の要件、及び効果に加え、以下の要件、及び効果がある。
(12) 導電体層(制御ゲート)27は、n型拡散層(ソース領域及びドレイン領域)28が形成される方向(カラム方向、図26では紙面表裏方向)に交差、例えば、直交する方向(ロウ方向、図26では紙面左右方向)に形成される。そして、メモリセルは、n型拡散層(ソース領域及びドレイン領域)28間に並列接続される。このような接続状態を持つEEPROMとしては、例えば、仮想接地アレイ(Virtual Ground Array)型がある。メモリセルをn型拡散層28間に並列接続した半導体メモリは、メモリセルブロックの直列抵抗を小さく、かつ、一定にできる。したがって、メモリセルのしきい値の安定化に有利であり、しきい値分布幅が狭い、例えば、多値記憶メモリに有用である。
また、層間絶縁膜(素子分離領域)68及びn型拡散層28はそれぞれ、電荷蓄積層26に対して自己整合的に形成される。層間絶縁膜68及びn型拡散層28はそれぞれ、電荷蓄積層26に対して合わせずれ余裕を確保する必要が無い。かつ層間絶縁膜68は、n型拡散層28上に形成される。したがって、素子分離領域をメモリセル間に設ける半導体メモリや、電荷蓄積層26を素子分離領域上に設ける半導体メモリに比較して、メモリセルを高密度に集積できる。
なお、メモリセルをn型拡散層間に並列接続した半導体メモリのメモリセルアレイの要件、及び効果については、例えば、本件発明者による先行出願である特開2002−150783号公報にも記載がある。
(13) メモリセルは、M-ONO-S型セルである。したがって、第3実施形態と同様に、浮遊ゲート型セルよりも、書き込み電圧及び消去電圧を低くでき、素子分離間隔を狭め、ゲート絶縁膜を薄くしても十分な絶縁耐圧を維持できる。このため、高電圧が印加される回路の面積を小さくでき、チップ面積を縮小し易い。
第3実施形態と同様に、電荷蓄積層26の厚さを薄くできるので、浮遊ゲート型セルに比較してゲート構造のアスペクト比を小さくでき、ゲート構造の加工性が良い。層間絶縁膜68の、ゲート構造間への埋め込み性も良く、絶縁耐圧も良い。
第3実施形態と同様に、浮遊ゲート型セルに比較して、浮遊ゲートを形成するためのプロセスを省略、もしくは簡単化できるので、製造工程時間が短縮される。
第3実施形態と同様に、電荷が電荷トラップにトラップされるので、浮遊ゲート型セルに比較して電荷保持特性が良い。例えば、放射線に対して、強い耐性を得ることもできる。
以上、この発明をいくつかの実施形態により説明したが、この発明はいくつかの実施形態に限定されるものではなく、その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
例えば、素子分離領域、及び層間絶縁膜等の絶縁膜を形成する方法は、例えば、シリコンをシリコン酸化膜やシリコン窒化膜に変換する以外の方法を用いることが可能である。例えば、酸素イオンを堆積したシリコンに注入する方法、堆積したシリコンを酸化する方法を用いても良い。
電荷蓄積層26は、TiO2、Al2O3、タンタル酸化膜、チタン酸ストロンチウム、チタン酸バリウム、及びチタン酸ジルコニウム鉛を用いても良い。また、これら材料を積層した積層膜を用いても良い。
半導体基板は、p型シリコンに限らず、n型シリコン、SOI基板上のSOIシリコン層、SiGe混晶、SiGeC混晶など、シリコンを含む基板、例えば、単結晶基板であれば良い。無論、半導体として、シリコン以外を使うこともできる。
メモリセルとして、nチャネル型MOSFET(nチャネル型浮遊ゲート型セル、nチャネル型M-NO-S型セル、nチャネル型M-ONO-S型セル)を用いたが、pチャネル型MOSFET(pチャネル型浮遊ゲート型セル、pチャネル型M-NO-S型セル、pチャネル型M-ONO-S型セル)を用いても良い。この場合には、上記実施形態の各半導体領域の導電型を、n型からp型へ、p型からn型へとそれぞれ読み替えれば良い。さらに、導電性不純物として、砒素、リン及びアンチモンのいずれかを、それぞれインジウム及びボロンのいずれかに読み替えれば良い。
導電体層(制御ゲート)27、51は、Si半導体、SiGe混晶及びSiGeC混晶を用いることができ、これら材料を積層した積層構造にしても良い。また、これら材料は、多結晶、非晶質及び単結晶のいずれであっても良い。多結晶、非晶質及び単結晶の結晶性の異なる層を積層することも可能である。導電体層(制御ゲート)27、51が半導体であると、特に、シリコンを含んだ半導体であると、例えば、第4実施形態において説明したように、良好な側壁絶縁膜19を得ることができる。側壁絶縁膜19を、シリコンを含んだ半導体を酸化又は酸窒化によって形成できるためである。
電荷蓄積層26は、ソース領域側とドレイン領域との間で分離されていたり、ドット状に形成されていたりしても良い。
低抵抗導電体層27´は、例えば、Ti、Co、Ni、Mo、Pd及びPtといった金属と、導電体層27、例えば、シリコンを含む導電体層27と反応させてシリサイドを形成し、これを低抵抗導電体層27´としても良い。
上記実施形態では、2値を記憶するメモリセルを用いた例を示したが、3値以上のディジタル値を、複数のしきい値として記憶するメモリセルを用いても良い。いわゆる多値メモリである。多値メモリは、2値メモリに比較して、各情報に対応したしきい値の分布幅が狭く、また、しきい値分布間の分離間隔も狭い。このため、多値メモリは、2値メモリに比較して、不良ビットが発生し易い。つまり、上記実施形態による利点は、多値メモリにおいてより有効に得ることができる。したがって、上記実施形態は、多値メモリに有用である。また、1つのメモリセルが記憶する情報の数を2n値とすると、情報データのデコードを簡略化できる利点がある。
上記実施形態は、不揮発性半導体メモリの例を示したが、メモリセルで共有するデータ選択線を有し、上記データ選択線によってデータが並列に読み出されるメモリセルブロックと、並列に読み出したデータをECCにより誤りビットを訂正する回路と、メモリセルで共有するデータ選択線を有したスペアメモリセルブロックとを有した半導体メモリであれば、上記実施形態を適用することができる。この場合、誤りビットは、例えば、経年変化、エレクトロマイグレーション(electro-migration)、及び腐食(collusion)等によって生じる場合を考えれば良く、その誤りビット率を大幅に改善できることは明らかである。よって、例えば、メモリセルとしては、DRAMセル、SRAMセル、FeRAMセル、MRAMセル等、メモリセルであればいずれでも用いることができる。
また、各実施形態は単独で実施することが可能であるが、適宜組み合わせて実施することも可能である。
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
また、各実施形態は、この発明を半導体メモリに適用した例に基づき説明したが、この発明は半導体メモリに限られるものではなく、半導体メモリを内蔵した半導体集積回路装置、例えば、プロセッサ、システムLSI等もまた、この発明の範疇である。
以上、実施形態によれば、ECC回路の検査ビット数を増加させること無しに、外部インターフェースから見た不良率を大幅に低減できる。特に、空き記憶領域として準備する数について、ある数以上予めスペア領域として用意することにより、ユーザの使用できるデータ記憶領域をライフエンドまで保証しつつ、外部インターフェースから見た不良率を急激に抑制できる。