(57)【特許請求の範囲】
【請求項１】
フラッシュメモリ部と、
上記フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御する制御部とを備え、
上記制御部は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御する
フラッシュメモリ装置。
【請求項２】
上記制御部は、
シーケンス書込ブロックとして使用中のブロック数が上限値に達しているか否かを判別し、上記シーケンス書込ブロックとして使用中のブロック数が上記上限値に達している場合には、使用中の上記シーケンス書込ブロックのうちから選択したシーケンス書込ブロックについて、シーケンス書込ブロックのガベージコレクションを実行する
請求項１に記載のフラッシュメモリ装置。
【請求項３】
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて、書込途中のシーケンス書込ブロックが存在するとされる場合には、
少なくとも上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであるか否かを判別した結果に基づき、上記書込指示されたデータの上記書込途中のシーケンス書込ブロックへの追記が行われるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項４】
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込途中のシーケンス書込ブロックが存在するとされた場合であって、且つ、上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであり、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数である場合に、上記書込指示されたデータの上記書込途中のシーケンス書込ブロックへの追記が行われるように制御する
請求項３に記載のフラッシュメモリ装置。
【請求項５】
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものであり、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数である場合に、シーケンス書込が行われるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項６】
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のブロックサイズと一致する場合は、上記書込指示されたデータがブロックレベル管理下で書き込まれるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項７】
上記制御部は、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上ではないとされた場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項８】
上記制御部は、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すとの条件が満たされない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項９】
上記制御部は、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数ではない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する  請求項５に記載のフラッシュメモリ装置。
【請求項１０】
上記制御部は、
上記書込指示されたデータの書込開始論理ページアドレスが書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであるか否かをさらに判別し、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて書込途中のシーケンス書込ブロックが存在するとされた場合で、且つ、上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものではないとされた場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項１１】
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて書込途中のシーケンス書込ブロックが存在するとされた場合で、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数ではない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
請求項４に記載のフラッシュメモリ装置。
【請求項１２】
上記制御部は、
外部装置からのシーケンス書込指示に応じて、上記フラッシュメモリ部のブロックサイズ未満のデータが上記フラッシュメモリ部にシーケンス書込されるように制御する
請求項１に記載のフラッシュメモリ装置。
【請求項１３】
フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御し、
上記制御は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御する
メモリ制御装置。
【請求項１４】
フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御し、
上記制御は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御する
メモリ制御方法。
【請求項１５】
フラッシュメモリ部と、
上記フラッシュメモリ部へのデータの書込を指示する指示部と、
上記指示部により書込が指示された、上記フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御する制御部とを備え、
上記制御部は、
上記指示部により書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御する
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを備えたフラッシュメモリ装置と、フラッシュメモリについてのメモリ制御装置とその方法、及びストレージシステムに関する。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】特開２００７−１９３８８３号公報
【特許文献２】特開２００７−５８８４０号公報
【背景技術】
【０００３】
例えば動画や静止画の撮影を行うデジタルカメラ装置などには、撮影データの記録メディアとしてフラッシュメモリを搭載したメモリカードを用いるものがある。特に、動画記録で用いられるメモリカードに関しては、データ記録の高速化が要請されている。
【０００４】
フラッシュメモリを搭載したメモリカードでは、フラッシュメモリ上のデータを、Block-Level（ブロックレベル）管理とPage-Level（ページレベル）管理の２種類の管理方法により管理するようにされている。
周知のように、Block-Level管理では、フラッシュメモリのブロックサイズに応じた単位でデータを管理し、Page-Level管理ではフラッシュメモリのページサイズに応じた単位でデータの管理を行う。ブロックは複数のページで構成され、従って「ブロックサイズ＞ページサイズ」である。
【０００５】
ここで、Page-Level管理では、Block-Level管理よりも小さなデータサイズ単位での管理が可能だが、Block-Level管理とPage-Level管理のそれぞれでメモリカードに必要なワーキングメモリを比較した場合は、Page-Level管理の方が、より大きなサイズのワーキングメモリを要するものとされている。従って、メモリカード内部のフラッシュメモリを全てPage-Level管理で管理するためには、大きなワーキングメモリが必要となってしまう。
このため、フラッシュメモリを備えるメモリカードでは、一部のデータをPage-Level管理によって管理し、それ以外のデータをBlock-Level管理で管理するようにされている。
【０００６】
具体的に、フラッシュメモリを備えたメモリカードでは、ホスト装置（例えば上記デジタルカメラ装置）側から書き込みを要求されたデータのサイズが小さい場合には、受信したデータをPage-Level管理で管理し、データサイズが大きい場合にはBlock-Level管理で管理を行うようにされる。
また、ホスト装置から書き込まれた小さなサイズのデータの総量が、Page-Level管理で管理可能なサイズを超えた場合には、一部のデータをPage-Level管理からBlock-Level管理に管理単位を変更させる。いわゆる、ガベージコレクション（Garbage Collection）である（例えば上記各特許文献を参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ガベージコレクションの発生は、メモリカードのパフォーマンス（記録速度）を低下させる要因となる。従って高速な記録の実現のためには、ガベージコレクションの発生頻度を極力減らすことが望ましい。
【０００８】
また一方で、フラッシュメモリのブロックサイズは、フラッシュメモリの世代が進むごとに拡大化する傾向にある。ブロックサイズを大とすれば、その分、より高速なデータ書込を実現できるためである。
【０００９】
但し、このようにブロックサイズを大としてより高速な書込を実現しようとした場合には、書込データの送出側であるホスト装置側では、これに対応させてデータ送出用のバッファメモリのサイズを大きくしなければならない。拡大したブロックサイズに上記バッファメモリのサイズが満たないものである場合、そのホスト装置との組み合わせでは、メモリカード側でブロックレベル管理によるデータ書込を行うことができず、ページレベル管理下での記録となってしまい、結果として高速な記録の実現が図られないものとなってしまう。
【００１０】
本技術は上記問題点に鑑み為されたものであり、フラッシュメモリを備えたメモリ装置（フラッシュメモリ装置）について、ガベージコレクションの発生頻度を効果的に減らすことにより記録の高速化を図ると共に、ホスト装置側で書込データ送出用のバッファメモリのサイズを拡大せずとも高速な記録の実現が図られるようにすることをその課題とする。
【課題を解決するための手段】
【００１１】
本技術のフラッシュメモリ装置は、フラッシュメモリ部を備えると共に、上記フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御する制御部を備え、
上記制御部は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御するものである。
【００１２】
また、本技術のメモリ制御装置は、フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御し、
上記制御は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御するものである。
【００１３】
また、本技術のストレージシステムは、フラッシュメモリ部と、上記フラッシュメモリ部へのデータの書込を指示する指示部と、上記指示部により書込が指示された、上記フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御する制御部とを備え、
上記制御部は、
上記指示部により書込指示されたデータのサイズが上記ブロックサイズ未満であるか否か、及び、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かを判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御するものである。
【００１４】
本技術によれば、ブロックレベル（Block-Level）管理による記録を行うことができないブロックサイズ未満のデータについて、フラッシュメモリ部にシーケンス書込を行うことができる。ここで、シーケンス書込とは、書込対象データを所定の書込単位で対象物理ブロックに対して論理アドレス順に書き込むことを意味する。
ブロックレベル管理とページレベル（Page-Level）管理の２種の管理でデータ書込を行う従来のフラッシュメモリ装置では、書き込むべきデータがブロックサイズと一致する場合はブロックレベル管理による記録を行い、ブロックサイズ未満のデータについてはページレベル管理による書込を行うようにされている。このため、例えばブロックサイズ未満のデータについて、それらが論理アドレス的に連続している個々のデータであったとしても、それらのデータについてはページレベル管理による書込が行われていた。
これに対し、シーケンス書込を可能とした本技術によれば、ブロックサイズ未満のデータについてシーケンス書込ができる。つまり、例えば上記のようなケースにおいて、ページレベル管理下での書込のように個々のデータが異なる物理ブロックに分散して記録されてしまうことを効果的に防止できる。
つまり、シーケンス書込を可能とした本技術によれば、ブロックサイズ未満のデータについてページレベル管理による書込しか選択肢にない従来と比較して、ガベージコレクションの発生頻度を効果的に減らすことができる。結果、従来よりも記録速度の面でパフォーマンス向上が図られる。
また、前述のように従来では、ホスト装置側でブロックサイズよりも小さなサイズのバッファメモリしか備えられていない場合には、ホスト装置側はブロックサイズ未満のデータしか送出できない。従ってこの場合も、データが論理アドレス的に連続していたとしても、従来のフラッシュメモリ装置ではページレベル管理による書込が選択されてしまうことになる。
これに対し、シーケンス書込を可能とした本技術によれば、ホスト装置側からブロックサイズ未満のデータしか送出できない場合であっても、それらのデータをシーケンス書込する、すなわち、所定の物理ブロックに論理アドレス順に記録することができる。これによれば、ページレベル管理による記録が行われる場合とは異なり、ガベージコレクションの発生頻度を低下させることができ、この面でもパフォーマンス向上が図られる。
【発明の効果】
【００１５】
本技術によれば、従来よりもガベージコレクションの発生を効果的に減らすことにより記録速度の向上を図ることができる。
また、データ転送用のバッファメモリサイズの小さなホスト装置からの書込が行われる場合にも、高速なデータ記録を実現できる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態のストレージシステムの構成を示した図である。
【図２】フラッシュメモリで使用する物理アドレスの概要を示した図である。
【図３】論理セクタアドレス、論理ページアドレス、論理ブロックアドレスの概要を示した図である。
【図４】Block-Level管理ブロックのデータ構造を示した図である。
【図５】Page-Level管理ブロックのデータ構造を示した図である。
【図６】シーケンス書込管理ブロックのデータ構造を示した図である。
【図７】管理情報ブロックのデータ構造を示した図である。
【図８】Block-Level管理テーブルのデータ構造を示した図である。
【図９】Page-Level管理テーブルのデータ構造を示した図である。
【図１０】Page-Levelマップのデータ構造を示した図である。
【図１１】シーケンス書込ブロック管理テーブルのデータ構造を示した図である。
【図１２】無効データブロック管理テーブルのデータ構造を示した図である。
【図１３】ホスト装置側からフラッシュメモリ装置側に行われる書込指示の一例を示した図である。
【図１４】Writeコマンド実行処理のフローチャートである。
【図１５】図１４に示した論理ブロック内書込処理（Ｓ１０３）として実行すべき具体的な処理内容を示したフローチャートである。
【図１６】ブロックレベル書込のための処理内容を示したフローチャートである。
【図１７】シーケンス書込ブロックのガベージコレクションによる物理レベルでのデータの移行の様子の例を模式的に示した図である。
【図１８】図１７に示すデータ移行前におけるシーケンス書込ブロック管理テーブル、Block-Level管理テーブル、Page-Level管理テーブル、Page-Levelマップの内容を例示した図である。
【図１９】図１７に示すデータ移行後のシーケンス書込ブロック管理テーブル、Block-Level管理テーブル、Page-Level管理テーブル、Page-Levelマップの内容を例示した図である。
【図２０】シーケンス書込とその後のシーケンス書込ブロック管理テーブルの内容を例示した図である。
【図２１】ページレベル書込のための処理内容を示したフローチャートである。
【図２２】Page-Level管理ブロックのガベージコレクションによる物理レベルでのデータの移行の様子の例を模式的に示した図である。
【図２３】図２２に示すデータ移行前におけるBlock-Level管理テーブル、Page-Level管理テーブル、Page-Levelマップの内容を例示した図である。
【図２４】図２２に示すデータ移行後のBlock-Level管理テーブル、Page-Level管理テーブル、Page-Levelマップの内容を例示した図である。
【図２５】Page-Level管理ブロックへの書込として行われるデータ書込の例と、その後のPage-Levelマップの更新実行後のPage-Levelマップの例とを示した図である。
【図２６】第２の実施の形態におけるホスト装置がフラッシュメモリ装置にシーケンス書込を実行させる場合において行う書込指示の例を示した図である。
【図２７】シーケンス書込開始コマンド対応処理の内容を示したフローチャートである。
【図２８】シーケンス書込終了コマンド対応処理の内容を示したフローチャートである。
【図２９】第２の実施の形態の場合における論理ブロック内書込処理の内容を示したフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本技術に係る実施の形態について説明する。
なお、説明は以下の順序で行う。
＜１．第１の実施の形態＞
［1-1．ストレージシステムの構成］
［1-2．データ管理手法について］
［1-3．第１の実施の形態としてのメモリ制御手法］
＜２．第２の実施の形態＞
＜３．変形例＞
ここで、第１の実施の形態は、ホスト側がフラッシュメモリ装置側にWriteコマンドで指定した書込データについての論理アドレスとデータサイズとを元に、フラッシュメモリ装置自らがデータの書込手法を変えるという実施形態であり、第２の実施の形態は、ホスト側がWriteコマンドでフラッシュメモリ装置に書込手法の切り替えを明示的に通知し、これに応じてフラッシュメモリ装置がデータの管理手法を変えるという実施形態となる。
【００１８】
＜１．第１の実施の形態＞
［1-1．ストレージシステムの構成］
図１は、実施の形態のストレージシステムの構成を示した図である。
実施の形態のストレージシステムは、フラッシュメモリ装置１とホスト装置５とを有して構成される。
ホスト装置５は、フラッシュメモリ装置１に対してReadコマンド、Writeコマンドを送信してフラッシュメモリ装置１に記録されたデータの読み出し、データの書き込みを実行させる装置となる。
本例の場合、ホスト装置５は例えば静止画や動画を撮影してそれらのデータの記録／再生を行うデジタルカメラ装置であるとする。
【００１９】
フラッシュメモリ装置１は、図のようにフラッシュメモリ４、外部インターフェイス２、及びメモリコントローラ３を備えている。
フラッシュメモリ４は、ＮＡＮＤ型のフラッシュメモリとされ、メモリコントローラ３による制御によりデータの記録（書込）／再生（読出）が行われる。
【００２０】
フラッシュメモリ４内には、ユーザデータ記録領域４Ａと管理情報記録領域４Ｂとが存在する。ユーザデータ記録領域４Ａでは、データが書き込まれた物理ブロックとして、後述するBlock-Level（ブロックレベル）管理ブロック３０，Page-Level（ページレベル）管理ブロック４０，シーケンス書込管理ブロック５０の３種類のブロックが存在することになる。
【００２１】
また、管理情報記録領域４Ｂでは、これらBlock-Level管理ブロック３０，Page-Level管理ブロック４０，シーケンス書込管理ブロック５０を管理するためのデータを記録する管理情報ブロック６０が存在することになる。
【００２２】
メモリコントローラ３は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）を備えたマイクロコンピュータで構成され、例えば上記ＲＯＭに格納されたプログラムに従った処理を実行することで、フラッシュメモリ装置の全体制御を行う。
具体的には、外部インターフェイス２が受信したコマンドの解釈や、後述する各種の管理情報を用いた論理アドレスから物理アドレスへの変換処理、フラッシュメモリ４に対するデータの書込と読出、フラッシュメモリ４へのデータ書込時のＥＣＣ(Error Correction Code)データの生成・付加、読出時のＥＣＣエラー訂正処理などを行う。
【００２３】
外部インターフェイス２は、ホスト装置５とメモリコントローラ３との間で各種データの送受信を可能とするために設けられ、ホスト装置５からのコマンド受信やデータの送受信などを行う。
【００２４】
ここで、ホスト装置５は、フラッシュメモリ４のデータ読出時には、メモリコントローラ３に対し、Readコマンドとして、読出データの存在する先頭論理アドレス（少なくとも論理ブロックアドレス及び論理ページアドレスの組で特定される）とデータサイズとを指定したコマンドを送出する。これに応じメモリコントローラ３は、指定された論理アドレスから指定されたサイズのデータを読み出し、これをホスト装置５に対して送出する。
また、ホスト装置５は、データ書込時には、Writeコマンドとして、データの書込先の先頭論理アドレスとデータサイズとを指定したコマンドを送出する。これに応じメモリコントローラ３は、指定された論理アドレスに指定されたサイズのデータが記録された状態となるように、フラッシュメモリ４に対する書込を行う。
【００２５】
［1-2．データ管理手法について］
以下、フラッシュメモリ４に記録されるデータの管理手法について説明する。
先ずは、物理アドレスと論理アドレスとについて説明しておく。
【００２６】
フラッシュメモリ４では、フラッシュメモリ４内部に記録されたデータの位置情報を示すアドレスとして、物理アドレスが使用される。
【００２７】
図２は、フラッシュメモリ４で使用する物理アドレスの概要を示している。
フラッシュメモリ４では、物理アドレスとして、物理ブロックアドレス，物理ページアドレス，物理セクタアドレスの３種類のアドレスが使用される。
【００２８】
図２において、物理ブロック１０は、フラッシュメモリ４で使用されるＮＡＮＤフラッシュメモリの最小消去単位であるブロックに対応し、フラッシュメモリ４でデータのRead/Program/Eraseが実行されるブロックそれぞれに、物理ブロックアドレスが１つ割り振られる。
図２では、データのRead/Program/Eraseが実行されるブロック数をｂとし、０からｂ−１までの物理ブロックアドレスを割り振っている。
【００２９】
物理ブロック１０は、物理ページ１１に分割される。物理ページ１１はＮＡＮＤフラッシュメモリの最小プログラム単位であるページに対応する。物理ブロック１０内のページそれぞれに、先頭ページから昇順に物理ページアドレスが１つ割り振られる。
図２では物理ブロック１０内に存在する物理ページ１１の数をｐとし、０からｐ−１までの物理ページアドレスを割り振っている。
【００３０】
物理セクタ１２は、ホスト装置５が使用する論理アドレスで指定される最小の領域(セクタ)のサイズと一致する。物理ページ１１は、複数の物理セクタ１２に分割され、それぞれの物理セクタ１２に物理セクタアドレスが昇順に割り振られる。
図２では物理ページ１１がｓ個の物理セクタ１２に分割されるものとしており、この場合、０からｓ−１までの物理セクタアドレスが割り振られる。
【００３１】
フラッシュメモリ装置１では、データの論理アドレスに対して物理アドレスを対応付ける。論理アドレスと物理アドレスとを対応付けるため、論理アドレスを論理セクタアドレス，論理ページアドレス、論理ブロックアドレスの３種類のアドレスで扱う。
【００３２】
図３は、論理セクタアドレス、論理ページアドレス、論理ブロックアドレスの概要を示している。
ホスト装置５がフラッシュメモリ装置１で扱うことのできる論理アドレス空間２０のアドレスは０からａｓ−１であるとする。論理アドレスそれぞれに１つの論理セクタアドレスを割り振る。図３では全ての論理アドレスに、論理セクタアドレスを０からｓ−１まで割り振っている。ここで、「ｓ」は物理ページ１１内に存在する物理セクタ１２の数である。
【００３３】
論理ページ２２は複数の論理セクタ２１で構成される。図３ではｓ個の論理セクタ２１で１つの論理ページ２２が構成され、全ての論理ページ２２に０からｐ−１の論理ページアドレスを割り振っている。「ｐ」は１つの物理ブロック１０に存在する物理ページ１１の数である。
【００３４】
論理ブロック２３は複数の論理ページ２２で構成される。図３ではｐ個の論理ページ２２で１つの論理ブロック２３が構成され、全ての論理ブロック２３に０からａ−１の論理ブロックアドレスを割り振っている。
【００３５】
続いて、フラッシュメモリ４に記録される各種の物理ブロックの具体的なデータ構造について説明する。
【００３６】
図４は、Block-Level管理ブロック３０のデータ構造を示している。
ここで、Block-Level管理ブロック３０とは、Block-Level管理による書込（ブロックレベル書込）が行われた物理ブロックを意味する。
【００３７】
Block-Level管理ブロック３０の全ての物理ページには、データが書き込み済みとなる（図中、書込済みページ３１）。ブロックレベル書込では、１つの物理ブロックに対して１ブロック分のサイズのデータを書き込むためである。
【００３８】
図のように１つの物理ページには、付加情報３２、付加情報ＥＣＣ３２ａ、ユーザデータ３３、ユーザデータＥＣＣ３３ａが記録される。付加情報３２は、Block-Level管理ブロック３０であることを示すブロックタイプ３４、Block-Level管理ブロック３０の世代情報を示すリビジョン３５、Block-Level管理ブロック３０に書き込まれたデータの論理ブロックアドレス３６、当該付加情報３２が格納された物理ページに対応する論理ページアドレス３７の各情報で構成される。
【００３９】
論理ブロックアドレス３６は、同一のBlock-Level管理ブロック３０内で全て同じ値である。
またBlock-Level管理ブロック３０では、論理ページアドレス３７の値は、当該論理ページアドレス３７のデータが書き込まれた物理ページの物理ページアドレスと一致することになる。具体的に図中では、物理ページアドレスｉと、当該物理ページアドレスｉに書き込まれたデータの論理ページアドレスｉとが一致しているものとして示している。
さらに、論理セクタアドレスと物理セクタアドレスは一致する。
このとき、ユーザデータ３３のサイズは物理セクタのサイズと一致し、１つの物理ページに記録可能なユーザデータ３３の数は、物理ページ内の物理セクタ数に一致する。
【００４０】
図５は、Page-Level管理ブロック４０のデータ構造を示している。
Page-Level管理ブロック４０とは、Page-Level管理による書込（ページレベル書込）で使用された物理ブロックのことを指す。
【００４１】
Page-Level管理ブロック４０には、書込済みページ４１ａと未書込ページ４１ｂとが含まれる。
図のように、書込済みページ４１ａとしての物理ページには、付加情報４２、付加情報ＥＣＣ４２ａ、ユーザデータ４３、ユーザデータＥＣＣ４３ａが記録される。
付加情報４２は、Page-Level管理ブロック４０であることを示すブロックタイプ４４、Page-Level管理ブロック４０の世代情報を示すリビジョン４５、Page-Level管理ブロック４０に書き込まれたデータの論理ブロックアドレス４６、当該付加情報４２が格納された物理ページに対応する論理ページアドレス４７の各情報で構成される。
【００４２】
この場合も論理ブロックアドレス４６は、同一のPage-Level管理ブロック４０内で全て同じ値となる。
但し、Page-Level管理ブロック４０の場合、論理ページアドレス４７の値は、当該論理ページアドレス４７のデータが書き込まれた物理ページの物理ページアドレスとは必ずしも一致しないこととなる。ページレベル書込では、ブロックサイズに満たない小さなサイズのデータをそれぞれ異なる物理ブロックに分散して記録するということが行われるからである。
【００４３】
また、Page-Level管理ブロック４０においても、論理セクタアドレスについては、物理セクタアドレスと一致する。
この場合もユーザデータ４３のサイズは物理セクタのサイズと一致し、１つの物理ページに記録可能なユーザデータ４３の数は物理ページ内の物理セクタ数と一致する。
【００４４】
また、Page-Level管理ブロック４０において、未書込ページ４１ｂ内には、図のようにＮＡＮＤフラッシュメモリの初期値である0xFFFFが記録された状態となる。
【００４５】
図６は、シーケンス書込管理ブロック５０のデータ構造を示している。
このシーケンス書込管理ブロック５０は、後述する実施の形態としてのシーケンス書込で使用された物理ブロックとなる。
【００４６】
シーケンス書込管理ブロック５０は、書込済みページ５１ａと未書込ページ５１ｂとを含む。
書込済みページ５１ａの物理ページには、付加情報５２、付加情報ＥＣＣ５２ａ、ユーザデータ５３、ユーザデータＥＣＣ５３ａが記録される。付加情報５２は、シーケンス書込管理ブロック５０であることを示すブロックタイプ５４、シーケンス書込管理ブロック５０の世代情報を示すリビジョン５５、シーケンス書込管理ブロック５０に書き込まれたデータの論理ブロックアドレス５６、当該付加情報５２が格納された物理ページに対応する論理ページアドレス５７の各情報で構成される。
【００４７】
この場合も論理ブロックアドレス５６は同一のシーケンス書込管理ブロック５０内で全て同じ値となる。
またシーケンス書込管理ブロック５０においては、図４に示したBlock-Level管理ブロック３０の場合と同様に、論理ページアドレス５７の値は、当該論理ページアドレス５７のデータが書き込まれた物理ページの物理ページアドレスと一致する（図中、付加情報５２が格納された物理ページアドレスの値ｉと当該付加情報５２内に格納されている論理ページアドレス５７の値ｉとが一致）。これは、後述もするようにシーケンス書込では、ホスト装置５側から書込指示された、論理アドレス的に連続する各論理ページデータを、シーケンス書込管理ブロック５０として選択された物理ブロックに対して物理ページアドレス順に記録するからである。
【００４８】
また、シーケンス書込管理ブロック５０においても、論理セクタアドレスについては、物理セクタアドレスと一致する。
またこの場合も、ユーザデータ５３のサイズは物理セクタのサイズと一致し、１つの物理ページに記録可能なユーザデータ５３の数は物理ページ内の物理セクタ数と一致する点は図４，図５の場合と同様である。
【００４９】
また、図示するように未書込ページ５１ｂの格納値は、この場合も初期値（0xFFFF）となる。
【００５０】
図７は、管理情報ブロック６０のデータ構造を示している。
この管理情報ブロック６０は、後の図８〜図１２などに示す各種の管理情報を格納するための物理ブロックである。
【００５１】
図７において、管理情報ブロック６０には、書込済みページ６１ａと未書込ページ６１ｂとが含まれる。
書込済みページ６１ａの物理ページには、付加情報６２、付加情報ＥＣＣ６２ａ、管理情報６３、管理情報ＥＣＣ６３ａが記録される。付加情報６２は、管理情報ブロック６０であることを示すブロックタイプ６４、管理情報ブロック６０の世代情報を示すリビジョン６５の各情報で構成される。
【００５２】
管理情報６３として記録される管理情報には、図８に示すBlock-Level管理テーブル７０、図９に示すPage-Level管理テーブル７５、図１０に示すPage-Levelマップ７６、図１１に示すシーケンス書込ブロック管理テーブル７７、及び図１２に示す無効データブロック管理テーブル７８がある。
【００５３】
図８は、Block-Level管理テーブル７０のデータ構造を示している。
Block-Level管理テーブル７０は、Block-Level管理を可能とするための管理情報であり、図示するように論理ブロックアドレスと物理ブロックアドレスとが対応づけられた情報となる。
ここで、Block-Level管理テーブル７０で保持され得る論理ブロックアドレスの数は、ホスト装置５がデータの書込／読出が可能な論理ブロックの数に一致する（図中ではａ個としている）。
【００５４】
図中、物理ブロック割り当て済み論理ブロック７１ａとは、その論理ブロック内のデータを或る物理ブロックに対して記録済みとなった論理ブロックを意味する。
このような論理ブロック７１ａの論理ブロックアドレスに対しては、そのデータの記録が行われた（割り当てられた）物理ブロックのアドレスが対応づけられて保持される。
【００５５】
一方、Block-Level管理テーブル７０において、物理ブロックが未割り当ての論理ブロック７１ｂの論理ブロックアドレスに対しては、無効な物理ブロックアドレス(0xFFFF)が対応づけられて保持される。
【００５６】
Block-Level管理テーブル７０において、例えば或る論理ブロックアドレスのデータについてブロックレベル書込が行われた場合には、その論理ブロックアドレスに対応づけられている物理ブロックアドレスの値(0xFFFF)が、当該データの書込が行われた物理ブロックのアドレス値に更新されることになる。
【００５７】
図９は、Page-Level管理テーブル７５のデータ構造を示している。
Page-Level管理テーブル７５は、図のように論理ブロックアドレスに対して物理ブロックアドレスが対応づけられて成る。
Page-Level管理テーブル７５は、論理ブロックと、その論理ブロック内の論理ページのデータの記録が行われた物理ブロック（つまり図５に示したPage-Level管理ブロック４０）との対応関係を管理するための管理情報であり、Page-Level管理による記録（ページレベル書込）で用いられる管理情報となる。
【００５８】
Page-level管理テーブル７５では、論理ブロックアドレスとして予め決められたｄ個のアドレス保持することができ、また、物理ブロックアドレスとしては予め決められたｆ個のアドレスを保持することができるものとされている。このとき、ｆ≧ｄである。
このようにページレベル書込では、ページレベル書込で使用することのできる論理・物理のブロック数が制限されている。ページレベル書込で用いた物理ブロック数が上記ｆ個を超える場合、ガベージコレクションを発生させて、使用可能な物理ブロックを新たに確保することになる。
【００５９】
図９において、図中にＸ１と示す、物理ブロック（Page-Level管理ブロック４０）が割り当てられた論理ブロックアドレスには、その物理ブロックの物理ブロックアドレスが保持される。
またＸ２と示す、Page-Level管理ブロックが未割り当ての論理ブロックアドレスには、無効な物理ブロックアドレス (0xFFFF)が保持されて、Page-Level管理テーブル７５に空きがある状態を示す。
【００６０】
また、Page-level管理テーブル７５において、例えば図中で論理ブロックアドレスＣ0に対し物理ブロックアドレスｘ0.0と物理ブロックアドレスｘ0.1とが対応づけられているように、１つの論理ブロックアドレスにつき複数の物理ブロックアドレスが対応づけられる場合がある。
すなわち、前述のようにページレベル書込では、或る論理ブロック内のデータが複数の物理ブロックに分散して記録されるということが行われるからである。
【００６１】
図１０は、Page-Levelマップ７６のデータ構造を示している。
Page-Levelマップ７６は、或る論理ブロック内の論理ページデータの記録が行われた物理ページのアドレス（物理ブロックアドレスと物理ページアドレスとの組で特定される）を特定するための管理情報であり、図のように、論理ページアドレスに対し、物理ブロックアドレスと物理ページアドレスとが対応づけられて成る。
このPage-Levelマップ７６は、Page-Level管理テーブル７５において有効な物理ブロックアドレスが保持された論理ブロックの数だけ存在することになる。
なお図１０は、図９に示した論理ブロックアドレスＣ1についてのPage-Levelマップ７６の内容を例示したものである。
【００６２】
Page-Level管理テーブル７５で保持された物理ブロックアドレス内にデータが存在する場合は、図中のＸ３と示すように、論理ページアドレスのデータが書き込まれた物理ブロックアドレスと物理ページアドレスが保持される。
一方、Page-Level管理テーブル７５で保持された物理ブロックアドレス内にデータが存在しない場合は、Ｘ４と示すように、論理ページアドレスに対応する物理ブロックアドレスと物理ページアドレスには無効な値(0xFFFF)が保持されることになる。
【００６３】
図１１は、シーケンス書込ブロック管理テーブル７７のデータ構造を示している。
シーケンス書込ブロック管理テーブル７７は、実施の形態としてのシーケンス書込を実現するために新たに追加される管理情報となる。
図のようにシーケンス書込ブロック管理テーブル７７は、論理ブロックアドレスに対し、物理ブロックアドレスと最終書込論理ページアドレスとが対応づけられた情報となる。
【００６４】
シーケンス書込ブロック管理テーブル７７では、論理ブロックアドレスとして予め決められたｅ個のアドレスを保持することができる。換言すれば、シーケンス書込で使用可能な物理ブロック（シーケンス書込管理ブロック５０）の数は、ｅ個に制限される。
ここで、シーケンス書込についても、使用する物理ブロックの数が上限値に達している場合は、後述するシーケンス書込ブロックのガベージコレクションを発生させて使用可能な物理ブロックを新たに確保することになる。
【００６５】
図１１において、例えばＸ５と示すように物理ブロック（シーケンス書込管理ブロック５０）が割り当てられた論理ブロックアドレスに対しては、その割り当てられた物理ブロックの物理ブロックアドレスが保持される。さらに、シーケンス書込において、当該論理ブロック内の途中の論理ページまでの書込が行われた場合には、その論理ブロックのデータのうち最終に書込が行われたページデータの論理アドレスの値が、最終書込論理ページアドレスの値として対応づけられる。
【００６６】
一方、図中のＸ６は、物理ブロックが未割り当てとなった論理ブロックアドレス（シーケンス書込で全データを書込済みとなった論理ブロックのアドレス）とこれに対応づけられる物理ブロックアドレス及び最終書込論理ページアドレスの内容を示しているが、この場合、それら論理ブロックアドレス、物理ブロックアドレス、最終書込論理ページアドレスの値は、全て無効なデータ(0xFFFF)が保持される。
このように、シーケンス書込で全データを書込済みとなった論理ブロックについては、シーケンス書込ブロック管理テーブル７７による管理下から除外されるものとなる。また同時に、上記無効なデータ(0xFFFF)が保持されることで、シーケンス書込ブロック管理テーブル７７上に使用可能なブロックが存在していること（つまりシーケンス書込で使用可能なブロックに空きが存在すること）が表されることになる。
【００６７】
図１２は、無効データブロック管理テーブル７８のデータ構造を示している。
無効データブロック管理テーブル７８は、Block-Level管理ブロック３０、Page-Level管理ブロック４０、シーケンス書込管理ブロック５０の何れかの物理ブロックであってデータ書込の行われた物理ブロックのうち、データ消去が可能なブロックを特定するための管理情報となる。
【００６８】
この無効データブロック管理テーブル７８には、例えばガベージコレクションの発生などに伴いデータ消去が可能とされた物理ブロックの物理ブロックアドレスが適宜保持される。図中のＸ７は、消去可能なブロックの物理ブロックアドレスを指し示している。
一方、消去可能であるとして、実際にデータ消去が実行された物理ブロックについては、Ｘ８と示すように、そのブロックの物理ページアドレスが無効な値(0xFFFF)に更新される。これにより、既に消去済みのブロック（つまり新たにデータ書込が行われている可能性のあるブロック）に対する誤消去の防止が図られる。
【００６９】
［1-3．第１の実施の形態としてのメモリ制御手法］
図１３〜図２５を参照して、第１の実施の形態としてのメモリ制御手法について説明する。
先ずは図１３により、ホスト装置５側からフラッシュメモリ装置１側に行われる書込指示の一例を示しておく。
この図１３では、図中の時点ｔ１，ｔ３，ｔ５，ｔ７の計４回のWriteコマンドが発行された場合を例示している。各Writeコマンドに続けて、時点ｔ２，ｔ４，ｔ６，ｔ８ではフラッシュメモリ装置１に書き込むべきデータが送出される。
【００７０】
この場合、各Writeコマンドでは、書込データサイズとしてそれぞれ論理ブロックサイズ／４のデータサイズが指示され、従ってトータルで１つの論理ブロックサイズ分の書込指示が為されたものとなっている。各Writeコマンドでは、論理ブロックサイズ／４の書込データサイズを指示しているので、各Writeコマンドと共に指示される書込開始の論理アドレスの値は、時点ｔ１では０、時点ｔ３では論理ブロックサイズ／４、時点ｔ５では論理ブロックサイズ／２、時点ｔ７では論理ブロックサイズ*３／４となる。
【００７１】
なお確認のために述べておくと、この図１３はあくまで書込指示の態様の一例を示したものに過ぎず、実際の書込指示としては、異なる論理ブロックのデータについて個別に行われる場合もあれば、１度のWriteコマンドで指示される書込データサイズも上記とは異なる場合もあることは言うまでもない。
【００７２】
例えばこの図１３に示すような態様によるホスト装置５側からの書込指示、具体的には、或る１つの論理ブロックに属する各データについて論理アドレス順に連続して書込指示が為され、且つ各データのサイズが所定サイズ以上であるような書込指示が為された場合、本実施の形態のフラッシュメモリ装置１では、各Writeコマンドに対応して、シーケンス書込としてのデータ書込が実行されることになる。
【００７３】
以下、シーケンス書込処理を含む第１の実施の形態としてのメモリ制御手法について説明する。
先ずは図１４に、Writeコマンド実行処理のフローチャートを示す。
なお、この図１４を始めとして以降で説明する図１５，図１６，図２１のフローチャートに示す処理動作は、図１に示したメモリコントローラ３が例えば自らが備える前述のＲＯＭ等に格納されたプログラムに従って実行するものである。
【００７４】
図１４において、メモリコントローラ３は、ステップＳ１０１において、ホスト装置５側からのWriteコマンドを待機している。
そして、ホスト装置５側からのWriteコマンドがあった場合は、ステップＳ１０２において、論理アドレスの変換処理を行う。この論理アドレスの変換処理では、ホスト装置５が指示した論理アドレス、データサイズから書込を実行する論理ブロックアドレス、論理ページアドレス、論理セクタアドレスをそれぞれ計算する。
【００７５】
ここで、フラッシュメモリにおいて、書込指示されたデータサイズが論理ブロックサイズより大である場合には、データの書込処理は、書込を開始する論理ブロックアドレスから順に最終論理ブロックアドレスまで、順に論理ブロックごとに個別に行われることになる。
【００７６】
上記ステップＳ１０２において論理アドレスの変換処理を実行後は、ステップＳ１０３において、論理ブロック内書込処理を実行する。
この論理ブロック内書込処理では、論理ブロックごとの書込処理を実行する。
このステップＳ１０３の論理ブロック内書込処理として実行すべき具体的な処理内容については、図１５（及び図１６・図２１）により後述する。
【００７７】
ステップＳ１０３の論理ブロック内書込処理の実行後は、ステップＳ１０４において、全ての論理ブロック内書込処理が終了したか否かを判別する。すなわち、ステップＳ１０２の論理アドレスの変換処理で書込対象とした全ての論理ブロックアドレスで書込処理が終了したか否かを判別する。
【００７８】
ステップＳ１０４において、全ての論理ブロックアドレスで書込処理が未だ終了しておらず、全ての論理ブロック内書込処理が終了してはいないとの否定結果が得られた場合は、ステップＳ１０３に戻る。すなわち、書込対象とされた全ての論理ブロックアドレスで書込処理が終了するまで、ステップＳ１０３の書込処理が実行されるものである。
【００７９】
一方ステップＳ１０４において、全ての論理ブロックアドレスで書込処理が終了し、全ての論理ブロック内書込処理が終了したとの肯定結果が得られた場合は、この図に示すWriteコマンド実行処理は終了となる。
【００８０】
図１５は、図１４に示した論理ブロック内書込処理（Ｓ１０３）として実行すべき具体的な処理内容を示したフローチャートである。
先ず、ステップＳ２０１では、書込サイズが物理ブロックサイズに一致するか否かを判別する。すなわち、当該ステップＳ１０３としての論理アドレス内書込処理で書込対象とされるデータのサイズが、物理ブロックサイズに一致するか否かを判別するものである。
なお、当該ステップＳ２０１の判別処理は、書込サイズが物理ブロックサイズ未満であるか否かを判別する処理であるとも換言することができる。
【００８１】
ステップＳ２０１において、書込サイズが物理ブロックサイズと一致するとして肯定結果が得られた場合は、図１６に示すステップＳ３０１に処理を進める。すなわち、ブロックレベル書込のための処理が実行されるものである。
【００８２】
ここで、図１６により、ブロックレベル書込のための処理について説明する。
図１６において、ステップＳ３０１では、未書込物理ブロックの取得処理を実行する。すなわち、フラッシュメモリ４について未書込物理ブロックとして管理されている物理ブロックアドレスのうちから任意の１つの物理ブロックアドレスを取得する。
【００８３】
ステップＳ３０１による未書込物理ブロックの取得処理の実行後は、ステップＳ３０２において、Block-Level管理ブロック書込処理を実行する。すなわち、ステップＳ３０１で取得したアドレスの物理ブロックに対し、ホスト装置５側から受信したデータを書き込むものである。
【００８４】
ステップＳ３０２の書込処理の実行後は、ステップＳ３０３において、管理情報の更新処理を実行する。つまり、Block-Level管理テーブル７０における、当該論理ブロック内書込処理で対象としている論理ブロックアドレスに割り当てられている物理ブロックアドレスの値として、ステップＳ３０１で取得した物理ブロックアドレスの値を書き込む。
【００８５】
ステップＳ３０３の管理情報更新処理の実行後、ステップＳ１０３の論理ブロック内書込処理は終了となる。
【００８６】
なお、論理ブロック内書込処理で実行しているブロックデータの書込が、論理レベルでの上書きに伴うものである場合には、上記のようなBlock-Level管理テーブル７０についての更新処理のみではなく、Page-Level管理テーブル７５、Page-Levelマップ７６、無効データブロック管理テーブル７８などの他の管理情報の更新も実行すべき場合がある。
例えば、論理ブロック内書込処理で対象とされている論理ブロックのデータに関して、上書き前の旧データがBlock-Level管理下の物理ブロック（物理ブロックｂ0とおく）に書き込まれていた状態であった場合に、ステップＳ３０２の書込で当該論理ブロックのデータが新たに書き込まれた場合にあっては、上記旧データが記録されていた物理ブロックｂ0については消去可能なものとして扱われるようにすべきである。従ってこの場合には、当該物理ブロックｂ0の物理ブロックアドレスを無効データブロック管理テーブル７８に追加するという処理も併せて実行すべきものとなる。
或いは、上記旧データの一部又は全部は過去にページレベル書込によってそれぞれ異なる物理ブロックに分散して書き込まれていたという場合には、それらのデータについては、上記ステップＳ３０２の書込（すなわち論理レベルでの上書きのための物理レベル書込）の実行を以て、無効とされるべきものとなる。従ってこの場合には、それら無効とされるべきデータについて、Page-Level管理テーブル７５、Page-Levelマップ７６に対し無効な値（0xFFFF）を書き込むという更新処理を実行すべきものとなる。
【００８７】
説明を図１５に戻す。
先のステップＳ２０１において、書込サイズが物理ブロックサイズに一致しないとして否定結果が得られた場合は、ステップＳ２０２に進み、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するか否かを判別する。すなわち、シーケンス書込ブロック管理テーブル７７内に、書込を実行している論理ブロック（つまり当該論理ブロック内書込処理で対象としている論理ブロック）の論理ブロックアドレスが存在するか否かを判別する。
【００８８】
ここで、書込を実行している論理ブロックのアドレス値がシーケンス書込ブロック管理テーブル７７内に存在する場合には、当該論理ブロックについては、そのデータがシーケンス書込途中の状態にあることになる。
一方、書込を実行している論理ブロックのアドレス値がシーケンス書込ブロック管理テーブル７７内に存在しない場合には、当該論理ブロックについては、少なくともシーケンス書込途中のブロックではないということなる。
なおこの点を考慮して分かるように、上記ステップＳ２０２の判別処理は、書込指示されたデータの属する論理ブロックアドレス内のデータが、過去にシーケンス書込されているか否かを判別するものであるとも捉えることができる。
【００８９】
ステップＳ２０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在しないとして否定結果が得られた場合は、ステップＳ２０３に処理を進める。
ステップＳ２０３、及びステップＳ２０４の処理は、新規にシーケンス書込管理ブロック５０を登録しそこに当該論理ブロック内書込処理で書込対象とされているデータを新たに書き込むべきか否かを判別するための各条件を判定する処理となる。
【００９０】
ステップＳ２０３では、書込サイズが(物理ブロックサイズ)／４以上、かつ論理ページサイズの倍数であるか否かを判別する。
換言すれば、書込サイズがシーケンス書込に適したサイズであるか否かを判別するものである。
ここで、シーケンス書込に適したサイズの上限は、例えば設定されるブロックサイズ等によって異なるものであり、必ずしも「(物理ブロックサイズ)／４以上」に限定されるべきものではない。本例の場合、ブロックサイズ＝３２ＭＢ（メガバイト）に対応して、上記の(物理ブロックサイズ)／４以上に設定しているものとする。
【００９１】
ステップＳ２０３において、書込サイズが（物理ブロックサイズ）／４以上でありかつ論理ページサイズの倍数であるとの条件が満たされずに否定結果が得られた場合は、後の図２１に示すステップＳ４０１に処理を進める。すなわち、ページレベル書込のための処理に移行するものである。
【００９２】
一方ステップＳ２０３において、書込サイズが（物理ブロックサイズ）／４以上でありかつ論理ページサイズの倍数であるとの肯定結果が得られた場合は、ステップＳ２０４に進んで、書込開始論理ページアドレスが０、かつ論理セクタアドレスが０であるか否かを判別する。すなわち、データの書込開始アドレスが、当該論理ブロック内書込処理で対象としている論理ブロックの先頭アドレスと一致しているか否かを判別するものである。
【００９３】
ステップＳ２０４において、書込開始論理ページアドレスが０かつ論理セクタアドレスが０であるとの条件が満たされず否定結果が得られた場合は、図２１に示すページレベル書込のための処理に移行する。
【００９４】
一方ステップＳ２０４において、書込開始論理ページアドレスが０かつ論理セクタアドレスが０であるとして肯定結果が得られた場合は、ステップＳ２０５に進む。
【００９５】
ステップＳ２０５では、シーケンス書込ブロック管理テーブル７７に空きがあるか否かを判別する。すなわち、シーケンス書込ブロック５０として使用可能なブロックの数が上限に達していないか否かを判別するものである。
【００９６】
ステップＳ２０５において、シーケンス書込ブロック管理テーブル７７に空きがあるとして肯定結果が得られた場合は、ステップＳ２０７に進み、シーケンス書込ブロック管理テーブル７７に新規登録を行う。すなわち、シーケンス書込ブロック管理テーブル７７に新たに論理ブロックアドレス（当該論理アドレス内書込処理で対象としている論理ブロックのアドレス）とシーケンス書込ブロック５０として使用するブロックの物理ブロックアドレスとを追加して、新たなシーケンス書込ブロック５０を登録する。
なお、新規登録の場合、シーケンス書込ブロック管理テーブル７７における最終書込論理ページアドレスの値としては、例えば初期値（0xFFFF）を書き込むものとする。
【００９７】
一方ステップＳ２０５において、シーケンス書込ブロック管理テーブル７７に空きがないとして否定結果が得られた場合は、ステップＳ２０６に進み、シーケンス書込ブロックのガベージコレクションを実行した後（つまりシーケンス書込管理ブロック５０として使用可能な物理ブロックを確保した後）、上記ステップＳ２０７の新規登録処理を実行する。
【００９８】
ここで、ステップＳ２０６の「シーケンス書込ブロックのガベージコレクション」の処理としては、先ず、シーケンス書込ブロック管理テーブル７７で管理される論理ブロックのうちから１つの論理ブロックを選択する。以下、このように選択した論理ブロックのアドレスを「ａi」とおく。
このように選択した論理ブロックaiについてガベージコレクションを行って当該論理ブロックaiのデータをBlock-Level管理に昇格させることで、シーケンス書込ブロック管理テーブル７７にブロックの空きを確保するものである。
【００９９】
このとき、シーケンス書込ブロックのガベージコレクションとしては、上記のように選択した論理ブロックａiの既記録データが、
１）他のブロックにも分散して記録されている場合（つまり論理ブロックａiの既記録データとしてシーケンス書込ブロック管理テーブル７７の管理下のデータのみでなくPage-Level管理下やBlock-Level管理下のデータが存在している場合）
２）他のブロックには一切存在していない場合（論理ブロックａiの既記録データがシーケンス書込ブロック管理テーブル７７の管理下のデータのみである場合）
で異なる処理を実行することになる。
【０１００】
上記１）の場合に対応して実行されるシーケンス書込ブロックのガベージコレクションの具体的な例について、図１７〜図１９を参照して説明する。
図１７は、１）の場合におけるシーケンス書込ブロックのガベージコレクションによる物理レベルでのデータの移行の様子の例を模式的に示し、図１８は、図１７に示すデータ移行前におけるシーケンス書込ブロック管理テーブル７７、Block-Level管理テーブル７０、Page-Level管理テーブル７５、Page-Levelマップ７６の内容を例示している。
また図１９は、図１７に示すデータ移行後のシーケンス書込ブロック管理テーブル７７、Block-Level管理テーブル７０、Page-Level管理テーブル７５、Page-Levelマップ７６の内容を例示している。
【０１０１】
上述したようにシーケンス書込ブロック管理テーブル７７から１つの論理ブロックアドレス（ａi）を選択した後は、Block-Level管理テーブル７０、Page-Level管理テーブル７５、 Page-Levelマップ７６を参照して、図１７に示すように、シーケンス書込ブロック管理テーブル７７で論理ブロックアドレスａiに割り当てられた物理ブロックアドレス（この場合はｘi）の未書込物理ページ５１ａに対し、他の物理ブロックに分散している当該論理ブロックアドレスａiの論理ページデータを寄せ集めて追記する。
【０１０２】
そして、このようなガベージコレクションに係る物理レベルでのデータ移行処理を実行した後は、図１９に示すように各管理情報を更新する。
具体的に、シーケンス書込ブロック管理テーブル７７については、論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値、及び最終書込論理ページアドレスの値を全て無効な値(0xFFFF)に更新する。
また、Block-Level管理テーブル７０については、論理ブロックアドレスａiに割り当てられている物理ブロックアドレスをｘiに更新する。
さらに、Page-Level管理テーブル７５については、論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値を全て無効な値(0xFFFF)に更新する。
また、論理ブロックアドレスａiに使用されていたPage-Levelマップ７６の物理ブロックアドレス、物理ページアドレスの値についても全て無効な値(0xFFFF)に更新する。
【０１０３】
このようなガベージコレクションにより、選択した論理ブロックアドレスａiに割り当てられていたアドレスｘiの物理ブロックについてはブロックレベル管理下に新たに置かれるものとなって、シーケンス書込ブロック管理テーブル７７には、使用可能な物理ブロックの空きを１つ増やすことができる。
【０１０４】
なお、図１７及び図１８に示した例のように、論理ブロックａiの旧データが或る物理ブロック（図の例では物理ブロックアドレスｂ0）に書き込まれていてこれがBlock-Level管理されていたという場合には、シーケンス書込ブロックのガベージコレクションの実行に伴い、当該物理ブロックアドレスｂ0の物理ブロックは消去可能なものとして扱われるべきものとなる。このため、図１７、図１８に示す例の場合、上記のシーケンス書込ブロックのガベージコレクションの際には、併せて、当該物理ブロックアドレスｂ0を無効データブロック管理テーブル７８に登録する処理も実行することになる。
【０１０５】
一方、上記２）の場合におけるシーケンス書込ブロックのガベージコレクションとしては、先ず、シーケンス書込ブロック管理テーブル７７から１つの論理ブロックアドレス（ａi）を選択するという点は１）の場合と共通となる。
上記２）の場合、このように論理ブロックアドレスａiを選択した後は、シーケンス書込ブロック管理テーブル７７において当該論理ブロックアドレスａiに割り当てられている物理ブロック（ｘi）の未書込物理ページ５１ｂに対し、例えば初期値などのダミーデータを書き込んでブロック全体を書込済みとする。
その上で、シーケンス書込ブロック管理テーブル７７において、論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値、最終書込論理ページアドレスの値を全て無効な値(0xFFFF)に更新し、またBlock-Level管理テーブル７０において、論理ブロックアドレスａiと、さらにこれに対応づけて物理ブロックアドレスｘiを新たに書き込むことで、当該物理ブロックｘiが新たにブロックレベル管理下に置かれるようにする。
これにより、上記２）の場合に対応してシーケンス書込ブロック管理テーブル７７に新たな空きブロックを生成することができる。
【０１０６】
ここで、上記説明からも理解されるように、「シーケンス書込ブロックのガベージコレクション」の主旨は、シーケンス書込ブロック管理テーブル７７から選択した或るシーケンス書込管理ブロック５０をBlock-Level管理下に新たに置くことによって、シーケンス書込ブロック管理テーブル７７に空きを確保する点にある。
【０１０７】
説明を図１５に戻す。
図１５において、ステップＳ２０７によるシーケンス書込ブロック７７への新規登録処理を実行した後は、ステップＳ２０８において、シーケンス書込処理を実行する。すなわち、ステップＳ２０７で新規登録した物理ブロックに対し、アドレス順に書込を行うものである。
【０１０８】
図２０Ａに、この場合のシーケンス書込の概念図を示す。
このように本例のシーケンス書込では、登録した物理ブロック（図中ではアドレスｂjとしている）に、ホスト装置５から受信したデータを、物理ページアドレス０，物理セクタアドレス０から順に書き込む。このとき、書込の単位は、論理ページサイズである。
【０１０９】
図１５において、ステップＳ２０８のシーケンス書込処理の実行後は、ステップＳ２１３において、最終書込物理ページアドレスをシーケンス書込ブロック管理テーブル７７に登録する。すなわち、シーケンス書込ブロック管理テーブル７７に登録された論理ブロックアドレスのうち、ステップＳ２０７でシーケンス書込を実行した論理ブロックアドレスに対応づけられている最終書込論理ページアドレスの値として、最終書込を実行した論理ページアドレスの値を書き込むものである。
【０１１０】
図２０Ｂは、ステップＳ２１３による登録処理後のシーケンス書込ブロック管理テーブル７７の内容を例示している。
例えば、論理ブロックアドレスａjのデータについて物理ブロックアドレスｂjのブロックに対し論理ページアドレスＰkまでのシーケンス書込が実行されたとすると、その場合のシーケンス書込ブロック管理テーブル７７においては、図のように、論理ブロックアドレスａj及び物理ブロックアドレスｂjに対応づけられる最終書込論理ページアドレスとして、論理ページアドレスＰkが書き込まれる。
【０１１１】
図１５において、ステップＳ２１３による登録処理の実行後は、論理ブロック内書込処理（Ｓ１０３）は終了となる。
【０１１２】
続いて、先のステップＳ２０２の判別処理において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するとして肯定結果が得られた場合、すなわち、シーケンス書込途中である場合に対応して実行されるべき処理について説明する。
【０１１３】
図１５において、ステップＳ２０２の判別処理で肯定結果が得られた場合は、ステップＳ２０９に処理を進める。
ステップＳ２０９では、書込開始論理ページアドレスがシーケンス論理ページアドレスに連続であるか否かを判別する。すなわち、書込開始論理ページアドレスが、シーケンス書込ブロック管理テーブル７７で管理されている、当該論理ブロック内書込処理で対象としている論理ブロックアドレスについての最終書込論理ページアドレスに連続であり、かつ書込開始論理セクタアドレスが０であるか否かを判別する。
例えば、図２０Ｂで示すシーケンス書込ブロック管理テーブル７７の内容を用いて説明すると、この場合、書込を実行している論理ブロックアドレスａjについて、書込開始論理ページアドレスの値が (ｐk＋１)であってかつ論理ページ内オフセットが０であれば、書込開始論理ページアドレスがシーケンス論理ページアドレスに連続であるとの判別結果が得られるものである。
【０１１４】
ステップＳ２０９において、書込開始論理ページアドレスがシーケンス論理ページアドレスに連続ではないとして否定結果が得られた場合は、ステップＳ２１５に進んでシーケンス書込終了・データ整合処理を実行した後、図２１に示すページレベル書込のための処理（これについては後述する）に移行する。
【０１１５】
ここで、ステップＳ２１５のシーケンス書込終了・データ整合処理は、シーケンス書込ブロック管理テーブル７７で管理されていた、当該論理ブロック内書込処理で対象とされている論理ブロックとしてのシーケンス書込途中のブロックについてガベージコレクションを実行することにより、当該論理ブロックのデータをBlock-Level管理に昇格させてシーケンス書込を終了させる処理となる。つまり、図２１に示すページレベル書込への移行前に、データの整合性を確保するための処理といえる。
【０１１６】
ステップＳ２１５のシーケンス書込終了・データ整合処理の具体的な処理内容としては、当該論理ブロック内書込処理で対象とされている論理ブロック（仮に「Ｔi」とおく）の既記録データが、
３）他のブロックにも分散して記録されている場合（つまり論理ブロックＴiの既記録データとしてシーケンス書込ブロック管理テーブル７７の管理下のデータのみでなくPage-Level管理下やBlock-Level管理下のデータが存在している場合）
４）他のブロックには一切存在していない場合（論理ブロックＴiの既記録データがシーケンス書込ブロック管理テーブル７７の管理下のデータのみである場合）
で異なる処理を実行することになる。
ここで、上記３）の場合、論理ブロックＴiを論理ブロックａiと置き換えて、先の図１７〜図１９を参照して説明した１）の場合に対応した処理と同様の処理を行って、論理ブロックＴiのデータをBlock-Level管理に昇格させる。
一方、上記４）の場合には、同様に論理ブロックＴiを論理ブロックａiと置き換えて、先の２）の場合と同様の処理を実行して論理ブロックＴiのデータをBlock-Level管理に昇格させる。
【０１１７】
一方、ステップＳ２０９において、書込開始論理ページアドレスがシーケンス論理ページアドレスに連続であるとの肯定結果が得られた場合は、ステップＳ２１０に進み、書込サイズが論理ページの倍数であるか否かの判別を行う。
【０１１８】
ここで、ＮＡＮＤフラッシュメモリにおいて、データの読み書きの単位はページサイズ単位であるため、書込サイズがページサイズの倍数でない場合（つまりページ未満のサイズ又はページサイズ未満の端数が出るサイズの場合）、そのデータはシーケンス書込に適さない。
このため、ステップＳ２１０において、書込サイズが論理ページの倍数でないとして否定結果が得られた場合は、上述したステップＳ２１５に進んでシーケンス書込終了・データ整合処理を実行した後、図２１に示すページレベル書込のための処理に移行する。
【０１１９】
一方ステップＳ２１０において、書込サイズが論理ページの倍数であるとして肯定結果が得られた場合は、ステップＳ２１１に進み、シーケンス書込中の物理ブロックへデータ追記を行う。すなわち、シーケンス書込ブロック管理テーブル７７から書込が実行されている論理ブロックに割り当てられている物理ブロックアドレスと最終書込論理ページアドレスの値を取得し、取得したアドレスの物理ブロックにおける未書込物理ページのうち先頭のページから順にデータの書込を行う。
例えば図２０Ｂのシーケンス書込ブロック管理テーブル７７の内容を用いて説明すると、この場合、書込開始論理ページアドレスはｐk＋１であり、当該論理ページアドレスｐk＋１に対応する物理ページから順に、指定されていたサイズのデータの書込を行う。
【０１２０】
ステップＳ２１１によるデータ追記処理の実行後は、ステップＳ２１２において、最終物理ページに書込を実行したか否かの判別を行う。すなわち、書込が実行されている論理ブロックに割り当てられたシーケンス書込ブロック５０内の全ての物理ページにデータが書き込まれたか否かの判別が行われることに相当する。
【０１２１】
ステップＳ２１２において、最終物理ページへの書込ではないとして否定結果が得られた場合は、先に説明したステップＳ２１３に処理を進めて、最終書込物理ページアドレスをシーケンス書込ブロック管理テーブル７７に登録する。
【０１２２】
一方ステップＳ２１２において、最終物理ページへの書込であったとして肯定結果が得られた場合は、ステップＳ２１４に進み、ブロック登録処理を実行する。すなわち、全ページの書込が完了したブロックを、シーケンス書込管理下からブロックレベル管理下に新たに置くための処理である。
具体的に、全ページの書込が完了した論理ブロック（つまり当該論理ブロック内書込処理で対象としている論理ブロック）のアドレスをａi、シーケンス書込ブロック管理テーブル７７で当該論理ブロックａiに割り当てられている物理ブロックのアドレスをｘiとおくと、ステップＳ２１４の登録処理では、シーケンス書込ブロック管理テーブル７７における論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値、及び最終書込論理ページアドレスの値を全て無効な値(0xFFFF)に更新すると共に、Block-Level管理テーブル７０において、論理ブロックアドレスａiと、さらにこれに対応づけて物理ブロックアドレスｘiを新たに書き込む処理を実行することになる。
【０１２３】
ここで、当該ステップＳ２１４のブロック登録処理は、
５）当該論理ブロック内書込処理で対象としている論理ブロックについて、その途中までのデータが書き込まれていた状態から、今回新規にその続き部分を追記した場合
には、上記により説明した登録処理のみを実行すればよい。
【０１２４】
但し、
６）今回の追記としての物理書込が、論理レベルでの上書きに伴うものであった場合
には、上記の登録処理と併せて、論理上書きの対象となった旧データが消去されたものとして扱われるようにするための処理も実行することになる。
具体的に、当該論理ブロック内書込処理で対象としている論理ブロックのアドレスをａi、シーケンス書込ブロック管理テーブル７７で当該論理ブロックａiに割り当てられている物理ブロックのアドレスをｘiとおくと、Page-Level管理テーブル７５おいて論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値を全て無効な値(0xFFFF)に更新すると共に、論理ブロックアドレスａiに使用されていたPage-Levelマップ７６の物理ブロックアドレス、物理ページアドレスの値を全て無効な値(0xFFFF)に更新するという処理も併せて行う。
【０１２５】
ステップＳ２１４の登録処理の実行後は、論理ブロック内書込処理（Ｓ１０３）は終了となる。
【０１２６】
続いて、図２１により、ページレベル書込のための処理について説明する。
図２１において、先ずステップＳ４０１では、Page-Level管理テーブル７５に論理ブロックが存在するか否かを判別する。すなわち、Page-Level管理テーブル７５に当該論理ブロック内書込処理で対象としている論理ブロックアドレスが存在するか否かを判別するものである。
【０１２７】
ステップＳ４０１において、論理ブロックがPage-Level管理テーブル７５に存在するとして肯定結果が得られた場合は、図示するようにステップＳ４０６に進み、Page-Level管理ブロック４０への書込を実行する。すなわち、Page-Level管理テーブル７５において当該論理ブロック内書込処理で対象としている論理ブロックアドレスに割り当てられているPage-Level管理ブロック４０に対して、ホスト装置５側から受信したデータのうち書込可能なサイズのデータを書き込むものである。
【０１２８】
一方ステップＳ４０１において、論理ブロックがPage-Level管理テーブル７５に存在しないとの否定結果が得られた場合は、ステップＳ４０２に進み、Page-Level管理テーブル７５に空きがあるか否かを判別する。具体的には、Page-Level管理テーブル７５に登録されている論理ブロックの数が、前述のｄ個に達していないか否かを判別する。
【０１２９】
ステップＳ４０２において、Page-Level管理テーブル７５に空きがあるとして肯定結果が得られた場合は、ステップＳ４０３に進み、Page-Level管理テーブル７５で管理する物理ブロックがｆ個より少ないか否かを判別する。すなわち、Page-Level管理テーブル７５で現在管理されているPage-Level管理ブロック４０としての物理ブロックの数が、その上限値＝ｆに達していない否かを判別するものである。
【０１３０】
このステップＳ４０３において、Page-Level管理テーブル７５で管理する物理ブロックがｆ個より少なくない（上限値ｆに達している）との否定結果が得られた場合、及び、上記ステップＳ４０２においてPage-Level管理テーブル７５に空きがないとの否定結果が得られた場合は、共にステップＳ４０４に進み、Page-Level管理ブロックのガベージコレクションを実行する。
そしてその後、ステップＳ４０５において、Page-Level管理テーブル７５に新規登録を行う。すなわち、当該論理ブロック内書込処理で対象としている論理ブロックアドレスをPage-Level管理テーブル７５に新たに登録して、当該論理ブロックアドレスに割り当てるPage-Level管理ブロック４０（物理ブロック）を新たに確保するものである。
【０１３１】
また、上記ステップＳ４０３において、Page-Level管理テーブル７５で管理可能な物理ブロックがｆ個より少ない（上限値ｆに達していない）との肯定結果が得られた場合には、ステップＳ４０４のガベージコレクションはパスして、上記ステップＳ４０５の新規登録処理を実行することになる。
【０１３２】
ここで、ステップＳ４０４の「Page-Level管理ブロックのガベージコレクション」での処理の概要を図２２〜図２４を参照して説明する。
図２２は、Page-Level管理ブロックのガベージコレクションによる物理レベルでのデータの移行の様子の例を模式的に示し、図２３は、図２２に示すデータ移行前におけるBlock-Level管理テーブル７０、Page-Level管理テーブル７５、Page-Levelマップ７６の内容を例示している。
また図２４は、図２２に示すデータ移行後のBlock-Level管理テーブル７０、Page-Level管理テーブル７５、Page-Levelマップ７６の内容を例示している。
【０１３３】
先ず、Page-Level管理ブロックのガベージコレクションでは、Page-Level管理テーブル７５で管理される論理ブロックアドレスのうちから１つの論理ブロックアドレスを選択すると共に、未書込物理ブロックのうち１つの物理ブロックアドレスを取得する。この場合の例では、論理ブロックアドレスとしては、図２３における論理ブロックアドレスａiが選択されたものとする。また、選択した未書込物理ブロックの物理ブロックアドレスはｘiとおく。
【０１３４】
このように論理ブロックアドレスａi及び未書込物理ブロックアドレスｘiを選択した後は、Block-Level管理テーブル７０、Page-Level管理テーブル７５、 Page-Levelマップ７６を参照して、図２２に示すように、物理ブロックアドレスｘiの未書込物理ページに対し、他の物理ブロックに分散している論理ブロックアドレスａiの論理ページデータを寄せ集めて書き込む。
【０１３５】
このような物理レベルでのデータ移行処理を実行した後は、図２４に示すような各管理情報の更新を行う。
具体的に、Block-Level管理テーブル７０については、論理ブロックアドレスａiに割り当てられている物理ブロックアドレスをｘiに更新する。つまりこれにより、論理ブロックａiについては、新たにブロックレベル管理下に置かれるものとなる。
その上で、Page-Level管理テーブル７５については、論理ブロックアドレスａiが割り当てられていた論理ブロックアドレスの値、物理ブロックアドレスの値を全て無効な値(0xFFFF)に更新する。また、論理ブロックアドレスａiに使用されていたPage-Levelマップ７６の物理ブロックアドレス、物理ページアドレスの値についても全て無効な値(0xFFFF)に更新する。これらの処理により、論理ブロックａiの分散していた旧ページデータが無効化されると共に、Page-Level管理テーブル７５上に新たな空きブロックが確保されるものとなる。
【０１３６】
なお、図２２及び図２３に示される例のように、論理ブロックａiの旧データが或る物理ブロック（図の例では物理ブロックアドレスｂ0）に書き込まれていてこれがBlock-Level管理されていたという場合には、Page-Level管理ブロックのガベージコレクションの実行に伴い、当該物理ブロックアドレスｂ0の物理ブロックは消去可能なものとして扱われるべきものとなる。このため、図２２、図２３に示す例の場合、上記のPage-Level管理ブロックのガベージコレクションの際には、併せて、当該物理ブロックアドレスｂ0を無効データブロック管理テーブル７８に登録する処理も実行することになる。
【０１３７】
説明を図２１に戻す。
ステップＳ４０４によるガベージコレクションの実行後は、前述したステップＳ４０５のPage-Level管理テーブル７５への新規登録処理を実行することになる。確認のため述べておくと、当該ステップＳ４０５の登録処理は、未書込の物理ブロックのうち１つの物理ブロックアドレスを取得し、当該取得した物理ページアドレスの値を、当該論理ブロック内書込処理で対象としている論理ブロックアドレスの値と対応づけてPage-Level管理テーブル７５に新たに書き込む処理となる。
【０１３８】
ステップＳ４０４の登録処理の実行後は、前述したステップＳ４０６に進み、Page-Level管理ブロック４０への書込を実行する。
そして、ステップＳ４０６の書込の実行後は、ステップＳ４０７において、Page-Levelマップ７６の更新を行う。すなわち、ホスト装置５側から受信して書込を行ったデータに対応するPage-Levelマップ７６の値を更新するものである。
【０１３９】
図２５に、Page-Level管理ブロック４０への書込（Ｓ４０６）として行われるデータ書込の例と、Page-Levelマップ７６の更新（Ｓ４０７）実行後のPage-Levelマップ７６の例とを示す。
例えばステップＳ４０６のPage-Level管理ブロック４０への書込では、図のように物理ブロックアドレスｘjの物理ページアドレスｐiとｐi＋１に対して論理ページアドレスｙiとｙi＋１のデータをそれぞれ書き込んだとする。
このときのPage-Levelマップ７６は、図のように論理ページアドレスｙi、ｙi＋１に対応する論理ブロックアドレスの値と物理ページアドレスの値とが更新される。
【０１４０】
図２１に戻り、ステップＳ４０７のマップ更新処理の実行後は、ステップＳ４０８において、全てのデータ書込が終了したか否かを判別する。すなわち、当該論理ブロック内書込処理で対象としている論理ブロックアドレス内で、ホスト装置５側から指定されたサイズのデータを全て書き込んだか否か判別するものである。
【０１４１】
ステップＳ４０８において、全てのデータの書込が未だ終了していないとの否定結果が得られた場合は、先のステップＳ４０３に戻り、再度、Page-Level管理テーブル７５で管理する物理ブロックがｆ個より少ないか否かを判別する。
【０１４２】
一方ステップＳ４０８において、全てのデータの書込が終了したとして肯定結果が得られた場合は、論理ブロック内書込処理（Ｓ１０３）は終了となる。
【０１４３】
以上で説明したように、本実施の形態では、Block-Level管理による記録を行うことができないブロックサイズ未満のデータについて、シーケンス書込を可能としている。
Block-Level管理とPage-Level管理の２種の管理でデータ書込を行うようにされている従来のフラッシュメモリ装置では、書き込むべきデータがブロックサイズと一致する場合はブロックレベル管理による記録を行い、ブロックサイズ未満のデータについてはページレベル管理による書込を行うようにされている。このため、例えばブロックサイズ未満のデータについて、それらが論理アドレス的に連続している個々のデータであったとしても、それらのデータについては必ずページレベル管理による書込が行われていた。
これに対し、本実施の形態によれば、ブロックサイズ未満のデータについてシーケンス書込を行うことができる。つまり、例えば上記のようなケースにおいて、ページレベル管理下での書込のように個々のデータが異なる物理ブロックに分散して記録されてしまうことを効果的に防止できる。
つまり、シーケンス書込を可能とした本実施の形態によれば、ブロックサイズ未満のデータについてページレベル管理による書込しか選択肢にない従来と比較して、ガベージコレクションの発生頻度を効果的に減らすことができるものとなる。この結果、従来よりも記録速度の面でパフォーマンス向上が図られる。
【０１４４】
また、前述もしたように従来では、ホスト装置５側でブロックサイズよりも小さなサイズのバッファメモリしか備えられていない場合には、ホスト装置５側はブロックサイズ未満のデータしか送出できない（この場合、例えば図１３のような送出形態となる）。従ってこの場合も、データが論理アドレス的に連続していたとしても、従来のフラッシュメモリ装置ではページレベル管理による書込が選択されてしまうことになる。
これに対し、シーケンス書込を可能とした本実施の形態によれば、ホスト装置５側からブロックサイズ未満のデータしか送出できない場合であっても、それらのデータをシーケンス書込することができ、結果、ページレベル管理による記録が行われる場合とは異なり、ガベージコレクションの発生頻度を低下させることができ、高速な記録を実現することができる。すなわち、データ転送用のバッファメモリサイズの小さなホスト装置５からの書込が行われる場合にも、高速なデータ記録を実現できる。
【０１４５】
＜２．第２の実施の形態＞
続いて、本技術に係る第２の実施の形態について説明する。
前述のように第２の実施の形態は、ホスト装置５がコマンドでフラッシュメモリ装置１側に書込手法の切り替えを明示的に通知するものであって、フラッシュメモリ装置１は、当該通知に応じて、データ書込手法を変更するものである。
なお、第２の実施の形態では、上記のようにホスト装置５がシーケンス書込の指示を行う他、フラッシュメモリ装置１で実行されるメモリ制御手法に係る処理の内容が第１の実施の形態の場合と異なるものとなる。
第２の実施の形態では、主に図１に示したメモリコントローラ３により実行されるべきプログラムが第１の実施の形態でのプログラムから変更されたものであり、フラッシュメモリ装置１の内部構成自体は図１に示したものと同様となる。
【０１４６】
図２６は、第２の実施の形態の場合におけるホスト装置５が、フラッシュメモリ装置１にシーケンス書込を実行させる場合において行う書込指示の例を示している。
この場合のホスト装置５は、フラッシュメモリ装置１にシーケンス書込を実行させるとしたときに、図中時点ｔ１と示すようにシーケンス書込開始コマンドをフラッシュメモリ装置１側に対して送出する。このシーケンス書込開始コマンドにおいては、図のようにシーケンス書込の対象とするデータの書込開始アドレスとしての論理アドレスと、シーケンス書込を実行させたいデータのサイズ（総サイズ）とを併せて指示する。この場合、書込開始の論理アドレスは図のように「０」である。
【０１４７】
ここで、この図２６においても、先の図１３の場合と同様に、各Writeコマンドでは書込データサイズとしてそれぞれ論理ブロックサイズ／４のデータサイズが指示され、トータルで１つの論理ブロックサイズ分の書込指示が為される場合を例示している。
このため、この場合における時点ｔ１のシーケンス書込開始コマンドで指示されるデータサイズは、図のように「論理ブロックサイズ」となっている。
【０１４８】
時点ｔ１でのシーケンス書込開始コマンドの送出後は、図１３の場合と同様に、ホスト装置５は、論理アドレスと書込サイズとを指示したWriteコマンドと書込データの送出とをフラッシュメモリ装置１に対し順次行う。この場合の例では、時点ｔ９でのデータ送出が、フラッシュメモリ装置１側にシーケンス書込させるべきデータの最終送出となる。
【０１４９】
最終書込データの送出後、この場合のホスト装置５は、シーケンス書込終了コマンドを送出する（時点ｔ１０）。このシーケンス書込終了コマンドとしても、先のシーケンス書込開始コマンドと同様、論理アドレスと書込データのサイズ（総サイズ）を併せて指定したものとなる。
【０１５０】
ここで、この場合のホスト装置５は、シーケンス書込を実行させたい場合にのみ、その旨を表す書込開始コマンドを送出するものであって、他のブロックレベル書込、ページレベル書込については、特段、その旨を表す書込開始コマンドの送出は行わず、通常通り論理アドレスと書込データサイズとを指定するWriteコマンドの送出を行うものとされる。
【０１５１】
続いて、この場合のフラッシュメモリ装置１側が実行する処理の概要について説明する。
第２の実施の形態のフラッシュメモリ装置１では、ホスト装置５側からのシーケンス書込開始コマンドに対応する処理として、図２７に示す処理が実行されることになる。
また、ホスト装置５側からのシーケンス書込終了コマンドに対応する処理として、図２８に示す処理が実行される。
さらに第２の実施の形態のフラッシュメモリ装置１においても、Writeコマンドに対応する処理として、先の図１４に示した処理を実行することになる。但し、第２の実施の形態の場合、ステップＳ１０３の論理ブロック内書込処理として、図２９に示す処理が実行される点は第１の実施の形態の場合と異なる。
【０１５２】
図２７、図２８、及び図１４に示す処理は、それぞれ並行処理としてメモリコントローラ３により実行される。
例えば、ホスト装置５側からシーケンス書込開始コマンドが受信された場合には、図２７のステップＳ５０１で肯定結果が得られ、ホスト装置５側からのシーケンス書込開始コマンドで指定された論理ブロックアドレスについて既にシーケンス書込管理ブロック５０が割り当て済みであった場合を除き、新たなシーケンス書込管理ブロック５０を確保するための処理が実行される。
そして、上記シーケンス書込開始コマンドの受信後に、ホスト装置５側からWriteコマンドが受信された場合は、図１４に示した論理ブロック内書込処理（Ｓ１０３）を伴う一連の処理が実行されることになる。上述のように第２の実施の形態の場合、論理ブロック内書込処理（Ｓ１０３）は、図２９に示す処理が実行されるものである。
【０１５３】
また、ホスト装置５側からシーケンス書込終了コマンドが受信された場合には、図２８のステップＳ６０１で肯定結果が得られ、シーケンス書込により対象ブロック内の最終物理ページまで書込が行われたか否かに応じた処理が実行される。
【０１５４】
また、ホスト装置５側からシーケンス書込開始コマンドを伴わずにWriteコマンドが発行された場合は、図２８に示す処理により、ブロックレベル書込を行うべきか、或いはページレベル書込を行うべきかが判断されることになる。
【０１５５】
以下、第２の実施の形態のフラッシュメモリ装置１が実行する図２７〜図２９の処理について具体的に説明する。
先ず、図２７に示す、シーケンス書込開始コマンドに対応する処理について説明する。  図２７において、ステップＳ５０１においては、ホスト装置５側からのシーケンス書込開始コマンドが受信されるまで待機する。
そして、シーケンス書込開始コマンドが受信された場合には、ステップＳ５０２に処理を進める。
【０１５６】
ステップＳ５０２では、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するか否かを判別する。この処理の内容は、先の図１５で説明したステップＳ２０２の処理内容と同様となる。
【０１５７】
ステップＳ５０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するとして肯定結果が得られた場合は、この図に示す処理は終了となる。
【０１５８】
一方ステップＳ５０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在しないとして否定結果が得られた場合は、ステップＳ５０３において、シーケンス書込ブロック管理テーブル７７に空きがあるか否かを判別する。
【０１５９】
ステップＳ５０３において、シーケンス書込ブロック管理テーブル７７に空きがあるとして肯定結果が得られた場合は、ステップＳ５０５に進んでシーケンス書込ブロック管理テーブル７７に新規登録を行う。すなわち、ステップＳ５０１で受信したシーケンス書込開始コマンドが指定している論理ブロックアドレスをシーケンス書込ブロック管理テーブル７７に登録して、当該論理ブロックアドレスにシーケンス書込ブロック５０が割り当てられるようにするものである。
【０１６０】
一方ステップＳ５０３において、シーケンス書込ブロック管理テーブル７７に空きがないとして否定結果が得られた場合は、ステップＳ５０４に進み、シーケンス書込ブロックのガベージコレクションを実行する。なお、当該ステップＳ５０４のガベージコレクション処理の内容は、先に説明したステップＳ２０６のガベージコレクション処理の場合と同様となるので改めての説明は省略する。
【０１６１】
ステップＳ５０４のガベージコレクションの実行後は、ステップＳ５０５による新規登録処理を実行する。
このステップＳ５０５の新規登録処理の実行後は、この図に示すシーケンス書込開始コマンド対応処理は終了となる。
【０１６２】
図２８により、シーケンス書込終了コマンドに対応する処理について説明する。
図２８において、ステップＳ６０１では、ホスト装置５側からのシーケンス書込終了コマンドが受信されるまで待機する。
シーケンス書込終了コマンドが受信された場合には、ステップＳ６０２に処理を進める。
【０１６３】
ステップＳ６０２では、最終物理ページに書込を実行したか否かを判別する。すなわち、先のステップＳ２１２の処理と同様に、書込が実行されている論理ブロックに割り当てられたシーケンス書込ブロック５０内の全ての物理ページにデータが書き込まれたか否かが判別されるものである。
【０１６４】
ステップＳ６０２において、最終物理ページに書込を実行したとして肯定結果が得られた場合は、ステップＳ６０３に進み、ブロック登録処理を実行する。つまりこれにより、最終物理ページまで書込の行われたシーケンス書込ブロック５０は、Block-Level管理下に新たに置かれるものとなる。
なお、ステップＳ６０３のブロック登録処理は、先のステップＳ２１４のブロック登録処理と同様であり、従って論理レベルでの上書きが発生している場合には上書きの対象となった旧データが消去されたものとして扱われるようにするための処理も実行されることになる。
【０１６５】
一方ステップＳ６０２において、最終物理ページに書込を実行してはいないとの否定結果が得られた場合は、ステップＳ６０４に進み、シーケンス書込ブロックのガベージコレクションを実行する。なお、このステップＳ６０４のガベージコレクション処理としても、先のステップＳ２０６のガベージコレクション処理と同様の処理となる。
【０１６６】
なお、最終物理ページへの書込が行われた場合に対応して実行するステップＳ６０４の処理としては、上記のようなシーケンス書込ブロックのガベージコレクション処理ではなく、先に説明したステップＳ２１３と同様の「最終書込物理ページアドレスをシーケンス書込ブロック７７に登録」の処理を実行することも可能である。
但しこの場合、ホスト装置５側からはシーケンス書込終了コマンドが受信されている（この場合、ホスト装置５側でシーケンス書込すべきものとしているデータがそれ以上存在しないとみなせる）ので、以降において、当該シーケンス書込で使用されたシーケンス書込ブロック５０に追記が生じる可能性は低く、従ってシーケンス書込ブロック管理テーブル７７に空きを確保する意味では、上記のようなシーケンス書込ブロックのガベージコレクションを実行する方が好ましいと言うことができる。
【０１６７】
ステップＳ６０３のブロック登録処理、又はステップＳ６０４のガベージコレクション処理の実行後は、この図に示すシーケンス書込終了コマンド対応処理は終了となる。
【０１６８】
図２９により、第２の実施の形態の場合における論理ブロック内書込処理（Ｓ１０３）について説明する。
図２９において、ステップＳ７０１では、先のステップＳ２０１と同様、書込サイズが物理ブロックサイズに一致するか否かの判別を行う。
【０１６９】
ステップＳ７０１において、書込サイズが物理ブロックサイズに一致するとして肯定結果が得られた場合は、この場合も図１６に示すブロックレベル書込のための処理に移行する。
【０１７０】
一方ステップＳ７０１において、書込サイズが物理ブロックサイズに一致しないとの否定結果が得られた場合は、ステップＳ７０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するか否かを判別する。このステップＳ７０２の判別処理は、先のステップＳ２０２の判別処理と同様である。
【０１７１】
ステップＳ７０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在しないとして否定結果が得られた場合は、図２１に示したページレベル書込のための処理に移行する。
【０１７２】
一方ステップＳ７０２において、論理ブロックがシーケンス書込ブロック管理テーブル７７に存在するとして肯定結果が得られた場合は、ステップＳ７０３に進み、シーケンス書込を行う。
ここで、ホスト装置５側からシーケンス書込開始コマンドの受信があった場合には、先の図２７の処理に伴い必ず当該論理ブロックについてのシーケンス書込ブロック５０が割り当て済みとなっているので、ステップＳ７０３においては、その割り当て済みのシーケンス書込ブロック５０に対し、シーケンス書込を実行するものとなる。
【０１７３】
ステップＳ７０３のシーケンス書込の実行後は、ステップＳ７０４において、最終書込物理ページアドレスをシーケンス書込ブロック７７に登録する処理を実行する。
当該ステップＳ７０３の登録処理の実行後、この場合における論理ブロック内書込処理（Ｓ１０３）は終了となる。
【０１７４】
上記により説明した第２の実施の形態においても、フラッシュメモリ装置１においてブロックサイズ未満のデータについてシーケンス書込が可能とされる点は第１の実施の形態と同様となるので、第１の実施の形態と同様、従来との比較で記録速度の高速化が図られる。
また、データ転送用のバッファメモリサイズがブロックサイズよりも小さなサイズとされるホスト装置５からの書込が行われる場合にも、高速なデータ記録を実現できるという点も、第１の実施の形態の場合と同様である。
【０１７５】
＜３．変形例＞
以上、本技術に係る各実施の形態について説明したが、本技術は上記により説明した具体例に限定されるべきものではない。
例えばストレージシステムを構成するホスト装置５は、デジタルカメラ装置に限定されるべきものではなく、例えばパーソナルコンピュータなどの他の情報処理装置とすることもできる。
【０１７６】
また、フラッシュメモリ装置１としては、メモリカードとしてのカード状のメモリ装置に限定されるべきものではなく、例えばＳＳＤ（Solid State Drive）など、フラッシュメモリを備えたメモリ装置であればよい。
【０１７７】
また本技術は、以下の（１）〜（１５）に示す構成とすることも可能である。
（１）
フラッシュメモリ部と、
上記フラッシュメモリ部のブロックサイズ未満のデータが、上記フラッシュメモリ部にシーケンス書込されるように制御する制御部と
を備えるフラッシュメモリ装置
（２）
上記制御部は、
外部装置から書込指示されたデータのサイズが上記ブロックサイズ未満であるか否かを判別し、その結果に基づき、上記ブロックサイズ未満のデータが上記フラッシュメモリ部にシーケンス書込されるように制御する
上記（１）に記載のフラッシュメモリ装置。
（３）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上である場合に、上記シーケンス書込が行われるように制御する
上記（２）に記載のフラッシュメモリ装置。
（４）
上記制御部は、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものである場合に、上記シーケンス書込が行われるように制御する
上記（３）に記載のフラッシュメモリ装置。
（５）
上記制御部は、
シーケンス書込ブロックとして使用中のブロック数が上限値に達しているか否かを判別し、上記シーケンス書込ブロックとして使用中のブロック数が上記上限値に達している場合には、使用中の上記シーケンス書込ブロックのうちから選択したシーケンス書込ブロックについて、シーケンス書込ブロックのガベージコレクションを実行する
上記（４）に記載のフラッシュメモリ装置。
（６）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否かをさらに判別し、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて、書込途中のシーケンス書込ブロックが存在するとされる場合には、
少なくとも上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであるか否かを判別した結果に基づき、上記書込指示されたデータの上記書込途中のシーケンス書込ブロックへの追記が行われるように制御する
上記（２）に記載のフラッシュメモリ装置。
（７）
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込途中のシーケンス書込ブロックが存在するとされた場合であって、且つ、上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであり、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数である場合に、上記書込指示されたデータの上記書込途中のシーケンス書込ブロックへの追記が行われるように制御する
上記（６）に記載のフラッシュメモリ装置。
（８）
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上であり、且つ、上記書込開始論理ページアドレス及び上記書込開始論理セクタアドレスが共に先頭アドレスを指すものであり、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数である場合に、シーケンス書込が行われるように制御する
上記（４）に記載のフラッシュメモリ装置。
（９）
上記制御部は、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のブロックサイズと一致する場合は、上記書込指示されたデータがブロックレベル管理下で書き込まれるように制御する
上記（２）〜（８）に記載のフラッシュメモリ装置。
（１０）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ（ｎは２以上の自然数）以上であるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ブロックサイズの１／ｎ以上ではないとされた場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
上記（２）〜（９）に記載のフラッシュメモリ装置。
（１１）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すものであるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータの書込開始論理ページアドレス及び書込開始論理セクタアドレスが共に先頭アドレスを指すとの条件が満たされない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
上記（２）〜（１０）に記載のフラッシュメモリ装置。
（１２）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込指示されたデータのサイズが上記ブロックサイズ未満であり、且つ、上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されておらず、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数ではない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
上記（２）〜（１１）に記載のフラッシュメモリ装置。
（１３）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものであるか否かをさらに判別し、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて書込途中のシーケンス書込ブロックが存在するとされた場合で、且つ、上記書込指示されたデータの書込開始論理ページアドレスが上記書込途中のシーケンス書込ブロックの最終書込論理ページアドレスに連続するものではないとされた場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
上記（２）〜（１２）に記載のフラッシュメモリ装置。
（１４）
上記制御部は、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されているか否か、及び、
上記書込指示されたデータのサイズが上記フラッシュメモリ部のページサイズの倍数であるか否かをさらに判別し、
上記書込指示されたデータの属する論理ブロックアドレス内のデータが過去にシーケンス書込されていて書込途中のシーケンス書込ブロックが存在するとされた場合で、且つ、上記書込指示されたデータのサイズが上記ページサイズの倍数ではない場合は、上記書込指示されたデータがページレベル管理下で書き込まれるように制御する
上記（２）〜（１３）記載のフラッシュメモリ装置。
（１５）
上記制御部は、
外部装置からのシーケンス書込指示に応じて、上記フラッシュメモリ部のブロックサイズ未満のデータが上記フラッシュメモリ部にシーケンス書込されるように制御する
上記（１）に記載のフラッシュメモリ装置。
【符号の説明】
【０１７８】
１  フラッシュメモリ装置、２  外部インターフェイス、３  メモリコントローラ、４  フラッシュメモリ、４Ａ  ユーザデータ記録領域、４Ｂ  管理情報記録領域、５  ホスト装置、５０  シーケンス書込管理ブロック、７７  シーケンス書込ブロック管理テーブル
【図１】
0005708216.tif 000002
【図２】
0005708216.tif 000003
【図３】
0005708216.tif 000004
【図４】
0005708216.tif 000005
【図５】
0005708216.tif 000006
【図６】
0005708216.tif 000007
【図７】
0005708216.tif 000008
【図８】
0005708216.tif 000009
【図９】
0005708216.tif 000010
【図１０】
0005708216.tif 000011
【図１１】
0005708216.tif 000012
【図１２】
0005708216.tif 000013
【図１３】
0005708216.tif 000014
【図１４】
0005708216.tif 000015
【図１５】
0005708216.tif 000016
【図１６】
0005708216.tif 000017
【図１７】
0005708216.tif 000018
【図１８】
0005708216.tif 000019
【図１９】
0005708216.tif 000020
【図２０】
0005708216.tif 000021
【図２１】
0005708216.tif 000022
【図２２】
0005708216.tif 000023
【図２３】
0005708216.tif 000024
【図２４】
0005708216.tif 000025
【図２５】
0005708216.tif 000026
【図２６】
0005708216.tif 000027
【図２７】
0005708216.tif 000028
【図２８】
0005708216.tif 000029
【図２９】
0005708216.tif 000030