(57)【要約】【課題】  不揮発性半導体メモリにおけるデータの消去回数を大幅に低減するとともに、データエラーなどによるメモリカードの認識不良など低減する。【解決手段】  メモリカードにおけるフラッシュメモリのデータ更新は、メモリアレイに設けられたセカンダリブロックＳＢとプライマリブロックＰＢとの８つに分割されたデータ部Ｄを順次、交互に追記する。たとえば、プライマリブロックＰＢのデータ部Ｄ０（１）を更新する場合、セカンダリブロックＳＢのデータ部Ｄ０（２）に追加する。データ部Ｄ０（２）を更新する場合、プライマリブロックＰＢにおけるデータ部Ｄ０（３）に追加する。そして、セカンダリブロックＳＢのデータ部Ｄ０（８）を更新する際には、プライマリブロックＰＢのデータ部Ｄ０（９）に追加する。それにより、フラッシュメモリの消去回数を大幅に低減することができる。【選択図】  図５
2006039983.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリセルを有し、所定の情報を格納可能な不揮発性半導体メモリと、外部から発行されたコマンドに基づいて前記不揮発性半導体メモリの動作指示を行うコントローラとを備えたメモリカードであって、
前記コントローラは、
前記不揮発性メモリセルの消去単位となるブロックにセクタデータを更新する際に、前記ブロックの空きセクタに順次セクタデータの書き込みを行い、前記ブロックに空きセクタがなくなると前記ブロックのセクタデータを消去した後、任意の前記空きセクタから順次セクタデータを書き込むことを特徴とするメモリカード。
【請求項２】
請求項１記載のメモリカードにおいて、
前記ブロックに格納されている最新のセクタデータの位置を管理する履歴情報テーブルを格納する履歴情報テーブル格納部を備え、
前記コントローラは、
前記履歴情報テーブル格納部に格納された履歴情報テーブルに基づいて最新のセクタデータの位置を管理することを特徴とするメモリカード。
【請求項３】
請求項２記載のメモリカードにおいて、
前記履歴情報テーブル格納部は、揮発性半導体メモリであることを特徴とするメモリカード。
【請求項４】
請求項２または３記載のメモリカードにおいて、
前記コントローラは、
前記メモリカードのリセット処理時に、セクタデータに格納された管理情報に基づいて最新のセクタデータの位置を獲得し、前記履歴情報テーブル格納部に履歴情報テーブルとして格納することを特徴とするメモリカード。
【請求項５】
複数の不揮発性メモリセルを有し、所定の情報を格納可能な不揮発性半導体メモリと、外部から発行されたコマンドに基づいて前記不揮発性半導体メモリの動作指示を行うコントローラとを備えたメモリカードであって、
前記コントローラは、
前記不揮発性メモリセルの消去単位となるブロックにセクタデータを更新する際に、２つの前記ブロックを用い、
第１の書き込みは、一方の前記ブロックの空きセクタにセクタデータを書き込み、第２の書き込みは、他方の前記ブロックの空きセクタにセクタデータを書き込み、第３の書き込みは、一方の前記ブロックの空きセクタにセクタデータを書き込むように前記２つのブロックの空きセクタに交互に追記して順次セクタデータの更新を行うことを特徴とするメモリカード。
【請求項６】
請求項５記載のメモリカードにおいて、
セクタデータが更新される２つの前記ブロックは、別ストリングにそれぞれ設けられているブロックであることを特徴とするメモリカード。
【請求項７】
請求項５または６記載のメモリカードにおいて、
前記ブロックに空きセクタがなくなると前記ブロックのセクタデータを消去した後、セクタデータを書き込むことを特徴とするメモリカード。
【請求項８】
請求項５〜７のいずれか１項に記載のメモリカードにおいて、
前記２つのブロックのいずれかに格納されている最新のセクタデータの位置を管理する履歴情報テーブルを格納する履歴情報テーブル格納部を備え、
前記コントローラは、前記履歴情報テーブル格納部に格納された履歴情報テーブルに基づいて最新のセクタデータの位置を管理することを特徴とするメモリカード。
【請求項９】
請求項８記載のメモリカードにおいて、
前記履歴情報テーブル格納部は、揮発性半導体メモリであることを特徴とするメモリカード。
【請求項１０】
請求項８または９記載のメモリカードにおいて、
前記コントローラは、
前記メモリカードのリセット処理時に、セクタデータに格納された管理情報に基づいて最新のセクタデータの位置を獲得し、前記履歴情報テーブル格納部に履歴情報テーブルとして格納することを特徴とするメモリカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードのセクタデータの更新技術に関し、特に、不揮発性半導体メモリを用いたメモリカードにおける信頼性の向上に適用して有効な技術に関するものである。
【背景技術】
【０００２】
パーソナルコンピュータや多機能端末機などの記憶装置として、たとえば、マルチメディアカードやＣＦ（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ（Ｒ））カードなどのメモリカードが急速に普及している。
【０００３】
近年の高性能化の要求に伴って、メモリカードに搭載される半導体メモリとして、たとえば、電気的に一括消去、書き換えが可能であり、大容量のデータを保持できるフラッシュメモリなどの不揮発性メモリが用いられている。
【０００４】
フラッシュメモリは、データの消去動作を、消去単位（たとえば、ワード線単位、ブロック単位）毎に行っており、データの書き込み／読み出し動作を、読み出し／書き込み単位（たとえば、セクタ単位）毎に行っている。
【０００５】
また、メモリカードにおいては、システムデータなどの重要なデータの化けや消失などのエラーを防止するために、フラッシュメモリにおける複数のメモリ領域にデータを重複格納して管理する技術がある。この場合、データの更新時には、すべての重複データが更新される。
【０００６】
この種のフラッシュメモリにおけるデータ管理技術として、たとえば、不良メモリセルを含まないメモリセル群と置き換える代替処理機能による第１のアドレス変換情報、および不良メモリセルを含まないメモリセル群と置き換える書換え回数平均化処理機能による第２のアドレス変換情報をそれぞれメモリアレイの所定の領域に記憶させ、同一のメモリセル群に関する第１のアドレス変換情報、ならびに第２のアドレス変換情報を時系列的に複数個記憶するものがある（特許文献１参照）。
【特許文献１】特開２００４−１１８４０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところが、上記のようなメモリカードにおけるデータの管理技術では、次のような問題点があることが本発明者により見い出された。
【０００８】
フラッシュメモリは、デバイスの特性から、データ書き込み／消去を繰り返すと、ある一定の割合で書き込み／消去ができなくなるブロックなどが発生することになる。特に、消去単位が、書き込み／読み出し単位よりも大きいサイズで、かつ特定箇所のデータを頻繁に更新する場合には、データの書き込み回数分だけ消去回数も増加し、フラッシュメモリの性能が早期に低下してしまう恐れがある。
【０００９】
また、メモリカードでは、たとえば、アドレス管理などを行う重要なシステムデータを重複して格納しても、更新時にはすべての重複データを更新するので、該システムデータの書き換え中に電源遮断などのトラブルが発生した場合、該システムデータの化けや消失などが発生し、メモリカードを用いて構成したメモリシステムが動作しなくなるという問題がある。
【００１０】
本発明の目的は、データの消去回数を大幅に低減するとともに、データエラーなどによるメモリカードの認識不良など低減することのできる技術を提供することにある。
【００１１】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１３】
本発明は  複数の不揮発性メモリセルを有し、所定の情報を格納可能な不揮発性半導体メモリと、外部から発行されたコマンドに基づいて不揮発性半導体メモリの動作指示を行うコントローラとを備えたメモリカードであって、該コントローラは、不揮発性メモリセルの消去単位となるブロックにセクタデータを更新する際に、ブロックの空きセクタに順次セクタデータの書き込みを行い、ブロックに空きセクタがなくなると該ブロックのセクタデータを消去した後、任意の空きセクタから順次セクタデータを書き込むものである。
【００１４】
また、本発明のメモリカードは、前記ブロックに格納されている最新のセクタデータの位置を管理する履歴情報テーブルを格納する履歴情報テーブル格納部を備え、コントローラは、履歴情報テーブル格納部に格納された履歴情報テーブルに基づいて最新のセクタデータの位置を管理するものである。
【００１５】
さらに、本発明のメモリカードは、前記履歴情報テーブル格納部は、揮発性半導体メモリよりなるものである。
【００１６】
また、本発明のメモリカードは、前記コントローラは、メモリカードのリセット処理時に、セクタデータに格納された管理情報に基づいて最新のセクタデータの位置を獲得し、履歴情報テーブル格納部に履歴情報テーブルとして格納するものである。
【００１７】
また、本願のその他の発明の概要を簡単に示す。
【００１８】
本発明は、複数の不揮発性メモリセルを有し、所定の情報を格納可能な不揮発性半導体メモリと、外部から発行されたコマンドに基づいて不揮発性半導体メモリの動作指示を行うコントローラとを備えたメモリカードであって、該コントローラは、不揮発性メモリセルの消去単位となるブロックにセクタデータを更新する際に、２つのブロックを用い、第１の書き込みは、一方のブロックの空きセクタにセクタデータを書き込み、第２の書き込みは、他方のブロックの空きセクタにセクタデータを書き込み、第３の書き込みは、一方のブロックの空きセクタにセクタデータを書き込むように、それら２つのブロックの空きセクタに交互に追記して順次セクタデータの更新を行うものである。
【００１９】
また、本発明のメモリカードは、セクタデータが更新される２つのブロックは、書き込みや消去、読み出しの際にそれらの対象となるメモリセルとワード線やビット線、ソース線のいずれとも分離されることが可能な別ストリングにそれぞれ設けられているブロックよりなるものである。
【００２０】
さらに、本発明のメモリカードは、前記ブロックに空きセクタがなくなるとブロックのセクタデータを消去した後、セクタデータを書き込むものである。
【００２１】
また、本発明のメモリカードは、前記２つのブロックのいずれかに格納されている最新のセクタデータの位置を管理する履歴情報テーブルを格納する履歴情報テーブル格納部を備え、コントローラは、履歴情報テーブル格納部に格納された履歴情報テーブルに基づいて最新のセクタデータの位置を管理するものである。
【００２２】
さらに、本発明のメモリカードは、前記履歴情報テーブル格納部は、揮発性半導体メモリよりなるものである。
【００２３】
また、本発明のメモリカードは、前記コントローラは、メモリカードのリセット処理時に、セクタデータに格納された管理情報に基づいて最新のセクタデータの位置を獲得し、履歴情報テーブル格納部に履歴情報テーブルとして格納するものである。
【発明の効果】
【００２４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２５】
（１）消去回数を大幅に低減することができるので、不揮発性半導体メモリの性能低下を抑えることができる。
【００２６】
（２）また、データにエラーが発生しても更新前のデータをバックアップデータとして用いることができるの、メモリカードの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２８】
図１は、本発明の一実施の形態による記憶システムのブロック図、図２は、図１の記憶システムを構成するメモリカードに設けられたコントローラのブロック図、図３は、図１の記憶システムを構成するメモリカードに設けられたフラッシュメモリにおけるメモリアレイの構成例を示す説明図、図４は、図３のメモリセルアレイにおけるメモリマップの構成例を示す説明図、図５は、図４のメモリアレイに格納されるテーブルデータの更新手順を示す説明図、図６は、図３のメモリアレイにおけるブロックの構成例を示す説明図、図７は、図６のブロックに設けられたデータ部の構成例を示す説明図、図８は、図６のブロックに設けられた管理部の構成例を示す説明図、図９は、図６のブロックにおける無効／有効セクタと履歴情報との関係を示す説明図、図１０は、図２のコントローラに設けられた履歴格納部に格納される履歴情報テーブルの構成例を示す説明図、図１１は、図１のメモリカードにおけるリセット処理を示すフローチャート、図１２は、図１のメモリカードにおける書き込み処理を示すフローチャート、図１３は、図１のメモリカードにおける書き込みエラー処理を示すフローチャートである。
【００２９】
本実施の形態において、記憶システムは、図１に示すように、コントローラ４とフラッシュメモリ３に例示される不揮発性半導体メモリとからメモリカード１が構成され、メモリカード１の外部にホスト機器２が接続可能なように構成されている。メモリカード１は、デジタルビデオカメラ、携帯電話、携帯音楽プレーヤやパーソナルコンピュータなどのホスト機器２の外部記憶メディアとして用いられる。
【００３０】
フラッシュメモリ３は、電気的にデータの書き換え、消去が可能な不揮発性半導体メモリからなる。ここでは、フラッシュメモリ３が１個の半導体メモリよりなる構成としたが、該半導体メモリは１つ以上であればよい。
【００３１】
コントローラ４は、図２に示すように、ホスト側インタフェース５、ＭＰＵ（ＭｉｃｒｏＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６、バッファインタフェース７、データバッファ８、記憶部側インタフェース９、履歴検出部１０、履歴生成部１１、および履歴格納部１２などから構成されている。
【００３２】
コントローラ４は、ホスト機器２と接続されており、フラッシュメモリ３の制御を司り、該フラッシュメモリ３に格納されたプログラムやデータなどを読み出してホスト機器２へ出力し、またはホスト機器２から入力されたプログラムやデータの書き込み動作指示を行う。
【００３３】
ホスト側インタフェース５は、ホスト機器２とＭＰＵ６とのインタフェースである。ＭＰＵ６は、コントローラ４におけるすべての制御を司る。バッファインタフェース７は、ＭＰＵ６とデータバッファ８とのインタフェースである。
【００３４】
また、データバッファ８は、たとえば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリからなり、ＭＰＵ６に設けられたＣＰＵのワークエリアとしても用いられる。記憶部側インタフェース９は、ＭＰＵ６とフラッシュメモリ３とのインタフェースであり、エラー検出／訂正回路を備える。
【００３５】
履歴検出部１０は、履歴情報ＲＪ（図８）に基づいて、多重化されたデータから、最新のデータが格納されている場所を検出する。履歴生成部１１は、最新のデータの格納場所を示す履歴情報ＲＪを生成し、該履歴情報ＲＪをフラッシュメモリ３に格納する。履歴格納部１２は、たとえば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリからなり、フラッシュメモリ３に格納された履歴情報ＲＪを読み出し、履歴情報テーブルＲＴ（図１０）を作成して管理する。
【００３６】
なお、これら履歴検出部１０、履歴生成部１１、ならびに履歴格納部１２は、回路として持たず、たとえば、ＭＰＵ６によるファームウェア処理によって代用する構成としてもよい。
【００３７】
図３は、フラッシュメモリ３におけるメモリアレイＭＡの構成例を示す説明図である。
【００３８】
この場合、メモリアレイＭＡは、グローバルビット線ＧＢＬに複数のサブビット線ＳＢＬが接続され、それらサブビット線ＳＢＬに不揮発性メモリセルＳがそれぞれ接続された構成からなる。
【００３９】
また、ワード線ＷＬに接続された複数の不揮発性メモリセルＳを一括消去することができ、これをブロック（消去単位）といい、サブビット線ＳＢＬに連なる複数のブロックをストリングという。さらに、以下、データの書き込み単位をページ、データ格納単位をセクタといい、１つのブロックに対して、１つ、もしくは複数のセクタデータ（テーブルデータ）を格納する。
【００４０】
データを読み出す場合、選択したワード線ＷＬに電圧を加え、該ワード線ＷＬに接続された不揮発性メモリセルＳからサブビット線ＳＢＬを介し、データを読み出す。データを書き込む場合、ワード線ＷＬとサブビット線ＳＢＬとを選択して電圧を加え、不揮発性メモリセルＳへデータを書き込む。
【００４１】
図４は、フラッシュメモリ３におけるメモリアレイＭＡのマップ構成を示す説明図である。
【００４２】
前述したように、ストリングは複数のブロックからなり、ここではテーブルデータ（セクタデータ）のブロック書き換えは２つのストリングＳＴ１，ＳＴ２にあるブロックを使用するものとする。
【００４３】
この図４では、テーブル番号ＴＢＬＮｏ．０〜Ｎｏ．１９９を格納する場合を示している。１つのテーブルデータに対し２つのブロックを割当て、一方をプライマリブロックＰＢ、他方をセカンダリブロックＳＢとする。
【００４４】
データの書き換えにおいて、ブロックの消去を伴う場合、別の空きブロックに対して消去／書き込みを行う。また、メモリアレイＭＡの不良登録ブロックＦＴは、テーブルデータの更新で使用されるストリング内の不良ブロックアドレスが登録されたブロック領域である。
【００４５】
図５は、メモリアレイＭＡにおけるブロック内のデータ更新手順を示す説明図である。
【００４６】
プライマリブロックＰＢ、およびセカンダリブロックＳＢは、テーブルデータを格納するデータ部Ｄと、そのブロックの管理情報を格納する管理部Ｋとによりそれぞれ構成されている。
【００４７】
ここでは、プライマリブロックＰＢ、ならびにセカンダリブロックＳＢにおけるページ数がそれぞれ２の場合の例を示している。プライマリブロックＰＢ、およびセカンダリブロックＳＢにおいて、各ブロックのデータ部Ｄをそれぞれ８分割（セクタＣＡ００〜ＣＡ０７）し、その１つにテーブルデータを格納する。また、管理部Ｋは、各ページに１つ設けられるが、この管理部Ｋは、ブロック当たりに１つ設けるようにしてもよい。
【００４８】
テーブルデータの更新は、セカンダリブロックＳＢ、およびプライマリブロックＰＢの８つに分割されたデータ部Ｄを順次、交互に追記し、プライマリブロックＰＢとセカンダリブロックＳＢとを合わせて、全部で１６回の追記が可能となる。
【００４９】
たとえば、図中、プライマリブロックＰＢにおけるデータ部Ｄ０（１）が更新される場合には、セカンダリブロックＳＢにおけるデータ部Ｄ０（２）に追加される。その後、データ部Ｄ０（２）が更新される場合には、プライマリブロックＰＢにおけるデータ部Ｄ０（３）に追加されることになる。
【００５０】
そして、セカンダリブロックＳＢにおけるデータ部Ｄ０（８）を更新する際には、プライマリブロックＰＢにおけるデータ部Ｄ０（９）に追加されることになる。
【００５１】
図６は、プライマリブロックＰＢ、およびセカンダリブロックＳＢの構成例を示す説明図である。
【００５２】
プライマリブロックＰＢ、およびセカンダリブロックＳＢは、データ部Ｄ、および管理部Ｋからそれぞれ構成されている。データ部Ｄは、セクタＣＡ００〜ＣＡ０７からなり、管理部Ｋは、管理部Ｋ１，Ｋ２から構成されている。
【００５３】
各セクタＣＡ００（〜ＣＡ０７）は、図７に示すように、テーブルデータと該テーブルデータを保護するＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）などの冗長データからなる。
【００５４】
また、管理部Ｋ１は、図８に示すように、良ブロックコードＢＣ、管理情報ＫＪ、テーブル番号ＴＢＬＮｏ．、エラー検出/訂正用冗長コードＣＤ、および履歴情報ＲＪから構成されており、管理部Ｋ２は、良ブロックコードＢＣ、管理情報ＫＪ、エラー検出/訂正用冗長コードＣＤ、および履歴情報ＲＪから構成されている。
【００５５】
良ブロックコードＢＣは、そのページ、もしくはブロックが使用可能であるかを識別するコードである。管理情報ＫＪは、そのページ、あるいはブロックの属性や情報を示すコードである。
【００５６】
テーブル番号ＴＢＬＮｏ．は、テーブル番号の情報を示すコードである。エラー検出/訂正用冗長コードＣＤは、たとえば、ＥＣＣなどであり、良ブロックコードＢＣ、管理情報ＫＪ、およびテーブル番号ＴＢＬＮｏ．のデータを保護する。
【００５７】
管理部Ｋの履歴情報ＲＪは、無効フラグＭＦ、ならびに有効セクタ（ＣＡ）フラグＹＦからなり、管理部Ｋ２の履歴情報ＲＪは、有効セクタフラグＹＦからなる。無効フラグＭＦは、ブロックのデータが無効であることを示すコードであり、プライマリブロックＰＢ、およびセカンダリブロックＳＢにそれぞれ設けられた８つのデータ部Ｄがすべて追記された際にたてられるフラグである。有効セクタフラグＹＦは、ブロック内で最新データが格納されている場所を示すコードである。
【００５８】
ここで、図８において、無効フラグＭＦと有効セクタフラグＹＦとは、ＥＣＣなどのエラー検出/訂正用冗長コードＣＤによるデータ保護がされていないが、これら無効フラグＭＦ、および有効セクタフラグＹＦにデータ保護を付加するようにしてもよい。
【００５９】
図９は、ブロックにおける無効／有効セクタと履歴情報ＲＪとの関係を示している。
【００６０】
管理部Ｋ１の履歴情報ＲＪは、たとえば、３バイトで構成されており、管理部Ｋ２の履歴情報ＲＪは、たとえば、２バイトで構成されている。無効フラグＭＦが’ｘ０’となる場合には、該当するセクタが有効であることを示し、無効フラグＭＦが’ｘＦ’となる場合には、そのブロックが無効であることを示す。
【００６１】
また、有効セクタフラグＹＦによって該当するセクタに最新データが入っているか否かをそれぞれ示す。
【００６２】
たとえば、セクタＣＡ００が有効の場合、無効フラグＭＦが’ｘ０’となる。そのブロックが無効の場合には、無効フラグＭＦが’ｘＦ’となる。また、セクタＣＡ００に最新のデータが格納されている場合には、管理部Ｋ１の有効セクタフラグＹＦは、’Ｆ０００’となり、管理部Ｋ２の有効セクタフラグＹＦは、’００００’となる。
【００６３】
ここで、’ｘ’は、’Ｄｏｎ’ｔ  Ｃａｒｅ’である。さらに、履歴情報ＲＪは、１ビット化けを考慮し、’Ｅ’，’Ｄ’，’Ｂ’，’７’は、’Ｆ’、そして’Ｆ’，’１’，’２’，’４’，’８’は、’０’と見なすものとする。
【００６４】
図１０は、フラッシュメモリ３に格納された履歴情報ＲＪから作成され、履歴格納部１２によって管理される履歴情報テーブルＲＴの構成例を示す説明図である。
【００６５】
履歴情報テーブルＲＴは、オフセットブロックアドレスＢＡ、プライマリ／セカンダリ選択部ＰＳＳ、エラーフラグＥＦ、初期化フラグＲＦ、およびブロック内有効セクタ位置ＹＣＰより構成されている。
【００６６】
オフセットブロックアドレスＢＡは、テーブルデータを格納しているフラッシュメモリ３上のオフセットアドレスである。このオフセットブロックアドレスＢＡは、プライマリアドレスとセカンダリアドレスとの２つを格納する。
【００６７】
プライマリ／セカンダリ選択部ＰＳＳは、プライマリブロックＰＢとセカンダリブロックＳＢとのいずれに最新データが格納されているかを示す。エラーフラグＥＦは、通常は’０’であり、メモリカード１のリセット処理時に同一のテーブル番号ＴＢＬＮｏ．の有効なブロック（無効フラグＭＦが’０’）を検出した際に、’１’にする。
【００６８】
初期化フラグＲＦは、履歴情報テーブルＲＴの初期化を検出した際に’１’にする。ブロック内有効セクタ位置ＹＣＰは、そのブロック内における最新データの位置を示す。
【００６９】
次に、本実施の形態によるメモリカード１のリセット処理について、図１１のフローチャートを用いて説明する。
【００７０】
まず、メモリカード１がパワーオンされると、リセット処理が行われる（ステップＳ１０１）。このリセット処理は、発振子の安定時間やリセットＩＣのネゲート待ち、テーブルデータ以外のシステムデータのリードなどである。また、このリセット処理の一部を分割し、リセット処理シーケンスの最後に行うようにしてもよい。
【００７１】
続いて、不良登録ブロックＦＴに格納されている不良登録テーブルをリードし、ストリング内の不良ブロックアドレスを獲得する（ステップＳ１０２）。
【００７２】
その後、ステップＳ１０２の処理おいて獲得した不良ブロックアドレスを除くプライマリブロックＰＢ、およびセカンダリブロックＳＢにおける管理部Ｋをリードし、良ブロックであることをチェックする（ステップＳ１０３）。
【００７３】
無効フラグＭＦをチェックし（ステップＳ１０４）、有効なブロックに関して履歴情報ＲＪを作成する処理を行う。また、無効なブロックはスキップする。
【００７４】
続いて、テーブル番号ＴＢＬＮｏ．を確認し（ステップＳ１０５）、有効セクタフラグＹＦ、およびフラッシュメモリ３のオフセットブロックアドレスＢＡより、履歴格納部１２に履歴情報テーブルＲＴを作成する（ステップＳ１０６）。
【００７５】
また、ステップＳ１０５の処理において、同一のテーブル番号ＴＢＬＮｏ．の有効ブロックを検出した場合には、エラーフラグＥＦを’１’にする（ステップＳ１０７）。
【００７６】
ステップＳ１０７の処理後、またはステップＳ１０４の処理で無効フラグＭＦが無効のとなっている場合、すべての管理部Ｋのリードが終了したかを確認し（ステップＳ１０８）、すべての管理部Ｋのリードが終了すると、エラーフラグＥＦが’１’のブロックにおける管理部Ｋを再リードし（ステップＳ１０９，Ｓ１１０）、最新のテーブルデータの履歴情報を履歴情報テーブルＲＴに残す（ステップＳ１１１）。
【００７７】
たとえば、２つの有効なテーブル番号ＴＢＬＮｏ．０のプライマリブロックＰＢが存在し、有効セクタフラグＹＦがセクタＣＡ００のブロックとセクタＣＡ０７のブロックであり、ペアのブロックであるテーブル番号ＴＢＬＮｏ．１００のセカンダリブロックＳＢでセクタＣＡ０７が有効の場合、セクタＣＡ０７のプライマリブロックＰＢを有効なデータとして選択する。
【００７８】
つまり、更新順序の整合性の取れる有効セクタフラグＹＦを持つブロックを最新のブロックとして選択する。
【００７９】
ステップＳ１１１の処理の終了後、またはステップＳ１０９の処理においてエラーフラグＥＦ（’１’）がない場合、テーブルデータ（セクタデータ）をリードし（ステップＳ１１２）、ＥＣＣなどのエラー検出/訂正用冗長コードＣＤによりデータのチェックを行う（ステップＳ１１３）。
【００８０】
そして、すべてのテーブルデータをリードすると（ステップＳ１１４）、リセット処理が終了となる。また、ステップＳ１１３の処理において、ＮＧの場合には、テーブルデータのリード回数が１回以下か否かを確認する（ステップＳ１１５）。
【００８１】
このステップＳ１１５の処理において、テーブルデータのリード回数が１回以下の場合には、１つ前に更新したテーブルデータがあるか否かを検索する（ステップＳ１１６）。ステップＳ１１６の処理において、１つ前に更新したテーブルデータがある場合には、そのテーブルデータをリードし、同様にＥＣＣなどのエラー検出/訂正用冗長コードＣＤによりデータのチェックを行い、履歴格納部１２の履歴情報テーブルＲＴを更新する（ステップＳ１１７）。
【００８２】
また、ステップＳ１１５の処理において、テーブルデータのリード回数が２回以上の場合には（たとえば、プライマリブロックＰＢがＮＧの場合には、セカンダリブロックＳＢを参照し、それ以上は遡らない）、エラー終了する（ステップＳ１１８）。このように、２つ前以前に更新されたテーブルデータを使用しないことにより、データの信頼性を高めることができる。
【００８３】
さらに、ステップＳ１１６の処理において、１つ前に更新したテーブルデータがない場合には、エラー終了する（ステップＳ１１８）。
【００８４】
次に、メモリカード１における書き込み処理について、図１２のフローチャートを用いて説明する。
【００８５】
まず、メモリカード１が、ホスト機器２からのライトコマンドを受け付けると、履歴格納部１２における履歴情報テーブルＲＴのフラグ情報を確認する（ステップＳ２０１）。すべてのテーブルブロックにおいてエラーフラグＥＦが’１’であるかチェックをする（ステップＳ２０２）。
【００８６】
エラーフラグＥＦが’１’のブロックがある場合、古いブロックを無効にするため、古いブロックに対して無効化フラグ’ＦＦ’を書き込むと同時にエラーフラグＥＦ＝０をクリアする（ステップＳ２０３）。
【００８７】
続いて、ステップＳ２０２、またはステップＳ２０３の処理後、セクタＣＡ０７をチェックし（ステップＳ２０４）、セクタＣＡ０７が有効の場合には、新しいブロック（旧データとは異なる別の空きブロック）に対して履歴情報ＲＪを生成し（ステップＳ２０５）、新しいテーブルデータと管理情報Ｋ（履歴情報ＲＪ含）とを新たなブロックに書き込む（ステップＳ２０６）。その後、古いブロックの無効フラグＭＦに書き込みを行い無効化する（ステップＳ２０７）。
【００８８】
ステップＳ２０４の処理において、セクタＣＡ０７が有効でない場合、履歴情報ＲＪを生成し（ステップＳ２０８）、新しいテーブルデータと有効セクタフラグＹＦを同一ブロックに追記書き込みする（ステップＳ２０９）。
【００８９】
そして、ステップ２０７、またはステップＳ２０９の処理が終了すると、履歴格納部１２の履歴情報テーブルＲＴを更新し（ステップＳ２１０）、書き込み処理が終了となる。
【００９０】
次に、メモリカード１における書き込みエラー処理におけるフローチャートを図１３を用いて説明する。
【００９１】
まず、書き込み処理中にエラーが発生すると、別の新しいブロックに再書き込みを行う（ステップＳ３０１）。その後、エラーが発生したブロックを不良化するために、ブロックの管理部Ｋにおける良ブロックコードＢＣに不良コード（たとえば、’ＦＦ’）を書き込み（ステップＳ３０２）不良登録ブロックＦＴに不良化したブロックのアドレスを登録する（ステップＳ３０３）。
【００９２】
それにより、本実施の形態によれば、フラッシュメモリ３の消去回数を大幅に低減することができるので、該フラッシュメモリ３の性能低下を抑制することができる。
【００９３】
また、データにエラーが発生した際に、１つ前に更新したテーブルデータをバックアップデータとして用いることにより、メモリカード１の信頼性を向上させることができる。
【００９４】
さらに、本実施の形態では、リセット処理において、２つ前以前に更新されたテーブルデータは使用せずにデータの信頼性を高めていたが（図１１、ステップＳ１１６）、２つ前以前に更新されたテーブルデータを使用する処理を行うようにしてもよい。
【００９５】
図１４は、２つ前以前に更新されたテーブルデータを使用する際の履歴格納部１２に格納される履歴情報テーブルＲＴの一例を示す説明図である。
【００９６】
履歴情報テーブルＲＴは、図示するように、オフセットブロックアドレスＢＡ、プライマリ／セカンダリ選択部ＰＳＳ、エラーフラグＥＦ、初期化フラグＲＦ、およびブロック内有効セクタ位置ＹＣＰからなる図１０に示す構成に、リードエラー（Ｒ＿ＥＲＲ）フラグＲＥＦが新たに追加された構成となっている。
【００９７】
このリードエラーフラグＲＥＦは、テーブルデータにＥＣＣなどの冗長データによる訂正不可のエラーが発生し、１つ以上前に更新されたテーブルデータを参照していることを示すフラグである。
【００９８】
この場合のメモリカード１におけるリセット処理について、図１５のフローチャートを用いて説明する。
【００９９】
まず、図１１に示すステップＳ１０１〜Ｓ１１１の処理が行われる。その後、図１５に示すように、テーブルデータ（セクタデータ）をリードし（ステップＳ４０１）、ＥＣＣなどのエラー検出/訂正用冗長コードＣＤによりデータのチェックを行う（ステップＳ４０２）。そして、すべてのテーブルデータをリードすると（ステップＳ４０３）、リセット処理が終了となる。
【０１００】
また、ステップＳ４０２の処理において、ＮＧの場合には、テーブルデータのリード回数が１回以下か否かを確認する（ステップＳ４０４）。このステップＳ４０４の処理において、テーブルデータのリード回数が１回以下の場合には、１つ前に更新したテーブルデータがあるか否かを検索する（ステップＳ４０５）。
【０１０１】
ステップＳ４０５の処理において、１つ前に更新したテーブルデータがある場合には、そのテーブルデータをリードし、同様にＥＣＣなどのエラー検出/訂正用冗長コードＣＤによりデータのチェックを行い、履歴格納部１２の履歴情報テーブルＲＴを更新した後（ステップＳ４０６）、ステップ４０３の処理を行う。
【０１０２】
また、ステップＳ４０４の処理において、テーブルデータのリード回数が２回以上の場合には、ＭＰＵ６にリード回数が２回以上のテーブルデータであることを通知するようにリードエラーフラグＲＥＦを’１’にし（ステップＳ４０７）、ステップＳ４０５の処理を行う。
【０１０３】
さらに、ステップＳ４０５の処理において、１つ前に更新したテーブルデータがない場合には、エラー終了する（ステップＳ４０８）。
【０１０４】
また、図１５のリセット処理後の書き込み処理について、図１６を用いて説明する。
【０１０５】
この図１６では、図１２に示すステップＳ２０１，Ｓ２０２，Ｓ２０４〜Ｓ２１０の処理は同じであり、異なる処理（ステップＳ２０３の処理）の部分のみを示している。
【０１０６】
まず、メモリカード１が、ホスト機器２からのライトコマンドを受け付け、履歴格納部１２における履歴情報テーブルＲＴのフラグ情報を確認し（ステップＳ２０１）、すべてのテーブルブロックにおいてエラーフラグＥＦが’１’であるかチェックをする（ステップＳ２０２）。
【０１０７】
エラーフラグＥＦが’１’のブロックがある場合、図１６に示すように、リードエラーフラグＥＦＲが’１’となっているか否かを確認する（ステップＳ５０１）。リードエラーフラグＥＦＲが’１’の場合には、履歴情報ＲＪを生成し（ステップＳ５０２）、新しいテーブルデータと管理情報Ｋ（履歴情報ＲＪ含）を新たなブロックに書き込む（ステップＳ５０３）。
【０１０８】
また、ステップＳ５０１の処理でエラーフラグＥＦが’１’のブロックがない場合、またはステップＳ５０３の処理後、古いブロックの無効フラグＭＦに書き込みを行い、古いテーブルデータの無効化を行う（ステップＳ５０４）。その後は、図１２に示すステップＳ２０４〜Ｓ２１０の処理を行う。
【０１０９】
図１４、および図１５に示す処理をユーザデータに適用した場合、該ユーザデータの書き換え回数の多い領域に使用することによって消去回数が低減でき、メモリカード１の信頼性を向上させることができる。
【０１１０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１１１】
たとえば、前記実施の形態においては、１つのフラッシュメモリの各ブロックに履歴情報を含む管理部とデータ部とを格納した構成としたが、図１７に示すように、複数のフラッシュメモリ３1 〜３n を設け、（任意の）フラッシュメモリ３1 に履歴情報を格納し、その他のフラッシュメモリ３2 〜３n には、該履歴情報と関連付けされたデータ部と管理部とを格納する構成とし、フラッシュメモリ３2 〜３n における各ブロックを管理するようにしてもよい。
【０１１２】
それにより、複数のフラッシュメモリ３1 〜３n のデータ管理を容易にすることができる。
【０１１３】
また、図１７に示したデータ管理技術は、複数のメモリシステムにおけるデータを管理する場合にも有効である。
【０１１４】
この場合、メモリカードなどを備えたメモリシステムＭＳ１〜ＭＳ３は、図１８に示すように、有線ネットワーク、あるいは無線ネットワークなどの回線Ｌにそれぞれ接続される構成からなる。
【０１１５】
そして、（任意の）メモリシステムＭＳ１には履歴情報のみを格納し、その他のメモリシステムＭＳ２，ＭＳ３には、該履歴情報と関連付けされたデータ部と管理部とを格納する。
【０１１６】
これらメモリシステムＭＳ１〜ＭＳ３は、同様に回線Ｌに接続されたホスト機器２から制御を行う。これにより、複数のメモリシステムＭＳ１〜ＭＳ３を一括で管理することができる。
【産業上の利用可能性】
【０１１７】
本発明のメモリカードは、不揮発性半導体メモリにおける性能低下の抑制、および該メモリカードの信頼性の向上技術に適している。
【図面の簡単な説明】
【０１１８】
【図１】本発明の一実施の形態による記憶システムのブロック図である。
【図２】図１の記憶システムを構成するメモリカードに設けられたコントローラのブロック図である。
【図３】図１の記憶システムを構成するメモリカードに設けられたフラッシュメモリにおけるメモリアレイの構成例を示す説明図である。
【図４】図３のメモリセルアレイにおけるメモリマップの構成例を示す説明図である。
【図５】図４のメモリアレイに格納されるテーブルデータの更新手順を示す説明図である。
【図６】図３のメモリアレイにおけるブロックの構成例を示す説明図である。
【図７】図６のブロックに設けられたデータ部の構成例を示す説明図である。
【図８】図６のブロックに設けられた管理部の構成例を示す説明図である。
【図９】図６のブロックにおける無効／有効セクタと履歴情報との関係を示す説明図である。
【図１０】図２のコントローラに設けられた履歴格納部に格納される履歴情報テーブルの構成例を示す説明図である。
【図１１】図１のメモリカードにおけるリセット処理を示すフローチャートである。
【図１２】図１のメモリカードにおける書き込み処理を示すフローチャートである。
【図１３】図１のメモリカードにおける書き込みエラー処理を示すフローチャートである。
【図１４】本発明の他の実施の形態によるコントローラに設けられた履歴格納部に格納される履歴情報テーブルの構成例を示す説明図である。
【図１５】本発明の他の実施の形態によるメモリカードのリセット処理を示すフローチャートである。
【図１６】本発明の他の実施の形態によるメモリカードの書き込み処理を示すフローチャートである。
【図１７】本発明の他の実施の形態によるメモリカードに設けられたフラッシュメモリの構成例を示す説明図である。
【図１８】本発明の他の実施の形態によるメモリシステムの構成例を示す説明図である。
【符号の説明】
【０１１９】
１  メモリカード
２  ホスト機器
３  フラッシュメモリ（不揮発性半導体メモリ）
３1 〜３n  フラッシュメモリ（不揮発性半導体メモリ）
４  コントローラ
５  ホスト側インタフェース
６  ＭＰＵ
７  バッファインタフェース
８  データバッファ
９  外部記憶インタフェース
１０  履歴検出部
１１  履歴生成部
１２  履歴格納部
ＭＡ  メモリアレイ
ＧＢＬ  グローバルビット線
ＳＢＬ  サブビット線
Ｓ  不揮発性メモリセル
ＷＬ  ワード線
ＳＴ１，ＳＴ２  ストリング
ＰＢ  プライマリブロック
ＳＢ  セカンダリブロック
ＦＴ  不良登録ブロック
Ｄ  データ部
Ｋ，Ｋ１，Ｋ２  管理部
ＣＡ００〜ＣＡ０７  セクタ
ＢＣ  良ブロックコード
ＫＪ  管理情報
ＴＢＬＮｏ．  テーブル番号
ＣＤ  エラー検出/訂正用冗長コード
ＲＪ  履歴情報
ＲＴ  履歴情報テーブル
ＭＦ  無効フラグ
ＹＦ  有効セクタフラグ
ＢＡ  オフセットブロックアドレス
ＰＳＳ  プライマリ／セカンダリ選択部
ＥＦ  エラーフラグ
ＲＦ  初期化フラグ
ＹＣＰ  ブロック内有効セクタ位置
ＲＥＦ  リードエラーフラグ
ＭＳ１〜ＭＳ３  メモリシステム
Ｌ  回線
ＨＣ  ホストコンピュータ
【図１】
2006039983.tif 000003
【図２】
2006039983.tif 000004
【図３】
2006039983.tif 000005
【図４】
2006039983.tif 000006
【図５】
2006039983.tif 000007
【図６】
2006039983.tif 000008
【図７】
2006039983.tif 000009
【図８】
2006039983.tif 000010
【図９】
2006039983.tif 000011
【図１０】
2006039983.tif 000012
【図１１】
2006039983.tif 000013
【図１２】
2006039983.tif 000014
【図１３】
2006039983.tif 000015
【図１４】
2006039983.tif 000016
【図１５】
2006039983.tif 000017
【図１６】
2006039983.tif 000018
【図１７】
2006039983.tif 000019
【図１８】
2006039983.tif 000020