(57)【要約】      （修正有）【課題】特定のプレーンにおいてコピー先の空きブロックが無くなることを防止でき、書き込み速度の低下を防止する。【解決手段】複数の記憶領域３−１は、複数のページを含む複数のブロックを有し、データキャッシュ３−２とページバッファ３−３とをそれぞれ有している。制御部は、前記複数の記憶領域の空きブロック数の下限値を制御する。【選択図】図１
2007199905.tif 000002
【特許請求の範囲】
【請求項１】
複数のページを含む複数のブロックを有し、データキャッシュとページバッファとをそれぞれ有する複数の記憶領域を具備し、
制御部により、前記複数の記憶領域の空きブロック数の下限値を制御することを特徴とする半導体記憶装置の制御方法。
【請求項２】
前記複数の記憶領域それぞれに設定される前記空きブロック数の下限値は、前記複数の記憶領域の不良ブロックの発生確率が等価である場合、等しい値に設定されることを特徴とする請求項１記載の半導体記憶装置の制御方法。
【請求項３】
前記複数の記憶領域それぞれに設定される前記空きブロック数の下限値は、不良ブロックの発生確率が高い記憶領域に対して、不良ブロックの発生確率が低い記憶領域より大きく設定されることを特徴とする請求項１記載の半導体記憶装置の制御方法。
【請求項４】
複数のページを含む複数のブロックを有し、データキャッシュとページバッファとをそれぞれ有する複数の記憶領域を具備し、
前記制御部は、前記複数の記憶領域の１つに新規にデータを書き込むとき、空きブロック数が最も多い記憶領域を選択し、この選択された記憶領域のブロックにデータを書き込むことを特徴とする半導体記憶装置の制御方法。
【請求項５】
前記制御部は、各記憶領域の空きブロック数と、初期の不良ブロック数を管理することを特徴とする請求項１又は４記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置、例えばメモリカードに適用されるＮＡＮＤ型フラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近時、ＮＡＮＤ型フラッシュメモリは、高速アクセスを可能とするため、例えば複数のプレーンにより構成されている。各プレーンは、複数のページ含む複数のブロックの集合からなるメモリセルアレイとしての記憶領域と、外部とデータを授受するデータキャッシュ、及びデータキャッシュからデータを受け、保持するページバッファにより構成されている。前記ページとは、データの書き込み及び読み出し時におけるアクセス単位であり、前記ブロックとは、データの消去単位である。
【０００３】
各プレーンは、データキャッシュとページバッファの２つのバッファを使用することにより、メモリカードのコントローラがデータキャッシュからデータを読み出している間に、ＮＡＮＤ型フラッシュメモリが書き込み動作を行うことができるように構成されている。
【０００４】
ところで、ＮＡＮＤ型フラッシュメモリは、ブロック単位でしかデータを消去することができないため、例え１ページでもデータを書き換える場合、複数のページからなるブロックを消去する必要がある。消去されるブロックのうち、書き換えられない残りのページは、他のブロックにコピーする必要がある。ページのコピーは、次のように行なわれる。
【０００５】
先ず、ＮＡＮＤ型フラッシュメモリから１ページのデータがページバッファに読み出される。このページバッファのデータはデータキャッシュに転送され、データキャッシュからコントローラに読み出される。この読み出されたデータは、コントローラにより例えばエラー訂正される。この後、コントローラは、コピー先のページを指定し、エラー訂正後のデータをＮＡＮＤ型フラッシュメモリのデータキャッシュに供給する。データキャッシュのデータはページバッファに転送され、ページバッファのデータは、指定されたコピー先のページに書き込まれる。
【０００６】
ここで、高速なデータの書き換えを実現するためには、コピー動作を高速化する必要が有る。コピー動作を複数回行う場合、データの読み出しと書き込みが連続して繰り返される。ＮＡＮＤ型フラッシュメモリは、メモリカードのコントローラがデータキャッシュからデータを読み出している間、又はデータキャッシュへデータを書き込でいる間に、ページバッファからメモリセルへデータを書き込むことができる。このように、コントローラとデータキャッシュとの間でデータを転送している間に、ページバッファからメモリセルへデータを書き込む機能をキャッシュ機能と呼ぶ。このキャッシュ機能は、コントローラとデータキャッシュとの間のデータ転送と、ページバッファからメモリセルへの書き込み動作とを別々に行う通常の書き込み動作の場合に比べて、コピー動作を高速に行うことができる。
【０００７】
しかし、このキャッシュ機能は、コピー元のブロックとコピー先のブロックが同一のプレーン内でなければ使用できない。このため、例えば特定のプレーンに不良を有するブロック（以下、不良ブロックと称す）が集中して存在し、コピー先としての空きブロックがプレーン内に無くなった場合、そのプレーンにおいて、コピー先のブロックを割り当てることができなくなることがある。このような場合、キャッシュ機能を使用することができないため、コピー動作が遅くなる。したがって、書き込み速度が低下するという問題がある。
【０００８】
尚、例えばＮＡＮＤ型フラッシュメモリの複数の物理ブロックを複数のグループに分類し、各グループに含まれる不良ブロックの数が所定値以下である場合、互いに異なるグループに属する複数のブロックを仮想的に結合して仮想ブロックを形成する技術が開発されている（例えば特許文献１参照）。
【特許文献１】特開２００３−１５９４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、特定のプレーンにおいてコピー先の空きブロックが無くなることを防止でき、書き込み速度の低下を防止可能な半導体記憶装置の制御方法を提供しようとするものである。
【課題を解決するための手段】
【００１０】
本発明の半導体記憶装置の制御方法の第１の態様は、複数のページを含む複数のブロックを有し、データキャッシュとページバッファとをそれぞれ有する複数の記憶領域を具備し、制御部により、前記複数の記憶領域の空きブロック数の下限値を制御することを特徴とする。
【００１１】
本発明の半導体記憶装置の制御方法の第２の態様は、複数のページを含む複数のブロックを有し、データキャッシュとページバッファとをそれぞれ有する複数の記憶領域を具備し、前記制御部は、前記複数の記憶領域の１つに新規にデータを書き込むとき、空きブロック数が最も多い記憶領域を選択し、この選択された記憶領域のブロックにデータを書き込むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、特定のプレーンにおいてコピー先の空きブロックが無くなることを防止でき、書き込み速度の低下を防止可能な半導体記憶装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１４】
（第１の実施形態）
図２は、第１の実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【００１５】
メモリカード１は、ＰＣＢ（Printed Circuit Board）基板２と、このＰＣＢ基板２上に配置されたＮＡＮＤ型フラッシュメモリ３及びコントローラ４とにより構成されている。コントローラ４は、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックを有している。なお、ＮＡＮＤ型フラッシュメモリ３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、１つのメモリセルに１ビットより多い情報（例えば２ビット）を記憶する多値メモリであっても良い。また、図２に示すメモリカードは、ＰＣＢ基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置された場合を示している。しかし、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されても良い。
【００１６】
図３は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。図３において、図２と同一部分には同一符号を付している。
【００１７】
ホスト機器（以下、ホストと称す）２０は、接続されるメモリカードをアクセスするためのハードウェア及びソフトウェア（システム）を備えている。
【００１８】
メモリカード１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有している。
【００１９】
ＮＡＮＤ型フラッシュメモリ３は、消去時のブロックサイズ（消去ブロックサイズ）が例えば２５６ｋＢｙｔｅに定められた不揮発性メモリである。このＮＡＮＤ型フラッシュメモリ３は、例えば０．０９μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、０．１μｍ未満となっている。
【００２０】
コントローラ４は、前述したＣＰＵ８及びＲＯＭ９のほかに、メモリインターフェース部５、ホストインタフェース部６、バッファ７、及びＲＡＭ（Random Access Memory）１０を搭載している。
【００２１】
メモリインターフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインターフェース処理を行う。ホストインタフェース部６は、コントローラ４とホスト２０との間のインターフェース処理を行う。
【００２２】
バッファ７は、ホスト２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書き込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００２３】
ＣＰＵ８は、メモリカード１全体の動作を司るものである。このＣＰＵ８は、例えばメモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行する。すなわち、ＣＰＵ８は、各種のテーブルをＲＡＭ１０上に作成したり、ホスト２０から書き込みコマンド、読み出しコマンド、消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の該当領域をアクセスしたり、バッファ７を通じてデータ転送処理を制御したりする。
【００２４】
ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。
【００２５】
図４は、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（即ち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）との、データ配置の違いを示している。  
ホスト２０が想定しているフラッシュメモリにおいて、各ページは５２８Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部＋１６Ｂｙｔｅ分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ（ここで、ｋは１０２４））となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００２６】
一方、実際に使用するフラッシュメモリ３において、各ページは２１１２Ｂｙｔｅ（例えば５１２Ｂｙｔｅ分のデータ記憶部×４＋１０Ｂｙｔｅ分の冗長部×４＋２４Ｂｙｔｅ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（即ち、２５６ｋＢｙｔｅ＋８ｋＢｙｔｅ）となる。以下では、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を１６ｋＢｙｔｅと呼び、大ブロックカードの消去単位を２５６ｋＢｙｔｅと呼ぶ。
【００２７】
また、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３とは、それぞれフラッシュメモリに対してデータを入出力するためのページバッファを備えている。ホスト２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書き込みなどの際において、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２８】
図４に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示している。しかし、本実施形態はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００２９】
大ブロックカードを実用上有効な製品とするためには、図４に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、２５６ｋＢｙｔｅブロック（消去単位）の数は、５１２個となる。
【００３０】
また、図４においては消去単位が２５６ｋＢｙｔｅブロックである場合を例示しているが、消去単位が例えば１２８ｋＢｙｔｅブロックとなるように構築することも実用上有効である。この場合、１２８ｋＢｙｔｅブロックの数は、１０２４個となる。
【００３１】
また、図４に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示している。しかし、本実施形態はこれに限定されるものではなく、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
【００３２】
図５は、ホスト２０側システム及びメモリカード１（大ブロックカード）の各コミュニケーション階層を示す図である。
【００３３】
ホスト２０側のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、及び小ブロックカード物理アクセス層２４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層１１、小ブロックカード物理・小ブロックカード論理変換層１２、小ブロックカード論理・大ブロックカード物理変換層１３、及び大ブロックカード物理アクセス層１４を有する。
【００３４】
例えばホスト２０側のアプリケーションソフト２１がファイルの書き込みをファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック毎のシーケンシャルな書き込みを実現する。この際、ドライバソフト２３は、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層２４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
【００３５】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。また、ホストにおいて、論理・物理ブロック変換を行わず、論理アドレスでメモリカードにアクセスしてもよい。
【００３６】
大ブロックカード側における小ブロックカード物理アクセス層１１は、ホスト２０から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００３７】
小ブロックカード物理・小ブロックカード論理変換層１２は、データ読み出しなどの際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）への変換処理を行うための第１のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第１のテーブルに反映させる。物理ブロックアドレスに関しても、上記第１のテーブルに反映させる。
【００３８】
小ブロックカード論理・大ブロックカード物理変換層１３は、データ読み出しなどの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第２のテーブルに反映させる。
【００３９】
大ブロックカード物理アクセス層１４は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、大ブロックカード物理アクセス層１４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００４０】
このようにホスト２０は、小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側は、小ブロックカードの物理ブロックアドレスに対応するデータがどの２５６ｋＢｙｔｅ物理ブロックの中に存在するかが分かるように管理する。具体的には、１６ｋＢｙｔｅブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した２５６ｋＢｙｔｅブロック分の論理ブロックアドレスに対応するデータが、大ブロックカード内のどの２５６ｋＢｙｔｅ物理ブロックに格納されているかが分かるように管理する。
【００４１】
図６は、ホスト２０側から送られてくるコマンドのフォーマットを示す図である。ホスト２０側から送られてくるコマンドのパケットは、図６（ａ）に示すように、コマンド種別情報（ここでは「書き込み」）、アドレス（物理ブロックアドレス）、データ（コンテンツなどの実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ））といった各種情報を含んでいる。  
このようなフォーマットのパケットにおいては、図６（ｂ）に示されるように、付随データ１６Ｂｙｔｅ中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる１６ｋＢｙｔｅブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報、物理ブロックアドレス、データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読み出しコマンドの場合には付加されない。
【００４２】
図７は、ホスト２０側が想定しているブロック書き込み操作と、メモリカード１（大ブロックカード）側が実際に行う書き込み処理とを、対比して示す図である。  
ホスト２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく１６ｋＢｙｔｅブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書き込み操作を行う。
【００４３】
一方、大ブロックカード側（同図の右側）では、ホスト２０側から書き込みコマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータをＮＡＮＤ型フラッシュメモリ３内にシーケンシャルに書き込む。
【００４４】
ホスト２０は、小ブロックの物理アドレスによる１６Ｂｙｔｅ単位のランダムな書き込み操作を行う。このようなランダムな書き込み操作では、一般に、大ブロック（２５６ｋＢｙｔｅ）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリ３はブロック単位でしか消去を行えない。このため、ブロックの一部のみを書き換える場合、先ず、書き換える新データが消去済みの新ブロックに書き込まれる。この後、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータが新ブロックにコピーされる。このような動作が実行されることにより、ブロックの一部が書き換えられる。
【００４５】
図１は、第１の実施形態に係るＮＡＮＤ型フラッシュメモリ３を概略的に示している。ＮＡＮＤ型フラッシュメモリ３は、例えば複数のプレーンＰ０〜Ｐ３を有している。各プレーンは、例えばメモリセルアレイとしての記憶領域３−１と、外部とデータを授受するデータキャッシュ３−２、及びデータキャッシュからデータを受け、保持するページバッファ３−３を含んでいる。記憶領域３−１は、複数のブロック（大ブロック）を有し、各ブロックは図示せぬ複数のページを含んでいる。各プレーンＰ０〜Ｐ３に対する概略的な書き込み動作は、上述したように実行される。各プレーンＰ０〜Ｐ３に対する本実施形態特有の動作については後述する。
【００４６】
図８は、上記プレーンＰ０を用いたキャッシュ機能の一例を示している。図８（ａ）に示すように、例えばメモリカード１のコントローラ４が、データキャッシュ３−２にページ（Ｍ＋Ｒ１）のデータを書き込んでいるとき、ページバッファ３−３に記憶されたデータがページＭに書き込まれる。この後、図８（ｂ）に示すように、ＮＡＮＤ型フラッシュメモリ３は、データキャッシュ３−２に保持されたページ（Ｍ＋Ｒ１）のデータをページバッファ３−３に移動する。次いで、図８（ｃ）に示すように、ＮＡＮＤ型フラッシュメモリ３は、コントローラ４からの読み出し要求に応じて、例えばページ（Ｎ＋Ｐ２）のデータを記憶領域３−１からデータキャッシュ３−２に読み出す。その後、コントローラ４がデータキャッシュ３−２に保持されたページ（Ｎ＋Ｐ２）のデータを読み出している間に、ＮＡＮＤ型フラッシュメモリ３がページバッファ３−３に保持されたページ（Ｍ＋Ｒ１）のデータを記憶領域３−１へ書き込む。このように、キャッシュ機能を使用することにより、ＮＡＮＤ型フラッシュメモリの書き込み動作と、コントローラの書き込み動作又は読み出し動作を並行して行うことができる。
【００４７】
第１の実施形態は、上記キャッシュ機能を用いたコピー動作を継続的に実行可能とするため、プレーン内の空きブロックの数が次のように制御される。
【００４８】
図１に示すように、ＮＡＮＤ型フラッシュメモリ３が、プレーンＰ０〜Ｐ３の４プレーンにより構成され、各プレーンが１０２４ブロックを有し、合計４０９６個のブロックが存在するとする。このうち、データ記憶領域として４０００ブロックを必要とするメモリカードシステムにおいて、プレーンＰ０〜Ｐ３の初期の不良ブロックＢＢの数ＮＢＢが、それぞれ４，１４，２４，３４ブロックであるとする。すると、プレーンＰ０〜Ｐ３のデータが書き込まれていない空きブロック領域ＳＢに含まれる初期の空きブロックの数ＮＳＢは、次のように割り当てられる。
【００４９】
プレーンＰ０：１０２０ブロック、
プレーンＰ１：１０１０ブロック、
プレーンＰ２：１０００ブロック、
プレーンＰ３：  ９９０ブロック。
【００５０】
第１の実施形態は、各プレーンＰ０〜Ｐ３において、空きブロックの数ＮＳＢの下限値ＭＩＮが、例えば均等になるように制御される。すなわち、各プレーンＰ０〜Ｐ３において、空きブロック数ＮＳＢの下限値ＭＩＮが、例えば１０ブロックとして管理される。
【００５１】
図９は、コントローラ４が管理する管理テーブル４−１の一例を示している。この管理テーブル４−１は、各プレーンＰ０〜Ｐ３に対応して空きブロックの数ＮＳＢ０〜ＮＳＢ３、及び不良ブロックＢＢの数ＮＢＢ０〜ＮＢＢ３を管理している。第１の実施形態の場合、初期状態において、各空きブロックの数ＮＳＢ０〜ＮＳＢ３の値は、それぞれ“１０２０”“１０１０”“１０００”“９９０”であり、不良ブロックＢＢの数ＮＢＢ０〜ＮＢＢ３は、それぞれ“４”、“１４”、“２４”、“３４”である。データの書き込みは、プレーンＰ０からＰ１、Ｐ２、Ｐ３の順に書き込まれる。新たにデータを書き込む場合、新ブロックが割り当てられる。先ず最初、コントローラ４はプレーンＰ０の新ブロックを割り当て、この新ブロックにデータを書き込む。さらに、管理テーブル４−１の空きブロック数ＮＳＢ０から“１”を減算する。コントローラ４は、新ブロックを割り当てる毎に管理テーブル４−１の空きブロック数ＮＳＢ０を減算する。また、未書き込み領域に不良ブロックが後発的に発生すると、そのブロックは使用できなくなる。このため、対応するプレーンの空きブロック数ＮＳＢ０を減算する。
【００５２】
図１０は、第１の実施形態に係る書き込み動作の一例を示している。図１０を参照して書き込み動作について説明する。
【００５３】
先ず、書き込み済みのデータの書き換えかどうかが判別される（Ｓ１１）。この結果、既に記憶領域３−１に書き込まれているデータを更新する場合、そのプレーン内の空きブロックが選択され（Ｓ１２）、この選択されたブロックを用いてデータの書き換えと、スワップ処理が実行される（Ｓ１３）。具体的には、更新する新データを消去済みの新ブロックに書き込み、更新される旧データを含む旧ブロックから、更新されない残りのデータが新ブロックにコピーされる。新ブロックは、旧ブロックと同一プレーン内のブロックから選択される。この場合、新ブロックとして１個のブロックが使用される。旧ブロックはスワップ動作の後、消去される。このため、記憶領域３−１の空きブロック数（書き込み済みのブロック数）は変化しない。
【００５４】
一方、前記ステップ（Ｓ１１）において、既にブロックが割り当てられていない新しいデータを書き込むとき、すなわち、書き込み途中のブロックにデータを追記できないとき、新しいデータを格納するための新ブロックがデータ格納用に割り当てられる。
【００５５】
新ブロックの割り当ては、ステップ（Ｓ１４−Ｓ１７）に示すように実行される。
【００５６】
先ず、図９に示す管理テーブル４−１を参照して、書き込み対象プレーンに空きブロックがあるかどうかが判別される。この場合、先ず、プレーンＰ０に空きブロックがあるか判別される（Ｓ１４）。すなわち、プレーンＰ０の空きブロック数ＮＳＢは下限値“１０”に達しているかどうかが判別される。この結果、下限値に達していず、プレーンＰ０に空きブロックがある場合、プレーンＰ０に新ブロックが割り当てられる（Ｓ１５）。また、プレーンＰ０に空きブロックがない場合、すなわち、空きブロック数ＮＳＢの下限値が“１０”に達している場合、同様にして２番目のプレーンＰ１に空きブロックがあるか確認される（Ｓ１６、Ｓ１４）。プレーンＰ１に空きブロックがある場合、プレーンＰ１に新ブロックが割り当てられる（Ｓ１５）。プレーンＰ１に空きブロックがない場合、３番目のプレーンＰ２、4番目のプレーンＰ３の順に空きブロックが検索され、検出された空きブロックが新ブロックとして割り当てられる。このようにして、割り当てられた新ブロックにデータが書き込まれる（Ｓ１７）。また、新ブロックが割り当てられた場合、管理テーブル４−１の対応する空きブロック数が減算される。
【００５７】
上記第１の実施形態によれば、各プレーンにおいてデータを記憶するための空きブロック領域ＳＢの下限値が設定され、各プレーンは、均等に１０ブロックの空きブロックが確保されている。このため、各プレーンにおいて、空きブロックが無くなることを抑制できる。したがって、各プレーンにおいて、コピー先のブロックが無くなることを防止できるため、コピー機能を使用して、高速な書き込み動作を行うことができる。
【００５８】
しかも、各プレーンの後発的な不良ブロックの発生確率が等価である場合、均等に設定された１０ブロックに後発的に不良ブロックが発生する確率も等価である。このため、コピー機能を長く使用することが可能となり、書き込み速度の低下を抑制できる。
【００５９】
尚、第１の実施形態において、プレーン毎の空きブロック数の下限値を均等に設定した。しかし、これに限定されるものではなく、プレーン毎の不良ブロックの発生確率が異なる場合、不良ブロックの発生確率に応じて空きブロック数の下限値を変えることも可能である。例えば不良ブロックの発生確率が高いプレーンに対して、不良ブロックの発生確率が低いプレーンより大きな下限値を設定し、多くの空きブロックを設定してもよい。このように空きブロックの数を設定すれば、コピー動作を長く維持することができ、書き込み速度の低下を防止できる。
【００６０】
（第２の実施形態）
第１の実施形態は、各プレーンの空きブロック数に下限値を設定し、各プレーンに均等に空きブロックを設定し、プレーンＰ０からＰ４に順次データを書き込む場合について説明した。
【００６１】
これに対して、第２の実施形態は、各プレーンの空きブロック数に下限値を設定せず、データの追記ではなく、新たなデータの書き込みにおいて、空きブロックの数が最も多いプレーンを選択して書き込みを行う。換言すれば、書き込み済みブロック数と初期の不良ブロックの数の合計が最も少ないプレーンを選択し、このプレーンからブロックを割り当てる。
【００６２】
図１１は、第２の実施形態に係る書き込み動作の一例を示している。コントローラ４は、先ず、書き込み済みのデータの書き換えかどうかを判断する（Ｓ２１）。この結果、書き込み済みデータの書き換えである場合、書き込み対象プレーンに空きブロックが有るかどうかを判別する（Ｓ２２）。この結果、空きブロックがある場合、コピー先として書き換え元のデータと同一のプレーンを選択し（Ｓ２３）、このプレーンにおいて、データの書き換えと、既に書き込まれたデータのスワップ処理を行なう（Ｓ２４）。
【００６３】
一方、前記ステップＳ２１において、新たなデータの書き込みであると判別された場合、及び前記ステップＳ２２において、書き込み対象プレーンに空きブロックがないと判別された場合、空きブロック数が最も多いプレーンを選択する（Ｓ２５）。すなわち、図９に示す管理テーブル４−１を参照して、空きブロック数ＮＳＢが最も多いプレーンを選択し（Ｓ２５）、書き込み処理を行なう（Ｓ２６）。例えば初期状態において、この条件を満たすプレーンはプレーンＰ０である。したがって、プレーンＰ０にデータが書き込まれる。また、仮に、プレーンＰ０に１１ブロックのデータが書き込まれている場合、空きブロック数ＮＳＢ０は、“１００９”となり、プレーンＰ１の方が空きブロック数が多くなる。したがって、プレーンＰ１が選択され、このプレーンＰ１のブロックが新ブロックとして割り当てられ、データが書き込まれる。
【００６４】
上記第２の実施形態によれば、新規データを書き込む場合、空きブロック数の多いプレーンから優先的に選択されて書き込みが行われる。このため、各プレーンの空きブロック数を均等化でき、特定のプレーンから空きブロックが無くなることを防止できる。したがって、コピー機能の使用期間を延ばすことができ、高速な書き込み動作を維持することができる。
【００６５】
尚、上記第１、第２の実施形態は、メモリカードを例に説明した。しかし、本発明はメモリカードに限定されるものではなく、半導体記憶装置を用いた他のシステムに適用可能なことはいうまでもない。
【００６６】
その他、本発明の要旨を変えない範囲において、種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施形態に係り、各プレーンに設定された空きブロックの一例を示す図。
【図２】本実施形態が適用されるメモリカードの一例を示す斜視図。
【図３】ホストと図２に示すメモリカードとを含む構成を示すブロック図。
【図４】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとの関係を示す図。
【図５】ホスト側システムとメモリカードの各コミュニケーション階層を示す図。
【図６】図６（ａ）（ｂ）は、ホスト側から送られてくるコマンドのフォーマットを示す図。
【図７】ホスト側が想定しているブロック書き込み操作と、メモリカード側が実際に行う書き込み処理とを対比して示す図。
【図８】図８（ａ）（ｂ）（ｃ）は、キャッシュ機能の一例を示す図。
【図９】コントローラが管理する管理テーブルの一例を示す図。
【図１０】第１の実施形態に係る書き込み動作の一例を示すフローチャート。
【図１１】第２の実施形態に係る書き込み動作の一例を示すフローチャート。
【符号の説明】
【００６８】
１…メモリカード、３…ＮＡＮＤ型フラッシュメモリ、３−１…記憶領域、３−２…データキャッシュ、３−３…ページバッファ、４…コントローラ、４−１…管理テーブル、８…ＣＰＵ、２０…ホスト、Ｐ０〜Ｐ３…プレーン、ＮＳＢ…空きブロック領域、ＢＢ…不良ブロック。
【図１】
2007199905.tif 000003
【図２】
2007199905.tif 000004
【図３】
2007199905.tif 000005
【図４】
2007199905.tif 000006
【図５】
2007199905.tif 000007
【図６】
2007199905.tif 000008
【図７】
2007199905.tif 000009
【図８】
2007199905.tif 000010
【図９】
2007199905.tif 000011
【図１０】
2007199905.tif 000012
【図１１】
2007199905.tif 000013