(57)【要約】  本発明は、不揮発性を持ち、書き込みのために消去を必要とする半導体デバイスを記憶媒体として採用したストレージ装置において、上位装置に対して提供する論理記憶空間を論理ページ単位に分割して管理するとともに、半導体デバイスが有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理している。ストレージ装置は、論理ページと仮想アドレス空間上のアドレスとの対応関係を管理するページマッピングテーブルと、仮想アドレス空間上の領域と物理ブロックとの対応関係を管理する仮想アドレス構成情報とを用いることで、各論理ページと半導体デバイスの記憶領域の対応関係を管理する。
2015114754.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと複数のフラッシュメモリチップを備えるフラッシュメモリストレージ装置であって、
前記コントローラは少なくとも、プロセッサ、揮発性メモリで構成されるバッファ、上位装置に接続するためのストレージインターフェイス、前記複数のフラッシュメモリを前記コントローラに接続するためのフラッシュメモリインターフェイスを備え、
前記プロセッサは、前記上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記プロセッサはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係が記録されたページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係が記録された仮想アドレス構成情報とを管理することを特徴とする、フラッシュメモリストレージ装置。
【請求項２】
前記各物理ブロックは、前記フラッシュメモリチップの最小アクセス単位の領域である物理ページを複数有し、
前記論理ページのサイズは、前記物理ページのサイズと等しくないことを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項３】
前記プロセッサは、前記上位装置から前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想空間上アドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項４】
前記プロセッサは、前記上位装置から前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想空間上アドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上アドレスに対応付けられている物理ブロック内の１または複数の物理ページを特定することを特徴とする、請求項２に記載のフラッシュメモリストレージ装置。
【請求項５】
前記プロセッサは、前記上位装置からのライトデータを受け付けると、前記ライトデータを前記バッファに蓄積し、
前記バッファに１物理ページのサイズ以上のデータが蓄積された時、前記バッファに蓄積されたデータを前記物理ページのサイズ毎に、前記物理ページに格納することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項６】
前記プロセッサは、前記仮想アドレス空間にまだ対応付けられていない物理ブロックを管理する空きブロックリストを複数有し、前記各空きブロックリストには、同種の属性を有する物理ブロックの物理ブロック番号が管理されていることを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項７】
前記属性は、物理ブロックの消去回数に関する情報に基づいて算出される指標値である劣化度であって、
第１の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第１の空きブロックリストによって管理され、第２の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第１の空きブロックリストによって管理されており、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記第１、第２の空きブロックリストのうち１つの空きブロックリストを選択して、前記選択された空きブロックリストによって管理されている物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付けることを特徴とする、
請求項６に記載のフラッシュメモリストレージ装置。
【請求項８】
前記属性は、物理ブロックの属するフラッシュメモリチップを特定する属性情報であって、同一の前記属性情報を有する物理ブロックは、同一の前記空きブロックリストによって管理され、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記複数の空きブロックリストの各々から、空き物理ブロックを１つ選択し、前記選択された物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付け、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に対応付けられた複数の物理ブロックに対してデータを格納する際、前記複数の物理ブロックに対して並列に書き込み要求を発行することを特徴とする、
請求項６に記載のフラッシュメモリストレージ装置。
【請求項９】
前記コントローラは、前記上位装置からのライトデータを前記論理ページごとに変換して格納するよう構成されており、
前記コントローラはまた、前記ページマッピングテーブルに、前記変換された論理ページのデータが対応付けられる前記仮想アドレス空間上の範囲の情報を前記論理ページごとに管理することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項１０】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換してバッファに格納した後、前記バッファに格納された変換済データを前記フラッシュメモリチップに書き込むことを特徴とする、
請求項９に記載のフラッシュメモリストレージ装置。
【請求項１１】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換せずバッファに格納した後、前記バッファに格納された前記データを前記フラッシュメモリチップに書き込み、前記フラッシュメモリチップに書き込まれたデータを、別のフラッシュメモリチップへコピーするときに、前記フラッシュメモリチップに書き込まれたデータを変換し、前記変換されたデータを前記別のフラッシュメモリチップへコピーすることを特徴とする、
請求項９に記載のフラッシュメモリストレージ装置。
【請求項１２】
前記フラッシュメモリストレージ装置は、物理ページサイズ特性の異なる２種類以上の物理ブロックを有し、
前記プロセッサは、複数種類の前記仮想アドレス空間を管理しており、
前記それぞれの仮想アドレス空間には、同一の物理ページサイズ特性のみが対応付けられていることを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項１３】
ストレージコントローラと複数のフラッシュメモリストレージ装置を有するストレージシステムであって、
前記フラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備え、
前記コントローラは、前記ストレージコントローラに対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記コントローラはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係を管理するページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係を管理する仮想アドレス構成情報とを有することを特徴とする、ストレージシステム。
【請求項１４】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想空間上アドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１３に記載のストレージシステム。
【請求項１５】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想空間上アドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上アドレスに対応付けられている物理ブロック内の１または複数の物理ページを特定することを特徴とする、請求項１３に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いたストレージ装置とその制御方法に関する。
【背景技術】
【０００２】
不揮発性半導体メモリは、磁気記憶デバイスに比べて省電力・高性能であり、高価格であった。このような不揮発性半導体メモリは、例えばＮＡＮＤ型のフラッシュメモリである。近年は半導体技術の進歩に伴って低価格化が進み、ＨＤＤに替わるメインストリームの記憶デバイスとして注目されてきている。【０００３】
フラッシュメモリにおいて、ブロックは、データの消去単位であり、ページは、データを読み書きする単位の記憶領域である。今後特に断りがない限り、単にブロック／ページと記述した場合はフラッシュメモリのものを指す。後述のように１つのブロック内に複数のページが設けられる。またフラッシュメモリは、特性上、記憶しているデータを直接書き換えることができない。つまり、フラッシュメモリは、記憶しているデータを書き換える場合、記憶している有効なデータを他のブロックに退避させる。次に、フラッシュメモリは、記憶しているデータをブロック単位で消去する。そして、フラッシュメモリは、消去したブロックにデータを書き込む。このように、フラッシュメモリにおけるデータの書き換えは、ブロックごとのデータの消去を伴う。しかし、フラッシュメモリの１ブロック分のデータ消去にかかる時間は、１ページ分のデータを書き込むのに要する時間と比べて約１桁長い。従って、１ページ分のデータの書換えのために毎回１ブロック分のデータ消去を行なうようにすると、フラッシュメモリのデータ書換え性能が低下する。このような問題に対応するため、フラッシュメモリからデータを消去する時間を隠蔽するアルゴリズムを用いてデータをフラッシュメモリへ書き込むことが知られている。【０００４】
通常、フラッシュメモリに対するデータの書換え動作は、未使用領域へデータを追記する方式で行う。しかし、データの書き換え量が増えると、フラッシュメモリ内の未使用領域が少なくなるため、フラッシュメモリに書き込まれている不要なデータを消去して記憶領域を再利用可能な状態にする必要が生ずる。そこで、旧データを含むブロック内の、有効なデータのみを未使用領域にコピーし、コピー元のブロックを消去して再利用可能な状態にするブロック再生処理が知られている。以下、これをリクラメーションと呼ぶ。場合によってはＲＣと省略して表記する。このリクラメーションは、無効データが多くなったブロックを対象に実行することで効率よく空き領域を作成可能である。【０００５】
フラッシュメモリは、使用とともに特性が劣化する。劣化は、セルの消去回数に相関があるとされ、一般的にＳＳＤベンダはデータ保持保証可能な、最大の消去回数を提示している。従って、特定のブロックにデータの書換えが集中し、消去回数が増大して使用不可能となった場合、最悪、他の領域が健全な状態にも関わらず、一部のブロックが書き換え限界に達したために、装置容量を満足できなくなる問題が発生する。そのため、劣化が特定ブロックに集中しないように、各ブロックの消去回数を平準化する技術が知られている。【０００６】
またフラッシュメモリは、一度書き込んだページでも、時間とともに読み出しエラー率が増加する。このように保持しておくだけでも発生するエラーは、リテンションエラーと呼ばれる。これを回避するために、書き込んでから一定時間経過したページを、別ページにコピーする処理が知られている。この処理は、リフレッシュと呼ばれる。場合によってはＲＦと省略して表記する。リフレッシュにおいても、既に述べた平準化の問題や性能影響を考慮する必要がある。【０００７】
以上で述べたデータ消去時間の隠蔽とデータ消去回数の平準化のため、フラッシュストレージは、データ書込みの際に、論理アドレスを物理アドレスへ変換する論理物理アドレス変換処理を行う。フラッシュメモリモジュールは、１つ以上のフラッシュメモリチップと、フラッシュメモリチップに対するデータの読み書きを制御するフラッシュメモリコントローラとを有する。このフラッシュメモリコントローラが、論理物理アドレス変換処理を行なう。さらにフラッシュメモリコントローラは、論理物理アドレス変換処理のための情報を、論理物理アドレス変換テーブルとして保存する。以下、論理物理アドレス変換処理を論物変換、論理物理アドレス変換テーブルを論物変換テーブルと呼ぶことがある。【０００８】
論物変換は、フラッシュメモリを効率的に使用するために重要な役割を有している。低い自由度の論物変換を用いる場合、論物変換テーブルのサイズを抑えられる代わりに、リクラメーションが頻発するなどにより性能が低下する。一方、高い自由度の論物変換を用いる場合、論物変換テーブルのサイズが膨大になるとともに、制御コストが大幅に増大する。【０００９】
上記論物変換方式は、目的とする動作に応じて様々な方式が提案されているが、その中でも広く知られているものとして、上位装置に提供するアドレス空間をフラッシュメモリのページサイズで区切って形成される各論理単位を、フラッシュメモリの各ページに対応付ける方式がある。これは、ページサイズが２ＫＢ（キロバイト）、４ＫＢ、８ＫＢといった、ホストＯＳやファイルシステム又はアプリケーションプログラムからのＩＯパタンによくマッチした格納単位であり最適化がしやすいこと、論理単位とページを１対１対応させることで管理を簡易化できること、また、論理単位のページ跨がりを抑止することで、複数ページリードの頻度を減らすなどの利点がある。この論理単位を論理ページ、フラッシュメモリのページを、これと区別するために物理ページと呼ぶことがある。【００１０】
一方で、論理ページサイズと物理ページサイズが一致しないケースが考えられる。まずは、圧縮などのデータ変換処理により、最終的なサイズが変動する場合である。フラッシュメモリのビットコスト低減は、ＨＤＤの代替を目指す上で大きな目標であり、データ圧縮のフラッシュストレージへの適用は広く行われている。【００１１】
続いて考えられるのは、物理ページ内のＥＣＣ等のデータ保護情報の割合が増加することで、格納できるデータ量が減少する場合である。従来は、物理ページの余剰領域にＥＣＣを格納することで、データ格納領域については２の冪乗サイズを維持していたが、微細化に伴い高いエラー訂正能力が必要となってきており、要求されるＥＣＣサイズも拡大している。【００１２】
また、フラッシュメモリの特性は、全ての物理ページについて均一ではなく、先天的な差もあれば、物理的なロケーションによる違いも存在する。従って、全ての物理ページに対して同じＥＣＣを使用するのではなく、状況に合わせて最適な格納方式を採ることも考えられる。その場合、論理ページと物理ページのサイズ不一致はより顕著となる。【００１３】
論理・物理のページサイズが異なる場合でも、論理ページと物理ページの１対１対応付けを行おうとすると、まず論理ページサイズは物理ページサイズより小さい必要がある。また、複数の論理ページを物理ページに格納できないため、場合によっては無効なデータで物理ページをパディングする必要が出てくるため、格納効率が低下する。【００１４】
一方で、論理ページが物理ページを跨がることを許容する場合、パディングを最小化し、格納効率を上げることができるが、より複雑な管理方式が必要となる。例えば特許文献１では、複数の物理ページに跨がった論理ページをサブブロックに分割し、それぞれの分割された論理ページの格納情報を管理することで、１つの論理ページを複数の物理ページに跨がって格納される態様を許容している。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許第７５２９９０５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１６】
フラッシュメモリにおける物理ページの様に、書き込み単位が存在するデバイスにおいて、論理ページと物理ページのサイズを一致させることは利点が大きい。しかし、圧縮などのデータ変換、デバイスの物理特性に由来するＥＣＣサイズの拡大、などの理由により、論理ページサイズと物理ページサイズが不一致となることを考慮する必要がある。論理ページの物理ページ跨がりを許容しなかった場合、物理ページ中に使用されない領域が増えて格納効率が低下する。一方で跨がりを許容する場合、何らかの形で跨がり情報を保持する必要がある。特許文献１に開示されているように、論理ページ毎に跨がり情報を保持する方法が考えられるが、その場合、それぞれの論理ページ毎に２以上のアドレス情報が必要となり、管理情報サイズの増大を招く。
【課題を解決するための手段】
【００１７】
本発明の一実施形態に係るフラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備える。コントローラは、上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を有している。上位装置から論理ページに対する書き込みがあった場合には、前記仮想アドレス空間上の未使用領域を選択し、この選択した前記仮想アドレス空間上の未使用領域のアドレスと論理ページとの対応関係をページマッピングテーブルに記録する。仮想アドレス空間から領域を選択する際、未使用領域であれば任意の領域を選択することができ、物理ページ境界を意識する必要はない。
【発明の効果】
【００１８】
本発明によれば、書き込み単位を有する記憶デバイスにおいて、書き込み単位とは異なる論理管理単位のデータを、書き込み単位境界を跨いで格納することが可能になり、格納効率が向上する。また、論理管理単位のデータを、書き込み単位境界を跨いで格納しても、管理情報のサイズを増大させることなく、論理管理単位データの記憶デバイス上格納位置の情報を管理することができる。
【図面の簡単な説明】
【００１９】
【図１】図１はストレージシステムの構成図を示す。
【図２】図２はＦＭＰＫＧの構成図を示す。
【図３】図３はフラッシュメモリストレージのメインメモリの内容を示す。
【図４】図４はフラッシュメモリのブロックとページの関係を示す。
【図５】図５は物理ページ内の一般的なデータ格納構成を示す。
【図６】図６は従来のフラッシュストレージで行われている、ページベースの論物変換処理の概要を示す。
【図７】図７はページベースの論物変換テーブルを示す。
【図８】図８は論理ページサイズと物理ページサイズが不一致である場合の格納態様を示す。
【図９】図９は１論理ページが複数物理ページに跨がる場合の格納態様を示す。
【図１０】図１０は本発明の実施例１に係るＦＭＰＫＧで行われる、論理物理変換の概念を示した図である。
【図１１】図１１はページマッピングテーブルの構成を示す。
【図１２】図１２は仮想アドレス構成情報の構成を示す。
【図１３】図１３は本発明の実施例１に係るＦＭＰＫＧにおける、正引き処理のフローを示す。
【図１４】図１４は本発明の実施例１に係るＦＭＰＫＧにおけるライト処理のフローを示す。
【図１５】図１５は本発明の実施例１に係るＦＭＰＫＧにおける、新規グループ構築処理のフローを示す。
【図１６】図１６は本発明の実施例１に係るＦＭＰＫＧにおける、ＲＣ／ＲＦ処理のフローを示す。
【図１７】図１７は、本発明の実施例２におけるページマッピングテーブルの構成を示す。
【図１８】図１８は本発明の実施例２に係るＦＭＰＫＧにおける、正引き処理のフローを示す。
【図１９】図１９は本発明の実施例２に係るＦＭＰＫＧにおけるライト処理のフローを示す。
【図２０】図２０は本発明の実施例２に係るＦＭＰＫＧにおける、ＲＣ／ＲＦ処理のフローを示す。
【図２１】図２１は、物理ページサイズが異なるブロックの存在するデバイスで仮想アドレスグループを構成する例を示す。
【図２２】図２２は、本発明の実施例３に係るＦＭＰＫＧにおける仮想アドレス構成情報の構成を示す。
【図２３】図２３は本発明の実施例３に係るＦＭＰＫＧにおける、正引き処理のフローを示す。
【図２４】図２４は本発明の実施例３に係るＦＭＰＫＧにおける、新規グループ構築処理のフローを示す。
【発明を実施するための形態】
【００２０】
以下、本発明のいくつかの実施例を、図面を用いて説明する。なお、これらの実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
【００２１】
なお、以後の説明では「ａａａテーブル」、「ａａａリスト」等の表現にて本発明の情報を表記している箇所があるが、これら情報はテーブル、キュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」、「ａａａキュー」、「ａａａリスト」等について「ａａａ情報」と呼ぶことがある。
【００２２】
以後の説明では「プログラム」を主語として説明を行う場合もあるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、これは実際にはプロセッサが動作主体となって所定の処理を実行していることを表している。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
【００２３】
また、各図において共通の構成物については、同一の参照番号を付して説明する。また、共通の構成物に関し、各構成物を識別する場合には、９９９ａ、９９９ｂなど、数字の最後に英文字を付すか、又は、＃１、＃２等の個別の番号を付して説明する。ただし、必要に応じて英文字又は番号を省略して説明する場合がある。
【００２４】
また、本明細書に記載の各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって提供されるようにしてもよい。
【００２５】
本発明は、以下の実施例に限定されない。以下の実施例における不揮発性メモリは、ＦＭ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）である。本実施例におけるＦＭは、ブロック単位で消去が行われ、ページ単位でリード及びライトが行われる種類のＦＭ、典型的にはＮＡＮＤ型のフラッシュメモリである。しかし、ＦＭは、ＮＡＮＤ型に代えて他種のフラッシュメモリ（例えばＮＯＲ型）でも良い。また、ＦＭに代えて、他種の不揮発性メモリ、例えば、磁気抵抗メモリであるＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や、抵抗変化型メモリであるＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、強誘電体メモリであるＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の半導体メモリや、相変化メモリが使用されても良い。
【実施例１】
【００２６】
図１は、本発明の実施例１に係る計算機システムの構成を示す。【００２７】
計算機システムは、ストレージシステム（ストレージ装置）１０１と、１つ以上のホスト計算機（図中では「ホスト」と略記する）１０３と、管理端末１０４とを有する。ホスト計算機１０３ａ、１０３ｂのそれぞれは、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０５を介して、ストレージシステム１０１に接続される。【００２８】
ストレージシステム１０１は、ストレージコントローラ１０２と、不揮発メモリ記憶装置である複数のフラッシュメモリストレージ装置１１２とを有する。なお、図面及び以下の説明では、フラッシュメモリストレージ装置をＦＭＰＫＧ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｐａｃｋａｇｅ）と呼ぶことがある。また、本実施例では、ストレージコントローラ１０２は１つであるが、複数のストレージコントローラ１０２で冗長構成されても良い。【００２９】
ストレージコントローラ１０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０８と、メモリ１０９と、複数のホストインターフェイス（以下、「ホストＩＦ」と略記する）１０７と複数のドライブインターフェイス（以下、「ドライブＩＦ」と略記する）１１０と、保守インターフェイス（以下、「保守ＩＦ」と略記する）１０６とを有する。ストレージコントローラ１０２内の各部は、バスを介して接続される。メモリ１０９は、ストレージシステム１０１を制御するためのプログラムを格納する領域及びデータを一時的に格納するキャッシュメモリとしての領域を有する。ＣＰＵ１０８は、メモリ１０９に格納されたプログラムに従ってストレージシステム１０１を制御する。【００３０】
ホストＩＦ１０７は、計算機１０３との通信を行うためのインターフェイスである。ドライブＩＦ１１０は、ストレージコントローラ１０２とＦＭＰＫＧ１１２との通信を行うためのインターフェイスである。保守ＩＦ１０６は、管理端末１０４と接続され管理端末１０４との通信を行うためのインターフェイスである。【００３１】
なお、管理者は、管理端末１０４からストレージコントローラ１０２の管理やメンテナンスを行う。しかし、管理端末１０４は必須要素ではなく、ストレージコントローラ１０２の管理やメンテナンスなどを、例えば、ホスト計算機１０３から行うようにすることも可能である。【００３２】
上記の計算機のシステムでは、ホスト計算機１０３とＦＭＰＫＧ１１２とが、ストレージコントローラ１０２を介して接続されているが、例えば、ストレージコントローラ１０２を省き、ホスト計算機１０３とＦＭＰＫＧ１１２とが直接接続されても良い。【００３３】
以下、ＦＭＰＫＧ１１２の構成を説明する。なお、各ＦＭＰＫＧ１１２の基本的な構成は同じである。【００３４】
図２は、ＦＭＰＫＧ１１２の構成を示す。【００３５】
ＦＭＰＫＧ１１２は、フラッシュメモリ制御装置２０１と１つ以上のフラッシュメモリチップ（ＦＭチップとも呼ばれる。また図中では「ＦＭ  Ｃｈｉｐ」と表記）２０９ａ〜ｈにより構成される。また、先に述べたとおり、ＦＭチップに代えて他種の不揮発性メモリ素子を用いることも可能である。【００３６】
フラッシュメモリ制御装置２０１は、図１におけるストレージコントローラ１０２あるいはホスト計算機１０３のように、ＦＭＰＫＧ１１２に対してデータアクセス要求を発行する上位装置（以下、ストレージコントローラ１０２またはホスト計算機１０３を、「上位装置１０２」と呼ぶ）とＦＭＰＫＧ１１２とを接続するためのストレージインターフェイス２０２、ＡＳＩＣ２０３、バッファ２０４、非常時に給電を行うバッテリ２０５、ＣＰＵ２０６、メインメモリ２０７、フラッシュメモリとの接続を行うフラッシュメモリインターフェイス２０８により構成される。【００３７】
ＣＰＵ２０６は、フラッシュメモリ制御装置２０１の全体を制御するプロセッサであり、メインメモリ２０７に格納されたマイクロプログラムに基づき動作する。例えば、受領したＩ／Ｏに対して、メインメモリ２０７に格納してある論物変換テーブルを参照してフラッシュメモリチップ２０９にデータを読み書きする。また、フラッシュメモリの使用状況に応じて、リクラメーションやウェアレベリングを実施する。【００３８】
ＡＳＩＣ２０３は、ＣＰＵ２０６によって制御され、フラッシュメモリチップ２０９に対してデータの読み書きを実施する。また、フラッシュメモリチップ２０９に対するものと同様にストレージインターフェイス２０２を通じて上位装置との通信を制御する。【００３９】
本図では、ＡＳＩＣ２０３に対してＣＰＵ２０６は外付けとなっているが、ＡＳＩＣ２０３は、ＣＰＵ２０６や、ストレージインターフェイス２０２、フラッシュメモリインターフェイス２０８を含む１つのＬＳＩで構成されていてもよい。【００４０】
メインメモリ２０７とバッファ２０４は、より高速なアクセスが可能な、揮発性の記憶領域であり、例えばＤＲＡＭである。メインメモリ２０７はＣＰＵ２０６が直接制御に用いるワークスペースであり、バッファ２０４より短いレイテンシを提供する。一方、バッファ２０４は、ユーザデータのバッファ用や、メインメモリ２０７に格納しきれない大サイズテーブルを格納する。【００４１】
本図では、メインメモリ２０７とバッファ２０４は分離した構成物としているが、これらを１つの記憶素子で実現してもよい。【００４２】
ストレージインターフェイス２０２は、上位装置とフラッシュメモリ制御装置２０１を接続し、通信を行う。このインターフェイスには、例えばＳＡＴＡやＳＡＳ、ＦＣなどのストレージインターフェイスが採用されてもよいし、ＰＣＩ-Ｅｘｐｒｅｓｓなどのインターフェイスが採用されてもよい。【００４３】
フラッシュメモリ制御装置２０１の内部アーキテクチャは必ずしも図の通りである必要は無く、それぞれの機能を１つないしは複数のデバイスによって代用してもよい。【００４４】
図３は、ＦＭＰＫＧ１１２のメインメモリ２０７に格納される情報の一例を示す。【００４５】
メインメモリ２０７は、例えば、オペレーティングシステム３０３、フラッシュストレージ制御プログラム３０２、データ転送制御部制御プログラム３０１、入出力制御部制御プログラム３０４、論物変換プログラム３０６及び論物変換情報３０５を記憶する。【００４６】
オペレーティングシステム３０３は、ＣＰＵ２０６が各プログラムを実行する際のスケジューリング等の基本処理を行うプログラムである。【００４７】
フラッシュストレージ制御プログラム３０２は、フラッシュメモリ制御装置２０１が上位装置へ提供するボリューム（あるいはボリュームの記憶空間）の管理や、バッファメモリの管理など、フラッシュメモリ制御装置２０１がストレージデバイスとして動作するための制御に用いるプログラムである。【００４８】
データ転送制御部制御プログラム３０１は、ＡＳＩＣ２０３の制御に用いるプログラムである。【００４９】
入出力制御部制御プログラム３０４は、ストレージインターフェイス２０２、フラッシュメモリインターフェイス２０８の制御に用いるプログラムである。【００５０】
論物変換プログラム３０６は、上位装置１０２から発行された入出力要求（Ｉ／Ｏ要求）に含まれている論理アドレスを、フラッシュメモリ上の物理位置である物理アドレスに変換するプログラムである。なお、本実施例で言う「論理アドレス」は、例えば、ＬＢＡ(Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ)で良い。また「物理アドレス」とは、例えばＦＭＰＫＧ１１２内の物理ページ及び／または物理ブロックを一意に識別するアドレス（ページ番号、ブロック番号）のことである。【００５１】
論物変換情報３０５は、論物変換プログラム３０６が動作する際に使用する変換のための情報である。【００５２】
図４は、フラッシュメモリチップ２０９の内部構成を示す。【００５３】
フラッシュメモリチップ２０９は、内部に複数のダイ（ＤＩＥ）４０１ａ〜ｂ、フラッシュメモリ制御装置２０１から発行されたフラッシュメモリＩ／Ｏコマンドの対象データを一時的に格納するページバッファ４０２ａ〜ｂを持つ。そして各ダイ４０１は、実際の記憶領域である、１つ以上（たとえば１２８個、２５６個など）の物理ブロック４０３ａ〜ｃを有する。【００５４】
物理ブロック４０３は、フラッシュメモリにおける消去単位である。物理ブロック４０３は、１つ以上の物理ページ４０４ａ〜ｃにより構成される。物理ページはフラッシュメモリにおける書き込み・読み込み単位である。【００５５】
書き込みとは、消去済みの物理ページに対するデータの書き込みであり、読み込みとは物理ページに書き込まれたデータを読み取ることである。原則として、書き込みが行われた物理ページに再度書き込みを行うことはできず、物理ページに再度書き込みを行う場合には、一度、当該物理ページを含む物理ブロック４０３単位で消去を実施する必要がある。消去処理により、物理ブロック４０３に含まれる物理ページ４０４に格納されたデータは消去され、再び書き込みが可能となる。１つの物理ページのみを消去することは出来ない。書き込み・読み込み・消去などのコマンドは、フラッシュメモリチップ２０９とフラッシュメモリ制御装置２０１を接続するフラッシュメモリインターフェイス２０８から受領する。【００５６】
図５は物理ページ４０４内の一般的なデータ格納構成を示す。【００５７】
Ｃｏｄｅ  Ｗｏｒｄ(ＣＷ)５０１は、データ５０２と、それを保護するＥＣＣ５０３の１セットであり、エラー訂正単位である。物理ページには１つ以上のＣＷが存在する。物理ページは一般的に、２の冪乗のバイト数分の領域に加えて余剰の領域を保持しており、この余剰領域にＥＣＣやメタ情報を格納する。ここではメタ情報は特に無いものとして記述するが、存在したとしても特に問題無い。ＥＣＣサイズは、チップに要求される信頼性レベルに応じてサイズが決まるため、１物理ページ内に必ずしも２の冪乗分のデータ領域サイズが確保できないこともある。以降、物理ページサイズといった場合、元のＦＭの物理ページのサイズからＥＣＣやメタ情報を格納する領域を含まない、ユーザデータを格納する領域のサイズを指す。【００５８】
図６は、従来からあるフラッシュストレージで行われている、ページベースの論物変換処理の概要を示している。図中の要素６００は、フラッシュストレージが上位装置に対して提供するボリュームの記憶空間を表しており、上位装置がフラッシュストレージの記憶領域にアクセスする際の最小アクセス単位である各セクタ（図中の要素６０１）に、０番から始まるアドレスが付されており、そのアドレスのことを論理ブロックアドレス（ＬＢＡ）と呼ぶ。一般に、１セクタのサイズは５１２バイトであるが、その他の大きさ（たとえば５２０バイト）でもよい。またフラッシュストレージは、フラッシュストレージが上位装置に対して提供する記憶空間を先頭から所定サイズ（たとえば図６に示した例では１６セクタ）ごとに分割し、分割された各領域を「論理ページ」（図中の要素６０２）として管理している。また、図６において、ブロックＸ（６０３）中のページＹ（６０４）は、物理ページを表している。【００５９】
従来からあるフラッシュストレージでは、全ての論理ページ６０２、全ての物理ページ６０４のサイズは固定サイズで（図６の場合、１６セクタ、つまり８ＫＢ）、また論理ページ６０２と物理ページ６０４のサイズは等しい。従って、１つの論理ページ６０２は任意の１つの物理ページ６０４に一意に対応づけられ、その対応関係についての情報を論物変換テーブル７０１にて管理する。ある論理ページ６０２への書き込みを行う場合、新規に未使用の物理ページ６０４が取得され、当該論理ページ６０２の更新データをその未使用物理ページ６０４へ書き込み、対応付けを更新する。論理ページ６０２からの参照が外れた旧物理ページ６０４は、無効なページとして登録され、リクラメーションによって回収・消去され、空きページとして再利用される。【００６０】
図７は、ページベース論物変換のための論物変換テーブル７０１の構成の一例を示している。このテーブルは従来からあるフラッシュストレージが通常有するテーブルである。【００６１】
論物変換テーブル７０１は、各論理ページ６０２に対応する物理ページ６０４のアドレスを管理するテーブルで、各論理ページ６０２の論理ページ番号（７０２）と、当該論理ページ番号７０２の論理ページ６０２が対応付けられている物理ページ６０４のアドレス（格納アドレス）７０３を保持している。たとえばフラッシュストレージが上位装置に対して、Ｎ論理ページ分の大きさの記憶空間を提供している場合、Ｎ個のエントリが存在する。論理ページ６０２の格納先が、異なる物理ページ６０４に変更された場合、このテーブルの格納アドレス７０３の情報が更新される。【００６２】
次に、図８、図９を用いて、論理ページサイズが物理ページサイズと異なる場合の問題点について説明する。図８のＣａｓｅ１は、論理ページサイズが物理ページサイズの１／２の場合の例を示しており、Ｃａｓｅ２は、論理ページサイズが物理ページサイズの１／２よりも大きい例を示している。【００６３】
図８のＣａｓｅ１のように、論理ページサイズが物理ページサイズの１／２の場合、あるいは１／４、１／８のように、２の冪乗分の１のサイズであれば、１物理ページ中に複数の論理ページがちょうど格納される。そのため、論理ページサイズが物理ページサイズの２の冪乗分の１のサイズである場合は、物理ページを論理ページサイズと等サイズの領域（仮にこれを「スロット」と呼ぶ）に分割して管理し、図７を用いて説明した論物管理テーブルでは、各論理ページの論理ページ番号と、物理ページ上のスロットとの対応関係を管理するように変更するだけで対応可能である。しかしながら図８のＣａｓｅ２のように、論理ページサイズが物理ページサイズの２の冪乗分の１のサイズと等しくない場合は、必ず物理ページ上に、１つの論理ページが収納しきれない領域（無効領域）ができる。論理ページを２つ以上の物理ページに対応づけない格納形態を採用する場合、それらの領域は無効とするしかない。この無効領域が大きいほど、格納効率は低下し、ビットコストの悪化につながる（ビットコストが高くなる）。【００６４】
図９は、１つの論理ページが複数の物理ページに跨がって格納される場合の、データ格納構成を示す。【００６５】
先に説明したとおり、論理ページサイズと物理ページサイズが異なる場合、物理ページ上に１論理ページを収納しきれない無効領域ができる。物理ページに無効領域ができないようにするために、１つの論理ページを複数の物理ページに跨って格納される態様を許す方法が考えられるが、そのようにすると、以下のような問題がある。論理ページは、１つの物理ページ内に収まる場合（図９の論理ページ９０１の場合）もあれば、２つ以上の物理ページに跨がって格納される場合（図９の論理ページ９０２の場合）もある。論理ページに対する物理ページのアドレスを管理する場合、論理ページ（ＬＰ＝０）９０１は単一物理ページに収まっているため、論理ページ９０１について、当該論理ページの格納されている物理ページのアドレス及び当該物理ページ内オフセット位置の情報を持てば良い。一方で論理ページ（ＬＰ＝１）９０２は２つの物理ページ９０３ａ、９０３ｂに跨がっているため、論理ページに対する物理ページのアドレスを管理する場合、論理ページ（ＬＰ＝１）９０２の前半（たとえば論理ページの０バイト目からａバイト目まで）は物理ページ９０３ａの一部（ｘバイト目から終端まで）に格納され、また論理ページ（ＬＰ＝１）９０２の後半（たとえば論理ページのａ＋１バイト目から終端まで）は物理ページ９０３ｂの一部（０バイト目からｙバイト目まで）に格納される、という情報を管理する必要がある。つまり１論理ページの情報を管理するために、論理ページと物理ページの対応を管理するための情報（論物変換テーブル）に２エントリを登録する必要があるため、論物変換テーブルのサイズが大きくなる。【００６６】
続いて、本発明の実施例１に係るＦＭＰＫＧ１１２における、論理ページと物理ページの対応関係の管理方法について説明する。なお、本発明の実施例１に係るＦＭＰＫＧ１１２において、各論理ページのサイズは等しく、また各物理ページのサイズも等しい。ただし論理ページのサイズと物理ページのサイズは一致していない（論理ページのサイズと物理ページのサイズが一致している場合であっても、本発明の実施例に記載のＦＭＰＫＧ１１２は動作可能であるが、以下では論理ページのサイズと物理ページのサイズは一致していないという環境であるという前提で説明する）。【００６７】
図１０は、ＦＭＰＫＧ１１２が実施する論理物理変換の概念を表している。ＦＭＰＫＧ１１２の実施する論理物理変換は、図６、７を用いて説明したページベース論物変換の概念に、仮想アドレス空間の概念を組み込んだものである。なお、図１０では図示を省略しているが、図６と同様、ＦＭＰＫＧ１１２は上位装置に対してアドレス０から始まる論理ブロックアドレス（ＬＢＡ）でアドレッシングされた一次元の論理記憶空間（図６の６００相当物）を提供し、この一次元の論理空間を先頭から所定サイズ（たとえば１６セクタ）ごとに分割し、分割された各領域を論理ページとして管理している。つまり一次元の論理記憶空間の論理ブロックアドレス（ＬＢＡ）の０番地から１５番地までの領域は、論理ページ番号（ＬＰ）が０の論理ページ１００１ａに対応付けられ、以下順に、一次元の論理記憶空間のＬＢＡが１６番地から３１番地の領域が、論理ページ番号（ＬＰ）が１の論理ページ１００１ｂに、一次元の論理記憶空間のＬＢＡが３２番地から４７番地の領域が、論理ページ番号（ＬＰ）が２の論理ページに対応付けられている。なお、論理ページのサイズは任意であるが、後述するようにＦＭＰＫＧ１１２は論理ページ単位で更新を行う（論理ページ未満のサイズのデータのライト要求が来た場合でも、当該データを含む論理ページ全体を書き換える）ため、上位装置、たとえばホスト計算機１０３で稼働するＯＳやファイルシステムやアプリケーションプログラムが発行するＩ／Ｏ要求で指定されるデータサイズ（たとえば４ＫＢや８ＫＢ）等を選択するのが好ましい。【００６８】
本発明の実施例１に係るＦＭＰＫＧ１１２では、論理ページと物理ページとの対応を直接管理するわけではなく、各論理ページ（１００１ａ、１００１ｂ、…）は、ＦＭＰＫＧ１１２内でのみ用いられる１次元のアドレス空間である、仮想アドレス空間１００３上のアドレスに対応付けられている。この論理ページと仮想アドレス空間１００３上アドレスとの対応関係についての情報は、後述するページマッピングテーブル１００２（図１１）を用いて管理される。仮想アドレス空間１００３は、物理ページ境界を意識させない一次元の線形なアドレス空間であり、ＦＭＰＫＧ１１２はこの仮想アドレス空間１００３を構成する情報を、後述する仮想アドレス構成情報１００７（図１２）を用いて管理している。なお、仮想アドレス空間１００３が、物理ページ境界を意識させないアドレス空間である、とは、論理ページを仮想アドレス空間１００３に対応付ける場合、論理ページが物理ページを跨って格納されないように対応付ける等の考慮をせずに、単純に、仮想アドレス空間上の任意の空き領域（論理ページがまだ対応付けられていない仮想アドレス空間上の領域）に論理ページを対応付ければよいことを意味する。【００６９】
仮想アドレス空間１００３はＦＭＰＫＧ１１２内に１つだけ定義される態様に限定されるわけではなく、複数存在し得る。仮想アドレス空間が複数存在する場合、本明細書では、それぞれの仮想アドレス空間を仮想アドレスグループ１００４と呼ぶ（以下、仮想アドレスグループのことを単にグループと呼ぶこともある）。また、それぞれのグループに１つの仮想アドレス構成情報１００７が対応づけられている。グループが複数存在する場合、各論理ページはどのグループのアドレスに対応づけられてもよい。【００７０】
仮想アドレス空間１００３は、ＦＭの物理ブロック１００８と同サイズに分割され、各分割された領域は、「仮想ブロック１００６」と呼ばれる。各仮想ブロック１００６には、仮想アドレスグループ１００４内で一意な識別番号（仮想ブロック番号と呼ぶ）が付されている。仮想アドレスグループ１００４内の先頭の仮想ブロック（図１０の１００６ａ）には、０番の仮想ブロック番号が付されており、以下、２番目以降の領域には順に、１番、２番…の仮想ブロック番号が付されている。【００７１】
また、それぞれの仮想ブロック１００６は、ＦＭ上の物理ブロック１００８（図４の４０３に相当する）へ１：１にマップされる。このマッピング情報は仮想アドレス構成情報１００７に管理される。これにより、仮想アドレス空間１００３には、複数の物理ブロックがマッピングされることになる。【００７２】
ここからわかるとおり、たとえば図１０の物理ページ１００９ａと１００９ｂが同一の仮想アドレス空間の構成物であるという情報は、ページ毎ではなく、ブロック単位で持つことになる。これにより、論理ページ毎に物理ページ間の関係を保持する必要は無くなるため、管理情報を大幅に減らすことができる。ただし、１論理ページのデータがグループを跨がって格納されることは許容されないため、グループの最終アドレス付近では、バウンダリを合わせるためにユーザデータを格納しない領域が発生する。これらの領域は、無効な領域としても良いし、何かの管理情報を格納する領域として利用しても良い。【００７３】
仮想アドレス空間を構成する要素として、上では物理ブロックを前提としたが、物理ページより大きな物理アドレス構成要素であれば、管理情報を減らすという目標は実現可能である。ただし、消去単位である物理ブロックと対応づけることは、管理上のメリットが大きい。例えば、ある物理ブロックを消去する際に、これが複数のグループから共有されている場合、それぞれのグループについてコピー処理を実施する必要がある。他にも、従来物理ブロックを単位に実施してきた処理を、グループ単位に拡張する場合、物理ブロックはグループ間で共有されるべきではない。以降、グループ構成要素としては、物理ブロックを想定して記述する。【００７４】
図１１は、実施例１に係るＦＭＰＫＧ１１２が管理するページマッピングテーブル１００２の構成を表している。ページマッピングテーブル１００２は、１つのＦＭＰＫＧ１１２に一つ定義されるテーブルで、論理ページと仮想アドレス空間１００３上のアドレス（以下、仮想アドレス空間上のアドレスのことを「仮想アドレス」とよぶ）との対応付けを管理するものである。またページマッピングテーブル１００２は、メインメモリ２０７の論物変換情報３０５を構成する１つの情報である。論理ページ毎に設定される仮想アドレスは、仮想アドレスグループ番号（グループ＃）１１０２とグループ内のオフセットアドレス１１０３とで構成される。オフセットアドレス１１０３には、グループ＃１１０２で特定されるグループの先頭セクタのアドレスを０とした相対アドレスが格納される。各論理ページが初期状態、つまり論理ページにデータが書き込まれていない場合、グループ＃１１０２及びオフセットアドレス１１０３には値が格納されていない。論理ページに対するデータの書き込み要求を上位装置から受け付けると、ＦＭＰＫＧ１１２は当該論理ページに対応付けるべき仮想アドレス空間上の未書き込み領域アドレス（グループ番号及びグループ内オフセットアドレス）を決定し、グループ＃１１０２及びオフセットアドレス１１０３に値を格納する。また、論理ページ上のデータが更新（上書き）される時にも同様に、仮想アドレス空間上の未書き込み領域のアドレス（グループ番号及びグループ内オフセットアドレス）を決定し、グループ＃１１０２及びオフセットアドレス１１０３に値を格納する。【００７５】
なお、本発明の実施例においては、オフセットアドレス１１０３の単位はセクタとしているが、その他の単位を用いても良い。たとえば１論理ページのサイズを１単位としたアドレスをオフセットアドレス１１０３に格納するようにしても良い。また、先に述べたとおり、論理ページがグループを跨がることは許容されないため、１つの論理ページ（論理ページ１１０１で特定される論理ページ）が、複数のグループに対応付けられることはない。そのため、ページマッピングテーブル１００２には、ＦＭＰＫＧ１１２で管理する論理ページの数と同数の行（エントリ）のみが存在する。【００７６】
図１２は、実施例１に係るＦＭＰＫＧ１１２が管理する仮想アドレス構成情報１００７の構成を表している。この情報もページマッピングテーブル１００２と同様、メインメモリ２０７の論物変換情報３０５を構成する１つの情報である。【００７７】
仮想アドレス構成情報１００７は、仮想アドレスグループ（グループ１２０１）毎に、次の書き込み位置を保持するポインタである次書き込み位置１２０２（なお、本発明の実施例では、単位はセクタとするが、その他の単位を用いてもよい）と、対応するグループの仮想アドレス空間を構成する複数の物理ブロックの物理ブロック番号（物理ブロック＃）１２０４を保持する。本発明の実施例に係るＦＭＰＫＧ１１２では、ＦＭＰＫＧ内の各物理ブロックについて、ＦＭＰＫＧ内で一意な識別番号を付して管理しており、この識別番号を物理ブロック番号と呼ぶ。物理ブロック番号１２０４の欄には、この物理ブロック番号が格納される。また物理ブロック番号１２０４は、１グループ内にＮ個が登録され、各グループの先頭に登録されている物理ブロック番号は、０番の仮想ブロック番号（１２０３）に対応付けられており、それ以降の各物理ブロックは順に、１番、２番…の仮想ブロック番号（１２０３）に対応付けられている。仮想アドレスグループを構成する物理ブロック数Ｎの大きさによって、仮想アドレスグループ内のアドレス空間の大きさが定まる。【００７８】
次書き込み位置１２０２は、対応する仮想アドレスグループ１２０１の先頭未書き込み位置を表す情報である。詳細は後述するが、本発明の実施例に係るＦＭＰＫＧでは、上位装置１０２からのライトデータを仮想アドレスグループ（に対応付けられた物理ブロック・物理ページ）に書き込む際、グループ内の未書き込み領域の先頭から順に、追記書きの要領で書き込む。またＦＭＰＫＧが、物理ブロック（内の物理ページ）にデータを書き込む際にも、物理ブロック中の未書き込みの先頭ページから順に書き込んでいく（たとえば当該物理ブロックに全くデータが書き込まれていない場合、先頭ページはページ番号０番のページであり、以下１番、２番…のページへと、順番に書き込みを行う）。そして物理ブロック内全物理ページにデータが書き込まれるまでは、次の物理ブロックの物理ページへのデータ書き込みは行わない。そのため、次書き込み位置１２０２より前のアドレスで特定される仮想アドレス空間には、すでにデータが格納され論理ページにマッピングされた領域であることを意味し、次書き込み位置１２０２以降のアドレスで特定される空間は、未使用領域、つまりデータがまだ書き込まれておらず、論理ページにもマッピングされていない領域であることを表している。初期状態では次書き込み位置１２０２の値は０で、ライト処理によってたとえばｎセクタの値が書き込まれると、次書き込み位置１２０２に値ｎが加算される。仮想アドレスグループの終端物理ページ（の近く）までデータが書き込まれると、それ以上当該仮想アドレスグループにデータを書き込むことができないため、次書き込み位置１２０２には、データが書き込めないことを表す値（Ｎ／Ａ）を格納する。【００７９】
また、仮想アドレス構成情報１００７の中には、次書き込み位置１２０２に、０以上の値（つまりＮ／Ａでない値が格納されている）が格納されていて、書き込み可能になっているグループが１つだけ存在する。上位装置からのライトデータを格納する際には、原則としてそのグループに対してデータを書き込む。以下ではそのグループのことを、「オープンされたグループ」または「オープングループ」と呼ぶ。そして、オープンされたグループにデータを書き込む領域がなくなった時点で、新たにグループを構築する。新たにグループを構築する際に、グループを構成する物理ブロック（複数）を選択し、物理ブロック番号１２０４の欄に物理ブロック番号を格納する。ただし、オープングループを複数設けておき、ＦＭＰＫＧ１１２がデータを物理ページに書き込む際に任意のオープングループを選択して書き込むようにしてもよい。【００８０】
また、本発明の実施例１における仮想アドレス構成情報１００７では、グループごとに無効ページ数１２０５、最終書き込み時刻１２０６の情報を保持している。無効ページ数１２０５は、グループ内の物理ページのうち、データの書き換えが発生したために無効になったページの数が格納され、また最終書き込み時刻１２０６には、当該グループに最後にデータが書き込まれた時刻が格納される。これらの情報は、リクラメーション（本明細書ではＲＣと略記されることもある）あるいはリフレッシュ（本明細書では、ＲＦと略記されることもある）処理で用いられる。本発明の実施例１に係るＦＭＰＫＧ１１２では、これら情報をグループごとに管理しているが、物理ブロック毎など、その他の単位で管理してもよい。また、ＲＣ、ＲＦ処理などの用途のために、無効ページ数１２０５、最終書き込み時刻１２０６以外の情報を管理するようにしても良い。【００８１】
続いて図１３を用いて、本発明の実施例１に係るＦＭＰＫＧ１１２が実行する、論理アドレスから物理アドレスへの変換処理（正引き処理ｓ１３０１）のフローを説明する。正引き処理ｓ１３０１は、ＣＰＵ２０６が実行しているフラッシュストレージ制御プログラム３０２が、たとえば上位装置からリード要求等のアクセス要求を受信した時に、当該アクセス要求でアクセス対象となるデータの物理格納位置（物理ページ）を算出するために実行される。この場合、フラッシュストレージ制御プログラム３０２が論物変換プログラム３０６を呼び出して、ＣＰＵ２０６に正引き処理ｓ１３０１を実行させ、論物変換プログラム３０６は正引き処理ｓ１３０１の処理の結果、算出された物理アドレス情報（物理ブロック番号と、当該物理ブロック番号で特定される物理ブロック内物理ページ番号の組）を要求元であるフラッシュストレージ制御プログラム３０２に返却する。以下では、リード要求で指定されるアクセス対象データの先頭位置は論理ページ境界と一致しており、かつアクセス対象データのサイズが１論理ページサイズと等しい場合、つまり１論理ページ分の領域の物理位置の算出処理について説明するが、それ以外の場合でも同様の処理を行うことで、アクセス対象データの物理格納位置の算出ができる。【００８２】
まずＣＰＵ２０６は、処理対象のコマンドに含まれる、アクセス対象データのアドレス（ＬＢＡ）の情報から、アクセス対象となる論理ページの論理ページ番号を算出する（ｓ１３０２）。これはアクセス対象データのＬＢＡを論理ページサイズで除算することで算出される。続いてＣＰＵ２０６は、ページマッピングテーブル１００２を参照して、論理ページ１１０１がｓ１３０２で算出した論理ページ番号に一致する行（エントリ）を特定し（ｓ１３０３）、当該行のグループ番号１１０２と、グループ内のオフセットアドレス１１０３を取得する（ｓ１３０４）。【００８３】
続いてＣＰＵ２０６は、ｓ１３０４で取得したオフセットアドレス１１０３から、仮想ブロック番号と、仮想ブロック内のオフセットアドレス（仮想ブロックの先頭位置のアドレスを０とした相対アドレス）を計算する（ｓ１３０５）。なお、ｓ１３０５では、ｓ１３０４で取得したオフセットアドレス１１０３を物理ブロックサイズ（１物理ページのサイズ×１物理ブロック内ページ数）で除算し、このときの商を仮想ブロック番号とし、剰余を仮想ブロック内のオフセットアドレスとする。そしてｓ１３０６では、ＣＰＵ２０６は仮想アドレス構成情報１００７を参照し、グループ１２０１がｓ１３０４で取得したグループ番号と等しく、かつ仮想ブロック番号１２０３がｓ１３０５で算出した仮想ブロック番号と等しい行を参照し、対応する物理ブロック番号（物理ブロック＃１２０４）を取得する。ｓ１３０６で取得した物理ブロック番号で特定される物理ブロックの中に、アクセス対象データが存在することが分かる。【００８４】
ｓ１３０７ではＣＰＵ２０６は、ｓ１３０５で算出した仮想ブロック内オフセットアドレスを物理ページサイズで除算することで、ｓ１３０６で取得した物理ブロック番号で特定される物理ブロック内の相対ページ番号（物理ブロック内先頭ページの番号を０としたページ番号）を割り出し、上位装置からのアクセス要求に含まれるアドレスが対応する物理ページ（アクセス対象データの格納されている先頭の物理ページ）の物理ページ番号を算出する。また、本発明の実施例に係るＦＭＰＫＧ１１２の場合、１つの論理ページが複数の物理ページに跨って格納される場合があるので、ｓ１３０５で算出した仮想ブロック内オフセットアドレスに「論理ページサイズ−１」を加算した値を物理ページサイズで除算し、アクセス対象データの格納されている終端物理ページの物理ページ番号を算出し、算出された先頭物理ページ及び終端物理ページの物理アドレス（物理ブロック番号と物理ページ番号の組）を要求元に返却することで、処理を終了する（ただし先頭物理ページと終端物理ページの物理番号が同一の場合には、１つの論理ページが１物理ページに収まっていることを意味するので、その場合には１つの物理ページ番号のみが要求元に返却される）。物理アドレスを受け取った要求元は、例えば要求元が行っていた処理がリード処理だった場合には、受け取った物理アドレスに該当する物理ページからデータを読み出し、上位装置に返却する等の処理を行う。【００８５】
続いて、ＦＭＰＫＧ１１２が上位装置１０２からのライトデータを、ＦＭチップの物理ページに格納する処理（ライト処理）の流れについて説明する。仮に、ライトデータを論理ページ単位で書き込むことを想定した場合、ライト処理の流れの概略は以下の通りになる。ＦＭＰＫＧ１１２が論理ページに対するライト要求及びライトデータを受信すると、仮想アドレス構成情報１００７を用いて未書き込み領域（まだ論理ページが対応付けられていない仮想アドレス空間上の領域）のアドレス（グループ番号及びグループ内オフセットアドレス）を決定し、当該決定された領域のアドレス情報をページマッピングテーブルのグループ１１０２及びオフセットアドレス１１０３の欄に登録する。そして決定された未書き込み領域のアドレスに対応する１または複数の物理ページを特定し、その特定された物理ページに対してライトデータを格納すればよい。【００８６】
本発明の実施例に係るＦＭＰＫＧ１１２では、基本的には上記の流れで処理を行えば、論理ページ単位でライトデータを物理ページに格納することは可能である。ただしＦＭチップへのデータ書き込み最小単位はページ（物理ページ）である、という制約があるため、上記の流れの処理では物理ページに無効領域が発生することがある。実際のライト処理では、物理ページに無効領域が発生しないように、複数の論理ページのデータをＦＭＰＫＧ１１２内のバッファ２０４に蓄積してから、まとめて１または複数の物理ページに書き込む。そのため上記の説明とはやや異なった順で処理が行われる。【００８７】
図１４を用いて、ＦＭＰＫＧ１１２が上位装置１０２からライト要求を受信した時に実行する、ライト処理ｓ１４０１の流れを説明する。この処理は、ＣＰＵ２０６がメインメモリ２０７内のフラッシュストレージ制御プログラム３０２や論物変換プログラム３０６を実行することによって実現される。なお、以下では主に、上位装置１０２から、ライト対象データの先頭アドレスと終端アドレスが論理ページのページ境界に合致するデータのライト要求を受信した場合について説明する。【００８８】
ライトコマンド処理ｓ１４０１は、上位装置からのライト要求に対する処理である。まずＣＰＵ２０６は、ライトコマンドをｓ１４０２で取得する。なお、ｓ１４０２で取得するライトコマンドには、ライトデータの格納位置（ライトアドレス。通常はＬＢＡが指定されている）及びライトデータ長（セクタ数）が含まれている。【００８９】
ｓ１４０３では、ＣＰＵ２０６はバッファ２０４にライトデータを格納する。その際、ライトアドレス及びライトデータ長から、ライトデータの格納される論理ページの論理ページ番号を算出し（なお、ライトデータ長が複数ページ分の長さの場合、変換によって導出される論理ページ番号は複数ある）、バッファにライトデータを、この変換処理により導出された論理ページ番号とともに格納する。このようにライトデータを論理ページ番号と対応付けて格納しておくことで、バッファ上ライトデータがＦＭに書き込まれる前に、上位装置からリード・ライト要求が到来したときには、バッファ２０４に格納されたデータに対するリード、ライトを行うことで、上位装置からの要求を処理することが出来る。バッファ２０４にライトデータを格納した後、ＣＰＵ２０６は上位装置へ完了通知を行う（ｓ１４０４）。上位装置への完了通知は、ＦＭにデータを格納する前に行ってよい。【００９０】
続いて、ｓ１４０５で、ＣＰＵ２０６はバッファ２０４上に一定以上の量のデータが存在するか確認し、存在した場合には、バッファ２０４上のデータをＦＭの物理ページへ書き込む処理を行う。本発明のＦＭＰＫＧ１１２では、論理ページが複数の物理ページに跨がって格納されることを許容しているが、一方でＦＭの最小書き込み単位は、物理ページである。そのため、論理ページ単位、あるいは物理ページ単位で、ＦＭへ書き込みを行おうとすると、論理ページの全体または断片が物理ページの一部にのみ書き込まれ、物理ページのそれ以外の領域が無効領域になる事態が発生する。無効領域が極力発生しないようにするために、本発明の実施例における書き込み処理では、ある程度多くの量のデータをまとめてＦＭに書き込むようにする。好ましくは、物理ページサイズと論理ページサイズの公倍数に等しいサイズのデータがバッファに蓄積された時点で、ＦＭに書き込みを行うとよい（たとえば論理ページサイズが８ＫＢ、物理ページサイズ[先に述べたとおり、ここでいう「物理ページサイズ」とは、ＥＣＣ等の付加情報を除く、上位装置から到来したデータを書き込む領域のサイズである]が７ＫＢの場合、８と７の最小公倍数である５６ＫＢあるいは５６ＫＢの倍数に等しい量のデータがバッファに蓄積された時点で、ＦＭへの書き込みを行うと、無効領域が発生しないため、記憶領域を有効に活用できる書き込みが実現される）。【００９１】
ｓ１４０６では、ＣＰＵ２０６はオープングループのグループ番号を取得する。オープングループとは、先に述べたとおり、書き込み可能になっているグループのことを意味する。続いてｓ１４０７でＣＰＵ２０６は、取得されたオープングループ内の、次書き込み位置１２０２及び今回ＦＭに書き込むデータ量を元にして、書き込み先物理ブロックの物理ブロック番号１２０４及び物理ブロック内ページ番号を算出する。物理ブロック番号１２０４及び物理ブロック内ページ番号の算出方法であるが、次書き込み位置１２０２を「１物理ブロック内物理ページ数×物理ページサイズ（物理ページサイズの単位はセクタ数）」で除算することで、データ書き込み対象となる先頭物理ブロックの仮想ブロック番号が算出でき、また仮想アドレス構成情報１００７を参照することで、算出された仮想ブロック番号に対応する物理ブロック番号１２０４を特定できる。また次書き込み位置１２０２を「１物理ブロック内物理ページ数×物理ページサイズ」で除算したときの剰余を求めることで、今回の書き込み先となる物理ブロック内ページの先頭ページ番号（先頭物理ページ番号）を取得できる。さらに今回ＦＭに書き込むデータ量が複数物理ページ分にわたる場合、必要とされる物理ページ数分のページ番号を連番で取得する（物理ページを５ページ分取得する必要があり、かつ今回の書き込み先となる物理ブロック内ページの先頭物理ページ番号が３の場合、ページ番号３、４、５、６、７のページ番号を取得する）。【００９２】
ｓ１４０８ではＣＰＵ２０６は、バッファ上のデータを、ｓ１４０７で取得した物理アドレス（書き込み先物理ブロックの物理ブロック番号１２０４及び物理ブロック内ページ番号）で特定される物理ページに順次書き込む。この時、無効領域が発生しないように、バッファ上の複数論理ページ分のデータを連続して物理ページに書き込む（たとえば図９のように）。なお、物理ページに格納された各データについて、当該データの格納された物理ページ位置に対応する仮想アドレス空間上のアドレス（グループ番号、グループ内オフセットアドレス）を算出し（データの格納された物理ページの物理ブロック番号、物理ページ番号、物理ページ内オフセット位置と、仮想アドレス構成情報１００７とから算出可能である）、それを各データの論理ページ番号（バッファ上に記憶されている）と対応付けて一時的に記憶しておく。これはｓ１４０９の管理情報の更新で必要となる。その後ｓ１４０９で、ＣＰＵ２０６はページマッピングテーブル１００２等の管理情報の更新を行う。この際、ｓ１４０８で一時的に記憶しておいた情報（各データの記憶された仮想アドレス空間上のアドレス、及び当該データの論理ページ番号の情報）を用いて、今回物理ページへの書き込み対象となった論理ページ（１１０１）に対応するグループ＃１１０２、オフセットアドレス１１０３を更新する。さらに仮想アドレス構成情報１００７の次書き込み位置１２０２を更新する（次書き込み位置１２０２に、今回書き込まれたデータ量（セクタ数）を加算する）。【００９３】
ｓ１４０８でのフラッシュチップ内物理ページへの書き込みは、上位装置からのライト要求に対して非同期で実施されること、また一定量のデータをまとめて物理ページへ書き込むことを想定している。これは、物理ページが書き込み単位であり、かつ論理ページが物理ページを跨がることを想定した場合、効率よく、かつ管理を楽にするために有効である。さらに、バッファが充分大きく、複数物理ブロック分のデータを蓄積できる場合、複数物理ブロック分のデータが蓄積されるまでバッファにデータを格納し、複数の物理ブロックに対して並列にデータを書き込むように制御し、アクセス性能をより向上させる方法もあり得る。この場合、仮想アドレス構成情報１００７において、グループ１２０１内に登録される複数の物理ブロックを、それぞれ異なるＦＭチップ２０９から選択するとよい。たとえばグループ構築処理（後述）において、仮想ブロック＃１２０３が０番、１番、２番、３番に対応付けられる物理ブロックがそれぞれ、図２のＦＭチップ２０９ａ、２０９ｂ、２０９ｅ、２０９ｆ内の物理ブロックになるように、仮想アドレス構成情報１００７を設定し、４物理ブロック分のデータをまとめてＦＭチップに格納する際には、ＦＭチップ２０９ａ、２０９ｂ、２０９ｅ、２０９ｆに対して、並列にライト要求を発行すると、単一のＦＭチップ２０９に対してライト要求を発行する場合に比べて、性能が向上する。【００９４】
一方で、必ずしも上で述べたように、複数ページをまとめてＦＭへ格納する方式を採る必要は無く、例えば１物理ページ単位でデータをＦＭに格納する方式を採ってもよい。その場合、ＦＭに格納した物理ページに論理ページが跨がっている場合は、論理ページの一部領域が物理ページに格納されず、バッファに残されることがあるが、バッファに残された論理ページの論理ページ番号、論理ページ内オフセットアドレスの情報をバッファ上に残されたデータとともに管理しておき、他の論理ページの書き込み処理（図１４の処理）が行われるときに、あわせてバッファに残された論理ページの一部のデータを物理ページに書き込むようにすればよい（もちろん、先にＦＭに格納された論理ページの前半部と、今回書き込まれる論理ページの後半部が、仮想アドレス空間上で連続するように書き込む必要がある）。【００９５】
また、上で述べた方式は、いわゆるライトバック方式である。従って、停電等の障害が発生した場合に、揮発メモリ（バッファ等）上に格納されているライトデータを退避させることができるように、キャパシタやバッテリなどによる、非常時の給電システムが必要である。【００９６】
最後にｓ１４１０で、ＣＰＵ２０６は今回の書き込みの結果、オープングループの空き領域が枯渇した（次書き込み位置１２０２が、１グループ内物理ページ数を超過した）かどうかを判定し、枯渇した場合は、今回書き込みを行ったグループ（オープングループ）について、仮想アドレス構成情報１００７の次書き込み位置１２０２の値をＮ／Ａにすることで、今回書き込みを行ったグループを非オープングループに変更し、その後新規グループの構築を行って（ｓ１４１１）、処理を終了する。ｓ１４１１の処理については、後述する。【００９７】
なお、上の説明では、ライトデータの格納位置が論理ページのページ境界に合致している場合について説明したが、上位装置１０２から、論理ページのページ境界に合致しないライト要求、たとえば１論理ページサイズに満たないサイズのデータのライト要求を受け付けたときには、ｓ１４０２とｓ１４０３の間に、ＦＭチップからライト対象データを含む１論理ページ（または複数論理ページ）分のデータをバッファに読み出し、バッファ上に読み出された１または複数論理ページ分のデータに対してライト対象データを上書きし、上書きされた１または複数論理ページ分のデータを、ｓ１４０４以降の処理を実施することでＦＭへライトする。つまり、論理ページ境界に合致しないサイズのデータのライト要求を受け付けたときは、当該データを含む論理ページ全体のリードモディファイドライト（ｒｅａｄ  ｍｏｄｉｆｉｅｄ  ｗｒｉｔｅ）を行って、論理ページ全体を書き換える。これは、ページマッピングテーブル１００２で、論理ページ単位で情報を管理しているため、論理ページ内の一部領域のみの更新であっても、論理ページ全体を書き換える必要があるためである。ただし、この処理は、従来からあるフラッシュストレージでも同様であり、このような処理を行ったからといって、従来からあるフラッシュストレージに比べて性能が悪化するわけではない（同等である）。また論理ページサイズを、上位装置（たとえばホスト計算機１０３）で稼働するプログラム（ＯＳ、ファイルシステム、アプリケーションプログラム）が発行するＩ／Ｏ要求で指定されるデータサイズ（たとえば４ＫＢや８ＫＢ）と同サイズにしておけば、論理ページのページ境界に合致していないライト要求が来ることは少ない。【００９８】
続いて図１５を用いて、図１４のｓ１４１１で行われる、新規グループ構築処理ｓ１５０１のフローを説明する。【００９９】
新規グループ構築処理ｓ１５０１は、オープングループの空きページが無くなり、次の書き込み先グループが必要となったときに実施される。従って、グループをオープングループにする処理と同義である。まずＣＰＵ２０６は、仮想アドレス構成情報１００７の中から、物理ブロックの登録されていない未使用のグループ番号を取得する（ｓ１５０２）。続いてＣＰＵ２０６は、消去済みの空きブロックリストを取得し、その中から１つのグループを構成するために必要となる数の物理ブロック番号を取得する（ｓ１５０３,ｓ１５０４）。最後にｓ１５０５で、ＣＰＵ２０６はこれらの物理ブロック番号を仮想アドレス構成情報１００７に登録し、次書き込み位置１２０２に値０を設定することにより今回作成した新規グループをオープングループとし、新規グループ構築処理を終了する。【０１００】
空きブロックリストは、消去済み物理ブロックの、物理ブロック番号が登録されているリストである。空きブロックリストは最低限、ＦＭＰＫＧ１１２内に１つ用意されていれば良いが、用途に応じて適切な物理ブロックを選択できるように、複数の空きブロックリストを設け、各空きブロックリストに同種の属性・特性を有する空き物理ブロックの物理ブロック番号を登録しておくようにしても良い。【０１０１】
例えば物理ブロックは、その消去回数などの要因によって、徐々に寿命が短くなる（劣化する）。そこで、各物理ブロックについて、消去回数に関する情報などに基づく、劣化度合いを示す指標値を算出して管理し（以下ではこの、消去回数に関する情報等に基づいて算出される指標値を「劣化度」と呼ぶ）、所定範囲の劣化度を有する空きブロックを集めた空きブロックリストを複数設け（たとえば劣化度が０から１までの値（小数）で定義される指標値で、値が小さいほど劣化度合いが少ない（寿命が長い）物理ブロックであるとすると、劣化度０〜０．５の値を有する（寿命が長い）空き物理ブロックを管理する空きブロックリストと、劣化度０．５を超える値を有する（寿命が短い）空き物理ブロックを管理する空きブロックリストの２つを設けるなど）、新規グループ構築処理を実行する際に、一つの空きブロックリストを選択し、選択された１つの空きブロックリストから空き物理ブロックを複数選択して（これにより、選択される物理ブロックはいずれも所定範囲内の劣化度を有する物理ブロックになる）、新規構築されるグループに登録するようにしてもよい。空きブロックリストが複数ある場合の選択方法は、上位装置からあらかじめ劣化度の範囲を指定され、ＦＭＰＫＧ１１２は上位装置から指定された劣化度の範囲の物理ブロックを管理する空きブロックリストを選択する方法、あるいはＦＭＰＫＧ１１２がＩ／Ｏ状態や稼働時間等の情報をもとに自動的に選択する方法などがあり得、いずれの方法をとってもよい。【０１０２】
また、先に述べたとおり、ＦＭへのデータライト時の並列書き込みを可能にするために、ＦＭチップ２０９やダイ（ＤＩＥ）４０１などの物理的に異なる単位毎に空きブロックリストを設け（つまり、各空きブロックリストでは、同一のＦＭチップ２０９、あるいは同一ダイ４０１内の空き物理ブロックが管理される）、新規グループ構成時にそれぞれの空きブロックリストから順に空き物理ブロックを１つずつ取得してグループに登録するようにしても良い。これにより、１つのグループには、複数のＦＭチップ２０９あるいは複数のダイ４０１内の物理ブロックが登録されることになり、ＦＭへのデータライト時の並列書き込みが可能になる。【０１０３】
続いて図１６を用いて、本発明の実施例１に係るＦＭＰＫＧ１１２が実行する、グループ単位リクラメーション（ＲＣ）／リフレッシュ（ＲＦ）処理ｓ１６０１のフローを説明する。【０１０４】
ＲＣとＲＦは、それぞれ目的は異なるが、ブロック内の有効なデータを他のブロックにコピーしてコピー元のブロックを消去する処理である。本発明の実施例１に係るＦＭＰＫＧ１１２では、グループ単位でＲＣ／ＲＦ処理を実施する。これは、グループ内の１つのブロックのみを消去すると、消去対象ブロックに隣接しているブロックに跨がった論理ページもコピーする必要があるためである。ただし、１つのブロックずつＲＣ／ＲＦを実施するようにしてもよい。【０１０５】
ＣＰＵ２０６はまず、ｓ１６０２で対象とするグループを取得する。ＲＣ／ＲＦの対象を選択するのは、例えばＲＣに関して言えばコピー量がなるべく減るように、仮想アドレス構成情報１００７で管理されている無効ページ数１２０５を参照し、有効データの最も少ないグループ（無効ページ数１２０５がもっとも大きいグループ）から優先的にグループを選択する。ＲＦでは、たとえば最終書き込み時刻１２０６を参照し、書き込んでからの時間経過が長いページを優先的に選択する。あるいは各グループについて、信頼性に関する情報を管理するようにし、信頼性に問題のあるグループを選ぶようにしても良い。なお、原則としてここではオープングループは選択しない。【０１０６】
ｓ１６０３では、書き込み先のグループが選択される。書き込み先としては、オープングループが選択される。ただし、例えばウェアレベリングを考慮して、ＩＯ頻度に適したグループを選択する、あるいは新規構築するようにしても良い。ｓ１６０４でＣＰＵ２０６は、ＲＣ／ＲＦ対象グループ（ｓ１６０２で選択されたグループ）内に有効データが存在するか判定を行い、存在する場合は、有効データの一部をｓ１６０５でバッファ２０４上にコピーする。バッファ２０４上にコピーされたデータについて、ＣＰＵ２０６は、図１４で説明したライト処理中のｓ１４１２（ｓ１４０５〜ｓ１４１１までの処理）と同様の処理を行うことで、ＦＭへと書き込む。ただし、ｓ１４１２の処理を行う場合、ｓ１４０６では、ｓ１６０３で選択したグループがオープングループとして取得される。【０１０７】
ＣＰＵ２０６は、ｓ１６０４、ｓ１６０５、ｓ１４１２の処理を、ＲＣ／ＲＦ対象グループ内の有効データが無くなるまで実施する。ＲＣ／ＲＦ対象グループ内の全ての有効データがコピーされ、ＲＣ／ＲＦ対象グループ内の有効データが無くなったら、ＣＰＵ２０６は、ＲＣ／ＲＦ対象グループに登録されている全物理ブロックについて消去処理を行い、仮想アドレス構成情報１００７から、当該グループの情報を削除する（ｓ１６１０、ｓ１６１１）。消去されたブロックは空きブロックリストに追加される。【０１０８】
以上が、本発明の実施例１に係るＦＭＰＫＧ１１２についての説明である。本発明の実施例１に係るＦＭＰＫＧ１１２の特徴は、論理ページサイズと物理ページサイズとが一致しない場合でも、管理情報の量が過剰に増加しない点にある。論理ページサイズと物理ページサイズとが等しくない場合、図９で説明したように、１つの論理ページが複数の物理ページに跨がって格納される場合が発生する。この場合、１論理ページについて、論理ページの前半部が格納される物理ページの情報、及び論理ページの後半部が格納される物理ページの情報という、２つの情報を管理する必要がある。そのため、たとえばほぼすべての論理ページが２物理ページに跨って格納される場合、論理ページと物理ページとの対応関係を管理する情報の量は、１論理ページが１物理ページ内に収まる場合に比べて２倍必要となる。【０１０９】
一方、本発明の実施例１に係るＦＭＰＫＧ１１２の場合、論理ページと物理ページとの対応関係を管理する代わりに、論理ページを、仮想アドレス空間という１次元アドレス空間に対応付け、ページマッピングテーブルを用いて論理ページと仮想アドレス空間との対応関係を管理する。ページマッピングテーブルには、１論理ページの位置を表現する情報は１エントリしか格納されないため、ページマッピングテーブルのサイズは、従来のフラッシュストレージ（論理ページと物理ページのサイズが等しい）における論物変換テーブルと同様のサイズしか必要としないため、ほぼすべての論理ページが２物理ページに跨って格納される場合でも、管理情報のサイズが増加しない。【０１１０】
もちろん、実施例１にて説明したとおり、本発明の実施例１に係るＦＭＰＫＧ１１２ではページマッピングテーブルに加え、仮想アドレス空間と物理ブロックとの対応関係を管理する仮想アドレス構成情報を管理する必要があるが、仮想アドレス構成情報のサイズは、論物変換テーブルに比べて極めて小さい。なぜならば、論物変換テーブルには、ページ毎の情報が格納されるため、論物変換テーブルのサイズは、ページ数に比例する。一方仮想アドレス構成情報は、物理ブロック毎の情報が格納されるため、物理ブロック数に比例したサイズを有する。そして１物理ブロックには、たとえば１２８個あるいは２５６個のページを含んでいる（将来はもっと多くのページが格納される）ので、ＦＭＰＫＧ１１２内の物理ブロック数は、物理ページ数の１２８分の１あるいは２５６分の１しかない。そのため、仮想アドレス構成情報のサイズは、論物変換テーブルの１／１００以下と、極めて小さなサイズとなるため、仮想アドレス構成情報を持つことは、それほど管理情報を増加させることにはならない。
【実施例２】
【０１１１】
次に、実施例２について説明する。以下の説明では、実施例１との違いを重点的に説明する。従って、実施例１と同じ構成及び処理については、説明を省略または簡略する場合がある。【０１１２】
実施例２におけるストレージシステム及びＦＭＰＫＧの基本的な構成は、実施例１に係るストレージシステム１０１、ＦＭＰＫＧ１１２とほとんど同じであるため、図示を省略する。ただし、実施例２におけるＦＭＰＫＧは、上位装置からのライトデータを圧縮する機能及び／または暗号化する機能を備える点が、実施例１に係るＦＭＰＫＧ１１２と相違する。この機能は、図２のＣＰＵ２０６あるいはＡＳＩＣ２０３で実施される態様でもよいし、あるいは圧縮または暗号化用の専用ハードウェアが設けられる態様もありえる。また、実施例２に係るＦＭＰＫＧでは、ライトデータを変換（たとえば圧縮、暗号化）して格納するが、格納されたデータが読み出される場合には、データが逆変換（圧縮データの伸長、あるいは暗号化されたデータの復号化）されて上位装置に渡されるため、ストレージシステムやホスト計算機からは、実施例１に係るＦＭＰＫＧ１１２と同じ装置としてみえる。そのため、実施例２に係るストレージシステムの構成は、実施例１におけるものと同じである。【０１１３】
実施例１においては、論理ページが物理ページを跨がるという点以外には限定をおいていなかったが、本実施例は、特に論理ページの格納時のデータサイズが変動する場合の処理方式について述べる。これは、データ圧縮や暗号化などのデータ変換が加わるためである。この場合、各論理ページのフラッシュでの格納状況はより複雑となる。【０１１４】
図１７は、実施例２におけるページマッピングテーブル１７００の内容を示す。【０１１５】
実施例１と同じく、実施例２に係るＦＭＰＫＧでは、上位装置に対して一次元の論理記憶空間（図６の６００相当物）を提供し、この一次元の論理空間を先頭から所定サイズ（たとえば１６セクタ）ごとに分割し、分割された各領域を論理ページとして管理している。実施例１と異なる点は、圧縮・暗号化などのデータ変換を行う点だが、データ変換はこの論理ページごとに行われる。つまり１論理ページ未満のサイズのデータを変換（たとえば圧縮）したり、論理ページ境界を跨いで存在するデータを変換（圧縮）する、ということは行わない。【０１１６】
ページマッピングテーブル１７００が、実施例１のページマッピングテーブル１００２と異なるのは、ページマッピングテーブル１７００内の各エントリについて、データの長さを表すレングス１７０５の項目が加えられている点である。各論理ページはデータ変換によりサイズが変動するため、変換後の論理ページのデータのサイズをこのエントリで管理する。レングス１７０５の項目に格納される数値の単位は、例えばセクタ（５１２バイトあるいは５２０バイト）であるが、その他の単位（バイトなど）を用いてもよい。つまり、ページマッピングテーブル１７００では、変換（たとえば圧縮）後の論理ページのデータが対応付けられる仮想アドレス空間上の範囲の情報を、論理ページ毎に管理している。【０１１７】
また、実施例２に係るＦＭＰＫＧでも実施例１と同様に、仮想アドレス構成情報を管理するが、その内容は実施例１に係る仮想アドレス構成情報１００７と同じであるため、ここでは説明しない。【０１１８】
図１８は、実施例２に係るＦＭＰＫＧが実行する、論理アドレスから物理アドレスへの変換処理（正引き処理）のフローを示す。実施例１における正引き処理と同じく、上位装置からリード要求を受け付けた場合に行われる論理アドレスの物理ページ番号への変換処理で、かつリード要求で指定されるアクセス対象データの先頭位置は論理ページ境界と一致しており、アクセス対象データのサイズが論理ページサイズと等しい場合、つまり１論理ページ分の領域の物理位置の算出処理について説明する。【０１１９】
実施例１の正引きフロー（図１３）と異なるのは、図１３のｓ１３０４の処理（グループ番号とグループ内オフセットアドレスの取得処理）がｓ１８０２に代わっている点、及び図１３のｓ１３０７の処理が、ｓ１８０３に代わっている点である。ｓ１８０２では、ＦＭＰＫＧのＣＰＵは、ページマッピングテーブル１７００の中から、該当する論理ページのグループ番号１７０３、グループ内オフセットアドレス１７０４に加え、レングス１７０５を取得する。グループ番号とオフセットアドレスにより、当該論理ページが格納されている仮想アドレス空間上の先頭アドレスは取得できるため、ｓ１３０５〜ｓ１３０６の処理は実施例２でも実施例１と同様に行われる。【０１２０】
そしてｓ１８０３では、ＣＰＵはアクセス対象データの先頭物理ページ番号及び終端物理ページ番号を算出する。先頭物理ページ番号の算出処理は、実施例１のものと同じであるが、アクセス対象データの終端物理ページ番号の算出処理の際には、１論理ページのサイズを用いることに代えて、レングス１７０５の情報を用いて終端物理ページ番号を算出する点が、実施例１のものと相違する。その他の処理は実施例１で説明した処理と同様である。【０１２１】
図１９は、実施例２におけるＦＭＰＫＧが上位装置からライト要求を受信した時に実行する処理の流れを示している。図１４の説明と同様、ここでも、ライトデータの格納位置が論理ページのページ境界に合致しているケースを中心に説明する。【０１２２】
実施例１のライト処理（図１４の処理）と異なるのは、まずｓ１４０２〜ｓ１４０４の処理によってバッファに格納された、上位装置から受領したデータに対して変換処理が施される（ｓ１９０２）点である（これにより、バッファに格納されていた変換前のデータは、変換後データに置き換わる）。変換処理は先に述べたとおり、ＦＭＰＫＧのＣＰＵが行うようにしても良いし、あるいはＣＰＵが専用のハードウェアに実施させてもよい。またｓ１９０２の後に行われるｓ１９０３で、ＣＰＵは変換後のサイズでバッファ上のデータ量をチェックし、バッファ上のデータ量（変換後のデータのサイズ）が所定サイズ以上であると判定されるとフラッシュへのライトを開始する、そして管理情報更新（ｓ１４０９）の際には、レングス１７０５の情報更新を行う点が、実施例１の図１４の処理と異なる。それ以外の点は実施例１と同様である。【０１２３】
なお、実施例２の変形として、ＦＭＰＫＧが上位装置から受信したライトデータをＦＭに格納する時にはデータ変換を行わず（図１９の処理の実行時にｓ１９０２の処理を行わない）、ＲＣ／ＲＦ処理の際に、圧縮などのデータ変換を行う方法もある。その場合のＲＣ／ＲＦ処理の流れを、図２０に示す。【０１２４】
図２０の処理が実施例１の図１６の処理と異なる点は、データをバッファにコピーする際（実施例１の図１６のｓ１６０５）に、図２０の処理では、ＣＰＵ（あるいは専用ハードウェア）がデータ変換を実施し、変換されたデータをバッファに格納する点である（ｓ２００２）。それ以外の点は、実施例１のＲＣ／ＲＦ処理と同じである。【０１２５】
以上で、実施例２に係るＦＭＰＫＧについての説明を終了する。実施例２に係るＦＭＰＫＧで管理する管理情報は、実施例１におけるものと同様に、ページマッピングテーブル１７００及び仮想アドレス構成情報である。ページマッピングテーブル１７００は、実施例１におけるものと比べると、データの長さ（レングス）の情報を保持する必要があるものの、実施例１の場合と同様に、ページマッピングテーブルには、１論理ページの位置を表現する情報は１エントリ分しか格納する必要がないため、管理情報の量はそれほど増加しない。【０１２６】
また、実施例１に係るＦＭＰＫＧでは、全ての論理ページサイズが同一であったため、管理情報サイズを小さくするための一つの方法として、論理ページサイズを物理ページサイズと同一にするという方法を採ることが可能である。一方、実施例２に係るＦＭＰＫＧのように、格納データに対してデータ圧縮や暗号化などのデータ変換を行う場合、データ内容に依存してデータサイズが変動する。そのため、全ての論理ページサイズを物理ページサイズと同一にするという方法を採ることができないので、データ格納効率を上げたい場合、１つの論理ページが複数の物理ページに跨って格納されることを許容する構成にせざるを得ない。上で説明した実施例２の方法を用いることで、データ変換によって格納されるデータのサイズが変動する場合であっても、少ない管理情報で、論理ページと物理格納位置の関係を管理することができる。
【実施例３】
【０１２７】
次に、実施例３を説明する。以下の説明では、実施例１との違いを重点的に説明し、実施例１と同じ構成及び処理については、説明を省略または簡略する場合がある。【０１２８】
実施例１、２においては、個々の物理ページのサイズは固定であったが、本実施例では、物理ページサイズが一定でない場合を述べる。ただし完全に自由なサイズを採るのではなく、１つのＦＭＰＫＧ内に、数パタンの物理ページが存在する。これは、例えば物理ページ毎に最適なＥＣＣサイズを適用するような方式が考えられる。【０１２９】
図２１は、物理ページサイズが異なるブロックの存在するデバイスで仮想アドレスグループ（及び仮想アドレス空間）を構成する例を示したものである。【０１３０】
デバイス中に、物理ページサイズ特性の異なる２種類以上の物理ブロックがあり、それぞれの種類の物理ブロックを用いて仮想アドレスグループ（グループ）を構成する。ここで「物理ページサイズ特性」とは、１物理ブロック内の物理ページサイズがすべて同じであるという特性、あるいは物理ページサイズの異なる物理ページが同一物理ブロック内に複数種類存在し、それらが特定のパタンで分布している（たとえば各物理ブロックについて、ページ番号０〜ｎ間の物理ページの物理ページサイズは７ＫＢで、ページ番号（ｎ＋１）〜（ｎ＋ｍ）の物理ページは、物理ページサイズが８ＫＢである）等のように、物理ブロック内の各物理ページのページサイズの傾向・分布のことを意味する。【０１３１】
図２１の例では、ある物理ページサイズ特性を持つ物理ブロックの種別（ｔｙｐｅ）をｔｙｐｅ  Ａとし、またｔｙｐｅ  Ａとは異なる物理ページサイズ特性を持つ物理ブロックの種別をｔｙｐｅ  Ｂとする。実施例３に係るＦＭＰＫＧでは、ｔｙｐｅ  Ａの種別の物理ブロック（２１０２）のみが登録された仮想アドレスグループ２１０１ａ、及びｔｙｐｅ  Ｂの種別の物理ブロック（２１０３）のみが登録された仮想アドレスグループ２１０１ｂを構成している。もちろん、これ以外の仮想アドレスグループを構成してもよい。【０１３２】
同一種別のブロックでグループを構成するのは、グループでブロックの特性をそろえることで寿命管理を容易にできる点、またグループ内のオフセットアドレスから当該グループの仮想アドレス空間上に対応付けられている物理ブロック・物理ページを特定する場合、個別のブロックの情報を参照することなく実施できる点に利点がある。【０１３３】
図２２は、本実施例における仮想アドレス構成情報２２０１を示す。【０１３４】
実施例３における仮想アドレス構成情報２２０１の構成要素は、グループ２２０２〜最終書き込み時刻２２０７までは実施例１のものと同一である。ただし仮想アドレス構成情報２２０１には、グループ毎に、そのグループに対応づけてあるブロックの種別２２０８の情報が保持される点が、実施例１の仮想アドレス構成情報１００７と異なる。ＦＭＰＫＧは種別２２０８に格納されている情報を元にして、グループ内の各物理ページの物理ページサイズを識別する。【０１３５】
図２３は、本発明の実施例３に係るＦＭＰＫＧが実行する、論理アドレスから物理アドレスへの変換処理（正引き処理）のフローを示す。【０１３６】
実施例１で説明した正引き処理（図１３）と同様に、（ＦＭＰＫＧの）ＣＰＵはアクセス対象論理ページ番号を取得し、取得した論理ページ番号を元にページマッピングテーブルを参照し、アクセス対象論理ページ番号に対応づけられたグループ番号とグループ内のオフセットアドレスを取得する（ｓ１３０２〜ｓ１３０４）。続いてＣＰＵは、仮想アドレス構成情報２２０１を参照し、種別２２０６を取得する（ｓ２３０２）。この種別２２０６により、ＣＰＵは仮想アドレスグループを構成する各物理ブロック内の物理ページ構成（各物理ページのサイズ）を識別し、続くｓ２３０３で、グループ内のオフセットアドレスと物理ページ構成を元に、仮想ブロック番号と仮想ブロック内のオフセットアドレスを算出する。最後にＣＰＵは、ｓ２３０４で物理アドレスを取得する。ｓ２３０４は、実施例１（図１３）のｓ１３０６、ｓ１３０７に相当する処理である。実施例１の正引き処理の場合、仮想ブロック内オフセットアドレスを物理ページサイズで除算するだけで物理アドレスを算出可能であったが、実施例３の場合、物理ページ構成によっては（たとえば物理ブロック内に異なるサイズの物理ページが存在する構成等）、単純に除算するだけでは物理アドレスは算出できない点が、実施例１における処理と異なる（ただし物理ブロック内各物理ページのページサイズの分布パタンが分かっていれば、その情報を用いて物理アドレスを算出することができる）。【０１３７】
図２４は、実施例３における新規グループ構築処理のフローを示す。実施例１との差異は、本発明の実施例３に係るＦＭＰＫＧは、種別ごとの空きブロックリストを管理していること、そしてブロック取得の時に、ＣＰＵは取得対象ブロックの種別を決定し、決定された種別の空きブロックリストを取得する点である（ｓ２４０２、ｓ２４０３）。たとえば、フラッシュメモリ制御装置２０１は、常時Ｉ／Ｏ頻度を監視しており、新規グループ構築処理の際にＩ／Ｏ頻度が高かった場合には比較的信頼性が高い物理ブロックの種別である、種別Ａに該当する物理ブロックからグループを構築し、Ｉ／Ｏ頻度が低い場合には、それほど信頼性が高い物理ブロックではない、種別Ｂに該当する物理ブロックからグループを構築する、等の選択を行う。これにより、新規グループを構成するブロックは同一種別で構成されることになる。この処理を効率化するために、各ブロックは種別毎に分けられたキューなどで管理されていても良い。また、要求する種別は、例えば種別によって信頼性やデータ格納量に差があるのであれば、格納データの種類に応じて最適なものを選ぶ方式であっても良い。【０１３８】
以上が実施例３に係るＦＭＰＫＧの説明である。たとえば現在研究が進んでいる３次元積層技術を用いたチップ（３Ｄ積層チップ）では、同じＦＭチップ内に特性の異なるページが存在し、それぞれのページで異なるサイズのＥＣＣを採用する必要性が出る可能性が高い。そのため、実施例３に係る構成は、３Ｄ積層チップのような特性のＦＭチップを使用したＦＭＰＫＧを用いる場合に有用である。
【符号の説明】
【０１３９】
１０１：ストレージシステム
１０２：ストレージコントローラ
１０３：ホスト計算機
１０４：管理端末
１０５：ＳＡＮ
１０６：保守インターフェイス
１０７：ホストインターフェイス
１０８：ＣＰＵ
１０９：メモリ
１１０：ドライブインターフェイス
１１２：フラッシュメモリストレージ装置（ＦＭＰＫＧ）
２０１：フラッシュメモリ制御装置
２０２：ストレージインターフェイス
２０３：ＡＳＩＣ
２０４：バッファ
２０５：バッテリ
２０６：ＣＰＵ
２０７：メインメモリ
２０８：フラッシュメモリインターフェイス
２０９：フラッシュメモリチップ（ＦＭチップ）
４０１：ダイ（ＤＩＥ）
４０２：ページバッファ
４０３：物理ブロック
４０４：物理ページ
５０１：Ｃｏｄｅ  Ｗｏｒｄ（ＣＷ）
５０２：データ
５０３：ＥＣＣ
１００１：論理ページ
１００２：ページマッピングテーブル
１００３：仮想アドレス空間
１００４：仮想アドレスグループ
１００６：仮想ブロック
１００７：仮想アドレス構成情報
１００８：物理ブロック
１００９：物理ページ
【図１】
2015114754.tif 000003
【図２】
2015114754.tif 000004
【図３】
2015114754.tif 000005
【図４】
2015114754.tif 000006
【図５】
2015114754.tif 000007
【図６】
2015114754.tif 000008
【図７】
2015114754.tif 000009
【図１１】
2015114754.tif 000010
【図１２】
2015114754.tif 000011
【図１３】
2015114754.tif 000012
【図１４】
2015114754.tif 000013
【図１５】
2015114754.tif 000014
【図１６】
2015114754.tif 000015
【図２１】
2015114754.tif 000016
【図２２】
2015114754.tif 000017
【図８】
2015114754.tif 000018
【図９】
2015114754.tif 000019
【図１０】
2015114754.tif 000020
【図１７】
2015114754.tif 000021
【図１８】
2015114754.tif 000022
【図１９】
2015114754.tif 000023
【図２０】
2015114754.tif 000024
【図２３】
2015114754.tif 000025
【図２４】
2015114754.tif 000026
【手続補正書】
【提出日】平成28年7月6日(2016.7.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラと複数のフラッシュメモリチップを備えるフラッシュメモリストレージ装置であって、
前記コントローラは少なくとも、プロセッサ、揮発性メモリで構成されるバッファ、上位装置に接続するためのストレージインターフェイス、前記複数のフラッシュメモリを前記コントローラに接続するためのフラッシュメモリインターフェイスを備え、
前記プロセッサは、前記上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記プロセッサはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係が記録されたページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係が記録された仮想アドレス構成情報とを管理することを特徴とする、フラッシュメモリストレージ装置。
【請求項２】
前記各物理ブロックは、前記フラッシュメモリチップの最小アクセス単位の領域である物理ページを複数有し、
前記論理ページのサイズは、前記物理ページのサイズと等しくないことを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項３】
前記プロセッサは、前記上位装置から前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項４】
前記プロセッサは、前記上位装置から前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の１または複数の前記物理ページを特定することを特徴とする、請求項２に記載のフラッシュメモリストレージ装置。
【請求項５】
前記プロセッサは、前記上位装置からのライトデータを受け付けると、前記ライトデータを前記バッファに蓄積し、
前記バッファに１物理ページのサイズ以上のデータが蓄積された時、前記バッファに蓄積されたデータを前記物理ページのサイズ毎に、前記物理ページに格納することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項６】
前記プロセッサは、前記仮想アドレス空間にまだ対応付けられていない前記物理ブロックを管理する空きブロックリストを複数有し、前記各空きブロックリストには、同種の属性を有する前記物理ブロックの物理ブロック番号が管理されていることを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項７】
前記属性は、前記物理ブロックの消去回数に関する情報に基づいて算出される指標値である劣化度であって、
第１の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第１の空きブロックリストによって管理され、第２の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第２の空きブロックリストによって管理されており、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記第１、第２の空きブロックリストのうち１つの空きブロックリストを選択して、前記選択された空きブロックリストによって管理されている前記物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付けることを特徴とする、
請求項６に記載のフラッシュメモリストレージ装置。
【請求項８】
前記属性は、前記物理ブロックの属するフラッシュメモリチップを特定する属性情報であって、同一の前記属性情報を有する前記物理ブロックは、同一の前記空きブロックリストによって管理され、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記複数の空きブロックリストの各々から、空き物理ブロックを１つ選択し、前記選択された物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付け、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に対応付けられた前記複数の物理ブロックに対してデータを格納する際、前記複数の物理ブロックに対して並列に書き込み要求を発行することを特徴とする、
請求項６に記載のフラッシュメモリストレージ装置。
【請求項９】
前記コントローラは、前記上位装置からのライトデータを前記論理ページごとに変換して格納するよう構成されており、
前記コントローラはまた、前記ページマッピングテーブルに、前記変換された論理ページのデータが対応付けられる前記仮想アドレス空間上の範囲の情報を前記論理ページごとに管理することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項１０】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換してバッファに格納した後、前記バッファに格納された変換済データを前記フラッシュメモリチップに書き込むことを特徴とする、
請求項９に記載のフラッシュメモリストレージ装置。
【請求項１１】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換せずバッファに格納した後、前記バッファに格納されたデータを前記フラッシュメモリチップに書き込み、前記フラッシュメモリチップに書き込まれたデータを、別のフラッシュメモリチップへコピーするときに、前記フラッシュメモリチップに書き込まれたデータを変換し、前記変換されたデータを前記別のフラッシュメモリチップへコピーすることを特徴とする、
請求項９に記載のフラッシュメモリストレージ装置。
【請求項１２】
前記フラッシュメモリストレージ装置は、物理ページサイズ特性の異なる２種類以上の物理ブロックを有し、
前記プロセッサは、複数種類の前記仮想アドレス空間を管理しており、
前記それぞれの仮想アドレス空間には、同一の物理ページサイズ特性のみが対応付けられていることを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項１３】
ストレージコントローラと複数のフラッシュメモリストレージ装置を有するストレージシステムであって、
前記フラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備え、
前記コントローラは、前記ストレージコントローラに対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記コントローラはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係を管理するページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係を管理する仮想アドレス構成情報とを有することを特徴とする、ストレージシステム。
【請求項１４】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１３に記載のストレージシステム。
【請求項１５】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の１または複数の物理ページを特定することを特徴とする、請求項１３に記載のストレージシステム。
【手続補正書】
【提出日】平成28年12月5日(2016.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラと複数のフラッシュメモリチップを備えるフラッシュメモリストレージ装置であって、
前記コントローラは少なくとも、プロセッサ、揮発性メモリで構成されるバッファ、上位装置に接続するためのストレージインターフェイス、前記複数のフラッシュメモリを前記コントローラに接続するためのフラッシュメモリインターフェイスを備え、
前記プロセッサは、前記上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記物理ブロックの各々は、前記フラッシュメモリチップの最小アクセス単位の領域で、前記論理ページとサイズの異なる領域である物理ページを複数有し、
前記プロセッサはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係が記録されたページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係が記録された仮想アドレス構成情報とを管理することを特徴とする、フラッシュメモリストレージ装置。
【請求項２】
前記プロセッサは、前記上位装置から前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項３】
前記プロセッサは、前記上位装置から前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の１または複数の前記物理ページを特定することを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項４】
前記プロセッサは、前記上位装置からのライトデータを受け付けると、前記ライトデータを前記バッファに蓄積し、
前記バッファに１物理ページのサイズ以上のデータが蓄積された時、前記バッファに蓄積されたデータを前記物理ページのサイズ毎に、前記物理ページに格納することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項５】
前記プロセッサは、前記仮想アドレス空間にまだ対応付けられていない前記物理ブロックを管理する空きブロックリストを複数有し、前記各空きブロックリストには、同種の属性を有する前記物理ブロックの物理ブロック番号が管理されていることを特徴とする、請求項１に記載のフラッシュメモリストレージ装置。
【請求項６】
前記属性は、前記物理ブロックの消去回数に関する情報に基づいて算出される指標値である劣化度であって、
第１の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第１の空きブロックリストによって管理され、第２の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第２の空きブロックリストによって管理されており、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記第１、第２の空きブロックリストのうち１つの空きブロックリストを選択して、前記選択された空きブロックリストによって管理されている前記物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付けることを特徴とする、
請求項５に記載のフラッシュメモリストレージ装置。
【請求項７】
前記属性は、前記物理ブロックの属するフラッシュメモリチップを特定する属性情報であって、同一の前記属性情報を有する前記物理ブロックは、同一の前記空きブロックリストによって管理され、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記複数の空きブロックリストの各々から、空き物理ブロックを１つ選択し、前記選択された物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付け、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に対応付けられた前記複数の物理ブロックに対してデータを格納する際、前記複数の物理ブロックに対して並列に書き込み要求を発行することを特徴とする、
請求項５に記載のフラッシュメモリストレージ装置。
【請求項８】
前記コントローラは、前記上位装置からのライトデータを前記論理ページごとに変換して格納するよう構成されており、
前記コントローラはまた、前記ページマッピングテーブルに、前記変換された論理ページのデータが対応付けられる前記仮想アドレス空間上の範囲の情報を前記論理ページごとに管理することを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項９】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換してバッファに格納した後、前記バッファに格納された変換済データを前記フラッシュメモリチップに書き込むことを特徴とする、
請求項８に記載のフラッシュメモリストレージ装置。
【請求項１０】
前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換せずバッファに格納した後、前記バッファに格納されたデータを前記フラッシュメモリチップに書き込み、前記フラッシュメモリチップに書き込まれたデータを、別のフラッシュメモリチップへコピーするときに、前記フラッシュメモリチップに書き込まれたデータを変換し、前記変換されたデータを前記別のフラッシュメモリチップへコピーすることを特徴とする、
請求項８に記載のフラッシュメモリストレージ装置。
【請求項１１】
前記フラッシュメモリストレージ装置は、物理ページサイズ特性の異なる２種類以上の物理ブロックを有し、
前記プロセッサは、複数種類の前記仮想アドレス空間を管理しており、
前記それぞれの仮想アドレス空間には、同一の物理ページサイズ特性のみが対応付けられていることを特徴とする、
請求項１に記載のフラッシュメモリストレージ装置。
【請求項１２】
ストレージコントローラと複数のフラッシュメモリストレージ装置を有するストレージシステムであって、
前記フラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備え、
前記コントローラは、前記ストレージコントローラに対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記物理ブロックの各々は、前記フラッシュメモリチップの最小アクセス単位の領域で、前記論理ページとサイズの異なる領域である物理ページを複数有し、
前記コントローラはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係を管理するページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係を管理する仮想アドレス構成情報とを有することを特徴とする、ストレージシステム。
【請求項１３】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項１２に記載のストレージシステム。
【請求項１４】
前記コントローラは、前記ストレージコントローラから前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の１または複数の物理ページを特定することを特徴とする、請求項１２に記載のストレージシステム。
【国際調査報告】
2015114754.tif 000027
2015114754.tif 000028
2015114754.tif 000029