JP2010237907A - ストレージ装置および記録方法 - Google Patents
ストレージ装置および記録方法 Download PDFInfo
- Publication number
- JP2010237907A JP2010237907A JP2009084191A JP2009084191A JP2010237907A JP 2010237907 A JP2010237907 A JP 2010237907A JP 2009084191 A JP2009084191 A JP 2009084191A JP 2009084191 A JP2009084191 A JP 2009084191A JP 2010237907 A JP2010237907 A JP 2010237907A
- Authority
- JP
- Japan
- Prior art keywords
- block
- page
- data
- pages
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】ガベージコレクションを行わないで、データを書き込むときのIOPS性能を向上させること。
【解決手段】ホストからの第1データを、記録媒体を構成するブロックBlock1〜3のうちBlock3のページに書き込むステップと、不使用ページに基づいて選択されたBlock1のページに記録された第2データをバッファに書き込むステップと、Block1のページに記録されたデータを消去するステップと、その第2データをBlock1のページに再度書き込むステップとを備えている。このとき、その不使用ページは、データが書き込まれていないページ、または、他のページに書き込まれたデータが書き込まれているページを示している。このような記録方法によれば、ガベージコレクションを行わないで、ブロックに記録されたデータを消去する回数を低減することができる。
【選択図】図17
【解決手段】ホストからの第1データを、記録媒体を構成するブロックBlock1〜3のうちBlock3のページに書き込むステップと、不使用ページに基づいて選択されたBlock1のページに記録された第2データをバッファに書き込むステップと、Block1のページに記録されたデータを消去するステップと、その第2データをBlock1のページに再度書き込むステップとを備えている。このとき、その不使用ページは、データが書き込まれていないページ、または、他のページに書き込まれたデータが書き込まれているページを示している。このような記録方法によれば、ガベージコレクションを行わないで、ブロックに記録されたデータを消去する回数を低減することができる。
【選択図】図17
Description
本発明は、ストレージ装置および記録方法に関し、特に、データの読み込み単位より大きな単位でデータの事前消去が必要な記録媒体にデータを記録するときに利用されるストレージ装置および記録方法に関する。
昨今の計算機の進化に伴い、計算機が使用する記録媒体に対して単位時間に可能な読み込みと書き込みとの回数、すなわち、IOPS(Input Output Per Second)性能の向上が求められている。現在計算機では、計算機の電源がOFFの場合でもデータを保持するための記録媒体としてHDD(Hard Disk Drive)が多く用いられている。しかし、HDDは、シーケンシャルアクセス時と比較してランダムアクセス時のIOPS性能が低い。そのため、HDDを備えたシステムは、ランダムアクセスが頻発するアプリケーションの利用時はIOPS性能が低下し、結果としてシステム全体の処理性能が低下する。
HDDにおいてランダムアクセス時のIOPS性能がシーケンシャルアクセスに比べて低い原因は、回転する円盤上に記録された情報を物理的にデータの記録位置までヘッドを移動させてアクセスするためである。ランダムアクセスによるIOPS性能低下を回避するためには、ランダムアクセスが行われることを回避すること、ランダムアクセス時のIOPS低下の原因となる現象の発生を防ぐこと、のいずれかの対策が必要である。
まず、ランダムアクセスが行われることを回避する方式について述べる。ランダムアクセスをシーケンシャルアクセスに変換するための技術としては、非特許文献1、非特許文献2に挙げたようなログ書き込み方式が挙げられる。そのログ書き込み方式では、ディスク上の特定箇所に更新内容のログ書き込み用の領域、つまり書き込み専用の領域を確保する。HDDに対して書き込むデータは、全て前記書き込み専用領域に先頭から順番に追記する。各書き込みのデータには、書き込み先のアドレス、書き込みのサイズを識別するためのデータを付加する。このとき、連続したランダム書き込みアクセスは、シーケンシャル書き込みアクセスに変換され、その結果、書き込み時のIOPS性能が向上する。
しかし、そのログ書き込み方式を用いた場合でも、読み出しアクセス時はそれぞれのアクセス対象のデータが格納された領域に対して読み出しを行う必要がある。また、シーケンシャル読み出し対象のデータの一部が更新されていた場合、最新のデータは書き込み用の領域に記録された状態である。この場合は、アドレス空間上で連続した領域に対する読み出しであっても更新されたデータは別途書き込み用領域から読み出しする必要があり、シーケンシャル読み出しとはならない。よってランダム読み出しアクセスのシーケンシャル読み出しへの変換は不可能である。よって、ログ書き込み方式を用いることによるHDDでのランダムアクセスの回避は困難である。
次に、そのランダムアクセス時の性能低下発生を防ぐ方式について述べる。HDDへのランダムアクセス時にIOPS性能が低下する原因は、アクセス時にHDDのヘッドがアクセス先まで移動する時間を余分に要することによる。ランダムアクセス時のヘッドの移動発生によるIOPS性能低下は、HDDの構造によるものである。そのため、ランダムアクセス時のIOPS性能低下発生を防ぐためには、HDD以外の記録媒体を用いる必要がある。
特許第3997130号公報のように、ランダムアクセスがHDDと比較して高速な記録媒体としてフラッシュメモリを採用したものが存在する。近年では、特にランダムアクセスにおいて高いIOPS性能を得ることを目的として、HDDではなく不揮発性を持ったフラッシュメモリを採用したSSD(Solid State Drive)のような記録媒体が使用され始めている。フラッシュメモリは、アクセス先の任意のアドレスが示す領域に対して等しい時間でアクセス可能である。そのためSSDは、HDDと比較してランダム読み出し、ランダム書き込み時のIOPS性能が高い。
再特WO2005/106673号公報には、ホストからのアクセス方法に依存せず書き込み処理に要する時間を短縮できる不揮発性の記憶装置が開示されている。
特開2004−62328号公報には、NAND型フラッシュメモリの消去単位よりも小さいアクセス単位をもつフラッシュストレージメディアにおいて、連続した論理アドレスへのデータ書込み動作における無駄な処理の発生をなくし、データ書込みパフォーマンスを向上させ得るフラッシュストレージメディアが開示されている。
特開2006−3966号公報には、例えばディジタルカメラの撮影画像をフラッシュメモリに書込む場合等において、書込時間の短縮が可能な書込方法が開示されている。
Rosenblum, Mendel and Ousterhout, John K. (June 1990) − "The LFS Storage Manager". Proceedings of the 1990 Summer Usenix. pp315−324.
Rosenblum, Mendel and Ousterhout, John K. (February 1992) − "The Design and Implementation of a Log−Structured File System". ACM Transactions on Computer Systems, Vol. 10 Issue 1. pp26−52.
しかし、一方でフラッシュメモリは、書き込みアクセス対象の領域について制限を持っている。フラッシュメモリの各領域は、データが記録されていない状態と記録された2種類の状態を持つ。書き込みアクセスは、これらのうちのデータが記録されていない状態の領域のみに対して行うことが可能である。フラッシュメモリは、データが既に記録された状態の領域に書き込みを行う場合に、事前に書き込み先の領域に対して消去(Erase)を行う必要がある。
SSDに広く用いられるNAND型フラッシュメモリにおける読み出し、書き込みアクセスについて図1を用いて説明する。フラッシュメモリは、複数のブロックを備えている。その複数のブロックの各々は、複数のページP2を備えている。フラッシュメモリにおける記録の最小単位は、ページP2であり、読み出し、書き込みの処理は、ページP2を単位として行われる。一方、消去処理は、複数のページを含む領域であるブロックP1が操作の最小単位である。つまり、ブロックP1に含まれる書き込み対象ページP3に書き込みを行う際に、書き込み対象ページP3に既に何らかのデータが記録された状態である場合は、書き込み対象ページP3に対する書き込みを行う前に書き込み対象ページP3内のデータを消去する必要がある。しかし、消去操作は、ブロックP1を最小単位とするため、書き込み対象ページP3に記録されたデータを消去する場合に、ブロックP1に含まれる他のブロックP2のデータも同時に消去される。よって、ブロックP1の一部分の書き込み対象ページP3のみに書き込みを行う場合に、つまりブロックP1のサイズに比べて小さいサイズの書き込みを行う場合に、消去を行う前後で書き込み対象ページP3以外のページP2のデータを保護する必要がある。
そのため、フラッシュメモリで構成される記録媒体に対して1回の書き込み処理を行うためには図2に示される処理が必要である。まず、その記録媒体のコントローラは、書き込み対象ページP3と同一のブロックP1に含まれる、書き込み対象ではないページP2のデータを全て読み出す(ステップS01)。次いで、そのコントローラは、書き込み対象ページP3を含むブロックP1のデータを消去する。このとき、ステップS01における書き込み対象ページP3と物理的に異なるブロックが実体として割り当てられていてもよい(ステップS02)。次いで、そのコントローラは、消去されたブロックP1に対して、ステップS01で読み出しておいた書き込み対象ページP3以外のページP2のデータをそれぞれのデータが元々格納されていたページP2に書き込みし、実際の書き込み対象のデータを書き込み対象ページP3に書き込みする(ステップS03)。
図2で示されたフラッシュメモリにおける書き込み処理では、1ページ分の書き込みに対して、消去操作の最小単位であるブロックがnページを含むとすると、(n−1)ページに対する読み出し、1ブロックの消去、nページに対する書き込み操作を行う必要がある。このため、フラッシュメモリを用いたSSDに対するランダム書き込みは、シーケンシャル書き込みに対してIOPS性能が低下する。またブロックあたりのページ数が増加するほど、消去前の読み出し対象ページ、消去後の書き込み対象ページが増加する。そのため、ランダム書き込みとシーケンシャル書き込みのIOPS性能の差が広がる。
そのSSD等のフラッシュメモリで構成された記録媒体におけるランダム書き込み時のIOPS性能がシーケンシャル書き込み時に比べて低下する問題に対して、非特許文献1で挙げたログ書き込み方式を用いることでランダム書き込み時のIOPS性能の向上が可能である。HDDに対して適用する場合と同様に、SSD等のフラッシュメモリで構成されたストレージ内部に事前に連続したデータが何も記録されておらず、消去操作を必要としない空きページを確保しておき、各書き込みデータは空きページに追記する。追記した書き込みデータに対して各データが本来格納されるアドレスも併せて記録する。空き領域に追記することによって、ランダム書き込みをシーケンシャル書き込みと同等の速度で処理できる。
一方でフラッシュメモリでは、シーケンシャル読み出しと比較して任意の領域に対するランダム読み出しについてIOPS性能を低下させずに処理可能である。そのためランダム書き込みのIOPS性能をシーケンシャル書き込みと同等にすることで、フラッシュメモリに対する読み出し、書き込み共にランダムアクセスがシーケンシャルアクセスと同等のIOPS性能で処理できる。
フラッシュメモリで構成されるストレージへのアクセスに対して、そのログ書き込み方式を適用することでランダム書き込みがシーケンシャル書き込みに変換される。その結果、フラッシュメモリで構成されるストレージにおいてランダム書き込みが、発行される前にシーケンシャル書き込みに変化することでランダム書き込みにおけるIOPS性能が向上する。
しかし、フラッシュメモリで構成されたストレージに対してランダム書き込みをシーケンシャル書き込みに変換して追記するためには、ストレージ上に常に連続した空き領域がランダム書き込みを行う前に確保されている必要がある。ログ書き込み方式では、書き込みアクセスによる更新情報を常に空き領域に追記するため、書き込みアクセスを重ねるにつれて空き領域が減少する。そのため、任意の時間間隔で空き領域を確保するためのガベージコレクション(Garbage Collection、GC)が必要である。
ガベージコレクションは、記録媒体上のアドレス空間内に分散する空き領域に、同じ記録媒体内の別の領域に記録されたデータを移動することで、連続した空き領域を生成するための操作である。ログ書き込み方式では、書き込み領域に記録された更新データを更新前のデータが記録された領域に反映することで書き込み用領域の空きの確保が可能である。つまりガベージコレクションを行うことで記録媒体内でのデータ移動が発生する。
その結果、ガベージコレクションの実行毎に外部からのアクセスとは関係のない記録媒体内部でのデータ移動に伴うアクセス処理が余分に発生し、IOPS性能が低下する。また書き込み用領域が十分に確保されておりガベージコレクションを行わない場合と比較して、書き込み用領域が不足してガベージコレクションが行われる場合はガベージコレクションの影響でIOPS性能が低下するため、ガベージコレクションの有無によって記録媒体のIOPS性能が変化する。
本発明の課題は、ガベージコレクションを行わないで、記録媒体にデータを書き込むときのIOPS性能を向上させるストレージ装置および記録方法を提供することにある。
本発明によるストレージ装置は、記録媒体書き込み部とバッファ書き込み部と消去部とを備えている。その記録媒体書き込み部は、ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに第1データを書き込む。そのバッファ書き込み部は、そのブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込む。その消去部は、その第2ブロックに記録されているデータを消去する。その記録媒体書き込み部は、さらに、その第2データをそのバッファからその第2ブロックのページに書き込む。このとき、その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
本発明による記録方法は、
ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに第1データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、その第2ブロックに記録されているデータを消去するステップと、
その第2データをそのバッファからその第2ブロックのページに書き込むステップとを備えている。その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに第1データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、その第2ブロックに記録されているデータを消去するステップと、
その第2データをそのバッファからその第2ブロックのページに書き込むステップとを備えている。その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
本発明によるコンピュータプログラムは、
ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに第1データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、
その第2ブロックに記録されているデータを消去するステップと、
その第2データをそのバッファからその第2ブロックのページに書き込むステップとをコンピュータに実行させる。ここで、その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに第1データを書き込むステップと、
そのブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、
その第2ブロックに記録されているデータを消去するステップと、
その第2データをそのバッファからその第2ブロックのページに書き込むステップとをコンピュータに実行させる。ここで、その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なページを格納しているページを示している。
本発明によるストレージ装置および記録方法は、データの書き込み単位より大きな単位でデータの事前消去が必要な記録媒体にデータを記録する場合で、継続的にランダムライトアクセスが行われたときに、ガベージコレクションすることなく、ブロックに記録されたデータを消去する回数を低減することができ、IOPS性能を向上させることができる。
図面を参照して、本発明によるストレージ装置の実施の最良の形態について説明する。そのストレージ装置2は、図3に示されているように、コンピュータシステムに適用されている。そのコンピュータシステムは、ネットワーク3を介して複数の情報処理装置(コンピュータ)が互いに双方向に情報を伝送することができるように接続されている。その複数の情報処理装置は、ホスト1とストレージ2とを含んでいる。なお、そのコンピュータシステムは、ストレージ2を複数備えることもできる。そのコンピュータシステムは、さらに、ストレージ2に対してホスト1を複数備えることもできる。そのコンピュータシステムは、さらに、ネットワーク3を用いないで、ホスト1とストレージ2とが直接接続される形態であってもよい。
図4は、ストレージ2を示している。ストレージ2は、記録媒体21と記録媒体アクセス部22とアドレス変換部23とブロック内不使用ページ数管理部24とブロック検索部25とバッファメモリ部25とアクセス処理実行制御部26とを備えている。
アクセス処理実行制御部26は、ホスト1から読み出し要求コマンドを受け取る。その読み出し要求コマンドは、論理アドレスと読み出しサイズとを示している。アクセス処理実行制御部26は、その読み出し要求コマンドを受け取ったときに、その論理アドレスをアドレス変換部23に出力する。アクセス処理実行制御部26は、その論理アドレスに対応する物理アドレスをアドレス変換部23から受け取ったときに、他の読み出し要求コマンドを記録媒体アクセス部22に出力する。このとき、アクセス処理実行制御部26は、その読み出しサイズが記録媒体21の複数のページに跨る場合に、1ページずつ複数の読み出し要求コマンドを記録媒体アクセス部22に出力する。アクセス処理実行制御部26から記録媒体アクセス部22に出力される読み出し要求コマンドは、その物理アドレスを示している。アクセス処理実行制御部26は、その読み出し要求コマンドに対して記録媒体アクセス部22から出力された読み出し結果に基づいて作成された他の読み出し結果をホスト1に返す。アクセス処理実行制御部26からホスト1に返される読み出し結果は、その読み出しサイズが記録媒体21の1ページに収まるときに、記録媒体アクセス部22から出力された読み出し結果に等しい。アクセス処理実行制御部26からホスト1に返される読み出し結果は、その読み出しサイズが記録媒体21の複数のページに跨るときに、記録媒体アクセス部22から出力された複数の読み出し結果の全部を示している。
アクセス処理実行制御部26は、さらに、ホスト1から書き込み要求コマンドを受け取る。その書き込み要求コマンドは、書き込み先ページの論理アドレスと書き込みデータと書き込みサイズとを示している。アクセス処理実行制御部26は、その書き込み要求コマンドを受け取ったときに、他の書き込み要求コマンドをバッファメモリ部25に出力する。アクセス処理実行制御部26からバッファメモリ部25に出力される書き込み要求コマンドは、その論理アドレスとその書き込みデータとをそれぞれ示している。このとき、アクセス処理実行制御部26は、その書き込みサイズが記録媒体21の複数のページに跨る場合に、書き込み先の各ページについてその書き込みデータを複数の書き込みデータに分割し、複数の書き込みアクセス要求コマンドをバッファメモリ部25に出力する。その複数の書き込みアクセス要求コマンドは、複数のページの論理アドレスと、その複数の書き込みデータとをそれぞれ示している。アクセス処理実行制御部26は、その書き込み要求コマンドに対する書き込み処理が完了したときに、その書き込み処理が完了したことを示す書き込み完了通知をホスト1に通知する。
アドレス変換部23は、論理アドレスと物理アドレスの対応関係の情報を記憶し、論理アドレスと物理アドレスとの間の変換処理を行う。すなわち、アドレス変換部23は、バッファメモリ部25から論理アドレスを受け取ったときに、その論理アドレスに対応する物理アドレスをバッファメモリ部25に返す。アドレス変換部23は、アクセス処理実行制御部26から論理アドレスを受け取ったときに、その論理アドレスに対応する物理アドレスをアクセス処理実行制御部26に返す。アドレス変換部23は、さらに、バッファメモリ部25から物理アドレスを受け取ったときに、その物理アドレスに対応する論理アドレスをバッファメモリ部25に返す。アドレス変換部23は、さらに、バッファメモリ部25から論理アドレスと物理アドレスとの対応関係の変更情報を受け取ったときに、論理アドレスと物理アドレスとの対応関係の情報を更新する。
バッファメモリ部25は、アクセス処理実行制御部26から書き込み要求コマンドを受け取ると、その書き込み要求コマンドが示す論理アドレスと書き込みデータとを記録する。バッファメモリ部25は、ブロック内不使用ページ数管理部24を用いて記録媒体21内の書き込み先物理ブロックが選択済みであるかを確認する。バッファメモリ部25は、書き込み先物理ブロックが選択済みでない場合に、ブロック内不使用ページ数管理部24に新たに書き込み先物理ブロックの割り当てを要求する。バッファメモリ部25は、さらに、その書き込み先物理ブロックが備える複数のページのうちの、既に使用されており、論理アドレスに割り当て済みのページの物理アドレスを、そのアドレス変換部23を用いて特定する。バッファメモリ部25は、その論理アドレスに割り当て済みのページについて、書き込み先物理ブロックのアドレスから該ページの物理アドレスを算出し、その記録媒体アクセス部22を用いて該ページのデータを読み出し、バッファメモリ部25内に記録する。バッファメモリ部25は、さらに、書き込みアクセス要求コマンドまたは消去アクセス要求を記録媒体アクセス部22に出力する。バッファメモリ部25は、さらに、書き込みデータを記録していく不使用ページに対して、そのアドレス変換部23に対して論理アドレスと物理アドレスとの対応関係を更新する。
ブロック内不使用ページ数管理部24は、記録媒体21内の各ブロックの不使用ページ数を記録している。その不使用ページ数は、そのブロックに含まれる不使用状態のページの数を示している。ブロック内不使用ページ数管理部24は、バッファメモリ部25から不使用ページ数を要求されたときに、その不使用ページを有するブロックの物理アドレスをバッファメモリ部25に返す。ブロック内不使用ページ数管理部24は、バッファメモリ部25から物理アドレスと不使用ページ数とが通知されたときに、その物理アドレスが示すブロックに対応する不使用ページ数を更新する。
記録媒体アクセス部22は、記録媒体21に対してアクセス処理を行う。そのアクセス処理は、読み出しアクセス処理と書き込みアクセス処理と消去アクセス処理とを含んでいる。記録媒体アクセス部22は、アクセス処理実行制御部26から読み出しアクセス要求コマンドを受け取ったときに、その読み出しアクセス処理を実行することにより読み出しアクセス結果をアクセス処理実行制御部26に返す。その読み出しアクセス要求コマンドは、読み出し先のページの物理アドレスを示している。その読み出しアクセス結果は、記録媒体21のうちのその物理アドレスに対応する領域に記録されているデータを示している。記録媒体アクセス部22は、バッファメモリ部25から書き込みアクセス要求コマンドを受け取ったときに、書き込み処理を実行する。その書き込みアクセス要求コマンドは、書き込み先のブロックの物理アドレスと書き込みデータとを示している。記録媒体アクセス部22は、記録媒体21内のその物理アドレスが指し示すブロックにその書き込みデータを書き込む。記録媒体アクセス部22は、その書き込みデータの書き込みの完了後、バッファメモリ部25に書き込みアクセスの完了を通知する。記録媒体アクセス部22は、バッファメモリ部25から消去アクセス要求コマンドを受け取ったときに、消去アクセス処理を実行する。その消去アクセス要求コマンドは、消去先のブロックの物理アドレスを示している。記録媒体アクセス部22は、記録媒体21内のその物理アドレスが指し示すブロックに記録されているデータを消去し、その消去アクセスの完了後、バッファメモリ部25に消去アクセスの完了を通知する。
記録媒体21は、データの書き込み(Write)を行う前に消去(Erase)が必要であり、且つ、消去の最小単位の領域が読み出し(Read)の最小単位または書き込みの最小単位の領域を複数含む単体または複数の媒体によって構成されている。このような媒体としては、例えば、NAND型フラッシュメモリ、または、NAND型フラッシュメモリによって構成されるSSD(Solid State Drive)が例示される。記録媒体21は、ストレージ2に格納されるデータ全てを保持し、記録媒体アクセス部22によって読み出しアクセス処理、書き込みアクセス処理、消去アクセス処理が行われる。
なお、記録媒体アクセス部22とアドレス変換部23とブロック内不使用ページ数管理部24とバッファメモリ部25とアクセス処理実行制御部26とは、本実施の形態においてストレージ2の内部に配置されているものの、これらの一部または全てがホスト1内部に存在してもよい。
図5は、記録媒体21を示している。記録媒体21は、フラッシュメモリから形成され、複数のブロックを備えている。その複数のブロックの各々のブロック101−i(i=2,3,…)は、8個のページ102−1〜102−8を備えている。ブロック101−iの開始アドレスは、1ページ目のページ102−1の開始アドレスに等しい。ブロック101−iの終了アドレスは、8ページ目のページ102−8の終了アドレスに等しい。記録媒体21は、データを読み出されるときに、ページ単位でデータが記録媒体21から読み出される。記録媒体21は、データを書き込まれるときに、ページ単位でデータが記録媒体21に書き込まれる。記録媒体21は、データを消去されるときに、ブロック単位で消去される。同一ブロックに属する複数のページに対する複数の書き込み処理は、そのブロックに対する消去アクセス処理が行われた後に行われる。消去アクセス処理は、さらに、あるブロックへの書き込み処理と、そのブロックと異なる他のブロックへの書き込み処理とが到着した場合に、その先行する書き込み処理のアクセス対象とするブロックに対して行われる。なお、1つのブロック101−iは、8個と異なる他の複数個のページを備えることもできる。
図6は、アドレス変換部23を示している。アドレス変換部23は、アドレス変換要求処理部231と論理物理アドレス変換情報格納部232と物理論理アドレス変換情報格納部233とを備えている。論理物理アドレス変換情報格納部232は、ページの論理アドレスをキーとして対応する物理アドレスの情報を格納する。物理論理アドレス変換情報格納部233は、ページの物理アドレスをキーとして対応する論理アドレスの情報を格納する。アドレス変換要求処理部231は、アクセス処理実行制御部26からページの論理アドレスを受け取ったときに、論理物理アドレス変換情報格納部232を用いてその論理アドレスに対応する物理アドレスを算出し、その物理アドレスをアクセス処理実行制御部26に返す。アドレス変換要求処理部231は、バッファメモリ部25からページの論理アドレスを受け取ったときに、論理物理アドレス変換情報格納部232を用いてその論理アドレスに対応する物理アドレスを算出し、その物理アドレスをバッファメモリ部25に返す。アドレス変換要求処理部231は、バッファメモリ部25からページの物理アドレスを受け取ったときに、物理論理アドレス変換情報格納部233を用いてその物理アドレスに対応する論理アドレスを算出し、その論理アドレスをバッファメモリ部25に返す。アドレス変換要求処理部231は、ページの物理アドレスと論理アドレスの対応関係の更新要求コマンドをバッファメモリ部25から受け取ったときに、論理物理アドレス変換情報格納部232と物理論理アドレス変換情報格納部233との該当する箇所を更新する。
アドレス変換要求処理部231と論理物理アドレス変換情報格納部232と物理論理アドレス変換情報格納部233とは、本実施の形態においてアドレス変換部23として一体化されているが、例えば論理物理アドレス変換情報格納部232と物理論理アドレス変換情報格納部233とが記録媒体21内に格納されているような形であってもよい。
図7は、ブロック内不使用ページ数管理部24を示している。ブロック内不使用ページ数管理部24は、ブロック検索部241とブロック内不使用ページ情報更新部242とブロック内不使用ページ数情報格納部243とを備えている。
ブロック内不使用ページ数情報格納部243は、ブロック物理アドレス集合を不使用ページ数集合に対応付けるテーブルを記録している。すなわち、そのブロック物理アドレス集合のうちの任意の要素は、その不使用ページ数集合のうちの1つの要素に対応している。そのブロック物理アドレス集合の要素は、それぞれ、記録媒体21が備える複数のブロックの物理アドレスを示している。その不使用ページ数集合のうちのある物理アドレスに対応する要素は、その物理アドレスにより識別されるブロックが備える不使用ページの個数を示している。その不使用ページは、データが消去された後にデータが書き込まれていないページを示している。その不使用ページは、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられたデータが書き込まれているページを示し、すなわち、別のページが同一論理アドレスに対応付けられたことで、その論理アドレスに対して更新前の無効なデータを格納しているページを示している。すなわち、ブロック内不使用ページ数情報格納部243は、記録媒体21のページにデータが書き込まれたときに、または、記録媒体21のあるブロックに書き込まれたデータが消去されたときに、そのテーブルを更新する。
ブロック検索部241は、バッファメモリ部25から割り当て要求コマンドを受け取る。その割り当て要求コマンドは、記録媒体21内の複数のブロックから1つのブロックを選択する検索条件を示している。ブロック内の不使用ページ数が多いほど、一度の消去アクセス処理あたりに処理可能な書き込みアクセス要求の数が増加するため、その検索条件としては、記録媒体21内の複数のブロックのうちの不使用ページの数が最大のブロックを検索することが例示される。ブロック検索部241は、バッファメモリ部25から割り当て要求コマンドを受け取ったときに、ブロック内不使用ページ数情報格納部243の情報をもとに記録媒体21内の複数のブロックからその検索条件を満たす書き込み先物理ブロックの物理アドレスをバッファメモリ部25に返す。その物理アドレスは、書き込み先物理ブロックを割り当てて、その結果を例えばブロックの物理アドレスのようにブロックを一意に特定できる情報に置換されることもできる。
ブロック内不使用ページ情報更新部242は、バッファメモリ部25から書き込み先物理ブロックとして使用されており、不使用ページがなくなったブロックと、及び不使用ページが新たに発生したブロックの物理アドレスと、増減した不使用ページ数の情報を受け取る。ブロック内不使用ページ情報更新部242は、ブロック内不使用ページ数情報格納部243に格納されたその物理アドレスの示すブロックの不使用ページ数の情報を更新する。
ブロック検索部241とブロック内不使用ページ情報更新部242とブロック内不使用ページ数情報格納部243とは、ブロック内不使用ページ数管理部24として一体化されているが、例えばブロック内不使用ページ数情報格納部243が記録媒体21内に配置されているような形であってもよい。
図8Aは、バッファメモリ部25を示している。バッファメモリ部25は、バッファメモリ制御部251と書き込みデータ用バッファメモリ252と書き込み先ブロック情報格納部253とを備えている。
書き込みデータ用バッファメモリ252は、記録媒体21の書き込み先ブロックに書き込む予定のデータをページ毎に格納する。書き込み先ブロック情報格納部253は、バッファメモリ部25によって次に書き込まれる記録媒体21内のブロックを特定する情報を格納する。そのブロックを特定する情報は、ブロックの物理アドレスを示している。そのブロックを特定する情報は、その書き込まれるブロックが決まっていないときに、無効な物理アドレスを示している。
バッファメモリ制御部251は、アクセス処理実行制御部26から書き込み要求コマンドを受け取ったときに、その書き込み要求コマンドが示す書き込みデータを書き込みデータ用バッファメモリ252に格納する。バッファメモリ制御部251は、その書き込み要求コマンドが示す現在の書き込み先ブロックを特定するブロックの物理アドレスの情報を書き込み先ブロック情報格納部253に格納する。更にバッファメモリ制御部251は、バッファメモリ部25が、記録媒体アクセス部22、アドレス変換部23、ブロック内不使用ページ数管理部24との間で行う処理を制御する。
すなわち、バッファメモリ制御部251は、図8Bに示されているように、記録媒体書き込み部255とバッファ書き込み部256と消去部257とを備えている。記録媒体書き込み部255は、記録媒体アクセス部22を介して、書き込みデータ用バッファメモリ252に格納されているデータを記録媒体21に記録する。バッファ書き込み部256は、記録媒体アクセス部22を介して、記録媒体21内のあるブロックのデータを消去する前に、そのブロックに記録されている不使用ページ以外のデータを書き込みデータ用バッファメモリ252に格納する。消去部257は、記録媒体アクセス部22を介して、記録媒体21を構成する複数のブロックのうちの所定のブロックに記録されているデータを消去する。このとき、記録媒体書き込み部255は、さらに、記録媒体アクセス部22を介して、バッファ書き込み部256により書き込みデータ用バッファメモリ252に格納されたデータを、記録媒体21のうちの消去部257により消去されたブロックのページに記録する。
書き込みデータ用バッファメモリ252と書き込み先ブロック情報格納部253とは、本実施の形態において別々に存在するが、同一メモリ内に格納されるような形態であってもよい。
図9は、本発明による記録方法を実施するための実施形態を示している。その記録方法は、ホスト1からストレージ2へアクセス要求が行われた際、実行される。ストレージ2のアクセス処理実行制御部26は、ホスト1から読み出しアクセス要求コマンドを受け取ったときに、アクセス先の先頭論理アドレスとアクセスサイズとをホスト1から収集する。アクセス処理実行制御部26は、ホスト1から書き込みアクセス要求コマンドを受け取った場合に、アクセス先の先頭論理アドレス、アクセスサイズ、書き込みするアクセスサイズ分の書き込みデータを収集する(ステップS11)。
アクセス処理実行制御部26は、ホスト1から読み出しアクセス要求を受け取った場合で(ステップS12のNo分岐)、アクセスサイズが複数のページに跨るときに、その読み出しアクセス要求をページ単位の複数の読み出しアクセス要求に分割し、その複数の読み出しアクセス要求のうちの1ページ分の読み出しアクセス要求を記録媒体アクセス部22に対して出力する。その複数の読み出しアクセス要求の各々は、アクセス先のページの先頭物理アドレスを示している。その先頭物理アドレスは、ページサイズ、1ブロックあたりのページ数が既知であればホスト1から受け取った読み出し要求の先頭論理アドレス、及びアドレス変換部23の利用により求められる(ステップS13)。
アクセス処理実行制御部26は、そのステップS13において記録媒体アクセス部22から1ページ分の読み出し結果が得られた後に、読み出し結果が既に得られたページ数と、ホスト1から受け取った読み出しアクセス要求全体のページ数を比較する(ステップS14)。アクセス処理実行制御部26は、その比較の結果、読み出し結果が得られたページ数がホスト1から受理した読み出しアクセス要求全体のページ数未満の場合(ステップS14のNo分岐)、ステップS13に戻って残りの読み出し先領域に対する処理を続行する。
アクセス処理実行制御部26は、一方その比較の結果、読み出し結果が得られたページ数がホスト1から受理した読み出しアクセス先領域全体のページ数に等しい場合(ステップS14のYes分岐)、ホスト1に対して記録媒体アクセス部22から得られた読み出し結果を渡し、ホスト1からのアクセス要求についての処理を終了する(ステップS15)。
アクセス処理実行制御部26は、ホスト1から受け取ったアクセス要求が書き込みである場合(ステップS12のYes分岐)、書き込みデータを格納されるページ単位に分割し、そのうちの1ページ分の書き込み処理をバッファメモリ部25に対して要求する。
このとき、アクセス処理実行制御部26は、バッファメモリ部25に対して書き込み要求コマンドを行うページの先頭論理アドレス、及びそのページに対する書き込みデータを渡す。
その書き込み要求コマンドを行うページの先頭論理アドレスは、ページサイズ、1ブロックあたりのページ数が既知であればホスト1から受け取った書き込み要求の先頭アドレスから計算できる(ステップS16)。
アクセス処理実行制御部26は、そのステップS16において1ページ分の書き込み要求コマンドを行った後、書き込み要求が既に完了したページ数と、ホスト1から受け取った書き込みアクセス要求全体の格納ページ数を比較する。
アクセス処理実行制御部26は、その比較の結果、書き込み要求が完了したページ数がホスト1から受理した書き込みアクセス要求全体のページ数未満の場合(ステップS17のNo分岐)、ステップS16に戻って残りの書き込みデータに対する処理を続行する。
アクセス処理実行制御部26は、一方その比較の結果、書き込み要求が完了したページ数がホスト1から受理した書き込みアクセス要求全体のページ数に等しい場合(ステップS17のYes分岐)、ホスト1に対して受理した書き込み要求の完了を通知して、ホスト1からのアクセス要求についての処理を終了する(ステップS18)。
アクセス処理実行制御部26は、以上のステップS11からステップS15、またはステップS11からステップS18までの処理を行い、ホスト1からストレージ2へアクセス要求が行われた際の処理が終了する。
このとき、アクセス処理実行制御部26は、バッファメモリ部25に対して書き込み要求コマンドを行うページの先頭論理アドレス、及びそのページに対する書き込みデータを渡す。
その書き込み要求コマンドを行うページの先頭論理アドレスは、ページサイズ、1ブロックあたりのページ数が既知であればホスト1から受け取った書き込み要求の先頭アドレスから計算できる(ステップS16)。
アクセス処理実行制御部26は、そのステップS16において1ページ分の書き込み要求コマンドを行った後、書き込み要求が既に完了したページ数と、ホスト1から受け取った書き込みアクセス要求全体の格納ページ数を比較する。
アクセス処理実行制御部26は、その比較の結果、書き込み要求が完了したページ数がホスト1から受理した書き込みアクセス要求全体のページ数未満の場合(ステップS17のNo分岐)、ステップS16に戻って残りの書き込みデータに対する処理を続行する。
アクセス処理実行制御部26は、一方その比較の結果、書き込み要求が完了したページ数がホスト1から受理した書き込みアクセス要求全体のページ数に等しい場合(ステップS17のYes分岐)、ホスト1に対して受理した書き込み要求の完了を通知して、ホスト1からのアクセス要求についての処理を終了する(ステップS18)。
アクセス処理実行制御部26は、以上のステップS11からステップS15、またはステップS11からステップS18までの処理を行い、ホスト1からストレージ2へアクセス要求が行われた際の処理が終了する。
図10は、ステップS13のアクセス処理実行制御部26がホスト1からの読み出しアクセス要求コマンドに対する読み出しアクセス処理のうちの1ページ分処理する読み出しアクセス処理の手順を示している。アクセス処理実行制御部26は、まず、ホスト1から受け取った読み出しアクセス要求コマンドから分割された複数の読み出しアクセス要求コマンドのうちの1つが現在着目している1ページの先頭論理アドレスを計算する。そのページの先頭論理アドレスは、その着目している1ページが、ホスト1から受け取った読み出しアクセス要求コマンドの読み出しアクセス先の領域全体の先頭ページである場合に、ホスト1から受け取った読み出しアクセス要求の先頭論理アドレスに等しい。そのページの先頭論理アドレスは、その着目している1ページが、ホスト1から受け取った読み出しアクセス要求の読み出しアクセス先の領域全体の先頭ページでない場合に、既知である1ページのサイズと読み出しアクセス要求コマンドの先頭論理アドレスとその1ページの読み出しアクセス全体における先頭からのページ数とに基づいて計算される(ステップS21)。
アクセス処理実行制御部26は、アドレス変換部23を用いて、ステップS21で求めた論理アドレスを物理アドレスに変換する。その物理アドレスは、その着目している1ページの先頭物理アドレスを示している(ステップS22)。
アクセス処理実行制御部26は、ステップS22で求めた物理アドレスで表される1ページ分の読み出しアクセス要求コマンドを記録媒体アクセス部22に出力する(ステップS23)。アクセス処理実行制御部26は、記録媒体アクセス部22からステップS23で要求した読み出しアクセスの結果を受け取る(ステップS24)。その読み出しアクセスの結果は、記録媒体21のうちのその着目しているページに記録されていたデータを示している。
以上のステップS21からステップS24までの処理が実行されることにより、ホスト1からの読み出しアクセス要求コマンドに対する読み出しアクセス処理のうちの1ページ分の読み出しアクセス処理が終了する。
図11〜図13は、ステップS16のアクセス処理実行制御部26がホスト1からの書き込みアクセス要求コマンドに対する書き込みアクセス処理のうちの1ページ分を処理する書き込みアクセス処理の手順を示している。アクセス処理実行制御部26は、まず、ホスト1から受け取った書き込みアクセス要求コマンドから分割された複数の書き込みアクセス要求コマンドのうちの現在着目している1ページの先頭論理アドレスを計算する。そのページの先頭論理アドレスは、その着目している1ページが、ホスト1から受け取った書き込みアクセス要求コマンドの書き込みアクセス先の領域全体の先頭ページである場合に、ホスト1から受け取った書き込みアクセス要求コマンドの書き込みアクセス全体の先頭論理アドレスに等しい。そのページの先頭論理アドレスは、その着目している1ページが、ホスト1から受け取った書き込みアクセス要求の書き込みアクセス先の領域全体の先頭ページでない場合に、既知である1ページのサイズと書き込みアクセス全体の先頭論理アドレスとその1ページの書き込みアクセス全体における先頭からのページ数とに基づいて計算される(ステップS301)。
アクセス処理実行制御部26は、ステップS301で求めた論理アドレスで表されるページごとの書き込みアクセス要求コマンドをバッファメモリ部25に出力する。アクセス処理実行制御部26は、その論理アドレスと、その論理アドレスの表すページに格納される書き込みデータとを示す書き込みアクセス要求コマンドをバッファメモリ部25に渡す(ステップS302)。
バッファメモリ部25内のバッファメモリ制御部251は、ステップS302においてアクセス処理実行制御部26から渡された書き込み先論理アドレスと書き込みデータとを書き込みデータ用バッファメモリ252に格納する(ステップS303)。
バッファメモリ制御部251は、書き込み先ブロック情報格納部253を参照して、バッファメモリ部25の書き込み先物理ブロックが未決定の場合に(ステップS304のYes分岐)、ブロック内不使用ページ数管理部24に新たな書き込み先物理ブロックの検索を要求し、書き込み先物理ブロックを取得する。また、バッファメモリ制御部251は、その書き込み先物理ブロックの取得結果を書き込み先物理ブロック情報格納部253に格納する(ステップS305)。
バッファメモリ制御部251は、バッファメモリ部25の書き込み先物理ブロックが決まっている場合に(ステップS304のNo分岐)、または、ステップS305の処理を実行した後に、アドレス変換部23に対してその書き込み先物理ブロックに含まれる各ページに割り当てられた論理アドレスを要求し、取得する(ステップS306)。バッファメモリ制御部251は、その書き込み先物理ブロックのうちのその論理アドレスが割り当てられておらず、不使用であるページから1つのページを選択する(ステップS307)。
バッファメモリ制御部251は、その選択された書き込み先ページに対応する論理アドレス、物理アドレス間の変換情報を作成し、その変換情報をアドレス変換部23に出力する。アドレス変換部23のアドレス変換要求処理部231は、ステップS307で選択された書き込み先ページの物理アドレスに対応する論理アドレスをステップS303で書き込みデータ用バッファメモリに格納した書き込み先論理アドレスに更新し、その書き込み先論理アドレスに対応する物理アドレスをその書き込み先ページの物理アドレスに更新する(ステップS308)。
バッファメモリ制御部251は、ステップS303で書き込みデータ用バッファメモリ252に格納した書き込み先論理アドレスの元々の格納先であった物理ページの含まれる物理ブロックについて、その物理ページが不使用状態になることで不使用ページ数が増加するため、ブロック内不使用ページ数管理部24内の情報を更新する(ステップS309)。バッファメモリ制御部251は、アドレス変換部23の情報から書き込み先物理ブロック内に不使用ページが存在するか確認する(ステップS310)。
この1ページ分の書き込みアクセス処理は、書き込み先物理ブロック内に不使用ページが残されている場合に(ステップS310のNo分岐)、記録媒体21内に存在する書き込み先物理ブロックに書き込みデータを実際に格納する処理は発生しないため、終了する。
バッファメモリ部25内のバッファメモリ制御部251は、書き込み先物理ブロック内に不使用ページが存在しない場合に(ステップS310のYes分岐)、書き込みデータ用バッファメモリ252の内容と、アドレス変換部23の情報から書き込み先物理ブロック内の使用ページを比較する(ステップS311)。
バッファメモリ部25内のバッファメモリ制御部251は、書き込みデータ用バッファメモリ252に書き込み先物理ブロック内の使用ページのデータの読み出し結果が全て格納されていない場合に(ステップS311のYes分岐)、バッファメモリ部25内のバッファメモリ制御部251は、記録媒体アクセス部22を用いて書き込みデータ用バッファメモリ252にデータが格納されていない、書き込み先物理ブロック内の使用ページのデータを読み出しして、結果を書き込みデータ用バッファメモリ252に格納する(ステップS312)。
バッファメモリ制御部251は、その結果を書き込みデータ用バッファメモリ252に格納した後に、または、書き込みデータ用バッファメモリ252に書き込み先物理ブロック内の使用ページのデータの読み出し結果が全て格納されている場合に(ステップS311のNo分岐)、書き込み先物理ブロックの物理アドレスを記録媒体アクセス部22に渡して、書き込み先物理ブロックのデータの消去を指示する。記録媒体アクセス部22は、記録媒体21の書き込み先物理ブロックの消去が行われる(ステップS313)。
バッファメモリ制御部251は、その書き込み先物理ブロック内の各ページの物理アドレスと書き込みデータ用バッファメモリ252に格納されている書き込み先物理ブロック内の各ページのデータを記録媒体アクセス部22に渡して、書き込み先物理ブロック内の各ページの書き込みを指示する。その書き込み先物理ブロック内の各ページの物理アドレスは、ページサイズと書き込み先物理ブロックの先頭アドレスとから計算される。記録媒体アクセス部22は、バッファメモリ制御部251からの指示により書き込み先物理ブロック内の各ページに対して書き込みデータを格納する(ステップS314)。
バッファメモリ制御部251は、ブロック内不使用ページ数管理部24を通じて、書き込み先物理ブロックの空きページ数を0に更新する(ステップS315)。バッファメモリ部25においてバッファメモリ制御部251は、書き込み先ブロック情報格納部253に格納された、書き込み先物理ブロックの情報をクリアする(ステップS316)。
以上のステップS301からステップS310、またはステップS301からステップS316までの処理が実行されることにより、アクセス処理実行制御部26によるホスト1からの書き込みアクセス要求の1ページ分の処理が終了する。
なお、そのステップS305における新たな書き込み先物理ブロックの取得処理は、必ずしもバッファメモリ部25がアクセス処理実行制御部26から書き込み要求コマンドを受け取ってからの、ステップS301からステップS316の一連の処理内で行う必要はない。その書き込み先物理ブロックの取得処理は、バッファメモリ部25の処理状態に関係なく独立して行ってもよい。その処理を行う場合は、ステップS301からステップS316までの処理においてステップS305は、書き込み先物理ブロックが割り当てられるまで待機する処理となる。
さらに、そのステップS308からステップS309の処理は、必ずしも図12で定められた実行順序である必要ではなく、任意の順序で実行してもよい。
さらに、そのステップS311からステップS312における書き込み先物理ブロック内の使用ページの読み出しアクセス処理は、必ずしもバッファメモリ部25がアクセス処理実行制御部から書き込み要求コマンドを受け取ってからの、ステップS301からステップS316の一連の処理内で行う必要はない。その読み出しアクセス処理は、ステップS305の書き込み先物理ブロックを決定する処理が完了している場合に、バッファメモリ部25の処理状態に関係なく独立して行ってもよい。その処理を行う場合は、ステップS301からステップS316までの処理においてステップS312は、書き込み先物理ブロック内の使用ページ全ての読み出しが完了するまで待機する処理となる。
図14は、ステップS312のバッファメモリ部25に含まれるバッファメモリ制御部251が書き込み先物理ブロックに含まれる使用ページ全てを読み出しする手順を示している。バッファメモリ部25内のバッファメモリ制御部251は、最初に書き込み先物理ブロック内の先頭ページについて着目する(ステップS41)。バッファメモリ部25内のバッファメモリ制御部251は、アドレス変換部23から着目ページの論理アドレスの情報を参照し、その着目ページが既に使用されているか確認する(ステップS42)。
バッファメモリ制御部251は、その着目ページに論理アドレスが割り当てられており使用されている場合に(ステップS43のYes分岐)、記録媒体アクセス部22を用いて記録媒体21に含まれる書き込み先物理ブロック内の着目ページのデータを読み出して、その読み出し結果を書き込みデータ用バッファメモリ252に格納する(ステップS44)。
バッファメモリ制御部251は、ステップS44が実行された後に、または、その着目ページに論理アドレスが割り当てられておらず不使用ページである場合に(ステップS43のNo分岐)、現在の着目ページについて既に使用されているかの確認及びデータの読み出し処理を完了し、その着目ページを書き込み先物理ページ内の次のページに変更する(ステップS45)。
バッファメモリ制御部251は、書き込み先物理ページに、既に使用されているページであるかの確認及び使用中ページのデータの読み出し処理が完了していないページが残っている場合に(ステップS46のNo分岐)、ステップS42に戻って処理を続行する。
バッファメモリ制御部251は、書き込み先物理ページに含まれる全ページに対して既に使用されているページであるかの確認及び使用中ページのデータの読み出し処理が完了するまで(ステップS46のYes分岐)、ステップS41からステップS46までの処理を繰り返して行い、バッファメモリ部25内のバッファメモリ制御部251による、書き込み先物理ブロックに含まれる使用ページ全てを読み出しするそのステップS312における処理を完了する。
なお、ステップS45の処理は、図14でステップS46の条件分岐の前に行っているが、ステップS46のNo分岐からステップS42の実行が始まる前に実行しても良い。
図15は、本発明によるストレージ装置の実施例の記録媒体21が備えるブロックとページとを示している。記録媒体21の領域全体は、3つのブロックBlock1〜Block3からから構成されている。ブロックBlock1〜Block3は、それぞれ、8個のページから構成されている。すなわち、記録媒体21は、24個のページから構成されている。記録媒体21に割り当てられる論理アドレス空間は、16個のページA〜ページPに対応する16種類の論理アドレスから形成されている。すなわち、記録媒体21は、その24ページのうちの16ページが外部から見た論理アドレス空間に割り当てられている。その24ページのうちの残りの8ページは、論理アドレス空間上に割り当てられていない不使用ページである。その不使用ページは、データの書き込みの前に消去アクセス処理を必要としない。
図15は、さらに、その24個のページに割り当てられる論理アドレスの初期状態を示している。その初期状態では、ブロックBlock1に含まれる8個のページが論理アドレス空間上のページAからページHに対応し、ブロックBlock2に含まれる8個のページが論理アドレス空間上のページIからページPに対応している。ブロックBlock3に含まれる各ページは、不使用ページである。以下の説明では、各ブロックに含まれるページは、左から順番にページ1からページ8と定義する。つまり、例えば、初期状態では、ページAは、ブロックBlock1のページ1に対応し、ページMは、ブロックBlock2のページ5に対応する。
本実施例では、ページJ→ページF→ページB→ページN→ページO→ページP→ページA→ページD→ページL→ページD→ページN→ページI→ページP→ページB→ページC→ページJ→ページH→ページLの順序で延べ18ページに対してストレージ2の外部(ホスト1)から18の書き込みアクセス要求コマンドが出力される。
本発明による記録方法の第1の比較例は、その18ページ分の書き込みアクセス処理を、ログ書き込み方式、本発明のいずれも適用せずに、初期状態のブロックBlock1及びブロックBlock2に格納されているデータを直接更新処理した場合、つまり、論理アドレスの指し示す物理ページが常に同じ位置である場合である。このような第1の比較例によれば、記録媒体21の外部に存在するバッファメモリの容量が有限である限り書き込み順序を保証するために、書き込み先のページの属するブロックが異なる毎に記録媒体であるフラッシュメモリに対して更新対象ではないページの読み出し、ブロックの消去、ブロック全体の書き込み、の各アクセスを行う必要がある。例えば、そのアクセス順序の例ではページJに続いてページFに書き込みを行う場合は、JとFは異なるブロックに存在することからFの書き込みアクセス処理より前に、記録媒体21に対してページI、及びページKからページPの読み出しアクセス処理、ブロックBlock2の消去アクセス処理、ページIからPのブロックBlock2への書き込みアクセス処理を行う必要がある。
図16は、本発明の第2の比較例であるログ書き込み方式を適用した場合の書き込みアクセス処理手順を示している。そのログ書き込み方式では、ブロックBlock3に含まれるページ全てがログバッファとして用いられる。記録媒体21は、最初に初期状態から、ページJ、F、B、N、O、P、A、DのデータがブロックBlock3の各ページに記録される(ステップS1101)。
このとき、ログバッファであるブロックBlock3は、不使用ページが全て使用されてしまっている。記録媒体21は、次に書き込みアクセス処理を行うために、ログバッファの記録内容を元々データが格納されているページに反映させる必要がある。そこで、まず、元々ブロックBlock1に含まれる各ページのデータは、ログバッファ上に格納されているデータで更新される。すなわち、まず、ブロックBlock1から更新されていないページである、C、E、G、H、の各ページが読み出され、ブロックBlock3から更新されたページであるA、B、D、Fの各ページを読み出される。次いで、ブロックBlock1が消去された後、ブロックBlock1内のページAからページHの各ページに対して書き込みが行われる(ステップS1102)。このような処理により、ログバッファであるブロックBlock3内のページに格納された更新情報は、ブロックBlock1に反映される。
次に、ステップS1102で行った処理をブロックBlock2に対して同様に適用する。すなわち、本来ブロックBlock2に含まれる各ページのデータが、ログバッファ上の書き込みされたデータで更新される。すなわち、ブロックBlock2から更新されていないページである、I、K、L、M、の各ページが読み出され、ブロックBlock3から更新されたページであるJ、N、O、Pの各ページが読み出される。次いで、ブロックBlock2が消去された後、ブロックBlock2内のIからPの各ページに対して書き込みが行われる(ステップS1103)。このような処理により、ログバッファであるブロックBlock3内のページに格納された更新情報は、ブロックBlock2に反映される。ステップS1102からステップS1103までの処理で、ステップS1101で格納された書き込みデータの、本来データが格納されているブロックへの更新は全て完了している。
次に、ブロックBlock3に消去アクセス処理が実行され、ログバッファであるブロックBlock3が書き込み可能な状態にされる(ステップS1104)。
ログバッファであるブロックBlock3に対して書き込みが可能になった後に、ステップS1101で処理した書き込みに続いて、ストレージ2の外部からのページL、D、N、I、P、B、C、Jに対する書き込み要求コマンドを処理する。その結果その8ページがブロックBlock3の各ページに記録される(ステップS1105)。
ログバッファであるブロックBlock3内のページが全て使用された後に、そのステップS1102と同様に元々ブロックBlock1に含まれる各ページのデータは、ログバッファ上に格納されている書き込みされたデータで更新される。すなわち、ブロックBlock1から更新されていないページである、A、E、F、G、H、の各ページが読み出され、ブロックBlock3からは更新されたページであるB、C、Dの各ページを読み出される。次いで、ブロックBlock1が消去された後に、ブロックBlock1内のページAからページHの各ページに対して書き込みが行われる(ステップS1106)。このような処理により、ブロックBlock1は、ログバッファであるブロックBlock3内のページに格納された更新情報が反映される。
次にそのステップS1103と同様に、本来ブロックBlock2に含まれる各ページのデータが、ログバッファ上の書き込みされたデータで更新される。すなわち、ブロックBlock2から更新されていないページである、K、M、O、の各ページが読み出され、ブロックBlock3からは更新されたページであるI、J、L、N、Pの各ページが読み出される。次いで、ブロックBlock2が消去された後、ブロックBlock2内のページIからページPの各ページに対して書き込みが行われる(ステップS1107)。このような処理により、ブロックBlock2は、ログバッファであるブロックBlock3内のページに格納された更新情報が反映される。ステップS1106からステップS1107までの処理で、ステップS1105で格納された書き込みデータの、本来データが格納されているブロックへの更新が全て完了している。
次に、ブロックBlock3に消去アクセス処理が実行され、ログバッファであるブロックBlock3が書き込み可能な状態にされる(ステップS1108)。
ログバッファであるブロックBlock3に対して書き込みが可能になった後に、ステップS1105で処理した書き込みに続いて、ストレージ2の外部からのページH、Lに対する書き込み要求コマンドが処理される。その結果、その2ページがブロックBlock3に記録される。この時点で記録媒体21内のログバッファを含めたいずれかの領域に、外部からの書き込みデータが全て記録されているため、合計18ページ分の書き込みアクセスは完了し、ログ書き込み方式による書き込み処理を完了する(ステップS1109)。
第2の比較例であるこのようなログ書き込み方式によれば、ブロックBlock1への更新をストレージ2の外部からの書き込み要求と異なる順序で更新が反映されることになるが、更新情報は、ブロックBlock3に記録されているため、ストレージ2全体では書き込み順序が保証される。さらに、第2の比較例であるこのようなログ書き込み方式によれば、既述の第1の比較例と比べて、ブロックBlock1内の各ページは、同時に消去アクセス処理が行われることで消去の回数、及び消去前後の読み出し、書き込みの各処理の回数を削減することができる。
図17は、本発明による記録方法の第1の実施例を示している。その第1の実施例では、最初に初期状態から、ページJ、F、B、N、O、P、A、Dの順番で書き込みが行われる。ブロックBlock3の各ページは、初期状態では何も記録されていないため直接書き込みアクセス処理することができる。その8ページがブロックBlock3の各ページに記録される。また、ブロックBlock3に書き込まれたページについて、アドレス変換部23は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する(ステップS1301)。
そのステップS1301において、書き込み先物理ブロック内の不使用ページは、0となる。そのため、新たに書き込み先物理ブロックを指定する必要がある。バッファメモリ部25はブロック内不使用ページ数管理部24に新たな書き込み先物理ブロックを要求する。ブロック内不使用ページ数管理部24は、書き込み処理性能向上のために、不使用ページ数の最も多いブロックを書き込み先物理ブロックとして選択する。ステップS1301の時点でブロックBlock1の不使用ページ数とブロックBlock2の不使用ページ数とは、それぞれ4である。そのため書き込み先物理ブロックとしてどちらを選んでも処理性能に変化は生じない。本実施例では、ブロックBlock1が書き込み先物理ブロックとして選択され、書き込み先物理ブロック内であるブロックBlock1の使用中ページであるページC、E、G、Hが読み出しされる。その読み出し処理の後に、書き込み先物理ブロックであるブロックBlock1に対して消去アクセス処理が行われる。その消去アクセス処理完了後、元々ブロックBlock1に存在したページC、E、G、Hが元のページに書き込みされる(ステップS1302)。
書き込み先物理ページ内のデータが記録されていないページに対して、ステップS1301で処理した書き込みに続いて、ストレージ2の外部からのページL、D、N、Iに対する書き込み要求コマンドが処理される。その結果、その4つの論理ページのデータがブロックBlock1の各ページに記録される。また、アドレス変換部23は、ステップS1301と同様に、ブロックBlock1に書き込まれたページについて、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する(ステップS1303)。
ステップS1303において、書き込み先物理ブロックであるブロックBlock1の不使用ページは、0となる。そこで、ブロックblock2は、ステップS1302と同様の手順で、新たに書き込み先物理ブロックが決定され、新たな書き込みデータが記録できるように処理される。ステップS1303の時点でブロックBlock2、ブロックBlock3の不使用ページ数がそれぞれ6、2であるため、ブロック内不使用ページ数管理部24は、ブロックBlock2を新たに書き込み先物理ブロックとして選択する。書き込み先物理ブロック内の使用中ページであるページK、Mは、読み出しされた後に、ブロックBlock2に対して消去アクセス処理が行われる。その消去アクセス処理の完了後、元々ブロックBlock2に存在したページK、Mが元のページに書き込みされる(ステップS1304)。
書き込み先物理ブロックであるブロックBlock2に対して書き込みが可能になったため、ステップS1303で処理した書き込みに続いて、同様の手順でストレージ2の外部からのページP、B、C、J、H、Lに対する書き込み要求コマンドが処理される。その結果、その6ページがブロックBlock2に記録されて、合計18ページ分の書き込みアクセスが完了する(ステップS1305)。
図18は、本発明による記録方法の第2の実施例を示している。その第2の実施例は、更に書き込みアクセス処理をブロック毎に行っている。すなわち、その第1の実施例が第2の実施例と異なる点は、バッファメモリ部25がブロック内不使用ページ数管理部24から書き込み先物理ブロックを取得する際に、単一のブロックを取得していた点を、全てのページが不使用な単一のブロック、または、不使用ページ数の合計が1つのブロックに含まれるページの数以上になり、尚且つ、最小限の複数のブロックを取得するように、ブロック内不使用ページ数管理部24内のブロック検索部241、及びバッファメモリ部25内のバッファメモリ制御部251が動作する点である。
その第2の実施例では、最初に初期状態から、ページJ、F、B、N、O、P、A、Dの順番で書き込みが行われる。ブロックBlock3の各ページは、初期状態では何も記録されていないため直接書き込みアクセス処理することができる。その8ページがブロックBlock3の各ページに記録される。また、ブロックBlock3に書き込まれたページについて、アドレス変換部23は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する(ステップS1201)。
そのステップS1201において、書き込み先物理ブロック内の不使用ページは、0となる。そのため、新たに書き込み先物理ブロックを指定する必要がある。更に書き込み処理をブロック単位で行うためには、ブロック内に使用中のページが存在しないブロックを用意する必要がある。実施例のステップS1201の段階で、使用中のページ数が0のブロックは記録媒体21内に存在しない。そこで使用中のページ数が0のブロックを新たに作成する。ブロックBlock1、及びブロックBlock2の不使用ページ数、つまり対応する論理ページのデータが更新されたことで、格納されているデータに保存の必要がなくなったページは図15を参照するとそれぞれ4ページである。これらのページの使用中のページをいずれかのブロックに移動することで、使用中のページが存在しない物理ページを書き込み先ブロックとして指定できる。つまりブロックBlock2を書き込み先物理ブロックとして指定するためには、ブロックBlock2内の使用中ページをブロックBlock1に移動する必要がある。そのため最初にブロックBlock1の使用中ページであるC、E、G、H、ブロックBlock2の使用中ページであるI、K、L、M、を読み出しする。その読み出し処理の後に使用中ページの移動先であるブロックBlock1に対して消去を行う。その消去完了後、元々ブロックBlock1に存在したC、E、G、Hを元のページに、ブロックBlock2に存在したページであるI、K、L、Mを消去前は不使用ページだった箇所に書き込みする。同時にアドレス変換部23は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する(ステップS1202)。
そのステップS1202において、書き込み先物理ブロックがブロックBlock2となったため、書き込み先物理ブロックに新たにデータを書き込むために、ブロックBlock2に対して消去を行う。このときページI、K、L、Mについては最新のデータが格納されているが、同じデータがブロックBlock1に書き込まれており、尚且つ論理ページであるI、K、L、M各ページに対応する物理ページはそのステップS1202においてブロックBlock1内のページに変更されているため、消去によってデータが消去されても問題ない(ステップS1203)。
書き込み先物理ブロックであるブロックBlock2に対して書き込みが可能になったため、ステップS1201で処理した書き込みに続いて、ストレージ2の外部からのページL、D、N、I、P、B、C、Jに対する書き込み要求コマンドを処理する。その結果その8論理ページのデータがブロックBlock2の各ページに記録される。またステップS1201と同様にブロックBlock2に書き込まれたページについて、アドレス変換部23は、アドレス物理ページアドレスと論理ページアドレスの対応情報を更新する(ステップS1204)。
そのステップS1201が完了した時点と同様に、書き込み先物理ブロック内の不使用ページは0となる。そこで、ブロックBlock1の不使用ページ数が3、ブロックBlock3の不使用ページ数が5であることから、ブロックBlock3を次の書き込み先物理ページに変更し、そのステップS1202と同様の手順でブロックBlock1に使用中のページのデータを移動する。そのため、ブロックBlock1の使用中ページであるK、E、M、G、H、ブロックBlock3の使用中ページであるF、O、Aに対する読み出しを行い、ブロックBlock1を消去、その合計8ページをブロックBlock1に書き込みする(ステップS1205)。
そのステップS1201が完了した時点と同様に、書き込み先物理ブロック内の不使用ページは0となる。そこで、ブロックBlock1の不使用ページ数が3、ブロックBlock3の不使用ページ数が5であることから、ブロックBlock3を次の書き込み先物理ページに変更し、そのステップS1202と同様の手順でブロックBlock1に使用中のページのデータを移動する。そのため、ブロックBlock1の使用中ページであるK、E、M、G、H、ブロックBlock3の使用中ページであるF、O、Aに対する読み出しを行い、ブロックBlock1を消去、その合計8ページをブロックBlock1に書き込みする(ステップS1205)。
そのステップS1203と同様に、書き込み先物理ブロックであるブロックBlock3に対して消去処理を行う(ステップS1206)。書き込み先物理ブロックであるブロックBlock3に対して書き込みが可能になったため、ステップS1204で処理した書き込みに続いて、同様の手順でストレージ2の外部からのページH、Lに対する書き込み要求コマンドを処理する。その結果その2ページがブロックBlock3に記録されて、合計18ページ分の書き込みアクセスが完了するため、本発明を適用し、尚且つブロック毎に書き込み処理を行った場合の処理を完了する(ステップS1207)。
図19は、比較例と実施例とで示した各処理手順を用いてその18ページ分の書き込み処理を行った場合の、ストレージ2内部での読み出し、書き込み、消去の各操作回数を比較した表を示している。その表121は、第2の比較例であるログ書き込み方式と本発明の第1の実施例と第2の実施例とが、第1の比較例である本発明の未適用の場合と比較すると、記録媒体21に対する読み出し、書き込み、消去の各回数が減少していることを示している。本発明を適用した場合は、第2の比較例であるログ書き込み方式と比べて、更に記録媒体21に対する読み出し、書き込み、消去の回数が減少している。すなわち、本発明による記録方法は、このような比較例に比較して、記録媒体21にデータを書き込むときのIOPS性能を向上させることができる。
比較例の方法では、頻繁なガベージコレクションが発生しない限り、本発明と比べてランダムWriteのIOPS向上効果が大きい。しかしながら、本発明による記録方法では、本発明の第1の実施例と第2の実施例とのように、継続的にランダムライトアクセスが行われたときに、ガベージコレクションが行われないで、そのデータをブロックBlock1〜Block3に記録することができる。すなわち、本発明による記録方法は、比較例の方法に比較して、データ書き込みの処理が単純化され、さらに、結果として、高負荷時にも性能が落ちずに、IOPS性能を安定化することができ、ランダムWriteに対するIOPS性能を向上させることができる。
更に、本発明を適用した場合でも、ブロック単位で不使用箇所を作り書き込みを行う第2の実施例に比較して、不使用ページが多く存在するブロックを直接書き込み先物理ブロックとして使用する第1の実施例が、記録媒体21に対する読み出し、書き込み、消去の回数がより減少している。すなわち、第1の実施例で示した各処理手順は、第2の実施例で示した各処理手順に比較して、記録媒体21にデータを書き込むときのIOPS性能をより向上させることができる。
1 :ホスト
2 :ストレージ
3 :ネットワーク
21 :記録媒体
22 :記録媒体アクセス部
23 :アドレス変換部
24 :ブロック内不使用ページ数管理部
25 :バッファメモリ部
26 :アクセス処理実行制御部
102−1〜102−8:ページ
231:アドレス変換要求処理部
232:論理物理アドレス変換情報格納部
233:物理論理アドレス変換情報格納部
241:ブロック検索部
242:ブロック内不使用ページ情報更新部
243:ブロック内不使用ページ数情報格納部
251:バッファメモリ制御部
252:書き込みデータ用バッファメモリ
253:ブロック情報格納部
255:記録媒体書き込み部
256:バッファ書き込み部
257:消去部
121:効果比較表
2 :ストレージ
3 :ネットワーク
21 :記録媒体
22 :記録媒体アクセス部
23 :アドレス変換部
24 :ブロック内不使用ページ数管理部
25 :バッファメモリ部
26 :アクセス処理実行制御部
102−1〜102−8:ページ
231:アドレス変換要求処理部
232:論理物理アドレス変換情報格納部
233:物理論理アドレス変換情報格納部
241:ブロック検索部
242:ブロック内不使用ページ情報更新部
243:ブロック内不使用ページ数情報格納部
251:バッファメモリ制御部
252:書き込みデータ用バッファメモリ
253:ブロック情報格納部
255:記録媒体書き込み部
256:バッファ書き込み部
257:消去部
121:効果比較表
Claims (17)
- ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに書き込む記録媒体書き込み部と、
前記ブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むバッファ書き込み部と、
前記第2ブロックに記録されているデータを消去する消去部とを具備し、
前記記録媒体書き込み部は、さらに、前記第2データを前記バッファから前記第2ブロックのページに書き込み、
前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示す
ストレージ装置。 - 請求項1において、
前記ブロック群に不使用ページ数群を対応付けるブロック内不使用ページ数管理部をさらに具備し、
前記不使用ページ数群のうちの1つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記1つのブロックに含まれるページの個数を示し、
前記第2ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
ストレージ装置。 - 請求項2において、
前記記録媒体書き込み部は、さらに、前記第2ブロックが有するページのうちの前記第2データが記録されていないページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込む
ストレージ装置。 - 請求項2において、
前記バッファ書き込み部は、さらに、前記ブロック群から前記不使用ページに基づいて選択された第3ブロックに記録された第3データを前記バッファに記録し、
前記消去部は、前記第3データが前記バッファに記録された後に、前記第3ブロックに記録されているデータを消去し、
前記記録媒体書き込み部は、前記第3データを前記バッファから前記第2ブロックに書き込み、
前記第1記録媒体書き込み部は、前記第3ブロックが有するページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込む
ストレージ装置。 - 請求項1〜請求項4のいずれかにおいて、
前記第2データは、前記第1ブロックが有する全てのページにデータが書き込まれた後に、前記バッファに書き込まれる
ストレージ装置。 - 請求項1〜請求項5のいずれかにおいて、
前記記録媒体は、本ストレージ装置と別個に設けられている
ストレージ装置。 - 請求項1〜請求項6のいずれかにおいて、
前記バッファは、本ストレージ装置と別個に設けられている
ストレージ装置。 - 請求項1〜請求項6のいずれかにおいて、
前記バッファは、前記記録媒体に設けられている
ストレージ装置。 - ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに書き込むステップと、
前記ブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、
前記第2ブロックに記録されているデータを消去するステップと、
前記第2データを前記バッファから前記第2ブロックのページに書き込むステップとを具備し、
前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示す
記録方法。 - 請求項9において、
前記ブロック群に不使用ページ数群を対応付けるステップをさらに具備し、
前記不使用ページ数群のうちの1つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記1つのブロックに含まれるページの個数を示し、
前記第2ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
記録方法。 - 請求項10において、
前記第2ブロックが有するページのうちの前記第2データが記録されていないページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込むステップ
をさらに具備する記録方法。 - 請求項10において、
前記ブロック群から前記不使用ページに基づいて選択された第3ブロックに記録された第3データを前記バッファに記録するステップと、
前記第3データが前記バッファに記録された後に、前記第3ブロックに記録されているデータを消去するステップと、
前記第3データを前記バッファから前記第2ブロックに書き込むステップと、
前記第3ブロックが有するページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込むステップ
とをさらに具備する記録方法。 - 請求項9〜請求項12のいずれかにおいて、
前記第2データは、前記第1ブロックが有する全てのページに前記第1データが書き込まれたときに、前記バッファに書き込まれる
記録方法。 - ホストから書き込みが要求された第1データを、記録媒体を構成するブロック群のうち第1ブロックが有するページに書き込むステップと、
前記ブロック群から不使用ページに基づいて選択された第2ブロックに記録された第2データをバッファに書き込むステップと、ここで、前記不使用ページは、データが消去された後にデータが書き込まれていないページを示し、または、他のページに書き込まれたデータに割り当てられた論理アドレスが割り当てられていたデータが書き込まれているページを示し、
前記第2ブロックに記録されているデータを消去するステップと、
前記第2データを前記バッファから前記第2ブロックのページに書き込むステップ
とをコンピュータに実行させるためのコンピュータプログラム。 - 請求項14において、
前記ブロック群に不使用ページ数群を対応付けるステップをさらに前記コンピュータに実行させ、
前記不使用ページ数群のうちの1つのブロックに対応する不使用ページ数は、前記不使用ページのうちの前記1つのブロックに含まれるページの個数を示し、
前記第2ブロックは、前記ブロック群のうちの不使用ページ数が最大であるブロックである
コンピュータプログラム。 - 請求項15において、
前記第2ブロックが有するページのうちの前記第2データが記録されていないページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込むステップ
をさらに前記コンピュータに実行させるコンピュータプログラム。 - 請求項15において、
前記ブロック群から前記不使用ページに基づいて選択された第3ブロックに記録された第3データを前記バッファに記録するステップと、
前記第3データが前記バッファに記録された後に、前記第3ブロックに記録されているデータを消去するステップと、
前記第3データを前記バッファから前記第2ブロックに書き込むステップと、
前記第3ブロックが有するページに、前記ホストから前記第1データの次に書き込みが要求された新規データを書き込むステップ
とをさらに前記コンピュータに実行させるコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009084191A JP2010237907A (ja) | 2009-03-31 | 2009-03-31 | ストレージ装置および記録方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009084191A JP2010237907A (ja) | 2009-03-31 | 2009-03-31 | ストレージ装置および記録方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010237907A true JP2010237907A (ja) | 2010-10-21 |
Family
ID=43092163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009084191A Withdrawn JP2010237907A (ja) | 2009-03-31 | 2009-03-31 | ストレージ装置および記録方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010237907A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014509003A (ja) * | 2011-02-02 | 2014-04-10 | マイクロン テクノロジー, インク. | ブロックオリエンテッド不揮発性メモリにアクセスするための制御配置構成および方法 |
JP2018092654A (ja) * | 2018-02-20 | 2018-06-14 | 株式会社ニコン | 電子機器 |
US10203876B2 (en) | 2013-11-22 | 2019-02-12 | Nec Corporation | Storage medium apparatus, method, and program for storing non-contiguous regions |
WO2020039927A1 (ja) * | 2018-08-21 | 2020-02-27 | ソニー株式会社 | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム |
US10698807B2 (en) | 2016-11-16 | 2020-06-30 | Samsung Electronics Co., Ltd. | Computer system and method of operating the same |
CN112684984A (zh) * | 2020-12-31 | 2021-04-20 | 联想(北京)有限公司 | 一种控制方法和装置 |
-
2009
- 2009-03-31 JP JP2009084191A patent/JP2010237907A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014509003A (ja) * | 2011-02-02 | 2014-04-10 | マイクロン テクノロジー, インク. | ブロックオリエンテッド不揮発性メモリにアクセスするための制御配置構成および方法 |
US10203876B2 (en) | 2013-11-22 | 2019-02-12 | Nec Corporation | Storage medium apparatus, method, and program for storing non-contiguous regions |
US10698807B2 (en) | 2016-11-16 | 2020-06-30 | Samsung Electronics Co., Ltd. | Computer system and method of operating the same |
US10846213B2 (en) | 2016-11-16 | 2020-11-24 | Samsung Electronics Co., Ltd. | Memory device and method of operating the same |
JP2018092654A (ja) * | 2018-02-20 | 2018-06-14 | 株式会社ニコン | 電子機器 |
WO2020039927A1 (ja) * | 2018-08-21 | 2020-02-27 | ソニー株式会社 | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム |
US11615019B2 (en) | 2018-08-21 | 2023-03-28 | Sony Corporation | Non-volatile storage device, host device, and data storage system to increase data write speed |
CN112684984A (zh) * | 2020-12-31 | 2021-04-20 | 联想(北京)有限公司 | 一种控制方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101086857B1 (ko) | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 | |
JP4778942B2 (ja) | 不揮発性メモリを管理する装置及び方法 | |
JP5603997B2 (ja) | ストレージ装置及びデータ制御方法 | |
US7516295B2 (en) | Method of remapping flash memory | |
KR101038167B1 (ko) | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 | |
KR100877448B1 (ko) | 비휘발성 기억 시스템 | |
JP5813589B2 (ja) | メモリシステムおよびその制御方法 | |
JP4768504B2 (ja) | 不揮発性フラッシュメモリを用いる記憶装置 | |
US8645614B2 (en) | Method and apparatus for managing data of flash memory via address mapping | |
KR102252419B1 (ko) | 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법 | |
US8364885B2 (en) | Semiconductor storage system for decreasing page copy frequency and controlling method thereof | |
US8402202B2 (en) | Input/output control method and apparatus optimized for flash memory | |
US20130227198A1 (en) | Flash memory device and electronic device employing thereof | |
US20090132761A1 (en) | Storage management method and system using the same | |
US8825946B2 (en) | Memory system and data writing method | |
JPWO2009096180A1 (ja) | メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム | |
US20120191897A1 (en) | Non-volatile memory system and management method thereof | |
US20100318726A1 (en) | Memory system and memory system managing method | |
JP2010237907A (ja) | ストレージ装置および記録方法 | |
US9804781B2 (en) | Storage media performance management | |
JPWO2009001514A1 (ja) | メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム | |
JP4829202B2 (ja) | 記憶装置及びメモリ制御方法 | |
US10713163B2 (en) | Set aware system data and mapping tables | |
JP5452735B2 (ja) | メモリコントローラ及びメモリアクセス方法 | |
JP5949122B2 (ja) | 制御装置、記憶装置、記憶制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20120605 |