(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-06
(45)【発行日】2023-02-14
(54)【発明の名称】ホリスティックグローバルなパフォーマンス及び電力管理
(51)【国際特許分類】
G06F 9/50 20060101AFI20230207BHJP
【FI】
G06F9/50 150Z
【外国語出願】
(21)【出願番号】P 2021100077
(22)【出願日】2021-06-16
(62)【分割の表示】P 2017531539の分割
【原出願日】2015-11-24
【審査請求日】2021-06-16
(32)【優先日】2014-12-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】イーステップ,ジョナサン エム.
(72)【発明者】
【氏名】グレコ,リチャード ジェイ.
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2008/0109811(US,A1)
【文献】特表2009-521056(JP,A)
【文献】米国特許出願公開第2008/0301474(US,A1)
【文献】特表2007-501478(JP,A)
【文献】米国特許出願公開第2004/0268278(US,A1)
【文献】特表2013-508861(JP,A)
【文献】米国特許出願公開第2011/0093733(US,A1)
【文献】特開2014-186522(JP,A)
【文献】特表2014-527248(JP,A)
【文献】米国特許出願公開第2013/0073883(US,A1)
【文献】米国特許出願公開第2008/0232290(US,A1)
【文献】米国特許出願公開第2009/0254660(US,A1)
【文献】米国特許出願公開第2009/0276649(US,A1)
【文献】特開2011-034403(JP,A)
【文献】Carolyn L. Talcott,Policy-based Coordination in PAGODA: A Case Study,Electronic Notes in Theoretical Computer Science,vol.181,2007年06月,97-112,https://www.researchgate.net/publication/222690392_Policy-based_Coordination_in_PAGODA_A_Case_Study
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
マルチチップ集積回路(IC)パッケージを含む装置であって、前記マルチチップICパッケージは、
複数のプロセッサICチップであって、各プロセッサICチップは、
複数のプロセッサコアと、
前記プロセッサICチップの電力消費及び
パフォーマンスを制御するための第1の電力マネージャであって、前記第1の電力マネージャは、前記複数のプロセッサコアのうちの1つ以上に関連付けられた1つ以上
のクロック周波数を管理する、第1の電力マネージャと、を含む、複数のプロセッサICチップと、
前記
複数のプロセッサICチップ
のうちの少なくとも1つに結合された相互接続ICチップであって、前記相互接続ICチップは、
前記複数のプロセッサコアを含むシステム構成要素にメモリデバイスを結合するためのメモリコントローラと、
前記相互接続ICチップに1つ以上の入出力(I/O)デバイスを結合するためのI/Oインタフェースと、
前記1つ以上のプロセッサICチップ及び前記相互接続ICチップを含む前記マルチチップICパッケージ内の全てのICチップにわたってパフォーマンス及び電力ポリシーを
調整するための第2の電力マネージャと、を含み、
前記第2の電力マネージャは、前記第1の電力マネージャを含む第1の複数の電力マネージャから受信した電力及び/又はパフォーマンステレメトリデータを集約し、前記集約された電力及び/又はパフォーマンステレメトリデータに基づいて、前記第1の複数の電力マネージャに制御信号を送信して、前記第1の複数の電力マネージャに1つ以上の電力及び/又はパフォーマンス制約を指示し、
前記第1
の電力マネージ
ャは、
他のプロセッサICチップの他の第1の電力マネージャから独立して、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、そのそれぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御する、相互接続ICチップと、を含む、装置。
【請求項2】
前記1つ以上のプロセッサICチップと前記相互接続ICチップに結合するスケーラブル制御ファブリックをさらに含む、請求項1に記載の装置。
【請求項3】
前記スケーラブル制御ファブリックは、制御信号に加えてデータ信号をサポートする物理通信ファブリック上で動作可能なスケーラブルオーバレイを含む、請求項2に記載の装置。
【請求項4】
第1の制御信号の受信に応答して、前記第1の電力マネージャは、少なくとも1つの関連するコアの周波数を修正する、請求項1に記載の装置。
【請求項5】
前記第2の電力マネージャは、前記第1の電力マネージャから受信した前記電力及び/又はパフォーマンステレメトリデータを集約するための、及び前記制御信号を前記第1の電力マネージャに送信するためのファームウェア又はソフトウェアを実行する回路を含む、請求項1に記載の装置。
【請求項6】
前記第1の電力マネージャは、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、それぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御するためのファームウェア又はソフトウェアを実行する回路を含む、請求項4に記載の装置。
【請求項7】
前記第2の電力マネージャ及び前記第1の電力マネージャは、同一の回路を含むが、前記第2の電力マネージャと前記第1の電力マネージャとの間の階層的関係に基づいて異なる機能を実行する、請求項6に記載の装置。
【請求項8】
前記異なる機能を実行するために、前記第2の電力マネージャ及び前記第1の電力マネージャは、異なるプログラムコードシーケンスを実行する、請求項7に記載の装置。
【請求項9】
前記異なるプログラムコードシーケンスは、ファームウェア又はソフトウェアのプログラムコードを含む、請求項8に記載の装置。
【請求項10】
前記ファームウェア又はソフトウェアは、前記システム構成要素の実行リソース間及び個々のプロセッサに電力を割り当てる方法を学習するための機械学習ファームウェア又はソフトウェアを含む、請求項9に記載の装置。
【請求項11】
前記機械学習ファームウェア又はソフトウェアは、強化学習ファームウェア又はソフトウェアを含む、請求項10に記載の装置。
【請求項12】
システムメモリと、
前記システムメモリに結合されたマルチチップ集積回路(IC)パッケージと、を含むシステムであって、前記マルチチップICパッケージは、
複数のプロセッサICチップであって、各プロセッサICチップは、
複数のプロセッサコアと、
前記プロセッサICチップの電力消費及びパフォーマンスを制御するための第1の電力マネージャであって、前記第1の電力マネージャは、前記複数のプロセッサコアのうちの1つ以上に関連付けられた1つ以上のクロック周波数を管理する、第1の電力マネージャと、を含む、複数のプロセッサICチップと、
前記複数のプロセッサICチップのうちの少なくとも1つに結合された相互接続ICチップであって、前記相互接続ICチップは、
前記システムメモリに前記複数のプロセッサコアを結合するためのメモリコントローラと、
前記相互接続ICチップに1つ以上の入出力(I/O)デバイスを結合するためのI/Oインタフェースと、
前記1つ以上のプロセッサICチップ及び前記相互接続ICチップを含む前記マルチチップICパッケージ内の全てのICチップにわたってパフォーマンス及び電力ポリシーを調整するための第2の電力マネージャと、を含み、
前記第2の電力マネージャは、前記第1の電力マネージャを含む第1の複数の電力マネージャから受信した電力及び/又はパフォーマンステレメトリデータを集約し、前記集約された電力及び/又はパフォーマンステレメトリデータに基づいて、前記第1の複数の電力マネージャに制御信号を送信して、前記第1の複数の電力マネージャに1つ以上の電力及び/又はパフォーマンス制約を指示し、
前記第1の電力マネージャは、他のプロセッサICチップの他の第1の電力マネージャから独立して、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、そのそれぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御する、相互接続ICチップと、を含む、システム。
【請求項13】
前記1つ以上のプロセッサICチップと前記相互接続ICチップに結合するスケーラブル制御ファブリックをさらに含む、請求項12に記載のシステム。
【請求項14】
前記スケーラブル制御ファブリックは、制御信号に加えてデータ信号をサポートする物理通信ファブリック上で動作可能なスケーラブルオーバレイを含む、請求項13に記載のシステム。
【請求項15】
第1の制御信号の受信に応答して、前記第1の電力マネージャは、少なくとも1つの関連するコアの周波数を修正する、請求項12に記載のシステム。
【請求項16】
前記第2の電力マネージャは、前記第1の電力マネージャから受信した前記電力及び/又はパフォーマンステレメトリデータを集約するための、及び前記制御信号を前記第1の電力マネージャに送信するためのファームウェア又はソフトウェアを実行する回路を含む、請求項12に記載のシステム。
【請求項17】
前記第1の電力マネージャは、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、それぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御するためのファームウェア又はソフトウェアを実行する回路を含む、請求項15に記載のシステム。
【請求項18】
前記第2の電力マネージャ及び前記第1の電力マネージャは、同一の回路を含むが、前記第2の電力マネージャと前記第1の電力マネージャとの間の階層的関係に基づいて異なる機能を実行する、請求項17に記載のシステム。
【請求項19】
前記異なる機能を実行するために、前記第2の電力マネージャ及び前記第1の電力マネージャは、異なるプログラムコードシーケンスを実行する、請求項18に記載のシステム。
【請求項20】
前記異なるプログラムコードシーケンスは、ファームウェア又はソフトウェアのプログラムコードを含む、請求項19に記載のシステム。
【請求項21】
前記ファームウェア又はソフトウェアは、前記システムの実行リソース間及び個々のプロセッサに電力を割り当てる方法を学習するための機械学習ファームウェア又はソフトウェアを含む、請求項20に記載のシステム。
【請求項22】
前記機械学習ファームウェア又はソフトウェアは、強化学習ファームウェア又はソフトウェアを含む、請求項21に記載のシステム。
【請求項23】
プログラムコードが記憶されたコンピュータ読み取り可能媒体であって、前記プログラムコードは、機械によって実行されると、前記機械に、
第1の電力マネージャによって、複数のプロセッサICチップのうちのプロセッサICチップの電力消費及びパフォーマンスを管理することであって、各プロセッサICチップは、複数のプロセッサコアを含み、前記第1の電力マネージャは、前記複数のプロセッサコアのうちの1つ以上に関連付けられた1つ以上のクロック周波数を管理する、管理することと、
相互接続ICチップによって、メモリデバイスのメモリコントローラに前記複数のプロセッサコアを結合することと、
前記相互接続ICチップの入出力(I/O)インタフェースによって、前記メモリコントローラに1つ以上のI/Oデバイスを結合することと、
前記相互接続ICチップの第2の電力マネージャによって、前記1つ以上のプロセッサICチップ及び前記相互接続ICチップを含む前記マルチチップICパッケージ内の全てのICチップにわたってパフォーマンス及び電力ポリシーを調整することと、
前記第2の電力マネージャによって、前記第1の電力マネージャを含む第1の複数の電力マネージャから受信した電力及び/又はパフォーマンステレメトリデータを集約し、前記集約された電力及び/又はパフォーマンステレメトリデータに基づいて、前記第1の複数の電力マネージャに制御信号を送信して、前記第1の複数の電力マネージャに1つ以上の電力及び/又はパフォーマンス制約を指示する、集約することと、を含む動作を行わせ、
前記第1の電力マネージャは、他のプロセッサICチップの他の第1の電力マネージャから独立して、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、そのそれぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御する、機械読み取り可能媒体。
【請求項24】
前記1つ以上のプロセッサICチップと前記相互接続ICチップに結合するスケーラブル制御ファブリックをさらに含む、請求項23に記載の機械読み取り可能媒体。
【請求項25】
前記スケーラブル制御ファブリックは、制御信号に加えてデータ信号をサポートする物理通信ファブリック上で動作可能なスケーラブルオーバレイを含む、請求項24に記載の機械読み取り可能媒体。
【請求項26】
第1の制御信号の受信に応答して、前記第1の電力マネージャは、少なくとも1つの関連するコアの周波数を修正する、請求項23に記載の機械読み取り可能媒体。
【請求項27】
前記第2の電力マネージャは、前記第1の電力マネージャから受信した前記電力及び/又はパフォーマンステレメトリデータを集約するための、及び前記制御信号を前記第1の電力マネージャに送信するためのファームウェア又はソフトウェアを実行する回路を含む、請求項23に記載の機械読み取り可能媒体。
【請求項28】
前記第1の電力マネージャは、前記第2の電力マネージャによって示される前記電力及び/又はパフォーマンス制限に従って、それぞれのプロセッサICチップの前記電力消費及び/又はパフォーマンスを制御するためのファームウェア又はソフトウェアを実行する回路を含む、請求項26に記載の機械読み取り可能媒体。
【請求項29】
前記第2の電力マネージャ及び前記第1の電力マネージャは、同一の回路を含むが、前記第2の電力マネージャと前記第1の電力マネージャとの間の階層的関係に基づいて異なる機能を実行する、請求項28に記載の機械読み取り可能媒体。
【請求項30】
前記異なる機能を実行するために、前記第2の電力マネージャ及び前記第1の電力マネージャは、異なるプログラムコードシーケンスを実行する、請求項29に記載の機械読み取り可能媒体。
【請求項31】
前記異なるプログラムコードシーケンスは、ファームウェア又はソフトウェアのプログラムコードを含む、請求項30に記載の機械読み取り可能媒体。
【請求項32】
前記ファームウェア又はソフトウェアは、システムの実行リソース間及び個々のプロセッサに電力を割り当てる方法を学習するための機械学習ファームウェア又はソフトウェアを含む、請求項31に記載の機械読み取り可能媒体。
【請求項33】
前記機械学習ファームウェア又はソフトウェアは、強化学習ファームウェア又はソフトウェアを含む、請求項32に記載の機械読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、電子工学の分野に関する。より詳細には、実施形態によっては、サーバ及び他のコンピューティングデバイスについての電力管理に関する。
【背景技術】
【0002】
高パフォーマンスコンピューティング(HPC)システムは、分散コンピューティングのためにファブリックによって接続された多数のノードを含むことができる。さらに、アプリケーションは、HPCシステム内のノード間で同時に動作するタスクに分割される。これらのタスクは順次のマイルストーンにブレークダウンされ、タスクはこれらのマイルストーンのそれぞれに同時に到達することが期待される。
【0003】
残念ながら、いずれかのノードが他のノードより遅く次のマイルストーンに向けて作業を完了すると、最も遅いタスクがその作業を完了するまでは、アプリケーション全体の進行が停止する。この状況が発生すると、アプリケーションは潜在的なパフォーマンスを失い、待機しなければならないノードでは電力が無駄になる。
【図面の簡単な説明】
【0004】
発明を実施するための形態は、添付図面を参照して提供される。図面において、参照番号の最も左の桁は、その参照番号が最初に現れる図を識別する。異なる図面での同じ参照番号の使用は、類似または同一の項目を示す。
【0005】
【
図1】
図1は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【
図2】
図2は、実施形態による、ホリスティックグローバルなパフォーマンス及び電力管理(HGPPM)システムのブロック図を示す。
【
図3】
図3は、実施形態による、階層的部分観測マルコフ決定プロセス(H-POMDP)エージェントの相互作用の詳細のブロック図を示す。
【
図4】
図4は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【
図5】
図5は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【
図6】
図6は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【発明を実施するための形態】
【0006】
以下の説明では、様々な実施形態の十分な理解を提供するために、多数の特定の詳細が述べられる。しかし、様々な実施形態を特定の詳細なしに実施することができる。他の例では、周知の方法、手順、コンポーネント、及び回路は、特定の実施形態を不明瞭にしないようにするため、詳細には説明していない。さらに、実施形態の様々な態様は、集積半導体回路(「ハードウェア」)、1つ以上のプログラム(「ソフトウェア」)に編成されたコンピュータ読み取り可能命令、ハードウェアとソフトウェアのいくつかの組み合わせ等の様々な手段を使用して実行されることができる。本開示の目的のために、「ロジック」とは、ハードウェア、ソフトウェア、又はそれらのいくつかの組み合わせを意味するものとする。
【0007】
上述のように、高パフォーマンスコンピューティング(HPC)システムは、分散コンピューティングのために高速ネットワークファブリックによって結合された多数のノードを含むことができる。本明細書で説明するように、「ノード」は、概して、(本明細書で説明する汎用プロセッサ、グラフィックスプロセッサ等の1つ以上のプロセッサを含み得る)計算要素、ネットワークファブリックへの接続、ログインコンポーネント、サービスコンポーネント、場合によってはメモリ、IO(入力/出力)装置又は他のコンポーネントを示す。概して、アプリケーション(本明細書では、「ジョブ」とも呼ぶ)は、HPCシステム内の多数のノード(例えば、数万)にわたって同時に動作するタスクに分割される。各ノードに1つ又は多数のタスクがマップされることもあれば、1つ以上のコアにわたって単一のタスクが動作することもある。タスクは、同じ問題セットの異なるデータで動く同じプログラムからなることができる。タスクは順次のマイルストーン(milestones)にブレークダウン(broken down)され、全てのタスクは同じ時間量内にマイルストーン間での計算を完了することが期待され、いわゆるバルク同期スタイルの計算につながる。マイルストーンでは、タスクはグローバル障壁のようなオペレーションを通じて同期することができる。
【0008】
残念ながら、任意のコア又はノードが(多くの理由のいずれか1つにより)他のものよりもゆっくりと同期化の間での作業を完了する場合、最も遅いタスクが作業を完了するまで、アプリケーション全体の進行が停止する。これが起こると、アプリケーションは潜在的なパフォーマンスを失い、待機しなければならないコア又はノードでは電力が無駄になる。この問題には、負荷不均衡、アプリケーション又はオペレーティングシステムのジッタ及びパフォーマンス変動を含む多くの名前がある。負荷不均衡には、ハードウェアコンポーネントのパフォーマンスの分布(distribution)につながる製造変動性などの静的要因から、異なるコア上の異なる時間に発生するページフォルト、一部のコアだけに影響を与えるオペレーティングシステムの干渉、1つのコア又はノードだけを一時的に機能を損なわせる回復可能なハードウェアエラー、アプリケーション内のタスク間の作業の不均一な分布等の動的要因にまでわたる多数の原因があり得る。
【0009】
HPCシステムの規模と複雑さが増し続けるにつれて、負荷不均衡がパフォーマンスの低下と電力の無駄についての重大な発信元になりつつある。製造変動性は特に問題である。最近のプロセッサでは、熱的設計及び電力制限を超えないで、最大コア周波数で浮動小数点集約型ワークロードを実行することができない。さらに、同じモデル及びステッピングの2つのプロセッサは、同じコア周波数を達成するために異なる電力を必要とする。産業界は、所与の電力バジェット(power budget)においてプロセッサパフォーマンスの変動が20%を超えると予想している。
【0010】
この目的のため、いくつかの実施形態は、ホリスティックグローバルな(holistic global)パフォーマンス及び電力管理を提供する。より具体的には、構成可能な目的関数(objective functions)に向けてジョブを管理しながら(例えば、ジョブ電力上限内でのパフォーマンス最大化、ジョブ電力上限内での効率最大化等)、ジョブ内の(例えば、全ての)ノードにわたるソフトウェア及びハードウェアポリシーを調整するための新しいパフォーマンス及び電力管理フレームワークが記述される。フレームワークの1つの用途は、上記の負荷均衡についての問題を解決することである。
【0011】
付加的に、いくつかの実施形態は、パフォーマンス最大化、効率最大化(例えば、最小エネルギー遅延製品)、ジョブ電力上限に向けて管理しながらのパフォーマンス最大化、ジョブ電力上限に向けて管理しながらの効率最大化等、ジョブ電力上限又は他の構成可能な目的関数に向けてジョブを管理しながら、ジョブ内の(例えば、全ての)ノードにわたるパフォーマンス及び電力管理の決定を調整するホリスティックグローバルなパフォーマンス及び電力管理(HGPPM)フレームワークを提供する。HGPPM技術は、少なくとも部分的には、高速階層的部分観測マルコフ決定過程(H-POMDP)強化学習(RL)法で実装された、階層的フィードバック誘導制御システムに基づいている。そのような実施形態は、階層システムドメイン間で電力を導き(steering)、ソフトウェア及びハードウェア抽象化境界にわたる他のより幅広い最適化を調整するための重要な機能を導入することによってアプリケーション負荷不均衡を緩和することができる。例えば、いくつかの実施形態では、HGPPMは、負荷均衡を達成するため、階層システムドメイン間の電力割り当てを選択することと、所与のシステムアーキテクチャ、問題サイズ又は電力割り当てについての最高の実行オプションを見つけるため、レパートリーからのアプリケーションアルゴリズムの選択を、同時に調整、最適化することによってより高いパフォーマンス又は効率を達成することができる。
【0012】
さらに、本明細書で説明する技術は、
図1から
図6を参照して説明するものを含め、様々なコンピューティングシステム(例えば、デスクトップ、ワークステーション、サーバ、ラックシステム等の非モバイルコンピューティングデバイス、及びスマートフォン、タブレット、UMPC(ウルトラモバイルパーソナルコンピュータ)、ラップトップコンピュータ、ウルトラブック(登録商標)コンピューティングデバイス、スマートウォッチ、スマートグラス等のモバイルコンピューティングデバイス)に提供されることができる。より詳細には、
図1は、実施形態によるコンピューティングシステム100のブロック図を示す。
図1は、模式的な表現であり、物理的な構成を反映することは意味しない。システム100は、1つ以上のプロセッサ102-1から102-N(一般的に、本明細書では「複数のプロセッサ102」又は「プロセッサ102」と呼ばれる)を含む。プロセッサ102は、相互接続(ファブリック)104を介して通信することができる。また、1つ以上のプロセッサが相互接続・ファブリックへの接続を共有し得る可能性がある。各プロセッサは、様々なコンポーネントを含むことができるが、明瞭性のため、その一部のみをプロセッサ102-1を参照して説明する。そして、残りのプロセッサ102-2~102-Nの各々は、プロセッサ102-1を参照して説明するものと同一又は類似のコンポーネントを含むことができる。
【0013】
実施形態では、プロセッサ102-1は、1つ以上のプロセッサコア106-1~106-M(本明細書では「複数のコア106」又はより一般的に「コア106」と呼ばれる)、キャッシュ108様々な実施形態では共有キャッシュ又はプライベートキャッシュであり得る)及び/又はルータ110を含むことができる。プロセッサコア106は、単一の集積回路(IC)チップ上に実装されることができる。これは、同じパッケージ内の複数の集積回路で実装されることもできる。さらに、チップは、1つ以上の共有及び/又はプライベートキャッシュ(キャッシュ108など)、バス又は相互接続(バス又は相互接続112など)、ロジック150、
図4から
図6を参照して説明するようなメモリコントローラ(例えば、フラッシュメモリ、SSD(ソリッドステートドライブ)等のNVM(不揮発性メモリ)を含む)又は他のコンポーネントを含むことができる。他の実施形態では、
図1のコンポーネントは、異なるやり方でアレンジされることができ、例えば、ルータをプロセッサの外部にする一方で、VR、メモリコントローラ及びメインメモリをプロセッサの内部とすることができる。
【0014】
一実施形態では、ルータ110は、プロセッサ102-1及び/又はシステム100の様々なコンポーネント間で通信するために使用されることができる。さらに、プロセッサ102-1は、複数のルータ110を含むことができる。さらに、多数のルータ110は、プロセッサ102-1の内部又は外部の様々なコンポーネント間のデータルーティングを可能にするために通信していることができる。いくつかの実施形態では、多数のルータがある場合、その一部がプロセッサの内部にあることができるし、その一部が外部にあることもできる。
【0015】
キャッシュ108は、コア106などのプロセッサ102-1の1つ以上のコンポーネントによって利用されるデータ(例えば、命令を含む)を記憶することができる。例えば、キャッシュ108は、プロセッサ102のコンポーネントによる高速アクセスのため、(揮発性及び/又は不揮発性)メモリ114(本明細書では、相互変換可能に「メインメモリ」とも呼ばれる)に記憶されているデータを局所的にキャッシュすることができる。
図1に示すように、メモリ114は、相互接続104を介してプロセッサ102と通信していることができる。実施形態では、(共有され得る)キャッシュ108は、様々なレベルを有することができ、例えば、キャッシュ108は、中間レベルキャッシュ及び/又は最終レベルキャッシュ(LLC)(L1、L2キャッシュ等)とすることができる。また、各コア106は、レベル1(L1)キャッシュ(116-1)(本明細書では、一般的に「L1キャッシュ116」と呼ばれる)を含むことができる。プロセッサ102-1の様々なコンポーネントは、バス・ファブリック(例えば、バス112)及び/又はメモリコントローラ・ハブを介して、直接キャッシュ108と通信することができる。
【0016】
システム100はまた、システム100の1つ以上のコンポーネントに電力を供給するための(例えば、プラットフォーム)電源125(例えば、直流(DC)電源又は交流電源)を含むことができる。電源125は、PV(太陽光発電)パネル、風力発電機、熱による発電機、水/水力タービン等を含むことができる。いくつかの実施形態では、電源125は、1つ以上のバッテリパック(例えば、PVパネル、風力発電機、熱による発電機、水/水力タービン、プラグイン電源(例えば、AC電力網に結合されたもの)の1つ以上によりチャージされる)及び/又はプラグイン電源を含む。
【0017】
電源125は、電圧レギュレータ(VR)130を介してシステム100のコンポーネントに結合されることができる。さらに、
図1は、1つの電源125及び単一の電圧レギュレータ130を示しているが、追加の電源及び/又は電圧レギュレータが利用されることができる。例えば、1つ以上のプロセッサ102は、対応する電圧レギュレータ及び/又は電源を有することができる。また、電圧レギュレータ130は、単一電力プレーン(例えば、全てのコア106に電力を供給する)又は複数の電力プレーン(例えば、各電力プレーンが、異なるコア若しくはコアのグループ及び/又はシステム100の他のコンポーネントに電力を供給することができる)を介してプロセッサ102に結合されることができる。追加的に、
図1は、電源125及び電圧レギュレータ130を別個のコンポーネントとして示しているが、電源125及び電圧レギュレータ130は、システム100の他のコンポーネントに組み込まれることができる。例えば、VR130の全て又は一部は、ソース125、SOC(
図6を参照して説明するものなど)及び/又はプロセッサ102に組み込まれることができる。
【0018】
図1に示すように、メモリ114は、メモリコントローラ120を通してシステム100の他のコンポーネントに結合されることができる。システム100はまた、本明細書で説明するHGPPM技術/実施形態を参照して1つ以上の動作を容易にする及び/又は実行するロジック150を含む。例えば、ロジック150は、1つ以上の計算ノード及び/又はシステム100のコンポーネント(例えば、プロセッサ102、メモリコントローラ120、メモリ114(本明細書では、「外部メモリ」と呼ばれることもある)、キャッシュ116、108及び/又は相互接続・ファブリック104、112など))のパフォーマンス及び/又は電力管理に対応する動作を実行することができる。さらに、ロジック150がシステム100内のいくつかの任意の位置に示されているが、ロジック150はシステム100内の他の場所に配置されることができる。
【0019】
さらに、実施形態は、構成可能な目的関数に向けてジョブを全面的に管理しながら、ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたるパフォーマンス及び電力管理ポリシーを調整するスケーラブルな動的技術を提供する。目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながら計算要素(ノード又はコア)間のパフォーマンス差を最小化すること(負荷不均衡を緩和する)、効率を最大化すること等を含むことができるが、これらに限定されない。そのような技術は、本明細書では、包括的に、ホリスティックグローバルなパフォーマンス及び電力管理(HGPPM)と呼び、それは、一実施形態では、階層的機械学習アルゴリズムに少なくとも部分的に基づくものである。
【0020】
従来のHPC電力マネージャには多くの制限がある。第1に、各ノードに均一の電力上限を適用することにより、ノード間のパフォーマンス差を悪化させ、各ノードの周波数が不均一になり、アプリケーションのパフォーマンスが低下する。産業界は、一般に、所与の電力上限でノードのパフォーマンスが20%以上変動すると予想しているため、これらのパフォーマンスの差を悪化させないように緩和することが重要である。第2に、従来の電力マネージャは、ソフトウェア及びハードウェアポリシーを調整する機能に欠けている。残念ながら、ソフトウェア及びハードウェアポリシーは、歴史的には、独立した制御システムを介して調整されてきた。これは結果を低下させる制御システム間の干渉を招く。統一された制御システム下でソフトウェア及びハードウェアポリシーの調整を行うことが重要である。第3に、従来のHPC電力マネージャはスケーラビリティに欠けている。それらは、将来のシステムにおいて多数の(例えば、数万)ノードにわたるポリシーを調整するようにはできない集中設計を採用している。根本的に異なる設計が必要とされている。最後に、従来のHPCシステムはフレキシビリティに欠けている。エクサスケールシステムの最も高いパフォーマンスと効率の課題を満たすには、新しいポリシーノブ(policy knob)が設計される必要があり、システムを最適化するためにより多くの機会が利用される必要があるが、現在のソリューションでは新しいポリシーの理解と制御が可能な電力マネージャフレームワークに欠けている。また、電力マネージャが行うパフォーマンスと電力との間のトレードオフをプログラムする際にフレキシビリティが必要とされる(例えば、場合によっては、効率がパフォーマンスより優先される)が、従来の電力マネージャはパフォーマンスに偏った目的関数をのみをサポートする傾向がある。現在の管理技術では、あまりにももろい(brittle)。
【0021】
HGPPMの実施形態は、ソフトウェア及びハードウェアポリシーを調整する重要な機能を導入しながら、負荷不均衡の問題、スケーラビリティの問題、及びフレキシビリティの問題を同時に解決する画期的なものである。これらは、エクサスケールシステムのパフォーマンスと効率を高めるための重要な要件と考えられる。より詳細には、HGPPMは、従来技術を多くの重要な点で改善する。HGPPMは、計算要素に割り当てられた電力の均衡をとり、それらの負荷を等しくすることによって、ジョブ内の負荷不均衡を検出し緩和する機能を導入している。HGPPMは、製造変動性からアプリケーション又はオペレーティングシステムのジッタ、ハードウェアのエラー、アプリケーション又はオペレーティングシステムなどが計算要素(本明細書では相互変換可能に「ノード」又は「コア」とも呼ばれる)間で均等に作業を分割しないという不均衡の内在的原因にまでわたる様々な負荷不均衡の原因を緩和することができる初めての技術である。さらに、少なくとも1つの実施形態は、これと同時にジョブを電力上限に向けて管理することと相乗的な負荷均衡技術を提供する。
【0022】
HGPPMの実施形態はまた、以下の重要な新機能を導入している。(a)ソフトウェア及びハードウェアの抽象化境界にわたるポリシー最適化の調整、(b)ポリシー最適化のための堅牢な技術による新しいタイプのポリシーへの拡張性、及び/又は(c)構成可能な目的関数に向けた管理のためのサポートを介したフレキシビリティである。ジョブ内の全ての計算要素にわたるポリシーを調整するためのスケーリングを同時に行いながら、これらの機能をサポートする他のパフォーマンス又は電力マネージャはない。そのような実施形態のスケーラビリティ、堅牢性及びフレキシビリティは画期的なものである。
【0023】
HGPPMの実施形態によって可能にされる新しいポリシー及び最適化の例は、(a)各アプリケーションタスクが利用することができるコアの数を制御する新しいポリシーノブを通じてパフォーマンス又は効率の最大化のためにアプリケーションを調整すること、(b)プロセッサが投機的に算術演算、メモリプリフェッチ動作等をどれほど積極的に実行するかを制御する新しいポリシーノブを通じてよりよいパフォーマンス又は効率のためにプロセッサを調整することを含むが、これらに限定されない。新しいポリシー及び最適化の設計は、エクサスケールシステムのパフォーマンス及び効率の課題を満たすのに重要であると考えられ、HGPPM実施形態は、そのような最適化を画策することができる初めてのパフォーマンス及び電力管理フレームワークである。さらに、HGPPMの階層的学習フレームワークは、スケーラビリティをさらに向上させ、アプリケーションのより良好なパフォーマンス又は効率に対する負荷均衡の応答性を高める。
【0024】
実施形態では、HGPPMを使用して、構成可能な目的関数に向けてジョブを管理しながら、ジョブ内の(例えば、全ての)ノードにわたるパフォーマンス及び電力ポリシーを全体的に(globally)調整する。各ジョブにバインドされたHGPPMインスタンスがある。HGPPMアプローチは、階層的部分観測マルコフ決定プロセス(H-POMDP)機械学習に基づく階層設計を採用することによって、ジョブ内の多くのノード(例えば、数万ノード)に対するポリシーを決定するスケーラビリティの課題を解決する。特に、一実施形態は、同一の強化学習エージェントの階層を採用している。本明細書で説明するように、「ノード」、「コア」、「計算要素」等の使用は、相互変換可能であり、例えば、そのようなユニットの各々は、そのユニットを参照して本明細書で説明する1つ以上の動作を実行することができるコンピューティングコンポーネントを示す。
【0025】
強化学習エージェントは、モデルを通じてではなく、環境との相互作用及び経験的な実験によってポリシーを最適化する。それらは、行動を最良の結果に適合させるためにアクション(actions)の結果を継続的に評価する。ここで、結果の質は、目的関数により定義される。実験は、全ての可能なポリシーオプションの空間を効率的にナビゲートする(navigate)体系的な方法で選択される。実施形態によれば、強化学習アルゴリズムは、依然として良好な又は許容可能な結果を達成しながら効率的にナビゲートするために確率的ポリシー勾配(Stochastic Policy Gradient)と呼ばれる技術を採用している。
【0026】
H-POMDPでは、各エージェントは同一であり、全体問題のサブ問題に対して独立して動作するが、全てのエージェントは同じ目的関数を使用し、1つのエージェントの決定がその子供が考慮することができるオプション空間を抑制するように、サブ問題は階層的に定義されている。そのようにして、親は子供の行動を導いて、子供が最良のポリシーをより迅速に特定するのを手助けする、又は子供が特定のポリシーオプションを選択するのを排除する。この階層的なやり方では、強化学習エージェントツリー階層のルートからリーフにまで、パフォーマンス及び電力ポリシーの決定が調整される。
【0027】
図2は、実施形態による、HGPPMシステムのブロック図を示す。
図2は、ツリーの深さが3であるものを示すが、これは例示的な目的のためだけのものであり、より深い又はより浅いツリーの深さが様々な実施形態で使用されることができる。実施形態では、
図2に示すシステムの各計算ノードは、
図1、
図4、
図5及び/又は
図6のコンピューティングシステムで説明する1つ以上のコンポーネントを含むことができる。より詳細には、全体的な調整は、スケーラブルで階層的なk変数のツリー設計によって可能になる。システムポリシーは、階層的に分解される(例えば、キャビネット202-0~202-m(ここで、「キャビネット」とは一般に、複数のノードを示す)間で電力を割り当て、次いで、ノード間で電力を割り当てる)。本明細書でさらに説明するように、ツリーの各ノードで動作するH-POMDP強化学習エージェントを介して、良好な全体的な電力割り当て決定が得られる。電力及び/又はパフォーマンステレメトリの集約(リーフからルートへ向かってツリーを逆流する)及び制御の分散(親から子供へ)が、スケーラブルなオーバレイネットワーク(SCON)204により提供される。SCONは、HPCシステムにおいて物理ネットワークの1つのトップ(top)で実装される論理ネットワークである。物理ネットワークは、アプリケーション(例えば、ネットワークファブリック)によって使用される帯域内ネットワークであってもよいし、イーサネット(例えば、IEEE(米国電気電子学会)802.3標準に従ったもの)などの帯域外ネットワークであってもよい。一実施形態では、物理ネットワークは、
図4及び
図5を参照して説明するネットワーク403と同じであってもよいし、類似していてもよい。
図2において、「DN」は、専用ノード(例えば、アプリケーションによって予約され、使用されていないノード)を示し、各DN及び計算ノード内の小さなボックスは、H-POMDPエージェントを示す。本明細書で説明するように、実施形態では、H-POMDPエージェントは強化学習エージェントとすることができる。本明細書で説明するように、コアごとの(又はコアの一部ごとの)ポリシー(各コア又はコア部分への電力の割り当てなど)が提供されることができる。
図2に示すように、各計算ノードは、1つ以上のコアを含むことができる。また、実施形態では、リーフのH-POMDPエージェントは、計算ノード内の任意のポリシー(コアごとのポリシーの調整を含むことができる)を調整する役割を担う。
【0028】
一実施形態では、確率的ポリシー勾配技術が使用される。HGPPMツリーの各ノードは強化学習POMDPアルゴリズムを実装し、ポリシー勾配法を適用して最適なポリシーを探索する。例えば、ポリシーは、ディスクリートなノブ設定のセットに対する確率分布と考えられる。例えば、ノブは、親エージェントが子供達の間でどのように電力を割り当てることができるかの選択肢のセットを含む。ポリシーは、分布からノブの設定をサンプリングし、何回かテストし、結果として生じる報酬を測定することによって評価される。実施形態における勾配上昇と類似の方法を通じてポリシーが改善される。勾配ベースの方法を使用するため、ポリシーは微分可能にされる、確率的ソフトマックスポリシーを適合させることによって微分可能にされることができる。次いで、報酬の勾配がポリシーに関して推定され、ポリシーを勾配方向にステップして、報酬を最大化するポリシーに移動させることができる。確率的ポリシーは、よりシンプルな勾配方法の「局所的最大の」落とし穴(local maxima pitfall)を避け、探索(exploration)と利用(exploitation)のトレードオフのバランスをとるように適合されることができる。
【0029】
一実施形態では、以下の操作が、確率的なポリシー勾配を実装するために使用されることができる。確率的ポリシー勾配アルゴリズムは、Natural Actor-Criticフレームワークを使用して実装されることができる。ここで、aはアクション(別名ノブ設定)であり、rは報酬であり、αはステップサイズである。
【数1】
【0030】
前述したように、ポリシーを微分可能にし、勾配ベースの学習に適したものにするために、確率的ソフトマックスポリシーが使用されることができる。特に、多項分布の指数関数族パラメータ化が使用されて、各ノブiに実数重みθ
iのセットを与える。ノブiに対する確率分布からサンプリングするときにn個の可能性からノブ設定jを得る確率は、
【数2】
によって与えられる。
【0031】
Natural Actor Criticアルゴリズムに必要とされる勾配は、
【数3】
によって(効率的に)計算されることができる。ここで、
【数4】
は、ノブiが取ることのできる設定についての現在の確率分布であり、tは、アルゴリズムの時間ステップであり、∇は勾配演算子であり、∇
θはθに関する勾配である。
【数5】
は、
【数6】
によって与えられるインデックスにおいてa1を備えたゼロベクトルである。
【0032】
本明細書で説明するように、HGPPMは、ジョブ内のノード間で電力の均衡をとることによってアプリケーションの負荷不均衡を修正するために適用されることができる。負荷均衡の問題が階層的にどのように分解されることができるのかについての一例では、ジョブ全体に対する負荷均衡の問題は、ジョブで使用されるキャビネット間での負荷均衡に、次いで、各キャビネット内のノード間での負荷均衡に、次いで、各ノードにマップされたタスク間での負荷均衡に、次いで、各タスクを実行しているコア間での負荷均衡に分割される。各粒度では、パフォーマンスが動的に比較され、電力は、アプリケーションのパフォーマンスを最大化又は向上させるために、先行する計算要素から遅れている要素に(シーケンスにおいて次のマイルストーンへの到達及び障壁への到達を参照して)導かれる。
【0033】
ある実施形態は、a)子供エージェントのパフォーマンスの不一致はペナルティーを科される、b)集約パフォーマンスが報酬を受けているように、各エージェントに、子供達の間でのその入力電力バジェットの最良配分を学習させ、目的関数を定義することによって、ジョブの負荷分散のプロセスを強化学習の抽象化にマッピングする。ここで、集約パフォーマンスは、子供エージェントによって取得された最小パフォーマンスとみなされる。各子供エージェントのパフォーマンスは、いくつかのサンプル数の平均値又は中央値(又は他の関数)である。各エージェントは、(その親からの)その入力バジェットを子供達の間でどのように分割して、子供達から最高の成果を得るかを学習する。子供達は、今度は、彼らのバジェットを取り、その彼らの子供達などにバジェット(budget)を分割する。ツリーの最下位レベルでの決定では、ハードウェアが異なるタイプのプロセッサと外部メモリリソースとでどのように電力を分割すべきかを指定することができる。パフォーマンスは、多くの指標(metrics)に基づいて定義されることができる。例えば、H-POMDPツリーの最下位レベルでは、指標は、コア周波数、次のアプリケーションマイルストーン(プログラマが作成した注釈を介してHGPPMに提供される、若しくはパフォーマンスカウンタの分析によって自動的に推察される又は他の手段)又は他の手段)に向けた各コアの進行の測定、マイルストーン間で今までに完了したアプリケーションのフェーズのランタイム、リタイアした命令の割合(rate)、メインメモリアクセスの割合等とすることができる。
【0034】
一般に、H-POMDPにおける各強化学習エージェントによって評価される目的関数は、各子供の目的関数値の集約である。子供の目的関数値の最小、平均、変動等を含め、多くの集約が可能である。一実施形態では、目的関数は、パフォーマンスを最大化することである場合、ノードのパフォーマンスは、ノード内のプロセッサの任意のアクティブコアの最小パフォーマンスとして定義されることができ、キャビネットのパフォーマンスは、キャビネット内の任意のアクティブノードの最小パフォーマンスとして定義され、ジョブのパフォーマンスは、ジョブ内のアクティブキャビネットの最小パフォーマンスとして定義されることができる。集約計算は、HGPPM技術によって、及び/又はHPCシステム内のSCONの支援を通じて実行されることができる。
【0035】
本明細書で説明するように、HGPPMの実施形態は、(電力バジェットを超える)異なる種類のポリシーを調整し、一度に複数のタイプを調整することができる。このモードでは、HGPPM技術はポリシーを結合ポリシー(joint policy)に構成する。強化学習エージェントは、結合ポリシーオプションで実験し、目的関数に従って結合ポリシーを最適化する。一例では、各ノードに対して1つの強化学習エージェントで終了する階層を考える。エージェントが、ノードにおける様々なタイプのハードウェアリソース間でノードの電力バジェットをどうのように分割するかということと、ノード上の各ソフトウェアプロセスが利用するスレッド/コアの数はいくつかということの、2つのポリシーを結合して学習することが任せられている場合を考える。エージェントは、電力バジェットの選択肢と並列性の選択肢の各組み合わせに対して1つのオプションを有する結合ポリシーを作成する。学習エージェントは、新しい電力バジェットの選択肢と新しい並列性の選択肢を一緒にテストして、目的関数での組み合わせ効果を測定し、経時的に最良の結合ポリシーに向けてナビゲートする。
【0036】
図3は、
図2の計算ノードの1つのうち、リーフH-POMDP RLエージェントに拡大表示している。RLエージェントへの入力(
図3では、観測量(Observables)とラベル付けされている)及びRLによって出力される新しいポリシー設定を含め、RLエージェント、アプリケーション、及びノード内のプロセッサ間の相互作用が示されている。この図は、上記で説明したポリシー例の管理を示す。アプリケーションプロセスごとのスレッド数と、ハードウェアリソース間でのノード電力バジェットの分割である。一実施形態では、H-POMDP RLエージェントは、アプリケーションからパフォーマンス及び位相信号を取り込む。他の実施形態では、パフォーマンス及び位相信号は、(前述のように)アプリケーションのプログラマ注釈なしでHGPPMによって自動的に推察されてもよい。プロセッサから、H-POMDP RLエージェントはエネルギー信号を取り込む。RLエージェントの出力は、新しいポリシー設定(例えば、アプリケーションプロセスごとのスレッド数についての新しい設定、又はノードのハードウェアコンポーネント間でのノード電力バジェットの新たな再分割)である。
【0037】
観測量は、様々な方法で合成されて、所望の目的関数を定義する。目的関数は評価され、(前述のように)報酬として学習(Learning)アルゴリズムに供給される。RLエージェントは、この報酬信号を使用して、異なるポリシー設定の影響を測定する。RLエージェントはポリシーを制定することによってポリシー設定で実験し(
図3では、出力ポリシー設定はアクション(Actions)としてラベル付けされている)、観測量及び報酬信号への影響を測定して、経時的にポリシー空間を探索する。前述のように、RLエージェントは、最良のポリシー設定を識別するまで、効率的なやり方で探索して、経時的にポリシー空間をナビゲートする。
【0038】
図3の図は、複数のポリシーが合成されたHGPPMの実施形態の例である。より多くのポリシーが合成されるにつれて、探索空間のサイズが指数関数的に増加することがある。また、探索空間を複雑にするポリシー間の依存関係もある。上述した結合ポリシー(ノードハードウェアリソース間でのノード電力バジェットの分割とソフトウェアプロセスごとのスレッド/コア数)は、複雑な相互依存関係を持つ結合ポリシーの一例である。リソース間での最適な電力分割は、通信、メモリ、及びアプリケーションプロセス内での計算のバランスに依存し、そのバランスはアプリケーションプロセスによって採用されているスレッド/コアの数に依存し、アプリケーションプロセスが使用するスレッド/コアの最適な数は、利用可能な通信、メモリ、及び計算帯域幅に依存する(ただし、帯域幅の量は、各リソースがどの位の電力を割り当てられたかよって異なる)。
【0039】
HGPPMの一実施形態は、確率的ポリシー勾配強化学習技術を採用することによって、複雑なトレードオフを伴う大きな探索空間を処理するようにスケールする。確率的ポリシー勾配技術は、ポリシーに関する目的関数指標の勾配を推定し、次に勾配方向にステップする。次の回では、試行される結合ポリシーオプションは、(勾配方向において)前のものから離れたステップのものである。確率的ポリシー勾配法は、空間全体を徹底的に探索するのではなく、結果の改善が期待される方向のみ試行して、勾配方向にステップを取得し、指数関数的な探索空間をナビゲートする。
【0040】
勾配ベースの探索技術の1つの欠点は、探索空間が凸形状であると仮定する傾向があることである。もしそうでなければ、この方法は全体的に最適な決定に着地することが保証されない。このため、通常のポリシー勾配アルゴリズムではなく、確率的ポリシー勾配アルゴリズムが採用され得る。勾配方向に基づいて次のポリシーオプションを選択する代わりに、確率が全てのオプション及び分布からのサンプルに割り当てられる。非ゼロの確率であれば、勾配によって示されていない方向にステップが取られ、最適となる。そうすることで、この実施形態は極大値を免れることができる。確率的ポリシー勾配アルゴリズムでは、目的関数を最大化するポリシーオプションを学習する代わりに、それを最大化するポリシー分布が学習される。勾配方向のステップは、確率分布を更新し、勾配と一致する方向により多くの確率を割り当てる傾向があるが、他のオプションを選択する可能性が依然としてある。
【0041】
一実施形態で適合されるアプローチは、強化学習技術及びH-POMDPを用いて3つの古典的な課題にも対処する。第1の課題は、強化学習が、ポリシー空間の新しい領域の探索と最もよく知られている最適なポリシーを利用とのバランスを取ることと関係している。探索を重視しすぎる方法は、大部分の時間に次善のポリシーを使用する。利用を重視する方法は、次善のポリシーで妥協してしまい、潜在的な利益をテーブルに残す可能性がある。いくつかの実施形態で使用される確率的ポリシー勾配技術は、全てのポリシーオプションがポリシー分布において非ゼロ確率を有するため、探索空間の新しい領域が試行されることを保証する。
【0042】
さらに、勾配ステップを取って有望な方向に重みを加えるために分布を更新することは、「最もよく知られている」オプション及び探索を台無しにする強い偏りを徐々に作り出してしまう危険性があるように見えるが、一実施形態は、分布をゆっくりと均一な分布にすることによって過大な偏りにカウンターバランスととる正規化(regularizer)コンポーネントを組み込む。これらの相反する力の強さは、ランタイム時に体系的に調整される。一実施形態は、目的関数指標とポリシーとの間の関係がどれほど安定的で予測できるかを測定する。関係がより安定的で予測できるほど、勾配ステップの力が強くなる(注:各ステップで追加されるバイアスの量は一定であるが、勾配ステップが頻繁に取られることで、力を効果的に強くすることになり得る)。関係が不安定である、又は予測できない場合、正規化が勝つ。
【0043】
第2の課題は、強化学習制御システムだけでなく、全ての制御システムに影響を及ぼすものである。それはノイズの課題である。実施形態は、上記の対向する力機構を通じて部分的に、そして、デジタル信号処理技術を通じて部分的に、ノイズの課題を解決する。特に、ノイズは、目的関数指標とポリシーとの間の関係が不十分に予測されてしまう原因となる。実施形態は、ノイズが直近で低レベルであり、その関係が予測可能であるとき(言い換えると、勾配結果がより良好なポリシーに向けて導くように信頼し得るとき)にのみ勾配ステップを取る。高ノイズの期間では、正規化が勝ることになる。一実施形態は、各勾配ステップ及び各正規化ステップのバイアス強度を設定する自由パラメータを有する。これらのパラメータは、アプリケーションが目的関数指標とポリシーとの間に安定した予測可能な関係を備えた期間を経験している限り、勾配ステップのバイアスが全体的に勝り、ポリシー分布が時間の経過とともに最適に近づくように設定されている。多くの方法が、バイアス及び正規化ステップサイズを設定するために使用されることができる。いくつかは手動であるが、標準的な技術に従うことができ、いくつかは自動のオンライン方法である。
【0044】
ノイズの課題を解決するためにいくつかの実施形態が使用する他のメカニズムは、デジタル信号処理である。多くの信号処理方法が使用されることができる。一例では、移動平均又はメジアンフィルタが目的関数信号に適用される。この種のフィルタは、以前の値の短い履歴を使用して信号を平滑化する傾向がある。目的関数の入力にフィルタを適用することが可能である。これは、目的関数が、分母のノイズが除算演算によって増幅されるため、比較的小さな振幅の信号で除算する場合、利点を有することができる。
【0045】
第3の課題は、H-POMDP強化学習の階層全体に分散された調整であるにもかかわらず、制御の安定性を保証することである。次の例を考える。その子供達の間でそのバジェットの最適な分割を子供が探索する機会を得る前に、親が新たな電力バジェットに変更する場合を想定する。それが起こる場合、親は電力バジェットがどの位うまく働くのかについての推察について子供たちからの不完全なデータを基礎とする可能性がある。実際には、両親は子供達から完全なデータを得ることは決してない可能性があり、データは確率的なものではある。それでも、子供達がバジェットの良好な分割を見つける時間が与えられていない限り、H-POMDPは収束することは決してない可能性がある、又は良好な全体的なポリシーに収束するには時間がかかりすぎる可能性がある。
【0046】
いくつかの実施形態による、この問題に対する多くの解決策がある。1つの例は、強化習得エージェントが予め定められた時間間隔において、移動が階層を上がるにつれて(リーフからルートへ)粗となる(coarsening)継続期間で動作するようにアレンジすることを含む。もう1つのアプローチは、エージェントの階層全体で調整タイムスケールを自己設定できるようにすることである。階層のレベルは可能な限り速く動作するが、速度は正確性を保証するようにレート制限される。つまり、親のブロックは子供からの入力を待ち、子供は、子供が良好なポリシー(例えば、電力の良好な割り当て)を達成したときに、目的関数を評価するために必要なパフォーマンス又は他の情報のみを親まで送信する。その結果、子供は準備が整う前に、親は新しいポリシー(例えば、子供のための新たな電力バジェット)を設定することができない。この自己設定戦略には、全体的なポリシー最適化の応答性を最大化するという利点がある。いくつかの実施形態によれば、良好なポリシーにいつ到達したかを決定する多くの方法がある。1つの標準的な方法が収束テストである。つまり、最後のk回の反復でのポリシーの変更がイプシロン未満である場合は、良好なポリシーに達したことになる。k及びイプシロンは、オフラインの手動手順に従って調整され得る自由パラメータである。
【0047】
H-POMDP階層の最後のレベルでは、強化学習エージェントは子供を有していない。この階層レベルでは、エージェントはいつ目的関数指標をサンプリングし、新しいポリシーオプションを試行するかを選択することができる。目的関数は、例えば、フェーズ期間(phase duration)よりも粗い一定の時間間隔でサンプリングされる、又はフェーズ期間よりも細かい一定の時間間隔でサンプリングされる、フェーズ変化事象でサンプリングされることができる。新しいポリシーは、1つ以上のサンプルが収集された後でテストされることができるが、各テストに対して取得するサンプル数は可変でも、固定でもよい。
【0048】
さらに、いくつかの実施形態は、フェーズベースの最適化と相乗的とすることができる。フェーズベースの最適化では、各アプリケーションフェーズに対する強化学習エージェント用に1つの状態のコピーがインスタンス化される。強化学習エージェントの類似又は同一のH-POMDP階層が使用されることができるが、それらは、アプリケーションがどのフェーズにあるかに応じて異なる状態で動作する。任意の所与の時間で、実施形態は現在のアプリケーションフェーズを決定し、正確な状態をロードする。強化学習エージェントは、全てのフェーズで同じ目的関数に対して最適化することを任されているが、異なるフェーズは独自のポリシーを有する可能性がある。さらに、現在のフェーズ及び各フェーズに対するポリシーの定義は、前述のように多くの方法で決定されることができる。いくつかの例は、アプリケーション(又は他のソフトウェア層)の注釈を介してプログラマから情報を得ることを含む。現在のフェーズを決定する場合、異なる計算リソース内のアクティビティの動的分析を通じて(ハードウェアのイベントカウンタの使用を介して)推察されることもできる。
【0049】
図4は、実施形態によるコンピューティングシステム400のブロック図を示す。コンピューティングシステム400は、相互接続ネットワーク(又はバス)404を介して通信する1つ以上の中央処理装置(CPU)402又はプロセッサを含むことができる。プロセッサ402は、汎用プロセッサ、ネットワークプロセッサ(コンピュータネットワーク403を介して通信されるデータを処理するもの)、アプリケーションプロセッサ(携帯電話、スマートフォンなどで使用されるもの等)、又は他のタイプのプロセッサ(縮小命令セットコンピュータ(RISC)プロセッサ又は複合命令セットコンピュータ(CISC)を含む)。
【0050】
有線(例えば、イーサネット、ギガビット、ファイバ等)又は無線ネットワーク(セルラー、3G(第3世代携帯電話技術又は第3世代無線フォーマット(UWCC))、4G(第4世代(無線/移動通信))、低電力埋め込み(例えば、LPE)等)を含む様々なタイプのコンピュータネットワーク403が利用されることができる。さらに、プロセッサ402は、単一又は複数のコア設計を有することができる。マルチコア設計を備えるプロセッサ402は、同一の集積回路(IC)ダイ上に異なるタイプのプロセッサコアを集積することができる。また、マルチコア設計を備えるプロセッサ402は、対称又は非対称のマルチプロセッサとして実装されることができる。
【0051】
実施形態では、1つ以上のプロセッサ402は、
図1のプロセッサ102と同じであってもよく、類似していてもよい。例えば、1つ以上のプロセッサ402は、1つ以上のコア106及び/又はキャッシュ108を含むことができる。また、
図1から3を参照して説明された動作は、システム400の1つ以上のコンポーネントによって実行されることができる。
【0052】
チップセット406はまた、相互接続ネットワーク404と通信することができる。チップセット406は、グラフィックス及びメモリ制御ハブ(GMCH)408を含むことができる。GMCH408は、メモリ114と通信するメモリコントローラ410(これは、
図1のメモリコントローラ120と同じであってもよく、類似しいてもよい)。システム400はまた、様々な場所(
図4に示されているもの等があるが、システム400内の他の場所(図示せず)に存在することができる)にロジック150を含むことができる。メモリ114は、CPU402、又はコンピューティングシステム400に含まれる任意の他のデバイスによって実行される一連の命令を含むデータを記憶することができる。一実施形態では、メモリ114は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)等の1つ以上の揮発性/不揮発性の記憶(若しくはメモリ)デバイス又はハードディスク、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、フラッシュメモリ、スピン注入メモリ(STTRAM)、抵抗ランダムアクセスメモリ、PCM(相変化メモリ)などの3Dクロスポイントメモリ、NAND/NORメモリを備えるソリッドステートドライブ(SSD)等の他のタイプの記憶デバイスを含むことができる。追加のデバイスは、複数のCPU及び/又は複数のシステムメモリなどの相互接続ネットワーク404を介して通信することができる。
【0053】
GMCH408はまた、グラフィックスアクセラレータ416と通信するグラフィックスインタフェース414を含むことができる。一実施形態では、グラフィックスインタフェース414は、アクセラレーテッドグラフィックスポート(AGP)又はペリフェラルコンポーネントインターコネクト(PCI)(若しくはPCIエクスプレス(PCIe)インタフェース)を介してグラフィックスアクセラレータ416と通信することができる。実施形態では、(フラットパネルディスプレイ、タッチスクリーン等の)表示装置417は、例えば、ビデオメモリ、システムメモリ等の記憶デバイスに記憶されている画像のデジタル表現を、ディスプレイによって解釈され、表示される表示信号に変換する信号変換器を介してグラフィックスインタフェース414と通信することができる。表示装置によって生成された表示信号は、表示装置417によって解釈され、続いて表示される前に、様々な制御装置を通過することができる。
【0054】
ハブインタフェース418は、GMCH408と入出力制御ハブ(ICH)420とが通信するのを可能にすることができる。ICH420は、コンピューティングシステム400と通信するI/Oデバイスへのインタフェースを提供することができる。ICH420は、ペリフェラルコンポーネントインターコネクト(PCI)ブリッジ、ユニバーサルシリアルバス(USB)コントローラ、他のタイプの周辺ブリッジ又はコントローラ等の周辺ブリッジ(又はコントローラ)424を介してバス422と通信することができる。ブリッジ424は、CPU402と周辺装置との間にデータ経路を提供することができる。他のタイプのトポロジが利用されてもよい。また、複数のバスが、例えば複数のブリッジ又はコントローラを介してICH420と通信することができる。さらに、ICH420と通信する他の周辺機器は、様々な実施形態において、インテグレーテッドドライブエレクトロニクス(IDE)若しくはスモールコンピュータシステムインタフェース(SCSI)ハードドライブ、USBポート、キーボード、マウス、パラレルシリアルポート、フロッピー(登録商標)ディスクドライブ、デジタル出力サポート(例えば、デジタルビデオインタフェース(DVI))、又は他の装置を含むことができる。
【0055】
バス422は、オーディオデバイス426、1つ以上のディスクドライブ428及びネットワークインタフェースデバイス430(例えば、有線又は無線インタフェースを介してコンピュータネットワーク403と通信する)と通信することができる。図示しているように、ネットワークインタフェースデバイス430はアンテナ431に結合されることができ、無線(例えば、米国電気電子学会(IEEE)802.111インタフェース(IEEE802.11a/b/g/nなどを含む)、セルラーインタフェース、3G、4G、LPE等を介して)でネットワーク403と通信する。他のデバイスは、バス422を介して通信することができる。また、いくつかの実施形態では、様々なコンポーネント(ネットワークインタフェースデバイス430など)がGMCH408と通信することができる。さらに、プロセッサ402及びGMCH408は、単一のチップを形成するように組み合わせられることができる。さらに、他の実施形態ではグラフィックスアクセラレータ416は、GMCH408内に含まれてもよい。
【0056】
さらに、コンピューティングシステム400は、揮発性及び/又は不揮発性メモリ(又はストレージ)を含むことができる。例えば、不揮発性メモリは、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的EPROM(EEPROM)、ディスクドライブ(例えば、428)、フロッピー(登録商標)ディスク、コンパクトディスクROM(CD-ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、光磁気ディスク又は電子データ(例えば、命令を含む)を記憶することができる他のタイプの不揮発性の機械読み取り可能媒体を含む。
【0057】
図5は、実施形態による、ポイントツーポイント(PtP)構成でアレンジされたコンピューティングシステム500を示す。特に、
図5は、プロセッサ、メモリ、及び入出力装置が多数のポイントツーポイントインタフェースによって相互接続されているシステムを示す。
図1~
図4を参照して説明した動作は、システム500の1つ以上のコンポーネントによって実行されることができる。
【0058】
図5に示すように、システム500はいくつかのプロセッサを含むことができ、そのうちの2つのプロセッサ502及び504のみが明確性のために示されている。プロセッサ502及び504はそれぞれ、メモリ510及び512との通信を可能にするローカルメモリコントローラハブ(MCH)506及び508を含むことができる。メモリ510及び/又は512は、
図1及び/又は
図4のメモリ114を参照して説明したような様々データを記憶することができる。また、いくつかの実施形態では、MCH506及び508は、
図1~
図4のメモリコントローラ120及び/又はロジック150を含むことができる。
【0059】
実施形態では、プロセッサ502及び504は、
図2を参照して説明したプロセッサ402のうちの1つとすることができる。プロセッサ502及び504は、PtPインタフェース回路516及び518をそれぞれ使用して、ポイントツーポイント(PtP)インタフェース514を介してデータを交換することができる。また、プロセッサ502及び504は、ポイントツーポイントインタフェース回路526,528,530及び532を使用して、個々のPtPインタフェース522及び524を介してチップセット520とそれぞれデータを交換することができる。チップセット520は、高パフォーマンスグラフィックスインタフェース536を介して、例えば、PtPインタフェース 回路537を使用して、高パフォーマンスグラフィックス回路534とデータを交換することができる。
図4で説明したように、いくつかの実施形態では、グラフィックスインタフェース536は表示装置(例えば、ディスプレイ417)に結合されることができる。
【0060】
図5に示すように、
図1のコア106及び/又はキャッシュ108の1つ以上は、プロセッサ502及び504内に位置することができる。しかし、他の実施形態は、
図1のシステム500内の他の回路、ロジックユニット又は装置に存在してもよい。さらに、他の実施形態は、
図5に示すいくつかの回路、ロジックユニット又はデバイス全体に分散することができる。
【0061】
チップセット520は、PtPインタフェース回路541を使用してバス540と通信することができる。バス540は、それと通信する、バスブリッジ542、I/Oデバイス543等の1つ又は複数のデバイスを有することができる。バス544を介して、ブリッジ542は、キーボード/マウス545、通信デバイス546(例えば、アンテナ431を介したものを含めて、ネットワークインタフェースデバイス430を参照して説明したように、モデム、ネットワークインタフェースデバイス、コンピュータネットワーク403と通信することができる他の通信装置等)オーディオI/Oデバイス及び/又はデータ記憶装置548と通信することができる。データ記憶装置548は、プロセッサ502及び/又は504によって実行され得るコード549を記憶することができる。
【0062】
いくつかの実施形態では、本明細書で説明したコンポーネントの1つ以上は、システムオンチップ(SOC)デバイス上に具体化されることができる。
図6は、実施形態によるSOCパッケージのブロック図を示す。
図6に示すように、SOC602は、1つ以上の中央処理装置(CPU)コア620と、1つ以上のグラフィックスプロセッサユニット(GPU)コア630と、入力/出力(I/O)インタフェース640と、メモリコントローラ120とを含む。他の図を参照して本明細書で説明したSCON204等、SOCパッケージ602の様々なコンポーネントが相互接続又はバス/ネットワークに結合されることができる。また、SOCパッケージ602は、他の図を参照して本明細書で説明したような、より多くの又はより少ないコンポーネントを含むことができる。さらに、SOCパッケージ602の各コンポーネントは、例えば、本明細書の他の図を参照して説明したように、1つ以上の他のコンポーネントを含むことができる。一実施形態では、SOCパッケージ602(及びそのコンポーネント)は、例えば、単一の半導体デバイス上にパッケージ化された1つ以上の集積回路(IC)ダイ上に提供される。
【0063】
図6に示すように、SOCパッケージ602は、メモリコントローラ120などのインタフェースを介して(SOCパッケージ602の外部にある)メインメモリ114に結合される。実施形態では、メモリ114(又はその一部)は、SOCパッケージ602上に統合されることができる。
【0064】
I/Oインタフェース640は、例えば、他の図を参照して本明細書で説明したような相互接続及び/又はバスを介して、1つ以上のI/Oデバイス670に結合されることができる。I/Oデバイス670は、キーボード、マウス、タッチパッド、ディスプレイ、画像/ビデオキャプチャデバイス(カメラ、ビデオカメラ/ビデオレコーダなど)、タッチスクリーン、スピーカ等の1つ以上を含むことができる。さらに、実施形態では、SOCパッケージ602は、ロジック150を含む/統合することができる。あるいは、ロジック150は、SOCパッケージ602の外部に(すなわち、ディスクリートなロジックとして)提供されることができる。
【0065】
以下の例は、さらなる実施形態に関連する。
例1は、複数のノードの各ノードに結合され、複数のノードに送信するための電力及びパフォーマンス管理のためのポリシーの決定を引き起こすロジックを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、1つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、装置を含む。
例2は、前記ロジックは、前記複数のノードの各々に対して別個のポリシーを決定するものである、例1に記載の装置を含む。
例3は、前記ロジックは、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するものである、例1に記載の装置を含む。
例4は、前記1つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小限に抑えること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの1つ以上を含むものである、例1に記載の装置を含む。
例5は、前記ロジックは、階層的機械学習操作に従って動作する、例1に記載の装置を含む。
例6は、前記ロジックは、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの1つ以上を解くための1つ以上の動作を実行するものである、例1に記載の装置を含む。
例7は、前記ポリシーは、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整するものである、例1に記載の装置を含む。
例8は、前記ポリシーは、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる電力及びパフォーマンス管理を調整するものである、例1に記載の装置を含む。
例9は、前記ロジックは、確率的ポリシー勾配法に従って前記ポリシーを決定するものである、例1に記載の装置を含む。
例10は、前記複数のノードはキャビネットを形成し、前記ポリシーは1つ以上のキャビネット間で階層的に分解され(decomposed)、次いで、前記複数のノード間で分解される、例1に記載の装置を含む。
例11は、前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含む、例1に記載の装置を含む。
例12は、前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、例1に記載の装置を含む。
例13は、システムオンチップ(SOC)集積回路が前記ロジック及び前記メモリを含む、例1に記載の装置を含む。
例14は、前記複数のノードの各ノードは、1つ以上のプロセッサコアを有するプロセッサと、1つ以上のプロセッサコアを有する画像処理ユニットと、ネットワークファブリックへの接続、ログインコンポーネント、サービスコンポーネント、メモリ、又は入出力デバイスの1つ以上を含むものである、例1に記載の装置を含む。
【0066】
例15は、複数のノードの各ノードに対して電力及びパフォーマンス管理のためのポリシーの決定を引き起こすステップと、前記ポリシーを前記複数のノードに送信するステップとを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、1つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、方法を含む。
例16は、前記複数のノードの各々に対して別個のポリシーを決定するステップをさらに含む、例15に記載の方法を含む。
例17は、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するステップをさらに含む、例15に記載の方法を含む。
例18は、前記1つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小限に抑えること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの1つ以上を含む、例15に記載の方法を含む。
例19は、前記決定は階層的機械学習操作に従って動作する、例15に記載の方法を含む。
例20は、前記決定は、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの1つ以上を解くように実行される、例15に記載の方法を含む。
例21は、前記ポリシーが、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整することをさらに含む、例15に記載の方法を含む。
例22は、前記ポリシーが、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる電力及びパフォーマンス管理を調整することをさらに含む、例15に記載の方法を含む。
例23は、確率的ポリシー勾配法に従って前記ポリシーを決定するステップをさらに含む、例15に記載の方法を含む。
例24は、前記複数のノードはキャビネットを形成し、前記ポリシーは1つ以上のキャビネット間で階層的に分解され、次いで、前記複数のノード間で分解される、例15に記載の方法を含む。
例25は、スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含む、例15に記載の方法を含む。
例26は、スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、例15に記載の方法を含む。
【0067】
例27は、プロセッサ上で実行されて、該プロセッサが1つ以上の動作を実行するように構成する該1つ以上の命令を含むコンピュータ読み取り可能媒体であって、該1つ以上の命令は、複数のノードの各ノードに対して電力及びパフォーマンス管理のためのポリシーの決定を引き起こすステップと、前記ポリシーを前記複数のノードに送信するステップとを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、1つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む。
例28は、前記プロセッサ上で実行されて、前記プロセッサが前記1つ以上の動作を実行するように構成する前記1つ以上の命令を含み、前記1つ以上の命令は、前記複数のノードの各々に対して別個のポリシーを決定するステップをさらに含む、例27に記載のコンピュータ読み取り可能媒体を含む。
例29は、前記プロセッサ上で実行されて、前記プロセッサが前記1つ以上の動作を実行するように構成する前記1つ以上の命令を含み、前記1つ以上の命令は、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するステップをさらに含む、例27に記載の方法を含む。
【0068】
例30は、前述の例のいずれか一つに記載の方法を実行する手段を含む装置を含む。
【0069】
例31は、実行されると、前述の例のいずれか一つに記載の方法を実装する又は装置を実現する機械読み取り可能命令を含む機械読み取り可能媒体を含む。
【0070】
様々な実施形態において、例えば、
図1から6を参照して、本明細書で説明されている動作は、ハードウェア(例えば、回路)、ソフトウェア、ファームウェア、マイクロコード又はそれらの組み合わせで実装され、本明細書で説明されているプロセスを実行するようにコンピュータをプログラムするために使用される命令(又は、ソフトウェア手順)を記憶した有形の(例えば、非一時的な)機械読み取り可能又はコンピュータ読み取り可能媒体を含むコンピュータプログラム製品として提供されることができる。また、用語「ロジック」は、例として、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの組み合わせを含むことができる。機械読み取り可能媒体は、
図1~
図3に関して説明したような記憶装置を含むことができる。
【0071】
さらに、そのような有形のコンピュータ読み取り可能媒体は、コンピュータプログラム製品としてダウンロードされてもよく、ここで、プログラムは、通信リンク(例えば、バス、モデム又はネットワーク接続)を介して、データ信号(例えば、搬送波、他の伝播媒体等における)によりリモートコンピュータ(例えば、サーバ)から要求コンピュータ(例えば、クライアント)に転送される。
【0072】
明細書中の「一実施形態」又は「実施形態」とは、実施形態に関連して説明されている特定の特徴、構造、又は特性が少なくとも1つの実装に含められることができることを意味する。本明細書の様々な場所での語句「一実施形態では」が出現しているが、全て同じ実施形態を示すこともできるし、示さないこともできる。
【0073】
また、明細書及び特許請求の範囲において、用語「結合された」及び「接続された」は、それらの派生語と共に使用されることができる。いくつかの実施形態では、「接続された」は、2つ以上の要素が互いに直接的に物理的又は電気的に接触していることを示すために使用されることができる。「結合された」とは、2つ以上の要素が直接的に物理的又は電気的に接触していることを意味することがある。しかし、「結合された」とは、2つ以上の要素が互いに直接的に接触していないが、依然として互いに協働し又は相互作用していることを意味することもできる。
【0074】
したがって、実施形態は、構造的特徴及び/又は方法論的行為に特有の言語で説明されているが、特許請求の範囲に記載されている主題は、説明されている特定の特徴又は動作に限定されないことを理解されたい。むしろ、特定の特徴及び動作は、特許の請求の範囲に記載されている主題を実装するための実例形式として開示されている。