(57)【要約】【課題】アドレス間のマッピングの信頼性を維持する。【解決手段】記憶制御システムは、Ｉ／Ｏ要求に応答して必要があれば記憶装置からデータセットを読み出す。データセットは、データとアドレスを含む。記憶制御システムは、一つ以上の第１のアドレスと一つ以上の第２のアドレスとの対応関係を示す情報であるアドレス変換情報のうちの、読出し対象のデータセットに対応した第１のアドレスと第２のアドレスの一方が、当該データセットに含まれているデータとアドレスのうちの当該アドレスに一致する否かのチェックである全種別アドレスチェックを行う。一つ以上の第１のアドレスの各々は、第１のアドレス種別に属するアドレスである。一つ以上の第２のアドレスの各々は、第２のアドレス種別に属するアドレスである。記憶制御システムは、全種別アドレスチェックの結果が真の場合に、上記のＩ／Ｏ要求に従う処理を行う。【選択図】図１
2019212175.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ（Input/Output）要求に応答して必要があれば記憶装置からデータセットを読み出すＩ／Ｏ制御部と、
一つ以上の第１のアドレスと一つ以上の第２のアドレスとの対応関係を示す情報であるアドレス変換情報のうちの、読出し対象のデータセットに対応した第１のアドレスと第２のアドレスの一方が、当該データセットに含まれているデータとアドレスのうちの当該アドレスに一致する否かのチェックである全種別アドレスチェックを行うアドレスチェック部と
を備え、
前記一つ以上の第１のアドレスの各々は、第１のアドレス種別に属するアドレスであり、
前記一つ以上の第２のアドレスの各々は、第２のアドレス種別に属するアドレスであり、
前記全種別アドレスチェックの結果が真の場合、前記Ｉ／Ｏ要求に従う処理が行われる、
記憶制御システム。
【請求項２】
前記全種別アドレスチェックの結果が真の場合、前記一致するアドレスがいずれかの第２のアドレスであれば、前記読出し対象のデータセットに含まれている第２のアドレスを、当該第２のアドレスに対応する第１のアドレスに付け替える付替え制御部、
を更に備え、
前記Ｉ／Ｏ制御部は、当該読出し対象のデータセットに含まれているデータと、当該読出し対象のデータセットに含まれている第２のアドレスの付替え後のアドレスである第１のアドレスとを含んだデータセットを、前記読出し対象のデータセットの更新後のデータセットとして前記記憶装置に書き込む、
請求項１に記載の記憶制御システム。
【請求項３】
前記第１のアドレス種別に属するアドレスも、前記第２のアドレス種別に属するアドレスも、論理アドレスであり、
前記記憶装置に基づく論理記憶領域が、複数のサブ論理記憶領域で構成されており、
前記複数のサブ論理記憶領域の各々は、二つ以上のデータセットをそれぞれ格納する二つ以上の記憶領域で構成されており、
前記アドレスチェック部は、前記複数のサブ論理記憶領域の各々について当該サブ論理記憶領域に第１のアドレスと第２のアドレスが混在するか否かを示す情報である混在状態情報を含んだアドレス管理情報を参照し、
前記読出し対象のデータセットの読出し元の記憶領域を含んだサブ論理記憶領域に対応した混在状態情報が混在有りを示していれば、前記全種別アドレスチェックが行われ、
前記読出し対象のデータセットの読出し元の記憶領域を含んだサブ論理記憶領域に対応した混在状態情報が混在無しを示していれば、前記アドレスチェック部及び前記記憶装置の少なくとも１つにより、前記第１のアドレス種別と前記第２のアドレス種別のうちの前記第１のアドレス種別のみについて当該読出し対象のデータセット内のアドレスが当該読出し元に対応した第１のアドレスに一致するか否かのチェックである単一種別アドレスチェックが行われる、
請求項２に記載の記憶制御システム。
【請求項４】
前記Ｉ／Ｏ制御部が、対応する混在状態情報が混在有りを示す或るサブ論理記憶領域全体について、二つ以上のデータセットの読出しを行う場合、
前記アドレスチェック部は、当該或るサブ論理記憶領域から読み出されたデータセット毎に、前記全種別アドレスチェックを行い、
前記付替え制御部は、前記全種別アドレスチェックの結果が真であり、且つ、前記一致するアドレスがいずれかの第２のアドレスであるデータセットがあれば、当該第２のアドレスに対応する第１のアドレスを前記アドレス変換情報から特定し、当該データセットに含まれているアドレスを、当該特定した第１のアドレスに付け替え、
前記Ｉ／Ｏ制御部は、
当該アドレスチェック部及び当該付替え制御部による処理の後の二つ以上のデータセットを、前記或るサブ論理記憶領域に書き込み、
前記或るサブ論理記憶領域に対応した混在状態情報を、混在無しを示す情報に更新する、
請求項３に記載の記憶制御システム。
【請求項５】
前記記憶装置は、一つ以上の冗長構成グループを含み、
前記一つ以上の冗長構成グループの各々は、二つ以上の記憶デバイスで構成され冗長化されたデータを格納する記憶デバイスグループであり、
前記複数のサブ論理記憶領域の各々について、当該サブ論理記憶領域におけるいずれかの記憶領域内のデータを当該サブ論理記憶領域における当該記憶領域以外の少なくとも一つの記憶領域内のデータを基に復元可能である、
請求項４に記載の記憶制御システム。
【請求項６】
前記一つ以上の冗長構成グループは、一つ以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループであり、
前記一つ以上のＲＡＩＤグループの各々は、二つ以上の記憶デバイスに基づく複数のストライプで構成され、
前記複数のサブ論理記憶領域の各々は、一つ以上のストライプであるパリティサイクルである、
請求項５に記載の記憶制御システム。
【請求項７】
前記Ｉ／Ｏ制御部及び前記アドレスチェック部は、マイクロプログラムが一つ以上のプロセッサであるプロセッサ部によって実行されることで実現される機能であり、
前記マイクロプログラムの負荷が閾値未満の場合、前記Ｉ／Ｏ制御部が、対応する混在状態情報が混在有りを示すサブ論理記憶領域全体から全てのデータセットの読出しを行う、
請求項３に記載の記憶制御システム。
【請求項８】
読出し元のアドレスを指定した問合せを発行するＩ／Ｏ要求制御部と、
当該問合せに応答して混在有りか混在無しかを回答する混在状態管理部と
を更に備え、
前記第１のアドレス種別は、複数のページで構成された論理ボリュームに属する各論理アドレスが属するアドレス種別であり、
前記第２のアドレス種別は、前記論理ボリュームを構成する前記複数のページに割り当てられ得る複数のセグメントで構成されている論理的な記憶領域であるプールに属する各論理アドレスが属するアドレス種別であり、
前記複数のセグメントの各々に、一つ以上のサブ論理記憶領域が属し、
前記アドレス管理情報は、前記複数のページの各々について、当該ページに割り当てられている一つ以上のセグメントに属する二つ以上のサブ論理記憶領域の各々についての混在状態情報を含んだエントリを有し、
前記Ｉ／Ｏ要求制御部は、前記問合せを、前記読出し元のアドレスが属するページについて発行し、
前記混在状態管理部が、当該ページに割り当てられている一つ以上のセグメントが属する少なくとも一つサブ論理記憶領域に対応した状態管理情報が混在有りを示していれば、混在有りを回答する、
請求項３に記載の記憶制御システム。
【請求項９】
前記Ｉ／Ｏ制御部が、書込み要求に従うデータと当該書込み要求に従う書込み先のアドレスとを含んだデータセットの書込みを、サブ論理記憶領域単位で行うようになっており、
当該書込み先のアドレスは、前記第１のアドレス種別に属するアドレスであり、
当該書込みについて、書込み先のサブ論理記憶領域に対応した混在状態情報は、混在無しを示す情報である、
請求項３に記載の記憶制御システム。
【請求項１０】
前記第２のアドレス種別は、前記記憶装置のフォーマットにおいて単位領域毎に書き込まれるアドレスが属するアドレス種別である、
請求項１に記載の記憶制御システム。
【請求項１１】
Ｉ／Ｏ（Input/Output）要求に応答して必要があれば記憶装置からデータセットを読み出し、
一つ以上の第１のアドレスと一つ以上の第２のアドレスとの対応関係を示す情報であるアドレス変換情報のうちの、読出し対象のデータセットに対応した第１のアドレスと第２のアドレスの一方が、当該データセットに含まれているデータとアドレスのうちの当該アドレスに一致する否かのチェックである全種別アドレスチェックを行い、
前記一つ以上の第１のアドレスの各々は、第１のアドレス種別に属するアドレスであり、
前記一つ以上の第２のアドレスの各々は、第２のアドレス種別に属するアドレスであり、
前記全種別アドレスチェックの結果が真の場合、前記Ｉ／Ｏ要求に従う処理を行う、
記憶制御方法。
【請求項１２】
Ｉ／Ｏ（Input/Output）要求に応答して必要があれば記憶装置からデータセットを読み出し、
一つ以上の第１のアドレスと一つ以上の第２のアドレスとの対応関係を示す情報であるアドレス変換情報のうちの、読出し対象のデータセットに対応した第１のアドレスと第２のアドレスの一方が、当該データセットに含まれているデータとアドレスのうちの当該アドレスに一致する否かのチェックである全種別アドレスチェックを行い、
前記一つ以上の第１のアドレスの各々は、第１のアドレス種別に属するアドレスであり、
前記一つ以上の第２のアドレスの各々は、第２のアドレス種別に属するアドレスであり、
前記全種別アドレスチェックの結果が真の場合、前記Ｉ／Ｏ要求に従う処理を行う、
ことをコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、記憶制御に関する。
【背景技術】
【０００２】
記憶制御に関する技術として、例えば特許文献１に開示の技術が知られている。特許文献１は、「コンピュータから送信されたライトコマンドにともなうデータを記憶するストレージ装置において、ライトコマンドを受信した際にライトコマンドに対応するライトジョブを登録するジョブ管理テーブルを記憶するメモリと、ライトコマンドにともなうデータを一時的に格納するキャッシュメモリと、ジョブ管理テーブルに登録されたライトジョブに基づいてキャッシュメモリに格納されたデータを記憶媒体に記録するストレージドライブと、ジョブ管理テーブルから取得したライトジョブの累積数に基づいてストレージ装置の負荷状態を判定するとともに、判定された負荷状態に基づいてライトコマンドに対する完了報告を前記コンピュータに出力するタイミングを制御するコントローラと、を備える。」を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2013-025692号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一般に、記憶制御システムにより管理される複数の記憶領域（例えば、複数の論理ボリューム）は、階層的に又は横断的に存在する。記憶制御システムでは、階層的に又は横断的に存在する記憶領域間のアドレスの対応関係（アドレス間のマッピング）を示すアドレス変換情報が管理される。アドレス変換情報に基づき、一方の記憶領域に属する第１のアドレスを他方の記憶領域に属する第２のアドレスへ変換することが可能である。第１のアドレスは、第１のアドレス種別に属するアドレスであり、第２のアドレスは、第２のアドレス種別に属するアドレスである。
【０００５】
データの信頼性は、データに付加されているＥＣＣ（Error Correcting Code）を用いた誤り訂正により維持することができる。しかし、ＥＣＣを用いて、アドレス間のマッピングの信頼性を維持することはできない。
【課題を解決するための手段】
【０００６】
記憶制御システムは、Ｉ／Ｏ（Input/Output）要求に応答して必要があれば記憶装置からデータセットを読み出す。データセットは、データとアドレスを含む。記憶制御システムは、一つ以上の第１のアドレスと一つ以上の第２のアドレスとの対応関係を示す情報であるアドレス変換情報のうちの、読出し対象のデータセットに対応した第１のアドレスと第２のアドレスの一方が、当該データセットに含まれているデータとアドレスのうちの当該アドレスに一致する否かのチェックである全種別アドレスチェックを行う。一つ以上の第１のアドレスの各々は、第１のアドレス種別に属するアドレスである。一つ以上の第２のアドレスの各々は、第２のアドレス種別に属するアドレスである。記憶制御システムは、全種別アドレスチェックの結果が真の場合に、上記のＩ／Ｏ要求に従う処理を行う。
【発明の効果】
【０００７】
本発明によれば、アドレス間のマッピングの信頼性を維持することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態の概要を示す模式図。
【図２】記憶システムを含むシステム全体の構成を示すブロック図。
【図３】記憶システムにおける複数の記憶領域の関係を示す模式図。
【図４】アドレス管理テーブルの構成を示す図。
【図５】書込み処理の流れを示す図。
【図６】読出し処理の流れを示す図。
【図７】付替え促進の一例を示す図。
【発明を実施するための形態】
【０００９】
以下の説明では、「インターフェース部」は、一つ以上のインターフェースでよい。当該一つ以上のインターフェースは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１０】
また、以下の説明では、「メモリ部」は、一つ以上のメモリであり、典型的には主記憶デバイスでよい。
【００１１】
また、以下の説明では、「ＰＤＥＶ部」は、一つ以上のＰＤＥＶであり、典型的には補助記憶デバイスでよい。「ＰＤＥＶ」は、記憶デバイスの一例であり、特に、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイスである。
【００１２】
また、以下の説明では、「記憶部」は、メモリ部とＰＤＥＶ部の少なくとも一部とのうちの少なくとも一つ（典型的には少なくともメモリ部）である。
【００１３】
また、以下の説明では、「プロセッサ部」は、一つ以上のプロセッサである。少なくとも一つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも一つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【００１４】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、この種の情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１５】
また、以下の説明では、「ｋｋｋ部」（インターフェース部、記憶部及びプロセッサ部を除く）の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、一つ以上のハードウェア回路（例えばＦＰＧＡ又はＡＳＩＣ）によって実現されてもよい。プログラムがプロセッサ部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部及び／又はインターフェース部等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００１６】
また、以下の説明では、「冗長構成グループ」は、二つ以上の記憶デバイスで構成され冗長化されたデータを格納する記憶デバイスグループである。冗長構成の例としては、Erasure Coding、ＲＡＩＮ（Redundant Array of Independent Nodes）、ノード間ミラーリング、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）などがあり、いずれの冗長構成が採用されてもよい。従って、「記憶デバイス」は、ＮＶＲＡＭ（Non-Volatile RAM）のような記憶媒体でもよいし、スケールアウト型の記憶システムの構成要素としてのノード（例えば汎用計算機）でもよい。また、「記憶システム」は、複数の記憶媒体を複数の記憶デバイスとして有する記憶システムでもよいし、複数のノードを複数の記憶デバイスとして有する記憶システム（例えば分散記憶システム）でもよい。以下の実施形態では、記憶システムは、前者の記憶システムであり、前者の記憶システムについて、記憶制御システムは、記憶システム内のコントローラでよい。後者の記憶システムについて、記憶制御システムは、各ノードにおいて所定のプログラムを実行するプロセッサ部でよい。具体的には、例えば、「記憶システム」は、一つ以上の物理的な計算機を含んだシステムでよい。物理的な計算機は、汎用計算機でも専用計算機でもよい。少なくとも一つの物理的な計算機において、一つ以上の仮想的な計算機（例えばＶＭ（Virtual Machine））が実行されてもよい。仮想的な計算機は、Ｉ／Ｏ要求を発行する計算機でもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機でもよい。物理的な計算機が所定のソフトウェアを実行することにより、当該物理的な計算機、又は、当該物理的な計算機を含んだシステムに、ＳＤｘ（Software-Defined anything）が構築されてもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、ＳＤＳとしての記憶システムが構築されてもよい。また、少なくとも一つの物理的な計算機（例えばストレージ装置）が、ホスト計算機としての一つ以上の仮想的な計算機と、記憶システムの記憶制御システム（典型的には、Ｉ／Ｏ要求に応答してデータをＰＤＥＶ部に対して入出力する装置）としての仮想的な計算機とが実行されてもよい。言い換えれば、当該少なくとも一つの物理的な計算機は、ホスト計算機の少なくとも一部として機能と、記憶システムの少なくとも一部としての機能の両方を有してもよい。
【００１７】
以下、一実施形態を説明する。なお、以下の説明において、「ＬＡ」は、論理アドレスの略である。
【００１８】
図１は、一実施形態の概要を示す模式図である。
【００１９】
記憶システム１００は、記憶装置１２０と、記憶装置１２０に対するデータのＩ／Ｏ（Input/Output）を制御する記憶制御システム１１０とを有する。
【００２０】
記憶制御システム１１０は、Ｉ／Ｏ制御部１４１と、ＬＡチェック部１４２（アドレスチェック部の一例）と、付替え制御部１４３と、アドレス変換テーブル１１１（アドレス変換情報の一例）とを有する。
【００２１】
アドレス変換テーブル１１１は、一つ以上のＤＰ−ＬＡと一つ以上のＰｏｏｌ−ＬＡとの対応関係を示す。ＤＰ−ＬＡは、第１のアドレス種別に属するアドレスである第１のアドレスの一例である。Ｐｏｏｌ−ＬＡは、第２のアドレス種別に属するアドレスである第２のアドレスの一例である。なお、「ＤＰ」とは、Dynamic Provisioningの略である。Dynamic Provisioningは、Thin Provisioningと呼ばれてもよい。本実施形態では、論理ボリュームとしてＤＰ−ＶＯＬ（Dynamic Provisioningに従う仮想的な論理ボリューム）が提供される。ＤＰ−ＶＯＬは、複数のページで構成されている。また、本実施形態では、複数のページに割り当てられ得る複数のセグメントで構成されているプールが用意される。ページもセグメントも、論理的な記憶領域である。一つのページに一つ以上のセグメントが割り当てられ得る。また、アドレス変換テーブル１１１において、ＤＰ−ＬＡとＰｏｏｌ−ＬＡの組は、所定の単位（例えば、ページ単位）で登録され、所定の単位よりも小さい単位でのマッピングは、所定の単位のマッピングを基にした計算等によって特定されてもよい。
【００２２】
Ｉ／Ｏ制御部１４１は、Ｉ／Ｏ要求に応答して必要があれば記憶装置１２０からデータセットを読み出す。Ｉ／Ｏ要求の発行元は、後述のホストシステムであってもよいし、内部プログラム（例えば、論理ボリューム間のデータコピーを行うプログラム）であってもよい。また、本実施形態において、「データセット」とは、データと、当該データに付加された情報である付加情報との組である。データセット、データ及び付加情報の各々は所定サイズでよい。例えば、データは５１２ｂｙｔｅ、付加情報は８ｂｙｔｅ、データセットは合計５２０ｂｙｔｅである。付加情報は、少なくともＬＡを含む。付加情報は、ＬＡ以外の情報、例えば、ＥＣＣ（Error Correcting Code）を含んでもよい。また、「必要があれば」とは、Ｉ／Ｏ要求に応答して必ずしも記憶装置１２０からの読み出しが生じるとは限らないことを意味し、例えば、Ｉ／Ｏ要求が読出し要求であっても読出し対象のデータセットがキャッシュメモリに存在することが該当し得る。逆に、Ｉ／Ｏ要求が書込み要求であっても、いわゆるリードモディファイライトが生じる場合のように、記憶装置１２０からデータセットを読み出すことが生じ得る。
【００２３】
ＬＡチェック部１４２は、アドレス変換テーブル１１１のうちの、読出し対象のデータセットに対応したＤＰ−ＬＡとＰｏｏｌ−ＬＡの一方が、当該データセットに含まれているＬＡに一致する否かのチェックである全種別ＬＡチェックを行う。全種別ＬＡチェックの結果が真の場合、Ｉ／Ｏ要求に従う処理（例えば、実際にデータセットを記憶装置１２０から読み出すこと）が行われる。
【００２４】
本実施形態によれば、読出し対象のデータセットにおける付加情報に、当該データセット内のデータの読出し元（格納されている記憶領域）に属するＬＡが含められ、当該ＬＡに、読出し対象のデータセットに対応したＤＰ−ＬＡとＰｏｏｌ−ＬＡ（アドレス変換テーブル１１１におけるＤＰ−ＬＡとＰｏｏｌ−ＬＡ）の一方が一致する否かの全種別ＬＡチェックが行われる。これにより、アドレス間のマッピングの信頼性を維持することができる。
【００２５】
具体的には、例えば、図１に例示のアドレス変換テーブル１１１によれば、ＤＰ−ＬＡ１とＰｏｏｌ−ＬＡ１同士がマッピングされており、ＤＰ−ＬＡ２とＰｏｏｌ−ＬＡ２同士がマッピングされている。また、図１に例示の記憶装置１２０には、Ｄａｔａ１（データ）及びＤＰ−ＬＡ１（ＬＡ）を含んだデータセットと、Ｄａｔａ２及びＰｏｏｌ−ＬＡ２を含んだデータセットとがある。このように、本実施形態では、記憶装置１２０に異なるアドレス種別のＬＡが混在することが許容されている。
【００２６】
ここで、読出し対象のデータセットが、Ｄａｔａ１及びＤＰ−ＬＡ１を含んだデータセットであるとする。この場合、全種別ＬＡチェックにおいて、データセット内のＤＰ−ＬＡ１は、ＤＰ−ＬＡ１とＰｏｏｌ−ＬＡ１のうちのＤＰ−ＬＡ１と一致する。このため、当該データセットが読出し対象である読出し要求に従う処理が行われる。具体的には、例えば、Ｉ／Ｏ制御部１４１によりＤａｔａ１が読出し要求の要求元に返る。
【００２７】
同様に、読出し対象のデータセットが、ＤＰ−ＬＡ２とＰｏｏｌ−ＬＡ２を含んだデータセットであるとする。この場合、全種別ＬＡチェックにおいて、データセット内のＰｏｏｌ−ＬＡ２は、ＤＰ−ＬＡ２とＰｏｏｌ−ＬＡ２のうちのＰｏｏｌ−ＬＡ２と一致する。このため、当該データセットが読出し対象である読出し要求に従う処理が行われる。具体的には、例えば、Ｉ／Ｏ制御部１４１によりＤａｔａ２が読出し要求の要求元に返る。
【００２８】
全種別ＬＡチェックにおいて一致するアドレスがいずれかのＰｏｏｌ−ＬＡである場合、付替え制御部１４３が、読出し対象のデータセットにおけるＰｏｏｌ−ＬＡを、当該Ｐｏｏｌ−ＬＡに対応するＤＰ−ＬＡに付け替える（差し替える）。図示の例によれば、付替え制御部１４３が、読出し対象のデータセットにおけるＰｏｏｌ−ＬＡ２を、当該Ｐｏｏｌ−ＬＡ２に対応するＤＰ−ＬＡ２に付け替える。そして、Ｉ／Ｏ制御部１４１は、Ｄａｔａ２（当該読出し対象のデータセットに含まれているデータ）とＤＰ−ＬＡ２（当該読出し対象のデータセットに含まれているＰｏｏｌ−ＬＡ２の付替え後のＬＡ）とを含んだデータセットを、当該読出し対象のデータセットの更新後のデータセットとして記憶装置１２０に書き込む。これにより、記憶装置１２０には、Ｐｏｏｌ−ＬＡに代えてＤＰ−ＬＡが増えていくことになり、故に、全種別ＬＡチェックが必要になる頻度が減り、結果として、読出し処理の性能の向上が期待できる。
【００２９】
また、本実施形態では、例えば下記のことも言える。
【００３０】
本実施形態では、バックグラウンドのフォーマットにおいて、プールにおける単位領域（例えば、データセットと同サイズの５２０ｂｙｔｅの記憶領域）毎に、データセット（例えば、全ビットが０のデータを含んだデータセット）が書き込まれるが、書き込まれる全てのデータセット内のＬＡは、Ｐｏｏｌ−ＬＡである。例えば、記憶装置１２０が提供する論理記憶空間に基づくプールの作成時に、当該プールの単位領域毎に、当該単位領域が属するＰｏｏｌ−ＬＡを含んだデータセットが書き込まれる。すなわち、初期的には、記憶装置１２０に存在するＬＡは、Ｐｏｏｌ−ＬＡのみである。
【００３１】
一方、Ｉ／Ｏ要求で指定されるＬＡは、ＤＰ−ＬＡである。フロントエンドの論理的な記憶領域としてＤＰ−ＶＯＬが提供され、プールはバックエンドの論理的な記憶領域であるためである。
【００３２】
この場合、一比較例では、記憶装置に接続された専用のインターフェースコントローラにより、記憶装置へ書き込まれるデータセット毎に当該データセット内のＤＰ−ＬＡをＰｏｏｌ−ＬＡに付け替えることが考えられる。このような付替えを行う理由は、記憶装置内のＬＡをＰｏｏｌ−ＬＡに統一するためであり、また、このような付替えをインターフェースコントローラが行う理由は、マイクロプログラムによりこのような付替えを行うことは処理負荷が高くＩ／Ｏ性能の低下を招くおそれがあるからである。
【００３３】
しかし、インターフェースコントローラのようなハードウェア回路に依存することは、汎用性が低いと考えられる。例えば、記憶システムをソフトウェアディファインドのシステムとすることは困難である。
【００３４】
また、記憶システムによっては（例えば、記憶制御システムと記憶装置間のプロトコルによっては）、このようなインターフェースコントローラが搭載されないことがある。この場合、ＤＰ−ＬＡをＰｏｏｌ−ＬＡに付け替えることを、マイクロプログラムが行う必要が生じ得る。マイクロプログラムがそのような付替えを記憶装置へ書き込まれるデータセット毎に行うことは、Ｉ／Ｏ性能の低下を招くおそれがある。
【００３５】
そこで、本実施形態では、上述したように、記憶装置１２０に、異なるアドレス種別のＬＡが混在することが許容され、読出し対象のデータセットに対応したＤＰ−ＬＡとＰｏｏｌ−ＬＡの一方が当該データセットに含まれているＬＡに一致する否かの全種別ＬＡチェックが行われる。
【００３６】
また、本実施形態では、上述したように、Ｐｏｏｌ−ＬＡに代えてＤＰ−ＬＡが記憶装置１２０に増えていくことになるため、全種別ＬＡチェックが必要になる頻度が減り、結果として、読出し処理の性能の向上が期待できる。
【００３７】
以下、本実施形態を詳細に説明する。
【００３８】
図２は、記憶システム１００を含むシステム全体の構成を示す。
【００３９】
ネットワーク２８０に、記憶システム１００、ホストシステム２６０及び管理システム２７０が接続される。ホストシステム２６０は、一つ以上の物理的又は仮想的な計算機でよく、記憶システム１００から提供されるＤＰ−ＶＯＬに対してＩ／Ｏ要求を発行する。管理システム２７０は、一つ以上の物理的又は仮想的な計算機でよく、記憶システム１００を管理する。ユーザ（典型的には管理者）は、管理システム２７０経由で、プールの作成を、記憶制御システム１１０に対して行うことができる。ネットワーク２８０は、ファイバチャネル（Fibre Channel）、イーサネット（登録商標）、InfiniBand又はＬＡＮ（Local Area Network）などから構成される一つ以上のネットワークでよい。
【００４０】
記憶システム１００は、複数のＮＶＲＡＭ（Non-Volatile RAM）２５５と、複数のＮＶＲＡＭ２５５に対するＩ／Ｏを制御する記憶制御システム１１０とを備える。
【００４１】
各ＮＶＲＡＭ２５５は、記憶デバイスの一例であり、不揮発性の半導体メモリを有するデバイスである。当該メモリは、フラッシュメモリ、ＰＲＡＭ（Phase-change Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）又はＦｅＲＡＭ（Ferroelectric Random Access Memory）でよい。
【００４２】
記憶制御システム１１０は、例えば、冗長化されたストレージコントローラ２１０である。ストレージコントローラ２１０は、ＦＥ（フロントエンド）インターフェース２１１、ＢＥ（バックエンド）インターフェース２１２、メモリ２１３、及び、それらに接続されたＣＰＵ２１４を有する。ＦＥインターフェース２１１及びＢＥインターフェース２１２は、インターフェース部の一例である。メモリ２１３は、メモリ部の一例である。ＣＰＵ２１４は、プロセッサ部の一例である。
【００４３】
ＦＥインターフェース２１１は、ネットワーク２８０に接続され、記憶システム１００の外部の装置（ホストシステム２６０及び管理システム２７０）と通信するためのインターフェースデバイスである。ＢＥインターフェース２１２は、ＮＶＲＡＭ２５５と通信するためのインターフェースデバイスである。ＢＥインターフェース２１２とＮＶＲＡＭ２５５間の通信プロトコルは、例えば、ＮＶＭｅである。
【００４４】
メモリ２１３は、ＳＲＡＭ（Static RAM(Random Access Memory)）やＤＲＡＭ（Dynamic RAM）などの揮発性の半導体メモリから構成されてよい。メモリ２１３は、キャッシュメモリ（図示せず）を有する。メモリ２１３は、マイクロプログラム２９１を含む複数のプログラムや、一つ以上のテーブルであるテーブル群２９２（管理情報の一例）を記憶する。テーブル群２９２は、上述のアドレス変換テーブル１１１、及び、後述のアドレス管理テーブル（アドレス管理情報の一例）を含む。
【００４５】
ＣＰＵ２１４は、メモリ２１３内のプログラムを実行することでストレージコントローラ２１０全体の動作制御を司る。例えば、ＣＰＵ２１４がマイクロプログラム２９１を実行することで、Ｉ／Ｏ制御部１４１、ＬＡチェック部１４２、付替え制御部１４３、Ｉ／Ｏ要求制御部１４４、混在状態管理部１４５及びＬＡ管理部１４６といった機能が実現される。ＬＡチェック部１４２、Ｉ／Ｏ制御部１４１及び付替え制御部１４３については、上述の通りである。Ｉ／Ｏ要求制御部１４４は、Ｉ／Ｏ要求を受け付けたり、読出し元のアドレスを指定した問合せを発行したりする。混在状態管理部１４５は、当該問合せに応答して混在有りか混在無しかを回答する。ＬＡ管理部１４６は、アドレス変換テーブル１１１からＬＡを取得する。各機能の詳細は後述する。
【００４６】
図３は、記憶システム１００における複数の記憶領域の関係を示す。
【００４７】
一つ以上のＲＡＩＤグループ３８０がある。ＲＡＩＤグループ３８０は、二つ以上のＮＶＲＡＭ２５５で構成される。ＲＡＩＤグループ３８０に基づく論理的な記憶領域が、複数のストライプ３４０で構成される。「ストライプ」とは、ＲＡＩＤグループ３８０における二つ以上のＮＶＲＡＭ２５５にそれぞれ存在する二つ以上のストリップで構成された記憶領域である。「ストリップ」とは、ＮＶＲＡＭ２５５の記憶領域の一部である。ストリップは、データ又はパリティを格納する。
【００４８】
一つ以上のＲＡＩＤグループ３８０に基づく論理的な記憶領域に基づきプール３２０が作成される。プール３２０は、バックエンドの論理的な記憶領域の一例であり、複数のセグメント３１２で構成される。各セグメント３１２に、複数のパリティサイクル３２２が属する。パリティサイクル３２２は、一つ以上のストライプ３４０に対応した領域である。本実施形態では、一つのパリティサイクル３２２は、一つのストライプ３４０に対応し、故に、一つの部分パリティサイクル３２３は、一つのストリップに対応する。プール３２０が、記憶装置１２０に基づく論理記憶領域の一例であり、パリティサイクル３２２が、サブ論理記憶領域の一例である。なお、部分パリティサイクル３２３には、メモリ２１３におけるキャッシュメモリを構成する複数のスロット３８６（記憶領域）のうちのいずれかのスロット３８６が関連付けられる。部分パリティサイクル３２３に格納されるデータは、当該部分パリティサイクル３２３に関連付けられたスロット３８６に一時格納される。スロット３８６に、一つ以上のデータセット３７０が格納される。データセット３７０は、上述したように、データ３６１と付加情報３６２の組である。また、プール３２０が作成された場合、バックグラウンドのフォーマットにおいて、当該プール３２０における単位領域毎に、Ｐｏｏｌ−ＬＡが書き込まれる。
【００４９】
ＤＰ−ＶＯＬ３１０は、ホストシステム２６０に提供されるフロントエンド（オンライン）の論理ボリュームの一例である。ＤＰ−ＶＯＬ３１０は、複数のページ３０１で構成される。セグメント３１２が割り当てられていないページ３０１に対して書込みが生じる場合、当該ページ３０１に、いずれのページ３０１にも割り当てられていないいずれかのセグメント３１２が割り当てられる。本実施形態では、一つのページ３０１には一つのセグメント３１２が割り当てられるとする。セグメント３１２が割り当てられたページ３０１には、当該セグメント３１２を介して、当該セグメント３１２に属する複数のパリティサイクル３２２にそれぞれ対応した複数の部分ページ３０２が属することになる。
【００５０】
図４は、アドレス管理テーブルの構成を示す。
【００５１】
アドレス管理テーブル４００は、複数のパリティサイクル３２２の各々について混在フラグを含む。各パリティサイクル３２２について、混在フラグは、当該パリティサイクル３２２にＤＰ−ＬＡとＰｏｏｌ−ＬＡが混在するか否かを示す情報（混在状態情報）の一例である。読出し対象のデータセットの読出し元の記憶領域を含んだパリティサイクル３２２に対応した混在フラグが混在有り（例えば“１”）を示していれば、上述の全種別ＬＡチェックが行われる。しかし、当該混在フラグが混在無し（例えば“０”）を示していれば、全種別ＬＡチェックは不要である。言い換えれば、ＤＰ−ＬＡのみについて、読出し対象のデータセット内のＬＡが当該読出し元に対応したＤＰ−ＬＡに一致するか否かのＬＡチェック（以下、単一種別ＬＡチェック）が行われればよい。このように、混在フラグを参照することで、全種別ＬＡチェックの要否がわかり、全種別ＬＡチェックが不要であれば、ＤＰ−ＬＡのみについての単一種別ＬＡチェックが行われる。故に、全種別ＬＡチェックの頻度を軽減することができ、以って、Ｉ／Ｏ性能の向上が期待できる。
【００５２】
なお、混在フラグは、単位領域（データセット）よりも大きな単位毎、例えばパリティサイクル３２２毎にある。このため、混在フラグという新しい情報が設けられても、アドレス管理テーブル４００の肥大化を避けることができる。
【００５３】
具体的には、アドレス管理テーブル４００は、ページ３０１毎にエントリを有し、各エントリが、ページＩＤ（ページ３０１の識別情報）や混在フラグマップを格納する。各エントリにおいて、混在フラグマップは、当該エントリに対応したページ３０１に割り当てられているセグメント３１２に属する二つ以上のパリティサイクル３２２にそれぞれ対応した二つ以上の混在フラグである。混在フラグマップは、例えばビットマップであり、各ビットが、混在フラグである。アドレス管理テーブル４００は、このような構成であるため、混在フラグという新しい情報が設けられても、アドレス管理テーブル４００（ページ管理テーブル）の肥大化を避けることができる。
【００５４】
以下、本実施形態で行われる処理の一例を説明する。なお、以下の説明において、詳細説明は省略するが、記憶装置１２０（ＮＶＲＡＭ２５５）に対するデータセットのＩ／Ｏは、当該データセットのＩ／Ｏ先のＤＰ−ＬＡに対応したＰｏｏｌ−ＬＡ（アドレス変換テーブル１１１を基に特定されるＰｏｏｌ−ＬＡ）を用いて行われる。
【００５５】
図５は、書込み処理の流れを示す。
【００５６】
Ｓ５０１で、Ｉ／Ｏ要求制御部１４４が、書込み要求を受け付ける。Ｉ／Ｏ要求制御部１４４が、当該書込み要求についての書込みが、パリティサイクル３２２全体であるか否かを判断する。キャッシュメモリに、当該書込み要求に従うデータを含めパリティサイクル３２２全体分についてのデータがあれば、Ｓ５０１の判断結果が真である。
【００５７】
Ｓ５０１の判断結果が真の場合（Ｓ５０１：Ｙｅｓ）、Ｓ５０２で、パリティサイクル３２２全体について書込みが行われる。具体的には、Ｉ／Ｏ要求制御部１４４が、Ｉ／Ｏ制御部１４１に書込みを指示する。Ｉ／Ｏ制御部１４１が、パリティサイクル３２２全体分の複数のデータセットを、プール３２０（正確には、書込み先のページ３０１に割り当てられているセグメント３１２に属するパリティサイクル３２２）に書き込む。当該複数のデータセットの各々には、当該データセット内のデータの書込み先のＤＰ−ＬＡが含まれる。Ｉ／Ｏ制御部１４１が、当該パリティサイクル３２２に対応した混在フラグ（アドレス管理テーブル４００における混在フラグ）を混在無しに更新する。Ｉ／Ｏ制御部１４１は、完了（ＯＫ）をＩ／Ｏ要求制御部１４４に返す。
【００５８】
Ｓ５０１の判断結果が偽の場合（Ｓ５０１：Ｎｏ）、書込み先が属するパリティサイクル３２２全体について、いわゆるリードモディファイライトが行われる。具体的には、下記のＳ５０３〜Ｓ５０８の通りである。
【００５９】
すなわち、Ｓ５０３で、書込み先のページ３０１について、混在有りか否かが判断される。具体的には、Ｉ／Ｏ要求制御部１４４が、書込み先のＤＰ−ＬＡが属するページ３０１について、混在有りか否かの問合せを混在状態管理部１４５に出す。混在状態管理部１４５が、当該ページ３０１に対応したエントリ（アドレス管理テーブル４００におけるエントリ）を参照し、当該エントリにおける混在フラグマップに、混在有りを示す混在フラグが一つでもあるか否かを判断する。この判断の結果が真の場合、混在状態管理部１４５が、混在有りの回答をＩ／Ｏ要求制御部１４４に返す。一方、この判断の結果が偽の場合、混在状態管理部１４５が、混在無しの回答をＩ／Ｏ要求制御部１４４に返す。返された回答が、混在有りの回答の場合、Ｓ５０３の判断結果が真である。返された回答が、混在無しの回答の場合、Ｓ５０３の判断結果が偽である。なお、このように、混在有りか否かの判断は、ページ単位である。このため、上述したように、混在フラグという新しい情報が設けられてもアドレス管理テーブル４００の肥大化を避けることができる。しかし、混在有りか否かの判断の単位（ページ）が、混在フラグの単位（パリティサイクル）よりも大きいため、混在有りが回答される可能性が大きい。そこで、混在無しを示す混在フラグが増えることが促進され、結果として、全種別ＬＡチェックの頻度が下がり、以って、Ｉ／Ｏ性能の向上が期待できるよう、下記のうちの少なくとも１つ（本実施形態では全て）が行われる。
・書込み対象のデータが、パリティサイクル３２２全体についてキャッシュメモリに蓄積された場合に、記憶装置１２０へ書込みが行われる。
・パリティサイクル３２２の一部について書込み対象のデータがある場合、パリティサイクル３２２全体についていわゆるリードモディファイライトが行われる。
・読出し対象のデータが、パリティサイクル３２２の一部についてであっても、パリティサイクル３２２全体について読出しが行われ、読み出されたデータセット内のＬＡがＰｏｏｌ−ＬＡであればＤＰ−ＬＡに付け替えて、当該パリティサイクル３２２全体について、ＬＡ付替え後のデータセットの書込みが行われる。
・マイクロプログラム２９１が低負荷の場合に、混在有りを示す混在フラグに対応したパリティサイクル３２２全体について、読出し、ＬＡ付替え、及び、書込みが行われる。
【００６０】
Ｓ５０３の判断結果が偽の場合（Ｓ５０３：Ｎｏ）、パリティサイクル３２２に関し、リードモディファイライトでの読出し対象の各データセットについて、Ｓ５０４で、単一種別ＬＡチェックが行われる。一つのデータセットを例に取ると、次の通りである（この段落において「対象データセット」）。すなわち、Ｉ／Ｏ要求制御部１４４が、書込み先のＤＰ−ＬＡを指定したＬＡ要求（ＤＰ−ＬＡの要求）をＬＡ管理部１４６に出す。ＬＡ管理部１４６は、そのＬＡ要求に応答して、指定されたＤＰ−ＬＡに一致するＤＰ−ＬＡをアドレス変換テーブル１１１から取得し、取得されたＤＰ−ＬＡをＩ／Ｏ要求制御部１４４に返す。Ｉ／Ｏ要求制御部１４４が、そのＤＰ−ＬＡを指定した読出し指示をＩ／Ｏ制御部１４１に出す。読出し指示に応答して、Ｉ／Ｏ制御部１４１が、そのＤＰ−ＬＡを指定したＬＡチェック指示を、対象データセットを格納しているＮＶＲＡＭ２５５に出す。ＮＶＲＡＭ２５５が、当該ＬＡチェック指示に応答して、対象データセット内のＤＰ−ＬＡと、指定されたＤＰ−ＬＡとが一致するか否かの単一種別ＬＡチェックを行い、単一種別ＬＡチェックの結果をＩ／Ｏ制御部１４１に応答する。単一種別ＬＡチェックの結果が一致（ＯＫ）であれば、Ｉ／Ｏ制御部１４１は、対象データセットをＮＶＲＡＭ２５５から読み出し、Ｉ／Ｏ要求制御部１４４に、当該対象データセットを返す。当該対象データセットは、キャッシュメモリに蓄積される。なお、Ｓ５０４において、単一種別ＬＡチェックは、ＮＶＲＡＭ２５５に代えてＬＡチェック部１４２により行われてもよい。例えば、Ｉ／Ｏ制御部１４１は、対象データセットをＮＶＲＡＭ２５５から読み出し、且つ、ＤＰ−ＬＡを指定したＬＡチェック指示を、ＮＶＲＡＭ２５５に代えてＬＡチェック部１４２に出してもよい。ＬＡチェック部１４２が、読み出された対象データセット内のＬＡについて単一種別ＬＡチェックを行ってもよい。
【００６１】
Ｓ５０５で、キャッシュメモリ上のデータのうちの一部が書込み対象のデータに更新され（パリティがあればパリティも更新され）、複数のデータセット（パリティサイクル３２２全体分のデータセット）が、Ｉ／Ｏ制御部１４１によりプール３２０（パリティサイクル３２２）に書き込まれる。なお、当該パリティサイクル３２２に対応した混在フラグは、既に混在無しを示しているため、当該混在フラグの更新は不要である。
【００６２】
Ｓ５０３の判断結果が真の場合（Ｓ５０３：Ｙｅｓ）、パリティサイクル３２２に関し、リードモディファイライトでの読出し対象の各データセットについて、Ｓ５０６で、全種別ＬＡチェックが行われる。一つのデータセットを例に取ると、次の通りである（この段落において「対象データセット」）。すなわち、Ｉ／Ｏ要求制御部１４４が、書込み先のＤＰ−ＬＡを指定したＬＡ要求（ＤＰ−ＬＡとＰｏｏｌ−ＬＡの要求）をＬＡ管理部１４６に出す。ＬＡ管理部１４６は、そのＬＡ要求に応答して、指定されたＤＰ−ＬＡに一致するＤＰ−ＬＡ及びＰｏｏｌ−ＬＡをアドレス変換テーブル１１１から取得し、取得されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡをＩ／Ｏ要求制御部１４４に返す。Ｉ／Ｏ要求制御部１４４が、そのＤＰ−ＬＡ及びＰｏｏｌ−ＬＡを指定した読出し指示をＩ／Ｏ制御部１４１に出す。読出し指示に応答して、Ｉ／Ｏ制御部１４１が、対象データセットをＮＶＲＡＭ２５５から読み出す。また、Ｉ／Ｏ制御部１４１が、当該ＤＰ−ＬＡ及びＰｏｏｌ−ＬＡを指定したＬＡチェック指示を、ＬＡチェック部１４２に出す。ＬＡチェック部１４２が、対象データセット内のＬＡが当該指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡの一方に一致するか否かの全種別ＬＡチェックを行う。当該全種別ＬＡチェックの結果をＬＡチェック部１４２がＩ／Ｏ制御部１４１に返す。なお、当該全種別ＬＡチェックにおいて一致が得られ、且つ、対象データセット内のＬＡがＰｏｏｌ−ＬＡに一致した場合、Ｓ５０７で、対象データセット内のＰｏｏｌ−ＬＡが、上記指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡのうちのＤＰ−ＬＡに付け替えられる。具体的には、ＬＡチェック部１４２又はＩ／Ｏ制御部１４１が付替え指示を付替え制御部１４３に出す。付替え指示に応答して、付替え制御部１４３が、対象データセット内のＰｏｏｌ−ＬＡを、上記指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡのうちのＤＰ−ＬＡに付け替える。付替え制御部１４３は、付替え完了を、付替え指示の送信元に返す。
【００６３】
Ｓ５０８で、キャッシュメモリ上のデータのうちの一部が書込み対象のデータに更新され（パリティがあればパリティも更新され）、複数のデータセット（パリティサイクル３２２全体分のデータセット）が、Ｉ／Ｏ制御部１４１によりプール３２０（パリティサイクル３２２）に書き込まれる。Ｉ／Ｏ制御部１４１は、当該パリティサイクル３２２に対応した混在フラグ（アドレス管理テーブル４００における混在フラグ）を混在無しに更新する。
【００６４】
図６は、読出し処理の流れを示す。
【００６５】
Ｓ６０１で、Ｉ／Ｏ要求制御部１４４が、読出し要求を受け付ける。読出し元のＤＰ−ＬＡが属するページ３０１について、混在有りか否かが判断される。具体的には、Ｉ／Ｏ要求制御部１４４が、当該ページ３０１について、混在有りか否かの問合せを混在状態管理部１４５に出す。混在状態管理部１４５が、当該ページ３０１に対応したエントリ（アドレス管理テーブル４００におけるエントリ）を参照し、当該エントリに、混在有りを示す混在フラグが一つでもあるか否かを判断する。この判断の結果に応じた回答を、混在状態管理部１４５が、Ｉ／Ｏ要求制御部１４４に返す。返された回答が、混在有りの回答の場合、Ｓ６０１の判断結果が真である。返された回答が、混在無しの回答の場合、Ｓ６０１の判断結果が偽である。
【００６６】
Ｓ６０１の判断結果が偽の場合（Ｓ６０１：Ｎｏ）、Ｓ６０２で、読出し対象のデータセットについて、単一種別ＬＡチェックが行われる。なお、Ｓ６０２の処理は、書込み先のＤＰ−ＬＡが読出し元のＤＰ−ＬＡである点を除いて、上述のＳ５０４の処理と同じである。Ｓ６０３で、Ｉ／Ｏ制御部１４１により読み出されたデータセットが、Ｉ／Ｏ要求制御部１４４により、Ｉ／Ｏ要求の送信元に返される。
【００６７】
Ｓ６０１の判断結果が真の場合（Ｓ６０１：Ｙｅｓ）、読出し元のＤＰ−ＬＡが属するパリティサイクル３２２における各データセットについて、Ｓ６０４で、全種別ＬＡチェックが行われる。一つのデータセットを例に取ると、次の通りである（この段落において「対象データセット」）。すなわち、Ｉ／Ｏ要求制御部１４４が、読出し元のＤＰ−ＬＡを指定したＬＡ要求（ＤＰ−ＬＡとＰｏｏｌ−ＬＡの要求）をＬＡ管理部１４６に出す。ＬＡ管理部１４６は、そのＬＡ要求に応答して、指定されたＤＰ−ＬＡに一致するＤＰ−ＬＡ及びＰｏｏｌ−ＬＡをアドレス変換テーブル１１１から取得し、取得されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡをＩ／Ｏ要求制御部１４４に返す。Ｉ／Ｏ要求制御部１４４が、そのＤＰ−ＬＡ及びＰｏｏｌ−ＬＡを指定した読出し指示をＩ／Ｏ制御部１４１に出す。読出し指示に応答して、Ｉ／Ｏ制御部１４１が、対象データセットをＮＶＲＡＭ２５５から読み出す。また、Ｉ／Ｏ制御部１４１が、当該ＤＰ−ＬＡ及びＰｏｏｌ−ＬＡを指定したＬＡチェック指示を、ＬＡチェック部１４２に出す。ＬＡチェック部１４２が、対象データセット内のＬＡが当該指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡの一方に一致するか否かの全種別ＬＡチェックを行う。当該全種別ＬＡチェックの結果をＬＡチェック部１４２がＩ／Ｏ制御部１４１に返す。なお、当該全種別ＬＡチェックにおいて一致が得られ、且つ、対象データセット内のＬＡがＰｏｏｌ−ＬＡに一致した場合、Ｓ６０５で、対象データセット内のＰｏｏｌ−ＬＡが、上記指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡのうちのＤＰ−ＬＡに付け替えられる。具体的には、ＬＡチェック部１４２又はＩ／Ｏ制御部１４１が付替え指示を付替え制御部１４３に出す。付替え指示に応答して、付替え制御部１４３が、対象データセット内のＰｏｏｌ−ＬＡを、上記指定されたＤＰ−ＬＡ及びＰｏｏｌ−ＬＡのうちのＤＰ−ＬＡに付け替える。付替え制御部１４３は、付替え完了を、付替え指示の送信元に返す。
【００６８】
Ｓ６０６で、キャッシュメモリ上のデータセット（パリティサイクル３２２全体分のデータセット）のうち、読出し要求に従うデータセット内のデータが、Ｉ／Ｏ要求制御部１４４により、読出し要求の送信元に返される。Ｓ６０７で、Ｉ／Ｏ制御部１４１が、パリティサイクル３２２全体分のデータセットをプール３２０に書き込み、且つ、当該パリティサイクル３２２に対応した混在フラグ（アドレス管理テーブル４００における混在フラグ）を混在無しに更新する。
【００６９】
このように、読出し処理において、付替え後のＤＰ−ＬＡを含んだデータセットが、付替え前のＰｏｏｌ−ＬＡを含んだデータセットの更新後のデータセットとして書き込まれる。つまり、書込み処理に加えて、読出し処理においても、記憶装置１２０内のＰｏｏｌ−ＬＡをＤＰ−ＬＡに変えることができる。結果として、全種別ＬＡチェックの頻度が下がることが一層期待できる。
【００７０】
図７は、付替え促進の一例を示す。図７に例示の処理は、例えば定期的に開始される。なお、「付替え促進」とは、混在フラグ単位（パリティサイクル単位）で、記憶装置１２０におけるデータセット内のＬＡがＰｏｏｌ−ＬＡであれば当該Ｐｏｏｌ−ＬＡをＤＰ−ＬＡに付け替えることで、混在フラグを混在無しに更新し、結果として、全種別ＬＡチェックの頻度を下げることである。
【００７１】
Ｓ７０１で、マイクロプログラム２９１の負荷が閾値未満か否かが、例えばＩ／Ｏ要求制御部１４４により判断される。
【００７２】
Ｓ７０１の判断結果が真の場合（Ｓ７０１：Ｙｅｓ）、Ｓ７０２で、或るページ３０１（例えば、直前回の図７の処理において対象とされたページ３０１の次のページ３０１）について、混在有りか否かが判断される。この判断は、Ｓ６０１と同様である。
【００７３】
Ｓ７０２の判断結果が真の場合（Ｓ７０２：Ｙｅｓ）、Ｓ７０３で、当該或るページ３０１に属する全てのパリティサイクル３２２の各々における各データセットについて、全種別ＬＡチェックが行われる。Ｓ７０３は、Ｓ６０４と同様である。必要に応じて、Ｓ７０４が行われるが、Ｓ７０４は、Ｓ６０５と同様である。
【００７４】
Ｓ７０５で、Ｉ／Ｏ制御部１４１が、キャッシュメモリ上のデータセット（上記或るページ３０１における各パリティサイクル３２２における全データセット）を、プール３２０に書き込み、且つ、当該ページ３０１について混在有りを示す各混在フラグを混在無しに更新する。
【００７５】
以上が、本実施形態で行われる処理の一例である。
【００７６】
上述したように、Ｉ／Ｏ（書込みや読出し）が、混在フラグ単位で行われれば、記憶装置１２０内のデータセットにおけるＬＡがやがてＤＰ−ＬＡに統一されること、つまり、ＬＡの混在が無くなることが期待される。
【００７７】
そして、本実施形態は、混在フラグは、パリティサイクル毎に用意される。このため、全種別ＬＡチェックの頻度を効率的に下げることが期待できる。具体的には、例えば、下記のうちの少なくとも１つが該当してよい。
・書込みは、パリティ更新の負荷軽減等の目的から、積極的にパリティサイクル単位で行われる。
・パリティサイクルの一部が更新される場合、パリティサイクルについてリードモディファイライトが行われる。
・パリティサイクルの一部が読出し元でも、パリティサイクル全体について読出しが行われる。
・記憶制御システム１１０が、記憶装置１２０内の重複したデータを排除する重複排除機能を有する場合、重複排除が、パリティサイクル単位で行われる。
・記憶システム１００のリプレース等が原因でデータのコピー（レプリケーション又はマイグレーション）が生じる場合、いわゆるシーケンシャルＩ／Ｏが発生する。シーケンシャルＩ／Ｏでは、パリティサイクル単位でＩ／Ｏが行われる。
【００７８】
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【００７９】
例えば、本発明は、ＤＰ−ＬＡとＰｏｏｌ−ＬＡ間のマッピングに代えて又は加えて、アドレス間の別のマッピング（例えば、同一レイヤにおける異なるアドレス間（異なる記憶領域間）のマッピング）にも適用することが可能である。
【００８０】
また、例えば、全種別ＬＡチェック及び単一種別ＬＡチェックの少なくとも一つについて、一致が得られない場合、Ｉ／Ｏ要求に従う処理が中断されて所定のエラー処理が行われてもよいし、あるいは、当該Ｉ／Ｏ要求に従う処理が再度行われてもよい。
【符号の説明】
【００８１】
１１０：記憶制御システム
【図１】
2019212175.tif 000003
【図２】
2019212175.tif 000004
【図３】
2019212175.tif 000005
【図４】
2019212175.tif 000006
【図５】
2019212175.tif 000007
【図６】
2019212175.tif 000008
【図７】
2019212175.tif 000009