従来の技術では、不良に至った不揮発性記憶装置を交換したり、冗長用(予備)の不揮発性メモリを用いることを前提としており、不良に至った不揮発性記憶装置を交換せずに、且つ、各不揮発性記憶装置の記憶領域を無駄なく利用するには至っていない。
本発明の目的は、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、経時的に発生する書込み不良に対する救済効率を向上させることができる不揮発性記憶システムを提供することにある。
本発明の別の目的は、一部の不揮発性記憶装置内で不良データブロックの代替が不可能になっても、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、全体の不良を逃れることができる不揮発性記憶システムを提供することにある。
本発明の更に別の目的は、不良データブロックの代替に、各不揮発性記憶装置の記憶領域を無駄なく利用することができる不揮発性記憶システムを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕《チップ間代替》本発明に係る不揮発性記憶システムは、読み出し、消去及び書込み可能な複数の不揮発性記憶装置と、外部からの要求に応答して前記不揮発性記憶装置の動作を制御する制御装置とを有する。前記制御装置は、前記複数の不揮発性記憶装置の内の動作対象の不揮発性記憶装置に対する書込みエラーを検出したとき、書込みエラーに係る記憶領域を前記複数の不揮発性記憶装置の内の他の不揮発性記憶装置の記憶領域に代替させたことを示すチップ間代替情報を当該エラーに係る記憶領域の不揮発性記憶装置に設定することが可能であり、また、動作対象の不揮発性記憶装置からチップ間代替情報を得たとき当該チップ間代替情報が示す他の不揮発性記憶装置を動作対象に変更可能なものである。本明細書において書込みエラーとは、不揮発性メモリセルに対する書込み電圧の印可(プログラム)とプログラムベリファイを行った結果、所要の閾値電圧を得ることができない状態、或は、書込み対象が既に代替されているとき上記プログラム及びプログラムベリファイを開始する前に代替先アドレスを取得できるかの確認処理において代替先の取得が不可能である場合などとされる。
上記より、一つの不揮発性記憶装置で発生した書込みエラーの救済に、別の不揮発性記憶装置の記憶領域を用いるチップ間代替が可能になる。これにより、一部の不揮発性記憶装置内で不良データブロックの代替が不可能になっても、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、全体の不良を逃れることができる。
新たに代替可能な記憶領域の残りが所定数以下になった不揮発性記憶装置において書込みエラーが生じたとき、それに対してチップ間代替を許容するとよい。これにより、データブロックの無駄を極力排除するようにチップ間代替を行うことができる。すなわち、チップ内代替が全く不可能に成るまで代替を行ってしまった不揮発性記憶装置が顕在化する前にチップ間代替を開始させるから、新たに代替可能な領域の残りに大きな偏りが生じ難くなり、チップ間代替やチップ内代替のための処理サイクル数を最小限に抑えることが可能になる。不揮発性記憶装置間で新たに代替可能な領域の残りに大きな偏りを生ずると、代替先として採用し得る不揮発性記憶装置の数が少なくなり、チップ間代替先として採用し得る不揮発性記憶装置を探すための検索リトライ回数が増えてしまうからである。
データブロックの無駄を極力排除するようにチップ間代替を行うには、代替先として採用可能な記憶領域が所定数以下になった不揮発性記憶装置で生じた書込みエラーに対してチップ間代替を許容するようにすればよい。
代替許可状態の不揮発性記憶装置で生じた書込みエラーに対してはチップ内代替で対処すればよい。例えば、前記制御装置は、代替可能な記憶領域が所定数よりも多く残っている不揮発性記憶装置で書込みエラーを生じたときは、書込みエラーに係る記憶領域を同じ不揮発性記憶装置の別の記憶領域に代替させたことを示すチップ内代替情報を当該エラーに係る記憶領域の不揮発性記憶装置に設定し、また、動作対象の不揮発性記憶装置からチップ内代替情報を得たとき当該チップ内代替情報が示す記憶領域を動作対象に変更可能とする。
これにより、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、経時的に発生する書込み不良に対する救済効率を向上させることができ不良データブロックの代替に、各不揮発性記憶装置の記憶領域を無駄なく利用することができる。
尚、前記チップ間代替やチップ内代替で用いられる記憶領域は、デバイスプロセスにおいて欠陥救済に用いられる冗長記憶領域とは異なることは言うまでもない。
チップ間代替による代替先の不揮発性記憶装置としては、代替先として採用可能な記憶領域が所定数よりも多く残っている不揮発性記憶装置を候補として採用可能にすればよい。採用し得る前記候補が存在しないときは、代替先として採用可能な記憶領域が所定数以下になっている不揮発性記憶装置を別の候補として採用するとよい。書込みエラーに係る記憶領域を代替する領域に当該書込みエラーに係るデータを書き込むとき、その動作が他のデータを書込む動作と競合しないようにすることが望ましく、そのような競合を排除するのに当該書き込みエラーを生じた不揮発性記憶装置への書き込みが最善である場合に、それを可能にすることができる。
〔2〕《インタリーブ書込み》上記不揮発性記憶システムにおいて、前記制御装置は、外部からのデータ書込み要求に応答して、書込みデータを所定データ量単位で書込み動作タイミングをずらしながら順次異なる複数の不揮発性記憶装置に書込むインタリーブ書込みを制御可能である場合、インタリーブ書込み動作中に書込みエラーを検出したとき、書込みエラーに係る記憶領域を代替する他の不揮発性記憶装置として、前記書き込みエラーを生じた不揮発性記憶装置を含む一連のインタリーブ書き込み対象とされる不揮発性記憶装置を除外する。
これにより、代替領域に書込みエラーに係るデータを書き込むとき、分割された他のデータを書込むインタリーブ動作と競合するのを排除することができる。若しくはそのような競合排除を高い確率で容易に実現することができる。
インタリーブ書き込みに着目した更に詳しい別の観点によれば、前記制御装置は、インタリーブ書込み動作中に書込みエラーを検出したとき、書込みエラーに係る記憶領域を代替する他の不揮発性記憶装置として、インタリーブの順序に対して前後所定の複数個以上離れた不揮発性記憶装置の中から第1候補を選択するようにしてよい。
前記制御装置は、前記第1候補を選択不可能なとき、前記第1候補の選択範囲外のうち、インタリーブ順序に対して後方に位置する不揮発性記憶装置の中から代替先として採用可能なものを第2候補として選択してよい。
前記制御装置は、前記第2候補の選択が不可能なとき、書込みエラーを生じた不揮発性記憶装置を第3候補として記憶領域の代替を行う。
前記制御装置は、前記第3候補の選択が不可能なとき、前記第1候補の選択範囲外のうち、インタリーブの順序方向に対する前方の不揮発性記憶装置の中から代替先として採用可能なものを第4候補として選択する。
〔3〕《パラレル書き込み》インタリーブ書込みに代えてパラレル書込みを採用するとき、前記制御装置は、外部からのデータ書込み要求に応答して、書込みデータを所定データ量単位で異なる複数の不揮発性記憶装置に並行して書込むパラレル書込みを制御可能であり、パラレル書込み動作中に書込みエラーを検出したとき、書込みエラーに係る記憶領域を代替する他の不揮発性記憶装置として、前記書込みエラーを生じた不揮発性記憶装置を含むパラレル書込み対象とされる不揮発性記憶装置を除く範囲から第1候補を選択する。
〔4〕本発明に係る不揮発性記憶装置を更に別の観点より説明する。不揮発性記憶システムは、制御装置と、複数の不揮発性記憶装置とを備える。前記制御装置は、外部よりデータ及びアドレス情報を受信し、前記外部より受信したデータの前記複数の不揮発性記憶装置への格納、前記不揮発性記憶装置に格納されたデータの読み出し、又は前記不揮発性記憶装置に格納されたデータの消去の各動作を制御し、それぞれの前記不揮発性記憶装置は、前記制御装置からの動作指示に応じて、前記制御装置から供給されたデータについてデータを格納する書込動作、格納されたデータを読み出して前記制御装置に供給する読み出し動作、又は格納したデータを消去する消去動作の各動作を行う。そして、前記制御装置は、前記外部より受信したデータを所定のサイズに分割し、分割された分割データの内の第1データを書込動作指示と共に第1の不揮発性記憶装置に供給し、前記第1の不揮発性記憶装置において書込動作継続中に第2データを書込指示と共に第2の不揮発性記憶装置に供給するインタリーブ動作を行い、分割された全てのデータを前記複数の不揮発性記憶装置に順次供給する。前記複数の不揮発性記憶装置のうち1の不揮発性記憶装置において所定のデータの書込動作において書込エラーが発生した場合、前記制御装置が前記書込エラーを検出した際に、書込動作を行っている不揮発性記憶装置、及び前記書込エラーの発生以降に分割データの書込み対象とされる不揮発性記憶装置を除く他の不揮発性記憶装置に対して、前記制御装置は書込動作指示と共に前記所定のデータを供給するデータ格納制御を行う。
前記不揮発性記憶装置はそれぞれ、複数のメモリセルと、複数のワード線と、複数のビット線を有する。前記複数のメモリセルはそれぞれ、対応するワード線とビット線の交点に配置される。それぞれのワード線に接続されるメモリセルは、例えば第1のグループと第2のグループに分類され、前記第1のグループのメモリセルは前記制御装置から供給されたデータを格納するために用いられ、前記第2のグループのメモリセルは所定の情報を格納するために用いられる。前記所定の情報は、前記書込動作において当該ワード線に接続されるメモリセルに前記所定のデータを格納する際に書込エラーが発生したか否かの情報と、前記書込エラーが発生した場合、前記所定のデータを格納した不揮発性記憶装置を示す情報を含む。
前記分割されたデータの所定のサイズは、例えば前記第1のグループのメモリセルに格納可能なデータのサイズである。前記書込動作、読み出し動作、消去動作はそれぞれ、例えば前記ワード線毎に行われる。
前記メモリセルはそれぞれ、例えば格納すべきデータに対応するしきい値電圧としてデータの格納を行い、前記書込動作は、それぞれのメモリセルのしきい値電圧を格納すべきデータに対応するしきい値電圧に変化させる第1動作と、それぞれのメモリセルのしきい値電圧が対応するしきい値電圧に変化したか否かを確認する第2動作とを含み、前記第1動作と前記第2動作とを所定の回数繰り返す。このとき、前記書込エラーは、所定の回数前記第1動作と前記第2動作を繰り返した後に、少なくとも1つのメモリセルのしきい値電圧が対応するしきい値電圧になっていないことを検出することである。
前記不揮発性記憶装置は、前記書込動作において前記書込エラーを検出した場合、前記制御装置に書込エラーの発生を通知し、前記制御装置は、前記通知により前記書込エラーを検出した際、前記他の不揮発性記憶装置に対して書込動作指示を行う前に、書込エラーが発生した当該不揮発性記憶装置に対して、書込エラーが発生した際に書込動作対象であったワード線とは異なるワード線を指定して書込動作を行う。
前記不揮発性記憶装置は、デバイスプロセス段階で冗長手段による救済を受けている場合、前記制御装置に書込エラーの発生を通知する前に、冗長手段を介して、前記書込エラーが発生した際に書込動作対象であったワード線とは異なるワード線を指定して書込動作を行う。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、経時的に発生する書込み不良に対する救済効率を向上させることができる不揮発性記憶システムを実現することができる。
一部の不揮発性記憶装置内で不良データブロックの代替が不可能になっても、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、全体の不良を逃れることができる不揮発性記憶システムを提供することができる。
不揮発性記憶システムにおいて、不良データブロックの代替に、各不揮発性記憶装置の記憶領域を無駄なく利用することができる。
《ATAメモリカード》図1には本発明に係る不揮発性記憶システムの一例であるフラッシュメモリ内蔵ATAメモリカード(単にATAメモリカードとも記す)のブロック構成が示される。同図に示されるメモリカード1は、図示を省略するカード基板に、読み出し、消去及び書込み可能な複数の不揮発性記憶装置の一例であるフラッシュメモリFLS1〜FLS16(任意の1個をフラッシュメモリFLSiと記す)と、外部からの要求に応答して前記複数のフラッシュメモリの動作を制御する制御装置の一例としてのカードコントローラCTRと、が実装されて構成される。フラッシュメモリFLS1〜FLS16とカードコントローラCTRは、特に制限されないが、バス2に共通接続され、フラッシュメモリFLS1〜FLS16は夫々に固有のチップイネーブル信号CE1〜CE16(任意の一つをチップイネーブル信号CEiと記す)によって動作選択されるようになっている。前記バス(I/Oバス)2は、アドレス、データ、アクセスストローブ信号及びコマンドのやり取りなどに利用される。
図2フラッシュメモリFLSiの一例が示される。同図においてメモリアレイ3は、メモリマット、データラッチ回路及びセンスラッチ回路を有する。このメモリマットは電気的に消去及び書き込み可能な不揮発性のメモリセルトランジスタを多数有する。メモリセルトランジスタ(フラッシュメモリセルとも記す)は、特に図示はしないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成される。コントロールゲートはワード線6に、ドレインはビット線5に、ソースは図示を省略するソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧(コントロールゲート印加電圧)に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。
前記バス2に接続されるフラッシュメモリ1の外部入出力端子I/O0〜I/O7は、アドレス入力端子、データ入力端子、データ出力端子、コマンド入力端子に兼用される。外部入出力端子I/O0〜I/O7から入力されたXアドレス信号はマルチプレクサ7を介してXアドレスバッファ8に供給される。Xアドレスデコーダ9はXアドレスバッファ8から出力される内部相補アドレス信号をデコードしてワード線を駆動する。
前記ビット線5の一端側には、センスラッチ回路が設けられ、他端にはデータラッチ回路が設けられている。ビット線5はYアドレスデコーダ11から出力される選択信号に基づいてYゲートアレイ回路13で選択される。外部入出力端子I/O0〜I/O7から入力されたYアドレス信号はYアドレスカウンタ12にプリセットされ、プリセット値を起点に順次インクリメントされたアドレス信号が前記Yアドレスデコーダ11に与えられる。
Yゲートアレイ回路13で選択されたビット線は、データ出力動作時には出力バッファ15の入力端子に導通され、データ入力動作時には入力バッファ17を介してデータ制御回路16の出力端子に導通される。出力バッファ15、入力バッファ17と前記入出力端子I/O0〜I/O7との接続は前記マルチプレクサ7で制御される。入出力端子I/O0〜I/O7から供給されるコマンドはマルチプレクサ7及び入力バッファ17を介してモード制御回路18に与えられる。
制御信号バッファ回路19には、アクセス制御信号としてチップイネーブル信号CEi、出力イネーブル信号OEi、書き込みイネーブル信号WEi、シリアルクロック信号SC、リセット信号RESi及びコマンドイネーブル信号CDEiが供給される。モード制御回路18は、それら信号の状態に応じて外部との信号インタフェース機能などを制御し、また、入力されたコマンドに従って内部動作を制御する。入出力端子I/O0〜I/O7に対するコマンド入力又はデータ入力の場合、前記信号CDEiがアサートされ、コマンド入力であれば更に信号WEiがアサート、データ入力であればWEiがネゲートされる。アドレス入力であれば、前記信号CDEiがネゲートされ、信号WEiがアサートされる。これにより、モード制御回路18は、外部入出力端子I/O0〜I/O7からマルチプレクスされて入力されるコマンド、データ及びアドレスを区別できる。モード制御回路18は、消去や書込み動作中にレディー・ビジー信号R/Biをアサートしてその状態を外部に知らせることができる。
内部電源回路(内部電圧発生回路)20は、書込み、消去、ベリファイ、読み出しなどのための各種内部電圧とされる動作電源21を生成して、前記Xアドレスデコーダ9及びメモリセルアレイ3等に供給する。
前記モード制御回路18は、入力コマンドに従ってフラッシュメモリFLSiを全体的に制御する。フラッシュメモリFLSiの動作は、基本的にコマンドによって決定される。フラッシュメモリ1のコマンドには、読み出し、消去、書込み等の各コマンドがある。
フラッシュメモリFLSiはその内部状態を示すためにステータスレジスタ24を有し、その内容は、信号OEiをアサートすることによって入出力端子I/O0〜I/O7から読み出すことができる。
フラッシュメモリFLSiはデバイス製造段階で明らかになった不良メモリセルトランジスタを救済するための冗長手段として、例えば冗長プログラム回路8R、冗長Xアドレスデコード論理9R、及び冗長メモリアレイ3Rを有し、ワード線単位の救済が可能にされる。前記冗長プログラム回路8Rは救済されるべき不良Xアドレスがプログラムされ、プログラムされた不良Xアドレスに一致するXアドレスの入力を検出すると、Xアドレスデコーダ9に検出信号を出力する。Xアドレスデコーダ9は、前記検出信号が活性化されると、正規のXアドレスデコード論理を非活性化し、それに代えて冗長Xアドレスデコード論理9Rを活性化し、そのときの不良アドレスに救済に割当てられる冗長アドレスを冗長プログラム回路8Rから入力してデコードし、冗長メモリアレイ3Rで冗長ワード線を選択する。
図3には前記カードコントローラCTRの一例が示される。カードコントローラCTRはホスト装置に接続されるホストインタフェース(HIF)30、前記バス2を介してフラッシュメモリFLS1〜FLS16に接続されるメモリインタフェース(MIF)31を有し、その間に、制御論理回路32が配置され、この制御論理回路32に中央処理装置(CPU)33、リードオンリメモリ(ROM)34、及びランダムアクセスメモリ(RAM)35が接続されて構成される。前記CPU33はホスト装置から与えられるアクセス要求などに対し、ROM34に格納されたプログラムを実行してホスト装置側とのインタフェース制御及びフラッシュメモリ側とのインタフェースを制御を行う。RAM35はインタフェース制御に際してCPUのワーク領域及び制御テーブル領域などに利用される。前記制御論理回路32は、前記CPU33によって可能なソフトウェア処理の一部を負担するためのホストインタフェース機能、メモリインタフェース機能、エラー検出・訂正機能、及びデータ転送制御機能を実現するための専用ハードウェアである。
カードコントローラCTRの代表的な機能として、ATAインタフェース仕様に準拠して、フラッシュメモリFLS1〜FLS16をファイルメモリとして動作させるアクセス制御機能と、フラッシュメモリFLSiへのデータ書き込みに関する不良、例えば一部の記憶領域に発生する不良に対する記憶領域の代替制御機能がある。アクセス制御機能はIDEディスクインタフェース仕様と互換であって既に公知であるから、ここではその詳細な説明は省略する。以下、代替制御機能について詳述する。
《代替制御機能》図4にはフラッシュメモリFLSiにおけるメモリマットのアドレスマップが例示される。このアドレスマップは個々のフラッシュメモリFLSiにおけるローカルなアドレスマップであり、データ領域40、代替領域41、不良登録テーブル領域42に大別される。各領域は、特に制限されないが、4セクタ分の2048(512×4)バイトにECCコードの32バイトを有する単位ブロックBLKに32バイトの管理情報CNTが付加されたフォーマットの単位領域BLK・CNTを有する。例えば、データ領域40は15649個の単位領域を有し、代替領域41は673個の単位領域BLK・CNTを有し、不良登録テーブル領域42は62個の単位領域BLK・CNTを有する。尚、各単位領域BLK・CNTに対してはフラッシュメモリFLSiのデバイスプロセス段階で発生する欠陥救済のための前記冗長マット3Rの一部とされる冗長救済用の記憶領域が設けてあり、冗長救済が行なわれた場合には救済されるべきアドレスにマッピングされ、救済に用いなければアドレスマッピングは行なわれない。
前記データ領域40は例えばユーザに開放されるデータ領域とされる。経時的にデータ領域40等で書込みエラーを生じたとき、エラーを生じたデータ領域40等の単位領域BLK・CNTを代替するのに前記代替領域41が用いられる。代替の単位は単位領域BLK・CNTを最小単位とする。代替領域41は同じフラッシュメモリ内のデータ領域40等を代替するチップ内代替の他、別のフラッシュメモリのデータ領域40等を代替するチップ間代替にも利用される。前記不良登録テーブル領域42は、チップ内代替及びチップ間代替が行なわれたとき、代替先のフラッシュメモリと代替先の代替領域のアドレスとが登録される領域である。
図5には不良登録テーブル領域42の不良登録データフォーマットが例示される。特に制限されないが、1個の単位領域BLK・CNTに対する不良登録データは4バイトとされ、代替先のフラッシュメモリを特定するチップ番号領域50と代替先の単位領域のアドレスを特定する代替先アドレス領域51が設けられている。ECCコードは11ビットの情報毎に配置されている。尚、代替先アドレスは、特に制限されないが、代替領域先頭アドレスからのオフセットアドレスとされる。
4バイト毎の不良登録データと単位領域BLK・CNTとの対応は、特に制限されないが、一対一対応とされる。したがって、単位領域BLK・CNTの物理アドレスに基づいてアドレス演算を行うことにより、対応する4バイト毎の不良登録データを得ることができる。そのようなアドレス演算はカードコントローラCTRが行う。
図6には前記管理情報CNTの情報フォーマットが例示される。管理情報CNTは、代替フラグ60、ブロックアドレス61、識別コード62、その他管理情報64、及びECCコード65を有する。代替フラグ60は所定のコードにより、対応する単位領域BLK・CNTが代替されていないことを示し、全ビット“1”の場合には対応する単位領域BLK・CNTが代替領域41で代替されていることを示す。ブロックアドレスは当該単位領域BLK・CNTに割当てられたローカルなメモリアドレス(物理アドレス)を意味する。識別コードは、単位ブロックBLKがデータか制御情報等の区別を示すコードである。その他管理情報として、例えば代替先の単位領域BLK・CNTでは代替元(エラー発生元)単位領域の物理アドレス等を含む。
カードコントローラによる前記単位領域BLK・CNTの代替制御について説明する。
カードコントローラCTRは代替領域41の特定アドレス、例えば物理アドレス“3E2C‘H”(記号‘Hは16進数を意味する)をチップ間代替判定ブロックアドレスとして認識する。即ち、カードコントローラCTRは、単位領域のアクセスに際して管理情報CNTを読み込み、読み込んだ管理情報CNTの物理アドレスが“3E2C‘H”よりも下位にあれば、換言すれば、代替領域41に未だ代替可能な記憶領域が所定数よりも多く残っていれば、その単位領域BLK・CNTに対して書込みエラーを生じたとき、チップ内代替を行うように制御する。代替制御では、書込みエラーを生じた前記単位領域BLK・CNTにおける管理情報の代替フラグ60を全ビット“1”とし、その単位領域BLK・CNTに対応する4バイト毎の不良登録データとして、領域50には代替先のチップ番号(この場合はチップ内代替であるから書込みエラーを生じたフラッシュメモリのチップ番号)が書込まれ、領域51には代替先アドレスが書込まれる。このようにして領域50,51及びフラグ60に書込まれた情報は、書込みエラーに係る単位領域BLK・CNTを同じフラッシュメモリの別の単位領域BLK・CNTに代替させたことを示すチップ内代替情報を成す。
カードコントローラCTRは、前記読み込んだ管理情報CNTの物理アドレスが“3E2C‘H”よりも上位にあれば、換言すれば、代替領域41で新たに代替可能な記憶領域が所定数以下になっていれば、その単位領域BLK・CNTに対して書込みエラーを生じたとき、チップ間代替を行うように制御する。この代替制御では、書込みエラーを生じた前記単位領域BLK・CNTにおける管理情報の代替フラグ60を全ビット“1”とし、その単位領域BLK・CNTに対応する4バイト毎の不良登録データとして、領域50には代替先のチップ番号(この場合はチップ間代替であるから書込みエラーを生じたフラッシュメモリとは異なる別のフラッシュメモリのチップ番号)が書込まれ、領域51には代替先アドレスが書込まれる。このようにして領域50,51及びフラグ60に書込まれた情報は、書込みエラーに係る単位領域BLK・CNTを異なるフラッシュメモリの単位領域BLK・CNTに代替させたことを示すチップ間代替情報を成す。
前記カードコントローラCTRは、アクセス動作対象のフラッシュメモリからアドレスで指定した単位領域BLK・CNTの管理情報CNTを読み込み、読み込んだ管理情報CNTのフラグ60から代替済(全ビット“1”)を認識すると、その単位領域BLK・CNTに対応する4バイト毎の不良登録データを読み込み、その領域50,51で指定されるチップ番号のフラッシュメモリにおける代替先アドレスをアクセス対象に変更して、アクセス制御を行う。
前記チップ間代替やチップ内代替で用いられる代替領域は、デバイスプロセスにおいて欠陥救済に用いられる冗長アレイ3Rのような冗長記憶領域とは異なることはいうまでもない。冗長プログラム回路のプログラム内容にしたがった救済は、チップ間代替又はチップ内代替が行われるか否かとは全く無関係に、冗長救済が行われていれば、フラッシュメモリのハードウェアにしたがって自動的に冗長への置き換えが行われることになる。
上記代替制御機能の説明より明らかなように、一つのフラッシュメモリで発生した書込みエラーの救済に、別のフラッシュメモリの代替領域41を用いるチップ間代替が可能になる。したがって、一部のフラッシュメモリ内でデータ慮域40の不良部分を代替領域に代替させることが不可能になっても、不良に至った不揮発性記憶装置を交換したり、予備の不揮発性メモリを用いることなく、全体の不良を逃れることができる。
新たに代替可能な記憶領域の残りが所定数以下になったフラッシュメモリにおいて書込みエラーが生じたとき、それに対してチップ間代替を許容するから、データブロックの無駄を極力排除するようにチップ間代替を行うことができる。すなわち、チップ内代替が全く不可能に成るまで代替を行ってしまったフラッシュメモリが顕在化する前にチップ間代替を開始させるから、新たに代替可能な領域の残りに大きな偏りが生じ難くなり、チップ間代替やチップ内代替のための処理サイクル数を最小限に抑えることが可能になる。フラッシュメモリ間で新たに代替可能な領域の残りに大きな偏りを生ずると、代替先として採用し得るフラッシュメモリの数が少なくなり、代替先として採用し得るフラッシュメモリを探すための検索リトライ回数が増えてしまうからである。
これにより、不良に至ったフラッシュメモリを交換したり、予備のフラッシュメモリを用いることなく、経時的に発生する書込み不良に対する救済効率を向上させることができ不良データブロックの代替に、各フラッシュメモリの記憶領域を無駄なく利用することができる。
《インタリーブ書込みサポート時の代替制御機能》次に、インタリーブ書込みを採用する場合における代替制御機能について説明する。
図7にはインタリーブ書込み方式の一例が示される。インタリーブ書き込みは、カードコントローラCTRが、ホスト装置からのデータ書込み要求に応答して、書込みデータを所定データ量単位、例えば2080バイト単位で、書込み動作タイミングをずらしながら順次異なる複数のフラッシュメモリに書込む方式である。図7において、“転送”と記載された動作はコマンド及び書込みデータをカードコントローラからフラッシュメモリに転送する操作であり、“フラッシュプログラム”と記載された動作はフラッシュメモリに対する書込み及び書込みベリファイ動作を意味する。同図より明らかなように、フラッシュンメモリChipNo.0〜ChipNo.3には順次直列的にコマンド及び書込みデータ等の転送操作が行われ、転送されたコマンドなどに従った書込み動作が順次ずれたタイミングで開始される。
このようなインタリーブ書込みによる書込みデータのセクタ単位の論理アドレスは図8に例示されるように、複数のフラッシュメモリChipNo.0〜ChipNo.3に跨って分散されることになる。図8において0,1,2,3の数字はセクタデータ単位の論理アドレスを意味する。
図9乃至図12にはインタリーブ書き込みを採用する場合におけるチップ間代替処理における代替先フラッシュメモリの選択手法が例示される。同図ではフラッシュメモリはChip0〜Chip63の64個実装されている場合を想定する。各図において◎のフラッシュメモリChip1に書込みエラーが発生してチップ間代替の必要性が生じたものとする(チップ間代替発生チップ)。●のフラッシュメモリはそれ自体チップ間代替を要するフラッシュメモリであって他のフラッシュメモリからのチップ間代替に答えることができないフラッシュメモリである(チップ間代替受入れ不可能チップ)。○はそれ自体チップ内代替で対処可能なフラッシュメモリであって他のフラッシュメモリからのチップ間代替に答えることができるフラッシュメモリである(チップ間代替受入れ可能チップ)。□は前記チップ間代替チップを含む可能性の有る一連のインタリーブ対象フラッシュメモリである(インタリーブ対象予測チップ)。ここで、一連のインタリーブ対象フラッシュメモリの数は6個としている。■は前記インタリーブ対象予測チップであり且つチップ間代替要求拒否チップであるフラッシュメモリを意味する。
図9はチップ間代替受入れ可能チップがある場合の代替手法を例示する。カードコントローラCTRがインタリーブ書込み動作中にフラッシュメモリChip1の書込みエラーを検出したとき、書込みエラーに係る記憶領域を代替する他のフラッシュメモリとして、前記書き込みエラーを生じたフラッシュメモリChip1を含む一連のインタリーブ書き込み対象とされるフラッシュメモリChip1〜Chip6及びChip60〜Chip63を除外して、○印のチップ間代替受入れ可能チップの中から代替対象とする第1候補を選択する。チップ間代替受入れ可能チップの中から第1候補を選択する選択アルゴリズムは極力ランダムになることが望ましく、例えば、選択可能な範囲で、A/(B−C)の剰余の数に応ずるチップ番号若しくはそれに最も近いフラッシュメモリを第1候補に選択すればよい。Aはデータ領域40のブロック数15649、Bはフラッシュメモリチップの数、チップ間代替を必要とするフラッシュメモリのチップ番号である。
上記より、代替領域に書込みエラーに係るデータを書き込むとき、分割された他のデータを書込むインタリーブ動作と競合するのを排除することができる。若しくはそのような競合排除を高い確率で容易に実現することができる。
図10はチップ間代替受入れ可能チップがない場合の代替手法を例示する。カードコントローラCTRは、前記第1候補を選択不可能なとき、前記第1候補の選択範囲外のうち、インタリーブ順序に対して後方に位置するフラッシュメモリChip60〜Chip63の中から代替可能なものを第2候補として選択する。
図11には第2候補を選択不可能な場合の代替手法を例示する。カードコントローラCTRは、前記第2候補の選択が不可能なとき、書込みエラーを生じたフラッシュメモリChip1を第3候補として選択する。
図12には第3候補を選択不可能な場合の代替手法を例示する。前記カードコントローラCTRは、前記第3候補の選択が不可能なとき、前記第1候補の選択範囲外のうち、インタリーブの順序方向に対する前方のフラッシュメモリChip2〜Chip6の中から代替可能なものを第4候補として選択する。
図13には図9〜図12で説明した選択手法を実現するためのカードコントローラCTRによるチップ間代替処理手順が例示される。
書込みエラーを検出すると(S1)、その書込みエラーに係るフラッシュメモリの不良登録テーブル領域42や対応する管理情報CNT等に基づいてフラッシュメモリの代替状況を判定し(S2)、チップ内代替が図4で説明したチップ間代替判定ブロックに到達したか否か、要するに、チップ内代替で処理すべきか、チップ間代替で処理すべきかを判定する(S3)。チップ間代替判定ブロックに到達していなければチップ内代替処理を行う(S4)。
ステップS3でチップ間代替判定ブロックに到達していると判定された場合には、チップ間代替処理を行うために、先ず、前記チップ間代替受入れ可能チップがあるか否かを判定する(S5)。チップ間代替受入れ可能チップがある場合、図9で説明したTR1の処理が行われる。即ち、代替先チップの候補を選択し(S6)、選択した候補のフラッシュメモリにおける不良登録テーブル領域42や対応する管理情報CNT等に基づいて候補とすべきフラッシュメモリの代替状況を判定し(S7)、チップ内代替が図4で説明したチップ間代替判定ブロックに到達したか否か、要するに、チップ内代替で処理すべきか、チップ間代替で処理すべきかを判定する(S8)。チップ間代替判定ブロックに到達していなければチップ内代替処理を行う(S9)。そうでなければ処理S5に戻る。
ステップS5の判定によりチップ間代替受入れ可能チップがない場合、図10で説明した処理TR2が行われる。先ず、インタリーブ中のチップを選出する(S10)。要するに、書込みエラー発生フラッシュメモリよりもインタリーブの順番が前にされるフラッシュメモリを選ぶ。選出されたフラッシュメモリの一つを候補とし(S11)、候補としたフラッシュメモリにおける不良登録テーブル領域42や対応する管理情報CNT等に基づいて候補とすべきフラッシュメモリの代替状況を判定し(S12)、チップ内代替が図4で説明したチップ間代替判定ブロックに到達したか否か、要するに、チップ内代替で処理すべきか、チップ間代替で処理すべきかを判定する(S13)。チップ間代替判定ブロックに到達していなければチップ内代替処理を行う(S14)。そうでなければ、S10で選ばれる候補に対する全てに対して処理を終了していなければ、ステップS11の処理に戻る(S15)。
TR2の処理で適切な候補を選択できないときは、図11で説明した処理TR3が行われる。先ず、代替先を書込みエラー発生チップに指定し(S16)、そのフラッシュメモリの代替領域41に、実質的に空きデータブロックが有るかを判定する(S17)。ここで言うところの実質的な空きとは、チップ間代替判定ブロック3を超えて代替が進んでいてもよく、要するに、最後まで代替領域が代替に用い尽くされていなければ、空きが有ると判断する。空きが有ればチップ内代替を行う(S18)。
ステップS17の処理で実質的な空きがないと判定された場合は、図12で説明した処理TR4が行われる。先ず、代替候補をインタリーブ方向次のチップとし(S19)、そのフラッシュメモリの代替領域41に、実質的に空きデータブロックが有るかを判定する(S20)。ここで言うところの実質的な空きとは、S17の場合と同じである。空きが有ればチップ間代替を行う(S21)。搭載チップの全てに対して代替先候補とする事ができない場合には(S22)、代替処理不可能として、エラー処理が行われて一連の処理を終了する(S23)。
図14には代替先算出フローが例示される。この処理は前記ステップS5の処理に相当される。即ち、前記チップ間代替受入れ可能チップがあるか否かを判定し(S30)、チップ間代替受入れ可能チップがある場合、書込みエラー発生のブロックアドレスから代替先チップを算出する(S31)。算出方法は、例えば、ブロックアドレスをインタリーブ範囲外チップ数で除した余りを、インタリーブ範囲外チップの最小チップ番号に加算して得る。具体的には、インタリーブ範囲外チップをChipN0.7〜ChipNo.59とし、エラー発生チップをChipNo.1とし、エラー発生ブロックアドレスを10‘Hとし、搭載チップ数を64とするなら、16÷53の余りは16であり、範囲外最小ChipNo.は7であるから、7+16=23により、チップ間代替チップの候補チップはChipNo.23となる。
図15には代替処理フローが例示される。この処理は、ステップS4、S9等の代替処理に相当される。代替候補とし得るフラッシュメモリの代替領域から空きブロックを検索し(S40)、空きブロックに有無が判定される(S41)。空きブロックがなければ代替のエラー終了とされ、空きブロックがあれば、代替が実行される(S42)。代替の実行では、代替先にエラーに係るデータの書き込みを行い、書き込みエラーが無ければ(S43)、対応する管理領域のフラグ設定や対応する不良登録テーブルデータの代替先アドレス設定等の処理を行って(S45),ダイヤ異処理を終了する。書き込みエラーがある場合には次に飽くブロックを検索し(S44)、ステップS41の処理に戻る。
図16〜図23には前記インタリーブ書込みサポート時の代替制御機能によって実現される代替状況の具体例を夫々示している。図16〜図22はフラッシュメモリがChipNo.0〜ChipN0.Fの16個搭載され、図22はフラッシュメモリがChipNo.0〜ChipN0.5の6個搭載されている場合を想定している。
図16〜図19はエラー発生がフラッシュメモリセルに対するプログラム処理を開始する前に明らかになったような場合を想定する。すなわち、不揮発性メモリセルに対する書込み電圧の印可(プログラム)とプログラムベリファイを行う前に、管理情報の確認を先に行わなければならない。このとき、書込み対象データブロックが既に代替されている場合に、上記プログラム及びプログラムベリファイを開始する前に代替先アドレスを取得できるかの確認処理が必要になり、その際、リード対象の不良登録テーブルがEECエラー等でリード不可能なら代替先アドレスを取得できず、書込みエラーになる。そのような書込みエラーの発生を想定する。
図16において、ChipNo.5のgフラッシュメモリでエラーが発生している。このとき、他のインタリーブ動作を妨げない期間t1でChipNo.B〜ChipNo.Fの何れかを利用して代替処理を行えばよい。これは図9による処理結果に対応される。
図17は図16において候補としたChipNo.B〜ChipNo.Fのフラッシュメモリが代替先として不適当な場合の代替先を示し、インタリーブ書き込み終了を待てChipNo.0のフラッシュメモリを代替先としている。これは図10による処理結果に対応される。
図18の場合は図17においてChipNo.0はもとより、ChipNo.4までのフラッシュメモリが全く代替不可能な場合に、エラーを生じたChipNo.5を代替対象としている。これは図11による処理結果に対応される。
図19の場合は図18においてエラーを生じたChipNo.5も代替不可能な場合に、先のインタリーブ対象ChipNo.6のフラッシュメモリを代替対象にしている。この場合にはインタリーブ動作が妨げられてしまう。これは図12による処理結果に対応される。
図20〜図22はエラー発生が書き込み終了時点で明らかになったような場合を想定する。
図20において、ChipNo.5のgフラッシュメモリでエラーが発生している。このときは、其の時点でインタリーブ動作中及び次のインタリーブ動作対象とされるフラッシュメモリを除いて、例えば、ChipNo.0〜ChipNo.4の何れかを利用して代替処理を行えばよい。
図21は図20において候補としたChipNo.0〜ChipNo.4のフラッシュメモリが代替先として不適当な場合の代替先を示し、インタリーブ動作中のチップの中から、動作終了を待って当該動作終了したフラッシュメモリ例えばChipNo.6をチップ間代替対象とする。
図22の場合は、図21において動作終了したフラッシュメモリが全く代替不可能なとき、エラーを生じたChipNo.5を代替対象としている。このエラーを生じたChipNo.5も全ての代替領域を使い尽くしている場合には搭載チップ全体からチップ間代替先を新たに検索することになる。
図23には搭載チップ数が少ない場合の例を示す。搭載チップが少ない場合には、インタリーブを妨げること無くチップ間代替を行うことができる余裕は少なくなる。
《パラレル書き込みサポート時の代替制御機能》図24にはパラレル書込みを採用するときのチップ間代替の様子が例示される。
前記インタリーブ書込みに代えてパラレル書込みを採用するとき、カードコントローラCTRは、外部からのデータ書込み要求に応答して、書込みデータを所定データ量単位で異なる複数のフラッシュメモリに並行して書込むパラレル書込みを制御可能である。図24の例では6個のフラッシュメモリを並列動作させて書き込みを行う。パラレル書込み動作中に書込みエラーを検出したとき、書込みエラーに係る記憶領域を代替する他のフラッシュメモリとして、前記書込みエラーを生じたフラッシュメモリを含むパラレル書込み対象とされるフラッシュメモリを除く範囲から第1候補を選択するのが望ましい。図24の例では、ChipNo.5のフラッシュメモリでエラーを生じたとき、ChipNo.C〜ChipNo.Fの内の1つをチップ間代替対象の候補としている。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、チップ間代替対象候補の選択手順は上記の具体例に限定されず、既に開始され、或は其の後に開始されると予想される書き込み動作を、極力妨げないように候補を選択すればよく、種々の変更が可能である。
また、冗長救済はビット線側の救済と併用してもよい。本発明はATAメモリカードに限定されず、其の他の記憶形式の不揮発性メモリ、その他の規格に準拠するメモリカードなどに広く適用することができる。フラッシュメモリの搭載数も上記に限定されない。