(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-09
(45)【発行日】2023-06-19
(54)【発明の名称】ストレージ・システムにおけるホールを有するトラックのデステージ
(51)【国際特許分類】
G06F 12/0868 20160101AFI20230612BHJP
G06N 20/00 20190101ALI20230612BHJP
G06F 3/06 20060101ALI20230612BHJP
G06F 13/10 20060101ALI20230612BHJP
G06F 12/0866 20160101ALI20230612BHJP
【FI】
G06F12/0868 110
G06N20/00
G06F3/06 302A
G06F13/10 340A
G06F12/0866 100
G06F12/0868 105
(21)【出願番号】P 2021518794
(86)(22)【出願日】2019-09-30
(86)【国際出願番号】 IB2019058286
(87)【国際公開番号】W WO2020084364
(87)【国際公開日】2020-04-30
【審査請求日】2022-02-22
(32)【優先日】2018-10-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】グプタ、ローケーシュ
(72)【発明者】
【氏名】アンダーソン、カイラー
(72)【発明者】
【氏名】アシュ、ケヴィン、ジョン
(72)【発明者】
【氏名】ボーリック、マシュー
【審査官】松平 英
(56)【参考文献】
【文献】特開平05-225167(JP,A)
【文献】特表2021-524078(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/00
3/06-3/08
3/18
12/00-12/128
13/00-13/14
13/16-13/18
13/20-13/42
G06N 3/00-3/12
7/08-99/00
(57)【特許請求の範囲】
【請求項1】
ストレージ・コントローラを動作させる方法であって、
機械学習モジュールによって、前記ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行するか、または、前記キャッシュのトラックのホールを埋めずに前記トラックからの複数のデステージを実行するかを示す出力値を生成することと、
前記生成された出力値を、予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行することが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホール
を埋め
た後に前記トラックのデステージを実行するか否かについての予測を向上させることと
を含む、方法。
【請求項2】
ストレージ・コントローラを動作させる方法であって、
機械学習モジュールによって、前記ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を、予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を含み、前記機械学習モジュールをトレーニングするための誤差範囲が、
それを超えて、前記キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、
それを超えて、前記キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、
それを超えるとアダプタがスラッシングを起こす帯域幅を含む、最適アダプタ帯域幅の測定値と
に基づく
、方法。
【請求項3】
ステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
前記最大ステージ応答時間と現在のランク応答時間との差
に基づいて演算することをさらに含む、請求項2に記載の方法。
【請求項4】
デステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
現在のランク応答時間と前記最大デステージ応答時間との差
に基づいて演算することをさらに含む、請求項2に記載の方法。
【請求項5】
正の誤差範囲を使用して、前記ホールを埋めるように前記機械学習モジュールをトレーニングし、負の誤差範囲を使用して、前記ホールを埋めないように前記機械学習モジュールをトレーニングする、請求項3または4に記載の方法。
【請求項6】
機械学習モジュールをトレーニングするためにストレージ・コントローラを動作させる方法であって、
前記機械学習モジュールによって、前記ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を、予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を含み、前記機械学習モジュールが、
前記ストレージ・コントローラの前記属性を含む入力を受け取る入力層であって、前記属性が、少なくとも、ステージまたはデステージされたトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージまたはデステージ・タスク制御ブロックの数、および不揮発性ストレージの使用量に基づく、前記入力層と、
1つまたは複数の隠れ層と、
出力値を生成する出力層と
を含むニューラル・ネットワークであり、
前記方法が、
推定値に基づいて、前記ニューラル・ネットワークにおいて初期重みを割り当てることと、
前記トレーニング中に、前記キャッシュからのデステージまたは前記キャッシュへのステージの完了に応答して、前記ニューラル・ネットワークにおいて前記重みを調節することと
をさらに含む
、方法。
【請求項7】
ストレージ・コントローラを動作させるためのシステムであって、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記プロセッサが、
機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行するか、または、前記キャッシュのトラックのホールを埋めずに前記トラックからの複数のデステージを実行するかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行することが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホール
を埋め
た後に前記トラックのデステージを実行するか否かについての予測を向上させることと
を含む動作を実行する、システム。
【請求項8】
ストレージ・コントローラを動作させるためのシステムであって、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記プロセッサが、
機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を含む動作を実行し、前記機械学習モジュールをトレーニングするための誤差範囲が、
それを超えて、前記キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、
それを超えて、前記キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、
それを超えるとアダプタがスラッシングを起こす帯域幅を含む、最適アダプタ帯域幅の測定値と
に基づく
、システム。
【請求項9】
前記動作が、ステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
前記最大ステージ応答時間と現在のランク応答時間との差
に基づいて演算することをさらに含む、請求項8に記載のシステム。
【請求項10】
前記動作が、デステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
現在のランク応答時間と前記最大デステージ応答時間との差
に基づいて演算することをさらに含む、請求項8に記載のシステム。
【請求項11】
正の誤差範囲を使用して、前記ホールを埋めるように前記機械学習モジュールをトレーニングし、負の誤差範囲を使用して、前記ホールを埋めないように前記機械学習モジュールをトレーニングする、請求項9または10に記載のシステム。
【請求項12】
機械学習モジュールをトレーニングするためにストレージ・コントローラを動作させるためのシステムであって、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記プロセッサが、
前記機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を含む動作を実行し、前記機械学習モジュールが、
前記ストレージ・コントローラの前記属性を含む入力を受け取る入力層であって、前記属性が、少なくとも、ステージまたはデステージされたトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージまたはデステージ・タスク制御ブロックの数、および不揮発性ストレージの使用量に基づく、前記入力層と、
1つまたは複数の隠れ層と、
出力値を生成する出力層と
を含むニューラル・ネットワークであり、
前記動作が、
推定値に基づいて、前記ニューラル・ネットワークにおいて初期重みを割り当てることと、
前記トレーニング中に、前記キャッシュからのデステージまたは前記キャッシュへのステージの完了に応答して、前記ニューラル・ネットワークにおいて前記重みを調節することと
をさらに含む
、システム。
【請求項13】
ストレージ・コントローラの機械学習モジュールをトレーニングするためのコンピュータ・プログラムであって、コンピュータに、
前記機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行するか、または、前記キャッシュのトラックのホールを埋めずに前記トラックからの複数のデステージを実行するかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行することが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホール
を埋め
た後に前記トラックのデステージを実行するか否かについての予測を向上させることと
を実行させるためのコンピュータ・プログラム。
【請求項14】
ストレージ・コントローラの機械学習モジュールをトレーニングするためのコンピュータ・プログラムであって、コンピュータに、
前記機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を実行させるためのコンピュータ・プログラムであり、
前記機械学習モジュールをトレーニングするための誤差範囲が、
それを超えて、前記キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、
それを超えて、前記キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、
それを超えるとアダプタがスラッシングを起こす帯域幅を含む、最適アダプタ帯域幅の測定値と
に基づく
、コンピュータ・プログラム。
【請求項15】
前記コンピュータに、ステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
前記最大ステージ応答時間と現在のランク応答時間との差
に基づいて演算することをさらに実行させる、請求項14に記載のコンピュータ・プログラム。
【請求項16】
前記コンピュータに、デステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
現在のランク応答時間と前記最大デステージ応答時間との差
に基づいて演算することをさらに実行させる、請求項14に記載のコンピュータ・プログラム。
【請求項17】
前記コンピュータに、正の誤差範囲を使用して、前記ホールを埋めるように前記機械学習モジュールをトレーニングし、負の誤差範囲を使用して、前記ホールを埋めないように前記機械学習モジュールをトレーニングすることをさらに実行させる、請求項15または16に記載のコンピュータ・プログラム。
【請求項18】
ストレージ・コントローラの機械学習モジュールをトレーニングするためのコンピュータ・プログラムであって、コンピュータに、
前記機械学習モジュールによって、ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を実行させるためのコンピュータ・プログラムであり、
前記機械学習モジュールが、
前記ストレージ・コントローラの前記属性を含む入力を受け取る入力層であって、前記属性が、少なくとも、ステージまたはデステージされたトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージまたはデステージ・タスク制御ブロックの数、および不揮発性ストレージの使用量に基づく、前記入力層と、
1つまたは複数の隠れ層と、
出力値を生成する出力層と
を含むニューラル・ネットワークであり、
前記コンピュータに、
推定値に基づいて、前記ニューラル・ネットワークにおいて初期重みを割り当てることと、
前記トレーニング中に、前記キャッシュからのデステージまたは前記キャッシュへのステージの完了に応答して、前記ニューラル・ネットワークにおいて前記重みを調節することと
をさらに実行させる
、コンピュータ・プログラム。
【請求項19】
機械学習モジュールをトレーニングするためのストレージ・コントローラであって、前記ストレージ・コントローラが動作を実行するように構成され、
前記動作が、
前記機械学習モジュールによって、前記ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行するか、または、前記キャッシュのトラックのホールを埋めずに前記トラックからの複数のデステージを実行するかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを
、データを前記キャッシュにステージすることによって埋め
た後に前記トラックのデステージを実行することが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホール
を埋め
た後に前記トラックのデステージを実行するか否かについての予測を向上させることと
を含む、ストレージ・コントローラ。
【請求項20】
機械学習モジュールをトレーニングするためのストレージ・コントローラであって、前記ストレージ・コントローラが動作を実行するように構成され、
前記動作が、
前記機械学習モジュールによって、前記ストレージ・コントローラの属性を含む入力を受け取ることであって、前記属性が、前記ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える、前記受け取ることと、
イベントに応答して、前記機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めるかどうかを示す出力値を生成することと、
前記生成された出力値を予想された出力値と比較することに基づいて、誤差範囲を計算することであって、前記予想された出力値が、前記キャッシュのトラックのホールを、前記トラックのデステージより前に、データを前記キャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される、前記計算することと、
誤差逆伝搬を介して、前記複数の層のノードを相互接続するリンクの重みを調節することにより、前記誤差範囲を小さくし、トラックのホールを、前記トラックのデステージより前に埋めるか否かについての予測を向上させることと
を含み、前記機械学習モジュールをトレーニングするための誤差範囲が、
それを超えて、前記キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、
それを超えて、前記キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、前記ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、
それを超えるとアダプタがスラッシングを起こす帯域幅を含む、最適アダプタ帯域幅の測定値と
に基づく
、ストレージ・コントローラ。
【請求項21】
前記動作が、ステージの完了に応答して、前記誤差範囲を、
前記最適アダプタ帯域幅と現在のアダプタ帯域幅との差、および
前記最大ステージ応答時間と現在のランク応答時間との差
に基づいて演算することをさらに含む、請求項20に記載のストレージ・コントローラ。
【請求項22】
正の誤差範囲を使用して、前記ホールを埋めるように前記機械学習モジュールをトレーニングし、負の誤差範囲を使用して、前記ホールを埋めないように前記機械学習モジュールをトレーニングする、請求項21に記載のストレージ・コントローラ。
【請求項23】
請求項13~18のいずれか1項に記載のコンピュータ・プログラムをコンピュータ可読に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、機械学習モジュールをトレーニングすることによって、ストレージ・システムにおけるホールを有するトラックのデステージを実行することに関する。
【背景技術】
【0002】
あるストレージ・システム環境において、ストレージ・コントローラ(またはストレージ・コントローラ複合体)は、互いに結合された複数のストレージ・サーバを備え得る。ストレージ・コントローラにより、ホスト・コンピューティング・システムは、ストレージ・コントローラによって制御されるストレージ・デバイスを用いて入出力(I/O)動作を行うことが可能になり、ここで、このホスト・コンピューティング・システムは、ホストと称することができる。複数のそのようなストレージ・コントローラ、ホスト、および他の演算デバイスを、1つまたは複数の場所に配備して、データの格納および管理のための環境を提供すると共に、データ処理のための環境を提供することができる。
【0003】
ストレージ・コントローラは、2つ以上のサーバ(各サーバはノードと称することができる)、ストレージ・サーバ、処理装置複合体、中央処理装置複合体(CPC)、または中央電子処理装置複合体(CEC)を備えることができる。各サーバは複数のプロセッサ・コアを有することができ、サーバは、ストレージ・コントローラの作業負荷を共有することができる。デュアルサーバ・ベースのストレージ・コントローラとも称するストレージ・コントローラの2サーバ構成において、2つのサーバのうちの一方が故障した場合に、故障したサーバにより実行されていた動作を、故障していない他方のサーバが引き受けることができる。
【0004】
ホストから書き込まれたデータは、ストレージ・コントローラのキャッシュに格納することができ、キャッシュに格納されたデータは、適切な時に、ストレージ・デバイスにデステージ(すなわち、移動またはコピー)することができる。データは、ストレージ・デバイスからストレージ・コントローラのキャッシュにステージ(すなわち、移動またはコピー)することもできる。ストレージ・コントローラは、I/O読取り要求のデータがキャッシュにおいて利用可能である場合、キャッシュから、ホストからのI/O読取り要求に応答することができ、それ以外の場合、データは、I/O読取り要求に応答するためにストレージ・デバイスからキャッシュにステージすることができる。ホストからのI/O書込み要求により、書込みに対応するデータがキャッシュに書き込まれ、その後、適切な時に、書き込まれたデータをキャッシュからストレージ・デバイスにデステージすることができる。キャッシュのストレージ容量がストレージ・デバイスのストレージ容量と比較して相対的に小さいので、空いたストレージ空間をキャッシュ内に作成するために、データをキャッシュから周期的にデステージすることができる。キャッシュからのデータの書込みおよび読取りは、ストレージ・デバイスからのデータの読取りおよび書込みと比べてはるかに高速であり得る。演算時に、キャッシュ置換ポリシーを使用して、キャッシュ内に新しいアイテムのための場所を作るために、キャッシュからどのアイテムを廃棄(すなわち降格)すべきかを決定する。ストレージ・コントローラおよびその様々なコンポーネントのさらなる詳細が、International Business Machines Corporationにより、2017年11月に刊行された刊行物「IBM DS8880 Architecture and Implementation(Release 8.3)」に見出される。
【0005】
人工ニューラル・ネットワーク(ニューラル・ネットワークとも称する)は、動物の脳を構成する生物学的ニューラル・ネットワークにより着想を得たとされ得るコンピューティング・システムである。ニューラル・ネットワークは、ある演算タスクを実行することを学習するためにフィードバック機構を使用するように構成することができる。ニューラル・ネットワークは、機械学習機構の一種である。
【発明の概要】
【0006】
機械学習モジュールが、ストレージ・コントローラの属性であって、ストレージ・コントローラにおいてステージおよびデステージを実行するための性能パラメータに影響を与える属性を含む入力を受け取る方法、システム、およびコンピュータ・プログラム製品が提供される。イベントに応答して、機械学習モジュールは、機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、トラックのデステージより前に、データをキャッシュにステージすることによって埋めるかどうかを示す出力値を生成する。誤差範囲が、生成された出力値を予想された出力値と比較することに基づいて計算され、ここで、予想された出力値は、キャッシュのトラックのホールを、トラックのデステージより前に、データをキャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される。誤差逆伝搬を介して、複数の層のノードを相互接続するリンクの重みを調節することにより、誤差範囲を小さくし、トラックのホールを、トラックのデステージより前に埋めるか否かについての予測を向上させる。これにより、機械学習アプリケーションは、トラックのホールを、トラックのデステージより前に埋めるか否かを判定するようにトレーニングされる。
【0007】
さらなる実施形態において、機械学習モジュールをトレーニングするための誤差範囲は、それを超えて、キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、それを超えて、キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、それを超えるとアダプタがスラッシングを起こす帯域幅を含む最適アダプタ帯域幅の測定値とに基づく。これにより、トラックのホールを、トラックのデステージより前に埋めるか否かを判定しながら、ステージ応答時間およびデステージ応答時間およびアダプタ帯域幅が最適化される。
【0008】
さらなる実施形態において、ステージの完了に応答して、誤差範囲が、最適アダプタ帯域幅と現在のアダプタ帯域幅との差および最大ステージ応答時間と現在のランク応答時間との差に基づいて演算される。これにより、アダプタ帯域幅とステージ応答時間とが最適化される。
【0009】
追加の実施形態において、正の誤差範囲を使用して、ホールを埋めるように機械学習モジュールをトレーニングし、負の誤差範囲を使用して、ホールを埋めないように機械学習モジュールをトレーニングする。これにより、誤差範囲を使用して、トラックのホールを、トラックのデステージより前に埋めるか否かを判定する。
【0010】
ある実施形態において、デステージの完了に応答して、誤差範囲が、最適アダプタ帯域幅と現在のアダプタ帯域幅との差および現在のランク応答時間と最大デステージ応答時間との差に基づいて演算される。これにより、アダプタ帯域幅とデステージ応答時間とが最適化される。
【0011】
さらなる実施形態において、正の誤差範囲を使用して、ホールを埋めるように機械学習モジュールをトレーニングし、負の誤差範囲を使用して、ホールを埋めないように機械学習モジュールをトレーニングする。これにより、誤差範囲を使用して、トラックのホールを、トラックのデステージより前に埋めるか否かを判定する。
【0012】
追加の実施形態において、機械学習モジュールは、ストレージ・コントローラの属性を含む入力を受け取る入力層であって、属性が、少なくとも、ステージまたはデステージされたトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージまたはデステージ・タスク制御ブロックの数、および不揮発性ストレージの使用量に基づく、入力層と、1つまたは複数の隠れ層と、出力値を生成する出力層とを含むニューラル・ネットワークである。初期重みが、推定値に基づいてニューラル・ネットワークにおいて割り当てられる。トレーニング中に、キャッシュからのデステージまたはキャッシュへのステージの完了に応答して、ニューラル・ネットワークにおいて重みが調節される。これにより、ニューラル・ネットワークは、トラックのホールを、トラックのデステージより前に埋めるか否かを判定するようにトレーニングされる。
【0013】
次に、図面を参照する。図中、同一の参照符号は、全体を通じて対応する部分を表す。
【図面の簡単な説明】
【0014】
【
図1】ある実施形態による、デステージ管理アプリケーションおよび機械学習モジュールが実装された演算デバイスを備えるコンピューティング環境のブロック図である。
【
図2】ある実施形態による、デステージ管理アプリケーションおよびニューラル・ネットワークを含む機械学習モジュールを介してトラックのホールを埋めるためのプレステージを実行するかどうかを判定するための機構を示すブロック図である。
【
図3】ある実施形態による、機械学習モジュールへの例示的な入力を示すブロック図である。
【
図4】ある実施形態による、機械学習モジュールの出力を示すブロック図である。
【
図5】ある実施形態による、機械学習モジュールの重みおよびバイアスを調節する方法を示すフローチャートである。
【
図6】ある実施形態による、機械学習モジュールの誤差範囲を演算するためのある閾値を示すブロック図である。
【
図7】ある実施形態による、トラック・アクセスの終了時に、トラックのプレステージおよびデステージを実行するための機構を示すフローチャートである。
【
図8】ある実施形態による、機械学習モジュールの誤差範囲を計算し、この誤差範囲を使用して、ステージの完了時に、機械学習モジュールにおいて誤差逆伝搬を実行する方法を示すフローチャートである。
【
図9】ある実施形態による、機械学習モジュールの誤差範囲を計算し、この誤差範囲を使用して、デステージの完了時に、機械学習モジュールにおいて誤差逆伝搬を実行する方法を示すフローチャートである。
【
図10】ある実施形態による、ストレージ・システムにおけるホールを有するトラックのデステージを実行するための、機械学習モジュールの使用法を示すフローチャートである。
【
図11】ある実施形態による、機械学習モジュールをトレーニングすることによって、ストレージ・システムにおけるホールを有するトラックのデステージを実行することを示すフローチャートである。
【
図12】ある実施形態による、
図1~
図11に示す動作を実施するためのクラウド・コンピューティング環境のブロック図である。
【
図13】ある実施形態による、
図12のクラウド・コンピューティング環境のさらなる詳細を示すブロック図である。
【
図14】ある実施形態による、演算システムのブロック図である。
【発明を実施するための形態】
【0015】
以下の説明において、本明細書の一部を形成し、いくつかの実施形態を示す添付図面を参照する。他の実施形態を利用することができ、構造上および動作上の変更を加えることができることが理解される。
【0016】
キャッシュのトラックは、複数のセクタを含むことができる。ある状況において、トラックの複数のセクタのうちの一部のセクタのみにおいてデータを変更することができ、このデータは書込みのために変更される。変更されたデータを有していないセクタは、変更されたデータを有するセクタ間に点在し得る。したがって、トラックは、1つまたは複数のホールを有することがあり、ホールは、変更されたデータを有していない、トラックの1つまたは複数の連続するセクタである。
【0017】
トラックが多数のホール(例えば、4つ以上)を有し、そのトラックが変更されるとき、ホール間に点在する、変更されたデータを有する連続する各セクタが、別個にデステージされるため、トラックのデステージは、複数のデステージを介して実行されなければならない。これにより、ある状況においてI/O動作の数が増加し、あるディスク構成、例えば、パリティ情報を格納する、あるRAID(Redundant Array of Independent Disk)構成(例えば、RAID 5およびRAID 6)における応答時間が増加し得る。そのような状況において、各デステージは、パリティをステージし、新しいパリティを演算し、その後、新しいデータおよび新しいパリティをデステージする必要があり得、そのようなI/O動作の数の増加により、RAIDランクの応答時間が増加し得る。
【0018】
I/O動作の数の増加を防ぐために、キャッシュは、多数のホールを有するトラックのプレステージを実行しようとすることができる。トラック・アクセスの終了時に、トラックが変更された場合、キャッシュは、トラックのホールの数をチェックする。ホールの数が所定の数(例えば、4)よりも大きい場合、キャッシュは、すべてのホールを埋めるための完全なトラック・プレステージを開始する。しかしながら、トラックのホールが多すぎる場合、キャッシュが実行しなければならないステージが多くなりすぎることがある。アダプタ帯域幅が高い場合、ステージはアダプタを飽和させることがあり、これはストレージ・システムの性能に影響を与えることがある。
【0019】
ある実施形態において、機械学習モジュールを使用して、トラックのホールを、トラックのデステージより前に埋めるためのプレステージを実行するか否か、またはトラックからの複数のデステージを実行するか否かを判定する。機械学習モジュールは、ステージおよびデステージ・タスク制御ブロック(TCB)の数、ホールの数、RAIDランク応答時間、アダプタ帯域幅などに関連する複数の入力を受け取り、トラックのホールを埋めるためのプレステージを実行するか否かを示す出力を生成する。機械学習モジュールは、望ましいアダプタ帯域幅およびランク応答時間と実際のアダプタ帯域幅およびランク応答時間との差に基づいて、機械学習モジュールの誤差逆伝搬を実行するための誤差範囲を演算することによって、トラックのホールを埋めるためのプレステージを実行するか否かを判定する予測精度を向上させるように経時的にトレーニングされる。これにより、ストレージ・コントローラの動作が改良される。
【0020】
図1は、ある実施形態による、デステージ管理アプリケーション104および機械学習モジュール106が実装されたストレージ・コントローラを備えるコンピューティング環境100のブロック図である。
【0021】
ストレージ・コントローラ102は、ホスト演算デバイス108から入出力(I/O)要求を受け取り、コンピューティング環境100にある複数のストレージ・デバイス110、112へのアクセスを提供するように構成される。ストレージ・コントローラ102によって、1つまたは複数のホスト演算デバイス108が、ストレージ・コントローラ102により維持される論理ストレージを用いて入出力(I/O)動作を実行することが可能になる。論理ストレージに対応する物理的ストレージは、ストレージ・デバイス110、112のうちの1つまたは複数、またはストレージ・コントローラ102のキャッシュ114、あるいはその両方に見出すことができる。
【0022】
ストレージ・コントローラ102およびホスト演算デバイス108は、パーソナル・コンピュータ、ワークステーション、サーバ、メインフレーム、ハンド・ヘルド・コンピュータ、パーム・トップ・コンピュータ、電話デバイス、ネットワーク・アプライアンス、ブレード・コンピュータ、処理デバイス、コントローラなどの、現在当技術分野で周知のものを含む任意の適切な演算デバイスを備えることができる。
【0023】
ストレージ・コントローラ102、ホスト演算デバイス108、およびストレージ・デバイス110、112は、ストレージ・エリア・ネットワーク、ワイド・エリア・ネットワーク、インターネット、イントラネットなどの、任意の適切なネットワークにおける要素であってもよい。ある実施形態において、ストレージ・コントローラ102、ホスト演算デバイス108、およびストレージ・デバイス110、112は、クラウド・コンピューティング環境における要素であってもよい。
【0024】
複数のストレージ・デバイス110、112は、ソリッド・ステート・ドライブ(SSD)、ハード・ディスク・ドライブ(HDD)などの、当技術分野で周知の任意のストレージ・デバイスから構成されていてよい。ある実施形態において、複数のストレージ・デバイス110、112は、パリティ情報を格納するRAIDランク(参照符号116で示す)を含むことができる。
【0025】
ある実施形態において、デステージ管理アプリケーション104および機械学習モジュール106は、ソフトウェア、ハードウェア、ファームウェア、またはその任意の組合せに実装されていてよい。デステージ管理アプリケーション104は、機械学習モジュール106を使用して、トラック118のホールを、トラック118のデステージより前に埋めるためのプレステージを実行するか否か、または、トラックをデステージするための、トラック118からの複数のデステージを実行するかどうかを判定する。
【0026】
読取りおよび書込みキャッシュとして使用される揮発性メモリであるキャッシュ114に加えて、ストレージ・コントローラ102は、キャッシュ114の第2のコピーを維持しバックアップするために使用される不揮発性ストレージ(NVS)120を含むことができる。停電した場合、NVS120内のすべてのデータがストレージ・コントローラ102の内部ディスクに書き込まれるまで、バッテリがストレージ・コントローラ102を稼働させ続ける。NVS120は、ストレージ・コントローラ102に設置されるプロセッサ・メモリに合わせて調整される。
【0027】
ある実施形態において、複数のストレージ・アダプタ122は、ストレージ・コントローラ102と複数のストレージ・デバイス110、112との間のインターフェースを提供することができる。
【0028】
ある実施形態において、機械学習モジュール106は、決定木学習、相関ルール学習、ニューラル・ネットワーク、帰納プログラミング論理、サポート・ベクトル・マシン、ベイジアン・モデルなどの機械学習手法を実施することができる。ある実施形態において、機械学習モジュール106は、ニューラル・ネットワークである。
【0029】
したがって、
図1は、機械学習モジュール106をデステージ管理アプリケーション104により使用して、トラックのホールを、トラックのデステージより前に埋めるか否かを判定する、ある実施形態を示す。
【0030】
図2は、ある実施形態による、デステージ管理アプリケーション104およびニューラル・ネットワークを含む機械学習モジュール106を介して、トラックのホールを埋めるためのプレステージを実行するかどうかを判定するための機構を示すブロック
図200である。
【0031】
ニューラル・ネットワーク202は、ノードを接続するリンクによるノードの集合を含むことができ、リンクは接続と称する。例えば、
図2は、接続208によってノード206に接続されたノード204を示す。ノードの集合は、3つの主要な部分、すなわち、入力層210、1つまたは複数の隠れ層212、および出力層214に分けられてよい。
【0032】
1つのノードと別のノードとの接続は、重みと称する数によって表され、重みは、正(1つのノードが別のノードを励起する場合)であっても負(1つのノードが別のノードを抑制または阻止する場合)であってもよい。ニューラル・ネットワーク202のトレーニングは、順伝搬216および誤差逆伝搬222と称する機構を介して、ニューラル・ネットワーク202における重みを較正することを伴う。前の層に接続されていないバイアス・ノードも、ニューラル・ネットワーク202内に維持されてよい。バイアスは、ノードのために重みを付けた、1の追加の入力である。
【0033】
順伝搬216において、重みのセットを入力データ218、220に適用して、出力224を計算する。最初の順伝搬について、重みのセットはランダムに選択される。誤差逆伝搬222において、出力224の誤差範囲が測定され、重みを調節して誤差を減少させる。誤差逆伝搬222は、ニューラル・ネットワーク202が生み出す出力を、ニューラル・ネットワーク202が生み出すと意図された出力と比較し、これらの出力の差を使用して、出力層214から隠れ層212を通って入力層210まで、すなわち、ニューラル・ネットワーク202内で逆戻りして、ニューラル・ネットワーク202のノード間の接続の重みを変更する。やがて、誤差逆伝搬222により、ニューラル・ネットワーク202は学習して、実際の出力と意図された出力との差を、2つが正確に一致する点まで減少させる。したがって、ニューラル・ネットワーク202は、ニューラル・ネットワーク202の重み(および、場合によりバイアス)が出力を正確に予測するように較正されるまで、順伝搬と誤差逆伝搬との両方を繰り返すように構成される。
【0034】
ある実施形態において、機械学習モジュール106は、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せにおいて実装されてよい。例えば、一実施形態において、機械学習モジュール106はソフトウェアのみに実装されてよく、別の実施形態において、機械学習モジュール106は、ソフトウェア、ファームウェア、およびハードウェアの組合せに実装されてよい。一実施形態において、機械学習モジュール106の各ノードは、軽量ハードウェア・プロセッサ(例えば、1ビット・プロセッサ)であってよく、軽量ハードウェア・プロセッサ間の有線接続があってよい。ソフトウェアまたはファームウェアあるいはその両方は、有線接続によって伝搬される信号の調節を介して、リンクの重みの調節を実施することができる。
【0035】
ある実施形態において、複数の入力218、220は、コンピューティング環境100の複数のシステム・パラメータを含む。出力224は、プレステージ動作を介してトラックのホールを埋めるかどうかに関する表示を提供することができる。
【0036】
ある実施形態において、機械学習モジュール106は、プレステージ動作を介してトラックのホールを埋めるかどうかについての予測を向上させるようにトレーニングされる。トレーニングにより、機械学習モジュール106の予測能力が経時的に連続して向上する。
【0037】
図3は、ある実施形態による、ニューラル・ネットワーク106を含む機械学習モジュールへの例示的な入力300を示すブロック図である。例示的な入力は、トラックのホールを埋めるか否かについての判定に影響を与え得る入力である。
【0038】
ある実施形態において、例示的な入力は、以下を示すことができる。
1)割り当てられたステージ・タスク制御ブロック(TCB)の数(参照符号302)。ステージTCBは、キャッシュ114へのステージを実行するために使用される。
2)割り当てられたデステージTCBの数(参照符号304)。デステージTCBは、キャッシュ114からのデステージを実行するために使用される。
3)トラックのホールの数(参照符号306)。
4)ステージについて待ち行列に入れられた要求の数(参照符号308)。
5)ランクの速度(例えば、ソリッド・ステート・ドライブまたはハード・ディスク・ドライブのランクの速度)(参照符号310)。ランクは、トラックがデステージされ得るストレージ・ランクに対応する。
6)全体的なNVS使用量(参照符号312)。
7)ランクについてのNVS使用量(参照符号314)。
8)ランクについて許容された最大NVS(参照符号316)。
9)ステージについてのランク応答時間(参照符号318)。
10)デステージについてのランク応答時間(参照符号320)。
11)ストレージ・アダプタ122の帯域幅の利用に対応する、利用されている現在のアダプタ帯域幅(参照符号322)。
12)ストレージ・アダプタ122の最大帯域幅に対応する最大アダプタ帯域幅(参照符号324)。
13)ストレージ・アダプタ122の最適帯域幅に対応する最適アダプタ帯域幅(参照符号326)。
【0039】
図3に示す入力は例示的なものであり、多くのさらなる種類の入力を、ニューラル・ネットワーク106を含む機械学習モジュールに適用してもよいことに留意されたい。
【0040】
図4は、ある実施形態による、機械学習モジュール106の出力を示すブロック図である。
【0041】
機械学習モジュール106の出力は、トラックのホールを埋めること(参照符号404により示す)、またはトラックのホールを埋めないこと(参照符号406により示す)の表示であってよい。
【0042】
表示がトラックのホールを埋めることである場合、トラック・アクセスの終了時にプレステージを実行して、トラック全体のデステージより前にホールを埋める(populate)。
【0043】
表示がトラックのホールを埋めないことである場合、ホール間に点在する、変更されたデータを有する連続する各セクタが、別個にデステージされる。
【0044】
図5は、ある実施形態による、機械学習モジュール106の重みおよびバイアスを調節する方法を示すフローチャート500である。
【0045】
制御は、ブロック502から始まり、デステージ管理アプリケーション104が、最初に、推定値に基づいて機械学習モジュール106において重みおよびバイアスを割り当てる。ブロック504において、ステージまたはデステージが完了しているかどうかに関する判定が行われる。完了している場合(「はい」の分岐506)、制御は、ブロック508へ進み、機械学習モジュール106の生成された出力と機械学習モジュール106の予想された出力(ユーザによって提供され得る)との偏差から演算された誤差範囲に基づいて、機械学習モジュール106において重みおよびバイアスが調節される。これは、重みおよびバイアスの調節によって機械学習モジュール106をトレーニングすることと称し、将来の出力を向上させるために、学習が機械学習モジュール106において行われるようになっている。
【0046】
図5において、ブロック504で、ステージまたはデステージが完了していない(「いいえ」の分岐510)と判定された場合、制御はブロック504に戻る。
【0047】
図6は、ある実施形態による、機械学習モジュール106の誤差範囲を演算するためのある閾値を示すブロック
図600である。誤差範囲を演算するための閾値は、以下の通りである。
1)「最大ステージ応答時間」602は、それを超えてより多くのステージTCBを割り当てると、性能に悪影響を与える最大時間である。
2)「最大デステージ応答時間」604は、それを超えてより多くのデステージTCBを割り当てると、性能に悪影響を与える最大時間である。
3)「最適アダプタ帯域幅」606は、それを超えるとストレージ・アダプタ122がスラッシングを起こし、性能が低下する最大アダプタ帯域幅である。
【0048】
図7は、ある実施形態による、トラック・アクセスの終了時に、トラックのプレステージおよびデステージを実行するための機構を示すフローチャート700である。
【0049】
制御は、ブロック702から始まり、トラック・アクセスが開始される。デステージ管理アプリケーション104は、(ブロック704において)トラック・アクセスが終了しているかどうかを判定する。終了している場合(「はい」の分岐706)、制御はブロック712へ進み、デステージ管理アプリケーション104は、トラックが変更されているかどうかを判定する。変更されている場合(「はい」の分岐714)、デステージ管理アプリケーション104は、(ブロック716において)トラックが1つまたは複数のホールを有するかどうかを判定する。
【0050】
デステージ管理アプリケーション104が、トラックが1つまたは複数のホールを有すると判定した場合(「はい」の分岐718)、制御はブロック720へ進み、デステージ管理アプリケーション104は、入力を機械学習モジュール106に送り、機械学習モジュール106は順伝搬を使用して出力を生成する(ブロック720において)。
【0051】
制御は、ブロック720からブロック722へ進み、デステージ管理アプリケーション104は、(ブロック722において)機械学習モジュール106の出力が、ホールを埋めるべきであることを示しているかどうかを判定する。ホールを埋めるべきであることを示している場合(「はい」の分岐724)、デステージ管理アプリケーション104は、ストレージ・デバイス110、112からキャッシュ114にトラックをプレステージし、その後、単一のデステージ動作でキャッシュ114からストレージ・デバイス110、112にトラック全体をデステージする(ブロック726において)。ホールを埋めるべきであることを示していない場合(「いいえ」の分岐728)、デステージ管理アプリケーション104は、複数のデステージを介して、キャッシュ114からストレージ・デバイス110、112にトラックをデステージする(ブロック730において)。
【0052】
ブロック704において、トラック・アクセスが終了していないと判定された場合(「いいえ」の分岐732)、トラック・アクセスが終了しているかどうかの判定が再び実行される。ブロック712において、デステージ管理アプリケーション104が、トラックが変更されていないと判定した場合(「いいえ」の分岐708)、制御は、ブロック710へ進み、デステージは不要であるとしてプロセスが終了する。ブロック716において、デステージ管理アプリケーション104が、トラックが1つまたは複数のホールを有していないと判定した場合(「いいえ」の分岐734)、トラックは、デステージされる(ブロック736において)。
【0053】
したがって、
図7は、機械学習モジュール106を使用して、機械学習モジュール106における順伝搬に基づいて、いつプレステージを実行すべきか、およびいつデステージを実行すべきかを判定する方法を説明する。
【0054】
図8は、ある実施形態による、機械学習モジュール106の誤差範囲を計算し、この誤差範囲を使用して、ステージの完了時に、機械学習モジュール106において誤差逆伝搬を実行する方法を示すフローチャート800である。
【0055】
制御はブロック802から始まり、ステージ(すなわち、キャッシュへのプレステージ)が開始される。デステージ管理アプリケーション104は、(ブロック804において)ステージが完了しているかどうかを判定する。完了している場合(「はい」の分岐806)、制御はブロック810および812へ進む。完了していない場合(「いいえ」の分岐816)、デステージ管理アプリケーション104は、ステージが完了しているかどうかを再び判定する。
【0056】
ブロック810において、誤差範囲の演算は、アダプタ帯域幅に基づき、以下を演算することによって判定される。
誤差範囲=最適アダプタ帯域幅-現在のアダプタ帯域幅
【0057】
(ブロック810において演算された)誤差範囲は、現在のアダプタ帯域幅に基づいて、正であっても負であってもよい。ブロック810において演算された正の誤差範囲を使用して、ホールを埋めるように機械学習モジュール106をトレーニングし、ブロック810において演算された負の誤差範囲を使用して、ホールを埋めないように機械学習モジュール106をトレーニングする。誤差範囲を使用して、機械学習モジュール106において誤差逆伝搬を実行する。
【0058】
ブロック812において、誤差範囲の演算は、ランク応答時間に基づき、以下を演算することによって判定される。
誤差範囲=最大ステージ応答時間-現在のランク応答時間
【0059】
ブロック812において演算された誤差範囲は、現在のランク応答時間に基づいて、正であっても負であってもよい。ブロック812において演算された正の誤差範囲を使用して、ホールを埋めるように機械学習モジュール106をトレーニングし、ブロック812において演算された負の誤差範囲を使用して、ホールを埋めないように機械学習モジュール106をトレーニングする。誤差範囲を使用して、機械学習モジュール106において誤差逆伝搬を実行する。
【0060】
制御はブロック810、812からブロック814へ進み、誤差範囲を使用して、機械学習モジュールにおいて誤差逆伝搬を実行する。ブロック814で実行される誤差逆伝搬において、正の誤差範囲を使用して、ホールを埋めるようにニューラル・ネットワークをトレーニングし、負の誤差範囲を使用して、ホールを埋めないようにニューラル・ネットワークをトレーニングする。誤差逆伝搬は、ステージされたばかりのトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージ/デステージTCBの数、NVS使用量、およびランクについてのNVS使用量、ならびにその他のパラメータを使用することができる。
【0061】
図9は、ある実施形態による、機械学習モジュール106の誤差範囲を計算し、この誤差範囲を使用して、デステージの完了時に、機械学習モジュール106において誤差逆伝搬を実行する方法を示すフローチャートである。
【0062】
制御は、ブロック902から始まり、キャッシュからストレージ・デバイスへのデステージが開始される。デステージ管理アプリケーション104は、(ブロック904において)デステージが完了しているかどうかを判定する。完了している場合(「はい」の分岐906)、制御はブロック910および912へ進む。完了していない場合(「いいえ」の分岐916)、デステージ管理アプリケーション104は、デステージが完了しているかどうかを再び判定する。
【0063】
ブロック910において、誤差範囲の演算は、アダプタ帯域幅に基づき、以下を演算することによって判定される。
誤差範囲=最適アダプタ帯域幅-現在のアダプタ帯域幅
【0064】
(ブロック910において演算された)誤差範囲は、現在のアダプタ帯域幅に基づいて、正であっても負であってもよい。ブロック910において演算された正の誤差範囲を使用して、ホールを埋めるように機械学習モジュール106をトレーニングし、ブロック910において演算された負の誤差範囲を使用して、ホールを埋めないように機械学習モジュール106をトレーニングする。誤差範囲を使用して、機械学習モジュール106において誤差逆伝搬を実行する。
【0065】
ブロック912において、誤差範囲の演算は、ランク応答時間および最大デステージ応答時間に基づき、以下を演算することによって判定される。
誤差範囲=現在のランク応答時間-最大デステージ応答時間
【0066】
ブロック912において演算された誤差範囲は、現在のランク応答時間に基づいて、正であっても負であってもよい。ブロック912において演算された正の誤差範囲を使用して、ホールを埋めるように機械学習モジュール106をトレーニングし、ブロック912において演算された負の誤差範囲を使用して、ホールを埋めないように機械学習モジュール106をトレーニングする。誤差範囲を使用して、機械学習モジュール106において誤差逆伝搬を実行する。
【0067】
制御は、ブロック910、912からブロック914へ進み、誤差範囲を使用して、機械学習モジュールにおいて誤差逆伝搬を実行する。ブロック914で実行される誤差逆伝搬において、正の誤差範囲を使用して、ホールを埋めるようにニューラル・ネットワークをトレーニングし、負の誤差範囲を使用して、ホールを埋めないようにニューラル・ネットワークをトレーニングする。誤差逆伝搬は、デステージされたばかりのトラックのホールの数、ランク応答時間の現在の値、アダプタ応答時間、割り当てられたステージ/デステージTCBの数、NVS使用量、およびランクについてのNVS使用量、ならびにその他のパラメータを使用することができる。
【0068】
図10は、ある実施形態による、ストレージ・システムにおけるホールを有するトラックのデステージを実行するための、機械学習モジュールの使用法を示すフローチャート1000である。
【0069】
制御は、ブロック1002から始まり、キャッシュのトラックについてのトラック・アクセスの終了に応答して、トラックがデータを変更したかどうか、およびトラックが1つまたは複数のホールを有するかどうかを判定する。(ブロック1004において)トラックがデータを変更し、トラックが1つまたは複数のホールを有すると判定したことに応答して、トラックが処理されるコンピューティング環境の複数の属性についての入力が、機械学習モジュールに提供されて、出力値を生み出す。
【0070】
制御はブロック1004からブロック1006へ進み、出力値がトラックの1つまたは複数のホールを埋めるべきであるかどうかを示しているかどうかを判定する。制御は、ブロック1006からブロック1008へ進む。
【0071】
ブロック1008において、出力値がトラックの1つまたは複数のホールを埋めるべきであることを示していると判定したことに応答して、トラックは、ストレージ・ドライブからキャッシュにステージされる。制御は、ブロック1010へ進み、ストレージ・ドライブからキャッシュへのトラックのステージが完了したことに応答して、トラックは、キャッシュからデステージされる。
【0072】
したがって、
図10は、機械学習モジュール106を使用して、機械学習モジュール106の出力値を判定することによって、ストレージ・システムにおけるホールを有するトラックのデステージを実行するかどうかを判定する方法を示す。
【0073】
図11は、ある実施形態による、機械学習モジュール106をトレーニングすることによって、ストレージ・システムにおけるホールを有するトラックのデステージを実行することを示すフローチャート1100である。
【0074】
制御は、ブロック1102から始まり、機械学習モジュール106は、ストレージ・コントローラ102の属性を含む入力を受け取り、ここで、属性は、ストレージ・コントローラ102においてステージおよびデステージを実行するための性能パラメータに影響を与える。制御は、ブロック1104へ進み、イベントに応答して、機械学習モジュール106は、機械学習モジュールの複数の層を通した順伝搬を介して、キャッシュのトラックのホールを、トラックのデステージより前に、データをキャッシュにステージすることによって埋めるかどうかを示す出力値を生成する。
【0075】
生成された出力値を、予想された出力値と比較することに基づいて、誤差範囲が計算され(ブロック1106において)、ここで、予想された出力値は、キャッシュのトラックのホールを、トラックのデステージより前に、データをキャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される。誤差逆伝搬を介して、複数の層のノードを相互接続するリンクの重みを調節する(ブロック1108において)ことにより、誤差範囲を小さくし、トラックのホールを、トラックのデステージより前に埋めるか否かについての予測を向上させる。
【0076】
機械学習モジュールの誤差範囲を異なる実施形態において異なって演算してもよいことに留意されたい。ある実施形態において、機械学習モジュールをトレーニングするための誤差範囲は、機械学習の生成された出力値を、予想された出力値と比較することに基づいてよく、ここで、予想された出力値は、キャッシュのトラックのホールを、トラックのデステージより前に、データをキャッシュにステージすることによって埋めることが正しいかどうかについての表示から生成される。ある実施形態において、機械学習モジュールをトレーニングするための誤差範囲は、それを超えて、キャッシュにステージするためのより多くのタスク制御ブロックを割り当てると、ストレージ・コントローラの性能が低下する、最大ステージ応答時間の測定値と、それを超えて、キャッシュからデステージするためのより多くのタスク制御ブロックを割り当てると、ストレージ・コントローラの性能が低下する、最大デステージ応答時間の測定値と、それを超えるとアダプタがスラッシングを起こす帯域幅を含む最適アダプタ帯域幅の測定値とのうちの1つまたは複数に基づいていてよい。他の実施形態は、異なる機構を介して誤差範囲を計算することができる。複数の誤差範囲を単一の誤差範囲に統合することができ、単一の誤差範囲を使用して重みおよびバイアスを調節してもよく、または機械学習モジュールが、複数の誤差範囲に基づいて重みおよびバイアスを調節してもよい。
【0077】
したがって、
図1~
図11は、機械学習モジュール106を使用して、トラックのホールを、トラックのデステージより前に、プレステージを介して埋めるか否かを判定する、ある実施形態を示す。
【0078】
クラウド・コンピューティング環境
クラウド・コンピューティングとは、管理努力またはサービス・プロバイダの相互作用を最小限に抑えて、迅速にプロビジョニングし、リリースすることができる構成可能なコンピューティング・リソースの共有プール(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、およびサービス)への便利なオンデマンド・ネットワーク・アクセスを可能にするモデルのことである。
【0079】
次に
図12を参照して、例示的なクラウド・コンピューティング環境50を示す。トラック・デステージのためのホール管理(参照符号52で示す)が、クラウド・コンピューティング環境50において実行される。図示するように、クラウド・コンピューティング環境50は、1つまたは複数のクラウド・コンピューティング・ノード10を備え、この1つまたは複数のクラウド・コンピューティング・ノード10と、例えば、パーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスとが、通信することができる。ノード10は相互に通信することができる。ノード10は、プライベート、コミュニティ、パブリック、または前述したハイブリッド・クラウド、またはその組合せなどの、1つまたは複数のネットワークにおいて物理的にまたは仮想的に群を成す(図示せず)ことができる。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがそのためにローカル・コンピューティング・デバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。
図12に示すコンピューティング・デバイス54A~54Nの種類は、例示的であることが意図されているに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50が、任意の種類のネットワークまたはネットワーク・アドレス可能接続あるいはその両方にわたって任意の種類のコンピュータ化されたデバイスと通信することができる(例えば、ウェブ・ブラウザを使用して)ことが理解される。
【0080】
次に
図13を参照して、クラウド・コンピューティング環境50(
図12)によって提供される機能抽象化層の組を示す。
図13に示すコンポーネント、層、および機能は、例示的であることが意図されているに過ぎず、本発明の実施形態はこれらに限定されないことを予め理解されたい。
【0081】
ハードウェアおよびソフトウェア層60が、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム、一例においてIBM zSeriesシステムと、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ、一例においてIBM pSeriesシステムと、IBM xSeriesシステムと、IBM BladeCenterシステムと、ストレージ・デバイスと、ネットワークおよびネットワーキング・コンポーネントとが含まれる。ソフトウェア・コンポーネントの例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例においてIBM WebSphereアプリケーション・サーバ・ソフトウェアと、データベース・ソフトウェア、一例においてIBM DB2データベース・ソフトウェアとが含まれる(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界各地の多くの法域において登録されたInternational Business Machines Corporationの商標である)。
【0082】
仮想化層62は、抽象化層を提供し、抽象化層から、仮想サーバと、仮想ストレージと、仮想プライベート・ネットワークを含む仮想ネットワークと、仮想アプリケーションおよびオペレーティング・システムと、仮想クライアントとの仮想エンティティの例を提供することができる。
【0083】
一例において、管理層64は、以下で説明する機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内のタスクを実行するのに利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格設定は、リソースがクラウド・コンピューティング環境内で利用されるときの費用追跡、およびこれらのリソースの消費に対する課金または請求書発行を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータルは、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース配分および管理を提供する。サービス品質保証契約(SLA:Service Level Agreement)の計画および履行は、将来の要件がSLAに従って予測されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【0084】
作業負荷層66は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができる作業負荷および機能の例には、マッピングおよびナビゲーションと、ソフトウェア開発およびライフサイクル管理と、仮想教室教育配信と、データ解析処理と、トランザクション処理と、
図1~
図12に示したトラック・デステージのためのホール管理68とが含まれる。
【0085】
追加の実施形態の詳細
説明した動作は、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せを作り出す標準プログラミングまたはエンジニアリング技法あるいはその両方を使用して、方法、装置、またはコンピュータ・プログラム製品として実装することができる。したがって、実施形態の態様は、全体にハードウェアの実施形態、全体にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはすべて全体的に本明細書において「回路」、「モジュール」、もしくは「システム」と称することができる、ソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形をとることができる。さらに、実施形態の態様は、コンピュータ・プログラム製品の形をとることができる。コンピュータ・プログラム製品は、プロセッサに本実施形態の態様を実行させるためのコンピュータ可読プログラム命令を有する1つ(または複数)のコンピュータ可読ストレージ媒体を含むことができる。
【0086】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用されるように命令を保持および格納することができる有形デバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、パンチカードまたは命令が記録されている溝における隆起構造などの機械的に符号化されたデバイス、および前述の任意の適切な組合せが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるとき、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体中を伝搬する電磁波(例えば、光ファイバ・ケーブル中を通過する光パルス)、または電線中を伝送される電気信号などの、それ自体が一過性の信号であると解釈すべきではない。
【0087】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0088】
本実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的に遠隔コンピュータ上で、または完全に遠隔コンピュータもしくはサーバ上で実行することができる。完全に遠隔コンピュータもしくは遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続することができ、または外部コンピュータと接続を行うことができる(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)。一部の実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本実施形態の態様を実行するために、電子回路を個人向けにするコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
【0089】
本実施形態の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施可能であることが理解されよう。
【0090】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んだ製品を含むべく、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0091】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0092】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された1つ(または複数の)論理機能を実施するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。一部の代替実装形態において、ブロックに記載された機能は、図に記載された順序以外で生じる場合がある。例えば、連続して示す2つのブロックは、実際には、実質的に同時に実行することができ、またはそれらのブロックは、時には、関与する機能に応じて、逆の順序で実行することができる。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実施することができることにも留意されたい。
【0093】
図14は、ある実施形態による、ストレージ・コントローラ102、または他の演算デバイス108に含めることができるある要素を示すブロック図である。システム1400は、ある実施形態において、少なくともプロセッサ1404を含み得る回路1402を含むことができる。システム1400は、メモリ1406(例えば、揮発性メモリ・デバイス)およびストレージ1408を含むこともできる。ストレージ1408は、不揮発性メモリ・デバイス(例えば、EEPROM、ROM、PROM、フラッシュ、ファームウェア、プログラマブル論理など)、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどを含むことができる。ストレージ1408は、内部ストレージ・デバイス、付属ストレージ・デバイス、またはネットワーク・アクセス可能ストレージ・デバイス、あるいはその組合せを含むことができる。システム1400は、メモリ1406にロードし、プロセッサ1404または回路1402によって実行することができるコード1412を含んだプログラム論理1410を含むことができる。ある実施形態において、コード1412を含んだプログラム論理1410は、ストレージ1408に格納することができる。ある他の実施形態において、プログラム論理1410は、回路1402に実装することができる。システム1400のコンポーネントの1つまたは複数は、バスを介して、または他の結合もしくは接続1414を介して通信することができる。したがって、
図14はプログラム論理1410を他の要素と別個に示すが、プログラム論理1410は、メモリ1406または回路1402あるいはその両方に実装することができる。
【0094】
ある実施形態は、人またはコンピュータ可読コードをコンピューティング・システムに統合した自動処理によってコンピューティング命令を展開する方法を対象とすることができ、コンピューティング・システムと組み合わせたコードは、説明した実施形態の動作を実行するように有効にされる。
【0095】
「1つの実施形態(an embodiment)」、「実施形態(embodiment)」、「複数の実施形態(embodiments)」、「その実施形態(the embodiment)」、「それらの実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「一部の実施形態(some embodiments)」、および「一実施形態(one embodiment)」という用語は、特に明示的に他の指定をしていない限り、「1つまたは複数の(ただし、すべてのではない)本発明の実施形態(複数可)(one or more (but not all) embodiments of the present invention(s))」を意味する。
【0096】
「含む(including)」、「備える(comprising)」、「有する(having)」という用語およびその変形は、特に明示的に他の指定をしていない限り、「含むが限定されない(including but not limited to)」を意味する。
【0097】
列挙された品目のリストは、特に明示的に他の指定をしていない限り、品目のいずれかまたはすべてが相互に排他的であることを暗示しない。
【0098】
「1つの(a)、(an)」および「その(the)」という用語は、特に明示的に他の指定をしていない限り、「1つまたは複数の(one or more)」を意味する。
【0099】
互いに通信するデバイスは、特に明示的に他の指定をしていない限り、互いに連続して通信する必要はない。さらに、互いに通信するデバイスは、1つまたは複数の媒介を通じて直接または間接的に通信することができる。
【0100】
互いに通信するいくつかの構成要素を有する実施形態の説明は、すべてのそのような構成要素が必要とされることを暗示しない。それどころか、様々な任意選択の構成要素が、非常に様々な、本発明の可能な実施形態を示すために説明されている。
【0101】
さらに、プロセス・ステップ、方法ステップ、またはアルゴリズムなどが、順番に説明され得るが、そのようなプロセス、方法、およびアルゴリズムは、代替の順序で動作するように構成することができる。言い換えると、説明され得るステップの任意の順番または順序は、必ずしもステップをその順序で実行するという要件を示していない。本明細書に記載のプロセスのステップは、実際的な任意の順序で実行することができる。さらに、いくつかのステップは、同時に実行することができる。
【0102】
単一のデバイスまたは物品が本明細書に記載されているとき、2つ以上のデバイス/物品を単一のデバイス/物品の代わりに使用してもよいことが容易に明らかであろう。同様に、2つ以上のデバイスまたは物品が本明細書に記載されているとき、単一のデバイス/物品を2つ以上のデバイスまたは物品の代わりに使用してもよいこと、あるいは異なる数のデバイス/物品を示された数のデバイスまたはプログラムの代わりに使用してもよいことが容易に明らかであろう。デバイスの機能または特徴あるいはその両方は、そのような機能/特徴を有するものとして明示的に説明されていない1つまたは複数の他のデバイスによって代替的に具現化することができる。したがって、本発明の他の実施形態は、デバイス自体を含む必要がない。
【0103】
図示され得る少なくともある動作は、ある順序で生じるある事象を示す。代替実施形態において、ある動作は、異なる順序で実行し、変更し、または除去することができる。さらに、ステップは、上記の論理に追加し、説明した実施形態に依然として従うことができる。さらに、本明細書に記載の動作は順番に生じることができ、または、ある動作は並行して処理することができる。さらに、動作は、単一の処理ユニットによって、または分散処理ユニットによって実行することができる。
【0104】
本発明の様々な実施形態の前述の説明は、図示および説明のために提示されてきた。網羅的であること、または本発明を開示された正確な形に限定することは意図されていない。多くの変更および変形が、上記の教示に照らして可能である。本発明の範囲はこの詳細な説明によって限定されず、むしろ、本明細書に添付された特許請求の範囲によって限定されることが意図されている。上記の明細書、例、およびデータは、本発明の製造および構成の使用の完全な説明を提供する。本発明の多くの実施形態は、本発明の思想および範囲から逸脱することなく作製することができるので、本発明は、添付される特許請求の範囲に存在する。