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