(57)【要約】【課題】不揮発性半導体メモリデバイスを接続可能なストレージシステムにおける平均リードレイテンシを低く維持できるようにする。【解決手段】１以上のＳＳＤ２２０を接続可能であって、ＳＳＤ２２０の記憶領域に対するデータの入出力を制御可能なストレージシステム２０において、ストレージシステム２０は、処理を実行するプロセサ２１１を有し、プロセサ２１１を、１以上の同一の特性のＳＳＤ２２０により提供される記憶領域の一部を所定のデータを記憶するための第1記憶領域（性能保持領域）として管理し、ライトアクセス頻度が所定値未満であるデータの中から、第１記憶領域に格納させるデータを決定し、第１記憶領域に格納させ、第１記憶領域に格納させると決定されなかったデータを、ＳＳＤ２２０により提供される第１記憶領域と異なる第２記憶領域（普通領域）に格納させるように構成する。【選択図】図１
2019159639.tif 000002
【特許請求の範囲】
【請求項１】
１以上の不揮発性半導体メモリデバイスを接続可能であって、前記不揮発性半導体メモリデバイスの記憶領域に対するデータの入出力を制御可能なストレージシステムであって、
前記ストレージシステムは、処理を実行するプロセサ部を有し、
前記プロセサ部は、
１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される記憶領域の一部を所定のデータを記憶するための第１記憶領域として管理し、
ライトアクセス頻度が所定値未満であるデータの中から、前記第１記憶領域に格納させるデータを決定し、前記第１記憶領域に格納させ、前記第１記憶領域に格納させると決定されなかったデータを、前記１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される前記第１記憶領域と異なる第２記憶領域に格納させる
ストレージシステム。
【請求項２】
前記プロセサ部は、
ライトアクセス頻度が所定値未満であるデータについて、リードアクセス頻度がより高いデータを優先して前記第１記憶領域に格納させるデータに決定する
請求項１に記載のストレージシステム。
【請求項３】
前記プロセサ部は、
ライトアクセス頻度が所定値未満であるデータであって、リードアクセス頻度が高いほうから所定の順番以内のデータを前記第１記憶領域に格納させるデータに決定する
請求項２に記載のストレージシステム。
【請求項４】
前記不揮発性半導体メモリデバイスが複数接続され、
前記プロセサ部は、
前記複数の不揮発性半導体メモリデバイスの中の一部の不揮発性半導体メモリデバイスの記憶領域を前記第１記憶領域として管理する
請求項１から請求項３のいずれか一項に記載のストレージシステム。
【請求項５】
前記プロセサ部は、
前記不揮発性半導体メモリデバイス内の一部の記憶領域を、前記第１記憶領域を構成する記憶領域として管理する
請求項１から請求項３のいずれか一項に記載のストレージシステム。
【請求項６】
前記プロセサ部は、
前記不揮発性半導体メモリデバイスに対してユーザが格納させる所定期間あたりのデータライト量を受け付け、
前記データライト量に基づいて、前記不揮発性半導体メモリデバイスにおける前記第２記憶領域として必要な記憶容量を算出し、
前記不揮発性半導体メモリデバイスにおける、算出された前記記憶容量の記憶領域を前記第２記憶領域とし、前記不揮発性半導体メモリデバイスの前記全体の容量から算出された前記記憶容量を除いた容量の記憶領域の少なくとも一部を前記第１記憶領域として管理する
請求項１から請求項５のいずれか一項に記載のストレージシステム。
【請求項７】
前記第２記憶領域として必要な記憶容量は、所定の想定期間に渡って前記データライト量のデータをライトしても前記不揮発性半導体メモリデバイスの寿命とならない記憶容量である
請求項６に記載のストレージシステム。
【請求項８】
前記プロセサ部は、
前記第２記憶領域の記憶容量と、前記第１記憶領域の記憶容量との値を所定の表示装置に表示させる
請求項１から請求項７のいずれか一項に記載のストレージシステム。
【請求項９】
前記第１記憶領域の書き込み可能な物理ページのアドレスを管理する第１物理アドレス管理情報と、前記第２記憶領域の書き込み可能な物理ページのアドレスを管理する第２物理アドレス管理情報とをメモリ部に記憶し、
前記プロセサ部は、
前記第１物理アドレス管理情報及び前記第２物理アドレス管理情報に基づいて、論理ページに対して物理ページを割り当てる
請求項１から請求項８のいずれか一項に記載のストレージシステム。
【請求項１０】
前記プロセサ部は、
データを格納する論理ページ毎に、前記論理ページのデータに対するリードアクセス頻度と、ライトアクセス頻度とに関するアクセス頻度情報とを管理し、
前記アクセス頻度情報に基づいて、論理ページに格納されているデータについて、前記第１記憶領域と、前記第２記憶領域とのいずれの領域に格納させるかを判定し、
前記論理ページに格納されているデータが、前記判定された領域と異なる領域に格納されている場合に、前記データを前記判定された領域に移動させる
請求項1から請求項９のいずれか一項に記載のストレージシステム。
【請求項１１】
前記プロセサ部は、
前記第１記憶領域と前記第２記憶領域との使用済みの容量、または空き容量を表示させる
請求項１から請求項１０のいずれか一項に記載のストレージシステム。
【請求項１２】
１以上の不揮発性半導体メモリデバイスを接続可能であって、前記不揮発性半導体メモリデバイスの記憶領域に対するデータの入出力を制御可能なストレージシステムによるデータ管理方法であって、
１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される記憶領域の一部を所定のデータを記憶するための第１記憶領域として管理し、
ライトアクセス頻度が所定値未満であるデータの中から、前記第１記憶領域に格納させるデータを決定し、前記第１記憶領域に格納させ、
前記第１記憶領域に格納させると決定されなかったデータを、前記１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される前記第１記憶領域と異なる第２記憶領域に格納させる
データ管理方法。
【請求項１３】
１以上の不揮発性半導体メモリデバイスを接続可能であって、前記不揮発性半導体デバイスの記憶領域に対するデータの入出力を制御可能なストレージシステムを構成するコンピュータに実行されるデータ管理プログラムであって、
前記データ管理プログラムは、前記コンピュータに、
１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される記憶領域の一部を所定のデータを記憶するための第１記憶領域として管理させ、
ライトアクセス頻度が所定値未満であるデータの中から、前記第１記憶領域に格納させるデータを決定し、前記第１記憶領域に格納させ、前記第１記憶領域に格納させると決定されなかったデータを、前記１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される前記第１記憶領域と異なる第２記憶領域に格納させる
データ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリデバイスの記憶領域を用いてデータを管理するストレージシステムに関する。
【背景技術】
【０００２】
不揮発性半導体メモリデバイスに備えられる不揮発性半導体メモリとしては、例えば、フラッシュメモリが知られている。フラッシュメモリは、データの書き込み後の経過時間に応じて、反転したビット（障害ビット）が格納したデータ内に増加する特性（リテンション特性）を持つ。さらに、フラッシュメモリは、消去処理の回数（消去回数）に伴って、障害ビット数の増加が加速する特性（データ保持特性の低下）を持つ。このため、フラッシュメモリを記憶媒体とした記憶デバイス、例えば、ＳＳＤ（Solid State Drive）においては、記憶するデータに対して複数ビットの誤り符号訂正能力を持つＥＣＣ（Error Correcting Code）を付加して記憶するようにし、データの読み出し時にＥＣＣを用いて、障害ビットを修正するようにしている。
【０００３】
しかし、データの書き込みから長期間が経過した場合や、ＳＳＤのデータ保持特性が低下した場合、または、これらの事象が組み合わさった場合には、ＥＣＣによって訂正可能な数を超える数の障害ビットが発生することがある。これに対して、ＳＳＤにおいては、フラッシュメモリのパラメタを微調整しながら格納データを読み出す方式（再読み出し方式）や、強力な誤り符号訂正アルゴリズムを使用することで、障害ビットを修正して、データを読み出す方式が使用されている。
【０００４】
消去回数が多く、データ保持特性が低下したＳＳＤにおいては、障害ビットが高速に増加するため、障害ビット数がＥＣＣによる訂正可能数を超えるデータが増加する。これらのデータは、再読み出し方式や強力な誤り符号訂正アルゴリズムを用いて読み出す必要がある。しかし、再読み出し方式や、強力な誤り符号訂正アルゴリズムを用いる場合には、長い処理時間を要するため、障害ビット数が増加したデータを読み出すためには、大きなレイテンシを要する。以上の理由により、ＳＳＤの平均リードレイテンシは、ＳＳＤへライトしたデータ量とともに悪化することとなる。
【０００５】
例えば、特許文献１には、フラッシュメモリにデータを記録させてから所定の間隔でデータをいったん読み出して、再びフラッシュメモリに書き直す技術（リフレッシュ）が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７３２５０９０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、フラッシュメモリにおいて、平均リードレイテンシの悪化に対して無対策であるケースについて説明する。このケースでは、ライト頻度が高いデータについては、ＳＳＤへのデータライト量によらず一定のレイテンシでリードできる。これは、ライト頻度が高いデータは書き込みからの経過時間が短く、障害ビット数がＥＣＣによる訂正可能数以下に留まるためである。一方、ライト頻度が低いデータについては、ＳＳＤへのデータライト量の増加に伴ってレイテンシが増加する。このため、ＳＳＤの平均リードレイテンシは、ＳＳＤへのデータライト量の増加に伴って悪化することとなる。
【０００８】
次に、フラッシュメモリにおいて、平均リードレイテンシを改善するために、データが消失してしまう間隔よりも短い間隔でリフレッシュ（高頻度リフレッシュ）を行うケースについて説明する。この高頻度リフレッシュを行うケースにおいては、格納されているデータは、このデータの障害ビット数がＥＣＣによる訂正可能数を超える前に、リフレッシュにより上書きされる。このため、ライト頻度が高いデータに加え、ライト頻度が低いデータについても、リードレイテンシはＳＳＤへのデータライト量によらず一定に維持することができる。しかし、高頻度リフレッシュを実行する場合には、フラッシュメモリへの頻繁なデータの書き直しを要する。フラッシュメモリに書き込み可能なデータ量（書き換え耐性）は有限であるため、高頻度リフレッシュは、上位装置がＳＳＤにライト可能なデータ量（寿命）の減少を招いてしまう。
【０００９】
例えば、今後普及が見込まれるＱＬＣ(Quad Level Cell)フラッシュメモリは、現行のＴＬＣ(Triple Level Cell)フラッシュメモリに比べ、書き換え耐性が低いと予想されている。このため、高頻度リフレッシュを使用する場合、ユーザによるデータライト量に対して十分なＳＳＤの寿命を提供できない虞がある。
【００１０】
本発明は、上記事情に鑑みなされたものであり、その目的は、不揮発性半導体メモリデバイスを接続可能なストレージシステムにおけるデータの平均リードレイテンシを低く維持することのできる技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、一観点に係るストレージシステムは、１以上の不揮発性半導体メモリデバイスを接続可能であって、不揮発性半導体メモリデバイスの記憶領域に対するデータの入出力を制御可能なストレージシステムであって、ストレージシステムは、処理を実行するプロセサ部を有し、プロセサ部は、１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される記憶領域の一部を所定のデータを記憶するための第１記憶領域として管理し、ライトアクセス頻度が所定値未満であるデータの中から、第１記憶領域に格納させるデータを決定し、第１記憶領域に格納させ、第１記憶領域に格納させると決定されなかったデータを、１以上の同一の特性の不揮発性半導体メモリデバイスにより提供される第１記憶領域と異なる第２記憶領域に格納させる。
【発明の効果】
【００１２】
本発明によれば、不揮発性半導体メモリデバイスを接続可能なストレージシステムにおける平均リードレイテンシを低く維持することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１実施形態に係る計算機システムの全体構成図である。
【図２】図２は、第１実施形態に係るストレージコントローラのＲＡＭの構成図である。
【図３】図３は、第１実施形態に係るボリュームの論理構成を説明する図である。
【図４】図４は、第１実施形態に係る管理画面の一例を示す図である。
【図５】図５は、第１実施形態に係る接続デバイス管理テーブルの構成図である。
【図６】図６は、第１実施形態に係るアクセス頻度管理テーブルの構成図である。
【図７】図７は、第１実施形態に係る仮想アドレス変換テーブルの構成図である。
【図８】図８は、第１実施形態に係る空き物理アドレス管理キューの構成図である。
【図９】図９は、第１実施形態に係る初期設定処理のフローチャートである。
【図１０】図１０は、第１実施形態に係る領域容量計算処理のフローチャートである。
【図１１】図１１は、第１実施形態に係るリード処理のフローチャートである。
【図１２】図１２は、第１実施形態に係るライト処理のフローチャートである。
【図１３】図１３は、第１実施形態に係るアクセス頻度更新処理のフローチャートである。
【図１４】図１４は、第１実施形態に係るマイグレーション処理のフローチャートである。
【図１５】図１５は、第１実施形態に係る配置領域判定処理のフローチャートである。
【図１６】図１６は、第１実施形態に係るページマイグレーション処理のフローチャートである。
【図１７】図１７は、第２実施形態に係る計算機システムの全体構成図である。
【図１８】図１８は、第２実施形態に係るＳＳＤの構成図である。
【図１９】図１９は、第２実施形態に係る初期設定処理のフローチャートである。
【発明を実施するための形態】
【００１４】
いくつかの実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１５】
以下の説明では、「ＡＡＡテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ＡＡＡテーブル」を「ＡＡＡ情報」と呼ぶことができる。
【００１６】
また、以下の説明では、「プロセサ部」は、１以上のプロセサを含む。少なくとも１つのプロセサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセサである。１以上のプロセサの各々は、シングルコアでもよいしマルチコアでもよい。プロセサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１７】
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶部（例えばメモリ）及び／又はインタフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主体が、プロセサ（或いは、そのプロセサを有する装置又はシステム）とされてもよい。また、プロセサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な不揮発性の記憶メディアであってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１８】
まず、第１実施形態に係る計算機システムについて説明する。
【００１９】
図１は、第１実施形態に係る計算機システムの全体構成図である。
【００２０】
計算機システム１０は、ホスト計算機（以下、ホストという）１１と、管理装置１２と、ストレージシステム２０と、を備える。ホスト１１と、管理装置１２と、ストレージシステム２０とは、例えば、ＬＡＮ（Local Area Network）や、ＷＡＮ（Wide area network）等のネットワーク１３を介して接続されている。
【００２１】
ホスト１１は、例えば業務システムの中核をなすコンピュータ、ファイルサーバ等で構成され、ストレージシステム２０に対してリード/ライトを要求する装置である。管理装置１２は、例えば、プロセサ、メモリ、ネットワークインタフェース、ローカル入出力デバイス等のハードウェア資源と、管理プログラムなどのソフトウェア資源とを備えたコンピュータである。管理装置１２は、管理プログラムによってストレージシステム２０から情報を取得し、ローカル入出力デバイス（ディスプレイ等）を介して、例えば、管理画面５００（図４参照）を表示する。また、管理装置１２は、管理画面５００を介してシステム管理者によりに入力された各種設定情報を、ストレージシステム２０からの要求に対して応答する機能を有する。なお、ストレージシステム２０、ホスト１１、及び管理装置１２は、それぞれ同一のハードウェア装置で構成されていてもよく、異なるハードウェア装置で構成されていてもよい。
【００２２】
ストレージシステム２０は、ストレージコントローラ２００と、１以上の不揮発性半導体メモリデバイスの一例としてのＳＳＤ（Solid State Drive）２２０とを備える。
【００２３】
ストレージコントローラ２００は、ネットワークインタフェース２１０と、プロセサ部の一例としてのプロセサ２１１と、キャッシュ用メモリ２１２と、ドライブインタフェース２１４と、メモリ部の一例としてのＲＡＭ（Random Access Memory）２１５と、これら各要素を相互接続するスイッチ２１３とを備える。
【００２４】
プロセサ２１１は、ＲＡＭ２１５に格納されたプログラムや管理情報に基づいて、ストレージシステム２０の全体を制御する。ＲＡＭ２１５は、プロセサ２１１により実行されるプログラムを格納するプログラム領域２１６と、各種管理情報を格納する管理情報領域２１７とを備える。
【００２５】
キャッシュ用メモリ２１２は、ホスト１１から送信されたライト対象データを、ライト対象データがＳＳＤ２２０に書き込まれるまでの間保持する。また、キャッシュ用メモリ２１２は、ホスト１１からのリード要求に応答して、ＳＳＤ２２０から読み出されたライト対象データを、ライト対象データがホスト１１に送信されるまでの間保持する。ドライブインタフェース２１４は、ストレージコントローラ２００と、１以上のＳＳＤ２２０とを通信可能に接続するインタフェースである。ネットワークインタフェース２１０は、ネットワーク１３を介して外部装置（ホスト１１、管理装置１２等）を通信可能に接続するインタフェースである。
【００２６】
なお、ネットワークインタフェース２１０、プロセサ２１１、キャッシュ用メモリ２１２、デバイスインタフェース２１４、ＲＡＭ２１５、及びスイッチ２１３は、ＡＳＩＣ(Application Specific Integrated Circuit)や、ＦＰＧＡ(Field Programmable Gate Array)として、１つの半導体素子として構成してもよいし、複数の個別のＩＣ(Integrated Circuit)を相互に接続して構成してもよい。
【００２７】
本実施形態では、複数のＳＳＤ２２０は、同一の特性（少なくともメモリセル構成が同一である）を持つＳＳＤであり、例えば、同一容量であって、同一書き換え耐性を有していてもよい。なお、ＳＳＤ２２０は、同一メモリセル構成（例えば、ＱＬＣ、ＴＬＣのいずれか）であって、容量が異なっていてもよい。本実施形態においては、ストレージシステム２０における平均リードレイテンシを低く維持するために、ストレージコントローラ２００は、ＳＳＤ２２０を単位として、それぞれの記憶領域を性能保持領域（第１記憶領域）と、普通領域（第２記憶領域）とのいずれかに割り当てて管理する。
【００２８】
次に、ストレージコントローラ２００のＲＡＭ２１５の構成について詳細に説明する。
【００２９】
図２は、第１実施形態に係るストレージコントローラのＲＡＭの構成図である。
【００３０】
ＲＡＭ２１５は、プロセサ２１１により実行されるプログラムを格納するプログラム領域２１６と、プログラムが読み書き等を行う各種管理情報を格納する管理情報領域２１７とを備える。
【００３１】
プログラム領域２１６には、初期設定プログラム３２０、データ読み出しプログラム３２１、データ書き込みプログラム３２２、アクセス頻度更新プログラム３２３、マイグレーションプログラム３２４、領域容量計算プログラム３２５、配置領域判定プログラム３２６、及びページマイグレーションプログラム３２７が格納される。
【００３２】
初期設定プログラム３２０は、装置パラメタの算出、ＲＡＩＤグループの構築、及び管理情報の初期化を行うプログラムである。データ読み出しプログラム３２１は、ホスト１１からのリード要求に対し、ＳＳＤ２２０からデータを読み出し、ホスト１１に応答する処理を行うプログラムである。データ書き込みプログラム３２２は、ホスト１１からのライト要求に対応するライトデータをＳＳＤ２２０に書き込む処理を行うプログラムである。アクセス頻度更新プログラム３２３は、データのリード頻度とライト頻度とを計算するプログラムである。マイグレーションプログラム３２４は、データのリード頻度と、ライト頻度とに基づき、ＳＳＤ２２０におけるデータの再配置を行うプログラムである。領域容量計算プログラム３２５は、性能保持領域の容量と、普通領域の容量とを計算するためのプログラムである。配置領域判定プログラム３２６は、論理ページに割り当てる物理ページの領域を判定するためのプログラムである。ページマイグレーションプログラム３２７は、論理ページのデータのマイグレーションを実行するためのプログラムである。
【００３３】
管理情報領域３２１には、接続デバイス管理テーブル３３０、アクセス頻度管理テーブル３３１、仮想アドレス変換テーブル３３２、及び空き物理領域管理キュー３３３が格納される。
【００３４】
接続デバイス管理テーブル３３０は、ストレージコントローラ２００に接続されたＳＳＤ２２０の容量や、書き換え耐性などの情報を格納する。アクセス頻度管理テーブル３３１は、ボリュームの論理ページ毎のリード頻度とライト頻度とを管理する。仮想アドレス変換テーブル３３２は、ボリュームにおける論理アドレスと物理アドレスとの変換情報を格納する。空き物理アドレス管理キュー３３３は、ＳＳＤ２２０の未使用領域のアドレスを管理する。
【００３５】
次に、ストレージシステム２０で管理されるボリュームの論理構成について説明する。
【００３６】
図３は、第１実施形態に係るボリュームの論理構成を説明する図である。
【００３７】
ストレージシステム２０においては、１以上の論理ボリューム（ＬＶＯＬ）４００，４０１を管理する。論理ボリューム４００，４０１は、ホスト１１から認識可能な論理的な記憶領域を有し、ホスト１１によるライト要求とリード要求の対象となるボリュームである。各ＬＶＯＬ４００，４０１には、識別可能なＬＵＮ（Logical Unit Number）が割り当てられる。ストレージシステム２０においては、論理ボリューム４００（４０１）は、論理的な記憶領域を所定の固定長の論理ページ４１０（４１１）に分割されて管理されている。
【００３８】
また、ストレージシステム２０においては、普通領域に割り当てられた複数のＳＳＤ２２０により構成されるＲＡＩＤグループ４２０と、性能保持領域に割り当てられた複数のＳＳＤ２２０により構成されるＲＡＩＤグループ４２１とが構成される。各ＲＡＩＤグループ４２０，４２１は、物理的な記憶領域を、論理ページと同サイズの物理ページ４３０，４３１に分割されて管理されている。
【００３９】
本実施形態では、ストレージシステム２０は、ホスト１１から或る論理ページに対して初めてライト要求を受け取った場合に、この論理ページに対して、普通領域に割り当てられているＲＡＩＤグループ４２０の物理ページ４３０を動的に割り当てる。本実施形態では、後述するマイグレーション処理により、論理ページ４１０，４１１に割り当てられる物理ページは変更されることがある。
【００４０】
次に、管理装置１２がシステム管理者に表示する管理画面５００について説明する。
【００４１】
図４は、第１実施形態に係る管理画面の一例を示す図である。
【００４２】
管理画面５００には、設定テーブル５１０と、装置ステータステーブル５２０と、メッセージウインドウ５３０とが表示される。
【００４３】
設定テーブル５１０は、システム管理者がストレージシステム２０の動作を調整するためのパラメタを入力するテーブルである。設定テーブル５１０は、ユーザデータライト量フィールド５１１を含む。ユーザデータライト量フィールド５１１は、ユーザがホスト１１を使用してストレージシステム２０に印加するワークロードの想定ライト量（ユーザデータライト量）を指定するための領域である。ライト量の単位は、所定の時間当たりのデータ量、例えば、ＴＢ(Tera Bytes)／Ｄａｙ（日）であってもよく、ＤＷＰＤ(Drive Write Per Day)であってもよく、又は、ＴＢＷ (Total Bytes Written)など、他の単位であってもよい。システム管理者により、ユーザデータライト量フィールド５１１に想定ライト量が指定されると、管理装置１２は、指定された想定ライト量をストレージシステム２０に通知する。なお、想定ライト量を通知するタイミングとしては、指定された時点であってもよく、ストレージシステム２０から要求があった場合であってもよい。
【００４４】
装置ステータステーブル５２０は、ストレージシステム２０の現在の状態を表示するためのテーブルである。この装置ステータステーブル５２０は、例えば、ストレージシステム２０から送信された情報に基づいて表示される。装置ステータステーブル５２０は、性能保持領域容量フィールド５２１と、普通領域容量フィールド５２２と、性能保持領域使用済み容量フィールド５２３と、普通領域使用済み容量フィールド５２４とを含む。
【００４５】
性能保持領域容量フィールド５２１には、性能保持領域に割り当てられたＳＳＤ２２０の物理容量が表示される。普通領域容量フィールド５２２には、普通領域に割り当てられたＳＳＤ２２０の物理容量が表示される。性能保持領域使用済み容量フィールド５２３には、性能保持領域に格納されたデータの合計容量が表示される。普通領域使用済み容量フィールド５２４には、普通領域に格納されたデータの合計容量が表示される。なお、これらのフィールドに表示される容量は、ＴＢ単位に加え、又は代えて、使用割合のパーセンテージなどの他の表現としてもよい。
【００４６】
メッセージウインドウ５３０には、各種メッセージが表示される。
【００４７】
次に、ストレージコントローラ２００で管理されている管理情報について詳細に説明する。
【００４８】
まず、接続デバイス管理テーブル３３０について説明する。
【００４９】
図５は、第１実施形態に係る接続デバイス管理テーブルの構成図である。
【００５０】
接続デバイス管理テーブル３３０は、ストレージコントローラ２００に接続されたＳＳＤ２２０の状態を管理するテーブルであり、容量フィールド６１０と、書き換え耐性フィールド６１１と、接続台数６１２フィールドとを含む１次元テーブルである。
【００５１】
容量フィールド６１０には、ストレージコントローラ２００に接続されているＳＳＤ２２０の１台当たりの物理容量が格納される。書き換え耐性フィールド６１１には、ＳＳＤ２２０の１台当たりに書き込み可能なデータ量に関する書き換え耐性情報が格納される。書き換え耐性情報は、ＤＷＰＤ、ＴＢＷ等の単位としてもよい。接続台数フィールド６１２には、ストレージコントローラ２００に接続されているＳＳＤ２２０の台数が格納される。接続デバイス管理テーブル３３０に格納される情報は、例えば、容量と書き換え耐性とを応答可能なインタフェースを有するＳＳＤ２２０から取得するようにしてもよく、或いは、システム管理者による情報の入力が行われた管理装置１２から取得するようにしてもよい。
【００５２】
次に、アクセス頻度管理テーブル３３１について説明する。
【００５３】
図６は、第１実施形態に係るアクセス頻度管理テーブルの構成図である。
【００５４】
アクセス管理テーブル３３１は、ＬＶＯＬの各論理ページ毎にアクセスの頻度に関するアクセス頻度情報を管理するための２次元テーブルであり、各論理ページ毎の行を有する。アクセス管理テーブル３３１の行（エントリ）は、ＬＵＮフィールド７１０と、仮想アドレスフィールド７１１と、リード頻度フィールド７１２と、ライト頻度フィールド７１３と、リード回数フィールド７１４と、ライト回数フィールド７１５とを含む。
【００５５】
ＬＵＮフィールド７１０には、行に対応する論理ページが属するＬＶＯＬのＬＵＮが格納される。仮想アドレスフィールド７１１には、ＬＶＯＬにおける論理ページの開始アドレス（仮想アドレス）が格納される。リード頻度フィールド７１２には、行に対応する論理ページに対するリードの頻度（リード頻度：リードアクセス頻度）が格納される。本実施形態では、リード頻度フィールド７１２には、アクセス頻度更新処理（図１３参照）の前々回の実行から前回の実行までの時間間隔におけるリード頻度が格納される。ライト頻度フィールド７１３には、行に対応する論理ページに対するライトの頻度（ライト頻度：ライトアクセス頻度）が格納される。本実施形態では、ライト頻度フィールド７１３には、アクセス頻度更新処理の前々回の実行から前回の実行までの時間間隔におけるライト頻度が格納される。リード回数フィールド７１４には、前回のアクセス頻度更新処理の実行から現在までの時間間隔における、行に対応する論理ページに対するリード回数が格納される。ライト回数フィールド７１５には、前回のアクセス頻度更新処理の実行から現在までの時間間隔における、行に対応する論理ページに対するライト回数が格納される。
【００５６】
リード頻度及びライト頻度は、１日当たりのアクセス回数(Access/Day)であってもよく、他の単位で表現されてもよい。アクセス頻度管理テーブルは、図６に示す例では、各論理ページの行を、ＬＵＮフィールド７１０及び仮想アドレスフィールド７１１の値について昇順となるように並べていたが、本発明はこれに限られず、各論理ページの行は、任意の順序で並べてもよい。また、アクセス頻度管理テーブル３３１で管理する情報を、テーブル以外のデータ構造によって管理するようにしてもよい。
【００５７】
次に、仮想アドレス変換テーブル３３２について説明する。
【００５８】
図７は、第１実施形態に係る仮想アドレス変換テーブルの構成図である。
【００５９】
仮想アドレス変換テーブル３３２は、論理ページに割り当てられた仮想アドレスと、論理ページに割り当てられている物理ページの物理アドレスとの対応関係を表すテーブルであり、各論理ページ毎の行を有する。仮想アドレス変換テーブル３３２の行は、ＬＵＮフィールド８１０と、仮想アドレスフィールド８１１と、領域フィールド８１２と、物理アドレスフィールド８１３とを含む。
【００６０】
ＬＵＮフィールド８１０には、行に対応する論理ページが属するＬＶＯＬのＬＵＮが格納される。仮想アドレスフィールド８１１には、ＬＶＯＬにおける論理ページの開始アドレスが格納される。領域フィールド８１２には、行に対応する論理ページに割り当てられている物理ページの領域を示す情報（領域情報）が格納される。領域フィールド８１２には、行に対応する論理ページに対して物理ページが割り当てられていないことを表す「未割り当て」と、行に対応する論理ページに対して普通領域の物理ページが割り当てられていることを表す「普通」と、行に対応する論理ページに対して性能保持領域の物理ページが割り当てられていることを表す「性能保持」とのいずれかが設定される。物理アドレスフィールド８１３には、行に対応する論理ページに割り当てられた物理ページの先頭の物理アドレスが格納される。なお、物理アドレスフィールド８１３の物理アドレスは、行に対応する領域フィールド８１２の領域情報が示す領域に応じたＲＡＩＤグループの物理ページの物理アドレスである。
【００６１】
なお、仮想アドレス変換テーブル３３２は、図７に示す例では、各行をＬＵＮ８１０及び仮想アドレス８１１の値について昇順となるように並べた例を示しているが、本発明はこれに限られず、各行は、任意の順序としてもよい。また、仮想アドレス変換テーブル３３２で管理する情報を、テーブル以外のデータ構造によって管理するようにしてもよい。
【００６２】
次に、空き物理アドレス管理キュー３３３について説明する。
【００６３】
図８は、第１実施形態に係る空き物理アドレス管理キューの構成図である。
【００６４】
空き物理アドレス管理キュー３３３は、第２物理アドレス管理情報の一例としての普通領域管理キュー９１０と、第１物理アドレス管理情報の一例としての性能保持領域管理キュー９１１との２本のキューを含む。
【００６５】
普通領域管理キュー９１０は、普通領域に属する物理ページのうち、論理ページに未割り当ての物理ページの先頭アドレス９２０を保持する。普通領域管理キュー９１０は、要素としての普通領域の先頭物理アドレスを、最大で普通領域に属する物理ページの数だけ保持することができる。
【００６６】
性能保持領域管理キュー９１１は、性能保持領域に属する物理ページのうち、論理ページに未割り当ての物理ページの先頭アドレス９３０を保持する。性能保持領域管理キュー９１１は、要素としての性能保持領域の物理アドレス９３０を、最大で性能保持領域に属する物理ページ数だけ保持することができる。普通領域管理キュー９１０と、性能保持領域管理キュー９１１とのいずれのキューに対してもＦＩＦＯ(First-in-first-out)方式で要素のエンキュー及びデキューを行うことができる。なお、空き物理アドレス管理キュー３３３で管理する情報を、テーブルなど、キュー以外のデータ構造により管理するようにしてもよい。
【００６７】
次に、第１実施形態に係るストレージシステム２０の処理動作について説明する。
【００６８】
図９は、第１実施形態に係る初期設定処理のフローチャートである。
【００６９】
初期設定処理（Ｓ１０００）は、例えば、ストレージコントローラ２００が初めて起動された際に、プロセサ２１１が初期設定動作プログラム３２０を実行することにより実行される。
【００７０】
初期設定動作処理（Ｓ１０００）が開始されると、初期設定プログラム３２０を実行するプロセサ２１１は、領域容量計算プログラム３２５をコールすることにより、性能保持領域及び普通領域に割り当てる容量を計算する領域容量計算処理（図１０参照）を実行させる（Ｓ１００２）。領域容量計算処理から戻り値として普通領域容量及び性能保持領域容量が返される。
【００７１】
次いで、プロセサ２１１は、普通領域に割り当てるＳＳＤ２２０の台数Ｎを計算する（Ｓ１００３）。プロセサ２１１は、台数Ｎを、次の式により計算する。
台数Ｎ＝Ｃｅｉｌ（普通領域容量／ＳＳＤ１台当たりの容量）。
すなわち、プロセサ２１１は、普通領域に割り当てる容量（普通領域容量）を、接続デバイス管理テーブル３３０の行の容量フィールド６１０に格納されている容量で除算し、商を切り上げることにより台数Ｎを算出する。
【００７２】
次に、プロセサ２１１は、性能保持領域に割り当てるＳＳＤ２２０の台数Ｐを計算する（Ｓ１００４）。プロセサ２１１は、台数Ｐを次の式により計算する。
台数Ｐ＝接続台数−Ｎ
すなわち、プロセサ２１１は、接続デバイス管理テーブル３３０の行の接続台数フィールド６１２の接続台数から、台数Ｎを減算することで台数Ｐを計算する。
【００７３】
次に、プロセサ２１１は、普通領域を構成するＲＡＩＤグループ４２０を構築する（Ｓ１００５）。具体的には、プロセサ２１１は、ストレージコントローラ２００に接続されたＳＳＤ２２０の中からＮ台を任意に選択し、これらのＳＳＤ２２０の記憶領域を普通領域に割り当て、これらのＳＳＤ２２０によりＲＡＩＤグループ４２０を構築する。なお、プロセサ２１１は、Ｎ台のＳＳＤ２２０のすべてを使用して１つのＲＡＩＤグループを構築するようにしてもよいし、複数のＲＡＩＤグループを構築し、これらのＲＡＩＤグループの記憶領域を１つのアドレス空間で扱えるよう仮想化するようにしてもよい。また、構築するＲＡＩＤグループ４２０のＲＡＩＤレベルは、任意のレベルとしてもよい。なお、ＲＡＩＤグループ４２０のＲＡＩＤレベルをＲＡＩＤ０以外とする場合には、パリティ用のＳＳＤを別に用意する必要がある。
【００７４】
次いで、プロセサ２１１は、性能保持領域を構成するＲＡＩＤグループ４２１を構築する（Ｓ１００６）。具体的には、プロセサ２１１は、Ｓ１００５で普通領域に割り当てられなかったＳＳＤ２２０について、これらＳＳＤ２２０の記憶領域を性能保持領域に割り当て、これらのＳＳＤ２２０によりＲＡＩＤグループ４２１を構築する。なお、プロセサ２１１は、これらＳＳＤ２２０により１つのＲＡＩＤグループを構築するようにしてもよいし、複数のＲＡＩＤグループを構築し、これらのＲＡＩＤグループの記憶領域を１つのアドレス空間で扱えるよう仮想化するようにしてもよい。また、構築するＲＡＩＤグループ４２１のＲＡＩＤレベルは、任意のレベルとしてもよい。なお、ＲＡＩＤグループ４２１のＲＡＩＤレベルをＲＡＩＤ０以外とする場合には、パリティ用のＳＳＤを別に用意する必要がある。
【００７５】
次に、プロセサ２１１は、普通領域管理キュー９１０を初期化する（Ｓ１００７）。具体的には、プロセサ２１１は、物理ページのサイズの倍数（各物理ページの先頭アドレス）を、０からＲＡＩＤグループ４２０の容量未満となるまで、普通領域管理キュー９１０にエンキューする。たとえば、物理ページのサイズが１ＭＢ(0x100000)、ＲＡＩＤグループ４２０のサイズが４ＧＢ(0x100000000)のとき、プロセサ２１１は、x00000，0x100000，0x200000，…,0xfff00000を普通領域管理キュー９１０にエンキューする。
【００７６】
次に、プロセサ２１１は、性能保持領域管理キュー９１１を初期化する（Ｓ１００８）。具体的には、プロセサ２１１は、物理ページのサイズの倍数（各物理ページの先頭アドレス）を、０からＲＡＩＤグループ４２１の容量未満となるまで、性能保持領域管理キュー９１１にエンキューする。
【００７７】
次に、プロセサ２１１は、管理装置１２の管理画面５００を更新させる（Ｓ１００９）。具体的には、プロセサ２１１は、Ｓ１００２で計算した性能保持領域の容量及び普通領域の容量を、ネットワーク１３を介して管理装置１２に通知する。これに対して、管理装置１２では、性能保持領域の容量及び普通領域の容量を受領し、これらの容量を管理画面５００の性能保持領域容量フィールド５２１及び普通領域容量フィールド５２２に表示することとなる。なお、Ｓ１００９の後、プロセサ２１１は、初期設定処理を終了する（Ｓ１０１０）。
【００７８】
次に、初期設定処理のＳ１００２に対応する領域容量計算処理について説明する。
【００７９】
図１０は、第１実施形態に係る領域容量計算処理のフローチャートである。
【００８０】
領域容量計算処理（Ｓ１１００）は、プロセサ２１１によって領域容量計算プログラム３２５がコールされた場合（初期設定処理のＳ１００２）に、領域容量計算プログラム３２５をプロセサ２１１が実行することにより実現される処理であり、性能保持領域及び普通領域の容量を計算し、計算結果をコール元へ返す処理（サブルーチン）である。
【００８１】
領域容量計算処理（Ｓ１１００）が開始されると、プロセサ２１１は、ＳＳＤ２２０にライト可能なデータ量の総量（ドライブ総ライト可能量）を計算する（Ｓ１１０１）。具体的には、プロセサ２１１は、接続デバイス管理テーブル３３０の容量フィールド６１０、書き換え耐性フィールド６１１、及び接続台数フィールド６１２を参照して、ＳＳＤ１台の容量と、書き換え耐性と、接続台数とを取得し、これらの積を計算してドライブ総ライト可能量とする。ここで、上記計算式からわかるように、ドライブ総ライト可能量とは、同時にライトできるデータ量ではなく、データをライトし、その後消去し、またデータをライトするといったように、消去を繰り返し行いつつデータをライトできるデータ量を意味している。
【００８２】
次に、プロセサ２１１は、管理装置１２からユーザデータライト量を取得する（Ｓ１１０２）。具体的には、プロセサ２１１は、管理装置１２にユーザデータライト量を問い合わせる。この問い合わせに対して、管理装置１２は、管理画面５００のユーザデータライト量フィールド５１１にシステム管理者によって指定されたユーザデータライト量を特定し、特定したユーザデータライト量をストレージコントローラ２００に応答する。これに対して、プロセサ２１１は、管理装置１２の応答を受領してユーザデータライト量を取得する。なお、ユーザデータライト量を取得する方法は、上記したＰＵＬＬ型の情報取得方法に限られず、例えば、管理装置１２がストレージコントローラ２００に自発的にユーザデータライト量を送付するＰＵＳＨ型の情報取得方法としてもよい。
【００８３】
次に、プロセサ２１１は、ユーザによるデータの総ライト量（総ユーザライト量）を計算する（Ｓ１１０３）。具体的には、プロセサ２１１は、Ｓ１１０２で取得したユーザデータライト量と、ストレージシステム２０の製品保証期間（想定期間の一例）との積を計算して、総ユーザライト量とする。例えば、ユーザデータライト量が１００ＴＢ／Ｄａｙ、製品保証期間が５年である場合、プロセサ２１１は、総ユーザライト量を、１８２．５ＰＢと計算する。
【００８４】
次に、プロセサ２１１は、ストレージコントローラ２００に接続されたＳＳＤ２２０の容量の合計（総物理容量）を計算する（Ｓ１１０４）。具体的には、プロセサ２１１は、接続デバイス管理テーブル３３０の容量フィールド６１０と接続台数フィールド６１２からＳＳＤ１台当たりの容量と接続台数とを取得し、これらの積を計算することにより総物理容量を得る。
【００８５】
次に、プロセサ２１１は、普通領域の容量（普通領域容量）を計算する（Ｓ１１０５）。具体的には、プロセサ２１１は、Ｓ１１０３で計算した総ユーザライト量を、Ｓ１１０１で計算したドライブ総ライト可能量で除算した商を求める。次に、プロセサ２１１は、この商と、Ｓ１１０４で計算した総物理容量との積を求め、これを普通領域容量とする。この計算により普通領域容量を算出すると、この普通領域容量に対応する普通領域に対して、ライト可能なデータの総量は、総ユーザライト量以上となる。すなわち、ユーザによりライトされるデータの全てを普通領域の記憶領域に集中してライトしたとしても、ＳＳＤ２２０を製品保証期間に亘って使用することを担保することができる。
【００８６】
次に、プロセサ２１１は、性能保持領域の容量（性能保持領域容量）を計算する（Ｓ１１０６）。具体的には、プロセサ２１１は、総物理容量から普通領域容量を減算し、その値を性能保持領域容量とする。すなわち、プロセサ２１１は、ＳＳＤ２２０の総物理容量のうち、普通領域以外の領域を性能保持領域とする。次に、プロセサ２１１は、領域容量計算処理を終了して、処理結果（すなわち、普通領域容量及び性能保持領域容量）をコール元へ返す（Ｓ１１０７）。
【００８７】
次に、リード処理について説明する。
【００８８】
図１１は、第１実施形態に係るリード処理のフローチャートである。
【００８９】
リード処理（Ｓ１２００）は、ホスト１１からストレージコントローラ２００に対して読み出し要求があった場合に、データ読み出しプログラム３２１を実行するプロセサ２１１により実行される。なお、読み出し要求（リード要求）には、読み出し対象のＬＶＯＬを示すＬＵＮと、読み出し対象の論理ページを示す仮想アドレスとが含まれている。
【００９０】
プロセサ２１１は、ホスト１１から読み出し要求を受信すると、読み出し要求に含まれているＬＵＮ及び仮想アドレスが示す論理ページに対応する物理ページが含まれる領域と、その物理アドレスとを取得する（Ｓ１２０１）。具体的には、プロセサ２１１は、仮想アドレス変換テーブル３３２の行を先頭から順に参照し、ＬＵＮフィールド８１０のＬＵＮ及び仮想アドレスフィールド８１１の仮想アドレスが、読み出し要求に含まれるＬＵＮ及び仮想アドレスと一致する行を探索する。次に、プロセサ２１１は、探索により発見した行の領域フィールド８１２の領域情報と、物理アドレスフィールド８１３の物理アドレスとを取得する。なお、仮想アドレス変換テーブル３３２から対応する行を探索する方法としては、上記した先頭から順に探索する方法に限られず、例えば、２分探索など他のアルゴリズムを用いた探索方法としてもよい。
【００９１】
次に、プロセサ２１１は、Ｓ１２０１で取得した領域情報が示す領域に対応するＲＡＩＤグループにおける、取得した物理アドレスに対応する領域から読み出し対象のデータをリードし、リードしたデータをキャッシュメモリ２１２に格納する（Ｓ１２０２）。なお、プロセサ２１１は、ドライブインタフェース２１４のＤＭＡ（Direct Memory Access）機能により、ドライブインタフェース２１４にＳＳＤ２２０からのデータの読み出しと、読み出したデータのキャッシュメモリ２１２への格納をさせるようにしてもよい。
【００９２】
次に、プロセサ２１１は、Ｓ１２０２でキャッシュメモリ２１２に格納したデータをホスト１１に送信する（Ｓ１２０３）。なお、プロセサ２１１は、ネットワークインタフェース２１０のＤＭＡ機能により、ネットワークインタフェース２１０にキャッシュメモリ２１２からのデータの読み出しと、読み出したデータのホスト１１への送信をさせるようにしてもよい。
【００９３】
次に、プロセサ２１１は、読み出し要求に伴うアクセス頻度管理テーブル３３１の更新を行う（Ｓ１２０４）。具体的には、プロセサ２１１は、アクセス頻度管理テーブル３３１の行を先頭から順に参照し、ＬＵＮフィールド７１０のＬＵＮ及び仮想アドレスフィールド７１１の仮想アドレスが、読み出し要求に含まれるＬＵＮ及び仮想アドレスと一致する行を探索する。次に、プロセサ２１１は、探索により発見した行のリード回数フィールド７１４の値をインクリメント（＋１）する。なお、アクセス頻度管理テーブル３３１から行を探索する方法は、上記した先頭から順に探索する方法に限られず、例えば、２分探索など他のアルゴリズムを用いた探索方法としてもよい。Ｓ１２０４の後、プロセサ２１１は、リード処理を終了する（Ｓ１２０５）。
【００９４】
次に、ライト処理について説明する。
【００９５】
図１２は、第１実施形態に係るライト処理のフローチャートである。
【００９６】
ライト処理（Ｓ１３００）は、ホスト１１からストレージコントローラ２００に対して書き込み要求があった場合に、データ書き込みプログラム３２２を実行するプロセサ２１１により実行される。なお、書き込み要求（ライト要求）には、書き込み対象のＬＶＯＬを示すＬＵＮと、書き込み対象の論理ページを示す仮想アドレスと、書き込み対象のデータ（書き込み対象データ）とが含まれている。
【００９７】
プロセサ２１１は、ホスト１１から書き込み要求を受信すると、書き込み要求に含まれている書き込み対象データをキャッシュメモリ２１２に格納する（Ｓ１３０１）。次いで、プロセサ２１１は、ホスト１１に書き込み（ライト）の完了を応答する（Ｓ１３０２）。なお、本実施形態では、ライトバックキャッシュを想定するため、Ｓ１３０１の直後にライト完了応答を行っているが、本発明はこれに限られず、Ｓ１３０１の後の任意のタイミングでライト完了応答を実行してもよく、また、ライトスルーキャッシュを想定し、書き込み対象データをＳＳＤ２２０へデステージ後に、ライト完了応答をするようにしてもよい。
【００９８】
次に、プロセサ２１１は、書き込み要求に含まれているＬＵＮと仮想アドレスに対応する物理ページが含まれる領域の情報と、その物理アドレスとを取得する（Ｓ１３０３）。具体的には、プロセサ２１１は、仮想アドレス変換テーブル３３２の行を先頭から順に参照し、ＬＵＮフィールド８１０のＬＵＮ及び仮想アドレスフィールド８１１の仮想アドレスが、書き込み要求に含まれるＬＵＮ及び仮想アドレスと一致する行を探索する。次に、プロセサ２１１は、探索により発見した行の領域フィールド８１２の領域情報と、物理アドレスフィールド８１３の物理アドレスとを取得する。なお、仮想アドレス変換テーブル３３２から対応する行を探索する方法としては、上記した先頭から順に探索する方法に限られず、例えば、２分探索など他のアルゴリズムを用いた探索方法としてもよい。
【００９９】
次に、プロセサ２１１は、書き込み要求に含まれているＬＵＮ及び仮想アドレスに対応する物理ページが存在するか否かを判定する（Ｓ１３０４）。この結果、仮想アドレスに対応する物理ページが存在しない場合、すなわち、Ｓ１３０３で取得した領域の情報が「未割り当て」の場合（Ｓ１３０４：Ｎｏ）には、仮想アドレスに対応する物理ページが存在しないことを意味するので、プロセサ２１１は、処理をＳ１３０５に進める。一方、仮想アドレスに対応する物理ページが存在する場合（Ｓ１３０４：Ｙｅｓ）、すなわち、Ｓ１３０３で取得した領域の情報がそれ以外の場合には、仮想アドレスに対応する物理ページが存在することを意味するので、プロセサ２１１は、処理をＳ１３０８に進める。
【０１００】
Ｓ１３０５では、プロセサ２１１は、普通領域管理キュー９１０から、普通領域内の未使用物理アドレス９２０をデキューする。次いで、プロセサ２１１は、仮想アドレス変換テーブル３３２の領域フィールド８１２を更新する（Ｓ１３０６）。具体的には、プロセサ２１１は、Ｓ１３０３で発見した行の領域フィールド８１２に「普通」を設定する。
【０１０１】
次に、プロセサ２１１は、仮想アドレス変換テーブル３３２の物理アドレスフィールド８１３の値を更新する（Ｓ１３０７）。具体的には、プロセサ２１１は、Ｓ１３０３で発見した行の物理アドレスフィールド８１３に、Ｓ１３０４でデキューした物理アドレスを設定する。
【０１０２】
仮想アドレスに対応する物理ページが存在する場合（Ｓ１３０４：Ｙｅｓ）、又はＳ１３０７を実行した場合には、プロセサ２１１は、Ｓ１３０３で発見した行の領域フィールド８１２の領域の情報と物理アドレスフィールド８１３の物理アドレスとを取得する（Ｓ１３０８）。
【０１０３】
次に、プロセサ２１１は、キャッシュメモリ２１２に格納されている書き込み対象データをＳＳＤ２２０にデステージする（Ｓ１３０９）。具体的には、プロセサ２１１は、キャッシュメモリ２１２に格納された書き込み対象データを、Ｓ１３０８で取得した領域の情報が示す領域のＲＡＩＤグループの、Ｓ１３０８で取得した物理アドレスに書き込む。なお、プロセサ２１１は、ドライブインタフェース２１４のＤＭＡ（Direct Memory Access）機能により、ドライブインタフェース２１４にキャッシュメモリ２１２からＳＳＤ２２０に書き込み対象データの書き込みをさせるようにしてもよい。
【０１０４】
次に、プロセサ２１１は、アクセス頻度管理テーブル３３１を更新する（Ｓ１３１０）。具体的には、プロセッサ２１１は、アクセス頻度管理テーブル３３１の行を先頭から順に参照し、ＬＵＮフィールド７１０のＬＵＮ及び仮想アドレスフィールド７１１の仮想アドレスが、書き込み要求に含まれるＬＵＮ及び仮想アドレスと一致する行を探索する。次に、プロセサ２１１は、探索により発見した行のライト回数フィールド７１５の値をインクリメント（＋１）する。なお、アクセス頻度管理テーブル３３１から行を探索する方法は、上記した先頭から順に探索する方法に限られず、例えば、２分探索など他のアルゴリズムを用いた探索方法としてもよい。Ｓ１３１０の後、プロセサ２１１は、ライト処理を終了する（Ｓ１３１１）。
【０１０５】
次に、アクセス頻度更新処理について説明する。
【０１０６】
図１３は、第１実施形態に係るアクセス頻度更新処理のフローチャートである。
【０１０７】
アクセス頻度更新処理は、例えば、プロセサ２１１が、所定の周期（例えば、２４時間）毎に定期的にアクセス頻度更新プログラム３２３を実行することにより実現される。なお、アクセス頻度更新処理を実行する周期の設定を、例えば、管理装置１２の管理画面５００を介してシステム管理者から受け付けるようにしてもよい。
【０１０８】
プロセサ２１１は、アクセス頻度管理テーブル３３１の各行を処理対象としてループＡの処理（Ｓ１４０２〜Ｓ１４０５）を繰り返し実行する。なお、アクセス頻度更新処理の説明において、処理対象の行を対象行ということとする。
【０１０９】
ループＡの処理においては、プロセサ２１１は、対象行のリード回数フィールド７１４とライト回数フィールド７１５とから、リード回数とライト回数を取得する（Ｓ１４０２）。次いで、プロセサ２１１は、リード頻度とライト頻度と計算する（Ｓ１４０３）。具体的には、プロセサ２１１は、Ｓ１４０２で取得したリード回数を、アクセス頻度更新処理の実行周期で除算することにより、リード頻度を算出する。また、プロセサ２１１は、Ｓ１４０３で取得したライト回数を、アクセス頻度更新処理の実行周期で除算することにより、ライト頻度を算出する。
【０１１０】
次に、プロセサ２１１は、対象行のリード頻度フィールド７１２及びライト頻度フィールド７１３のそれぞれの値を、Ｓ１４０５で算出したリード頻度及びライト頻度に更新する（Ｓ１４０４）。次に、プロセサ２１１は、対象行のリード回数フィールド７１４とライト回数フィールド７１５の値を、０にリセットし（Ｓ１４０５）、処理対象となっていない行がある場合には、その行を次の対象行として処理を実行する。
【０１１１】
その後、ループＡの処理をアクセス頻度管理テーブル３３１のすべての行を処理対象として実行した後、プロセサ２１１は、ループＡを終了し、アクセス頻度更新処理を終了する（Ｓ１４０７）。
【０１１２】
次に、マイグレーション処理について説明する。
【０１１３】
図１４は、第１実施形態に係るマイグレーション処理のフローチャートである。
【０１１４】
マイグレーション処理は、例えば、プロセサ２１１が、所定の周期（例えば、２４時間）毎に定期的にマイグレーションプログラム３２４を実行することにより実現される。なお、マイグレーション処理を実行する周期の設定を、例えば、管理装置１２の管理画面５００を介してシステム管理者から受け付けるようにしてもよい。また、マイグレーション処理の実行周期を、アクセス頻度更新処理の実行周期と同一としてもよく、異ならせてもよい。
【０１１５】
プロセサ２１１は、アクセス頻度管理テーブル３３１の各行を処理対象としてループＢの処理（Ｓ１５０２〜Ｓ１５０５）を繰り返し実行する。なお、マイグレーション処理の説明において、処理対象の行を対象行ということとし、対象行に対応する論理ページを対象論理ページということとする。
【０１１６】
ループＢの処理においては、プロセサ２１１は、配置領域判定プログラム３２６をコールすることにより、対象論理ページに対応する物理ページが配置されるべき領域（新領域）を判定する配置領域判定処理（図１５参照）を実行させる（Ｓ１５０２）。プロセサ２１１は、配置領域判定プログラム３２６をコールする際に、例えば、対象行を一意に特定できる情報（例えば、論理ページに対応するＬＵＮ及び仮想アドレス）を引数とする。配置領域判定処理からの戻り値は、対象論理ページが配置されるべき新領域を示す情報である。
【０１１７】
次に、プロセッサ２１１は、仮想アドレス変換テーブル３３２の領域フィールド８１２から対象論理ページに対応する物理領域の配置されている領域（現領域）の情報を取得する（Ｓ１５０３）。例えば、アクセス頻度管理テーブル３３１と仮想アドレス変換テーブル３３２が各論理ページに対応する行を同一順序で保持している場合には、プロセサ２１１は、対象行と同じ順番の仮想アドレス変換テーブル３３２の行の領域フィールド８１２から領域の情報を取得する。なお、アクセス頻度管理テーブル３３１と仮想アドレス変換テーブル３３２とが各論理ページに対応する行を同一順序で保持していない場合には、プロセサ２１１は、対象行のＬＵＮフィールド７１０及び仮想アドレスフィールド７１１の値と、ＬＵＮフィールド８１０及び仮想アドレスフィールド８１１の値とが一致する仮想アドレス変換テーブル３３２の行を探索し、探索で得られた行の領域フィールド８１２から領域の情報を取得する。
【０１１８】
次に、プロセサ２１１は、対象論理ページに対応するＳ１５０２で得られた新領域と、Ｓ１５０３で得られた現領域とが一致するか否かを判定する（Ｓ１５０４）。この結果、新領域と現領域とが一致する場合（Ｓ１５０４：Ｙｅｓ）には、プロセサ２１１は、処理をループ終端に移動させる。一方、新領域と現領域とが一致しない場合（Ｓ１５０４：Ｎｏ）には、プロセサ２１１は、処理をＳ１５０５に進める。
【０１１９】
Ｓ１５０５では、プロセサ２１１は、ページマイグレーションプログラム３２７をコールすることにより、対象論理ページに対応するデータを現領域から新領域に移動させるページマイグレーション処理（図１６参照）を実行させる（Ｓ１５０５）。プロセサ２１１は、ページマイグレーションプログラム３２７をコールする際に、例えば、対象論理ページを一意に特定できる情報（例えば、ＬＵＮ及び仮想アドレス）と、新領域を示す情報とを引数とする。次に、処理対象となっていない行がある場合には、プロセサ２１１は、その行を次の対象行としてループＢの処理を実行する。
【０１２０】
その後、ループＢの処理をアクセス頻度管理テーブル３３１のすべての行を処理対象として実行した後、プロセサ２１１は、ループＢを終了し、マイグレーション処理を終了する（Ｓ１５０７）。
【０１２１】
次に、マイグレーション処理のＳ１５０２に対応する配置領域判定処理について説明する。
【０１２２】
図１５は、第１実施形態に係る配置領域判定処理のフローチャートである。
【０１２３】
配置領域判定処理（Ｓ１６００）は、プロセサ２１１によって配置領域判定プログラム３２６がコールされた場合に、配置領域判定処理プログラム３２６をプロセサ２１１が実行することにより実現される処理であり、論理ページに対応する物理ページが配置されるべき領域を判定し、判定結果をコール元へ返す処理（サブルーチン）である。
【０１２４】
配置領域判定処理（Ｓ１６００）が開始されると、プロセサ２１１は、アクセス頻度管理テーブル３３１から、引数として指定された対象論理ページのライト頻度を取得する（Ｓ１６０１）。例えば、引数において対象論理ページがアクセス頻度管理テーブル３３１の行番号で指定されている場合、プロセサ２１１は、行番号に基づいて、行を特定し、特定した行のライト頻度フィールド７１３からライト頻度を取得する。一方、引数として、対象論理ページがＬＵＮ及び仮想アドレスで指定されている場合、プロセサ２１１は、指定されたＬＵＮ及び仮想アドレスによりアクセス頻度管理テーブル３３１を探索し、探索によって得られた行のライト頻度フィールド７１３からライト頻度を取得する。
【０１２５】
次に、プロセサ２１１は、Ｓ１６０１で取得したライト頻度が、ストレージコントローラ２００が静的に有する所定の閾値（所定値：ライト頻度閾値）未満であるか否かを判定する（Ｓ１６０２）。この結果、取得したライト頻度がライト頻度閾値未満である場合（Ｓ１６０２：Ｙｅｓ）には、プロセサ２１１は、処理をＳ１６０３に進める一方、取得したライト頻度がライト頻度閾値未満でない場合（Ｓ１６０２：Ｎｏ）には、プロセサ２１１は、処理をＳ１６０８に進め、コール元に対象論理ページの新領域が普通領域であるとの情報を戻す。
【０１２６】
Ｓ１６０３では、プロセサ２１１は、領域容量計算プログラム３２５をコールすることにより、性能保持領域及び普通領域に割り当てる容量を計算する領域容量計算処理（図１０参照）を実行させる。この領域容量計算処理から、普通領域容量及び性能保持領域容量が戻ってくる。
【０１２７】
プロセサ２１１は、得られた性能保持領域容量から性能保持領域に格納可能なページ数Ｌを計算する（Ｓ１６０４）。具体的には、プロセサ２１１は、Ｓ１６０３により得られた性能保持領域容量を物理ページサイズで除算することによりページ数Ｌを算出する。
【０１２８】
次に、プロセサ２１１は、ライト頻度がライト頻度閾値未満である論理ページ中、対象論理ページがリード頻度について降順で何番目であるかを計算する。ここで、算出された順番をＭ番目とする。Ｍについては、例えば、アクセス頻度管理テーブル３３１を先頭から走査しながら、ライト頻度がライト頻度閾値未満であり、かつリード頻度が対象論理ページのリード頻度以上である論理ページの数をカウントすることにより算出することができる。
【０１２９】
次に、プロセサ２１１は、Ｍがページ数Ｌ以下であるか否かを判定する（Ｓ１６０６）。この結果、ＭがＬ以下である場合（Ｓ１６０６：Ｙｅｓ）には、性能保持領域に格納するのに適したデータであることを意味しているので、プロセサ２１１は、処理をＳ１６０７に進め、コール元に対象論理ページの新領域が性能保持領域であるとの情報を戻す。一方、ＭがＬ以下でない場合（Ｓ１６０６：Ｎｏ）には、プロセサ２１１は、処理をＳ１６０８に進め、コール元に対象論理ページの新領域が普通領域であるとの情報を戻す。
【０１３０】
次に、マイグレーション処理のＳ１５０５に対応するページマイグレーション処理について説明する。
【０１３１】
図１６は、第１実施形態に係るページマイグレーション処理のフローチャートである。
【０１３２】
ページマイグレーション処理（Ｓ１７００）は、プロセサ２１１によってページマイグレーションプログラム３２７がコールされた場合に、ページマイグレーションプログラム３２７をプロセサ２１１が実行することにより実現される処理であり、対象論理ページのデータを指定された領域の物理ページに移動させる処理（サブルーチン）である。
【０１３３】
プロセサ２１１は、引数として受け取った対象論理ページを特定可能な情報に基づいて、仮想アドレス変換テーブル３３２から対象論理ページに対応する行を特定し、特定した行の領域フィールド８１２から領域の情報を取得し、物理アドレスフィールド８１３から物理アドレスを取得する（Ｓ１７０１）。例えば、引数において対象論理ページが仮想アドレス変換テーブル３３２の行番号で指定されている場合、プロセサ２１１は、行番号に基づいて、行を特定し、特定した行の領域フィールド８１２及び物理アドレスフィールド８１３から、領域の情報及び物理アドレス（本処理の説明において対象物理アドレスという）を取得する。一方、引数として、対象論理ページがＬＵＮ及び仮想アドレスで指定されている場合、プロセサ２１１は、指定されたＬＵＮ及び仮想アドレスにより仮想アドレス変換テーブル３３２を探索し、探索によって得られた行の領域フィールド８１２及び物理アドレスフィールド８１３から領域情報及び物理アドレス（本処理の説明において対象物理アドレスという）を取得する。
【０１３４】
次に、プロセサ２１１は、取得した領域情報が示す領域（本処理の説明において対象領域という）に対応するＲＡＩＤグループの対象物理アドレスに対応する記憶領域からデータをリードし、リードしたデータをキャッシュメモリ２１２に格納する（Ｓ１７０２）。次に、プロセサ２１１は、対象物理アドレスを開放する（ステップＳ１７０３）。すなわち、プロセサ２１１は、空き物理アドレス管理キュー３３３の対象領域に対応するキューに対象物理アドレスをエンキューする。なお、対象物理アドレスは、物理対象アドレスに対応する物理ページのデータが消去された後にエンキューされてもよい。
【０１３５】
次に、プロセサ２１１は、対象論理ページに新しい物理ページを割り当てる（Ｓ１７０４）。具体的には、プロセサ２１１は、空き物理アドレス管理キュー３３３から、引数で指定された移動先領域（新領域）の物理アドレス（９２０又は９３０）をデキューする。次に、プロセサ２１１は、仮想アドレス変換テーブル３３２の対象論理ページの行の領域フィールド８１２に、引数で指定された移動先領域を設定する（Ｓ１７０５）。次に、プロセサ２１１は、仮想アドレス変換テーブル３３２の物理アドレスフィールド８１３にＳ１７０４で取得した物理アドレスを設定する（Ｓ１７０６）。次に、プロセサ２１１は、キャッシュメモリ２１２に格納されているデータを新領域の対象物理アドレスに対応するＳＳＤ２２０の記憶領域にデステージし（Ｓ１７０７）、マイグレーション処理を終了する（Ｓ１７０８）。
【０１３６】
以上説明したように、本実施形態に係る計算機システムによると、性能保持領域にはライト頻度がライト頻度閾値未満のデータのみが配置される。このため、性能保持領域のデータ保持特性は、普通領域と比べて高く維持され、結果として、性能保持領域に配置したデータは、普通領域に配置した場合に比べて、低レイテンシで読み出すことができる。また、リード頻度が高いデータを優先して性能保持領域に格納することにより、ストレージシステム２０における平均リードレイテンシをベストエフォートで最小化することができる。また、性能保持領域に格納するデータと同程度にリード頻度が高いにも関わらず普通領域に格納されたデータは、性能保持領域に配置したデータを普通領域に配置する場合と比べ、低レイテンシで読み出すことができる。これは、普通領域に配置されるデータはライト頻度がライト頻度閾値以上のデータであり、頻繁に書き換えられるため、障害ビット数がＥＣＣによる訂正可能数以下となるからである。このように、帆実施形態に係る計算機システムによると、ストレージシステム２０における全体としてのリードレイテンシ、すなわち、平均リードレイテンシを改善することができる。
【０１３７】
次に、第２実施形態に係る計算機システムについて説明する。
【０１３８】
第１実施形態に係る計算機システムでは、普通領域にユーザによるデータライトに耐え得る容量のＳＳＤを割り当て、その他のＳＳＤを性能保持領域に割り当てるようにしている。すなわち、各領域の容量をＳＳＤ単位としていた。このため、普通領域の容量は、ユーザによるデータライトに必要な容量（総ユーザデータライト量）よりも、最大でＳＳＤのドライブ容量に近い容量分だけ多くなる可能性がある。これに対して第２実施形態に係る計算機システム１０Ａでは、ＳＳＤの内部で両領域を区切るようにして、両領域の容量をより細粒度に設定することができるようにする。このように両領域の容量をより細粒度に設定することにより、例えば、性能保持領域により多くの容量を割り当てることが可能となり、平均リードレイテンシをより改善することができる。
【０１３９】
まず、第２実施形態に係る計算機システムについて説明する。
【０１４０】
図１７は、第２実施形態に係る計算機システムの全体構成図である。なお、第1実施形態と同様な構成については、同一の符号を付し、重複する説明を省略する。
【０１４１】
ストレージシステム２１のストレージコントローラ２００には、1以上のＳＳＤ１８２０が接続されている。ＳＳＤ１８２０は、同一の特性を有するＳＳＤである。本実施形態では、ＳＳＤ１８２０は、すべてメモリセルの構成が同一であり、同一容量且つ同一書き換え耐性のＳＳＤである。ＳＳＳＤ１８２０は、ＳＳＤ内部の物理記憶領域を分割する機能と、物理記憶領域の分割をストレージコントローラ２００から指示可能とするインタフェースを有する。ストレージコントローラ２００は、各ＳＳＤ１８２０の物理領域を、例えば、他のＳＳＤ１８２０と同一割合で、性能保持領域用の物理領域１８３０と、普通領域用の物理領域１８３１とに分割して管理する。
【０１４２】
ストレージコントローラ２００のＲＡＭ２１５には、第1実施形態と同様に、データ読み出しプログラム３２１、データ書き込みプログラム３２２、アクセス頻度更新プログラム３２３、マイグレーションプログラム３２４、領域容量計算プログラム３２５、配置領域判定プログラム３２６、ページマイグレーションプログラム３２７、接続デバイス管理テーブル３３０、アクセス頻度管理テーブル３３１、仮想アドレス変換テーブル３３２、及び空き物理アドレス管理キュー３３３が格納されている。
【０１４３】
次に、ＳＳＤ１８２０の構成について説明する。
【０１４４】
図１８は、第２実施形態に係るＳＳＤの構成図である。
【０１４５】
ＳＳＤ１８２０は、ドライブインタフェース１９０１と、コントローラ１９０４と、ＲＡＭ１９０３と、これらを相互に接続するスイッチ１９０２と、複数のフラッシュメモリチップ（ＦＭ）１９１０とを備える。
【０１４６】
ドライブインタフェース１９０１は、上位装置であるストレージコントローラ２００との間を通信可能に接続する。コントローラ１９０４は、ストレージコントローラ２００から受領した読み出し要求及び書き込み要求の解釈や、要求に基づくフラッシュメモリチップ１９１０に対する制御を行う。また、コントローラ１９０４は、ストレージコントローラ２００からの物理領域の分割要求に対し、フラッシュメモリチップ１９１０を複数の領域に排他的に割り当てる。本実施形態においては、コントローラ１９０４は、複数のフラッシュメモリチップ１９１０を、性能保持領域のフラッシュメモリチップ１９１０と、普通領域のフラッシュメモリチップ１９１０とに分割する。各領域には、物理的に異なるフラッシュメモリチップ１９１０が割り当てられているため、各領域へのデータライト量に応じて、両領域の性能保持特性はそれぞれ独立に低下する。なお、図１８においては、領域分割を、フラッシュメモリチップ１９１０を単位として行った例を示しているが、本発明はこれに限られず、領域分割する際の粒度としては、例えば、フラッシュメモリチップ１９１０内のＤｉｅ単位、Ｐｌａｎｅ単位、フラッシュメモリチップ１９１０における消去単位であるブロック単位としてもよい。
【０１４７】
次に、第２実施形態に係るストレージシステム２１における処理動作について説明する。
【０１４８】
図１９は、第２実施形態に係る初期設定処理のフローチャートである。なお、図９に示す第１実施形態に係る初期設定処理と同様な部分については、同一符号を付し、重複する説明を省略する。
【０１４９】
Ｓ２００３では、プロセサ２１１は、接続デバイス管理テーブル３３０の接続台数フィールド６１２からストレージコントローラ２００に接続されたＳＳＤ１８２０の接続台数を取得する。次いで、プロセサ２１１は、各ＳＳＤ１８２０に割り当てる普通領域容量を計算する（Ｓ２００４）。具体的には、プロセサ２１１は、Ｓ１００２で算出されたストレージシステム２１全体の普通領域容量を、Ｓ２００３で取得したＳＳＤの接続台数で除算することにより、各ＳＳＤ１８２０に割り当てる普通領域容量を算出する。
【０１５０】
次に、プロセサ２１１は、各ＳＳＤ１８２０に割り当てる性能保持領域容量を計算する（Ｓ２００５）。具体的には、プロセサ２１１は、Ｓ１００２で算出したストレージシステム２１全体の性能保持領域容量を、Ｓ２００３で得したＳＳＤ接続台数で除算することにより、各ＳＳＤ１８２０に割り当てる性能保持領域容量を算出する。
【０１５１】
次に、プロセサ２１１は、ストレージコントローラ２００に接続されたＳＳＤ１８２０について、各ＳＳＤ１８２０の物理記憶領域を、普通領域用と性能保持領域用とに分割する（Ｓ２００６）。具体的には、プロセサ２１１は、ドライブインタフェース２１４を介して、ＳＳＤ１８２０が提供するＩ／Ｆを用いて、各ＳＳＤ１８２０の物理記憶領域を分割する。
【０１５２】
次に、プロセサ２１１は、各ＳＳＤ１８２０の物理領域のうち、普通領域用に割り当てられた領域を使用して普通領域用のＲＡＩＤグループを作成する（Ｓ２００７）。次に、プロセサ２１１は、各ＳＳＤ１８２０の物理領域のうち、性能保持領域用に割り当てられた領域を使用して性能保持領域用のＲＡＩＤグループを作成する（Ｓ２００８）。
【０１５３】
以上説明したように、第２実施形態に係る計算機システムでは、ＳＳＤの内部で性能保持領域と普通領域とを区切って管理することができ、例えば、普通領域に対して、より細かい粒度で容量を割り当てることができる。これにより、ＳＳＤにおける記憶領域の有効利用を図ることができる。また、普通領域により細かい粒度で容量を割り当てることができるので、性能保持領域に対してより多くの容量を割り当てることができる。これにより、より多くのデータを性能保持領域に格納することができることとなり、計算機システムにおける平均リードレイテンシをより改善することができる。また、各ＳＳＤに性能保持領域と普通領域とを設けるようにしているので、性能保持領域に対する読み出し及び書き込み処理、普通領域に対する読み出し及び書き込み処理を、各ＳＳＤに分散させて処理させることができるので、ストレージシステム２１における読み出し及び書き込み処理の処理効率を向上させることができる。
【０１５４】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１５５】
例えば、上記実施形態では、１以上の同一特性のＳＳＤの記憶領域を性能保持領域と、普通領域との２つの領域に分割するようにしていたが、本発明はこれに限られず、例えば、性能保持領域と、普通領域と、その他の領域とを設けるようにしてもよく、また、性能保持領域をさらに複数の領域に分割するようにしてもよく、また、普通領域をさらに複数の領域に分割するようにしてもよい。
【０１５６】
また、上記実施形態では、同一容量及び同一書き換え耐性の複数のＳＳＤを用いる例を示していたが、本発明はこれに限られず、メモリセルの構成が同一であって、容量の異なる複数のＳＳＤを用いてもよく、例えば、メモリセルの構成が同一であって、単位容量あたりの書き換え耐性が同一又は略同一のＳＳＤを用いてもよい。
【０１５７】
また、上記実施形態では、ライト頻度がライト頻度閾値未満の論理ページのデータについて、リード頻度が高いほうから所定の順番となる論理ページのデータを性能保持領域に格納するようにしていたが、本発明はこれに限られず、例えば、ライト頻度がライト頻度閾値未満であって、リード頻度が所定の閾値以上であることを満たす場合に性能保持領域に格納するようにしてもよい。
【０１５８】
また、上記実施形態では、普通領域の容量を決定し、全体の容量から普通領域の容量を除いた容量を性能保持領域としていたが、本発明はこれに限られず、性能保持領域の容量を、全体の容量から普通領域の容量を除いた容量の少なくとも一部であってよい。また、予め性能保持領域の容量を決定し、全体の容量から性能保持領域の容量を除いた容量の少なくとも一部を普通領域の容量としてもよい。
【０１５９】
また、上記実施形態では、管理画面５００に、性能保持領域と普通領域との使用済み容量を表示するようにしていたが、本発明はこれに限られず、性能保持領域と普通領域との空き容量を表示するようにしてもよい。
【０１６０】
また、上記実施形態において、必要に応じて、いわゆる高頻度リフレッシュを実行するようにしてもよい。
【０１６１】
また、上記実施形態において、プロセサが行っていた処理の一部又は全部を、専用のハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【符号の説明】
【０１６２】
１０，１０Ａ…計算機システム、１１…ホスト、１２…管理装置、１３…ネットワーク、２０，２１…ストレージシステム、２００…ストレージコントローラ、２１１…プロセサ、２１５…ＲＡＭ、２２０，１８２０…ＳＳＤ
【図１】
2019159639.tif 000003
【図２】
2019159639.tif 000004
【図３】
2019159639.tif 000005
【図４】
2019159639.tif 000006
【図５】
2019159639.tif 000007
【図６】
2019159639.tif 000008
【図７】
2019159639.tif 000009
【図８】
2019159639.tif 000010
【図９】
2019159639.tif 000011
【図１０】
2019159639.tif 000012
【図１１】
2019159639.tif 000013
【図１２】
2019159639.tif 000014
【図１３】
2019159639.tif 000015
【図１４】
2019159639.tif 000016
【図１５】
2019159639.tif 000017
【図１６】
2019159639.tif 000018
【図１７】
2019159639.tif 000019
【図１８】
2019159639.tif 000020
【図１９】
2019159639.tif 000021