JP6072834B2 - 方法、プログラム、装置、およびシステム - Google Patents

方法、プログラム、装置、およびシステム Download PDF

Info

Publication number
JP6072834B2
JP6072834B2 JP2014556525A JP2014556525A JP6072834B2 JP 6072834 B2 JP6072834 B2 JP 6072834B2 JP 2014556525 A JP2014556525 A JP 2014556525A JP 2014556525 A JP2014556525 A JP 2014556525A JP 6072834 B2 JP6072834 B2 JP 6072834B2
Authority
JP
Japan
Prior art keywords
gpu
power
core
cpu
instructions
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.)
Expired - Fee Related
Application number
JP2014556525A
Other languages
English (en)
Other versions
JP2015509622A (ja
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2015509622A publication Critical patent/JP2015509622A/ja
Application granted granted Critical
Publication of JP6072834B2 publication Critical patent/JP6072834B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • 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

Description

多目的のグラフィクスプロセッシングユニット(GPGPU)は、従来は中央処理装置(CPU)によって実行されてきたいくつかのタスクを、グラフィクスプロセッシングユニット(GPU)に実行させるために開発されてきた。典型的なGPUの多重で並行な処理スレッドは、いくつかの処理タスクにはよく適しているが他のタスクにはあまり適していない。
近年、オペレーティングシステムはいくつかのタスクがGPUに割り当てられるように開発されてきた。加えて、OpenCL(Open Computing Language)のようなフレームワークは、命令が異なる種類の処理リソースを用いて実行されるように開発されている。
同時に、通常は複数のGPUによって実行されるいくつかのタスクは、複数のCPUによって実行されてもよく、CPUにいくつかのグラフィックスタスクを割り当てることが可能なハードウェアシステムとソフトウェアシステムがある。同じパッケージ内に又は同じダイ上にさえCPUとGPUを含む複数の統合された異種のシステムは、タスクの分配をより効率的にする。しかし、異なる種類の処理リソース間でのタスクのシェアリングとバランシングのための最適なバランスを見つけることは困難である。
様々な異なるプロキシは、GPUとCPUへの負荷を見積もるために用いられてよい。ソフトウェア命令又はデータ待ち行列は、よりビジーであるコアを決定するために用いられて、他のコアにタスクを割り当ててよい。同様に、出力は、現在の仕事量の進行を決定するために比較されてよい。コマンド内のカウンタ又は実行ストリームもまた、監視されてよい。これらのメトリックは、その仕事量でコアの進行又は結果の直接的尺度を提供する。しかし、そのようなメトリックの集合は、複数のリソースを必要とし、与えられたものでどのように実行しているかのみで、コアの潜在的な能力を示さない。
同じ参照番号が同じ要素を参照する添付図面の図において、発明の実施形態は、限定的な例ではなく、一例として示される。
発明の実施形態に従って、ソフトウエア・アプリケーションを実行するためのダイナミックロードバランシングを実行するシステムの図である。 発明の実施形態に従って、ゲームを実行するためのダイナミックロードバランシングを実行するシステムの図である。 発明の実施形態に従って、ダイナミックロードバランシングを実行する処理フローダイアグラムである。 発明の実施形態に従って、ダイナミックロードバランシングを実行する処理フローダイアグラムである。 発明の実施形態に従って、ダイナミックロードバランシングを実行するための電力バジェットを決定する処理フローダイアグラムである。 発明の実施形態を実施するために適したコンピューティングシステムのブロック図である。 図5のシステムが具体化されうる小型フォームファクタデバイスの実施形態を示す。
発明の実施形態は、プログラムできるものとプロセッシングタスクのダイナミックバランスをサポートするものとを含む、様々な異なるCPUとGPUの組み合わせのいずれかに適用されてよい。その技術は、CPUとGPUの両方を含む又はCPUコアとGPUコアの両方を含む単一のダイに適用されてもよく、同様に、CPU機能とGPU機能の個別のダイを含むパッケージに適用されてもよい。別個のダイの、別個のパッケージの、又は周辺アダプタカードのような別個のプリント基板さえの個別のグラフィックスにも適用されてよい。発明の実施形態は、プロセッシングタスクの負荷が、CPUとGPUの電力メーターに基づいてCPUとGPUの処理リソースの間で動的にバランシングされるようにする。発明は、CPUとGPUが同じ電力バジェットを共有するシステムに適用されるときに特に有用であってよい。そのようなシステムにおいて、電力消費量と電力傾向を考慮にいれることができる。
ダイナミックロードバランシングは、3D(3次元)処理に特に有用であってよい。CPUの計算及び電力ヘッドルームは、CPUが3D処理を援助することができるようにし、この方法で、システムの合計計算リソースがより多く使用される。OpenCLのようなCPU/GPU APIs(Application Programming Interfaces)は、CPUとGPUの間の複数のダイナミックロードバランシングカーネルからも恩恵を受ける。他の処理リソースがより実行できるようにすることによってより高いパフォーマンスを提供するダイナミックロードバランシングのための多くの他の応用がある。CPUとGPUの間の作業のバランシングは、プラットフォームの計算及び電力リソースがより効率的かつ最大限に用いられることを可能にする。
いくつかのシステムにおいて、パワー制御ユニット(PCU)は、電力メーター機能も提供する。電力メーターからの値は、クエリーを実行されて収集されてもよい。これは、電力が、分離可能な電力供給されたユニットのそれぞれについての作業負荷要求に基づいて分配されるようにするために用いられる。本開示において、電力メーター値は作業負荷要求を調節するために用いられる。
複数の電力メーターは、電力消費量の代用(proxy)として用いられてよい。電力消費量は、負荷の代用としても用いられてよい。高い電力消費量は、コアがビジー状態であることを示唆する。低い電力消費量はコアがビジー状態ではないことを示唆する。しかし、低い電力の重要な例外がある。そのような例外の1つは、サンプラーが全て最大限に使用されているため、GPUがビジー状態になりうるが、まだGPUが電力バジェットを最大限には使用していないというものである。
電力メーターと、PCU等の電力管理ハードウェアからの他の表示とは、CPUとGPUが電力に関してどれほどビジー状態であるかの評価を助けるために用いられてよい。中央処理コア又はグラフィックスコアのいずれかの評価は、他方のコアの各自のヘッドルームが決定されるようにもする。このデータは、プロセッシングプラットフォームのリソースをさらに使用する効率的な作業負荷のバランシングエンジンを動作させるために用いられる。
ビジー状態及びアイドル状態のような一般に用いられているパフォーマンスメトリックは、コアの電力ヘッドルームのいかなる表示も提供しない。電力メトリックを用いると、ロードバランシングエンジンは、特定のタスクにとってより効率的であるコアが最大の周波数で動作するようにでき、より効率的ではないコアが残りの電力で動作するようにできる。タスク又はプロセスが変わると、他のコアが代わりにフルパワーで動作されうる。
現在、いくつかのIntel(登録商標)のプロセッサは、プロセッサが短い時間ではるかに高いクロックスピードで動作可能なターボブースト(Turbo Boost(商標))モードを用いる。これは、プロセッサに電力をより消費させ、熱をより生成させることになるが、プロセッサがより低いスピード、より低い電力モードに十分に素早く戻ると、プロセッサが過熱から守られる。電力メーター又は他の電力表示を用いることは、ターボブーストモードの使用を低減することなくCPU電力ヘッドルームを決定するための助けとなる。ターボブーストモードのGPUの場合、GPUは、所望の時にその最大周波数で作業することができるようにされてもよく、それでもCPUは残りの電力を消費することができる。
CPUとGPUが同じ電力バジェットを共有するシステムにおいて、電力メーターのような電力表示は、CPU又はGPUにタスクがオフロードされることができるか決定するために用いられてよい。グラフィックス処理のために、GPUは、電力のほとんどを使用するようにされてよく、その上、CPUは可能な時、例えば十分な電力ヘッドルームがある時に助けるようにされてよい。GPUは、通常グラフィックス処理タスクを処理することがより効率的である。一方、CPUは他のほとんどのタスクと木構造の走査のような全般的なタスクとを実行することが、通常はより効率的である。このような場合、CPUは電力のほとんどを使用するようにされてよく、その際は、可能な時にGPUが助けるようにされてよい。
多目的の処理のためのアーキテクチャ例が、図1に示されている。コンピュータシステムパッケージ101は、CPU103、GPU104、及び電力ロジック105を含む。これらは全て同じ又は異なるダイ上にあってよい。あるいは、それらは、異なるパッケージ内で、マザーボードに直接又は複数のソケットを介して別々に取り付けられてよい。コンピュータシステムは、オペレーティングシステム又はカーネル等のようなランタイム108をサポートする。並列データ又はグラフィックスを有するアプリケーション109は、ランタイムの頂点上で動作し、複数の呼び出し又は実行ファイルをランタイムへ生成する。ランタイムは、これらの呼び出し又は実行ファイルをコンピューティングシステムのためにドライバ106に渡す。ドライバはこれらを複数のコマンド又は命令としてコンピューティングシステム101へ提供する。操作が処理される方法を制御するために、ドライバ106は、上述したようにCPUとGPUの間で複数の負荷を分配するロードバランシングエンジン107を含む。
単一のCPUとGPUは、発明を不明瞭にしないために順番に記載されるが、それぞれが別個のパッケージ内又は1つのパッケージ内にあってもよい複数の例がそれぞれありうる。コンピューティング環境が、図1に示された単純な構造を有してよく、又は、共通のワークステーションが、4又は6個のコアをそれぞれ有する2つのCPUと、自身のパワー制御ユニットをそれぞれ有する2又は3個の別々のGPUとを有してもよい。本明細書で述べる技術は、このようなシステムに適用されてよい。
図2は、3Dゲーム129を実行するコンテキストのコンピューティングシステム121の例を示す。3Dゲーム129は、DirectX又は同様のランタイム128上で動作し、ユーザモードドライバ126を介してコンピューティングシステム121へ送信されるグラフィックス呼び出しを発行する。コンピューティングシステムは、本質的には図1のシステムと同じであってよく、CPU123、GPU124及び電力ロジック125を含んでよい。
図1の例において、コンピューティングシステムは主にCPUで処理されるアプリケーションを実行している。しかし、アプリケーションが複数の並列データ操作とグラフィックス要素を含むという点で、これらはGPUで処理されてよい。いくらかの作業負荷をCPUからGPUへシフトさせるために、ロードバランシングエンジンは、複数の適切な命令又はコマンドをロードバランシングエンジンへ送信するために用いられてよい。逆に図2の例では、3Dゲームが主にGPUで処理される。しかし、ロードバランシングエンジンは、いくらかの作業負荷をGPUからCPUへシフトしてよい。
本明細書で記載したロードバランシング技術は、図3Aの処理フローダイアグラムを考慮することによってより理解されてよい。「1」では、システムが命令を受信する。これは、概してドライバで受信されて、ロードバランシングエンジンに利用可能となる。図3Aの例において、ロードバランシングエンジンは、図1のコンピュータ構成の場合には、CPUの方に偏る。命令は、コマンド、API、又は、アプリケーションとランタイムに応じた他の様々な形態として受信されてよい。ドライバ又はロードバランシングエンジンはコマンドを、CPUとGPUで独立して処理される、より単純な又はより基本的な命令へパースしてよい。
「2」では、システムは命令を調べて、命令が割り当てられることができるかを決定する。パースされた複数の命令又は受信されたままの複数の命令は、3つの区分に分類されてよい。いくつかの命令は、CPUで処理されるべきである。大容量記憶装置へファイルをセーブする操作又は電子メールを送信及び受信する操作は、ほとんど全ての命令が概してCPUで実行されるべき操作の例である。他の命令はGPUで処理されるべきである。表示のためにピクセルをラスター化又は変換する命令は、概してGPUで実行されるべきである。物理計算又はシェーディング及びジオメトリ命令のような第3区分の命令は、CPU又はGPUのいずれかで処理されてよい。第3グループの命令について、ロードバランシングエンジンは処理のために命令をどこに送信するか決定してよい。
命令が割り当てられることができない場合には、「3」において、命令は、「2」で命令がどのように分類されたかに応じてCPU又はGPUのいずれかに送信される。
命令が割り当てられることができた場合には、ロードバランシングエンジンは、CPU又はGPUのいずれに命令を割り当てるか決定する。ロードバランシングエンジンは様々なメトリックを使用して、スマートな決定をしてよい。複数のメトリックは、GPU利用度、CPU利用度、及び電力計画等を含んでよい。
発明のいくつかの実施形態では、ロードバランシングエンジンは複数のコアの1つが最大限に利用されているかを決定してよい。決定ブロック4は、特定の実施形態に応じて使用されうる選択的な分岐である。「4」では、エンジンはCPUが最大限に負荷を負っているか検討する。負っていない場合には、「7」で、命令がCPUに移される。
これは、命令の割り当てをCPUの方に偏らせ、「5」での決定ブロックを回避する。
CPUが最大限に負荷を負っている場合には、「5」で、命令がGPUへ移されるかを決定するために、複数の電力バジェットが比較される。割り当て可能である命令の場合には、この選択的な分岐4を行わずに、命令は「5」での決定のために直接移される。あるいは、図3Bに示されるように、エンジンは、GPUが最大限に負荷を負っているか検討してよく、その場合、CPU電力バジェットに空きがあるならCPUへ命令を渡す。どちらの場合にも、「4」での操作は除かれてよい。
最大限に負荷を負っている又は最大限に使用されているようなプロセッサコアの状態は、いずれかの様々な異なる方法で決定されてよい。
1例として、命令又はソフトウェアキューは監視されてよい。最大限の状態である又はビジー状態である場合には、コアは最大限に負荷を負っていると考えてよい。より正確な決定のために、コマンドを保持するソフトウェアキューの状態が期間監視されることができ、期間中、ビジー時間の長さが空き時間の長さと比較されて、利用の相対量を決定することができる。ビジー時間の割合が期間について決定されてよい。その上、この又は他の利用量は、「4」での決定のために閾値と比較されることができる。
プロセッサコアの状態は、複数のハードウェアカウンタを検査することによって決定されてもよい。CPUとGPUコアは、監視されうるいくつかの異なるカウンタを有する。これらがビジー状態又はアクティブ状態である場合には、コアがビジー状態である。キュー監視と同様に、活動量が期間中測定されることができる。複数のカウンタがモニターされてよく、複数の結果が、加算、平均値算出、又は他の方法によって組み合わされてよい。例として、複数の処理コア又はシェーダーコア、テクスチャーサンプラー、計算ユニット、及びプロセッサ内の他の種類の実行ユニットのような実行ユニットのカウンタが監視されてよい。
発明のいくつかの実施形態では、複数の電力メーターがロードバランシングエンジン決定の一部として使用されてよい。ロードバランシングエンジンは、バックグランドで収集された過去の電力データも、CPUとGPUからの現在の電力測定値も用いてよい。現在と過去のデータを用いて、例のための図4に示すように、ロードバランシングエンジンは、GPU又はCPUへ作業をオフロードするために利用可能な電力バジェットを計算する。例えば、CPUが8W(15WのTDP(合計ダイ電力)を有する)であり、GPUが9W(11WのTDPを有する)である場合には、両方のダイが最大電力未満で動作している。この場合のCPUは、7Wの電力バジェットを有し、GPUは2Wの電力バジェットを有する。これらのバジェットに基づいて、ロードバランシングエンジンによってGPUからCPUへタスクがオフロードされてよく、逆もまた同様である。
より良い決定のために、GPUとCPUの複数の電力メーター測定値は、例えば最後の10msの期間にわたって、積分され、平均値算出され、又は他の方法で組み合わされてよい。結果の積分された値は、製造場で設計されてよい又は経時的に設定されてよい「安全」閾値と比較されることができる。CPUが支障なく実行されていた場合には、複数のGPUタスクがCPUにオフロードされてよい。電力メーター値又は積分された値は、電力バジェットと比較されることができる。現在の作業見積もりがバジェットに適合する場合には、GPUにオフロードされることができる。他の電力バジェットシナリオのために、作業が代わりにCPUにオフロードされてもよい。
「5」では、ロードバランシングエンジンがGPUバジェットを閾値Tと比較して、命令をどこに送信するかを決定する。GPUバジェットがTより大きい場合には、または言い換えると、GPUバジェットに空きがある場合には、「6」で命令がGPUへ送信される。一方、GPUバジェットに空きが不足していることを意味する、GPUバジェットがTより小さい場合には、命令は「7」でCPUへ送信される。閾値Tは、命令がCPUで成功裏に処理されるようにできる電力バジェットの最小量を示す。閾値は、最良のTに調整するために、作業負荷のセットを実行することによってオフラインで決定されてよい。閾値は、経時的に複数のコアの活動的な作業負荷を学習することに基づいて動的に変更されることもできる。
「5」での決定は、システム上で実行しているソフトウェアの特定の種類をサポートするために、バイアスをかけられることができる。ゲームのために、ロードバランシングエンジンは、GPUバジェット閾値Tをより小さく設定することによって、GPUを優先するように構成されてよい。これは、GPUが重いグラフィックス要求をより円滑に処理できるので、より良いパフォーマンスを提供できる。これは、「4」での操作を用いて又は他の方法で実施されてもよい。
「4」での選択的な決定ブロックと同様の他の選択的な決定ブロックを用いて、GPUは、最大限の負荷を負っているか又は利用可能な追加の電力ヘッドルームを有するかを決定するためにテストされてもよい。これは、GPUに送信可能な全ての命令がGPUへ送信されるようにするために用いられてよい。逆に、GPUが追加の電力ヘッドルームを有さない場合にはCPUが選択される。あるいは、おそらく、GPUがCPUに比べて弱く、GPUが援助される場合はゲームプレイが改善されるため、ロードバランシングエンジンは、CPUを優先するように構成されてよい。この場合、ロードバランシングエンジンは反対の方法で機能する。CPUが利用可能な追加の電力ヘッドルームを有する場合は、CPUが選択されてよい。逆に、CPUが追加の電力ヘッドルームを有さない場合のみ、GPUが選択されてよい。これは、ほとんどの命令がGPUで処理されるべきであるゲーミング環境において、CPUへ送信された命令を最大化する。
この種のバイアスは、ハードウェア構成に基づいて、動作するアプリケーションのタイプに基づいて、又はロードバランシングエンジンによって調べられる呼び出しのタイプに基づいて、システムに組み込まれてよい。バイアスは、スケーリング又はファクターを決定に適用することによって小さくされてもよい。
この処理フロー中で参照されたバジェットは、パワー制御ユニットからの電力メーター値に基づいた電力バジェットである。一例として、バジェットは、CPUシステムの熱限界を超えることなく次の期間のために消費されることができるワット数である。このように例えば、次の期間(例えば1ms)について費やされることができる1Wのバジェットがある場合には、それがGPUからCPUへ命令をオフロードするのに十分なバジェットである。バジェット決定における1つの検討事項は、ターボブーストのようなGPUターボモードに対する影響である。GPUターボモードを維持するために、バジェットが決定されて用いられる。
バジェットは、パワー制御ユニット(PCU)から得られてもよい。パワー制御ユニットの構成及び位置は、コンピューティングシステムのアーキテクチャに依存する。図1と2の図示した例では、パワー制御ユニットは、複数の処理コアとアンコアを有する組み込まれたホモジニアスダイのアンコアの一部である。しかし、パワー制御ユニットは、システムボード上の様々な異なる位置から電力情報を収集する別個のダイであってよい。図1と2の例において、電力消費量、オーバヘッド、及びバジェットについての情報を収集するために、ドライバ106、126がPCUへ接続する。
様々な異なる手法が、電力バジェットの決定のために用いられてよい。一例として、複数の電力値は、PCUから定期的に受信され、その後格納されて、割り当てられることができる命令が受信されるたびに用いられる。改善された決定プロセスが、定期的な電力値を用いて経時的に電力値の履歴をトラッキングすることによって、より複雑な計算コストで実施されることができる。履歴は、各コアの未来の電力予測値を提供すべく、外挿されることができる。
その後、CPU又はGPUのコアが予測された未来の電力値に基づいて選択される。
バジェット値が、瞬間の、現在の又は予測されたいずれかの電力消費値の比較であってよく、電力消費値をコアの最大可能電力消費量と比較することによって決定されることができる。例えば、コアが12W消費しており、19Wの最大電力消費量を有する場合には、コアが7Wの残りのバジェット又はオーバヘッドを有する。バジェットは同様に、他のコアを考慮に入れてもよい。合計の利用可能な電力は、全てのコアが消費できる合計最大電力より小さくてもよい。例えば、CPUが19Wの最大電力を有し、GPUが22Wの最大電力を有するが、PCUが27Wしか供給できない場合には、両方のコアが同時に最大電力で動作することはできない。このような構成は、コアが一時的により高速に動作するようにするために望ましい。ロードバランシングエンジンは、両方のコアがそれぞれの最大電力レベルに到達するレートで命令を供給することはできない。利用可能な電力バジェットは、PCUの能力を構成するために、適宜に減らされてよい。
図3Bは、図2のコンテキストで用いれるようなGPUを優先するプロセスの処理フローダイアグラムである。「21」では、例えばドライバ126のようなシステムが命令を受信する。これは、GPUに偏ったロードバランシングエンジンに利用可能にされる。ドライバ又はロードバランシングエンジンは、実装に応じてコマンドを分析又はパースして、当該コマンドをCPUとGPUによって独立に処理されうる複数の命令へ縮小する。
「22」では、システムは命令を検査して、命令が割り当て可能かを決定する。CPU又はGPUで処理されるべき複数の命令が、それらの各宛先へ送信される。
命令が割り当てられることができる場合には、ロードバランシングエンジンは、CPU及びGPUのいずれかに命令を割り当てるかを決定する。図3Aのように、選択的な操作が、決定ブロック4でGPUが最大限の負荷を負っているかを決定するために用いられる。そうでない場合には、命令が「27」でGPUに渡され、「25」の決定ブロックは回避される。GPUが最大限の負荷を負っている場合には、複数の電力バジェットが「25」で分析され、命令がCPUへ渡されてよいかを決定する。
「25」では、ロードバランシングエンジンがCPUバジェットを閾値Tと比較し、命令をどこに送信するかを決定する。CPUバジェットがTより大きい場合には、「26」で命令がCPUへ送信される。一方、CPUバジェットがTより小さい場合には、「27」で命令がGPUへ送信される。閾値Tは、CPUの電力バジェットの最小量を表し、図3Aの閾値と同じ方法で決定されてよい。
図4は、図3A又は図3Bの処理フローで利用されるバジェット決定のための並列の処理フローを示す。図4において、「11」では、各コア又は複数のコアのグループの現在の電力消費量が受信される。複数のCPUコア及び複数のGPUコアを有するコンピューティングシステムにおいて、複数の命令が、各コアに個別に割り当てられ、又は中央とグラフィックス処理の間で分配される。複数のCPUコアの別個のプロセスが、その後、存在する場合には複数のコアと複数のスレッドの間に複数の命令を分配するために用いられてよい。同様に、この又は別個のプロセス又は両方は、複数の中央処理コア間又は複数のグラフィクスプロセッシングコア間に複数の命令を分配するために用いられてよい。
「12」で、受信された現在の電力消費量が、最大電力消費量と比較されて、各コアの現在のバジェットを決定する。「13」で、この値が記憶される。複数の現在の電力消費値が定期的に受信され、「11」、「12」、及び「13」の操作が繰り返されてよい。FIFO(先入れ先出し)バッファが、バジェット値のいくつかのみが格納されるように用いられてよい。直近の値が、図3の操作で用いられるか、又は何かしらの操作が「14」のように複数の値に実行されてよい。
「14」で、現在と前のバジェット値が比較され、計画バジェットを決定する。計画バジェットはその後、図3の操作のバジェット値として使用される。比較は、特定の実装に応じて様々な異なる方法で実行されてよい。一例として、平均値がとられてよい。他の例として、外挿法又は積分が実行されてよい。外挿法は、電力制御システムの他の既知の態様に基づいて最大値及び最小値に限定されてよい。さらなる複雑な解析的で統計的な手法が、特定の実装に応じて代わりに用いられてよい。
図3Aと3Bに記載された手法の代わりの手法として、現在の処理コア電力負荷が、単に合計利用可能値と比較されてよい。TDP=通常操作電力エンベロープ上述したように、TDP(合計ダイ電力)は、PCUによって又はダイの熱設計の制約によって決定される。バジェットは、TDPからCPUコアとGPUコアの現在の電力負荷を単に減じることによって決定されてよい。バジェットは、バジェットの閾値量と比較されてよい。バジェットが閾値より大きい場合には、命令が他のコアへ割り当てられることができる。
更なる操作として、他のコアがチェックされ、命令がオフロードされる前に、割り当てられた電力範囲内で動作しているかを決定することもできる。この簡素化された手法は、様々な異なるシステムに適用されてよく、CPU、GPU、又は特定のコアへ複数の命令をオフロードするために用いられてよい。
図5は、システム500の実施形態を示す。実施形態において、システム500はこのコンテキストに限定されないが、システム500はメディアシステムであってよい。例えば、システム500が、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトラ−ラップトップ・コンピュータ、タブレット、タッチパッド、ポータブル・コンピュータ、ハンドヘルド・コンピュータ、パームトップ・コンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDA組み合わせ、テレビ、スマート・デバイス(例えばスマートフォン、スマートタブレット、又はスマートテレビ)、モバイル・インターネット・デバイス(MID)、メッセージング・デバイス、データ通信デバイス等に組み込まれてよい。
実施形態において、システム500は、ディスプレイ520に連結されたプラットフォーム502を含む。プラットフォーム502が、コンテント・サービス・デバイス530、コンテント配信デバイス540、又は他の同様のコンテンツソース等のコンテンツ装置からコンテンツを受信してよい。1又は複数のナビゲーション機能を有するナビゲーションコントローラ550は、例えばプラットフォーム502及び/又はディスプレイ520と交信するために用いられてよい。これらの構成要素のそれぞれが、以下でより詳細に説明される。
実施形態において、プラットフォーム502は、チップセット505、プロセッサ510、メモリ512、ストレージ514、グラフィックスサブシステム515、アプリケーション516、及び/又は無線518のいずれかの組み合わせを含んでよい。チップセット505は、プロセッサ510、メモリ512、ストレージ514、グラフィックスサブシステム515、アプリケーション516、及び/又は無線518の間での相互通信を提供してよい。例えば、チップセット505は、ストレージ514との相互通信の提供が可能なストレージアダプタ(不図示)を含んでよい。
プロセッサ510は、複合命令セットコンピュータ(CISC)又は縮小命令セットコンピュータ(RISC)のプロセッサ、X86命令セット互換プロセッサ、マルチコア、又は他のマイクロプロセッサ、又は中央処理装置(CPU)として実装されてよい。実施形態において、プロセッサ510は、デュアルコアプロセッサ(複数の場合もあり)、及びデュアルコアモバイルプロセッサ(複数の場合もあり)等を含んでよい。
メモリ512は、これらに限定されないが、ランダム・アクセス・メモリ(RAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、又はスタティックRAM(SRAM)等の揮発性メモリ装置として実装されてよい。
ストレージ514は、これらに限定されないが、磁気ディスクドライブ、光学ディスクドライブ、テープドライブ、内部ストレージ装置、アタッチトストレージ装置、フラッシュメモリ、バッテリーバックアップSDRAM(シンクロナスDRAM)、及び/又はネットワークアクセス可能ストレージデバイス等の不揮発性ストレージ装置として実装されてよい。実施形態において、ストレージ514は、例えば、複数のハードドライブが含まれるときに、有用なデジタル媒体のストレージパフォーマンス拡張保護を増す技術を含んでよい。
グラフィックスサブシステム515は、表示のための写真又は動画のようなイメージの処理を実行してよい。グラフィックスサブシステム515は、例えば、ラフィクスプロセッシングユニット(GPU)又はビジュアルプロセッシングユニット(VPU)であってよい。アナログインタフェース又はデジタルインタフェースが、グラフィックスサブシステム515とディスプレイ520を通信可能に接続してよい。例えば、インタフェースが、High−Definition Multimedia Interface、DisplayPort、無線HDMI(登録商標)、及び/又は無線HD準拠技術のいずれかであってよい。グラフィックスサブシステム515が、プロセッサ510又はチップセット505に組み込まれてよい。グラフィックスサブシステム515が、チップセット505に通信可能に接続されたスタンドアローンカードであってよい。
本明細書に記載されたグラフィックス及び/又は動画処理技術は、様々なハードウェアアーキテクチャに実装されてよい。例えば、グラフィックス及び/又は動画機能は、チップセット内に組み込まれてよい。あるいは、個別のグラフィックス及び/又は動画プロセッサが用いられてよい。また他の実施形態として、グラフィックス及び/又は動画機能が、マルチコアプロセッサを含む多目的プロセッサによって実装されてよい。さらなる実施形態において、機能は、コンシューマー電子装置に実装されてよい。
無線518は、様々な適した無線通信技術を用いて信号を送受信することが可能な1又は複数の無線を含んでよい。このような技術は、1又は複数の無線ネットワークにわたる通信を行ってよい。代表的な無線ネットワークは、(ただしこれに限定されないが)ワイヤレスローカルエリアネットワーク(WLAN)、ワイヤレスパーソナルエリアネットワーク(WPAN)、ワイヤレスメトロポリタンエリアネットワーク(WMAN)、携帯電話ネットワーク、及び衛星ネットワークを含む。このような複数のネットワークにわたる通信において、無線518は、任意のバージョンの1又は複数の適用規格に従って動作してよい。
実施形態において、ディスプレイ520は、任意のテレビタイプモニター又はディスプレイを含んでよい。ディスプレイ520は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、動画モニター、テレビのような装置、及び/又はテレビを含んでよい。ディスプレイ520は、デジタル及び/又はアナログであってよい。実施形態において、ディスプレイ520は、ホログラフィーディスプレイであってよい。また、ディスプレイ520は、ビジュアル投影を受けることができる透明な表面であってよい。このような投影は、情報、像、及び/又は物体のざまざまな形態を伝達してよい。例えば、このような投影は、モバイル拡張現実(MAR)アプリケーションのビジュアルオーバーレイであってよい。ソフトウエア・アプリケーション516の制御下で、プラットフォーム502が、ディスプレイ520上にユーザインタフェース522を表示してよい。
実施形態において、例えば、コンテント・サービス・デバイス530(複数の場合もある)は、国の、国際的な、及び/又は独立したサービスによってホストされ、このためインターネットを介してプラットフォーム502にアクセス可能であってよい。コンテント・サービス・デバイス530(複数の場合もある)は、プラットフォーム502及び/又はディスプレイ520に接続されてよい。プラットフォーム502及び/又はコンテント・サービス・デバイス530(複数の場合もある)は、ネットワーク560から及びネットワーク560へメディア情報を通信する(例えば送信及び/又は受信する)ために、ネットワーク560に接続されてよい。コンテント配信デバイス540は、プラットフォーム502及び/又はディスプレイ520に接続されてもよい。
実施形態において、コンテント・サービス・デバイス(複数の場合もある)530は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット使用可能装置又はデジタル情報及び/又はコンテントを配信できる家庭用器具、及び、コンテントプロバイダとプラットフォーム502とディスプレイ520との間でネットワーク560を介してあるいは直接に一方向又は双方向でコンテントを通信できる他の同様の装置を含んでよい。コンテントが、システム500の構成要素及びコンテント・プロバイダのいずれかへ及びいずれかから、ネットワーク560を介して一方向に及び/又は双方向に通信されてもよいことを理解されたい。コンテントの例は、例えば動画、音楽、医療、及びゲーミング情報等を含む任意のメディア情報を含んでよい。
コンテント・サービス・デバイス530が、メディア情報、デジタル情報、及び/又は他のコンテントを含むケーブルテレビ番組のようなコンテントを受信する。コンテント・プロバイダの例は、任意のケーブルもしくは衛星テレビ、又は無線もしくはインターネットコンテント・プロバイダを含んでよい。示した例は、発明の実施形態を限定するものではない。
実施形態において、プラットフォーム502は、1又は複数のナビゲーション機能を有するナビゲーションコントローラ550から制御信号を受信してよい。コントローラ550のナビゲーション機能は、例えば、ユーザインタフェース522と交信するために用いられてよい。実施形態において、ナビゲーションコントローラ550は、ユーザが空間的な(例えば、連続した及び多次元の)データをコンピュータに入力するようにさせるコンピュータハードウェア構成要素(具体的にはヒューマン・インタフェース・デバイス)のようなポインティングデバイスであってよい。グラフィカルユーザインタフェース(GUI)、テレビ、及びモニターのような多くのシステムは、ユーザが物理的なジェスチャーを用いてコンピュータ又はテレビへデータを制御して提供できるようにする。
コントローラ550のナビゲーション機能の移動は、ポインター、カーソル、フォーカスリング、又はディスプレイ上に表示された他のビジュアルインジケーターの移動によって、ディスプレイ(例えばディスプレイ520)上に影響されてよい。例えば、ソフトウエア・アプリケーション516の制御下で、ナビゲーションコントローラ550に設けられたナビゲーション機能が、例えばユーザインタフェース522上に表示されたバーチャルナビゲーション機能にマッピングされてよい。実施形態において、コントローラ550は、分離した構成要素ではなく、プラットフォーム502及び/又はディスプレイ520に組み込まれてよい。実施形態はしかし、本明細書で示された又は説明された要素に又はコンテキスト内に限定されない。
実施形態において、複数のドライバ(不図示)は、例えば、ユーザが、最初の立ち上げ後可能なときにボタンのタッチでテレビのようなプラットフォーム502を直ちにオン及びオフすることができる技術を含んでよい。プログラムロジックは、プラットフォームがオフにされている時にプラットフォーム502がコンテンツをメディアアダプタ又は他のコンテント・サービス・デバイス530又はコンテント配信デバイス540に流すことができるようにしてよい。さらに、チップセット505は、例えば、5.1サラウンド・サウンド・オーディオ及び/又は高精細度7.1サラウンド・サウンド・オーディオのためのハードウェア及び/又はソフトウェアサポートを含んでよい。複数のドライバは、統合グラフィックスプラットフォーム用のグラフィックスドライバを含んでよい。実施形態において、グラフィックスドライバは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレスグラフィックスカードを含んでよい。
様々な実施形態において、システム500に示された任意の1又は複数の構成要素は一体にされてよい。例えば、プラットフォーム502とコンテント・サービス・デバイス530が一体にされ、又は、プラットフォーム502とコンテント配信デバイス540が一体にされ、又は、例えば、プラットフォーム502とコンテント・サービス・デバイス530とコンテント配信デバイス540とが例えば一体にされてよい。様々な実施形態において、プラットフォーム502とディスプレイ520は統合ユニットであってよい。例えば、ディスプレイ520とコンテント・サービス・デバイス530が一体にされ、又はディスプレイ520とコンテント配信デバイス540が一体にされてよい。これらの例は、発明を限定するものではない。
様々な実施形態において、システム500は、無線システム、有線システム、又は両方の組み合わせとして実装されてよい。無線システムとして実装された場合、システム 500は、1又は複数のアンテナ、送信装置、受信装置、トランシーバー、増幅器、フィルター、及び制御ロジック等のような無線共有媒体上で通信するのに適した構成要素とインタフェースを含んでよい。一例の無線共有媒体は、ラジオ波スペクトル等のような無線スペクトルの複数の部分を含んでよい。有線システムとして実装される場合には、システム500は、入出力(I/O)アダプタ、対応する有線通信媒体にI/Oアダプタを接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ。動画コントローラ、及びオーディオコントローラ等のような有線通信媒体上で通信するのに適した構成要素とインタフェースを含んでよい。一例の有線通信媒体は、ワイヤー、ケーブル、金属リード、プリント回路基板(PCB)、バックプレーン、スイッチ構造、半導体材料、ツイストペアワイヤー、同軸ケーブル、及びファイバーオプティックス等を含んでよい。
プラットフォーム502は、情報を通信するために、1又は複数の論理又は物理チャネルを確立してよい。情報は、メディア情報とコントロール情報を含んでよい。メディア情報は、ユーザ用であるコンテンツを示すいずれかのデータを参照してよい。コンテントの例は、例えば、音声対話、ビデオ会議、ストリーミング動画、電子メール(email)メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、イメージ、動画、及びテキスト等からのデータを含んでよい。音声対話からのデータは、例えば、スピーチ情報、沈黙期間、バックグラウンドノイズ、コンフォートノイズ、及び音色等であってよい。コントロール情報は、自動システム用のコマンド、命令、又は制御ワードを示す任意のデータを参照してよい。例えば、コントロール情報は、メディア情報をシステムを介して送るために、又は、ノードが所定の方法でメディア情報を処理するように指示するために、用いられてよい。実施形態はしかし、図5に示され又は説明されたコンテキスト内又は要素に限定されない。
上述したように、システム500は、物理的な様式又はフォームファクターを変更して具体化されてよい。図6は、システム500が具体化された小型フォームファクタデバイス600の実施形態を示す。実施形態において、例えば、装置600は無線性能を有するモバイル・コンピューティング・デバイスとして実装されてよい。モバイル・コンピューティング・デバイスは、例えば、処理システムと、1又は複数のバッテリーのようなモバイル電力源又は電源とを有する任意の装置を参照してよい。
上記したように、モバイル・コンピューティング・デバイスの例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトラ-ラップトップ・コンピュータ、タブレット、タッチパッド、ポータブル・コンピュータ、ハンドヘルド・コンピュータ、パームトップ・コンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDA組み合わせ、テレビ、スマート・デバイス(例えばスマートフォン、スマートタブレット、又はスマートテレビ)、モバイル・インターネット・デバイス(MID)、メッセージング・デバイス、及びデータ通信デバイス等を含んでよい。
モバイル・コンピューティング・デバイスの例は、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣類コンピュータ、及び他のウェアラブルコンピュータのような人が身につけるようにされたコンピュータも含んでよい。実施形態において、例えば、モバイル・コンピューティング・デバイスは、音声通信及び/又はデータ通信とコンピュータアプリケーションも実行できるスマートフォンとして実装されてよい。いくつかの実施形態は、例としてスマートフォンとして実装されたモバイル・コンピューティング・デバイスで説明されるが、他の実施形態は、同様に他のワイヤレス・モバイル・コンピューティング・デバイスを用いて実装されうることが理解されてよい。実施形態は、このコンテキストに限定されない。
図6に示すように、装置600は、ハウジング602、ディスプレイ604、入出力(I/O)装置606、及びアンテナ608を含んでよい。装置600はまた、複数のナビゲーション機能612を含んでよい。ディスプレイ604は、モバイル・コンピューティング・デバイスのために適切な情報を表示する任意の適切なディスプレイを含んでよい。I/Oデバイス606は、モバイル・コンピューティング・デバイスに情報を入力するための任意の適切なI/Oデバイスを含んでよい。I/Oデバイス606の例は、英数字キーボード、数字キーボード、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカー、音声認識デバイス、及びソフトウェア等を含んでよい。情報は、例えばマイクで装置600に入力されてもよい。このような情報は、音声認識デバイスでデジタル化されてよい。実施形態は、このコンテキストに限定されない。
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又はこれら両方の組み合わせを用いて実装されてよい。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路要素(例えばトランジスタ、レジスタ、キャパシタ、及びインダクタ等)、集積回路、アプリケーションに特化した集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、及びチップセット等を含んでよい。ソフトウェアの例は、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、方法、処理手続き、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、記号、又はこれらの任意の組み合わせを含んでよい。実施形態がハードウェア要素及び/又はソフトウェア要素を用いて実装されるかの決定は、所望の計算速度、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、及び、他の設計又はパフォーマンス制約のようないくつかの要素に応じて変わってよい。
少なくとも1つの実施形態の1又は複数の態様は、プロセッサ内の様々なロジックを代表し、機械に読み込まれた時に機械がロジックを組み立てて本明細書で説明された技術を実行する、機械読み取り可能媒体上に格納された代表的な命令によって実装されてよい。「IPコア」として知られるこのような代表は、有形の機械読み取り可能媒体上に格納され、様々なカスタマー又は製造設備に供給されて、ロジック又はプロセッサを実際に作成する製造機械にロードされてよい。
「1つの実施形態」、「実施形態」、「例の実施形態」、「様々な実施形態」等の記載は、そのように記載された発明の実施形態が、特定の特徴、構造又は特性を含んでよいが、実施形態の全てが必ずしも特定の特徴、構造又は特性を含まないことを示す。さらに、いくつかの実施形態は、他の実施形態について記載された特徴のいくつかを有し、全てを有し、又はいずれも有さないこともある。
以下の記載及び請求項において、「接続」という言葉は、その派生語とともに用いられてよい。「接続」は、2つ又はそれより多い要素が互いに協力する又は交信することを示すために用いられるが、それらが、それらの間に介在する物理的又は電気的な構成要素を含む場合があり又は含まない場合もある。
請求項で用いられるように、順序を示す形容詞「第1の」「第2の」「第3の」等の使用が別で特定されない限り、共通の要素を説明し、同様の要素の異なる例が参照されることを単に示し、そのように記載された要素が、時間的、空間的、序列、又は他の方法のいずれかの一定の順序であるべきことを意味することを意図したものではない。
図面及び上述の説明は、実施形態の例を示す。当業者であれば、1又は複数の説明した要素が単一の機能要素にうまく組み合わされてよいことが理解できる。あるいは、ある要素が複数の機能要素に分割されてもよい。1つの実施形態からの要素が、他の実施形態に追加されてよい。例えば、本明細書で説明したプロセスの順序は変更されてよく、本明細書で説明した方法に限定されない。いかなるフロー図の動作も、示された順序で実施される必要はなく、必ずしも全ての動作が実施される必要は無い。また、他の動作に依存していないこれらの動作が、他の動作と並列に実行されてよい。実施形態の範囲は、これらの特定の例に限定されない。明細書中に明確に示されていようがいまいが、構造、寸法、及び材料の使用の違い等の多数の変更が可能である。実施形態の範囲は、以下の請求項によって示されたものと少なくとも同じ広さである。

Claims (23)

  1. 方法であって、
    命令を受信する段階と、
    中央処理コア(CPU)とグラフィクスプロセッシングコア(GPU)の電力値を受信する段階と、
    前記受信された電力値を用いて前記CPUと前記GPUついて電力バジェットを決定する段階と、
    前記CPUの電力バジェットおよび前記GPUの電力バジェットの少なくとも一方を閾値と比較することによって、前記受信された電力値に基づいて、前記CPUと前記GPUの中からコアを選択する段階と、
    前記命令を、処理のための前記選択されたコアへ送信する段階とを含む
    方法。
  2. 電力値を受信する段階は、現在の電力消費値を受信する段階を含む、
    請求項1に記載の方法。
  3. 電力値を受信する段階は、電力値を定期的に受信する段階と、命令を受信した時に用いるために、前記受信された電力値を記憶する段階とを含む、
    請求項1又は2に記載の方法。
  4. 前記定期的な電力値を用いて、経時的に電力値の履歴をトラッキングする段階と、
    前記トラッキングされた履歴に基づいて、各コアについて未来の電力値を予測する段階とを更に含み、
    コアを選択する段階は、前記予測された未来の電力値に基づいてコアを選択する段階を含む、
    請求項3に記載の方法。
  5. 履歴をトラッキングする段階は、前記コアについて、最大可能電力消費量と比較した電力消費量の履歴をトラッキングする段階を含む、
    請求項4に記載の方法。
  6. コアを選択する段階は、最も大きい前記電力バジェットを有する前記コアを選択することによってコアを選択する段階を含む、
    請求項1から5のいずれか1項に記載の方法。
  7. 電力バジェットを決定する段階は、最大可能電力消費量と比較した計画された未来の電力消費量を決定する段階を含む、
    請求項6に記載の方法。
  8. コアを選択する段階は、前記GPUが利用可能な追加の電力ヘッドルームを有する場合には前記GPUを選択する段階と、前記GPUが追加の電力ヘッドルームを有さない場合には前記CPUを選択する段階とを含む、
    請求項1から7のいずれか1項に記載の方法。
  9. 命令を受信する段階は、コマンドを受信する段階と、前記コマンドを、独立して処理されうる複数の命令にパースする段階とを含む、
    請求項1から8のいずれか1項に記載の方法。
  10. 前記複数の命令を、前記CPUで処理されるべき命令、前記GPUで処理されるべき命令、及び前記CPU又は前記GPUのいずれかで処理できる命令に分類する段階を更に含み、
    前記命令を送信する段階は、処理のための前記選択されたコアへ、前記CPU又は前記GPUのいずれかで処理できる前記命令を送信する段階を含む、
    請求項9に記載の方法。
  11. 複数の命令を有するプログラムであって、前記命令が、コンピュータで動作された時に、前記コンピュータに、
    命令を受信する段階と、
    中央処理コア(CPU)とグラフィクスプロセッシングコア(GPU)の電力値を受信する段階と、
    前記受信された電力値を用いて前記CPUと前記GPUついて電力バジェットを決定する段階と、
    前記CPUの電力バジェットおよび前記GPUの電力バジェットの少なくとも一方を閾値と比較することによって、前記受信された電力値に基づいて、前記CPUと前記GPUの中からコアを選択する段階と、
    処理のための前記選択されたコアへ前記命令を送信する段階と
    を含む動作を実行させる、
    プログラム。
  12. 電力値を受信する段階は、電力値を定期的に受信する段階と、命令を受信した時に用いるために、前記受信された電力値を記憶する段階とを含み、
    前記動作はさらに、
    前記定期的な電力値を用いて、経時的に電力値の履歴をトラッキングする段階と、
    前記トラッキングされた履歴に基づいて、各コアについて未来の電力値を予測する段階とを更に含み、
    コアを選択する段階は、前記予測された未来の電力値に基づいてコアを選択する段階を含む、
    請求項11に記載のプログラム。
  13. 命令を受信する段階は、コマンドを受信する段階と、前記コマンドを、独立して処理されうる複数の命令にパースする段階とを含む、
    請求項11又は12に記載のプログラム。
  14. 命令を受信する処理ドライバと、
    中央処理コア(CPU)とグラフィクスプロセッシングコア(GPU)の電力値をロードバランシングエンジンへ送信するパワー制御ユニットと、
    受信された前記電力値を用いて前記CPUと前記GPUついて電力バジェットを決定し、前記CPUの電力バジェットおよび前記GPUの電力バジェットの少なくとも一方を閾値と比較することによって前記受信された電力値に基づいて、前記CPUと前記GPUの中からコアを選択し、処理のための前記選択されたコアへ前記命令を送信する前記ロードバランシングエンジンと、
    を備える装置。
  15. 前記パワー制御ユニットは、現在の電力消費値を送信する、
    請求項14に記載の装置。
  16. 前記ロードバランシングエンジンは、最も大きい前記電力バジェットを有する前記コアを選択することによってコアを選択する、
    請求項14又は15に記載の装置。
  17. 中央処理コア(CPU)と、
    グラフィクスプロセッシングコア(GPU)と、
    複数のソフトウェア命令とデータを格納するメモリと、
    前記CPUと前記GPUの電力値をロードバランシングエンジンへ送信するパワー制御ユニット(PCU)と、
    前記メモリ内に受信された前記電力値を格納し、受信された前記電力値を用いて前記CPUと前記GPUついて電力バジェットを決定し、前記CPUの電力バジェットおよび前記GPUの電力バジェットの少なくとも一方を閾値と比較することによって受信された前記電力値に基づいて前記CPUと前記GPUの中からコアを選択し、処理のために前記選択されたコアへ前記命令を送信する前記ロードバランシングエンジンとを備える、
    システム。
  18. 前記ロードバランシングエンジンは、前記GPUが利用可能な追加の電力ヘッドルームを有する場合には前記GPUを選択し、前記GPUが追加の電力ヘッドルームを有さない場合には前記CPUを選択することによってコアを選択する、
    請求項17に記載のシステム。
  19. 前記ロードバランシングエンジンは更に、複数の前記命令を、前記CPUで処理されるべき命令、前記GPUで処理されるべき命令、及び前記CPU又は前記GPUのいずれかで処理できる命令に分類し、処理のための前記選択されたコアへ、前記CPU又は前記GPUのいずれかで処理できる命令のみを送信する、
    請求項17又は18に記載のシステム。
  20. 前記閾値は、実行しているソフトウェアの特定の種類をサポートするために前記コアの選択にバイアスをかけるように設定される
    請求項1から10のいずれか1項に記載の方法。
  21. 前記閾値は、実行しているソフトウェアの特定の種類をサポートするために前記コアの選択にバイアスをかけるように設定される
    請求項11から13のいずれか1項に記載のプログラム。
  22. 前記閾値は、実行しているソフトウェアの特定の種類をサポートするために前記コアの選択にバイアスをかけるように設定される
    請求項14から16のいずれか1項に記載の装置。
  23. 前記閾値は、実行しているソフトウェアの特定の種類をサポートするために前記コアの選択にバイアスをかけるように設定される
    請求項17から19のいずれか1項に記載のシステム。
JP2014556525A 2012-02-08 2012-02-08 方法、プログラム、装置、およびシステム Expired - Fee Related JP6072834B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/024341 WO2013119226A1 (en) 2012-02-08 2012-02-08 Dynamic cpu gpu load balancing using power

Publications (2)

Publication Number Publication Date
JP2015509622A JP2015509622A (ja) 2015-03-30
JP6072834B2 true JP6072834B2 (ja) 2017-02-01

Family

ID=48947859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014556525A Expired - Fee Related JP6072834B2 (ja) 2012-02-08 2012-02-08 方法、プログラム、装置、およびシステム

Country Status (5)

Country Link
US (1) US20140052965A1 (ja)
EP (1) EP2812802A4 (ja)
JP (1) JP6072834B2 (ja)
CN (1) CN104106053B (ja)
WO (1) WO2013119226A1 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8669990B2 (en) 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US9110664B2 (en) * 2012-04-20 2015-08-18 Dell Products L.P. Secondary graphics processor control system
WO2014019127A1 (en) * 2012-07-31 2014-02-06 Intel Corporation (A Corporation Of Delaware) Hybrid rendering systems and methods
KR102213668B1 (ko) * 2013-09-06 2021-02-08 삼성전자주식회사 제너럴 퍼포즈 프로그래머블 컴퓨팅 디바이스에서의 멀티미디어 데이터 프로세싱 방법 및 그에 따른 데이터 프로세싱 시스템
CN105637556B (zh) * 2013-10-14 2019-06-28 马维尔国际贸易有限公司 用于图形处理单元功率管理的系统和方法
US10114431B2 (en) 2013-12-31 2018-10-30 Microsoft Technology Licensing, Llc Nonhomogeneous server arrangement
US20150188765A1 (en) * 2013-12-31 2015-07-02 Microsoft Corporation Multimode gaming server
US10634814B2 (en) * 2014-01-17 2020-04-28 Conocophillips Company Advanced parallel “many-core” framework for reservoir simulation
WO2015151548A1 (ja) * 2014-04-03 2015-10-08 ソニー株式会社 電子機器および記録媒体
JP6363409B2 (ja) * 2014-06-25 2018-07-25 Necプラットフォームズ株式会社 情報処理装置の試験方法および情報処理装置
WO2016064429A1 (en) * 2014-10-25 2016-04-28 Mcafee, Inc. Computing platform security methods and apparatus
US10073972B2 (en) 2014-10-25 2018-09-11 Mcafee, Llc Computing platform security methods and apparatus
US9690928B2 (en) 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US10417052B2 (en) 2014-10-31 2019-09-17 Hewlett Packard Enterprise Development Lp Integrated heterogeneous processing units
US10169104B2 (en) * 2014-11-19 2019-01-01 International Business Machines Corporation Virtual computing power management
CN104461849B (zh) * 2014-12-08 2017-06-06 东南大学 一种移动处理器上cpu与gpu软件功耗测量方法
CN104778113B (zh) * 2015-04-10 2017-11-14 四川大学 一种矫正功率传感器数据的方法
KR102247742B1 (ko) * 2015-04-21 2021-05-04 삼성전자주식회사 애플리케이션 프로세서와 시스템 온 칩
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
US10268714B2 (en) 2015-10-30 2019-04-23 International Business Machines Corporation Data processing in distributed computing
US10613611B2 (en) * 2016-06-15 2020-04-07 Intel Corporation Current control for a multicore processor
US10281975B2 (en) 2016-06-23 2019-05-07 Intel Corporation Processor having accelerated user responsiveness in constrained environment
US10452117B1 (en) * 2016-09-22 2019-10-22 Apple Inc. Processor energy management system
KR101862981B1 (ko) * 2017-02-02 2018-05-30 연세대학교 산학협력단 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
US10551881B2 (en) 2017-03-17 2020-02-04 Microsoft Technology Licensing, Llc Thermal management hinge
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
DE102017109239A1 (de) * 2017-04-28 2018-10-31 Ilnumerics Gmbh Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10509449B2 (en) 2017-07-07 2019-12-17 Hewlett Packard Enterprise Development Lp Processor power adjustment
CN107423135B (zh) 2017-08-07 2020-05-12 上海兆芯集成电路有限公司 均衡装置以及均衡方法
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
US10719120B2 (en) * 2017-12-05 2020-07-21 Facebook, Inc. Efficient utilization of spare datacenter capacity
WO2020036573A1 (en) 2018-08-17 2020-02-20 Hewlett-Packard Development Company, L.P. Modifications of power allocations for graphical processing units based on usage
US10884482B2 (en) * 2018-08-30 2021-01-05 International Business Machines Corporation Prioritizing power delivery to processing units using historical workload information
US10559057B2 (en) * 2018-09-27 2020-02-11 Intel Corporation Methods and apparatus to emulate graphics processing unit instructions
JP7408671B2 (ja) 2019-03-15 2024-01-05 インテル コーポレイション シストリックアレイに対するブロックスパース演算のためのアーキテクチャ
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US20220179787A1 (en) 2019-03-15 2022-06-09 Intel Corporation Systems and methods for improving cache efficiency and utilization
CN111754381A (zh) 2019-03-26 2020-10-09 华为技术有限公司 图形渲染方法、装置和计算机可读存储介质
KR20210012642A (ko) * 2019-07-26 2021-02-03 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 동작 방법
TWI775095B (zh) * 2020-06-11 2022-08-21 香港商冠捷投資有限公司 顯示裝置及動態功率分配方法
WO2022025872A1 (en) * 2020-07-29 2022-02-03 Hewlett-Packard Development Company, L.P. Power budget allocations
US11379269B2 (en) * 2020-08-26 2022-07-05 International Business Machines Corporation Load balancing based on utilization percentage of CPU cores
US20220240408A1 (en) * 2021-01-22 2022-07-28 Nvidia Corporation Static data center power balancing and configuration
US11947941B2 (en) 2021-08-24 2024-04-02 Red Hat, Inc. Dynamic computation offloading to graphics processing unit
US20230117690A1 (en) * 2021-10-14 2023-04-20 Jason Heger Dual system on a chip eyewear
US20230124748A1 (en) * 2021-10-14 2023-04-20 Jason Heger Dual system on a chip eyewear
US20230117720A1 (en) * 2021-10-14 2023-04-20 Jason Heger Dual system on a chip eyewear
WO2023243098A1 (ja) * 2022-06-17 2023-12-21 日本電信電話株式会社 アクセラレータオフロード装置、アクセラレータオフロード方法およびプログラム
CN116402674A (zh) * 2023-04-03 2023-07-07 摩尔线程智能科技(北京)有限责任公司 Gpu的命令处理方法、装置、电子设备和存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2814880B2 (ja) * 1993-06-04 1998-10-27 日本電気株式会社 異なる命令特性を持つ複数のcpuによって構成される計算機システムの制御装置
US7143300B2 (en) * 2001-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Automated power management system for a network of computers
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US20070124618A1 (en) * 2005-11-29 2007-05-31 Aguilar Maximino Jr Optimizing power and performance using software and hardware thermal profiles
US7694160B2 (en) * 2006-08-31 2010-04-06 Ati Technologies Ulc Method and apparatus for optimizing power consumption in a multiprocessor environment
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
US7949889B2 (en) * 2008-01-07 2011-05-24 Apple Inc. Forced idle of a data processing system
JP5395539B2 (ja) * 2009-06-30 2014-01-22 株式会社東芝 情報処理装置
CN101650685A (zh) * 2009-08-28 2010-02-17 曙光信息产业(北京)有限公司 设备能效的确定方法和装置
US8826048B2 (en) * 2009-09-01 2014-09-02 Nvidia Corporation Regulating power within a shared budget
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
CN101820384A (zh) * 2010-02-05 2010-09-01 浪潮(北京)电子信息产业有限公司 一种集群服务动态分配方法及装置

Also Published As

Publication number Publication date
CN104106053B (zh) 2018-12-11
CN104106053A (zh) 2014-10-15
EP2812802A1 (en) 2014-12-17
EP2812802A4 (en) 2016-04-27
US20140052965A1 (en) 2014-02-20
WO2013119226A1 (en) 2013-08-15
JP2015509622A (ja) 2015-03-30

Similar Documents

Publication Publication Date Title
JP6072834B2 (ja) 方法、プログラム、装置、およびシステム
US9805438B2 (en) Dynamically rebalancing graphics processor resources
US9832247B2 (en) Processing video data in a cloud
US10331496B2 (en) Runtime dispatching among a hererogeneous groups of processors
US9652300B2 (en) Systems, methods, and computer program products for preemption of threads at a synchronization barrier
US10228748B2 (en) Context aware power management for graphics devices
US10031770B2 (en) System and method of delayed context switching in processor registers
JP5792337B2 (ja) グラフィクスのレンダリング中における電力消費の低減
US9710403B2 (en) Power saving method and apparatus for first in first out (FIFO) memories
TW201331749A (zh) 顯示控制器之電源管理技術
US9792151B2 (en) Energy efficient burst mode
US9514715B2 (en) Graphics voltage reduction for load line optimization
US20150170317A1 (en) Load Balancing for Consumer-Producer and Concurrent Workloads
US20150106601A1 (en) Method for Automatically Adapting Application to Suitable Multicore Processing Mode and Mobile Device
US20150170315A1 (en) Controlling Frame Display Rate
US10261570B2 (en) Managing graphics power consumption and performance

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161128

R155 Notification before disposition of declining of application

Free format text: JAPANESE INTERMEDIATE CODE: R155

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161228

R150 Certificate of patent or registration of utility model

Ref document number: 6072834

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees