説明

グラフィック処理ユニットの間の効率的な切り換えを容易にする方法及びシステム

本開示の実施形態は、ディスプレイを駆動する各グラフィック処理ユニット(GPU)の間のシームレスな切り換えを容易にするシステムを提供する。1つの実施形態において、システムは、ディスプレイを駆動する第1のGPUの使用から第2のGPUの使用へ切り換えるリクエストを受信する。このリクエストに応じて、システムは、ディスプレイの駆動に備えて第2のGPUを設定するために、バックグラウンドで作動するカーネルスレッドを使用する。カーネルスレッドが第2のGPUを設定する間に、システムは引き続き第1のGPUでディスプレイを駆動し、ユーザスレッドは引き続きサービスユーザリクエストに関連する動作を行うウインドウマネージャを実行する。第2のGPUの設定が完了すると、システムはディスプレイの信号源を第1のGPUから第2のGPUへ切り換える。

【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、コンピュータシステムの複数のグラフィック処理ユニット(GPU)の間の切り換え技術に関する。詳細には、本開示の実施形態は、GPUを「プリヒート」してGPUへの迅速な切り換えを容易にする技術に関連する。
【背景技術】
【0002】
コンピュータ性能の向上により、コンピュータシステムは、大量のグラフィックデータを高い転送速度で効率的に処理することができる。例えば、コンピュータシステムは、ビデオゲームの複雑な光景をレンダリングするために、及びビデオストリーム及びデジタル写真を処理するために一般に使用される。このようなグラフィックデータの高速処理を容易にするために、一般に、コンピュータシステムは、専用グラフィック処理装置(「グラフィック処理ユニット」(GPU)と呼ぶ)を備え、コンピュータシステムモニタ等のグラフィックディスプレイデバイスを駆動するようになっている。残念ながら、高性能GPUは、大量の電力を消費するので熱放散の問題を引き起こす。
【0003】
この問題点の1つの解決策は、ローアクティビティの期間に処理能力の高いハイパワーGPUから処理能力の低いローパワーGPUに切り換えることで電力消費を抑えることである。しかしながら、切り換え動作のためにGPUを初期化する処理は、非常に多くのコンフィギュレーション・オペレーションを必要とし相当の時間を費やす場合がある。例えば、GPUを初期化処理の間に、GPUモード設定は初期化される必要があり、カラールックアップテーブルを読み込む必要があり、関連ドライバを再設定する必要がある。これらのコンフィギュレーション・オペレーションは、コンピュータシステムの応答性を著しく遅延させる場合があり、ユーザを悩ますことになる。
【0004】
従って、前述の問題を生じることなく、GPU間の効率的な切り換えを容易にする技術が必要である。
【発明の概要】
【0005】
本実施形態は、ディスプレイを駆動する各グラフィック処理ユニット(GPU)の間のシームレスな切り換えを容易にするシステムを提供する。作動時、システムは、ディスプレイを駆動する第1のGPUの使用から第2のGPUの使用へ切り換えるリクエストを受信する。このリクエストに応じて、システムは、ディスプレイの駆動に備えて第2のGPUを設定するために、バックグラウンドで作動するカーネルスレッドを使用する。カーネルスレッドが第2のGPUを設定する間に、ユーザスレッドは、引き続きサービスユーザリクエストに関連する動作を行うウインドウマネージャを実行する。第2のGPUの設定が完了すると、システムはディスプレイの信号源を第1のGPUから第2のGPUへ切り換える。
【0006】
特定の実施形態において、第2のGPUを設定することは、最初に第2のGPUの電源を投入し、その後、第2のGPUのハードウェア・コンフィギュレーション・オペレーションを実行することを含む。
特定の実施形態において、ハードウェア・コンフィギュレーション・オペレーションを実行することは、第2のGPUのドライバを再初期化すること、ディスプレイの特性を決定するためにディスプレイ打診モードを実行すること、第1のGPUから第2のGPUへモード設定値をコピーすること、少なくとも1つのカラールックアップテーブル(CLUT)を第1のGPUから第2のGPUへコピーすることを含む。
【0007】
特定の実施形態において、信号源を第1のGPUから第2のGPUに切り換える前に、ユーザスレッドは、ソフトウェア・コンフィギュレーション・オペレーションを実行してウインドウマネージャ及び第2のGPUに関連するアプリケーション可視データ構造を初期化する合理化コードパスを実行すると共に、第2のGPUに関する第1の画像をレンダリングする。
【0008】
特定の実施形態において、合理化コードパスの実行は、第2のGPUを設定するためにカーネルスレッドが先に行った特定の動作を繰り返すことを含み、繰り返し動作は、カーネルスレッドがすでに完了したか、又はキャッシュ値にアクセスし、結果的に高速に実行できる。
【0009】
特定の実施形態において、信号源の切り換え後、システムはカーネルスレッドを使用して第1のGPUに関するコンフィギュレーションを分解する。この分解処理は、ウインドウマネージャ及び第1のGPUに関連するアプリケーション可視データ構造を取り除き、第1のGPUに関連するドライバ状態情報を取り除き、第1のGPUから電源を取り除く。
【0010】
1つの実施形態において、第1のGPUはプロセッサチップセットに一体にされたローパワーGPUであり、第2のGPUは個別(discrete)GPUチップ上にあるハイパワーGPU、又はその逆である。別の実施形態において、第1のGPU及び第2のGPUは、実質的に同じ回路及び実質的に同じ性能を有する。更に別の実施形態において、第1のGPUはグラフィックコードを実行する汎用プロセッサ、及び第2のGPUは特定用途向けグラフィックプロセッサ、又はその逆とすることができる。
【0011】
また、他の実施形態は、第1のGPUの使用から第2のGPUの使用へ切り換えてディスプレイを駆動するシステムを備える。作動時、システムは、スレッドがディスプレイを駆動するように第2のGPUを設定する間、ディスプレイを第1のGPUで駆動する。次に、第2のGPUのコンフィギュレーションの完了後、システムは、ディスプレイを駆動する信号源を第1のGPUから第2のGPUへ切り換える。
【図面の簡単な説明】
【0012】
【図1】1つの実施形態における、同じディスプレイを駆動する異なるグラフィックソースの間で切り換え可能なコンピュータシステムを示す。
【図2】1つの実施形態における、グラフィックマルチプレクサの構造を示す。
【図3】1つの実施形態における、各GPUの間の切り換えに関連する動作を示すフローチャートである。
【図4】1つの実施形態における、各GPUの間の切り換えに関連する動作のタイムラインを示す。
【図5】1つの実施形態における、カーネルスレッドで実行されるハードウェア・コンフィギュレーション・オペレーションを示すフローチャートである。
【図6】1つの実施形態における、カーネルスレッドで実行されるソフトウェア・コンフィギュレーション・オペレーションを示すフローチャートである。
【図7】1つの実施形態における、GPUのコンフィギュレーションの分解に関連する動作を示すフローチャートである。
【図8】1つの実施形態における、各GPUの間の切り換え処理のハイレベルなフローチャートである。
【発明を実施するための形態】
【0013】
(概要)
複数のGPUをサポートする既存のコンピュータシステムにおいて、GPUの切り換えが決定されると、一般にシステムは、汎用再設定メカニズムを使用して新しいGPUを初期化する。この汎用再設定メカニズムは、新しい外部モニタがプラグインされると実行されるのと同じコードパスを実行する。しかしながら、新しい外部モニタの場合とは異なり、GPU切り換えはディスプレイを変更しない。
【0014】
本実施形態において、これにより実際に、システムは新しいGPUを「プリヒート」できるが、このことは、多数のコンフィギュレーションの仮定を行い、ウインドウマネージャにこの切り換えを通知する前に各GPUの間で何らかのコンフィギュレーション情報(例えば、カラー特性/情報)をコピーすることを含んでいる。ユーザからのこれらのコンフィギュレーション・オペレーションの影響をなくすために、コンフィギュレーション・オペレーションは、バックグラウンドにおいてカーネルスレッドで実行できる。カーネルスレッドがバックグラウンドでコンフィギュレーション・オペレーションを実行する間に、ウインドウマネージャは、引き続き通常通りフォアグラウンドで実行できる。これにより、システムは、「プリヒート」処理時にユーザと引き続き情報のやりとりを行うことができる。
【0015】
カーネルスレッドは各GPUを互に非常に近いものに事前構成するので、実際のGPU切り換えの実行は、切り換えを行うように調整された簡単な「合理化コードパス」の実行を含む。例えば、プリヒート処理の間に、カーネルスレッドは、現在作動中のGPUに関するデータ(例えば、モードがサポートするビデオカードの形式)をキャッシュすることができる。これにより、合理化コードパスは、その後、現在作動中のGPUから問い合わせるのではなく、キャッシュされたデータにアクセスできる。GPUがどのモードをサポートするかを示すキャッシュ情報は、システムが現在作動中のGPUのモードに適合するように新しいGPUを設定する方法を知る必要があるので好都合である。このことはシステムが電源投入中の新しいGPUへのアクセスを行わないので機能停止を阻止する。また、グラフィックドライバは、動作がGPU切り換えであるということを上手く利用するように交換されるので、新しい外部モニタがプラグインされる際には必要であるが、GPU切り換え時には必要のない特定の初期化動作が除外される。
【0016】
「プリヒート」処理及び合理化コードパスを使用してGPU切り換えを行うことで、もはや、クライアントアプリケーションが実際にミラー状態を識別でき、ユーザが駆動ディスプレイ上の変化に気付くことができ、ウインドウマネージャと情報のやりとりをできる、所定期間(例えば、2−4秒)にわたって、2つのGPUをミラー状態にする必要がないことを理解されたい。開示される特定の実施形態は、実際に各GPUをミラー状態に置くが、第1の画像を描画して切り換えるのに必要な時間だけである(例えば、約16ミリセカンド)。更に、システムは、この期間にクライアントを見つけるので、クライアントはミラー状態に気付くことはない。クライアントは約16ミリセカンドだけ探し出されるので、特定の実施形態において、ユーザは、ディスプレイへの妨害又はユーザのウインドウマネージャとの情報のやりとりへの妨害を殆ど気付かない。対照的に、既存のシステムにおいて、ウインドウマネージャは、GPU切り換え時に2−4秒妨害される場合がある。
【0017】
この新規でより効率的なGPU切り換え処理を以下に詳細に示すが、最初に特定の関連のコンピュータシステムのハードウェアを説明する。
【0018】
(コンピュータシステム)
図1は、1つの実施形態による、2つのグラフィックソースを切り換えてディスプレイを駆動するコンピュータシステム100を示す。図1を参照すると、2つのグラフィックソースは、(1)個別(discrete)GPU110及び(2)内蔵GPU118を含み、各々個別にディスプレイ114を駆動できる。ディスプレイ114を駆動するグラフィックソースは、2つのグラフィックソースの間で選択するGPUマルチプレクサ(GMUX)120で特定される。従って、コンピュータシステム100は、GMUX120を使用して現在の作動状態に基づいてグラフィックソースを選択できる。
【0019】
作動時、個別GPU110からのディスプレイストリーム122、及び内蔵GPU118からのディスプレイストリーム124は、GMUX120のデータ入力に供給される。ソース選択信号126は、GMUX120の選択入力に供給され、2つのグラフィックソースのどちらがディスプレイ114を駆動するかを決定する。例示的な実施形態において、ソース選択信号126は、ソース選択信号126を発生する特定のロジックを含むブリッジチップ104で生成される。(また、ソース選択信号126は、ブリッジチップ104以外の論理ブロックで生成できることに留意されたい。例えば、ソース選択信号126は、1つ又はそれ以上の処理ユニット102で生成できる)。選択されたグラフィックソースからのディスプレイストリームは、次に、ディスプレイ114に供給される。
【0020】
1つの実施形態において、個別GPU110及び内蔵GPU118は、データパス128を経由して通信してディスプレイストリームに同期するようになっている。ディスプレイストリームの同期は、それぞれにタイミング信号及びそれぞれのデータ信号の同期を含むことができる。
【0021】
1つの実施形態において、個別GPU110は処理能力の高いGPUであり、電力消費の少ない処理能力の低いGPU内蔵GPU118に対して非常に多くの電力を消費する。本実施形態において、グラフィック処理の負荷が小さい場合、システムは、ディスプレイ114を駆動する個別GPU110の使用から内蔵GPU118の使用へ切り換わり、その後、個別GPU110の電源が切られるので電力を節約できる。他方で、グラフィック処理の負荷が再度大きくなった場合、システムはグラフィックソースを内蔵GPU118から個別GPU110へ戻す。
【0022】
個別のGPU及び内蔵GPUを含むシステムを説明したが、開示された技術は、一般に各々のGPUが個別にディスプレイを駆動できる2つ又はそれ以上のGPUを備える任意のコンピュータシステムで作動できる。更に、この複数のGPUは、異なる作動特性及び電力消費レベルをもつことができる。従って、開示された技術は図1に示す特定の実施形態に限定されない。
【0023】
また、前述の各グラフィックソースの間での切り換え処理は、コンピュータシステムをシャットダウンする又は再初期化することを含んでいない。その結果、切り換え処理は、再初期化処理を必要とする場合よりも実質的に時間がかからない。従って、開示される技術は、各グラフィックソースの間の高速及び頻繁な切り換えを容易にする。
【0024】
(グラフィックマルチプレクサ)
図2は、1つの実施形態のグラフィックマルチプレクサ120(図1を参照して説明した)の内部構造を示す。図2を参照すると、個別GPU110からのディスプレイストリーム122及び内蔵GPU118からのディスプレイストリーム124は、それぞれデータクロック取得ブロック205及び210に供給される。データクロック取得ブロック205及び210は、ディスプレイストリーム122及び124を非直列化して、それぞれデータクロック信号221及び222を取り出す。
【0025】
これらのデータクロック信号221及び222は、ディスプレイストリームアッセンブラ240に送られることになるデータクロック221及び222の1つを選択するクロックMUX225に供給される。1つの実施形態においてGMUXコントローラ235は選択信号236をクロックMUX225に提供する。もしくは、選択信号236は、1つ又はそれ以上のプロセッサ装置102又は別のコントローラのプロセッサ等の他のソースから提供できる。
【0026】
次に、ディスプレイストリーム122及び124は、別個のデータクロックでそれぞれデータバッファ215及び220に供給される。データバッファ215及び220は、ディスプレイストリーム122及び124を調べて、いつブロッキング期間が生じるかを判定して、それぞれのブロッキング期間信号233及び234を生成する。また、データバッファ215及び220は、データMUX230に供給される出力データストリームを生成する。
【0027】
ブロッキング期間信号233及び234は、ブロッキング期間233及び234を比較して、もし存在すればディスプレイストリーム122及び124の各ブロッキング期間の間にどれだけのオーバーラップが存在するかを求める、GMUXコントローラ235に供給される。(ブロッキング期間信号233及び234は、垂直又は水平又はブロッキング期間を表し得ることに留意されたい)。GMUXコントローラ235がブロッキング期間233及び234が十分にオーバーラップすると判定した場合、GMUXコントローラ235は、ブロッキング期間がオーバーラップを開始したという選択信号236をアサートする。これにより、クロックMUX225及びデータMUX230は、これらのブロッキング期間がオーバーラップする期間に各ディスプレイストリーム122及び124の間の切り換えを行う。この切り換えはブロッキング期間の間に発生するので、切り換え処理は、ディスプレイ114では見ることができないであろう。
【0028】
最後に、データMUX230及び選択されたデータクロック223の出力は、データストリームをディスプレイ114に送信する前に再直列化するディスプレイストリームアセンブラ240に供給される。
【0029】
(切り換え処理)
図3は、1つの実施形態による、各GPU間の切り換えに関する動作の概要を示す。最初に、オペレーティングシステムは、ディスプレイを駆動する信号源として第1のGPUの使用から第2のGPUの使用へ切り換えるリクエストを受信する(ステップ302)。このリクエストは、グラフィック作業負荷の増加(又は減少)に基づいて起動できる。このリクエストは、グラフィック作業負荷をモニタするオペレーティングシステム又はバックグラウンド処理によって生成することができる。このリクエストに応答して、オペレーティングシステムは、バックグラウンドで作動して第2のGPUに関するハードウェア・コンフィギュレーション・オペレーションを行ってディスプレイを駆動するように第2のGPUを準備する、カーネルスレッドを発生させるか又はアクティブにする(ステップ304)。また、システムは、引き続き第1のGPUを用いてディスプレイを駆動する。カーネルスレッドが第2のGPUを設定している間に、オペレーティングシステムは引き続きユーザスレッドを実行して、サービスユーザリクエストに関する動作を行うウインドウマネージャを実行するようになっていることに留意されたい(ステップ306)。次に、カーネルスレッドが第2のGPUに関するハードウェア・コンフィギュレーション・オペレーションを行った後、ユーザスレッドは、第2のGPUに関するソフトウェア・コンフィギュレーション・オペレーションを行う合理化コードパスを実行する(ステップ308)。次に、オペレーティングシステムは信号源を、ディスプレイを駆動する第1のGPUから第2のGPUへ切り換える(ステップ310)。最後に、信号源の切り換え後、オペレーティングシステムはカーネルスレッドを使用して第1のGPUに関するコンフィギュレーションを分解するようになっている(ステップ312)。
【0030】
前述のコンフィギュレーション・オペレーションは、図4のタイムラインに詳細に示されている。図4の左側コラムは、ユーザスレッド402のアクションを示し、フォアグラウンドにおいてコンピュータシステムに関するウインドウマネージャを実行する。対照的に、図4の右側コラムは、カーネルスレッド404のアクションを示し、バックグラウンドにおいてコンフィギュレーション及び分解動動作を行う。
【0031】
前述のように、切り換えリクエストを受信すると、オペレーティングシステムはカーネルスレッド404を使用して、種々のハードウェア・コンフィギュレーション・オペレーション408をプリフライトするようになっている。図5に示すフローチャートを参照すると、これらのハードウェア・コンフィギュレーション・オペレーションは、第2のGPUの電源を投入すること(ステップ502)及び第2のGPUのドライバを再初期化すること(ステップ504)も含むことができる。また、カーネルスレッド404は、「ディスプレイのプロービング」動作を行い、駆動されるモニタの特性を判定することができる。(ステップ506)。次に、カーネルスレッド404は、種々の形式のコンフィギュレーション情報を第1のGPUから第2のGPUへコピーすることができる。例えば、カーネルスレッド404は、モード設定値を第1のGPUから第2のGPUへコピーすることができ(ステップ508)、これらのモード設定値は、ディスプレイの解像度及び色の濃さを指定できる。また、カーネルスレッド504は、カラールックアップテーブル(CLUT)の内容を第1のGPUから第2のGPUへコピーすることができる(ステップ510)。
【0032】
カーネルスレッド404が第2のGPUを設定している間に、ユーザスレッド402は、引き続き、サービスユーザリクエスト406に関連する動作を行うウインドウマネージャ(ウインドウイングシステムに関する)を実行する。これにより、ユーザは、ハードウェア・コンフィギュレーション・オペレーションが起こっている期間を中断することなく、ウインドウイングシステムと情報のやりとりを行うことができる。
【0033】
カーネルスレッド404がハードウェア・コンフィギュレーション・オペレーションを完了すると、ウインドウマネージャに割り込み409を送る。この割り込み409により、ウインドウマネージャは種々のソフトウェア・コンフィギュレーション・オペレーション410を行う合理化コードパスを実行する。図6に示すフローチャートを参照すると、これらのソフトウェア・コンフィギュレーション・オペレーションは、第2のGPUに関する状態情報を含むアプリケーション可視のデータ構成を初期化することを含むことができる(ステップ602)。また、システムは、第2のGPUに関する最初の画像をレンダリングする(ステップ604)。これらのソフトウェア・コンフィギュレーション・オペレーション(ユーザ空間のデータ構造にアクセスすることは含まない)のいくつかはカーネルスレッド404で行い得る可能性があることに留意されたい。
【0034】
各GPUの間の切り換え時に行われるコンフィギュレーション・オペレーションは、切り換え動作時に切り換えの発生後まで新しいフレームバッファは可視でないので、新しいモニタがプラグインされた後に行われる一般的なコンフィギュレーション・オペレーションとは異なることに留意されたい。これにより、時間のかかる一般的なコンフィギュレーション・オペレーションを省くことができる。例えば、最初、新しいフレームは可視ではないので、フレームバッファの内容をワイプする必要はない。また、ディスプレイを徐々にフェードダウン及びフェードアップする、カラールックアップテーブル(CLUT)フェーディング動作を行う必要もない。また、システムは、第1のGPUの出力が切り換え処理の間に最後から2番目のフレームでフリーズする可能性があるので、第1のGPUに対する最後のフレームのレンダリングを省くことができる。
【0035】
次に、システムは、ディスプレイを駆動するための信号源として、第1のGPUの使用から第2のGPUの使用へ切り換わる。1つの実施形態において、第1のGPUの出力は、選択されたブロッキング期間は固定されたままであり、選択されたブロッキング期間は、第2のGPUが切り換え動作が起こる時間であるブロッキング期間を入力するまで「拡大」される。これにより、切り換え動作は、ユーザには殆ど知覚できない単一フレーム(約16ミリセカンド)だけディスプレイをフリーズする。
【0036】
次に、切り換え完了後、ウインドウマネージャは、割り込み412をカーネルスレッド404に送信する。割り込み412に応答して、カーネルスレッド404は、いくつかの動作を行い第1のGPU414のコンフィギュレーションを「分解(tear down)」する。これらの分解動作が行われている間に、ウインドウマネージャは引き続きサービスユーザリクエスト416に関連する動作を行うことに留意されたい。
【0037】
図7に示すフローチャートを参照すると、分解動作時、カーネルスレッド404は、第1のGPUに関連する状態情報を含む、アプリケーション可視のデータ構造を取り除き(ステップ702)、第1のGPUに関連するドライバ状態を取り除く(ステップ704)。また、カーネルスレッド404は、第1のGPUに関連するアクセラレータ(ステップ706)及び音声処理(ステップ708)を停止する。次に、カーネルスレッド404は機能停止して、アプリケーションが第1のGPUの状態情報を解除するのを待つ(ステップ710)。最後に、カーネルスレッド404は、第1のGPUから電力を取り外す(ステップ712)。
【0038】
図4の右側の垂直タイムラインは、1つの実施形態において、カーネルスレッド404を、切り換えGPUに関連するコンフィギュレーション・オペレーションを効率的にユーザから隠すことができるように使用する方法を示す。最初に、カーネルスレッド404は、約1000ミリセカンドのプリフライト(「プリヒート」と呼ぶ場合もある)ハードウェア・コンフィギュレーション・オペレーション408を行うが、ウインドウマネージャは引き続きユーザリクエスト406を処理する。次に、ウインドウマネージャは、約130ミリセカンドだけソフトウェア・コンフィギュレーション・オペレーション410を行う合理化コードパスを実行する。この短時間(約1/8秒)の間、ユーザとの相互作用は影響を受ける場合があるが、これはわずかに知覚できる。また、前述のように、切り換え動作は、ユーザには知覚できないで可能性が高い約16ミリセカンドだけ必要とする。最後に、分解処理414はカーネルスレッドが完了するまで約400ミリセカンドを必要とする。しかしながら、この期間にウインドウマネージャはユーザリクエストを処理できる。
【0039】
(ハイレベルな説明)
図8は、ハイレベルなフローチャートであり、1つの実施形態による2つのGPUの間の切り換え処理を示す。動作時、システムは、ディスプレイを駆動するためにスレッドが第2のGPUを設定する間に、第1のGPUからディスプレイを駆動する(ステップ802)。次に、第2のGPUのコンフィギュレーションの完了後に、システムは、ディスプレイを駆動する信号源を第1のGPUから第2のGPUへ切り換える(ステップ804)。
【0040】
前述の実施形態の説明は例示及び説明目的である。これらは網羅的であること又はこの説明を開示された形態に限定することが意図していない。従って、当業者であれば多くの変更例及び変形例を理解できるはずである。更に、前述の開示内容は本記述を限定するものではない。本記述の範囲は添付請求項にて規定される。
【0041】
更に前述の記述は、当業者が開示される実施形態を実施して利用できるように示されており、特定のアプリケーション及びその必須条件との関連で提供される。開示された実施形態に対する種々の変更例は当業者には容易に理解できるはずであり、本明細書で定義される一般的な原理は、開示された実施形態の精神及び範囲を逸脱することなく、他の実施形態及びアプリケーションに適用可能である。従って、開示された実施形態は、図示の実施形態に限定されるものではなく、本明細書で開示される原理及び特徴と一致する最大の範囲と認められる。
【0042】
詳細な説明に記載したデータ構造及びコードは、一般には、コンピュータシステムが使用するコード及び/又はコードを格納できる任意のデバイス又は媒体とすることができる、コンピュータ読み取り可能な媒体に格納される。コンピュータ読み取り可能な媒体としては、限定されるものではないが、揮発メモリ、不揮発メモリ、ディスクドライブ、磁気テープ、CD(コンパクトディスク)、DVD(デジタル多用途ディスク又はデジタルビデオディスク)等の磁気及び光学記憶デバイス、又は現在公知の又は将来開発されるコード及び又はデータを記憶できる他の媒体とすることができる。
【0043】
詳細な説明の欄に説明される方法及びプロセスは、前述のコンピュータ読み取り可能な記憶媒体に記憶でき、コード及び/又はデータとして組み込むことができる。コンピュータシステムが、コンピュータ読み取り可能な記憶媒体に記憶されたコード及び/又はデータを読み込んで実行する場合、コンピュータシステムは、データ構造及びコードとして組み込まれ、コンピュータ読み取り可能な記憶媒体に記憶された方法及びプロセスを実行する。更に、以下に説明する方法及びプロセスは、ハードウェアモジュールに含むことができる。例えば、ハードウェアモジュールとしては、限定されるものではないが、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(FPGA)、及び現在公知の又は将来開発される他のプログラム可能論理デバイスを含むことができる。ハードウェアモジュールが起動されると、ハードウェアモジュールは、該ハードウェアモジュールが包含する方法及びプロセスを実行する。

