(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-09
(54)【発明の名称】適応電力管理
(51)【国際特許分類】
G06F 1/3228 20190101AFI20241226BHJP
【FI】
G06F1/3228
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535352
(86)(22)【出願日】2022-11-28
(85)【翻訳文提出日】2024-06-26
(86)【国際出願番号】 IB2022061500
(87)【国際公開番号】W WO2023119016
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ムハンマド ハメド ムサザデー
(72)【発明者】
【氏名】チュヒョン リー
(72)【発明者】
【氏名】オマー イルシャド
(72)【発明者】
【氏名】シエタオ ヤン
(72)【発明者】
【氏名】アレクサンダー サビーノ デュエニャス
(72)【発明者】
【氏名】ムハンマド サード ムサニ
【テーマコード(参考)】
5B011
【Fターム(参考)】
5B011EA02
5B011LL02
5B011LL13
(57)【要約】
適応デバイス電力管理のための技術が説明される。ハードウェアコンピューティングユニットは、ハードウェアコンピューティングユニット上で実行されるオペレーティングシステム(OS)によるアプリケーションの起動を検出する。ハードウェアコンピューティングユニットは、起動されたアプリケーションを識別し、アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定する。ハードウェアプロファイルは、起動されたアプリケーションを実行する場合にハードウェアコンピューティングユニットによる電力消費について最適な性能をもたらす1つ以上のハードウェアパラメータを含む。ハードウェアプロファイルが存在すると判定したことに基づいて、起動されたアプリケーションについてOSの電力ポリシーが更新され、ドライバは、新しい電力ポリシーに基づいてハードウェアコンピューティングユニットの電力状態を更新する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
コンピュータによる実行方法であって、
ハードウェアコンピューティングユニット上で少なくとも部分的に実行されるアプリケーションの起動を検出することと、
前記アプリケーションを識別することに基づいて、前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することと、
前記ハードウェアプロファイルが存在すると判定したことに基づいて、前記アプリケーションに関連付けられた前記ハードウェアプロファイルに少なくとも部分的に基づいて生成された新しい電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
方法。
【請求項2】
前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することは、前記ハードウェアプロファイルが前記ハードウェアコンピューティングユニットに関連付けられているか否かを判定することを含む、
請求項1の方法。
【請求項3】
アプリケーションのグループが前記ハードウェアプロファイルに関連付けられており、
前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することは、前記アプリケーションが前記アプリケーションのグループの一部であるか否かを判定することを含む、
請求項1の方法。
【請求項4】
前記ハードウェアプロファイルは、アプリケーションハードウェアプロファイルであり、前記アプリケーションハードウェアプロファイルを含む複数のハードウェアプロファイルの各々は、対応するアプリケーション及び対応するハードウェアコンピューティングユニットに関連付けられており、
各ハードウェアプロファイルは、1つ以上のハードウェアパラメータ値を含み、前記ハードウェアパラメータ値は、対応するハードウェアコンピューティングユニットに適用された場合に、前記対応するハードウェアコンピューティングユニット上の対応するアプリケーションに対して最適なワット当たりの性能実行を提供する、
請求項1の方法。
【請求項5】
前記アプリケーションの起動前に、前記ハードウェアコンピューティングインターフェースの元のハードウェアプロファイルを適用することを含み、
前記元のハードウェアプロファイルは、前記アプリケーションに非固有の1つ以上のハードウェアパラメータ値を含む、
請求項1の方法。
【請求項6】
前記ハードウェアプロファイルは、ハードウェアパラメータ(電力状態に遷移する時間を記述する遷移レイテンシ、遷移する価値がある遷移された電力状態に留まる時間を記述するレジデンシ、最低利用可能電力消費を表す公称電力)のうち何れか1つ以上の1つ以上の値を含む、
請求項1の方法。
【請求項7】
前記アプリケーションの実行ファイル名、前記アプリケーションのプロセス名、又は、前記アプリケーションのプロセス識別子のうち何れか1つ以上を含む、前記アプリケーションに関する1つ以上の識別情報を取り出すことによって、前記アプリケーションを識別することを含む、
請求項1の方法。
【請求項8】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションを識別することに基づいて、前記第2のアプリケーションに関連付けられた第2のハードウェアプロファイルが存在するか否かを判定することと、
前記第2のハードウェアプロファイルが存在しないと判定したことに基づいて、現在のハードウェアパラメータ値を用いて前記第2のアプリケーションの実行を継続することと、を含む、
請求項1の方法。
【請求項9】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションを識別することに基づいて、前記アプリケーションに関連付けられた第2のハードウェアプロファイルが存在するか否かを判定することであって、前記第2のハードウェアプロファイルは、前記第1のプロファイルの1つ以上の第1のハードウェアパラメータ値とは異なる1つ以上の第2のハードウェアパラメータ値を含む、ことと、
前記ハードウェアプロファイルが存在すると判定したことに基づいて、前記新しい電力ポリシーとは異なり、前記第2のアプリケーションに関連付けられた前記第2のハードウェアプロファイルに少なくとも部分的に基づいて生成される第2の電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
請求項1の方法。
【請求項10】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションが前記第1のアプリケーションよりも高い実行の優先度を有すると判定することと、
前記第2のアプリケーションが前記第1のアプリケーションよりも高い実行の優先度を有すると判定することと、前記第2のアプリケーションを識別することと、に基づいて、
前記アプリケーションに関連付けられた第2のハードウェアプロファイルが存在すると判別することであって、前記第2のハードウェアプロファイルは、前記第1のプロファイルの1つ以上の第1のハードウェアパラメータ値とは異なる1つ以上の第2のハードウェアパラメータ値を含む、ことと、
前記新しい電力ポリシーとは異なり、前記第2のアプリケーションに関連付けられた前記第2のハードウェアプロファイルに少なくとも部分的に基づいて生成された第2の電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
請求項1の方法。
【請求項11】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、請求項1~10の何れかの方法を実行させる命令を含む命令セットを記憶する1つ以上の記憶媒体と、を備える、
システム。
【請求項12】
命令を記憶する1つ以上の記憶媒体であって、
前記命令は、1つ以上のハードウェアプロセッサによって実行されると、請求項1~10の何れかの方法を実行させる、
記憶媒体。
【請求項13】
請求項1~10の何れかの方法を実行する手段を備える装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューティングデバイスの分野に関し、特に、その適応電力管理に関する。
【背景技術】
【0002】
このセクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、従来技術として適格であると仮定すべきではない。
【0003】
電力及び性能は、コンピューティングデバイスにとって重要な測定値である。様々な負荷を実行するコンピューティングデバイスが、最初に性能について最適化され、しかしながら、ほとんどのコンピューティング環境(例えば、モバイルコンピューティング)は、厳しい電力制約も有する。
【0004】
モバイルに加えて、電力は、重い計算集約的なワークロードが実行される場合に消費される主要なリソースである。そのような計算集約的なワークロードは、一般的な又は異なるワークロード固有のエンジン(例えば、ビデオ、暗号、ダイレクトメモリアクセス、復号、画像信号/ユニット処理エンジン)を使用して、コンピューティングシステムの電力消費を著しく増加させる。この消費は、財務コスト及び容量の観点から、データセンタ/クラウド環境を抑制している可能性がある。加えて、コンピューティングシステムの急増に伴い、コンピューティングデバイスによる電力消費は、主要な環境課題となっている。例えば、計算集約的なワークロードは、平均的な自動車よりもはるかに多くの汚染(必要な電力の発生の観点から)を引き起こす可能性がある。
【0005】
したがって、次世代コンピューティングデバイスは、性能を最大化するように努力しながら、理想的には電力消費を低減することも意図している。進み(advance)を測定するために、ワット当たりの性能(perf-per-watt)は、任意の処理ユニットの全体的な効率を示すための処理ユニットの性能及び電力のための重要なメトリックである。ワット当たりの性能メトリックは、計算を達成するために消費される電力のワットごとに処理ユニットによる計算のレートを測定する。ディープニューラルネットワーク(DNN:Deep Neural Network)開発、暗号通貨マイニング、クラウドコンピューティング等の様々なコンピューティング分野における計算集約的なアプリケーション及びグローバルレースの進歩に伴い、そのような電力及び性能メトリックは、エンドユーザ及びクラウドプラットフォームを提供する企業にとってより重要になってきている。
【0006】
ワット当たりの性能メトリックを改善するための1つのアプローチは、ワークロード/アプリケーションのタイプに基づいて電力消費を切り替えることである。そのようなアプローチを用いて、例えば、計算集約的、I/O集約的なワークロードのコンテキストが検出される。そのようなコンテキストに基づいて、最適な電力消費で最適な性能を有するワークロードを実行する要求がコンピューティングデバイスにサブミットされる。この動的挙動を達成するために、コンピューティングデバイスハードウェアは、複数の性能/電力状態を用いて設計され得る。例えば、オペレーティングシステム(OS)が、アプリケーションのコンテキストが計算集約的であると判定した場合、OSは、コンピューティングデバイスに対して、デバイスの最高性能状態でワークロードを実行するように要求する。
【0007】
しかしながら、このアプローチを使用すると、長時間動作する計算集約的なアプリケーションの場合、コンピューティングデバイスが常に最高性能状態及び最高電力消費状態になる。
【0008】
最高性能状態で実行することは、最終的にコンピューティングデバイスの過熱及びその後の熱ベースの減速につながる。更に、最高性能状態にあるコンピューティングデバイスは、最も多くの電力を消費し、ワット当たりの性能メトリックを下げる。
【0009】
特定の実施形態の図面では、図面全体を通して同様の符号が対応する部分を指す。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施形態を使用し得るコンピュータシステム100を示すブロック図である。
【
図2】一実施形態における、電力を最適化してワークロード(複数可)を実行するための適応リアルタイム電力管理システム(ARTPMS)を示すブロック図である。
【
図3】一実施形態における、適応リアルタイム電力管理のプロセスを示すシーケンス図である。
【
図4】一実施形態において、実行中のアプリケーション及びハードウェアコンピューティングに関連付けられたハードウェアコンピューティングユニットのための電力ポリシーを生成するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0011】
以下の説明では、説明の目的のために、本発明の十分な理解を提供するための多くの具体的な詳細が記載される。しかしながら、本発明がこれらの具体的な詳細なしに実施され得ることは明らかであろう。他の例では、本発明を不必要に不明瞭にすることを避けるために、構造及びデバイスがブロック図で示されている。
【0012】
(概要)
本明細書のアプローチは、ハードウェアコンピューティングユニットのための適応電力管理について説明する。一実施形態では、ハードウェアコンピューティングユニット上でワークロードを実行するオペレーティングシステム(OS)は、実行のための電力ポリシーを生成するために、ハードウェアコンピューティングユニットのハードウェアパラメータ(複数可)を適用する。「ハードウェアコンピューティングユニット」という用語は、本明細書では、ハードウェアプロセッサ、ハードウェアコア、ハードウェアスレッド、ハードウェア計算回路ブロック、ハードウェアエンジン、又は、上記のうち何れか1つ以上を含むコンピューティングデバイスを指す。ハードウェアコンピューティングユニットの非限定的な例は、GPU、CPU、ダイレクトメモリアクセス(DMA)エンジン、グラフィックス(GFX)エンジン、又は、1つ以上のGPU及びCPUを含むコンピューティングデバイスである。「ハードウェアパラメータ」という用語は、本明細書では、ハードウェアコンピューティングユニットの電力状態を変更するための判定に影響を及ぼすハードウェアコンピューティングユニットのパラメータを指す。OSは、コンピューティングデバイスのデバイスインターフェースアプリケーション(ドライバ)から受信された対応するハードウェアパラメータの値(複数可)を適用して、コンピューティングデバイスの電力状態を変更するかどうかを判定し得る。
【0013】
一実施形態では、コンピューティングデバイスの初期化時に、OSは、OSのワークロードを実行するハードウェアコンピューティングユニット(複数可)の1つ以上のハードウェアパラメータの値を受信する。OSは、ハードウェアパラメータ値を使用して、ワークロードに対する電力ポリシーを生成する。「電力ポリシー」という用語は、本明細書では、ワークロードを実行するハードウェアコンピューティングユニット(複数可)についてOSが設定する電力状態を記述するポリシーを指す。
【0014】
コンテキストベースの電力ポリシーとは異なり、OSは、同じコンテキストのワークロードに対して電力ポリシーを微調整し得る。2つの計算集約的なワークロードは、異なる電力ポリシーをもたらす異なる調整パラメータを有し得る。特定のワークロード/アプリケーション及びハードウェアパラメータ値に基づいて、OSは、計算集約的なワークロードを実行しながら、ハードウェアコンピューティングユニットの電力状態を変更し得る。例えば、コンテキストベースの電力ポリシーとは異なり、OSは、計算集約的なワークロードを実行している間であっても、電力状態を低下させる(クロック周波数、電圧及び/又は電力消費を節約する他の設定を減少させる)ことを判定し得る。電力状態のそのような変化は性能に悪影響を及ぼし得るように思われ得るが、OSは、実行中のワークロードの部分(複数可)(動作/命令)が計算集約的でない(例えば、メモリ又はI/O動作が実行される場合等のように、ハードウェアコンピューティングユニットへのジョブサブミットがない)とOSが判定した場合に、より低い電力状態への切り替えを実行する。
【0015】
そのような実施形態では、電力ポリシーは各ワークロードに対してカスタマイズされるが、OSのみがこの電力ポリシーを判定する。判定されると、ワークロードの実行中に、OSは、電力ポリシーに従って、ハードウェアコンピューティングユニット電力状態を1つの状態から別の状態に変更するようにドライバに命令する。したがって、ハードウェアコンピューティングユニット(複数可)は、ポリシーに従って性能最適化状態と電力消費最適化状態との間で切り替わる。しかしながら、電力ポリシーが、その特定のワークロードに適用されるようなハードウェアコンピューティングユニット(複数可)の仕様に基づいて更に改善され得る場合であっても、ハードウェアコンピューティングユニット(複数可)自体は、特定のワークロードについて電力ポリシーを更に最適化する方法を有しない。
【0016】
別の実施形態では、コンピューティングデバイスのハードウェアパラメータの設定のプロファイルが、そのワークロード又はユーザアプリケーションのために生成される。ハードウェアパラメータ(複数可)の設定(複数可)は、性能に対する(もしあれば)最小限の低下を伴って、コンピューティングデバイス上で最良のワット当たりの性能をもたらすように発見的に選択され得る。「ハードウェアパラメータプロファイル」又は「ハードウェアプロファイル」という用語は、コンピューティングデバイスによる電力消費について最適な性能をもたらす、対応するハードウェアパラメータについての値のセットを指す。ユーザアプリケーションが起動されると、ドライバはアプリケーションを識別し、対応するハードウェアパラメータプロファイルが取り出される。ハードウェアパラメータプロファイルの選択は、ワークロードが実行されるコンピューティングデバイス又はハードウェア処理ユニット(複数可)に更に基づき得る。ハードウェアプロファイルが取り出されると、ドライバは、1つ以上のハードウェアパラメータ値をOSに通信する。OSは、更新された電力ポリシーを生成し実施するためにハードウェアパラメータ値を使用する。更新された電力ポリシーは、ワークロードと、それが少なくとも部分的に実行されているハードウェアコンピューティングユニットと、の両方に固有である。次に、OSは、更新された電力ポリシーに基づいてハードウェアコンピューティングユニットの電力状態を調整する。
【0017】
(システム概要-コンピュータシステム)
一実施形態によれば、1つ以上のワークロードを有するユーザアプリケーションは、1つ以上のコンピュータシステムによって実行され得る。コンピュータシステムは、ユーザアプリケーション命令を実行するように持続的にプログラムされる、1つ以上のアプリケーション/ワークロード固有の集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)等のデジタル電子デバイスを含んでもよい。コンピュータシステムは、ファームウェア、メモリ、他のストレージ、又は、それらの組合せにおいてユーザアプリケーション命令を実行するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含み得る。また、コンピュータシステムは、ユーザアプリケーション命令を実行するために、汎用ハードウェアプロセッサをカスタムハードウェア論理(例えば、ASIC又はFPGA)と組み合わせてもよい。コンピュータシステムは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイス、又は、ユーザアプリケーション命令を実行するためのハードワイヤード及び/又はプログラム論理を組み込む任意の他のデバイスであり得る。
【0018】
例えば、
図1は、本発明の実施形態を使用し得るコンピュータシステム100を示すブロック図である。コンピュータシステム100は、情報を通信するためのバス102又は他の通信機構と、情報を処理するためのバス102に連結されたハードウェアプロセッサ104と、を含む。ハードウェアプロセッサ104は、例えば、汎用マイクロプロセッサ等のコンピューティングデバイスであってもよく、1つ以上のハードウェア処理ユニットを含んでもよい。
【0019】
また、コンピュータシステム100は、プロセッサ104によって実行される情報及び命令を記憶するためにバス102に連結されたランダムアクセスメモリ(RAM)又は別の動的記憶デバイス等のメインメモリ106を含む。また、メインメモリ106は、プロセッサ104によって実行される命令の実行中に一時変数又は他の中間情報を記憶するために使用され得る。そのような命令は、プロセッサ104にアクセス可能な非一時的な記憶媒体に記憶されると、コンピュータシステム100によって実行され、ユーザアプリケーションにおいて指定された動作を実行し得る。
【0020】
コンピュータシステム100は、静的情報及びプロセッサ104のための命令を記憶するためにバス102に連結された読み出し専用メモリ(ROM)108又は他の静的記憶デバイスを更に含む。情報及び命令を記憶するために、ソリッドステートディスク、磁気ディスク又は光ディスク等の記憶デバイス110が提供され、バス102に連結される。
【0021】
コンピュータシステム100は、コンピュータユーザに情報を表示するために、陰極線管(CRT)等のディスプレイ112にバス102を介して連結されてもよい。英数字及び他のキーを含む入力デバイス114は、情報及びコマンド選択をプロセッサ104に通信するためにバス102に連結される。別のタイプのユーザ入力デバイスは、方向情報及びコマンド選択をプロセッサ104に通信し、ディスプレイ112上のカーソル移動を制御するための、マウス、トラックボール又はカーソル方向キー等のカーソル制御116である。この入力デバイスは、典型的には、デバイスが平面内の位置を指定することを可能にする、第1の軸(例えば、x)及び第2の軸(例えば、y)の2つの軸における2つの自由度を有する。
【0022】
コンピュータシステム100は、カスタマイズされた加速コンピューティングデバイス、1つ以上のASIC若しくはFPGA、ファームウェア、及び/又は、コンピュータシステムと組み合わせてユーザアプリケーションの動作を行うプログラム論理等の追加のコンピューティングデバイス105を使用して、ユーザアプリケーション命令を実行してもよい。一実施形態によれば、ユーザアプリケーションの動作は、プロセッサ104及び/又は追加のコンピューティングデバイス105がメインメモリ106に含まれる1つ以上のユーザアプリケーション命令の1つ以上のシーケンスを実行することに応じて、コンピュータシステム100によって実行される。そのような命令は、記憶デバイス110等の別の記憶媒体からメインメモリ106に読み込まれてもよい。メインメモリ106に含まれる命令シーケンスの実行により、プロセッサ104及び/又は追加のコンピューティングデバイス105は、本明細書に記載のプロセスステップを実行する。
【0023】
本明細書で使用される「記憶媒体」という用語は、マシンを特定の方式で動作させるデータ及び/又は命令を記憶する任意の非一時的な媒体を指す。そのような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含んでもよい。不揮発性媒体は、例えば、記憶デバイス110等の光ディスク、ソリッドステートディスク又は磁気ディスクを含む。揮発性媒体は、メインメモリ106等のダイナミックメモリを含む。記憶媒体の一般的な形態は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は、任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光データ記憶媒体、穴のパターンを有する任意の物理媒体、RAM、PROM、EPROM、FLASH-EPROM、NVRAM、任意の他のメモリチップ又はカートリッジを含む。
【0024】
記憶媒体は、伝送媒体とは別であるが、伝送媒体とともに使用され得る。伝送媒体は、記憶媒体間の情報の転送に関与する。例えば、伝送媒体は、バス102を構成するワイヤを含む、同軸ケーブル、銅線及び光ファイバを含む。伝送媒体は、電波及び赤外線データ通信中に生成されるような音波又は光波の形態をとることもできる。
【0025】
様々な形態の媒体は、実行のためにプロセッサ104及び/又は追加のコンピューティングデバイス105に1つ以上の命令の1つ以上のシーケンスを搬送することに関与し得る。例えば、命令は、最初に、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上で搬送され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、インターネットを介して命令を送信することができる。コンピュータシステム100のネットワーキングデバイスは、データを受信することができ、適切な回路/ファームウェアは、データをバス102上に置くことができる。バス102は、メインメモリ106にデータを搬送し、そこからプロセッサ104又は追加のコンピューティングデバイス105が命令を取り出して実行する。メインメモリ106によって受信された命令は、任意選択的に、プロセッサ104及び/又は追加のデバイスによる実行の前又は後の何れかに記憶デバイス110に記憶されてもよい。
【0026】
(システム概要-適応リアルタイム電力管理システム)
図2は、一実施形態における、電力を最適化してワークロード(複数可)を実行するための適応リアルタイム電力管理システム(ARTPMS)を示すブロック図である。ARTPMS200は、コンピュータシステム100の一部であってもよく、上述した1つ以上のコンポーネントを含んでもよい。一実施形態では、ARTPMS200は、オペレーティングシステム(OS)220によって指示される1つ以上のプログラムされた命令を実行するためのコンピューティングデバイス216を含む。
【0027】
プロセッサ104又は追加のコンピューティングデバイス105は、コンピューティングデバイス216の例であり得る。コンピューティングデバイス216は、OS220及びユーザアプリケーション226等のそのアプリケーションのコマンド及びプログラムを実行し得る。一実施形態では、コマンド及びプログラムは、例えば並列処理を実行するのに適したグラフィックス動作及び非グラフィックス動作等の選択された機能のためのものである。コンピューティングデバイス216は、例えば、プロセッサ104及び/又は追加のコンピューティングデバイス105から受信したコマンドに基づいて、ピクセル動作、幾何学計算、及び、ディスプレイデバイス112への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用される。また、コンピューティングデバイス216は、他のプロセッサ(例えば、プロセッサ104及び/又は追加のコンピューティングデバイス105等)から受信されたコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する動作等のような、グラフィックス動作に関連しない計算処理動作を実行し得る。
【0028】
コンピューティングデバイス216のための例示的なプロセッサタイプは、CPU、GPU、同じダイ上に位置するCPU及びGPU、又は、1つ以上のハードウェアコンピューティングユニット(例えば、コア)232A~232Nを含む。
【0029】
スケジューラ236は、一実施形態では、異なるコンピューティングユニット232A~232N上の様々な実行単位(例えば、ワークグループ及びウェーブフロント)のスケジューリングに関連する動作を実行するように構成される。コンピューティングデバイス216上での処理タスクの実行は、ピクセル値計算、頂点変換及び他のグラフィックス動作等の一般的な計算又はグラフィックス関連動作に適している。パイプライン234は、メモリ又は追加のコンピューティングデバイス(例えば、105)から処理コマンドを受け入れ、したがって、一実施形態では、並列実行のためにハードウェアコンピューティングユニット232A~232Nに計算タスクを提供する。
【0030】
コンピューティングデバイス216は、本明細書では「ドライバ」とも呼ばれるデバイスインターフェースアプリケーション225(例えば、カーネルモードドライバ、ユーザモードドライバ、ユニバーサルモードドライバ)を使用して電力管理のためにARTPMS200のOS220によって構成され得る。一実施形態では、OS220は、コンピューティングデバイス216の電力状態を変更する等のように、コンピューティングデバイス216を構成するために、ドライバ225を介してファームウェア206と通信し得る。
【0031】
ドライバ225は、様々なアプリケーション又はそのグループのためのハードウェアパラメータプロファイル(複数可)224を維持し得る。プロファイル(複数可)224は、コンピューティングデバイス215、ハードウェアコンピューティングユニット232A~232N、及び/又は、そのようなデバイスの任意の識別可能なクラス上でのアプリケーションの最適な実行のための所定の(例えば、OS220初期化又はユーザアプリケーション226ランタイムの前に判定される)ハードウェアパラメータ値(複数可)を含み得る。
【0032】
アプリケーション226を実行する場合、OS220は、コンピューティングデバイス216(例えば、プロセッサ104又は追加のコンピューティングデバイス105)と通信して、ハードウェアの動作を制御する。一実施形態では、OS220は、コンピューティングデバイス216のハードウェアコンピューティングユニット232A~232Nの電力状態(複数可)を変更するようにファームウェア206に要求するようにドライバ225に要求することによって構成を実行する。OS220は、コンピューティングデバイス216及び/又は起動されたユーザアプリケーション226のためにOS220によって生成された電力ポリシーに従って、そのような変更を要求する。
【0033】
例えば、起動されたアプリケーション226が識別されると、ドライバ225は、ハードウェアパラメータプロファイル224を解析し、識別されたアプリケーション226及び/又はコンピューティングデバイス216のハードウェアパラメータプロファイル224からハードウェアパラメータ値(複数可)を読み出す。記憶されたデータは、OS220に渡され、次に、コンピューティングデバイス216の電力ポリシーを生成する。
【0034】
一実施形態では、アプリケーション226の実行中に、コンピューティングデバイス216のファームウェア206は、OS220から電力状態の更新を受信する。ファームウェア206は、コンピューティングデバイス216のハードウェア(例えば、CPU、グラフィックスカード)の電力管理を制御するための対応する構成を含んでもよい。適切な構成(例えば、クロック速度パラメータ、クロック電圧パラメータ、クロックゲーティングパラメータ、電力ゲーティング)を適用することによって、ファームウェア206は、コンピューティングデバイス216の更新された電力状態を設定する。ファームウェア206は、不揮発性メモリ(例えば、ハードディスク、マザーボードブート読み出し専用メモリ(ROM)及びBIOSメモリ)に記憶されてもよい。
【0035】
(機能概要)
図3は、一実施形態における、適応リアルタイム電力管理のプロセスを示すシーケンス図である。以下に説明されるステップのうち1つ以上は、省略され、繰り返され、及び/又は、異なる順序で実行されてもよい。したがって、
図3に示されるステップの特定の配置は、本発明の範囲を限定するものとして解釈されるべきではない。更に、以下に示されるステップは、ハードウェアプロファイルデータを記憶するために使用されるデータ構造、起動されるアプリケーションの数及び実行の同時性、並びに/又は、そのような1つ以上のアプリケーションを実行するオペレーティングシステム及びコンピューティングデバイスの特定の状態に基づいて修正されてもよい。
【0036】
ステップ305において、OS220が初期化される。これは、コンピュータシステムのブートアップ又は仮想マシンにおけるOS220のスポーニングの一部として行われ得る。初期化において、ステップ310において、OS220は、コンピューティングデバイス216を含むインストールされたデバイスを発見し、初期化する。ドライバ225は、コンピューティングデバイス216を初期化するために、ステップ315において設定値(複数可)をファームウェア206に通信することによって初期化され、コンピューティングデバイス216を構成する。
【0037】
(機能概要-ハードウェアパラメータ)
ステップ320において、ドライバ225は、コンピューティングデバイス216のハードウェアパラメータ値の元のセットをOS220に提供する。一実施形態では、値の元のセットは、コンピューティングデバイス216に固有であり、その内部アーキテクチャに依存してもよく、そのハードウェア能力を記述し得る。ハードウェアパラメータ値は、コンピューティングデバイス216のクラス、タイプ、製造業者及び/又はモデルによって識別可能である。
【0038】
一実施形態では、この初期ハードウェアパラメータ値セットは、コンピューティングデバイス216上で実行され得る任意のアプリケーションに固有ではない。しかしながら、ハードウェアパラメータ値の何れかが変化する場合、OSの電力ポリシーは、特定のアプリケーションに対して影響を受け、したがって、アプリケーションの実行中にOS220が設定する電力状態に影響を受ける。したがって、アプリケーションの実行のために消費される電力及び取得される性能が変化し得る。
【0039】
ハードウェアパラメータ(複数可)は、1つ以上の電力特徴に間接的に影響を及ぼすことによって、電力消費及び性能を制御し得る。電力特徴の入口/出口ヒステリシスを制御するハードウェアパラメータの例示的なセットは、以下のうち1つ以上を含み得る。
-遷移レイテンシ:コンポーネントがその最低電力消費状態に戻るのにかかる時間。
-レジデンシ(Residency):切り替え状態に関連付けられた電力及び/又は性能ペナルティを補償するために電力状態で費やす最小時間。別の言い方をすれば、遷移から予想される節約の価値がある遷移を行うために電力状態で費やす最小時間。
-公称電力:特定の状態、例えば、最小電力消費状態及び/又は最大性能状態におけるデバイスの電力消費。
【0040】
そのようなパラメータは、動的電力管理(DPM)特徴(例えば、クロック速度パラメータ、クロック電圧パラメータ、電力ゲーティング、及び、クロックゲーティングパラメータ)、メモリタイミング特徴、及び、熱生成特徴(例えば、ファン制御、熱設計電力(TDP))等の電力特徴を制御し得る。代替的又は追加的に、そのような電力特徴は、対応するハードウェアパラメータ(複数可)によって直接表され得る。
【0041】
(機能概要-電力ポリシーの生成)
一実施形態では、ハードウェアパラメータ値(複数可)は、OS220によって使用され、その実行ワークロード/アプリケーションのうち任意の1つ以上のための電力ポリシーを生成する。したがって、ステップ320において初期化時に初期ハードウェアパラメータを受信した後、OS220は、ステップ321において、様々なアプリケーション(複数可)のための1つ以上の電力ポリシーを生成し得る。そのような電力ポリシーは、ステップ320から使用される初期ハードウェアパラメータが、アプリケーション及びそれらのワークロードの何れにも非固有(静的)であるため、ハードウェアコンピューティングユニット上で実行されるアプリケーションに固有ではない。
【0042】
一実施形態では、コンピューティングデバイスの電力ポリシーは、アプリケーションのランタイムに関連付けられた様々な条件を、対応する電力状態にマッピングする。例えば、特定のランタイム統計が条件(複数可)に一致する場合、OS220は、マッピングの対応する電力状態に設定されるようにコンピューティングデバイス216に要求する。したがって、アプリケーションの所定のランタイム統計に対して、電力ポリシーは、a)コンピューティングデバイスを異なる電力状態に遷移させるかどうか、b)何れの電力状態に遷移させるか、及び/又は、c)特定の電力状態にある最適な持続時間(例えば、一実施形態では、電力状態を切り替えることに関連付けられた電力及び/又は性能ペナルティを補償するために電力状態において費やす最小時間)がどれだけ長いかを判定する。
【0043】
したがって、アプリケーションによって実行された(又は実行されると予測された)ものに依存して、OS220は、そのような実行のための最適な電力状態を判定する。ステップ322において、OS220は、ファームウェア206と通信するドライバ225を介してコンピューティングデバイス216にそのような電力状態(複数可)を設定してもよい。実行固有の電力状態は、コンテキストベースの電力管理よりも良好なワット当たりの性能をもたらす。(コンテキストベースの電力管理では、計算集約的なワークロードの場合、クロックは、計算集約的なワークロード内で何れの動作が実行されるかにかかわらず、常に高レベル(したがって、高電力消費)に設定される)
【0044】
加えて、OS220によって生成される電力ポリシーは、コンピューティングデバイス216の制限及び特性を更に考慮に入れてもよい。コンピューティングデバイス216の制限及び特性は、上述したように、ステップ320で受信されたコンピューティングデバイス216のハードウェアパラメータによって表される。一実施形態では、ハードウェアパラメータは、電力状態への実行のマッピングに影響を及ぼし、OSパラメータ(例えば、遷移レイテンシ、レジデンシ及び/又は公称電力)に影響を及ぼし得る。異なるコンピューティングデバイス(したがって、ハードウェアパラメータの異なるセット)に対して、同じアプリケーションの同じランタイム統計は、異なる電力状態をもたらし得る。
【0045】
(機能概要-電力ポリシーの最適化)
コンピューティングデバイス216の制限及び特性は、異なるアプリケーションに異なって影響を及ぼし得る。上述したように、電力消費は、アプリケーションが実行されるハードウェアコンピューティングユニットに適用される場合に、各アプリケーションのための電力ポリシーをカスタマイズすることによって更に最適化され得る。任意のアプリケーションに対して同じハードウェアパラメータ値を使用することによって、OS220は、コンピューティングデバイス216の制限及び特性が全てのアプリケーションに同じように影響すると仮定する。
【0046】
一実施形態では、アプリケーションは、発見的に、性能を著しく低下させることなく最良のワット当たりの性能メトリックを有するものとしてアプリケーションのためにハードウェアパラメータ値の特定のセットが選択されるまで、様々なハードウェアパラメータ値を用いて実行される。OS220による実行の前に、様々なベンチマークアプリケーション、写真編集アプリケーション、暗号通貨マイニングアプリケーション等が、コンピューティングデバイス216を含む様々なハードウェアコンピューティングユニット上で実行されている。各アプリケーション(又はそのグループ)及びコンピューティングデバイスのペア(又はそのクラス)について、所望の性能のための最適なワット当たりの性能メトリックをもたらすハードウェアパラメータ値のセットが選択される。1つ以上のハードウェアコンピューティングユニットのためのドライバは、各々が特定のアプリケーション及び1つ以上のハードウェアコンピューティングユニットの特定のハードウェアコンピューティングユニットに関連付けられた、最適なハードウェアパラメータ値を有するハードウェアパラメータプロファイルを記憶し得る。代替的に、ハードウェアパラメータプロファイルは、アプリケーションのグループ、ハードウェアコンピューティングユニットのクラス/タイプ/デバイス/システム、又は、それらの組合せについて存在し得る。例えば、ドライバ225は、アプリケーション226がメンバーであるグラフィック編集アプリケーションのグループ、及び、コンピューティングデバイス216が属するGPUの特定のモデルのための最適なハードウェアパラメータ値を有するハードウェアパラメータプロファイルを含んでもよい。
【0047】
アプリケーションの起動時に、ドライバ225は、アプリケーションを判定し、アプリケーション及びハードウェアコンピューティングユニットに対応するハードウェアパラメータ値(複数可)を提供し得る。ステップ325において、OS220は、アプリケーション226等のアプリケーションの実行要求を受信する。ステップ335において、OS220は、少なくともコンピューティングデバイス216上で実行するためにアプリケーション226を起動する。アプリケーションに関連付けられた情報に基づいて、OS220は、アプリケーションを実行している間にコンピューティングデバイス216に適用される電力ポリシーを生成し得る。
【0048】
ステップ336において、ドライバ225は、一例として、実行のためにコンピューティングデバイス216にサブミットされたアプリケーションがアプリケーション226であることを検出し得る。アプリケーション226がハードウェアパラメータプロファイルを有する場合、ステップ338において、ドライバ225は、ハードウェアプロファイル(複数可)224からの設定値でOS220のハードウェアパラメータを更新する。OS220がステップ340においてアプリケーション226のための電力ポリシーを生成する場合、電力ポリシーは、アプリケーション226固有のハードウェアパラメータに基づく。それによって、ドライバ225は、OS220の電力ポリシーに影響を及ぼし、電力ポリシーを、アプリケーション226に適用されるハードウェアコンピューティングユニットの特性及び制限と調和させる。
【0049】
図4は、一実施形態において、実行中のアプリケーション及びハードウェアコンピューティングに関連付けられたハードウェアコンピューティングユニットのための電力ポリシーを生成するためのプロセスを示すフローチャートである。以下に説明されるステップのうちの1つ以上は、省略され、繰り返され、及び/又は、異なる順序で実行されてもよい。したがって、
図4に示されるステップの特定の配置は、本発明の範囲を限定するものとして解釈されるべきではない。更に、以下に示されるステップは、ハードウェアプロファイルデータを記憶するために使用されるデータ構造に基づいて修正されてもよい。
【0050】
ステップ410において、OS220におけるアプリケーション起動がARTPMS200によって検出される。例えば、アプリケーション(例えば、アプリケーション226)が実行されるハードウェアコンピューティングユニット、コンピューティングデバイス216のドライバ225は、アプリケーションの起動を検出する。
【0051】
別のアプリケーションが既に実行されている一実施形態では、プロセスは、新たに起動されたアプリケーションを用いてステップを継続するかどうかを決定し得る。プロセスは、新たに起動されたアプリケーションの優先度と現在実行中のアプリケーションの優先度とを比較して、新たに起動されたアプリケーションに対してハードウェアパラメータ(複数可)を進めて更新するかどうかを判定し得る。例えば、新たに検出されたアプリケーションの優先度が高い場合には、プロセスは次のステップに進む。そうではなく、新たに起動されたアプリケーションが現在実行中のアプリケーションよりも低い優先度を有する場合には、この例では、プロセスは終了する。優先度は、識別子によって表されてもよく(例えば、識別子が高いほど優先度が高い)、アプリケーションのハードウェアプロファイルに記憶されてもよい。ユーザは、ユーザインターフェース(UI)を介してアプリケーションに対する優先度を設定し得る。UIから受信される要求は、コンピューティングデバイス(複数可)又はそのクラスのためのアプリケーション(複数可)又はそのグループの優先度を含んでもよい。プロセスは、ハードウェアプロファイル内のアプリケーションの適切なエントリを新しい優先度で更新する。代替的又は追加的に、優先度はOSによって割り当てられてもよい。
【0052】
別のアプリケーションが既に実行されている別の実施形態では、プロセスは、既に実行中のアプリケーションにかかわらず、新たに検出されたアプリケーションを用いてステップを継続することを決定し得る。したがって、プロセスは、既に実行中のアプリケーションのハードウェアプロファイルを、新たに検出されたアプリケーションのハードウェアプロファイルが存在する場合、そのハードウェアプロファイルでオーバーライドし得る(ステップ430参照)。
【0053】
ステップ420において、プロセスは、実行のためにサブミットされたアプリケーションを識別する。アプリケーションは、ドライバ225によってOS220から受信される識別情報によって識別され得る。例えば、ドライバ225は、実行可能ファイルの名前(例えば、アプリケーションの名前)又はOS220によって割り当てられたプロセスidを受信し、ハードウェアプロファイル(複数可)224を検索するためにそのような識別情報を使用し得る。
【0054】
ステップ430において、プロセスは、コンピューティングデバイス216及び起動されたアプリケーションについてハードウェアプロファイルが存在するかどうかを判定する。例えば、プロセスは、ハードウェアプロファイル(複数可)224を検索して、ハードウェアプロファイルが起動されたアプリケーション226及びコンピューティングデバイス216に関連付けられているかどうかを判定する。コンピューティングデバイス216は、デバイス名、モデル名、シリアル番号、部品番号、デバイス識別子、バージョン、在庫管理単位(SKU)のうち1つ以上を含み得るデバイス記述によって識別され得る。ハードウェアプロファイルが識別されない場合、プロセスは、アプリケーション226を起動したアプリケーションの何れのグループ(複数可)がそのメンバーであるかを判定する。ハードウェアプロファイルがそのようなグループについて識別される場合、ハードウェアプロファイルは、起動されたアプリケーション226について存在する。同様に、プロセスは、グループ又はアプリケーション226自体にも関連付けられているコンピューティングデバイス216のクラスのハードウェアプロファイルがあるかどうかをテストし得る。
【0055】
例えば、「FAHBench」アプリケーションは、「Navi 21」デバイス記述を有するコンピューティングデバイス216上で起動される。アプリケーションが識別されると、ドライバ225は、そのブロブファイルを検索して、「FAHBench」アプリケーションと「Navi 21」コンピューティングデバイスのペアについてハードウェアプロファイルが存在するかどうかを判定する。存在しない場合、ドライバ225は、FAHBenchアプリケーションが属するGPUベンチマークアプリケーションについて、「Navi 21」コンピューティングデバイスについて、又は、「Navi 21」コンピューティングデバイスが属するクラスのGPUについて、ハードウェアプロファイルが存在するかどうかをチェックし得る。
【0056】
ステップ430において、起動されたアプリケーション及びコンピューティングデバイス216についてハードウェアプロファイルが存在すると判定された場合、プロセスはステップ440に進み、ステップ440において、識別されたハードウェアプロファイルからハードウェアパラメータ値(複数可)を取り出す。ステップ450において、プロセスは、アプリケーションの実行のために、そのハードウェアパラメータ値を取り出されたハードウェアパラメータ値で更新するようにOS220に要求する。
【0057】
逆に、ステップ440において、ドライバ225が、起動されたアプリケーションについてハードウェアプロファイルが存在しないと判定した場合、プロセスはステップ460に進み、更新されたハードウェアプロファイルの送信をスキップする。したがって、OS220は、元の/以前のハードウェアパラメータを使用し続ける。例えば、OS220は、起動されたアプリケーションを実行するために、OS220の初期化において受信されたハードウェアパラメータを使用し続けてもよい。
【0058】
何れのハードウェアプロファイルパラメータが使用されるかにかかわらず、プロセスは、ステップ470において、コンピューティングデバイス216の電力ポリシーを生成させる。同様に、
図3を続けると、任意選択のステップ338が実行されるかどうかにかかわらず、ステップ340において、OS220は、アプリケーション226のための電力ポリシーを生成する。
【0059】
ポリシーを適用することに基づいて、OS220は、コンピューティングデバイス216の電力状態を変更することを判定し得る。電力状態の変化が判定されると、ステップ350において、OS220は、コンピューティングデバイス216の電力状態を新しい電力状態に設定するようにドライバ225に要求することによってファームウェア206に命令する。
【0060】
例えば、ランタイム統計が、無動作(NOP)命令又はメモリ動作の支配を示す場合、OS220は、生成されたポリシーに従って、電力状態を最低電力消費電力状態に設定するようにドライバ225に命令し得る。逆に、ランタイム統計がコンピューティング動作の支配を示す場合、OS220は、生成されたポリシーに従って、電力状態を最高電力消費(最高性能)電力状態に設定するようにドライバ225に命令し得る。
【0061】
一実施形態では、ドライバ225は、ファームウェア206にコンピューティングデバイス216の構成を変更するように要求することによって、ステップ350でコンピューティングデバイス216を特定の電力状態に設定する。例えば、電力状態の変更は、クロックサイクルの周波数及び/又はコンピューティングデバイス216の電圧に関する構成を変更することを含んでもよい。より低い周波数クロック又はより低い電圧を有する電力状態は、電力消費最適化電力状態であり、より高い周波数クロック又はより高い電圧を有する電力状態は、性能最適化電力状態である。
【0062】
一実施形態では、ステップ355において、ドライバ225は、前に実行していたアプリケーション、例えばアプリケーション226の出口/完了を検出する。そのような検出時に、ステップ360において、ドライバ225は、一実施形態では、更新する初期ハードウェアパラメータ(複数可)をOS220に提供し得る。そのような実施形態では、コンピューティングデバイス216のためのドライバ225を有するハードウェアプロファイルを有しない将来起動されるアプリケーションについて、OS220は、元のハードウェアパラメータを有する更新された電力ポリシーを生成する。ステップ365において、OS220は、ドライバ225を介してコンピューティングデバイス216の電力状態を更新し、ファームウェア206からそのような更新を要求し得る。したがって、そのような実施形態では、以前に実行していたアプリケーションのために最適化された以前の電力ポリシーは、将来のアプリケーション(複数可)の実行に悪影響を与えないことがある。
【0063】
(電力性能メトリックの改善)
表1は、様々な技術を使用して実行されるベンチマーク「FAHBench」アプリケーションについてのメトリック例を示す。表1の例に示されるように、「FAHBench」アプリケーションがハードウェアプロファイル(「静的プロファイル」)を有していない場合であっても、アプリケーションは、コンテキストベースの電力管理技術に対して24%ワット当たりの性能の改善で実行する。このような改善は、実行における性能低下なしに生じる(性能が1.23%改善される)。
【0064】
「FAHBench」が、ハードウェアコンピューティングユニットがアプリケーションに適応するための特定のハードウェアパラメータプロファイル(「適応プロファイル」)を有する例では、アプリケーションは、アプリケーション固有の適応プロファイルなしに、静的プロファイルの場合の24%と比較して、ワット当たりの性能メトリックを更に35.98%改善する。同様に、コンテキストベースの技術と比較して性能低下は発生せず、0.35%の改善である。
【0065】
【0066】
表2は、様々な技術を使用して実行される「cb_vl_video_proc」アプリケーション、ビデオ処理アプリケーションについてのメトリック例を示す。ベンチマークアプリケーションメトリックと同様に、ビデオ処理アプリケーションは、静的プロファイル電力管理技術及び適応プロファイル電力管理技術の両方に対して、コンテキストベース電力管理技術を上回る著しいワット当たりの性能の改善を伴って実行する(表2、「静的/コンテキスト」列の「性能/ワット」行及び「適応対コンテキスト」列を参照)。特に、適応プロファイル技術は、静的技術に対して150%に近いワット当たりの性能メトリックの改善を有し、113.15%と比較して79%である。注目すべきことに、この改善は、性能に対する無視できる低下、-0.4%を伴って生じる(表2、「適応対コンテキスト」列における「性能スコア」行参照)。
【0067】
【0068】
表3は、様々な技術を使用して実行される、「cb_bitcoin」アプリケーション、暗号通貨マイニングアプリケーションのメトリック例を示す。表3の例に示されるように、「cb_bitcoin」アプリケーションがハードウェアプロファイル(「静的プロファイル」)を有していない場合であっても、アプリケーションは、コンテキストベースの電力管理技術に対して8.4%ワット当たりの性能の改善で依然として実行する。しかしながら、このような改善は、実行時に8.8%の性能低下を伴って生じる。これは、そのようなワークロードに対して許容可能でない場合がある。
【0069】
静的プロファイル技術の性能低下とは異なり、(特定のハードウェアプロファイルを有する)適応技術では、アプリケーションは、コンテキストベース技術の性能と比較して低い性能低下(性能が3.39%低下する)を有する。しかしながら、ワット当たりの性能メトリックは、この例では、コンテキストベースの技術と比較して、同様に8.5%改善される。エンドユーザの観点から、適応プロファイル電力管理技術は、多くの電力(すなわち、金銭的費用)を節約しながら、妥当な性能を提供することができる。
【0070】
【表3】
したがって、これらの例では、適応リアルタイム電力管理技術は、アプリケーションの性能を低下させることなく、アプリケーションのワット当たりの性能メトリックを改善する。
【0071】
上記の明細書では、本発明の実施形態は、実装ごとに異なり得る多数の特定の詳細を参照して説明されている。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきである。本発明の範囲の唯一の排他的な指標、及び、本出願人によって本発明の範囲であると意図されるものは、そのような特許請求の範囲が発行される特定の形態において、本出願から発行される一連の特許請求の範囲の文字通りの等価な範囲であり、任意のその後の補正を含む。
【手続補正書】
【提出日】2024-08-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータによる実行方法であって、
ハードウェアコンピューティングユニット上で少なくとも部分的に実行されるアプリケーションの起動を検出することと、
前記アプリケーションを識別することに基づいて、前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することと、
前記ハードウェアプロファイルが存在すると判定したことに基づいて、前記アプリケーションに関連付けられた前記ハードウェアプロファイルに少なくとも部分的に基づいて生成された新しい電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
方法。
【請求項2】
前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することは、前記ハードウェアプロファイルが前記ハードウェアコンピューティングユニットに関連付けられているか否かを判定することを含む、
請求項1の方法。
【請求項3】
アプリケーションのグループが前記ハードウェアプロファイルに関連付けられており、
前記アプリケーションに関連付けられたハードウェアプロファイルが存在するか否かを判定することは、前記アプリケーションが前記アプリケーションのグループの一部であるか否かを判定することを含む、
請求項1の方法。
【請求項4】
前記ハードウェアプロファイルは、アプリケーションハードウェアプロファイルであり、前記アプリケーションハードウェアプロファイルを含む複数のハードウェアプロファイルの各々は、対応するアプリケーション及び対応するハードウェアコンピューティングユニットに関連付けられており、
各ハードウェアプロファイルは、1つ以上のハードウェアパラメータ値を含み、前記ハードウェアパラメータ値は、対応するハードウェアコンピューティングユニットに適用された場合に、前記対応するハードウェアコンピューティングユニット上の対応するアプリケーションに対して最適なワット当たりの性能実行を提供する、
請求項1の方法。
【請求項5】
前記アプリケーションの起動前に、前記ハードウェアコンピューティングインターフェースの元のハードウェアプロファイルを適用することを含み、
前記元のハードウェアプロファイルは、前記アプリケーションに非固有の1つ以上のハードウェアパラメータ値を含む、
請求項1の方法。
【請求項6】
前記ハードウェアプロファイルは、ハードウェアパラメータ(電力状態に遷移する時間を記述する遷移レイテンシ、遷移する価値がある遷移された電力状態に留まる時間を記述するレジデンシ、最低利用可能電力消費を表す公称電力)のうち何れか1つ以上の1つ以上の値を含む、
請求項1の方法。
【請求項7】
前記アプリケーションの実行ファイル名、前記アプリケーションのプロセス名、又は、前記アプリケーションのプロセス識別子のうち何れか1つ以上を含む、前記アプリケーションに関する1つ以上の識別情報を取り出すことによって、前記アプリケーションを識別することを含む、
請求項1の方法。
【請求項8】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションを識別することに基づいて、前記第2のアプリケーションに関連付けられた第2のハードウェアプロファイルが存在するか否かを判定することと、
前記第2のハードウェアプロファイルが存在しないと判定したことに基づいて、現在のハードウェアパラメータ値を用いて前記第2のアプリケーションの実行を継続することと、を含む、
請求項1の方法。
【請求項9】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションを識別することに基づいて、前記アプリケーションに関連付けられた第2のハードウェアプロファイルが存在するか否かを判定することであって、前記第2のハードウェアプロファイルは、前記第1の
ハードウェアプロファイルの1つ以上の第1のハードウェアパラメータ値とは異なる1つ以上の第2のハードウェアパラメータ値を含む、ことと、
前記ハードウェアプロファイルが存在すると判定したことに基づいて、前記新しい電力ポリシーとは異なり、前記第2のアプリケーションに関連付けられた前記第2のハードウェアプロファイルに少なくとも部分的に基づいて生成される第2の電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
請求項1の方法。
【請求項10】
前記アプリケーションは第1のアプリケーションであり、前記ハードウェアプロファイルは第1のハードウェアプロファイルであり、
前記方法は、
前記ハードウェアコンピューティングユニット上で少なくとも部分的に実行される第2のアプリケーションの起動を検出することと、
前記第2のアプリケーションが前記第1のアプリケーションよりも高い実行の優先度を有すると判定することと、
前記第2のアプリケーションが前記第1のアプリケーションよりも高い実行の優先度を有すると判定することと、前記第2のアプリケーションを識別することと、に基づいて、
前記アプリケーションに関連付けられた第2のハードウェアプロファイルが存在すると判別することであって、前記第2のハードウェアプロファイルは、前記第1の
ハードウェアプロファイルの1つ以上の第1のハードウェアパラメータ値とは異なる1つ以上の第2のハードウェアパラメータ値を含む、ことと、
前記新しい電力ポリシーとは異なり、前記第2のアプリケーションに関連付けられた前記第2のハードウェアプロファイルに少なくとも部分的に基づいて生成された第2の電力ポリシーに基づいて、前記ハードウェアコンピューティングユニットの電力状態を更新することと、を含む、
請求項1の方法。
【請求項11】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、請求項1~10の何れかの方法を実行させる命令を含む命令セットを記憶する1つ以上の記憶媒体と、を備える、
システム。
【請求項12】
命令を記憶する1つ以上の記憶媒体であって、
前記命令は、1つ以上のハードウェアプロセッサによって実行されると、請求項1~10の何れかの方法を実行させる、
記憶媒体。
【請求項13】
請求項1~10の何れかの方法を実行する手段を備える装置。
【国際調査報告】