(57)【要約】論理物理変換情報が、不揮発半導体記憶媒体の論理アドレス空間を構成する複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、複数の論理チャンクと複数の物理記憶領域との対応関係を表す情報とを含む。各論理ページは、論理アドレス範囲に従う論理記憶領域である。各論理チャンクが、複数の論理ページのうちの二以上の論理ページに割り当てられる。各論理チャンクに、複数の物理記憶領域のうちの二以上の物理記憶領域が割り当てられる。コントローラは、各論理チャンクについて、割り当てる物理記憶領域の数を調整する。
2013046464.tif 000002
【特許請求の範囲】
【請求項１】
不揮発半導体記憶媒体と、
前記不揮発半導体記憶媒体の論理アドレスと物理記憶領域との対応関係を表す情報である論理物理変換情報を記憶する記憶部と、
前記記憶部及び前記不揮発半導体記憶媒体に接続されたコントローラである媒体コントローラと
を有し、
前記論理物理変換情報が、
（Ａ）前記不揮発半導体記憶媒体の論理アドレス空間を構成する複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、
（Ｂ）前記複数の論理チャンクと複数の物理記憶領域との対応関係を表す情報と
を含み、
各論理ページは、論理アドレス範囲に従う論理記憶領域であり、
各論理チャンクが、前記複数の論理ページのうちの２以上の論理ページに割り当てられ、
各論理チャンクに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられ、
前記媒体コントローラは、前記論理物理変換情報を基に、データのライト先の論理アドレスが属する論理ページが割り当てられている論理チャンクに割り当てられている物理記憶領域を特定し、その特定された物理記憶領域に、前記データを書き込むよう構成されており、
前記媒体コントローラは、各論理チャンクについて、割り当てる物理記憶領域の数を調整する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記（Ｂ）の情報は、下記（ｂ１）の情報、
（ｂ１）複数の論理チャンクと複数の物理チャンクとの対応関係を表す情報、
を含み、
前記物理チャンクに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられている、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記（Ｂ）の情報は、更に、下記（ｂ２）の情報、
（ｂ２）複数の物理チャンクと複数のプールとの対応関係を表す情報、
を含み、
前記プールに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられており、
（Ｘ）前記媒体コントローラが、前記物理チャンクが割り当てられているプールからその物理チャンクに物理記憶領域を割り当て、
（Ｙ）前記媒体コントローラが、前記物理チャンクに割り当てられている物理記憶領域をその物理チャンクに戻す、
ストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
隣り合う論理ページに異なる論理チャンクのページが割り当てられ、
異なる論理チャンクのページに異なる物理チャンクの領域が割り当てられ、
異なる物理チャンクの領域に、異なる物理リソースの物理記憶領域が割り当てられた、プールの異なる領域、が割り当てられる、
ストレージシステム。
【請求項５】
請求項４記載のストレージシステムであって、
前記不揮発記憶媒体は、ブロック単位でデータが消去されページ単位でアクセスされるタイプのフラッシュメモリであり、
前記フラッシュメモリは、異なる複数のフラッシュメモリバスに接続された複数のメモリチップを含み、
各メモリチップは、複数の物理ブロックを有し、
各物理ブロックは、複数の物理ページを有し、
前記物理記憶領域は、前記物理ページであり、
前記物理チャンクの領域は、前記物理チャンクを構成する複数のブロックのうちのいずれかのブロックであり、
前記プールの領域は、前記プールを構成する複数のブロックのうちのいずれかのブロックであり、
前記複数の物理チャンクの複数のブロックに、前記複数のプールの複数のブロックが割り当てられており、
前記複数のプールの複数のブロックに、前記複数のメモリチップにおける複数の物理ブロックが割り当てられており、
前記異なる物理リソースは、異なるフラッシュメモリバスである、
ストレージシステム。
【請求項６】
請求項５記載のストレージシステムであって、
前記媒体コントローラは、ライト先の論理ページ群に対応した物理ブロックにライト対象のデータのサイズ以上の空きの物理ページが無ければ、前記ライト先の各論理ページが割り当てられた各論理チャンクについて、その論理チャンクに対応した物理チャンクに割り当てられているブロックの数が、その物理チャンクについての期待値以上か否かを判断し、その判断の結果が否定的の場合に、前記（Ｘ）として、前記物理チャンクが割り当てられているプールからその物理チャンクにブロックを追加する、
ストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記物理チャンクに割り当てられるブロックの目標値は、その物理チャンクの属性によって異なり得る、
ストレージシステム。
【請求項８】
請求項７記載のストレージシステムであって、
前記物理チャンクの属性は、その物理チャンクが属する記憶領域単位で指定されたポリシーに従って決定される、
ストレージシステム。
【請求項９】
請求項８記載のストレージシステムであって、
複数の不揮発記憶デバイスと、
前記複数の不揮発記憶デバイスとホスト装置とに接続された上位のコントローラと
を有し、
各不揮発記憶デバイスが、前記不揮発記憶媒体と前記記憶部と前記媒体コントローラとを有し、
前記複数の不揮発記憶デバイスに基づく論理的な記憶領域である論理ユニットが前記ホスト装置に提供され、
前記論理ユニットの論理アドレスが、その論理ユニットに基づく複数の不揮発記憶デバイスのそれぞれの論理アドレスに対応している、
ストレージシステム。
【請求項１０】
請求項１記載のストレージシステムであって、
隣り合う論理ページに異なる論理チャンクのページが割り当てられ、
異なる論理チャンクのページに、異なる物理リソースの物理記憶領域が割り当てられる、
ストレージシステム。
【請求項１１】
請求項１０記載のストレージシステムであって、
前記異なる物理リソースは、前記媒体コントローラから物理記憶領域に書き込まれるデータが経由する異なるバスであり、
前記媒体コントローラは、連続した複数の論理ページがライト先の場合、複数の異なるバスを介して複数の異なる物理記憶領域にデータを並行して書き込む、
ストレージシステム。
【請求項１２】
請求項１０記載のストレージシステムであって、
２以上の異なる回路基板に複数の物理記憶領域が配置されており、
前記異なる物理リソースは、異なる前記回路基板である、
ストレージシステム。
【請求項１３】
請求項１記載のストレージシステムであって、
前記不揮発記憶媒体は、ブロック単位でデータが消去されページ単位でアクセスされるタイプのフラッシュメモリであり、
前記フラッシュメモリは、異なる複数のフラッシュメモリバスに接続された複数のメモリチップを含み、
各メモリチップは、複数の物理ブロックを有し、
各物理ブロックは、複数の物理ページを有し、
前記物理記憶領域は、前記物理ページであり、
前記（Ｂ）の情報は、下記（ｂ１）の情報、
（ｂ１）複数の論理チャンクと複数の物理チャンクとの対応関係を表す情報、
を含む、
ストレージシステム。
【請求項１４】
請求項１３記載のストレージシステムであって、
前記（Ｂ）の情報は、更に、下記（ｂ２）の情報、
（ｂ２）複数の物理チャンクと複数のプールとの対応関係を表す情報、
を含み、
前記プールを構成する複数のブロックに、前記複数の物理チャンクの複数のブロックが割り当てられており、
前記媒体コントローラが、ライト先の論理ページ群に対応した物理ブロックにライト対象のデータのサイズ以上の空きの物理ページが無ければ、前記ライト先の各論理ページが割り当てられた各論理チャンクについて、その論理チャンクに対応した物理チャンクに割り当てられているブロックの数が、その物理チャンクについての期待値以上か否かを判断し、その判断の結果が否定的の場合に、前記物理チャンクが割り当てられているプールからその物理チャンクにブロックを追加する、
ストレージシステム。
【請求項１５】
不揮発半導体記憶媒体の論理アドレスと物理記憶領域との対応関係を表す情報である論理物理変換情報を基に記憶制御を行うストレージシステムの記憶制御方法であって、
前記論理物理変換情報として、
（Ａ）前記不揮発半導体記憶媒体の論理アドレス空間を構成する複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、
（Ｂ）前記複数の論理チャンクと複数の物理記憶領域との対応関係を表す情報と
を含み、
各論理チャンクについて、割り当てる物理記憶領域の数を調整する、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発半導体記憶媒体を有するストレージシステムの記憶制御に関する。
【背景技術】
【０００２】
ストレージシステムは、一般に、複数の記憶媒体で構成されたＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）グループに基づいて作成された論理ボリュームを、上位装置（例えばホストコンピュータ）へ提供する。近年、記憶媒体としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に加えて又は代えて、ＮＡＮＤフラッシュメモリを用いたフラッシュストレージが採用されている。ＮＡＮＤフラッシュメモリは、不揮発性半導体メモリであり、ページと呼ばれる単位でリードが行われる。同様にライトもページ単位で実施されるが、ライトの際には事前に対象領域を消去しておく必要がある。消去は、複数のページからなるブロックと呼ばれる単位で実施される。【０００３】
このような制限の下で高速なＩ／Ｏ処理（ライト／リード処理）を行うには、以下のような制御が有効である。まず、上位装置が認識する論理アドレスとフラッシュメモリ上の物理アドレスとの関連づけが管理される。消去済み領域は、上位装置からのＩ／Ｏ処理と非同期に作成されていく。上位装置からのライト対象データは、予め用意された消去済みの領域に格納される。この制御を行う場合には、バッファとして使用する更新データ格納領域が必要となる。ここで言う「更新データ格納領域」とは、いずれの論理アドレスに割り当てられていない物理アドレスが示す空きの記憶領域（例えば、消去済みのブロックにおいて有効なデータ（論理アドレスにとっての最新のデータ）が格納されていないページ）である。【０００４】
特許文献１では、ブロック内の特定の領域を更新データ格納領域として使用する方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−６４２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
フラッシュストレージにおいて、更新データ格納領域のサイズは、性能や寿命に大きな影響を与える。更新データ格納領域は、上位装置が直接使用できない領域であるため、一般的にユーザ容量（上位装置に提供される論理アドレス空間が表す記憶容量）には含まれない。従って、物理的な搭載容量（１以上のフラッシュストレージの総記憶容量）の１０％を更新データ格納領域として使用するシステムに対して、物理的な搭載容量の５５％を使用するシステムでは、物理的な搭載容量が同じであっても、ユーザ容量は半分となってしまう。一方で、更新データ格納領域が大きいほど、一般に、ライト性能および寿命が改善される。【０００７】
容量と、性能（及び／又は寿命）とのどちらを優先するかは、フラッシュストレージを使用するユーザ毎に異なり、また、同一のユーザであっても、使用するアプリケーションプログラム（及び／又は、使用する領域やアドレス）によって異なる。例えば、高いライト性能が不要なアプリケーションプログラムが使用する領域については、更新データ格納領域のサイズは小さくすることが望ましく、逆に、高いライト性能が必要となる領域については、更新データ格納領域のサイズを大きくすることが望ましい。【０００８】
この種の問題は、フラッシュストレージに限らず、他種の不揮発半導体記憶媒体についても生じ得る。【０００９】
本発明の目的は、不揮発半導体記憶媒体における更新データ格納領域のサイズを適切に設定することである。
【課題を解決するための手段】
【００１０】
ストレージシステムが、不揮発半導体記憶媒体と、不揮発半導体記憶媒体の論理アドレスと物理記憶領域との対応関係を表す情報である論理物理変換情報を記憶する記憶部と、記憶部及び不揮発半導体記憶媒体に接続されたコントローラである媒体コントローラとを有する。論理物理変換情報が、不揮発半導体記憶媒体の論理アドレス空間を構成する複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、複数の論理チャンクと複数の物理記憶領域との対応関係を表す情報とを含む。各論理ページは、論理アドレス範囲に従う論理記憶領域である。各論理チャンクが、複数の論理ページのうちの二以上の論理ページに割り当てられる。各論理チャンクに、複数の物理記憶領域のうちの二以上の物理記憶領域が割り当てられる。媒体コントローラは、論理物理変換情報を基に、データのライト先の論理アドレスが属する論理ページが割り当てられている論理チャンクに割り当てられている物理記憶領域を特定し、その特定された物理記憶領域に、そのデータを書き込むよう構成されている。媒体コントローラは、各論理チャンクについて、割り当てる物理記憶領域の数を調整する。【００１１】
このストレージシステムは、不揮発記憶媒体と媒体コントローラとを有する単一の記憶デバイスであっても良いし、そのような記憶デバイスを１以上とその１以上の記憶デバイスに接続されたコントローラである上位コントローラとを有するストレージ装置であっても良いし、そのようなストレージ装置を複数台で組み合わされたストレージ装置群であっても良い。上位装置は、ストレージ装置又はストレージ装置群に接続されているホスト装置であっても良いし、記憶デバイスに接続された前述の上位コントローラであっても良い。
【発明の効果】
【００１２】
不揮発半導体記憶媒体における更新データ格納領域のサイズを適切に設定することができる。
【図面の簡単な説明】
【００１３】
【図１】実施例に係るストレージシステムを含むコンピュータシステムの全体構成の一例を示す。
【図２】実施例に係るフラッシュストレージの内部構成の一例を示す。
【図３】実施例に係るフラッシュストレージの内のメモリに格納される情報の一例を示す。
【図４】実施例に係る論理物理変換処理の概要の一例を示す。
【図５】実施例に係るライト処理の流れの第１の例を示したフロー図である。
【図６】実施例に係るページ状態遷移の第１の観点における第１時点での論理物理変換情報の一例である。
【図７】実施例に係るページ状態遷移の第１の観点における第２時点での論理物理変換情報の一例である。
【図８】実施例に係るページ状態遷移の第１の観点における第３時点での論理物理変換情報の一例である。
【図９】実施例に係るページ状態遷移の第１の観点における第４時点での論理物理変換情報の一例である。
【図１０】実施例に係るページ状態遷移の第２の観点における第１時点での論理物理変換情報の一例である。
【図１１】実施例に係るページ状態遷移の第２の観点における第２時点での論理物理変換情報の一例である。
【図１２】実施例に係るページ状態遷移の第２の観点における第３時点での論理物理変換情報の一例である。
【図１３】実施例に係るページ状態遷移の第２の観点における第４時点での論理物理変換情報の一例である。
【図１４】実施例に係る論理物理変換を実現するための階層構造の第２の例を示す。
【図１５】実施例に係る領域対応関係（論理チャンクと物理チャンクとプールとの対応関係）の第１の例を示す。
【図１６】実施例に係る領域対応関係（論理チャンクと物理チャンクとプールとの対応関係）の第２の例を示す。
【図１７】実施例に係る論理物理変換情報が含む情報群の一例を示す。
【図１８】実施例に係る論理チャンク構成情報の構成例を示す。
【図１９】実施例に係る論理チャンク−物理チャンク変換情報の構成例を示す。
【図２０】実施例に係る物理チャンク構成情報の構成例を示す。
【図２１】実施例に係る物理チャンク内ページ情報の構成例を示す。
【図２２】実施例に係るプール構成情報の構成例を示す。
【図２３】実施例に係る容量割り当て情報の構成例を示す。
【図２４】実施例に係る論理物理変換を実現するための階層構造の第２の例を示す。
【図２５】実施例に係る論理物理変換に関する階層構造の第１の例を示す。
【図２６】実施例に係る領域対応関係（論理チャンクと物理チャンクとプールとの対応関係）の第３の例を示す。
【図２７】実施例に係る容量割り当て情報の変更処理フローの一例を示す。
【図２８】実施例に係るライト処理の流れの第２の例を示したフロー図である。
【図２９】実施例に係る空きブロック生成処理のフローの一例を示す。
【図３０】実施例に係るアドレス空間対応関係（ユーザが使用するアドレス空間とフラッシュストレージデバイス上の論理アドレス空間との関係）の一例を示す。
【発明を実施するための形態】
【００１４】
以下、一実施例を図面に基づいて説明する。
【００１５】
なお、以下の説明では「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【００１６】
また、以下の説明では、要素（例えば、ページ、チャンク、フラッシュメモリチップ（ＦＭチップ））を特定するために番号を含む識別情報が使用されるが、識別情報として、番号を含まない情報が使用されても良い。
【００１７】
また、以下の説明では、同種の要素を区別して説明する場合、要素名と参照符号との組合せに代えて、要素名と識別情報との組合せが使用されることがある。例えば、識別情報（識別番号）「０」のページを、「ページ＃０」と表記することがある。
【００１８】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、コントローラに含まれるプロセッサ（例えばＣＰＵ（Central  Processing  Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェースデバイス（例えば通信ポート）を用いながら行うため、処理の主語がコントローラ或いはプロセッサとされてもよい。プログラムを主語として説明された処理は、後述のフラッシュストレージデバイス、フラッシュストレージ、フラッシュコントローラ、ＲＡＩＤコントローラ或いはストレージシステムが行う処理としても良い。また、コントローラは、プロセッサに代えて又は加えて、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから後述のフラッシュコントローラ或いはＲＡＩＤコントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータが読み取り可能な記憶媒体であっても良い。
【００１９】
また、コンピュータシステム（或いはコンピュータシステムに含まれるストレージシステム）を管理する一つ以上の計算機の集合を、管理システムと呼ぶことがある。管理システムが表示用情報を表示する場合は、計算機が管理システムである。また、計算機と表示用装置の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理システムと同等の処理を実現してもよく、この場合は、当該複数の計算機（表示を表示用装置が行う場合は表示用装置も含め）が管理システムである。管理システムは、入出力デバイスを有する。入出力デバイスの例としては、ディスプレイ、キーボード及びポインティングデバイスが考えられるが、これらのうちの少なくとも１つに代えて他種のデバイス（例えば、ディスプレイ、キーボード及びポインティングデバイスに代えて、タッチパネル型のディスプレイ装置）が採用されてもよい。また、入出力デバイスの代替として、シリアルインターフェースやイーサーネットインターフェース（イーサーネットは登録商標）を入出力デバイスとし、当該インターフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用装置を接続し、表示用情報を表示用装置に送信したり、入力用情報を表示用装置から受信することで、表示用装置で表示を行ったり、入力を受け付けることで入出力デバイスでの入力及び表示が代替されてもよい。
【００２０】
また、以下の説明では、インターフェースデバイスを「Ｉ／Ｆ」と略記することがある。
【００２１】
また、以下の説明では、フラッシュメモリ（ＦＭ）は、ブロック単位で消去が行われ、ページ単位でアクセスが行われる種類のフラッシュメモリ、典型的にはＮＡＮＤ型のフラッシュメモリであるとする。しかし、フラッシュメモリは、ＮＡＮＤ型に代えて他種のフラッシュメモリ（例えばＮＯＲ型）でも良い。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリが採用されても良い。
【００２２】
また、以下の説明では、不揮発半導体記憶媒体はＮＡＮＤ型フラッシュメモリである。このため、ページとブロックという用語が使用される。また、或る論理ページ（この段落において「対象論理ページ」と言う）がライト先であり、且つ、対象論理ページに既に物理ページ（この段落において「第１の物理ページ」と言う）が割り当てられていて第１の物理ページにデータが格納されている場合、対象論理ページには、第１の物理ページに代えて、空きの物理ページ（この段落において「第２の物理ページ」と言う）が割り当てられ、第２の物理ページにデータが書き込まれることになる。第２の物理ページに書き込まれたデータが、対象論理ページにとって最新のデータであり、第１の物理ページに格納されているデータは、対象論理ページにとって旧いデータとなる。以下、各論理ページについて、最新のデータを「有効データ」と言い、旧いデータを「無効データ」と言うことがある。また、有効データを格納している物理ページを「有効物理ページ」と言い、無効データを格納している物理ページを「無効物理ページ」と言うことがある。
【００２３】
図１は、実施例に係るストレージシステムを含むコンピュータシステムの全体構成の一例を示す。
【００２４】
コンピュータシステムは、ストレージシステム１０１、ホストコンピュータ（以下、ホスト）１０２、及び管理システム１０３を備える。
【００２５】
ホスト１０２は、ストレージシステム１０１に接続するための通信ポートを有する。ホスト１０２は、このポートを介してホスト接続経路１０４を通り、ストレージシステム１０１に接続される。同様に、管理システム１０３は、管理接続経路１０５を通り、ストレージシステム１０１に接続される。図１では、ホスト１０２とストレージシステム１０１を直接接続した構成を記載しているが、ホスト接続経路１０４は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と呼ばれるネットワークであって良く、多くのホスト、管理システム、ストレージに対応可能な構成でよい。ここで、ＳＡＮとして、Ｆｉｂｒｅ  ＣｈａｎｎｅｌやｉＳＣＳＩなどのプロトコルを使用する事が出来る。また、管理接続経路１０５は、ホスト接続経路１０４と同じ接続経路でも良いし異なる接続経路でも良い。例えば、ホスト接続経路１０４がＳＡＮであって、管理接続経路１０５がＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であっても良い。接続経路１０４及び１０５のうちの少なくとも一方は、前述したＳＡＮ或いはＬＡＮ以外の通信ネットワークでも良い。
【００２６】
ストレージシステム１０１は、ＲＡＩＤコントローラ１１１と、フラッシュストレージデバイス１４１と、ディスクデバイス１４２とを有する。ＲＡＩＤコントローラ１１１に、フラッシュストレージデバイス１４１及びディスクデバイス１４２が、内部バス１１２を介して接続される。ストレージシステム１０１は、ＲＡＩＤにより冗長構成を実現するシステムであり、そのため、ＲＡＩＤコントローラ１１１を備える。しかし、本発明は、ＲＡＩＤ構成を採用することに限定されない。
【００２７】
フラッシュストレージデバイス１４１は、Ｉ／Ｆスイッチ１２１とフラッシュストレージ１３１とを有する。Ｉ／Ｆスイッチ１２１に内部バス１１２を介してＲＡＩＤコントローラ１１１が接続され、且つ、Ｉ／Ｆスイッチ１２１に、ディスク接続経路１２２を介してフラッシュストレージ１３１が接続される。データを実際に格納する記憶媒体は、フラッシュストレージ１３１である。フラッシュストレージ１３１は、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。
【００２８】
また、ディスクデバイス１４２は、ディスク型の記憶媒体、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を有する。ＨＤＤのＩ／Ｆは、例えば、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、或いはＡＴＡで良い。ディスク型の記憶媒体は、ＨＤＤに代えて他種の媒体、例えば、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）ドライブであっても良い。また、ディスクデバイス１４１に代えて、他種の記憶媒体、例えば、テープを有するテープ装置であっても良い。
【００２９】
本実施例では、フラッシュストレージデバイス１４１とディスクデバイス１４２を区別して記述したが、これらの装置の物理的・論理的に互換とすることで、フラッシュストレージ１３１とその他のディスクデバイスを混在させることも可能である。例えば、ＳＡＳプロトコルのディスクＩ／Ｆを備えたＳＳＤと、ＳＡＳ  ＨＤＤを同一の装置内に格納し、使用することも可能である。
【００３０】
図２は、フラッシュストレージ１３１の内部構成の一例を示す。
【００３１】
フラッシュストレージ１３１は、フラッシュコントローラと、フラッシュコントローラに接続されたフラッシュメモリとを有する。
【００３２】
フラッシュコントローラは、上位Ｉ／Ｆと、記憶部と、バッファメモリ２１３と、下位Ｉ／Ｆと、それらに接続された制御部とを有する。上位Ｉ／Ｆは、例えば、上位入出力制御部２０１である。記憶部は、例えば、メモリ２１１を含む。下位Ｉ／Ｆは、例えば、フラッシュ入出力制御部２０３である。制御部は、例えば、データ転送制御部２０２と、ＣＰＵ２１２とを含む。構成要素２０１、２０２、２０３、２１３、２１１及び２１２は、内部バス２２２で接続されている。
【００３３】
また、フラッシュメモリは、複数のＦＭ（フラッシュメモリ）チップ１４５１を有する。複数のＦＭチップ１４５１は、ＦＭバス２２３を介してフラッシュ入出力制御部２０３に接続されている。フラッシュメモリは、補助記憶デバイスの一例で良い。
【００３４】
上位入出力制御部２０１は、ディスク接続経路１２２を通じて、Ｉ／Ｆスイッチ１２１に接続され、上位装置とのデータ入出力の制御を行う。
【００３５】
データ転送制御部２０２は、フラッシュストレージ１３１内のデータ転送を制御する。
【００３６】
フラッシュ入出力制御部２０３は、ＦＭバス２２３を通じて、ＦＭチップ１４５１へのデータ入出力を制御する。
【００３７】
ＣＰＵ２１２は、内部バス２２２でデータ転送制御部２０２と接続され、メモリ２１１に格納されたプログラムに従って各種の演算処理を実行し、フラッシュストレージ１３１全体の制御を実行する。
【００３８】
バッファメモリ２１３は、上位入出力制御部２０１、フラッシュメモリ入出力制御部２０３とやり取りするデータを一旦格納する。
【００３９】
図２で示した構成要素のうちの少なくとも１つは、フラッシュストレージ１３１に無くても良い。例えば、ＣＰＵ２１２をはじめとする各制御部が一体となったチップを用いた構成や、その一部のみを統合するチップを用いた構成が採用されても良い。また、例えば、メモリ２１１とバッファメモリ２１３を物理的に同一のメモリにする等の構成が採用されても良い。
【００４０】
図３は、メモリ２１１に格納する情報の一例を示す。
【００４１】
メモリ２１１は、主記憶デバイスの一例で良い。メモリ２１１は、例えば、オペレーティングシステム３０１、フラッシュストレージ制御プログラム３０２、データ転送制御部制御プログラム３０３、入出力制御部制御プログラム３０４、論理物理変換プログラム３１１及び論理物理変換情報３１２を記憶する。プログラム３０１〜３０４及び３１１は、ＣＰＵ２１２が実行するプログラムである。
【００４２】
オペレーティングシステム３０１は、ＣＰＵ２１２が各プログラムを実行する際のスケジューリング等の基本処理を行うプログラムである。
【００４３】
フラッシュストレージ制御プログラム３０２は、フラッシュストレージ１３１が上位装置へ提供するボリュームの管理や、バッファメモリの管理など、フラッシュストレージ１３１がストレージデバイスとして動作するための制御に用いるプログラムである。
【００４４】
データ転送制御部制御プログラム３０３は、データ転送制御部２０２の制御に用いるプログラムである。
【００４５】
入出力制御部制御プログラム３０４は、上位入出力制御部２０１、フラッシュ入出力制御部２０３の制御に用いるプログラムである。
【００４６】
論理物理変換プログラム３１１は、上位装置（本実施例ではＲＡＩＤコントローラ１１１又はホスト１０２）から発行された入出力要求（Ｉ／Ｏ要求）である論理アドレスが、フラッシュメモリ上の物理位置である物理アドレスのどの部分に相当するかを変換して求めるプログラムである。なお、本実施例で言う「論理アドレス」は、例えば、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）で良い。
【００４７】
論理物理変換情報３１２は、論理物理変換プログラム３１１が動作する際に使用する変換のための情報である。
【００４８】
図３に示した情報以外にも、メモリ２１１は、上位装置入出力制御部２０１や、フラッシュ入出力制御部２０３を制御するための情報等を記憶してもよい。
【００４９】
図４は、論理物理変換処理の概要の一例を示す。
【００５０】
論理アドレス層１４０１は、フラッシュストレージ１３１が上位装置（実施例ではＲＡＩＤコントローラ１１１又はホスト１０２）に提供するボリューム上の位置を表すアドレスである。ここでは、説明をわかりやすくするため、論理空間が複数の論理ページ１４１１に分割されており、論理ページ１４１１のサイズは、ＦＭチップ１４５１の物理ページのサイズと同じとする。ここでは、論理ページ１４１１のサイズは、８ボリュームブロック分とする。ここで言う「ボリュームブロック」とは、ホスト１０２に提供される論理ボリュームを構成する個々の記憶領域である。
【００５１】
論理物理変換プログラム３１１によって、論理アドレス層の領域は、物理層１４０５における物理的な領域に関連付けられる。物理層１４０５は、複数のＦＭチップ１４５１で構成された層である。各ＦＭチップ１４５１は、ＮＡＮＤフラッシュメモリの消去単位である複数の物理ブロック１４５２から構成される。各物理ブロック１４５２は、リードライト単位である複数の物理ページ１４５３から構成される。そして、論理ページ１４１１は、物理ページ１４５３に関連付けられている。
【００５２】
例えば、図４の例では、ＬＢＡ０ｘ００から０ｘ０７までの領域は、ＦＭチップ＃０の物理ブロック＃０の物理ページ＃０に割り当てられている。フラッシュストレージ１３１にとっての上位装置であるホスト１０２又はＲＡＩＤコントローラ１１１から、ＬＢＡ０ｘ００から０ｘ０７までの領域を指定したリード要求が発行された場合は、フラッシュコントローラは、そのリード要求を受け、そのリード要求に従い、上記の割り当て情報（論理物理変換情報３１２）に基づいて、ＦＭチップ＃０の物理ブロック＃０の物理ページ＃０からデータをリードし、結果（そのリードしたデータを含む）を上位装置に返すこととなる。
【００５３】
図４では、論理ページサイズと物理ページサイズを同一としたが、必ずしも同一である必要は無い。論理ページサイズが物理ページサイズよりも小さい場合、例えば半分のサイズだった場合では、論理上の空間のより小さい範囲毎に格納位置を決定することが可能となる。すなわち、論理アドレス０ｘ００から０ｘ０３までの４つのボリュームブロックと、０ｘ０４から０ｘ０７までの４つのボリュームブロックを別々の物理ページに格納することも可能となる。
【００５４】
逆に、論理ページサイズが物理ページサイズよりも大きい場合には、物理ページの配置にある程度の制限を設けることが望ましい。例えば、論理アドレス０ｘ００から０ｘ０Ｆまでの範囲は２つの物理ページに関連付けられることになるが、これらの物理ページは、同一物理ブロック中の連続した物理ページのような、一定の規則に基づいて自動的に決定されるページ群であることが望ましい。この場合は、仮想的に物理ページを拡大して使用していることに等しく、管理情報の低減が可能となる。
【００５５】
ここで、フラッシュストレージ１３１におけるライト処理について考える。
【００５６】
図５は、ライト処理の流れの一例を示したフロー図である。
【００５７】
Ｓ５０１で、ライト処理が開始される。ライト処理は、典型的には、フラッシュコントローラが、上位装置からライト要求を受けた場合に開始される。
【００５８】
フラッシュコントローラは、まず、ライト用の空き物理ページが十分に存在するか（例えば、データのライト先として適切な空き物理ページの総サイズがライト対象のデータのサイズ以上であるか）否かを判断する（Ｓ５０２）。これは、ＮＡＮＤフラッシュメモリは上書きが不可能であり、ライトを行う際には、事前に消去を行う必要がある事に起因している。Ｓ５０２は、ライト可能な消去済みの物理ページが存在するか否かを判断する処理である。
【００５９】
フラッシュコントローラは、ライト用の空き物理ページが十分に存在している場合は、その空き物理ページに、ライト対象のデータをライトし（Ｓ５０３）、処理を終了する（Ｓ５０４）。
【００６０】
一方、フラッシュコントローラは、ライト用の空き物理ページが十分に存在していない場合は、複数の消去候補物理ブロックから空き物理ページ作成対象ブロックの選択を行う（Ｓ５１１）。「消去候補物理ブロック」とは、例えば、末端の物理ページまでデータが書き込まれている物理ブロックである。特に、後述のページ待避処理のため、論理アドレスに関連付けられている物理ページ（有効データを記憶している物理ページ）が少ない物理ブロックが消去候補として望ましい。次に、フラッシュコントローラは、選択した物理ブロック内の有効データを別の空き物理ブロックへ待避する（Ｓ５１２）。有効データとは、前述の定義によれば、本処理の時点で論理ページに実際に割り当てられている物理ページに存在するデータである。有効データは、そのまま消去してはならないデータであるため、別の物理ブロックへの待避が必要となる。有効データの待避処理とは、有効物理ページ内の有効データをその有効物理ページを有する物理ブロックとは別の物理ブロックへコピーし、割り当て関係を更新する処理である。この処理を行うと、コピー元のデータは有効データから無効データ（不要なデータ）となるため、コピー元の物理ページは有効物理ページから無効物理ページとなる。有効データの待避が完了すると、空き物理ページ作成対象ブロック（コピー元の物理ブロック）は、非有効物理ページ、すなわち無効物理ページもしくは元々データの入っていない空きの物理ページのみで構成されることになる。待避が完了すると、フラッシュコントローラは、空き物理ページ作成対象ブロック（Ｓ５１１で選択された物理ブロック）の消去処理を行う（Ｓ５１３）。Ｓ５１３の消去処理によって、空き物理ページ作成対象ブロックの全ての物理ページが空きの物理ページとして使用可能になる。この処理によって、ライト用の空き物理ページが増加することになる。フラッシュコントローラは、再び、ライト用空き物理ページが十分にあるかどうかの判断を行い（Ｓ５０２）、ライト処理の継続を図る。
【００６１】
図５では、ライト処理の中で、空き物理ページの作成処理（Ｓ５１１〜Ｓ５１３）を行っているが、これをライト処理とは非同期で（すなわち、ライト処理に含まれる処理ではなく、ライト処理とは別の処理として）行われても良い。ライト処理とは非同期に空き物理ページ作成処理を行うことにより、ライト処理中の空き物理ページ作成処理を不要とし、ライト処理性能を高くすることが期待できる。
【００６２】
図５で示したライト処理のフローを、ページ状態の遷移という観点で考える。
【００６３】
図６は、ページ状態遷移の第１の観点における第１時点での複数の物理ブロック及び物理ページの状態を示す。
【００６４】
論理物理変換情報３１２は、図４の階層構造に対応した論理物理変換用テーブルＴ６０１を含む。テーブルＴ６０１は、論理物理変換用テーブルを簡略化したテーブルであって、物理ブロック及び物理ページに関する情報を有するブロックページテーブルである。前提として、物理ブロック内の物理ページ数は４とし、ユーザが使用可能な領域は、全物理容量の７５％とする。すなわち、物理ブロック内の４つの物理ページのうち、平均的には３つの物理ページが有効な状態（有効物理ページ）となる。図６に示す第１時点のブロックページテーブルＴ６０１によれば、物理ブロック＃１０内の物理ページ＃０、＃１及び＃２に有効なデータが格納されており、物理ブロック＃１０内の物理ページ＃３が空き状態となっている。物理ブロック＃２２は消去処理直後の状態（全ての物理ページが空き物理ページ）となっている。
【００６５】
図７は、図６の時点の後にライトが発生した後の時点（第２時点）のブロックページテーブルＴ６０１を示す。
【００６６】
第２時点のテーブルＴ６０１によれば、第１の時点で空き物理ページであった、物理ブロック＃１０の物理ページ＃３に、アドレス＃１０１のデータが格納されている。このとき、第１時点でアドレス＃１０１のデータを格納していた、物理ブロック＃１０の物理ページ＃１は、既に不要なデータを記憶しているため、無効物理ページである。第２時点のテーブルＴ６０１は、図５のＳ５０３を実行した後の状態に相当する。
【００６７】
図８は、図７の時点から有効データの待避処理を行った後の時点（第３時点）のブロックページテーブルＴ６０１を示す。
【００６８】
第３時点のテーブルＴ６０１によれば、第２時点での、物理ブロック＃１０の有効物理ページ＃０、＃２及び＃３内の有効データは、物理ブロック＃２２の物理ページ＃０、＃１及び＃２へコピーされ、コピー元の物理ページ＃０、＃２及び＃３は全て無効物理ページになっている。第３時点のテーブルＴ６０１は、図５のＳ５１１を実行した後の状態に相当する。
【００６９】
図９は、図８の時点から全てが非有効物理ページ（無効物理ページ又は空き物理ページ）となった物理ブロック＃１０に対して消去処理を行った後の時点（第４時点）のブロックページテーブルＴ６０１を示す。
【００７０】
第４の時点のテーブルＴ６０１によれば、物理ブロック＃１０の全ページが空き状態となっている。第４時点のテーブルＴ６０１は、図５のＳ５１３を実行した後の状態に相当する。
【００７１】
ここで、図６と図９を比較すると、データの格納位置は異なるものの、ページの属性（有効、無効又は空き）と各種属性の物理ページの数は一致していることがわかる。すなわち、図６〜図９を参照して説明した処理によって、データ待避や消去も含めたライトのフローが完了したことになる。図６〜図９を参照して説明した処理の流れの中で、上位装置から発行されたライト要求に従うライトは、１ページ分（物理ブロック＃１０の物理ページ＃３）のサイズ以下である。一方、フラッシュメモリに対して行われたライトは、有効物理ページのコピーも含むため、４ページ分（物理ブロック＃１０の物理ページ＃３、物理ブロック＃２２の物理ページ＃０、物理ブロック＃２２の物理ページ＃１、物理ブロック＃２２の物理ページ＃２）である。
【００７２】
図１０は、ページ状態遷移の第２の観点における第１時点でのブロックページテーブルＴ６０１を示す。第２の観点では、前提として、ユーザが使用可能な領域は、全物理容量の５０％である。すなわち、物理ブロック内の４つの物理ページのうち、平均的には２つの物理ページが有効な状態となる。
【００７３】
図１１は、図１０の時点からライトが発生した後の時点（第２時点）のブロックページテーブルＴ６０１を示す。
【００７４】
第２時点のテーブルＴ６０１によれば、第１時点で空き物理ページであった、物理ブロック＃１０の物理ページ＃２及び＃３にそれぞれアドレス＃１０１及び＃１００のデータが格納されている。これにより、物理ブロック＃１０の物理ページ＃０及び＃１はそれぞれ無効物理ページとなっている。第２時点のテーブルＴ６０１は、図５のＳ５０３を実行した後の状態に相当する。
【００７５】
図１２は、図１１の時点から、有効データの待避処理を行った後の時点（第３時点）のブロックページテーブルＴ６０１を示す。
【００７６】
第３時点のテーブルＴ６０１によれば、第２時点での、物理ブロック＃１０に含まれていた有効物理ページ＃２及び＃３のデータが、物理ブロック＃２２の物理ページ＃０及び＃１へコピーされ、コピー元の物理ページ＃２及び＃３が全て無効物理ページになっている。第３時点のテーブルＴ６０１は、図５のＳ５１１を実行した後の状態に相当する。
【００７７】
図１３は、図１２の時点から、全てが非有効物理ページ（無効物理ページ）となったブロック１０に対して消去処理を行った後の時点（第４時点）のブロックページテーブルＴ６０１を示す。
【００７８】
第４の時点のテーブルＴ６０１によれば、物理ブロック１０の全物理ページが空き状態となっている。第４時点のテーブルＴ６０１は、図５のＳ５１３を実行した後の状態に相当する。
【００７９】
ここで、図１０と図１３を比較すると、図６と図９の関係と同じく、データの格納位置は異なるものの、物理ページの数が属性（有効、無効、空き）毎に一致していることがわかる。図１０〜図１３を参照して説明した処理の流れの中で、上位装置から発行されたライト要求に従うライトは２ページ分（物理ブロック＃１０の物理ページ＃２及び＃３）である。一方、フラッシュメモリに対して行われたライトは、有効物理ページのコピーも含むため、４ページ分（物理ブロック１０＃の物理ページ＃２及び＃３、物理ブロック＃２２の物理ページ＃０及び＃１）である。
【００８０】
図６と図９、図１０と図１３は、前提条件として、物理容量に対するユーザが使用可能な容量の比率（容量率）が異なっており、この差がライト用空き物理ページ（更新データ格納領域）の量の差に影響する。図６〜図９、図１０〜図１３は、どちらもフラッシュメモリに対して４ページ分のライトが行われているが、上位装置からのライト要求に従うライトは、それぞれ１ページ分、２ページ分であり、ライトの量（データがライトされるページの数）に差が発生している。上位装置からのライト要求に従うライトの量に対して、フラッシュメモリに対して行われるライトの量が大きく増大する場合、ライトもしくはコピー処理によってフラッシュメモリアクセスに要するリソースを使用するため性能が悪化し、また、フラッシュメモリへのライト回数が増大することで寿命も短くなる。すなわち、更新容量を大きくとることで、性能と寿命を改善することが可能であることを示している。
【００８１】
図２５は、実施例に係る論理物理変換を実現するための階層構造の第１の例を示す。
【００８２】
最上位層は論理アドレス層１４０１であり、上位装置であるＲＡＩＤコントローラ１１１やホスト１０２が認識するための層である。説明を分かり易くするため、論理アドレス層１４０１内は、物理ページ１４５３と同一サイズの論理ページ１４１１で管理することとする。
【００８３】
論理アドレス層１４０１と物理層１４０５との間にある第１の中間層として、論理チャンク層１４０２が設けられる。論理チャンク層１４０２は、複数の論理チャンク１４２１で構成されている。各論理チャンク１４２１は、複数のＬＣページ１４２２で構成されている。以下、論理チャンク１４２１内のページを「ＬＣページ」と言うことがある。
【００８４】
論理ページ（論理アドレス範囲）１４１１は、ＬＣページ１４２２としてマッピングされる。さらに、ＬＣページ１４２２は、物理層１４０５内の物理ページ１４５３にマッピングされる。
【００８５】
これらのマッピングにより、論理ページ１４１１は論理チャンク１４２１（ＬＣページ１４２２）を介して物理ページ１４５３に割り当てられ、実際のデータ格納場所が決定される。例えば、ＬＢＡ０ｘ００は、ＬＣページ＃００としてマッピングされており、そのＬＣページ＃００は、物理ページ＃Ｆ００１にマッピングされている。このため、ＬＢＡ０ｘ００をライト先とするデータは、物理ページ＃Ｆ００１に格納されることになる。
【００８６】
図２５によれば、論理チャンク１４２１がＦＭチップ１４５１にマッピングされている。すなわち、論理チャンク＃０はＦＭチップ＃Ｆ０にマッピングされており、論理チャンク＃１はＦＭチップ＃Ｆ１にマッピングされている。これは、論理チャンク＃０内のＬＣページ１４２２はＦＭチップ＃Ｆ０のいずれかの物理ページにのみ関連付けられることを意味している。このような制限を設けることによって、論理物理変換情報３１２のサイズを低減することが可能である。例えば、論理チャンク１４２１が無いもしくは一つの場合、マッピングすべきページ数が例えば２の１６乗個存在した場合は、論理物理変換情報３１２に含まれる情報として、１ページあたり例えば２Ｂｙｔｅの情報が必要となる。一方、論理空間を例えば２の８乗個の論理チャンク１４２１に分割した場合、論理チャンク１４２１内でマッピングすべきページの数は例えば２の８乗個となり、論理物理変換情報３１２に含まれる情報は、１ページあたり例えば１Ｂｙｔｅでよい。このように、論理チャンク層１４０２を設けることによって、論理物理変換情報３１２のサイズを低減することができる。
【００８７】
図２５の例では、論理チャンク層１４０２が無い場合は、物理層１４０５に存在する全物理ページ１４５３を認識するための情報が必要であるが、論理チャンク層１４０２があれば、各論理チャンク１４２１が、ＦＭチップ１４５１にマッピングされているため、全物理ページ１４５３を認識するための情報は不要である。論理チャンク１４２１におけるページの位置（相対位置）からＦＭチップ１４５１内に存在する物理ページ１４５３を算出することが可能であるからである。
【００８８】
図１４は、本実施例に係る論理物理変換を実現するための階層構造の第２の例を示す。
【００８９】
この図に示す第２の例によれば、論理アドレス層１４０１と物理層１４０５との間に存在する中間層の数が、図２５に示した第１の例よりも多い。
【００９０】
すなわち、最上位層が論理アドレス層１４０１であり、論理アドレス層１４０１の下位に、前述した論理チャンク層１４０２があるが、第２の例によれば、更に、論理チャンク層１４０２の下位に、物理チャンク層１４０３があり、物理チャンク層１４０３の下位に、プール層１４０４がある。プール層１４０４の下位が、物理層１４０５である。物理チャンク層１４０３とプール層１４０４とのうちのいずれか一方は無くても良い。
【００９１】
物理チャンク層１４０３は、複数の物理チャンク１４３１で構成されている。各物理チャンク１４３１は、複数のブロック１４３１で構成されている。各ブロック１４３１は、複数のページ１４３３で構成されている。以下、物理チャンク１４３１におけるブロックを「ＰＣブロック」と言い、物理チャンク１４３１におけるページを「ＰＣページ」と言うことがある。
【００９２】
プール層１４０４は、複数のプール１４４１で構成されている。各プール１４４１は、複数のブロック１４４２で構成されている。各ブロック１４４２は、複数のページ１４４３で構成されている。各プール１４４１は同じサイズで良い。以下、プール１４４１におけるブロックを「プールブロック」と言い、プール１４４１におけるページを「プールページ」と言うことがある。複数のＦＭチップ１４５１は、複数のＦＭチップ群を構成して良く、プールは、１以上のＦＭチップ群に基づいて良い。ＦＭチップ群は、ＦＭチップ群を構成する複数のＦＭチップを有する回路基板、例えば、ＤＩＭＭ（Dual  Inline  Memory Module）で良い。１つのＦＭチップ群において、２以上のＦＭチップ１４５１のチップイネーブル線が共通であっても良い。また、２以上のＦＭチップ群に跨って、複数のＦＭチップ１４５１のチップイネーブル線が共通であっても良い。この場合、１つのチップイネーブル線を起動すれば、そのチップイネーブル線を共有する複数のＦＭバス２２３に並行してデータを書き込むことが可能となる。従って、後述するように、ＦＭバス２２３の異なる複数のＦＭチップの物理ページが隣り合う論理ページ１４１１に割り当てられるようなマッピングが行われることが望ましい。
【００９３】
ＰＣページ１４３３及びプールページ１４４３は、物理ページ１４５３と実質的に同一である。また、ＰＣブロック１４３２及びプールブロック１４４２は、物理ブロック１４５２と実質的に同一である。
【００９４】
論理チャンク１４２１は、物理チャンク１４３１に例えば１対１でマッピングされる。ＰＣブロック１４３２は、プールブロック１４４２に例えば１対１でマッピングされる。プールブロック１４４２は、物理ブロック１４５２に例えば１対１でマッピングされる。
【００９５】
ＬＢＡ０ｘ００は、ＬＣページ＃００にマッピングされている。そのＬＣページ＃００は、論理チャンク＃０がマッピングされている物理チャンク＃Ｃ０内のＰＣページ＃Ｃ０１０にマッピングされている。ＰＣページ＃Ｃ０１０は、ＰＣブロック＃Ｃ０１がマッピングされているプールブロック＃Ｐ０１内のプールページ＃Ｐ０１０にマッピングされている。プールページ＃Ｐ０１０は、プールブロック＃Ｐ０１がマッピングされている物理ブロック＃Ｆ０１内の物理ページ＃Ｆ０１０にマッピングされている。
【００９６】
これらの各階層におけるマッピングにおいて、制限もしくは自由度を与えることによって、適切な性能、寿命、論理物理変換情報サイズを得ることが出来る。例えば、本実施例では、論理アドレス層１４０１から論理チャンク層１４０１２の変換の際にストライピングを実施しており、隣り合う論理アドレス範囲（論理ページ１４１１）は、同一の論理チャンク１４２１ではなく、異なる論理チャンク（例えば隣り合う論理チャンク）１４２１にマッピングされる。すなわち、異なる論理チャンク（例えば隣り合う論理チャンク）１４２１を物理的に異なるリソース（例えば、ＦＭチップ１４５１、より具体的な例として、ＦＭバス２２３が異なるＦＭチップ１４５１）にマッピングするように構成することで、隣り合う論理アドレス範囲（論理ページ１４１１）は、異なる物理リソースに割り当てられ、並列処理が可能となる。後述の通り、本実施例ではこの割り当てがされる。
【００９７】
本実施例では、論理チャンク層１４０２と物理チャンク層１４０３では、論理チャンク１４２１と物理チャンク１４３１が１対１の対応となっている。例えば、論理チャンク＃０は物理チャンク＃Ｃ０に固定的に割り当てられている。ただし、論理／物理チャンク１４２１／１４３１内のページ１４２２／１４３３は自由に割り当てを変更可能である。例えば、図１４では、論理チャンク＃０のＬＣページ＃００は、物理チャンク＃Ｃ０のＰＣブロック＃Ｃ０１のＰＣページ＃Ｃ０１０にマッピングされているが、この領域の論理空間上の位置（ＬＢＡ０ｘ００）に対してライトが発生し、新たなデータが書かれた場合、そのデータは物理チャンク＃Ｃ０上の他のＰＣページにライトされ、その位置に対して特に制限は設けない。このため、物理チャンク１４３１上の自由な位置にライト対象のデータを配置することが出来る。ここで、後述の物理位置の制限を利用すると、類似した傾向のページ（例えば、アクセス頻度が類似したデータ）を同一ＰＣブロック１４３２（物理１４５２）に配置することが可能となる。これは、例えば、ホットスポットと呼ばれるような高頻度にライトされることが期待されるデータ群を同一のＰＣブロック１４３２（物理１４５２）に集めたり、または、逆にほとんどライトされない事が期待されるデータ群を同一のＰＣブロック１４３２（物理ブロック１４５２）に集めたり、将来シーケンシャルライトが発生することを予想し、論理アドレス上の近接データを同一のＰＣブロック１４３２（物理ブロック１４５２）に集めたりすることが出来る。これによって、例えば、高頻度にライトされるデータが集まったＰＣブロック１４３２（物理ブロック１４５２）に対して消去処理を実施しようとした場合に、そのＰＣブロック１４３２（物理ブロック１４５２）内に存在していたデータは既に別のライトによって無効化されている可能性が高くなり、コピー処理の量（リクラメーションにおいてコピーされるデータの量）が減ることが期待される。物理位置についての自由度を上げることは、より類似した傾向のページを集めることが可能となり、コピー量を低減可能であるが、一方で、論理物理変換情報３１２のサイズが大きくなってしまうというデメリットもある。本実施例においては、論理チャンク１４２１内の全ＬＣページ１４２２は、物理チャンク１４３１内のＰＣページ１４３３へマッピング可能であるため、ＬＣページ１４２２とＰＣページ１４３３との対応関係を表すマッピングテーブルを論理物理変換情報３１２に含める必要がある。
【００９８】
本実施例においては、物理チャンク層１４０３とプール層１４０４の変換において、複数の物理チャンク１４０３が一つのプール１４４１のリソースを使用する事を想定している。また、プール１４４１から物理チャンク１４０３へ付与されるリソースの単位はブロック１４４２であり、物理チャンク１４０３内のブロック１４３２はプール１４４１内のブロック１４４２へ１対１でマッピングされている。ただし、この対応関係は動的に変更されていく。図１４においては、物理チャンクＣ＃０のブロック＃Ｃ０１は、プール＃Ｐ０のブロック＃Ｐ０１に割り当てられており、物理チャンク＃Ｃ１のブロック＃Ｃ１０は、プール＃Ｐ０のブロック＃Ｐ０２にマッピングされている。また、ページ単位のマッピングは実施せず、ブロック内の相対位置によって定められるとしている。すなわち、ブロック＃Ｃ０１の先頭ページであるページ＃Ｃ０１０は、自動的にブロック＃Ｐ０１内の先頭ページ＃Ｐ０１０に割り当てられる。同様に、ページ＃Ｃ０１１はページ＃Ｐ０１１に割り当てられることになり、これらはブロック間の割り当て関係（Ｃ０１とＰ０１）が定められた際に自動的に決定される。ブロック間の割り当てについては、後述する。
【００９９】
本実施例における、プール層１４０４と物理層１４０５の関係については、ブロック１４４２、１４５２間のマッピングによって定められる。ブロック１４４２、１４５２間のマッピング（対応関係）は、本実施例では固定であるとする。例えば、プール＃Ｐ０内のブロック＃Ｐ０１は、ＦＭチップ＃Ｆ０のブロック＃Ｆ０１に割り当てられている。ページ１４４３、１４５３間のマッピングについては、物理チャンク１４０３におけるブロック１４３２内のページ１４３３とプール１４４１におけるブロック１４４２内のページ１４４３と同様に、ブロック１４４２、１４５２内の相対位置によって一意に定まるものとする。ここで、物理リソースのマッピングを適切に定めることにより、前述の並列処理を容易に実施する事が可能となる。例えば、隣り合う論理アドレス範囲（論理ページ）が隣り合う異なる論理チャンク１４２１にマッピングされ、隣り合う論理チャンク１４２１が隣り合う物理チャンク１４３１にマッピングされる。前述の通り、これらのマッピングについては固定的であるため、上記の通りに構成していればよい。物理チャンク１４３１が異なっていれば、ＦＭバス２２３が異なっていることが望ましい。物理チャンク１４３１内の使用されるブロック１４３２は動的に変化するため、ブロック１４０２を固定的にマッピングすることは出来ない。しかし、本実施例では、各物理チャンク１４３１に、使用するプール１４４１がマッピングされる。すなわち、隣り合う物理チャンク１４３１には隣り合うプール１４４１がマッピングされることとし、さらに、隣り合うプール１４４１には、異なるＦＭチップ（好ましくは、バス２２３が異なるＦＭチップ）１４５１がマッピングされることとする。これによって、隣り合う論理アドレス範囲（論理ページ）１４１１は、異なるＦＭチップ（好ましくは、ＦＭバス２２３が異なるＦＭチップ）１４５１にマッピングされることになる。これにより、大サイズのデータに対するアクセスやシーケンシャルアクセスなどの際に複数のＦＭチップ１４５１に並行してアクセスする（つまり並列処理を実施する）ことが出来る。また、上記は全て固定的なマッピングで並列処理が実現されており、動的な物理ブロックマッピングにおける物理位置であるＦＭチップ１４５１の意識が不要である。このため、物理位置の制限に関しては事前の構成によって実現可能であり、ＩＯ処理中に、物理位置の制限のための演算処理が不要である。図１４においては、ＬＢＡ０ｘ００が属するページ１４１１とＬＢＡ０ｘ０８が属するページ１４１１は、それぞれ論理チャンク＃０及び＃１に割り当てられる。論理チャンク＃０及び＃１は、それぞれ物理チャンク＃Ｃ０及び＃Ｃ＃１に割り当てられる。物理チャンク＃Ｃ０及び＃Ｃ＃１は、それぞれ、プール＃Ｐ０及び＃Ｐ１に割り当てられる。プール＃Ｐ０及び＃Ｐ１は、それぞれ、ＦＭチップ＃Ｆ０及び＃Ｆ１に割り当てられている。よって、隣り合う論理ページ１４１１（ＬＢＡ０ｘ００が属するページ１４１１とＬＢＡ０ｘ０８が属するページ１４１１）を同時もしくは連続的にアクセスするようなケースにおいて、ＦＭチップ＃Ｆ０及び＃Ｆ１の両方を動作させることとなる。
【０１００】
次に、物理チャンク１４０３へのプールブロック１４４２の割り当てについて述べる。図１４において、プールブロック＃Ｐ０２は物理チャンク＃Ｃ１に割り当てられているが、前述の通り、これらの対応関係は動的に変更される。また、ある物理チャンク１４３１に割り当てられているプールブロック１４４２に関して、そのプールブロック１４４２の位置が変更されるのみではなく、物理チャンク１４３１に割り当てられるプールブロック１４４２の個数についても変更可能とする。本実施例では、ある論理チャンク１４２１に含まれるＬＣページ１４２２の個数は固定とし、物理チャンク１４３１に含まれるＰＣブロック１４３２の個数を増減する事を可能とする。この方式によって、ある論理空間に割り当てられる物理リソース量、すなわちある数の論理ページに対して実際に使用可能な物理ページの数を増減する事を実現し、性能及び寿命の調整を可能とする。本方式の詳細は、図１５及び１６等を用いて後に説明する。
【０１０１】
また、本実施例では、論理チャンク１４２１内のページ１４２２の数を固定とし、物理チャンク１４３１内のブロック１４３２の数を変更する事により、上記調整が実現されているが、他の方法が用いられてもよい。例えば、論理チャンク１４２１に含まれるＬＣページ１４２２の数を増減してもよい。また本実施例では、論理チャンク１４２１と物理チャンク１４３１の対応関係は、１対１であるが、１対多、多対１でも良い。
【０１０２】
なお、本実施例において、論理アドレス層１４０１からプール層１４０４までの全てのページのサイズは、物理層１４０５の物理ページ１４５３のサイズと同一であるが、論理アドレス層１４０１からプール層１４０４のうちの少なくとも１つの層におけるページ（以下、「上位ページ」と言うことがある）のサイズは、物理ページ１４５３のサイズと異なるサイズとしてもよい。例えば、下記のうちのいずれか、
（１）上位ページのサイズを物理ページ１４５３のサイズよりも小さくすることにより、より小さなサイズのアクセスに対する性能及び寿命の向上を実現する、
（２）上位ページのサイズを物理ページ１４５３のサイズよりも大きくすることにより、論理物理変換情報３１２のサイズを低減する、
（３）論理アドレス層１４０１における１つの論理ページ１４１１を異なるＦＭチップ１４５１（好ましくはＦＭバス２２３が異なるＦＭチップ１４５１）の複数の物理ページ１４５３に割り当てることにより、並列処理を実現する、
が採用されて良い。
【０１０３】
また、物理層１４０５で考慮するリソースは、ＦＭチップ１４５１それ自体に限られないでよい。１つのＦＭチップ１４５１が複数のダイで構成されている場合は、ダイがリソースとして考慮されて良い。また、ＦＭチップ１４５１の一種の制御線であるチップイネーブルで接続されている部分、及び／又は、複数のＦＭチップ１４５１が接続されているＦＭバス２２３が、物理層１４０５で並列処理を意識する際のリソースとして考慮されて良い。
【０１０４】
また、本実施例では、各階層における隣り合う構成要素を意識して、これらを複数物理リソースに割り当てるような構成を記載しているが、必ずしも隣り合っていなくても良い。
【０１０５】
図１５は、論理チャンク１４２１と物理チャンク１４３１とプール１４４１との対応関係の一例を示す。
【０１０６】
論理チャンク１４２１に所属するＬＣページ１４２２は、全て物理チャンク１４３１内のＰＣページ１４３３に割り当てられている。基本的に、ライト先となった論理ページ１４１１に対応するＬＣページ１４２２には、いずれかのＰＣページ１４３３が割り当てられる。また、物理チャンク＃０に所属しているブロック＃０、＃１及び＃２は、プール＃０に所属しているブロック＃１、＃０及び＃２であり、これを物理チャンク＃０が使用している状態にある。プール＃０のブロック＃３については、物理チャンク＃０に割り当てられていない。また、図１５の例では、論理チャンク＃０に含まれるＬＣページ１４２２は８個であり、これに割り当てられている物理チャンク＃０に含まれるＰＣページ１４３３は１２個である。
【０１０７】
図１６は、図１５の状態から、さらにプールブロック＃３を物理チャンク＃０に割り当てた状態を示す。
【０１０８】
これは、図１５から、物理チャンク＃０（すなわち論理チャンク＃０）用のリソースとして、プール＃０から新たなプールブロック＃３を確保してきた状態に相当する。このとき、論理チャンク＃０に所属するページ１４２２の数は８個で変わっておらず、物理チャンク＃０に含まれるページ１４３３は１６個と増えている。このため、ユーザ容量に対して更新データ格納領域が多く確保されている状態に相当する。すなわち、図１５と図１６の関係は、図６から図９に対して、性能及び寿命の面で有利であった、図１０から図１３の関係と同等である。
【０１０９】
図２６は、図１６の状態から、論理ページのマッピングを整理した状況である。
【０１１０】
図５のＳ５１２の有効データ待避処理によって、物理チャンク＃０のブロック＃３に論理ページ１４１１（ＬＣページ１４２２）を割り当てていない状態が作り出されている。
【０１１１】
図２６の状態から、物理チャンク＃０のブロック＃３を解放した状態は、図１５と等しくなる。このとき、論理チャンク＃０に含まれるページ１４２２は８個、物理チャンク＃０に含まれるページ１４３３は１２個となっている。図２６において、物理チャンク＃０のブロック＃３に割り当てられていたプール＃０のブロック＃３は、割り当て状態が解除された状態であって、いずれの物理チャンク１４３１にも所属していない状態にある。よって、図１５から図１６で行ったように、プール＃０のブロック＃３は、物理チャンク＃０や、その他のプール＃０を使用している物理チャンク１４３１に、新たに割り当てられて良い。
【０１１２】
このように、物理チャンク１４３１に所属するブロック１４３２の数を調整することによって、容易に性能及び寿命の改善を実現可能であり、また、これらは論理チャンク単位で調整可能である。
【０１１３】
図２８は、プール１４４１からブロック１４４２を取得する処理をライト処理（図５）に追加したフローの一例を示す。以下、図５との相違点を主に説明する。
【０１１４】
ライト用の空き物理ページが十分に存在しない場合、フラッシュコントローラは、ライト先物理チャンク内にブロックが十分にあるか否かを判断する（Ｓ２８０２）。ライト先物理チャンクとは、ライト先の論理アドレスが属する論理アドレス範囲（ページ１４１１）に対応するページを含んだ論理チャンクにマッピングされている物理チャンクである。Ｓ２８０２の判断についての詳細については後述するが、これまで示してきたように、物理チャンクに割り当てられるブロックの数によって性能や寿命が変化する事から、性能や寿命の用件を満たすためのブロック数の期待値があり、Ｓ２８０２の判断は、物理チャンク内のブロック数がその期待値以上か否かの判断となる。物理チャンク内のブロック数の期待値は、例えば、図２３に示すテーブルＴ２３０１の「容量割り当て状態」の「目標」を基に分かる。
【０１１５】
ブロックが十分に無い場合、フラッシュコントローラは、プールからブロックを取得する（Ｓ２８１２）。ブロックの取得元のプールは、いずれのプールでも良いが、所与のポリシー（例えば、容量重視或いは性能重視）に基づき選択されても良い。例えば、フラッシュコントローラは、性能重視（例えば、連続した論理アドレス範囲にアクセスが生じた場合に複数のＦＭチップが並列に動作するようにすること）がポリシーであれば、隣り合う論理アドレス範囲にアクセスが生じた場合に異なるプール（ＦＭチップ）にアクセスが生じるようにプールを選択しても良い。
【０１１６】
ブロックが十分にある場合、フラッシュコントローラは、ライト先物理チャンクにおける既に割り当て済みのブロックから空きブロックを生成する必要があるため、ライト先物理チャンクについて、空きブロック生成処理（Ｓ２８１３）を行う。ブロック取得（Ｓ２８１２）及び空きブロック生成処理（Ｓ２８１３）を行った後、フラッシュコントローラは、再びライト用の空き物理ページ数の判断（Ｓ２８０２）に戻り、ライト処理を続行する。なお、図２８では、空き物理ページ生成のための一連の処理（Ｓ２８１１，Ｓ２８１２，Ｓ２８１３）を、ライト処理と同期して実施しているが、これらは、図５における空き物理ページ生成処理と同様に、ライト処理とは非同期に実施されてもよい。
【０１１７】
図２９は、空きブロック生成処理（Ｓ２８１３）のフローの一例を示す。
【０１１８】
空きブロック生成処理が開始されると（Ｓ２９０１）、フラッシュコントローラは、まず、空き物理ページ生成対象ブロックを選択する（Ｓ２９０２）。次に、フラッシュコントローラは、選択されたブロック内の有効データを別のブロックに待避し（Ｓ２９０３）、その後、そのブロックは非有効物理ページのみで構成されているため、そのブロックに対して消去処理を実施する（Ｓ２９０４）。Ｓ２９０４までの処理は、図５における空きブロック生成処理（Ｓ５１１，Ｓ５１２，Ｓ５１３）と同等であり、これによって空きブロックが生成される。
【０１１９】
次に、フラッシュコントローラは、処理中の物理チャンク内のブロック数が期待値以上か否かを判断する（Ｓ２９０５）。
【０１２０】
ブロック数が期待値未満である場合は、フラッシュコントローラは、そのまま空きブロック生成処理を終了する（Ｓ２９０６）。
【０１２１】
ブロック数が期待値以上である場合は、フラッシュコントローラは、生成した空きブロックをプールに返却する（Ｓ２９１１）。返却先のブールは、空きブロックを有するＦＭチップ１４５１に基づくプールで良い。Ｓ２９１１は、物理チャンクに割り当てられているブロックの解放処理に相当し、各物理チャンクに適切な量のブロックを割り当てるための処理となる。なお、図２８において、空きブロック生成処理は、ライト処理と同期して実行しているが、空き物理ページ生成の処理と同様に、ライト処理とは非同期に空きブロック生成処理を実行してもよい。
【０１２２】
図１７は、論理物理変換情報３１２が含む情報群の一例を示す。
【０１２３】
論理物理変換情報３１２は、論理チャンク構成情報１７０１と、論理チャンク−物理チャンク変換情報１７０２と、物理チャンク構成情報１７０３と、物理チャンク内ページ情報１７０４と、プール構成情報１７０５と、容量割り当て情報１７０６とを含む。以下、これらの情報を説明する。
【０１２４】
図１８は、論理チャンク構成情報１７０１の構成例を示す。
【０１２５】
この情報１７０１は、論理チャンク構成情報テーブルＴ１８０１を含む。テーブルＴ１８０１は、論理アドレス層１４０１の論理ページ１４１１がそれぞれ論理チャンク層１４０２でどの論理チャンク及びＬＣページに割り当てられているかを示す。
【０１２６】
図１８によれば、これらの情報をテーブルにより表しているため、論理空間上のページをどのような論理チャンク・ＬＣページの番号に割り当てるかは自由に決定されて良い。
【０１２７】
一方で、論理アドレス層と論理チャンク層との間では、単純な割り当てを適用する方法も有効である。例えば、ＬＢＡ（論理アドレス）の昇順で論理チャンク内のＬＣページ番号が増加していき、ＬＣページ番号が論理チャンクのページ数上限に従う番号に到達した場合に、ＬＢＡが次の論理チャンクに割り当てられる方法が考えられる。他には、図１８のテーブルＴ１８０１のように、ＬＢＡ昇順で、論理チャンク内ページ番号が変わらず、論理チャンク番号が加算されていくような方法も考えられる。これらの単純なルールを設ける方法の場合は、論理チャンク構成情報１７０１をテーブルとして実現する必要はなく、計算式によって構成を求めることも可能である。この場合は、メモリ量の削減や、該当する論理チャンク番号及びページ番号を求める際のサーチ処理の低減が可能となる。
【０１２８】
図１９は、論理チャンク−物理チャンク変換情報１７０２の構成例を示す。
【０１２９】
この情報１７０２は、論理チャンク−物理チャンク変換情報テーブルＴ１９０１を含む。テーブルＴ１９０１は、論理チャンク１４２１内のページ１４２２が、それぞれ物理チャンク層１４０３のどの物理チャンク１４３１及びＰＣページ１４３３に割り当てられているかを示す。本実施例では、論理チャンク層１４０２と物理チャンク層１４０３との間で、ページ単位のマッピングが実施されている。
【０１３０】
図２０は、物理チャンク構成情報１７０３の構成例を示す。
【０１３１】
この情報１７０３は、論理チャンク構成情報テーブルＴ２００１を含む。テーブルＴ２００１は、物理チャンク１４３１が、使用するプールはどこであり、現在いくつのブロックを所有しており、それらのブロックの番号は何かを示す。論理物理変換情報３１２のサイズの低減のため、ここでは、物理チャンク１４３１に関して使用中のブロックが順序通りに並べられている。これにより、テーブルＴ１９０１内の物理チャンク１４３１内ページの番号から、該当する物理ブロック番号と、その物理ブロック内のページの位置が特定される。つまり、ページ単位の位置が特定される。
【０１３２】
図２１は、物理チャンク内ページ情報１７０４の構成例を示す。
【０１３３】
この情報１７０４は、物理チャンク内ページ情報テーブルＴ２１０１を含む。テーブルＴ２１０１は、各物理チャンクに所属する各ブロックとその中のページに関する状態（現在どのＬＣページに割り当てられているか、割り当てられておらず無効データが格納されているのか、或いは空き物理ページなのか）を示す。
【０１３４】
このテーブルＴ２１０１は、必ずしもＩＯ処理に必須の情報だけではない。例えば、ブロック番号は、このテーブルＴ２１０１内の使用ブロック番号から特定され、ページ番号は、順序通りに並べることで、テーブルＴ２１０１に登録することが不要で良い。状態のうち、論理チャンク内のページ番号については、逆方向である論理位置から物理位置を調査する方法が存在するため不要で良い。しかし、物理位置から論理位置を調査する必要がある場合等には有用な情報となる。このようなケースとしては、例えば、ＦＭチップ１４５１もしくはその一部に障害が発生し、障害の生じた物理位置（ＦＭチップ、ブロック或いはページ）から論理位置を特定し、データを待避する必要が生じたケース、などが考えられる。
【０１３５】
図２２は、プール構成情報１７０５の構成例を示す。
【０１３６】
この情報１７０５は、プール構成情報テーブルＴ２２０１を含む。テーブルＴ２２０１は、各プールの基になっているＦＭチップ及び物理ブロックの状態（例えば、現在どの物理チャンクに所属しているか、無所属、又は空き状態）を示す。テーブルＴ２２０１には、ＦＭバス２２３などの、物理層１４０５で管理すべきリソース、についての情報が記載されてもよい。
【０１３７】
図２３は、容量割り当て情報１７０６の構成例を示す。
【０１３８】
この情報１７０６は、容量割り当てテーブルＴ２３０１を含む。このテーブルＴ２３０１は、各記憶領域がどのような属性及び状態にあり、またどのように変更すべきかを示す。ここで、テーブルＴ２３０１によれば、記憶領域は、論理アドレスで示される。各記憶領域の属性としては、例えば、ＲＡＩＤ５パリティのような、上位装置の使用方法から決定される属性や、高頻度ライトのような運用中における統計情報から決定される属性や、容量指定のような管理者からの指示により決定される属性が存在する。
【０１３９】
一方、物理チャンク内のブロック数によって性能や寿命を調整する方式においては、このテーブルＴ２３０１で最終的に求められる情報としては、各物理チャンクに割り当てようとする容量（ブロック数）である事が望ましい。よって、容量割り当てテーブルＴ２３０１では、記憶領域から物理チャンク番号への変換を行っている。図２３によれば、ある連続した記憶領域は複数の物理チャンクで構成され、ある物理チャンクが複数の記憶領域にまたがることは無い構成が採用されている。記憶領域のサイズが大きく、論理チャンクのサイズが小さく、ストライピングのサイズと数が小さい場合に採用されることが望ましい。
【０１４０】
上記以外の場合では、１つ物理チャンクが複数の記憶領域にまたがってしまい、図２３のような形式での管理は困難となる。この場合は、物理チャンク毎にどのような属性のデータがどのくらい含まれているかを表す情報が管理され、その情報を基に、割り当てる容量を決定することが望ましい。
【０１４１】
容量割り当てテーブルＴ２３０１では、物理チャンク毎に、現状割り当て容量と、目標容量とが管理されている。なお、本実施例では、論理チャンクのサイズが固定とされているため、同一属性の物理チャンクについては、目標とする割り当て容量は同一となる。このテーブルＴ２３０１を基に、物理チャンクのブロック確保・解放が実施される。例えば、記憶領域＃１に関連付けられている物理チャンク＃０は、目標４ＭＢに対して、現状も４ＭＢであるため、特にブロックの確保・解放処理は実施されない。記憶領域＃１に関連付けられている物理チャンク＃１０は、目標８ＭＢに対して、現状６ＭＢで、割り当て済みブロック数は過少となっているため、その物理チャンク＃１０に対してブロックが追加されようとする。これは、ライトと同期した空き物理ページ確保処理（Ｓ２８１２）や、非同期の空き物理ページ確保処理の際に実施されて良い。一方、記憶領域＃４の物理チャンク＃４０は、目標３ＭＢに対して、現状は６ＭＢで、割り当て済みブロック数は過多となっているため、その物理チャンク＃４０からブロックが解放されそのブロックがプールに返却されて良い。すなわち、空きブロック生成処理中のブロック返却処理（Ｓ２９１１）が実施されて良い。
【０１４２】
このように、記憶領域の属性から、具体的な物理チャンクの割り当て目標サイズが決定され、その目標に従うようにプール１４４１からリソースが割り当てられて良い。ただし、例えば、全ての記憶領域で高頻度なライトが発生し、物理的な容量以上の容量を要求するような場合など、目標を全て満足することは不可能である可能性がある。このため、常に現状と目標値を監視し、容量割り当てテーブルＴ２３０１の容量割り当て状態によって割り当てが制御されて良い。
【０１４３】
容量割り当てテーブルＴ２３０１が表す記憶領域は、論理アドレスで示されており、前述したように、各記憶領域の属性には、管理者からの指示で決定される項目が存在する。しかし、ストレージシステム１０１を使用するホスト１０２及び管理システム１０３からは、フラッシュストレージデバイス１４１上の論理アドレスを特定することは困難である
【０１４４】
図３０は、ホスト１０２（及び／又は管理システム１０３）のユーザが使用するアドレス空間と、フラッシュストレージデバイス１４１上の論理アドレス空間の関連の一例を示す。
【０１４５】
ユーザが使用するユーザアドレス空間３００１は、通常、ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）番号とその論理アドレス（ＬＢＡ）によって決定される。図３０においては、ＬＵ３００１が複数あり、その中に複数の論理ブロック３０２１が存在している。ユーザアドレス空間３００１中のＬＵ３０１１は、複数のフラッシュストレージ論理空間３００２に跨がって構成されるＬＵ３０１２に割り当てられている。ユーザアドレス空間３００１中の論理ブロック３０２１も、同様にフラッシュストレージ論理空間（論理アドレス空間）１４０１中のボリュームブロック３０２２に割り当てられている。
【０１４６】
ホストは、各ＬＵ内のアドレスに対してリードやライトなどのコマンドを発行し、発行されたコマンドのアドレスは、最終的にフラッシュストレージデバイス１４１上の論理空間に割り当てられる。この割り当ては、一般的にＲＡＩＤコントローラ１１１が行う。図３０では、割り当ての一例を示しているが、この割り当て方法は、ＲＡＩＤレベルと呼ばれる冗長性を持たせるための上長データの構成方法やデータ格納の配置や、ストライピングと呼ばれるデータ分散の単位とその分散範囲や、仮想割り当て機能と呼ばれるデータ配置の仮想化機能などによって、様々なパターンが存在しており、ユーザがこれを意識して動作を決定することは困難である。すなわち、ユーザは、フラッシュストレージデバイス１４１の論理アドレスを意識することが困難であり、これを指定した属性の設定もまた困難である。
【０１４７】
一方、ユーザが意識して属性等を設定可能な単位としてはＬＵがある。例えば、特定のＬＵをデータベースに、別のＬＵをファイルシステムに使用するなど、ＬＵを用途によって使い分けることは一般的であり、ユーザがこれらに応じて属性を設定することも可能である。なお、ＬＵは、Ｔｈｉｎ  Ｐｒｏｖｉｏｎｉｎｇに従う仮想的なＬＵ（ＴＰ−ＬＵ）の領域に割り当てられるセグメントを含んだプールＬＵでも良い。プールＬＵは、容量プールを構成するＬＵであって、複数のセグメントに分割して管理される。ＴＰ−ＬＵの領域に対してセグメントが割り当てられる。この場合、セグメントが、１以上の論理ブロック３０２１で構成されていて良い。
【０１４８】
図２４は、容量割り当て方針を設定するための管理画面の一例を示す。
【０１４９】
ここで言う「管理画面」とは、管理システムが有するディスプレイに表示される画面である。管理画面２４０１は、容量割り当てポリシー設定状況２４１１と、容量割り当てポリシー設定部位２４１２とを表示する。容量割り当てポリシー設定状況２４１１にはポリシー設定状況テーブル２４２１があり、各ＬＵの現状のポリシーが示されている。
【０１５０】
図２４においてポリシーとして設定されている項目を例として以下に示す。
【０１５１】
ＬＵ＃０について設定されている「自動」は、フラッシュストレージデバイス１４１が自動的に容量の設定を行うことを意味する。
【０１５２】
ＬＵ＃１について設定されている「通常」は、フラッシュストレージデバイス１４１内で通常使用される量の容量割り当てを行うことを意味する。すなわち、ＬＵ＃１が使用する論理チャンクには、フラッシュストレージデバイス１４１内で論理チャンクに平均的に割り当て可能な物理チャンク容量が割り当てられる。
【０１５３】
ＬＵ＃２について設定されている「性能・寿命優先」は、性能・寿命面で有利になるように、ＬＵ＃２が使用する論理チャンクには物理チャンク容量を多めに割り当てられることを意味する。
【０１５４】
ＬＵ＃３について設定されている「容量優先」は、ＬＵ＃３が使用する論理チャンクに物理チャンク容量を少なめに割り当てることを意味する。
【０１５５】
ＬＵ＃４について設定されている「ライト量大」は、割り当て量の指定という形式になっておらず、ユーザが当該ＬＵに対するＩＯ特性という形式で指定している。ライト量が大きいことから、当該ＬＵを効率よく動作させるため、性能・寿命優先と同様の設定を行う。すなわち、ＬＵ＃４が使用する論理チャンクには、物理チャンク容量を多めに割り当てる。
【０１５６】
ＬＵ＃５について設定されている「更新容量２０％」は、具体的な容量比率の指定という形式になる。この場合、ＬＵ＃５が使用する論理チャンクには、その容量の１２０％の物理チャンク容量が割り当てられる。
【０１５７】
容量割り当てポリシー設定部位２４１２は、設定部位２４３１と、実行ボタン２４３２と、キャンセルボタン２４３３とを含む。設定部位２４３１にて、対象とするＬＵと、設定するポリシーとが選択され、実行ボタン２４３２が押されることによって、ＬＵ及びポリシーの組み合わせが、反映される。
【０１５８】
図２４では、ＬＵ単位でポリシーが設定されているが、ユーザが指定可能な他種の単位で設定されても良い。例えば、最も詳細な設定を行う場合には、容量割り当てテーブルＴ２３０１における記憶領域と同一となり、これは、本実施例においては論理チャンク単位となる。しかし、前述の通り、ユーザがフラッシュストレージを意識した設定を行う事を避けるために、ユーザがＩＯ特性及び目標性能を認識可能な単位としては、ＬＵが望ましい。ＬＵの他には、上位装置としてファイルサーバを用いた場合のファイルシステム単位やファイル単位が、これらの設定単位として有用で良い。
【０１５９】
本管理画面の設定は、ストレージシステム１０１に対する設定である。ＬＵ単位の設定は、フラッシュストレージ論理空間に変換され、フラッシュストレージデバイス１４１内の容量割り当て情報１７０６に登録される。
【０１６０】
図２７は、容量割り当て情報１７０６の変更処理フローの一例を示す。
【０１６１】
本フローは、図２４で示した容量割り当て方針の設定や、構成情報の変更や、定期的な更新などによって開始される。図２４で示したように、本実施例における容量割り当て方針はＬＵ単位で設定することを想定している。このため、図２４で設定及び変更された方針は、フラッシュストレージデバイス１４１の論理アドレス単位の設定に変更されて、フラッシュストレージデバイス１４１に届くものとする。例えば、図２４の容量割り当てポリシー設定２４１２にて、ＬＵ１を容量優先に設定した場合、ＲＡＩＤコントローラ１１１が、ＬＵ１に該当するフラッシュストレージデバイス１４１及びその論理アドレスを指定して、同様の設定変更指示を行う。また、本フローは、構成情報の変更によっても実行される。これは、例えばストレージシステム１０１内のあるＬＵが削除された場合や、ＬＵが追加された場合、ＲＡＩＤ構成が変更され、データやパリティの位置が変更された場合などが該当する。例えば、あるＬＵが削除された場合、このＬＵに割り当てられていたフラッシュストレージデバイス１４１の論理アドレスは解放可能であり、この動作によって、物理割り当て容量は変化するため、変更処理が必要となる。他にも、容量割り当て情報１７０６にはライト頻度などの統計情報が含まれており、これを定期的に更新するため、本フローは定期的にも実行される。
【０１６２】
上記のような契機で変更処理が開始され（Ｓ３１０１）、まず、フラッシュコントローラは、設定変更未反映の領域があるかのチェックを行う（Ｓ３１０２）。領域とは、容量割り当て情報１７０６中の領域である。
【０１６３】
未反映の領域がある場合は、フラッシュコントローラは、該当する領域に対して属性を変更する（Ｓ３１０３）。ここで変更する属性は、ユーザ指示によるものである。例えば、図２４において、通常指定だったＬＵ１を容量優先に変更する場合、ＬＵ１が格納されている領域に対して、通常指定から容量優先指定に変更を行っていく。
【０１６４】
Ｓ３１０２において、未反映の領域がなくなった場合は、フラッシュコントローラは、領域毎の統計情報を属性に反映する（Ｓ３１１１）。これは、各領域に対するライト頻度等の属性情報であり、ユーザ指示とは無関係に決定される項目である。
【０１６５】
Ｓ３１０３及びＳ３１１１によって、全領域の属性が定まったため、これらを考慮して、フラッシュコントローラは、目標とする割り当て容量を決定する（Ｓ３１１２）。このとき、容量指定の領域以外は、割り当て目標の全体平均を考慮した数値とすることが望ましい。例えば、物理チャンク全体の容量が論理チャンク全体の容量の２倍だった場合に、全ての領域が性能優先で設定されており、各領域の物理チャンク容量目標を論理チャンク容量の３倍で設定した場合などは、状況によっては全領域について現状の割り当て容量が目標を下回ってしまい、常に物理チャンクにブロックを確保しようとする状況が発生し、ブロックの確保解放が多発する、効率の悪い処理となってしまう可能性があるためである。
【０１６６】
容量割り当て目標を設定すると、容量割り当て情報１７０６は全て最新の情報に更新されるため、フラッシュストレージは、処理を終了する（Ｓ３１２１）。以降は、新しくなった容量割り当て情報１７０６に従って、フラッシュストレージは、ブロック確保処理（Ｓ２８１２）などを行う。
【０１６７】
以上のように、記憶領域の単位（例えばＬＵ単位）で、記憶領域の属性が設定される。記憶領域の属性は、例えば、記憶領域の上位装置による使用方法が示す属性（例えば、ＲＡＩＤレベル）や、記憶領域について運用中に取得される統計情報が示す属性（例えば、アクセス頻度、最終アクセス時刻）や、記憶領域について管理者からの指示に従う属性（例えば、目標値（期待値）のｙ％（例えばｙは０より大きい値であって１００以下）を割り当てる）がある。記憶領域のこのような属性に従って、フラッシュコントローラ（或いは、ＲＡＩＤコントローラ又は管理システム）が、その記憶領域に属する物理チャンクの容量の目標値（期待値）が決定される。例えば、その目標値の算出方法としては、所定の基準値に、記憶領域の属性に従う係数を乗じて得る方法で良い。記憶領域の属性は、記憶領域の単位について入力されたポリシーに従って決定されて良い。
【０１６８】
以上、一実施例を説明したが、本発明は、この実施例に限定されない。例えば、フラッシュストレージ１３１が有する情報（論理物理変換情報３１２）を、ＲＡＩＤコントローラ１１１が持っていても良い。また、フラッシュコントローラが行なう処理の少なくとも一部を、ＲＡＩＤコントローラ１１１が行っても良い。
【符号の説明】
【０１６９】
１０１：ストレージシステム
【図１】
2013046464.tif 000003
【図２】
2013046464.tif 000004
【図３】
2013046464.tif 000005
【図４】
2013046464.tif 000006
【図５】
2013046464.tif 000007
【図６】
2013046464.tif 000008
【図７】
2013046464.tif 000009
【図８】
2013046464.tif 000010
【図９】
2013046464.tif 000011
【図１０】
2013046464.tif 000012
【図１１】
2013046464.tif 000013
【図１２】
2013046464.tif 000014
【図１３】
2013046464.tif 000015
【図１４】
2013046464.tif 000016
【図１５】
2013046464.tif 000017
【図１６】
2013046464.tif 000018
【図１７】
2013046464.tif 000019
【図１８】
2013046464.tif 000020
【図１９】
2013046464.tif 000021
【図２０】
2013046464.tif 000022
【図２１】
2013046464.tif 000023
【図２２】
2013046464.tif 000024
【図２３】
2013046464.tif 000025
【図２４】
2013046464.tif 000026
【図２５】
2013046464.tif 000027
【図２６】
2013046464.tif 000028
【図２７】
2013046464.tif 000029
【図２８】
2013046464.tif 000030
【図２９】
2013046464.tif 000031
【図３０】
2013046464.tif 000032
【手続補正書】
【提出日】平成26年11月14日(2014.11.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の物理記憶領域を備える不揮発半導体記憶媒体と、
前記複数の物理記憶領域と論理アドレス空間との対応関係を表す情報である論理物理変換情報を記憶する記憶部と、
前記記憶部及び前記不揮発半導体記憶媒体に接続されたコントローラである媒体コントローラと
を有し、
前記論理物理変換情報が、
（Ａ）前記論理アドレス空間を所定の範囲毎に区切った複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、
（Ｂ）複数の論理チャンクと複数の物理チャンクとの対応関係を示す情報と、
を含み、
前記複数の論理チャンクのそれぞれに、前記複数の論理ページのうちの２以上の論理ページが割り当てられ、
前記複数の論理チャンクのそれぞれに、前記複数の物理チャンクのうちの１つが割り当てられ、
前記複数の物理チャンクのそれぞれに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられ、
前記媒体コントローラは、前記論理物理変換情報を基に、データのライト先の論理アドレスが属する論理ページが割り当てられている論理チャンクに割り当てられている物理チャンクに割り当てられている物理記憶領域を特定し、その特定された物理記憶領域に、前記データを書き込むよう構成されており、
前記媒体コントローラは、前記複数の物理チャンクのそれぞれに対して物理記憶領域の割り当て及び解放を制御することで物理チャンクに割り当てる物理記憶領域の数を変更する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記（Ｂ）の情報は、更に、複数の物理チャンクと複数のプールとの対応関係を表す情報、を含み、
前記複数のプールのそれぞれに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられており、
（Ｘ）前記媒体コントローラが、前記物理チャンクが割り当てられているプールからその物理チャンクに物理記憶領域を割り当て、
（Ｙ）前記媒体コントローラが、前記物理チャンクに割り当てられている物理記憶領域をそのプールに戻す、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
隣り合う論理ページが、異なる論理チャンクの論理ページであり、
異なる物理チャンクに、異なる物理リソースの物理記憶領域が割り当てられる、
ストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
前記不揮発記憶媒体は、ブロック単位でデータが消去されページ単位でアクセスされるタイプのフラッシュメモリであり、
前記フラッシュメモリは、異なる複数のフラッシュメモリバスに接続された複数のメモリチップを含み、
前記複数のメモリチップのそれぞれが、複数の物理ブロックを有し、
前記複数の物理ブロックのそれぞれが、複数の物理ページを有し、
前記物理記憶領域は、前記物理ページであり、
前記物理チャンクの領域は、前記物理チャンクを構成する複数のブロックのうちのいずれかのブロックであり、
前記プールの領域は、前記プールを構成する複数のブロックのうちのいずれかのブロックであり、
前記複数の物理チャンクのそれぞれにおける複数のブロックのそれぞれに、前記複数のプールのそれぞれにおける複数のブロックのいずれかが割り当てられており、
前記複数のプールのそれぞれにおける複数のブロックのそれぞれに、前記複数のメモリチップのそれぞれにおける複数の物理ブロックのいずれかが割り当てられており、
前記異なる物理リソースは、異なるフラッシュメモリバスである、
ストレージシステム。
【請求項５】
請求項４記載のストレージシステムであって、
前記媒体コントローラは、
ライト先の論理ページ群に対応した物理ブロックにライト対象のデータのサイズ以上の空きの物理ページが無ければ、前記ライト先の論理ページ群を構成する２以上の論理ページが割り当てられた１以上の論理チャンクのそれぞれについて、その論理チャンクに対応した物理チャンクに割り当てられているブロックの数が、その物理チャンクについての期待値以上か否かを判断し、
その判断の結果が否定的の場合に、前記（Ｘ）として、前記物理チャンクが割り当てられているプールからその物理チャンクにブロックを追加する、
ストレージシステム。
【請求項６】
請求項５記載のストレージシステムであって、
前記物理チャンクに割り当てられるブロックの目標値は、その物理チャンクの属性によって異なり得る、
ストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記物理チャンクの属性は、その物理チャンクが属する記憶領域単位で指定されたポリシーに従って決定される、
ストレージシステム。
【請求項８】
請求項７記載のストレージシステムであって、
複数の不揮発記憶デバイスと、
前記複数の不揮発記憶デバイスとホスト装置とに接続された上位のコントローラと
を有し、
各不揮発記憶デバイスが、前記不揮発記憶媒体と前記記憶部と前記媒体コントローラとを有し、
前記複数の不揮発記憶デバイスに基づく論理的な記憶領域である論理ユニットが前記ホスト装置に提供され、
前記論理ユニットの論理アドレスが、その論理ユニットに基づく複数の不揮発記憶デバイスのそれぞれの論理アドレスに対応している、
ストレージシステム。
【請求項９】
請求項１記載のストレージシステムであって、
隣り合う論理ページに異なる論理チャンクのページが割り当てられ、
異なる論理チャンクのページに、異なる物理リソースの物理記憶領域が割り当てられる、
ストレージシステム。
【請求項１０】
請求項９記載のストレージシステムであって、
前記異なる物理リソースは、前記媒体コントローラから物理記憶領域に書き込まれるデータが経由する異なるバスであり、
前記媒体コントローラは、連続した複数の論理ページがライト先の場合、複数の異なるバスを介して複数の異なる物理記憶領域にデータを並行して書き込む、
ストレージシステム。
【請求項１１】
請求項９又は１０記載のストレージシステムであって、
２以上の異なる回路基板に複数の物理記憶領域が配置されており、
前記異なる物理リソースは、異なる前記回路基板である、
ストレージシステム。
【請求項１２】
請求項１記載のストレージシステムであって、
前記不揮発記憶媒体は、ブロック単位でデータが消去されページ単位でアクセスされるタイプのフラッシュメモリであり、
前記フラッシュメモリは、異なる複数のフラッシュメモリバスに接続された複数のメモリチップを含み、
前記複数のメモリチップのそれぞれが、複数の物理ブロックを有し、
前記複数の物理ブロックのそれぞれが、複数の物理ページを有し、
前記物理記憶領域は、前記物理ページである、
ストレージシステム。
【請求項１３】
請求項１２記載のストレージシステムであって、
前記（Ｂ）の情報は、更に、複数の物理チャンクと複数のプールとの対応関係を表す情報、を含み、
前記複数のプールのそれぞれを構成する複数のブロックのそれぞれに、前記複数の物理チャンクのそれぞれにおける複数のブロックのいずれかが割り当てられており、
前記媒体コントローラが、
ライト先の論理ページ群に対応した物理ブロックにライト対象のデータのサイズ以上の空きの物理ページが無ければ、前記ライト先の論理ページ群を構成する２以上の論理ページが割り当てられた１以上の論理チャンクのそれぞれについて、その論理チャンクに対応した物理チャンクに割り当てられているブロックの数が、その物理チャンクについての期待値以上か否かを判断し、
その判断の結果が否定的の場合に、前記物理チャンクが割り当てられているプールからその物理チャンクにブロックを追加する、
ストレージシステム。
【請求項１４】
不揮発半導体記憶媒体が備える複数の物理記憶領域と論理アドレス空間との対応関係を表す情報である論理物理変換情報を基に記憶制御を行うストレージシステムの記憶制御方法であって、
前記論理物理変換情報が、
（Ａ）前記論理アドレス空間を所定の範囲毎に区切った複数の論理ページと複数の論理チャンクとの対応関係を表す情報と、
（Ｂ）複数の論理チャンクと複数の物理チャンクとの対応関係を示す情報と、
を含み、
前記複数の論理チャンクのそれぞれに、前記複数の論理ページのうちの２以上の論理ページが割り当てられ、
前記複数の論理チャンクのそれぞれに、前記複数の物理チャンクのうちの１つが割り当てられ、
前記複数の物理チャンクのそれぞれに、前記複数の物理記憶領域のうちの２以上の物理記憶領域が割り当てられ、
前記記憶制御方法が、
前記論理物理変換情報を基に、データのライト先の論理アドレスが属する論理ページが割り当てられている論理チャンクに割り当てられている物理チャンクに割り当てられている物理記憶領域を特定し、その特定された物理記憶領域に、前記データを書き込み、
前記複数の物理チャンクのそれぞれに対して物理記憶領域の割り当て及び解放を制御することで物理チャンクに割り当てる物理記憶領域の数を変更する、
記憶制御方法。
【国際調査報告】
2013046464.tif 000033
2013046464.tif 000034