(57)【特許請求の範囲】
【請求項１】
通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいて前記メモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置において、
前記メモリ素子の書き込み・読み出しエラーの発生状況を前記セクタ毎に記憶するデータエラー情報管理テーブルと、
このデータエラー情報管理テーブルに記憶された前記書き込み・読み出しエラーの発生状況に基づいて前記セクタの劣化を検出し且つ劣化した前記セクタの個数に基づいて前記メモリ素子の劣化を検出する劣化検出部と、
前記劣化検出部によって劣化が検出された前記セクタのアドレス情報をいずれかの前記予備セクタのアドレス情報に変換することによって、この劣化セクタが使用されないようにするために、前記メモリ素子毎に設けられた管理情報領域と、
前記劣化検出部によって劣化が検出された前記メモリ素子が使用されないように、前記アドレス情報を変換するアドレス変換テーブルとを備え、
前記書き込み・読み出しエラーの発生状況が、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方である、
ことを特徴とする半導体記憶装置。
【請求項２】
通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいて前記メモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置において、
前記メモリ素子の書き込み・読み出しエラーの発生状況を前記セクタ毎に記憶するデータエラー情報管理テーブルと、
このデータエラー情報管理テーブルに記憶された前記書き込み・読み出しエラーの発生状況に基づいて前記セクタの劣化を検出し且つ劣化した前記セクタの個数に基づいて前記メモリ素子の劣化を検出する劣化検出部と、
前記劣化検出部によって劣化が検出された前記セクタのアドレス情報をいずれかの前記予備セクタのアドレス情報に変換することによって、この劣化セクタが使用されないようにするために、前記メモリ素子毎に設けられた管理情報領域と、
前記劣化検出部によって劣化が検出された前記メモリ素子が使用されないように、前記アドレス情報を変換するアドレス変換テーブルとを備え、
前記書き込み・読み出しエラーの発生状況が、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方である、
ことを特徴とする半導体記憶装置。
【請求項３】
通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいて前記メモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置の制御方法において、
前記メモリ素子の書き込み・読み出しエラーの発生状況をデータエラー情報管理テーブルに記憶する第１のステップと、
この第１のステップで前記データエラー情報管理テーブルに記憶された前記書き込み・読み出しエラーの発生状況に基づいて、劣化検出部が前記セクタの劣化を検出する第２のステップと、
前記劣化検出部によって劣化が検出された前記セクタのアドレス情報をいずれかの前記予備セクタのアドレス情報に変換することによって、この劣化セクタが使用されないようにするために、前記メモリ素子毎に設けられた管理情報領域を書き換える第３のステップと、
劣化した前記セクタの個数に基づいて、前記劣化検出部が前記メモリ素子の劣化を検出する第４のステップと、
この第４のステップで前記劣化検出部が劣化を検出した前記メモリ素子が使用されないように、アドレス変換テーブルの前記アドレス情報を書き換える第５のステップとを備え、
前記書き込み・読み出しエラーの発生状況が、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方である、
ことを特徴とする半導体記憶装置の制御方法。
【請求項４】
通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいて前記メモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置の制御方法において、
前記メモリ素子の書き込み・読み出しエラーの発生状況をデータエラー情報管理テーブルに記憶する第１のステップと、
この第１のステップで前記データエラー情報管理テーブルに記憶された前記書き込み・読み出しエラーの発生状況に基づいて、劣化検出部が前記セクタの劣化を検出する第２のステップと、
前記劣化検出部によって劣化が検出された前記セクタのアドレス情報をいずれかの前記予備セクタのアドレス情報に変換することによって、この劣化セクタが使用されないようにするために、前記メモリ素子毎に設けられた管理情報領域を書き換える第３のステップと、
劣化した前記セクタの個数に基づいて、前記劣化検出部が前記メモリ素子の劣化を検出する第４のステップと、
この第４のステップで前記劣化検出部が劣化を検出した前記メモリ素子が使用されないように、アドレス変換テーブルの前記アドレス情報を書き換える第５のステップとを備え、
前記書き込み・読み出しエラーの発生状況が、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方である、
ことを特徴とする半導体記憶装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばフラッシュメモリを用いた半導体ディスク装置等の半導体記憶装置およびその制御方法に関するものであり、より詳細には、メモリ素子が劣化した場合に縮退運転を行う半導体記憶装置およびその制御方法に関するものである。
【０００２】
【従来の技術】
従来、半導体装置として、例えばフラッシュメモリを用いた半導体ディスク装置が知られている。
【０００３】
かかる半導体ディスク装置に使用されるフラッシュメモリ素子は、書き込みや読み出しを繰り返すことによってビットが劣化してしまう場合がある。そして、フラッシュメモリ素子のビットが劣化した場合には、そのビットに対してはそれ以降の書き込みや読み出しができなくなってしまい、このため、読み出し時にデータエラー（すなわち、書き込みデータと読み出しデータとが一致しない現象）が発生する。
【０００４】
これに対して、フラッシュメモリ素子から読み出したデータが正しいか否かを検出する制御技術として、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）  制御と称される技術が、従来より知られている。この技術によれば、フラッシュメモリ素子からデータを読み出した際にデータエラーの発生の有無を検出することができ、さらに、検出されたデータエラーがＣＯＲ（Ｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ  ；すなわち訂正可能なデータエラー）或いはＵＮＣ（Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ  ；すなわち訂正不可能なデータエラー）のどちらであるのかを判断することができる。そして、検出されたデータエラーがＣＯＲであった場合には、その読み出しデータを訂正することができる。
【０００５】
従来の半導体ディスク装置では、ＥＣＣ制御によってフラッシュメモリ素子のビットの劣化が検出された場合には、そのビットが属するセクタを使用禁止とし、かかるセクタ（以下「劣化セクタ」と記す）に代えて予め設けられた代替セクタを使用することとしていた。
【０００６】
【発明が解決しようとする課題】
図１２は、従来の半導体ディスク装置の一構成例を概念的に示すブロック図である。また、図１３は、かかる半導体ディスク装置の動作を説明するためのフローチャートである。
【０００７】
半導体ディスク装置１２００の外部からディスクコントローラ１２２０に入力されたコマンド情報およびアドレス情報は、ホストインタフェース１２２１およびマイクロＣＰＵインタフェース１２２２を介して、マイクロコントローラ部１２３０内のマイクロＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）１２３１に送られる（Ｓ１３０１）。
【０００８】
そして、このコマンド情報が書き込み命令である場合には（Ｓ１３０２）、マイクロＣＰＵ１２３１は、外部から入力された主データを、ホストインタフェース１２２１を介して、データバッファ１２２３へ入力する（Ｓ１３０３）。そして、マイクロＣＰＵ１２３１からはコマンド情報およびアドレス情報が、データバッファ１２２３からは主データが、それぞれフラッシュメモリインタフェース１２２５に送られる（Ｓ１３０４）。続いて、ＥＣＣ制御部１２２６が、フラッシュメモリインタフェース１２２５から主データを取り込んでＥＣＣデータを作成し、このＥＣＣデータをフラッシュメモリインタフェース１２２５に送る（Ｓ１３０５）。そして、このフラッシュメモリインタフェース１２２５内で、シリアルデータが作成される（Ｓ１３０６）。
【０００９】
図１４は、フラッシュメモリインタフェース１２２５内で作成されるシリアルデータの構成を示す概念図である。同図に示したように、このシリアルデータは、例えば４ビットのアドレス情報と、例えば８ビットのコマンド情報と、例えば５１２バイトの主データと、例えば１１バイトのＥＣＣデータとから構成される。
【００１０】
かかるシリアルデータは、フラッシュメモリインタフェース１２２５から出力されて、フラッシュメモリ部１２１０内の１０個のメモリ素子Ｍ（０）〜Ｍ（９）にそれぞれ並列に入力される。そして、各メモリ素子Ｍ（０）〜Ｍ（９）は、このシリアルデータ内のアドレス情報が自己の記憶領域内のセクタに対応するものである場合には、そのセクタにシリアルデータを書き込む（Ｓ１３０７）。
【００１１】
図１５は、各メモリ素子Ｍ（０）〜Ｍ（９）内のセクタ構成を示す概念図である。同図に示したように、各メモリ素子Ｍ（０）〜Ｍ（９）は、ｍ＋１個のセクタＳ（０）〜Ｓ（ｍ）を備えている。そして、上述のシリアルデータは、これらの各セクタＳ（０）〜Ｓ（ｍ）のうち、アドレス情報で指定されたセクタに記憶される。
【００１２】
一方、ステップＳ１３０２において、マイクロＣＰＵ１２３１に取り込まれたコマンド情報が読み出し命令である場合には、このマイクロＣＰＵ１２３１は、アドレス情報をフラッシュメモリインタフェース１２２５に転送する（Ｓ１３０８）。そして、フラッシュメモリインタフェース１２２５は、このアドレスに対応するセクタに記憶されたシリアルデータを読み出す（Ｓ１３０９）。続いて、ＥＣＣ制御部１２２６が、このシリアルデータ中の主データおよびＥＣＣデータをフラッシュメモリインタフェース１２２５から読み出して、データエラーの発生の有無を検出する（Ｓ１３１０）。そして、データエラーのうちＣＯＲの発生が検出されたときは、そのエラーを訂正して、フラッシュメモリインタフェース１２２５に送る（Ｓ１３１０）。一方、ＵＮＣが検出されたときは、マイクロＣＰＵ１２３１は、データがＵＮＣであることを示すフラグ（以下「エラーフラグ」と記す）をセットする。その後、データ転送制御部１２２４の制御により、フラッシュメモリインタフェース１２２５内のデータ（ＣＯＲが発生した場合には訂正後のデータ）が、データバッファ１２２３およびホストインタフェース１２２１を介して、半導体ディスク装置１２００の外部に出力される（Ｓ１３１１）。
【００１３】
また、この半導体ディスク装置１２００では、データエラー（ＣＯＲまたはＵＮＣ）が所定回数以上検出されたセクタを、劣化セクタであると判断する。そして、その後の書き込みでは、その劣化セクタに代えて、代替セクタＤ（０）〜Ｄ（ｎ）（図１５参照）のいずれかを使用する。ここで、代替セクタＤ（０）〜Ｄ（ｎ）を使用することとした場合には、管理情報領域１５０１（図１５参照）に、かかる劣化セクタのアドレス情報とともに、この劣化セクタに代えて使用される代替セクタのアドレス情報が記憶される（Ｓ１３１２）。これにより、その後の書き込み処理において、外部からディスクコントローラ１２２０に入力されたアドレス情報が劣化セクタのアドレスである場合には、この劣化セクタに対応する代替セクタにシリアルデータが書き込まれる。
【００１４】
このように、従来の半導体ディスク装置１２００では、劣化セクタが発生した場合には、この劣化セクタに代えて代替セクタを使用することにより、装置の信頼性の維持を図っていた。
【００１５】
しかしながら、かかる半導体ディスク装置１２００では、上述のように、訂正不可能なデータエラー（すなわちＵＮＣ）が発生する場合があるので、一個のメモリ素子内の多数のセクタがほぼ同時に劣化したような場合には大量のデータエラーが同時に発生し、データが消失することとなる。このため、従来の半導体ディスク装置１２００には、装置の信頼性が不十分であるという欠点があった。
【００１６】
また、この半導体ディスク装置１２００では、いずれか１個のメモリ素子における劣化セクタの数が代替セクタの数を超えた場合には、劣化セクタに対する代替ができなくなってしまい、これにより素子全体が使用できなくなってしまう。このため、このようなメモリ素子では、劣化していないセクタも使用できなくなってしまうので、素子全体としての寿命も非常に短くなってしまうという欠点があった。
【００１７】
なお、ここではフラッシュメモリを用いた半導体ディスク装置を例にとって説明したが、このような欠点は、劣化が問題となるメモリ素子を使用しているものであれば他の種類の半導体記憶装置でも生じ得る。
【００１８】
以上のような理由により、劣化が問題となるメモリ素子を使用した半導体記憶装置の信頼性を向上させ且つ寿命を長くするための技術が嘱望されていた。
【００１９】
【課題を解決するための手段】
（１）第１の発明は、通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいてメモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置に関する。
そして、メモリ素子の書き込み・読み出しエラーの発生状況をセクタ毎に記憶するデータエラー情報管理テーブルと、このデータエラー情報管理テーブルに記憶された書き込み・読み出しエラーの発生状況に基づいてセクタの劣化を検出し且つ劣化したセクタの個数に基づいてメモリ素子の劣化を検出する劣化検出部と、劣化検出部によって劣化が検出されたセクタのアドレス情報をいずれかの予備セクタのアドレス情報に変換することによってこの劣化セクタが使用されないようにするためにメモリ素子毎に設けられた管理情報領域と、劣化検出部によって劣化が検出されたメモリ素子が使用されないようにアドレス情報を変換するアドレス変換テーブルとを備え、書き込み・読み出しエラーの発生状況が、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方であることを特徴とする。
【００２０】
第１の発明によれば、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方に基づいて劣化を検出するとしたので、１個のメモリ素子全体におけるエラー発生数で判断する場合よりもデータの喪失を有効に防止することができ、且つ、非劣化セクタが多数個残っているにも拘わらずメモリ素子全体の使用が停止されるという不都合を回避できる。
【００２１】
（２）第２の発明は、通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいてメモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置に関する。
そして、メモリ素子の書き込み・読み出しエラーの発生状況をセクタ毎に記憶するデータエラー情報管理テーブルと、このデータエラー情報管理テーブルに記憶された書き込み・読み出しエラーの発生状況に基づいてセクタの劣化を検出し且つ劣化したセクタの個数に基づいてメモリ素子の劣化を検出する劣化検出部と、劣化検出部によって劣化が検出されたセクタのアドレス情報をいずれかの予備セクタのアドレス情報に変換することによってこの劣化セクタが使用されないようにするために、メモリ素子毎に設けられた管理情報領域と、劣化検出部によって劣化が検出されたメモリ素子が使用されないようにアドレス情報を変換するアドレス変換テーブルとを備え、書き込み・読み出しエラーの発生状況が、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方であることを特徴とする。
【００２２】
第２の発明によれば、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方に基づいて劣化を検出するとしたので、１個のメモリ素子全体におけるエラー発生数で判断する場合よりもデータの喪失を有効に防止することができ、且つ、非劣化セクタが多数個残っているにも拘わらずメモリ素子全体の使用が停止されるという不都合を回避できる。
【００２３】
（３）第３の発明は、通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいてメモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置の制御方法に関する。
そして、メモリ素子の書き込み・読み出しエラーの発生状況をデータエラー情報管理テーブルに記憶する第１のステップと、この第１のステップでデータエラー情報管理テーブルに記憶された書き込み・読み出しエラーの発生状況に基づいて劣化検出部がセクタの劣化を検出する第２のステップと、劣化検出部によって劣化が検出されたセクタのアドレス情報をいずれかの予備セクタのアドレス情報に変換することによってこの劣化セクタが使用されないようにするためにメモリ素子毎に設けられた管理情報領域を書き換える第３のステップと、劣化したセクタの個数に基づいて劣化検出部がメモリ素子の劣化を検出する第４のステップと、この第４のステップで劣化検出部が劣化を検出したメモリ素子が使用されないようにアドレス変換テーブルのアドレス情報を書き換える第５のステップとを備え、書き込み・読み出しエラーの発生状況が、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方であることを特徴とする。
【００２４】
第３の発明によれば、所定回数の書き込み・読み出し動作ごとに発生した訂正可能な書き込み・読み出しエラーの回数または訂正不可能な書き込み・読み出しエラーの回数の少なくとも一方に基づいて劣化を検出するとしたので、１個のメモリ素子全体におけるエラー発生数で判断する場合よりもデータの喪失を有効に防止することができ、且つ、非劣化セクタが多数個残っているにも拘わらずメモリ素子全体の使用が停止されるという不都合を回避できる。
【００２５】
（４）第４の発明は、通常セクタ或いは予備セクタとして使用される複数個のセクタを有するメモリ素子を複数個備えた記憶部と、外部から入力されたアドレス情報に基づいてメモリ素子に対するデータの書き込み・読み出しを行う制御部とを具備する半導体記憶装置の制御方法に関する。
そして、メモリ素子の書き込み・読み出しエラーの発生状況をデータエラー情報管理テーブルに記憶する第１のステップと、この第１のステップでデータエラー情報管理テーブルに記憶された書き込み・読み出しエラーの発生状況に基づいて、劣化検出部がセクタの劣化を検出する第２のステップと、劣化検出部によって劣化が検出されたセクタのアドレス情報をいずれかの予備セクタのアドレス情報に変換することによってこの劣化セクタが使用されないようにするためにメモリ素子毎に設けられた管理情報領域を書き換える第３のステップと、劣化したセクタの個数に基づいて、劣化検出部がメモリ素子の劣化を検出する第４のステップと、この第４のステップで劣化検出部が劣化を検出したメモリ素子が使用されないように、アドレス変換テーブルのアドレス情報を書き換える第５のステップとを備え、書き込み・読み出しエラーの発生状況が、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方であることを特徴とする。
【００２６】
第４の発明によれば、訂正可能な書き込み・読み出しエラーが連続して発生した回数または訂正不可能な書き込み・読み出しエラーが連続して発生した回数の少なくとも一方に基づいて劣化を検出するとしたので、１個のメモリ素子全体におけるエラー発生数で判断する場合よりもデータの喪失を有効に防止することができ、且つ、非劣化セクタが多数個残っているにも拘わらずメモリ素子全体の使用が停止されるという不都合を回避できる。
【００２９】
【発明の実施の形態】
以下、この発明の実施の形態について、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、この発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎないことを理解されたい。
【００３０】
第１の実施の形態
まず、この発明の第１の実施の形態に係る半導体記憶装置およびその制御方法について、フラッシュメモリを用いた半導体ディスク装置を例にとって説明する。
【００３１】
図１は、この実施の形態に係る半導体ディスク装置の構成を概略的に示すブロック図である。
【００３２】
同図に示したように、この半導体ディスク装置１００は、フラッシュメモリ部１１０と、ディスクコントローラ部１２０と、マイクロコントローラ部１３０とを備えている。
【００３３】
フラッシュメモリ部１１０は、１０個のメモリ素子Ｍ（０）〜Ｍ（９）を備えている。これらのメモリ素子Ｍ（０）〜Ｍ（９）は、それぞれ、外部から入力されるシステムクロック信号（図示せず）のタイミングに従い、フラッシュメモリインタフェース１２５（後述）との間でシリアルデータの送受信を行う。なお、各メモリ素子Ｍ（０）〜Ｍ（９）のセクタ構成は、従来の場合（図１５参照）と同様であるので説明を省略する。
【００３４】
ディスクコントローラ部１２０において、ホストインタフェース１２１は、半導体ディスク装置１００の外部との間でアドレス情報やコマンド情報、主データ等を転送するためのインタフェースである。また、マイクロＣＰＵインタフェース１２２は、ディスクコントローラ部１２０とマイクロコントローラ部１３０（後述）との間でアドレス情報やコマンド情報、制御信号等を転送するためのインタフェースである。
【００３５】
データバッファ１２３は、フラッシュメモリインタフェース１２５とホストインタフェース１２１との間で主データ等を転送するためのバッファである。
【００３６】
データ転送制御部１２４は、フラッシュメモリインタフェース１２５がデータバッファ１２３およびホストインタフェース１２１を介して外部とのデータ転送を行う際に、このフラッシュメモリインタフェース１２５の動作を制御する。
【００３７】
フラッシュメモリインタフェース１２５は、データ書き込み時には、アドレス情報、コマンド情報、主データおよびＥＣＣデータを用いてシリアルデータを作成し、フラッシュメモリ部１１０に送る。また、データ読み出し時には、フラッシュメモリ部１１０からシリアルデータを入力して主データおよびＥＣＣデータを抽出してＥＣＣ制御部１２６（後述）に送る動作や、かかる主データ（またはＥＣＣ制御部１２６から入力した訂正後の主データ）をデータバッファ１２３に対して出力する動作等を行う。なお、シリアルデータの構成は、従来の場合（図１４参照）と同様であるので、説明を省略する。
【００３８】
ＥＣＣ制御部１２６は、データ書き込み時には、フラッシュメモリインタフェース１２５から書き込みデータを取り込んでＥＣＣデータを作成し、フラッシュメモリインタフェース１２５に送る。また、データ読み出し時には、主データおよびＥＣＣデータをフラッシュメモリインタフェース１２５から入力してデータエラーの発生の有無を検出する動作や、ＣＯＲの発生が検出されたときに主データを訂正する動作等を行う。
【００３９】
データエラー情報管理テーブル１２７は、データエラーの発生回数を、ＣＯＲとＵＮＣとに分けて、各メモリ素子Ｍ（０）〜Ｍ（９）の各セクタごとに記憶する。
【００４０】
図２は、データエラー情報管理テーブル１２７の構成を示す概念図である。同図において、物理メモリ番号「０」，「１」，・・・，「９」は、それぞれ、メモリ素子Ｍ（０），Ｍ（１），・・・，Ｍ（９）に対応させて付されている。また、セクタ番号は、それぞれ、各メモリ素子Ｍ（０）〜Ｍ（９）に設けられたｍ＋１個のセクタＳ（０）〜Ｓ（ｍ）とｎ＋１個の代替セクタＤ（０）〜Ｄ（ｎ）と（図１５参照）に対応させて付されている。そして、これらのセクタごとに、ＣＯＲの発生回数およびＵＮＣの発生回数が記憶される。ここで、ＣＯＲの発生回数およびＵＮＣの発生回数の書き換えは、マイクロＣＰＵ１３１（後述）によって行われる。
【００４１】
一方、図１において、アドレス変換テーブル１２８は、メモリ素子Ｍ（０）〜Ｍ（９）のいずれか一個以上が使用されないこととなった場合（後述）に、アドレス情報中のメモリ番号を、物理メモリ番号から論理メモリ番号に変換する。
【００４２】
図３は、かかるアドレス変換テーブル１２８の構成を示す概念図である。同図に示したように、このアドレス変換テーブル１２８は、メモリ素子Ｍ（０）〜Ｍ（９）のいずれかが使用されくなった場合に使用され、例えば、物理メモリ番号ｋのメモリ素子が使用されなくなった場合には（このとき、使用できるメモリ素子の個数は９となる）、他の各メモリ素子（物理番号０〜ｋ−１，ｋ＋１〜９）の各メモリ素子に対応させて、論理メモリ番号０〜８が順次書き込まれる（図３参照）。そして、外部のホストコンピュータ（図示せず）から入力されたアドレス情報中のメモリ番号を物理メモリ番号に変換して出力する。また、使用されないメモリ素子が増加した場合には、論理メモリ番号がさらに書き換えられる。なお、アドレス変換を行うか否かの判断および論理メモリ番号の書き換えは、マイクロＣＰＵ１３１（後述）が行う。
【００４３】
図１に示したマイクロコントローラ部１３０において、マイクロＣＰＵ１３１は、ホストインタフェース１２１およびマイクロＣＰＵインタフェース１２２を介して外部から入力したコマンド情報やアドレス情報等に基づいて、フラッシュメモリ部１１０およびディスクコントローラ部１２０の動作を制御する。
【００４４】
また、プログラムメモリ１３２は、マイクロＣＰＵ１３１を動作させるためのプログラムが格納されている。また、このプログラムメモリ１３２は、アドレス変換テーブル１２８を用いたアドレス変換処理を行うか否かを設定するためのフラグとしての縮退運転要／否フラグ（図示せず）と、出力データが正常データかエラーデータかを示すエラーフラグとを有している。
【００４５】
次に、この実施の形態に係る半導体ディスク装置１００の動作について、図４のフローチャートを用いて説明する。
【００４６】
まず、従来の場合と同様、半導体ディスク装置１００の外部から、ホストインタフェース１２１を介して、コマンド情報およびアドレス情報が入力される。これらの情報は、マイクロＣＰＵインタフェース１２２を介して、マイクロコントローラ部１３０内のマイクロＣＰＵ１３１に送られる（Ｓ４０１）。
【００４７】
次に、マイクロＣＰＵ１３１が、コマンド情報の内容を解読する（Ｓ４０２）。そして、このコマンド情報が書き込み命令である場合には、外部から、主データが入力される（Ｓ４０３）。この主データは、ホストインタフェース１２１を介してデータバッファ１２３に入力される。
【００４８】
続いて、マイクロＣＰＵ１３１は、縮退運転要／否フラグの状態をチェックする（Ｓ４０４）。そして、縮退運転要／否グラフが「要」となっているときは、アドレス情報から抽出した物理メモリ番号をアドレス変換テーブル１２８に送り、このアドレス変換テーブル１２８から変換後のメモリ番号（すなわち論理メモリ番号）を受け取る（Ｓ４０５）。一方、この縮退運転要／否フラグが「否」となっているときには、アドレス情報の変換を行うことなく、アドレス情報、コマンド情報および主データをフラッシュメモリインタフェースに送る（Ｓ４０６）。
【００４９】
ＥＣＣ制御部１２６は、フラッシュメモリインタフェース１２５から主データを取り込んでＥＣＣデータを作成し、フラッシュメモリインタフェース１２５に送る（Ｓ４０７）。そして、このフラッシュメモリインタフェース１２５内で、従来と同様のシリアルデータ（図１４参照）が作成される（Ｓ４０８）。
【００５０】
かかるシリアルデータは、フラッシュメモリインタフェース１２５からフラッシュメモリ部１１０内の１０個のメモリ素子Ｍ（０）〜Ｍ（９）に、それぞれ並列に入力される。各メモリ素子Ｍ（０）〜Ｍ（９）は、シリアルデータに含まれるアドレス情報内のメモリ番号が自己のメモリ番号と一致する場合には、このシリアルデータを取り込む。そして、シリアルデータのアドレス情報によって指定されているセクタに、このシリアルデータを書き込む（Ｓ４０９）。ここで、この実施の形態に係る各メモリ素子Ｍ（０）〜Ｍ（９）では、従来のメモリ素子の場合（図１５参照）と同様、アドレス情報に対応するセクタが劣化セクタである場合には、管理情報領域１５０１の内容に従って、代替セクタＤ（０）〜Ｄ（ｎ）のいずれかにシリアルデータが書き込まれる。
【００５１】
一方、ステップＳ４０２において、コマンド情報が読み出し命令である場合には、マイクロＣＰＵ１３１は、縮退運転要／否フラグの状態をチェックする（Ｓ４１０）。そして、この縮退運転要／否グラフが「否」となっているときは、アドレス情報をそのままフラッシュメモリインタフェースに送る（Ｓ４１２）。一方、縮退運転要／否グラフが「要」となっているときは、アドレス情報に含まれる物理メモリ番号をアドレス変換テーブル１２８に送った後、このアドレス変換テーブル１２８から変換後のメモリ番号（すなわち論理メモリ番号）を受け取り（Ｓ４１１）、かかる論理メモリ番号を含むアドレス情報をコマンド情報とともにフラッシュメモリインタフェースに送る（Ｓ４１２）。
【００５２】
フラッシュメモリインタフェース１２５は、このアドレスに対応するセクタに記憶されたシリアルデータを読み出す（Ｓ４１３）。このときも、上述の書き込み動作の場合と同様、代替セクタＤ（０）〜Ｄ（９）のいずれかが使用されているときは、管理情報領域１５０１の内容に従って、かかる代替セクタからの読み出しが行われる。
【００５３】
次に、ＥＣＣ制御部１２６が、このシリアルデータ中の主データおよびＥＣＣデータをフラッシュメモリインタフェース１２５から読み出して、データエラーの発生の有無をチェックする（Ｓ４１４）。そして、データエラーのうちＣＯＲの発生が検出されたときは、そのエラーを訂正して、フラッシュメモリインタフェース１２５に送る（Ｓ４１４）。一方、ＥＣＣ制御部１２６によってＵＮＣが検出されたときは、マイクロＣＰＵ１３１は、データがＵＮＣであることを示すエラーフラグをセットする（Ｓ４１４）。
【００５４】
続いて、上述のエラーチェック（Ｓ４１４）でデータエラーが検出されたか否かを判断する（Ｓ４１５）。そして、データエラーの検出があった場合には、続いて、データエラー情報管理テーブル１２７の書き換えを行う（Ｓ４１６）。ここで、このデータエラー情報管理テーブル１２７の書き換えは、エラーが発生した各セクタのＣＯＲ発生回数またはＵＮＣ発生回数を、「１」ずつ増加させることによって行う。
【００５５】
次に、マイクロＣＰＵ１３１が、このデータエラー情報管理テーブル１２７を用いて、各セクタのＣＯＲ発生回数およびＵＮＣ発生回数を所定のしきい値（以下「データエラー発生回数しきい値」と称す）と比較する。そして、ＣＯＲ発生回数またはＵＮＣ発生回数の少なくとも一方がデータエラー発生回数しきい値を越えたセクタは、劣化したと判断する（Ｓ４１７）。劣化セクタが検出された場合には、従来の場合と同様にして、その後の書き込み動作で代替セクタを使用するための情報が管理情報領域１５０１（図１５参照）に格納される（Ｓ４１８）。さらに、このようにして新たな劣化セクタが検出された場合、マイクロＣＰＵ１３１は、この劣化セクタが属するメモリ素子について、劣化セクタの総数を計数し、この計数値を所定のしきい値（以下「セクタ数しきい値」と称す）と比較する。そして、劣化セクタの総数がセクタ数しきい値を超えている場合には、かかるメモリ素子が劣化したと判断する（Ｓ４１９）。さらに、このようにして新たな劣化メモリ素子が検出された場合には、マイクロＣＰＵ１３１は、上述のようにして、アドレス変換テーブル１２８の論理メモリ番号を書き換える（Ｓ４２０）。
【００５６】
その後、データ転送制御部１２４の制御により、フラッシュメモリインタフェース１２５内のデータ（ＥＣＣによる訂正がある場合は訂正後のデータ）が、データバッファ１２３およびホストインタフェース１２１を介して、半導体ディスク装置１００の外部に出力される（Ｓ４２１）。
【００５７】
なお、ＥＣＣ制御部１２６によってＵＮＣが検出されたときにも、エラーデータがそのまま出力される。このとき、出力データが正常データであるのかエラーデータであるのかの判断は、プログラムメモリ１３２のエラーフラグを外部から読み出すことによって行う。
【００５８】
以上説明したように、この実施の形態に係る半導体ディスク装置１００によれば、データエラー情報管理テーブル１２７に記憶された書き込み・読み出しエラーの発生状況に基づいて各メモリ素子Ｍ（０）〜Ｍ（９）ごとに劣化セクタの発生状況を正確に判断することができる。そして、アドレス変換テーブル１２８を用いて、劣化セクタの発生数が多いメモリ素子の使用を中止することとしたので、メモリ素子の故障によるデータの大量喪失を防止することが可能となる。
【００５９】
また、メモリ素子全体としての故障や半導体ディスク装置全体としての故障の可能性を早期に予想することができるので、予め書き込みデータのバックアップを取るといった対応策も可能となり、これによってもデータの大量喪失を防止することができる。
【００６０】
なお、この実施の形態では、ＣＯＲ発生回数またはＵＮＣ発生回数の少なくとも一方がデータエラー発生回数しきい値を越えたセクタを劣化したと判断したが、他の判断方法を採ることも可能である。例えば、ＣＯＲ発生回数とＵＮＣ発生回数とでデータエラー発生回数しきい値を変えることとしたり、ＣＯＲ発生回数とＵＮＣ発生回数との和がデータエラー発生回数しきい値を越えたときに劣化したと判断することとしてもよい。
【００６１】
第２の実施の形態
次に、この発明の第２の実施の形態に係る半導体記憶装置およびその制御方法について、フラッシュメモリを用いた半導体ディスク装置を例にとって説明する。
【００６２】
この実施の形態に係る半導体ディスク装置は、セクタが劣化したか否かの判断を、ＣＯＲ発生確率およびＵＮＣ発生確率によって行う点で、上述の第１の実施の形態と異なる。
【００６３】
なお、半導体ディスク装置１００の全体構成およびアドレス変換テーブル１２８の構成は、第１の実施の形態の場合（図１および図３参照）と同様であるので、説明を省略する。
【００６４】
図５は、この実施の形態に係るデータエラー情報管理テーブル１２７の構成を示す概念図である。同図に示したように、この実施の形態に係るデータエラー情報管理テーブル１２７は、ＣＯＲの発生回数およびＵＮＣの発生回数に加えて書き込み回数および読み出し回数を記憶することとした点で、上述の第１の実施の形態の場合（図２参照）と異なる。
【００６５】
図６は、この実施の形態に係る半導体ディスク装置１００の動作を説明するためのフローチャートである。
【００６６】
まず、第１の実施の形態の場合（図４）と同様、コマンド情報およびアドレス情報がホストインタフェース１２１およびマイクロＣＰＵインタフェース１２２を介してマイクロＣＰＵ１３１に入力され（Ｓ４０１）、このマイクロＣＰＵ１３１がコマンド情報の内容を解読する（Ｓ４０２）。
【００６７】
そして、このコマンド情報が書き込み命令である場合には、マイクロＣＰＵ１３１は、第１の実施の形態の場合と同様、主データの入力（Ｓ４０３）および縮退運転要／否フラグのチェック（Ｓ４０４）を行い、縮退運転要／否フラグが「要」となっている場合はアドレス変換テーブル１２８を用いてメモリ番号を物理メモリ番号に変換した後（Ｓ４０５）、アドレス情報、コマンド情報および主データをフラッシュメモリインタフェースに送る（Ｓ４０６）。そして、ＥＣＣ制御部１２６が主データを用いてＥＣＣデータを作成した後（Ｓ４０７）、フラッシュメモリインタフェース１２５がシリアルデータ（図１４参照）を作成し（Ｓ４０８）、このシリアルデータを上述のアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）に書き込む（Ｓ４０９）。
【００６８】
ここで、この実施の形態では、シリアルデータの書き込みが終了した後で、データエラー情報管理テーブル１２７の書き換えを行う（Ｓ６０１）。すなわち、書き込みを行ったセクタの「書き込み回数」を「１」増加させる。
【００６９】
一方、ステップＳ４０２において、コマンド情報が読み出し命令である場合には、第１の実施の形態の場合と同様にして、マイクロＣＰＵ１３１が縮退運転要／否フラグの状態をチェックし（Ｓ４１０）、「要」の場合にはメモリ番号を物理メモリ番号に変換した後（Ｓ４１１）、アドレス情報をフラッシュメモリインタフェース１２５に送る（Ｓ４１２）。そして、フラッシュメモリインタフェース１２５がアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）からシリアルデータを読み出し（Ｓ４１３）、ＥＣＣ制御部１２６によるデータエラーの検出および訂正とマイクロＣＰＵ１３１によるエラーフラグのセットとを行う（Ｓ４１４）。
【００７０】
このような読み出し動作に続いて、この実施の形態では、データエラー情報管理テーブル１２７の書き換えを行う（Ｓ６０２）。この書き換えでは、読み出しを行ったセクタの「読み出し回数」をそれぞれ「１」増加させるとともに、上述のエラーチェック（Ｓ４１６）でエラーが検出されたセクタの「ＣＯＲ発生回数」または「ＵＮＣ発生回数」を「１」増加させる。
【００７１】
次に、この実施の形態では、マイクロＣＰＵ１３１が、データエラー情報管理テーブル１２７を用いて、セクタごとに、下式（１），（２）を用いて、ＣＯＲ発生確率およびＵＮＣ発生確率を算出する（Ｓ６０３）。
【００７２】
【数１】
0003565687.tif 000002
【００７３】
【数２】
0003565687.tif 000003
【００７４】
そして、各セクタのＣＯＲ発生確率およびＵＮＣ発生確率を所定のしきい値（以下「データエラー発生確率しきい値」と称す）と比較する。そして、ＣＯＲ発生確率またはＵＮＣ発生確率の少なくとも一方がデータエラー発生確率しきい値を越えたセクタは、劣化したと判断する（Ｓ６０４）。劣化セクタが検出された場合には、第１の実施の形態の場合と同様にして、その後の書き込み動作で代替セクタを使用するための情報を管理情報領域１５０１（図１５参照）に格納し（Ｓ４１８）、この劣化セクタが属するメモリ素子における劣化セクタの総数を計数してセクタ数しきい値と比較し、さらに、劣化セクタの総数がセクタ数しきい値を超えている場合にはメモリ素子が劣化したと判断して（Ｓ４１９）アドレス変換テーブル１２８の論理メモリ番号を書き換える（Ｓ４２０）。
【００７５】
その後、第１の実施の形態の場合と同様、フラッシュメモリインタフェース１２５内のデータ（ＥＣＣによる訂正がある場合は訂正後のデータ）が、データバッファ１２３およびホストインタフェース１２１を介して、半導体ディスク装置１００の外部に出力される（Ｓ４２１）。
【００７６】
このように、この実施の形態では、セクタが劣化したか否かの判断を、ＣＯＲ発生確率およびＵＮＣ発生確率によって行うこととした。従って、例えば他のセクタに比べてデータエラーの発生回数は少ないが書き込み回数や読み出し回数も少ないようなセクタについても劣化したか否かの判断を行うことができるので、劣化セクタの発生状況を、より正確に判断することができる。
【００７７】
また、アドレス変換テーブル１２８を用いて劣化セクタの発生数が多いメモリ素子を使用しないようにできる点や、メモリ素子全体としての故障や半導体ディスク装置全体としての故障の可能性を早期に予想することができる点は、上述の第１の実施の形態と同様である。
【００７８】
なお、この実施の形態では、ＣＯＲ発生回数またはＵＮＣ発生回数の少なくとも一方がデータエラー発生確率しきい値を越えたセクタを劣化したと判断したが、他の判断方法を採ることも可能である。例えば、ＣＯＲ発生確率とＵＮＣ発生確率とでデータエラー発生確率しきい値を変えることとしたり、ＣＯＲとＵＮＣとを区別することなくデータエラー発生確率を算出することとしてもよい。
【００７９】
第３の実施の形態
次に、この発明の第３の実施の形態に係る半導体記憶装置およびその制御方法について、この発明をフラッシュメモリを用いた半導体ディスク装置を例にとって説明する。
【００８０】
この実施の形態に係る半導体ディスク装置は、セクタが劣化したか否かの判断を、所定の書き込み・読み出し回数（例えば１万回）ごとのエラー発生回数（ＣＯＲ或いはＵＮＣ）によって行う点で、上述の各実施の形態と異なる。
【００８１】
なお、半導体ディスク装置１００の全体構成およびアドレス変換テーブル１２８の構成は、第１の実施の形態の場合（図１および図３参照）と同様であるので、説明を省略する。
【００８２】
図７は、この実施の形態に係るデータエラー情報管理テーブル１２７の構成を示す概念図である。同図に示したように、この実施の形態に係るデータエラー情報管理テーブル１２７は、書き込み回数および読み出し回数を記憶するとともに、ＣＯＲの発生時回数およびＵＮＣの発生時回数を記憶する。ここで、ＣＯＲの発生時回数とは、所定の書き込み・読み出し回数（ここでは１万回とする）ごとのＣＯＲの発生回数をいう。すなわち、書き込み回数と読み出し回数との和が１回目〜１００００回目のときに発生したＣＯＲの数は、記憶領域Ｃ１  にセクタごとに記憶される。また、書き込み回数と読み出し回数との和が１０００１回目〜２００００回目のときに発生したＣＯＲの数は、記憶領域Ｃ２  にセクタごとに記憶される。同様に、ＵＮＣの発生時回数とは、所定の書き込み・読み出し回数ごとのＵＮＣの発生回数をいい、書き込み・読み出し回数の１００００回ごとに記憶領域Ｕ１  〜Ｕｈ  にそれぞれ記憶される。
【００８３】
図８は、この実施の形態に係る半導体ディスク装置１００の動作を説明するためのフローチャートである。
【００８４】
まず、上述の各実施の形態の場合（図４、図６参照）と同様、コマンド情報およびアドレス情報がホストインタフェース１２１およびマイクロＣＰＵインタフェース１２２を介してマイクロＣＰＵ１３１に入力され（Ｓ４０１）、このマイクロＣＰＵ１３１がコマンド情報の内容を解読する（Ｓ４０２）。
【００８５】
そして、このコマンド情報が書き込み命令である場合には、マイクロＣＰＵ１３１は、上述の各実施の形態の場合と同様、主データの入力（Ｓ４０３）および縮退運転要／否フラグのチェック（Ｓ４０４）を行い、縮退運転要／否フラグが「要」となっている場合はアドレス変換テーブル１２８を用いてメモリ番号を物理メモリ番号に変換した後（Ｓ４０５）、アドレス情報、コマンド情報および主データをフラッシュメモリインタフェースに送る（Ｓ４０６）。そして、ＥＣＣ制御部１２６が主データを用いてＥＣＣデータを作成した後（Ｓ４０７）、フラッシュメモリインタフェース１２５がシリアルデータ（図１４参照）を作成し（Ｓ４０８）、このシリアルデータを上述のアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）に書き込む（Ｓ４０９）。
【００８６】
さらに、第２の実施の形態の場合と同様にして、シリアルデータの書き込みが終了した後で、データエラー情報管理テーブル１２７の「書き込み回数」の書き換えを行う（Ｓ６０１）。
【００８７】
一方、ステップＳ４０２において、コマンド情報が読み出し命令である場合には、第１の実施の形態の場合と同様にして、マイクロＣＰＵ１３１が縮退運転要／否フラグの状態をチェックし（Ｓ４１０）、「要」の場合にはメモリ番号を物理メモリ番号に変換した後（Ｓ４１１）、アドレス情報をフラッシュメモリインタフェース１２５に送る（Ｓ４１２）。そして、フラッシュメモリインタフェース１２５がアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）からシリアルデータを読み出し（Ｓ４１３）、ＥＣＣ制御部１２６によるデータエラーの検出および訂正とマイクロＣＰＵ１３１によるエラーフラグのセットとを行う（Ｓ４１４）。
【００８８】
続いて、マイクロＣＰＵ１３１の制御により、データエラー情報管理テーブル１２７の書き換えを行う（Ｓ６０２）。この書き換えでは、まず、読み出しを行ったセクタの「読み出し回数」を、それぞれ「１」増加させる。そして、上述のエラーチェック（Ｓ４１４）でエラーが検出されたセクタの「ＣＯＲ発生時回数」または「ＵＮＣ発生時回数」の書き換えを行う（Ｓ８０１）。上述したように、この書き換えでは、該当するセクタの書き込み回数と読み出し回数との和が１万回以下ときは記憶領域Ｃ１  の記憶値を「１」増加させ、１０００１回以上２００００回以下のときは記憶領域Ｃ２  の記憶値を「１」増加させる。
【００８９】
続いて、この実施の形態では、マイクロＣＰＵ１３１が、このデータエラー情報管理テーブル１２７を用いて、ＣＯＲの発生時回数およびＵＮＣの発生時回数を所定のしきい値（以下「データエラー発生時回数しきい値」と称す）と比較する（Ｓ８０１）。そして、ＣＯＲ発生時回数またはＵＮＣ発生時回数の少なくとも一方がデータエラー発生時回数しきい値を越えたセクタは、劣化したと判断する（Ｓ８０２）。ここで、劣化セクタが検出された場合には、第１の実施の形態の場合と同様にして、その後の書き込み動作で代替セクタを使用するための情報を管理情報領域１５０１（図１５参照）に格納し（Ｓ４１８）、この劣化セクタが属するメモリ素子における劣化セクタの総数を計数してセクタ数しきい値と比較し、さらに、劣化セクタの総数がセクタ数しきい値を超えている場合にはメモリ素子が劣化したと判断して（Ｓ４１９）、アドレス変換テーブル１２８の論理メモリ番号を書き換える（Ｓ４２０）。
【００９０】
その後、第１の実施の形態の場合と同様、フラッシュメモリインタフェース１２５内のデータ（ＥＣＣによる訂正がある場合は訂正後のデータ）が、データバッファ１２３およびホストインタフェース１２１を介して、半導体ディスク装置１００の外部に出力される（Ｓ４２１）。
【００９１】
このように、この実施の形態では、セクタが劣化したか否かの判断を、ＣＯＲ発生時回数およびＵＮＣ発生時回数によって行うこととした。従って、メモリ素子Ｍ（０）〜Ｍ（９）として、書き込み・読み出しの回数が一定数を超えた後にデータエラーの発生頻度が急激に増加する特性を有するものが使用される場合に、劣化セクタの発生状況を正確に判断することができる。
【００９２】
また、アドレス変換テーブル１２８を用いて劣化セクタの発生数が多いメモリ素子を使用しないようにできる点や、メモリ素子全体としての故障や半導体ディスク装置全体としての故障の可能性を早期に予想することができる点は、上述の第１の実施の形態と同様である。
【００９３】
なお、この実施の形態では、ＣＯＲ発生時回数またはＵＮＣ発生時回数の少なくとも一方がデータエラー発生時回数しきい値を越えたセクタを劣化したと判断したが、他の判断方法を採ることも可能である。例えば、ＣＯＲ発生時回数とＵＮＣ発生時回数とでデータエラー発生時回数しきい値を変えることとしたり、ＣＯＲ発生時回数およびＵＮＣ発生時回数がともにデータエラー発生時回数しきい値を越えたときに劣化したと判断することとしてもよい。
【００９４】
また、ＣＯＲ、ＵＮＣの発生時回数に代えて、これらのデータエラーの連続発生回数によってセクタの劣化を判断することとしてもよい。このような判断方法によっても、書き込み・読み出しの回数が一定数を超えた後にデータエラーの発生頻度が急激に増加する特性のメモリ素子Ｍ（０）〜Ｍ（９）が使用される場合に、劣化セクタの発生状況を正確に判断することができる。このような判断方法は、上述の第１の実施の形態で使用したデータエラー情報管理テーブル１２７（図２参照）の発生回数に代えて連続発生回数を記憶するものを使用し、第１の実施の形態の場合とほぼ同様の制御（図４参照）を行うことにより、実現することができる。
【００９５】
第４の実施の形態
次に、この発明の第４の実施の形態に係る半導体記憶装置およびその制御方法について、フラッシュメモリを用いた半導体ディスク装置を例にとって説明する。
【００９６】
この実施の形態に係る半導体ディスク装置は、メモリ素子が劣化した場合に、かかる劣化メモリ素子の各セクタに代えて他のメモリ素子の代替セクタを使用することとした点が、上述の第１の実施の形態と異なる。
【００９７】
なお、半導体ディスク装置１００の全体構成およびデータエラー情報管理テーブル１２７の構成は、第１の実施の形態の場合（図１および図２参照）と同様であるので、説明を省略する。
【００９８】
図９は、各メモリ素子Ｍ（０）〜Ｍ（９）内のセクタ構成を示す概念図である。同図（Ａ）に示したように、各メモリ素子Ｍ（０）〜Ｍ（９）は、ｍ＋１個のセクタＳ（０）〜Ｓ（ｍ）と、ｎ＋１個の代替セクタＤ（０）〜Ｄ（ｎ）と、管理情報領域９０１とを備えている。後述するように、劣化メモリ素子が無い場合は、各メモリ素子Ｍ（０）〜Ｍ（９）の代替セクタＤ（０）〜Ｄ（ｎ）は、すべて、当該メモリ素子内に設けられたセクタＳ（０）〜Ｓ（ｍ）の代替に使用される（図９（Ａ）参照）。一方、劣化メモリ素子が存在する場合（すなわち縮退運転時）には、劣化していないメモリ素子の代替セクタＤ（０）〜Ｄ（ｎ）は、一部がそのメモリ素子用の代替に使用され、他は劣化メモリ素子用の代替に使用される（図９（Ｂ）参照）。図９（Ｂ）に示した例では、劣化していないメモリ素子に設けられた代替セクタの内、ｘ個の代替セクタＤ（０）〜Ｄ（ｘ−１）はそのメモリ素子用の代替に使用され、他の代替セクタＤ（ｘ）〜Ｄ（ｎ）は劣化メモリ素子用の代替に使用される。なお、管理情報領域９０１には、そのメモリ素子内で発生した劣化セクタの代替に使用される代替セクタＤ（０）〜Ｄ（ｘ−１）についての情報のみが記憶され、他の劣化メモリ素子の代替に使用される代替セクタＤ（ｘ）〜Ｄ（ｎ）の情報は記憶されない。
【００９９】
図１０は、この実施の形態に係るアドレス変換の原理を説明するための概念図である。同図に示したように、このアドレス変換テーブル１２８は、例えば、メモリ素子Ｍ（ｊ）（すなわち物理メモリ番号が「ｊ」のメモリ素子）が使用されなくなった場合には、他の各メモリ素子Ｍ（０）〜Ｍ（ｊ−１），Ｍ（ｊ＋１）〜Ｍ（９）内の代替セクタが割り振られる。すなわち、メモリ素子Ｍ（ｊ）内に設けられたセクタＳ（０）〜Ｓ（ｇ）に代えてメモリ素子Ｍ（０）の代替セクタＤ（ｘ）〜Ｄ（ｘ＋ｇ）を使用し、メモリ素子Ｍ（ｊ）内に設けられたセクタＳ（ｇ＋１）〜Ｓ（２ｇ）に代えてメモリ素子Ｍ（１）の代替セクタＤ（ｘ）〜Ｄ（ｘ＋ｇ）を使用し、以下同様にして各メモリ素子Ｍ（２）〜Ｍ（ｊ−１），Ｍ（ｊ＋１）〜Ｍ（９）の代替セクタを任意の個数ずつ割り当てる。なお、劣化メモリ素子が増加した場合には、残りの各メモリ素子の代替セクタがさらに割り振られる。
【０１００】
図１１は、この実施の形態に係る半導体ディスク装置１００の動作を説明するためのフローチャートである。
【０１０１】
まず、第１の実施の形態の場合（図４）と同様、コマンド情報およびアドレス情報がホストインタフェース１２１およびマイクロＣＰＵインタフェース１２２を介してマイクロＣＰＵ１３１に入力され（Ｓ４０１）、このマイクロＣＰＵ１３１がコマンド情報の内容を解読する（Ｓ４０２）。
【０１０２】
そして、このコマンド情報が書き込み命令である場合には、マイクロＣＰＵ１３１は、上述の各実施の形態の場合と同様、主データの入力（Ｓ４０３）および縮退運転要／否フラグのチェック（Ｓ４０４）を行い、縮退運転要／否フラグが「要」となっている場合はアドレス変換テーブル１２８を用いてメモリ番号を物理メモリ番号に変換した後（Ｓ４０５）、アドレス情報、コマンド情報および主データをフラッシュメモリインタフェースに送る（Ｓ４０６）。そして、ＥＣＣ制御部１２６が主データを用いてＥＣＣデータを作成した後で（Ｓ４０７）、フラッシュメモリインタフェース１２５がシリアルデータ（図１４参照）を作成し（Ｓ４０８）、このシリアルデータを上述のアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）に書き込む（Ｓ４０９）。
【０１０３】
一方、ステップＳ４０２において、コマンド情報が読み出し命令である場合には、第１の実施の形態の場合と同様にして、マイクロＣＰＵ１３１が縮退運転要／否フラグの状態をチェックする（Ｓ４１０）。そして、この縮退要／否フラグが「要」の場合には、上述のアドレス情報をアドレス変換テーブル１２８に送り、図１０に示したようなアドレス情報の変換を行う（Ｓ１１０１）。すなわち、図１０に示したように劣化メモリ素子をＭ（ｊ）とすると、アドレス情報中のメモリ番号が「０」〜「ｊ−１」および「ｊ＋１」〜「９」の場合は変換の前後でアドレス情報値は同一となり、また、アドレス情報中のメモリ番号が「ｊ」の場合は図１０に示したようにしてメモリ番号およびセクタ番号の書き換えが行われる。
【０１０４】
続いて、変換後のアドレス情報が、フラッシュメモリインタフェース１２５に送られる（Ｓ４１２）。そして、フラッシュメモリインタフェース１２５がアドレス情報に対応するセクタ（このセクタが劣化しているときは所定の代替セクタ）からシリアルデータを読み出し（Ｓ４１３）、ＥＣＣ制御部１２６によるデータエラーの検出および訂正とマイクロＣＰＵ１３１によるエラーフラグのセットとを行う（Ｓ４１４）。
【０１０５】
続いて、上述のエラーチェック（Ｓ４１４）でデータエラーが検出されたか否かを判断し（Ｓ４１５）、データエラーの検出があった場合には上述の第１の実施の形態の場合と同様にしてデータエラー情報管理テーブル１２７の書き換えを行う（Ｓ４１６）。そして、第１の実施の形態の場合と同様にして、ＣＯＲの発生回数およびＵＮＣの発生回数をデータエラー発生回数しきい値と比較することによって劣化したか否かを判断し（Ｓ４１７）、劣化セクタが検出された場合には管理情報領域９０１の情報を書き換える（Ｓ４１８）。さらに、第１の実施の形態の場合と同様にして、この劣化セクタが属するメモリ素子が劣化したか否かを判断し（Ｓ４１９）、メモリ素子が劣化した場合はアドレス変換テーブル１２８の情報を書き換える（Ｓ４２０）。
【０１０６】
その後、第１の実施の形態の場合と同様、フラッシュメモリインタフェース１２５内のデータ（ＥＣＣによる訂正がある場合は訂正後のデータ）が、データバッファ１２３およびホストインタフェース１２１を介して、半導体ディスク装置１００の外部に出力される（Ｓ４２１）。
【０１０７】
このように、この実施の形態では、劣化メモリ素子が発生した場合には、他のメモリ素子の代替セクタを用いてシリアルデータの記憶を行うこととした。このため、この実施の形態によれば、劣化メモリ素子が発生した場合にフラッシュメモリ部１１０の記憶容量の低減を抑制することができる。
【０１０８】
また、劣化セクタの発生状況を正確に判断することができる点、アドレス変換テーブル１２８を用いて劣化セクタの発生数が多いメモリ素子を使用しないようにできる点、メモリ素子全体としての故障や半導体ディスク装置全体としての故障の可能性を早期に予想することができる点は、上述の各実施の形態と同様である。
【０１０９】
なお、この実施の形態では、上述の第１の実施の形態と同様、ＣＯＲまたはＵＮＣの発生回数をデータエラー発生回数しきい値と比較することによってセクタの劣化を判断することとしたが、ＣＯＲまたはＵＮＣの発生確率とデータエラー発生確率しきい値との比較（すなわち第２の実施の形態と同じ方法）や、ＣＯＲまたはＵＮＣの発生時回数とデータエラー発生時回数しきい値との比較（すなわち第３の実施の形態と同じ方法）によってセクタの劣化を判断することとしてもよい。
【０１１０】
また、以上説明した実施の形態では、それぞれ、セクタの劣化を１種類の方法で判断したが、複数種類の判断方法を組み合わせることとしてもよい。例えば、データエラー発生確率しきい値を用いた判断とデータエラー発生時回数しきい値を用いた判断とを両方行うこととし、一方のデータエラー発生確率またはデータエラー発生時回数の一方或いは両方がしきい値を超えた場合に、劣化セクタであると判断することとしてもよい。
【０１１１】
【発明の効果】
以上詳細に説明したように、この発明によれば、劣化が問題となるメモリ素子を使用した半導体記憶装置の信頼性を向上させることができ且つ寿命を長くすることができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係る半導体記憶装置の構成を概略的に示すブロック図である。
【図２】第１の実施の形態におけるデータエラー情報管理テーブルの構成を示す概念図である。
【図３】第１の実施の形態におけるアドレス変換テーブルの構成を示す概念図である。
【図４】第１の実施の形態に係る半導体記憶装置の動作を説明するためのフローチャートである。
【図５】第２の実施の形態に係るデータエラー情報管理テーブルの構成を示す概念図である。
【図６】第２の実施の形態に係る半導体記憶装置の動作を説明するためのフローチャートである。
【図７】第３の実施の形態におけるデータエラー情報管理テーブルの構成を示す概念図である。
【図８】第３の実施の形態に係る半導体記憶装置の動作を説明するためのフローチャートである。
【図９】第４の実施の形態における各メモリ素子のセクタ構成を示す概念図である。
【図１０】第４の実施の形態に係るアドレス変換の原理を説明するための概念図である。
【図１１】第４の実施の形態に係る半導体記憶装置の動作を説明するためのフローチャートである。
【図１２】従来の半導体記憶装置の一構成例を概念的に示すブロック図である。
【図１３】従来の半導体記憶装置の動作を説明するためのフローチャートである。
【図１４】従来の半導体記憶装置におけるフラッシュメモリインタフェース内で作成されるシリアルデータの構成を示す概念図である。
【図１５】従来の半導体記憶装置のフラッシュメモリ部に設けられた各メモリ素子内のセクタ構成を示す概念図である。
【符号の説明】
１００  半導体ディスク装置
１１０  フラッシュメモリ部
１２０  ディスクコントローラ部
１２１  ホストインタフェース
１２２  マイクロＣＰＵインタフェース
１２３  データバッファ
１２４  データ転送制御部
１２５  フラッシュメモリインタフェース
１２６  ＥＣＣ制御部
１２７  データエラー情報管理テーブル
１２８  アドレス変換テーブル
１３０  マイクロコントローラ部
１３１  マイクロＣＰＵ
１３２  プログラムメモリ
【図１】
0003565687.tif 000004
【図２】
0003565687.tif 000005
【図３】
0003565687.tif 000006
【図４】
0003565687.tif 000007
【図５】
0003565687.tif 000008
【図６】
0003565687.tif 000009
【図７】
0003565687.tif 000010
【図８】
0003565687.tif 000011
【図９】
0003565687.tif 000012
【図１０】
0003565687.tif 000013
【図１１】
0003565687.tif 000014
【図１２】
0003565687.tif 000015
【図１３】
0003565687.tif 000016
【図１４】
0003565687.tif 000017
【図１５】
0003565687.tif 000018