(57)【要約】【課題】連続した論理アドレスへのデータ書込み動作時の無駄なコピー処理をなくし、書込み性能を向上させ得るフラッシュストレージメディアを提供する。【解決手段】フラッシュストレージメディアが、ホスト機器から入力される論理セクタアドレスを、複数の論理セクタアドレスで構成された論理クラスタアドレスに変換する手段と、該論理クラスタアドレスに対応付けられる物理ブロックで構成されたユーザブロック領域と、消去状態にある物理ブロックで構成された消去ブロック領域と、対応付けられる物理ブロックが２つ存在する論理クラスタアドレスが存在し、これら２つの物理ブロックにそれぞれ有効なデータと無効なデータとが存在する場合に、ホスト機器から入力される論理セクタアドレスから、対応付けられた物理ブロックを取得する手段と、上記消去ブロック領域の物理ブロックと、ユーザブロック領域の物理ブロックとを入れ替える手段を具備する。【選択図】　　　　図１
2004062328.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリを搭載し、該フラッシュメモリへのアクセス単位がフラッシュメモリの消去単位よりも小さいフラッシュストレージメディアにおいて、
上記アクセス単位となる複数のセクタから構成されるクラスタ単位でメディア内部の管理を行なうべく、所定のホスト機器から入力される論理セクタアドレスを、複数の論理セクタアドレスで構成された論理クラスタアドレスに変換する手段と、
上記フラッシュメモリ内に規定される領域であり、上記論理クラスタアドレスに対応付けられるフラッシュメモリ物理ブロックで構成されたユーザブロック領域と、
上記フラッシュメモリ内に規定される領域であり、消去状態にあるフラッシュメモリ物理ブロックで構成された消去ブロック領域と、
対応付けられるフラッシュメモリ物理ブロックが２つ存在する論理クラスタアドレスが存在し、これら２つのフラッシュメモリ物理ブロックにそれぞれ有効なデータと無効なデータとが存在する場合に、ホスト機器から入力される論理セクタアドレスから、対応付けられたフラッシュメモリ物理ブロックを取得する手段と、
上記消去ブロック領域のフラッシュメモリ物理ブロックと、ユーザブロック領域のフラッシュメモリ物理ブロックとを入れ替える手段とを有していることを特徴とするフラッシュストレージメディア。
【請求項２】
更に、上記論理クラスタアドレスに対応付けられたフラッシュメモリ物理ブロックが、消去状態及びデータ書込み状態のいずれにあるかを識別する手段と、
上記フラッシュメモリ物理ブロックの消去状態およびデータ書込み状態に基づき、フラッシュストレージメディア内部の処理フローを変更する手段とを有していることを特徴とする請求項１記載のフラッシュストレージメディア。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＮＡＮＤ型フラッシュメモリを搭載したフラッシュストレージメディアに関する。
【０００２】
【従来の技術】
周知の通り、パーソナルコンピュータ，デジタルカメラ又はＰＤＡ等の機器間でデータのやり取りを行なうために、各機器に取外し可能に装填され、テキスト，画像又は音楽情報を記録する媒体として、コンパクトフラッシュ（登録商標），スマートメディア等のフラッシュストレージメディアが広く普及している。このフラッシュストレージメディアは、電気的なデータ消去・書込みが可能な不揮発性のフラッシュメモリを搭載したものであり、このようなフラッシュメモリとしては、一般的に、消去及び書込み速度が速く大容量化に適したＮＡＮＤ型のフラッシュメモリが用いられる。
【０００３】
ＮＡＮＤ型フラッシュメモリは、８ビット分又は１６ビット分の記憶用トランジスタが一組をなし直列に接続されて、各組に２つの選択用トランジスタが接続される回路構成を備えており、かかる回路構成を備えたフラッシュメモリでは、データの書込み先が消去済みでない限り、データの書込みが不可能となっている。このため、ＮＡＮＤ型フラッシュメモリを搭載したフラッシュストレージメディアにおいては、従来、フラッシュストレージメディアの論理アドレス（プログラムが指定するメモリアドレス）に対して物理アドレス（実際のメモリに割り当てられているアドレス）を割り当て、データ書込み時に、指定された論理アドレスに対応して割り当てられている物理アドレスを消去した上で、データを書き込むというシーケンスが採用されている。
【０００４】
ところで、一般的なフラッシュストレージメディアとしては、フラッシュストレージメディア自体のメモリアクセス単位（セクタ）が、ＮＡＮＤ型フラッシュメモリの消去単位（ブロック）よりも小さい場合が多い。このため、上記のシーケンスでは、データ書込み時に、ブロック内の既に書き込まれているデータを、一旦保管して新たに書き込むデータと合成して書き込むことが行なわれる。
【０００５】
【発明が解決しようとする課題】
しかしながら、かかるシーケンスにおいては、次に連続した論理アドレスに対する書込みが行なわれる場合に、再度書き込むデータを合成する必要があり、無駄な処理が発生し、メディアのデータ書込みパフォーマンスが低下するという問題がある。
【０００６】
本発明は、上記技術的課題に鑑みてなされたもので、ＮＡＮＤ型フラッシュメモリの消去単位よりも小さいアクセス単位をもつフラッシュストレージメディアにおいて、連続した論理アドレスへのデータ書込み動作における無駄な処理の発生をなくし、データ書込みパフォーマンスを向上させ得るフラッシュストレージメディアを提供することを目的とする。
【０００７】
【課題を解決するための手段】
本願の第１の発明は、ＮＡＮＤ型フラッシュメモリを搭載し、該フラッシュメモリへのアクセス単位がフラッシュメモリの消去単位よりも小さいフラッシュストレージメディアにおいて、上記アクセス単位となる複数のセクタから構成されるクラスタ単位でメディア内部の管理を行なうべく、所定のホスト機器から入力される論理セクタアドレスを、複数の論理セクタアドレスで構成された論理クラスタアドレスに変換する手段と、上記フラッシュメモリ内に規定される領域であり、上記論理クラスタアドレスに対応付けられるフラッシュメモリ物理ブロックで構成されたユーザブロック領域と、上記フラッシュメモリ内に規定される領域であり、消去状態にあるフラッシュメモリ物理ブロックで構成された消去ブロック領域と、対応付けられるフラッシュメモリ物理ブロックが２つ存在する論理クラスタアドレスが存在し、これら２つのフラッシュメモリ物理ブロックにそれぞれ有効なデータと無効なデータとが存在する場合に、ホスト機器から入力される論理セクタアドレスから、対応付けられたフラッシュメモリ物理ブロックを取得する手段と、上記消去ブロック領域のフラッシュメモリ物理ブロックと、ユーザブロック領域のフラッシュメモリ物理ブロックとを入れ替える手段とを有していることを特徴としたものである。
【０００８】
また、本願の第２の発明は、更に、上記論理クラスタアドレスに対応付けられたフラッシュメモリ物理ブロックが、消去状態及びデータ書込み状態のいずれにあるかを識別する手段と、上記フラッシュメモリ物理ブロックの消去状態およびデータ書込み状態に基づき、フラッシュストレージメディア内部の処理フローを変更する手段とを有していることを特徴としたものである。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態について、添付図面を参照しながら説明する。
なお、以下に説明する実施の形態では、フラッシュストレージメディアのアクセス単位（セクタ）が、それに搭載されるＮＡＮＤ型フラッシュメモリの消去単位（ブロック）よりも小さく、書込み単位（ページ）と同じである例を取り上げる。
実施の形態１．
図１は、本発明の実施の形態１に係るフラッシュストレージメディアの内部構成を示すブロック図である。このフラッシュストレージメディア１０は、ＣＰＵ１と、ＣＰＵメインメモリ２と、第１及び第２のテーブルバッファ３及び４と、データバッファ５と、フラッシュインターフェース（図中のフラッシュＩ／Ｆ）６と、ホストインターフェース（図中のホストＩ／Ｆ）７と、シーケンサ８と、ＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリという）９とを有している。
【００１０】
ＣＰＵ１は、パーソナルコンピュータ，デジタルカメラ，ＰＤＡ等のホスト機器（不図示）側とデータのやり取りを実行すべく、フラッシュストレージメディア内部の制御を行なう。ＣＰＵメインメモリ２には、ＣＰＵ１の動作フローが格納されており、ＣＰＵ１は、ホスト機器側からのアクセスの種類毎に、対応するフローをＣＰＵメインメモリ２から読み出して実行する。
【００１１】
第１及び第２のテーブルバッファ３及び４は、フラッシュメモリ９内に格納されているポインタテーブル，ユーザブロック管理テーブル若しくは消去ブロック管理テーブルを読み出して一時的に格納するためのバッファメモリである。データバッファ５は、フラッシュメモリ９に格納されているユーザデータを読み出して格納し、ホスト機器へ出力するに際して若しくはホスト機器からデータを受け取りフラッシュメモリ９へ書き込むに際して使用されるバッファメモリである。
【００１２】
フラッシュＩ／Ｆ６は、フラッシュメモリ９へのアクセスを実行する際の信号を生成する部分である。ホストＩ／Ｆ７は、ホスト機器からのアクセス信号を制御する部分である。シーケンサ８は、フラッシュメモリ９へのアクセスシーケンス若しくはホスト機器からのデータ転送シーケンスを制御する部分であり、ＣＰＵ１は、シーケンサ８を使用してホスト機器へのデータ入／出力を行なったり、フラッシュメモリ９へのデータ書込みやフラッシュメモリ９からのデータ入力を行なったりする。
【００１３】
図２は、フラッシュメモリ９内に規定されるブロック構成を示す図である。この図から分かるように、フラッシュメモリ９の内部には、それぞれ特定の情報を記録するためのブロック領域として、ポインタテーブルを格納するブロック領域（以下、ポインタテーブル用ブロック領域という）１１Ａと、ユーザブロック領域１１Ｄを管理するためのテーブルを格納するブロック領域（以下、ユーザブロック管理テーブル用ブロックという）１１Ｂと、消去ブロック領域１１Ｅを管理するためのテーブルを格納するブロック領域（以下、消去ブロック管理テーブル用ブロック領域という）１１Ｃと、ユーザブロック領域１１Ｄと、消去ブロック領域１１Ｅとが規定されている。各ブロック領域には、フラッシュメモリ９における総物理ブロックのうち、それぞれ所定数の物理ブロックが割り当てられている。
【００１４】
まず、ポインタテーブル用ブロック領域１１Ａには、１つ分の物理ブロックが割り当てられている。図３に、ポインタテーブル用ブロック領域１１Ａ内に格納されるポインタテーブルの構成を示す。ポインタテーブル内には、ユーザブロック管理テーブルが格納されているフラッシュメモリ９の物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫや消去ブロック管理テーブルが格納されているフラッシュメモリ９の物理ブロックアドレス＊ＥＲＳＴＢＬＢＬＫ等の、フラッシュメモリ９のアドレス空間における各種情報の位置をあらわすフラッシュメモリ９の物理ブロックアドレスが格納される。
【００１５】
かかるポインタテーブルは、フラッシュメモリ９において、物理ブロックアドレス「０」に格納されるように構成されており、ＣＰＵ１は、パワー・オン・リセット時に、まず、ポインタテーブルを、第１のテーブルバッファ３に読み出し、上記の物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫや＊ＥＲＳＴＢＬＢＬＫの値を、テーブルバッファ３内に格納する。
【００１６】
また、図２から分かるように、ユーザブロック管理テーブル用ブロック領域１１Ｂには、１つ分の物理ブロックが割り当てられている。図４に、ユーザブロック管理テーブルによりそのアドレスが制御されるユーザブロック領域１１Ｄ内の構成を示す。この実施の形態では、フラッシュストレージメディア１０の論理セクタアドレスに対して、フラッシュメモリ９の１つの物理セクタアドレスが対応付けられる。このとき、フラッシュメモリ９の物理ブロック内のページには、連続した論理セクタアドレスが対応付けられる。また、内部管理のために、１つの物理ブロックで構成される論理セクタの集まりを論理クラスタとし、１つの論理クラスタアドレスに対して、１つの物理ブロックアドレスが対応付けられる。
【００１７】
なお、図４に示す例では、フラッシュメモリ９の物理ブロックが３２の物理メモリページで構成されており、３２の論理セクタで１つの論理クラスタを構成する場合について説明する。ユーザブロック領域１１Ｄにおいては、フラッシュストレージメディア１０がｎ個の論理クラスタアドレスをもつ場合、フラッシュメモリ９のｎの物理ブロックが割り当てられる。
【００１８】
より詳しくは、フラッシュストレージメディア１０の論理クラスタアドレス０ｈ，１ｈ，２ｈ，．．．，（ｎ−１）ｈは、それぞれ、フラッシュストレージメディア１０の論理セクタアドレスの組｛０ｈ，１ｈ，．．．，１Ｆｈ｝，｛２０ｈ，２１ｈ，．．．，３Ｆｈ｝，｛４０ｈ，４１ｈ，．．．，５Ｆｈ｝，．．．，｛３２（ｎ−１）ｈ，３２（ｎ−１）＋１ｈ，．．．，３２（ｎ−１）＋１Ｆｈ｝に対応付けられる。このフラッシュストレージメディア１０の論理セクタアドレスの組は、それぞれ、フラッシュメモリ９の物理セクタアドレスの組に対応付けられる。例えば、フラッシュストレージメディア１０の論理セクタアドレスの組｛２０ｈ，２１ｈ，．．．，３Ｆｈ｝を構成する論理セクタアドレス２０ｈ，２１，．．．，３Ｆｈは、それぞれ、フラッシュメモリ９の物理セクタアドレス（ｖｖ２×３２＋０）ｈ，（ｖｖ２×３２＋１）ｈ，．．．，（ｖｖ２×３２＋１Ｆ）ｈに対応付けられている。
【００１９】
更に、フラッシュメモリ９の物理セクタアドレスの組は、それぞれ、フラッシュメモリ９の物理ブロックアドレスに対応付けられる。例えば、物理セクタアドレス（ｖｖ１×３２＋０）ｈ，（ｖｖ１×３２＋１）ｈ，．．．，（ｖｖ１×３２＋１Ｆ）からなる物理セクタアドレスの組は、物理ブロックアドレスｖｖ１ｈに対応付けられ、また、物理セクタアドレス（ｖｖｎ×３２＋０）ｈ，（ｖｖｎ×３２＋１）ｈ，．．．，（ｖｖｎ×３２＋１Ｆ）からなる物理セクタアドレスの組は、物理ブロックアドレス「ｖｖｎｈ」に対応付けられる。
【００２０】
以上の結果として、前述したように、フラッシュストレージメディア１０の論理クラスタアドレス０ｈ，１ｈ，２ｈ，．．．，（ｎ−１）ｈは、それぞれ、フラッシュメモリ９の物理ブロックアドレスｖｖ１ｈ，ｖｖ２ｈ，ｖｖ３ｈ，．．．，ｖｖｎｈに対応付けられる。
【００２１】
また、図５には、ユーザブロック管理テーブル用ブロック領域１１Ｂに格納されるユーザブロック管理テーブルの構成を示す。ユーザブロック管理テーブルの各オフセット０，１，２，３，４，．．．，ｎ−２，ｎ−１には、各論理クラスタアドレス０ｈ，１ｈ，２ｈ，３ｈ，４ｈ，．．．，（ｎ−２）ｈ，（ｎ−１）ｈに割り当てられたフラッシュメモリ９の物理ブロックアドレスが格納されている。
【００２２】
また、このユーザブロック管理テーブル用ブロック領域１１Ｂには、フラッシュストレージメディア１０の各論理クラスタアドレスに割り当てられたフラッシュメモリ９の物理ブロックアドレスが格納されるオフセットよりも上位階層のオフセットに対して、分割使用中のフラッシュメモリ９の物理ブロックアドレス＊ＤＩＶＢＬＫ，分割中のテーブル内オフセット＊ＤＩＶＯＦＳＴ，分割境界ページ番号＊ＤＩＶＦＳＣＴ等が格納されている。
【００２３】
ところで、ユーザブロック領域１１Ｄには、図６の（ａ）に示すような、１つの論理クラスタアドレスｘに対して有効なデータが１つのフラッシュメモリ９の物理ブロックに格納されている論理クラスタアドレスと、図６の（ｂ）に示すような、有効なデータが２つのフラッシュメモリ９の物理ブロックに分割して格納されている論理クラスタアドレスとが存在する。
なお、図中の「有効なデータ」とは、所定の物理ブロックアドレスに書き込まれた必要なデータを指し、「無効なデータ」とは、所定の物理ブロックに書き込まれるものの、必要でないデータを指し、更に、「イレーズ状態」とは、データが存在しない状態を指す。
【００２４】
ここで、分割中のテーブル内オフセットは、フラッシュメモリ９の２つの物理ブロックに分割して格納される論理クラスタアドレスをあらわすものである。論理クラスタアドレスの有効なデータは、図６の（ｂ）に示すように、ユーザブロック管理テーブルのオフセット＊ＤＩＶＯＦＳＴに格納されているフラッシュメモリ９の物理ブロックアドレス＊（ＳＲＣＢＬＫ＋＊ＤＩＶＯＦＳＴ）の分割境界ページ番号＊ＤＩＶＦＳＣＴ以上のページと、分割使用中のフラッシュメモリの物理ブロックアドレス＊ＤＩＶＢＬＫの分割境界ページ番号＊ＤＩＶＦＳＣＴより下位階層のページとに分割されて格納されている。
【００２５】
続いて、消去ブロック管理テーブル用ブロック１１Ｃについて説明する。図２から分かるように、フラッシュメモリ９にて、消去ブロック管理テーブル用ブロック領域１１Ｃには、１つの物理ブロックアドレスが割り当てられている。図７に、消去ブロック管理テーブル用ブロック領域１１Ｃ内の構成を示す。消去ブロック管理テーブル用ブロック領域１１Ｃには、フラッシュメモリ９の消去済みの物理ブロックアドレス０，１，２，３，・・・，ｍ−２，ｍ−１が割り当てられている。ここで、ｍは、消去ブロック領域１１Ｅに割り当てられる物理ブロックの数である。フラッシュメモリにおける有効な物理ブロックの総数を“ＴｏｔａｌＢｌｋ”とすると、ｍは、ユーザブロック領域１１Ｄにｎブロック，消去ブロック管理テーブル用ブロック領域１１Ｃに１ブロック，ユーザブロック管理テーブル用ブロック領域１１Ｂに１ブロック，ポインタテーブル用ブロック領域１１Ａに１ブロックが割り当てられた場合に残った物理ブロックの数であり、ｍ＝ＴｏｔａｌＢｌｋ−ｎ−１−１−１であらわされる。
【００２６】
図７に示すように、消去ブロック管理テーブル用ブロック領域１１Ｃには、消去済みの物理ブロックアドレスとともに、消去ブロック管理テーブル用ブロック領域１１Ｃには、現在のオフセット＊ＣＵＲＯＦＳＴ，最大のオフセット＊ＭＡＸＯＦＳＴが格納されている。「現在のオフセット」とは、次に使用すべきフラッシュメモリ９の消去済みの物理ブロックアドレスが格納されるオフセットをあらわし、他方、「最大のオフセット」とは、消去ブロック管理テーブルに格納されるフラッシュメモリ９の消去済みの物理ブロックアドレスの数をあらわしている。
【００２７】
続いて、図８に、ホスト機器側から論理セクタアドレスｘｈのデータ読出し要求があった場合における、フラッシュストレージメディア１０の内部処理についてのフローチャートを示す。この処理では、まず、ステップ１１（以下、Ｓ１１と表記）において、アクセスする論理セクタアドレスｘｈをホストＩ／Ｆ７から取得し、Ｓ１２において、取得した論理セクタアドレスｘｈから、論理クラスタアドレスｘ’ｈを、
ｘ’　＝　ｘ　÷　３２
で計算する。
【００２８】
続いて、Ｓ１３では、ブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅを、
ＦｍＰａｇｅ　＝　ｘ　％　３２
で計算する。
【００２９】
次に、Ｓ１４では、ユーザブロック管理テーブルが格納されるフラッシュメモリ９の物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫに基づき、ユーザブロック管理テーブルを第１のテーブルバッファ３に読み出し、また、Ｓ１５では、消去ブロック管理テーブルが格納されるフラッシュメモリ９の物理ブロックアドレスである＊ＥＲＳＴＢＬＢＬＫに基づき、消去ブロック管理テーブルを第２のテーブルバッファ４に読み出す。
【００３０】
更に、Ｓ１６では、Ｓ１２にて算出されたｘ’が、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴに等しい（ｘ’＝＊ＤＩＶＦＳＣＴ）か否かを判定する。ＹＥＳである場合には、Ｓ１７へ進み、他方、ＮＯである場合には、Ｓ１９へ進む。
【００３１】
Ｓ１７では、ブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅが、上記の分割境界ページ番号の値＊ＤＩＶＦＳＣＴよりも小さい（ＦｍＰａｇｅ＜＊ＤＩＶＦＳＣＴ）か否かを判定する。
ＮＯである場合には、Ｓ１９へ進み、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリ９の物理ブロックアドレスＲｄＢｌｋを取得した上で（すなわちＲｄＢｌｋ＝＊（ＳＲＣＢＬＫ＋ｘ’））、Ｓ２０へ進む。
他方、ＹＥＳである場合には、Ｓ１８へ進み、分割中のフラッシュメモリ９の物理ブロックアドレスＲｄＢｌｋを取得した上で（ＲｄＢｌｋ＝＊ＤＩＶＢＬＫ）、Ｓ２０へ進む。
【００３２】
Ｓ２０では、上記物理ブロックアドレスＲｄＢｌｋのページ番号ＦｍＰａｇｅからデータバッファ５にデータを読み出す。そして、最後に、データバッファ５のデータをホスト機器に出力する。以上で、処理を終了する。
【００３３】
このように、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリ９の物理ブロックアドレスＲｄＢｌｋをユーザブロック管理テーブルから取得するに際して、論理クラスタアドレスｘ’ｈがフラッシュメモリ９の２つの物理ブロックに分割されている場合には、どちらの物理ブロックに有効なデータが格納されているかを識別した上でＲｄＢｌｋを取得し、そのＲｄＢｌｋに基づきデータを読み出して、ホスト機器へ出力する。
【００３４】
続いて、図９〜１２に、ホスト機器側から論理セクタアドレスｘｈへのデータ書込み要求があった場合における、フラッシュストレージメディア１０の内部処理についてのフローチャートを示す。この処理では、まず、Ｓ３１において、ホストＩ／Ｆ７から論理セクタアドレスｘｈを取得し、Ｓ３２において、その論理セクタアドレスｘｈから、論理クラスタアドレスｘ’ｈを、
ｘ’　＝　ｘ　÷　３２
で計算する。
【００３５】
続いて、Ｓ３３において、ブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅを、
ＦｍＰａｇｅ　＝　ｘ　％　３２
で計算する。
【００３６】
次に、Ｓ３４において、ユーザブロック管理テーブルが格納されるフラッシュメモリ９の物理ブロックアドレスである＊ＵＳＲＴＢＬＢＬＫに基づき、ユーザブロック管理テーブルを第１のテーブルバッファ３に読み出す。
また、Ｓ３５において、消去ブロック管理テーブルが格納されるフラッシュメモリ９の物理ブロックアドレスである＊ＥＲＳＴＢＬＢＬＫに基づき、消去ブロック管理テーブルを第２のテーブルバッファ４に読み出す。
【００３７】
更に、Ｓ３６において、ユーザブロック管理テーブル内の分割中のテーブル内オフセットの値＊ＤＩＶＯＦＳＴが０である（＊ＤＩＶＯＦＳＴ＝０）か否かを判定する。ＹＥＳである場合には、Ｓ３７へ進み、その＊ＤＩＶＯＦＳＴがＳ３２で計算したｘ’である（＊ＤＩＶＯＦＳＴ＝ｘ’）と認識した上で、Ｓ３８へ進む。他方、ＮＯである場合には、Ｓ３８へ直接進む。
【００３８】
Ｓ３８では、ｘ’＝＊ＤＩＶＯＦＳＴであるか否かを判定し、ＹＥＳの場合には、Ｓ３９へ進み、他方、ＮＯの場合には、Ｓ４０へ進む。
Ｓ３９では、上記のページ番号ＦｍＰａｇｅが、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴ以上である（ＦｍＰａｇｅ≧＊ＤＩＶＦＳＣＴ）か否かを判定し、ＹＥＳの場合には、図中のＢを経由して、図１１のＳ５５に進み、ＮＯの場合には、Ｓ４０へ進む。
【００３９】
Ｓ４０では、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳｒｃＢｌｋを取得する（すなわちＳｒｃＢｌｋ＝＊（ＳＲＣＢＬＫ＋ｘ’））。
続いて、Ｓ４１では、分割中の物理ブロックアドレスＤｉｖＢｌｋとして、ユーザブロック管理テーブル内の分割使用中のフラッシュメモリの物理ブロックアドレスの値＊ＤＩＶＢＬＫを取得する（ＤｉｖＢｌｋ＝＊ＤＩＶＢＬＫ）。
更に、Ｓ４２では、図６の（ｂ）に示すように有効なデータが２つの物理ブロックに分割されて格納されている場合の境界にあたるブロック内のフラッシュメモリのページ番号（以下、分割境界ページ番号という）ＤｉｖＰａｇｅとして、上記の分割境界ページ番号の値＊ＤＩＶＦＳＣＴを取得する（ＤｉｖＰａｇｅ＝＊ＤＩＶＦＳＣＴ）。次に、Ｓ４３では、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴを更新する（＊ＤＩＶＦＳＣＴ＝０）。そして、図中のＡを経由して、図１０のＳ４４へ進む。
【００４０】
Ｓ４４では、上記の物理ブロックアドレスＳｒｃＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに基づき、データバッファ５へデータを読み出す。
Ｓ４５では、データバッファ５のデータを、上記の分割中のフラッシュメモリ物理ブロックアドレスＤｉｖＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに書き込む。
【００４１】
Ｓ４６では、上記の物理ブロックアドレスＳｒｃＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅを更新する（ＤｉｖＰａｇｅ＝ＤｉｖＰａｇｅ＋１）。
Ｓ４７では、上記の分割境界ページ番号ＤｉｖＰａｇｅについて、ＤｉｖＰａｇｅが３２である（ＤｉｖＰａｇｅ＝３２）か否かを判定する。ＹＥＳである場合には、Ｓ４８へ進み、他方、ＮＯである場合には、Ｓ４４へ戻り、以降の処理を繰り返す。
【００４２】
Ｓ４８では、上記の物理ブロックアドレスＳｒｃＢｌｋを消去（イレーズ）する。
Ｓ４９では、オフセットの値ＴｅｍｐＯｆｓｔとして、消去ブロック管理テーブルから現在のオフセットの値＊ＣＵＲＯＦＳＴを取得する（ＴｅｍｐＯｆｓｔ＝＊ＣＵＲＯＦＳＴ）。
Ｓ５０では、ユーザブロック管理テーブルを更新する。このとき、
＊（ＳＲＣＢＬＫ＋ｘ’）＝ＤｉｖＢｌｋ
＊ＤＩＶＢＬＫ＝＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）
を用いる。ＴＧＴＢＬＫとは、消去済みのフラッシュメモリの物理ブロックアドレス０をあらわし、ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔとは、消去ブロック管理テーブルのオフセットＯｆｓｔの値をあらわしている。
【００４３】
Ｓ５１では、消去ブロック管理テーブルを更新する。このとき、
＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）＝ＳｒｃＢｌｋ
を用いる。
更に、Ｓ５２では、上記の現在のオフセットの値＊ＣＵＲＯＦＳＴを更新する（＊ＣＵＲＯＦＳＴ＝＊ＣＵＲＯＦＳＴ＋１）。
【００４４】
Ｓ５３では、上記の現在のオフセットの値＊ＣＵＲＯＦＳＴが、消去ブロック管理テーブル内の最大のオフセットの値＊ＭＡＸＯＦＳＴである（＊ＣＵＲＯＦＳＴ＝＊ＭＡＸＯＦＳＴ）か否かを判定する。ＹＥＳである場合には、Ｓ５４へ進み、上記の現在のオフセット値＊ＣＵＲＯＦＳＴが０である（＊ＣＵＲＯＦＳＴ＝０）と認識した上で、図１１のＳ５５へ進む。他方、ＮＯである場合には、Ｓ５５へ直接進む。
【００４５】
Ｓ５５では、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳｒｃＢｌｋを取得する（ＳｒｃＢｌｋ＝＊（ＳＲＣＢＬＫ＋ｘ’））。
Ｓ５６では、分割中の物理ブロックアドレスＤｉｖＢｌｋを取得する（ＤｉｖＢｌｋ＝＊ＤＩＶＢＬＫ）。
Ｓ５７では、分割境界ページ番号ＤｉｖＰａｇｅを取得する（ＤｉｖＰａｇｅ＝＊ＤＩＶＦＳＣＴ）。
【００４６】
また、Ｓ５８では、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳｒｃＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅからデータバッファ５へデータを読み出す。
Ｓ５９では、データバッファ５のデータを、分割中の物理ブロックアドレスＤｉｖＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに書き込む。
Ｓ６０では、分割境界ページ番号ＤｉｖＰａｇｅを更新する（ＤｉｖＰａｇｅ＝ＤｉｖＰａｇｅ＋１）。
【００４７】
Ｓ６１では、分割境界ページ番号ＤｉｖＰａｇｅがブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅに等しい（ＤｉｖＰａｇｅ＝ＦｍＰａｇｅ）か否かを判定する。ＹＥＳである場合には、Ｓ６２へ進み、他方、ＮＯである場合には、Ｓ５８へ戻り、それ以降の処理を繰り返す。
Ｓ６２では、ホストＩ／Ｆ７からデータバッファ５に書き込むデータを取得する。
Ｓ６３では、データバッファ５のデータを、分割中の物理ブロックアドレスＤｉｖＢｌｋのブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅに書き込む。
Ｓ６４では、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴを更新する（＊ＤＩＶＦＳＣＴ＝ＦｍＰａｇｅ＋１）。
その後、図中のＣを経由して、図１２のＳ６５へ進む。
【００４８】
Ｓ６５では、まず、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴが３２である（＊ＤＩＶＦＳＣＴ＝３２）か否かを判定する。ＹＥＳである場合には、Ｓ６６へ進み、他方、ＮＯである場合には、Ｓ７４へ進む。
Ｓ６６では、ユーザブロック管理テーブル内の分割境界ページ番号の値＊ＤＩＶＦＳＣＴを０とする（＊ＤＩＶＦＳＣＴ＝０）。
Ｓ６７では、上記の物理ブロックアドレスＳｒｃＢｌｋを消去する。
Ｓ６８では、オフセットの値ＴｅｍｐＯｆｓｔとして、現在のオフセットの値＊ＣＵＲＯＦＳＴを取得する（ＴｅｍｐＯｆｓｔ＝＊ＣＵＲＯＦＳＴ）。
【００４９】
Ｓ６９では、ユーザブロック管理テーブルを更新する。このとき、
＊（ＳＲＣＢＬＫ＋ｘ’）＝ＤｉｖＢｌｋ
＊ＤＩＶＢＬＫ＝＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）
を用いる。
Ｓ７０では、消去ブロック管理テーブルを更新する。このとき、
＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）＝ＳｒｃＢｌｋ
を用いる。
Ｓ７１では、消去ブロック管理テーブル内の現在のオフセットの値＊ＣＵＲＯＦＳＴを更新する（＊ＣＵＲＯＦＳＴ＝＊ＣＵＲＯＦＳＴ＋１）。
【００５０】
Ｓ７２では、消去ブロック管理テーブル内の現在のオフセットの値＊ＣＵＲＯＦＳＴが、消去ブロック管理テーブル内の最大のオフセットの値＊ＭＡＸＯＦＳＴに等しい（＊ＣＵＲＯＦＳＴ＝＊ＭＡＸＯＦＳＴ）か否かを判定する。ＹＥＳである場合には、Ｓ７３へ進み、＊ＣＵＲＯＦＳＴ＝０とした上で、Ｓ７４へ進む。他方、ＮＯである場合には、Ｓ７４へ直接進む。
【００５１】
Ｓ７４では、消去ブロック管理テーブルが格納されているフラッシュメモリの物理ブロックアドレス＊ＥＲＳＴＢＬＢＬＫを消去する。
Ｓ７５では、消去後の＊ＥＲＳＴＢＬＢＬＫに、第２のテーブルバッファ４の値を書き込む。
Ｓ７６では、ユーザブロック管理テーブルが格納されているフラッシュメモリの物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫを消去する。
Ｓ７７では、消去後の＊ＵＳＲＴＢＬＢＬＫに第１のテーブルバッファ３の値を書き込む。
以上で、処理を終了する。
【００５２】
図１３〜１５には、それぞれ、図９〜１２のフローチャートに沿った内部処理によるデータ書込み動作を概念的にあらわす。
図１３は、ユーザブロック管理テーブル内の分割中のテーブル内オフセットの値＊ＤＩＶＯＦＳＴが０である場合におけるデータ書込み動作をあらわす。また、図１４は、＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ≧＊ＤＩＶＯＦＳＴである場合におけるデータ書込み動作をあらわす。更に、図１５の（ａ）及び（ｂ）は、図１３及び１４での条件以外の場合におけるデータ書込み動作をあらわし、また、更に、図１６は、＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ＝＊ＤＩＶＯＦＳＴの場合におけるデータ書込み動作をあらわす。
【００５３】
以上のように、分割して使用されている論理クラスタアドレスに対してアクセスする場合と、それ以外の論理クラスタアドレスに対してアクセスする場合とで、内部処理を変更することで、フラッシュストレージメディアに対して連続した論理アドレスへの書込みを行なう場合に、図１６に示すように、無駄なコピー処理をなくすることができ、書込みパフォーマンスを向上させることができる。
【００５４】
次に、本発明の他の実施の形態について説明する。なお、以下、上記実施の形態１における場合と同じものについては同一の符号を付し、それ以上の説明を省略する。
実施の形態２．
この実施の形態２では、フラッシュストレージメディアのハード構成としては、上記実施の形態１における場合と同様のものが採用されるが、ＣＰＵにより制御されるプログラム中の動作として、実施の形態１とは異なるものが採用される。図１７に示すように、ユーザブロック管理テーブルは、論理クラスタアドレスに割り当てられたフラッシュメモリの物理ブロックアドレスの消去状態を示すフラグＥｒｓＦｌａｇを備えるように構成される。この図１７では、論理クラスタアドレス０ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳＲＣＢＬＫが取り上げられる。このフラグＥｒｓＦｌａｇが０である場合には、ＳＲＣＢＬＫが消去状態にあることをあらわし、また、フラグＥｒｓＦｌａｇが１である場合には、ＳＲＣＢＬＫにデータが書き込まれていることをあらわす。
【００５５】
図１８〜２０には、上記実施の形態２に係る、ホスト機器側から論理アドレスｘｈへのデータ書込み要求があった場合におけるフラッシュストレージメディアの内部処理についてのフローチャートを示す。なお、開始から図１８のＳ８１に至るまでのフローは、上記実施の形態１についての図９に示すフローと同様であるため、これを省略する。
【００５６】
Ｓ８１では、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳｒｃＢｌｋについてのフラグＥｒｓＦｌｇが０であるか否かを判定する。ＮＯである場合には、Ｓ８２へ進み、他方、ＹＥＳである場合には、Ｓ８７へ進む。
【００５７】
Ｓ８２では、上記の物理ブロックアドレスＳｒｃＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに基づき、データバッファ５へデータを読み出す。
Ｓ８３では、データバッファ５のデータを、分割中の物理ブロックアドレスＤｉｖＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに書き込む。
続いて、Ｓ８４では、分割境界ページ番号ＤｉｖＰａｇｅを更新する（ＤｉｖＰａｇｅ＝ＤｉｖＰａｇｅ＋１）。
【００５８】
Ｓ８５では、分割境界ページ番号ＤｉｖＰａｇｅが３２である（ＤｉｖＰａｇｅ＝３２）か否かを判定する。ＹＥＳである場合には、Ｓ８６へ進み、他方、ＮＯである場合には、Ｓ８２へ戻り、それ以降の処理を繰り返す。
Ｓ８６では、上記の物理ブロックアドレスＳｒｃＢｌｋを消去する。
Ｓ８７では、オフセットの値ＴｅｍｐＯｆｓｔとして、現在のオフセットの値＊ＣＵＲＯＦＳＴを取得する。このとき、
ＴｅｍｐＯｆｓｔ＝＊ＣＵＲＯＦＳＴ
となる。
Ｓ８８では、ユーザブロック管理テーブルを更新する。このとき、
＊（ＳＲＣＢＬＫ＋ｘ’）＝ＤｉｖＢｌｋ
＊ＤＩＶＢＬＫ＝＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）
を用いる。
【００５９】
Ｓ８９では、消去ブロック管理テーブルを更新する。このとき、
＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）＝ＳｒｃＢｌｋ
を用いる。
更に、Ｓ９０では、消去ブロック管理テーブル内の現在のオフセットの値＊ＣＵＲＯＦＳＴを更新する（＊ＣＵＲＯＦＳＴ＝＊ＣＵＲＯＦＳＴ＋１）。
【００６０】
続いて、Ｓ９１では、消去ブロック管理テーブル内の現在のオフセットの値＊ＣＵＲＯＦＳＴが、消去ブロック管理テーブル内の最大のオフセットの値＊ＭＡＸＯＦＳＴに等しい（＊ＣＵＲＯＦＳＴ＝＊ＭＡＸＯＦＳＴ）か否かを判定する。ＹＥＳである場合には、Ｓ９２へ進み、＊ＣＵＲＯＦＳＴ＝０とした上で、図中のＢを経由して、図１９のＳ９３へ進む。他方、ＮＯである場合には、Ｓ９３へ直接進む。
【００６１】
Ｓ９３では、論理クラスタアドレスｘ’ｈに割り当てられたフラッシュメモリの物理ブロックアドレスＳｒｃＢｌｋを取得する（ＳｒｃＢｌｋ＝＊（ＳＲＣＢＬＫ＋ｘ’））。
Ｓ９４では、分割中の物理ブロックアドレスＤｉｖＢｌｋを取得する（ＤｉｖＢｌｋ＝＊ＤＩＶＢＬＫ）。
Ｓ９５では、分割境界ページ番号ＤｉｖＰａｇｅを取得する（ＤｉｖＰａｇｅ＝＊ＤＩＶＦＳＣＴ）。
【００６２】
Ｓ９６では、上記の物理ブロックアドレスＳｒｃＢｌｋのフラグＥｒｓＦｌｇが０である（ＥｒｓＦｌｇ＝０）か否かを判定する。ＮＯである場合には、Ｓ９７へ進み、他方、ＹＥＳである場合には、Ｓ１０１へ進む。
Ｓ９７では、上記の物理ブロックアドレスＳｒｃＢｌｋのブロック内のフラッシュメモリのページ番号ＤｉｖＰａｇｅからデータバッファ５へデータを読み出す。
Ｓ９８では、データバッファ５のデータを上記の物理ブロックアドレスＤｉｖＢｌｋの分割境界ページ番号ＤｉｖＰａｇｅに書き込む。
Ｓ９９では、分割境界ページ番号ＤｉｖＰａｇｅを更新する（ＤｉｖＰａｇｅ＝ＤｉｖＰａｇｅ＋１）。
【００６３】
Ｓ１００では、上記の分割境界ページ番号ＤｉｖＰａｇｅがブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅに等しい（ＤｉｖＰａｇｅ＝ＦｍＰａｇｅ）か否かを判定する。ＹＥＳである場合には、Ｓ１０１へ進み、他方、ＮＯである場合には、Ｓ９７へ戻り、それ以降の処理を繰り返す。
Ｓ１０１では、ホストＩ／Ｆ７からデータバッファ５に書き込むデータを取得する。
【００６４】
Ｓ１０２では、データバッファ５のデータを分割中の物理ブロックアドレスＤｉｖＢｌｋのブロック内のフラッシュメモリのページ番号ＦｍＰａｇｅに書き込む。
Ｓ１０３では、上記の分割境界ページ番号の値＊ＤＩＶＦＳＣＴを更新する。このとき、
＊ＤＩＶＦＳＣＴ＝ＦｍＰａｇｅ＋１
を用いる。
Ｓ１０４では、上記の分割境界ページ番号の値＊ＤＩＶＦＳＣＴが３２である（＊ＤＩＶＦＳＣＴ＝３２）か否かを判定する。ＹＥＳである場合には、図中のＣを経由して、図２０のＳ１０５へ進み、他方、ＮＯである場合には、図中のＤを経由して、図２０のＳ１１４へ進む。
【００６５】
Ｓ１０５では、上記の分割境界ページ番号の値＊ＤＩＶＦＳＣＴ＝０とし、続いて、Ｓ１０６では、上記の物理ブロックアドレスＳｒｃＢｌｋのフラグＥｒｓＦｌｇが０である（ＥｒｓＦｌｇ＝０）か否かを判定する。ＮＯである場合には、Ｓ１０７へ進み、上記の物理ブロックアドレスＳｒｃＢｌｋを消去した上で、Ｓ１０８へ進む。他方、ＹＥＳである場合には、Ｓ１０８へ直接進む。
【００６６】
Ｓ１０８では、オフセットの値ＴｅｍｐＯｆｓｔとして、現在のオフセットの値＊ＣＵＲＯＦＳＴを取得する（ＴｅｍｐＯｆｓｔ＝＊ＣＵＲＯＦＳＴ）。
Ｓ１０９では、ユーザブロック管理テーブルを更新する。このとき、
＊（ＳＲＣＢＬＫ＋ｘ’）＝ＤｉｖＢｌｋ
＊ＤＩＶＢＬＫ＝＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）
を用いる。
【００６７】
Ｓ１１０では、消去ブロック管理テーブルを更新する。このとき、
＊（ＴＧＴＢＬＫ＋ＴｅｍｐＯｆｓｔ）＝ＳｒｃＢｌｋ
を用いる。
Ｓ１１１では、消去ブロック管理テーブル内の現在のオフセットの値＊ＣＵＲＯＦＳＴを更新する（＊ＣＵＲＯＦＳＴ＝＊ＣＵＲＯＦＳＴ＋１）。
【００６８】
Ｓ１１２では、その＊ＣＵＲＯＦＳＴが、消去ブロック管理テーブル内の最大のオフセットの値＊ＭＡＸＯＦＳＴと等しい（＊ＣＵＲＯＦＳＴ＝＊ＭＡＸＯＦＳＴ）か否かを判定する。ＹＥＳである場合には、Ｓ１１３へ進み、＊ＣＵＲＯＦＳＴ＝０とした上で、Ｓ１１４へ進む。他方、ＮＯである場合には、Ｓ１１４へ直接進む。
【００６９】
Ｓ１１４では、消去ブロック管理テーブルが格納されているフラッシュメモリの物理ブロックアドレス＊ＥＲＳＴＢＬＢＬＫを消去する。
Ｓ１１５では、上記の物理ブロックアドレス＊ＥＲＳＴＢＬＢＬＫに第２のテーブルバッファ４の値を書き込む。
Ｓ１１６では、ユーザブロック管理テーブルが格納されているフラッシュメモリの物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫを消去する。
Ｓ１１７では、上記の物理ブロックアドレス＊ＵＳＲＴＢＬＢＬＫに第１のテーブルバッファ３の値を書き込む。
以上で、処理を終了する。
【００７０】
図２１〜２３には、それぞれ、図１８〜２０のフローチャートを用いて説明した内部処理によるデータ書込みを概念的にあらわす。
図２１は、ユーザブロック管理テーブル内の分割中のテーブル内オフセットの値＊ＤＩＶＯＦＳＴ＝０かつ＊（ＳＲＣＢＬＫ＋ｘ’）のＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。また、図２２は、＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ≧＊ＤＩＶＦＳＣＴかつ＊（ＳＲＣＢＬＫ＋ｘ’）のＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。更に、図２３の（ａ）及び（ｂ）は、図２１及び２２での条件以外でＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。
【００７１】
以上のように、論理クラスタアドレスに割り当てられたフラッシュメモリ物理ブロックアドレスの消去状態に応じて、書込み時のフローを切り換えることにより、図２１〜２３に示すように、無駄なコピー処理をなくすることができ、書込みパフォーマンスを向上させることができる。
【００７２】
なお、本発明は、例示された実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲において、種々の改良及び設計上の変更が可能であることは言うまでもない。
【００７３】
【発明の効果】
本願の請求項１の発明によれば、１つの論理アドレスに対して繰り返して書込みが行なわれた場合でも同じ物理ブロックアドレスに対して消去／書込みが繰り返されることを防止し、消去単位よりメモリアクセス単位が小さいフラッシュストレージメディアにおいて、連続した論理アドレスへの書込み動作時の無駄なコピー処理をなくすることができ、データ書込みパフォーマンスを向上させることができる。
【００７４】
また、本願の請求項２の発明によれば、論理クラスタアドレスに対応付けられたフラッシュメモリ物理ブロックが、消去状態及びデータ書込み状態のいずれにあるかを識別し、上記フラッシュメモリ物理ブロックの消去状態およびデータ書込み状態に基づき、フラッシュストレージメディア内部の処理フローを変更するので、無駄なコピー処理を一層厳密になくすることができ、データ書込みパフォーマンスを向上させることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係るＮＡＮＤ型フラッシュメモリを搭載したフラッシュストレージメディアの内部構成を示すブロック図である。
【図２】上記実施の形態１に係るＮＡＮＤ型フラッシュメモリ内に規定されるブロック構成を示す図である。
【図３】上記実施の形態１に係るポインタテーブルの構成を示す。
【図４】本発明の実施の形態１に係るユーザブロック領域における各種アドレスの対応を示す図である。
【図５】ユーザブロック管理テーブル用ブロック領域に格納されるユーザブロック管理テーブルの構成を示す。
【図６】ユーザブロック領域にて、有効なデータが１つの物理ブロックに格納される論理クラスタアドレスと、有効なデータが２つの物理ブロックに分割されて格納される論理クラスタアドレスとを示す。
【図７】消去ブロック管理テーブルの構成を示す。
【図８】データ読出し要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についてのフローチャートを示す図である。
【図９】データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第１のフローチャートを示す図である。
【図１０】データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第２のフローチャートを示す図である。
【図１１】データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第３のフローチャートを示す図である。
【図１２】データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第４のフローチャートを示す図である。
【図１３】ユーザブロック管理テーブル内の分割中のテーブル内オフセットの値＊ＤＩＶＯＦＳＴが０である場合におけるデータ書込み動作をあらわす。
【図１４】＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ≧＊ＤＩＶＯＦＳＴである場合におけるデータ書込み動作をあらわす。
【図１５】図１３及び１４での条件以外の場合におけるデータ書込み動作をあらわす。
【図１６】＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ＝＊ＤＩＶＯＦＳＴの場合におけるデータ書込み動作をあらわす。
【図１７】本発明の実施の形態２に係る、ユーザブロック管理テーブルの構成を示す図である。
【図１８】上記実施の形態２に係る、データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第１のフローチャートを示す図である。
【図１９】上記実施の形態２に係る、データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第２のフローチャートを示す図である。
【図２０】上記実施の形態２に係る、データ書込み要求があった場合におけるフラッシュストレージメディアにより実行される内部処理についての第３のフローチャートを示す図である。
【図２１】ユーザブロック管理テーブル内の分割中のテーブル内オフセットの値＊ＤＩＶＯＦＳＴ＝０かつ＊（ＳＲＣＢＬＫ＋ｘ’）のＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。
【図２２】＊ＤＩＶＯＦＳＴ＝ｘ’かつＦｍＰａｇｅ≧＊ＤＩＶＦＳＣＴかつ＊（ＳＲＣＢＬＫ＋ｘ’）のＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。
【図２３】図２１及び２２での条件以外でＥｒｓＦｌａｇ＝０である場合におけるデータ書込み動作をあらわす。
【符号の説明】
１　ＣＰＵ，２　ＣＰＵメインメモリ，３　第１のテーブルバッファ，４　第２のテーブルバッファ，５　データバッファ，６　フラッシュＩ／Ｆ，７　ホストＩ／Ｆ，８　シーケンサ，９　ＮＡＮＤ型フラッシュメモリ，１０　フラッシュストレージメディア，１１Ａ　ポインタテーブル用ブロック領域，１１Ｂ　ユーザブロック管理テーブル用ブロック領域，１１Ｃ　消去ブロック管理テーブル用ブロック領域，１１Ｄ　ユーザブロック領域，１１Ｅ　消去ブロック領域。
【図１】
2004062328.tif 000003
【図２】
2004062328.tif 000004
【図３】
2004062328.tif 000005
【図４】
2004062328.tif 000006
【図５】
2004062328.tif 000007
【図６】
2004062328.tif 000008
【図７】
2004062328.tif 000009
【図８】
2004062328.tif 000010
【図９】
2004062328.tif 000011
【図１０】
2004062328.tif 000012
【図１１】
2004062328.tif 000013
【図１２】
2004062328.tif 000014
【図１３】
2004062328.tif 000015
【図１４】
2004062328.tif 000016
【図１５】
2004062328.tif 000017
【図１６】
2004062328.tif 000018
【図１７】
2004062328.tif 000019
【図１８】
2004062328.tif 000020
【図１９】
2004062328.tif 000021
【図２０】
2004062328.tif 000022
【図２１】
2004062328.tif 000023
【図２２】
2004062328.tif 000024
【図２３】
2004062328.tif 000025