JP2024512468A - アイドル持続期間履歴に基づく低電力状態選択 - Google Patents

アイドル持続期間履歴に基づく低電力状態選択 Download PDF

Info

Publication number
JP2024512468A
JP2024512468A JP2023556943A JP2023556943A JP2024512468A JP 2024512468 A JP2024512468 A JP 2024512468A JP 2023556943 A JP2023556943 A JP 2023556943A JP 2023556943 A JP2023556943 A JP 2023556943A JP 2024512468 A JP2024512468 A JP 2024512468A
Authority
JP
Japan
Prior art keywords
sleep state
duration
sleep
component
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023556943A
Other languages
English (en)
Inventor
ラオ カルティク
ポール インドラニ
イー ドニ―
ホドルコフスキー オレクサンドル
デ ポーラ ローザ ピガ レオナルド
チョイ ウォンジェ
ジー. ルイス ダナ
サンバムルティ スリラム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of JP2024512468A publication Critical patent/JP2024512468A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)

Abstract

装置(100)は、プロセッサ(102)と、スリープ状態持続期間予測モジュール(404)と、システム管理ユニット(316)と、を備える。スリープ状態持続期間予測モジュールは、装置の構成要素のスリープ状態持続期間(416)を予測するように構成されている。システム管理ユニットは、予測されたスリープ状態持続期間と少なくとも1つの持続期間閾値との比較に基づいて、構成要素を、複数のスリープ状態から選択されたスリープ状態に遷移させる。複数のスリープ状態の各スリープ状態は、複数のスリープ状態のうち前のスリープ状態よりも低い電力状態である。【選択図】図5

Description

