(57)【要約】【目的】読出データの信頼性低下を抑えることが可能な半導体メモリの制御装置及び制御方法を提供することを目的とする。【構成】複数のメモリセルからなるメモリセル群内の全メモリセルを第１の論理レベルの状態に設定してから、当該メモリセル群内の所望のメモリセルを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて当該メモリセル群からデータの読み出しを行って読出データ片を得るにあたり、当該読出データ片に誤り検出処理を施すことにより誤りビットを検出し、この読出データ片から検出された誤りビットの内で上記した第１の論理レベルを有する誤りビットの数が第２の論理レベルを有する誤りビットの数よりも大なる場合に、この読出データ片が無効データであると判定する。【選択図】図１
2014235499.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルからなるメモリセル群内の全ての前記メモリセルを第１の論理レベルの状態に設定してから、前記メモリセル群内の所望のメモリセルを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて前記メモリセル群からデータの読み出しを行って読出データ片を得る半導体メモリの制御装置であって、
前記読出データ片に誤り検出処理を施すことにより誤りビットを検出する誤り検出部と、
前記読出データ片から検出された誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大なる場合に、前記読出データ片が無効データであると判定する判定部と、を有することを特徴とする半導体メモリの制御装置。
【請求項２】
前記誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大なる場合に、前記メモリセル群に記憶されていたデータに対してリフレッシュ処理を施すリフレッシュ制御部を含むことを特徴とする請求項１記載の半導体メモリの制御装置。
【請求項３】
前記データ書込を実行した書込順序を各ページに対応付けして示す書込順序管理情報を生成する手段を含むことを特徴とする請求項１又は２記載の半導体メモリの制御装置。
【請求項４】
前記リフレッシュ制御部は、前記書込順序管理情報に示されている前記書込順序の内で、前記無効データであると判定された前記読み出しデータ片が格納されているページの前記書込順序が最新の場合には、前記ページだけを前記リフレッシュ処理の対象領域とすることを特徴とする請求項３記載の半導体メモリの制御装置。
【請求項５】
前記リフレッシュ制御部は、前記書込順序管理情報に示されている前記書込順序の内で、前記無効データであると判定された前記読み出しデータ片が格納されているページの前記書込順序が最新ではない場合には、前記ページを含むブロックを前記リフレッシュ処理の対象領域とすることを特徴とする請求項３又は４記載の半導体メモリの制御装置。
【請求項６】
前記リフレッシュ制御部は、前記対象領域に記憶されているデータを読み出し当該データに誤り訂正を施したデータを前記対象領域に上書きすることを特徴とする請求項４又は５記載の半導体メモリの制御装置。
【請求項７】
前記判定部は、外部装置から供給された読出指令に応じて動作を開始することを特徴とする請求項１記載の半導体メモリの制御装置。
【請求項８】
電源投入に応じて前記メモリセル群からのデータ読み出しを促す読出指令を生成する手段を含み、
前記判定部は、前記電源投入に応じて生成された前記読出指令に応じて動作を開始することを特徴とする請求項１記載の半導体メモリの制御装置。
【請求項９】
外部装置からのアクセスが為されていない待機期間中に前記メモリセル群からのデータ読み出しを促す読出指令を生成する手段を含み、
前記判定部は、前記待機期間中に生成された前記読出指令に応じて動作を開始することを特徴とする請求項１記載の半導体メモリの制御装置。
【請求項１０】
前記判定部は、前記書込順序管理情報に示されている前記書込順序の内で最新の書込順序に対応したページに対してだけ判定を行うことを特徴とする請求項１記載の半導体メモリの制御装置。
【請求項１１】
前記半導体メモリはＮＡＮＤ型のフラッシュメモリであることを特徴とする請求項１〜１０のいずれか１に記載の半導体メモリの制御装置。
【請求項１２】
複数のメモリセルからなるメモリセル群単位でデータ書込及び読出しを行う半導体メモリの制御装置であって、
前記メモリセル群から読み出された読出データ片に誤りが生じているか否かを検出すると共に、誤りが生じている場合には訂正可能であるか否かを判定する誤り検出訂正判定部と、
前記誤り検出訂正判定部において前記読出データ片に誤りが生じていない、又は誤りが生じているが訂正可能であると判定された場合には、無効判定回数だけ前記メモリセル群から繰り返し前記読出データ片を読み出す読み出し制御部と、
前記読み出し制御部によって前記無効判定回数の分だけ繰り返し読み出された前記読出データ片各々の内の少なくとも１つが前記誤り検出訂正判定部にて訂正不可であると判定された場合には、前記読出データ片が無効データであると判定する判定部と、を有することを特徴とする半導体メモリの制御装置。
【請求項１３】
前記判定部は、外部装置から供給された読出指令に応じて動作を開始することを特徴とする請求項１２記載の半導体メモリの制御装置。
【請求項１４】
電源投入に応じて前記メモリセル群からのデータ読み出しを促す読出指令を生成する手段を含み、
前記判定部は、前記電源投入に応じて生成された前記読出指令に応じて動作を開始することを特徴とする請求項１３載の半導体メモリの制御装置。
【請求項１５】
外部装置からのアクセスが為されていない待機期間中に前記メモリセル群からのデータ読み出しを促す読出指令を生成する手段を含み、
前記判定部は、前記待機期間中に生成された前記読出指令に応じて動作を開始することを特徴とする請求項１２記載の半導体メモリの制御装置。
【請求項１６】
複数のメモリセルからなるメモリセル群内の全ての前記メモリセルを第１の論理レベルの状態に設定してから、前記メモリセル群内の所望のメモリセルを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて前記メモリセル群からデータの読み出しを行って読出データ片を得る半導体メモリの制御方法であって、
前記読出データ片に誤り検出処理を施すことにより誤りビットを検出し、
前記読出データ片から検出された誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大なる場合に、前記読出データ片が無効データであると判定することを特徴とする半導体メモリの制御方法。
【請求項１７】
前記誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大である場合に、
前記無効データであると判定された前記読み出しデータ片が格納されているページの書込順序が全ページの内で最新である場合には前記ページだけをリフレッシュ処理の対象領域とする一方、前記書込順序が最新ではない場合には前記ページを含むブロックを前記リフレッシュ処理の対象領域とすることを特徴とする請求項１６記載の半導体メモリの制御方法。
【請求項１８】
前記リフレッシュ処理では、前記対象領域に記憶されているデータを読み出し当該データに誤り訂正を施したデータを前記対象領域に上書きすることを特徴とする請求項１７記載の半導体メモリの制御方法。
【請求項１９】
複数のメモリセルからなるメモリセル群単位でデータ書込及び読出しを行う半導体メモリの制御方法であって、
前記メモリセル群から読み出された読出データ片に誤りが生じているか否かを検出すると共に、誤りが生じている場合には訂正可能であるか否かを判定し、
前記読出データ片に誤りが生じていない、又は誤りが生じているが訂正可能であると判定された場合には、無効判定回数だけ前記メモリセル群から繰り返し前記読出データ片を読み出す読み出し、読み出された前記読出データ片各々の内の少なくとも１つが訂正不可であると判定された場合に前記読出データ片が無効データであると判定することを特徴とする半導体メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリの制御装置、特に、読み出されたデータに対して誤り検出を行う半導体メモリの制御装置及びその制御方法に関する。
【背景技術】
【０００２】
現在、不揮発性の半導体メモリとして、ＮＡＮＤ型フラッシュメモリが普及している。      
【０００３】
ところで、ＮＡＮＤ型フラッシュメモリでは、データをメモリセルに書き込んでいる最中に電源が遮断されると、書込対象となったメモリセルのデータが破壊される虞があった。そこで、書込用のデータに誤り訂正符号を付加したものを書き込み、その読み出し時に誤りが検出された場合にはデータ書き込み中に電源遮断が生じたと判断して、この読み出されたデータを未使用データとして管理するようにした書込判定方法が提案された（特許文献１参照）。
【０００４】
しかしながら、データ書込時において電源遮断が生じると、その電源遮断のタイミング又は素子特性等によっては、メモリセル内の電荷の残留状態が中途半端、つまり、論理レベル１及び０を判定する閾値の近傍となる場合があった。よって、このメモリセルからデータの読み出しを行うと、正常なデータが読み出される場合と、不正なデータが読み出される場合とが混在する不安定な状態となり、このＮＡＮＤ型フラッシュメモリを用いたシステム全体の信頼性が低下してしまうという問題が生じた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４１６１８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、読出データの信頼性低下を抑えることが可能な半導体メモリの制御装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る半導体メモリの制御装置は、複数のメモリセルからなるメモリセル群内の全ての前記メモリセルを第１の論理レベルの状態に設定してから、前記メモリセル群内の所望のメモリセルを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて前記メモリセル群からデータの読み出しを行って読出データ片を得る半導体メモリの制御装置であって、前記読出データ片に誤り検出処理を施すことにより誤りビットを検出する誤り検出部と、前記読出データ片から検出された誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大なる場合に、前記読出データ片が無効データであると判定する判定部と、を有する。
【０００８】
又、本発明に係る半導体メモリの制御装置は、複数のメモリセルからなるメモリセル群単位でデータ書込及び読出しを行う半導体メモリの制御装置であって、前記メモリセル群から読み出された読出データ片に誤りが生じているか否かを検出すると共に、誤りが生じている場合には訂正可能であるか否かを判定する誤り検出訂正判定部と、前記誤り検出訂正判定部において前記読出データ片に誤りが生じていない、又は誤りが生じているが訂正可能であると判定された場合には、無効判定回数だけ前記メモリセル群から繰り返し前記読出データ片を読み出す読み出し制御部と、前記読み出し制御部によって前記無効判定回数の分だけ繰り返し読み出された前記読出データ片各々の内の少なくとも１つが前記誤り検出訂正判定部にて訂正不可であると判定された場合には、前記読出データ片が無効データであると判定する判定部と、を有する。
【０００９】
又、本発明に係る半導体メモリの制御方法は、複数のメモリセルからなるメモリセル群内の全ての前記メモリセルを第１の論理レベルの状態に設定してから、前記メモリセル群内の所望のメモリセルを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて前記メモリセル群からデータの読み出しを行って読出データ片を得る半導体メモリの制御方法であって、前記読出データ片に誤り検出処理を施すことにより誤りビットを検出し、前記読出データ片から検出された誤りビットの内で前記第１の論理レベルを有する誤りビットの数が前記第２の論理レベルを有する誤りビットの数よりも大なる場合に、前記読出データ片が無効データであると判定する。
【００１０】
又、本発明に係る半導体メモリの制御方法は、複数のメモリセルからなるメモリセル群単位でデータ書込及び読出しを行う半導体メモリの制御方法であって、前記メモリセル群から読み出された読出データ片に誤りが生じているか否かを検出すると共に、誤りが生じている場合には訂正可能であるか否かを判定し、前記読出データ片に誤りが生じていない、又は誤りが生じているが訂正可能であると判定された場合には、無効判定回数だけ前記メモリセル群から繰り返し前記読出データ片を読み出す読み出し、読み出された前記読出データ片各々の内の少なくとも１つが訂正不可であると判定された場合に前記読出データ片が無効データであると判定する。
【図面の簡単な説明】
【００１１】
【図１】本発明に係る半導体メモリ制御装置を含む情報処理システムを示すブロック図である。
【図２】レジスタ２４４の記憶内容の一例を示す図である。
【図３】リフレッシュ制御ルーチンを示すフローチャートである。
【図４】リフレッシュ処理の動作を示す図である。
【図５】リフレッシュ処理の動作の他の一例を示す図である。
【図６】本発明における他の実施例による半導体メモリ制御装置を含む情報処理システムを示すブロック図である。
【図７】読出判定制御ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【００１３】
図１は、本発明に係る半導体メモリの制御装置を含む記憶装置を備えた情報処理システムを示すブロック図である。図１に示すように、かかる情報処理システムは、ホスト情報処理装置１及び記憶装置２を含む。
【００１４】
ホスト情報処理装置１は、記憶装置２に記憶されているデータ（後述する）、又は外部供給されたデータに基づいて各種情報処理を行いつつ、データを書き込ませるべき書込命令、書込先のアドレス及び書込用データ、或いは、データの読み出しを促す読出命令及び読出元のアドレスを記憶装置２に供給する。
【００１５】
記憶装置２は、ホストインターフェース（以下、ホストＩＦと称する）部２１、メモリアクセスバス２２、ＣＰＵ（Central Processing Unit）２３、メモリ制御部２４及びＮＡＮＤ型のフラッシュメモリ２５を有する。
【００１６】
ホストＩＦ部２１は、ホスト情報処理装置１から供給された書込命令、読出命令、アドレス及び書込用データを受け、これらをメモリアクセスバス２２を介してＣＰＵ２３に供給する。また、ホストＩＦ部２１は、メモリ制御部２４から送出された読出データＲＤＤ（後述する）をメモリアクセスバス２２を介して受け、これをホスト情報処理装置１に供給する。ＣＰＵ２３は、メモリアクセスバス２２を介して供給された書込命令、アドレス及び書込用データに応じて、このアドレスに書込用データを書き込ませるべきメモリ書込制御信号を生成し、これをメモリアクセスバス２２を介してメモリ制御部２４に供給する。また、ＣＰＵ２３は、メモリアクセスバス２２を介して供給された読出命令及びアドレスに応じて、そのアドレスからデータの読み出しを行わせるべきメモリ読出制御信号を生成し、これをメモリアクセスバス２２を介してメモリ制御部２４に供給する。
【００１７】
メモリ制御部２４は、誤り訂正符号化部２４０、誤り検出訂正部２４１、０誤りカウンタ２４２、１誤りカウンタ２４３、レジスタ２４４及び判定部２４５の如きモジュールを含む。
【００１８】
誤り訂正符号化部２４０は、上記したメモリ書込制御信号に応じて、このメモリ書込制御信号にて示される書込用データに対して、例えばＢＣＨ符号の如き誤り訂正符号を付加して誤り訂正符号化した書込データＷＤを生成し、これをレジスタ２４４に記憶する。
【００１９】
誤り検出訂正部２４１は、フラッシュメモリ２５から読み出された読出データＲＤに対して誤り検出処理を施す。ここで、読出データＲＤのビット系列中に誤りビットが検出された場合には、誤り検出訂正部２４１は、その誤りビットの論理レベルを検出する。
【００２０】
この際、誤り検出訂正部２４１は、読出データＲＤのビット系列中から論理レベル０の誤りビット、つまり、本来、論理レベル１であるべきところ、論理レベル０の誤った状態となっているビット、いわゆる「０誤り」が生じたビットを検出する度に０誤り検出パルスを発生しこれを０誤りカウンタ２４２に供給する。また、誤り検出訂正部２４１は、読出データＲＤのビット系列中から論理レベル１の誤りビット、つまり、本来、論理レベル０であるべきところ、論理レベル１の誤った状態となっているビット、いわゆる「１誤り」が生じたビットを検出する度に１誤り検出パルスを発生しこれを１誤りカウンタ２４３に供給する。そして、誤り検出訂正部２４１は、読出データＲＤに誤りが存在するもののその誤りを訂正することが可能である場合には、かかる読出データＲＤに対して誤り訂正処理を施し、誤り訂正されたデータを図２に示すように読出データＲＤＤとしてレジスタ２４４に記憶する。尚、フラッシュメモリ２５から読み出された読出データＲＤに誤りが無かった場合には、誤り検出訂正部２４１は、この読出データＲＤを読出データＲＤＤとしてレジスタ２４４に記憶する。すなわち、読出データＲＤの内で有効なデータだけが読出データＲＤＤとしてレジスタ２４４に記憶されるのである。
【００２１】
０誤りカウンタ２４２は、上記した０誤り検出パルスが供給された数をカウントし、そのカウント値を、０誤り発生数ＥＧ０としてレジスタ２４４に記憶する。すなわち、０誤りカウンタ２４２は、読出データＲＤのビット系列中において「０誤り」が生じたビットの数をカウントし、その「０誤り」の数を示す０誤り発生数ＥＧ０をレジスタ２４４に記憶するのである。
【００２２】
１誤りカウンタ２４３は、上記した１誤り検出パルスが供給された数をカウントし、そのカウント値を、１誤り発生数ＥＧ１としてレジスタ２４４に記憶する。すなわち、１誤りカウンタ２４３は、読出データＲＤのビット系列中において「１誤り」が生じたビットの数をカウントし、その「１誤り」の数を示す１誤り発生数ＥＧ１をレジスタ２４４に記憶するのである。
【００２３】
メモリ制御部２４は、これらモジュールの動作を反映させて、メモリ書込制御信号又はメモリ読出制御信号に応じたフラッシュメモリ２５へのアクセス（データ書込、読出、消去）を、例えば４キロバイト又は８キロバイト分のメモリセルからなるページ単位、又は６４ページ分からなるブロック単位で行う。すなわち、メモリ制御部２４は、メモリ書込制御信号に応じて、先ず、書込対象となるページを含むブロック内の全てのメモリセルの状態を論理レベル１の状態に設定するという、データ消去を行う。次に、メモリ制御部２４は、レジスタ２４４に記憶されている書込データＷＤと共にこのメモリ書込制御信号にて指定されたアドレス、及びデータ書込を促す書込指令信号をフラッシュメモリ２５に供給する。これにより、フラッシュメモリ２５は、書込データＷＤが論理レベル０を示す場合には、アドレスによって指定されたページ内のメモリセルを論理レベル１の状態（データの消去状態）から論理レベル０の状態に遷移させるべき書込駆動（例えば電荷注入又は電荷放出）を実施する。一方、書込データＷＤが論理レベル１、つまりデータ消去状態と同一論理レベルを示す場合には、メモリセルに対するアクセスは行わない。かかる動作により、フラッシュメモリ２５は、指定されたアドレスに上記書込データＷＤを書き込む。更に、メモリ制御部２４は、書込データＷＤが書き込まれたページと、その書込日時又は
全ページ内での書込順序を示す情報とを対応付けて示す書込順序管理情報ＴＭを生成し、これを図２に示すようにレジスタ２４４に記憶する。
【００２４】
また、メモリ制御部２４は、メモリアクセスバス２２を介してメモリ読出制御信号が供給された場合には、このメモリ読出制御信号にて指定されたアドレスをフラッシュメモリ２５に供給しつつ、データ読出を促す読出指令信号をフラッシュメモリ２５に供給する。これにより、フラッシュメモリ２５は、指定されたアドレスに記憶されている書込データＷＤを読みだし、これを上記した読出データＲＤとしてメモリ制御部２４に供給する。尚、書込データＷＤ及び読出データＲＤ各々のビット長は、誤り訂正符号としての単位ブロック長、或いは、ＮＡＮＤ型フラッシュメモリとしての１ページ分のビット長等である。
【００２５】
その後、１つの読出データＲＤに対する、誤り検出訂正部２４１での誤り検出及び訂正処理、及び上記した０誤りカウンタ２４２及び１誤りカウンタ２４３でのカウント動作が終了すると、判定部２４５は、レジスタ２４４に記憶されている１誤り発生数ＥＧ１が０誤り発生数ＥＧ０よりも大であるか否かの判定を行う。この際、１誤り発生数ＥＧ１が０誤り発生数ＥＧ０よりも大であると判定された場合に、判定部２４５は、この読出データＲＤが、書込時の電源遮断によって破壊された無効データであると判断する。
【００２６】
上記した動作の終了後、メモリ制御部２４は、レジスタ２４４に記憶されている有効データとしての読出データＲＤＤを、メモリアクセスバス２２を介してホストＩＦ部２１に送出する。これにより、フラッシュメモリ２５から読み出された読出データがホスト情報処理装置１に送出される。一方、無効データであると判断した読出データＲＤに対しては、メモリ制御部２４は、ホスト情報処理装置１への送信は行わない。尚、メモリ制御部２４は、この無効データであると判断した読出データＲＤが格納されていたページ又はブロックに対して、後述するが如きリフレッシュ処理を実施する。
【００２７】
このように、メモリ制御２４は、フラッシュメモリ２５に対してデータ書込を行うにあたり、書込データＷＤが論理レベル０である場合には、フラッシュメモリ２５内のメモリセルを論理レベル１の状態（データ消去状態）から論理レベル０の状態に遷移させるべき書込駆動（例えば電荷注入又は電荷放出）を実施する。ところが、上記した書込駆動中に電源遮断が生じると、メモリセルの状態が論理レベル１の状態（データ消去状態）から論理レベル０の状態に遷移する前に、メモリセルへの電荷注入又は電荷放出動作が中断してしまう。よって、このメモリセルは、本来、論理レベル０の状態に書き込みが為されるべきところを、論理レベル０の状態にまで完全に書き込みきれない。この際、かかるメモリセルからデータを読み出すと、正しく論理レベル０が読み出される場合と、誤って論理レベル１が読み出される場合とが混在する不安定な状態となる。従って、このメモリセルから読み出されたデータに誤りが生じている場合には、本来、論理レベル０であるべきところ、論理レベル１の誤った状態で読み出されてしまうという、いわゆる「１誤り」が生じる可能性が高くなる。
【００２８】
従って、データ書込中に電源遮断が生じた状況で書き込まれたデータを読み出して、誤り検出を行うと、検出された全ての誤りビットの内で「１誤り」となっているビットの数が、「０誤り」となっているビットの数よりも多くなる。
【００２９】
そこで、メモリ制御部２４の判定部２４５では、１誤り発生数ＥＧ１の方が０誤り発生数ＥＧ０よりも大なる場合には、この読出データＲＤを、書込時の電源遮断によって破壊された無効データであると判断するのである。
【００３０】
尚、データ書込中に電源遮断が生じた状況で書き込まれたデータを読み出すと、実際には、読出データＲＤのビット系列中に生じる全ての誤りビットの中で、「１誤り」の割合が「０誤り」の割合に比して大幅（例えば９：１）に多くなる。そこで、判定部２４５は、０誤り発生数ＥＧ０に電源遮断判定用シフト値ＳＶを加算した値（ＥＧ０＋ＳＶ）よりも１誤り発生数ＥＧ１の方が大なる場合に、この読出データＲＤを、書込時の電源遮断によって破壊された無効データであると判断するようにしても良い。また、判定部２４５は、読出データＲＤのビット系列中に生じる全誤りビットの内で、「１誤り」のビット数の割合が電源遮断判定閾値（例えば９０％）より大となる場合に、この読出データＲＤを、書込時の電源遮断によって破壊された無効データであると判断するようにしても良い。要するに、データ書込中に電源遮断が生じた状況で書き込まれたデータを読み出すと、実際には読出データＲＤのビット系列中に生じる全ての誤りビットの中で、「１誤り」の割合が「０誤り」の割合に比して大幅に多くなることに鑑みて、判定部２４５にて上記の如き判定を行うようにするのである。
【００３１】
よって、メモリ制御部２４によれば、１回分の読み出しにより、その読出データが書込処理中の電源遮断によって破壊されたデータであるか否かを検出することができ、このデータを無効データとして管理することが可能となる。これにより、書込処理中の電源遮断に起因して、１アドレスから不正なデータが読み出される場合と、正常又は訂正可能なデータが読み出される場合とが混在してしまう不安定な状態が回避される。
【００３２】
従って、本発明によれば、書込処理中の電源遮断により、破壊されたデータがメモリに書き込まれてしまっても、読出データの信頼性低下を抑えることが可能となり、システム全体の安定化が図られるようになる。
【００３３】
ここで、記憶装置２では、その記憶媒体としてＮＡＮＤ型のフラッシュメモリ２５を用いていることから、リードディスターブ、リテンション、或いは書込中の電源遮断等に起因するデータ破壊が生じる。そこで、メモリ制御部２４は、定期的又は読出動作時に、データの再書込、いわゆるリフレッシュ処理を行う。
【００３４】
図３は、フラッシュメモリ２５からの読出データＲＤの読み出し動作に応じて、メモリ制御部２４が実行するリフレッシュ制御ルーチンを示すフローチャートである。尚、かかるリフレッシュ制御ルーチンは、フラッシュメモリ２５から読み出された読出データＲＤに対する、誤り検出訂正部２４１での誤り検出及び訂正処理、及び０誤りカウンタ２４２及び１誤りカウンタ２４３でのカウント動作が終了した後にメモリ制御部２４によって実施されるものである。
【００３５】
図３において、先ず、メモリ制御部２４は、レジスタ２４４に記憶されている０誤り発生数ＥＧ０と１誤り発生数ＥＧ１とを加算して誤り総数ＥＡを求め（ステップＳ１）、かかる誤り総数ＥＡがリフレッシュ実行閾値ＥＸよりも大であるか否かを判定する（ステップＳ２）。このステップＳ２において、誤り総数ＥＡがリフレッシュ実行閾値ＥＸ以下であると判定された場合、メモリ制御部２４は、このリフレッシュ制御ルーチンを抜ける。すなわち、この際、リフレッシュ処理は実施されない。
【００３６】
かかるステップＳ２において誤り総数ＥＡがリフレッシュ実行閾値ＥＸより大であると判定された場合、メモリ制御部２４は、上記した０誤り発生数ＥＧ０に電源遮断判定用シフト値ＳＶを加算した値（ＥＧ０＋ＳＶ）よりも、１誤り発生数ＥＧ１の方が大であるか否かを判定する（ステップＳ３）。
【００３７】
ステップＳ３において、１誤り発生数ＥＧ１が上記した（ＥＧ０＋ＳＶ）以下であると判定された場合、メモリ制御部２４は、データ読出時に周辺のメモリセルの値を変化させてしまうリードディスターブが生じたと判断して、第１ブロックリフレッシュ処理を実行する（ステップＳ４）。
【００３８】
第１ブロックリフレッシュ処理では、メモリ制御部２４は、図４（ａ）に示すように、フラッシュメモリ２５から読み出された読出データＲＤが書き込まれているページＥＰＧが属するブロックＢＬ１内の全てのデータを順次読み出しつつ、誤り検出訂正部２４１をもって誤り訂正処理を施す。そして、メモリ制御部２４は、図４（ａ）に示すように、その訂正後の全データを他のブロックＢＬ２にコピーする。この際、メモリ制御部２４は、ブロックＢＬ１を無効ブロック、ブロックＢＬ２を有効ブロックとして管理すべく、レジスタ２４４に記憶されている管理情報データＫＤを更新する。
【００３９】
また、ステップＳ３において、１誤り発生数ＥＧ１が上記した（ＥＧ０＋ＳＶ）より大であると判定された場合、メモリ制御部２４は、レジスタ２４４に記憶されている書込順序管理情報ＴＭに基づき、この読出データＲＤが格納されているページへの書込の順序が、フラッシュメモリ２５の全ページ中で最も新しいか否かを判定する（ステップＳ５）。かかるステップＳ５において、最新の書込ではないと判定された場合、メモリ制御部２４は、経時変化によってデータが消失するリテンションが生じていると判断して、第２ブロックリフレッシュ処理を実行する（ステップＳ６）。
【００４０】
第２ブロックリフレッシュ処理では、メモリ制御部２４は、図４（ｂ）に示すように、フラッシュメモリ２５から読み出された読出データＲＤが書き込まれているページＥＰＧが属するブロックＢＬ１内の全てのデータに対して、誤り検出訂正部２４１をもって誤り訂正処理を施し、その訂正後の全データをブロックＢＬ１内に上書きする。よって、この際、メモリ制御部２４は、ブロックＢＬ１を有効ブロックとして引き続き管理することになるので、管理情報データＫＤの更新は実施しない。
【００４１】
また、ステップＳ５において、読出データＲＤが格納されているページへの書込順序が最新であると判定されると、メモリ制御部２４は、この読出データＲＤがデータ書込動作中の電源遮断に起因して破壊されてしまった無効データであると判断して、ページリフレッシュ処理を実行する（ステップＳ７）。
【００４２】
ページリフレッシュ処理では、メモリ制御部２４は、図４（ｃ）に示すように、フラッシュメモリ２５から読み出された読出データＲＤが書き込まれているページＥＰＧ１だけからデータを読み出し、誤り検出訂正部２４１をもって誤り訂正を施す。そして、メモリ制御部２４は、図４（ｃ）に示すように、この訂正後のデータを、ページＥＰＧ１が属するブロックＢＬ１内の他のページＥＰＧ２にコピーする。尚、かかるページリフレッシュ処理において、メモリ制御部２４は、読出データＲＤが書き込まれているページＥＰＧ１だけからデータを読み出して誤り訂正を施したものを、図４（ｄ）に示すように、ページＥＰＧ１が属するブロックＢＬ１とは異なるブロックＢＬ１内のページＥＰＧ２にコピーするようにしても良い。そして、メモリ制御部２４は、ページＥＰＧ１を無効ページ、ページＥＰＧ２を有効ページとして管理すべく、レジスタ２４４に記憶されている管理情報データＫＤを更新する。
【００４３】
上記したステップＳ４、Ｓ６又はＳ７の終了後、メモリ制御部２４は、図３に示すリフレッシュ制御ルーチンを終了する。
【００４４】
すなわち、書込動作中に電源遮断が生じた場合には、書込駆動（例えばメモリセルへの電荷注入）が不十分になることから、論理レベル０の状態（例えば、所望量の電荷が蓄積された状態）に書き込み切れなかったメモリセルにおいて「１誤り」が生じる可能性が高くなる。また、リテンションによって論理レベル０の状態を維持しきれなくなったメモリセルにおいても同様に「１誤り」が生じる可能性が高くなる。そこで、読出データＲＤ中に誤りが存在する場合には、メモリ制御部２４は、全体の誤り発生数に対する「１誤り」の割合が「０誤り」の割合よりも大となると判定（Ｓ３）した場合に、書込動作中の電源遮断又はリテンションが生じたと判断する。ここで、リテンションは、書き込みが終了してからの経過期間が短いほど発生の可能性が低い。そこで、メモリ制御部２４は、全体の誤り発生数に対する「１誤り」の割合が「０誤り」の割合よりも大であると判定（Ｓ３）し、且つその判定対象となった読出データＲＤが格納されているページへの書込みが全ページ中で最も新しいと判定（Ｓ５）した場合に、「１誤り」の原因が書込時の電源遮断にあると判断し、それ以外の場合にはリテンションであると判断するようにしている。
【００４５】
この際、リテンションでは、「１誤り」が検出されたページのみならず、そのページを含むブロック全体に同様な「１誤り」が生じる。
【００４６】
そこで、「１誤り」の原因がリテンションであると判断した場合には、メモリ制御部２４は、図４（ｂ）に示す如く、「１誤り」が検出されたページを含むブロック全体に対してリフレッシュ処理を施す。
【００４７】
一方、書込動作中に電源遮断が生じた場合には、その書き込み途中のページにだけ「１誤り」が生じ、ブロック全体にその影響が及ぶ可能性は低い。
【００４８】
そこで、「１誤り」の原因が書込動作中の電源遮断であると判断した場合には、メモリ制御部２４は、図４（ｃ）又は図４（ｄ）に示す如く、「１誤り」が検出されたデータが格納されているページに対してだけリフレッシュ処理を施すようにしたのである。
【００４９】
よって、上記したリフレッシュ処理によれば、書込動作中の電源遮断に起因して破壊されたデータが書き込まれた場合には、そのデータが格納されているページに対してだけ、データを再書込させるリフレッシュ処理を実施すれば良いので、ブロック全体に対してリフレッシュ処理を施す場合に比して処理時間及び消費電力の低減が図られる。
【００５０】
尚、図３に示されるステップＳ４においてリードディスターブの発生時に為される第１ブロックリフレッシュ処理では、図４（ａ）に示す如くページＥＰＧを含むブロックＢＬ１内の全てのデータを訂正後、他のブロックＢＬ２にコピーするようにしているが、図４（ｂ）のようにページＥＰＧを含むブロックＢＬ１に上書きするようにしても良い。
【００５１】
また、図３に示されるステップＳ６においてリテンションの発生時に為される第２ブロックリフレッシュ処理では、図４（ｂ）に示す如くページＥＰＧを含むブロックＢＬ１内の全てのデータを訂正後、このブロックＢＬ１に上書きするようにしているが、図４（ａ）のように他のブロックＢＬ２にコピーするようにしても良い。
【００５２】
また、図３に示すステップＳ７でのページリフレッシュ処理では、図４（ｃ）又は図４（ｄ）に示ように、リフレッシュ対象となるページＥＰＧ１に記憶されているデータに誤り訂正を施したものを他のページＥＰＧ２にコピーするようにしているが、図５に示すように、訂正後のデータをページＥＰＧ１自体に上書きするようにしても良い。このように、ページリフレッシュ処理として、同一ページへの上書きを行うようにすれば、図４（ｃ）又は図４（ｄ）の如き他のページへのコピーを実施する際に必要となるデータ消去処理が不要となる。よって、処理時間の削減と共に、データ消去に伴うフラッシュメモリ２５の寿命低下を抑制させることが可能となる。
【００５３】
図６は、本発明に係る他の半導体メモリ制御装置を含む情報処理システムを示すブロック図である。尚、かかる情報処理システムは、図１に示す情報処理システムと同様に、ホスト情報処理装置１及び記憶装置２からなる。
【００５４】
ホスト情報処理装置１は、記憶装置２に記憶されているデータ、又は外部供給されたデータに基づいて各種情報処理を行いつつ、データを書き込ませるべき書込命令、書込先のアドレス及び書込用データ、或いは、データの読み出しを促す読出命令及び読出元のアドレスを記憶装置２に供給する。
【００５５】
記憶装置２は、ホストＩＦ部２１、メモリアクセスバス２２、ＣＰＵ２３、メモリ制御部３４及びＮＡＮＤ型のフラッシュメモリ２５を有する。
【００５６】
ホストＩＦ部２１は、ホスト情報処理装置１から供給された書込命令、読出命令、アドレス及び書込用データを受け、これらをメモリアクセスバス２２を介してＣＰＵ２３に供給する。また、ホストＩＦ部２１は、メモリ制御部３４から送出された読出データＲＤＤをメモリアクセスバス２２を介して受け、これをホスト情報処理装置１に供給する。ＣＰＵ２３は、メモリアクセスバス２２を介して供給された書込命令、アドレス及び書込用データに応じて、このアドレスに書込用データを書き込ませるべきメモリ書込制御信号を生成し、これをメモリアクセスバス２２を介してメモリ制御部３４に供給する。また、ＣＰＵ２３は、メモリアクセスバス２２を介して供給された読出命令及びアドレスに応じて、そのアドレスからデータの読み出しを行わせるべきメモリ読出制御信号を生成し、これをメモリアクセスバス２２を介してメモリ制御部３４に供給する。
【００５７】
メモリ制御部３４は、誤り訂正符号化部２４０、レジスタ２４４、誤り検出訂正部３４１、誤りカウンタ３４２及び読出回数カウンタ３４３の如きモジュールを含む。
【００５８】
誤り訂正符号化部２４０は、上記したメモリ書込制御信号に応じて、このメモリ書込制御信号にて示される書込用データに対して、例えばＢＣＨ符号の如き誤り訂正符号を付加して誤り訂正符号化した書込データＷＤを生成し、これをレジスタ２４４に記憶する。
【００５９】
誤り検出訂正部３４１は、フラッシュメモリ２５から読み出された読出データＲＤに対して誤り検出処理を施し、誤りが存在する場合には、読出データＲＤのビット系列中に誤りビットを検出する度に誤り検出パルスを発生しこれを誤りカウンタ３４２に供給する。また、誤り検出訂正部３４１は、読出データＲＤ中に誤りが存在する場合には、その誤りを訂正することが可能であるか否かを判定し、誤りを訂正することが可能である場合には、かかる読出データＲＤに対して誤り訂正処理を施し、訂正されたデータを図２に示すように読出データＲＤＤとしてレジスタ２４４に記憶する。尚、フラッシュメモリ２５から読み出された読出データＲＤに誤りが無かった場合には、誤り検出訂正部３４１は、この読出データＲＤを読出データＲＤＤとしてレジスタ２４４に記憶する。すなわち、読出データＲＤの内で有効なデータだけが読出データＲＤＤとしてレジスタ２４４に記憶されるのである。
【００６０】
誤りカウンタ３４２は、上記した誤り検出パルスが供給された数をカウントし、そのカウント値を、誤り総数ＥＡとしてレジスタ２４４に記憶する。
【００６１】
読出回数カウンタ３４３は、読出判定制御ルーチン（後述する）において１つの読出データＲＤを繰り返し読み出す際の現時点での読出回数をカウントしその回数を示す読出回数ＲＮを出力する。
【００６２】
メモリ制御部３４は、これらモジュールの動作を反映させて、以下の如く、メモリ書込制御信号又はメモリ読出制御信号に応じたフラッシュメモリ２５へのアクセスを行う。
【００６３】
すなわち、メモリ制御部３４は、メモリ書込制御信号に応じて、レジスタ２４４に記憶されている書込データＷＤと共にこのメモリ書込制御信号にて指定されたアドレス、及びデータ書込を促す書込指令信号をフラッシュメモリ２５に供給する。これにより、フラッシュメモリ２５は、指定されたアドレスに上記書込データＷＤを書き込む。
【００６４】
また、メモリ制御部３４は、メモリアクセスバス２２を介してメモリ読出制御信号が供給された場合には、図７に示す如き読出判定制御ルーチンを実行する。
【００６５】
図７において、先ず、メモリ制御部３４は、読出回数カウンタ３４３における読出回数ＲＮの初期値として、「０」を読出回数カウンタ３４３に設定する（ステップＳ７１）。次に、メモリ制御部３４は、メモリ読出制御信号にて指定されたアドレスをフラッシュメモリ２５に供給しつつ、データ読出を促す読出指令信号をフラッシュメモリ２５に供給するという読出アクセスを実行する（ステップＳ７２）。これにより、フラッシュメモリ２５は、指定されたアドレスに記憶されている書込データＷＤを読みだし、これを上記した読出データＲＤとしてメモリ制御部３４に供給する。尚、書込データＷＤ及び読出データＲＤ各々のビット長は、誤り訂正符号としての単位ブロック長、或いは、ＮＡＮＤ型フラッシュメモリとしての１ページ分のビット長等である。この際、誤り検出訂正部３４１は、フラッシュメモリ２５から読出データＲＤが読み出される度に、この読出データＲＤに対して誤り検出処理を施し、誤りが有る場合には、引き続き誤り訂正が可能であるか否かを判定する。ここで、誤り訂正可能である場合には、誤り検出訂正部３４１は、かかる読出データＲＤに対して誤り訂正処理を施して訂正されたデータを読出データＲＤＤとしてレジスタ２４４に記憶する。一方、上記読出データＲＤ中に誤りが無かった場合には、誤り検出訂正部３４１は、この読出データＲＤを読出データＲＤＤとしてレジスタ２４４に記憶する。すなわち、フラッシュメモリ２５から読み出された読出データＲＤの内で、誤りが無かったもの、或いは誤りが有るが訂正可能なものだけが有効データである読出データＲＤＤとしてレジスタ２４４に記憶されるのである。
【００６６】
ここで、メモリ制御部３４は、誤り検出訂正部３４１にて誤りが有るか否かを判定し（ステップＳ７３）、誤りが有ると判定された場合には、引き続き、その誤りを訂正することが可能であるか否かを判定する（ステップＳ７４）。ステップＳ７４にて、誤り訂正不可であると判定されると、メモリ制御部３４は、読出データＲＤがデータ書込中の電源遮断によって破壊されたデータであると判断し、この読出データＲＤを無効データとすると共に、読出データＲＤの格納領域（ページ又はブロック）をリフレッシュ対象として管理すべく管理情報データＫＤを更新する（ステップＳ７５）。
【００６７】
尚、かかるステップＳ７４において誤り訂正が可能であると判定された場合、又は上記ステップＳ７３において誤りが無いと判定された場合、メモリ制御部３４は、読出回数カウンタ３４３における現在の読出回数ＲＮに「１」を加算したものを新たな読出回数ＲＮとして読出回数カウンタ３４３に設定する（ステップＳ７６）。次に、メモリ制御部３４は、その読出回数ＲＮが無効判定回数ＩＶＮより大であるか否かを判定する（ステップＳ７７）。ステップＳ７７において、読出回数ＲＮが無効判定回数ＩＶＮ以下であると判定された場合、メモリ制御部３４は、上記ステップＳ７２に戻って前述した如き動作を繰り返し実行する。
【００６８】
一方、ステップＳ７７において、読出回数ＲＮが無効判定回数ＩＶＮより大であると判定された場合、メモリ制御部３４は、レジスタ２４４に記憶されている有効データとしての読出データＲＤＤを、メモリアクセスバス２２を介してホストＩＦ部２１に送出する（ステップＳ７８）。かかるステップＳ７８又はＳ７５の実行後、メモリ制御部３４は、この読出判定制御ルーチンを抜けて上記した動作を終了する。
【００６９】
以上の如く、図７に示す読出判定制御ルーチンの実行により、メモリ制御部３４は、読出指定されたデータをフラッシュメモリ２５から繰り返し読み出しつつ、各読出し毎に読出データ中に誤りが有るか否かの判定（Ｓ７３）、及び誤り訂正可能であるか否かの判定（Ｓ７４）を行う。この際、上記した繰り返し読み出しの回数が無効判定回数ＩＶＮに到るまでの間に、訂正不可の誤りが有ると判定されたら、メモリ制御部３４は、その読出データはデータ書込中の電源遮断によって不安定な状態となっている無効データであると判断する。そして、メモリ制御部３４は、この読出データを無効データとして設定すると共に、かかる読出データが格納されていたページ、又はそのページが属するブロックをリフレッシュ対象として管理すべく管理情報データＫＤを更新する（Ｓ７５）。つまり、かかる制御により、１つのアドレスから、不正なデータが読み出される場合と、正常又は訂正可能なデータが読み出される場合とが混在する不安定な書込状態にある領域（ページ又はブロック）が検出されるのである。一方、繰り返し読み出しの回数が無効判定回数ＩＶＮに到るまで、各読出データ中に誤りが無い、又は誤りが有るものの訂正可能であるとの判定が連続して為された場合、メモリ制御部３４は、その読出データは有効データであると判断し、これをホスト情報処理装置１に送信する。尚、メモリ制御部３４は、管理情報データＫＤによって無効データとして管理された読出データについては、ホスト情報処理装置１側への送信は行わない。
【００７０】
このように、メモリ制御部３４によれば、データ書込中の電源遮断に起因して、１アドレスから不正なデータが読み出される場合と、正常又は訂正可能なデータが読み出される場合とが混在してしまう不安定な書込状態にある領域（ページ）を検出することが出来る。よって、その後、かかる領域から読み出された読出データを無効データとする、或いはその領域に対してリフレッシュ処理を施してデータ回復を行うことにより、正しい読出データを安定的にホスト情報処理装置１に送信することが可能となる。
【００７１】
尚、データ書込中の電源遮断によって不安定な書込状態となってしまったデータの格納領域を検出すべく、図７に示す読出判定制御に、図１に示すメモリ制御部２４で実施される無効データの判定方法を組み合わせるようにしても良い。例えば、図７に示すフローチャートにおいて、ステップＳ７４に代えて図３に示すステップＳ３を採用する。この際、かかるステップＳ３において、１誤り発生数ＥＧ１が、０誤り発生数ＥＧ０に電源遮断判定用シフト値ＳＶを加算した数（ＥＧ０＋ＳＶ）以下であると判定された場合、メモリ制御部３４は、図７に示すステップＳ７６の実行に移る。一方、１誤り発生数ＥＧ１が（ＥＧ０＋ＳＶ）より大であると判定された場合、メモリ制御部３４は、読出データＲＤがデータ書込中の電源遮断によって破壊されたものであると判断し、図７に示すステップＳ７５の実行に移るのである。
【００７２】
また、図１又は図６に示されるメモリ制御部２４又は３４では、外部装置としてのホスト情報処理装置１から供給された読出指令に応じて、前述した如き無効データの判定動作及び図３に示すリフレッシュ処理、或いは図７に示す如き読出判定制御を開始するようにしているが、他のタイミングで上記した処理を開始するようにしても良い。
【００７３】
例えば、電源投入に応じてデータ読み出しを促す読出指令を生成する手段をメモリ制御部２４（又は３４）に設け、この電源投入に応じて生成された読出指令に応じて、メモリ制御部２４（又は３４）が、前述した如き無効データの判定動作、図３に示すリフレッシュ処理、又は図７に示す如き読出判定制御を開始するようにしても良い。
【００７４】
また、ホスト情報処理装置１からのアクセスが為されていない待機期間中にデータ読み出しを促す読出指令を生成する手段をメモリ制御部２４（又は３４）に設け、待機期間中に生成された読出指令に応じて、メモリ制御部２４（又は３４）が、前述した如き無効データの判定動作、図３に示すリフレッシュ処理、又は図７に示す如き読出判定制御を開始するようにしても良い。
【００７５】
また、図１に示される判定部２４５では、フラッシュメモリ２５内の全記憶領域を対象として無効データの判定を行うようにしているが、全ページの内で書込順序が最新であるページにだけ、前述した如き無効データの判定を行うようにしても良い。
【００７６】
また、図１又は図６に示す実施例では、書込対象となるページを含むブロック内の全てのメモリセルの状態を論理レベル１の状態、つまりデータ消去状態に設定してから、このページ内の所望のメモリセルのみを論理レベル０の状態に遷移させるというデータ書込を行うようにしている。しかしながら、メモリセルにおけるデータ消去状態を論理レベル０とし、これを論理レベル１の状態に遷移させるというデータ書込を行うようにしても良い。また、上記実施例では、メモリセル内に蓄積されている電荷量の違いにより論理レベル１及び０の状態を表すようにしているが、電荷以外の物性の違いにより論理レベル１及び０の状態を表すようにしても良い。また、上記実施例では、不揮発性メモリとしてＮＡＮＤ型のフラッシュメモリ２５を採用しているが、これに限定されない。
【００７７】
要するに、本発明は、複数のメモリセルからなるメモリセル群内の全メモリセルを第１の論理レベルの状態に設定してから、当該メモリセル群内の所望のメモリセルのみを第２の論理レベルの状態に遷移させるデータ書込を行い、読出指令に応じて当該メモリセル群からデータの読み出しを行って読出データ片（ＲＤ）を得るようなアクセスを行う半導体メモリに適用するものである。
【００７８】
この際、本発明においては、誤り検出部（２４１）が読出データ片に誤り検出処理を施すことにより誤りビットを検出する。そして、判定部（２４５）が、読出データ片から検出された全ての誤りビットの内で上記した第１の論理レベルを有する誤りビットの数が第２の論理レベルを有する誤りビットの数よりも大なる場合に、この読出データ片が無効データであると判定するのである。
【００７９】
或いは、他の態様として、誤り検出訂正判定部（３４１）は、メモリセル群から読み出された読出データ片（ＲＤ）に誤りが生じているか否かを検出すると共に、誤りが生じている場合には訂正可能であるか否かを判定する。この際、読出データ片に誤りが生じていない、又は誤りが生じているが訂正可能であると判定された場合には、読み出し制御部（Ｓ７１〜Ｓ７７）が、無効判定回数（ＩＶＮ）だけメモリセル群から繰り返し読出データ片を読み出す。この際、誤り検出訂正判定部（３４１）により、繰り返し読み出された読出データ片各々の内の少なくとも１つが訂正不可であると判定された場合には、判定部（Ｓ７４、Ｓ７５）が、上記読出データ片が無効データであると判定するのである。
【符号の説明】
【００８０】
２          記憶装置
２４        メモリ制御部
２５        フラッシュメモリ
２４１      誤り検出訂正部
２４３      １誤りカウンタ
２４５      判定部
【図１】
2014235499.tif 000003
【図２】
2014235499.tif 000004
【図３】
2014235499.tif 000005
【図４】
2014235499.tif 000006
【図５】
2014235499.tif 000007
【図６】
2014235499.tif 000008
【図７】
2014235499.tif 000009