(57)【要約】【課題】一部のデータ更新に伴う無効データのコピー動作の発生を低減するメモリシステムを提供する。【解決手段】メモリシステムは、複数のブロックを含み、各ブロック単位でデータ消去が行われる不揮発性半導体記憶装置と、外部装置からデータの書き込み要求及び読み出し要求を受け付けて、前記不揮発性半導体記憶装置に対するデータの書き込み及び読み出しを制御する制御部と、を具備し、前記制御部は、前記外部装置の読み出し要求に応じて読み出される有効データが前記不揮発性半導体記憶装置に格納されているかを前記ブロックごとに管理し、前記制御部は、前記ブロックに格納されているデータの一部を新データで更新する際に、更新されるデータが格納された旧ブロックと異なる新ブロックに前記新データを書き込み、前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されているかを判定する。【選択図】図１
2008305026.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含み、各ブロック単位でデータ消去が行われる不揮発性半導体記憶装置と、
外部装置からデータの書き込み要求及び読み出し要求を受け付けて、前記不揮発性半導体記憶装置に対するデータの書き込み及び読み出しを制御する制御部と、を具備し、
前記制御部は、前記外部装置の読み出し要求に応じて読み出される有効データが前記不揮発性半導体記憶装置に格納されているかを前記ブロックごとに管理し、
前記制御部は、前記ブロックに格納されているデータの一部を新データで更新する際に、更新されるデータが格納された旧ブロックと異なる新ブロックに前記新データを書き込み、
前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されているかを判定すること、
を特徴とするメモリシステム。
【請求項２】
前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されている場合、前記旧ブロックから前記新ブロックへのデータのコピー動作を行うこと、
を特徴とする請求項１記載のメモリシステム。
【請求項３】
前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されていない場合、前記旧ブロックから前記新ブロックへのデータのコピー動作を行わないこと、
を特徴とする請求項１記載のメモリシステム。
【請求項４】
前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されていない場合、前記旧ブロックから無効データを消去すること、
を特徴とする請求項３記載のメモリシステム。
【請求項５】
前記制御部は、前記ブロック単位のアドレスと、前記ブロックに格納される前記データの有効／無効情報と、を管理する管理テーブルを有すること、
を特徴とする請求項１記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位でデータの書き込み及び読み出しを行うメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等の不揮発性半導体記憶装置を搭載したメモリカードは、パーソナルコンピュータ、デジタルカメラ、携帯電話機等の携帯型電子機器（以下、ホスト装置という）に多く利用されている。
【０００３】
メモリカードとしては、ホスト装置との間でコマンドやデータを授受するコントローラと、ＮＡＮＤ型フラッシュメモリ等の不揮発性半導体記憶装置と、を搭載したものがある。このようなメモリカードの中では、メモリカードインターフェースとして、ホスト装置側のシステムがメモリカード内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理しているものがある。このようなメモリカードの場合、ホスト装置はメモリカード内部の不揮発性半導体記憶装置を直接制御する。この不揮発性半導体記憶装置の直接制御において、ホスト装置は、アクセス対象となるメモリカード内部に搭載される不揮発性半導体記憶装置の書込単位や消去単位を想定し、所定のブロックサイズを消去単位とした書込アクセスや消去アクセスを行う。
【０００４】
一方、メモリカードとしては、消去単位のブロックサイズをホスト装置側の消去単位のブロックサイズよりも大きくしたものがある。このようメモリカードを上記ホスト装置で利用する場合、以下のような状態が発生する可能性がある。アクセス対象となるメモリカード内部に搭載される不揮発性半導体記憶装置の書込単位や消去単位が変わった場合（例えば、消去単位のブロックサイズが大きくなった場合）、ホスト装置はそのメモリカードにアクセスすることができなくなる可能性がある。
【０００５】
このような事態を回避するために、例えば、メモリカード内部に変換コントローラを搭載して対処することが考えられる。しかしながら、不揮発性半導体記憶装置の内部状態をホスト装置の指示通りに保とうとすると、ホスト装置からの書込アクセスや消去アクセスが発生する度にメモリカード内部に搭載されている不揮発性半導体記憶装置上の消去単位での書き換えが必要となり、書込、消去に対応するメモリカード内部の処理負荷が著しく増大する可能性がある。
【０００６】
すなわち、不揮発性半導体記憶装置では、ブロック単位でしか消去を行えないため、ホスト装置の指示通りにブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りの有効データを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理に際しては、書き換えられない有効データのコピー動作（以下、この動作を「データ引越し動作」という）が伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが増大し、無駄な処理が頻繁に発生することになる。
【０００７】
また、上記のような構成のメモリカードとしては、例えば、特許文献１に記載されたものもある。この特許文献１では、フラッシュＲＯＭにおけるデータの読み出し・書き込みの単位（記憶単位）を消去単位よりも小さくして管理することを可能とし、消去単位の大きいフラッシュＲＯＭをファイルシステムに整合させることを可能とするフラッシュＲＯＭ管理方法及び装置を記載している。しかし、この特許文献１の技術では、上記引っ越し動作に伴う無駄な処理の発生を低減することはできない。
【特許文献１】特開平０９−９７２０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、ブロックに格納される一部のデータを新データで更新する際に、ブロック内の残りの無効データのコピー動作の発生を低減するメモリシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一実施形態に係るメモリシステムは、複数のブロックを含み、各ブロック単位でデータ消去が行われる不揮発性半導体記憶装置と、外部装置からデータの書き込み要求及び読み出し要求を受け付けて、前記不揮発性半導体記憶装置に対するデータの書き込み及び読み出しを制御する制御部と、を具備し、前記制御部は、前記外部装置の読み出し要求に応じて読み出される有効データが前記不揮発性半導体記憶装置に格納されているかを前記ブロックごとに管理し、前記制御部は、前記ブロックに格納されているデータの一部を新データで更新する際に、更新されるデータが格納された旧ブロックと異なる新ブロックに前記新データを書き込み、前記制御部は、前記データの更新において、前記旧ブロックに有効データが格納されているかを判定することを特徴としている。
【発明の効果】
【００１０】
本発明の一実施形態によれば、メモリシステム内における無駄なデータのコピー動作を低減することが可能になり、そのコピー動作により発生するオーバーヘッドを削減することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施形態を詳細に説明する。但し、本発明は多くの異なる態様で実施することが可能であり、以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【００１２】
（実施形態１）
図１は、本発明のメモリシステムを適用した実施形態１に係るメモリカードの概略構成を示す図である。図１に示すようにメモリカード１は、コントローラ２及び不揮発性半導体記憶装置３を有する。コントローラ２は、ホストインタフェース（以下、ホストＩ／Ｆという）４、メモリインタフェース（以下、メモリＩ／Ｆという）５、バッファ６、ＣＰＵ（Central Processing Unit）７、ＲＯＭ（Read Only Memory）８及びＲＡＭ（Random Access Memory ）９を有する。不揮発性半導体記憶装置３は、メモリセル１０を有する。ここでは、不揮発性半導体記憶装置３の例としてＮＡＮＤ型フラッシュメモリを挙げて説明するが、不揮発性半導体記憶装置３はＮＡＮＤ型フラッシュメモリに限らず、例えば、ＮＯＲ型フラッシュメモリ等でもよい。
【００１３】
ホスト装置２０は、接続されるメモリカード１に対してアクセスを行うためのハードウェア及びソフトウェアを備える。ホスト装置２０は、メモリカード１内部の物理状態（何処の物理アドレスブロックに何番目の論理アドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード１内の不揮発性半導体記憶装置３を直接制御するものとして構築されている。
【００１４】
また、ホスト装置２０は、消去時の消去ブロックサイズが１６ｋＢｙｔｅに定められている不揮発性半導体記憶装置３を前提として、１６ｋＢｙｔｅで論理・物理アドレスの割当を行い、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルに書込アクセスもしくは読出アクセスを行う（該当するコマンドを発行する）。
【００１５】
メモリカード１は、ホスト装置２０に接続された時に電源供給を受けて動作し、ホスト装置２０からのアクセスに応じた処理を行う。
【００１６】
不揮発性半導体記憶装置２０は、消去時の消去ブロックサイズが２５６ｋＢｙｔｅに定められているメモリセル１０を有し、例えば、１６ｋＢｙｔｅ単位でデータの書込・読出を行うように構成されている。
【００１７】
ホストＩ／Ｆ４は、コントローラ２とホスト装置２０との間のインタフェース処理を行うものである。メモリＩ／Ｆ５は、コントローラ２と不揮発性半導体記憶装置２０との間のインタフェース処理を行うものである。
【００１８】
バッファ６は、ホスト装置２０から送られてくるデータを不揮発性半導体記憶装置２０に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、不揮発性半導体記憶装置２０から読み出されるデータをホスト装置２０に送り出す際に、一定量のデータを一時的に記憶したりするものである。
【００１９】
ＣＰＵ７は、メモリカード１全体の動作を制御するものである。ＣＰＵ７は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ８に格納されているファームウェア（後述する制御プログラム）をＲＡＭ９上にロードして所定の処理を実行することにより、各種のテーブル（後述）をＲＡＭ９上で作成したり、ホスト装置２０から書込コマンド、読出コマンドを受けて不揮発性半導体記憶装置２０上の該当領域に対するアクセスを実行したり、バッファ６を通じたデータ転送処理を制御したりする。
【００２０】
ＲＯＭ８は、ＣＰＵ７により使用される制御プログラム等を格納するメモリである。ＲＡＭ９は、ＣＰＵ７の作業エリアとして使用され、制御プログラムや各種テーブルを記憶するメモリである。
【００２１】
図２（ａ）、（ｂ）は、ホスト装置２０が想定している不揮発性半導体記憶装置２０と、実際に使用する不揮発性半導体記憶装置２０（すなわち、メモリセル１０）との、データ配置の違いを示している。図２（ａ）に示すホスト装置２０が想定している不揮発性半導体記憶装置２０では、各ページは５２８Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部＋１６Ｂｙｔｅ分の冗長部）を有しており、３２ページ分が１つの消去単位（すなわち、１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ（ここで、ｋは１０２４））となる。以下では、このような不揮発性半導体記憶装置２０を搭載したカードを、「小ブロックカード」と称す場合がある。
【００２２】
図２（ｂ）に示す実際に使用する不揮発性半導体記憶装置２０では、各ページは２１１２Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部×４＋１０Ｂｙｔｅ分の冗長部×４＋２４Ｂｙｔｅ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（すなわち、２５６ｋＢｙｔｅ＋８ｋＢｙｔｅ）となる。以下では、このような不揮発性半導体記憶装置２０を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明では、便宜上、小ブロックカードの消去単位を１６ｋＢｙｔｅとし、この消去単位を「小ブロック」と呼び、大ブロックカードの消去単位を２５６ｋＢｙｔｅとし、この消去単位を「大ブロック」と呼ぶものする。
【００２３】
また、図２（ａ）、（ｂ）に示すように、ホスト装置２０が想定している不揮発性半導体記憶装置２０と、実際に使用する不揮発性半導体記憶装置２０とは、それぞれ、不揮発性半導体記憶装置２０へのデータ入出力を行うためのページバッファを備えている。ホスト装置２０が想定している不揮発性半導体記憶装置２０に備えられるページバッファの記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用する不揮発性半導体記憶装置２０に備えられるページバッファの記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書込等の際には、各ページバッファは、不揮発性半導体記憶装置２０に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２４】
図２の例では、実際に使用する不揮発性半導体記憶装置２０の消去ブロックサイズが、ホスト装置２０が想定している不揮発性半導体記憶装置２０の消去ブロックサイズの１６倍である場合を示したが、本実施形態１はこれに限定するものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００２５】
ホスト装置２０は、メモリカード１に対してデータの書込要求を行う場合、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書込を行う。すなわち、ホスト装置２０は、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅ毎のシーケンシャルな書込を実現するため、論理・物理ブロック変換を行い、小ブロックカードの物理ブロックアドレスによるランダムな書込コマンドを大ブロックカード（メモリカード１）に対して発行し、データ転送を行う。
【００２６】
なお、ホスト装置２０とメモリカード１との間のライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、コマンドと、ページアドレス（ロウアドレス）と、カラムアドレスと、データと、プログラム確認コマンドと、いった順序で情報の送受信が行われることが前提となっている。
【００２７】
メモリカード１のコントローラ２は、ホスト装置２０から小ブロックカードの物理ブロックアドレスによる書込コマンドを受け取ると、物理ブロックアドレスやデータの他に、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００２８】
また、メモリカード１のコントローラ２は、不揮発性半導体記憶装置２０からのデータ読出等の際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）への変換処理を行うための小ブロック物理・論理ブロックアドレステーブル９Ａ（図３参照）を有している。この小ブロック物理・論理ブロックアドレステーブル９Ａは、コントローラ２内のＲＡＭ９に格納される。コントローラ２は、上記書込コマンドを受けて小ブロックカードの物理ブロックアドレスを取得した時は、物理ブロックアドレスと論理ブロックアドレスを対応付けて小ブロック物理・論理ブロックアドレステーブル９Ａに記憶する。
【００２９】
また、メモリカード１のコントローラ２は、不揮発性半導体記憶装置２０からのデータ読出等の際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための論物変換テーブル９Ｂ（図４参照）を有している。この論物変換テーブル９Ｂは、コントローラ２内のＲＡＭ９に格納される。コントローラ２は、上記書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得した時は、この論理ブロックアドレスを論物変換テーブル９Ｂに記憶する。
【００３０】
メモリカード１のコントローラ２は、上記書込コマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、不揮発性半導体記憶装置３内部のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、コントローラ２は、書込コマンド等から取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスを不揮発性半導体記憶装置３内部における管理データ領域内の所定の領域に格納する。
【００３１】
以上のように、ホスト装置２０は、小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、メモリカード１側では、小ブロックカードの物理ブロックアドレスに対応するデータが、どの大ブロックカードの２５６ｋＢｙｔｅ物理ブロックの中に存在するかが分かるように、上記小ブロック物理・論理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂを用いて管理する。具体的には、コントローラ２は、１６ｋＢｙｔｅブロック毎に小ブロックカードの物理・論理ブロックアドレスの対応関係を小ブロック物理・論理ブロックアドレステーブル９Ａを用いて管理する。また、小ブロックカードの連続した２５６ｋＢｙｔｅ分（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）の論理ブロックアドレスに対応するデータが大ブロックカード内のどの２５６ｋＢｙｔｅ物理ブロックに格納されているかを論物変換テーブル９Ｂを用いて管理する。
【００３２】
図３は、小ブロック物理・論理ブロックアドレステーブル９Ａの一例を示す図である。図中の「ｘＰＢＡ（Physical Block Address）」は１６ｋＢｙｔｅブロック毎の小ブロックカードの物理ブロックアドレス、「ＬＢＡ−ｎ（Logic Block Address,ｎ）」は１６ｋＢｙｔｅブロック毎の小ブロックカードの物理ブロックアドレス、「ＳＥＦ（Short Erase Flag）」は１６ｋＢｙｔｅブロックの論理ブロックアドレスに対応するデータが消去済みか否か（未アサイン／アサイン済み）を設定するフラグである。フラグＳＥＦは、メモリカード１がホスト装置２０から小ブロックカードの物理ブロックアドレスによるデータの消去コマンド（小ブロックカードの論理ブロックアドレスを含む）を受け付けた時に、該当データの消去をエミュレートする際に用いるものである。
【００３３】
また、小ブロック物理・論理ブロックアドレステーブル９Ａでは、メモリセル１０内の全領域を所定の領域毎に分割し、この分割した領域毎に小ブロックカードの物理ブロックアドレスと小ブロックカードの論理ブロックアドレスとを対応付けて管理するようにしている。この分割した領域のことを、本実施形態１では「ゾーン」と称すことにする。例えば、メモリセル１０の記憶容量が２ＧＢｙｔｅであると想定すると、１６ｋＢｙｔｅ（小ブロックに対応）×１０２４（ゾーンに対応）×１２８（ゾーン１２８個分に対応）となる。
【００３４】
図３の小ブロック物理・論理ブロックアドレステーブル９Ａは、ゾーン０（Ｚｏｎｅ０）に対応するものとして示しており、このゾーン０に含まれる全小ブロックの論理ブロックアドレスに対応するデータが消去済み（全小ブロックが未アサイン）か、又は、消去済みでない（アサイン済み小ブロックを含む）か、を設定するフラグＺＥＦ（Zone Erase Flag ）を格納している。フラグＺＥＦは、メモリカード１がホスト装置２０から小ブロックカードの物理ブロックアドレスによるデータの書込コマンド（小ブロックカードの論理ブロックアドレスを含む）を受け付け、その論理ブロックアドレスが連続しない（シーケンシャルでない）論理ブロックアドレスである場合等に、そのデータ書込動作に伴って発生するデータ引越動作（後述）を実行する際に用いるものである。
【００３５】
図４は、論物変換テーブル９Ｂの一例を示す図である。図中の「ｘＬＢＡ（Logic Block Address）」はシーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応する論理ブロックアドレス、「ＰＢＡ（Physical Block Address）」は２５６ｋＢｙｔｅブロック毎の大ブロックカードの物理ブロックアドレス、「ＬＥＦ（Large Erase Flag）」は２５６ｋＢｙｔｅブロック毎の大ブロックに含まれる１６ｋＢｙｔｅブロック×１６個分に対応する全データが消去済み（１６個分の小ブロック全てが未アサイン）か、又は、消去済みでない（アサイン済みの小ブロックを含む）か、を設定するフラグである。フラグＬＥＦは、メモリカード１がホスト装置２０から小ブロックカードの物理ブロックアドレスによるデータの書込コマンド（小ブロックカードの論理ブロックアドレスを含む）を受け付け、その論理ブロックアドレスが連続しない（シーケンシャルでない）論理ブロックアドレスである場合等に、そのデータ書込動作に伴って発生するデータ引越動作（後述）を実行する際に用いるものである。
【００３６】
図４の論物変換テーブル９Ｂは、上記ゾーン０（Ｚｏｎｅ０）に対応するものとして示している。なお、本実施形態１の小ブロック論理・物理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂは、それぞれゾーン０（Ｚｏｎｅ０）に対応するものとしているが、その他のゾーンＮ（ＺｏｎｅＮ（例えば、Ｎ＝１〜１２７））に対応する同様の小ブロック論理・物理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂは、メモリセル１０内に格納するようにしてもよい。また、ゾーンとして分割する領域は、上記の一例（１６ｋＢｙｔｅ×１０２４）に限るものではなく、メモリカード１側の資源（例えば、ＲＡＭ９容量等）等に応じて任意に設定してもよい。
【００３７】
また、ホスト装置２０は、消去単位が１６ｋＢｙｔｅブロックであることを前提として、２５６ｋＢｙｔｅ物理ブロックを消去単位としている大ブロックカードであるメモリカード１に対してアクセスする。このアクセスに対して、メモリカード１は、ホスト装置２０が使用している制御アルゴリズムや物理フォーマットに合わせて柔軟に応答する。例えば、「新たな１６ｋＢｙｔｅの論理ブロックアドレスによる書込操作が発生した場合は、それ以前に同一の論理ブロックアドレスにより書込操作が発生したときの小ブロックカードの１６ｋＢｙｔｅ物理ブロックアドレスに対応するブロック（以下、「旧アサイン論理ブロック」と称す）のデータ消去が行われる」というホスト装置２０側の制御アルゴリズムに基づき、消去対象の旧アサイン論理ブロックが消去状態であることをエミュレートする。しかし、実際には、大ブロックカード側では消去対象の１６ｋＢｙｔｅブロック分の消去を行わない。これにより、不揮発性半導体記憶装置３への物理的な操作に関するオーバーヘッドを大幅に削減することができる。
【００３８】
また、ホスト装置２０から送られてくるコマンドには、コマンド種別情報（例えば、「書込」）と、アドレス（物理ブロックアドレス）と、データ（コンテンツ等の実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）といった各種情報を含んでいる。なお、付随データ１６Ｂｙｔｅ中の所定の位置には、小ブロックカードの論理ブロックアドレス（アクセス対象となる１６ｋＢｙｔｅに対応する論理ブロックアドレス）が配置されている。メモリカード１のコントローラ２は、ホスト装置２０から送られてくるコマンドを受け付けた時、コマンド種別情報、物理ブロックアドレス、データ、及び論理ブロックアドレスを取得する。
【００３９】
ホスト装置２０では、小ブロックカードの物理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書込操作を行う。また、これに伴い、旧アサイン論理ブロックが１６ｋＢｙｔｅブロック単位で消去されることを前提としている。
【００４０】
一方、メモリカード１側では、ホスト装置２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータを不揮発性半導体記憶装置２０内にシーケンシャルに書き込む。この場合、上記前提に合わせて、ホスト装置２０側に対しては大ブロックカード側小ブロックカード内の旧アサイン論理ブロックは消去状態にあるものとして対応する。例えば、旧アサイン論理ブロックに対する読出アクセスがあった場合には、そのブロックは消去状態にある旨を応答する。また、小ブロックについても、消去状態にあるものとして対応する。
【００４１】
上述のように、ホスト装置２０は、小ブロックの物理アドレスによる１６ｋＢｙｔｅブロック単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（２５６ｋＢｙｔｅに対応）の一部のみを書き換えるための処理が多発する。不揮発性半導体記憶装置２０では、大ブロック単位でしか消去を行えないため、大ブロックの一部のみを書き換える場合、すなわち、大ブロック内の一部の小ブロックのみを書き換える場合は、書き換える新データを消去済みの新大ブロックに書き込み、新データにより書き換えられる旧データを含む旧大ブロックから、書き換えられない残りのデータを新大ブロックにコピーする必要がある。このように、大ブロック内の一部の小ブロックのみを書き換える処理は、書き換えられないデータのコピー動作（以下、「データ引越動作」と称す）を伴うため、大ブロック内の一部の小ブロックのみを書き換える処理が多発すると、オーバーヘッドが増大することになる。
【００４２】
次に、メモリカード１がホスト装置２０から小ブロックカードの物理ブロックアドレスによるデータの書込コマンド（小ブロックカードの論理ブロックアドレスを含む）を受け付け、その論理ブロックアドレスが連続しない（シーケンシャルでない）論理ブロックアドレスである場合等に、そのデータ書込動作に伴って発生するデータ引越動作の具体例について、図５を参照して説明する。図５は、メモリカード１内で行われるデータ引越し動作の一例を示す図である。
【００４３】
図５において、メモリセル１０内には１６ｋＢｙｔｅブロック単位の小ブロックを１６個分含む大ブロックとして、旧アサイン論理ブロックが既に割り当てられている場合を示す。この旧アサイン論理ブロックには、論理ブロックアドレスＬＡＢ０，ＬＡＢ１等を設定した小ブロック単位のデータＲ０，Ｒ１等が既に記憶されているものとする。
【００４４】
図５では、ホスト装置２０から見て、上記ゾーン０（Ｚｏｎｅ０）内が全消去状態にあるものとする。すなわち、ホスト装置２０側では、ゾーン０（Ｚｏｎｅ０）内で小ブロック単位の論理ブロックアドレスがアサインされた１６ｋＢｙｔｅブロック単位の全データ（１６ｋＢｙｔｅ×１０２４）が消去状態であると管理されているものとする。
【００４５】
この状態で、ホスト装置２０から書込コマンド（コマンド種別情報であるＷｒｉｔｅと、アドレスＡｄ（物理ブロックアドレス）と、実データＲ０と、付随データ（論理ブロックアドレス）を含む）がメモリカード１に対して出力されると、メモリカード１内のコントローラ２は、不揮発性半導体記憶装置３に対して新データＲ０の書き込み処理を開始する。
【００４６】
この場合、コントローラ２は、ホスト装置２０から受け付けた上記書込コマンドから物理ブロックアドレスと論理ブロックアドレスとを取得し、ＲＡＭ６に格納された上記小ブロック物理・論理ブロックアドレステーブル９Ａ内の論理ブロックアドレスを参照して、同一大ブロック内の一部の小ブロックのみの書き換えかを判定する。取得した論理ブロックアドレスは、図５の旧アサイン論理ブロックに含まれる一部の小ブロックに対応する論理ブロックアドレスであるため、コントローラ２は、同一大ブロック内の一部の小ブロックの書き換えであると判定し、新データＲ０を書き込むための新大ブロックとして、図５に示すメモリセル１０内に新アサイン論理ブロックを割当て、不揮発性半導体記憶装置２０により新データＲ０を書き込む。
【００４７】
次に、コントローラ２は、新データＲ０により書き換えられる旧データＲ０を含む旧アサイン論理ブロックから、書き換えられない残りのデータＲ１、・・・を新アサイン論理ブロックにコピーし、旧データＲ０が格納されている旧アサイン論理ブロックを消去する（図中のコピー後消去）、というデータ引越し動作を行う。
【００４８】
図５に示したデータ引越し動作では、旧アサイン論理ブロックから一部の小ブロックのデータのみを新アサイン論理ブロックにコピーする動作がオーバーヘッドを増大させる要因となる。すなわち、旧アサイン論理ブロックから一部の小ブロックのデータのみを新アサイン論理ブロックにコピーする際は、旧アサイン論理ブロック内の小ブロックのデータが消去済みか否か（有効データか無効データか）を確認して、有効データのみをコピーする必要があり、そのコピー動作がオーバーヘッドを増大させる。以下、データ引越し動作により発生するオーバーヘッドを低減するデータ書込動作について説明する。
【００４９】
以下、上記データ引越し動作により発生するオーバーヘッドを低減するデータ書き込み動作例について、図６〜図８を参照して説明する。図６は、メモリカード１において消去コマンドに応じて実行されるデータ消去処理を示すフローチャートである。この消去処理では、小ブロック物理・論理ブロックアドレステーブル９Ａに格納されるフラグＺＥＦを設定する処理を含む。図７は、メモリカード１において書込コマンドに応じて実行される書込処理を示すフローチャートである。図８は、データ書き込み処理に伴ってメモリカード１内で実行されるデータ消去動作の具体例を示す図である。
【００５０】
コントローラ２は、ホスト装置２０から消去コマンド（コマンド種別情報であるＥｒａｓｅと、アドレスＡｄ（１６ｋＢｙｔｅブロック単位の物理ブロックアドレス）と、付随データ（論理ブロックアドレスを含む）を含む）を受け付けると、図５に示すデータ消去処理を開始する。図５において、コントローラ２は、ホスト装置２０から受け付けた消去コマンドから論理ブロックアドレスを取得し、この論理ブロックアドレスに基づいて小ブロック物理・論理ブロックアドレステーブル９Ａ内の該当論理ブロックアドレスのフラグＳＥＦを参照して、該当データが消去済みか否かを判定する(ステップＳ１０１)。
【００５１】
本実施形態１では、フラグＳＥＦは「１：消去済み（未アサイン）」、「０：未消去（アサイン済み）」と設定するものとする。コントローラ２は、フラグＳＥＦが「１：消去済み（未アサイン）」であれば、該当データが消去済みであると判定して(ステップＳ１０１：Ｙｅｓ)、ステップＳ１０３に移行する。また、コントローラ２は、フラグＳＥＦが「０：未消去（アサイン済み）」であれば、該当データが消去済みでないと判定し(ステップＳ１０１：Ｎｏ)、そのフラグＳＥＦを「１：消去済み（未アサイン）」に設定して(ステップＳ１０２)、ステップＳ１０３に移行する。
【００５２】
次に、ステップＳ１０３において、コントローラ２は、該当データが消去済みであることをホスト装置２０に応答する。
【００５３】
次に、コントローラ２は、消去対象のデータが含まれるゾーン内の全データが消去済みか否かを、ＲＡＭ６内に格納された上記図３の小ブロック物理・論理ブロックアドレステーブル９Ａを参照して確認する(ステップＳ１０４)。すなわち、コントローラ２は、上記取得した論理ブロックアドレスに基づいて、図３の小ブロック物理・論理ブロックアドレステーブル９Ａに記憶されるゾーン０（Ｚｏｎｅ０）内の小ブロック単位のフラグＳＥＦが全て「１」に設定されているか否かを確認する。
【００５４】
コントローラ２は、フラグＳＥＦが全て「１」の場合は(ステップＳ１０４：Ｙｅｓ)、小ブロック物理・論理ブロックアドレステーブル９Ａ内のフラグＺＥＦを「１：全小ブロックが未アサイン」に設定する(ステップＳ１０５)。また、コントローラ２は、フラグＳＥＦが全て「１」ではなく、１つでもフラグＳＥＦ「０」が含まれる場合は(ステップＳ１０４：Ｎｏ)、小ブロック物理・論理ブロックアドレステーブル９Ａ内のフラグＺＥＦを「０：アサイン済み小ブロックを含む」に設定する(ステップＳ１０６)。
【００５５】
以上の消去処理により、メモリカード１では、ホスト装置２０から小ブロックカードの論理アドレスによるデータの消去コマンドを受け付ける度に、小ブロック物理・論理ブロックアドレステーブル９Ａに格納するフラグＺＥＦの設定を行うことが可能になる。以下に説明するデータ書込処理において、フラグＺＥＦを利用した処理が可能となる。
【００５６】
次に、コントローラ２は、ホスト装置２０から書込コマンド（コマンド種別情報であるＷｒｉｔｅと、アドレスＡｄ（１６ｋＢｙｔｅブロック単位の物理ブロックアドレス）と、データＲ０と、付随データ（論理ブロックアドレスを含む）を含む）を受け付けると、図７に示すデータ書込処理を開始する。図７において、コントローラ２は、ホスト装置２０から受け付けた書込コマンドから論理ブロックアドレスを取得し、この論理ブロックアドレスに基づいて小ブロック物理・論理ブロックアドレステーブル９Ａを参照して、データ書込先のゾーンを判定する(ステップＳ２０１)。このゾーン判定において、データ書込先のゾーンは上記ゾーン０（Ｚｏｎｅ０）であるものとする。
【００５７】
次いで、コントローラ２は、取得した論理ブロックアドレスに基づいて、ゾーン０（Ｚｏｎｅ０）の小ブロック物理・論理ブロックアドレステーブル９Ａを参照して、連続する（シーケンシャル）論理ブロックアドレスへのデータ書込か、又は、同一大ブロック内の小ブロックへのデータ書込か等を判定する(ステップＳ２０２)。連続する（シーケンシャル）論理ブロックアドレスへのデータ書込か、又は、同一大ブロック内の小ブロックへのデータ書込である場合(ステップＳ２０２：Ｙｅｓ)、コントローラ２は、論物変換テーブル９Ｂを参照して、データＲ０の不揮発性半導体記憶装置２０に対する書込を実行する(ステップＳ２０３)。
【００５８】
また、連続する（シーケンシャル）論理ブロックアドレスへのデータ書込か、又は、同一大ブロック内の小ブロックへのデータ書込でない場合(ステップＳ２０２：Ｎｏ)、コントローラ２は、ゾーン０（Ｚｏｎｅ０）の小ブロック物理・論理ブロックアドレステーブル９Ａを参照して、フラグＺＥＦが「１：全小ブロックが未アサイン」に設定されているか否かを確認する(ステップＳ２０４)。連続する（シーケンシャル）論理ブロックアドレスへのデータ書込か、又は、同一大ブロック内の小ブロックへのデータ書込でない場合は、上記旧アサイン論理ブロック内への連続したデータ書込ではなく、新アサイン論理ブロックへの新データの書込、又は、旧アサイン論理ブロック内の旧データの新アサイン論理ブロックへの書き換えとなると考えられる。
【００５９】
すなわち、不揮発性半導体記憶装置２０では、大ブロックの一部の小ブロックのみを書き換える場合は、書き換える新データを新アサイン論理ブロック（新大ブロックに対応）に書き込み、新データにより書き換えられる旧データを旧アサイン論理ブロック（旧大ブロックに対応）から、書き換えられない残りのデータを新アサイン論理ブロックにコピーする必要がある。すなわち、データ引越動作が発生することが予想される。そこで、データ引越動作を実行する必要が有るか否かを判定するために、旧アサイン論理ブロックの残りのデータが消去済みか否かを判定することが有効である。この判定は、旧アサイン論理ブロックに含まれる上記フラグＳＥＦが「１」であるか否かを確認すればよいが、ゾーン内の全てのフラグＳＥＦを確認することは、オーバーヘッドを増大させることになる。そこで、本実施形態１では、大ブロックに含まれる全小ブロックのデータが消去済みか否かの確認を可能にするフラグＬＥＦと、ゾーン内に含まれる全小ブロックのデータが消去済みか否かの確認を可能にするフラグＺＥＦを設定している。
【００６０】
したがって、上記ステップＳ２０４において、フラグＺＥＦが「１」であることを確認できれば、データ引越動作が省略可能か否かを、データ引越動作を実行する前に判断することが可能になる。
【００６１】
コントローラ２は、ゾーン０（Ｚｏｎｅ０）のフラグＺＥＦが「１：全小ブロックが未アサイン」である場合、すなわち、ゾーン０（Ｚｏｎｅ０）に含まれる全小ブロックのデータが消去済みである場合は(ステップＳ２０４：Ｙｅｓ)、上記取得した論理ブロックアドレスに基づいて、論物変換テーブル９Ｂ内の当該論理ブロックアドレスが含まれる大ブロックの物理ブロックアドレス毎のフラグＬＥＦを「１：１６個分の小ブロック全てが未アサイン」に設定する(ステップＳ２０５)。また、このステップＳ２０５において、コントローラ２は、フラグＬＥＦの設定変更後の論物変換テーブル９Ｂと、データ書込後の小ブロック物理・論理ブロックアドレステーブル９Ａをメモリセル１０内の所定の領域にバックアップして、ステップＳ２０６に移行する。また、コントローラ２は、フラグＺＥＦが「０：アサイン済み小ブロックを含む」である場合は(ステップＳ２０４：Ｎｏ)、ステップＳ２０６に移行する。
【００６２】
なお、ステップＳ２０５において、小ブロック物理・論理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂをメモリセル１０内にバックアップすることにより、後述する論物変換テーブル９Ｂを初期化する前のゾーン０（Ｚｏｎｅ０）のアサイン状態を保存することが可能になる。すなわち、ホスト装置２０側の電源が遮断されたり、メモリカード１がホスト装置２０から外されたりして、メモリカード１への電源供給が遮断されて、ＲＡＭ９内に格納する小ブロック物理・論理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂが不用意に消去されることを防止するための処理である。
【００６３】
次いで、コントローラ２は、ホスト装置２０から受け付けたデータＲ０を不揮発性半導体記憶装置２０内に書き込むため、論物変換テーブル９Ｂを参照して、不揮発性半導体記憶装置２０に対して新アサイン論理ブロックの設定とデータＲ０の書込を実行する(ステップＳ２０６)。
【００６４】
次いで、コントローラ２は、ステップＳ２０４において書き換え対象データが含まれる旧アサイン論理ブロック内の全データが消去済みであることを確認したため、当該旧アサイン論理ブロック内の残りデータの引越動作は行わず、データ消去動作のみを実行して、論物変換テーブル６Ｂを初期化する(ステップＳ２０７)。
【００６５】
また、ステップＳ２０４において、ゾーン０（Ｚｏｎｅ０）のフラグＺＥＦが「０：アサイン済み小ブロックを含む」である場合(ステップＳ２０４：Ｎｏ)、コントローラ２は、取得した論理ブロックアドレスに基づいて、ゾーン０（Ｚｏｎｅ０）の論物変換テーブル９Ｂを参照して、書き換え対象データが含まれる旧アサイン論理ブロックに設定されたフラグＬＥＦが「１：全小ブロック未アサイン」に設定されているか否かを確認する(ステップＳ２０８)。すなわち、ゾーン０（Ｚｏｎｅ０）のフラグＺＥＦが「０」である場合は、書き換え対象データが含まれる旧アサイン論理ブロックに設定されたフラグＬＥＦが「１」であることを確認することによっても、データ引越動作が省略可能か否かを判断できる。
【００６６】
コントローラ２は、旧アサイン論理ブロックに設定されたフラグＬＥＦが「１：全小ブロック未アサイン」である場合、すなわち、旧アサイン論理ブロックに含まれる全小ブロックのデータが消去済みである場合は(ステップＳ２０８：Ｙｅｓ)、上記ステップＳ２０５以降の処理を実行する。
【００６７】
また、旧アサイン論理ブロックに設定されたフラグＬＥＦが「０：アサイン済み小ブロックを含む」である場合(ステップＳ２０８：Ｎｏ)、コントローラ２は、ホスト装置２０から受け付けたデータＲ０を不揮発性半導体記憶装置２０内に書き込むため、論物変換テーブル９Ｂを参照して、不揮発性半導体記憶装置２０に対して新アサイン論理ブロックの設定とデータＲ０の書込を実行する(ステップＳ２０９)。
【００６８】
次いで、コントローラ２は、上記データ引越動作を実行する(ステップＳ２１０)。すなわち、新データＲ０により書き換えられる旧データを旧アサイン論理ブロックから、書き換えられない残りのデータを新アサイン論理ブロックにコピーする。以上のステップＳ２０３、ステップＳ２０７又はステップＳ２１０の処理の後、本データ書込処理を終了する。
【００６９】
次に、上記図７のデータ書込処理に基づく具体的なデータ書込動作について、図８を参照して説明する。
【００７０】
図８では、ホスト装置２０から見て、上記ゾーン０（Ｚｏｎｅ０）内が全消去状態にあるものとする。ホスト装置２０側では、ゾーン０（Ｚｏｎｅ０）内で小ブロック単位の論理ブロックアドレスがアサインされた１６ｋＢｙｔｅブロック単位の全データ（１６ｋＢｙｔｅ×１０２４）が消去状態であると管理されているものとする。図中のメモリセル７内に割り当てられた旧アサイン論理ブロック内には、小ブロックに対応する１６ｋＢｙｔｅブロック単位の論理ブロックアドレスＬＡＢ０，ＬＡＢ１等を設定したデータＲ０，Ｒ１等を１６個分が記憶済みであるものとする。図中の旧アサイン論理ブロックの物理ブロックアドレスＰＢＡは「０ｘ１００」である。これらの状態がデータ書き込み動作前の状態であるものとする。
【００７１】
この状態で、ホスト装置２０から書込コマンド（コマンド種別情報であるＷｒｉｔｅと、アドレスＡｄ（物理ブロックアドレス）と、実データＲ０と、付随データ（論理ブロックアドレス）を含む）がメモリカード１に対して出力されると、メモリカード１内のコントローラ２は、不揮発性半導体記憶装置３に対して新データＲ０の書き込み処理を開始する。
【００７２】
この場合、コントローラ２は、ホスト装置２０から受け付けた上記書込コマンドから物理ブロックアドレスと論理ブロックアドレスとを取得し、ＲＡＭ６に格納された上記小ブロック物理・論理ブロックアドレステーブル９Ａ内の論理ブロックアドレスを参照して、同一大ブロック内の一部の小ブロックのみの書き換えかを判定する。取得した論理ブロックアドレスは、図８の旧アサイン論理ブロックに含まれる一部の小ブロックに対応する論理ブロックアドレスであるため、コントローラ２は、同一大ブロック内の一部の小ブロックの書き換えであると判定し、新データＲ０を書き込むための新大ブロックとして、図８に示すメモリセル１０内に新アサイン論理ブロック（物理ブロックアドレスＰＢＡ：０ｘ２００）を割当て、不揮発性半導体記憶装置２０により新データＲ０を書き込む。
【００７３】
この新データＲ０の書き込みに際して、コントローラ２は、図８に示す論物変換テーブル９Ｂに対して、新アサイン論理ブロックに含まれる１６ｋＢｙｔｅブロック単位×１６個分の論理ブロックアドレスｘＬＢＡ「１６〜３１」と、新アサイン論理ブロックの物理ブロックアドレスＰＢＡ「０ｘ２００」と、その新アサイン論理ブロックの内のデータ消去状態を示すフラグＬＥＦ「０：アサイン済みの小ブロックを含む」と、を設定する。
【００７４】
次に、コントローラ２は、書き換え対象の旧データＲ０が含まれる旧アサイン論理ブロックの消去状態を管理する論物変換テーブル９Ｂ内のフラグＬＥＦが「１：全小ブロック未アサイン」に設定されているか否かを確認する。図中の論物変換テーブル９Ｂでは、書き換え対象の旧データＲ０が含まれる１６ｋＢｙｔｅブロック単位×１６個分の論理ブロックアドレスｘＬＢＡ「０〜１５」と、旧アサイン論理ブロックの物理ブロックアドレスＰＢＡ「０ｘ１００」と、その旧アサイン論理ブロック内のデータ消去状態を示すフラグＬＥＦと、が対応付けて記憶されている場合を示す。
【００７５】
次いで、コントローラ２は、フラグＬＥＦが「１：全小ブロック未アサイン」に設定されていること、すなわち、旧アサイン論理ブロックに含まれる１６個分の小ブロックが全て消去済みに設定されていることを確認すると、旧アサイン論理ブロック（ＰＢＡ：０ｘ１００）内の残りのデータの引越し動作が不要であると判断して、データ消去処理のみを実行する。このデータ消去処理の後、コントローラ２は、ゾーン０に対応する論物変換テーブル９Ｂを初期化する。
【００７６】
以上のように、本実施形態１のメモリカード１では、ホスト装置２０がメモリカード１にアクセスする際に設定する小ブロックカードの物理ブロックアドレス及び論理ブロックアドレスと、その小ブロック単位のデータ消去状態を示すフラグＳＥＦとを対応付けて記憶する小ブロック物理・論理ブロックアドレステーブル９ＡをＲＡＭ９に格納し、不揮発性半導体記憶装置２０内でデータ処理単位に設定される大ブロックカードの物理ブロックアドレスと、その大ブロックに含まれる複数の小ブロックの連続する論理ブロックアドレスと、その大ブロック内のデータ消去状態を示すフラグＬＥＦとを対応付けて記憶する論物変換テーブル９ＢをＲＡＭ９に格納するようにした。メモリカード１内のコントローラ２は、ホスト装置２０から書込コマンド（コマンド種別情報であるＷｒｉｔｅと、アドレスＡｄ（１６ｋＢｙｔｅブロック単位の物理ブロックアドレス）と、データＲ０と、付随データ（論理ブロックアドレスを含む）を含む）を受け付けた際に、論理ブロックアドレスを取得し、その論理ブロックアドレスに基づいて、小ブロック物理・論理ブロックアドレステーブル９Ａを参照して、大ブロックの一部の小ブロックのみの書き換えであることを確認すると、その書き換え対象データが含まれる大ブロック（旧アサイン論理ブロック）内の全小ブロックのデータが消去済みか否かを、論物変換テーブル９Ｂ内の該当するフラグＬＥＦにより確認するようにした。そして、コントローラ２は、フラグＬＥＦが「１：全小ブロック未アサイン」に設定されていること、すなわち、旧アサイン論理ブロックに含まれる１６個分の小ブロックが全て消去済みに設定されていることを確認すると、旧アサイン論理ブロック内の書き換え対象データ以外の残りのデータの新アサイン論理ブロックへのデータ引越し動作を行わずに、旧アサイン論理ブロック内のデータ消去動作のみを行うようにした。
【００７７】
したがって、メモリカード１内における無駄なデータ引越し動作を低減することが可能になり、その動作によるオーバーヘッドを削減することができる。
【００７８】
また、上記実施形態１では、データ書込処理に際して、大ブロック内のデータ消去処理を実行する前に小ブロック物理・論理ブロックアドレステーブル９Ａ及び論物変換テーブル６Ｂをメモリセル７内にバックアップするようにしたため、論物変換テーブル９Ｂを初期化する前のゾーンのアサイン状態を保存することが可能になる。すなわち、ホスト装置２０側の電源が遮断されたり、メモリカード１がホスト装置２０から外されたりして、メモリカード１への電源供給が遮断されて、ＲＡＭ９内に格納する小ブロック物理・論理ブロックアドレステーブル９Ａ及び論物変換テーブル９Ｂが不用意に消去されることを防止することができる。
【００７９】
なお、上記実施形態１では、データ書き込み動作の場合を説明したが、データ読み出し動作においても、同様に無駄なデータ引越し動作を低減することは可能である。また、上記実施形態１では、コントローラ２内のＣＰＵ４は、ＲＯＭ５内に記憶された制御プログラムを読み出してＲＡＭ５内に展開して制御を行う場合を説明したが、この構成に限るものではない。例えば、コントローラ２内にＲＡＭ６のみを実装し、メモリセル７内に格納した制御プログラムを読み出してＲＡＭ５内に展開して制御を行うようにしてもよい。
【００８０】
（実施形態２）
本実施形態２では、頻繁に変更される追記データを格納する領域として、メモリセル内に随時割り当てられるキャッシュブロック（上記実施形態１の大ブロックに対応）に着目し、このキャッシュブロックにおけるデータ引越し動作を低減する場合について説明する。
【００８１】
なお、本実施形態２に係るメモリシステムの概略構成は、上記実施形態１の図１に示したものと同様であるため、その図示及び構成説明は省略する。
【００８２】
メモリカード１では、ホスト装置２０から実データの書込コマンドを受け付けてシーケンシャルな書き込み動作を行う場合以外に、ホスト装置２０から特定データの書込コマンドを受け付けてシーケンシャルではない書き込み動作を行う場合がある。特定データは、実データ以外のデータであり、例えば、ＦＡＴ（File Allocation Tables）データ等の管理データのことである。この特定データの書込コマンドには、特定の固定された物理ブロックアドレスと論理ブロックアドレスが設定されている。
【００８３】
メモリカード１のコントローラ２は、上記特定データの書込コマンドを受け付けると、その書込コマンドに設定された論理ブロックアドレスが上記のような旧アサイン論理ブロックに含まれる連続する論理ブロックアドレスではないため、特定データを新たに書き込むために、メモリセル１０内に新アサイン論理ブロックを設定することになる。そして、特定データの書込コマンドが頻発すると、その度に、メモリセル１０内に特定データのみを書き込んだ新アサイン論理ブロックが増加することになり、無駄な空き領域が増大していくことになる。このような事態を回避するため、メモリカード１では、特定データの書込コマンドを受け付け場合に、その特定データだけを追記して書き込むブロック（上記大ブロックカード単位に対応）をメモリセル１０内に設定している。この特定データを追記により書き込むブロックのことを「キャッシュブロック」と称す場合がある。したがって、メモリカード１側でキャッシュブロックを設定することにより、ホスト装置２０からのランダムな特定データの書込操作が頻発した場合に、メモリセル１０内に無駄な空き領域が増大していくことを防止することが可能になる。
【００８４】
また、１つのキャッシュブロックへの特定データの追記だけでは間に合わない場合は、更に、別のキャッシュブロックをメモリセル１０内に確保する必要が生じる。この場合、キャッシュブロック間で特定データの上記データ引越動作が発生する可能性がある。すなわち、キャッシュブロックの数が増えていくと、キャッシュブロック間で消去済み（未アサイン）の特定データのデータ引越動作が発生して、オーバーヘッドを増大させる可能性がある。しかし、上記実施形態１のデータ書込処理（図７参照）において示したデータ消去処理では、キャッシュブロック内の特定データが消去済み（未アサイン）か否かを確認して消去することには対応していない。そこで、本実施形態２では、上記フラグＺＥＦを利用して、キャッシュブロックに格納された特定データが消去済み（未アサイン）か否かを確認して消去済み（未アサイン）とする処理について説明する。
【００８５】
以下、本実施形態２に係るキャッシュブロック消去処理について、図９に示すフローチャートを参照して説明する。なお、本処理は、例えば、ホスト装置２０からのアクセスがない所定のタイミングで実行するものとする。また、ＲＡＭ９内には、キャッシュブロックの物理ブロックアドレスと、そのキャッシュブロックに含まれる１６ｋＢｙｔｅブロック単位×１６個分の論理ブロックアドレスと、キャッシュブロック単位に設定する上記フラグＬＥＦと、を対応付けて管理するキャッシュブロック管理テーブル（図示せず）を格納しているものとする。
【００８６】
コントローラ２は、ホスト装置２０から所定時間アクセスが無いことを確認する(ステップＳ３０１)。この場合、例えば、予め所定時間を設定したタイマ等を利用して、ホスト装置２０からアクセスが無い期間を確認するようにしてもよい。
【００８７】
ホスト装置２０から所定時間アクセスが無いことを確認すると(ステップＳ３０１：Ｙｅｓ)、コントローラ２は、上記実施形態１に示したゾーン０（Ｚｏｎｅ０）の小ブロック物理・論理ブロックアドレステーブル９Ａに格納されたフラグＺＥＦを初めとして、他のゾーン１〜１２７（Ｚｏｎｅ１〜１２７）の小ブロック物理・論理ブロックアドレステーブル（図示せず）に格納されたフラグＺＥＦが全て「１：全小ブロック未アサイン」に設定されているか否かを確認する(ステップＳ３０２)。全ゾーン０〜１２７（Ｚｏｎｅ０〜１２７）のフラグＺＥＦが「１」に設定されていることを確認すると(ステップＳ３０２：Ｙｅｓ)、コントローラ２は、すなわち、メモリセル１０内の全領域が消去済み（全小ブロック未アサイン）であることを確認すると、キャッシュブロック内の全小ブロックの追記データを消去（実際は、実データを消去するわけではなく、フラグＬＥＦを「１：未アサイン」に設定）する(ステップＳ３０３)。
【００８８】
次に、コントローラ２は、ＲＡＭ９に格納する上記キャッシュブロック管理テーブルを初期化して(ステップＳ３０４)、本キャッシュブロック消去処理を終了する。また、ステップＳ３０１において、コントローラ２は、ホスト装置２０からのアクセスを受け付けた場合は(ステップＳ３０１：Ｎｏ)、ステップＳ３０１の処理を継続する。また、ステップＳ３０２において、コントローラ２は、全ゾーン０〜１２７（Ｚｏｎｅ０〜１２７）のフラグＺＥＦが「１」に設定されていないことを確認した場合は(ステップＳ３０２：Ｎｏ)、本キャッシュブロック消去処理を終了する。
【００８９】
以上のように、本実施形態２のメモリカード１では、ホスト装置２０から特定データの書込コマンドを受け付けた際に、メモリセル１０内に設定するキャッシュブロックに書き込まれた特定データの消去処理と、その管理情報の初期化処理を、ゾーン単位に設定されたフラグＺＥＦを確認することを契機として実行するようにした。
【００９０】
したがって、メモリカード１においてフラグＺＥＦを利用したキャッシュブロック内のデータの消去処理や管理情報の初期化処理を実行する機能を実装することにより、複雑な動作を伴うキャッシュブロック内の特定データが不要になったことを確認して消去することが可能になり、メモリセル１０内の領域を有効利用することができる。また、複雑な動作を伴うキャッシュブロックの管理情報を、例えば、ホスト装置２０側でフォーマット操作が行われるタイミング等に合わせて初期化することが可能になる。
【００９１】
なお、上記実施形態２では、キャッシュブロック内のデータの消去処理及び管理情報の初期化処理は、フラグＺＥＦの確認を契機として実行する場合を示したが、これに限らず、例えば、上記大ブロックカード単位に設定いるフラグＬＥＦを同様のタイミングで確認することを契機として実行するようにしてもよい。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態１に係るメモリカードの概略構成を示す図である。
【図２】本発明の実施形態１に係る（ａ）はホスト装置が想定する不揮発性半導体記憶装置のデータ配置を示す図、（ｂ）は実際に使用する不揮発性半導体記憶装置のデータ配置を示す図である。
【図３】本発明の実施形態１に係る小ブロック物理・論理ブロックアドレステーブルの一例を示す図である。
【図４】本発明の実施形態１に係る論物変換テーブルの一例を示す図である。
【図５】本発明の実施形態１に係るデータ引越し動作の概要を説明するための図である。
【図６】本発明の実施形態１に係るデータ消去処理を示すフローチャートである。
【図７】本発明の実施形態１に係るデータ書込処理を示すフローチャートである。
【図８】本発明の実施形態１に係るデータ書込動作の具体例を示す図である。
【図９】本発明の実施形態２に係るキャッシュブロック消去処理を示すフローチャートである。
【符号の説明】
【００９３】
１  メモリカード
２  コントローラ
３  不揮発性半導体記憶装置
４  ホストＩ／Ｆ
５  メモリＩ／Ｆ
６  バッファ
７  ＣＰＵ
８  ＲＯＭ
９  ＲＡＭ
９Ａ、  小ブロック物理・論理ブロックアドレステーブル
９Ｂ  論物変換テーブル
１０  メモリセル
２０  ホスト装置
【図１】
2008305026.tif 000003
【図２】
2008305026.tif 000004
【図３】
2008305026.tif 000005
【図４】
2008305026.tif 000006
【図５】
2008305026.tif 000007
【図６】
2008305026.tif 000008
【図７】
2008305026.tif 000009
【図８】
2008305026.tif 000010
【図９】
2008305026.tif 000011