現代のコンピュータシステムは、通常、いくつかの電力管理状態をサポートすることができる。作動中のシステムの状態は、一般に、システムが完全に使用可能であり、完全に通電されている状態を表す。システム構成要素の一部又は全部が使用されているのではない場合等のいくつかの条件下では、作動状態から低電力システム状態にエントリすることによって、構成要素の一部又は全部の電力が低減される。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態に係る、例示的な処理デバイスのブロック図である。 いくつかの実施形態に係る、図1処理デバイスの追加の詳細を示すブロック図である。 いくつかの実施形態に係る、例示的なシステムオンチップデバイスのブロック図である。 いくつかの実施形態に係る、例示的なシステム管理ユニットのブロック図である。 いくつかの実施形態に係る、処理デバイスの構成要素をより深いスリープ状態に直接遷移させる全体的な例示的な方法を示すフロー図である。 いくつかの実施形態に係る、図5のブロック502に示される持続期間監視プロセスのためのより詳細な方法を示すフロー図である。 いくつかの実施形態に係る、2つの異なるスリープ状態のための例示的なタイミングシーケンスを示す図である。 いくつかの実施形態に係る、図5のブロック504に示される持続期間予測プロセスのためのより詳細な方法を示すフロー図である。 いくつかの実施形態に係る、図5のブロック506に示されるスリープ状態選択プロセスのためのより詳細な方法を示すフロー図である。 いくつかの実施形態に係る、図5のブロック510に示されるスリープ状態昇格プロセスのためのより詳細な方法を示すフロー図である。
中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(GPU)及び加速処理ユニット(accelerated processing unit、APU)等の処理デバイス内の構成要素は、処理デバイスの一部を非アクティブ化するか、又は、より低い動作周波数若しくは電圧で動作させることができる異なる電力管理状態で動作させることができる。例えば、処理デバイス構成要素に利用可能な電力管理状態は、アクティブ状態、アイドル状態、電力ゲートされた状態等を含み得る。アクティブ状態では、構成要素は命令を実行し、公称動作周波数及び動作電圧で動作する。アイドル状態では、構成要素は命令を実行せず、より低い動作周波数又は動作電圧で動作することができる。電力ゲートされた状態では、例えば、電力ゲートされた信号がヘッダトランジスタのゲートに印加された場合に構成要素に供給される電力を遮断するヘッダトランジスタを使用することによって、電源が構成要素から切断される。アイドル状態及び電力ゲートされた状態は、スリープ状態と呼ばれることがあり、複数レベルのスリープ状態が処理デバイスによって実装されることがある。少なくともいくつかの実装形態では、最低(最も浅い)スリープ状態レベルにある間、処理デバイスの構成要素は、アクティブ状態で動作している場合よりも少ない電力を消費するが、次に高い(深い)スリープ状態レベルよりも多くの電力を消費する。構成要素が最高(最も深い)スリープ状態レベルに置かれる場合、構成要素は、典型的に電力ゲートされる。
処理デバイスは、処理デバイスの構成要素によって実行されるアクティビティがない場合に、1つ以上の構成要素をアクティブ状態からスリープ状態に遷移させることによって電力を節約することができる。例えば、構成要素が比較的長い時間アイドル状態である場合、構成要素に供給される電力がゲートされ、待機電力消費及び漏れ電力消費を低減することができる。しかしながら、処理装置又はその構成要素を異なるスリープ状態間で遷移させることは、処理装置によって消費されるエネルギー及び処理装置の性能に重要な影響を及ぼす。例えば、アクティブ状態又はより深いスリープ状態レベルの何れかからスリープ状態への遷移又はスリープ状態からの遷移は、遷移によって引き起こされる遅延に起因する性能コストを課す。遷移の前に実行される動作に起因して、エネルギーコストも発生し得る。構成要素が電力ゲートされた深いスリープレベル状態からプロセッサコアをアクティブ状態に戻すためにも性能コストが発生する。したがって、より深いスリープ状態がより浅いスリープ状態よりも効率的であるのは、より深いスリープ状態に関連付けられた電力節約が、より深いスリープ状態へのエントリ遷移及びより深いスリープ状態からのエグジット遷移の間に消費される電力を超えるように、構成要素がより深いスリープ状態に置かれることが十分に長い場合のみである。
スリープ状態管理システム/アルゴリズムは、スリープ持続期間に対するエネルギー性能の損益分岐コストに基づいて適切なスリープ状態レベルを判定することから利益を得ることができる。しかしながら、スリープ持続期間が構成要素に対してどれだけ長くなるかについての先験的な知識は、典型的には利用可能ではない。したがって、多くの従来のスリープ状態管理システムは、スリープ状態に置かれている構成要素の状態を保存する前にヒステリシス持続期間を導入することによって、短すぎるスリープ持続期間をフィルタリングしようと試みる。ヒステリシス持続期間を導入することは、通常、ヒステリシス持続期間が典型的に長すぎるので(例えば、ミリ秒のオーダー)、エネルギー非効率をもたらす。多くのタイプの作業負荷のためのスリープ持続期間は、概して、サブミリ秒範囲内であり、時折、より長いスリープ持続期間がミリ秒範囲内で続く。したがって、長いエントリヒステリシスは、より短いスリープ持続期間(例えば、サブミリ秒)が無視され、単一のスリープ要求ごとにより深いスリープ状態にエントリすること(0エントリヒステリシス)をもたらす。また、従来のスリープ状態管理システムは、通常、多くの調整可能なパラメータ、スリープ状態エントリへの非適応的なアプローチを有し、将来の改善/拡張のためのフレームワークを欠き、オペレーティングシステム電力管理アルゴリズムによって制御され得る。これらの特性の全ては、従来のスリープ状態管理システムの非効率を更に増大させる。
本開示は、エントリヒステリシス期間においてエネルギーを消費する代わりに、構成要素をより深いスリープ状態に直接遷移させることによって、処理デバイスのエネルギー効率を改善するためのシステム及び方法の実施形態を説明する。以下でより詳細に説明されるように、処理デバイス及びその構成要素のスリープ状態持続期間は、履歴スリープ状態持続期間情報を生成するために監視及び記録される。履歴スリープ持続期間情報は、構成要素の次回のスリープ状態持続期間を予測するために使用される。構成要素に利用可能な1つ以上のスリープ状態について、損益分岐持続期間が判定される。損益分岐持続期間は、スリープ状態に遷移することの利益がスリープ状態に遷移するコストを超えるスリープ状態持続期間を示す。予測されたスリープ持続期間は、1つ以上のスリープ状態に対して判定された損益分岐持続期間と比較され、構成要素のスリープ状態は、この比較に基づいて選択される。次いで、構成要素は、選択されたスリープ状態に遷移される。少なくともいくつかの実施形態では、構成要素の現在のスリープ状態は、構成要素が1つ以上のスリープ状態持続期間閾値を満たす持続期間にわたって現在のスリープ状態内に置かれた場合に、より深いスリープ状態に昇格される。少なくともいくつかの実施形態では、決定誤差フィードバック機構は、後に予測されるスリープ持続期間を調整して、それに基づいてスリープ状態選択における誤差を低減するために実装される。また、少なくともいくつかの実施形態では、入力/出力デバイス(例えば、周辺機器相互接続エクスプレス(peripheral component interconnect express、PCIe)デバイス、ユニバーサルシリアルバス(universal serial bus、USB)デバイス等)からのレイテンシトレランスレポート(Latency Tolerance Report、LTR)値、又は、アドバンストプログラマブルインタラプトコントローラ(Advanced Programmable Interrupt Controller、APIC)インタラプトのためのタイマ値等の情報が、構成要素のスリープ状態を選択するために、予測されたスリープ持続期間に加えて使用される。
図1は、本明細書で説明される電力状態管理技術が実装され得る例示的な処理デバイス100のブロック図である。少なくともいくつかの実施形態では、処理デバイス100は、例えば、コンピュータ、モバイルデバイス、ゲームデバイス、タブレットコンピューティングデバイス、ウェアラブルコンピューティングデバイス、セットトップボックス、テレビ、又は、別のタイプのコンピューティングシステム若しくはデバイスを含む。デバイス100は、少なくともいくつかの実施形態では、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を備える。処理デバイス100は、少なくともいくつかの実施形態では、入力ドライバ112及び出力ドライバ114も備える。処理デバイス100は、図1に示されていない追加の構成要素を含み得ることを理解されたい。
少なくともいくつかの実施形態では、プロセッサ102は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、同じダイ若しくは複数のダイ上に(例えば、マルチチップモジュール(multi-chip-module、MCM)を使用して)位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUである。メモリ104は、少なくともいくつかの実施形態では、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM(DRAM)、キャッシュ等)を含む。
記憶装置106は、少なくともいくつかの実施形態では、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ等の固定又はリムーバブル記憶装置を備える。少なくともいくつかの実施形態では、入力デバイス108は、例えば、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線信号の送信/受信のための無線ローカルエリアネットワークカード)等を備える。出力デバイス110は、少なくともいくつかの実施形態では、例えば、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線信号の送信/受信のための無線ローカルエリアネットワークカード)等を備える。
少なくともいくつかの実施形態では、入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、少なくともいくつかの実施形態では、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。なお、処理デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合も同様に動作する。出力ドライバ114は、少なくともいくつかの実施形態では、表示デバイス118に連結された加速処理デバイス(accelerated processing device、APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにピクセル出力を表示デバイス118に提供する。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行う1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて行われるものとして説明されているが、他の実施形態では、APD116によって行われるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によって駆動されない同様の能力を有する他のコンピューティングデバイスによって行われ、表示デバイス118にグラフィックス出力を提供する。例えば、少なくともいくつかの実施形態では、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行う。代替的に、少なくともいくつかの実施形態では、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行う。
図2は、処理デバイス100のブロック図であり、APD116上での処理タスクの実行に関する追加の詳細を示す図である。少なくともいくつかの実施形態では、プロセッサ102は、メモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、少なくともいくつかの実施形態では、オペレーティングシステム202、カーネルモードドライバ204、及び、アプリケーション206を備える。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム202は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。カーネルモードドライバ204は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション206)にアプリケーションプログラミングインターフェース(application programming interface、API)を提供して、APD116の様々な機能にアクセスすることによって、APD116の動作を制御する。また、カーネルモードドライバ204は、少なくともいくつかの実施形態では、APD116の処理構成要素(以下で更に詳細に説明されるSIMDユニット210等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。
少なくともいくつかの実施形態では、APD116は、並列処理に適し得るグラフィックス動作及び非グラフィックス動作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、少なくともいくつかの実施形態では、プロセッサ102から受信したコマンドに基づいて、グラフィックスパイプライン動作(ピクセル動作、幾何学計算等)及び表示デバイス118への画像のレンダリングを実行するために使用される。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は他のタスクに関連する動作等のように、グラフィックス動作に直接関連しない計算処理動作を実行する。
APD116は、少なくともいくつかの実施形態では、1つ以上のSIMDユニット210(210-1~210-6として示される)を含む計算ユニット208(208-1~208-3として示される)を備え、SIMDユニットは、SIMDパラダイムに従って並列の方式でプロセッサ102の要求に応じて動作を行う。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、同じプログラムを、異なるデータで実行する。一例では、各SIMDユニット210は、16個のレーンを備え、各レーンは、SIMDユニット210内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することができる。レーンは、全てのレーンが所定の命令を実行するわけではない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き枝又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
少なくともいくつかの実施形態では、計算ユニット208内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、少なくともいくつかの実施形態では、単一のSIMDユニット210上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行される。いくつかの実施形態では、これらのウェーブフロントは、単一のSIMDユニット210上で順次実行されるか、又は、異なるSIMDユニット210上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、少なくともいくつかの実施形態では、単一のSIMDユニット210上で同時に実行することができるワークアイテムの最大集合体を表す。したがって、プロセッサ102から受信されたコマンドが、特定のプログラムを単一のSIMDユニット210上で同時に実行させることができない程度にプログラムが並列化されることを示す場合、そのプログラムは、2つ以上のSIMDユニット210上に並列化されるか、又は、同じSIMDユニット210上で直列化される(又は並列化及び直列化の両方が行われる)ウェーブフロントに分けられる。スケジューラ212は、異なる計算ユニット208及びSIMDユニット210上の様々なウェーブフロントのスケジューリングに関連する動作を行う。
計算ユニット208によって与えられる並列処理は、少なくともいくつかの実施形態では、ピクセル値計算、頂点変換及び他のグラフィックス動作等のグラフィックス関連動作に適切である。したがって、場合によっては、プロセッサ102からのグラフィックス処理コマンドを受け入れるグラフィックスパイプライン214は、並列で実行するために計算タスクを計算ユニット208に提供する。
少なくともいくつかの実施形態では、計算ユニット208は、グラフィックスに関連しないか、又は、グラフィックスパイプライン214の「通常の」動作の一部(例えば、グラフィックスパイプライン214の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション206又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
図3は、本明細書で説明される電力管理技術が実装され得る処理デバイス300の別の例を示すブロック図である。図3に示す例では、処理デバイス300は、システムオンチップ(system-on-a-chip、SoC)デバイス300である。少なくともいくつかの実施形態では、SoCデバイス300は、データファブリック302、CPUコア複合体304、GPU306、マルチメディア処理ユニット(multimedia processing unit、MPU)308、ディスプレイインターフェース310、I/Oハブ312、メモリコントローラ314、及び、システム管理ユニット(system management unit、SMU)316等の構成要素を含む。これら及び他の構成要素のうち1つ以上は、少なくともいくつかの実施形態では、ロジック、セル、又は、集積回路(integrated circuit、IC)レイアウトの再利用可能なユニットである、知的財産(intellectual property、IP)ブロック/コアから構成される。
データファブリック302は、少なくとも1つの実施形態において、SoCデバイス300の様々な構成要素間の通信相互接続を提供するための回路を含む。任意の適切な相互接続ハードウェアが、様々な実装において使用される。いくつかの実装形態では、物理的観点から、データファブリック302は、SoCデバイスの中心位置に実装されるか、又は、SoCデバイス300にわたって複数のハブに分散され、適切な通信媒体(例えば、バス)を使用して相互接続されるかの何れかである。論理的観点から、データファブリック302は、データフローの中心に位置し、SoCデバイス300の異なる構成要素(IPブロックを含む)のアイドル状態に関する情報は、データファブリック302に集中される(例えば、記憶される)。いくつかの実装形態では、この情報は、SMU316によって、Socデバイス300の1つ以上の構成要素をスリープ状態等の電力管理状態に遷移させる適切な時間を判定する際に使用される。
少なくともいくつかの実施形態では、CPUコア複合体304は、1つ以上の適切なCPUコアを含む。少なくともいくつかの実施形態では、複合体内のコアの各々は、プライベートキャッシュを含み、複合体内のコアの全ては、共有キャッシュと通信する。少なくともいくつかの実施形態では、SoCデバイス300は、複数のCPUコア複合体を含む。GPU306は、少なくともいくつかの実施形態では、任意の適切なGPU又はGPUハードウェアの組み合わせを含む。MPU308は、少なくともいくつかの実施形態では、オーディオコプロセッサ、撮像信号プロセッサ、ビデオコーデック等の1つ以上の適切なMPUを含む。
ディスプレイインターフェース310は、少なくともいくつかの実施形態では、1つ以上のディスプレイを駆動するための任意の適切なハードウェアを含む。I/Oハブ312は、少なくともいくつかの実施形態では、データファブリック302をI/Oデバイス318とインターフェースするための任意の適切なハードウェアを含む。I/Oデバイス318は、少なくともいくつかの実施形態では、ユニバーサルシリアルバス(USB)、周辺機器相互接続エクスプレス(PCIe)バス、不揮発性メモリホストコントローラインターフェース(non-volatile memory host controller interface、NVMe)バス、シリアルアドバンストテクノロジーアタッチメント(serial advanced technology attachment、SATA)バス、ギガビットイーサネット(登録商標)(xUBE)、集積回路間(inter-integrated circuit、I2C)バス、セキュアデジタル(secure digital、SD)インターフェース、汎用入出力(general-purpose input/output、GPIO)接続、センサフュージョンI/O接続、及び/又は、任意の他の適切なI/Oハードウェアのうち1つ以上を含む。したがって、少なくともいくつかの実施形態では、I/Oハブ312は、USBホストコントローラ、PCIeルートコンプレックス、NVMeホストコントローラ、SATAホストコントローラ、xGBEインターフェース、I2Cノード、SDホスト、GPIOコントローラ、センサフュージョンコントローラ、及び/又は、任意の他の適切なI/Oデバイスインターフェースを含む。
メモリコントローラ314は、少なくともいくつかの実施形態では、メモリ320とインターフェースするための任意の適切なハードウェアを含む。SMU316は、少なくともいくつかの実施形態では、システム構成/ステータスレジスタ及びメモリを管理及びアクセスし、クロック信号を生成し、電力レール電圧を制御し、SoCデバイス300のためのセキュリティアクセス及びポリシーを実施するためのハードウェア及びファームウェアを備える。少なくともいくつかの実施形態では、SMU316は、システム管理通信ネットワーク(図示せず)を使用してSoCデバイス300の他のブロックと相互接続される。また、SMU316は、少なくともいくつかの実施形態では、CPUコア複合体304及びSoCデバイス300の他の構成要素(個々のIPブロックを含む)の熱及び電力状態を管理する。したがって、SMU316は、CPUコア複合体304のコア及びIPブロック等のようなSoCデバイスの構成要素及びサブ構成要素に供給される電力を制御することができる。少なくともいくつかの実施形態では、SMU316は、構成要素に供給される動作周波数又は動作電圧を変更することによって、SoC構成要素(例えば、CPUコア複合体304のコア)の動作点を調整するように構成される。
少なくともいくつかの実施形態では、SMU316は、SoCデバイス300の構成要素を1つ以上の電力管理状態へ/から遷移させるように構成される。本説明を通じて、SoCデバイス300の構成要素を1つ以上の電力管理状態へ/から遷移させることへの言及は、SOCデバイス300全体、CPUコア複合体304、GPU306、MPU308、I/Oハブ312等の構成要素全体、又は、CPUコア複合体304のコア若しくはIPブロック等の構成要素のサブ構成要素を遷移させることを含むことに留意されたい。電力管理状態の例は、アクティブ状態と、アイドル状態及び電力ゲートされた状態等の1つ以上のスリープ状態と、を含む。スリープ状態は、低電力状態又はより低い電力状態と呼ばれることもある。アクティブ状態では、構成要素は命令を実行し、公称動作周波数及び動作電圧で動作する。スリープ状態では、構成要素は、典型的に、命令を実行又は動作せず、より低い動作周波数/電圧で動作することができる。また、構成要素は、電源が構成要素から切断されるように、スリープ状態において電力ゲートされ得る。例えば、SMU316は、電源に接続されたゲートロジックに信号又は命令を発行する。この例では、ゲート論理は、構成要素に供給される電力を制御し、1つ以上の回路を開いて構成要素への電流の流れを遮断することによって電力をゲートする。少なくともいくつかの実施形態では、複数レベルのスリープ状態が実装される。スリープ状態レベルが高まるにつれて、以前のスリープ状態レベルよりも少ない電力が構成要素によって消費される。最低スリープ状態レベルは、最も浅いスリープ状態と呼ぶことができ、最高スリープ状態レベルは、最も深いスリープ状態と呼ぶことができる。浅いスリープ状態は、深い(高電力の)スリープ状態よりも低電力のスリープ状態である。構成要素を1つ以上のスリープ状態に遷移させることによって、電力を節約することができる。
より深いスリープ状態は、より浅いスリープ状態よりも多くの電力を節約し得るが、より深いスリープ状態は、典型的には、遷移持続期間において性能及び電力ペナルティを課す。例えば、スリープ状態のセットS={S1,S2,S3,...,Sn}を想定する。ここで、Snは、プラットフォームによってサポートされる最も深いスリープ状態である。構成要素が第3のスリープ状態S3にエントリするためには、構成要素及びそのサブ構成要素の電源を切る論理シーケンスにより、構成要素は典型的には、最初に第1のスリープ状態S1にエントリし、次いて第2のスリープ状態S2に遷移し、その後に第3のスリープ状態S3にエントリする。同様に、第3のスリープ状態S3からアクティブ状態に遷移するために、構成要素は、典型的には、第3のスリープ状態S3から第2のスリープ状態S2に、次いで第2のスリープ状態S2から第1のスリープ状態S1に順次遷移し、その後にアクティブ状態にエントリする。これらの順次のスリープ状態の各々にエントリすることは、時間と電力の両方を消費する。より詳細には、各スリープ状態への遷移及び各スリープ状態からの遷移は、SMU316によって行われる様々なアクションを伴い、これらのアクションは、そのような遷移のために余分な時間及び電力を必要とする。より深いスリープ状態は、より浅いスリープ状態よりも、エントリ及びエグジットのためにより多くの(又はよりリソース集約的な)アクションを必要とする。また、より深いスリープ状態は、典型的には、より浅いスリープ状態よりもアクティブ/作業状態に回復するのにより長い時間がかかり、したがって、より大きなレイテンシペナルティを負う。
少なくともいくつかの実施形態では、SMU316は、構成要素をスリープ状態に遷移させるための高速スリープ状態遷移モードを実装する。以下でより詳細に説明されるように、SMU316は、スリープ状態に遷移することの利益がスリープ状態に遷移するコストを超える(又は少なくとも等しい)、予測されたスリープ状態持続期間及び判定された損益分岐持続期間に基づいて、SoCデバイス300の構成要素のスリープ状態を選択する。SMU316は、1つ以上のスリープ状態について、予測されたスリープ持続期間を損益分岐持続期間と比較する。この比較に基づいて、SMU316は、構成要素がより深いスリープ状態置かれることが、より深いスリープ状態に関連付けられた電力節約が、より深いスリープ状態へのエントリ遷移及びより深いスリープ状態からのエグジット遷移の間に消費される電力を超える(又は少なくとも等しい)ほど十分に長いか否かを判定する。予測されたスリープ持続期間が、より深いスリープ状態について判定された損益分岐持続期間を満たす場合、SMU316は、構成要素をより深いスリープ状態に遷移させる。しかしながら、予測されたスリープ持続期間が、より深いスリープ状態の判定された損益分岐持続期間を満たさない場合、SMU316は、構成要素をより浅いスリープ状態に遷移させる。
したがって、SMU316の高速スリープ状態モードは、SMU316が、エントリヒステリシス期間においてエネルギーを消費する代わりに、構成要素をより深いスリープ状態に直接遷移させることができるので、デバイスのエネルギー効率を改善する。少なくともいくつかの実施形態では、高速スリープ状態遷移モードは、SoCデバイス300のハードウェア若しくはソフトウェア構成要素、又は、SoCデバイス300に連結された別のデバイスによって有効化又は無効化され得る。高速スリープ状態遷移モードが無効にされる場合、従来の電力状態管理動作をSMU316によって実施することができる。少なくともいくつかの実施形態では、高速スリープ状態遷移モードが有効であるか無効であるかを他のハードウェア、ソフトウェア又はオペレーティングシステムに通知するために、モデル固有レジスタ(model-specific register、MSR)等のレジスタにビットを記憶することができる。
図4は、少なくともいくつかの実施形態に係るSMU316のより詳細な図を示すブロック図である。SMU316は、SoCデバイス300によって実装されるものとして本明細書で説明されているが、SMU316は、図1の処理デバイス100によって実装されてもよいことに留意されたい。図4に示す例では、SMU316は、監視モジュール402、スリープ持続期間予測モジュール404、スリープ状態選択モジュール406、スリープ状態昇格モジュール408、決定誤差フィードバックモジュール410、及び、1つ以上の記憶装置412を備える。少なくともいくつかの実施形態では、これらの構成要素のうち1つ以上は、中央マイクロコントローラ、個々のIP管理コントローラ等のような、SMU316とは異なるSoCデバイス300(又は処理デバイス100)の別の構成要素において実装されることに留意されたい。
監視モジュール402は、少なくともいくつかの実施形態では、SoCデバイス300の構成要素のスリープ状態持続期間を監視及び記録する。少なくともいくつかの実施形態では、構成要素のスリープ状態持続期間(τ)は、SMU316が最低レベルのスリープ状態(例えば、スリープ状態S0)の割り込みを受信してから、構成要素に対する任意のウェイクイベントを受信するまでの時間(持続期間)として定義される。別の言い方をすれば、構成要素のスリープ状態持続期間は、構成要素がアクティブ状態からスリープ状態に遷移される第1の遷移(エントリヒステリシスを含むことができる)の開始と、構成要素がスリープ状態からアクティブ状態に戻るように遷移される第2の遷移の開始と、の間の時間である。他の実施形態では、スリープ状態持続期間は、異なるパラメータを使用して定義されることに留意されたい。少なくともいくつかの実施形態では、監視モジュール402は、1つ以上の内部タイマを使用して、構成要素のスリープ状態持続期間を記録する。
監視モジュール402は、少なくともいくつかの実施形態では、スリープ状態持続期間を履歴持続期間情報414として1つ以上の記憶装置412に記録/記憶する。少なくともいくつかの実施形態では、1つ以上の記憶装置412は、SMU316内にローカルに置かれるか、SMU316からリモートに置かれるか、又は、それらの組み合わせである。履歴持続期間情報414は、少なくともいくつかの実施形態では、デバイスレベル、構成要素レベル、サブ構成要素レベル、それらの組み合わせ等で記憶される。履歴持続期間情報414がデバイスレベルで記録及び記憶される場合、SoCデバイス300の全ての構成要素にわたる過去n個のスリープ状態持続期間についてのエントリが記憶される。例えば、n=32である場合、履歴持続期間情報414は、この例では、SoCデバイス300の構成要素の何れかに関連付けられた以前の32個のスリープ状態持続期間についてのエントリを備える。履歴持続期間情報414が構成要素レベル又はサブ構成要素レベルで記録及び記憶される場合、各構成要素又はサブ構成要素は、それ自体の履歴持続期間エントリに関連付けられる。例えば、n=32である場合、履歴持続期間情報414は、この例では、第1の構成要素の以前の32個のスリープ持続期間についてのエントリ、第2の構成要素の以前の32個のスリープ状態持続期間についてのエントリ等を備える。少なくともいくつかの実施形態では、各構成要素又はサブ構成要素は、それに関連付けられた履歴持続期間情報414を備える個別のデータ構造に関連付けられる。少なくともいくつかの実施形態では、監視モジュール402によって記録される以前のスリープ状態持続期間の数は、設定可能である。
スリープ持続期間予測モジュール404は、少なくともいくつかの実施形態では、履歴持続期間情報414を利用して、次回のスリープ状態の持続期間を予測する。例えば、SMU316が、所定の構成要素がアイドルであると判定した場合、スリープ持続期間予測モジュール404は、履歴持続期間情報414を処理して、構成要素の次回のスリープ状態の持続期間を予測する。少なくともいくつかの実施形態では、スリープ持続期間予測モジュール404は、予測されたスリープ状態持続期間416を1つ以上の記憶装置412に記憶する。
スリープ状態選択モジュール406は、少なくともいくつかの実施形態では、SoCデバイス300の構成要素の適切なスリープ状態を判定する。少なくともいくつかの実施形態では、スリープ状態選択モジュール406は、複数のスリープ状態からスリープ状態を選択し、その結果、消費されるエネルギーの量が最小になり、性能への影響が最小になる(本明細書では選択基準と呼ぶ)。スリープ状態選択モジュール406は、少なくともいくつかの実施形態では、予測スリープ状態持続期間416と、損益分岐持続期間418又は損益分岐閾値418とも呼ばれるスリープ状態損益分岐持続期間418と、に基づいて、選択基準を満たすスリープ状態を識別する。スリープ状態の損益分岐持続期間418は、スリープ状態に置かれることによって節約されるエネルギーが、スリープ状態の内外に遷移するためのエネルギーコストに少なくとも等しいように、構成要素がスリープ状態に留まるべき時間量を示す。例えば、スリープ状態S2の損益分岐持続期間418は、スリープ状態S2に置かれることによって節約されるエネルギーがスリープ状態S2の内外に遷移するためのエネルギーコストに少なくとも等しくなるように、構成要素がスリープ状態S2に留まるべき時間量を示す。
スリープ状態選択モジュール406は、少なくともいくつかの実施形態では、損益分岐持続期間418を1つ以上の記憶装置412に記憶する。少なくともいくつかの実施形態では、スリープ状態選択モジュール406は、構成要素のスリープ状態を選択するために、1つ以上のI/Oデバイス318(例えば、PCIeデバイス、USBデバイス等)、APIC割り込みタイマ値、又は、それらの組み合わせに関連付けられたレイテンシトレランス情報420を使用する。レイテンシトレランス情報420は、少なくともいくつかの実施形態では、I/Oデバイス318のビジーレベルを示す。APIC割り込みタイマ値は、次のAPIC割り込みまでの時間を示す。スリープ状態が選択されると、SMU316は、1つ以上の動作(例えば、キャッシュをフラッシュする、クロックをゲートする、電圧レールの電源を切る等)を実行することによって、構成要素を選択されたスリープ状態に遷移させることを進める。
スリープ状態昇格モジュール408は、少なくともいくつかの実施形態では、スリープ状態選択モジュール406によって誤った(効率が低い)スリープ状態が選択されたと判定された場合、修正動作を行う。例えば、スリープ状態昇格モジュール408は、選択されたスリープ状態にある間に構成要素を監視し、構成要素が所定の閾値よりも長く、選択されたスリープ状態に置かれているかどうかを判定する。そうである場合、スリープ状態昇格モジュール408は、少なくともいくつかの実施形態では、構成要素を次のより深いスリープ状態に遷移させる。
決定誤差フィードバックモジュール410は、少なくともいくつかの実施形態では、誤差を検出するために、スリープ状態選択モジュール406によって行われるスリープ状態決定を監視する。検出された誤差の例として、より深いスリープ状態が選択されるべきであった場合に、より浅いスリープ状態を選択すること、又は、より浅いスリープ状態が選択されるべきであった場合に、より深いスリープ状態を選択することが挙げられる。誤ったスリープ状態選択は、例えば、誤ったスリープ持続期間予測の結果である。したがって、少なくともいくつかの実施形態では、決定誤差フィードバックモジュール410は、スリープ持続期間予測モジュール404がその後続のスリープ持続期間予測を調整してスリープ状態選択誤差を低減するように、スリープ持続期間予測モジュール404に入力を提供する。
図5は、エントリヒステリシス期間においてエネルギーを消費する代わりに、構成要素をより深いスリープ状態に直接遷移させることによって、処理デバイスのエネルギー効率を改善するための1つの例示的な方法500の概要を示すフローチャートである。監視モジュール402は、ブロック502において、SoCデバイス300の構成要素のスリープ状態持続期間を監視する。スリープ持続期間予測モジュール404は、ブロック504において、SoCデバイス300の構成要素がスリープ状態に遷移されるスリープ持続期間を予測する。スリープ状態選択モジュール406は、ブロック506において、予測されたスリープ持続期間に基づいて構成要素のスリープ状態を選択する。SMU316は、ブロック508において、構成要素を選択されたスリープ状態に遷移させる。少なくともいくつかの実施形態では、スリープ状態昇格モジュール408は、ブロック510において、構成要素の現在のスリープ状態をより深いスリープ状態に昇格させる。
図6は、図5のブロック502に示されるスリープ状態持続期間監視プロセスのためのより詳細な方法600の一例を示すフローチャートである。少なくともいくつかの実施形態では、監視モジュール402は、ブロック602において、SoCデバイス300の構成要素がスリープ状態に遷移されるべきであるという判定が行われたことに基づいて呼び出される。例えば、SMU316は、SoCデバイス300の1つ以上の構成要素がアイドルであることを示す割り込みを受信又は検出する。ブロック604において、構成要素がスリープ状態に遷移されるべきであると判定することに基づいて、1つ以上のタイマが初期化される。ブロック606において、ウェイクイベントが構成要素に対して検出/受信されたかどうかの判定が行われる。ウェイクイベントが検出されなかった場合、監視モジュール402は、ウェイクイベントが検出されるまでタイマを維持する。ウェイクイベントが構成要素に対して検出された場合、タイマはブロック608において停止される。少なくともいくつかの実施形態では、SMU316がスリープ状態要求割り込みを受信してから構成要素のウェイクイベントを受信するまでの間の記録された時間は、構成要素のスリープ状態持続期間と呼ばれる。しかしながら、スリープ持続期間のための他の構成も同様に適用可能である。
少なくともいくつかの実施形態では、構成要素のスリープ状態がより深いスリープ状態である場合、スリープ状態持続期間は、構成要素がより深いスリープ状態に置かれた時間の持続期間だけでなく、構成要素をより浅いスリープ状態を通って遷移させるのに費やされた時間も含む。例えば、スリープ状態のリストS=(S1,S2,...,Sn)を想定する。ここで、Snは、SoCデバイス300の構成要素によってサポートされる最も深いスリープ状態である。構成要素は、典型的には、構成要素又はそのサブ構成要素の電源を切る論理シーケンスにより、第1のスリープ状態S1にエントリし、その後により深いスリープ状態S2にエントリする。したがって、スリープ状態S2が構成要素に対して選択される場合、構成要素のスリープ状態持続期間は、構成要素がスリープ状態S2に置かれる時間と、構成要素をアクティブ状態から各より浅い状態に遷移させるのに費やされる時間と、を含む。少なくともいくつかの実施形態では、スリープ状態は、エントリヒステリシスに関連付けられる。これらの実施形態では、構成要素のスリープ状態持続期間は、スリープ状態のヒステリシスレイテンシも含む。
図7は、SoCデバイス300の構成要素を第1のスリープ状態(SLEEP1)及びより深い第2のスリープ状態(SLEEP2)に遷移させるためのタイミングの例示的な例を示す。特に、図7は、構成要素を第1のスリープ状態に遷移させるための第1のタイミングシーケンス702と、構成要素をより深い第2のスリープ状態に遷移させるための第2のタイミングシーケンス704と、を示す。図7に示す例では、Hは、エントリヒステリシスレイテンシに対応し、これは、構成要素をアクティブ状態からターゲットスリープ状態に遷移させる前の遅延期間である。Tは、構成要素を1つの状態から別の状態へ遷移させるのにかかる時間であるエントリレイテンシ及びエグジットレイテンシに対応し、Sは、構成要素がターゲットスリープ状態に置かれた時間の持続期間に対応する。図7に示される例では、第1のスリープ状態SLEEP1のためのタイミングシーケンス702は、エントリヒステリシスレイテンシ706(HSLEEP1)、エントリレイテンシ708(TSLEEP1,entry)、スリープ持続期間710(SSLEEP1,sleep)、及び、エグジットレイテンシ712(TSLEEP1,exit)を含む。したがって、この例では、第1のスリープ状態のスリープ状態持続期間τは、以下のように定義される。
(式1) τ=Hsleep1+Tsleep1,entry+Ssleep1,sleep
第2のスリープ状態SLEEP2のためのタイミングシーケンス704は、第1のスリープ状態のエントリヒステリシスレイテンシ706(HSleep1)、第1のスリープ状態のエントリレイテンシ708(TSleep1,entry)、第2のスリープ状態のエントリレイテンシ714(TSleep2,entry)、第2のスリープ状態のスリープ持続期間716(SSleep2,sleep)、第2のスリープ状態のエグジットレイテンシ718(TSleep2,exit)、及び、第1のスリープ状態のエグジットレイテンシ712(TSleep1,exit)を含む。したがって、この例では、第2のスリープ状態のスリープ状態持続期間τは次のように定義される。
(式2) τ=Hsleep1+Tsleep1,entry+Tsleep2,entry+Ssleep2,sleep
ここで図6に戻ると、監視モジュール402は、ブロック610において、構成要素について判定されたスリープ状態持続期間を履歴持続期間情報414として記録する。上述したように、履歴持続期間情報414は、少なくともいくつかの実施形態では、デバイスレベル、構成要素レベル、サブ構成要素レベル、それらの組み合わせ等で記憶される。少なくともいくつかの実施形態では、履歴持続期間情報414が構成要素又はサブ構成要素ごとに記録される場合、構成要素又はサブ構成要素は、それらのビジー/アイドルステータスをSMU316に通信する。構成要素ごとに持続期間情報414を記録することにより、SMU316は、アイドルパターンに基づいて、マルチメディアコア等の構成要素のクラスタの電力を最適化することができる。
図8は、図5のブロック504に示されるスリープ状態持続期間予測プロセスのためのより詳細な方法800の一例を示すフローチャートである。少なくともいくつかの実施形態では、スリープ持続期間予測モジュール404は、ブロック802において、SoCデバイス300の構成要素がスリープ状態に遷移されるべきであるという判定が行われたことに基づいて呼び出される。ブロック804において、履歴持続期間情報414が取得される。少なくともいくつかの実施形態では、履歴持続期間情報414は、SoCデバイス300全体について取得されるが、他の実施形態では、履歴持続期間情報414は、構成要素について取得される。履歴持続期間情報414は、ブロック806において、中央値計算、移動平均メトリック又は他の統計的メトリック、機械学習、それらの組合せ等の1つ以上の技術を使用して処理される。次に、ブロック808において、履歴スリープ状態持続期間情報を処理することに基づいて、構成要素の次回のスリープ状態持続期間416が予測される。例えば、履歴持続期間D={D1,D2,D3,...,DL}を想定する。ここで、Diは、i番目のスリープの持続期間を秒単位で表し、Lは記録されたスリープ持続期間の総数である。この例では、スリープ持続期間予測モジュール404は、D_median=median(D)を計算することによって構成要素の次回のスリープ状態持続期間416を予測し、それをスリープ状態選択ブロック506に送信して、適切なスリープ状態を決定する。次いで、予測されたスリープ状態持続期間416は、例えば、スリープ状態選択モジュール406による使用のために記憶又は送信されるか、又は、スリープ状態選択モジュール406に送信される。
少なくともいくつかの実施形態では、SMU316は、スリープ持続期間予測モジュール404に入力を提供する誤差フィードバックモジュール410を実装する。これらの実施形態では、スリープ持続期間予測モジュール404は、履歴持続期間情報414に加えて、誤差フィードバックモジュール410からのフィードバック入力を使用して、構成要素の次回のスリープ状態持続期間416を予測する。誤差フィードバックモジュール410は、少なくともいくつかの実施形態では、予測されたスリープ状態持続期間416に基づいてスリープ状態選択モジュール406によって行われた誤ったスリープ状態選択の数を監視する。一例では、スリープ状態選択は、より深いスリープ状態が選択されているが、構成要素の実際のスリープ状態持続期間は、より浅いスリープ状態が選択されるべきであった場合に、誤っていると判定される。別の例では、より浅いスリープ状態が選択されたが、構成要素の実際のスリープ状態持続期間は、より深いスリープ状態が選択されるべきであった場合、スリープ状態選択は誤っている。誤差フィードバックモジュール410は、補正等の入力をスリープ持続期間予測モジュール404に提供するために、比例積分微分(proportional-integral-derivative、PID)コントローラ等の1つ以上の機構を実装する。スリープ持続期間予測モジュール404は、誤差フィードバックモジュール410から受信された入力を実装して、その予測動作を調整して、より正確な予測スリープ状態持続期間416を提供する。例えば、スリープ持続期間予測モジュール404は、フィードバック入力を使用して、SoCデバイス300の構成要素のスリープ状態持続期間を予測するための1つ以上のパラメータを調整する。
図9は、図5のブロック506に示されるスリープ状態選択プロセスのためのより詳細な方法900の一例を示すフローチャートである。方法900では、ブロック902において、SoCデバイス300の構成要素に利用可能な1つ以上のスリープ状態について損益分岐持続期間418が判定される。上述したように、所定のスリープ状態の損益分岐持続期間418は、スリープ状態に置かれることによって節約されるエネルギーが、より浅いスリープ状態に遷移し、そこに留まることのみによって消費されるエネルギーに少なくとも等しいように、構成要素がスリープ状態に留まるべき時間量である。所定のスリープ状態のエネルギーは、少なくともいくつかの実施形態では、所定のスリープだけでなく、任意のより低いレベルのスリープ状態にも基づいて判定される。例えば、スリープ状態のリストS=(S1,S2,...,Sn)を想定する。ここで、Snは、SoCデバイス300の構成要素によってサポートされる最も深いスリープ状態である。上述したように、構成要素は、典型的には、構成要素又はそのサブ構成要素に電力供給するための論理シーケンスにより、第1のスリープ状態S1にエントリし、その後にスリープ状態S2にエントリする。したがって、この例では、スリープ状態S2のためのエネルギーは、(1)スリープ状態S1及びS2にエントリするために必要とされるエネルギー、(2)スリープ状態S1及びS2に留まるために必要とされるエネルギー、及び、(3)スリープ状態S1及びS2をエグジットするのに必要なエネルギー、に基づいて計算される。
例えば、図7に戻って参照すると、スリープ状態選択モジュール406は、所定の(予測された)スリープ状態持続期間τについてのスリープ状態SLEEP1シーケンス702及びSLEEP2シーケンス704のためのエネルギー(E)を以下のように判定する。
(式3)
sleep1=(Hsleep1・Psleep0)+(Tsleep1,entry・Psleep1,entry)+((τ-(Hsleep1+Tsleep1,entry))・Psleep1)+(Tsleep1,exit・Psleep1,exit
ここで、Psleepは、対応するスリープ状態に置かれるときに消費される電力であり、Pentryは、スリープ状態へのエントリの間に消費される電力であり、Pexitは、スリープ状態からのエグジットの間に消費される電力である。
(式4)
sleep2=(Hsleep1・Psleep0)+(Tsleep1,entry・Psleep1,entry)+(Tsleep2,entry・Psleep2,entry)+(τ-(Hsleep1+Tsleep1,entry+Tsleep2,entry))・Psleep2+(Tsleep2,exit・Psleep2,exit)+(Tsleep1,exit・Psleep1,exit
スリープ状態選択モジュール406は、スリープ状態及び1つ以上のより浅いスリープ状態について計算されたエネルギーEに基づいて、所定のスリープ状態の損益分岐持続期間418を判定する。例えば、少なくともいくつかの実施形態では、スリープ状態選択モジュール406は、スリープ状態のエネルギーEが1つ以上の以前のスリープ状態のエネルギーに等しい場合に、τの値として所定のスリープ状態の損益分岐持続期間418を判定する。したがって、現在の例では、スリープ状態選択モジュール406は、Esleep1=Esleep2,である場合に、スリープ状態SLEEP2の損益分岐持続期間(τ)418をτの値として次式に従って計算する。
Figure 2024512468000002
ここで図9に戻ると、ブロック904において、構成要素の予測されたスリープ状態持続期間416は、構成要素に利用可能なスリープ状態のうち1つ以上について判定された損益分岐持続期間418と比較される。ブロック906において、この比較に基づいてスリープ状態が選択される。少なくともいくつかの実施形態では、最も深いスリープ状態は、構成要素の予測スリープ状態持続期間416が、選択されたスリープ状態の損益分岐持続期間418を満たすように選択される。例えば、第1のスリープ状態と、より深い第2のスリープ状態と、を想定する。この例では、第2のスリープ状態の損益分岐持続期間/閾値418は1.5ミリ秒である。したがって、構成要素の予測されたスリープ状態持続期間416が1.5ミリ秒に等しいか、又は、他の実施形態では1.5ミリ秒よりも大きい場合、スリープ状態選択モジュール406は、構成要素に対してより深い第2のスリープ状態を選択する。しかしながら、構成要素の予測されたスリープ状態持続期間416が1.5ミリ秒未満であり、他の実施形態では1.5ミリ秒よりも小さい場合、スリープ状態選択モジュール406は、構成要素に対してより浅い第1のスリープ状態を選択する。構成要素に対してスリープ状態が選択されると、制御は図5のブロック508へ進み、構成要素が選択されたスリープ状態に遷移される。
少なくともいくつかの実施形態では、スリープ状態選択モジュール406は、構成要素のスリープ状態を選択する場合に、I/Oデバイス318のレイテンシトレランス情報420を使用する。レイテンシトレランス情報420は、少なくともいくつかの実施形態では、関連付けられたI/Oデバイス318のビジーレベルを示す値を含む。一例では、長い値はアイドルであることを示し、短い値はI/Oデバイス318がアクティブであることを示す。いくつかの実施形態では、レイテンシトレランス情報420は、1つ以上のレジスタを介してスリープ状態選択モジュール406に露出される。レイテンシトレランス情報420に加えて、少なくともいくつかの実施形態では、スリープ状態選択を行う場合に、アドバンストプログラマブルインタラプトコントローラ(APIC)値がスリープ状態選択モジュール406によって使用される。複数のAPICタイマがあり、満了すると、プロセッサをウェイクさせるために割込みを発行する。スリープ状態選択モジュール406に利用可能にされたAPICタイマ値は、次のAPIC割り込みまでの時間を示す。したがって、スリープ状態選択モジュール406は、少なくともいくつかの実施形態では、初期スリープ状態選択が更新されるべきかどうかを判定するために、次回の必須タイマ割込みを監視する。例えば、スリープ状態選択モジュール406が最初により深いスリープ状態を選択するが、レイテンシトレランス情報420がアクティブなI/Oデバイス318を示すか、又は、APIC値が所定の時間閾値内に割り込みが発行されることを示す場合、スリープ状態選択モジュール406は、そのスリープ状態選択をより浅いスリープ状態に更新する。
図10は、図5のブロック510に示されるスリープ状態昇格プロセスのためのより詳細な方法1000の一例を示すフローチャートである。方法1000では、ブロック1002において、構成要素のスリープ状態について1つ以上のスリープ状態昇格属性が判定される。例えば、構成要素が選択されたスリープ状態に置かれていた時間量(現在のスリープ状態持続期間)が判定される。少なくともいくつかの実施形態では、スリープ状態昇格モジュール408は、1つ以上のタイマを使用して、構成要素の現在のスリープ状態持続期間を判定する。別の例では、履歴持続期間情報414内の長いスリープ持続期間の割合又は数が識別される。長いスリープ持続期間は、少なくともいくつかの実施形態では、所定のスリープ持続期間閾値を超えるスリープ持続期間である。1つ以上のスリープ状態昇格属性は、ブロック1004において、スリープ状態昇格基準と比較される。ブロック1006において、1つ以上のスリープ状態昇格属性がスリープ状態昇格基準を満たすかどうかの判定が行われる。例えば、構成要素の現在のスリープ状態持続期間が閾値時間量以上であるかどうかの判定が行われる。別の例では、構成要素の現在のスリープ状態持続期間が閾値時間量以上であるかどうかの第1の判定が行われ、長いスリープ持続期間の割合/数が閾値割合/数以上であるかどうかの第2の判定が行われる。
1つ以上のスリープ状態昇格属性がスリープ状態昇格基準を満たさない場合、ブロック1008において、現在のスリープ状態が維持される(すなわち、スリープ状態は昇格されない)。次に、制御はブロック1012に進む。しかしながら、1つ以上のスリープ状態昇格属性がスリープ状態昇格基準を満たす場合、ブロック1010において、構成要素は、現在のスリープ状態から少なくとも次に深いスリープ状態に遷移される。ブロック1012において、ウェイクイベントが構成要素に対して検出されたかどうかの判定が行われる。構成要素のウェイクイベントが検出されなかった場合、制御フローはブロック1002に戻る。しかしながら、ウェイクイベントが検出された場合、ブロック1014において、構成要素のスリープ状態昇格モードを終了する。
本明細書で説明する電力管理技術は、エントリヒステリシス期間においてエネルギーを消費する代わりに、構成要素をより深いスリープ状態に直接遷移させることによって、処理デバイスのエネルギー効率を改善する。本明細書で説明される様々な実施形態は、ポストシリコンの立ち上げ時間/複雑さを低減するためにより少ない調整可能なパラメータを実装し、作業負荷適応型であることによって作業負荷の範囲にわたって向上した性能を提供し、スリープ状態予測システム/アルゴリズムをモジュール式にすることによって将来の拡張/改善を可能にし、予測システム/アルゴリズムをオペレーティングシステムのヒントから切り離す。
いくつかの実施形態では、上記の装置及び技術は、1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも称される)を含むシステムに実装される。少なくともいくつかの実施形態では、電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
少なくともいくつかの実施形態では、コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. 方法であって、
    処理デバイスの構成要素のスリープ状態持続期間を予測することと、
    予測された前記スリープ状態持続期間と少なくとも1つの持続期間閾値との比較に基づいて、前記構成要素を、複数のスリープ状態から選択されたスリープ状態に遷移させることであって、前記複数のスリープ状態の各スリープ状態は、前記複数のスリープ状態の前のスリープ状態よりも低電力状態である、ことと、を含む、
    方法。
  2. 前記構成要素を、選択された前記スリープ状態に遷移させることは、エントリヒステリシス遅延なしに前記構成要素を遷移させることを含む、
    請求項1の方法。
  3. 前記スリープ状態持続期間は、履歴スリープ状態持続期間情報に基づいて予測される、
    請求項1又は2の方法。
  4. 前記履歴スリープ状態持続期間情報は、前記処理デバイスに関連付けられた以前のスリープ状態の持続期間を含む、
    請求項3の方法。
  5. 前記少なくとも1つの持続期間閾値は、前記スリープ状態に置かれることによって節約されるエネルギーが、前記構成要素を前記スリープ状態へ及び前記スリープ状態から遷移させるためのエネルギーコストと少なくとも等しくなるように、前記構成要素が、前記少なくとも1つの持続期間閾値に関連付けられたスリープ状態に置かれる時間の持続期間を示す、
    請求項1~3の何れかの方法。
  6. 前記スリープ状態を選択することは、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たさないと判定することと、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たさないことに応じて、前記複数のスリープ状態のうち少なくとも第2のスリープ状態よりも高い電力状態である、前記複数のスリープ状態のうち第1のスリープ状態を選択することと、を含む、
    請求項1~5の何れかの方法。
  7. 前記スリープ状態を選択することは、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たすと判定することと、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たすことに応じて、前記複数のスリープ状態のうち少なくとも第2のスリープ状態よりも低い電力状態である、前記複数のスリープ状態のうち第1のスリープ状態を選択することと、を含む、
    請求項1~5の何れかの方法。
  8. スリープ状態の1つ以上の誤った選択が以前に行われたことを示すフィードバック入力を受信することと、
    前記フィードバック入力を受信したことに応じて、前記処理デバイスの構成要素のスリープ状態持続期間を予測するために使用される1つ以上のパラメータを調整することと、を含む、
    請求項1~7の何れかの方法。
  9. 前記構成要素に関連付けられた割込みが閾値時間内に発行されると判定することと、
    前記構成要素に関連付けられた割込みが前記閾値時間内に発行されると判定したことに応じて、前記複数のスリープ状態から異なるスリープ状態を選択することであって、前記異なるスリープ状態は、予測された前記スリープ状態持続期間を前記少なくとも1つの持続期間閾値と比較することに基づいて選択された前記スリープ状態よりも高い電力状態である、ことと、を含む、
    請求項1~8の何れかの方法。
  10. 前記構成要素が選択された前記スリープ状態に現在置かれている持続期間を判定することと、
    前記持続期間を閾値時間と比較することと、
    前記持続期間が前記閾値時間を満たすことに基づいて、前記構成要素を異なるスリープ状態に遷移させることであって、前記異なるスリープ状態は、選択された前記スリープ状態よりも低い電力状態である、ことと、を含む、
    請求項1~9の何れかの方法。
  11. 前記構成要素が選択された前記スリープ状態に現在置かれている持続期間を判定することと、
    前記処理デバイスに関連付けられた履歴スリープ状態持続期間のセットにおいて、閾値持続期間を満たすスリープ状態持続期間の割合を判定することと、
    前記持続期間を閾値時間と比較することと、
    前記スリープ状態持続期間の割合を閾値割合と比較することと、
    前記持続期間が前記閾値時間を満たし、前記スリープ状態持続期間の割合が前記閾値割合を満たすことに基づいて、前記構成要素を異なるスリープ状態に遷移させることであって、前記異なるスリープ状態は、選択された前記スリープ状態よりも低い電力状態である、ことと、を含む、
    請求項1~9の何れかの方法。
  12. 処理デバイスであって、
    プロセッサと、
    前記処理デバイスの構成要素のスリープ状態持続期間を予測するスリープ状態持続期間予測モジュールと、
    予測された前記スリープ状態持続期間と少なくとも1つの持続期間閾値との比較に基づいて、前記構成要素を、複数のスリープ状態から選択されたスリープ状態に遷移させるシステム管理ユニットであって、前記複数のスリープ状態の各スリープ状態は、前記複数のスリープ状態の前のスリープ状態よりも低電力状態である、システム管理ユニットと、を備える、
    処理デバイス。
  13. 前記システム管理ユニットは、前記構成要素を、エントリヒステリシス遅延なしに、選択された前記スリープ状態に遷移させる、
    請求項12の処理デバイス。
  14. 前記スリープ状態持続期間は、前記処理デバイスに関連付けられた以前のスリープ状態の持続期間を含む履歴スリープ状態持続期間情報に基づいて予測される、
    請求項12又は13の処理デバイス。
  15. スリープ状態選択モジュールを備え、
    前記スリープ状態選択モジュールは、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たさないと判定することと、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たさないことに応じて、前記複数のスリープ状態のうち少なくとも第2のスリープ状態よりも高い電力状態である、前記複数のスリープ状態のうち第1のスリープ状態を選択することと、
    によって、前記複数のスリープ状態から前記スリープ状態を選択する、
    請求項12~14の何れかの処理デバイス。
  16. スリープ状態選択モジュールを備え、
    前記スリープ状態選択モジュールは、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たすと判定することと、
    予測された前記スリープ状態持続期間が前記少なくとも1つの持続期間閾値を満たすことに応じて、前記複数のスリープ状態のうち少なくとも第2のスリープ状態よりも低い電力状態である、前記複数のスリープ状態のうち第1のスリープ状態を選択することと、
    によって、前記複数のスリープ状態から前記スリープ状態を選択する、
    請求項12~14の何れかの処理デバイス。
  17. 前記スリープ状態持続期間予測モジュールにフィードバック入力を提供するフィードバックモジュールであって、前記フィードバック入力は、1つ以上の誤ったスリープ状態選択が行われたことを示す、フィードバックモジュールを備え、
    前記スリープ状態持続期間予測モジュールは、前記フィードバック入力に基づいて、前記処理デバイスの構成要素のスリープ状態持続期間を予測するために使用される1つ以上のパラメータを調整する、
    請求項12~16の何れかの処理デバイス。
  18. スリープ状態昇格モジュールを備え、
    前記スリープ状態昇格モジュールは、
    前記構成要素が選択された前記スリープ状態に現在置かれている持続期間を判定することと、
    前記持続期間を閾値時間と比較することと、
    前記持続期間が前記閾値時間を満たすことに基づいて、前記構成要素を異なるスリープ状態に遷移させることであって、前記異なるスリープ状態は、選択された前記スリープ状態よりも低い電力状態である、ことと、
    を行うように構成されている、
    請求項12~17の何れかの処理デバイス。
  19. 処理デバイスであって、
    プロセッサと、
    前記処理デバイスに関連付けられた複数のスリープ状態の各スリープ状態の持続期間を監視し、前記持続期間を履歴スリープ状態持続期間として記憶する監視モジュールと、
    前記履歴スリープ状態持続期間に基づいて、前記処理デバイスの構成要素のスリープ状態持続期間を予測するスリープ状態持続期間予測モジュールと、
    予測された前記スリープ状態持続期間と少なくとも1つの持続期間閾値との比較に基づいて、前記構成要素を、複数のスリープ状態から選択されたスリープ状態に遷移させるシステム管理ユニットであって、前記複数のスリープ状態の各スリープ状態は、前記複数のスリープ状態の前のスリープ状態よりも低電力状態である、システム管理ユニットと、を備える、
    処理デバイス。
  20. スリープ状態昇格モジュールを備え、
    前記スリープ状態昇格モジュールは、
    前記構成要素が選択された前記スリープ状態に現在置かれている持続期間が、閾値時間を満たすと判定することと、
    前記構成要素を、選択された前記スリープ状態よりも低電力のスリープ状態である異なるスリープ状態に遷移させることと、
    を行うように構成されている、
    請求項19の処理デバイス。
JP2023556943A 2021-03-31 2022-03-29 アイドル持続期間履歴に基づく低電力状態選択 Pending JP2024512468A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/219,097 US11543877B2 (en) 2021-03-31 2021-03-31 Low power state selection based on idle duration history
US17/219,097 2021-03-31
PCT/US2022/022359 WO2022212385A1 (en) 2021-03-31 2022-03-29 Low power state selection based on idle duration history

Publications (1)

Publication Number Publication Date
JP2024512468A true JP2024512468A (ja) 2024-03-19

Family

ID=83449053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023556943A Pending JP2024512468A (ja) 2021-03-31 2022-03-29 アイドル持続期間履歴に基づく低電力状態選択

Country Status (6)

Country Link
US (1) US11543877B2 (ja)
EP (1) EP4314990A1 (ja)
JP (1) JP2024512468A (ja)
KR (1) KR20240004362A (ja)
CN (1) CN117377925B (ja)
WO (1) WO2022212385A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230273890A1 (en) * 2022-02-28 2023-08-31 Advanced Micro Devices, Inc. Host controller and bus-attached peripheral device power consumption reduction
CN115756143B (zh) * 2022-11-30 2024-03-12 深圳市领创星通科技有限公司 数据包处理的节能方法、装置、计算机设备和存储介质
WO2024130572A1 (en) * 2022-12-21 2024-06-27 Intel Corporation Core grouping in a processor
US12117881B2 (en) * 2023-02-07 2024-10-15 Dell Products L.P. Automated power-related device usage determinations using artificial intelligence techniques

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816977B2 (en) * 2001-12-03 2004-11-09 Hewlett-Packard Development Company, L.P. Power reduction in computing devices using micro-sleep intervals
US7966506B2 (en) * 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
EP2553573A4 (en) 2010-03-26 2014-02-19 Virtualmetrix Inc FINANCIAL PERFORMANCE RESOURCE MANAGEMENT OF COMPUTER SYSTEMS
WO2014000275A1 (en) 2012-06-29 2014-01-03 Harman International (Shanghai) Management Co., Ltd. Vehicle universal control device for interfacing sensors and controllers
US9244518B2 (en) 2012-12-20 2016-01-26 Xerox Corporation Multi-mode device power-saving optimization
US9329658B2 (en) 2012-12-28 2016-05-03 Intel Corporation Block-level sleep logic
US9471130B2 (en) * 2013-10-25 2016-10-18 Advanced Micro Devices, Inc. Configuring idle states for entities in a computing device based on predictions of durations of idle periods
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US9965220B2 (en) * 2016-02-05 2018-05-08 Qualcomm Incorporated Forced idling of memory subsystems
US11372464B2 (en) 2017-06-12 2022-06-28 Intel Corporation Adaptive parameterization for maximum current protection
US10489072B2 (en) * 2017-11-01 2019-11-26 Western Digital Technologies, Inc. Activity based device initiated state transitions
KR20210017536A (ko) * 2019-08-08 2021-02-17 주식회사 엘지화학 배터리 관리 장치, 배터리 관리 방법 및 에너지 저장 시스템

Also Published As

Publication number Publication date
EP4314990A1 (en) 2024-02-07
US20220317757A1 (en) 2022-10-06
CN117377925A (zh) 2024-01-09
WO2022212385A1 (en) 2022-10-06
US20230088994A1 (en) 2023-03-23
KR20240004362A (ko) 2024-01-11
US11543877B2 (en) 2023-01-03
CN117377925B (zh) 2024-09-10

Similar Documents

Publication Publication Date Title
US11543877B2 (en) Low power state selection based on idle duration history
US11112853B2 (en) Priority based application event control (PAEC) to reduce power consumption
EP2073097B1 (en) Transitioning a processor package to a low power state
US9904346B2 (en) Methods and apparatus to improve turbo performance for events handling
US8775838B2 (en) Limiting the number of unexpected wakeups in a computer system implementing a power-saving preemptive wakeup method from historical data
KR101029414B1 (ko) 프로세서 상태 천이를 검출하기 위해 제공되는 장치 및방법과 머신 액세스 가능 매체와 컴퓨팅 시스템
US20170286125A1 (en) Systems, methods and devices for dynamic power management of devices using game theory
JP7449276B2 (ja) 電源管理制御をサポートする電源管理アドバイザ
JP2011150694A (ja) 非効率なコアホッピングを回避し、ハードウェア(補助)による低電力状態選択を提供するメカニズム
US12130692B2 (en) Low power state selection based on idle duration history
CN114787777A (zh) 异构处理器之间的任务转移方法
KR101896494B1 (ko) 컴퓨팅 디바이스들에서의 전력 관리
US12072754B2 (en) Method and apparatus for managing a controller in a power down state
US20230205297A1 (en) Method and apparatus for managing power states
Iranli et al. System-level power management: An overview
Farah et al. OAPM: Fine-grained operand-aware power management with fast reaction time