(57)【特許請求の範囲】
【請求項１】
プロセッサと、メモリと、ディスプレイにビデオフレームを提示するためのディスプレイインタフェースおよび第１のグラフィックプロセッサを備える第１のグラフィックサブシステムと、前記プロセッサ、前記メモリおよび前記第１のグラフィックサブシステムと相互接続するインタフェース回路と、第２のグラフィックプロセッサを有するが専用のフレームバッファメモリを有しない第２のグラフィックサブシステムと、周辺相互接続バスとを有するコンピューティングデバイスであって、前記周辺相互接続バスは、前記第２のグラフィックサブシステムへ提供され若しくは前記第２のグラフィックサブシステムから提供される全てのデータが前記インタフェース回路および前記周辺相互接続バス経由で提供されるように、前記第２のグラフィックサブシステムと前記インタフェース回路とを相互接続している、コンピューティングデバイスを動作させる方法であって、
前記ディスプレイインタフェースと相互接続している前記メモリ内にフレームバッファを確立するステップと、
ビデオフレームを、前記周辺相互接続バス経由で、プリミティブごとに、前記フレームバッファ内にレンダリングするように、前記第２のグラフィックプロセッサに対して、前記周辺相互接続バス経由で指示を提供するステップであって、前記ディスプレイに提示される全てのフレームは、前記第２のグラフィックプロセッサによってレンダリングされているステップと、
前記フレームバッファからの前記フレームを、前記ディスプレイインタフェース経由でディスプレイに提示するステップとを含む、方法。
【請求項２】
前記フレームバッファ内の前記フレームを前記ディスプレイに提示するように、前記ディスプレイインタフェースをプログラムするステップを更に含む、請求項１に記載の方法。
【請求項３】
コンピューティングデバイスであって、
中央処理装置と、
前記プロセッサと通信するメモリと、
グラフィックメモリ内のフレームバッファと、
前記グラフィックメモリと相互接続されたディスプレイインタフェースであって、ディスプレイにビデオフレームを提示するためのディスプレイインタフェースを備える第１のグラフィックサブシステムと、
前記プロセッサ、前記メモリおよび前記第１のグラフィックサブシステムと相互接続するインタフェース回路と、
周辺拡張カードに形成された第２のグラフィックサブシステムであって、ローカルなフレームバッファを定義するメモリを有しない第２のグラフィックサブシステムと、
前記第２のグラフィックサブシステムと前記インタフェース回路とを相互接続する周辺相互接続バスであって、前記第２のグラフィックサブシステムへ提供され若しくは前記第２のグラフィックサブシステムから提供される全てのデータが、前記周辺相互接続バス経由で提供される、周辺相互接続バスとを備え、
前記第２のグラフィックサブシステムは、レンダリングの指示を受信し、前記周辺相互接続バス経由で画像をレンダリングするように動作し、
前記メモリは、前記ディスプレイに提示される全てのビデオフレームを、前記周辺相互接続バス経由で、プリミティブごとに、前記フレームバッファ内にレンダリングするように、前記第２のグラフィックサブシステムを動作させるコンピュータ実行可能命令を記憶している、コンピューティングデバイス。
【請求項４】
前記ディスプレイインタフェースは周辺拡張インタフェースの一部を構成している、請求項３に記載のコンピューティングデバイス。
【請求項５】
前記ディスプレイインタフェースは、前記中央処理装置を前記周辺相互接続バスと相互接続している周辺拡張インタフェース上の前記第１のグラフィックサブシステムの一部を構成している、請求項３に記載のコンピューティングデバイス。
【請求項６】
グラフィックサブシステムであって、
グラフィックプロセッサと、周辺相互接続バスインタフェースとを備え、前記周辺相互接続バスインタフェースは、前記グラフィックサブシステムへ提供され若しくは前記グラフィックサブシステムから提供される全てのデータが、前記周辺相互接続バスインタフェース経由で送られるように、前記グラフィックサブシステムをホストコンピューティングデバイスの周辺相互接続バスと相互接続するためのものであり、前記ホストコンピューティングデバイスは、前記グラフィックメモリと相互接続されたディスプレイインタフェースであって、ディスプレイにビデオフレームを提示するためのディスプレイインタフェースを備え、前記グラフィックサブシステムは前記グラフィックサブシステムにローカルなフレームバッファを定義するメモリを持たず、
前記グラフィックサブシステムは、レンダリングの指示を受信し、前記ビデオフレームを、前記周辺相互接続バスインタフェース経由で、プリミティブごとに、前記ホストコンピューティングデバイスの前記グラフィックメモリのフレームバッファ内にレンダリングするように動作可能であり、
前記グラフィックプロセッサは、前記ディスプレイに提示される全てのフレームをレンダリングし、全てのグラフィックコマンドは、前記周辺相互接続バスインタフェースを介して前記ホストコンピューティングデバイスから受信される、グラフィックサブシステム。
【請求項７】
コンピューティングデバイスを請求項１に記載の方法を実行するように動作させるコンピューティング実行可能命令を記憶しているコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本願は、２００５年５月２４日に出願の米国特許出願第１１／１３６，４８３号、および２００６年５月３０日に出願の米国特許出願第１１／４２１，００５号の米国一部継続出願であり、そのいずれも参照によりここに援用する。
【０００２】
本発明は、一般に、コンピューティングデバイスに関し、より詳細には、高速周辺バスによって相互接続されているグラフィックプロセッサを有するコンピューティングデバイスに関する。
【背景技術】
【０００３】
近年、コンピュータハードウェアが次第に一体化されている。コンピュータの周辺機器は、中央処理装置と協動する一体化チップセットの一部として形成されることが多い。多くの場合、コンピュータの音声、グラフィックアダプタおよびインタフェースは、一体化チップセットの一部を構成している。このような一体化により、コンピューティングデバイスのコスト低減と小型化が実現される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
同時に、グラフィックプロセッサは、改善された性能と特徴を提供するために常に進歩している。最先端のグラフィックプロセッサは、中央処理装置と同程度に複雑化している。このため、統合の傾向にもかかわらず、高性能のグラフィックプロセッサは、未だに周辺機器カードに形成されることが一般的である。比較すると、集積されたグラフィックプロセッサは比較的単純であり、高性能の周辺機器カードに形成されるグラフィックプロセッサの特徴または性能を提供しない。一体型グラフィック部品は、アドオンの周辺機器カードが存在している場合には、通常はあっても冗長であり、このため無効にされる。
【０００５】
同様に、集積化、外部を問わず、グラフィックアダプタをアップグレードすると、多くの場合、非力なアダプタは役に立たなくなり、廃棄されるか無効にされる。
【０００６】
したがって、部品の冗長性を低減する必要が依然として存在する。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、１つのグラフィックプロセッサによって生成されるグラフィックが、高速拡張／相互接続バスを介してフレームバッファに転送される。フレームバッファからのレンダリングされたフレームが、フレームバッファと通信しているディスプレイインタフェース経由でディスプレイで提示される。
【０００８】
別の既存の（例えば一体化）グラフィックアダプタ／サブシステムのディスプレイインタフェースは、相互接続されているディスプレイにレンダリングされたフレームを提示するために使用することができ、利便性が高い。
【０００９】
このようにして、グラフィックプロセッサは、ディスプレイインタフェースを有さず、場合によってはフレームバッファさえも備えている必要がないグラフィックアダプタの一部を構成しうる。同様に、グラフィックプロセッサを、最新のグラフィックプロセッサで置き換えることができる。
【００１０】
グラフィックプロセッサは、周辺拡張カードに包含されるグラフィックアダプタの一部を構成しうる。
【００１１】
一実施形態では、コンピューティングデバイスは、第１のグラフィックアダプタおよび第２のグラフィックアダプタを有しうる。ディスプレイに表示させる画像が、前記第２のグラフィックアダプタによってアクセス可能なメモリから転送される。前記第２のグラフィックアダプタの前記ディスプレイインタフェースが、前記第２のグラフィックアダプタの前記メモリ内の画像を、前記複数のディスプレイの少なくとも１つで提示するために使用される。このようにして、前記第２のアダプタのポートと共に、前記ディスプレイインタフェースを形成しているデバイスの電子回路が使用されうる。レンダリングされたグラフィックは、フレーム単位で転送されるか、グラフィックプリミティブ（graphics primitive）単位で転送されうる。後者の場合、グラフィックが、前記第２のグラフィックアダプタによってアクセス可能なメモリ内に、効率的に直接レンダリングされる。このメモリは、システムメモリでもアダプタメモリでもよい。
【００１２】
別の実施形態によれば、前記第１のグラフィックプロセッサが、前記高速相互接続バスを介して転送されるフレームをレンダリングしている間、前記第２のアダプタのグラフィックプロセッサが無効にされるか、低電力モードに設定される。
【００１３】
本発明の別の態様によれば、第１のグラフィックアダプタの一部を構成しているグラフィックプロセッサが、第１の画像を第１のディスプレイに、第２の画像を第２のディスプレイに、それぞれ描画するように動作される。前記第１のディスプレイは、前記第１のグラフィックアダプタの第１のディスプレイインタフェースと相互接続されうる。前記第２のディスプレイは、第２のグラフィックアダプタの第２のディスプレイインタフェースと相互接続されうる。前記方法は、前記第１のグラフィックアダプタのメモリ内に前記第１の画像と前記第２の画像とをレンダリングするステップと、前記第２の画像を前記第１のアダプタの前記メモリから前記第２のグラフィックアダプタのフレームバッファに転送するステップと、前記第２のグラフィックアダプタの前記第２のディスプレイインタフェースを使用して、前記第２のグラフィックアダプタの前記フレームバッファから前記第２のディスプレイに前記第２の画像を表示するステップと、を有する。
【００１４】
本発明の別の態様によれば、コンピューティングデバイスは、プロセッサと、前記プロセッサと通信しているコンピュータ可読メモリと、第１のグラフィックアダプタと、前記第１のグラフィックアダプタと通信している第１のアダプタメモリと、第１のディスプレイで画像を提示するための第１のディスプレイインタフェースと、第２のグラフィックアダプタと、第２のディスプレイで画像を提示するための第２のディスプレイインタフェースと、前記第１のグラフィックアダプタと前記第２のグラフィックアダプタとを相互接続している高速バスと、を有する。プログラムコードが、前記コンピュータ可読メモリに記憶され、前記プロセッサによって実行可能である。前記プログラムコードは、実行されると、前記第１のグラフィックアダプタに、前記第１のアダプタメモリ内に第１の画像および第２の画像をレンダリングさせ、前記第２の画像を前記第１のアダプタメモリから前記第２のグラフィックアダプタのフレームバッファに転送させ、前記第２のグラフィックアダプタの前記フレームバッファから前記第２のディスプレイに、前記第２の画像を表示するように、前記第２のグラフィックアダプタの前記第２のディスプレイインタフェースをプログラムさせる。
【００１５】
更に別の態様によれば、前記第１のアダプタは、前記第２のアダプタによってアクセス可能な前記システムメモリに第１の画像を直接レンダリングする。前記第２のアダプタは、前記第２の画像を同じメモリにレンダリングする。前記第２のアダプタは、前記システムメモリから両方の画像を表示する。
【００１６】
本発明の別の態様によれば、コンピューティングデバイスを動作させる方法が提供される。前記コンピューティングデバイスは、プロセッサ、前記プロセッサと通信しているメモリ、前記プロセッサをグラフィックプロセッサと相互接続している周辺相互接続バス、およびディスプレイインタフェースを有する。前記方法は、前記メモリ内にフレームバッファを確立するステップと、ビデオフレームをレンダリングするように前記グラフィックプロセッサに指示するステップと、前記ビデオフレームを前記周辺相互接続バス経由で前記フレームバッファに転送するステップと、前記フレームバッファからの前記フレームを、前記ディスプレイインタフェース経由でディスプレイで提示するステップと、を有する。
【００１７】
本発明の更に別の態様によれば、コンピューティングデバイスが提供される。前記コンピューティングデバイスは、中央処理装置と、前記中央処理装置と通信しているメモリと、前記中央処理装置をグラフィックプロセッサと相互接続している周辺相互接続バスと、ディスプレイインタフェースと、前記メモリに記憶されたコンピュータ実行可能命令と、を有し、前記命令は、コンピューティングデバイスを、前記グラフィックプロセッサに、ビデオフレームをレンダリングさせ、前記ビデオフレームを前記周辺相互接続バス経由で前記フレームバッファに転送し、前記フレームバッファからのレンダリングされた前記フレームを、前記ディスプレイインタフェース経由でディスプレイで提示するように適合させる。
【００１８】
本発明の別の態様によれば、コンピューティングデバイスが提供される。前記コンピューティングデバイスは、中央処理装置と、前記プロセッサと通信しているメモリと、第１のフレームバッファと、前記プロセッサをグラフィックサブシステムと相互接続している周辺相互接続バスであって、前記グラフィックサブシステムは、前記グラフィックサブシステムにローカルなフレームバッファを定義するメモリを有さない周辺相互接続バスと、前記メモリと通信しているディスプレイインタフェースと、を有する。前記メモリは、前記グラフィックプロセッサを、ビデオフレームをレンダリングし、前記ビデオフレームを前記周辺相互接続バス経由で前記第１のフレームバッファに転送するように適合させるコンピュータ実行可能命令を記憶している。
【００１９】
本発明の別の態様によれば、グラフィックサブシステムが提供され、前記グラフィックサブシステムは、グラフィックプロセッサと、前記グラフィックサブシステムをホストプロセッサと相互接続するための周辺相互接続バスインタフェースと、を有し、前記グラフィックサブシステムは、前記グラフィックサブシステムにローカルなフレームバッファを定義するメモリを有さず、前記グラフィックサブシステムは、ビデオフレームをレンダリングし、前記ビデオフレームを前記周辺相互接続バス経由でフレームバッファに転送するように動作可能である。
【００２０】
本発明の別の態様によれば、第１の画像を第１のディスプレイに、第２の画像を第２のディスプレイに、それぞれ描画するように、第１のグラフィックアダプタを動作させる方法が提供される。前記第２のディスプレイは、第２のグラフィックアダプタのディスプレイインタフェースと相互接続されている。前記方法は、前記第１のグラフィックプロセッサと通信しているメモリ内に前記第１の画像と前記第２の画像とをレンダリングするステップと、前記第２の画像を前記第２のグラフィックアダプタのフレームバッファに転送するステップと、前記第２のグラフィックアダプタの前記フレームバッファから前記第２のディスプレイに、前記第２の画像を表示するように、前記第２のグラフィックアダプタの前記第２のディスプレイインタフェースをプログラムするステップと、を有する。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態の例示的なコンピューティングデバイスの簡略ブロック図。
【図２】図１のコンピューティングデバイスのソフトウェアの簡略論理ブロック図。
【図３】図１のコンピューティングデバイスの一部の簡略ブロック図。
【図４】図１のコンピューティングデバイスの一部の別の模式ブロック図。
【図５Ａ】本発明の実施形態の例示的な、図１のコンピューティングデバイスで実行されるステップを示すフローチャート。
【図５Ｂ】図５Ａのステップの、図１のデバイスの部品への効果を示す図。
【図６Ａ】本発明の実施形態の例示的な、図１のコンピューティングデバイスで実行されるステップを示すフローチャート。
【図６Ｂ】図６Ａのステップの、図１のデバイスの部品への効果を示す図。
【図６Ｃ】図６Ａのステップの、図１のデバイスの部品への効果を示す図。
【図７】本発明の別の実施形態の例示的な、図１のコンピューティングデバイスで実行されるステップを示すフローチャート。
【図８】本発明の別の実施形態の例示的な、図１のコンピューティングデバイスで実行されるステップを示すフローチャート。
【図９】本発明の別の実施形態の例示的なコンピューティングデバイスの一部の別の部分簡略ブロック図。
【図１０】本発明の実施形態の例示的な、図９のデバイスのソフトウェアによって実行されるステップを示すフローチャート。
【図１１Ａ】図９のデバイスの動作を示す簡略ブロック図。
【図１１Ｂ】図９のデバイスの動作を示す簡略ブロック図。
【図１２】本発明の別の実施形態の例示的なコンピューティングデバイスの一部の別の簡略模式ブロック図。
【発明を実施するための形態】
【００２２】
本発明のほかの態様および特徴は、添付の図面を参照して、以下の本発明の特定の実施形態の説明を検討すれば、当業者にとって明らかとなるであろう。
【００２３】
図面において、本発明の実施形態を、例示のみを目的として図示する。
【００２４】
図１は、本発明の実施形態の例示的なコンピューティングデバイスの簡略模式ブロック図である。コンピューティングデバイス１０は、従来のインテルｘ８６アーキテクチャをベースとしている。しかし、明らかなように、本発明は、ＰｏｗｅｒＰＣ、ＡＭＤｘ８６または他のアーキテクチャを有するコンピューティングデバイスにおいても容易に実施することができる。
【００２５】
コンピューティングデバイス１０は、プロセッサ１２を有し、プロセッサ１２は一体型インタフェース回路１４，２０を介してシステムメモリ１６および周辺機器と相互接続されている。
【００２６】
例示的なコンピューティングデバイス１０のプロセッサ１２は、従来の中央処理ユニットであり、例えばインテル（登録商標）ｘ８６ファミリのマイクロプロセッサと互換のマイクロプロセッサなどである。
【００２７】
一体型インタフェース回路１４と２０は、それぞれ、ノースブリッジ、サウスブリッジと呼ばれることが多く、プロセッサ１２に対して、周辺機器およびメモリにインタフェースを行う。図に示すように、ノースブリッジ１４は、プロセッサ１２、メモリ１６、高速相互接続バス２２経由で複数の拡張スロット１８、およびサウスブリッジ２０を相互接続している。サウスブリッジ２０は、低速の周辺機器およびインターコネクトを相互接続している。これには、例えば、統合ＩＤＥ／ＳＡＴＡポート２４経由のディスクドライブ、統合ユニバーサルシリアルバス（ＵＳＢ）ポート２６経由のユニバーサルシリアルバスデバイスや、例えば、公知のＰＣＩまたはＩＳＡ規格に準拠した、低速相互接続バス２８経由の他の周辺機器がある。サウスブリッジ２０は、一体化音声部品３０、ネットワークインタフェース（図示せず）などを含んでもよい。
【００２８】
例示的な相互接続バス２２は、ギガバイト／秒の範囲の帯域幅を有するＰＣＩエクスプレス（ＰＣＩｅ）バスであり、この帯域幅でのデータ転送の読み出しおよび書き込みに対応している。例えば、現在のＰＣＩｅバスの速度により、最大２６６ＭＨｚまたは５３３ＭＨｚの速度での双方向データ転送が可能となり、最大２．１ギガバイト／秒または４．２ギガバイト／秒のデータ速度が可能となる。
【００２９】
図の実施形態では、ノースブリッジ１４は、コンピューティングデバイス１０を、モニタ、ＬＣＤパネル、テレビなどの形態の第１のディスプレイ３２と相互接続するために適した一体型グラフィックアダプタ３４を更に備える。
【００３０】
下記で詳細に説明するように、相互接続バス２２経由で相互接続される追加のグラフィックアダプタ５２が、例えば、相互接続バス２２上の拡張スロット１８内の周辺拡張カード５０の一部を構成しており、更にコンピューティングデバイス１０の一部も構成している。
【００３１】
図に示した実施形態では、コンピューティングデバイス１０は、メモリ１６に記憶されているソフトウェアを実行する。図２に示すように、例示的なソフトウェア１００には、オペレーションシステム１０２、グラフィックライブラリ１０４およびアプリケーションソフトウェア１０６が含まれ、メモリ１６に記憶されている。代表的なオペレーティングシステムとしては、Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ、Ｗｉｎｄｏｗｓ  ＸＰ、Ｗｉｎｄｏｗｓ  ＮＴ  ４．０、Ｗｉｎｄｏｗｓ  ＭＥ、Ｗｉｎｄｏｗｓ  ９８、Ｗｉｎｄｏｗｓ  ２０００、Ｗｉｎｄｏｗｓ  ９５またはＬｉｎｕｘオペレーティングシステムが挙げられる。代表的なグラフィックライブラリとしては、Ｍｉｃｒｏｓｏｆｔ  ＤｉｒｅｃｔＸライブラリやＯｐｅｎＧＬライブラリが挙げられる。コンピュータメモリ１６（図１）と、相互接続されたディスクドライブ（図示せず）とは、ランダムアクセスメモリ、リードオンリーメモリおよびディスクストレージメモリの適した組み合わせを有し、これは、本発明の実施形態の例示的な方法によりデバイス１０を適合させる、オペレーティングシステムとグラフィックアダプタドライバプログラムを記憶および実行するためにデバイス１０によって使用される。例示的なソフトウェア１００（図２）は、例えば、リードオンリーメモリに記憶されるか、またはＩＤＥ／ＳＡＴＡポート２４と通信しているディスクドライブ等の外部周辺機器からロードされうる。コンピュータ可読媒体２７は、光学記憶媒体、磁気ディスク、テープ、ＲＯＭカートリッジなどであってもよい。
【００３２】
グラフィックライブラリ１０４またはオペレーティングシステム１０２には、グラフィックアダプタ３４，５２との下位レベルの通信に使用されるグラフィックドライバ１０８が更に含まれる。ソフトウェアは階層構造を有しており、上位レベルのレイヤが、特定の機能を提供するために下位レイヤを使用する。アプリケーションは、二次元または三次元のグラフィックをレンダリングするために、オペレーティングシステム１０２とグラフィックライブラリ１０４を使用しうる。この文脈において、「レンダリング」とは、描画またはその他の表現のためにグラフィック画像を生成することを意味し、例えば、ポリゴンのレンダリング、レイトレイシング、画像のデコーディング、ライン描画などが含まれる。明らかなように、本発明の実施形態の例示的なソフトウェアは、グラフィックライブラリ１０４および／またはドライバ１０８の一部を構成しうる。ここに示す実施形態では、例示的なソフトウェアは、ＯｐｅｎＧＬライブラリおよび関連するドライバの一部を構成しうる。ＯｐｅｎＧＬについては、「Ｔｈｅ  Ｏｆｆｉｃｉａｌ  Ｇｕｉｄｅ  ｔｏ  Ｌｅａｒｎｉｎｇ  ＯｐｅｎＧＬ、第１．１版」に詳しく記載されており、その内容をここに参照により援用する。しかし、当業者は、本発明の実施形態の例示的な方法は、Ｍｉｃｒｏｓｏｆｔ  Ｄｉｒｅｃｔ３Ｄライブラリ、カスタムライブラリまたはルーチンを使用しないアプリケーション（ゲームなど）、あるいは他の任意の三次元アプリケーションまたはライブラリの一部を構成しうることを認めるであろう。
【００３３】
一体型グラフィックアダプタ３４を示す例示的なコンピューティングデバイス１０（および特にノースブリッジ１４）の一部の更に詳しい簡略ブロック図が、図３に示される。図に示すように、ノースブリッジ１４は、高速バスインタフェース３６およびメモリコントローラ３８を有し、ブリッジ１４を、相互接続バス２２とシステムメモリ１６とを相互接続している。ノースブリッジ１４は、一体型グラフィックアダプタ３４を更に有し、一体型グラフィックアダプタ３４は、グラフィックプロセッサ４０、コマンドプロセッサ４２およびディスプレイインタフェース４４を有する。
【００３４】
グラフィックプロセッサ４０は、システムメモリ１６内に割り当てられるフレームバッファ４６に、三次元画像をレンダリング可能な三次元（３Ｄ）グラフィックプロセッサの形態をとってもよく、グラフィックの高速レンダリングのために複数のパイプラインとパイプラインステージを有しうる。
【００３５】
通常、シングルモニタ動作では、コマンドが、コマンドプロセッサ４２によって従来の方法でグラフィックプロセッサ４０に渡される。例えば、コマンドプロセッサ４２は、メモリ１６内にコマンドキュー４７を定義するために使用するレジスタを備えうる。アプリケーションソフトウェア１０６またはオペレーティングシステム１０２は、ライブラリ１０４を使用してグラフィック画像をレンダリングする。ドライバソフトウェア１０８は、グラフィックプロセッサ固有のコマンドを生成して、コマンドキュー４７にこのコマンドをキューイングする一方、キューの終点を変更するためにコマンドプロセッサ４２のレジスタも更新する。グラフィックプロセッサ４２は、とりわけ、フレームバッファ４６にレンダリング画像をレンダリングするために、キューイングされたコマンドを、非同期でパイプライン方式で処理する。グラフィックプロセッサ４０がキュー内の次のコマンドを処理可能な場合、コマンドプロセッサ４２に信号を供給し、これを受けて、コマンドプロセッサ４２は、キュー４７にある次のコマンドを取り出し、コマンドプロセッサ４２のレジスタのキューポインタを進める。
【００３６】
ディスプレイインタフェース４４は、メモリコントローラ３８経由でフレームバッファ４６をサンプリングし、テレビ、モニタなどの形態のディスプレイ３２（図１）等のビデオデバイスに１つ以上のビデオ画像を表示するために、ＶＧＡポート、コンポジットビデオポート、ＤＶＩポート、ＨＤＭＩ、ＤｉｓｐｌａｙＰｏｒｔなどの形態で、１つ以上のビデオ出力ポート４８に画像を提示する。このようにして、フレームバッファ４６内の、グラフィックプロセッサ４０によってレンダリングされる画像が提示されうる。
【００３７】
理解されるように、ディスプレイインタフェース４４は、バッファ内のデータをディスプレイ装置に表示するために変換するのに適したインタフェースであれば、どのようなものでもよい。例えば、ディスプレイインタフェース４４は、ＲＡＭＤＡＣの形態をとりうる。ディスプレイインタフェース４４は、通常、例えば複数のレジスタによってプログラム可能であり、これにより、ドライバソフトウェア１０８または同様のソフトウェアまたはグラフィックプロセッサ４０が、そのディスプレイ出力を提示するために、メモリ１６内に先頭アドレスを設定可能となる。同様に、インタフェース４４のピクセル深度（すなわちピクセル当たりのビット数）とスクリーン解像度も、通常はプログラム可能である。
【００３８】
理解されるように、メモリ１６内に１つのフレームバッファ４６を割り当てる代わりに、２つのフレームバッファが割り当てられてもよい。この２つのバッファは、レンダリングされるグラフィックをよりスムーズに表現するために交互に使用されうる。ディスプレイインタフェース４４は、いつの時点でも、２つのバッファの一方の内容しか表示しない。表示中のバッファは、通常「フロントバッファ」と呼ばれる。グラフィックプロセッサ４０は、ディスプレイインタフェース４４によって現在表示されていないフレームバッファである、いわゆる「バックバッファ」に表示するために画像をレンダリングする。フレームのレンダリングが完了すると、フロントバッファとバックバッファが反転されて、ディスプレイインタフェース４４が、バックバッファを提示するようにプログラムされる。このようにして、グラフィックプロセッサ４０によってレンダリングされる逐次的なフレーム間の遷移がスムーズに表示されうる。
【００３９】
特に、アダプタ３４によって使用されるレジスタおよびフレームバッファメモリ４６は全て、グローバルなメモリ空間内のアドレスにマップされている。
【００４０】
しかし、本発明の例示的なコンピュータデバイス１０は、図１に示すように、ノースブリッジ１４と通信している高速相互接続バス２２上の拡張スロット経由でデバイス１０に挿入されうる周辺拡張カード５０に形成されているグラフィックアダプタ５２を更に有する。ノースブリッジ１４に相互接続されているグラフィックアダプタ５２が、図４に模式的に概略的に示されている。図に示すように、グラフィックアダプタ５２は、グラフィックプロセッサ５４、ビデオメモリ５６、コマンドプロセッサ５８、メモリコントローラ６０、およびディスプレイインタフェース６２を有する。１つ以上のポート６４，６６により、ディスプレイ６８（図１）などの１台以上のディスプレイ装置とアダプタ５２を相互接続することができる。
【００４１】
コマンドプロセッサ５８はコマンドプロセッサ４２と、ディスプレイインタフェース６２はディスプレイインタフェース４４と、それぞれ全く同様に機能する。グラフィックプロセッサ５４は、通常動作モードにおいて、グラフィックプロセッサ４０と全く同様に動作する。グラフィックアダプタ５２は、自身のメモリ５６と、メモリ５６およびシステムメモリ１６へのアクセスを提供するメモリコントローラ６０とを有する。ローカルメモリ５６は、なかでも、グラフィックプロセッサ５４によって使用され、フレームバッファとして機能しうる、グラフィックアダプタ５２用の１つ以上のバッファ７０を保持するために使用される。グラフィックプロセッサ５４用のコマンドキュー５７も、システムメモリ１６内に作成される。
【００４２】
この場合も、ローカルメモリ５６は、メモリコントローラ６０を介して、グローバルシステムメモリ空間内のアドレスでアドレッシング可能である。同様に、コマンドプロセッサ５４およびディスプレイインタフェース６２によって使用されるレジスタは、グローバルアドレス空間内のアドレスでアドレッシング可能である。上で説明したように、アダプタ３４によって使用されるレジスタおよびフレームバッファ４６はグローバルメモリ空間にマップされる。このため、コマンドプロセッサ５８とグラフィックプロセッサ５４は、ディスプレイインタフェース４４とコマンドプロセッサ４２によって使用されるフレームバッファ４６およびレジスタに書き込むことができる。
【００４３】
また、グラフィックプロセッサ５４は、メモリコントローラ６０と連動して、メモリアドレスにおいて、システムメモリ１６およびアダプタメモリ５６との間でデータを転送するために、ブロック転送操作を実行するように動作可能である。
【００４４】
経済的な一体化部品を提供するために、一体型グラフィックアダプタ３４は機能が限定されている。例えば、一体型グラフィックコントローラの解像度、三次元グラフィック機能などは、比較的制限されている。このため、一体型グラフィックアダプタ３４は、通常、グラフィックアダプタ５２よりもグラフィック処理能力が格段に低い。例えば、アダプタ３４は、アダプタ５２よりも動作が低速であったり、機能が限られていたりなどである。
【００４５】
ここで、一体型アダプタ３４またはアダプタ５２は、単独で、ポート４８などの複数のポートを介して、複数台の物理的ディスプレイ装置の相互接続に対応しても、対応していなくてもよい。しかし、各アダプタは、少なくとも１台の物理的ディスプレイと相互接続されうる。このため、本発明の実施形態の例示では、メモリ１６にロードされたアダプタドライバソフトウェア１０８が、グラフィックアダプタ５２を、ディスプレイ３２と６８の両方で提示するグラフィックをレンダリングするマスタ（または第１の）グラフィックアダプタとして動作させ、グラフィックアダプタ３４を、第２またはスレーブアダプタとして動作させる。
【００４６】
明らかなように、このマスタ／スレーブ動作モードにおいては、一体型グラフィックアダプタ３４が実質的に無効にされる。しかし、オンボードグラフィックアダプタ３４（特にディスプレイインタフェース４４）の部品を、相互接続されたモニタや他のディスプレイ装置を駆動するために使用することができる。このため、カード５０が、複数のディスプレイポートおよびディスプレイドライバを有している必要はない。この代りに、ディスプレイインタフェース４４とそのポート４８を、カード５０によって駆動されるディスプレイ６８またはディスプレイに加えて、少なくとも１台のモニタまたはディスプレイ３２を駆動するために使用することができる。アダプタ５２が複数のポート（ポート６４，６６など）を有する場合、プロセッサ５２が、これらの複数のポートを介して提示するための画像を付加的にレンダリングしてもよい。当然、ドライバソフトウェア１０８は、上記のように、アダプタ３４を、その従来の動作モードで動作させてもよい。アダプタ３４（このためアダプタ５２）の動作モードの選択は、アプリケーションソフトウェア１０６によって行われるか、またはアプリケーションソフトウェア１０６を介して行われうる。
【００４７】
詳細には、図４に模式的に示すように、本発明の実施形態の例示では、マスタ／スレーブ動作モードにおいて、メモリ１６内のドライバソフトウェア１０８が、アダプタ５２のメモリ５６内に、アクティブフレームバッファ７０とセカンダリアダプタバッファ７２を割り当てる。アクティブフレームバッファ７０は、アダプタ５２用の従来のフレームバッファとして機能し、このため、アダプタ５２のディスプレイ６８に表示するためのフレームを記憶する。このように、グラフィックプロセッサ５４は、従来の方法で、メモリ５６内のアクティブフレームバッファ７０に、二次元または三次元のグラフィックをレンダリングする。カード５０のディスプレイインタフェース６２は、相互接続されたモニタまたはディスプレイ装置に表示させるために、アクティブフレームバッファ７０の内容を変換する。任意選択で、前述のように、アクティブフレームバッファ７０の代りに、フロントバッファとリアバッファが使用されてもよい。
【００４８】
グラフィックプロセッサ５４は、更に、セカンダリアダプタフレームバッファ７２に、ディスプレイ装置３２に表示させるための画像をレンダリングする。セカンダリアダプタフレームバッファ７２へのフレームのレンダリングが終了すると、下記で詳細に説明するように、セカンダリアダプタフレームバッファ７２の内容が、グラフィックアダプタ３４のディスプレイインタフェース４４によって提示するために、フレームバッファ４６から転送される。
【００４９】
第１実施形態では、メモリ１６内のグラフィックアダプタドライバソフトウェア１０８が、図５Ａに示したステップＳ５００を実行する。詳細には、ステップＳ５０２において、ドライバソフトウェア１０８は、メモリ５６のセカンダリアダプタバッファ７２をレンダリングするために、グラフィックプロセッサ５４宛のコマンドを生成する。上で説明したように、コマンドがキュー４７にキューイングされるのと全く同じ方法で、これらのコマンドがアダプタ５２のコマンドキュー５７にキューイングされ、グラフィックプロセッサ５４によって実行される。フレームがレンダリングされると、ドライバソフトウェア１０８は更に、１つ以上のコマンドを生成し、この結果、ステップＳ５０４において、プロセッサ５４は、メモリ５６内のセカンダリアダプタフレームバッファ７２の内容を、グラフィックアダプタ３４用のフレームバッファ４６として割り当てられたメモリ１６の当該領域に、ビットブロック転送（ＢＩＴＢＬＴ）する。
【００５０】
これに対し、グラフィックアダプタ３４のディスプレイインタフェース４４は、ポート４８において相互接続されたモニタまたはディスプレイに、自身のフレームバッファ４６の内容を表示するように事前にプログラムされている。このようにして、ポート４８とポート６４によって相互接続されたディスプレイ３２と６８に表示される画像が、グラフィックプロセッサ５４によってレンダリングまたは描画され、有利である。バッファ７２およびフレームバッファ４６へのステップＳ５０４の効果が図５Ｂに示される。
【００５１】
第２実施態様では、図６Ａに示したステップＳ６００が実行される。まず、フロントフレームバッファとバックフレームバッファが、アダプタ５２のメモリ１６内に割り当てられる。便宜上、これらを、バッファ４６ａ，４６ｂと呼び、図６Ｂに示す。この場合も、ステップＳ６０２において、プロセッサ５４は、ステップＳ５０２を参照して上で説明したように、ディスプレイインタフェース４４によって提示させる任意のフレームを、メモリ５６のセカンダリアダプタフレームバッファ７２にレンダリングする。
【００５２】
デバイス３２に表示するためのフレームのレンダリングが終了すると、ステップＳ６０４において、ドライバソフトウェア１０８は、メモリ５６内のセカンダリアダプタフレームバッファ７２の内容を、グラフィックアダプタ３４用のメモリ１６内の現在のバックバッファにビットブロック転送（ＢＩＴＢＬＴ）するように、グラフィックプロセッサ５４をプログラムする。ＢＩＴＢＬＴが終了すると、ステップＳ６０６において、ドライバは、アダプタ３４のバックバッファとフロントバッファを反転させる（すなわち、バックバッファをフロントバッファとして使用する）ように、ディスプレイインタフェース４４のレジスタをプログラムするように、プロセッサ５４をプログラムする。このことは、ディスプレイインタフェース４４がデータを提示するために使用する開始アドレスを指定するように、ディスプレイインタフェース４４のレジスタを直接再プログラムすることによって行うことができる。これに対し、グラフィックアダプタ３４のディスプレイインタフェース４４は、ポート４８において相互接続されたモニタ（すなわちディスプレイ６８）に、ディスプレイインタフェース４４のバッファの内容を提示する。前のフロントバッファが、今度はアダプタ３４用のバックバッファとして使用され、ステップＳ６０４において、ディスプレイ３２に表示させるためにプロセッサ５４によってレンダリングされる次のフレームが、最初にこのバックバッファから転送される。ドライバソフトウェア１０８は、当然、各バッファ４６ａ，４６ｂの開始位置と、フロントバッファおよびバックバッファとしての状態を保持している。バッファ４６ａ，４６ｂへのステップＳ６０４，Ｓ６０６の効果が、図６Ｂ、図６Ｃに模式的に示される。
【００５３】
同期を行わない場合には、１つのバッファ４６の使用、あるいはアダプタ３４のディスプレイインタフェース４４の直接のプログラミングにより、目に見えるティアリングが発生しうる。すなわち、インタフェース４４によるフレーム出力の途中でディスプレイパラメータが変更されるため、ディスプレイインタフェース４４のレジスタが再プログラムされる垂直帰線消去期間以外の任意の時点でも、ティアリングが見えてしまう。
【００５４】
このため、更に別の第３実施形態では、図７に示したステップＳ７００が実行されうる。この場合も、最初に、アダプタ３４によって使用されるメモリ１６内に、フロントリアバッファ４６ａとリアバッファ４６ｂが割り当てられる。ステップＳ５０２，Ｓ６０２を参照して上で説明したように、この場合も、プロセッサ５４は、ローカルメモリ５６のバッファ７２に、装置３２に表示させるための画像をレンダリングする。
【００５５】
ディスプレイ３２に表示させるためのフレームのレンダリングが完了すると、ステップＳ７０４において、メモリ１６内のドライバソフトウェア１０８は、メモリ５６内のセカンダリアダプタフレームバッファ７２の内容を、グラフィックアダプタ３４のメモリ１６内の現在のバックバッファにビットブロック転送（ＢＩＴＢＬＴ）するように、グラフィックプロセッサ５４をプログラムする。ステップＳ７０６において、ドライバソフトウェア１０８は、更に、アダプタ３４のコマンドキュー４７に、フロントバッファとバックバッファを反転させるためのコマンドをキューイングする。しかし、コマンドプロセッサ４２のレジスタが、コマンドキュー４７内の未処理のコマンドを反映させるように、ドライバソフトウェア１０８によって更新されない。その代わりに、ステップＳ７０８において、ドライバソフトウェア１０８は、ステップＳ７０６で開始されたビットブロック転送の終了後に、コマンドプロセッサ４２のコマンドキューレジスタを更新するためのコマンドを、グラフィックプロセッサ５４に提供する。これにより、バックバッファをフロントバッファに戻させるための命令が、コマンドプロセッサ４２によってプロセッサ４０に提供される。これを受けて、グラフィックプロセッサ４０は、（すなわち、ポート４８において相互接続されたモニタまたはディスプレイに前のバックバッファの内容を提示するように、ディスプレイインタフェース４４のレジスタを再プログラムすることによって）、キューイングされた、アダプタ３４のバックバッファとフロントバッファを反転させるための命令を実行する。
【００５６】
更に別の第４実施態様では、図８に示したステップＳ８００が実行される。この場合も、まず、アダプタ３４のメモリ１６内に、フロントバッファとバックバッファが割り当てられる。この場合も、プロセッサ５４は、前述のように、ローカルメモリ５６のバッファ７２に、ディスプレイ３２用の画像をレンダリングする。
【００５７】
ドライバソフトウェア１０８は、更に、グラフィックプロセッサ４０に、メモリ５６内のセカンダリフレームバッファ７２の内容を、グラフィックアダプタ３４用の現在のバックフレームバッファとして割り当てられたシステムメモリ１６の当該領域にビットブロック転送（ＢＩＴＢＬＴ）させるコマンドを、アダプタ３４のキュー４７にキューイングする。また、ドライバソフトウェア１０８は、リアバッファをフロントバッファとして使用するようにディスプレイインタフェース４４をプログラムすることにより、グラフィックプロセッサ４０に、アダプタ３４のフロントバッファとバックバッファを反転させるコマンドを、キュー４７にキューイングする。しかし、フレームがバッファ７２にレンダリングされるまで、キューポインタを定義しているコマンドプロセッサ４２のレジスタは更新されない。
【００５８】
このため、ディスプレイ３２用のフレームのレンダリングの終了時に、グラフィックプロセッサ５４は、コマンドプロセッサ４２用のキューポインタを定義しているコマンドレジスタを更新させる命令を提供して、アダプタ３４のコマンドキュー内の２つの未処理のコマンドを反映させる。これを受けて、グラフィックプロセッサ４０は、バッファ７２の内容をバックバッファにビットブロック転送し、バックバッファとフロントバッファを反転させるためにキューイングされた命令を（すなわち、ポート４８において相互接続されたモニタまたはディスプレイに前のバックバッファの内容を提示するために、ディスプレイインタフェース４４のレジスタを再プログラムすることにより）実行する。
【００５９】
ここで理解されるように、上に記載した実施形態により、マスタグラフィックプロセッサが、複数の独立したフレームバッファへの二次元または三次元のグラフィック画像の描画の責任を負うことが可能となる。スレーブグラフィックアダプタは、１つのフレームバッファに作成されたディスプレイ画像に使用されうる。追加ディスプレイを駆動するために必要なデバイスの電子回路とポートは、スレーブグラフィックアダプタ３４によって提供されうる。このようにして、スレーブグラフィックコントローラに設けられた電子回路が、複数台のディスプレイの駆動を可能にするために効率的に使用されうる。
【００６０】
バッファ７０，７２を使用して１つの面を定義することができ、この面に、アプリケーションソフトウェア１０６が、グラフィックアダプタ５２，３４と相互接続された２台以上のディスプレイ４８，６４にまたがって表示させる１つのグラフィック画像をレンダリングすることができ、有利である。したがって、ドライバソフトウェア１０８は、利用可能なスクリーンサイズをアプリケーションソフトウェア１０６に報告し、この値はバッファ７０とバッファ７２のサイズと等しい。このため、バッファ７０がｍ．ｓｕｂ．１×ｎの解像度を有し、バッファ７２がｍ．ｓｕｂ．２×ｎの解像度を有する場合、ドライバソフトウェア１０８は、アプリケーションソフトウェア１０６のアプリケーションに、利用可能なスクリーンサイズとして（ｍ．ｓｕｂ．１＋ｍ．ｓｕｂ．２）×ｎを報告しうる。バッファ７０，７２が、メモリ５６内で隣接する（ｍ．ｓｕｂ．１＋ｍ．ｓｕｂ．２）×ｎピクセル位置を占める場合には、ドライバソフトウェア１０８によるレンダリングが簡単になる。アプリケーションソフトウェア１０６は、ドライバソフトウェア１０８を使用して、グラフィックプロセッサ４０に、バッファ７０，７２によって定義される面を構成している、（ｍ．ｓｕｂ．１＋ｍ．ｓｕｂ．２）×ｎピクセルの解像度を有する大きな画像をレンダリングさせる。このため、バッファ７０，７２は、画像のペアを記憶し、このペアの各画像が、アプリケーションによってレンダリングされる大きな画像の一部を構成する。大きな画像のそれぞれのレンダリングが終了すると、ドライバソフトウェア１０８は、上で説明したステップＳ５００、Ｓ６００、Ｓ７００またはＳ８００に従って、ディスプレイ３２に表示させるために、バッファ７２内の画像をフレームバッファ４６に転送しうる。バッファ７０内の画像は、通常の方法でディスプレイ６８に表示されうる。エンドユーザは、ディスプレイ３２と６８を並べて観ており、アプリケーション１０６によってレンダリングされる大きな画像を認識する。理解されるように、ゲームの形態のアプリケーション１０６は、変更を必要とせずに、マルチディスプレイの利点を享受しうる。
【００６１】
ディスプレイ６８用にフロントバッファとバックバッファが使用される場合、ディスプレイ３２に表示させる面部分を保持しているメモリ５６内のバッファが、ディスプレイ６８に表示させる面部分をレンダリング中であるバッファの隣に位置することを保証するために、バッファ７２の代わりに、２つの異なるバッファが割り当てられて使用されてもよいしたがって、Ｓ６０２、Ｓ６０４、Ｓ７０２、Ｓ７０４またはステップＳ８０２、Ｓ７０４は、完成直後の画像を保持しているバッファを、バックバッファ４６ａまたは４６ｂにビットブロック転送するように変更されてもよい。既存のアプリケーションソフトウェア１０６を変更する必要がないため、有利である。上記に代えて、アプリケーションソフトウェアが、報告された大きなスクリーンサイズを単に使用してもよい。ドライバソフトウェア１０８は、複数台のディスプレイにまたがって表面をレンダリングさせる。
【００６２】
ここで理解されるように、図に示した実施形態は、スレーブグラフィックアダプタとして一体型グラフィックコントローラを使用するが、スレーブグラフィックアダプタが、単に、グラフィックフレームをスレーブフレームバッファに転送させるのに十分な帯域幅のバス経由で、グラフィックアダプタ５２と通信する別のグラフィックアダプタであってもよい。このため、スレーブグラフィックプロセッサは、別のＰＣＩｅ対応拡張カードとして作製されてもよい。このため、例えば、グラフィックカードがアップグレードされた場合も、古い拡張カードは、相互接続されたディスプレイを駆動可能であるため、引き続き使用することができる。同様に、相互接続バスは、ＰＣＩｅ相互接続バスでなくてもよく、ディスプレイインタフェース４４が使用するリフレッシュレートに等しい速度で、フレームバッファ間でデータを転送させる帯域幅を有する他の任意の適切なバスであってもよい。同様に、フレームバッファ４６（およびフロントバッファおよびバックバッファ４６ａ，４６ｂ）が、システムメモリ１６内に作成されると説明したが、アダプタ３４に対してメモリなローカルの一部として、容易に作成されてもよい。
【００６３】
本発明の更に別の代替の実施形態では、バス２２を介したレンダリングにより、高速バス２２によって相互接続されたグラフィックアダプタ（またはサブシステム）が、一体型アダプタ／サブシステムの代理となることが可能となってもよい。
【００６４】
この点において、図９は、本発明の別の実施形態の代表的なコンピューティングデバイス１０’の一部の例の代表的な簡略ブロック図である。コンピューティングデバイス１０’は、米国特許出願第１１／４２１，００５号明細書に詳細に記載されている。
【００６５】
しかし簡単に説明すると、デバイス１０’は２つのグラフィックサブシステム３０’，４０’を備える。グラフィックサブシステム３０’は、グラフィックエンジン／プロセッサ３２’、メモリコントローラ７２’、ディスプレイインタフェース７４’およびバスインタフェース７８’を備える。第２のグラフィックサブシステム４０’は、ＰＣＩｅバスなどの高速バス２２’経由でグラフィックサブシステム３０’と通信している。グラフィックサブシステム４０’は、自身のグラフィックエンジン／プロセッサ４２’、メモリコントローラ５２’、ディスプレイインタフェース５４’を備える。グラフィックサブシステム４０’は更にグラフィックメモリ５０’と通信している。明らかなように、サブシステム４０’は、バス２２’を介してメモリ１４’にグラフィックをレンダリングするように適合されている。
【００６６】
デバイス１０’はラップトップまたは小型コンピューティングデバイスの形態のポータブルコンピューティングデバイスとして好適に形成することができる。このように、１つのハウジングがＤＣ電源、ディスプレイ２６’および上述のマザーボードおよび構成要素を収容してもよい。第２のグラフィックサブシステム４０’は、コンピューティングデバイスの他の部分を収容する１つのハウジングに追加されても、デバイス１０’が物理的に相互接続された時にデバイス１０’の一部のみを構成するドッキングステーションの一部を構成してもよい。
【００６７】
デバイス１０’は、少なくとも２つの電力消費モード、すなわち、高電力消費モードと低電力消費モードで動作することができる。図に示した実施形態では、デバイス１０’の高電力モードとは、デバイス１０’がＡＣ（主）電源に接続された電源によって給電されている時に入るモードであり、低電力消費モードとは、デバイス１０’が１つ以上のバッテリ、燃料電池などを使用するＤＣ電源によって給電されている時に入るモードでもよい。別例では、電力消費モードが、例えばユーザの好み、実行中のソフトウェアアプリケーションのタイプ、バッテリレベルなどに基づき、ユーザによって選択されるか、ソフトウェアによって制御されるか、または別の方法で選択されてもよい。
【００６８】
デバイス１０’のソフトウェア制御動作の構成は、米国特許出願第１１／４２１，００５号明細書に開示されており、上記のソフトウェア１００と類似する点を有する。
【００６９】
デバイス１０’としてのデバイス１０’の動作を制御しているソフトウェアの一部は、高電力消費状態と低電力消費状態の間を遷移する。詳細には、図１０は、デバイス１０’のシステムメモリ内部のソフトウェアの制御下で中央処理装置１２’（図１のプロセッサ１２など）によって実行されうる本発明の実施形態の例示的なソフトウェアブロックＳ８００’を示す。ブロックＳ８００’はデバイス１０’が状態変化を受けるたびに実行され、これに対して、サブシステム３０’，４０’を相応に構成する必要がある。図に示すように、ブロックＳ８０２’において、ソフトウェアは、デバイス１０’が高電力消費モードまたは低電力消費モードのいずれを取るべきかを判定する。
【００７０】
デバイス１０’が高電力消費モードを再開（またはこれに移行）すべき場合、ブロックＳ８０４’〜Ｓ８１０’が実行される。ブロックＳ８０４において、グラフィックサブシステム４０’は、まだフル動作（高電力消費）モードに設定されていなければ、高電力消費モードに設定される。このことは、グラフィックサブシステム４０’を制御するドライバを介して、電力コントローラ６０’に適切な信号を供給することによって実行することができる。次に、ブロックＳ８０６，Ｓ８０８において、グラフィックサブシステム４０’が有効にされる。この場合も、このことは、ブロックＳ８０４において、グラフィックサブシステム３０’に関連する、相互接続されたディスプレイを論理的に無効にし、ブロックＳ８０８において、グラフィックサブシステム４０’と接続されたディスプレイを論理的に有効にすることによって実行することができる。この場合も、ブロックＳ８０６，Ｓ８０８は、米国特許第１１／４２１，００５号明細書に記載のＥｎｕｍＤｉｓｐｌａｙＤｅｖｉｃｅｓ（）コールおよびＣｈａｎｇｅＤｉｓｐｌａｙＳｅｔｔｉｎｇｓＥＸ（）コールなどの適切なオペレーティングシステムＡＰＩコールによってか、またはハードウェアとの直接通信によって実行することができる。
【００７１】
特に言えば、グラフィックサブシステム４０’に接続されている物理的ディスプレイは存在しない。グラフィックサブシステム４０’の動作を制御しているドライバソフトウェアは、ステップＳ８１０’において、関連するメモリ５０’内部の代わりに、グラフィックサブシステム３０’のバッファ１４’に画像をレンダリングするように構成される。（例えば、ＰＣＩｅバスとして実施された）高速バス２２が存在している場合、このようなレンダリングが、一部には、このバスによって実現される転送速度のおかげで、バス２２’を介して可能となる。
【００７２】
このレンダリングは、バスを介してフレームバッファにプリミティブごと（primitive by primitive）に送られ、このため、バス２２’を介してレンダリングされた画像が転送されてもよい。このことは、サブシステム４０’によってアクセス可能なメモリ内にバッファ１４’を割り当て、サブシステム４０’用のドライバソフトウェアに、バッファ１４’のアドレスを提供することにより容易に行うことができる。別法として、明らかなように、フレームが１つのバッファでレンダリングされ、バス２２’を介してダイレクトメモリアクセスなどによって転送されてもよい。
【００７３】
同様に、グラフィックサブシステム３０’用のドライバは更に、グラフィックサブシステム４０’によってメモリ１４’内のフレームバッファにレンダリングされた画像を、相互接続されたディスプレイ２６’で提示するために、グラフィックサブシステム３０’のディスプレイインタフェース７４’に、メモリ１４’のフレームバッファをサンプリングさせるように構成されている。同時に、グラフィックサブシステム３０’のドライバは、グラフィックサブシステム３０’のグラフィックエンジン３２’に対し、実質的に活動停止状態またはアイドル状態に留まるように指示することができる。この動作モードは、図１１Ａに模式的に示されており、グラフィックサブシステム４０’およびグラフィックサブシステム３０’のアクティブなブロックのみが網掛けされている。
【００７４】
明らかなように、図１１Ａの実施形態では、メモリ５０’とディスプレイインタフェース５４’は使用されていない。このため、これらの機能ブロックはサブシステム４０’から削除することができ、コスト低減が可能となる。これにより得られるサブシステム４０’は、ディスプレイインタフェースを有する必要はなく、サブシステム４０’にローカルなフレームバッファを定義するメモリがないこともある。このようなグラフィックサブシステムを作成することは、サブシステム３０’によって提供される機能をサブシステム４０’が補完するように作成されうるので、有益であろう。例えば、サブシステムは、３Ｄグラフィックまたはビデオデコーディング機能を提供するグラフィックエンジン４２’を提供してもよい。グラフィックエンジン３２’はこれらの機能を搭載していなくてもよい。同時に、グラフィックエンジン３２’によって提供される２Ｄグラフィック機能を、サブシステム４０’に搭載する必要はない。消費者は、追加の機能が必要な場合にのみグラフィックサブシステム３０’を追加してもよい。
【００７５】
デバイス１０’が低電力消費モードに移行するか、このモードを再開した場合、ブロックＳ８１２’〜Ｓ８１８’が実行される。概説すると、グラフィックサブシステム４０’は、部分的または完全に無効にされて低電力消費モードに設定され、この場合も、レンダリングがグラフィックサブシステム３０’によって実行される。これを行うため、ブロックＳ８１２’において、グラフィックサブシステム３０’に関連する、相互接続されたディスプレイが有効にされ、ブロックＳ８１４’において、グラフィックサブシステム４０’と物理的に接続されたあらゆるディスプレイが論理的に無効にされる。次に、グラフィックサブシステム３０’の動作を制御するドライバソフトウェアが、グラフィックサブシステム３０’にメモリ１４’に画像をレンダリングさせるように再度構成される。ディスプレイインタフェース７４’は、ポート７８’と相互接続されたディスプレイ２６’で画像を提示するために、メモリ１４’をサンプリングし続ける。同様に、ブロックＳ８１８’において、プロセッサ１２’は最初に電力コントローラ６０’に適切な信号を供給し、グラフィックサブシステム４０’を低電力状態に設定する。最も単純な形態では、電力コントローラ（図示なし）がグラフィックサブシステム４０’への電力を遮断するか、またはグラフィックサブシステム４０’を低電力スリープモードに設定する。この場合も、この低電力消費モードでは、電圧が抑えられるか、グラフィックサブシステム４０’の全部または一部が電源切断されるか、グラフィックサブシステム４０’が使用する選択されたクロックが減速されるか、この組み合わせが行われる。詳細には、グラフィックサブシステム４０’のグラフィックエンジン４２’が、アイドル状態に留まるか、または実質的にアイドル状態に留まる（例えば低速化されるか、無効にされるか、または電源切断される）。この動作モードは、図１１Ｂに模式的に示されており、アダプタ４０’とグラフィックサブシステム３０’のアクティブな機能ブロックのみが網掛けされている。非作動状態／アイドル状態の機能ブロックは、完全に無効化されるか、または低電圧または低クロック速度で動作される。
【００７６】
任意選択で、グラフィックサブシステム３０’の一部が、グラフィックエンジン３２’の不使用時に無効にされてもよい。このことは、グラフィックサブシステム４０’が画像のレンダリングを担っている任意の時に、ＧＰＩＯまたは類似の回路によって無効にできる１つ以上のボルテージアイランド（voltage island）に、グラフィックエンジン３２’および他の構成要素を配置することによって容易に行うことができる。
【００７７】
他の変更例もまた明白であろう。例えば、図１１Ａに示す高電力モードにおいて、グラフィックサブシステム３０’とグラフィックサブシステム４０’の両方が、メモリ１４’またはメモリ５０’にレンダリングしてもよい。このようにして、２つのグラフィックサブシステム３０’，４０’が、それぞれメモリ１４’の交番フレームにレンダリングするか、またはメモリ１４’の各フレームの交番部分（例えばスキャンライン）にレンダリングして、協調して動作することができる。
【００７８】
更に別の実施形態では、上で説明したように、追加ディスプレイをグラフィックサブシステム３０’，４０’に接続して、高電力消費モードでの複数台のディスプレイの同時使用を可能にすることができる。このようにして、ディスプレイインタフェース５４’を、第２のディスプレイを駆動するために使用することができる。デバイス１０’を、低電力消費モードへの移行時に、図１１Ｂに示すように動作するように構成してもよい。
【００７９】
同様に、デバイス１０’（または１０）は、バス２２’（または２２）に接続された複数の追加のグラフィックサブシステムを有してもよく、高電力消費モードにおいては、その全てがアクティブとなり、グラフィックサブシステム３０’のディスプレイインタフェース７４’を介してグラフィックをレンダリングしてもよい。低電力消費モードへの移行時に、このグラフィックサブシステムが無効化され、グラフィックサブシステム３０’のグラフィックエンジン３２’にレンダリングが任せられうる。
【００８０】
図１２に示す更に別の実施形態では、コンピューティングデバイス１０’はダイレクトメモリアクセス（ＤＭＡ）コントローラ９０を備えてもよい。ＤＭＡコントローラ９０はデータをメモリ５０’からメモリ１４’に転送することができる。このように、デバイス１０’の高電力消費モードにおいて、グラフィックサブシステム４０’は画像をメモリ５０’にレンダリングしうる。レンダリングされたこれらの画像はその後、ＤＭＡコントローラ９０によってメモリ１４’内のフレームバッファに転送されうる。ＤＭＡコントローラ９０’は、（例えばグラフィックエンジン３２’または４２’のＤＭＡエンジンとして）グラフィックサブシステム３０’または４０’の一部を構成するか、またはコンピューティングデバイス１０’内に別の方法で配置されうる。データは、メモリ５０’からメモリ１４’に、バス２０’を介して転送されるか、または別の方法で直接転送されうる。ディスプレイインタフェース７４’は、上述のように動作を続け、レンダリングされた画像をディスプレイ２６’で提示するためにメモリ１４’のフレームバッファをサンプリングする。この場合も、高電力消費モードにある図１０のデバイス１０’のアクティブなブロックが、図１２で網掛けして図示されている。
【００８１】
当然、上記の実施形態は、例示のみを目的としており、限定を意図するものではない。本発明を実施する記載した実施形態は、形状、構成要素の配置、操作の詳細および順序がさまざまに変更される。むしろ、本発明は、請求の範囲によって規定される範囲に、このような変更の全てを含むことを意図する。
【図１】
0005529748.tif 000002
【図２】
0005529748.tif 000003
【図３】
0005529748.tif 000004
【図４】
0005529748.tif 000005
【図５Ａ】
0005529748.tif 000006
【図５Ｂ】
0005529748.tif 000007
【図６Ａ】
0005529748.tif 000008
【図６Ｂ】
0005529748.tif 000009
【図６Ｃ】
0005529748.tif 000010
【図７】
0005529748.tif 000011
【図８】
0005529748.tif 000012
【図９】
0005529748.tif 000013
【図１０】
0005529748.tif 000014
【図１１Ａ】
0005529748.tif 000015
【図１１Ｂ】
0005529748.tif 000016
【図１２】
0005529748.tif 000017