(57)【要約】【課題】多値ＮＡＮＤ型フラッシュメモリにおいて、新たなデータを書き込む際、既に書き込まれたデータが破壊されることがあった。【解決手段】第１の論理ブロックに複数の第２の論理ブロックが設定され、前記第２の論理ブロックにデータを書き込むとき、現在の第２の論理ブロックのアドレスの次のアドレスを期待値として書き込み待ちとし、書き込み済みの前記第２の論理ブロックのデータを保護する場合、前記次のアドレスをスキップし、別のアドレスを期待値とする。【選択図】図１
2006195565.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを有し、前記ブロックを消去単位としてデータを消去可能な半導体記憶装置の制御方法であって、
書き込み済みのデータを保護する場合、前記書き込み済みのデータが格納されたアドレスと同一のメモリセルを共有するアドレスをスキップして別のアドレスを期待値とし、
データ書き込み時に、その書き込み対象のアドレスが前記期待値かどうかを判別し、
前記書き込み対象のアドレスが前記期待値と異なる場合、前記書き込み済みのデータが格納されたブロックとは別のブロックに、書き込み対象のデータを格納する
ことを特徴とする半導体記憶装置の制御方法。
【請求項２】
前記メモリセルは、１つのメモリセルに少なくとも２ページの同一カラムのデータを記憶することを特徴とする請求項１記載の半導体記憶装置の制御方法。
【請求項３】
電源が投入されたとき、電源が遮断される直前に書き込まれた論理ブロックの論理ブロックアドレスを検出し、
前記検出された第１の論理ブロックアドレスの次の第２の論理ブロックアドレスをスキップし、第３の論理ブロックアドレスを期待値として書き込み待ち状態とすることを特徴とする半導体記憶装置の制御方法。
【請求項４】
ＦＡＴ（File Allocation Table）のデータの書き込みを検出し、
前記ＦＡＴデータの書き込みが検出されたとき、前記ＦＡＴデータの書き込み直前に第１の記憶領域に書き込まれた論理ブロックの第１の論理ブロックアドレスの次の第２の論理ブロックアドレスをスキップし、第３の論理ブロックアドレスを期待値として書き込み待ち状態とすることを特徴とする半導体記憶装置の制御方法。
【請求項５】
請求項１，２，３，４のいずれかに記載の制御方法を実行する制御部を有することを特徴とするメモリカード。
【請求項６】
請求項１，２，３，４のいずれかに記載の制御方法を実行する制御部を有することを特徴とするホスト機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置を搭載したメモリカードに係り、特に、その制御方法に関する。
【背景技術】
【０００２】
例えばＥＥＰＲＯＭを用いたＮＡＮＤ型フラッシュメモリなどの不揮発性半導体記憶装置を用いたメモリカードは、デジタルカメラや携帯電話器等のホスト機器に使用されている。このメモリカードに記憶されたデータは、例えばメモリカードの引き抜きやホスト機器の落下、電源の遮断等の理由により、破壊されることがある。
【０００３】
上記電源遮断等によりデータが破壊されたセクタの修復を可能とし、データの破壊に伴うカードのメモリ空間の実記憶容量の減少を防止した技術が開発されている（例えば特許文献１参照）。
【０００４】
また、データ格納部に格納されているデータから巡回符号を生成し、この生成した巡回符号が対応するブロックに格納されている巡回符号と比較して当該ブロックの正常性を試験することにより、フラッシュメモリの書き込み済みのデータを誤って破壊することを防止した技術が開発されている（例えば特許文献２参照）。
【０００５】
ところで、近時、ＥＥＰＲＯＭを用いたＮＡＮＤ型フラッシュメモリにおいて、１つのメモリセルに複数のデータを記憶することが可能な多値ＮＡＮＤ型フラッシュメモリが開発されている。多値ＮＡＮＤ型フラッシュメモリは、１つのメモリセルを複数ページの同一カラムで共有する。例えば４値ＮＡＮＤ型フラッシュメモリの場合、２つのページの同一カラムが一つのメモリセルを共有する。
【０００６】
このような多値ＮＡＮＤ型フラッシュメモリにおいては、メモリセルを共有する一方のページに書き込みを行った際に、書き込みエラーが発生した場合や、書き込みが何らかの理由により途中で中断された場合、先に書き込まれたもう一方のページの内容が破壊される可能性がある。
【０００７】
すなわち、上記ＮＡＮＤ型フラッシュメモリを有するメモリカードを例えばデジタルカメラに使用した場合において、デジタルカメラで写真を撮影した際、写真データがフラッシュメモリに正常に書き込まれたとする。その後、再度撮影を行った際、データの書き込み途中において、例えばメモリカードの引き抜きやカメラ本体の落下、電源の遮断等の理由により、フラッシュメモリへの書き込みを失敗することがある。この場合、書き込み途中のデータが正常に記録できないだけではなく、上記多値ＮＡＮＤ型フラッシュメモリのページ管理の性質により、既に書き込んだページの写真データが破壊される可能性がある。
【特許文献１】特開平１１−３０６０９１号公報
【特許文献２】特開平１１−３０６８００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記課題を解決するものであり、新たなデータを書き込む際、既に書き込まれたデータの破壊を防止可能な半導体記憶装置の制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００９】
本発明の半導体記憶装置の制御方法の第１の態様は、複数のブロックを有し、前記ブロックを消去単位としてデータを消去可能な半導体記憶装置の制御方法であって、書き込み済みのデータを保護する場合、前記書き込み済みのデータが格納されたアドレスと同一のメモリセルを共有するアドレスをスキップして別のアドレスを期待値とし、データ書き込み時に、その書き込み対象のアドレスが前記期待値かどうかを判別し、前記書き込み対象のアドレスが前記期待値と異なる場合、前記書き込み済みのデータが格納されたブロックとは別のブロックに、書き込み対象のデータを格納することを特徴とする。
【００１０】
本発明の半導体記憶装置の制御方法の第２の態様は、電源が投入されたとき、電源が遮断される直前に書き込まれた論理ブロックの論理ブロックアドレスを検出し、前記検出された第１の論理ブロックアドレスの次の第２の論理ブロックアドレスをスキップし、第３の論理ブロックアドレスを期待値として書き込み待ち状態とすることを特徴とする。
【００１１】
本発明の半導体記憶装置の制御方法の第３の態様は、ＦＡＴ（File Allocation Table）のデータの書き込みを検出し、前記ＦＡＴデータの書き込みが検出されたとき、前記ＦＡＴデータの書き込み直前に第１の記憶領域に書き込まれた論理ブロックの第１の論理ブロックアドレスの次の第２の論理ブロックアドレスをスキップし、第３の論理ブロックアドレスを期待値として書き込み待ち状態とすることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、新たなデータを書き込む際、既に書き込まれたデータの破壊を防止可能な半導体記憶装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１４】
先ず、図２乃至図１０を参照して、本実施形態が適用される半導体記憶装置について説明する。
【００１５】
図２は、ホスト機器とメモリカードの構成を示している。メモリカード１は、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有している。コントローラ４は、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックを含んでいる。ＮＡＮＤ型フラッシュメモリ３は、１つのメモリセルに複数のビット、例えば２ビットを記憶する多値メモリである。
【００１６】
ホスト機器２０は、接続されるメモリカードをアクセスするためのハードウェア及びソフトウェア（システム）を備えている。このホスト機器２０は、メモリカード内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード内のフラッシュメモリを直接制御するものとして構築されている。
【００１７】
また、ホスト機器２０は、消去時の消去ブロックサイズが１６ｋＢｙｔｅに定められているＮＡＮＤ型フラッシュメモリを使用することを前提として、１６ｋＢｙｔｅ単位で論理・物理アドレスの割当を行い、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う（該当するコマンドを発行する）。
【００１８】
メモリカード１は、ホスト機器２０に接続されたとき、ホスト機器２０から電源供給を受けて動作し、ホスト機器２０からのアクセスに応じた処理を行う。
【００１９】
ＮＡＮＤ型フラッシュメモリ３は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が２５６ｋＢｙｔｅに定められている不揮発性メモリであり、例えば１６ｋＢｙｔｅ単位でデータの書き込み・読み出しを行うようになっている。このＮＡＮＤ型フラッシュメモリ３は、例えば０．０９μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、０．１μｍ未満となっている。
【００２０】
コントローラ４は、前述したＣＰＵ８及びＲＯＭ９の他に、メモリインタフェース（Ｉ／Ｆ）部５、ホストインタフェース（Ｉ／Ｆ）部６、バッファ７、及びＲＡＭ（Random Access Memory）１０を搭載している。
【００２１】
メモリインタフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインタフェース処理を行う。ホストインタフェース部６は、コントローラ４とホスト機器２０との間のインタフェース処理を行う。
【００２２】
バッファ７は、ホスト機器２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書き込む際、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されたデータをホスト機器２０へ送り出す際、一定量のデータを一時的に記憶したりする。
【００２３】
ＣＰＵ８は、メモリカード１全体の動作を司る。このＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行する。これにより、ＣＰＵ８は、各種のテーブルをＲＡＭ１０上に作成したり、ホスト機器２０から書込コマンド，読出コマンド，消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の該当領域にアクセスしたり、バッファ７を通じたデータ転送処理を制御したりする。
【００２４】
ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。
【００２５】
図３は、ホスト機器２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（即ち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）との、データ配置の違いを示している。
【００２６】
ホスト機器２０が想定しているフラッシュメモリにおいて、各ページは５２８Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部＋１６Ｂｙｔｅ分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ（ここで、ｋは１０２４））となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００２７】
一方、実際に使用するフラッシュメモリ３において、各ページは２１１２Ｂｙｔｅ（例えば５１２Ｂｙｔｅ分のデータ記憶部×４＋１０Ｂｙｔｅ分の冗長部×４＋２４Ｂｙｔｅ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（即ち、２５６ｋＢｙｔｅ＋８ｋＢｙｔｅ）となる。以下では、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を１６ｋＢｙｔｅと呼び、大ブロックカードの消去単位を２５６ｋＢｙｔｅと呼ぶ。
【００２８】
また、ホスト機器２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３とは、それぞれフラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト機器２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書込などにおいて、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２９】
図３に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示している。しかし、これに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００３０】
大ブロックカードを実用上有効な製品とするためには、図３に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、２５６ｋＢｙｔｅブロック（消去単位）の数は、５１２個となる。
【００３１】
また、図３は、消去単位が２５６ｋＢｙｔｅブロックである場合を例示しているが、消去単位が例えば１２８ｋＢｙｔｅブロックとなるように構築することも実用上有効である。この場合、１２８ｋＢｙｔｅブロックの数は、１０２４個となる。
【００３２】
また、図３に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示している。しかし、これに限定されるものではなく、実際に使用するフラッシュメモリ３の消去ブロックサイズを、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さく構成することも可能である。
【００３３】
図４は、ホスト機器２０側システム及びメモリカード１（大ブロックカード）の各コミュニケーション階層を示す図である。
【００３４】
ホスト機器２０側のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、及び小ブロックカード物理アクセス層２４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層１１、小ブロックカード物理・小ブロックカード論理変換層１２、小ブロックカード論理・大ブロックカード物理変換層１３、及び大ブロックカード物理アクセス層１４を有する。
【００３５】
例えばホスト機器２０側のアプリケーションソフト２１がファイルの書込をファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書込をドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、先ず、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック毎のシーケンシャルな書込をする際、論理・物理ブロック変換を行う。次いで、ドライバソフト２３は、小ブロックカード物理アクセス層２４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書込コマンドを大ブロックカードに対して発行し、データ転送を行う。
【００３６】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコルに従って、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報を送受することが前提となっている。
【００３７】
大ブロックカード側における小ブロックカード物理アクセス層１１は、ホスト機器２０から小ブロックカードの物理ブロックアドレスによる書込コマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００３８】
小ブロックカード物理・小ブロックカード論理変換層１２は、データ読出などの際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）への変換処理を行うための第１のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第１のテーブルに反映させる。物理ブロックアドレスに関しても、上記第１のテーブルに反映させる。
【００３９】
小ブロックカード論理・大ブロックカード物理変換層１３は、データ読出などの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。
【００４０】
ＮＡＮＤ型フラッシュメモリは、使用上多値であるか２値であるかを意識する必要は全くない。このため、変換層１３は、メモリセルに対して持つ必要はなく、物理アドレスに対して持っている。すなわち、小ブロック論理アドレスを大ブロック論理アドレスに変換するテーブルを有している。
【００４１】
変換層１２は、小ブロックカード物理アクセス層１１が書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第２のテーブルに反映させる。
【００４２】
大ブロックカード物理アクセス層１４は、小ブロックカード物理アクセス層１１が書込コマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、大ブロックカード物理アクセス層１４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００４３】
このようにホスト機器２０は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側は、小ブロックカードの物理ブロックアドレスに対応するデータがどの２５６ｋＢｙｔｅ物理ブロックの中に存在するのかが分かるように管理する。具体的には、１６ｋＢｙｔｅブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した２５６ｋＢｙｔｅブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの２５６ｋＢｙｔｅ物理ブロックに格納されているかが分かるように管理する。
【００４４】
図５は、ホスト機器２０側から送られてくるコマンドのフォーマットを示す図である。
【００４５】
ホスト機器２０側から送られてくるコマンドのパケットは、図５（ａ）に示すように、コマンド種別情報（ここでは「書込コマンド」），アドレス（物理ブロックアドレス），データ（コンテンツなどの実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ））といった各種情報を含んでいる。
【００４６】
このようなフォーマットのパケットにおいて、図５（ｂ）に示すように、付随データ１６Ｂｙｔｅ中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる１６ｋＢｙｔｅブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報，物理ブロックアドレス，データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読出コマンドの場合には付加されない。
【００４７】
図６は、ホスト機器２０側が想定しているブロック書込操作と、メモリカード１（大ブロックカード）側が実際に行う書込処理とを、対比して示す図である。
【００４８】
ホスト機器２０側（同図の左側）は、小ブロックカードの論理アドレスに基づく１６ｋＢｙｔｅブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書込操作を行う。
【００４９】
一方、大ブロックカード側（同図の右側）では、ホスト機器２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００５０】
前述したように、ホスト機器２０は、小ブロックの物理アドレスによる１６ｋＢｙｔｅ単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（２５６ｋＢｙｔｅ）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大することになる。そこで、ホスト機器２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書込の発生を低減し、オーバーヘッドの増大を抑制している。
【００５１】
図７は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である２５６ｋＢｙｔｅ物理ブロック分）の一例を示す図である。
【００５２】
大ブロックカードでは、消去単位である２５６ｋＢｙｔｅ物理ブロックの中に、ホスト機器２０側が管理する単位である１６ｋＢｙｔｅに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書込の際、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００５３】
各ホスト管理ブロックは、８個のページで構成される。各ページは、５１２Ｂｙｔｅデータ領域を４個分含むとともに、各データ領域に対応する１０ＢｙｔｅＥＣＣ領域を含んでいる。また、ページ中の最後の５１２Ｂｙｔｅデータ領域（４番目の５１２Ｂｙｔｅデータ領域）の後には、２４Ｂｙｔｅ管理データ領域も設けられる。このため、ページ中の最後の１０ＢｙｔｅＥＣＣ領域は、４番目の５１２Ｂｙｔｅデータ領域と２４Ｂｙｔｅ管理データ領域の両方に対応する構成となっている。
【００５４】
消去単位である２５６ｋＢｙｔｅ物理ブロックに含まれる１２８個の２４Ｂｙｔｅ管理データ領域のうち、例えば最後の２４Ｂｙｔｅ管理データ領域には、ホスト機器２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納されるようになっている。これらのアドレス情報は、図４に示す小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００５５】
図８は、図７とは異なるブロックフォーマットの例を示す図である。
【００５６】
図８に示すブロックフォーマットは、図７に示すブロックフォーマットに比べると、各ページにおけるＥＣＣ０，ＥＣＣ１，ＥＣＣ２の領域の配置が異なる。ただし、各ページにおけるユーザデータの記憶容量は、図７に示すブロックフォーマットと図８に示すブロックフォーマットとでは同じである。即ち、図７に示すブロックフォーマットは、各ページに２０４８Ｂｙｔｅ（５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ）の記憶領域が設けられており、図８に示すブロックフォーマットは、各ページに２０４８Ｂｙｔｅ（５１８Ｂｙｔｅ＋５１８Ｂｙｔｅ＋５１８Ｂｙｔｅ＋４９４Ｂｙｔｅ）の記憶領域が設けられている。以下では、図８に示すブロックフォーマットを採用した場合を前提にして説明を行う。
【００５７】
図９は、メモリカード１に対してホスト機器２０が書込を行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５８】
ホスト機器２０は、メモリカードは１６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカードに対する書込の際、ホスト機器２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト機器２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここで、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト機器２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００５９】
更に、ホスト機器２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト機器２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト機器２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにローレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００６０】
しかしながら、図９におけるＲ／Ｂピンの状態は、あくまでもホスト機器２０に対してメモリカード１がどのような状態かを示すものである。つまり、図９において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりローレベルを出力）を示したとしても、ＮＡＮＤ型フラッシュメモリ３に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、ＮＡＮＤ型フラッシュメモリ３に対する書込動作が実際に完了しているとは限らない。
【００６１】
図１０は、メモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書込を行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００６２】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３は２５６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書込の際には、コントローラ４は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図９におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００６３】
更に、コントローラ４は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ４は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにローレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図１０におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００６４】
なお、上記図９および図１０において、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００６５】
上記図９および図１０から分かるように、メモリカードがビジー状態でいられる時間には制約があるため、その間にデータ書込を行い、所定期間後には当該メモリカードがレディ状態になったことをホスト側に示さなければならない。
【００６６】
また、本実施形態に適用される多値ＮＡＮＤ型フラッシュメモリ３は、４値のデータを記憶し、１つのメモリセルを２ページの同一カラムが共有する。しかし、ユーザは、大ブロックカードのページを意識することなく書き込みを行なうことが可能である。
【００６７】
図１１（ａ）は、コントローラ４側からみた１ブロックのメモリ空間を示し、図１１（ｂ）は、ＮＡＮＤ型フラッシュメモリ４における１ブロックのメモリ空間を示している。
【００６８】
図１１（ａ）に示すように、ユーザ側からみた１ブロックのメモリ空間は、例えば１２８ページ×（２０４８＋６４Ｂｙｔｅ）であり、各ページの各カラムに記憶されるデータは、そのページのデータのみにより構成されている。すなわち、例えばページ０のカラム０、ページ０のカラム１…ページ０のカラム２１１１に、それぞれページ０のデータが記憶される。
【００６９】
一方、図１１（ｂ）に示すように、ＮＡＮＤ型フラッシュメモリ４における１ブロックのメモリ空間は、６４ページ×（２０４８＋６４Ｂｙｔｅ）であり、１ページに２ページ分のデータが記憶される。すなわち、例えばページ０とページ４のデータが１つのページに記憶される。つまり、ページ０のカラム０とページ４のカラム０、ページ０のカラム１とページ４のカラム１…ページ０のカラム２１１１とページ４のカラム２１１１が１つのページに記憶される。つまり、１つのカラムに２ビット、“００”、“０１”、“１０”、“１１”のデータが記憶される。
【００７０】
上記のように、メモリセルにデータを書き込む理由は次の通りである。メモリセルの微細化が進むと、ワード線が隣接するメモリセル間の容量カップリングが顕著となる。この場合、隣接するメモリセルの一方にプログラムを行うと、他方のメモリセルも閾値がシフトする可能性がある。この容量カップリングによる閾値変動（ヨーピン効果）を避けるため、図１１（ａ）では、アッパーページにデータを書き込む前に、隣接するメモリセルのロアーページにデータを書き込んでいる。つまり、ページ０のデータが書き込まれたメモリセルのアッパーページにデータを書き込む前に、隣接するメモリセルのロアーページにページ２のデータを書き込み、その後にメモリセルのアッパーページにページ４のデータを書き込んでいる。このように、隣接するメモリセルのロアーページにデータを書き込んでからアッパーページにデータを書き込むことにより、ヨーピン効果を抑制することができる。しかし、このページの割り当て方では、アッパーページのデータ書き込みに失敗すると、４ページ前に書き込まれたロアーページのデータが失われ、従来のページの割り当て方よりも過去のデータが失われてしまう。そこで、この実施形態では次のような制御を行なっている。
【００７１】
（実施形態の動作）
次に、図１、図１２を参照して、本実施形態の動作について説明する。
【００７２】
上記のように、本実施形態に適用される多値ＮＡＮＤ型フラッシュメモリ３は、４値のデータを記憶し、１つのメモリセルを２つのページの同一カラムが共有する。このため、ページ０のデータが書き込まれたページにページ４を書き込む際、ページ０のデータを破壊する恐れがある。この場合、既に書き込まれているページ０のデータが書き込まれているページにはデータを書き込まないようにスキップする。
【００７３】
スキップの条件は、次のように設定する。例えばデジタルカメラにおいて、電源を投入した後、短時間のうちに何枚か撮影した時点において、何らかの理由により書き込みに失敗した場合、直ぐに撮影し直せば、同様の写真を残すことができるため、書き込み失敗の影響は少ない。これに対して、例えば電源を投入し、撮影を開始した直後に書き込みを失敗した場合、電源投入前に撮った写真データを破壊してしまう恐れがある。このような場合、再度、同様の写真を撮影することは難しい場合が多い。このような状況を回避するため、電源投入直後のデータ書き込みにおいて、電源遮断前にデータを書き込んだページと同一のメモリセルを共有するページをスキップし、電源遮断前に書き込んだデータを保護する。
【００７４】
また、ＦＡＴ（File Allocation Table）の書き込み後、ユーザ領域の論理ブロックアドレスにデータを書き込む際、既に書き込んだページのデータを保護する必要がある。このため、ＦＡＴを書き込んだ直後のデータの書き込みにおいて、ＦＡＴ書き込み前にデータを書き込んだページと同一のメモリセルを共有するページをスキップし、ＦＡＴが書き込まれる直前までのデータを保護する。
【００７５】
図１、図１２は、メモリカード１の動作を示している。図１、図１２を参照して、動作について説明する。
【００７６】
図１２（ａ）に示すように、大ブロックＢＬＫ（３１）は、例えば１６個の小ブロック（３２）を有している。小ブロックには論理ブロックアドレスＬＢＡ０〜ＬＢＡ１５が付されている。ここで、大ブロックＢＬＫ（３１）は大ブロックカードの物理ブロックに該当し、小ブロック（３２）はホスト管理ブロックに該当する。１つの小ブロックは、２１１２Ｂｙｔｅ×８ページに設定されている。したがって、小ブロックは８ページ単位で管理されている。また、大ブロックは２１１２Ｂｙｔｅ×１２８ページに設定されている。このため、大ブロックは１２８ページ単位で管理されている。
【００７７】
上述したように、ホスト機器２０は、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う。また、大ブロックカードは、論理ブロックアドレスの順序に従って、小ブロック（３２）単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。このため、メモリカードは、一般にアサインされた大ブロック内の小ブロックが順次選択され、データが書き込まれる。すなわち、先ず例えば論理ブロックアドレスＬＢＡ０にデータが書き込まれた場合、次に書き込まれる論理ブロックアドレスＬＢＡ１を期待値として書き込み待ちとなる。
【００７８】
この状態において、図１２（ｂ）に示すように、論理ブロックアドレスＬＢＡ１にデータが書き込まれた場合、次に書き込まれる論理ブロックアドレスＬＢＡ２を期待値として書き込み待ちとなる。
【００７９】
一方、前述したように、電源投入時に、図１２（ｃ）に示すように、論理ブロックアドレスＬＢＡ１にデータが書き込まれている場合、あるいは、図１２（ａ）（ｂ）に示すように、論理ブロックアドレスに順次データを書き込み、図１２（ｃ）に示すように、論理ブロックアドレスＬＢＡ２を期待値として書き込み待ちとなっている状態において、別の大ブロックの書き込み、例えばＦＡＴの書き込みとなった場合、論理ブロックアドレスＬＢＡ１のデータを破壊しないため、期待値をＬＢＡ２から１つスキップし、例えばＬＢＡ３に変更して書き込み待ちとする。
【００８０】
図１、図１２を参照して具体的な動作について説明する。
【００８１】
先ず、電源が投入されると（Ｓ１１）、前回の電源遮断時の新アサインブロック（データの書き換えの際に、新しく論理ブロックアドレスが割り当てられた大ブロック）と旧アサインブロック（書き換えられるデータが格納された大ブロック）、及び新アサインブロックに最後に書かれた論理ブロックアドレスＬＢＡ（ｎ）が読み出される（Ｓ１２）。この後、論理ブロックアドレスＬＢＡ（ｎ）に“２”が加算される。すなわち、ｎ＝ｎ＋２の演算が行なわれる（Ｓ１３）。これにより期待値が１つスキップされたこととなる。すなわち、例えば前回の書き込み終了時の状態が、図１２（ｃ）に示すようである場合、期待値はＬＢＡ３となり、期待値を１つスキップした状態で書き込み待ちとなる（Ｓ１４）。この状態において、次の書き込みにおいて指定された論理ブロックアドレスがＬＢＡ３であるかどうかが判別される。
【００８２】
この判別の結果、次の書き込みにおいて指定された論理ブロックアドレスがＬＢＡ３である場合、制御がステップ（Ｓ１５）に移行され、論理ブロックアドレスＬＢＡ３の書き込みとなる。このため、図１２（ｄ）に示すように、論理ブロックアドレスＬＢＡ３にデータが書き込まれる。この後、大ブロック（新アサインブロック）が満杯かどうか判別される（Ｓ１６）。この結果、大ブロックの全論理ブロックアドレスにデータが書き込まれていない場合、電源が遮断されたかどうかが判別される（Ｓ１７）。この結果、電源が遮断されていない場合、ＦＡＴへの書き込みが行なわれたかどうかが判別される（Ｓ１８）。ＦＡＴへの書き込みが行なわれていない場合、期待値の論理ブロックアドレスＬＢＡがインクリメントされる（Ｓ１９）。すなわち、ｎ＝ｎ＋１の演算が行なわれ、この場合、論理ブロックアドレスＬＢＡ４を期待値として書き込みの待ち状態となる（Ｓ１４）。この後、論理ブロックアドレスＬＢＡ４の書き込みが行なわれる場合は、上記と同様の動作が繰り返される。
【００８３】
一方、前記電源投入直後、あるいはＦＡＴへの書き込みが行なわれた場合において、ステップ（Ｓ１４）において、期待値と異なる論理ブロックアドレスが検出された場合、制御がステップ（Ｓ２１）に移行する。
【００８４】
例えば図１２（ｃ）に示す状態において、論理ブロックアドレスＬＢＡ３を期待値として書き込み待ちである場合において、論理ブロックアドレスＬＢＡ２の書き込みを行なう場合、先ず、空いている大ブロックが検出される（Ｓ２１）。この結果、検出された大ブロック３３に論理ブロックアドレスＬＢＡ２のデータが書き込まれる（Ｓ２２）。この論理ブロックアドレスＬＢＡ２に対する書き込みの空き時間に旧アサインブロック３４から新アサインブロック３５へ必要なデータがコピーされる（Ｓ２２）。この後、旧アサインブロック３４のデータが消去される（Ｓ２３）。この後、新アサインブロック３５が旧アサインブロックとされ、新たに検出されたブロック３３が新アサインブロックとされる（Ｓ２４）。この後、制御がステップＳ１６に移行される。
【００８５】
また、前記ステップＳ１６において、新アサインブロックに空き領域が無くなった場合、ステップＳ２５に移行され、旧アサインブロックが消去され、制御がステップＳ１７に移行される。
【００８６】
さらに、前記ステップＳ１７において、電源が遮断された場合、処理が終了される。
【００８７】
また、前記ステップＳ１８において、ＦＡＴの書き込みが検出された場合、制御がＳ１３に移行され、ＦＡＴの書き込み直前の論理ブロックアドレスに“２”が加算され、論理ブロックアドレスを１つスキップして待ち状態とされる。
【００８８】
上記実施形態によれば、電源が投入された直後や、ＦＡＴにデータが書き込まれた場合、電源が遮断された直前の論理ブロックアドレス、あるいはＦＡＴにデータを書き込んだ直前の論理ブロックアドレスに連続するアドレスにデータを書き込まずにスキップし、別の論理ブロックアドレスを期待値として続く書き込みを待っている。このため、続く書き込みが期待値通りであれば、多値ＮＡＮＤ型フラッシュメモリにおいて、先に書き込んだページのデータの破壊を防止できる。
【００８９】
また、続く書き込みが期待値と異なる論理ブロックアドレスに対する場合ものである場合、別の大ブロックを検出し、検出した大ブロックに書き込みを行なっている。このため、期待値と異なる論理ブロックアドレスの場合においても、多値ＮＡＮＤ型フラッシュメモリにおいて、先に書き込んだページのデータの破壊を防止できる。
【００９０】
尚、図１に示す制御動作は、メモリカード１のコントローラ８により制御したが、これに限定されるものではなく、ホスト機器２０のコントローラにより制御することも可能である。
【００９１】
また、上記実施形態において、多値ＮＡＮＤ型フラッシュメモリは、１つのメモリセルに２ページのデータを記憶する場合について説明した。しかし、これに限らず、１つのメモリセルに３ページ以上のデータを記憶する場合においても、上記実施形態を適用することが可能である。
【００９２】
また、上記実施形態において、不揮発性半導体記憶装置としてＮＡＮＤ型フラッシュメモリを例に挙げて説明した。しかし、これに限らず、１つのメモリセルに４値以上のデータを記憶する不揮発性半導体記憶装置であれば、他の不揮発性半導体記憶装置についても上記実施形態を適用することができる。
【００９３】
また、上記実施形態において、ホスト機器２０が想定しているフラッシュメモリの消去単位と、実際に使用するフラッシュメモリの消去単位とが異なる場合について説明した。しかし、これに限らず、ホスト機器２０が想定しているフラッシュメモリの消去単位と、実際に使用するフラッシュメモリの消去単位とが等しい場合においても、上記実施形態を適用することができる。
【００９４】
また、上記実施形態において、小ブロックの論理ブロックアドレスを期待値とし、小ブロック単位でスキップする場合について説明した。しかし、これに限らない。スキップする単位は、既にデータが書き込まれたページと同一のメモリセルを共有するページにデータが書き込まれないものであれば良い。例えば、図１１（ｂ）では、ページ２とページ８とが同一のメモリセルを共有している。このようなページの割り当て方において、ページ２までデータが書き込まれた場合は、６ページ分のアドレスをスキップすることにより、ページ２と同一のメモリセルを共有するページ８にデータが書き込まれることを防止することができる。
【００９５】
また、本実施形態をＳＤＴＭ（Secure Digital）カードや、ＣＦＴＭ（Compact Flash）カードに適用することも可能である。
【図面の簡単な説明】
【００９６】
【図１】本実施形態の動作を示すフローチャート。
【図２】ホスト機器とメモリカードの構成を示すブロック図。
【図３】ホスト機器が想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト機器側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト機器側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト機器側が想定しているブロック書き込み操作とメモリカード（大ブロックカード）側が実際に行なう書き込み処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である２５６ｋＢｙｔｅ物理ブロック分）の一例を示す図。
【図８】図７とは異なるブロックフォーマットの例を示す図。
【図９】本実施形態のメモリカードに対してホストが書き込みを行なう際の当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１０】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書き込みを行なう際の、メモリカード内の不揮発性メモリＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１１】図１１（ａ）は、コントローラ側から見た１ブロックのメモリ空間を示し、図１１（ｂ）は、１ブロックの実メモリ空間を示す図。
【図１２】本実施形態の動作を示すブロック図。
【符号の説明】
【００９７】
１…メモリカード、３…ＮＡＮＤ型フラッシュメモリ、８…ＣＰＵ、２０…ホスト機器、３１…大ブロック、３２…小ブロック、ＬＢＡ０〜ＬＢＡ１５…論理ブロックアドレス。
【図１】
2006195565.tif 000003
【図２】
2006195565.tif 000004
【図３】
2006195565.tif 000005
【図４】
2006195565.tif 000006
【図５】
2006195565.tif 000007
【図６】
2006195565.tif 000008
【図７】
2006195565.tif 000009
【図８】
2006195565.tif 000010
【図９】
2006195565.tif 000011
【図１０】
2006195565.tif 000012
【図１１】
2006195565.tif 000013
【図１２】
2006195565.tif 000014