(57)【特許請求の範囲】
【請求項１】
資源を管理する方法であって、
複数のプロセッサのうち第１のグラフィックプロセッサに関連する資源を、前記第１のグラフィックプロセッサの第１の状態から第２の状態への近々の移行に応じて識別するステップであって、前記複数のプロセッサのうち少なくとも第２のグラフィックプロセッサは、前記移行の前後において電力供給状態を維持するステップであって、前記第１のグラフィックプロセッサに関連するメモリのコンテンツを決定するために、演算処理装置（ＣＰＵ）に関連するメモリにアクセスするステップを更に備えるステップと、
前記第２の状態が副動作電力状態の場合に、識別された資源を、前記第１のグラフィックプロセッサに関連するメモリから前記第２のグラフィックプロセッサに関連するメモリに複製するステップと、
前記第２の状態が電力供給状態の場合に、識別された資源を、前記第２のグラフィックプロセッサに関連するメモリから前記第１のグラフィックプロセッサに関連するメモリに複製するステップと、を備える方法。
【請求項２】
前記第２の状態は前記副動作電力状態である、請求項１の方法。
【請求項３】
前記移行後に前記第１のグラフィックプロセッサが前記副動作電力状態になる予定であることを決定するステップ、を更に備える請求項２の方法。
【請求項４】
前記第１のグラフィックプロセッサはスレーブＧＰＵであり、前記第２のグラフィックプロセッサはマスターＧＰＵである請求項２の方法。
【請求項５】
前記第２の状態は前記電力供給状態である、請求項１の方法。
【請求項６】
前記第１のグラフィックプロセッサはスレーブＧＰＵであり、前記第２のグラフィックプロセッサはマスターＧＰＵである請求項５の方法。
【請求項７】
前記第２の状態は前記副動作電力状態であって、
前記識別するステップは、前記第１のグラフィックプロセッサに関連するメモリに記憶されており、且つ、前記第２のグラフィックプロセッサに関連するメモリに記憶されていない資源を、前記ＣＰＵに関連するメモリに記憶されたルックアップテーブルを用いて識別するステップを備え、
前記識別された資源を、前記第１のグラフィックプロセッサに関連するメモリから複製するステップは、前記識別された資源のみを前記第２のグラフィックプロセッサに関連するメモリに複製するステップを備える請求項１の方法。
【請求項８】
検出されたシステムイベントに基づき前記近々の移行を識別するステップ、を更に備える請求項１の方法。
【請求項９】
前記第１の状態又は前記第２の状態は、前記第１のグラフィックプロセッサに関連するメモリの少なくとも一部分に対するメモリリフレッシュが無効にされている状態である請求項１の方法。
【請求項１０】
制御処理ユニット（ＣＰＵ）と、前記ＣＰＵと通信するメモリと、を備える電力管理のためのシステムであって、
前記メモリは複数の処理命令を記憶するためのものであり、
前記複数の処理命令は、前記ＣＰＵに、
第１のグラフィックプロセッサに関連する資源を、前記第１のグラフィックプロセッサの第１の状態から第２の状態への近々の移行に応じて識別することであって、複数のプロセッサのうち少なくとも第２のグラフィックプロセッサは、前記移行の前後において電力供給状態を維持することであって、前記第１のグラフィックプロセッサに関連するメモリのコンテンツを決定するために、前記ＣＰＵと通信する前記メモリにアクセスすることと、
前記第２の状態が副動作電力状態の場合に、識別された資源を、前記第１のグラフィックプロセッサに関連するメモリから前記第２のグラフィックプロセッサに関連するメモリに複製することと、
前記第２の状態が電力供給状態の場合に、識別された資源を、前記第２のグラフィックプロセッサに関連するメモリから前記第１のグラフィックプロセッサに関連するメモリに複製することと、
を行うように指示する、システム。
【請求項１１】
前記第２の状態は前記副動作電力状態である、請求項１０のシステム。
【請求項１２】
前記第１のグラフィックプロセッサが前記副動作電力状態になる予定であることを決定するように、前記ＣＰＵに指示するための複数の処理命令を更に備える請求項１１のシステム。
【請求項１３】
前記第１のグラフィックプロセッサはスレーブＧＰＵであり、前記第２のグラフィックプロセッサはマスターＧＰＵである請求項１１のシステム。
【請求項１４】
前記第２の状態は前記電力供給状態である、請求項１０のシステム。
【請求項１５】
前記第２の状態は前記副動作電力状態であって、
前記第１のグラフィックプロセッサに関連するメモリに記憶されており、且つ、前記第２のグラフィックプロセッサに関連するメモリに記憶されていない資源を、前記ＣＰＵに関連するメモリに記憶されたルックアップテーブルを用いて識別するように、前記ＣＰＵに指示するための複数の処理命令と、
前記識別された資源のみを前記第２のグラフィックプロセッサに関連するメモリに複製するように、前記第１のグラフィックプロセッサに指示するための複数の処理命令と、を更に備える請求項１０のシステム。
【請求項１６】
資源を管理する方法を行うために１つ以上のプロセッサによる実行のための１つ以上の命令の１つ以上のシーケンスを伝える非一時的なコンピュータ可読媒体であって、前記命令は、前記１つ以上のプロセッサによって実行されるときに、前記１つ以上のプロセッサに、
第１のグラフィックプロセッサに関連する資源を、前記第１のグラフィックプロセッサの第１の状態から第２の状態への近々の移行に応じて識別することであって、複数のプロセッサのうち少なくとも第２のグラフィックプロセッサは、前記移行の前後において電力供給状態を維持することであって、前記第１のグラフィックプロセッサに関連するメモリのコンテンツを決定するために、制御処理ユニット（ＣＰＵ）に関連するメモリにアクセスすることと、
前記第２の状態が副動作電力状態の場合に、識別された資源を、前記第１のグラフィックプロセッサに関連するメモリから前記第２のグラフィックプロセッサに関連するメモリに複製することと、
前記第２の状態が電力供給状態の場合に、識別された資源を、前記第２のグラフィックプロセッサに関連するメモリから前記第１のグラフィックプロセッサに関連するメモリに複製することと、
を行わせる、コンピュータ可読媒体。
【請求項１７】
前記第１のグラフィックプロセッサはスレーブＧＰＵであり、前記第２のグラフィックプロセッサはマスターＧＰＵである請求項１６のコンピュータ可読媒体。
【請求項１８】
検出されたシステムイベントに基づき前記近々の移行を識別すること、を前記１つ以上のプロセッサに行わせることを更に備える請求項１６のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してグラフィクス処理に関し、より特定的には多重プロセッサ環境の態様を管理することに関する。
【背景技術】
【０００２】
幾つかのコンピュータシステムは、グラフィクスタスクの並列処理を通して性能向上を可能にするために、多重グラフィクス処理ユニット（ＧＰＵ）（多重ボード、ＡＳＩＣ、又は多重コアにおいて具現化されるであろう）を含むであろうグラフィクス処理システムにおいて見られるような例えば多重コプロセッサ等の多重プロセッサを有する。例えば、多重ＧＰＵを用いることによってもたらされる追加的な処理能力を有することを必要とするグラフィクス重視のアプリケーション、又はそのような追加的な処理能力を有することの利益を享受し得るグラフィクス重視のアプリケーションが、実行中であることがある。しかし、他のアプリケーションは、そのような処理能力の増大からの利益を享受しない。これらのアプリケーションが実行中である場合、１つ以上のＧＰＵは使用されないかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
幾つかのオペレーティングシステムにおいては、不使用のＧＰＵをオフにすることによって電力が節約され得る。ＧＰＵの電源が切られると、ＧＰＵに関連するメモリに記憶されている資源は喪失されあるいは期限切れになり得る。従って、不使用のＧＰＵに関連するメモリに記憶されている資源にシステムの他のＧＰＵがアクセス可能であり続けるように、不使用のＧＰＵは電力供給されたままである必要があるかもしれない。不使用のＧＰＵに電力供給し続けることで、結果としてシステムは更なる電力を使用し、またモバイルシステムの場合には、バッテリ寿命が短くなる。
【０００４】
従って、不使用のプロセッサ（例えば不使用のＧＰＵ）がオフにされたときに資源が保たれることを可能にする方法及びシステムが必要とされている。
【課題を解決するための手段】
【０００５】
ここに説明される実施形態は、多重プロセッサ環境内のプロセッサ（例えばＧＰＵ）の状態が電力を節約するために変化させられ得るように、メモリ内に記憶されている資源を管理することに関連している。例えば、第１のプロセッサ（例えばスレーブプロセッサ）の資源は、第１のプロセッサ及び関連メモリが副動作状態へ移行するのに先立ち、第２のプロセッサ（例えばマスタープロセッサ）に関連するメモリへ資源を複製することによって、保たれ得る。
【０００６】
ある実施形態においては、資源を管理する方法は、近々の移行に応答するプロセッサに関連する資源を識別することと、識別された資源をＧＰＵに関連するメモリから又はＧＰＵに関連するメモリへ複製することと、を含む。
【０００７】
別の実施形態においては、電力を管理するためのシステムは、プロセッサと、プロセッサと通信するメモリと、を含む。メモリは、近々の移行に応答するプロセッサに関連する資源を識別することと、識別された資源をプロセッサに関連するメモリから又はプロセッサに関連するメモリへ複製することと、をプロセッサに指示するための複数の処理命令を記憶する。
【０００８】
別の実施形態においては、資源を管理する方法を行うために１つ以上のプロセッサによる実行のための１つ以上の命令の１つ以上のシーケンスを伝えるコンピュータ可読媒体が提供され、命令は、１つ以上のプロセッサによって実行されるときに、１つ以上のプロセッサに、近々の移行に応答するプロセッサに関連する資源を識別することと、（i）識別された資源をプロセッサに関連するメモリから複製することと（ii）識別された資源をプロセッサに関連するメモリへ複製することとを含むグループから少なくとも１つを行うことと、をさせる。
【０００９】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。
【図面の簡単な説明】
【００１０】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は、本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
【００１１】
【図１】図１は従来のグラフィクスコンピューティング環境のブロック図である。
【００１２】
【図２】図２は本発明の実施形態に従うグラフィクスコンピューティング環境のブロック図である。
【００１３】
【図３】図３は本発明の実施形態に従う図２に示されるコンピューティング環境の簡易図（その１）である。
【図４】図４は本発明の実施形態に従う図２に示されるコンピューティング環境の簡易図（その２）である。
【図５】図５は本発明の実施形態に従う図２に示されるコンピューティング環境の簡易図（その３）である。
【図６】図６は本発明の実施形態に従う図２に示されるコンピューティング環境の簡易図（その４）である。
【００１４】
【図７】図７は本発明の実施形態に従う構成マネージャの例示的な動作を示す状態図である。
【００１５】
【図８】図８は本発明の実施形態に従い多重グラフィクス処理ユニットシステム内の資源を管理する例示的な方法のフローチャートである。
【００１６】
添付の図面を参照して本発明が説明されることになる。概して、ある要素が最初に現れる図面は、典型的には対応する参照番号の一番左の単一又は複数の桁によって示される。
【発明を実施するための形態】
【００１７】
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の１つ以上であるが全てではない例示的な実施形態を記述している場合があり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【００１８】
特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者の知識を適用することによって、過度の実験を必要とせず、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ／又は種々の応用に適用することができる。従って、そのような適用及び修正は、ここに提示されている教示及び指針に基いて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、本出願書類の用語等が教示及び指針の下で当業者によって解釈されるべきであるという点において、説明を目的としたものであって限定を目的としていないことが理解されるべきである。
【００１９】
本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではない一方で、特許請求の範囲及びそれらと均等なものに従ってのみ画定されるべきである。
【００２０】
図１はコンピューティング環境１００を示しており、コンピューティング環境１００は、中央処理ユニット（ＣＰＵ）１０２と、メモリ１０４と、マスターグラフィクス処理ユニット（ＧＰＵ）１０６と、第１及び第２のスレーブＧＰＵ１０８及び１１０と、メモリ１１２〜１１６と、ディスプレイ１１８と、を含む。
【００２１】
ドライバ１２０はＣＰＵ１０２上で動作するプログラムである。ドライバ１２０は、マスターＧＰＵ１０６に特有の動作を処理するマスター向けドライバ１２２と、第１及び第２のスレーブＧＰＵ１０８及び１１０に特有の動作をそれぞれ処理するスレーブ向けドライバ１２４及び１２６と、を含む。ある実施形態においては、ドライバ１２０はＧＰＵ１０６〜１１０の動作を制御する。例えばドライバ１２０は、グラフィクスタスクをＧＰＵ１０６〜１１０の各々に割り当てることができる。
【００２２】
ここでの説明に基づいて関連分野を含めた当業者であれば理解するであろうように、ＧＰＵ１０６〜１１０は、種々のグラフィクスタスク、例えばディスプレイを描画しまた駆動すること(rendering and driving a display)、を行うために用いられ得る。図１に示されるように、コンピューティング環境１００は、２種類のＧＰＵ、即ちマスターＧＰＵ及びスレーブＧＰＵを有している。ある実施形態においては、マスターＧＰＵはディスプレイを駆動するＧＰＵであり、またスレーブＧＰＵはディスプレイを駆動しないＧＰＵである。例えば図１に示されるように、マスターＧＰＵ１０６はディスプレイ１１８を駆動する。ディスプレイ１１８は、様々な異なる種類のディスプレイ、例えばモニタ又は他のスクリーン、であり得る。代替的な実施形態においては、マスターＧＰＵ１０６は、マルチプレクサ等の１つ以上の要素（図１には図示せず）を介してディスプレイ１１８を駆動することができる。
【００２３】
別の実施形態においては、スレーブＧＰＵはディスプレイを駆動するために用いられ得る。そのような実施形態においては、マスターＧＰＵは、最も高い処理能力を有し最も電力を消費するＧＰＵであり得る。
【００２４】
ＧＰＵ１０６、１０８及び１１０は、関連するメモリ１１２、１１４及び１１６にそれぞれ結合される。図１に示されるように、メモリ１１２〜１１６の各々は資源(resources)を記憶する。例えばメモリ１１２は、幾つかの資源１、２、３、４及び６を記憶する。同様にメモリ１１４及び１１６は、それぞれ、資源１、２、３、４及び５と、資源１、２、３、４及び７と、を記憶する。このようにメモリ１１２〜１１６は、全てのメモリ内に記憶される資源、例えば資源１、２、３及び４と、当該特定のメモリ上でのみ利用可能な他の資源、例えば資源５、６及び７と、を記憶する。ある実施形態においては、資源１〜７の１つ以上は、ＧＰＵ１０６〜１１０のそれぞれのＧＰＵによって描画される表面(surface rendered)又はＧＰＵによって生成される他の種類のデータを含む。別の実施形態においては、資源１〜７の１つ以上は、ＣＰＵ１０２によって生成される表面又は他のデータを含む。
【００２５】
全てのＧＰＵ１０６〜１１０にグラフィクス処理タスクを並列に完了させることは、高められた性能を提供する。しかし、他の状況においては、多重ＧＰＵをアクティブにすることによってもたらされる高い性能は過剰な電力使用を必要とし、あるいはそのような高い性能は必要とされない。例えばシステムがバッテリ等のＤＣ電源によって電力供給されている場合、電力節約はグラフィクス性能よりも重要であることがあるので、スレーブＧＰＵ１０８及び／又はスレーブＧＰＵ１１０への電源を切ることが望ましいかもしれない。別の例では、ＣＰＵ１０２は、全てのＧＰＵ１０６〜１１０がアクティブであることの利益を享受する又はそれを必要とするグラフィクス重視のゲーム等のアプリケーションをなんら実行中でないかもしれない。そのような例では、スレーブＧＰＵ１０８及び１１０の１つ以上は非アクティブであってよく、即ちグラフィクスタスクをなんら処理しなくてよい。図１に示されるように、スレーブＧＰＵ１０８及び１１０は、それらに関連するメモリが他の場所には記憶されていない資源を記憶しているという理由で、電源を切ることはできないし、あるいは非アクティブにすることはできない。このように、ＧＰＵ１０８及び１１０は、それらが非アクティブである場合且つ／又はシステムが限定された電源（例えばＤＣ電源）によって電力供給されている場合であっても、電力供給され続ける必要があるであろう。
【００２６】
ここに説明される実施形態においては、資源を管理して１つ以上のＧＰＵが電力供給状態(powered state)から副動作電力状態(sub-operational power state)へ切り換えられることを可能にする方法及びシステムが提供される。例えば、ここに説明される方法及びシステムは、副動作電力状態へ移行することになるＧＰＵに特有の資源が喪失されないように、電力供給状態を維持することになっている別の（例えばマスター）ＧＰＵに関連するメモリにそれらの資源が複製されることを可能にする。また、スレーブが副動作電力状態にあった間に喪失した資源又は期限切れになってしまった資源は、スレーブＧＰＵが電力供給状態に戻ったときにスレーブＧＰＵに提供し戻され得る。
【００２７】
ある実施形態においては、プロセッサ（例えばＧＰＵ）は、プロセッサに関連するメモリ内の資源が喪失されず且つ最新であり続けるように電力が供給されている場合に、電力供給状態にある。例えば、電力供給状態は、ＧＰＵの全ての回路ブロックに完全に電力が供給され且つメモリが通常通りにリフレッシュされると共にメモリのコンテンツへのアクセスが有効にされている状態であり得る。
【００２８】
副動作電力状態においては、プロセッサに関連するメモリ内に記憶されている少なくとも幾つかの資源は喪失され、又は期限切れになっている。例えばＧＰＵは、その設定を副動作レベルへと切り換えることができる。例えば、ＧＰＵの動作周波数は大幅に減少させられてよく、ＧＰＵの動作電圧は、減少させられた周波数を維持するのに十分なより僅かに高く設定されてよく、位相ロックループ（ＰＬＬ）及び入力／出力（Ｉ／Ｏ）パッド等の回路ブロックは完全に電源を切られてよい。同様に、副動作電力状態においては、メモリはその設定を副動作レベルへと切り換えることができる。例えば、メモリアクセスは無効にされてよく、またメモリは自己リフレッシュモードへ切り換えられてよい。別の実施形態においては、副動作電力状態にあるＧＰＵ又はメモリは、完全に電源を切られてよい。
【００２９】
図２は本発明の実施形態に従うコンピューティング環境２００を示している。コンピューティング環境２００は、ＣＰＵ２０２と、メモリ２０４と、スレーブＧＰＵ２０６と、マスターＧＰＵ２０８と、メモリ２１０及び２１２と、ディスプレイ２１４と、を含む。当業者によって理解されるであろうように、ＧＰＵ２０６及び２０８は、他のデバイスの一部を形成してよく、例えば単一の（又は多重の）ＣＰＵの一部、単一のデバイス（例えば多重ＧＰＵコアを伴うＡＳＩＣ）の一部、異なるデバイス（例えばノースブリッジ）の一部、又はこれらの組み合わせを形成してよい。
【００３０】
コンピューティング環境２００は、単に簡潔さを目的として単一のスレーブＧＰＵ２０６及び単一のマスターＧＰＵ２０８のみを伴って図示されている。関連分野を含めた当業者であればここでの説明に基づいて理解するであろうように、ここに説明される実施形態は、２つ以上のマスターＧＰＵ又はスレーブＧＰＵを含むシステムにも適用され得る。ＧＰＵ２０６及び２０８は、種々のグラフィクスタスク、例えばディスプレイを描画しまた駆動すること、を行うために用いられ得る。マスターＧＰＵ２０８はディスプレイ２１４に結合される。ある実施形態においては、ディスプレイ２１４は、図１を参照して説明したディスプレイ１１８と実質的に同様である。
【００３１】
ＧＰＵ２０６及び２０８は、関連するメモリ２１０及び２１２にそれぞれ結合される。図２に示されるように、メモリ２１０及び２１２の両方が資源１、２、３及び４を記憶しているが、メモリ２１０のみが資源５を記憶している。
【００３２】
ＣＰＵ２０２は、その上で動作する構成マネージャモジュール２１６及びドライバ２１８を有する。ある実施形態においては、ＣＰＵ２０２は、構成マネージャ２１６及び／又はドライバ２１８を実行するようにＣＰＵ２０２に指示する命令を記憶するメモリ、例えばメモリ２０４又は図２には図示されない他のメモリに結合される。構成マネージャ２１６は、システムイベントに関する情報を受信し、そしてＧＰＵ２０６及び２０８のための構成を決定する。特に、構成マネージャは、システムイベントに基づいてＧＰＵ２０６及び２０８の各々にグラフィクス負担(graphics responsibilities)を割り当てる。システムイベントは、例えば、壁コンセント電源等のＡＣ電源からバッテリ電源等のＤＣ電源への切り換えを含み得る。そのような実施形態においては、ＧＰＵ２０６及び２０８の１つが、電力を節約するために副動作電力状態へと切り換えられ得る。別の実施形態においては、ＧＰＵ２０６は高性能ＧＰＵであり、またＧＰＵ２０８は、ＧＰＵ２０６よりも少ない電力を用いる比較的低性能なＧＰＵである。そのような実施形態においては、電源がＡＣ電源からＤＣ電源に切り換えられると、高性能ＧＰＵ２０６は副動作電力状態へ切り換えられ得るし、また比較的低性能なＧＰＵ２０８は電力供給状態へ切り換えられ得る。電源がＤＣ電源からＡＣ電源に切り換えられると、高性能ＧＰＵ２０６は副動作電力状態から電力供給状態へと切り換えられ得るし、また比較的低性能な２０８は電力供給状態へ切り換えられる。
【００３３】
他のシステムイベントは、追加的なグラフィクス処理能力を必要とし又はその利益を享受するアプリケーションの開始又は停止を含み得る。構成マネージャ２１６の動作は、図３〜７に関して更に説明される。
【００３４】
ドライバ２１８はＧＰＵ２０６及び２０８の動作を制御する。ドライバ２１８は、電力マネージャモジュール２２０、資源マネージャモジュール２２４、スレーブ向けモジュール２２６、及びマスター向けモジュール２２８を含む。電力マネージャモジュール２２０は、構成マネージャ２１６によって決定されるＧＰＵ構成を受信し、そしてＧＰＵ２０６及び２０８の各々に対する電力状態を決定する。例えば電力マネージャモジュール２２０は、スレーブＧＰＵ２０６が副動作電力状態又は電力供給状態へ移行することになることを、それが構成マネージャ２１６によって割り当てられている負担に基づいて決定することができ、これは近い将来の又は近々の移行(upcoming or impending transition)と称され得る。資源マネージャモジュール２２４は、ＧＰＵが副動作電力状態へ移行する場合にメモリ２１０及び２１２の資源が喪失しないように、資源を管理する。近々の又は近い将来の移行は、例えばアプリケーション又はユーザ入力から受信される表示の結果であってよい。
【００３５】
ある実施形態においては、資源マネージャモジュール２２４はメモリ２０４にアクセスして、１つのメモリから他へ複製される必要のある資源を識別する。例えば資源マネージャモジュール２２４は、メモリ２０４内に記憶されるルックアップテーブルにアクセスして、１つのメモリに記憶されており且つ他には記憶されていない資源を識別する。そのようなルックアップテーブルは、リンクリスト(linked list)、アレイ、又はここでの説明に基づいて関連分野を含めた当業者に既知であろうような他のデータ構造として実装され得る。図２に示されるように、メモリ２０４内に記憶されるルックアップテーブルは、当該資源を保持しているメモリが関連付けられているＧＰＵによって索引付けられる。他の実施形態においては、ルックアップテーブルは、資源に基づくような他の方法において索引付けられ得る。スレーブ向けモジュール２２６及びマスター向けモジュール２２８は、それぞれスレーブＧＰＵ２０６及びマスターＧＰＵ２０８に対応する。ある実施形態においては、スレーブ向けモジュール２２６及びマスター向けモジュール２２８は、ＣＰＵ２０２とＧＰＵ２０６及び２０８との間の相互作用を容易にする。システムイベントに応答して資源を管理することに関するコンピューティング環境２００の動作は、図３〜６に関して更に説明される。
【００３６】
図３はスレーブＧＰＵ２０６及びマスターＧＰＵ２０８の両方が電力供給状態にある場合におけるコンピューティング環境２００の簡易図を示している。図３に示されるように、メモリ２１０（スレーブＧＰＵ２０６に関連している）は、メモリ２１２（マスターＧＰＵ２０８に関連している）内に記憶されていない資源５を記憶している。
【００３７】
図４はシステムイベントが発生したこと及び全てのグラフィクス負担がマスターＧＰＵ２０８に割り当てられることになることを構成マネージャ２１６が決定した後のシステム２００の簡易図を示している。例えば構成マネージャ２１６は、限定された時間だけしか電力を供給することができずに電力使用をグラフィクス処理性能よりも懸念事項にしてしまうバッテリ等のＤＣ電源に電源が切り換わったことを表示する情報を受信してよい。
【００３８】
ＣＰＵ２０２上で実行中の電力マネージャモジュール２２０は、構成マネージャ２１６によって決定されるＧＰＵ構成を受信し、そしてスレーブＧＰＵ２０６及びマスターＧＰＵ２０８に対する電力状態を決定する。例えば電力マネージャモジュール２２０は、スレーブＧＰＵ２０６及びその関連メモリ２１０が副動作電力状態へと切り換えられること並びにマスターＧＰＵ２０８が電力供給状態のままでいることを決定する。資源マネージャモジュール２２４は、ＧＰＵ２０６及び２０８に対して決定された電力状態を受信し、そして保たれることを必要とする資源をメモリ２１０が記憶しているかどうかを決定する。例えばスレーブＧＰＵ２０６及びその関連メモリ２１０が副動作電力状態へと切り換えられることになるという情報を受信した場合、資源マネージャモジュール２２４は、メモリ２０４、特にメモリ２０４内に記憶されているルックアップテーブルにアクセスし、そしてメモリ２１０に記憶されており且つメモリ２１２には記憶されていないものとして資源５を識別する。資源マネージャモジュール２２４は次いで、資源５をメモリ２１０からメモリ２１２へと複製するようにＧＰＵ２０６及び２０８に指示する。
【００３９】
図５はスレーブＧＰＵ２０６及びメモリ２１０が副動作電力状態へと切り換えられた後のシステム２００の簡易図を示している。図５に示されるように、メモリ２１０のコンテンツは、喪失してしまっている（なぜならばメモリの当該部分への電源は実質的に切られた）か又はもはや最新ではない（なぜならばメモリは自己リフレッシュモードに切り換わっており、またスレーブＧＰＵ２０６が副動作電力状態にあった間に資源はグラフィクス処理を通して更新されている）かのいずれかである。
【００４０】
図５に示されるように、メモリ２１２は資源５を記憶している。状態移行に先立ち資源５をメモリ２１２へと複製することによって、資源５は保たれる。マスターＧＰＵ２０８は、通常通り、ＣＰＵ２０２からグラフィクスタスクを受信することができ、またメモリ２１２内に記憶されている資源（資源５を含む）を更新することができる。ある実施形態においては、メモリ２０４内に記憶されているルックアップテーブルは、メモリ２０６がもはや最新の資源をなんら記憶していないことを反映するために更新される。更なる実施形態においては、ルックアップテーブルはまた、メモリ２１２のコンテンツにおける任意の変化、例えば既存の資源に対する更新又は追加的な資源の存在を反映するために更新される。
【００４１】
図６はスレーブＧＰＵ２０６及びその関連メモリ２１０が電力供給状態に戻ったときのシステム２００の簡易図を示している。例えば、構成マネージャ２１６は、本質的に無制限の時間で電力を供給することができグラフィクス性能を電力使用よりも関心事にする壁コンセント電源等のＡＣ電源に電源が切り換わったことを表示する情報を受信することができる。応答して、構成マネージャ２１６は、グラフィクス負担がスレーブＧＰＵ２０６及びマスターＧＰＵ２０８の両方に割り当てられることを可能にする。電力マネージャモジュール２２０は決定された構成を受信し、そしてスレーブＧＰＵ２０６及びマスターＧＰＵ２０８並びにそれらの関連するメモリに対する電力状態を決定する。
【００４２】
具体的には、電力マネージャモジュール２２０は、ＧＰＵ２０６及び２０８並びにメモリ２１０及び２１２が電力供給状態になる予定であることを決定する。ＧＰＵ２０６及び２０８が電力供給状態に戻る予定であることを示す情報を受信すると、資源マネージャモジュール２２４は、メモリ２０４内に記憶されているルックアップテーブル（メモリ２１０がなんら最新の資源を含んでいないことを示すように更新されてしまっている）にアクセスして、メモリ２１２上のどの資源がメモリ２１０へ複製されるべきかを決定する。資源マネージャモジュール２２４は次いで、資源１〜５をメモリ２１０に複製するようにマスターＧＰＵ２０８及びスレーブＧＰＵ２０６に指示する。このように、コンピューティング環境２００は、図３に示され且つ上述した状態に戻される。ＧＰＵ２０６及び２０８は、通常通り、即ちスレーブＧＰＵ２０６及びメモリ２１０があたかも副動作電力状態に移行しなかったかのように、グラフィクスタスクを処理することを継続することができる。
【００４３】
図７は本発明の実施形態に従う状態図７００を示している。状態図７００は、電源の変更及び増大されたグラフィクス性能の利益を享受する又はそれを必要とする３Ｄグラフィクスゲーム等のアプリケーションの開始又は停止に応答する構成マネージャ２１６の動作を示している。状態図７００の各状態は、異なるＧＰＵ構成、即ちシステム内のＧＰＵへのグラフィクス処理負担の異なる割り当てに対応する。負担割り当てに基づいて、電力マネージャモジュール２２０はシステム内の各ＧＰＵに対する電力状態を決定する。
【００４４】
図７に示されるように、状態図７００は初期判断７０２及び状態７０４〜７１０を含む。システムが初期化されると、構成マネージャ２１６は、電源がＡＣ電源であるのか又はＤＣ電源であるのかを決定するために初期判断７０２を行う。初期判断ステップ７０２においてＡＣ電源がシステムに電力供給していると決定されると、構成マネージャ２１６は状態７０４をエンターする。状態７０４においては、単一又は多重のいずれかのＧＰＵ構成が用いられる。例えば、システムがデスクトップシステム内に含まれている場合、システムは即座に多重ＧＰＵ状態をエンターしてよい。代替的にシステムがモバイルシステム（例えばラップトップ）内に含まれている場合、システムは当初は単一ＧＰＵ状態をエンターすることができる。システムの他のＧＰＵ（単一又は複数）は次いで副動作電力状態になることになる。いずれの場合においても、グラフィクスアプリケーションは未だ開始していないので、この構成におけるＧＰＵ（単一又は複数）は当初はアイドルであってよい。
【００４５】
図７に示されるように、一旦グラフィクスアプリケーションが始まると、構成マネージャ２１６は状態７０６への移行を生じさせる。多重ＧＰＵ構成におけるＧＰＵがアクティブである、即ちグラフィクスタスクを処理中であることを除いて、状態７０６は状態７０４と実質的に同様である。状態７０４が単一のアイドルＧＰＵを含む実施形態においては、システムは、多重ＧＰＵの利益を享受することになるかどうか又はそれを必要とすることになるかどうかを決定することができる。該当する場合には、状態７０６は多重ＧＰＵをアクティブにすることを含むことになる。そうでない場合には、グラフィクスタスクを処理するために単一ＧＰＵが用いられることになる。
【００４６】
初期判断ステップ７０２においてＤＣ電源がシステムに電力供給していると構成マネージャ２１６が決定すると、構成マネージャ２１６は状態７０８にエンターするようにシステムに指示する。状態７０８においては、グラフィクス処理タスクを処理するために単一のＧＰＵが利用可能にされる。例えば、マスターＧＰＵのみが、グラフィクス処理タスクを処理するために利用可能にされてよい。電力マネージャモジュール２２０は決定された負担（即ちグラフィクス処理タスクを処理するためにマスターＧＰＵのみが利用可能であること）を受信し、そしてマスターＧＰＵ２０８が電力供給状態にある唯一のＧＰＵであること及びスレーブＧＰＵが副動作電力状態にあることを決定する。ある実施形態においては、ＤＣ電源モードに起因してマスターＧＰＵ２０８が低減された電力状態にあるであろうことを除いて、状態７０８は状態７０４と実質的に同様であり得る。状態７０８においては、グラフィクス処理アプリケーションは始まっていないので、マスターＧＰＵ２０８はアイドルであってよい。一旦グラフィクス処理アプリケーションが始まると、構成マネージャ２１６は、マスターＧＰＵがアクティブである状態７１０への移行を生じさせる。
【００４７】
このように、グラフィクスアプリケーションの開始又は停止は、状態７０４及び７０８からそれぞれ状態７０６及び７１０への移行を生じさせる。ＤＣ電源からＡＣ電源への移行又はその逆は、状態７０４及び７０６とそれぞれ状態７０８及び７１０との間での移行を生じさせる。電力供給の切り替え並びにグラフィクス処理アプリケーションの開始及び停止を含むシステムイベントに関して状態図７００が説明されてきたが、関連分野を含めた当業者であれば、ここでの説明に基づき、構成マネージャ２１６が他のシステムイベント、例えばバッテリ電力のレベルが特定のレベルに達すること、ユーザ入力、等に基づいて状態移行を生じさせ得ることを認識するはずである。
【００４８】
図８は本発明の実施形態に従い多重ＧＰＵシステム内の資源を管理する例示的な方法８００のフローチャートである。他の構成及び動作の実施形態が以下の議論に基づいて関連分野を含む当業者に明らかであろう。フローチャート８００は図２の実施形態を参照して説明される。しかし、フローチャート８００はその実施形態に限定されない。図８に示されるステップは、図示される順序で必ずしも生じる必要はない。図８のステップが以下に詳細に説明される。
【００４９】
ステップ８０２では、検出されたシステムイベントに基づいてＧＰＵが第１の状態から第２の状態へ移行することになるのかが決定される。例えば図２において、構成マネージャ２１６は、ＡＣ電源からＤＣ電源に切り換えられつつある電源に基づいて、スレーブＧＰＵ２０６がグラフィクス負担をなんら有しないことになると決定する。その結果、電力マネージャモジュール２２０は次いで、スレーブＧＰＵ２０６が電力供給状態から副動作電力状態へ移行することになると決定する。
【００５０】
別の実施形態においては、構成マネージャ２１６は、ＤＣ電源からＡＣ電源に切り換えられつつある電源に基づいて、グラフィクス処理タスクを処理するためにスレーブＧＰＵ２０６が利用可能になることを決定する。その結果、電力マネージャモジュール２２０は、スレーブＧＰＵ２０６が副動作電力状態から電力供給状態へ移行することになると決定する。
【００５１】
ステップ８０４では、ＧＰＵに関連する資源が識別される。例えば図２においては、電力マネージャモジュール２２０によって決定される電力状態移行に基づいて、資源マネージャモジュール２２４は、メモリ２１０内に記憶されている資源５を、メモリ２１０内に記憶されており且つメモリ２１２内には記憶されていない資源であると識別する。メモリ資源５はメモリ２１０内にのみ記憶されているので、状態移行の後にもアクティブであり続けることになるメモリ、例えばメモリ２１２へと資源５が複製されないかぎり、メモリ２１０が副動作電力状態へと切り換えられたときに資源５は喪失することになる。ある実施形態においては、資源マネージャモジュール２２４は、メモリ２０４内に記憶されるルックアップテーブルにアクセスすることによって資源５を識別する。
【００５２】
別の実施形態においては、資源マネージャモジュール２２４は、スレーブＧＰＵ２０６が電力供給状態へ移行することになると決定された状態移行に基づいて、メモリ２１０に記憶されていない資源を識別する。例えば、資源マネージャモジュール２２４は、メモリ２０４内に記憶されているルックアップテーブルにアクセスして、メモリ２１０がもはや最新の資源をなんら有していないと決定することができ、またメモリ２１２内に記憶されている全ての資源をメモリ２１０のために識別することをＧＰＵ２０６及び２０８に指示することができる。
【００５３】
ステップ８０６では、識別された資源が複製される。例えば図２においては、資源マネージャモジュール２２４は、メモリ資源５がメモリ２１０からメモリ２１２へ複製されるように、スレーブ向けモジュール２２６及びマスター向けモジュール２２８を介してそれぞれスレーブＧＰＵ２０６及びマスターＧＰＵ２０８に指示してよい。
【００５４】
別の実施形態においては、資源マネージャモジュール２２４は、例えばスレーブＧＰＵ２０６が副動作電力状態から電力供給状態へと移行するときに、スレーブ向けモジュール２２６及びマスター向けモジュール２２８を介して、メモリ２１２の識別されたコンテンツをメモリ２１０へ複製するようスレーブＧＰＵ２０６及びマスターＧＰＵ２０８に指示してよい。
【００５５】
フローチャート８００のステップは、ＧＰＵが異なる電力状態へ移行する実施形態を参照して説明されてきた。関連分野を含めた当業者に理解されるであろうように、フローチャート８００のステップはまた、１つ以上の処理デバイスが異なる電力状態へ移行させられる多重処理デバイスを含む実施形態に適用されてもよく、あるいは１つ以上の処理コアが異なる電力状態へ移行させられる多重処理コアを含む単一の処理デバイスに適用されてもよい。
【００５６】
本発明は、ハードウエア、ソフトウエア、ファームウエア、又はこれらの任意の組み合わせにおいて具現化されてよい。本発明の実施形態又はその部分は、ハードウエア記述言語（ＨＤＬ）、アセンブリ言語、及びＣ言語、等の多くのプログラミング言語において符号化されてよい。例えば、ベリログ(Verilog)等のＨＤＬは、本発明の１つ以上の実施形態の態様を実装するデバイス、例えばプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、及び／又は他のハードウエア要素、を合成し、シミュレートし、そして製造するために用いられ得る。ベリログコードは、コンテンツに応じたシームカービング(content-aware seam carving)を用いてフレームをスケーリングすることができるプロセッサをモデル化し、設計し、且つ／又は実装するために用いられ得る。例えば、ベリログは、コンテンツに応じたシームカービングを用いてフレームがスケーリングされ得るように命令を実行するために用いられ得る論理のレジスタ転送レベル（ＲＴＬ）記述を作成するために用いられ得る。論理のＲＴＬ記述は次いで、所望の論理又はデバイスを製造するために用いられるデータ、例えばグラフィック設計システム（ＧＤＳ）又はＧＤＳIIデータ、を生成するために用いられ得る。ベリログコード、ＲＴＬ記述、及び／又はＧＤＳIIデータは、コンピュータ可読媒体上に記憶され得る。本発明の態様を実施するために論理によって実行される命令は、Ｃ及びＣ＋＋等の種々のプログラミング言語においてコード化され得るし、また論理又は他のデバイスによって実行され得るオブジェクトコードへとコンパイルされ得る。
【００５７】
本発明の態様は、全体において又は一部においてコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶される命令は、本発明を全体において又は一部において実施するようにプロセッサを適合させることができ、あるいは本発明を全体において又は一部において実施するように特に適合させられているデバイス、例えばプロセッサ、ＡＳＩＣ、他のハードウエア、を作り出すように適合させられ得る。
【００５８】
結論
特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実施される限りにおいて、代替的な境界が画定され得る。
【００５９】
本発明の種々の実施形態がこれまで説明されてきたが、それらは例示のみを目的として提示されてきたものであり且つ限定を目的としていないことが理解されるべきである。本発明の精神及び範囲から逸脱することなしに形態及び詳細における種々の変更がここではなされ得ることが、関連分野を含めた当業者には明らかなはずである。従って、本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではなく、以下の特許請求の範囲及びそれらと均等なものに従ってのみ画定されるべきである。
【図１】
0005416842.tif 000002
【図２】
0005416842.tif 000003
【図３】
0005416842.tif 000004
【図４】
0005416842.tif 000005
【図５】
0005416842.tif 000006
【図６】
0005416842.tif 000007
【図７】
0005416842.tif 000008
【図８】
0005416842.tif 000009