【特許請求の範囲】
【請求項1】
ディスプレイを駆動する第1のグラフィック処理ユニット(GPU)の使用から第2のGPUの使用に切り換える方法であって、
第1のスレッドを使用してサービスユーザリクエストに関連する動作を行うウインドウマネージャを実行する段階と、
リクエストを受信して、前記ディスプレイを駆動する信号源として前記第1のGPUの使用から前記第2のGPUの使用に切り換える段階と、
前記リクエストに応答して、
第2のスレッドを使用して、前記ディスプレイの駆動に備えて前記第2のGPUを設定し、
前記第2のスレッドが前記第2のGPUを設定している間に、前記第1のスレッドを引き続き使用して、ウインドウマネージャを実行してユーザリクエストを処理し、
前記第2のGPUのコンフィギュレーションの完了後に、前記ディスプレイを駆動する前記信号源を前記第1のGPUから前記第2のGPUに切り換える段階と、
を含む方法。
【請求項2】
前記第2のスレッドは、バックグラウンドで動作するカーネルベースのスレッドである、請求項1に記載の方法。
【請求項3】
前記第2のスレッドを使用して前記第2のGPUを設定する段階は、
前記第2のGPUの電源を投入する段階と、
ハードウェア・コンフィギュレーション・オペレーションを行って前記第2のGPUに関するハードウェアを設定する段階と、
を含む、請求項1に記載の方法。
【請求項4】
前記ハードウェア・コンフィギュレーション・オペレーションを行う段階は、
前記第2のGPUに関するドライバを再初期化する段階と、
ディスプレイプロービングオペレーションを行い、前記ディスプレイの特性を判定する段階と、
モード設定値を前記第1のGPUから前記第2のGPUへコピーする段階と、
少なくとも1つのカラールックアップテーブル(CLUT)を前記第1のGPUから前記第2のGPUへコピーする段階と、
のうちの1つ又はそれ以上を含む、請求項3に記載の方法。
【請求項5】
前記信号源を前記第1のGPUから前記第2のGPUに切り換える前に、前記第1のスレッドを使用してコードパスを実行する段階を更に含み、
前記ウインドウマネージャ及び前記第2のGPUに関連するソフトウェア・コンフィギュレーション・オペレーションを行ってアプリケーション可視データ構造を初期化し、
第1のセットのレンダリング動作を行って前記第2のGPUに関する第1の画像をレンダリングするようになっている、請求項1に記載の方法。
【請求項6】
前記第1のスレッドを使用して前記コードパスを実行する段階は、前記第2のGPUを設定するために前記第2のスレッドが先に実行したいくつかの動作を繰り返す段階を含む、請求項5に記載の方法。
【請求項7】
前記繰り返される動作はキャッシュ値をアクセスする、請求項6に記載の方法。
【請求項8】
前記信号源の切り換え後、前記第2のスレッドを使用して前記第1のGPUに関するコンフィギュレーションを分解する段階を更に含む、請求項1に記載の方法。
【請求項9】
前記第1のGPUのコンフィギュレーションを分解する段階は、
前記ウインドウマネージャ及び前記第1のGPUに関連するアプリケーション可視データ構造を取り除く段階と、
前記第1のGPUに関連するドライバ状態を取り除く段階と、
前記第1のGPUから電源を取り除く段階と、
を含む、請求項8に記載の方法。
【請求項10】
前記第1のGPUは、プロセッサチップセットに一体化され、前記第2のGPUは個別GPUチップ上に存在する、請求項1に記載の方法。
【請求項11】
前記第1のGPU及び前記第2のGPUは、実質的に同じ回路及び同じ性能を有する、請求項1に記載の方法。
【請求項12】
前記第1のGPUは、グラフィックコードを実行する汎用プロセッサであり、前記第2のGPUは特定用途向けグラフィックプロセッサである、請求項1に記載の方法。
【請求項13】
第1のグラフィック処理ユニット(GPU)から第2のGPUへ切り換えてディスプレイを駆動するコンピュータシステムにおいて、
前記第1のGPUと、
前記第2のGPUと、
リクエストを受信して前記ディスプレイを駆動する信号源として前記第1のGPUの使用から前記第2のGPUの使用へ切り換えるようになっている、オペレーティングシステムと、
を備え、
前記オペレーティングシステムは、
第1のスレッドを使用して、サービスユーザリクエストに関連する動作を行うウインドウマネージャを実行し、
第2のスレッドを使用して、前記第2のGPUを設定して前記第2のGPUを準備して前記ディスプレイを駆動し、
前記第2のスレッドが前記第2のGPUを設定している間に、前記第1のスレッドを使用して、引き続きウインドウマネージャを実行してユーザリクエストを処理し、
前記第2のGPUのコンフィギュレーションの完了後、前記ディスプレイを駆動する前記信号源を前記第1のGPUから前記第2のGPUへ切り換える、ようになっているコンピュータシステム。
【請求項14】
前記第2のスレッドは、バックグラウンドで動作するカーネルベースのスレッドである、請求項13に記載のコンピュータシステム。
【請求項15】
前記第2のGPUを設定する間に、前記第2のスレッドは、
前記第2のスレッドを使用して前記第2のGPUを設定し、
前記第2のGPUの電源を投入し、
ハードウェア・コンフィギュレーション・オペレーションを行って前記第2のGPUに関するハードウェアを設定するようになった、請求項13に記載のコンピュータシステム。
【請求項16】
前記ハードウェア・コンフィギュレーション・オペレーションを行う間に、前記第2のスレッドは、
前記第2のGPUに関するドライバを再初期化し、
ディスプレイプロービング動作を行い、前記ディスプレイの特性を判定し、
モード設定値を前記第1のGPUから前記第2のGPUへコピーし、
少なくとも1つのカラールックアップテーブル(CLUT)を前記第1のGPUから前記第2のGPUへコピーする、
ことの中の1つ又はそれ以上を行うように構成される、請求項15に記載のコンピュータシステム。
【請求項17】
前記信号源を前記第1のGPUから前記第2のGPUへ切り換える前に、前記第1のスレッドは、
前記ウインドウマネージャ及び前記第2のGPUに関連するソフトウェア・コンフィギュレーション・オペレーションを行ってアプリケーション可視データ構造を初期化し、
第1のセットのレンダリング動作を行って前記第2のGPUに関する第1の画像をレンダリングする、
コードパスを実行するように構成される、請求項13に記載のコンピュータシステム。
【請求項18】
前記コードパスの実行中に前記スレッドは、前記第2のGPUを設定するために前記第2のスレッドが先に実行したいくつかの動作を繰り返すように構成される、請求項17に記載のコンピュータシステム。
【請求項19】
前記繰り返される動作は、既に完了し、又はキャッシュ値にアクセスし、その結果としてより高速に実行される、請求項18に記載のコンピュータシステム。
【請求項20】
前記信号源の切り換え後、前記第2のスレッドは、前記第1のGPUを分解するようになっている、請求項13に記載のコンピュータシステム。
【請求項21】
前記第1のGPUの分解時に前記第2のスレッドは、
前記ウインドウマネージャ及び前記第1のGPUに関連するアプリケーション可視データ構造を取り除き、
前記第1のGPUに関連するドライバ状態を取り除き、
前記第1のGPUから電源を取り除く、
ように構成される、請求項20に記載のコンピュータシステム。
【請求項22】
コンピュータが実行すると該コンピュータがディスプレイを駆動する第1のグラフィック処理ユニット(GPU)の使用から第2のGPUの使用に切り換える方法を行う命令を記憶するコンピュータ読み取り可能な記憶媒体であって、該方法が、
第1のスレッドを使用してサービスユーザリクエストに関連する動作を行うウインドウマネージャを実行する段階と、
リクエストを受信して、前記ディスプレイを駆動する信号源として前記第1のGPUの使用から前記第2のGPUの使用に切り換える段階と、
前記リクエストに応答して、
第2のスレッドを使用して、前記ディスプレイの駆動に備えて前記第2のGPUを設定し、
前記第2のスレッドが前記第2のGPUを設定している間に、前記第1のスレッドを引き続き使用して、ウインドウマネージャを実行してユーザリクエストを処理し、
前記第2のGPUのコンフィギュレーションの完了後に、前記ディスプレイを駆動する前記信号源を前記第1のGPUから前記第2のGPUに切り換える段階と、
を含む、コンピュータ読み取り可能な記憶媒体。
【請求項23】
前記第2のスレッドは、バックグラウンドで動作するカーネルベースのスレッドである、請求項22に記載のコンピュータ読み取り可能な記憶媒体。
【請求項24】
前記第2のスレッドを使用して前記第2のGPUを設定する段階は、
前記第2のGPUの電源を投入する段階と、
ハードウェア・コンフィギュレーション・オペレーションを行って前記第2のGPUに関するハードウェアを設定する段階と、
を含む、請求項22に記載のコンピュータ読み取り可能な記憶媒体。
【請求項25】
前記ハードウェア・コンフィギュレーション・オペレーションを行う段階は、
前記第2のGPUに関するドライバを再初期化する段階と、
ディスプレイプロービング動作を行い、前記ディスプレイの特性を判定する段階と、
モード設定値を前記第1のGPUから前記第2のGPUへコピーする段階と、
少なくとも1つのカラールックアップテーブル(CLUT)を前記第1のGPUから前記第2のGPUへコピーする段階と、
のうちの1つ又はそれ以上を含む、請求項24に記載のコンピュータ読み取り可能な記憶媒体。
【請求項26】
前記信号源を前記第1のGPUから前記第2のGPUに切り換える前に、前記第1のスレッドを使用してコードパスを実行する段階を更に含み、
前記ウインドウマネージャ及び前記第2のGPUに関連するソフトウェア・コンフィギュレーション・オペレーションを行ってアプリケーション可視データ構造を初期化し、
第1のセットのレンダリング動作を行って前記第2のGPUに関する第1の画像をレンダリングするようになっている、請求項22に記載のコンピュータ読み取り可能な記憶媒体。
【請求項27】
前記第1のスレッドを使用して前記コードパスを実行する段階は、前記第2のGPUを設定するために前記第2のスレッドが先に実行したいくつかの動作を繰り返す段階を含む、請求項26に記載のコンピュータ読み取り可能な記憶媒体。
【請求項28】
前記繰り返される動作は、既に完了し、又はキャッシュ値にアクセスし、その結果としてより高速に実行される、請求項27に記載のコンピュータ読み取り可能な記憶媒体。
【請求項29】
前記信号源の切り換え後、前記第2のスレッドを使用して前記第1のGPUに関するコンフィギュレーションを分解する段階を更に含む、請求項22に記載のコンピュータ読み取り可能な記憶媒体。
【請求項30】
前記第1のGPUのコンフィギュレーションを分解する段階は、
前記ウインドウマネージャ及び前記第1のGPUに関連するアプリケーション可視データ構造を取り除く段階と、
前記第1のGPUに関連するドライバ状態を取り除く段階と、
前記第1のGPUから電源を取り除く段階と、
を含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
【請求項31】
第1のグラフィック処理ユニット(GPU)の使用から第2のGPUの使用に切り換えてディスプレイを駆動する方法であって、
前記ディスプレイを駆動するためにスレッドが前記第2のGPUを設定する間に、前記ディスプレイを第1のGPUで駆動する段階と、
前記第2のGPUのコンフィギュレーションの完了後、前記ディスプレイを駆動する信号源を前記第1のGPUから前記第2のGPUに切り換える段階と、
を含む方法。
【請求項32】
コンピュータが実行すると該コンピュータがディスプレイを駆動する第1のグラフィック処理ユニット(GPU)の使用から第2のGPUの使用に切り換える方法を行う命令を記憶するコンピュータ読み取り可能な記憶媒体であって、該方法が、
前記ディスプレイを駆動するためにスレッドが前記第2のGPUを設定する間に、前記ディスプレイを第1のGPUで駆動する段階と、
前記第2のGPUのコンフィギュレーションの完了後、前記ディスプレイを駆動する信号源を前記第1のGPUから前記第2のGPUに切り換える段階と、
を含む、コンピュータ読み取り可能な記憶媒体。
【請求項33】
第1のグラフィック処理ユニット(GPU)から第2のGPUに切り換えてディスプレイを駆動するコンピュータシステムであって、
前記第1のGPUと、
前記第2のGPUと、
リクエストを受信して前記ディスプレイを駆動する信号源として前記第1のGPUの使用から前記第2のGPUの使用へ切り換えるようになっている、オペレーティングシステムと、
を備え、
前記オペレーティングシステムは、
前記ディスプレイを駆動するためにスレッドが前記第2のGPUを設定する間に、前記ディスプレイを第1のGPUで駆動し、
前記第2のGPUのコンフィギュレーションの完了後、前記ディスプレイを駆動する信号源を前記第1のGPUから前記第2のGPUに切り換える、
ように構成されるコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2013−516696(P2013−516696A)
【公表日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2012−548031(P2012−548031)
【出願日】平成22年12月22日(2010.12.22)
【国際出願番号】PCT/US2010/061814
【国際公開番号】WO2011/084829
【国際公開日】平成23年7月14日(2011.7.14)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】