(57)【要約】【解決手段】  方法、システム及び装置は、第１のグラフィクス処理回路及び第２のグラフィクス処理回路の組み合わせを用いるビデオ及び／又はグラフィクスデータの処理であって第１及び第２のグラフィクス処理回路の間で処理を転送する間に状態情報を喪失することのない処理を提供する。処理されるべきビデオ及び／又はグラフィクスデータは、例えば、ホストプロセッサ等のプロセッサ上で実行中のアプリケーションによって供給され得る。１つの例においては、装置は複数の単一命令多重データ（ＳＩＭＤ）実行ユニットを含む少なくとも１つのＧＰＵを含む。ＧＰＵはネイティブ機能コードモジュールを実行するように動作する。装置はまた、第１のＧＰＵ上の複数のＳＩＭＤ実行ユニットと同じプログラミングモデルを有する複数のＳＩＭＤ実行ユニットを含む少なくとも第２のＧＰＵを含む。更に、第１及び第２のＧＰＵは同じネイティブ機能コードモジュールを実行するように動作する。ネイティブ機能コードモジュールは、現在の動作モードから所望の動作モードへの移行が望ましい（例えば一方のＧＰＵは停止され他方のＧＰＵは開始される）旨のホストプロセッサ等の第１のプロセッサからの通知に応答して、少なくとも第１のＧＰＵに少なくとも第２のＧＰＵのための状態情報を提供させる。第２のＧＰＵは、第１のＧＰＵによって提供される状態情報を取得すると共に同じネイティブ機能コードモジュールを介して状態情報を用いて第１のＧＰＵが中止した処理を継続するように動作する。第１のプロセッサは、少なくとも第１の及び少なくとも第２のＧＰＵに動作可能に結合される。【選択図】図２
2013521581.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、前記第１のプロセッサに動作可能に結合される少なくとも第１のＧＰＵと、前記第１のプロセッサに動作可能に接続される少なくとも第２のＧＰＵと、を備えるコンピューティングシステムであって、
前記少なくとも第１のＧＰＵは第１の複数の単一命令多重データ（ＳＩＭＤ）実行ユニットを備え、前記少なくとも第１のＧＰＵは、現在の動作モードから所望の動作モードへの移行が望ましい旨の前記第１のプロセッサからの通知に応答して前記少なくとも第１のＧＰＵに前記少なくとも第２のＧＰＵのための状態情報を提供させるネイティブ機能コードモジュールを実行するように動作し、
前記少なくとも第２のＧＰＵは前記少なくとも第１のＧＰＵ上の前記複数のＳＩＭＤ実行ユニットと同じプログラミングモデルを有する第２の複数の単一命令多重データ（ＳＩＭＤ）実行ユニットを備え、前記少なくとも第２のＧＰＵは、前記少なくとも第１のＧＰＵと同じネイティブ機能コードモジュールを実行するように動作し且つ前記少なくとも第１のＧＰＵによって提供される前記状態情報を取得すると共に前記同じネイティブ機能コードモジュールを介して前記状態情報を用いて処理を継続するように動作するコンピューティングシステム。
【請求項２】
前記少なくとも第２のＧＰＵに関連付けられる前記ネイティブ機能コードモジュールは、画素レンダリング命令を前記少なくとも第２のＧＰＵ上の前記複数のＳＩＭＤ実行ユニットにわたって均等に分散させることによって、前記少なくとも第２のＧＰＵによりレンダリングされ得る画素の数を最適化するように動作する請求項１のコンピューティングシステム。
【請求項３】
前記少なくとも第１のＧＰＵに関連付けられる前記ネイティブ機能コードモジュールは、画素レンダリング命令を前記少なくとも第１のＧＰＵ上の前記複数のＳＩＭＤ実行ユニットにわたって均等に分散させることによって、前記少なくとも第１のＧＰＵによりレンダリングされ得る画素の数を最適化するように動作する請求項１のコンピューティングシステム。
【請求項４】
前記少なくとも第２のＧＰＵに関連付けられる前記ネイティブ機能コードモジュールは、前記少なくとも第２のＧＰＵ上の前記複数のＳＩＭＤ実行ユニット上での実行のために、前記少なくとも第１のＧＰＵ上の前記複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから状態情報を取得する請求項１のコンピューティングシステム。
【請求項５】
前記少なくとも第１のＧＰＵに関連付けられる前記ネイティブ機能コードモジュールは、前記少なくとも第１のＧＰＵ上の前記複数のＳＩＭＤ実行ユニット上での実行のために、前記少なくとも第２のＧＰＵ上の前記複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから状態情報を取得する請求項１のコンピューティングシステム。
【請求項６】
前記ホストプロセッサは、前記コンピューティングシステムを現在の動作モードから所望の動作モードへ及びその逆に移行させる制御ドライバを実行するように動作する請求項１のコンピューティングシステム。
【請求項７】
前記制御ドライバはプロセッサ割り込みを有効にして前記現在の動作モードから前記所望の動作モードへの及びその逆の移行を開始する請求項６のコンピューティングシステム。
【請求項８】
前記コンピューティングシステムを現在の動作モードから所望の動作モードへ移行させることは、前記現在の動作モードに関連付けられるＧＰＵ上の前記複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから前記所望の動作モードに関連付けられるＧＰＵ上で実行中の前記ネイティブ機能コードモジュールによってアクセス可能なメモリ内のロケーションへ状態情報を転送することを備える請求項６のコンピューティングシステム。
【請求項９】
前記ホストプロセッサ及び前記少なくとも第１のＧＰＵの両方は、同じチップパッケージ又は同じダイの少なくとも１つの上で具現化される請求項１のコンピューティングシステム。
【請求項１０】
各ＳＩＭＤ実行ユニットは、
状態情報を記憶するメモリ内のロケーションを指し示すように動作する命令ポインタと、
メモリ内の前記ロケーションからリトリーブされる状態情報を実行するように動作する少なくとも１つのＡＬＵを備えるＳＩＭＤエンジンと、
状態情報を記憶するように動作する少なくとも１つの汎用レジスタセットと、を備える請求項１のコンピューティングシステム。
【請求項１１】
前記少なくとも第１又は第２のＧＰＵのいずれか又は両方によって生成される画素を表示するように動作する少なくとも１つのディスプレイを更に備える請求項１のコンピューティングシステム。
【請求項１２】
コンピューティングシステム内の多重プロセッサを用いてビデオ及び／又はグラフィクスデータを処理するための方法であって、
現在の動作モードに関連付けられる第１のＧＰＵによる画素のレンダリングを停止すると共に前記現在の動作モードに関連付けられる状態情報を第２のＧＰＵによってアクセス可能なロケーション内に保存することと、
所望の動作モードに関連付けられる少なくとも第２のＧＰＵによる画素のレンダリングを当該保存された状態情報を用いて再開することと、を備える方法。
【請求項１３】
画素レンダリング命令を特定の動作モードに関連付けられる複数の汎用実行ユニットにわたって均等に分散させることによって、前記特定の動作モードでレンダリングされ得る画素の数を最適化することを更に備える請求項１２の方法。
【請求項１４】
前記コンピューティングシステムが現在の動作モードから所望の動作モードへ移行されるべき旨を決定することを更に備える請求項１２の方法。
【請求項１５】
前記状態情報は、第１のＧＰＵによる画素のレンダリングを停止することに応答して、前記現在の動作モードに関連付けられる汎用レジスタセット内に保存される請求項１２の方法。
【請求項１６】
前記保存された状態情報を前記現在の動作モードに関連付けられる前記汎用レジスタセットからメモリロケーションへコピーすることと、
前記メモリロケーションから前記保存された状態情報を取得することと、を更に備える請求項１５の方法。
【請求項１７】
前記コンピューティングシステムが現在の動作モードから所望の動作モードへ移行されるべき旨の決定は、
ユーザ入力、
コンピューティングシステム電力消費要求、又は
グラフィカル性能要求、の少なくとも１つに基づく請求項１２の方法。
【請求項１８】
前記現在の動作モードに関連付けられるＧＰＵによる画素の前記レンダリングを停止することは、ホストプロセッサへの割り込みを有効にすることによって開始される請求項１２の方法。
【請求項１９】
少なくとも第１のＧＰＵ及び少なくとも第２のＧＰＵを備える装置であって、
前記少なくとも第１のＧＰＵは第１の複数の汎用実行ユニットを備え、前記少なくとも第１のＧＰＵは、前記少なくとも第１のＧＰＵに前記少なくとも第２のＧＰＵのための状態情報を提供させるネイティブ機能コードモジュールを実行するように動作し、
前記少なくとも第２のＧＰＵは前記少なくとも第１のＧＰＵ上の前記複数の汎用実行ユニットと同じプログラミングモデルを有する第２の複数の汎用実行ユニットを備え、前記少なくとも第２のＧＰＵは、前記少なくとも第１のＧＰＵと同じネイティブ機能コードモジュールを実行するように動作し且つ前記少なくとも第１のＧＰＵによって提供される前記状態情報を取得すると共に前記同じネイティブ機能コードモジュールを介して前記状態情報を用いて処理を継続するように動作する装置。
【請求項２０】
前記少なくとも第１のＧＰＵ及び前記少なくとも第２のＧＰＵに動作可能に結合される第１のプロセッサを更に備え、前記第１のプロセッサは、保管された状態情報の、前記少なくとも第１のＧＰＵ又は前記少なくとも第２のＧＰＵのいずれかの現在の動作モードに関連付けられる前記複数の汎用実行ユニット内の汎用レジスタから、所望の動作モードに関連付けられる前記少なくとも第１のＧＰＵ又は前記少なくとも第２のＧＰＵのいずれか上で実行中の前記ネイティブ機能コードモジュールによってアクセス可能なメモリロケーションへのコピーを制御するように動作する請求項１９の装置。
【請求項２１】
実行可能な命令を備えるコンピュータ可読媒体であって、前記命令は実行されるときに１つ以上のプロセッサに、
コンピューティングシステムが現在の動作モードから所望の動作モードへ移行されるべき旨を決定することと、
前記現在の動作モードに関連付けられる第１のＧＰＵによる画素のレンダリングを停止すると共に前記現在の動作モードに関連付けられる汎用レジスタセット内に状態情報を保存することと、
当該保存された状態情報を前記現在の動作モードに関連付けられる前記汎用レジスタセットから前記所望の動作モードに関連付けられる少なくとも第２のＧＰＵによってアクセス可能なメモリロケーションへコピーすることと、をさせるコンピュータ可読媒体。
【請求項２２】
実行可能な命令を備えるコンピュータ可読媒体であって、前記命令は、集積回路製造システムによって実行されるときに、前記集積回路製造システムに少なくとも第１のＧＰＵ及び少なくとも第２のＧＰＵを製造させ、
前記少なくとも第１のＧＰＵは、各々がネイティブ機能コードモジュールを実行するように動作する複数の単一命令多重データ（ＳＩＭＤ）実行ユニットを備え、
前記少なくとも第２のＧＰＵは、前記少なくとも第１のＧＰＵ上の前記複数のＳＩＭＤ実行ユニットと同じプログラミングモデルを有する複数の単一命令多重データ（ＳＩＭＤ）実行ユニットを備え、前記少なくとも第２のＧＰＵは、前記少なくとも第１のＧＰＵと同じネイティブ機能コードモジュールを実行するように動作するコンピュータ可読媒体。
【請求項２３】
現在の動作モードに関連付けられる画素のレンダリングを停止するように動作すると共に前記現在の動作モードに関連付けられる状態情報を第２のＧＰＵによる使用のためにアクセス可能なロケーション内に保存するように動作するグラフィクス処理回路（ＧＰＵ）を備える集積回路。
【請求項２４】
前記ＧＰＵは、第２のＧＰＵによって以前にレンダリングされようとしていた画素のレンダリングを、現在の動作モードから所望の動作モードへの移行に応答して前記第２のＧＰＵによって保存された状態情報を用いて再開するように動作する請求項２３の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は多重プロセッサを用いてビデオ及び／又はグラフィクスデータを処理するための方法、システム及び装置に関し、より特定的には第１のグラフィクス処理回路及び第２のグラフィクス処理回路の組み合わせを用いてビデオ及び／又はグラフィクスデータを処理することに関する。
【背景技術】
【０００２】
典型的なコンピュータアーキテクチャにおいては、プロセッサ上で実行中のアプリケーションから処理されるべきビデオ及び／又はグラフィクスデータは、集積化グラフィクス処理回路、ディスクリートグラフィクス処理回路、又は集積化グラフィクス処理回路及びディスクリートグラフィクス処理回路の何らかの組み合わせのいずれかによって処理され得る。集積化グラフィクス処理回路は、一般的に、ホストプロセッサシステムバスに接続されるブリッジ回路へと集積化され、このブリッジ回路は「ノースブリッジ(Northbridge)」として知られている。一方、ディスクリートグラフィクス処理回路は、典型的には、ＡＧＰ、ＰＣＩ、ＰＣＩエクスプレス(PCI Express)又は任意の他の適切な規格等の相互接続規格を利用する相互接続を介してノースブリッジに接続される外部グラフィクス処理ユニットである。概してディスクリートグラフィクス処理回路は集積化グラフィクス処理回路に比べて優れた性能を提供するが、より大きな電力を消費するものでもある。従って、性能を最適化し又は電力消費を最小にするために、集積化処理回路とディスクリート処理回路の間でビデオ及び／又はグラフィクス処理負担を切り換えることが知られている。
【０００３】
図１は、提案されている従来技術として、集積化処理回路とディスクリート処理回路の間でビデオ及び／又はグラフィクス処理負担を切り換えることが可能なコンピュータシステム１００を一般的に示している。図示されるように、少なくとも１つのホストプロセッサ１０２、例えばＣＰＵ又は任意の他の処理デバイスが、ホストプロセッサシステムバス１０６を介してノースブリッジ回路１０４に接続され、またシステムバス１２４を介してシステムメモリ１２２に接続される。幾つかの形態においては、必要に応じて多重ホストプロセッサ１０２があることがある。また幾つかの形態においては、システムメモリはホストプロセッサ１０２ではなくノースブリッジ１０４に接続されることがある。ホストプロセッサ１０２は、例えばＸ８６実行ユニット等の複数の順序外実行ユニット(out-of-order execution units)１０８を含み得る。順序外アーキテクチャ、例えばホストプロセッサ１０２内に実装されるアーキテクチャは、並列に実行され得る独立の命令を識別する。
【０００４】
ホストプロセッサ１０２は、ソフトウエアドライバ１１０を含む種々のソフトウエアプログラムを実行するように動作可能である。ソフトウエアドライバ１１０は、ホストプロセッサ１０２と集積化グラフィクス処理ユニット１１２及びディスクリートグラフィクス処理ユニット１１４の両方との間をインタフェースする。例えば、ソフトウエアドライバ１１０は、ディスプレイ１１６上にオブジェクトを描画するための情報を受信し、オブジェクトに関連付けられる所定の基本パラメータを計算し、そしてこれらのパラメータを更なる処理のために集積化グラフィクス処理ユニット１１２及びディスクリートグラフィクス処理ユニット１１４へ供給することができる。
【０００５】
ノースブリッジ１０４は、ビデオ及び／又はグラフィクスデータを処理する（例えば画素をレンダリングする(render pixels)）ように動作し、またディスプレイ１１６に接続されている。集積化グラフィクス処理ユニットを利用する既知のノースブリッジ回路の例としては、アドバンスト・マイクロ・デバイセズ・インク(Advanced Micro Devices, Inc.)によって販売されているＡＭＤ’ｓ７８０シリーズがある。集積化ＧＰＵ１１２は複数のシェーダユニット(shader units)１１８を含む。複数のシェーダユニット１１８のうちの各シェーダユニットは、特定のシェーディング機能、例えばビデオ及び／又はグラフィクスデータへの頂点シェーディング、幾何学的シェーディング又は画素シェーディング、を行う役割を担うプログラム可能シェーダである。システムメモリ１２２は集積化ＧＰＵ１１２に関連付けられるフレームバッファ１２０を含む。フラームバッファ１２０は、ディスプレイ１１６画面上に表示されるべき全ての画素に対する色値を表すデータを記憶する全体システムメモリ１２２の割り当てられた量のメモリである。１つの形態においては、ホストＣＰＵ１０２及びノースブリッジ１０４は、単一のパッケージ／ダイ１２６上に集積化され得る。ノースブリッジ１０４は、例えば周辺バス１３０を介してサウスブリッジ(Southbridge)１２８に結合される。サウスブリッジ１２８は、コンピューティングシステム１００の入力／出力機能の全てを制御するブリッジ回路である。
【０００６】
ディスクリートＧＰＵ１１４は、例えばＰＣＩエクスプレスバス等の適切なバス１３２を介してノースブリッジ１０４（又は集積化パッケージ／ダイ１２６）に結合される。ディスクリートＧＰＵ１１４は、複数のシェーダユニット１１９を含み、また非システムメモリ１３６に接続される。非システムメモリ１３６（例えば「ビデオ」又は「ローカル」メモリ）は、ディスクリートＧＰＵ１１４に関連付けられるフレームバッファ１２１を含み、またシステムバス１２４とは異なるバスを介してアクセスされる。非システムメモリ１３６は、ディスクリートＧＰＵ１１４に対してオンチップ又はオフチップであり得る。ディスクリートＧＰＵに関連付けられるフレームバッファ１２１は、集積化ＧＰＵに関連付けられるフレームバッファ１２０と同様のアーキテクチャ及び動作を有するが、非システムメモリ１３６の割り当てられた量のメモリ内に存在する。ディスクリートＧＰＵ上に配置されるシェーダユニット１１９は、上述した集積化ＧＰＵ上に配置されるシェーダユニット１１８と同様に動作する。しかし、幾つかの形態においては、集積化ＧＰＵ１１２上よりも更に多くのシェーダユニット１１９がＧＰＵ１１４上にあるであろうし、これによりディスクリートＧＰＵ１１４は例えば集積化ＧＰＵ１１２よりも高速にビデオ及び／又はグラフィクスデータを処理することができる。当業者であれば、この例示的な構成においてディスクリートコンポーネントとして示される構成及び機能は、組み合わされた構成又はコンポーネントとして実装され得ることを認識するはずである。他の変形、修正及び追加が検討される。
【０００７】
動作において、コンピューティングシステム１００は、集積化ＧＰＵ１１２、ディスクリートＧＰＵ１１４又はこれらの何らかの組み合わせを利用してグラフィクスデータ処理を達成することができる。例えば、１つの形態（以下「集積化動作モード」）においては、コンピューティングシステム１００のための全てのグラフィクスデータ処理を達成するために集積化ＧＰＵ１１２が利用され得る。この形態は、ディスクリートＧＰＵ１１４を完全に遮断すると共に、グラフィクスデータ処理を達成するためにより電力費用のかからない集積化ＧＰＵ１１２に頼ることによって、電力消費を最小化する。別の形態（以下「ディスクリート動作モード」）においては、コンピューティングシステム１００のための全てのグラフィクスデータ処理を達成するためにディスクリートＧＰＵ１１４が用いられ得る。この形態は、全てのグラフィクス処理負担を達成するために、より強力なディスクリートＧＰＵ１１４にのみ頼ることによって、集積化動作モードよりもグラフィクス処理性能を高める。最後に、１つの形態（以下「協力動作モード」）においては、グラフィクス処理を達成するために、集積化ＧＰＵ１１２及びディスクリートＧＰＵ１１４の両方が同時に利用され得る。この形態は、グラフィクス処理負担を全うするために集積化ＧＰＵ１１２及びディスクリートＧＰＵ１１４の両方に頼ることによって、ディスクリート動作モードよりもグラフィクスデータ処理性能を改善する。コンピューティングシステム１００と同様なプラットフォーム設計を採用している商業的なシステムの例としては、アドバンスト・マイクロ・デバイセズ・インクからのＡＴＩ＿Ｈｙｂｒｉｄ＿ＣｒｏｓｓＦｉｒｅＸ（商標）技術及びＡＴＩ＿ＰｏｗｅｒＸｐｒｅｓｓ（商標）技術並びにＮＶＩＤＩＡ（登録商標）コーポレーションからのＨｙｂｒｉｄ＿ＳＬＩ（登録商標）技術が挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、コンピューティングシステム１００において示されるのと同様の設計を採用する既存のコンピューティングシステムは、幾つかの欠点を抱えている。例えば、これらの設計は、コンピューティングシステム１００が１つの動作モード（例えば集積化動作モード）から別の動作モード（例えばディスクリート動作モード）へと移行するときに状態情報の喪失を生じさせることがある。状態情報とは、例えばシェーダユニットによって用いられる任意の情報であって、各シェーダユニットがビデオ及び／又はグラフィクスデータストリームをどのように処理するのかを制御する情報のことをいう。例えば、画素シェーダによって用いられる状態情報は、画素シェーダプログラム、画素シェーダ定数、レンダリング対象情報(render target information)、グラフィカル動作パラメータ等を含み得る。更に、状態情報は、ＧＰＵについての識別情報、例えばコンピューティングシステムのメモリ空間におけるＧＰＵの物理アドレスやビデオ及び／又はグラフィクスデータを処理するために利用されているＧＰＵのモデル、を含む。
【０００９】
既存のコンピューティングシステム１００が１つの動作モードから別の動作モードへと移行するとき、状態情報が破壊されることがある。従って、既存のコンピューティングシステム１００は、多くの場合に、ビデオ及び／又はグラフィクス処理負担がＧＰＵ間で切り換わるときにアプリケーションを正確に動作させるために、この状態情報を再生成する特定のソフトウエアサポートを必要とする。状態情報のこの破壊及び再生成は、コンピューティングシステム処理資源を無用に占有してしまい、そして１つの動作モードから別の動作モードへの切り換えを遅らせてしまう。例えば、既存のコンピューティングシステム１００が１つの動作モード（例えば集積化モード）から別の動作モード（例えばディスクリートモード）へと切り換わるためには、何秒かを要するであろう。動作モード間での切り換えにおけるこの遅延はまた、ディスプレイ画面１１６上での不所望なフラッシュ(flash)を生じさせる可能性がある。
【００１０】
既存のコンピューティングシステム１００はまた、協力動作モードに構成される場合にグラフィクス処理を最適化することができない。例えば、これらのコンピューティングシステムにおいては、両ＧＰＵ間で並列にグラフィクス及び／又はビデオ処理を行うために、しばしば、より強力なディスクリートＧＰＵ１１４の処理能力をより強力でない集積化ＧＰＵ１１２の処理能力に制限する必要がある。これは「最小公分母(least common denominator)」手法を表し、この場合ディスクリートＧＰＵ１１４の全処理能力は十分に活用されない。
【００１１】
そこで、状態情報を喪失することなしに且つ長い切り換え時間を伴うことなしに、集積化動作モード、ディスクリート動作モード及び協力動作モードの間で切り換わることが可能な改良されたコンピューティングシステムに対する必要性が存在する。また、協力動作モードにおいてディスクリートＧＰＵの処理能力を最大化することができるコンピューティングシステムに対する必要性がある。
【図面の簡単な説明】
【００１２】
本発明は、以下の図面と共に下記の説明を考慮して更に容易に理解されるはずであり、図面において同様の参照番号は同様の要素を表す。
【００１３】
【図１】図１は集積化及びディスクリート両方のビデオ及び／又はグラフィクス処理回路を含む従来のコンピューティングシステムの例を一般的に示すブロック図である。
【００１４】
【図２】図２は本開示において説明される１つの例に従うコンピューティングシステムを一般的に示すブロック図である。
【００１５】
【図３】図３は本開示において説明される１つの例に従う汎用実行ユニットを一般的に示すブロック図である。
【００１６】
【図４】図４はコンピューティングシステム内で多重プロセッサを用いて状態情報を喪失することなしにビデオ及び／又はグラフィクスデータを処理するための方法の１つの例を示すフローチャートである。
【００１７】
【図５】図５はコンピューティングシステム内で多重プロセッサを用いて状態情報を喪失することなしにビデオ及び／又はグラフィクスデータを処理するための方法の別の例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
概して、開示される方法、システム及び装置は、第１のグラフィクス処理回路及び第２のグラフィクス処理回路の組み合わせを用いるビデオ及び／又はグラフィクスデータの処理であって第１及び第２のグラフィクス処理回路の間で処理を転送する間に状態情報を喪失することのない処理を提供する。処理されるべきビデオ及び／又はグラフィクスデータは、例えば、ホストプロセッサ等のプロセッサ上で実行中のアプリケーションによって供給され得る。１つの例においては、装置は複数の単一命令多重データ(single instruction multiple data)（ＳＩＭＤ）実行ユニットを含む少なくとも１つのＧＰＵを含む。ＧＰＵはネイティブ機能コードモジュールを実行するように動作する。装置はまた、第１のＧＰＵ上の複数のＳＩＭＤ実行ユニットと同じプログラミングモデルを有する複数のＳＩＭＤ実行ユニットを含む少なくとも第２のＧＰＵを含む。更に、第１及び第２のＧＰＵは同じネイティブ機能コードモジュールを実行するように動作する。ネイティブ機能コードモジュールは、現在の動作モードから所望の動作モードへの移行が望ましい（例えば一方のＧＰＵは停止され他方のＧＰＵは開始される）旨のホストプロセッサ等の第１のプロセッサからの通知に応答して、少なくとも第１のＧＰＵに少なくとも第２のＧＰＵのための状態情報を提供させる。第２のＧＰＵは、第１のＧＰＵによって提供される状態情報を取得すると共に同じネイティブ機能コードモジュールを介して状態情報を用いて第１のＧＰＵが中止した処理を継続するように動作する。
【００１９】
１つの例においては、開示されるＧＰＵは、拡張された命令セットを用いるスカラープロセッサとは対照的に、単一命令多重データ（ＳＩＭＤ）プロセッサの形態にあるベクタープロセッサである。開示されるＧＰＵは、多重ＳＩＭＤエンジンと、ＳＩＭＤプロセッサのための状態情報を記憶するために用いられる汎用ＳＩＭＤレジスタセットと、を含んでいてよい。当該技術分野において知られているように、同じ命令が異なるＳＩＭＤエンジン上で実行され得る。開示されるＧＰＵは、当該技術分野において知られているように、Ｃ＋＋をネイティブに実行するタイプであってよい。
【００２０】
別の例においては、コンピューティングシステムは、少なくとも１つのＧＰＵ及び少なくとも第２のＧＰＵに結合される１つ以上のホストＣＰＵ等のプロセッサを含む。この例においては、少なくとも１つのＧＰＵ及び少なくとも第２のＧＰＵのいずれかによって作成される又はこれら両方によって同時に作成される画素を表示するように動作するディスプレイが存在する。
【００２１】
別の例においては、少なくとも第２のＧＰＵに関連付けられるネイティブ機能コードモジュールは、画素レンダリング命令を少なくとも第２のＧＰＵ上の複数のＳＩＭＤ実行ユニットにわたって均等に分散させることによって、少なくとも第２のＧＰＵによりレンダリングされ得る画素の数を最適化するように動作する。別の実施形態においては、少なくとも１つのＧＰＵに関連付けられるネイティブ機能コードモジュールは、画素レンダリング命令を少なくとも１つのＧＰＵ上の複数の汎用実行ユニットにわたって均等に分散させることによって、少なくとも１つのＧＰＵによりレンダリングされ得る画素の数を最適化するように動作する。
【００２２】
１つの例においては、少なくとも第２のＧＰＵに関連付けられるネイティブ機能コードモジュールは、少なくとも第２のＧＰＵ上の複数のＳＩＭＤ実行ユニット上での実行のために、少なくとも１つのＧＰＵ上の複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから状態情報を取得する。別の例においては、少なくとも１つのＧＰＵに関連付けられるネイティブ機能コードモジュールは、少なくとも１つのＧＰＵ上の複数のＳＩＭＤ実行ユニット上での実行のために、少なくとも第２のＧＰＵ上の複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから状態情報を取得する。ここで、状態情報を取得することは、当該状態情報をリトリーブすること(retrieving)又は提供された当該状態情報を有することを備えていてよい。
【００２３】
別の例においては、ホストプロセッサは、コンピューティングシステムを集積化動作モードからディスクリート動作モードへ及びその逆に移行させる制御ドライバを実行するように動作する。１つの例においては、制御ドライバは、プロセッサ割り込み（例えばホストＣＰＵ割り込み）を有効にして現在の動作モードから所望の動作モードへの及びその逆の移行を開始する。更に別の例においては、コンピューティングシステムを現在の動作モードから所望の動作モードへ移行させることは、現在の動作モードに関連付けられるＧＰＵ上の複数のＳＩＭＤ実行ユニット内の汎用レジスタセットから所望の動作モードに関連付けられるＧＰＵ上で実行中のネイティブ機能コードモジュールによってアクセス可能なメモリ内のロケーションへ状態情報を転送することを含む。
【００２４】
本開示はまた、コンピューティングシステム内の多重プロセッサを用いてビデオ及び／又はグラフィクスデータを処理するための方法を提供する。１つの例においては、方法は、現在の動作モードに関連付けられる第１のＧＰＵによる画素のレンダリングを停止することと、現在の動作モードに関連付けられる状態情報を第２のＧＰＵによってアクセス可能なロケーション内に保存することと、を含む。この例においては、方法は更に、所望の動作モードに関連付けられる少なくとも第２のＧＰＵによる画素のレンダリングを当該保存された状態情報を用いて再開することを含む。１つの例においては、画素レンダリング命令を特定の動作モードに関連付けられる複数の汎用実行ユニットにわたって均等に分散させることによって、特定の動作モードでレンダリングされ得る画素の数が最適化される。別の例においては、方法は、コンピューティングシステムが現在の動作モードから所望の動作モードへ移行されるべき旨を決定することを更に含む。別の例においては、状態情報は、第１のＧＰＵによる画素のレンダリングを停止することに応答して、現在の動作モードに関連付けられる汎用レジスタセット内に保存される。更に別の例においては、方法はまた、当該保存された状態情報を現在の動作モードに関連付けられる汎用レジスタセットからメモリロケーションへコピーすることと、続いてメモリロケーションから当該保存された状態情報を取得することと、を含む。別の例においては、コンピューティングシステムが現在の動作モードから所望の動作モードへ移行されるべき旨の決定は、ユーザ入力、コンピューティング電力消費要求、及び／又はグラフィカル性能要求に基づく。
【００２５】
本開示はまた、実行されるときに１つ以上のプロセッサに本開示の方法を実施させる実行可能な命令を備えるコンピュータ可読媒体を提供する。１つの例においては、実行可能な命令を備えるコンピュータ可読媒体は、本開示の装置を製造するために集積回路製造システムによって実行されてよい。
【００２６】
本開示はまた、現在の動作モードに関連付けられる画素のレンダリングを停止するように動作するグラフィクス処理回路（ＧＰＵ）を含む集積回路を提供する。この例においては、ＧＰＵはまた、現在の動作モードに関連付けられる状態情報を第２のＧＰＵによる使用のためにアクセス可能なロケーション内に保存するように動作する。１つの例においては、上述のＧＰＵは、第２のＧＰＵによって以前にレンダリングされようとしていた画素のレンダリングを、第２のＧＰＵによって保存された状態情報を用い且つ現在の動作モードから所望の動作モードへの移行に応答して、再開するように動作する。
【００２７】
数ある利点の中でも、開示される方法、システム及び装置は、状態情報を喪失することなしに且つ長い切り換え時間を伴うことなしに、集積化動作モード、ディスクリート動作モード及び協力動作モードの間での切り換えを提供する。開示される方法、システム及び装置はまた、動作モード切り換えの間におけるディスプレイ画面上での不所望なフラッシュの出現を軽減する。更に、開示される方法、システム及び装置は、協力動作モードにおけるディスクリートＧＰＵの処理能力を最大化する。他の利点は当業者によって認識されるはずである。
【００２８】
実施形態の以下の説明は実際上は単に例示的なものであり、開示、その応用又は使用を限定することは全く意図されていない。図２はコンピューティングシステム２００の１つの例を示しており、限定はされないが、例えば、サーバコンピュータ、ワークステーション、デスクトップＰＣ、ノートブックＰＣ、パーソナルデジタルアシスタント、カメラ、携帯電話機又は任意の他の適切な画像ディスプレイシステムにおけるコンピューティングシステムが例示される。コンピューティングシステム２００は１つ以上のプロセッサ２０２（例えば限定はされないがマイクロプロセッサ、ＤＳＰ又は中央処理ユニット等の共有に係る、専用の又は一連のプロセッサ）を含む。少なくとも１つのプロセッサ２０２（例えば「ホストプロセッサ」又は「ホストＣＰＵ」）は、典型的にはノースブリッジであるブリッジ回路２０４にシステムバス２０６を介して接続される。ホストプロセッサ２０２はまた、システムバス２２４を介してシステムメモリ２２２に接続される。システムメモリ２２２は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的に消去可能なプログラム可能リードオンリメモリ（ＥＥ−ＰＲＯＭ）又は任意の他の適切なデジタル記憶媒体、等の揮発性／不揮発性メモリ要素の任意の組み合わせであってよい。システムメモリ２２２は、状態情報２２８を記憶するように動作可能であり、またＧＰＵ２１０に関連付けられるフレームバッファ２１８を含む。フラームバッファ２１８は、ディスプレイ２３８画面上に表示されるべき全ての画素に対する色値を表すデータを記憶する全体システムメモリ２２２の割り当てられた量のメモリである。１つの実施形態においては、ホストプロセッサ２０２及びノースブリッジ２０４は、単一のパッケージ／ダイ２２６上に集積化され得る。
【００２９】
ホストプロセッサ２０２（例えばＡＭＤ＿６４又はＸ８６ベースのプロセッサ）は、制御ドライバ２０８を含む種々のソフトウエアプログラムを実行するように動作する。制御ドライバ２０８は、ホストプロセッサ２０２と集積化グラフィクス処理ユニット２１０及びディスクリートグラフィクス処理ユニット２１２の両方との間をインタフェースする。後で更に詳細に論じられるように、制御ドライバ２０８は、例えばホストプロセッサ割り込みを有効にすることによって、１つの動作モードから別の動作モードへの移行の信号を送るように動作する。制御ドライバ２０８はまた、処理されるべきビデオ及び／又はグラフィクスデータを、ホストプロセッサ２０２上で実行中のアプリケーションから第１のＧＰＵ及び／又は第２のＧＰＵへと更なる処理のために分散させる。例示のみを目的として集積化ＧＰＵ及びディスクリートＧＰＵの例が用いられることになるが、ＧＰＵは、スタンドアローンチップであってよく、他の機能と組み合わされてよく、又は必要に応じて任意の適切な形態にあってよい。図２は集積化ＧＰＵ２１０及びディスクリートＧＰＵ２１２を示す。
【００３０】
この例では、ノースブリッジ２０４は、ビデオ及び／又はグラフィクスデータ、例えばホストプロセッサ２０２上で実行中のアプリケーションから受信されるデータ、を処理するように構成される集積化グラフィクス処理ユニット２１０を含み、またディスプレイ２３８に接続される。ビデオ及び／又はグラフィクスデータを処理することは、例えばディスプレイ２３８画面上での表示のために画素をレンダリングすることを含み得る。当該分野で知られているように、ディスプレイ２３８は、一体型ディスプレイ又は外部ディスプレイ、例えば陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ又は任意の他の適切なディスプレイ、を備えていてよい。いずれにしても、ディスプレイ２３８は、集積化ＧＰＵ２１０、ディスクリートＧＰＵ２１２、又はこれらの両方によって生成される画素を表示するように動作する。更に当業者によって理解されるであろうように、「ＧＰＵ」の用語は、ディスクリートの又は集積化された（例えばホストプロセッサと同じ基板上に集積化された）１つ以上のコアを有するグラフィクス処理ユニットを含み得る。
【００３１】
ＧＰＵ２１０は、ネイティブ機能コードモジュール２１４及び複数の汎用実行ユニット２１６を含む。ネイティブ機能コードモジュール２１４は、例えば、汎用実行ユニット２１６の少なくとも１つ（例えばＳＩＭＤ実行ユニットのａ）によってＧＰＵ２１０上で実行される記憶された実行可能命令データである。ネイティブ機能コードモジュール２１４は、実行ユニット３００に、ビデオ及び／又はグラフィクスデータにシェーディング動作(shading operations)を実施するために利用可能なできるだけ多くの他の汎用実行ユニット２１６を動的に活用させる。ネイティブ機能コードモジュール２１４は、入ってくる作業負荷（即ち例えばホストプロセッサ２０２上で実行中のアプリケーションからもたらされる処理されるべきビデオ及び／又はグラフィクスデータ）を解析すること、入ってくる作業負荷を処理するためにどの汎用実行ユニットが利用可能であるのかを解析すること、及び入ってくる作業負荷を利用可能な汎用実行ユニットの間で分散させること、によって、実行ユニット３００が上述の機能を達成するようにする。例えば、全てに満たない汎用実行ユニット２１６が処理のために利用可能である場合、処理に利用可能な汎用実行ユニットにわたって均等に作業負荷が分散させられる。次いで、追加的な汎用実行ユニット２１６が利用可能になるにつれて（例えばそれらが先に割り当てられた作業負荷の処理を終了したことを理由として）、ネイティブ機能コードモジュール２１４を実行中の実行ユニット３００は、ＧＰＵ２１０によってレンダリングされ得る画素の数を最適化するように、より多くの一連の汎用実行ユニットに当該作業負荷を割り当てる。また、処理されるべきビデオ及び／又はグラフィクスデータは特に画素レンダリング命令を含んでいるので、ネイティブ機能コードモジュール２１４は、ＧＰＵ２１０（又は別のディスクリートＧＰＵ２１２）上の複数の汎用実行ユニット２１６にわたって画素レンダリング命令を均等に分散させることによって、ＧＰＵ２１０（又は別の例ではディスクリートＧＰＵ２１２）によりレンダリングされ得る画素の数を最適化させる。
【００３２】
汎用実行ユニット２１６は、１つの実施形態においては、単一命令多重データ（ＳＩＭＤ）プロセッサを有するプログラム可能実行ユニットである。これらの汎用実行ユニット２１６は、頂点及びテクスチャ(vertices and textures)を操作する等のシェーディング機能を行うように動作する。更に、汎用実行ユニット２１６は、ネイティブ機能コードモジュール２１４を実行するように動作する。汎用実行ユニット２１６はまた、同様のレジスタ及びプログラミングモデル、例えばＡＭＤ６４プログラミングモデルを共有する。従って汎用実行ユニット２１６は、例えばＣ＋＋等の同じ命令セット言語を使用可能である。しかし、当業者であれば、他の適切なプログラミングモデル及び／又は命令セット言語が同様に採用され得ることを認識するはずである。
【００３３】
次に図３を参照すると、複数の汎用実行ユニット２１６の単一の汎用実行ユニット３００が例示されている。例えば、図３は汎用実行ユニット＃１の詳細図を示している。汎用実行ユニット＃２〜＃Ｎは汎用実行ユニット＃１と同じアーキテクチャを共有するので、汎用実行ユニット＃１の詳細図は汎用実行ユニット＃２〜＃Ｎに同様に適用される。更に、複数の汎用実行ユニット２１６は、必要に応じた数の個々の汎用実行ユニット３００から構成されてよい。しかし、１つの実施形態においては、ＧＰＵ２１２上にあるよりも少ない個々の汎用実行ユニット３００がＧＰＵ２１０上に存在するであろう。その場合にも、ディスクリートＧＰＵ２１２上の汎用実行ユニット２１６は、ＧＰＵ２１０上の汎用実行ユニット２１６と同じレジスタ及びプログラミングモデル並びに命令セット言語を共有するであろうし、また同じネイティブ機能コードモジュール２１４を実行するように同様に動作する。
【００３４】
各汎用実行ユニット３００は、ＳＩＭＤエンジン３０４と通信する命令ポインタ３０２を含む。各ＳＩＭＤエンジン３０４は汎用レジスタセット３０８と通信する。各汎用レジスタセット３０８は、例えば状態情報２２８等のデータとアドレスとの両方を記憶するように動作する。例えば状態情報は、データ上の命令に追従する例えば汎用レジスタセット３０８内へ書き込まれるデータ値を備える。状態情報２２８は、例えば、汎用実行ユニット２１６によって用いられる任意の情報を参照してよく、これにより各汎用実行ユニット３００がビデオ及び／又はグラフィクスデータストリームをどのように処理するのかが制御される。例えば、画素シェーディングを実行する汎用実行ユニット３００によって用いられる状態情報は、画素シェーダプログラム、画素シェーダ定数、レンダリング目標情報、グラフィカル動作パラメータ等を含み得る。更に、状態情報２２８は、ＧＰＵ（例えばＧＰＵ２１０又はディスクリートＧＰＵ２１２）についての識別情報、例えばコンピューティングシステムのメモリ空間におけるＧＰＵの物理アドレスやビデオ及び／又はグラフィクスデータを処理するために利用されているＧＰＵのモデル、を含む。
【００３５】
各汎用実行ユニット３００内のＳＩＭＤエンジン３０４は、例えばＡＬＵ３０６等の複数の論理ユニットを含む。各ＡＬＵ３０６は、それが受け取るビデオ及び／又はグラフィクスデータに対して種々の数学的動作を行うように動作する。命令ポインタ３０２は、ネイティブ機能コードモジュール２１４が状態情報２２８を取得することができ且つそれに従いビデオ及び／又はグラフィクス処理負担を複数の汎用実行ユニット２１６に割り当てることができるように、状態情報２２８（例えばビデオ及び／又はグラフィクスデータに対して行われるべき命令）が配置されるメモリ内のロケーションを識別するように動作する。
【００３６】
図２を再び参照すると、ノースブリッジ２０４（又は１つの実施形態においては集積化された単一パッケージ／ダイ２２６）は、例えば専用バス２３４を介してサウスブリッジ２３２に結合される。ノースブリッジ２０４は更に、例えばＰＣＩエクスプレスバス等の適切なバス２３６を介してディスクリートＧＰＵ２１２に結合される。ディスクリートＧＰＵ２１２は、ＧＰＵ２１０上のネイティブ機能コードモジュール２１４と同じネイティブ機能コードモジュール２１４を含む。更に、ディスクリートＧＰＵ２１２は、ＧＰＵ２１０上の汎用実行ユニット２１６と同じレジスタ及びプログラミングモデル（例えばＡＭＤ６４等）並びに命令セット言語（例えばＣ＋＋）を共有する汎用実行ユニット２１６を含む。しかし、前述したように、１つの実施形態においては、ＧＰＵ２１０上に見られるよりもはるかに多い個々の汎用実行ユニット３００がディスクリートＧＰＵ２１２上にある。従ってこの実施形態においては、ネイティブ機能コードモジュール２１４は、ディスクリートＧＰＵ２１２上のはるかに多数の個々の汎用実行ユニット３００に作業負荷を割り当てることができるので、ディスクリートＧＰＵ２１２は、ＧＰＵ２１０よりもかなり高速に作業負担を処理することになる。ディスクリートＧＰＵ２１２は更に非システムメモリ２３０に接続される。非システムメモリ２３０は、システムメモリ２２２内に記憶された状態情報２２８等の状態情報２２８を記憶するように動作し、また上述したフレームバッファ２１８と同様に動作するフレームバッファ２１９を含む。非システムメモリ２３０は、例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的に消去可能なプログラム可能リードオンリメモリ（ＥＥ−ＰＲＯＭ）又は任意の他の適切なデジタル記憶媒体、等の揮発性／不揮発性メモリ要素の任意の組み合わせであってよい。
【００３７】
図４は多重プロセッサを用いて状態情報を喪失することなしにビデオ及び／又はグラフィクスデータを処理するための方法の１つの例を示す。ステップ４００では、コンピューティングシステム２００が現在の動作モードから所望の動作モードへ移行すべき旨の決定がなされる。この決定は、例えば、動作モードの変更を要求するユーザ入力、コンピューティングシステム電力消費要求、グラフィカル性能要求、又は他の適切な因子に基づいていてよい。１つの例においては、ホストプロセッサ２０２は、制御ドライバ２０８の制御の下で決定をなす。しかし、この動作は任意の適切な要素によって行われてよい。現在の動作モード及び所望の動作モードは、例えば、集積化動作モード、ディスクリート動作モード又は協力動作モードを含んでいてよい。
【００３８】
ステップ４０２では、現在の動作モードに関連付けられる第１のＧＰＵによって達成されつつある画素のレンダリングが停止され、そして状態情報は現在の動作モードに関連付けられる汎用レジスタセット内に保存される。ここで、レンダリングは、例えばアプリケーションからの描画コマンドに基づくディスプレイのためにビデオを処理し又は画素を生成することを含み得る。状態情報２２８は、例えば、現在の動作モードに関連付けられる第１のＧＰＵ上の複数の汎用実行ユニット２１６内の汎用レジスタセット３０８内に保存されてよい。ステップ４０２の動作は、以下の例を通して更に説明され得る。現在の動作モードが集積化動作モードであった（即ちグラフィクス処理はＧＰＵ２１０上でのみ達成されつつあった）場合には、状態情報２２８は、ＧＰＵ２１０上の汎用実行ユニット２１６の汎用レジスタセット３０８内に保存されたことになる。現在の動作モードがディスクリート動作モードであった場合には、状態情報２２８は、ディスクリートＧＰＵ２１２上の汎用実行ユニット２１６の汎用レジスタセット３０８内に保存されたことになる。また、現在の動作モードに関連付けられるＧＰＵによる画素のレンダリングの停止は、制御ドライバ２０８がホストプロセッサ２０２への割り込みを有効にすることによって開始されてよい。このように、１つの動作モードから別の動作モードへのコンピューティングシステム２００の移行を開始するために、制御ドライバ２０８が用いられ得る。
【００３９】
ステップ４０４では、現在の動作モードに関連付けられる汎用レジスタセット内に保存された状態情報２２８がメモリロケーションへコピーされる。例えば集積化動作モードからディスクリート動作モードへ移行する場合、状態情報２２８は、ＧＰＵ２１０上の汎用実行ユニット２１６の汎用レジスタセット３０８から非システムメモリ２３０へコピーされることになる。逆にディスクリート動作モードから集積化動作モードへ移行する場合、状態情報２２８は、ＧＰＵ２１２上の汎用実行ユニット２１６の汎用レジスタセット３０８からシステムメモリ２２２へコピーされることになる。ホストプロセッサ２０２は、現在の動作モードに関連付けられる汎用レジスタセットからメモリへの状態情報２２８の転送（例えばコピー）を行うように動作する。このようにして状態情報２２８を転送することによって、図１に示されるコンピューティングシステム１００等の従来のコンピューティングシステムには不可避的に伴っていた状態情報の破壊及び再作成の必要性が排除される。現在の動作モードに関連付けられる汎用レジスタセットは、同一のレジスタセット構成を共有するという意味において、所望の動作モードの汎用レジスタセットに対応する（例えばレジスタは両ＧＰＵセットにおいて同一である）。
【００４０】
ステップ４０６では、保存された状態情報２２８がメモリロケーションから取得される。このことは、例えば、ネイティブ機能コードモジュール２１４がシステムメモリ２２２又は非システムメモリ２３０のいずれかから状態情報２２８を要求すること又は状態情報２２８を提供されることによって達成されてよい。例えば集積化動作モードからディスクリート動作モードへ移行する場合、ステップ４０６において、ＧＰＵ２１２上で実行中のネイティブ機能コードモジュールは、状態情報２２８を非システムメモリから取得することになる（非システムメモリには状態情報２２８がＧＰＵ２１０上の汎用実行ユニット２１６の汎用レジスタセット３０８から転送されていた）。
【００４１】
ステップ４０８では、所望の動作モードに関連付けられる少なくとも第２のＧＰＵが画素のレンダリングを再開する。所望の動作モードに関連付けられる少なくとも第２のＧＰＵは、先行する動作モードに関連付けられる第１のＧＰＵが中止した画素のレンダリングを正確に受け継ぐことになる。ディスクリートＧＰＵ２１２及びＧＰＵ２１０の両方の汎用実行ユニット２１６が同じレジスタ及びプログラミングモデル並びに命令セット言語を共有し且つ同一のネイティブ機能コードモジュール２１４を実行するので、この本質的に継ぎ目のない移行が可能である。
【００４２】
図５はコンピューティングシステム内で多重プロセッサを用いてビデオ及び／又はグラフィクスデータを処理するための方法の別の例を示している。この例においては、状態情報は汎用レジスタセット内には保存されない。ステップ５００では、現在の動作モードに関連付けられる第１のＧＰＵによる画素のレンダリングが中止され、また現在の動作モードに関連付けられる状態情報は第２のＧＰＵによってアクセス可能なロケーションに保存される。この例では、状態情報はオンチップの又はオフチップの任意の適切なメモリ内に保存されてよく、任意の適切なメモリは、限定はされないが、専用のレジスタセット、システムメモリ、非システムメモリ、フレームバッファメモリ等を含む。ステップ５０２では、所望の動作モードに関連付けられる少なくとも第２のＧＰＵが、保存された状態情報を用いることによって、画素のレンダリングが再開される。
【００４３】
つまり、１つの例においては、ＧＰＵ（例えばＧＰＵ２１０）は、現在の動作モードに関連付けられる画素のレンダリングを停止すると共に現在の動作モードに関連する状態情報２２８を第２のＧＰＵ（例えばディスクリートＧＰＵ２１２）による使用のためにアクセス可能なロケーション内に保存するように動作する。例えば、現在の動作モードから所望の動作モードへの移行に応答して、ＧＰＵ（例えばＧＰＵ２１０）は、オフチップである別のＧＰＵ（例えばＧＰＵ２１２）によってアクセス可能なロケーション内に状態情報を保存するように動作する。この動作は、例えばＧＰＵ２１２の観点からも適用可能である。
【００４４】
数ある利点の中でも、開示される方法、システム及び装置は、状態情報を喪失することなしに且つ長い切り換え時間を伴うことなしに、集積化動作モード、ディスクリート動作モード及び協力動作モードの間での切り換えを提供する。開示される方法、システム及び装置はまた、動作モード切り換えの間におけるディスプレイ画面上での不所望なフラッシュの出現を軽減する。更に、開示される方法、システム及び装置は、協力動作モードにおけるディスクリートＧＰＵの処理能力を最大化する。他の利点は当業者によって認識されるはずである。
【００４５】
また、限定はされないが例えばＣＤＲＯＭ、ＲＡＭ、他の形態のＲＯＭ、ハードドライブ、分散型メモリ等のコンピュータ可読メモリに記憶される実行可能な命令に基づき集積回路を作り出す集積回路設計システム（例えばワークステーション）が知られている。命令は、限定はされないが例えばハードウエア記述子言語又は他の適切な言語等の任意の適切な言語によって表現されてよい。従って、ここに説明される回路はまた、そのようなシステムによって集積回路として製造されてよい。例えば、コンピュータ可読媒体に記憶される命令を用いて集積回路を作り出すことができ、命令は、実行されるときに、集積回路設計システムに集積回路を作り出すことをさせ、集積回路は、コンピューティングシステムが現在の動作モードから所望の動作モードへ移行するべきであることを決定し、現在の動作モードに関連付けられる第１のＧＰＵによる画素のレンダリングを停止すると共に現在の動作モードに関連付けられる汎用レジスタセット内に状態情報を保存し、そして当該保存された状態情報を現在の動作モードに関連付けられる汎用レジスタセットから所望の動作モードに関連付けられる少なくとも第２のＧＰＵによってアクセス可能なメモリロケーションへコピーするように動作する。ここに説明される他の動作を行う論理を有する集積回路もまた適切に製造され得る。
【００４６】
上述の詳細な説明及びそこに説明される例は、例示及び説明を目的とし且つ限定によってではなく提示されてきた。従って、本開示は、上に開示され且つここに特許請求される基本的な原理の精神及び範囲内に含まれる任意の及び全ての修正、変形及び均等なものを網羅することが考慮される。
【図１】
2013521581.tif 000003
【図２】
2013521581.tif 000004
【図３】
2013521581.tif 000005
【図４】
2013521581.tif 000006
【図５】
2013521581.tif 000007
【国際調査報告】
2013521581.tif 000008
2013521581.tif 000009
2013521581.tif 000010
2013521581.tif 000011
2013521581.tif 000012