(57)【要約】【課題】ガベージコレクションを行わないで、データを書き込むときのＩＯＰＳ性能を向上させること。【解決手段】ホストからの第１データを、記録媒体を構成するブロックＢｌｏｃｋ１〜３のうちＢｌｏｃｋ３のページに書き込むステップと、不使用ページに基づいて選択されたＢｌｏｃｋ１のページに記録された第２データをバッファに書き込むステップと、Ｂｌｏｃｋ１のページに記録されたデータを消去するステップと、その第２データをＢｌｏｃｋ１のページに再度書き込むステップとを備えている。このとき、その不使用ページは、データが書き込まれていないページ、または、他のページに書き込まれたデータが書き込まれているページを示している。このような記録方法によれば、ガベージコレクションを行わないで、ブロックに記録されたデータを消去する回数を低減することができる。【選択図】図１７
2010237907.tif 000002
【特許請求の範囲】
【請求項１】
ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに書き込む記録媒体書き込み部と、
前記ブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込むバッファ書き込み部と、
前記第２ブロックに記録されているデータを消去する消去部とを具備し、
前記記録媒体書き込み部は、さらに、前記第２データを前記バッファから前記第２ブロックのページに書き込み、
前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示す
ストレージ装置。
【請求項２】
請求項１において、
前記ブロック群に不使用ページ数群を対応付けるブロック内不使用ページ数管理部をさらに具備し、
前記不使用ページ数群のうちの１つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記１つのブロックに含まれるページの個数を示し、
前記第２ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
ストレージ装置。
【請求項３】
請求項２において、
前記記録媒体書き込み部は、さらに、前記第２ブロックが有するページのうちの前記第２データが記録されていないページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込む
ストレージ装置。
【請求項４】
請求項２において、
前記バッファ書き込み部は、さらに、前記ブロック群から前記不使用ページに基づいて選択された第３ブロックに記録された第３データを前記バッファに記録し、
前記消去部は、前記第３データが前記バッファに記録された後に、前記第３ブロックに記録されているデータを消去し、
前記記録媒体書き込み部は、前記第３データを前記バッファから前記第２ブロックに書き込み、
前記第１記録媒体書き込み部は、前記第３ブロックが有するページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込む
ストレージ装置。
【請求項５】
請求項１〜請求項４のいずれかにおいて、
前記第２データは、前記第１ブロックが有する全てのページにデータが書き込まれた後に、前記バッファに書き込まれる
ストレージ装置。
【請求項６】
請求項１〜請求項５のいずれかにおいて、
前記記録媒体は、本ストレージ装置と別個に設けられている
ストレージ装置。
【請求項７】
請求項１〜請求項６のいずれかにおいて、
前記バッファは、本ストレージ装置と別個に設けられている
ストレージ装置。
【請求項８】
請求項１〜請求項６のいずれかにおいて、
前記バッファは、前記記録媒体に設けられている
ストレージ装置。
【請求項９】
ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに書き込むステップと、
前記ブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込むステップと、
前記第２ブロックに記録されているデータを消去するステップと、
前記第２データを前記バッファから前記第２ブロックのページに書き込むステップとを具備し、
前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示す
記録方法。
【請求項１０】
請求項９において、
前記ブロック群に不使用ページ数群を対応付けるステップをさらに具備し、
前記不使用ページ数群のうちの１つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記１つのブロックに含まれるページの個数を示し、
前記第２ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
記録方法。
【請求項１１】
請求項１０において、
前記第２ブロックが有するページのうちの前記第２データが記録されていないページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込むステップ
をさらに具備する記録方法。
【請求項１２】
請求項１０において、
前記ブロック群から前記不使用ページに基づいて選択された第３ブロックに記録された第３データを前記バッファに記録するステップと、
前記第３データが前記バッファに記録された後に、前記第３ブロックに記録されているデータを消去するステップと、
前記第３データを前記バッファから前記第２ブロックに書き込むステップと、
前記第３ブロックが有するページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込むステップ
とをさらに具備する記録方法。
【請求項１３】
請求項９〜請求項１２のいずれかにおいて、
前記第２データは、前記第１ブロックが有する全てのページに前記第１データが書き込まれたときに、前記バッファに書き込まれる
記録方法。
【請求項１４】
ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに書き込むステップと、
前記ブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込むステップと、ここで、前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、
前記第２ブロックに記録されているデータを消去するステップと、
前記第２データを前記バッファから前記第２ブロックのページに書き込むステップ
とをコンピュータに実行させるためのコンピュータプログラム。
【請求項１５】
請求項１４において、
前記ブロック群に不使用ページ数群を対応付けるステップをさらに前記コンピュータに実行させ、
前記不使用ページ数群のうちの１つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記１つのブロックに含まれるページの個数を示し、
前記第２ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
コンピュータプログラム。
【請求項１６】
請求項１５において、
前記第２ブロックが有するページのうちの前記第２データが記録されていないページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込むステップ
をさらに前記コンピュータに実行させるコンピュータプログラム。
【請求項１７】
請求項１５において、
前記ブロック群から前記不使用ページに基づいて選択された第３ブロックに記録された第３データを前記バッファに記録するステップと、
前記第３データが前記バッファに記録された後に、前記第３ブロックに記録されているデータを消去するステップと、
前記第３データを前記バッファから前記第２ブロックに書き込むステップと、
前記第３ブロックが有するページに、前記ホストから前記第１データの次に書き込みが要求された新規データを書き込むステップ
とをさらに前記コンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置および記録方法に関し、特に、データの読み込み単位より大きな単位でデータの事前消去が必要な記録媒体にデータを記録するときに利用されるストレージ装置および記録方法に関する。
【背景技術】
【０００２】
昨今の計算機の進化に伴い、計算機が使用する記録媒体に対して単位時間に可能な読み込みと書き込みとの回数、すなわち、ＩＯＰＳ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）性能の向上が求められている。現在計算機では、計算機の電源がＯＦＦの場合でもデータを保持するための記録媒体としてＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）が多く用いられている。しかし、ＨＤＤは、シーケンシャルアクセス時と比較してランダムアクセス時のＩＯＰＳ性能が低い。そのため、ＨＤＤを備えたシステムは、ランダムアクセスが頻発するアプリケーションの利用時はＩＯＰＳ性能が低下し、結果としてシステム全体の処理性能が低下する。
【０００３】
ＨＤＤにおいてランダムアクセス時のＩＯＰＳ性能がシーケンシャルアクセスに比べて低い原因は、回転する円盤上に記録された情報を物理的にデータの記録位置までヘッドを移動させてアクセスするためである。ランダムアクセスによるＩＯＰＳ性能低下を回避するためには、ランダムアクセスが行われることを回避すること、ランダムアクセス時のＩＯＰＳ低下の原因となる現象の発生を防ぐこと、のいずれかの対策が必要である。
【０００４】
まず、ランダムアクセスが行われることを回避する方式について述べる。ランダムアクセスをシーケンシャルアクセスに変換するための技術としては、非特許文献１、非特許文献２に挙げたようなログ書き込み方式が挙げられる。そのログ書き込み方式では、ディスク上の特定箇所に更新内容のログ書き込み用の領域、つまり書き込み専用の領域を確保する。ＨＤＤに対して書き込むデータは、全て前記書き込み専用領域に先頭から順番に追記する。各書き込みのデータには、書き込み先のアドレス、書き込みのサイズを識別するためのデータを付加する。このとき、連続したランダム書き込みアクセスは、シーケンシャル書き込みアクセスに変換され、その結果、書き込み時のＩＯＰＳ性能が向上する。
【０００５】
しかし、そのログ書き込み方式を用いた場合でも、読み出しアクセス時はそれぞれのアクセス対象のデータが格納された領域に対して読み出しを行う必要がある。また、シーケンシャル読み出し対象のデータの一部が更新されていた場合、最新のデータは書き込み用の領域に記録された状態である。この場合は、アドレス空間上で連続した領域に対する読み出しであっても更新されたデータは別途書き込み用領域から読み出しする必要があり、シーケンシャル読み出しとはならない。よってランダム読み出しアクセスのシーケンシャル読み出しへの変換は不可能である。よって、ログ書き込み方式を用いることによるＨＤＤでのランダムアクセスの回避は困難である。
【０００６】
次に、そのランダムアクセス時の性能低下発生を防ぐ方式について述べる。ＨＤＤへのランダムアクセス時にＩＯＰＳ性能が低下する原因は、アクセス時にＨＤＤのヘッドがアクセス先まで移動する時間を余分に要することによる。ランダムアクセス時のヘッドの移動発生によるＩＯＰＳ性能低下は、ＨＤＤの構造によるものである。そのため、ランダムアクセス時のＩＯＰＳ性能低下発生を防ぐためには、ＨＤＤ以外の記録媒体を用いる必要がある。
【０００７】
特許第３９９７１３０号公報のように、ランダムアクセスがＨＤＤと比較して高速な記録媒体としてフラッシュメモリを採用したものが存在する。近年では、特にランダムアクセスにおいて高いＩＯＰＳ性能を得ることを目的として、ＨＤＤではなく不揮発性を持ったフラッシュメモリを採用したＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のような記録媒体が使用され始めている。フラッシュメモリは、アクセス先の任意のアドレスが示す領域に対して等しい時間でアクセス可能である。そのためＳＳＤは、ＨＤＤと比較してランダム読み出し、ランダム書き込み時のＩＯＰＳ性能が高い。
【０００８】
再特ＷＯ２００５／１０６６７３号公報には、ホストからのアクセス方法に依存せず書き込み処理に要する時間を短縮できる不揮発性の記憶装置が開示されている。
【０００９】
特開２００４−６２３２８号公報には、ＮＡＮＤ型フラッシュメモリの消去単位よりも小さいアクセス単位をもつフラッシュストレージメディアにおいて、連続した論理アドレスへのデータ書込み動作における無駄な処理の発生をなくし、データ書込みパフォーマンスを向上させ得るフラッシュストレージメディアが開示されている。
【００１０】
特開２００６−３９６６号公報には、例えばディジタルカメラの撮影画像をフラッシュメモリに書込む場合等において、書込時間の短縮が可能な書込方法が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第３９９７１３０号公報
【特許文献２】再特ＷＯ２００５／１０６６７３号公報
【特許文献３】特開２００４−６２３２８号公報
【特許文献４】特開２００６−３９６６号公報
【非特許文献】
【００１２】
【非特許文献１】Ｒｏｓｅｎｂｌｕｍ，  Ｍｅｎｄｅｌ  ａｎｄ  Ｏｕｓｔｅｒｈｏｕｔ，  Ｊｏｈｎ  Ｋ．  （Ｊｕｎｅ  １９９０）  −  ”Ｔｈｅ  ＬＦＳ  Ｓｔｏｒａｇｅ  Ｍａｎａｇｅｒ”．  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９９０  Ｓｕｍｍｅｒ  Ｕｓｅｎｉｘ．  ｐｐ３１５−３２４．
【非特許文献２】Ｒｏｓｅｎｂｌｕｍ，  Ｍｅｎｄｅｌ  ａｎｄ  Ｏｕｓｔｅｒｈｏｕｔ，  Ｊｏｈｎ  Ｋ．  （Ｆｅｂｒｕａｒｙ  １９９２）  −  ”Ｔｈｅ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ａ  Ｌｏｇ−Ｓｔｒｕｃｔｕｒｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ”．  ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ，  Ｖｏｌ．  １０  Ｉｓｓｕｅ  １．  ｐｐ２６−５２．
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、一方でフラッシュメモリは、書き込みアクセス対象の領域について制限を持っている。フラッシュメモリの各領域は、データが記録されていない状態と記録された２種類の状態を持つ。書き込みアクセスは、これらのうちのデータが記録されていない状態の領域のみに対して行うことが可能である。フラッシュメモリは、データが既に記録された状態の領域に書き込みを行う場合に、事前に書き込み先の領域に対して消去（Ｅｒａｓｅ）を行う必要がある。
【００１４】
ＳＳＤに広く用いられるＮＡＮＤ型フラッシュメモリにおける読み出し、書き込みアクセスについて図１を用いて説明する。フラッシュメモリは、複数のブロックを備えている。その複数のブロックの各々は、複数のページＰ２を備えている。フラッシュメモリにおける記録の最小単位は、ページＰ２であり、読み出し、書き込みの処理は、ページＰ２を単位として行われる。一方、消去処理は、複数のページを含む領域であるブロックＰ１が操作の最小単位である。つまり、ブロックＰ１に含まれる書き込み対象ページＰ３に書き込みを行う際に、書き込み対象ページＰ３に既に何らかのデータが記録された状態である場合は、書き込み対象ページＰ３に対する書き込みを行う前に書き込み対象ページＰ３内のデータを消去する必要がある。しかし、消去操作は、ブロックＰ１を最小単位とするため、書き込み対象ページＰ３に記録されたデータを消去する場合に、ブロックＰ１に含まれる他のブロックＰ２のデータも同時に消去される。よって、ブロックＰ１の一部分の書き込み対象ページＰ３のみに書き込みを行う場合に、つまりブロックＰ１のサイズに比べて小さいサイズの書き込みを行う場合に、消去を行う前後で書き込み対象ページＰ３以外のページＰ２のデータを保護する必要がある。
【００１５】
そのため、フラッシュメモリで構成される記録媒体に対して１回の書き込み処理を行うためには図２に示される処理が必要である。まず、その記録媒体のコントローラは、書き込み対象ページＰ３と同一のブロックＰ１に含まれる、書き込み対象ではないページＰ２のデータを全て読み出す（ステップＳ０１）。次いで、そのコントローラは、書き込み対象ページＰ３を含むブロックＰ１のデータを消去する。このとき、ステップＳ０１における書き込み対象ページＰ３と物理的に異なるブロックが実体として割り当てられていてもよい（ステップＳ０２）。次いで、そのコントローラは、消去されたブロックＰ１に対して、ステップＳ０１で読み出しておいた書き込み対象ページＰ３以外のページＰ２のデータをそれぞれのデータが元々格納されていたページＰ２に書き込みし、実際の書き込み対象のデータを書き込み対象ページＰ３に書き込みする（ステップＳ０３）。
【００１６】
図２で示されたフラッシュメモリにおける書き込み処理では、１ページ分の書き込みに対して、消去操作の最小単位であるブロックがｎページを含むとすると、（ｎ−１）ページに対する読み出し、１ブロックの消去、ｎページに対する書き込み操作を行う必要がある。このため、フラッシュメモリを用いたＳＳＤに対するランダム書き込みは、シーケンシャル書き込みに対してＩＯＰＳ性能が低下する。またブロックあたりのページ数が増加するほど、消去前の読み出し対象ページ、消去後の書き込み対象ページが増加する。そのため、ランダム書き込みとシーケンシャル書き込みのＩＯＰＳ性能の差が広がる。
【００１７】
そのＳＳＤ等のフラッシュメモリで構成された記録媒体におけるランダム書き込み時のＩＯＰＳ性能がシーケンシャル書き込み時に比べて低下する問題に対して、非特許文献１で挙げたログ書き込み方式を用いることでランダム書き込み時のＩＯＰＳ性能の向上が可能である。ＨＤＤに対して適用する場合と同様に、ＳＳＤ等のフラッシュメモリで構成されたストレージ内部に事前に連続したデータが何も記録されておらず、消去操作を必要としない空きページを確保しておき、各書き込みデータは空きページに追記する。追記した書き込みデータに対して各データが本来格納されるアドレスも併せて記録する。空き領域に追記することによって、ランダム書き込みをシーケンシャル書き込みと同等の速度で処理できる。
【００１８】
一方でフラッシュメモリでは、シーケンシャル読み出しと比較して任意の領域に対するランダム読み出しについてＩＯＰＳ性能を低下させずに処理可能である。そのためランダム書き込みのＩＯＰＳ性能をシーケンシャル書き込みと同等にすることで、フラッシュメモリに対する読み出し、書き込み共にランダムアクセスがシーケンシャルアクセスと同等のＩＯＰＳ性能で処理できる。
【００１９】
フラッシュメモリで構成されるストレージへのアクセスに対して、そのログ書き込み方式を適用することでランダム書き込みがシーケンシャル書き込みに変換される。その結果、フラッシュメモリで構成されるストレージにおいてランダム書き込みが、発行される前にシーケンシャル書き込みに変化することでランダム書き込みにおけるＩＯＰＳ性能が向上する。
【００２０】
しかし、フラッシュメモリで構成されたストレージに対してランダム書き込みをシーケンシャル書き込みに変換して追記するためには、ストレージ上に常に連続した空き領域がランダム書き込みを行う前に確保されている必要がある。ログ書き込み方式では、書き込みアクセスによる更新情報を常に空き領域に追記するため、書き込みアクセスを重ねるにつれて空き領域が減少する。そのため、任意の時間間隔で空き領域を確保するためのガベージコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ、ＧＣ）が必要である。
【００２１】
ガベージコレクションは、記録媒体上のアドレス空間内に分散する空き領域に、同じ記録媒体内の別の領域に記録されたデータを移動することで、連続した空き領域を生成するための操作である。ログ書き込み方式では、書き込み領域に記録された更新データを更新前のデータが記録された領域に反映することで書き込み用領域の空きの確保が可能である。つまりガベージコレクションを行うことで記録媒体内でのデータ移動が発生する。
【００２２】
その結果、ガベージコレクションの実行毎に外部からのアクセスとは関係のない記録媒体内部でのデータ移動に伴うアクセス処理が余分に発生し、ＩＯＰＳ性能が低下する。また書き込み用領域が十分に確保されておりガベージコレクションを行わない場合と比較して、書き込み用領域が不足してガベージコレクションが行われる場合はガベージコレクションの影響でＩＯＰＳ性能が低下するため、ガベージコレクションの有無によって記録媒体のＩＯＰＳ性能が変化する。
【００２３】
本発明の課題は、ガベージコレクションを行わないで、記録媒体にデータを書き込むときのＩＯＰＳ性能を向上させるストレージ装置および記録方法を提供することにある。
【課題を解決するための手段】
【００２４】
本発明によるストレージ装置は、記録媒体書き込み部とバッファ書き込み部と消去部とを備えている。その記録媒体書き込み部は、ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに第１データを書き込む。そのバッファ書き込み部は、そのブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込む。その消去部は、その第２ブロックに記録されているデータを消去する。その記録媒体書き込み部は、さらに、その第２データをそのバッファからその第２ブロックのページに書き込む。このとき、その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
【００２５】
本発明による記録方法は、
ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに第１データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込むステップと、その第２ブロックに記録されているデータを消去するステップと、
その第２データをそのバッファからその第２ブロックのページに書き込むステップとを備えている。その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
【００２６】
本発明によるコンピュータプログラムは、
ホストから書き込みが要求された第１データを、記録媒体を構成するブロック群のうち第１ブロックが有するページに第１データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第２ブロックに記録された第２データをバッファに書き込むステップと、
その第２ブロックに記録されているデータを消去するステップと、
その第２データをそのバッファからその第２ブロックのページに書き込むステップとをコンピュータに実行させる。ここで、その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
【発明の効果】
【００２７】
本発明によるストレージ装置および記録方法は、データの書き込み単位より大きな単位でデータの事前消去が必要な記録媒体にデータを記録する場合で、継続的にランダムライトアクセスが行われたときに、ガベージコレクションすることなく、ブロックに記録されたデータを消去する回数を低減することができ、ＩＯＰＳ性能を向上させることができる。
【図面の簡単な説明】
【００２８】
【図１】図１は、フラッシュメモリにおけるブロックとページとの関係を示す図である。
【図２】図２は、フラッシュメモリにおける１つのブロック内の１つのページにデータを書き込む書き込み処理を示すフローチャートである。
【図３】図３は、本発明によるストレージ装置が適用されるシステムを示すブロック図である。
【図４】図４は、本発明によるストレージ装置を示すブロック図である。
【図５】図５は、記録媒体を示す図である。
【図６】図６は、アドレス変換部を示すブロック図である。
【図７】図７は、ブロック内不使用ページ数管理部を示すブロック図である。
【図８Ａ】図８Ａは、バッファメモリ部を示すブロック図である。
【図８Ｂ】図８Ｂは、バッファメモリ制御部を示すブロック図である。
【図９】図９は、アクセス処理を示すフローチャートである。
【図１０】図１０は、読み出し処理手順を示すフローチャートである。
【図１１】図１１は、書き込み処理手順の前段を示すフローチャートである。
【図１２】図１２は、書き込み処理手順の中段を示すフローチャートである。
【図１３】図１３は、書き込み処理手順の後段を示すフローチャートである。
【図１４】図１４は、書き込み先物理ブロック内に存在する使用中ページを全て読み出しする処理手順を示したフローチャートである。
【図１５】図１５は、本発明による記録方法の実施例と比較例における、その記録媒体内のブロックと、論理ページと物理ページの割り当ての初期状態を示す図である。
【図１６】図１６は、本発明による記録方法の比較例を示し、その比較例の段階毎の記録媒体内のデータ配置を示す図である。
【図１７】図１７は、本発明による記録方法の実施例を示し、その実施例の段階毎の記録媒体内のデータ配置を示す図である。
【図１８】図１８は、本発明による記録方法の他の実施例を示し、その実施例の段階毎の記録媒体内のデータ配置を示す図である。
【図１９】図１９は、本発明の実施例と比較例とに関して記録媒体に対する読み出し処理の回数と書き込み処理の回数と消去処理の回数とを示す表である。
【発明を実施するための形態】
【００２９】
図面を参照して、本発明によるストレージ装置の実施の最良の形態について説明する。そのストレージ装置２は、図３に示されているように、コンピュータシステムに適用されている。そのコンピュータシステムは、ネットワーク３を介して複数の情報処理装置（コンピュータ）が互いに双方向に情報を伝送することができるように接続されている。その複数の情報処理装置は、ホスト１とストレージ２とを含んでいる。なお、そのコンピュータシステムは、ストレージ２を複数備えることもできる。そのコンピュータシステムは、さらに、ストレージ２に対してホスト１を複数備えることもできる。そのコンピュータシステムは、さらに、ネットワーク３を用いないで、ホスト１とストレージ２とが直接接続される形態であってもよい。
【００３０】
図４は、ストレージ２を示している。ストレージ２は、記録媒体２１と記録媒体アクセス部２２とアドレス変換部２３とブロック内不使用ページ数管理部２４とブロック検索部２５とバッファメモリ部２５とアクセス処理実行制御部２６とを備えている。
【００３１】
アクセス処理実行制御部２６は、ホスト１から読み出し要求コマンドを受け取る。その読み出し要求コマンドは、論理アドレスと読み出しサイズとを示している。アクセス処理実行制御部２６は、その読み出し要求コマンドを受け取ったときに、その論理アドレスをアドレス変換部２３に出力する。アクセス処理実行制御部２６は、その論理アドレスに対応する物理アドレスをアドレス変換部２３から受け取ったときに、他の読み出し要求コマンドを記録媒体アクセス部２２に出力する。このとき、アクセス処理実行制御部２６は、その読み出しサイズが記録媒体２１の複数のページに跨る場合に、１ページずつ複数の読み出し要求コマンドを記録媒体アクセス部２２に出力する。アクセス処理実行制御部２６から記録媒体アクセス部２２に出力される読み出し要求コマンドは、その物理アドレスを示している。アクセス処理実行制御部２６は、その読み出し要求コマンドに対して記録媒体アクセス部２２から出力された読み出し結果に基づいて作成された他の読み出し結果をホスト１に返す。アクセス処理実行制御部２６からホスト１に返される読み出し結果は、その読み出しサイズが記録媒体２１の１ページに収まるときに、記録媒体アクセス部２２から出力された読み出し結果に等しい。アクセス処理実行制御部２６からホスト１に返される読み出し結果は、その読み出しサイズが記録媒体２１の複数のページに跨るときに、記録媒体アクセス部２２から出力された複数の読み出し結果の全部を示している。
【００３２】
アクセス処理実行制御部２６は、さらに、ホスト１から書き込み要求コマンドを受け取る。その書き込み要求コマンドは、書き込み先ページの論理アドレスと書き込みデータと書き込みサイズとを示している。アクセス処理実行制御部２６は、その書き込み要求コマンドを受け取ったときに、他の書き込み要求コマンドをバッファメモリ部２５に出力する。アクセス処理実行制御部２６からバッファメモリ部２５に出力される書き込み要求コマンドは、その論理アドレスとその書き込みデータとをそれぞれ示している。このとき、アクセス処理実行制御部２６は、その書き込みサイズが記録媒体２１の複数のページに跨る場合に、書き込み先の各ページについてその書き込みデータを複数の書き込みデータに分割し、複数の書き込みアクセス要求コマンドをバッファメモリ部２５に出力する。その複数の書き込みアクセス要求コマンドは、複数のページの論理アドレスと、その複数の書き込みデータとをそれぞれ示している。アクセス処理実行制御部２６は、その書き込み要求コマンドに対する書き込み処理が完了したときに、その書き込み処理が完了したことを示す書き込み完了通知をホスト１に通知する。
【００３３】
アドレス変換部２３は、論理アドレスと物理アドレスの対応関係の情報を記憶し、論理アドレスと物理アドレスとの間の変換処理を行う。すなわち、アドレス変換部２３は、バッファメモリ部２５から論理アドレスを受け取ったときに、その論理アドレスに対応する物理アドレスをバッファメモリ部２５に返す。アドレス変換部２３は、アクセス処理実行制御部２６から論理アドレスを受け取ったときに、その論理アドレスに対応する物理アドレスをアクセス処理実行制御部２６に返す。アドレス変換部２３は、さらに、バッファメモリ部２５から物理アドレスを受け取ったときに、その物理アドレスに対応する論理アドレスをバッファメモリ部２５に返す。アドレス変換部２３は、さらに、バッファメモリ部２５から論理アドレスと物理アドレスとの対応関係の変更情報を受け取ったときに、論理アドレスと物理アドレスとの対応関係の情報を更新する。
【００３４】
バッファメモリ部２５は、アクセス処理実行制御部２６から書き込み要求コマンドを受け取ると、その書き込み要求コマンドが示す論理アドレスと書き込みデータとを記録する。バッファメモリ部２５は、ブロック内不使用ページ数管理部２４を用いて記録媒体２１内の書き込み先物理ブロックが選択済みであるかを確認する。バッファメモリ部２５は、書き込み先物理ブロックが選択済みでない場合に、ブロック内不使用ページ数管理部２４に新たに書き込み先物理ブロックの割り当てを要求する。バッファメモリ部２５は、さらに、その書き込み先物理ブロックが備える複数のページのうちの、既に使用されており、論理アドレスに割り当て済みのページの物理アドレスを、そのアドレス変換部２３を用いて特定する。バッファメモリ部２５は、その論理アドレスに割り当て済みのページについて、書き込み先物理ブロックのアドレスから該ページの物理アドレスを算出し、その記録媒体アクセス部２２を用いて該ページのデータを読み出し、バッファメモリ部２５内に記録する。バッファメモリ部２５は、さらに、書き込みアクセス要求コマンドまたは消去アクセス要求を記録媒体アクセス部２２に出力する。バッファメモリ部２５は、さらに、書き込みデータを記録していく不使用ページに対して、そのアドレス変換部２３に対して論理アドレスと物理アドレスとの対応関係を更新する。
【００３５】
ブロック内不使用ページ数管理部２４は、記録媒体２１内の各ブロックの不使用ページ数を記録している。その不使用ページ数は、そのブロックに含まれる不使用状態のページの数を示している。ブロック内不使用ページ数管理部２４は、バッファメモリ部２５から不使用ページ数を要求されたときに、その不使用ページを有するブロックの物理アドレスをバッファメモリ部２５に返す。ブロック内不使用ページ数管理部２４は、バッファメモリ部２５から物理アドレスと不使用ページ数とが通知されたときに、その物理アドレスが示すブロックに対応する不使用ページ数を更新する。
【００３６】
記録媒体アクセス部２２は、記録媒体２１に対してアクセス処理を行う。そのアクセス処理は、読み出しアクセス処理と書き込みアクセス処理と消去アクセス処理とを含んでいる。記録媒体アクセス部２２は、アクセス処理実行制御部２６から読み出しアクセス要求コマンドを受け取ったときに、その読み出しアクセス処理を実行することにより読み出しアクセス結果をアクセス処理実行制御部２６に返す。その読み出しアクセス要求コマンドは、読み出し先のページの物理アドレスを示している。その読み出しアクセス結果は、記録媒体２１のうちのその物理アドレスに対応する領域に記録されているデータを示している。記録媒体アクセス部２２は、バッファメモリ部２５から書き込みアクセス要求コマンドを受け取ったときに、書き込み処理を実行する。その書き込みアクセス要求コマンドは、書き込み先のブロックの物理アドレスと書き込みデータとを示している。記録媒体アクセス部２２は、記録媒体２１内のその物理アドレスが指し示すブロックにその書き込みデータを書き込む。記録媒体アクセス部２２は、その書き込みデータの書き込みの完了後、バッファメモリ部２５に書き込みアクセスの完了を通知する。記録媒体アクセス部２２は、バッファメモリ部２５から消去アクセス要求コマンドを受け取ったときに、消去アクセス処理を実行する。その消去アクセス要求コマンドは、消去先のブロックの物理アドレスを示している。記録媒体アクセス部２２は、記録媒体２１内のその物理アドレスが指し示すブロックに記録されているデータを消去し、その消去アクセスの完了後、バッファメモリ部２５に消去アクセスの完了を通知する。
【００３７】
記録媒体２１は、データの書き込み（Ｗｒｉｔｅ）を行う前に消去（Ｅｒａｓｅ）が必要であり、且つ、消去の最小単位の領域が読み出し（Ｒｅａｄ）の最小単位または書き込みの最小単位の領域を複数含む単体または複数の媒体によって構成されている。このような媒体としては、例えば、ＮＡＮＤ型フラッシュメモリ、または、ＮＡＮＤ型フラッシュメモリによって構成されるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が例示される。記録媒体２１は、ストレージ２に格納されるデータ全てを保持し、記録媒体アクセス部２２によって読み出しアクセス処理、書き込みアクセス処理、消去アクセス処理が行われる。
【００３８】
なお、記録媒体アクセス部２２とアドレス変換部２３とブロック内不使用ページ数管理部２４とバッファメモリ部２５とアクセス処理実行制御部２６とは、本実施の形態においてストレージ２の内部に配置されているものの、これらの一部または全てがホスト１内部に存在してもよい。
【００３９】
図５は、記録媒体２１を示している。記録媒体２１は、フラッシュメモリから形成され、複数のブロックを備えている。その複数のブロックの各々のブロック１０１−ｉ（ｉ＝２，３，…）は、８個のページ１０２−１〜１０２−８を備えている。ブロック１０１−ｉの開始アドレスは、１ページ目のページ１０２−１の開始アドレスに等しい。ブロック１０１−ｉの終了アドレスは、８ページ目のページ１０２−８の終了アドレスに等しい。記録媒体２１は、データを読み出されるときに、ページ単位でデータが記録媒体２１から読み出される。記録媒体２１は、データを書き込まれるときに、ページ単位でデータが記録媒体２１に書き込まれる。記録媒体２１は、データを消去されるときに、ブロック単位で消去される。同一ブロックに属する複数のページに対する複数の書き込み処理は、そのブロックに対する消去アクセス処理が行われた後に行われる。消去アクセス処理は、さらに、あるブロックへの書き込み処理と、そのブロックと異なる他のブロックへの書き込み処理とが到着した場合に、その先行する書き込み処理のアクセス対象とするブロックに対して行われる。なお、１つのブロック１０１−ｉは、８個と異なる他の複数個のページを備えることもできる。
【００４０】
図６は、アドレス変換部２３を示している。アドレス変換部２３は、アドレス変換要求処理部２３１と論理物理アドレス変換情報格納部２３２と物理論理アドレス変換情報格納部２３３とを備えている。論理物理アドレス変換情報格納部２３２は、ページの論理アドレスをキーとして対応する物理アドレスの情報を格納する。物理論理アドレス変換情報格納部２３３は、ページの物理アドレスをキーとして対応する論理アドレスの情報を格納する。アドレス変換要求処理部２３１は、アクセス処理実行制御部２６からページの論理アドレスを受け取ったときに、論理物理アドレス変換情報格納部２３２を用いてその論理アドレスに対応する物理アドレスを算出し、その物理アドレスをアクセス処理実行制御部２６に返す。アドレス変換要求処理部２３１は、バッファメモリ部２５からページの論理アドレスを受け取ったときに、論理物理アドレス変換情報格納部２３２を用いてその論理アドレスに対応する物理アドレスを算出し、その物理アドレスをバッファメモリ部２５に返す。アドレス変換要求処理部２３１は、バッファメモリ部２５からページの物理アドレスを受け取ったときに、物理論理アドレス変換情報格納部２３３を用いてその物理アドレスに対応する論理アドレスを算出し、その論理アドレスをバッファメモリ部２５に返す。アドレス変換要求処理部２３１は、ページの物理アドレスと論理アドレスの対応関係の更新要求コマンドをバッファメモリ部２５から受け取ったときに、論理物理アドレス変換情報格納部２３２と物理論理アドレス変換情報格納部２３３との該当する箇所を更新する。
【００４１】
アドレス変換要求処理部２３１と論理物理アドレス変換情報格納部２３２と物理論理アドレス変換情報格納部２３３とは、本実施の形態においてアドレス変換部２３として一体化されているが、例えば論理物理アドレス変換情報格納部２３２と物理論理アドレス変換情報格納部２３３とが記録媒体２１内に格納されているような形であってもよい。
【００４２】
図７は、ブロック内不使用ページ数管理部２４を示している。ブロック内不使用ページ数管理部２４は、ブロック検索部２４１とブロック内不使用ページ情報更新部２４２とブロック内不使用ページ数情報格納部２４３とを備えている。
【００４３】
ブロック内不使用ページ数情報格納部２４３は、ブロック物理アドレス集合を不使用ページ数集合に対応付けるテーブルを記録している。すなわち、そのブロック物理アドレス集合のうちの任意の要素は、その不使用ページ数集合のうちの１つの要素に対応している。そのブロック物理アドレス集合の要素は、それぞれ、記録媒体２１が備える複数のブロックの物理アドレスを示している。その不使用ページ数集合のうちのある物理アドレスに対応する要素は、その物理アドレスにより識別されるブロックが備える不使用ページの個数を示している。その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なデータを格納しているページを示している。すなわち、ブロック内不使用ページ数情報格納部２４３は、記録媒体２１のページにデータが書き込まれたときに、または、記録媒体２１のあるブロックに書き込まれたデータが消去されたときに、そのテーブルを更新する。
【００４４】
ブロック検索部２４１は、バッファメモリ部２５から割り当て要求コマンドを受け取る。その割り当て要求コマンドは、記録媒体２１内の複数のブロックから１つのブロックを選択する検索条件を示している。ブロック内の不使用ページ数が多いほど、一度の消去アクセス処理あたりに処理可能な書き込みアクセス要求の数が増加するため、その検索条件としては、記録媒体２１内の複数のブロックのうちの不使用ページの数が最大のブロックを検索することが例示される。ブロック検索部２４１は、バッファメモリ部２５から割り当て要求コマンドを受け取ったときに、ブロック内不使用ページ数情報格納部２４３の情報をもとに記録媒体２１内の複数のブロックからその検索条件を満たす書き込み先物理ブロックの物理アドレスをバッファメモリ部２５に返す。その物理アドレスは、書き込み先物理ブロックを割り当てて、その結果を例えばブロックの物理アドレスのようにブロックを一意に特定できる情報に置換されることもできる。
【００４５】
ブロック内不使用ページ情報更新部２４２は、バッファメモリ部２５から書き込み先物理ブロックとして使用されており、不使用ページがなくなったブロックと、及び不使用ページが新たに発生したブロックの物理アドレスと、増減した不使用ページ数の情報を受け取る。ブロック内不使用ページ情報更新部２４２は、ブロック内不使用ページ数情報格納部２４３に格納されたその物理アドレスの示すブロックの不使用ページ数の情報を更新する。
【００４６】
ブロック検索部２４１とブロック内不使用ページ情報更新部２４２とブロック内不使用ページ数情報格納部２４３とは、ブロック内不使用ページ数管理部２４として一体化されているが、例えばブロック内不使用ページ数情報格納部２４３が記録媒体２１内に配置されているような形であってもよい。
【００４７】
図８Ａは、バッファメモリ部２５を示している。バッファメモリ部２５は、バッファメモリ制御部２５１と書き込みデータ用バッファメモリ２５２と書き込み先ブロック情報格納部２５３とを備えている。
【００４８】
書き込みデータ用バッファメモリ２５２は、記録媒体２１の書き込み先ブロックに書き込む予定のデータをページ毎に格納する。書き込み先ブロック情報格納部２５３は、バッファメモリ部２５によって次に書き込まれる記録媒体２１内のブロックを特定する情報を格納する。そのブロックを特定する情報は、ブロックの物理アドレスを示している。そのブロックを特定する情報は、その書き込まれるブロックが決まっていないときに、無効な物理アドレスを示している。
【００４９】
バッファメモリ制御部２５１は、アクセス処理実行制御部２６から書き込み要求コマンドを受け取ったときに、その書き込み要求コマンドが示す書き込みデータを書き込みデータ用バッファメモリ２５２に格納する。バッファメモリ制御部２５１は、その書き込み要求コマンドが示す現在の書き込み先ブロックを特定するブロックの物理アドレスの情報を書き込み先ブロック情報格納部２５３に格納する。更にバッファメモリ制御部２５１は、バッファメモリ部２５が、記録媒体アクセス部２２、アドレス変換部２３、ブロック内不使用ページ数管理部２４との間で行う処理を制御する。
【００５０】
すなわち、バッファメモリ制御部２５１は、図８Ｂに示されているように、記録媒体書き込み部２５５とバッファ書き込み部２５６と消去部２５７とを備えている。記録媒体書き込み部２５５は、記録媒体アクセス部２２を介して、書き込みデータ用バッファメモリ２５２に格納されているデータを記録媒体２１に記録する。バッファ書き込み部２５６は、記録媒体アクセス部２２を介して、記録媒体２１内のあるブロックのデータを消去する前に、そのブロックに記録されている不使用ページ以外のデータを書き込みデータ用バッファメモリ２５２に格納する。消去部２５７は、記録媒体アクセス部２２を介して、記録媒体２１を構成する複数のブロックのうちの所定のブロックに記録されているデータを消去する。このとき、記録媒体書き込み部２５５は、さらに、記録媒体アクセス部２２を介して、バッファ書き込み部２５６により書き込みデータ用バッファメモリ２５２に格納されたデータを、記録媒体２１のうちの消去部２５７により消去されたブロックのページに記録する。
【００５１】
書き込みデータ用バッファメモリ２５２と書き込み先ブロック情報格納部２５３とは、本実施の形態において別々に存在するが、同一メモリ内に格納されるような形態であってもよい。
【００５２】
図９は、本発明による記録方法を実施するための実施形態を示している。その記録方法は、ホスト１からストレージ２へアクセス要求が行われた際、実行される。ストレージ２のアクセス処理実行制御部２６は、ホスト１から読み出しアクセス要求コマンドを受け取ったときに、アクセス先の先頭論理アドレスとアクセスサイズとをホスト１から収集する。アクセス処理実行制御部２６は、ホスト１から書き込みアクセス要求コマンドを受け取った場合に、アクセス先の先頭論理アドレス、アクセスサイズ、書き込みするアクセスサイズ分の書き込みデータを収集する（ステップＳ１１）。
【００５３】
アクセス処理実行制御部２６は、ホスト１から読み出しアクセス要求を受け取った場合で（ステップＳ１２のＮｏ分岐）、アクセスサイズが複数のページに跨るときに、その読み出しアクセス要求をページ単位の複数の読み出しアクセス要求に分割し、その複数の読み出しアクセス要求のうちの１ページ分の読み出しアクセス要求を記録媒体アクセス部２２に対して出力する。その複数の読み出しアクセス要求の各々は、アクセス先のページの先頭物理アドレスを示している。その先頭物理アドレスは、ページサイズ、１ブロックあたりのページ数が既知であればホスト１から受け取った読み出し要求の先頭論理アドレス、及びアドレス変換部２３の利用により求められる（ステップＳ１３）。
【００５４】
アクセス処理実行制御部２６は、そのステップＳ１３において記録媒体アクセス部２２から１ページ分の読み出し結果が得られた後に、読み出し結果が既に得られたページ数と、ホスト１から受け取った読み出しアクセス要求全体のページ数を比較する（ステップＳ１４）。アクセス処理実行制御部２６は、その比較の結果、読み出し結果が得られたページ数がホスト１から受理した読み出しアクセス要求全体のページ数未満の場合（ステップＳ１４のＮｏ分岐）、ステップＳ１３に戻って残りの読み出し先領域に対する処理を続行する。
【００５５】
アクセス処理実行制御部２６は、一方その比較の結果、読み出し結果が得られたページ数がホスト１から受理した読み出しアクセス先領域全体のページ数に等しい場合（ステップＳ１４のＹｅｓ分岐）、ホスト１に対して記録媒体アクセス部２２から得られた読み出し結果を渡し、ホスト１からのアクセス要求についての処理を終了する（ステップＳ１５）。
【００５６】
アクセス処理実行制御部２６は、ホスト１から受け取ったアクセス要求が書き込みである場合（ステップＳ１２のＹｅｓ分岐）、書き込みデータを格納されるページ単位に分割し、そのうちの１ページ分の書き込み処理をバッファメモリ部２５に対して要求する。
このとき、アクセス処理実行制御部２６は、バッファメモリ部２５に対して書き込み要求コマンドを行うページの先頭論理アドレス、及びそのページに対する書き込みデータを渡す。
その書き込み要求コマンドを行うページの先頭論理アドレスは、ページサイズ、１ブロックあたりのページ数が既知であればホスト１から受け取った書き込み要求の先頭アドレスから計算できる（ステップＳ１６）。
アクセス処理実行制御部２６は、そのステップＳ１６において１ページ分の書き込み要求コマンドを行った後、書き込み要求が既に完了したページ数と、ホスト１から受け取った書き込みアクセス要求全体の格納ページ数を比較する。
アクセス処理実行制御部２６は、その比較の結果、書き込み要求が完了したページ数がホスト１から受理した書き込みアクセス要求全体のページ数未満の場合（ステップＳ１７のＮｏ分岐）、ステップＳ１６に戻って残りの書き込みデータに対する処理を続行する。
アクセス処理実行制御部２６は、一方その比較の結果、書き込み要求が完了したページ数がホスト１から受理した書き込みアクセス要求全体のページ数に等しい場合（ステップＳ１７のＹｅｓ分岐）、ホスト１に対して受理した書き込み要求の完了を通知して、ホスト１からのアクセス要求についての処理を終了する（ステップＳ１８）。
アクセス処理実行制御部２６は、以上のステップＳ１１からステップＳ１５、またはステップＳ１１からステップＳ１８までの処理を行い、ホスト１からストレージ２へアクセス要求が行われた際の処理が終了する。
【００５７】
図１０は、ステップＳ１３のアクセス処理実行制御部２６がホスト１からの読み出しアクセス要求コマンドに対する読み出しアクセス処理のうちの１ページ分処理する読み出しアクセス処理の手順を示している。アクセス処理実行制御部２６は、まず、ホスト１から受け取った読み出しアクセス要求コマンドから分割された複数の読み出しアクセス要求コマンドのうちの１つが現在着目している１ページの先頭論理アドレスを計算する。そのページの先頭論理アドレスは、その着目している１ページが、ホスト１から受け取った読み出しアクセス要求コマンドの読み出しアクセス先の領域全体の先頭ページである場合に、ホスト１から受け取った読み出しアクセス要求の先頭論理アドレスに等しい。そのページの先頭論理アドレスは、その着目している１ページが、ホスト１から受け取った読み出しアクセス要求の読み出しアクセス先の領域全体の先頭ページでない場合に、既知である１ページのサイズと読み出しアクセス要求コマンドの先頭論理アドレスとその１ページの読み出しアクセス全体における先頭からのページ数とに基づいて計算される（ステップＳ２１）。
【００５８】
アクセス処理実行制御部２６は、アドレス変換部２３を用いて、ステップＳ２１で求めた論理アドレスを物理アドレスに変換する。その物理アドレスは、その着目している１ページの先頭物理アドレスを示している（ステップＳ２２）。
【００５９】
アクセス処理実行制御部２６は、ステップＳ２２で求めた物理アドレスで表される１ページ分の読み出しアクセス要求コマンドを記録媒体アクセス部２２に出力する（ステップＳ２３）。アクセス処理実行制御部２６は、記録媒体アクセス部２２からステップＳ２３で要求した読み出しアクセスの結果を受け取る（ステップＳ２４）。その読み出しアクセスの結果は、記録媒体２１のうちのその着目しているページに記録されていたデータを示している。
【００６０】
以上のステップＳ２１からステップＳ２４までの処理が実行されることにより、ホスト１からの読み出しアクセス要求コマンドに対する読み出しアクセス処理のうちの１ページ分の読み出しアクセス処理が終了する。
【００６１】
図１１〜図１３は、ステップＳ１６のアクセス処理実行制御部２６がホスト１からの書き込みアクセス要求コマンドに対する書き込みアクセス処理のうちの１ページ分を処理する書き込みアクセス処理の手順を示している。アクセス処理実行制御部２６は、まず、ホスト１から受け取った書き込みアクセス要求コマンドから分割された複数の書き込みアクセス要求コマンドのうちの現在着目している１ページの先頭論理アドレスを計算する。そのページの先頭論理アドレスは、その着目している１ページが、ホスト１から受け取った書き込みアクセス要求コマンドの書き込みアクセス先の領域全体の先頭ページである場合に、ホスト１から受け取った書き込みアクセス要求コマンドの書き込みアクセス全体の先頭論理アドレスに等しい。そのページの先頭論理アドレスは、その着目している１ページが、ホスト１から受け取った書き込みアクセス要求の書き込みアクセス先の領域全体の先頭ページでない場合に、既知である１ページのサイズと書き込みアクセス全体の先頭論理アドレスとその１ページの書き込みアクセス全体における先頭からのページ数とに基づいて計算される（ステップＳ３０１）。
【００６２】
アクセス処理実行制御部２６は、ステップＳ３０１で求めた論理アドレスで表されるページごとの書き込みアクセス要求コマンドをバッファメモリ部２５に出力する。アクセス処理実行制御部２６は、その論理アドレスと、その論理アドレスの表すページに格納される書き込みデータとを示す書き込みアクセス要求コマンドをバッファメモリ部２５に渡す（ステップＳ３０２）。
【００６３】
バッファメモリ部２５内のバッファメモリ制御部２５１は、ステップＳ３０２においてアクセス処理実行制御部２６から渡された書き込み先論理アドレスと書き込みデータとを書き込みデータ用バッファメモリ２５２に格納する（ステップＳ３０３）。
【００６４】
バッファメモリ制御部２５１は、書き込み先ブロック情報格納部２５３を参照して、バッファメモリ部２５の書き込み先物理ブロックが未決定の場合に（ステップＳ３０４のＹｅｓ分岐）、ブロック内不使用ページ数管理部２４に新たな書き込み先物理ブロックの検索を要求し、書き込み先物理ブロックを取得する。また、バッファメモリ制御部２５１は、その書き込み先物理ブロックの取得結果を書き込み先物理ブロック情報格納部２５３に格納する（ステップＳ３０５）。
【００６５】
バッファメモリ制御部２５１は、バッファメモリ部２５の書き込み先物理ブロックが決まっている場合に（ステップＳ３０４のＮｏ分岐）、または、ステップＳ３０５の処理を実行した後に、アドレス変換部２３に対してその書き込み先物理ブロックに含まれる各ページに割り当てられた論理アドレスを要求し、取得する（ステップＳ３０６）。バッファメモリ制御部２５１は、その書き込み先物理ブロックのうちのその論理アドレスが割り当てられておらず、不使用であるページから１つのページを選択する（ステップＳ３０７）。
【００６６】
バッファメモリ制御部２５１は、その選択された書き込み先ページに対応する論理アドレス、物理アドレス間の変換情報を作成し、その変換情報をアドレス変換部２３に出力する。アドレス変換部２３のアドレス変換要求処理部２３１は、ステップＳ３０７で選択された書き込み先ページの物理アドレスに対応する論理アドレスをステップＳ３０３で書き込みデータ用バッファメモリに格納した書き込み先論理アドレスに更新し、その書き込み先論理アドレスに対応する物理アドレスをその書き込み先ページの物理アドレスに更新する（ステップＳ３０８）。
【００６７】
バッファメモリ制御部２５１は、ステップＳ３０３で書き込みデータ用バッファメモリ２５２に格納した書き込み先論理アドレスの元々の格納先であった物理ページの含まれる物理ブロックについて、その物理ページが不使用状態になることで不使用ページ数が増加するため、ブロック内不使用ページ数管理部２４内の情報を更新する（ステップＳ３０９）。バッファメモリ制御部２５１は、アドレス変換部２３の情報から書き込み先物理ブロック内に不使用ページが存在するか確認する（ステップＳ３１０）。
【００６８】
この１ページ分の書き込みアクセス処理は、書き込み先物理ブロック内に不使用ページが残されている場合に（ステップＳ３１０のＮｏ分岐）、記録媒体２１内に存在する書き込み先物理ブロックに書き込みデータを実際に格納する処理は発生しないため、終了する。
【００６９】
バッファメモリ部２５内のバッファメモリ制御部２５１は、書き込み先物理ブロック内に不使用ページが存在しない場合に（ステップＳ３１０のＹｅｓ分岐）、書き込みデータ用バッファメモリ２５２の内容と、アドレス変換部２３の情報から書き込み先物理ブロック内の使用ページを比較する（ステップＳ３１１）。
【００７０】
バッファメモリ部２５内のバッファメモリ制御部２５１は、書き込みデータ用バッファメモリ２５２に書き込み先物理ブロック内の使用ページのデータの読み出し結果が全て格納されていない場合に（ステップＳ３１１のＹｅｓ分岐）、バッファメモリ部２５内のバッファメモリ制御部２５１は、記録媒体アクセス部２２を用いて書き込みデータ用バッファメモリ２５２にデータが格納されていない、書き込み先物理ブロック内の使用ページのデータを読み出しして、結果を書き込みデータ用バッファメモリ２５２に格納する（ステップＳ３１２）。
【００７１】
バッファメモリ制御部２５１は、その結果を書き込みデータ用バッファメモリ２５２に格納した後に、または、書き込みデータ用バッファメモリ２５２に書き込み先物理ブロック内の使用ページのデータの読み出し結果が全て格納されている場合に（ステップＳ３１１のＮｏ分岐）、書き込み先物理ブロックの物理アドレスを記録媒体アクセス部２２に渡して、書き込み先物理ブロックのデータの消去を指示する。記録媒体アクセス部２２は、記録媒体２１の書き込み先物理ブロックの消去が行われる（ステップＳ３１３）。
【００７２】
バッファメモリ制御部２５１は、その書き込み先物理ブロック内の各ページの物理アドレスと書き込みデータ用バッファメモリ２５２に格納されている書き込み先物理ブロック内の各ページのデータを記録媒体アクセス部２２に渡して、書き込み先物理ブロック内の各ページの書き込みを指示する。その書き込み先物理ブロック内の各ページの物理アドレスは、ページサイズと書き込み先物理ブロックの先頭アドレスとから計算される。記録媒体アクセス部２２は、バッファメモリ制御部２５１からの指示により書き込み先物理ブロック内の各ページに対して書き込みデータを格納する（ステップＳ３１４）。
【００７３】
バッファメモリ制御部２５１は、ブロック内不使用ページ数管理部２４を通じて、書き込み先物理ブロックの空きページ数を０に更新する（ステップＳ３１５）。バッファメモリ部２５においてバッファメモリ制御部２５１は、書き込み先ブロック情報格納部２５３に格納された、書き込み先物理ブロックの情報をクリアする（ステップＳ３１６）。
【００７４】
以上のステップＳ３０１からステップＳ３１０、またはステップＳ３０１からステップＳ３１６までの処理が実行されることにより、アクセス処理実行制御部２６によるホスト１からの書き込みアクセス要求の１ページ分の処理が終了する。
【００７５】
なお、そのステップＳ３０５における新たな書き込み先物理ブロックの取得処理は、必ずしもバッファメモリ部２５がアクセス処理実行制御部２６から書き込み要求コマンドを受け取ってからの、ステップＳ３０１からステップＳ３１６の一連の処理内で行う必要はない。その書き込み先物理ブロックの取得処理は、バッファメモリ部２５の処理状態に関係なく独立して行ってもよい。その処理を行う場合は、ステップＳ３０１からステップＳ３１６までの処理においてステップＳ３０５は、書き込み先物理ブロックが割り当てられるまで待機する処理となる。
【００７６】
さらに、そのステップＳ３０８からステップＳ３０９の処理は、必ずしも図１２で定められた実行順序である必要ではなく、任意の順序で実行してもよい。
【００７７】
さらに、そのステップＳ３１１からステップＳ３１２における書き込み先物理ブロック内の使用ページの読み出しアクセス処理は、必ずしもバッファメモリ部２５がアクセス処理実行制御部から書き込み要求コマンドを受け取ってからの、ステップＳ３０１からステップＳ３１６の一連の処理内で行う必要はない。その読み出しアクセス処理は、ステップＳ３０５の書き込み先物理ブロックを決定する処理が完了している場合に、バッファメモリ部２５の処理状態に関係なく独立して行ってもよい。その処理を行う場合は、ステップＳ３０１からステップＳ３１６までの処理においてステップＳ３１２は、書き込み先物理ブロック内の使用ページ全ての読み出しが完了するまで待機する処理となる。
【００７８】
図１４は、ステップＳ３１２のバッファメモリ部２５に含まれるバッファメモリ制御部２５１が書き込み先物理ブロックに含まれる使用ページ全てを読み出しする手順を示している。バッファメモリ部２５内のバッファメモリ制御部２５１は、最初に書き込み先物理ブロック内の先頭ページについて着目する（ステップＳ４１）。バッファメモリ部２５内のバッファメモリ制御部２５１は、アドレス変換部２３から着目ページの論理アドレスの情報を参照し、その着目ページが既に使用されているか確認する（ステップＳ４２）。
【００７９】
バッファメモリ制御部２５１は、その着目ページに論理アドレスが割り当てられており使用されている場合に（ステップＳ４３のＹｅｓ分岐）、記録媒体アクセス部２２を用いて記録媒体２１に含まれる書き込み先物理ブロック内の着目ページのデータを読み出して、その読み出し結果を書き込みデータ用バッファメモリ２５２に格納する（ステップＳ４４）。
【００８０】
バッファメモリ制御部２５１は、ステップＳ４４が実行された後に、または、その着目ページに論理アドレスが割り当てられておらず不使用ページである場合に（ステップＳ４３のＮｏ分岐）、現在の着目ページについて既に使用されているかの確認及びデータの読み出し処理を完了し、その着目ページを書き込み先物理ページ内の次のページに変更する（ステップＳ４５）。
【００８１】
バッファメモリ制御部２５１は、書き込み先物理ページに、既に使用されているページであるかの確認及び使用中ページのデータの読み出し処理が完了していないページが残っている場合に（ステップＳ４６のＮｏ分岐）、ステップＳ４２に戻って処理を続行する。
【００８２】
バッファメモリ制御部２５１は、書き込み先物理ページに含まれる全ページに対して既に使用されているページであるかの確認及び使用中ページのデータの読み出し処理が完了するまで（ステップＳ４６のＹｅｓ分岐）、ステップＳ４１からステップＳ４６までの処理を繰り返して行い、バッファメモリ部２５内のバッファメモリ制御部２５１による、書き込み先物理ブロックに含まれる使用ページ全てを読み出しするそのステップＳ３１２における処理を完了する。
【００８３】
なお、ステップＳ４５の処理は、図１４でステップＳ４６の条件分岐の前に行っているが、ステップＳ４６のＮｏ分岐からステップＳ４２の実行が始まる前に実行しても良い。
【実施例】
【００８４】
図１５は、本発明によるストレージ装置の実施例の記録媒体２１が備えるブロックとページとを示している。記録媒体２１の領域全体は、３つのブロックＢｌｏｃｋ１〜Ｂｌｏｃｋ３からから構成されている。ブロックＢｌｏｃｋ１〜Ｂｌｏｃｋ３は、それぞれ、８個のページから構成されている。すなわち、記録媒体２１は、２４個のページから構成されている。記録媒体２１に割り当てられる論理アドレス空間は、１６個のページＡ〜ページＰに対応する１６種類の論理アドレスから形成されている。すなわち、記録媒体２１は、その２４ページのうちの１６ページが外部から見た論理アドレス空間に割り当てられている。その２４ページのうちの残りの８ページは、論理アドレス空間上に割り当てられていない不使用ページである。その不使用ページは、データの書き込みの前に消去アクセス処理を必要としない。
【００８５】
図１５は、さらに、その２４個のページに割り当てられる論理アドレスの初期状態を示している。その初期状態では、ブロックＢｌｏｃｋ１に含まれる８個のページが論理アドレス空間上のページＡからページＨに対応し、ブロックＢｌｏｃｋ２に含まれる８個のページが論理アドレス空間上のページＩからページＰに対応している。ブロックＢｌｏｃｋ３に含まれる各ページは、不使用ページである。以下の説明では、各ブロックに含まれるページは、左から順番にページ１からページ８と定義する。つまり、例えば、初期状態では、ページＡは、ブロックＢｌｏｃｋ１のページ１に対応し、ページＭは、ブロックＢｌｏｃｋ２のページ５に対応する。
【００８６】
本実施例では、ページＪ→ページＦ→ページＢ→ページＮ→ページＯ→ページＰ→ページＡ→ページＤ→ページＬ→ページＤ→ページＮ→ページＩ→ページＰ→ページＢ→ページＣ→ページＪ→ページＨ→ページＬの順序で延べ１８ページに対してストレージ２の外部（ホスト１）から１８の書き込みアクセス要求コマンドが出力される。
【００８７】
本発明による記録方法の第１の比較例は、その１８ページ分の書き込みアクセス処理を、ログ書き込み方式、本発明のいずれも適用せずに、初期状態のブロックＢｌｏｃｋ１及びブロックＢｌｏｃｋ２に格納されているデータを直接更新処理した場合、つまり、論理アドレスの指し示す物理ページが常に同じ位置である場合である。このような第１の比較例によれば、記録媒体２１の外部に存在するバッファメモリの容量が有限である限り書き込み順序を保証するために、書き込み先のページの属するブロックが異なる毎に記録媒体であるフラッシュメモリに対して更新対象ではないページの読み出し、ブロックの消去、ブロック全体の書き込み、の各アクセスを行う必要がある。例えば、そのアクセス順序の例ではページＪに続いてページＦに書き込みを行う場合は、ＪとＦは異なるブロックに存在することからＦの書き込みアクセス処理より前に、記録媒体２１に対してページＩ、及びページＫからページＰの読み出しアクセス処理、ブロックＢｌｏｃｋ２の消去アクセス処理、ページＩからＰのブロックＢｌｏｃｋ２への書き込みアクセス処理を行う必要がある。
【００８８】
図１６は、本発明の第２の比較例であるログ書き込み方式を適用した場合の書き込みアクセス処理手順を示している。そのログ書き込み方式では、ブロックＢｌｏｃｋ３に含まれるページ全てがログバッファとして用いられる。記録媒体２１は、最初に初期状態から、ページＪ、Ｆ、Ｂ、Ｎ、Ｏ、Ｐ、Ａ、ＤのデータがブロックＢｌｏｃｋ３の各ページに記録される（ステップＳ１１０１）。
【００８９】
このとき、ログバッファであるブロックＢｌｏｃｋ３は、不使用ページが全て使用されてしまっている。記録媒体２１は、次に書き込みアクセス処理を行うために、ログバッファの記録内容を元々データが格納されているページに反映させる必要がある。そこで、まず、元々ブロックＢｌｏｃｋ１に含まれる各ページのデータは、ログバッファ上に格納されているデータで更新される。すなわち、まず、ブロックＢｌｏｃｋ１から更新されていないページである、Ｃ、Ｅ、Ｇ、Ｈ、の各ページが読み出され、ブロックＢｌｏｃｋ３から更新されたページであるＡ、Ｂ、Ｄ、Ｆの各ページを読み出される。次いで、ブロックＢｌｏｃｋ１が消去された後、ブロックＢｌｏｃｋ１内のページＡからページＨの各ページに対して書き込みが行われる（ステップＳ１１０２）。このような処理により、ログバッファであるブロックＢｌｏｃｋ３内のページに格納された更新情報は、ブロックＢｌｏｃｋ１に反映される。
【００９０】
次に、ステップＳ１１０２で行った処理をブロックＢｌｏｃｋ２に対して同様に適用する。すなわち、本来ブロックＢｌｏｃｋ２に含まれる各ページのデータが、ログバッファ上の書き込みされたデータで更新される。すなわち、ブロックＢｌｏｃｋ２から更新されていないページである、Ｉ、Ｋ、Ｌ、Ｍ、の各ページが読み出され、ブロックＢｌｏｃｋ３から更新されたページであるＪ、Ｎ、Ｏ、Ｐの各ページが読み出される。次いで、ブロックＢｌｏｃｋ２が消去された後、ブロックＢｌｏｃｋ２内のＩからＰの各ページに対して書き込みが行われる（ステップＳ１１０３）。このような処理により、ログバッファであるブロックＢｌｏｃｋ３内のページに格納された更新情報は、ブロックＢｌｏｃｋ２に反映される。ステップＳ１１０２からステップＳ１１０３までの処理で、ステップＳ１１０１で格納された書き込みデータの、本来データが格納されているブロックへの更新は全て完了している。
【００９１】
次に、ブロックＢｌｏｃｋ３に消去アクセス処理が実行され、ログバッファであるブロックＢｌｏｃｋ３が書き込み可能な状態にされる（ステップＳ１１０４）。
【００９２】
ログバッファであるブロックＢｌｏｃｋ３に対して書き込みが可能になった後に、ステップＳ１１０１で処理した書き込みに続いて、ストレージ２の外部からのページＬ、Ｄ、Ｎ、Ｉ、Ｐ、Ｂ、Ｃ、Ｊに対する書き込み要求コマンドを処理する。その結果その８ページがブロックＢｌｏｃｋ３の各ページに記録される（ステップＳ１１０５）。
【００９３】
ログバッファであるブロックＢｌｏｃｋ３内のページが全て使用された後に、そのステップＳ１１０２と同様に元々ブロックＢｌｏｃｋ１に含まれる各ページのデータは、ログバッファ上に格納されている書き込みされたデータで更新される。すなわち、ブロックＢｌｏｃｋ１から更新されていないページである、Ａ、Ｅ、Ｆ、Ｇ、Ｈ、の各ページが読み出され、ブロックＢｌｏｃｋ３からは更新されたページであるＢ、Ｃ、Ｄの各ページを読み出される。次いで、ブロックＢｌｏｃｋ１が消去された後に、ブロックＢｌｏｃｋ１内のページＡからページＨの各ページに対して書き込みが行われる（ステップＳ１１０６）。このような処理により、ブロックＢｌｏｃｋ１は、ログバッファであるブロックＢｌｏｃｋ３内のページに格納された更新情報が反映される。
【００９４】
次にそのステップＳ１１０３と同様に、本来ブロックＢｌｏｃｋ２に含まれる各ページのデータが、ログバッファ上の書き込みされたデータで更新される。すなわち、ブロックＢｌｏｃｋ２から更新されていないページである、Ｋ、Ｍ、Ｏ、の各ページが読み出され、ブロックＢｌｏｃｋ３からは更新されたページであるＩ、Ｊ、Ｌ、Ｎ、Ｐの各ページが読み出される。次いで、ブロックＢｌｏｃｋ２が消去された後、ブロックＢｌｏｃｋ２内のページＩからページＰの各ページに対して書き込みが行われる（ステップＳ１１０７）。このような処理により、ブロックＢｌｏｃｋ２は、ログバッファであるブロックＢｌｏｃｋ３内のページに格納された更新情報が反映される。ステップＳ１１０６からステップＳ１１０７までの処理で、ステップＳ１１０５で格納された書き込みデータの、本来データが格納されているブロックへの更新が全て完了している。
【００９５】
次に、ブロックＢｌｏｃｋ３に消去アクセス処理が実行され、ログバッファであるブロックＢｌｏｃｋ３が書き込み可能な状態にされる（ステップＳ１１０８）。
【００９６】
ログバッファであるブロックＢｌｏｃｋ３に対して書き込みが可能になった後に、ステップＳ１１０５で処理した書き込みに続いて、ストレージ２の外部からのページＨ、Ｌに対する書き込み要求コマンドが処理される。その結果、その２ページがブロックＢｌｏｃｋ３に記録される。この時点で記録媒体２１内のログバッファを含めたいずれかの領域に、外部からの書き込みデータが全て記録されているため、合計１８ページ分の書き込みアクセスは完了し、ログ書き込み方式による書き込み処理を完了する（ステップＳ１１０９）。
【００９７】
第２の比較例であるこのようなログ書き込み方式によれば、ブロックＢｌｏｃｋ１への更新をストレージ２の外部からの書き込み要求と異なる順序で更新が反映されることになるが、更新情報は、ブロックＢｌｏｃｋ３に記録されているため、ストレージ２全体では書き込み順序が保証される。さらに、第２の比較例であるこのようなログ書き込み方式によれば、既述の第１の比較例と比べて、ブロックＢｌｏｃｋ１内の各ページは、同時に消去アクセス処理が行われることで消去の回数、及び消去前後の読み出し、書き込みの各処理の回数を削減することができる。
【００９８】
図１７は、本発明による記録方法の第１の実施例を示している。その第１の実施例では、最初に初期状態から、ページＪ、Ｆ、Ｂ、Ｎ、Ｏ、Ｐ、Ａ、Ｄの順番で書き込みが行われる。ブロックＢｌｏｃｋ３の各ページは、初期状態では何も記録されていないため直接書き込みアクセス処理することができる。その８ページがブロックＢｌｏｃｋ３の各ページに記録される。また、ブロックＢｌｏｃｋ３に書き込まれたページについて、アドレス変換部２３は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する（ステップＳ１３０１）。
【００９９】
そのステップＳ１３０１において、書き込み先物理ブロック内の不使用ページは、０となる。そのため、新たに書き込み先物理ブロックを指定する必要がある。バッファメモリ部２５はブロック内不使用ページ数管理部２４に新たな書き込み先物理ブロックを要求する。ブロック内不使用ページ数管理部２４は、書き込み処理性能向上のために、不使用ページ数の最も多いブロックを書き込み先物理ブロックとして選択する。ステップＳ１３０１の時点でブロックＢｌｏｃｋ１の不使用ページ数とブロックＢｌｏｃｋ２の不使用ページ数とは、それぞれ４である。そのため書き込み先物理ブロックとしてどちらを選んでも処理性能に変化は生じない。本実施例では、ブロックＢｌｏｃｋ１が書き込み先物理ブロックとして選択され、書き込み先物理ブロック内であるブロックＢｌｏｃｋ１の使用中ページであるページＣ、Ｅ、Ｇ、Ｈが読み出しされる。その読み出し処理の後に、書き込み先物理ブロックであるブロックＢｌｏｃｋ１に対して消去アクセス処理が行われる。その消去アクセス処理完了後、元々ブロックＢｌｏｃｋ１に存在したページＣ、Ｅ、Ｇ、Ｈが元のページに書き込みされる（ステップＳ１３０２）。
【０１００】
書き込み先物理ページ内のデータが記録されていないページに対して、ステップＳ１３０１で処理した書き込みに続いて、ストレージ２の外部からのページＬ、Ｄ、Ｎ、Ｉに対する書き込み要求コマンドが処理される。その結果、その４つの論理ページのデータがブロックＢｌｏｃｋ１の各ページに記録される。また、アドレス変換部２３は、ステップＳ１３０１と同様に、ブロックＢｌｏｃｋ１に書き込まれたページについて、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する（ステップＳ１３０３）。
【０１０１】
ステップＳ１３０３において、書き込み先物理ブロックであるブロックＢｌｏｃｋ１の不使用ページは、０となる。そこで、ブロックｂｌｏｃｋ２は、ステップＳ１３０２と同様の手順で、新たに書き込み先物理ブロックが決定され、新たな書き込みデータが記録できるように処理される。ステップＳ１３０３の時点でブロックＢｌｏｃｋ２、ブロックＢｌｏｃｋ３の不使用ページ数がそれぞれ６、２であるため、ブロック内不使用ページ数管理部２４は、ブロックＢｌｏｃｋ２を新たに書き込み先物理ブロックとして選択する。書き込み先物理ブロック内の使用中ページであるページＫ、Ｍは、読み出しされた後に、ブロックＢｌｏｃｋ２に対して消去アクセス処理が行われる。その消去アクセス処理の完了後、元々ブロックＢｌｏｃｋ２に存在したページＫ、Ｍが元のページに書き込みされる（ステップＳ１３０４）。
【０１０２】
書き込み先物理ブロックであるブロックＢｌｏｃｋ２に対して書き込みが可能になったため、ステップＳ１３０３で処理した書き込みに続いて、同様の手順でストレージ２の外部からのページＰ、Ｂ、Ｃ、Ｊ、Ｈ、Ｌに対する書き込み要求コマンドが処理される。その結果、その６ページがブロックＢｌｏｃｋ２に記録されて、合計１８ページ分の書き込みアクセスが完了する（ステップＳ１３０５）。
【０１０３】
図１８は、本発明による記録方法の第２の実施例を示している。その第２の実施例は、更に書き込みアクセス処理をブロック毎に行っている。すなわち、その第１の実施例が第２の実施例と異なる点は、バッファメモリ部２５がブロック内不使用ページ数管理部２４から書き込み先物理ブロックを取得する際に、単一のブロックを取得していた点を、全てのページが不使用な単一のブロック、または、不使用ページ数の合計が１つのブロックに含まれるページの数以上になり、尚且つ、最小限の複数のブロックを取得するように、ブロック内不使用ページ数管理部２４内のブロック検索部２４１、及びバッファメモリ部２５内のバッファメモリ制御部２５１が動作する点である。
【０１０４】
その第２の実施例では、最初に初期状態から、ページＪ、Ｆ、Ｂ、Ｎ、Ｏ、Ｐ、Ａ、Ｄの順番で書き込みが行われる。ブロックＢｌｏｃｋ３の各ページは、初期状態では何も記録されていないため直接書き込みアクセス処理することができる。その８ページがブロックＢｌｏｃｋ３の各ページに記録される。また、ブロックＢｌｏｃｋ３に書き込まれたページについて、アドレス変換部２３は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する（ステップＳ１２０１）。
【０１０５】
そのステップＳ１２０１において、書き込み先物理ブロック内の不使用ページは、０となる。そのため、新たに書き込み先物理ブロックを指定する必要がある。更に書き込み処理をブロック単位で行うためには、ブロック内に使用中のページが存在しないブロックを用意する必要がある。実施例のステップＳ１２０１の段階で、使用中のページ数が０のブロックは記録媒体２１内に存在しない。そこで使用中のページ数が０のブロックを新たに作成する。ブロックＢｌｏｃｋ１、及びブロックＢｌｏｃｋ２の不使用ページ数、つまり対応する論理ページのデータが更新されたことで、格納されているデータに保存の必要がなくなったページは図１５を参照するとそれぞれ４ページである。これらのページの使用中のページをいずれかのブロックに移動することで、使用中のページが存在しない物理ページを書き込み先ブロックとして指定できる。つまりブロックＢｌｏｃｋ２を書き込み先物理ブロックとして指定するためには、ブロックＢｌｏｃｋ２内の使用中ページをブロックＢｌｏｃｋ１に移動する必要がある。そのため最初にブロックＢｌｏｃｋ１の使用中ページであるＣ、Ｅ、Ｇ、Ｈ、ブロックＢｌｏｃｋ２の使用中ページであるＩ、Ｋ、Ｌ、Ｍ、を読み出しする。その読み出し処理の後に使用中ページの移動先であるブロックＢｌｏｃｋ１に対して消去を行う。その消去完了後、元々ブロックＢｌｏｃｋ１に存在したＣ、Ｅ、Ｇ、Ｈを元のページに、ブロックＢｌｏｃｋ２に存在したページであるＩ、Ｋ、Ｌ、Ｍを消去前は不使用ページだった箇所に書き込みする。同時にアドレス変換部２３は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する（ステップＳ１２０２）。
【０１０６】
そのステップＳ１２０２において、書き込み先物理ブロックがブロックＢｌｏｃｋ２となったため、書き込み先物理ブロックに新たにデータを書き込むために、ブロックＢｌｏｃｋ２に対して消去を行う。このときページＩ、Ｋ、Ｌ、Ｍについては最新のデータが格納されているが、同じデータがブロックＢｌｏｃｋ１に書き込まれており、尚且つ論理ページであるＩ、Ｋ、Ｌ、Ｍ各ページに対応する物理ページはそのステップＳ１２０２においてブロックＢｌｏｃｋ１内のページに変更されているため、消去によってデータが消去されても問題ない（ステップＳ１２０３）。
【０１０７】
書き込み先物理ブロックであるブロックＢｌｏｃｋ２に対して書き込みが可能になったため、ステップＳ１２０１で処理した書き込みに続いて、ストレージ２の外部からのページＬ、Ｄ、Ｎ、Ｉ、Ｐ、Ｂ、Ｃ、Ｊに対する書き込み要求コマンドを処理する。その結果その８論理ページのデータがブロックＢｌｏｃｋ２の各ページに記録される。またステップＳ１２０１と同様にブロックＢｌｏｃｋ２に書き込まれたページについて、アドレス変換部２３は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する（ステップＳ１２０４）。
そのステップＳ１２０１が完了した時点と同様に、書き込み先物理ブロック内の不使用ページは０となる。そこで、ブロックＢｌｏｃｋ１の不使用ページ数が３、ブロックＢｌｏｃｋ３の不使用ページ数が５であることから、ブロックＢｌｏｃｋ３を次の書き込み先物理ページに変更し、そのステップＳ１２０２と同様の手順でブロックＢｌｏｃｋ１に使用中のページのデータを移動する。そのため、ブロックＢｌｏｃｋ１の使用中ページであるＫ、Ｅ、Ｍ、Ｇ、Ｈ、ブロックＢｌｏｃｋ３の使用中ページであるＦ、Ｏ、Ａに対する読み出しを行い、ブロックＢｌｏｃｋ１を消去、その合計８ページをブロックＢｌｏｃｋ１に書き込みする（ステップＳ１２０５）。
【０１０８】
そのステップＳ１２０３と同様に、書き込み先物理ブロックであるブロックＢｌｏｃｋ３に対して消去処理を行う（ステップＳ１２０６）。書き込み先物理ブロックであるブロックＢｌｏｃｋ３に対して書き込みが可能になったため、ステップＳ１２０４で処理した書き込みに続いて、同様の手順でストレージ２の外部からのページＨ、Ｌに対する書き込み要求コマンドを処理する。その結果その２ページがブロックＢｌｏｃｋ３に記録されて、合計１８ページ分の書き込みアクセスが完了するため、本発明を適用し、尚且つブロック毎に書き込み処理を行った場合の処理を完了する（ステップＳ１２０７）。
【０１０９】
図１９は、比較例と実施例とで示した各処理手順を用いてその１８ページ分の書き込み処理を行った場合の、ストレージ２内部での読み出し、書き込み、消去の各操作回数を比較した表を示している。その表１２１は、第２の比較例であるログ書き込み方式と本発明の第１の実施例と第２の実施例とが、第１の比較例である本発明の未適用の場合と比較すると、記録媒体２１に対する読み出し、書き込み、消去の各回数が減少していることを示している。本発明を適用した場合は、第２の比較例であるログ書き込み方式と比べて、更に記録媒体２１に対する読み出し、書き込み、消去の回数が減少している。すなわち、本発明による記録方法は、このような比較例に比較して、記録媒体２１にデータを書き込むときのＩＯＰＳ性能を向上させることができる。
【０１１０】
比較例の方法では、頻繁なガベージコレクションが発生しない限り、本発明と比べてランダムＷｒｉｔｅのＩＯＰＳ向上効果が大きい。しかしながら、本発明による記録方法では、本発明の第１の実施例と第２の実施例とのように、継続的にランダムライトアクセスが行われたときに、ガベージコレクションが行われないで、そのデータをブロックＢｌｏｃｋ１〜Ｂｌｏｃｋ３に記録することができる。すなわち、本発明による記録方法は、比較例の方法に比較して、データ書き込みの処理が単純化され、さらに、結果として、高負荷時にも性能が落ちずに、ＩＯＰＳ性能を安定化することができ、ランダムＷｒｉｔｅに対するＩＯＰＳ性能を向上させることができる。
【０１１１】
更に、本発明を適用した場合でも、ブロック単位で不使用箇所を作り書き込みを行う第２の実施例に比較して、不使用ページが多く存在するブロックを直接書き込み先物理ブロックとして使用する第１の実施例が、記録媒体２１に対する読み出し、書き込み、消去の回数がより減少している。すなわち、第１の実施例で示した各処理手順は、第２の実施例で示した各処理手順に比較して、記録媒体２１にデータを書き込むときのＩＯＰＳ性能をより向上させることができる。
【符号の説明】
【０１１２】
１    ：ホスト
２    ：ストレージ
３    ：ネットワーク
２１  ：記録媒体
２２  ：記録媒体アクセス部
２３  ：アドレス変換部
２４  ：ブロック内不使用ページ数管理部
２５  ：バッファメモリ部
２６  ：アクセス処理実行制御部
１０２−１〜１０２−８：ページ
２３１：アドレス変換要求処理部
２３２：論理物理アドレス変換情報格納部
２３３：物理論理アドレス変換情報格納部
２４１：ブロック検索部
２４２：ブロック内不使用ページ情報更新部
２４３：ブロック内不使用ページ数情報格納部
２５１：バッファメモリ制御部
２５２：書き込みデータ用バッファメモリ
２５３：ブロック情報格納部
２５５：記録媒体書き込み部
２５６：バッファ書き込み部
２５７：消去部
１２１：効果比較表
【図１】
2010237907.tif 000003
【図２】
2010237907.tif 000004
【図３】
2010237907.tif 000005
【図４】
2010237907.tif 000006
【図５】
2010237907.tif 000007
【図６】
2010237907.tif 000008
【図７】
2010237907.tif 000009
【図８Ａ】
2010237907.tif 000010
【図８Ｂ】
2010237907.tif 000011
【図９】
2010237907.tif 000012
【図１０】
2010237907.tif 000013
【図１１】
2010237907.tif 000014
【図１２】
2010237907.tif 000015
【図１３】
2010237907.tif 000016
【図１４】
2010237907.tif 000017
【図１５】
2010237907.tif 000018
【図１６】
2010237907.tif 000019
【図１７】
2010237907.tif 000020
【図１８】
2010237907.tif 000021
【図１９】
2010237907.tif 000022