(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-23
(54)【発明の名称】トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらす、トラック・アクセスについてのトラック・アクセス理由の提供
(51)【国際特許分類】
G06F 3/06 20060101AFI20230816BHJP
G06F 12/0862 20160101ALI20230816BHJP
G06F 12/0866 20160101ALI20230816BHJP
G06F 12/0868 20160101ALI20230816BHJP
【FI】
G06F3/06 302A
G06F12/0862 100
G06F12/0866 100
G06F12/0866 105
G06F12/0868 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023505720
(86)(22)【出願日】2021-07-02
(85)【翻訳文提出日】2023-01-26
(86)【国際出願番号】 CN2021104276
(87)【国際公開番号】W WO2022028174
(87)【国際公開日】2022-02-10
(32)【優先日】2020-08-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ピーターソン、ベス、アン
(72)【発明者】
【氏名】フォン、チョン、マン
(72)【発明者】
【氏名】カロス、マシュー、ジェイ
(72)【発明者】
【氏名】スタンリー、ウォーレン、キース
(72)【発明者】
【氏名】ワード、マシュー、ジェイ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ12
5B205MM11
5B205NN92
(57)【要約】
トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらす、トラック・アクセスについてのトラック・アクセス理由を提供するためのコンピュータ・プログラム製品、システム、および方法が提供される。キャッシュへプリフェッチされたキャッシュ・リソースが、予想されるトラックに関する第2の要求のために保持されている、そのトラックに関する第1の要求がプロセスから受信される。第1の要求についての理由を指定するトラック・アクセス理由が第1の要求について提供される。トラックへの第2の要求が受信される前に、プリフェッチされたキャッシュ・リソースが開放される。予想外に開放されたトラックのリスト中にトラック、および第1の要求についてのトラック・アクセス理由の表示が行われる。
【特許請求の範囲】
【請求項1】
キャッシュ内にキャッシュされたストレージ内のトラックへのアクセス要求を処理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、動作を行うために実行可能な、その中に具現されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を備え、前記動作は、
そのために前記キャッシュへプリフェッチされたキャッシュ・リソースが、予想されるトラックに関する第2の要求のために保持されている、前記トラックに関する第1の要求をプロセスから受信することであって、前記第1の要求についての理由を指定するトラック・アクセス理由が前記第1の要求について提供される、受信することと、
前記トラックへの前記第2の要求が受信される前に、前記プリフェッチされたキャッシュ・リソースを開放することと、
予想外に開放されたトラックのリスト中に前記トラック、および前記第1の要求についての前記トラック・アクセス理由を示すことと
を含む、コンピュータ・プログラム製品。
【請求項2】
前記第2の要求は、書き込むべきトラックの書き込みセット中の前記トラックへの書き込みを含み、前記書き込みセットは、前記予想外に開放されたトラックのリスト中の前記トラックによって示される前記トラックを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記動作は、
前記トラックへの前記第2の要求を受信することと、
前記プリフェッチされたキャッシュ・リソースが前記第2の要求のためにもはや利用可能ではないと判定することと、
前記プリフェッチされたキャッシュ・リソースがもはや保持されていないと判定することに応答して、前記トラックについて前記予想外に開放されたトラックのリストを検索することと、
前記予想外に開放されたトラックのリスト中の前記第1の要求についての前記トラック・アクセス理由を、前記第2の要求に関する失敗を伴って、返すことと
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記第2の要求は、ホストから第1のチャネル上で受信された第1の書き込み要求を含み、前記ホストは、前記第1のチャネル上での前記第1の書き込み要求に対する失敗を受信することに応答して、前記第1の書き込み要求を前記トラックへの第2の書き込み要求として第2のチャネル上で再試行すべきかどうかを判定するために前記トラック・アクセス理由を用いる、請求項1に記載のコンピュータ・プログラム製品。
【請求項5】
前記プリフェッチされたキャッシュ・リソースが開放されるようにする前記トラックに関する前記第1の要求は、前記第2のチャネル上の前記トラックへの書き込み要求を含み、前記トラック・アクセス理由は、前記ホストへ前記返された失敗についての理由として第2のチャネル書き込み要求を示し、前記ホストは、前記第1のチャネル上のリンク障害を判定するために前記トラック・アクセス理由を用いる、請求項4に記載のコンピュータ・プログラム製品。
【請求項6】
前記トラックに関する前記第1の要求を生成する前記プロセスは、前記キャッシュを有するストレージ・システム中の内部プロセスを含み、前記動作は、
前記内部プロセスからの前記第1の要求を、前記ストレージ・システム中の前記キャッシュへのアクセスを管理するキャッシュ・マネージャによって、受信することと、
前記プリフェッチ・キャッシュ・リソースが保持されていると判定することに応答して、前記プリフェッチ・キャッシュ・リソースおよび前記トラックへの書き込みを、トラックの書き込みセットへの順次書き込みの一部として、要求した書き込みアクセス・マネージャへ、前記プリフェッチ・キャッシュ・リソースおよび前記トラック・アクセス理由を開放するための要求を、前記キャッシュ・マネージャによって、送信することであって、前記書き込みアクセス・マネージャは、前記トラックおよび前記トラック・アクセス理由を前記予想外に開放されたトラックのリスト中に示す、送信することと
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項7】
前記第1の要求を開始する前記プロセスは、前記トラックを含むボリュームにQUIESCEを生じさせる、前記トラックを含む整合性グループを形成するコピー・サービスを含み、前記トラック・アクセス理由は、前記ボリュームのQUIESCEに起因する書き込みミスを示す、請求項1に記載のコンピュータ・プログラム製品。
【請求項8】
前記第1の要求を開始する前記プロセスは、前記第2の要求によって要求されるトラックに先行する前記トラックへの書き込みによってトリガされた前記トラックの読み取りを含み、前記読み取りは、前記プリフェッチされたキャッシュ・リソースの開放を要求し、前記動作は、
前記プリフェッチされたキャッシュ・リソースが前記トラックへの読み取りに対して開放されたことを示す前記トラック・アクセス理由を含む、前記第2の要求に対する失敗を返すことと、
前記プリフェッチされたキャッシュ・リソースが前記トラックへの前記読み取りに対して開放されたことを示す前記トラック・アクセス理由を受信することに応答して、書き込むべきトラックへの読み込みコンテンツの競合を回避するために、キャッシュ・リソースがプリフェッチされたトラックへの読み取り要求をスロットリングすることと
をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項9】
ストレージ内のトラックへのアクセス要求を処理するためのシステムであって、
プロセッサと、
前記ストレージ内のトラックをキャッシュするためのキャッシュと、および
前記プロセッサによって実行されたときに動作を行う、その中に具現されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体と
を備え、前記動作は、
前記キャッシュへプリフェッチされたキャッシュ・リソースが、予想されるトラックに関する第2の要求のために保持されている、前記トラックに関する第1の要求をプロセスから受信することであって、前記第1の要求についての理由を指定するトラック・アクセス理由が前記第1の要求について提供される、受信することと、
前記トラックへの前記第2の要求が受信される前に、前記プリフェッチされたキャッシュ・リソースを開放することと、
予測外に開放されたトラックのリスト中に前記トラック、および前記第1の要求についての前記トラック・アクセス理由を示すことと
を含む、
システム。
【請求項10】
前記第2の要求は、書き込むべきトラックの書き込みセット中の前記トラックへの書き込みを含み、前記トラックを含む前記書き込みセットは、前記予想外に開放されたトラックのリスト中の前記トラックによって示される、請求項9に記載のシステム。
【請求項11】
前記動作は、
前記トラックへの前記第2の要求を受信することと、
前記プリフェッチされたキャッシュ・リソースが前記第2の要求のためにもはや利用可能ではないと判定することと、
前記プリフェッチされたキャッシュ・リソースがもはや保持されていないと判定することに応答して、前記トラックについて前記予想外に開放されたトラックのリストを検索することと、
前記予想外に開放されたトラックのリスト中の前記第1の要求についての前記トラック・アクセス理由を、前記第2の要求に関する失敗を伴って、返すことと
をさらに含む、請求項9に記載のシステム。
【請求項12】
前記第2の要求は、ホストから第1のチャネル上で受信された第1の書き込み要求を含み、前記ホストは、前記第1のチャネル上での前記第1の書き込み要求に対する失敗を受信することに応答して、前記第1の書き込み要求を前記トラックへの第2の書き込み要求として第2のチャネル上で再試行すべきかどうかを判定するために前記トラック・アクセス理由を用いる、請求項9に記載のシステム。
【請求項13】
前記プリフェッチされたキャッシュ・リソースが開放されるようにする前記トラックに関する前記第1の要求は、前記第2のチャネル上の前記トラックへの書き込み要求を含み、前記トラック・アクセス理由は、前記ホストへ前記返された失敗についての理由として第2のチャネル書き込み要求を示し、前記ホストは、前記第1のチャネル上のリンク障害を判定するために前記トラック・アクセス理由を用いる、請求項12に記載のシステム。
【請求項14】
前記トラックに関する前記第1の要求を生成する前記プロセスは、前記キャッシュを有するストレージ・システム中の内部プロセスを含み、前記動作は、
前記内部プロセスからの前記第1の要求を、前記ストレージ・システム中の前記キャッシュへのアクセスを管理するキャッシュ・マネージャによって、受信することと、
前記プリフェッチ・キャッシュ・リソースが保持されていると判定することに応答して、前記プリフェッチ・キャッシュ・リソースおよび前記トラックへの書き込みをトラックの書き込みセットへの順次書き込みの一部として要求した書き込みアクセス・マネージャへ、前記プリフェッチ・キャッシュ・リソースおよび前記トラック・アクセス理由を開放するための要求を、前記キャッシュ・マネージャによって、送信することであって、前記書き込みアクセス・マネージャは、前記トラックおよび前記トラック・アクセス理由を前記予想外に開放されたトラックのリスト中に示す、送信することと
をさらに含む、請求項9に記載のシステム。
【請求項15】
キャッシュ内にキャッシュされたストレージ内のトラックへのアクセス要求を処理するための方法であって、
前記キャッシュへプリフェッチされたキャッシュ・リソースが、予想されるトラックに関する第2の要求のために保持されている、前記トラックに関する第1の要求をプロセスから受信することであって、前記第1の要求についての理由を指定するトラック・アクセス理由が前記第1の要求について提供される、受信することと、
前記トラックへの前記第2の要求が受信される前に、前記プリフェッチされたキャッシュ・リソースを開放することと、
予測外に開放されたトラックのリスト中に前記トラック、および前記第1の要求についての前記トラック・アクセス理由を示すことと
を含む、
方法。
【請求項16】
前記第2の要求は、書き込むべきトラックの書き込みセット中の前記トラックへの書き込みを含み、前記トラックを含む前記書き込みセットは、前記予想外に開放されたトラックのリスト中の前記トラックによって示される、請求項15に記載の方法。
【請求項17】
前記トラックへの前記第2の要求を受信することと、
前記プリフェッチされたキャッシュ・リソースが前記第2の要求のためにもはや利用可能ではないと判定することと、
前記プリフェッチされたキャッシュ・リソースがもはや保持されていないと判定することに応答して、前記トラックについて前記予想外に開放されたトラックのリストを検索することと、
前記予想外に開放されたトラックのリスト中の前記第1の要求についての前記トラック・アクセス理由を、前記第2の要求に関する失敗を伴って、返すことと
をさらに含む、請求項15に記載の方法。
【請求項18】
前記第2の要求は、ホストから第1のチャネル上で受信された第1の書き込み要求を含み、前記ホストは、前記第1のチャネル上での前記第1の書き込み要求に対する失敗を受信することに応答して、前記第1の書き込み要求を前記トラックへの第2の書き込み要求として第2のチャネル上で再試行すべきかどうかを判定するために前記トラック・アクセス理由を用いる、請求項15に記載の方法。
【請求項19】
前記プリフェッチされたキャッシュ・リソースが開放されるようにする前記トラックに関する前記第1の要求は、前記第2のチャネル上の前記トラックへの書き込み要求を含み、前記トラック・アクセス理由は、前記ホストへ前記返された失敗についての理由として第2のチャネル書き込み要求を示し、前記ホストは、前記第1のチャネル上のリンク障害を判定するために前記トラック・アクセス理由を用いる、請求項18に記載の方法。
【請求項20】
前記トラックに関する前記第1の要求を生成する前記プロセスは、前記キャッシュを有するストレージ・システム中の内部プロセスを含み、
前記内部プロセスからの前記第1の要求を、前記ストレージ・システム中の前記キャッシュへのアクセスを管理するキャッシュ・マネージャによって、受信することと、
前記プリフェッチ・キャッシュ・リソースが保持されていると判定することに応答して、前記プリフェッチ・キャッシュ・リソースおよび前記トラックへの書き込みをトラックの書き込みセットへの順次書き込みの一部として要求した書き込みアクセス・マネージャへ、前記プリフェッチ・キャッシュ・リソースおよび前記トラック・アクセス理由を開放するための要求を、前記キャッシュ・マネージャによって、送信することであって、前記書き込みアクセス・マネージャは、前記トラックおよび前記トラック・アクセス理由を前記予想外に開放されたトラックのリスト中に示す、送信することと
をさらに含む、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらす、トラック・アクセスについてのトラック・アクセス理由を提供するためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【0002】
ストレージ環境において、ホスト・システムは、最初に、読み取り/書き込み要求を、バス・インターフェース、もしくはPeripheral Component Interconnect Express(PCIe)(R)インターフェースのような、高速チャネルを通じて接続されたストレージ・システムへ通信することができる。閾値時間内に完了することになっている、高速チャネルを通じての読み取り/書き込み要求に関して、ホスト・システムは、読み取り/書き込み要求のための適用スレッドをスピン・ループ中に保持して、要求が完了するのを待機する。これは、スレッドを非アクティブ化して、読み取り/書き込み要求への応答が受信されたときに割り込みに応答してスレッドを再アクティブ化する、コンテキスト・スワップに関連するプロセッサ時間を節約する。もし、高速チャネル上で送信される読み取り/書き込み要求用のデータがキャッシュ内になければ、そのときにはストレージ・システムが読み取り/書き込み要求に失敗するかもしれず、ホスト・システムは、同じ読み取り/書き込み要求を、バス、例えば、PCIeインターフェースを通じてI/O要求を処理するよりも低速のホスト・アダプタを介して、ストレージ・エリア・ネットワークを通じて通信することができる。読み取り/書き込み要求を第2のチャネルを通じて通信することは、ホスト・システムが、読み取り/書き込み要求が完了するのを待機している間に、読み取り/書き込み要求を取り扱うタスクから別のタスクへコンテキスト・スイッチを行うことを必要とする。コンテキスト・スイッチングは、コストがかかる。なぜなら、タスクを走らせているプロセッサが、新しいタスクのためにすべてのレジスタならびにL1およびL2キャッシュをクリアし、次に、新しいタスクを完了したときには、コンテキスト・スイッチされたタスクを再アクティブ化して、読み取り/書き込み要求が完了するのを待機している間に、コンテキスト・スイッチされたタスクのために状態データをレジスタならびにL1およびL2キャッシュへ戻すことを必要とするからである。
【0003】
ある一定の読み取り/書き込み動作は、閾値時間内に完了される必要があり、さもなければ、それらは失敗である。読み取りまたは書き込み要求を処理するために、ストレージ・システムは、キャッシュ・ストレージ内のリソースおよびセグメント、ならびにその読み取りまたは書き込み要求を処理するためのアクセス・トラック・メタデータを含めて、キャッシュ・リソースを割り振らなければならないであろう。トラック・メタデータは、トラックへの読み取りおよび書き込みを行うために必要なトラック内のデータのフォーマットおよび記録のレイアウトに関する情報を提供する。しかしながら、キャッシュ・リソースの割り振りは、ストレージから、メタデータへアクセスすることを含めて、読み取り/書き込み要求の処理における遅延の実質的な部分を含む。
【0004】
当技術分野においては、トラックのためにプリフェッチされたキャッシュ・リソースが高速チャネル上で受信される、予想された書き込み要求のために利用可能となるであろう確からしさを改良するために、キャッシュへのホスト書き込み要求を高速チャネル上で管理するための改良された技術が必要である。
【発明の概要】
【0005】
トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらす、トラック・アクセスについてのトラック・アクセス理由を提供するためのコンピュータ・プログラム製品、システム、および方法が提供される。そのためにキャッシュへプリフェッチされたキャッシュ・リソースが、予想されるトラックに関する第2の要求のために保持されている、そのトラックに関する第1の要求がプロセスから受信される。第1の要求についての理由を指定するトラック・アクセス理由が第1の要求について提供される。トラックへの第2の要求が受信される前に、プリフェッチされたキャッシュ・リソースが開放される。予想外に開放されたトラックのリスト中にトラック、および第1の要求についてのトラック・アクセス理由の表示が行われる。
【図面の簡単な説明】
【0006】
【
図2】確立された書き込みセットについての書き込みセット情報のある実施形態を図示する。
【
図3】トラック・アクセス・リスト中のトラック・アクセス・リスト・エントリのある実施形態を図示する。
【
図4】第1のチャネル上で失敗した書き込み要求を再試行するために、第2のチャネル上で送信される第2のチャネル書き込み要求のある実施形態を図示する。
【
図5】トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらす、そのトラックへのアクセス要求についてのトラック・アクセス理由を提供する予想外に開放されたトラックのリスト・エントリのある実施形態を図示する。
【
図6】トラック・アクセス理由コードが提供されるトラックにアクセスするための要求を処理するための動作のある実施形態を図示する。
【
図7】要求についてのトラック・アクセス理由を含む、トラックのためにプリフェッチされたキャッシュ・リソースを開放するための要求を処理するための動作のある実施形態を図示する。
【
図8】書き込みセット中のトラックに書き込むために第1のチャネル上で受信された書き込み要求を処理するための動作のある実施形態を図示する。
【
図9】記載される諸実施形態とともに用いられるコンピュータ・アーキテクチャのある実施形態を図示する。
【発明を実施するための形態】
【0007】
書き込みセットへのアクセスは、もし、他のプロセスがその書き込みセットのために保持されているトラックにアクセスすることを許容するために長時間にわたってトラックへの書き込みアクセスを防止することになる事象、例えば,長くてビジーなもしくはサポートされていないコピー・サービス状態、もしくは他のプロセスに起因するボリューム不適格性などがあれば、静止されることがある。書き込みセット中のトラックへのアクセスを静止させることは、書き込みセット中のトラックのためにプリフェッチされたキャッシュ・リソースの開放を生じさせる。プリフェッチされたキャッシュ・リソースを開放することは、もし、書き込み要求が受信されたときにこれらの要求のために予め割り振られたキャッシュ・リソースがなければ、静止された書き込みセット中のトラックへの書き込みを再試行するための第1のチャネル書き込み要求に関する障害を引き起こすであろう。
【0008】
アクセス要求に先立ってキャッシュ・リソースをプリフェッチすることは、ホストによって第1の高速チャネル上で送信された書き込み要求が、高速処理を必要とする第1のチャネル上のアクセス要求を処理するために必要とされる閾値時間内に完了することの確からしさを高める。これは、バス・インターフェース上で送信された書き込み要求に対して、ホスト・スレッドが書き込み要求タスク上でスピニングしている時間を受け入れ可能な時間閾値内に保つ。しかしながら、もし、要求されたターゲット・トラックのためのキャッシュ・リソースが要求に先立って割り振られていなければ、キャッシュ・リソースが割り振られなければならないであろうことを考慮すると、書き込み要求が閾値時間内に完了しうる可能性は低い。第1のチャネル上で書き込み要求に失敗すると、ホストは、書き込み要求を第2のチャネル上で再駆動する。第2のチャネル上の書き込み要求の処理は、第2のチャネル上で書き込み要求を処理するときに必要とされるキャッシュ・リソースを割り振る。
【0009】
記載される諸実施形態は、トラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらした、トラックへのアクセスを要求したプロセスについてのトラック・アクセス理由を提供することによって、そのためにプリフェッチされたキャッシュ・リソースが利用可能ではないトラックへのアクセス要求に対する失敗を処理するためのコンピュータ技術の改良を提供する。ホストおよび他のプロセスは、どのようにトラックに関する書き込み要求を処理し続けるべきかを判定するために、あるいは、なぜ他のプロセスは、プリフェッチされたキャッシュ・リソースが高速の第1のチャネル書き込みのために保持されているトラックへのアクセスを要求しているのかに関して他のトラブルシューティングおよびデバッギング動作を行うために、トラック・アクセス理由を用いることができる。
【0010】
図1は、ディスク・エンクロージャ106においてストレージ・デバイス104中に構成されたボリューム内のトラックにアクセスするために、ホスト100が、ストレージ・コントローラ、制御装置、サーバとも呼ばれる、ストレージ・システム102へ読み取りおよび書き込み要求を向けるストレージ環境のある実施形態を図示する。ホスト100は、1つ以上のプロセッサ・デバイスのプロセッサ複合体108と、プロセッサ複合体108によって実行されるオペレーティング・システム111を含むメモリ110とを含む。ホスト・オペレーティング・システム111は、ストレージ・デバイス104中に構成されたトラックへの読み取りおよび書き込み要求を生成する。ホスト100は、読み取りおよび書き込み要求を2つの異なるチャネル上で通信するためのハードウェアを含む。「第1のチャネル」は、バス112と、プロセッサ複合体108、メモリ・システム110を含む、1つ以上のデバイスをバス112上で接続するためのバス・スイッチ114と、バス・インターフェースを外部バス・インターフェース・ケーブル118を通じてストレージ・システム102へ拡張するためのバス・ホスト・アダプタ116とを含む、Peripheral Component Interconnect Express(PCIe)のような、バス・インターフェースを備えてよい。例えば、ExpEther(R)技術を用いて、Ethernetを通じてPCIeを許容するために、分散PCIeスイッチのような、PCIeエクステンダ・ケーブルもしくはコンポーネントを含む、バス・インターフェースを拡張するための追加的なバス・インターフェース技術が利用されてよい。
【0011】
ホスト100およびストレージ・システム102を接続するための「第2のチャネル」は、バス112へ接続された、ネットワーク・ホスト・アダプタ120を用いてよく、ネットワーク・ホスト・アダプタ120は、ホスト100およびストレージ・システム102がそれを通じて追加的に通信する、別のネットワーク122へ接続する。バス・インターフェースを通る第1のチャネルは、ネットワーク・ホスト・アダプタ120を介してネットワーク122インターフェースを用いる第2のチャネルよりも高速のアクセス・チャネルを備えることができる。
【0012】
ストレージ・システム102は、バス124a、124bと、バス124a、124b上でエンドポイント・デバイスへ接続するためのバス・スイッチ126と、第1のチャネルを通じてホスト100へバス・インターフェースを通じての通信を許容するために外部バス・インターフェース・ケーブル118へ接続するためのバス・ホスト・アダプタ128とを備えるバス・インターフェースを含む。ストレージ・システム102は、バス・ホスト・アダプタ128と、ストレージ・デバイス104へ接続するための1つ以上のデバイス・アダプタ132と、ネットワーク122およびホスト・システムへ接続するための1つ以上のネットワーク・ホスト・アダプタ134とを有する入力/出力ベイ130を含む。
【0013】
ストレージ・システム102は、1つ以上のプロセッサ・デバイスのプロセッサ複合体136と、接続されたホスト100によってアクセスされるトラックをキャッシュするためのキャッシュ140を有するメモリ138とを含む。メモリ138は、キャッシュ140への書き込み要求を管理するための書き込みアクセス・マネージャ142と、ストレージ104内のトラックに関するホスト100、およびストレージ・システム102中のプロセスからのアクセス要求を管理するためのストレージ・マネージャ144と、キャッシュ140内のトラックへの要求を管理するためのキャッシュ・マネージャ145とを含む。デバイス136、138、128、132および134は、バス・レーン124a、124bおよびバス・スイッチ126中に実装されたバス・インターフェースを通じて接続する。
【0014】
書き込みアクセス・キャッシュ・マネージャ142は、ホスト書き込み要求が第1のチャネル上で予想される定義された書き込みセットのために、かかる書き込み要求が高速に低遅延で完了されうるように、メタデータおよび他のリリースを含めて、キャッシュ・リソースをキャッシュ140内にプリフェッチする。
【0015】
トラックは、ボリューム、論理デバイスなどのような、複数のトラックのより大きいグルーピングの一部であるトラック、論理ブロック・アドレス(LBA:Logical Block Address)など、ストレージ104内に構成された任意のデータ単位を備えてよい。
【0016】
書き込みアクセス・マネージャ142および/またはキャッシュ・マネージャ145は、キャッシュ140内の読み取り(変更されない)および書き込み(変更される)トラックを管理するために、キャッシュ管理情報146をメモリ138中に維持する。キャッシュ管理情報146は、キャッシュ140内のトラックのインデックスを制御ブロック・ディレクトリ150中のキャッシュ制御ブロックに提供するトラック・インデックス148と、キャッシュ140内のトラックに関する最長未使用時間(LRU:Least Recently Used)リスト152とを含んでよい。制御ブロック・ディレクトリ150は、複数のキャッシュ制御ブロックを含み、キャッシュ140内のトラックごとに1つのキャッシュ制御ブロックがあり、キャッシュ140内のトラックに関するメタデータを提供する。トラック・インデックス148は、トラックとキャッシュ140内のトラックに関する情報を提供するキャッシュ制御ブロックとを関連付ける。キャッシュLRUリスト152がいっぱいであるか、または閾値レベルに達したと判定すると、さらなるトラックをストレージ104からキャッシュ140内へステージさせる余地をつくるために、LRUリスト152からトラックがデモートされる。
【0017】
キャッシュ管理情報146は、第1のチャネル上で書き込むべきトラックについてホスト100によって確立されたトラックの書き込みセットの書き込みセット情報200をさらに含んでよい。書き込みアクセス・マネージャ140は、書き込みトランザクションを受信するのに先立って、書き込みセット中のトラックのためにキャッシュ・リソースをプリフェッチしてよい。ホスト100は、異なるトラックの範囲への順次書き込みトランザクションの複数のストリームを予期して、トラック・リソースが割り振られるであろう複数のトラックの範囲に対して複数の書き込みセットを確立してよい。
【0018】
ホスト・オペレーティング・システム111は、書き込みセット中に示されたそれらのトラックへすぐに向けられるであろう可能性が高い順次書き込みトランザクションを予期して、順次書き込みトランザクションに関する書き込み要求を送信するのに先立って、書き込みアクセス・マネージャ142に書き込みセットのためのキャッシュ・リソースを予め割り振らせるために、トラックの範囲204に対する書き込みセット200を確立してよい。これらの予め割り振られたキャッシュ・リソースは、順次書き込み要求が最終的に受信されたときにそれらを処理する遅延を削減する。さらに、キャッシュ・リソースを書き込みセット内の限られた(一定)数のトラックの第1のサブセットのために割り振ることによって、キャッシュ・リソースは、順次書き込みストリームの一部として書き込まれる可能性が最も高いそれらのトラックのためにのみ保持される。さらに、キャッシュ・リソースが保持されるトラックの数は、それらのキャッシュ・リソースがホスト・オペレーティング・システム111もしくは他の接続されたホスト100中の他のプロセスによるアクセスのために利用可能であることを許容するように制限される。
【0019】
書き込みアクセス・マネージャ142は、予想外に開放されたトラックのリスト500を維持し、このリストは、第1のチャネル上で送信される書き込みセット200中のトラックへの書き込み要求のために保持されていた、その書き込みセット中のトラックのためにプリフェッチされたキャッシュ・リソースの開放をもたらした、内部プロセス154もしくは外部プロセスからのアクセス要求についてのトラック・アクセス理由に関する情報を有する。トラックへのアクセスを要求するプロセス154は、コピー・サービス、例えば、トラックの整合性グループをコピーすること、デステージ/ステージ動作、書き込みセット中のトラックを含むボリュームにQUIESCEを生じさせる動作などを含んでよい。予想外に開放されたトラックのリスト500は、エントリが短時間に上書きされることを回避するために十分に大きいように、かつ、トラックのためにプリフェッチされたキャッシュ・リソースの予想外の開放の原因に関する徹底したデバッギングを許容するために、プリフェッチされたキャッシュ・リソースの開放をもたらすトラック・アクセスに関して十分な詳細を提供するように、十分な数のエントリを有してよい。
【0020】
トラックの範囲302内のトラックのために保持され、アクセスされるキャッシュ・リソースは、書き込むべきトラックに用いるためのキャッシュ140内のセグメントと、もし、書き込みトラックのコピーが同じかまたは異なるクラスタ中の不揮発性ストレージ内に格納されることになれば、不揮発性ストレージ内のセグメントと、トラックについてのトラック・メタデータと、ならびにトラックへの書き込みトランザクションを処理するために必要な他のタイプのキャッシュ・リソースとを備えてよい。
【0021】
ある一定の実施形態では、ストレージ・デバイス104中のトラックにアクセスするために、第1および第2のチャネルを通じてストレージ・システム102へ接続する複数のホスト100があってよい。かかるケースでは、ストレージ・システム102は、各接続されたホスト100のバス・インターフェース118へ接続するための少なくとも1つのバス・ホスト・アダプタ128と、複数のホスト100上の複数のネットワーク・ホスト・アダプタ120へ接続するための1つ以上のネットワーク・ホスト・アダプタ134とを有するであろう。
【0022】
一実施形態において、バス・インターフェース112、114、116、118、124a、124b、126、および128は、Peripheral Component Interconnect Express(PCIe)バス・インターフェース技術を備えてよい。代替の諸実施形態では、バス・インターフェース112、114、116、118、124a、124b、126、および128は、PCIe以外の適切なバス・インターフェース技術を利用してよい。バス・ホスト・アダプタ116および128は、PCIeケーブル118へ接続するためのインターフェースを提供するPCIeホスト・アダプタを備えてよい。ネットワーク122は、ストレージ・エリア・ネットワーク(SAN:Storage Area Network)、ローカル・エリア・ネットワーク(LAN:Local Area Network)、ワイド・エリア・ネットワーク(WAN:Wide Area Network)、Fibre Connection(FICON(R))、インターネット、イントラネットなどを備えてよく、ネットワーク・ホスト・アダプタ120、134は、ホスト100とストレージ・システム102との間のネットワーク122接続を提供する。(FICONは、全世界にわたるインターナショナル・ビジネス・マシーンズ社の登録商標である)。
【0023】
ストレージ・システム102は、インターナショナル・ビジネス・マシーンズ社(IBM(R))DS8000(R)およびDS8880ストレージ・システム、または他のベンダーからのストレージ・コントローラおよびストレージ・システムなど、制御装置およびストレージ・コントローラとしても知られる、ストレージ・システムを備えてよい。(IBMおよびDS8000は、全世界にわたるインターナショナル・ビジネス・マシーンズ社の商標である)。ホスト・オペレーティング・システム111は、インターナショナル・ビジネス・マシーンズ社(「IBM」)からのZシステムズ・オペレーティング・システム(Z/OS(R))、または当技術分野で知られている他のオペレーティング・システムなどのオペレーティング・システムを備えてよい。(Z/OSは、全世界にわたるIBMの登録商標である)。
【0024】
ディスク・エンクロージャ106におけるストレージ・デバイス104は、異なるタイプまたはクラスのストレージ・デバイス、例えば、磁気ハードディスク・ドライブ、固体電子機器からなるソリッド・ステート・ストレージ・デバイス(SSD:solid state storage device)、EEPROM(電気的消去可能プログラマブル・リード・オンリ・メモリ:Electrically Erasable Programmable Read-Only Memory)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM:Random Access Memory)ドライブ、ストレージ・クラス・メモリ(SCM:storage-class memory)など、相変化メモリ(PCM:Phase Change Memory)、抵抗性ランダム・アクセス・メモリ(RRAM:resistive random access memory)、スピン・トランスファ・トルク・メモリ(STT-RAM:spin transfer torque memory)、導電性ブリッジングRAM(CBRAM:conductive bridging RAM)、磁気ハードディスク・ドライブ、光ディスク、テープ等などを備えてよい。ストレージ空間におけるボリュームは、ジャスト・ア・バンチ・オブ・ディスクス(JBOD:Just a Bunch of Disks)、直接アクセス・ストレージ・デバイス(DASD:Direct Access Storage Device)、独立ディスク冗長アレイ(RAID:Redundant Array of Independent Disks)のアレイ、仮想化デバイスなどのような、デバイスのアレイからさらに構成されてよい。さらに、ディスク・エンクロージャ106におけるストレージ・デバイス104は、異なるベンダーからの異種のストレージ・デバイスと、第2のタイプのストレージ・デバイス、例えば、SSDよりも低いデータ転送レートを有する、第1のタイプのストレージ・デバイス、例えば、ハードディスク・ドライブのような、異なるタイプのストレージ・デバイスとを備えてよい。
【0025】
図2は、第1のチャネル上で書き込み要求を受信するために確立された書き込みセットについての書き込みセット情報200
iの事例のある実施形態を図示し、この情報200
iは、書き込みセットの一意の識別子を提供する書き込みセット識別子(ID)202と、第1のチャネル上の順次書き込みトランザクションが予想され、そのためにキャッシュ・リソースが順次書き込みトランザクションに先立ってアクセスされるべきであるトラックの範囲204と、キャッシュ・リソースがトラックのために保持されているかどうか、および確立された書き込みセット200
iを受信して以降にトラックが書き込まれたかどうかをトラックの範囲204内のトラックごとに示すトラック・アクセス・リスト300と、書き込みセット202における順次書き込みトランザクションのために、キャッシュ・リソースが割り振られ始めるべきである、トラックの範囲302内のトラックを示すプリフェッチ・カーソル206とを含む。
【0026】
ある一定の実施形態では、プリフェッチ・カーソル206は、ホスト100が書き込みつつある(アクティブに書き込んでいれば)、または次に書き込みつつある(アクティブに書き込んでいなければ)と、書き込みアクセス・マネージャ142が予期するトラックを指すために通常の処理中にセットされてよい。プリフェッチ・カーソル206は、ホスト100がそれらの処理中であると書き込みアクセス・マネージャ142が判定するところを指す。
【0027】
図3は、トラック識別子(ID)302と、キャッシュ・リソースがトラック302のために保持されているかどうかを示すキャッシュ・リソース保持フラグ304と、書き込みセット202が確立されて以降にトラック302が書き込まれたかどうかを示すトラック書き込みフラグ306とを示す、トラック・アクセス・リスト300中のトラック・アクセス・リスト・エントリ300
iのある実施形態を図示する。
【0028】
図4は、第2のチャネル上でホスト100から受信される第2のチャネル書き込み要求400のある実施形態を図示し、書き込み動作コード402と、次の1つ以上の順次書き込みトランザクション406が向けられるであろう書き込みセット408中のトラックのサブセットのエクステント定義範囲404と、第2のチャネル書き込み要求400における書き込みトランザクション406が、より高速の第1のチャネル上でその後に再試行されることになるかどうかを示す、第1のチャネル上の再試行フラッグ410とを含む。
【0029】
図5は、予想外に開放されたトラックのリスト500中のエントリ500
iのある実施形態を図示し、プリフェッチされたキャッシュ・リソースが開放された、アクセスされたトラックを識別するトラック502と、そのトラックを含むボリューム504と、そのトラックが第1のチャネル書き込みのために含まれた書き込みセット506と、プロセス154または別のプロセスがそのトラックにアクセスした理由を示すトラック・アクセス理由508とを含む。トラック・アクセス理由は、ボリュームのQUIESCE、第2のチャネル上のトラックへの読み取りまたは書き込み、トラックへの読み取りなどを示してよい。トラック・アクセス理由は、ホスト100、プロセス、またはユーザが、第1のチャネル上の書き込みの失敗をデバッグするのを助けうる、あるいはホスト100が、プリフェッチされたキャッシュ・リソースの予想外の開放をもたらすトラック・アクセス理由の原因を低減するために、動作を調整することを許容しうる任意の理由を含むことができる。
【0030】
図6は、トラック・アクセス理由コードを伴う、プロセス154または他の外部プロセスからの、第1の要求のような、トラックへの要求を処理するためにキャッシュ・マネージャ145によって行われる動作のある実施形態を図示する。トラック・アクセス理由コードは、タスク制御ブロック(TCB:task control block)、またはプロセス154を実装する他のタスク管理動作内に維持されてよい。トラックへのアクセス要求(第1の要求)を(ブロック600において)受信すると、もし、(ブロック602において)例えば、第1のチャネル上の書き込み要求、もしくは第2の要求のために保持されている、アクセスすべきトラックのためにプリフェッチされたキャッシュ・リソースがなければ、そのときにはキャッシュ140内のトラックへのアクセス要求が(ブロック604において)処理される。もし、(ブロック602において)トラックのために保持されている、プリフェッチされたキャッシュ・リソースがあれば、そのときにはキャッシュ・マネージャ145は、トラックのためにプリフェッチされたキャッシュ・リソースを開放するための書き込みアクセス・マネージャ142への要求を、プロセス154が第1の要求について提供するトラック・アクセス理由を伴って、(ブロック606において)送信する。プリフェッチされたキャッシュ・リソースが開放されたという書き込みアクセス・マネージャ142からの確認を(ブロック608において)受信すると、制御は、プロセス154からの第1の要求が完了することを許容するためにブロック604へ進む。
【0031】
図7は、要求についてのトラック・アクセス理由を伴う、プリフェッチされたキャッシュ・リソースを開放するためのキャッシュ・マネージャ145からの要求を処理するために書き込みアクセス・マネージャ142によって行われる動作のある実施形態を示す。プリフェッチされたキャッシュ・リソースを開放するための要求を(ブロック700において)受信すると、書き込みアクセス・マネージャ142は、要求されたトラックのためにプリフェッチされたキャッシュ・リソースを(ブロック702において)開放する。キャッシュ・リソースが保持304されていないことを示すために、トラック・アクセス・リスト300中の要求されたトラックに関するトラック・アクセス・リスト・エントリ300
iが(ブロック704において)アップデートされる。要求されたトラック502、トラックのボリューム504、トラックを含む書き込みセット506、およびトラックに関する要求についての理由を示すトラック・アクセス理由コード508を示すエントリ500
iを含めるために、予想外に開放されたトラックのリスト500が(ブロック706において)アップデートされる。
【0032】
図6および7の諸実施形態によって、書き込みアクセス・マネージャ142は、他のプロセス154が、プリフェッチされたキャッシュ・リソースが保持されている、書き込みセット中のトラックを要求し、それらのプリフェッチされたキャッシュ・リソースが開放されるようにして、高速の第1のチャネル上で予想されたトラックへのその後の書き込みの失敗をもたらした理由を追跡するための能力を有する。ホスト100またはユーザは、予想される書き込みが第1のチャネル上で受信される前に、プリフェッチされたキャッシュ・リソースの予想外の開放についての理由をデバッグし、トラブルシュートするために、第1のチャネル書き込み要求を失敗させたであろうプリフェッチされたキャッシュ・リソースの開放について提供された、トラック・アクセス理由508を用いてよい。
【0033】
図8は、第1のチャネル上で受信された書き込みセット中のトラックへの書き込み、プロセス154からの第1の要求に対して第2の要求を処理するために書き込みアクセス・マネージャ142によって行われる動作のある実施形態を図示する。第1のチャネル上で書き込み要求を(ブロック800において)受信すると、書き込みアクセス・マネージャ142は、プリフェッチされたキャッシュ・リソースが書き込むべきトラックのために利用可能であるかどうかを(ブロック802において)判定する。利用可能であれば、第1のチャネル上の書き込み要求が(ブロック804において)処理される。もし、(ブロック802において)書き込みのために利用可能なプリフェッチされたキャッシュ・リソースがなければ、そのときには書き込みアクセス・マネージャ142は、要求されたトラック502およびそのトラックを含む書き込みセット504を有するエントリ500
iについて、予想外に開放されたトラックのリスト500を(ブロック806において)検索する。もし、(ブロック808において)リスト500中にエントリ500
iが見つからなければ、そのときには、ホストまたは他のプロセスが失敗に対処し、またはそれをトラブルシュートするのを助けるために、失敗がトラック・アクセス理由508なしにホストへ(ブロック810において)返される。もし、(ブロック808において)リスト中にトラックおよび書き込みセットのためのエントリ500
iがあれば、そのときには書き込みアクセス・マネージャ142は、失敗を、位置特定されたエントリ500
i内のトラック・アクセス理由508を伴って、(ブロック812において)返す。
【0034】
一実施形態において、プリフェッチされたキャッシュ・リソースの開放をもたらすプロセスは、トラックに関する第2のチャネル上のホスト100要求を含んでよい。かかるケースでは、トラック・アクセス理由コードが第2のチャネル・トラック・アクセスを示してよい。例として、もし、ホスト・タイムアウトを引き起こす第1のチャネル・リンク上のエラーがあれば、そのときにはホストは、第2のチャネル・リンクを通じてトラックの書き込みを再試行してよい。かかるケースでは、書き込みアクセス・マネージャ142は、トラック・アクセス理由コードを第2のチャネル書き込みとして示してよい。ストレージ・システム102ダンプの解析は、ホストが、失敗した書き込みを第2のチャネル上で再試行したこと、およびこの障害のありうる原因として、第1のチャネル・リンクが診断される必要がありうることを明らかにしてよい。
【0035】
トラック・アクセス理由コードは、プリフェッチされたキャッシュ・リソースの予想外の開放が、要求されたトラックを含むトラックの整合性グループを形成するコピー・サービスによって生じたそのトラックを含むボリュームのQUIESCEに起因することも示してよい。この情報は、ホストまたはユーザが、第1のチャネル上の書き込みのその後の障害の原因がコピー・サービスの結果として生じたと診断することを許容するであろう。
【0036】
ある一定のプロセスにおいては、ログされたデータなどのデータを読み取るために、読み取りが第1のチャネル上の書き込みのすぐ後に続くことがある。もし、読み取りが書き込みのあまりにすぐ後に続くならば、そのときにはトラック・アクセスに対する競合が、予想される第1のチャネル書き込みのために保持されている、トラックのためにプリフェッチされたキャッシュ・リソースの開放を生じさせかねない。ホスト100は、トラックの読み取りを示すトラック・アクセス理由コードを含む、第1のチャネル書き込み要求への障害を受信すると、予想されるトラックへの書き込みとの競合を回避するために、次に、読み取りをスロットリングしてよい。
【0037】
一実施形態において、第2のチャネルがファイバ・チャネル(FC:Fibre Channel)のためのANSI FC-SB-3 単一バイト・コマンド・コード・セット-3 マッピング・プロトコルに対するインターナショナル・ビジネス・マシーンズ社(IBM)の商標名であるFibre Connection(FICON(R))リンクを備え、第1のチャネルがIBM zHyperLinkを備え、そしてホスト・オペレーティング・システム111がZ/OS(R)を備える場合には、ホスト100は、失敗したzHyperLink(第1のチャネル)書き込みをFICONインターフェース(第2のチャネル)を介して再試行してよい。
【0038】
本発明は、システム、方法、および/またはコンピュータ・プログラム製品として実装されてよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数または複数)を含んでよい。
【0039】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持して格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、以下には限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケットと、ハード・ディスクと、ランダム・アクセス・メモリ(RAM:random access memory)と、リード・オンリ・メモリ(ROM:read-only memory)と、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)と、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)と、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:portable compact disc read-only memory)と、デジタル多用途ディスク(DVD:digital versatile disk)と、メモリ・スティックと、フレキシブル・ディスクと、パンチ・カードもしくはその上に記録された命令を有する溝中の隆起構造のような機械的にエンコードされたデバイスと、および前述のものの任意の適切な組み合わせとを含む。コンピュータ可読ストレージ媒体は、本明細書では、それ自体が一時的な信号、例えば、電波または他の自由伝搬する電磁波、導波路もしくは他の伝送媒体を通して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいは配線を通して伝送される電気信号であると解釈されるべきではない。
【0040】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスへ、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび/またはワイヤレス・ネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータおよび/またはエッジ・サーバを備えてよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信して、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0041】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはJava、Smalltalk、C++、または同様のもののようなオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語または同様のプログラミング言語のような、従来の手続き型プログラミング言語を含めて、1つ以上のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アローンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは全体的にリモート・コンピュータまたはサーバ上で実行してよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含めて、任意のタイプのネットワークを通してユーザのコンピュータへ接続されてもよく、あるいは(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータへ接続が行われてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路が、本発明の態様を行うために、電子回路をパーソナライズすべくコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行してよい。
【0042】
本発明の態様は、本発明の諸実施形態による方法、装置(システム)、ならびにコンピュータ・プログラム製品のフローチャート説明図および/またはブロック・ダイアグラムを参照して本明細書に記載される。フローチャート説明図および/またはブロック・ダイアグラムの各ブロック、ならびにフローチャート説明図および/またはブロック・ダイアグラムにおけるブロックの組み合わせをコンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0043】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートおよび/またはブロック・ダイアグラムの1つもしくは複数のブロックにおいて指定された機能/作用を実装するための手段を生み出すようなマシンを作り出すために、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体に格納されてもよく、これらのプログラム命令は、その中に格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートおよび/またはブロック・ダイアグラムの1つもしくは複数のブロックにおいて指定された機能/作用の態様を実装する命令を含む製造品を備えるような、特定の仕方で機能するようにコンピュータ、プログラマブル・データ処理装置、および/または他のデバイスに指示することができる。
【0044】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令がフローチャートおよび/またはブロック・ダイアグラムの1つもしくは複数のブロックにおいて指定された機能/作用を実装するような、コンピュータ実装プロセスを作り出すべく、一連の動作ステップがコンピュータ、他のプログラマブル装置または他のデバイス上で行われるようにするためにコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上へロードされてもよい。
【0045】
図中のフローチャートおよびブロック・ダイアグラムは、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック・ダイアグラム中の各ブロックは、指定された論理機能(単数または複数)を実装するための1つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部を表してよい。いくつかの代替の実装では、ブロック中に記された機能が図中に記された順序以外で発生してもよい。例えば、連続して示された2つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能性によっては、複数のブロックがときには逆の順序で実行されてもよい。ブロック・ダイアグラムおよび/またはフローチャート説明図の各ブロック、ならびにブロック・ダイアグラムおよび/またはフローチャート説明図中のブロックの組み合わせを、指定された機能もしくは作用を行う、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
【0046】
ホスト100およびストレージ・システム102を含めて、
図1の計算コンポーネントは、
図9に示されるコンピュータ・システム902のような、1つ以上のコンピュータ・システム中に実装されてよい。コンピュータ・システム/サーバ902は、コンピュータ・システムによって実行される、プログラム・モジュールのような、コンピュータ・システム実行可能命令の一般的な文脈で記載されてよい。一般に、プログラム・モジュールは、特定のタスクを行い、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでよい。コンピュータ・システム/サーバ902は、タスクが通信ネットワークを通してリンクされたリモート処理デバイスによって行われる分散型クラウド・コンピューティング環境において実施されてよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム・ストレージ媒体中に位置してよい。
【0047】
図9に示されるように、コンピュータ・システム/サーバ902は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ902のコンポーネントは、以下には限定されないが、1つ以上のプロセッサまたは処理ユニット904、システム・メモリ906、およびシステム・メモリ906を含む様々なシステム・コンポーネントをプロセッサ904へ結合するバス908を含んでよい。バス908は、メモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを用いたプロセッサまたはローカル・バスを含めて、いくつかのタイプのバス構造のいずれか1つ以上を表す。限定ではなく、例として、かかるアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびPeripheral Component Interconnect(PCI)バスを含む。
【0048】
コンピュータ・システム/サーバ902は、典型的に、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ902によってアクセス可能な任意の利用可能な媒体であってよく、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体の両方を含む。
【0049】
システム・メモリ906は、ランダム・アクセス・メモリ(RAM)910および/またはキャッシュ・メモリ912のような、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ902は、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、ノンリムーバブル、不揮発性磁気媒体(図示されず、典型的に「ハード・ドライブ」と呼ばれる)から読み取り、それに書き込むためのストレージ・システム913を設けることができる。図示されないが、リムーバブル、不揮発性磁気ディスク(例えば、「フレキシブルディスク」)から読み取り、それに書き込むための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROMまたは他の光媒体のようなリムーバブル、不揮発性光ディスクから読み取り、またはそれに書き込むための光ディスク・ドライブを設けることができる。かかる事例では、各々を1つ以上のデータ媒体インターフェースによってバス908へ接続することができる。以下にさらに図示され、記載されるように、メモリ906は、本発明の諸実施形態の機能を実行するように構成された1組の(例えば、少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含んでよい。
【0050】
1組の(少なくとも1つの)プログラム・モジュール916を有する、プログラム/ユーティリティ914は、限定でなく例として、オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ906中に格納されてよい。オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの何らかの組み合わせは、ネットワーキング環境の実装を含んでよい。コンピュータ902のコンポーネントは、一般に、本明細書に記載されるような本発明の諸実施形態の機能および/または方法論を実行するプログラム・モジュール916として実装されてよい。
図1のシステムは、1つ以上のコンピュータ・システム902として実装されてよく、もし、それらが複数のコンピュータ・システム902に実装されるのであれば、コンピュータ・システムは、ネットワークを通じて通信してよい。
【0051】
コンピュータ・システム/サーバ902は、キーボード、ポインティング・デバイス、ディスプレイ920などのような1つ以上の外部デバイス918と、ユーザがコンピュータ・システム/サーバ902と対話することを可能にする1つ以上のデバイスと、および/またはコンピュータ・システム/サーバ902が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)と通信してもよい。かかる通信は、入力/出力(I/O:Input/Output)インターフェース922を介して発生することができる。さらにまた、コンピュータ・システム/サーバ902は、ネットワーク・アダプタ924を介して、1つ以上のネットワーク、例えば、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、および/または公衆ネットワーク(例えば、インターネット)と通信することができる。図示されるように、ネットワーク・アダプタ924は、バス908を介してコンピュータ・システム/サーバ902の他のコンポーネントと通信する。理解されるべきは、図示されないが、コンピュータ・システム/サーバ902と併せて他のハードウェアおよび/またはソフトウェア・コンポーネントが用いられうることである。例は、以下には限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含む。
【0052】
用語「ある実施形態」、「実施形態」、「諸実施形態」、「前記実施形態」、「前記諸実施形態」、「1つ以上の実施形態」、「いくつかの実施形態」、および「一実施形態」は、別に明示的に指定されない限り、「本発明(単数または複数)の1つ以上の(しかし、すべてではない)実施形態」を意味する。
【0053】
用語「including(含む)」、「comprising(備える)」、「having(有する)」およびそれらの変形は、別に明示的に指定されない限り、「含むが、限定されない」を意味する。
【0054】
列挙された項目のリストは、別に明示的に指定されない限り、それらの項目のいずれかまたはすべてが相互排他的であることを示唆しない。
【0055】
用語「a(ある)」、「an(ある)」、および「the(前記)」は、別に明示的に指定されない限り、「1つ以上」を意味する。
【0056】
互いに通信しているデバイスは、別に明示的に指示されない限り、互いに連続的に通信している必要はない。加えて、互いに通信しているデバイスは、直接的に、または1つ以上の中継点を通して間接的に通信してよい。
【0057】
互いに通信しているいくつかのコンポーネントを用いた実施形態の記載は、すべてのかかるコンポーネントが必要とされることを示唆しない。逆に、本発明の広範囲にわたる可能な諸実施形態を示すために、様々な随意的なコンポーネントが記載される。
【0058】
単一のデバイスまたは物品が本明細書に記載されるときに、1つより多いデバイス/物品が(それらが協働するか否かにかかわらず)単一のデバイス/物品の代わりに用いられてよいことが直ちに明らかになるであろう。同様に、1つより多いデバイスまたは物品が(それらが協働するか否かにかかわらず)本明細書に記載される場合には、単一のデバイス/物品が1つより多いデバイスまたは物品の代わりに用いられてもよく、あるいは異なる数のデバイス/物品が示される数のデバイスまたはプログラムに代わって用いられてもよいことが直ちに明らかになるであろう。デバイスの機能性および/または特徴は、かかる機能性/特徴を有するとして明示的に記載されない1つ以上の他のデバイスによって代わりに具現されてもよい。従って、本発明の他の諸実施形態がデバイスそれ自体を含む必要はない。
【0059】
本発明の様々な実施形態の先の記載は、例示および説明の目的で提示された。この記載は、網羅的であることも、または本発明を開示される通りの形態に限定することも意図されない。上記の教示を踏まえて、多くの変更および変形が可能である。意図されるのは、本発明の範囲がこの詳細な記載によってではなく、むしろここに添付される特許請求の範囲によって限定されることである。上記の明細書、例およびデータは、本発明の構成物の製造および使用の完全な記載を提供する。本発明の範囲から逸脱することなく、本発明の多くの実施形態を作成できるので、本発明は、添付の特許請求の範囲内に存する。
【国際調査報告】