(57)【特許請求の範囲】
【請求項１】
複数のグラフィックス実行ユニットと、
複数のモニタウィンドウの各々中に、前記複数のグラフィックス実行ユニットの使用量統計値を演算するための第１のロジックと、
グラフィックスプログラミングインターフェースからのドローコールを含むグラフィックスオペレーションを検出するための第２のロジックと、
前記使用量統計値に基づいて前記複数のグラフィックス実行ユニットの第１の部分をパワーゲーティングし、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングするための第３のロジックとを備え、
前記第３のロジックは、
複数の新しいドローコールが検出された場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングし、
前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量がピーク使用量閾値を超えた場合又は前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングし、
前記複数のモニタウィンドウのうち１または複数のモニタウィンドウにおける平均使用量が平均使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、
装置。
【請求項２】
前記第３のロジックは、前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、請求項１に記載の装置。
【請求項３】
前記第３のロジックは、前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、請求項１に記載の装置。
【請求項４】
前記ピーク使用量閾値および前記平均使用量閾値は、ワークロード毎に動的に判断される、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記複数のグラフィックス実行ユニットの前記使用量統計値は、浮動小数点ユニットの使用量の統計値である、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記第３のロジックは、更に、前記複数のグラフィックス実行ユニットの第２の部分のクロック周波数を増大させつつ、前記複数のグラフィックス実行ユニットの前記第１の部分をパワーゲーティングし、
クロック周波数における前記増大は、最大電流負荷を増大させない、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記装置は、１または複数のサブコアを含むグラフィックスプロセッサであり、
前記複数のグラフィックス実行ユニットは、前記１または複数のサブコアにわたって分散される、請求項６に記載の装置。
【請求項８】
前記第３のロジックは、更に、前記１または複数のサブコアの使用量に基づいて前記１または複数のサブコアの一部をパワーゲーティングまたはアンゲーティングする、請求項６に記載の装置。
【請求項９】
前記１または複数のサブコアの前記使用量は、前記複数のグラフィックス実行ユニット、テクスチャ処理リソース、またはピクセル処理リソースの使用量を含む、請求項８に記載の装置。
【請求項１０】
前記第３のロジックは、新しいバッチバッファまたはパイプラインフラッシュの始まりを含む境界において前記１または複数のサブコアの前記一部をパワーゲーティングまたはアンゲーティングする、請求項８または９に記載の装置。
【請求項１１】
前記１または複数のサブコアを電力管理するための電力制御ユニット（ＰＣＵ）を更に備え、
前記ＰＣＵは、前記第１のロジック、前記第２のロジック、または前記第３のロジックを有する、請求項１０に記載の装置。
【請求項１２】
前記ＰＣＵは、更に、前記１または複数のサブコアの使用量および状態を相互に関係付けて複数の使用量ウィンドウを判断する、請求項１１に記載の装置。
【請求項１３】
１または複数のコアを有し、前記１または複数のコアの各々は、複数のサブコアを含み、前記複数のサブコアの各々は、複数のグラフィックス実行ユニットを含む、グラフィックスプロセッサと、
グラフィックスプログラミングインターフェースからのドローコールを含むグラフィックスオペレーションを検出し、複数のモニタウィンドウの各々中に前記複数のグラフィックス実行ユニットの使用量統計値に基づいて前記複数のグラフィックス実行ユニットの第１の部分をパワーゲーティングし、前記複数のグラフィックス実行ユニットの第２の部分をパワーゲーティングしない電力コントローラとを備え、
前記電力コントローラは、
複数の新しいドローコールが検出された場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングし、
前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量がピーク使用量閾値を超えた場合又は前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングし、
前記複数のモニタウィンドウのうち１または複数のモニタウィンドウにおける平均使用量が平均使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、
グラフィックス処理システム。
【請求項１４】
前記電力コントローラは、前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、請求項１３に記載のグラフィックス処理システム。
【請求項１５】
前記電力コントローラは、前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数のグラフィックス実行ユニットの前記第１の部分をアンゲーティングする、請求項１３に記載のグラフィックス処理システム。
【請求項１６】
前記ピーク使用量閾値および前記平均使用量閾値は、ワークロード毎に動的に判断される、請求項１３から１５のいずれか一項に記載のグラフィックス処理システム。
【請求項１７】
前記電力コントローラは、新しいバッチバッファまたはパイプラインフラッシュオペレーションを含む境界で前記複数のサブコアの前記第１の部分をパワーゲーティングする、請求項１３から１６のいずれか一項に記載のグラフィックス処理システム。
【請求項１８】
前記複数のサブコアの各々は、テクスチャ処理リソースを含み、
前記複数のサブコアの使用量は、前記複数のグラフィックス実行ユニットの使用量または前記テクスチャ処理リソースの使用量を含む、請求項１３から１７のいずれか一項に記載のグラフィックス処理システム。
【請求項１９】
前記グラフィックスプロセッサは、前記複数のサブコアの前記使用量を報告する、請求項１８に記載のグラフィックス処理システム。
【請求項２０】
前記グラフィックスプロセッサは、グラフィックスオペレーションに応答してシグナリングする、請求項１３から１９のいずれか一項に記載のグラフィックス処理システム。
【請求項２１】
多数のグラフィックスオペレーションが期間内に受信された後に、前記グラフィックスプロセッサは、シグナリングし、
前記グラフィックスオペレーションは、グラフィックスプログラミングインターフェースからのドローコールである、請求項２０に記載のグラフィックス処理システム。
【請求項２２】
複数のグラフィックスプロセッサ実行リソースをスケーリングするための方法であって、
複数のモニタウィンドウの各々中にグラフィックスプロセッサ内の複数の実行ユニットの使用量統計値を演算する段階と、
前記使用量統計値に基づいて前記複数の実行ユニットの一部をパワーゲーティングしつつ、グラフィックスプログラミングインターフェースからのドローコールについてモニタリングする段階と、
前記使用量統計値に基づいてパワーゲーティングされた前記複数の実行ユニットの少なくとも前記一部を有効にする段階と、
複数の新しいドローコールが検出された場合に、パワーゲーティングされた前記複数の実行ユニットを有効にする段階と、
前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量がピーク使用量閾値を超えた場合又は前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数の実行ユニットを有効にする段階と、
前記複数のモニタウィンドウのうち１または複数のモニタウィンドウにおける平均使用量が平均使用量閾値を超えた場合に、パワーゲーティングされた前記複数の実行ユニットを有効にする段階と、
を備える方法。
【請求項２３】
前記複数のモニタウィンドウのうち最後のモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数の実行ユニットを有効にする段階を備える、請求項２２に記載の方法。
【請求項２４】
前記複数のモニタウィンドウのうち少なくとも２つのモニタウィンドウにおけるピーク使用量が前記ピーク使用量閾値を超えた場合に、パワーゲーティングされた前記複数の実行ユニットを有効にする段階を備える、請求項２２に記載の方法。
【請求項２５】
前記ピーク使用量閾値および前記平均使用量閾値は、ワークロード毎に動的に判断される、請求項２２から２４のいずれか一項に記載の方法。
【請求項２６】
前記使用量統計値を演算する段階は、
前記複数のモニタウィンドウのための第１のタイマを規定する段階と、
前記複数のモニタウィンドウの各々中に、前記複数の実行ユニットの使用量統計値を演算する段階と、
前記第１のタイマの終了に応答して前記使用量統計値を格納する段階とを有する、請求項２２から２５のいずれか一項に記載の方法。
【請求項２７】
前記複数の実行ユニットの前記一部をパワーゲーティングする段階は、
決定ウィンドウのための第２のタイマを規定する段階と、
前記第２のタイマの終了に応答して前記使用量統計値を取得する段階と、
前記使用量統計値に基づいて前記複数の実行ユニットの前記一部をパワーゲーティングする段階とを有する、請求項２６に記載の方法。
【請求項２８】
複数のグラフィックスプロセッサリソースをスケーリングするための方法であって、
複数の使用量カウンタ、およびグラフィックスプロセッサのサブコアのグラフィックス状態を読み取る段階と、
複数のグラフィックスオペレーションのフレーム内の現在のグラフィックスオペレーションの位置を判断する段階と、
使用量が低いウィンドウ内にあり、パワーゲーティング境界上にある前記サブコアをパワーゲーティングする段階と、
使用量が低いウィンドウの終わりにあり、パワーアンゲーティング境界上にある前記サブコアをパワーアンゲーティングする段階とを備え、
前記パワーゲーティング境界および前記パワーアンゲーティング境界は、新しいバッチバッファまたはパイプラインフラッシュを含み、
前記複数のグラフィックスオペレーションの前記フレーム内の前記現在のグラフィックスオペレーションの前記位置、ならびに前のフレームの複数の基準および状態を用いて使用量が低い前記ウィンドウの前記終わりを予測する段階を更に備える、
方法。
【請求項２９】
前記複数のグラフィックスオペレーションの前記フレームを完了させる段階と、
前記フレームの複数の基準および状態を格納する段階と、
前記複数の基準および状態に基づいて次のフレームの使用量ウィンドウを予測する段階とを更に備える、請求項２８に記載の方法。
【請求項３０】
前記サブコアをパワーゲーティングする段階は、複数の実行リソース、複数のテクスチャリソース、または複数のピクセルリソースを含む複数のグラフィックスプロセッサリソースをスケーリングする、請求項２８または２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［開示の分野］
複数の実施形態は、概ね集積回路における電力管理に関し、より詳細にはグラフィックスプロセッサ上での実行ユニットの動的スケーリングに関する。
【背景技術】
【０００２】
一般に、コンピュータシステムのためのグラフィカル出力は、１または複数のグラフィックスプロセッサを用いて生成される。各グラフィックスプロセッサは、複数のグラフィックスプロセッサコアを含み得、各グラフィックスプロセッサコアは、様々なタイプのグラフィックスオペレーションを実行するべく複数のタイプのリソースを含み得る。様々なタイプのグラフィックスオペレーションは、複数のタイプのグラフィックスワークロードを使用し、これらは各々、複数のグラフィックスコア内の異なるリソースを用い得る。演算集約的なワークロードについては、グラフィックスプロセッサ実行ユニットが広範に用いられる。
【０００３】
しかし、異なる複数のグラフィックスワークロードは、異なる複数のレベルの実行ユニットを使用する。また、特定のグラフィックスワークロードは、グラフィックスワークロードを処理するときに、異なる複数のレベルの実行ユニットを経時的に使用し得る。グラフィックス実行ユニットへの電力を維持することにより、高くなる電力消費量および最大負荷電流を含む様々なコストをコンピュータシステムにもたらす。従って、コンピュータシステムは、使用量が低い時間中にアクティブな実行ユニットの数を減らすことにより利益を得ることができる。しかし、アクティブな実行ユニットの数を減らすと、グラフィックスオペレーションに利用可能な実行リソースを減らしてしまう。従って、実行ユニットをスケーリングするための既存の複数のメカニズムは、全体としてのシステム性能に害を及ぼす場合がある。
【図面の簡単な説明】
【０００４】
以下の説明は、様々な実施形態の実装の例として与えられる図示を有する図面の検討を含む。図面は、限定としてではなく例として理解されるべきである。
【図１】プロセッサが１または複数のプロセッサコアおよびグラフィックスプロセッサを有するコンピュータシステムの実施形態のブロック図である。
【図２】プロセッサが１または複数のプロセッサコア、統合メモリコントローラ、および統合グラフィックスプロセッサを有する一実施形態のブロック図である。
【図３】ディスクリートグラフィックス処理ユニットであり得るか、または複数のプロセッシングコアと統合されたグラフィックスプロセッサであり得る、グラフィックスプロセッサの一実施形態のブロック図である。
【図４】グラフィックスプロセッサ用のグラフィックス処理エンジンの実施形態のブロック図である。
【図５】グラフィックスプロセッサの別の実施形態のブロック図である。
【図６】複数の処理要素のアレイを含むスレッド実行ロジックのブロック図である。
【図７】一実施形態によるグラフィックスプロセッサ実行ユニット命令フォーマットを図示する。
【図８】グラフィックスプロセッサの別の実施形態のブロック図である。
【図９Ａ】一実施形態によるグラフィックスプロセッサコマンドフォーマットを図示するブロック図である。
【図９Ｂ】一実施形態によるグラフィックスプロセッサコマンドシーケンスを図示するブロック図である。
【図１０】一実施形態のよるデータ処理システムのための例示的なグラフィックスソフトウェアアーキテクチャを図示する。
【図１１】一実施形態による、スケーラブルな複数のリソースおよび電力制御ユニットを含むグラフィックスコアのブロック図である。
【図１２】一実施形態による、複数のグラフィックスコア実行ユニットへの電力を制御するための電力制御ユニットのブロック図である。
【図１３】３つの例示的なグラフィックスプロセッサコアの実行ユニット（ＥＵ）の使用量のグラフである。
【図１４】複数の新しいドローコールの発信を強調表示する例示的な３×８のＧＰＵの使用量のグラフである。
【図１５】一実施形態による、複数のグラフィックスプロセッサ実行ユニットのスケーリングを管理するためのロジックのフロー図である。
【図１６】一実施形態による、電力コントローラにより複数の実行ユニットのスケーリングを管理するための追加のロジックのフロー図である。
【図１７】一実施形態による複数のグラフィックス実行リソースのためのスケール係数を決定するためのロジックのフロー図である。
【図１８】例示的なグラフィックスサブコアの使用量のグラフである。
【図１９】例示的なグラフィックスサブコアの使用量の追加のグラフである。
【図２０】例示的なグラフィックスサブコアの使用量の追加のグラフである。
【図２１】一実施形態による、グラフィックスコアまたはサブコアのスケーリングを管理するためのロジックのフロー図である。
【発明を実施するための形態】
【０００５】
性能に著しく影響を与えることなく電力消費および最大電流ドローを低減するようにグラフィックスプロセッサにおける複数の実行ユニットを動的にスケーリングするシステムおよび方法の様々な実施形態が開示される。グラフィックスプロセッサは、現在の実行ユニットの使用量レート等、複数の使用量基準を用いて複数の実行ユニットを動的に有効または無効にし得る。更に、グラフィックスプロセッサは、３Ｄアプリケーションからの複数の新しいドローコールの発信またはグラフィックスプロセッサによる複数の新しいドローコールの受信を、近未来における可能性のある高い実行ユニットの使用量の指標として用い得る。高い実行ユニットの使用量を予想することにより、提案の技術は、グラフィックスプロセッサの使用量が高いときに性能に影響を与えることなく、複数の実行ユニットを動的に電力管理し得る。
【０００６】
説明を目的として、様々な具体的な詳細が記載され、下記の様々な実施形態に対する完全な理解を提供する。しかし、これらの具体的な詳細のうちのいくつかがなくても、本実施形態が実施され得ることが当業者には明らかであろう。他の例において、基礎となる原理を不明瞭にするのを避け、複数の実施形態のより完全な理解を提供するべく、周知の複数の構造体およびデバイスがブロック図の形態で示される。
【０００７】
以下の複数の実施形態のいくつかは、プロセッサを参照して説明されているが、類似の複数の技術および教示は、他のタイプの回路または半導体デバイスに適用され得る。教示は、データ操作を実行するいずれのプロセッサまたは機械にも適用可能であるからである。
【０００８】
［概要−図１〜３］
図１は、実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、１または複数のプロセッサ１０２と、１または複数のグラフィックスプロセッサ１０８とを含み、多数のプロセッサ１０２またはプロセッサコア１０７を有するシングルプロセッサのデスクトップシステム、マルチプロセッサのワークステーションシステム、またはサーバシステムであってもよい。一実施形態において、データ処理システム１００は、モバイル、ハンドヘルド型、またはエンベデッドデバイスにおいて用いるためのシステムオンチップ集積回路（ＳＯＣ）である。
【０００９】
データ処理システム１００の実施形態は、ゲームおよびメディアコンソール、モバイルゲームコンソール、ハンドヘルド型ゲームコンソール、またはオンラインゲームコンソールを含む、サーバベースのゲームプラットフォームまたはゲームコンソールを含み、またはこれらの内部に組み込まれ得る。一実施形態において、データ処理システム１００は、携帯電話、スマートフォン、タブレットコンピューティングデバイス、またはモバイルインターネットデバイスである。また、データ処理システム１００は、スマートウォッチウェアラブルデバイス、スマートアイウェアデバイス、拡張現実感デバイス、またはバーチャルリアリティデバイス等のウェアラブルデバイスも含み、これらと結合し、またはこれらの内部に統合され得る。一実施形態において、データ処理システム１００は、１または複数のプロセッサ１０２と、１または複数のグラフィックスプロセッサ１０８により生成されるグラフィカルインターフェースとを有するテレビまたはセットトップボックスデバイスである。
【００１０】
１または複数のプロセッサ１０２は各々、実行されると、システムおよびユーザソフトウェアのための複数のオペレーションを実行する複数の命令を処理する、１または複数のプロセッサコア１０７を含む。一実施形態において、１または複数のプロセッサコア１０７の各々は、特定の命令セット１０９を処理するように構成される。命令セット１０９は、複合命令セット演算（ＣＩＳＣ）、縮小命令セット演算（ＲＩＳＣ）、または超長命令語（ＶＬＩＷ）による演算を容易にし得る。複数のプロセッサコア１０７は各々、複数の他の命令セットのエミュレーションを容易にする複数の命令を含み得る、異なる命令セット１０９を処理し得る。プロセッサコア１０７は、デジタル信号プロセッサ（ＤＳＰ）等の複数の他の処理デバイスも含み得る。
【００１１】
一実施形態において、１または複数のプロセッサ１０２の各々は、キャッシュメモリ１０４を含む。アーキテクチャに応じて、プロセッサ１０２は、単一の内部キャッシュまたは複数のレベルの内部キャッシュを有し得る。一実施形態において、キャッシュメモリは、プロセッサ１０２の様々なコンポーネント間で共有される。一実施形態において、プロセッサ１０２は、既知の複数のキャッシュコヒーレンシ技術を用いる複数のプロセッサコア１０７間で共有され得る外部キャッシュ（例えば、レベル３（Ｌ３）キャッシュまたはラストレベルキャッシュ（ＬＬＣ））（図示せず）も用いる。更に、レジスタファイル１０６は、複数の異なるタイプのデータを格納する複数の異なるタイプのレジスタ（例えば、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、および命令ポインタレジスタ）を含み得る、プロセッサ１０２内に含まれる。いくつかのレジスタは、汎用レジスタであり得るが、他のレジスタは、プロセッサ１０２の設計に固有であってもよい。
【００１２】
プロセッサ１０２は、システム１００におけるプロセッサ１０２と複数の他のコンポーネントとの間で複数のデータ信号を送信するべく、プロセッサバス１１０と結合される。システム１００は、メモリコントローラハブ１１６および入出力（Ｉ／Ｏ）コントローラハブ１３０を含む、例示的な「ハブ」システムアーキテクチャを用いる。メモリコントローラハブ１１６は、システム１００のメモリデバイスと複数の他のコンポーネントとの間の通信を容易にするが、Ｉ／Ｏコントローラハブ（ＩＣＨ）１３０は、ローカルＩ／Ｏバスを介してＩ／Ｏデバイスへの複数の接続を提供する。
【００１３】
メモリデバイス１２０は、処理メモリとして機能する好適な性能を有する、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、またはいくつかの他のメモリデバイスであり得る。メモリ１２０は、プロセッサ１０２が処理を実行するときに用いられるデータ１２２および複数の命令１２１を格納し得る。メモリコントローラハブ１１６は、任意選択の外部グラフィックスプロセッサ１１２にも結合し、任意選択の外部グラフィックスプロセッサ１１２は、グラフィックスおよびメディアオペレーションを実行するべく、プロセッサ１０２において１または複数のグラフィックスプロセッサ１０８と通信し得る。
【００１４】
ＩＣＨ１３０は、複数の周辺機器が高速Ｉ／Ｏバスを介してメモリ１２０およびプロセッサ１０２に接続することを可能にする。Ｉ／Ｏ周辺機器は、オーディオコントローラ１４６、ファームウェアインターフェース１２８、無線トランシーバ１２６（例えば、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標））、データストレージデバイス１２４（例えば、ハードディスクドライブ、フラッシュメモリ等）、および複数のレガシ（例えば、パーソナルシステム２（ＰＳ／２））デバイスをシステムと結合するためのレガシＩ／Ｏコントローラを含む。１または複数のユニバーサルシリアルバス（ＵＳＢ）コントローラ１４２は、キーボードおよびマウス１４４の組み合わせのような複数の入力デバイスを接続する。ネットワークコントローラ１３４も、ＩＣＨ１３０と結合し得る。一実施形態において、高性能ネットワークコントローラ（図示せず）は、プロセッサバス１１０と結合する。
【００１５】
図２は、１または複数のプロセッサコア２０２Ａ〜Ｎ、統合メモリコントローラ２１４、および統合グラフィックスプロセッサ２０８を有するプロセッサ２００の実施形態のブロック図である。プロセッサ２００は、破線ボックスにより表される追加のコア２０２Ｎまでの複数の追加のコアを含み得る。コア２０２Ａ〜Ｎの各々は、１または複数の内部キャッシュユニット２０４Ａ〜Ｎを含む。一実施形態において、各コアは、１または複数の共有キャッシュユニット２０６へのアクセスも有する。
【００１６】
内部キャッシュユニット２０４Ａ〜Ｎ、および共有キャッシュユニット２０６は、プロセッサ２００内におけるキャッシュメモリ階層を表す。キャッシュメモリ階層は、各コア内の少なくとも１つのレベルの複数の命令およびデータキャッシュ、ならびにレベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、または複数の他のレベルのキャッシュのような１または複数のレベルの中間レベルの共有キャッシュを含み得、外部メモリの前の最高レベルのキャッシュは、ラストレベルキャッシュ（ＬＬＣ）として分類される。一実施形態において、キャッシュコヒーレンシロジックは、様々なキャッシュユニット２０６および２０４Ａ〜Ｎ間のコヒーレンシを維持する。
【００１７】
プロセッサ２００は、１または複数のバスコントローラユニット２１６およびシステムエージェント２１０のセットも含み得る。１または複数のバスコントローラユニットは、１または複数の周辺構成要素相互接続バス（例えば、ＰＣＩ、ＰＣＩエクスプレス）のような複数の周辺機器バスのセットを管理する。システムエージェント２１０は、様々なプロセッサコンポーネントのための管理機能を提供する。一実施形態において、システムエージェント２１０は、様々な外部メモリデバイス（図示せず）へのアクセスを管理するべく、１または複数の統合メモリコントローラ２１４を含む。
【００１８】
一実施形態において、コア２０２Ａ〜Ｎのうちの１または複数は、同時のマルチスレッディングのためのサポートを含む。そのような実施形態において、システムエージェント２１０は、マルチスレッド処理中にコア２０２Ａ〜Ｎを調整および動作させるための複数のコンポーネントを含む。更に、システムエージェント２１０は、電力制御ユニット（ＰＣＵ）を含み得、電力制御ユニットは、コア２０２Ａ〜Ｎおよびグラフィックスプロセッサ２０８の電力状態を調整するロジックおよび複数のコンポーネントを含む。
【００１９】
更に、プロセッサ２００は、複数のグラフィックス処理オペレーションを実行するグラフィックスプロセッサ２０８を含む。一実施形態において、グラフィックスプロセッサ２０８は、共有キャッシュユニット２０６、および１または複数の統合メモリコントローラ２１４を含むシステムエージェントユニット２１０のセットと結合する。一実施形態において、ディスプレイコントローラ２１１は、１または複数の結合されたディスプレイへのグラフィックスプロセッサの出力を駆動するべく、グラフィックスプロセッサ２０８と結合される。ディスプレイコントローラ２１１は、少なくとも１つの相互接続を介してグラフィックスプロセッサと結合された別個のモジュールであってもよく、またはグラフィックスプロセッサ２０８もしくはシステムエージェント２１０内に統合されてもよい。
【００２０】
一実施形態において、リングベースの相互接続ユニット２１２は、プロセッサ２００の複数の内部コンポーネントを結合するべく用いられる。しかし、当技術分野において周知の複数の技術を含む、ポイントツーポイント相互接続、スイッチ相互接続、または他の複数の技術等、代替的な相互接続ユニットが用いられてもよい。一実施形態において、グラフィックスプロセッサ２０８は、Ｉ／Ｏリンク２１３を介してリング相互接続２１２と結合する。
【００２１】
例示的なＩ／Ｏリンク２１３は、様々なプロセッサコンポーネントとｅＤＲＡＭモジュールのような高性能エンベデッドメモリモジュール２１８との間の通信を容易にするパッケージＩ／Ｏ相互接続を含む、複数の様々なＩ／Ｏ相互接続のうちの少なくとも１つを表す。一実施形態において、コア２０２Ａ〜Ｎおよびグラフィックスプロセッサ２０８の各々は、共有ラストレベルキャッシュとしてエンベデッドメモリモジュール２１８を用いる。
【００２２】
一実施形態において、コア２０２Ａ〜Ｎは、同一の命令セットアーキテクチャを実行する同種のコアである。別の実施形態において、コア２０２Ａ〜Ｎは、命令セットアーキテクチャ（ＩＳＡ）の観点からは異種であり、コア２０２Ａ〜Ｎのうちの１または複数は、第１の命令セットを実行するが、複数の他のコアのうちの少なくとも１つは、第１の命令セットまたは異なる命令セットのサブセットを実行する。
【００２３】
プロセッサ２００は、多数の処理技術、例えば、相補型金属酸化膜半導体（ＣＭＯＳ）、バイポーラ接合／相補型金属酸化膜半導体（ＢｉＣＭＯＳ）またはＮ型金属酸化膜半導体ロジック（ＮＭＯＳ）のいずれかを用いる、１または複数の基板の一部であるか、またはこれらの上に実装され得る。更に、プロセッサ２００は、複数の他のコンポーネントに加えて、１または複数のチップ上に実装され、または図示される複数のコンポーネントを有するシステムオンチップ（ＳＯＣ）集積回路として実装され得る。
【００２４】
図３は、ディスクリートグラフィックス処理ユニットであり得るか、または複数のプロセッシングコアと統合されたグラフィックスプロセッサであり得る、グラフィックスプロセッサ３００の一実施形態のブロック図である。一実施形態において、グラフィックスプロセッサは、グラフィックスプロセッサ上の複数のレジスタにメモリマッピングされたＩ／Ｏインターフェースと、プロセッサメモリ内に置かれる複数のコマンドにより通信される。グラフィックスプロセッサ３００は、メモリにアクセスするためのメモリインターフェース３１４を含む。メモリインターフェース３１４は、ローカルメモリ、１または複数の内部キャッシュ、１または複数の共有外部キャッシュ、および／またはシステムメモリへのインターフェースであり得る。
【００２５】
グラフィックスプロセッサ３００は、ディスプレイ出力データをディスプレイデバイス３２０に駆動するディスプレイコントローラ３０２も含む。ディスプレイコントローラ３０２は、ディスプレイ用の１または複数のオーバーレイ平面のためのハードウェアと、動画またはユーザインターフェース要素の複数の層の構成物とを含む。一実施形態において、グラフィックスプロセッサ３００は、ＭＰＥＧ２のようなムービングピクチャエクスパーツグループ（ＭＰＥＧ）フォーマット、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣのようなアドバンスドビデオコーディング（ＡＶＣ）フォーマット、および米国映画テレビ技術者協会（ＳＭＰＴＥ）４２１Ｍ／ＶＣ−１、ならびにジョイントフォトグラフィックエクスパーツグループ（ＪＰＥＧ）、およびモーションＪＰＥＧ（ＭＪＰＥＧ）フォーマットのようなＪＰＥＧフォーマットを含むがこれらに限定されない、１または複数のメディアエンコードフォーマットへ、これらから、またはこれらの間でメディアをエンコード、デコード、またはトランスコードするビデオコーデックエンジン３０６を含む。
【００２６】
一実施形態において、グラフィックスプロセッサ３００は、例えば、ビット境界ブロック転送を含む、複数の２次元（２Ｄ）ラスタライザオペレーションを実行するブロック画像転送（ＢＬＩＴ）エンジン３０４を含む。しかし、一実施形態において、複数の２Ｄグラフィックスオペレーションは、グラフィックス処理エンジン（ＧＰＥ）３１０の１または複数のコンポーネントを用いて実行される。グラフィックス処理エンジン３１０は、複数の３次元（３Ｄ）グラフィックスオペレーションおよびメディアオペレーションを含む、グラフィックスオペレーションを実行するためのコンピューティングエンジンである。
【００２７】
ＧＰＥ３１０は、３Ｄプリミティブ図形（例えば、矩形、トライアングル等）に対して機能する複数の処理機能を用いて、複数の３次元画像およびシーンをレンダリングするなど、複数の３Ｄオペレーションを実行するための３Ｄパイプライン３１２を含む。３Ｄパイプライン３１２は、要素内の様々なタスクを実行し、および／または３Ｄ／メディアサブシステム３１５に複数の実行スレッドをスポーン（ｓｐａｗｎ）するプログラミング可能な複数の固定関数要素を含む。３Ｄパイプライン３１２は、複数のメディアオペレーションを実行するべく用いられ得るが、ＧＰＥ３１０の実施形態は、具体的には、動画の後処理および画像強調等の複数のメディアオペレーションを実行するべく用いられるメディアパイプライン３１６も含む。
【００２８】
一実施形態において、メディアパイプライン３１６は、ビデオコーデックエンジン３０６の代替に、またはこれの代わりに動画デコードの加速、動画のインターレース解除、および動画エンコードの加速等、１または複数の専用メディアオペレーションを実行する、固定関数またはプログラミング可能なロジックユニットを含む。一実施形態において、メディアパイプライン３１６は更に、３Ｄ／メディアサブシステム３１５において実行するための複数のスレッドをスポーンする、スレッドスポーンユニットを含む。スポーンされた複数のスレッドは、３Ｄ／メディアサブシステムに含まれる１または複数のグラフィックス実行ユニット上で複数のメディアオペレーションのための演算を実行する。
【００２９】
３Ｄ／メディアサブシステム３１５は、３Ｄパイプライン３１２およびメディアパイプライン３１６によりスポーンされた複数のスレッドを実行するためのロジックを含む。一実施形態において、複数のパイプラインは、複数のスレッド実行要求を３Ｄ／メディアサブシステム３１５に送信する。３Ｄ／メディアサブシステム３１５は、利用可能な複数のスレッド実行リソースに対する様々な要求を調整およびディスパッチするためのスレッドディスパッチロジックを含む。複数の実行リソースは、３Ｄおよびメディアスレッドを処理する複数のグラフィックス実行ユニットのアレイを含む。一実施形態において、３Ｄ／メディアサブシステム３１５は、複数のスレッド命令およびデータのための１または複数の内部キャッシュを含む。一実施形態において、サブシステムは、複数のスレッド間のデータを共有し、出力データを格納する複数のレジスタおよびアドレス指定可能メモリを含む、共有メモリも含む。
【００３０】
［３Ｄ／メディア処理−図４］
図４は、グラフィックスプロセッサ用のグラフィックス処理エンジン４１０の実施形態のブロック図である。一実施形態において、グラフィックス処理エンジン（ＧＰＥ）４１０は、図３に示されるＧＰＥ３１０の１つのバージョンである。ＧＰＥ４１０は、３Ｄパイプライン４１２およびメディアパイプライン４１６を含み、その各々は、図３の３Ｄパイプライン３１２およびメディアパイプライン３１６の実装と異なるか、またはこれに類似するかのいずれかであり得る。
【００３１】
一実施形態において、ＧＰＥ４１０は、コマンドストリーマ４０３と結合し、コマンドストリーマ４０３は、コマンドストリームをＧＰＥ３Ｄパイプライン４１２およびメディアパイプライン４１６に提供する。コマンドストリーマ４０３は、システムメモリ、または内部キャッシュメモリおよび共有キャッシュメモリのうちの１または複数であり得るメモリと結合される。コマンドストリーマ４０３は、メモリから複数のコマンドを受信し、これらのコマンドを３Ｄパイプライン４１２および／またはメディアパイプライン４１６に送信する。３Ｄパイプラインおよびメディアパイプラインは、各パイプライン内のロジックによる複数のオペレーションを実行し、または１または複数の実行スレッドを実行ユニットアレイ４１４にディスパッチすることにより、複数のコマンドを処理する。一実施形態において、実行ユニットアレイ４１４はスケーラブルであり、その結果、アレイは、ＧＰＥ４１０のターゲット電力および性能レベルに基づいて変わり得る数の実行ユニットを含む。
【００３２】
サンプリングエンジン４３０は、メモリ（例えば、キャッシュメモリまたはシステムメモリ）および実行ユニットアレイ４１４と結合する。一実施形態において、サンプリングエンジン４３０は、実行ユニットアレイ４１４がグラフィックスおよびメディアデータをメモリから読み取ることを可能にするスケーラブルな実行ユニットアレイ４１４のためのメモリアクセスメカニズムを提供する。一実施形態において、サンプリングエンジン４３０は、メディアに対する複数の専用画像サンプリングオペレーションを実行するロジックを含む。
【００３３】
サンプリングエンジン４３０における専用メディアサンプリングロジックは、ノイズ除去／インターレース解除モジュール４３２、動き推定モジュール４３４、および画像スケーリング・フィルタリングモジュール４３６を含む。ノイズ除去／インターレース解除モジュール４３２は、デコードされる動画データに対してノイズ除去またはインターレース解除アルゴリズムのうちの１または複数を実行するロジックを含む。インターレース解除ロジックは、インターレース済みの動画コンテンツの複数の交互フィールドを組み合わせて単一のフレームの動画にする。ノイズ除去ロジックは、動画および画像データからデータノイズを低減または除去する。一実施形態において、ノイズ除去ロジックおよびインターレース解除ロジックは、動き適応型であり、動画データにおいて検出された動きの量に基づく空間的または時間的フィルタリングを用いる。一実施形態において、ノイズ除去／インターレース解除モジュール４３２は、（例えば、動き推定エンジン４３４内に）専用の動き検出ロジックを含む。
【００３４】
動き推定エンジン４３４は、動きベクトル推定および動画データに関する予測等の複数の動画加速機能を実行することにより、複数の動画オペレーションのためのハードウェアの加速を提供する。動き推定エンジンは、複数の連続的動画フレーム間の画像データ変換を記載する複数の動きベクトルを決定する。一実施形態において、グラフィックスプロセッサのメディアコーデックは、別の場合には汎用プロセッサの使用を実行するべく演算集約的であり得るマクロブロックレベルで動画に複数のオペレーションを実行する、動画動き推定エンジン４３４を用いる。一実施形態において、動き推定エンジン４３４は一般に、動画データ内の動きの方向または大きさに感応性または適応性である動画デコードおよび複数の処理機能を支援するべく、複数のグラフィックスプロセッサコンポーネントに利用可能である。
【００３５】
画像スケーリング・フィルタリングモジュール４３６は、生成される画像および動画の視覚的品質を高めるべく複数の画像処理オペレーションを実行する。一実施形態において、画像スケーリング・フィルタリングモジュール４３６は、データを実行ユニットアレイ４１４に提供する前に、サンプリングオペレーション中に画像および動画データを処理する。
【００３６】
一実施形態において、グラフィックス処理エンジン４１０は、データポート４４４を含み、データポート４４４は、メモリにアクセスするために複数のグラフィックスサブシステム用の追加のメカニズムを提供する。データポート４４４は、レンダリングターゲット書き込み、コンスタントバッファ読み取り、スクラッチメモリ空間の読み取り／書き込み、およびメディアサーフェスアクセスを含む複数のオペレーションのためのメモリアクセスを容易にする。一実施形態において、データポート４４４は、メモリへの複数のアクセスをキャッシュするキャッシュメモリ空間を含む。キャッシュメモリは、１つのデータキャッシュであり、またはデータポートを介してメモリにアクセスする複数のサブシステム用の複数のキャッシュ（例えば、レンダリングバッファキャッシュ、コンスタントバッファキャッシュ等）に分離され得る。一実施形態において、実行ユニットアレイ４１４における実行ユニット上で実行される複数のスレッドは、グラフィックス処理エンジン４１０の複数のサブシステムの各々を結合するデータ配信相互接続を介して複数のメッセージを交換することにより、データポートと通信する。
【００３７】
［実行ユニット−図５〜図７］
図５は、スケーラブルな数のグラフィックスコアを有するグラフィックスプロセッサの別の実施形態のブロック図である。一実施形態において、グラフィックスプロセッサは、リング相互接続５０２、パイプラインフロントエンド５０４、メディアエンジン５３７、およびグラフィックスコア５８０Ａ〜Ｎを含む。リング相互接続５０２は、複数の他のグラフィックスプロセッサ、または１もしくは複数の汎用プロセッサコアを含む複数の他の処理ユニットに、グラフィックスプロセッサを結合する。一実施形態において、グラフィックスプロセッサは、マルチコア処理システム内に統合される多くのプロセッサのうちの１つである。
【００３８】
グラフィックスプロセッサは、リング相互接続５０２を介して複数のコマンドのバッチを受信する。複数の受信コマンドは、パイプラインフロントエンド５０４におけるコマンドストリーマ５０３により変換される。グラフィックスプロセッサは、グラフィックスコア５８０Ａ〜Ｎを介して３Ｄジオメトリ処理およびメディア処理を実行する、スケーラブルな実行ロジックを含む。３Ｄジオメトリ処理コマンドについては、コマンドストリーマ５０３は、複数のコマンドをジオメトリパイプライン５３６に提供する。少なくともいくつかのメディア処理コマンドについては、コマンドストリーマ５０３は、複数のコマンドを、メディアエンジン５３７と結合するビデオフロントエンド５３４に提供する。メディアエンジン５３７は、動画および画像の後処理のための動画質エンジン（ＶＱＥ）５３０と、ハードウェアにより加速されるメディアデータのエンコードおよびデコードを提供するマルチフォーマットエンコード／デコード（ＭＦＸ）エンジン５３３とを含む。ジオメトリパイプライン５３６およびメディアエンジン５３７は各々、少なくとも１つのグラフィックスコア５８０Ａにより提供されるスレッド実行リソース用の複数の実行スレッドを生成する。
【００３９】
グラフィックスプロセッサは、モジュラコア５８０Ａ〜Ｎ（コアスライスと称される場合がある）を特徴付けるスケーラブルなスレッド実行リソースを含み、各々は、複数のサブコア５５０Ａ〜Ｎ、５６０Ａ〜Ｎ（コアのサブスライスと称される場合がある）を有する。グラフィックスプロセッサは、任意の数のグラフィックスコア５８０Ａ〜５８０Ｎを有し得る。一実施形態において、グラフィックスプロセッサは、少なくとも第１のサブコア５５０Ａおよび第２のサブコア５６０Ａを有するグラフィックスコア５８０Ａを含む。別の実施形態において、グラフィックスプロセッサは、１つのサブコア（例えば５５０Ａ）を有する低電力プロセッサである。一実施形態において、グラフィックスプロセッサは、複数のグラフィックスコア５８０Ａ〜Ｎを含み、それらの各々は、複数の第１のサブコア５５０Ａ〜Ｎのセットと、複数の第２のサブコア５６０Ａ〜Ｎのセットとを含む。複数の第１のサブコア５５０Ａ〜Ｎのセットにおける各サブコアは、少なくとも複数の実行ユニット５５２Ａ〜Ｎと、複数のメディア／テクスチャサンプラ５５４Ａ〜Ｎとの第１のセットを含む。複数の第２のサブコア５６０Ａ〜Ｎのセットにおける各サブコアは、少なくとも複数の実行ユニット５６２Ａ〜Ｎと、複数サンプラ５６４Ａ〜Ｎとの第２のセットを含む。一実施形態において、各サブコア５５０Ａ〜Ｎ、５６０Ａ〜Ｎは、複数の共有リソース５７０Ａ〜Ｎのセットを共有する。一実施形態において、複数の共有リソースは、共有キャッシュメモリおよびピクセルオペレーションロジックを含む。他の複数の共有リソースも、グラフィックスプロセッサの様々な実施形態に含まれてもよい。
【００４０】
図６は、複数の処理要素のアレイを含むスレッド実行ロジック６００の実施形態を図示する。一実施形態において、スレッド実行ロジック６００は、ピクセルシェーダ６０２、スレッドディスパッチャ６０４、命令キャッシュ６０６、複数の実行ユニット６０８Ａ〜Ｎを含むスケーラブルな実行ユニットアレイ、サンプラ６１０、データキャッシュ６１２、およびデータポート６１４を含む。一実施形態において、含まれる複数のコンポーネントは、複数のコンポーネントの各々とリンクする相互接続ファブリックを介して相互接続される。スレッド実行ロジック６００は、命令キャッシュ６０６、データポート６１４、サンプラ６１０、および実行ユニットアレイ６０８Ａ〜Ｎのうちの１または複数を介して、システムメモリまたはキャッシュメモリのようなメモリへの１または複数の接続を含む。一実施形態において、各実行ユニット（例えば６０８Ａ）は、複数の同時のスレッドを実行してスレッド毎に並行に複数のデータ要素を処理することができる個別のベクトルプロセッサである。実行ユニットアレイ６０８Ａ〜Ｎは、任意の数の個別の実行ユニットを含む。
【００４１】
一実施形態において、実行ユニットアレイ６０８Ａ〜Ｎは主に、「シェーダ」プログラムを実行するべく用いられる。一実施形態において、アレイ６０８Ａ〜Ｎにおける実行ユニットは、多くの標準的３Ｄグラフィックスシェーダ命令に対するネイティブサポートを含む命令セットを実行し、従って複数のグラフィックスライブラリからのシェーダプログラム（例えば、Ｄｉｒｅｃｔ  ３ＤおよびＯｐｅｎＧＬ）は、最小の変換で実行される。複数の実行ユニットは、頂点およびジオメトリ処理（例えば、頂点プログラム、ジオメトリプログラム、頂点シェーダ）、ピクセル処理（例えば、ピクセルシェーダ、フラグメントシェーダ）、および汎用処理（例えば、演算およびメディアシェーダ）をサポートする。
【００４２】
実行ユニットアレイ６０８Ａ〜Ｎにおける各実行ユニットは、複数のデータ要素のアレイ上で動作する。データ要素の数は、命令に対する「実行サイズ」またはチャネルの数である。実行チャネルは、データ要素のアクセス、マスキング、および複数の命令内のフロー制御のための実行の論理ユニットである。チャネルの数は、特定のグラフィックスプロセッサに対する物理算術論理ユニット（ＡＬＵ）または浮動小数点ユニット（ＦＰＵ）の数から独立している場合がある。実行ユニット６０８Ａ〜Ｎは、整数および浮動小数点のデータタイプをサポートする。
【００４３】
実行ユニット命令セットは、複数の単一命令多重データ（ＳＩＭＤ）命令を含む。様々なデータ要素は、パックドデータのタイプとしてレジスタに格納され得、実行ユニットは、複数の要素のデータサイズに基づいて様々な要素を処理する。例えば、２５６ビット幅のベクトル上で動作する場合、ベクトルの２５６ビットは、レジスタに格納され、実行ユニットは、４個の別個の６４ビットパックドデータ要素（クワッドワード（ＱＷ）サイズのデータ要素）、８個の別個の３２ビットパックドデータ要素（ダブルワード（ＤＷ）サイズのデータ要素）、１６個の別個の１６ビットパックドデータ要素（ワード（Ｗ）サイズのデータ要素）、または３２個の別個の８ビットデータ要素（バイト（Ｂ）サイズのデータ要素）としてベクトル上で動作する。しかし、異なる複数のベクトル幅およびレジスタサイズが可能である。
【００４４】
１または複数の内部命令キャッシュ（例えば、６０６）は、スレッド実行ロジック６００に含まれ、実行ユニットのための複数のスレッド命令をキャッシュする。一実施形態において、スレッド実行中にスレッドデータをキャッシュする１または複数のデータキャッシュ（例えば６１２）が含まれる。複数の３Ｄオペレーションのためのテクスチャサンプリングおよび複数のメディアオペレーションのためのメディアサンプリングを提供するサンプラ６１０が含まれる。一実施形態において、サンプラ６１０は、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャまたはメディアデータを処理する専用テクスチャまたはメディアサンプリング機能を含む。
【００４５】
実行中に、グラフィックスおよびメディアパイプラインは、スレッドスポーンおよびディスパッチロジックにより複数のスレッド開始要求をスレッド実行ロジック６００に送信する。スレッド実行ロジック６００は、グラフィックスおよびメディアパイプラインからの複数のスレッド開始要求を調整し、１または複数の実行ユニット６０８Ａ〜Ｎ上で要求された複数のスレッドをインスタンス化する、ローカルのスレッドディスパッチャ６０４を含む。例えば、ジオメトリパイプライン（例えば、図５の５３６）は、頂点処理、テセレーション、またはジオメトリ処理のスレッドをスレッド実行ロジック６００にディスパッチする。スレッドディスパッチャ６０４は、実行する複数のシェーダプログラムからのランタイムスレッドスポーン要求も処理し得る。
【００４６】
複数の幾何学的オブジェクトのグループが処理され、ピクセルデータにラスタライズすると、ピクセルシェーダ６０２が呼び出され、更に出力情報を演算することで、結果が出力面に書き込まれる（例えば、色バッファ、デプスバッファ、ステンシルバッファ等）。一実施形態において、ピクセルシェーダ６０２は、ラスタライズされたオブジェクトにわたって補間される様々な頂点アトリビュートの値を算出する。次に、ピクセルシェーダ６０２は、ＡＰＩにより提供されるピクセルシェーダプログラムを実行する。ピクセルシェーダプログラムを実行するべく、ピクセルシェーダ６０２は、スレッドディスパッチャ６０４により複数のスレッドを実行ユニット（例えば６０８Ａ）にディスパッチする。ピクセルシェーダ６０２は、メモリに格納された複数のテクスチャマップにおけるテクスチャデータにアクセスするべく、サンプラ６１０におけるテクスチャサンプリングロジックを用いる。テクスチャデータおよび入力ジオメトリデータに対する複数の算術オペレーションは、幾何学フラグメント毎にピクセルカラーデータを演算するか、または１または複数のピクセルを更なる処理から破棄する。
【００４７】
一実施形態において、データポート６１４は、スレッド実行ロジック６００の出力処理されたデータのためのメモリアクセスメカニズムを、グラフィックスプロセッサ出力パイプライン上で処理するためのメモリに提供する。一実施形態において、データポート６１４は、データポートを介するメモリアクセスのためにデータをキャッシュする１または複数のキャッシュメモリ（例えば、データキャッシュ６１２）を含み、またはこれと結合する。
【００４８】
図７は、一実施形態によるグラフィックスプロセッサ実行ユニット命令フォーマットを図示するブロック図である。一実施形態において、複数のグラフィックスプロセッサ実行ユニットは、複数のフォーマットの命令を有する命令セットをサポートする。実線で囲まれた複数のボックスは、一般に実行ユニット命令に含まれる複数のコンポーネントを図示するが、破線は、任意選択であるか、または複数の命令のサブセットのみに含まれる複数のコンポーネントを含む。説明され、図示される命令フォーマットは、命令が処理されると、命令のデコードからもたらされる複数のマイクロオペレーションとは異なり、実行ユニットに提供される複数の命令であるという点で、マクロ命令である。
【００４９】
一実施形態において、複数のグラフィックスプロセッサ実行ユニットは、１２８ビットフォーマット７１０の複数の命令をネイティブにサポートする。６４ビット圧縮命令フォーマット７３０は、選択される命令、命令オプション、およびオペランドの数に基づいていくつかの命令に対して利用可能である。ネイティブな１２８ビットフォーマット７１０は、全ての命令オプションにアクセスを提供するが、いくつかのオプションおよびオペレーションは、６４ビットフォーマット７３０において制限されている。６４ビットフォーマット７３０において利用可能であるネイティブな命令は、実施形態により異なる。一実施形態において、命令は、インデックスフィールド７１３における複数のインデックス値のセットを用いて部分的に圧縮される。実行ユニットハードウェアは、複数のインデックス値に基づいて複数の圧縮テーブルのセットを参照し、１２８ビットフォーマット７１０においてネイティブな命令を再構成するべく、複数の圧縮テーブル出力を用いる。
【００５０】
フォーマット毎に、命令オペコード７１２は、実行ユニットが実行するべきオペレーションを規定する。複数の実行ユニットは、各オペランドの複数のデータ要素にわたって並行に各命令を実行する。例えば、加算命令に応答して、実行ユニットは、テクスチャ要素または画素を表す各色チャネルにわたって同時の加算オペレーションを実行する。デフォルトで、実行ユニットは、複数のオペランドの全てのデータチャネルにわたって各命令を実行する。命令制御フィールド７１２は、チャネル選択（例えば断定）およびデータチャネルの順序（例えばスウィズル）のような特定の実行オプションに対する制御を可能にする。１２８ビット命令７１０については、実行サイズフィールド７１６は、並行に実行されるデータチャネルの数を制限する。実行サイズフィールド７１６は、６４ビットの圧縮命令フォーマット７３０で用いるために利用可能ではない。
【００５１】
いくつかの実行ユニット命令は、２つのソースオペランドｓｒｃ０  ７２０、ｓｒｃ１  ７２２、および１つのデスティネーション７１８を含む、最大３つのオペランドを有する。一実施形態において、複数の実行ユニットは、デュアルのデスティネーション命令をサポートし、デスティネーションのうちの１つが暗に示される。複数のデータ操作命令は、第３のソースオペランド（例えば、ＳＲＣ２７２４）を有し得、命令オペコードＪＪ１２は、ソースオペランドの数を決定する。命令の最後のソースオペランドは、命令と共に渡されるイミディエイト（例えば、ハードコードされた）値であり得る。
【００５２】
一実施形態において、複数の命令は、オペコードデコード７４０を単純化するべく、オペコードビットフィールドに基づいてグループ化される。８ビットのオペコードについては、ビット４、５、および６は、実行ユニットがオペコードのタイプを決定することを可能にする。示される具体的なオペコードのグループ化は、例示的なものである。一実施形態において、移動およびロジックオペコードグループ７４２は、データ移動およびロジックの命令（例えば、ｍｏｖ、ｃｍｐ）を含む。移動およびロジックグループ７４２は、５つの最も重要なビット（ＭＳＢ）を共有し、移動命令は、００００ｘｘｘｘｂ（例えば、０ｘ０ｘ）の形式であり、ロジック命令は、０００１ｘｘｘｘｂ（例えば、０ｘ０１）の形式である。フロー制御命令グループ７４４（例えば、ｃａｌｌ、ｊｍｐ）は、００１０ｘｘｘｘｂ（例えば、０ｘ２０）の形式の複数の命令を含む。その他の命令グループ７４６は、００１１ｘｘｘｘｂ（例えば、０ｘ３０）の形式の同期命令（例えば、ｗａｉｔ、ｓｅｎｄ）を含む、複数の命令のミックスを含む。並列マス命令グループ７４８は、０１００ｘｘｘｘｂ（例えば、０ｘ４０）の形式のコンポーネント様式の複数の算術命令（例えば、ａｄｄ、ｍｕｌ）を含む。並列マスグループ７４８は、複数のデータチャネルにわたって並行に複数の算術オペレーションを実行する。ベクトルマスグループ７５０は、０１０１ｘｘｘｘｂ（例えば、０ｘ５０）の形式の複数の算術命令（例えば、ｄｐ４）を含む。ベクトルマスグループは、点乗積計算のような算術を複数のベクトルオペランドに実行する。
【００５３】
［グラフィックスパイプライン−図８］
図８は、グラフィックスパイプライン８２０、メディアパイプライン８３０、ディスプレイエンジン８４０、スレッド実行ロジック８５０、およびレンダリング出力パイプライン８７０を含むグラフィックスプロセッサの別の実施形態のブロック図である。一実施形態において、グラフィックスプロセッサは、１または複数の汎用プロセッシングコアを含むマルチコア処理システム内のグラフィックスプロセッサである。グラフィックスプロセッサは、１または複数の制御レジスタ（図示せず）へのレジスタ書き込みにより、またはリング相互接続８０２を介してグラフィックスプロセッサに発行された複数のコマンドにより、制御される。リング相互接続８０２は、他のグラフィックスプロセッサまたは汎用プロセッサ等の複数の他の処理コンポーネントに、グラフィックスプロセッサを結合する。リング相互接続からの複数のコマンドは、グラフィックスパイプライン８２０またはメディアパイプライン８３０の個別のコンポーネントに複数の命令を提供するコマンドストリーマ８０３により、解釈される。
【００５４】
コマンドストリーマ８０３は、頂点データをメモリから読み取り、コマンドストリーマ８０３により提供された複数の頂点処理コマンドを実行する、頂点フェッチャ８０５のコンポーネントのオペレーションを管理する。頂点フェッチャ８０５は、頂点データを頂点シェーダ８０７に提供し、頂点シェーダ８０７は、座標空間変換および複数のライティング（ｌｉｇｈｔｉｎｇ）オペレーションを各頂点に実行する。頂点フェッチャ８０５および頂点シェーダ８０７は、スレッドディスパッチャ８３１を介して複数の実行スレッドを実行ユニット８５２Ａ、８５２Ｂにディスパッチすることにより、複数の頂点処理命令を実行する。
【００５５】
一実施形態において、実行ユニット８５２Ａ、８５２Ｂは、グラフィックスおよびメディアオペレーションを実行するための命令セットを有する複数のベクトルプロセッサのアレイである。実行ユニット８５２Ａ、８５２Ｂは、各アレイに固有であるか、または複数のアレイ間で共有される取り付け済みのＬ１キャッシュ８５１を有する。キャッシュは、パーティショニングされるデータキャッシュ、命令キャッシュ、または異なるパーティションにデータおよび命令を含むようにパーティショニングされるシングルキャッシュとして構成され得る。
【００５６】
一実施形態において、グラフィックスパイプライン８２０は、複数の３Ｄオブジェクトのハードウェア加速テセレーションを実行する複数のテセレーションコンポーネントを含む。プログラミング可能なハルシェーダ８１１は、複数のテセレーションオペレーションを構成する。プログラミング可能なドメインシェーダ８１７は、テセレーション出力のバックエンド評価を提供する。テセレータ８１３は、ハルシェーダ８１１の指示で動作し、入力としてグラフィックスパイプライン８２０に提供される粗幾何学モデルに基づいて、詳細な複数の幾何学的オブジェクトのセットを生成する特定用途用ロジックを含む。テセレーションが用いられない場合、テセレーションコンポーネント８１１、８１３、８１７は、バイパスされ得る。
【００５７】
完全な複数の幾何学的オブジェクトは、実行ユニット８５２Ａ、８５２Ｂにディスパッチされる１または複数のスレッドを通じてジオメトリシェーダ８１９により処理され得、またはクリッパ８２９に直接に進み得る。ジオメトリシェーダは、グラフィックスパイプラインの先行する複数の段階におけるような複数の頂点または頂点のパッチよりはむしろ、複数の幾何学的オブジェクト全体で動作する。テセレーションが無効にされると、ジオメトリシェーダ８１９は、入力を頂点シェーダ８０７から受信する。ジオメトリシェーダ８１９は、複数のテセレーションユニットが無効にされる場合、ジオメトリテセレーションを実行するように、ジオメトリシェーダプログラムによりプログラミング可能である。
【００５８】
ラスタライズする前に、頂点データは、クリッパ８２９により処理される。クリッパ８２９は、固定関数クリッパ、またはクリッピングおよびジオメトリシェーダ関数を有するプログラミング可能なクリッパのいずれかである。一実施形態において、レンダリング出力パイプライン８７０におけるラスタライザ８７３は、複数のピクセルシェーダをディスパッチして、複数の幾何学的オブジェクトをそれらのピクセル毎の表現に変換する。一実施形態において、ピクセルシェーダロジックは、スレッド実行ロジック８５０に含まれる。
【００５９】
グラフィックスエンジンは、データおよびメッセージがグラフィックスエンジンの複数の主要コンポーネント間を通ることを可能にする相互接続バス、相互接続ファブリック、またはいくつかの他の相互接続メカニズムを有する。一実施形態において、実行ユニット８５２Ａ、８５２Ｂおよび関連付けられるキャッシュ８５１、テクスチャおよびメディアサンプラ８５４、ならびにテクスチャ／サンプラキャッシュ８５８は、データポート８５６を介して相互接続し、メモリアクセスを実行し、グラフィックスエンジンの複数のレンダリング出力パイプラインコンポーネントと通信する。一実施形態において、サンプラ８５４、キャッシュ８５１、８５８、および実行ユニット８５２Ａ、８５２Ｂは各々、別個のメモリアクセスパスを有する。
【００６０】
一実施形態において、レンダリング出力パイプライン８７０は、頂点ベースの複数のオブジェクトをそれらの関連付けられるピクセルベースの表現に変換する、ラスタライザおよびデプステストコンポーネント８７３を含む。一実施形態において、ラスタライザロジックは、固定関数トライアングルおよびラインラスタライズを実行するウィンドウア（ｗｉｎｄｏｗｅｒ）／マスカ（ｍａｓｋｅｒ）ユニットを含む。一実施形態において、関連付けられたレンダリングバッファキャッシュ８７８およびデプスバッファキャッシュ８７９も利用可能である。ピクセルオペレーションコンポーネント８７７は、ピクセルベースの複数のオペレーションをデータに実行するが、いくつかの例において、２Ｄオペレーション（例えば、ブレンドを用いるビットブロック画像転送）に関連付けられるピクセルオペレーションは、２Ｄエンジン８４１により実行され、またはオーバーレイディスプレイ平面を用いるディスプレイコントローラ８４３により表示時間に代用される。一実施形態において、共有Ｌ３キャッシュ８７５は、全てのグラフィックスコンポーネントに利用可能であり、メインシステムメモリを用いることなくデータの共有を可能にする。
【００６１】
グラフィックスプロセッサのメディアパイプライン８３０は、メディアエンジン８３７およびビデオフロントエンド８３４を含む。一実施形態において、ビデオフロントエンド８３４は、複数のパイプラインコマンドをコマンドストリーマ８０３から受信する。しかし、一実施形態において、メディアパイプライン８３０は、別個のコマンドストリーマを含む。ビデオフロントエンド８３４は、コマンドをメディアエンジン８３７に送信する前に、複数のメディアコマンドを処理する。一実施形態において、メディアエンジンは、スレッドディスパッチャ８３１を通じてスレッド実行ロジック８５０にディスパッチするための複数のスレッドをスポーンする、スレッドスポーン機能を含む。
【００６２】
一実施形態において、グラフィックスエンジンは、ディスプレイエンジン８４０を含む。一実施形態において、ディスプレイエンジン８４０は、グラフィックスプロセッサの外部にあり、リング相互接続８０２またはいくつかの他の相互接続バスもしくはファブリックを介してグラフィックスプロセッサと結合する。ディスプレイエンジン８４０は、２Ｄエンジン８４１およびディスプレイコントローラ８４３を含む。ディスプレイエンジン８４０は、３Ｄパイプラインとは独立して動作することができる特定用途用ロジックを含む。ディスプレイコントローラ８４３は、ディスプレイデバイス（図示せず）と結合する。ディスプレイデバイスは、ラップトップコンピュータにおけるようなシステム統合ディスプレイデバイスまたはディスプレイデバイスコネクタにより取り付けられる外部ディスプレイデバイスであってもよい。
【００６３】
グラフィックスパイプライン８２０およびメディアパイプライン８３０は、複数のグラフィックスおよびメディアプログラミングインターフェースに基づいて複数のオペレーションを実行するように構成可能であり、いずれか１つのアプリケーションプログラミングインターフェース（ＡＰＩ）に固有のものではない。一実施形態において、グラフィックスプロセッサ用のドライバソフトウェアは、特定のグラフィックスまたはメディアライブラリに固有のＡＰＩ呼び出しを、グラフィックスプロセッサにより処理され得る複数のコマンドに変換する。様々な実施形態において、サポートは、クロノスグループによりサポートされるオープングラフィックスライブラリ（ＯｐｅｎＧＬ）およびオープンコンピューティング言語（ＯｐｅｎＣＬ）、マイクロソフトコーポレーションのＤｉｒｅｃｔ３Ｄライブラリ、または一実施形態においてはＯｐｅｎＧＬおよびＤｉｒｅｃｔ３Ｄの両方に提供される。サポートは、オープンソースコンピュータビジョンライブラリ（ＯｐｅｎＣＶ）にも提供され得る。将来のＡＰＩのパイプラインからグラフィックスプロセッサのパイプラインにマッピングが行われ得る場合には、互換性のある３Ｄパイプラインを用いる将来のＡＰＩも、サポートされるであろう。
【００６４】
［グラフィックスパイプラインのプログラミング−図９Ａ〜図９Ｂ］
図９Ａは、一実施形態によるグラフィックスプロセッサコマンドフォーマットを図示するブロック図であり、図９Ｂは、一実施形態によるグラフィックスプロセッサコマンドシーケンスを図示するブロック図である。図９Ａにおける実線で囲まれた複数のボックスは、グラフィックスコマンドに一般に含まれる複数のコンポーネントを図示するが、破線は、任意選択であるか、または複数のグラフィックスコマンドのサブセットのみに含まれる複数のコンポーネントを含む。図９Ａの例示的なグラフィックスプロセッサコマンドフォーマット９００は、コマンドのターゲットクライアント９０２、コマンドオペレーションコード（オペコード）９０４、およびコマンドのための関連するデータ９０６を識別する複数のデータフィールドを含む。サブオペコード９０５およびコマンドサイズ９０８もいくつかのコマンドに含まれる。
【００６５】
クライアント９０２は、コマンドデータを処理するグラフィックスデバイスのクライアントユニットを指定する。一実施形態において、グラフィックスプロセッサコマンドパーサは、コマンドの更なる処理を条件付けて、コマンドデータを適切なクライアントユニットにルーティングするべく、各コマンドのクライアントフィールドを検査する。一実施形態において、グラフィックスプロセッサの複数のクライアントユニットは、メモリインターフェースユニット、レンダリングユニット、２Ｄユニット、３Ｄユニット、およびメディアユニットを含む。各クライアントユニットは、複数のコマンドを処理する、対応する処理パイプラインを有する。クライアントユニットによりコマンドが受信されると、クライアントユニットは、オペコード９０４を読み取り、存在する場合には、サブオペコード９０５は、実行するオペレーションを決定する。クライアントユニットは、コマンドのデータ９０６のフィールドにおける情報を用いてコマンドを実行する。いくつかのコマンドについては、明示的なコマンドサイズ９０８は、コマンドのサイズを指定することが予期される。一実施形態において、コマンドパーサは、コマンドオペコードに基づいて複数のコマンドの少なくともいくつかのサイズを自動的に決定する。一実施形態において、複数のコマンドは、ダブルワードの倍数によりアラインされる。
【００６６】
図９Ｂのフロー図は、例示のコマンドシーケンス９１０を示す。一実施形態において、グラフィックスプロセッサの実施形態を特徴付けるデータ処理システムのソフトウェアまたはファームウェアは、複数のグラフィックスオペレーションのセットを設定、実行、および終了するように示されたコマンドシーケンスのバージョンを用いる。例示的目的で例示のコマンドシーケンスが示され、説明されている。しかし、複数の実施形態は、これらのコマンドまたはこのコマンドシーケンスに限定されない。更に、これらのコマンドは、コマンドシーケンスにおける複数のコマンドのバッチとして発行されてもよく、従ってグラフィックスプロセッサは、少なくとも部分的に同時に複数のコマンドのシーケンスを処理する。
【００６７】
例示のコマンドシーケンス９１０は、パイプラインフラッシュコマンド９１２で開始し、任意のアクティブなグラフィックスパイプラインにパイプライン用の現在保留中の複数のコマンドを完了させ得る。一実施形態において、３Ｄパイプライン９２２およびメディアパイプライン９２４は、同時に動作しない。パイプラインフラッシュは、アクティブなグラフィックスパイプラインに任意の保留中のコマンドを完了させるべく実行される。パイプラインフラッシュに応答して、グラフィックスプロセッサ用のコマンドパーサは、アクティブな複数の描画エンジンが保留中の複数のオペレーションを完了し、関連する複数の読み取りキャッシュが無効にされるまで、コマンド処理を一時停止する。任意選択で、「ダーティ」とマークを付けられたレンダリングキャッシュ内の任意のデータは、メモリにフラッシュされ得る。パイプラインフラッシュコマンド９１２は、パイプライン同期のために、つまりグラフィックスプロセッサを低電力状態にする前に用いられ得る。
【００６８】
パイプライン選択コマンド９１３は、コマンドシーケンスがグラフィックスプロセッサに複数のパイプライン間で明確に切り替えるように要求するときに用いられる。パイプライン選択コマンド９１３は、コンテキストが両方のパイプラインのための複数のコマンドを発行しない限り、パイプラインコマンドを発行する前に実行コンテキスト内で１度だけ必要とされる。一実施形態において、パイプラインフラッシュコマンド９１２は、パイプラインがパイプライン選択コマンド９１３により切り替えられる直前に必要とされる。
【００６９】
パイプライン制御コマンド９１４は、オペレーションのためのグラフィックスパイプラインを構成し、３Ｄパイプライン９２２およびメディアパイプライン９２４をプログラミングするべく用いられる。パイプライン制御コマンド９１４は、アクティブなパイプラインのためのパイプライン状態を構成する。一実施形態において、パイプライン制御コマンド９１４は、複数のコマンドのバッチを処理する前に、アクティブなパイプライン内の１または複数のキャッシュメモリからのデータをクリアするべく、パイプライン同期に用いられる。
【００７０】
複数のリターンバッファ状態コマンド９１６は、データを書き込む各パイプライン用の複数のリターンバッファのセットを構成するべく用いられる。いくつかのパイプラインオペレーションは、オペレーションが処理中に中間データを書き込む、１または複数のリターンバッファの割り当て、選択、または構成を必要とする。また、グラフィックスプロセッサは、出力データを格納して相互のスレッド通信を実行するべく、１または複数のリターンバッファも用いる。リターンバッファ状態９１６は、複数のパイプラインオペレーションのセットに用いる複数のリターンバッファのサイズおよび数の選択を含む。
【００７１】
コマンドシーケンスにおける残りの複数のコマンドは、複数のオペレーション用のアクティブなパイプラインに基づいて異なる。パイプラインの決定９２０に基づいて、コマンドシーケンスは、３Ｄパイプライン状態９３０で開始する３Ｄパイプライン９２２、またはメディアパイプライン状態９４０で開始するメディアパイプライン９２４に対して調整される。
【００７２】
３Ｄパイプライン状態９３０のための複数のコマンドは、３Ｄプリミティブコマンドが処理される前に構成される頂点バッファ状態、頂点要素状態、一定な色状態、デプスバッファ状態、および他の状態変数に対する複数の３Ｄ状態設定コマンドを含む。これらのコマンドの値は、用いられる特定の３Ｄ  ＡＰＩに少なくとも部分的に基づいて決定される。それらの要素が用いられない場合、複数の３Ｄパイプライン状態９３０コマンドは、特定のパイプライン要素を選択的に無効またはバイパスすることもできる。
【００７３】
３Ｄプリミティブ９３２のコマンドは、３Ｄパイプラインにより処理される複数の３Ｄプリミティブを送るべく用いられる。３Ｄプリミティブ９３２のコマンドによりグラフィックスプロセッサに渡される複数のコマンドおよび関連付けられるパラメータは、グラフィックスパイプラインにおける頂点フェッチ機能に転送される。頂点フェッチ機能は、複数の頂点データ構造体を生成するべく３Ｄプリミティブ９３２のコマンドデータを用いる。複数の頂点データ構造体は、１または複数のリターンバッファに格納される。３Ｄプリミティブ９３２のコマンドは、複数の頂点シェーダにより複数の３Ｄプリミティブに頂点オペレーションを実行するべく用いられる。複数の頂点シェーダを処理するべく、３Ｄパイプライン９２２は、複数のシェーダ実行スレッドを複数のグラフィックスプロセッサ実行ユニットにディスパッチする。
【００７４】
３Ｄパイプライン９２２は、実行９３４のコマンドまたはイベントによりトリガされる。一実施形態において、レジスタ書き込みは、コマンド実行をトリガする。一実施形態において、実行は、コマンドシーケンスにおける「ｇｏ」または「ｋｉｃｋ」コマンドによりトリガされる。一実施形態において、パイプライン同期コマンドを用いて、グラフィックスパイプラインを介してコマンドシーケンスをフラッシュするコマンド実行がトリガされる。３Ｄパイプラインは、複数の３Ｄプリミティブのためのジオメトリ処理を実行する。複数のオペレーションが完了すると、もたらされる複数の幾何学的オブジェクトがラスタライズされ、ピクセルエンジンは、もたらされるピクセルをカラーリングする。ピクセルシェーディングおよびピクセルバックエンドオペレーションを制御する追加の複数のコマンドもそれらのオペレーションのために含まれ得る。
【００７５】
例示のコマンドシーケンス９１０は、複数のメディアオペレーションを実行する場合、メディアパイプライン９２４のパスをたどる。一般に、メディアパイプライン９２４のためのプログラミングの特定の用途および態様は、メディアまたは実行される演算動作に依存する。特定のメディアデコードオペレーションは、メディアデコード中にメディアパイプラインにオフロードされ得る。メディアパイプラインもバイパスされ得、メディアデコードは、１または複数の汎用プロセッシングコアにより提供される複数のリソースを全体的または部分的に用いて実行され得る。一実施形態において、メディアパイプラインは、汎用グラフィックスプロセッサユニット（ＧＰＧＰＵ）の動作のための複数の要素も含み、グラフィックスプロセッサは、グラフィックスプリミティブのレンダリングに明らかに関係しない演算シェーダプログラムを用いてＳＩＭＤベクトルオペレーションを実行するべく用いられる。
【００７６】
メディアパイプライン９２４は、３Ｄパイプライン９２２と同様に構成される。複数のメディアパイプライン状態コマンド９４０のセットは、複数のメディアオブジェクトコマンド９４２の前のコマンド行列にディスパッチされ、または配置される。複数のメディアパイプライン状態コマンド９４０は、複数のメディアオブジェクトを処理するべく用いられる、複数のメディアパイプライン要素を構成するデータを含む。これは、エンコードまたはデコードフォーマットのようなメディアパイプライン内の動画デコードおよび動画エンコードロジックを構成するデータを含む。複数のメディアパイプライン状態コマンド９４０は、複数の状態設定のバッチを含む「間接的」状態要素に対する１または複数のポインタの使用もサポートする。
【００７７】
複数のメディアオブジェクトコマンド９４２は、メディアパイプラインにより処理するための複数のメディアオブジェクトに複数のポインタを提供する。複数のメディアオブジェクトは、処理されるべき動画データを含む複数のメモリバッファを含む。一実施形態において、全てのメディアパイプライン状態は、メディアオブジェクトコマンド９４２を発行する前に有効でなければならない。パイプライン状態が構成され、複数のメディアオブジェクトコマンド９４２が待ち行列に入れられると、メディアパイプライン９２４は、実行９４４のコマンドまたは同等の実行イベント（例えばレジスタ書き込み）によりトリガされる。次に、メディアパイプライン９２４からの出力は、３Ｄパイプライン９２２またはメディアパイプライン９２４により提供される複数のオペレーションにより後処理され得る。一実施形態において、複数のＧＰＧＰＵオペレーションは、メディアオペレーションと同様に構成され、実行される。
【００７８】
［グラフィックスソフトウェアアーキテクチャ−図１０］
図１０は、一実施形態のよるデータ処理システムのための例示的なグラフィックスソフトウェアアーキテクチャを図示する。ソフトウェアアーキテクチャは、３Ｄグラフィックスアプリケーション１０１０、オペレーティングシステム１０２０、および少なくとも１つのプロセッサ１０３０を含む。プロセッサ１０３０は、グラフィックスプロセッサ１０３２、および１または複数の汎用プロセッサコア１０３４を含む。グラフィックスアプリケーション１０１０およびオペレーティングシステム１０２０は各々、データ処理システムのシステムメモリ１０５０において実行される。
【００７９】
一実施形態において、３Ｄグラフィックスアプリケーション１０１０は、複数のシェーダ命令１０１２を含む、１または複数のシェーダプログラムを含む。複数のシェーダ言語命令は、高水準シェーダ言語（ＨＬＳＬ）またはＯｐｅｎＧＬシェーダ言語（ＧＬＳＬ）のような高水準シェーダ言語によるものであってもよい。アプリケーションは、汎用プロセッサコア１０３４により実行するのに好適な機械言語による複数の実行可能命令１０１４も含む。アプリケーションは、頂点データにより定義される複数のグラフィックスオブジェクト１０１６も含む。
【００８０】
オペレーティングシステム１０２０は、ワシントン州レドモンドのマイクロソフトコーポレーションから利用可能なウィンドウズ（登録商標）オペレーティングシステム、プロプライエタリＵＮＩＸ（登録商標）オペレーティングシステム、またはＬｉｎｕｘ（登録商標）カーネルの変形を用いるオープンソースＵＮＩＸ（登録商標）様式のオペレーティングシステムであってもよい。Ｄｉｒｅｃｔ３Ｄ  ＡＰＩが用いられる場合、オペレーティングシステム１０２０は、フロントエンドのシェーダコンパイラ１０２４を用いて、ＨＬＳＬの任意のシェーダ命令１０１２をより低水準のシェーダ言語にコンパイルする。コンパイルは、ジャストインタイムコンパイルであってもよく、またはアプリケーションは、共有プリコンパイルを実行し得る。一実施形態において、複数の高水準シェーダは、３Ｄグラフィックスアプリケーション１０１０のコンパイル中により低水準のシェーダへとコンパイルされる。
【００８１】
ユーザモードグラフィックスドライバ１０２６は、複数のシェーダ命令１０１２をハードウェア固有の表現に変換する、バックエンドのシェーダコンパイラ１０２７を含んでもよい。ＯｐｅｎＧＬ  ＡＰＩが用いられる場合、ＧＬＳＬ高水準言語のシェーダ命令１０１２は、コンパイルのためにユーザモードグラフィックスドライバ１０２６に渡される。ユーザモードグラフィックスドライバは、カーネルモードグラフィックスドライバ１０２９と通信するべく、オペレーティングシステムカーネルモード機能１０２８を用いる。カーネルモードグラフィックスドライバ１０２９は、複数のコマンドおよび命令をディスパッチするべく、グラフィックスプロセッサ１０３２と通信する。
【００８２】
様々なオペレーションまたは機能が本明細書において説明される限度において、それらはハードウェア回路、ソフトウェアコード、命令、構成、および／またはデータとして説明または定義され得る。コンテンツは、ハードウェアロジックで、または直接に実行可能なソフトウェア（「オブジェクト、または「実行可能な」形式）、ソースコード、グラフィックスエンジン上での実行のために設計された高水準シェーダコード、または特定のプロセッサもしくはグラフィックスコア用の命令セットによる低水準アセンブリ言語コードとして実施され得る。本明細書に説明される複数の実施形態におけるソフトウェアコンテンツは、コンテンツが格納された製造物品、または通信インターフェースを介してデータを送信するように通信インターフェースを動作させる方法により提供され得る。
【００８３】
非一時的機械可読ストレージ媒体の形態の製造物品は、機械に、説明される複数の機能またはオペレーションを実行させる複数の命令を格納し得、記録可能／非記録可能媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス等）のような機械（例えば、コンピューティングデバイス、電子システム等）によりアクセス可能な形態で情報を格納する任意のメカニズムを含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラ等のような別のデバイスに通信するハードワイヤード、無線、光等の媒体のいずれかにインターフェース接続する任意のメカニズムを含む。通信インターフェースは、１もしくは複数のコマンドまたは信号によりアクセスされ得、複数の構成パラメータを含む複数のコマンドを提供し、またはソフトウェアコンテンツを記載するデータ信号を提供する通信インターフェースを準備するべく複数の信号を送信することにより構成され得る。
【００８４】
［グラフィックスプロセッサ実行リソースの動的スケーリング‐図１１〜図２１］
単一のフレーム内で処理される複数のグラフィックスオペレーションは、他のリソースより頻繁にいくつかのグラフィックスプロセッサリソースを用い、または経時的にいくつかのリソースをより頻繁に用いる様々なグラフィックスワークロードを含み得る。複数のグラフィックスコア実行リソースが未使用である場合等のいくつかの状況において、複数の実行リソースは、性能に悪影響を与えることなく「スケールダウン」され得る。換言すれば、リソースの１または複数のインスタンスは、パワーゲーティングされて、より小さい数のインスタンスをアクティブ状態にしてワークロードをサービス提供するために利用可能にし得る。ワークロードが当該リソースをより頻繁に使用する場合、パワーゲーティングされる複数のリソースは、後の時間において再び電源投入され得る。
【００８５】
本明細書に説明されるグラフィックスプロセッサの複数の実施形態は、フレーム中に複数のグラフィックス実行リソースを動的に有効または無効にするための電力管理ロジックを含む。一実施形態において、電力管理ロジックは、各グラフィックスコア内の複数のグラフィックス実行ユニットをスケーリングする。一実施形態において、電力管理ロジックは、グラフィックス処理のフレーム中に複数のグラフィックスコアまたはサブコア（例えば、コアスライスまたはサブスライス）の電力状態を電力管理する。一実施形態において、電力管理ロジックは、複数のグラフィックスサブコア内における実行ユニットの電力状態を管理する。一実施形態において、複数のグラフィックス実行リソースは、使用量に基づいて動的にスケーリングする。一実施形態において、複数のグラフィックス実行リソースは、グラフィックスＡＰＩからの新しいドローコールの受信、コマンドの新しいバッチ（例えば、バッチバッファ）の受信、またはパイプラインフラッシュコマンド（例えば、図９Ｂにおけるパイプラインフラッシュ９１２）の受信等のイベントに応答してスケーリングする。
【００８６】
以下の検討は、リソースの「スケールダウン」および「スケールアップ」を指す。スケールダウン実行リソースは、多数の実行ユニット、グラフィックスコア、またはグラフィックスサブコアがパワーゲーティングされることを意味する。スケールアップ実行リソースは、多数の実行ユニット、グラフィックスコア、またはグラフィックスサブコアの電源をオンにすること（例えば、パワーアンゲーティングすること）を意味する。
【００８７】
図１１は、一実施形態による、スケーラブルな複数のリソースおよび電力制御ユニット（ＰＣＵ）１１４０を含むグラフィックスコア１１００のブロック図である。一実施形態において、グラフィックスプロセッサは、図５のグラフィックスコア５８０Ａ〜Ｎのうちの１つのバージョンであり得るグラフィックスプロセッサコア１１００の複数の例の１または複数を含む。グラフィックスコア１１００は、第１のサブコア１１５０および第２のサブコア１１６０を含み、これらの各々は、ＰＣＵ１１４０によりパワーゲーティングされ得る。第１のサブコア１１５０は、複数のＥＵ１１５２およびサンプラ１１５４を含む。第２のサブコア１１６０は、複数のＥＵ１１６２およびサンプラ１１６４を含む。一実施形態において、各サブコア１１５０、１１６０は、ＥＵ６０８Ａ〜Ｎのスケーラブルなアレイを含む、図６に示される実行リソース６００の変形を含む。例示的なスケーラブルなＥＵアレイは、８つのＥＵを含み、そのうち２つ、４つ、または６つは、動作中にＰＣＵ１１４０によりパワーゲーティングされ得る。一実施形態において、サブコア１１５０、１１６０は各々、１または複数の共有のキャッシュおよびピクセル処理ロジックを含む共有リソース１１７０のセットと結合する。
【００８８】
電力制御ユニット（ＰＣＵ）１１４０は、複数の実行ユニットのスケーリング、複数のグラフィックスコアのスケーリング、または複数のグラフィックスサブコアのスケーリングを管理するように構成され得る。ＰＣＵ１１４０は、グラフィックスコア１１００内に示されるが、電力制御ロジックは、グラフィックスコアの外部か、または図２に示されるプロセッサシステムエージェント２１０内等のＧＰＵの完全に外部にあるロジックモジュール内に存在してもよい。ＰＣＵ１１４０の内部が図１２に更に詳細に示される。
【００８９】
１つのグラフィックスプロセッサコアおよび２つのサブコアが示されるが、ＧＰＵは、２またはそれより多くのグラフィックスコアも含み得、各グラフィックスコアは、３またはそれより多くのサブコアを含む。あるいは、１または複数のサブコアは、専ら低電力動作用に構成されたＧＰＵの複数の変形を製造する場合は省略され、または無効にされ得る。
【００９０】
図１２は、一実施形態による電力制御ユニット１１４０のブロック図である。一実施形態において、電力制御ユニット１１４０は、グラフィックスコア１１００の様々な電力管理パラメータの調整を制御するように構成された電力管理マイクロコントローラ１２００を含む。電力管理パラメータは、現在のハードウェア状態１２１０を含み、これは多数のＥＵを有効にし、またはパワーゲーティングすることにより複数の実行リソースをスケールアップまたはスケールダウンするか否かを判断するべく用いられる。
【００９１】
一実施形態において、ハードウェア状態１２１０は、使用量が閾値未満に低下する場合等、パワーゲーティングが性能に影響を与えることなく可能であり得る場合に、グラフィックス処理の所与のフレーム内で各コアもしくはサブコアおよび複数のフラグウィンドウによるリソース使用量を追跡するように用いられるハードウェアアクティビティカウンタのセットからのデータを含む。ハードウェア状態は、現在のバッチバッファＩＤ番号もしくはパイプラインフラッシュＩＤ番号、用いられるテクスチャの複数のタイプ、または下記の複数のパワーゲーティングロジック動作中に用いられるその他の情報等の情報も含み得る。
【００９２】
未使用の複数のグラフィックスリソースのパワーゲーティングは、グラフィックスプロセッサの電力消費量（例えば、リーク電力）の低減を可能にし得る。電力消費量の低減により、システム性能を低下させることなくバッテリで動作される複数のデバイス内の電力消費量の低減を可能にする。いくつかの状況下で、電力消費量の低減は、アクティブな複数のグラフィックスリソースのクロック周波数が高められることを可能にすることにより高められた性能を可能にし、指定された電力バジェットを超えることなく性能を高めることを可能にし得る。
【００９３】
［アクティブなサブコアにわたる実行ユニットの動的スケーリング］
いくつかの実施形態において、アクティブなＥＵの数を減らすと、グラフィックスプロセッサの最大電流負荷（例えば、ＩＣＣｍａｘ）が低下する。グラフィックスプロセッサの最大電流負荷（例えば、ＩＣＣｍａｘ）の低下により、電力バジェットにより課される限度を超えることなくグラフィックスプロセッサ周波数の増大を可能にし得る。アクティブなＥＵの数がより少ないときに、アクティブな複数のＥＵがより高い周波数で実行され得る。従って、複数の実行ユニットの動的スケーリングは、実行リソースにより限定されないグラフィックスワークロードを実行する場合に、ＩＣＣｍａｘが限られた製品に対して、いくつかの例において、測定可能な性能の利点を提供し得る。
【００９４】
しかし、複数の実行リソースを広範に使用するグラフィックスワークロードにおいては、性能の著しい低下は、スケールダウンされたオペレーション中に現実のものとなり得る。ＥＵスケーリングに対する複数の実験結果は、ＥＵ使用量が複数のＥＵスケーリングモードにわたって類似の形状およびプロファイルを維持するが、１ＥＵ当たりの使用量は、ＥＵがスケールダウンされて、オペレーションが完了するのにより長い時間がかかる場合により高くなることを示す。しかし、スケールダウン構成に基づく複数のオペレーションは、ＥＵ使用量が高い期間中にスケールアップされた構成に対して著しく大きな性能ペナルティを現実のものとする。なぜならスケールダウンされたＧＰＵは、複数のオペレーションを実行するべくより少ない演算リソースを提供するからである。更に、実行リソースを減らすと、ＥＵ使用量が高い期間が長くなる結果となり得、これにより複数の実行リソースをスケールダウンすることからもたらされる電力節減を限られたものにする場合がある。
【００９５】
図１３は、ゲームアプリケーションのフレーム中の３つの例示的なグラフィックスプロセッサコアにおける実行ユニット（ＥＵ）の使用量のグラフである。３つのグラフィックスプロセッサユニット（ＧＰＵ）コアの各々は、３つのサブコア（コアのサブスライスと称される場合がある）を含む。３つのサブコアの各々は、合計２４個、１８個、または１２個のＥＵに対して８個、６個、または４個のＥＵを各々有する。例示的なグラフにおけるＥＵ使用量は、複数のＥＵ浮動小数点ユニット上で実行される命令の数およびタイプに基づいて演算され、１０，０００クロックにわたって平均される。すなわち、図における各曲線の各点は、１０，０００クロックにわたる平均ＥＵ使用量を表す。破線は、３×４のＧＰＵコアの使用量１３０４を表し、実線は、３×６のＧＰＵコアの使用量１３０６を表し、点線は、３×８のＧＰＵコアの使用量１３０８を表す。
【００９６】
例えば、グラフ領域１３０２および１３１０において、３つの全ての場合に３つのＧＰＵの使用量が類似の「形状」（高さおよび低さ）を有することが分かり得る。しかし、より少ない実行リソースを用いるＧＰＵの使用量曲線は、より大きな実行リソースの量を有する複数のＧＰＵの使用量曲線に対して時間的にシフトされる。各ＧＰＵは、同一のワークロードを実行するが、より少ない実行リソースを有する複数のＧＰＵは、ワークロード毎により長い処理期間を必要とする。更に、最も少ない実行リソースを有するＧＰＵの使用量曲線は、著しく大きな時間シフトを受け、高い使用量の各期間（例えば、７０％〜８０％より高い）後に継続的な性能ペナルティを示す。従って、本明細書に説明されるグラフィックスプロセッサの複数の実施形態は、ＧＰＵ実行リソースが現在のＧＰＵワークロードに対して著しく小さくなるシナリオを阻止するように構成されたＥＵスケーリングシステムを使用する。
【００９７】
ＥＵ使用量が高い期間中は、アクティブなＥＵの数は、スケールアップされて、追加の複数の実行リソースを実行する複数のグラフィックスアプリケーションに提供し得る。追加の複数のリソースは、改善されたグラフィックス性能を提供し得る。しかし、スケールアップ移行期間中に実行される複数のグラフィックスオペレーションは、追加の複数のＥＵがアクティブになるまで、継続して性能の低下を現実のものとする場合がある。移行における性能ペナルティに対処するべく、ＥＵの数は、ＥＵ使用量が高い次の期間の主要な複数のインジケータに基づいて予めスケールアップされ得る。
【００９８】
図１４は、複数の新しいドローコールの発信を強調表示する例示的な３×８のＧＰＵの使用量のグラフである。使用量１４０８は、３×８のＧＰＵについて実線で示され、図１３における３×８のＧＰＵの使用量１３０８と相互に関係する。３×８の使用量１４０８に沿った各「ｘ」１４１８は、最後の１０，０００クロック中における１または複数の新しいドローコールのＧＰＵへの発信を示す。各々の新しいドローコールについて、複数のＥＵに新しい複数のワークロードを処理するための動作を実行させる。従って、新しいドローコールは一般に、ＥＵ使用量における増加と相互に関係する。例えば、グラフ領域１４０２内では、多数の新しいドローコールが発信され、８０〜９０の高さの使用量が観察される。これは、ＧＰＵにより新しいドローコールが受信されず、使用量が依然として安定しているグラフ領域１４０４と対照的である。従って、少なくとも一実施形態は、ＥＵ使用量が高い切迫した期間の指標としてＧＰＵへの複数の新しいドローコールの発信を用いる。
【００９９】
図１５は、一実施形態による、複数のグラフィックスプロセッサ実行ユニットのスケーリングを管理するためのロジックのフロー図である。電力ユニット（例えば、図１２のＰＣＵ１１４０）は、ブロック１５０２に示されるように、アクティブなＧＰＵをモニタリングするように構成され得る。電力ユニットは、ブロック１５０４に示されるように、ＥＵ使用量およびドローコール発信を含む複数のパラメータをモニタリングする。一実施形態において、ＧＰＵは、ＥＵ使用量に関する複数の性能統計値を出力するように構成され、これらの性能統計値は、ある期間にわたる複数のＥＵの浮動小数点ユニット（ＦＰＵ）において実行される命令の数およびタイプに基づいて演算され得る。一実施形態において、複数の性能統計値は、ＧＰＵにより提供される複数の性能カウンタのセットにより報告される。一実施形態において、この期間は１０，０００クロックであるが、期間は実施形態により異なり得る。全ＥＵ使用量を判断するべく、ピーク使用量および平均使用量の両方が用いられ得る。一実施形態において、ＧＰＵは、複数の新しいドローコールのハードウェアへの発信にフラグを立てるハードウェア信号を出力するように構成される。信号は、ＧＰＵに発信される複数の新しいドローコール毎、または多数のクロック内で発信される新しいドローコールのグループ毎に１回アサートし得る。一実施形態において、ＧＰＵのためのソフトウェアグラフィックスドライバは、複数の新しいグラフィックスオペレーションの間近に迫った発信を示し得る。
【０１００】
電力ユニットは、ブロック１５０６に示されるように、複数の新しいドローコールが発信されたか否かを周期的に判断する。新しいドローコールが検出されなかった場合、電力ユニットは、ブロック１５１０に示されるように、現在のＥＵ使用量に基づいて複数のＥＵをスケーリングする。しかし、ブロック１５０８に示されるように、複数の新しいドローコールが発信されたことを電力ユニットが検出すると、ＧＰＵに信号が送信され、利用可能な全てのＥＵを有効にする。全てのＥＵが有効にされると、モニタは、ブロック１５０４におけるＥＵ使用量およびドローコール発信のモニタリングに戻り得る。
【０１０１】
複数のドローコールのＧＰＵへの発信は概して、ＥＵ使用量が高い切迫した期間を示すが、ドローコール発信は、ＥＵ使用量が高い期間を生じさせない可能性がある。従って、使用量が高い期間がドローコール発信から生じない場合、スケールアップされた複数のＥＵは次に、スケールダウンされ得る。一実施形態において、モニタウィンドウおよび決定ウィンドウを用いるより詳細なアルゴリズムは、現在および予測されるＥＵ使用量に基づいて複数の実行リソースを正確に評価してスケーリングし得る。各モニタウィンドウ中に、複数のＥＵ使用量統計値が収集される。決定ウィンドウの終了時に、図１２の電力マイクロコントローラ１２００のようなステートマシンまたは組み込み電力管理マイクロコントローラが収集された複数の統計値を評価する。次に、マイクロコントローラは、複数のＥＵをスケールアップまたはスケールダウンするか否かを判断し得る。マイクロコントローラアルゴリズムは、図１６〜図１７においてより詳細に検討される。
【０１０２】
図１６は、一実施形態による、電力コントローラにより複数の実行ユニットのスケーリングを管理するための追加のロジックのフロー図である。一実施形態において、Ｘマイクロ秒（μｓ）の「モニタ」ウィンドウおよびＹμｓの「決定」ウィンドウが、ブロック１６０２に示されるように規定される。ＸおよびＹの値は予め定められ、またはランタイムで構成可能であり得る。例示的なモニタウィンドウＸは５０μｓであり、例示的な決定ウィンドウＹは５００μｓである。しかし、モニタウィンドウおよび決定ウィンドウに関連する複数の値は、より大きいか、もしくはより小さくなり得、または同一の値を有し得る。概して、決定ウィンドウ値に対するより小さいモニタウィンドウ値は、より高度の粒度があるＥＵ使用量データの収集を可能にし、これにより使用量における短い期間の複数のピークを検出することを可能にする。
【０１０３】
ブロック１６０４に示されるように、モニタ・決定サイクルは、複数の新しいドローコールまたは他の関連する複数のグラフィックスオペレーションが発信されたか否かの判断から開始し得る。ブロック１６０６に示されるように、複数の新しいドローコールが発信されると、現在の使用量レベルに関係なく、利用可能な全てのＥＵがアクティブ化される。ドローコールが受信されたときに全てのＥＵをアクティブ化することにより、演算上極端なワークロードを予期せずに受信するリスクを低減し得る一方、複数の実行リソースがスケールダウンされる。新しいドローコールがＧＰＵに発信されない場合、ブロック１６０８に示されるように、現在の複数のＥＵ使用量統計値が演算される。一実施形態において、これらのＥＵ使用量統計値は、ブロック１６１０に示されるように、モニタウィンドウが終了するまでモニタウィンドウ全体にわたり演算される。モニタウィンドウが終了すると、ブロック１６１２に示されるように、ＥＵ使用量統計値が格納され、ブロック１６１４に示されるように、決定ウィンドウが終了したか否かを判断するべく確認される。
【０１０４】
一実施形態において、ブロック１６１４で現在の決定ウィンドウが終了したと判断された場合、ブロック１６１６に示されるように、複数のＥＵを有効にし（例えば、パワーアンゲーティング）、またはパワーゲーティングすることにより複数の実行リソースをスケールアップまたはスケールダウンすることが決定される。一実施形態において、ブロック１６１６に示されるＥＵスケーリングに関連する複数のハードウェアレイテンシは、上記のブロック１６０２に示されるように規定される、決定ウィンドウの期間に関連するＹ値に対して最小の限度を課す。一実施形態において、パワーゲーティングに対して選択された複数のＥＵの実行パイプラインは、完了することができる。更に、ＧＰＵ周波数は、複数のＥＵの有効にされたセットに関連するＩＣＣｍａｘの限度に一致するようにより高いか、またはより低い値にプログラミングされてもよい。従って、決定ウィンドウに対する最小の期間は、複数のＥＵを有効または無効にすることに関連する複数のレイテンシにより制限され得る。いくつかの実施形態は、毎数百ミリマイクロ秒以下の頻度で決定ウィンドウを終了させるように構成され得る。
【０１０５】
ブロック１６１６に示されるように、電力コントローラは、各決定ウィンドウの後に、格納された複数のＥＵ使用量統計値に応じてＥＵカウント値をスケーリングし得る。アルゴリズムまたはスケーリングポリシは、最後の決定ウィンドウにわたるピーク使用量および平均使用量の両方に基づいて次の決定ウィンドウ中にアクティブ化または非アクティブ化する多数のＥＵを選択するべく使用され得る。例示的なＥＵスケーリングアルゴリズムが図１７に示される。
【０１０６】
図１７は、一実施形態による複数のグラフィックス実行リソースのためのスケール係数を決定するためのロジックのフロー図である。スケーリングアルゴリズムは、ブロック１７０２に示されるピーク使用量およびブロック１７０６に示される平均使用量を含む、電力コントローラにより収集される複数の使用量統計値中の様々なデータ要素を考慮するように構成され得る。ブロック１７０２において、電力コントローラは、ピーク使用量を分析し、ブロック１７０４に示されるように、ピーク使用量が決定ウィンドウ内の最後のモニタウィンドウにわたって決定閾値を超えたか否かを判断する。複数のモニタウィンドウが各決定ウィンドウ内に含まれ得、スケーリングアルゴリズムは、複数のモニタウィンドウにわたるピーク使用量および平均使用量を考慮するように構成され得る。一実施形態において、例えば、現在の決定ウィンドウ内の複数のモニタウィンドウのうちの少なくとも２つにおいて、ピーク使用量が８０％を超えることをブロック１７０２における分析が示す場合、電力コントローラは、ブロック１７１０に示されるように、全てのＥＵを有効にし得る。
【０１０７】
同様に、ブロック１７０６において、複数の使用量統計値が、ブロック１７０８に示されるように平均使用量が決定閾値を超えたことを示す場合、電力コントローラは、ブロック１７１０に示されるように、全てのＥＵを有効にし得る。一実施形態において、１または複数のモニタウィンドウにわたる平均使用量が６０％を超える場合、全てのＥＵが有効にされる。しかし、ピーク使用量および平均使用量に対する厳密な閾値は、ワークロード毎に動的に判断され得、複数の実行リソースをスケールアップおよびスケールダウンするための閾値は、異なり得る。複数の使用量統計値の分析が決定ウィンドウに対して設定されたピークも平均閾値も超えていないことを示す場合、電力コントローラは、ブロック１７１２に示されるように、次の決定ウィンドウ中に複数のＥＵのサブセットのみを有効にし得る。
【０１０８】
有効にされる複数のＥＵのサブセットは、複数のＥＵリソースのスケールダウンおよび複数のＥＵのサブセットのパワーゲーティングをもたらし得る。あるいは、ＥＵ使用量が前の決定ウィンドウにわたって低かった場合、たとえ複数のＥＵのサブセットのみが有効にされるにしても、現在のＥＵ使用量は、複数のＥＵリソースをスケールアップさせ得る。一実施形態において、実験結果は、いくつかの実行リソースが用いられることを２０％未満の使用レートが示すと指摘するが（例えば、ＧＰＵ全体、コア、またはサブコアが電源をオフにされるべきではない）、複数のＥＵのスケールダウンされたセットは、現在の実行グラフィックスオペレーションの必要性を満たすには十分であり得る。しかし、使用量が一貫して６０％を超える場合、利用可能な全てのＥＵを有効にすることが有益である。使用量とＥＵスケーリングとの間の例示的なマッピングが以下の表１に示される。表１は、複数のサブコアを有するグラフィックスコアに対応し、各サブコアは、８つのＥＵのアレイを含む。使用量とＥＵスケーリングとの間の厳密な関係は、複数の実施形態間で異なり得る。
【表１】
0006432894.tif 000002
【０１０９】
［コアおよびサブコアの動的スケーリング］
グラフィックスプロセッサ内のグラフィックスコアまたはサブコア（例えば、スライスまたはサブスライス）の数は、予期されるグラフィックスプロセッサのワークロードに基づいて静的または半静的に調整され得、より多くの演算もしくはテクスチャフィルタリングリソースを必要とする複数のワークロードは、最大数の利用可能なグラフィックスコアまたはサブコアを使用することを可能にされ得るが、より少ないリソースを必要とする複数のワークロードは、ＧＰＵにより消費される電力を低減するべく、多数のコアまたはサブコアの電源をオフにすることを可能にされ得る。静的な調整のために、用いるコアまたはサブコアの数の決定は、ワークロードの始めまたはワークロードの各フレームの始めにおいて行われる。例えば、グラフィックスリソースの広範な使用を必要としないカジュアルゲームを実行する場合等の軽いワークロードについては、多数のコアまたはサブコアがフレームの始めにおいてパワーゲーティングされ得る。
【０１１０】
一実施形態において、複数のグラフィックスプロセッサは、フレームの変化する特性に基づいてグラフィックス処理フレーム内のコアまたはサブコアの数を動的にスケーリングするようにも構成され、ＧＰＵが各フレームの異なる複数の部分においてより大きいか、またはより小さい数のコアまたはサブコアで動作することを可能にし、これにより性能を下げることなく電力消費量を更に低減する。以下の検討における一部は、コアおよびサブコアという用語を相互に交換可能に用いる。一実施形態において、説明されるスケーラビリティのコンセプトは、動的なコアまたはサブコアのスケーリングに等しく適用されるからである。
【０１１１】
図１８は、３Ｄグラフィックスアプリケーションのフレームを処理するときの例示的なグラフィックスサブコアの使用量１８０２のグラフである。各サブコアについて示される使用量１８０２は、サブコアにより提供される複数の実行リソース、テクスチャ処理リソース、ピクセル処理リソース、および他のリソースの使用量を含む。示される例示的なグラフィックスサブコアの使用量は、グラフィックスサブコア（およびグラフィックスコア）の使用量がフレーム中で動的に変わり得ることを示す。例えば、グラフ領域１８０８、１８１０、および１８１２は各々、使用量が概して５０％未満であるウィンドウを示す。その全てにおいて、使用量は、フレームの合計処理時間のおよそ３分の１においてより低い。本明細書において説明されるグラフィックスプロセッサの複数の実施形態は、性能に悪影響を与えることなく電力消費量を低減するべく、より低い使用量のこれらのウィンドウ中にグラフィックスプロセッサ内の複数のグラフィックスサブコアまたはコアのうちの少なくとも１つをパワーゲーティングし得る。一実施形態において、性能に影響を与えることなくパワーゲーティングが可能である場合（例えば、グラフ領域１８０８、１８１０、１８１２におけるように使用量が特定の閾値未満に低下する場合）、複数のハードウェアアクティビティカウンタは、コアまたはサブコアの使用量を追跡し、フレーム内のウィンドウにフラグを立てるべく用いられる。複数のハードウェアアクティビティカウンタは、サブコアにより提供される複数の実行リソース、テクスチャ処理リソース、ピクセル処理リソース、または他のリソースに対する使用量基準を追跡し得る。
【０１１２】
しかし、フレーム中の任意のポイントでグラフィックスコアまたは複数のコアスライスをパワーゲーティングまたはアンゲーティングすることは可能でない場合がある。複数のグラフィックスプロセッサ実行ユニット（例えば、ＥＵ）は、フレーム内でより自由に有効または無効にされ得るが、各グラフィックスコアまたはサブコアは、他の複数のコアまたはサブコアにより用いられる複数のリソース（例えば、キャッシュリソース、テクスチャサンプラ等）を含み得る。更に、各コアまたはサブコアは、スレッド内のオペレーションが完了する前にインタラプトされるべきでない複数のアクティブなスレッドを含み得る。
【０１１３】
図１８の例示的なグラフは、グラフィックスサブコアが新しいバッチバッファ（例えば、新しいＢＢ１８０４）または新しいパイプラインフラッシュ（例えば、新しいフラッシュ１８０６）を処理するフレーム中の複数の例を示す。一実施形態において、各々の新しいバッチバッファ１８０４または新しいフラッシュ１８０６は、ＧＰＵがコアまたはサブコアをスケールアップまたはスケールダウンし得る例を表す。新しいバッチバッファ１８０４が処理されるとき、グラフィックスサブコアは、少なくとも部分的に同時に処理される複数のコマンドのグループを処理することを開始し、いくつかのコマンドが並行して実行される。パイプラインフラッシュ１８０６のコマンドが処理されるときに、任意のアクティブなグラフィックスパイプラインが現在保留中の全てのコマンドを完了する。従って、フレーム処理中の新しいバッチバッファ１８０４および新しいフラッシュ１８０６の例は、グラフィックスコアおよびサブコアが無効または有効にされ得る（例えば、パワーゲーティングまたはアンゲーティングされる）クリーンなオペレーションの境界を表す。従って、各々のグラフィックスコアまたはサブコア内で複数のＥＵを無効または有効にすることにより複数の実行リソースを動的にスケーリングすることに加え、本明細書に説明されるグラフィックスプロセッサの複数の実施形態は、オペレーションの境界において複数のグラフィックスコアまたはサブコアを無効または有効にして複数のグラフィックスプロセッサリソースを動的にスケーリングしつつ、複数のグラフィックスオペレーションのフレームを処理するためのロジックを含む。
【０１１４】
複数のグラフィックスオペレーション中に特定のウィンドウ内におけるグラフィックスコア、サブコア、または複数のＥＵリソースに基づいて複数のグラフィックスプロセッサリソースをスケーリングすることに加え、本明細書に説明されるグラフィックスプロセッサの複数の実施形態は、次の期間の使用量を予測するための追加のロジックを含む。上記のように、ＥＵ使用量が高い次の期間は、複数の新しいドローコールと相互に関係付けられ得る。更に、グラフィックスアプリケーションのための複数のグラフィックスオペレーションの単一のフレーム内におけるグラフィックスコアの使用量のパターンは、同一のグラフィックスアプリケーションの連続する複数のフレーム内のグラフィックスコアの使用量のパターンに相互に関係付けられ得る。従って、複数の実施形態は、使用量が低い複数のウィンドウを予想し、使用量が低いの複数のウィンドウにおける始めまたは終わり付近の適切なバッチバッファまたはパイプラインフラッシュの境界において複数のリソースをパワーゲーティングまたはアンゲーティングするための予測ロジックを含む。予測ロジックは、更に、現在実行されているワークロードに対してグラフィックスプロセッサのリソースが不足する場合を低減することによりスケールダウンされた複数のグラフィックス実行リソースの期間中に性能全体に影響を与えることを阻止するべく、電力管理動作を改善する。
【０１１５】
図１９および図２０は、３Ｄグラフィックスアプリケーションの連続する複数のフレームを処理するときの例示的なグラフィックスサブコアの使用量のグラフである。連続する複数のフレームは、図１８に示されるフレームに続く。グラフィックスアプリケーションの各フレームの処理中における複数のグラフィックスサブコアの使用量は同一でない場合があるが、使用量のパターンは類似し得る。例えば、図１９におけるグラフ領域１９０８、１９１０、および１９１２は、図１８に示されるグラフ領域１８０８、１８１０、および１８１２と相互に関係する使用量を示す。図２０のグラフ領域２００８、２０１０、および２０１２は、図１８のグラフ領域１８０８、１８１０、および１８１２、ならびに図１９のグラフ領域１９０８、１９１０、および１９１２と相互に関係する使用量を示す。従って、これらの例示的なグラフは、いくつかの実施形態において、サブコアの使用量が連続する複数のフレームにわたり高いアクティビティおよび低いアクティビティの類似した複数のウィンドウを伴う類似のパターンに従っていることを示す。一実施形態において、フレームにわたって観察されるグラフィックスプロセッサ使用量のパターンは、連続するフレーム内のグラフィックスプロセッサ使用量を予測し、またはこの予測を改善するべく用いられる。
【０１１６】
図２１は、一実施形態による、グラフィックスオペレーションのフレーム内におけるグラフィックスコアまたはサブコアのスケーリングを管理するためのロジックのフロー図である。図示される複数のロジック動作は、例えば図１２のＰＣＵ１１４０により、あるいはＧＰＵ内の１もしくは複数の他のコンポーネント、またはＧＰＵのためのドライバソフトウェアと組み合わせて実行され得る。一実施形態において、これらのロジック動作は、ＧＰＵについて全体として決定されるが、一実施形態は、コアまたはサブコア毎のベースで図示される動作を実行する。これらの動作は、グラフィックスプロセッサのタイプ、実行周波数、およびグラフィックスワークロード等の複数の要因に基づいて数百マイクロ秒〜数ミリ秒の範囲の規則的な時間間隔で反復されてもよい。
【０１１７】
ブロック２１０２で、各サイクルが開始するときに、複数の使用量カウンタが読み取られ、最後の時間間隔にわたるグラフィックスコアまたはサブコアの使用量を判断する。一実施形態において、使用量情報は、フレーム中に記録され、次のフレーム内における使用量を予測するときに用いるためのより高い使用量およびより低い使用量のウィンドウが識別される。複数の使用量カウンタが読み取られるときに、状態情報が読み取られ、フレームの複数のオペレーションのセット内における現在の位置を判断し得る。多くの場合、連続した複数のフレームが類似の複数のタスクを実行することを考慮して、前の複数のフレーム中に記録される現在のバッチバッファＩＤ番号またはパイプラインフラッシュＩＤ番号等の状態情報は、使用量が高いか、または低い複数の期間と相互に関係付けられ、次に、連続する複数のフレームの使用量を予測するべく用いられ得る。
【０１１８】
記録された状態情報の細部を向上させることにより、連続する複数のフレームにわたる使用量予測の精度を高めることができる。しかし、記録された状態の細部を向上させると、記録された状態を収集して維持し、分析するのに必要とされるオーバヘッドの量も増大させる。一実施形態において、状態情報は、１または複数のホストプロセッサを用いるホストシステム上で実行されるグラフィックスドライバソフトウェアにより記録される。そのような実施形態において、少量の状態情報が記録されて、グラフィックスプロセッサの製造コストの低減という利益のために低下した予測精度を生じすることになる。一実施形態において、システム内の他のプロセッサに対してオーバヘッドの増大を課すことなくより大量の状態情報を読み取って分析するための専用の電力管理マイクロコントローラ（例えば、図１２の電力マイクロコントローラ１２００）が含まれる。
【０１１９】
ブロック２０１４において、状態情報は、フレーム内の使用量が低いウィンドウ内、および例えば新しいバッチバッファまたはパイプラインフラッシュオペレーション等のパワーゲーティングオペレーションの境界にもＧＰＵがあるか否かを判断するべく用いられる。両方の条件が真である場合、ＧＰＵは、ブロック２１０６に示されるように、１もしくは複数のグラフィックスサブコアまたはグラフィックスコアをパワーゲーティングし得る。一方または両方の条件が真でない場合、ロジック動作は、ブロック２１０８に進み、ＧＰＵが、使用量が低い期間の終わり付近にあるか否か、またパワーアンゲーティング境界上にあるか否かが判断される。ＧＰＵが、使用量が低いウィンドウの終わり付近にあり、グラフィックスプロセッサコアまたはサブコアがアンゲーティングされ得るオペレーションの境界上にあると判断される場合、ロジックは、ブロック２１１０に進むように構成されており、現在パワーゲーティングされる複数のコアもしくはサブコアのうちの１もしくは複数は、アンゲーティングされる。一実施形態においては、ブロック２１０４で、ＧＰＵが、使用量が低いウィンドウ内にあり、パワーゲーティング境界上にあると判断されても、ロジックは、使用量が低いウィンドウの終わりにＧＰＵがあるか否かを判断することも試み得る。そのような場合、ブロック２１０６に示されるパワーゲーティングオペレーションは、バイパスされてもよい。
【０１２０】
ブロック２１１２において、ロジックは、ＧＰＵ、コア、またはサブコアがグラフィックスオペレーションのフレームの終わりにあるか否かを判断する複数の動作を実行する。フレームが終了していない場合、ロジックは、ブロック２１０２に図示される動作に戻り、追加のサイクルを開始する。一実施形態において、ロジックは、ブロック２１１４に進み、ブロック２１１６に示されるように次のフレームに移動する前に、次のフレームまたは複数のフレームのセットの使用量を予測するべく用いられる終了したフレームについて、使用量および状態プロファイルを記録する。使用量および状態プロファイルは、各フレームの終わりで記録されて、次のフレームまたは連続する複数のフレームの次のグループの使用量を予測するべく用いられ得る。一実施形態において、使用量および状態プロファイルは、複数のフレームの間隔毎に記録され、複数のフレームの次の間隔にわたる使用量を予測するべく用いられる。
【０１２１】
従って、図示されるロジックは、複数の実行リソースが必要とされる前にそれらの十分なリソースを有効にするように構成可能である。ＧＰＵ状態情報は、現在の複数の使用量カウンタを考慮して分析され得、先行する複数のフレーム中に収集された情報に基づいて現在のフレーム内の使用量が高いウィンドウおよび低いウィンドウを予測する情報と組み合わされ得る。従って、パワーゲーティングされたいずれのグラフィックスコアまたはサブコアも、使用量が高い期間に入る前に再度有効にされ得る。
【０１２２】
本明細書において用いられるように、１または複数の「実施形態」を参照する場合、少なくとも一実装に含まれる特定の機能、構造、または特性を説明するものとして理解されるものである。従って、「一実施形態において」または「代替的実施形態において」のような文言が本明細書において現れる場合、各々は様々な実施形態および実装を説明し、全てが同一の実施形態を必ずしも指すわけではない。しかし、これらも相互に必ずしも排他的ではない。
【０１２３】
複数の実行ユニットおよびグラフィックスサブコアを含むグラフィックスプロセッサリソースの動的スケーリングに関して上記に開示された様々な実施形態は、一般的な用途を集積回路に見出し得る。一実施形態において、利用可能な複数のＥＵは、複数の実行ユニットの現在の使用量レート、およびＯｐｅｎＧＬもしくはＤｉｒｅｃｔ  ３Ｄ等の３ＤグラフィックスＡＰＩを含むグラフィックスＡＰＩからの複数の新しいドローコールの発信等の複数の基準に基づいてスケールアップまたはスケールダウンされる。グラフィックスプロセッサ等の集積回路装置は、グラフィックスＡＰＩの呼び出し（例えば、ドローコール）の発信等、複数の受信イベントに基づいて、低い使用量にある間に複数のＥＵの一部を無効にし、複数のＥＵの一部を有効にし得る。複数のＥＵのサブセットが無効にされると、有効にされた複数のＥＵの周波数は、電力消費量および電流負荷を増大させることなく高められ得る。一実施形態において、電力制御ユニット（ＰＣＵ）は、装置と結合し、またはこの中で統合され、複数の実行ユニットをいつパワーゲーティングするかを決定するためのロジックを含む。一実施形態において、ＰＣＵは、グラフィックスサブコアまたはグラフィックスコアをパワーゲーティングまたはパワーアンゲーティングし、サブコアコア内の複数のリソースを無効または有効にし得る。一実施形態において、複数のサブコアまたはコアのパワーゲーティングは、新しいバッチバッファまたはパイプラインフラッシュオペレーション等、クリーンなオペレーションの境界で行われる。オペレーションの境界の判断は、ＧＰＵハードウェアまたはＧＰＵのグラフィックスドライバにより行われ得る。オペレーションの境界は、複数のオペレーションをＧＰＵに発信するとき、またはＧＰＵによるオペレーションのとき、あるいは受信のときに判断され得る。
【０１２４】
一実施形態は、グラフィックス処理ユニット（ＧＰＵ）を含むシステムを備える。ＧＰＵは、１または複数のグラフィックスコアを含み、各グラフィックスコアは、複数の実行ユニットのアレイを含む。システムは、ＧＰＵに結合されたＰＣＵも含む。ＰＣＵは、複数の実行ユニットの使用量が第１の閾値未満の場合に、各グラフィックスコアの複数の実行ユニットのアレイにおいて１または複数の実行ユニットをパワーゲーティングするためのロジックを含む。ＰＣＵは、ＧＰＵが新しいグラフィックスオペレーションを受信した場合に、各グラフィックスコアにおける全ての実行ユニットを有効にするためのロジックも含み得る。ＰＣＵは、使用量が第１の閾値を超える場合にパワーゲーティングされる複数の実行ユニットのうちの１または複数を有効にし、使用量が第２の閾値を超える場合に各グラフィックスコアにおける全ての実行ユニットを有効にするためのロジックを更に含み得る。一実施形態において、第１の閾値は２０％であり、第２の閾値は６０％である。一実施形態において、複数の閾値が動的に調整可能である。
【０１２５】
一実施形態において、ＧＰＵはロジックを含み、または複数の実行ユニットの使用量を報告するように別途構成される。一実施形態において、ＰＣＵは、ＧＰＵをモニタリングして複数の実行ユニットの使用量を判断するように構成される。一実施形態において、ＧＰＵは、新しいグラフィックスオペレーションが受信されたことを示す信号を有効にするためのロジックを含む。信号は、オペレーションが受信される度に、または多数のオペレーションがある期間にわたって受信される場合に有効にされ得る。
【０１２６】
一実施形態において、ＧＰＵをモニタリングするように構成されたロジックは、モニタウィンドウを規定することによりＥＵスケーリングを決定することと、モニタウィンドウ中に複数の実行ユニットのセットについて複数の使用量統計値を演算することと、モニタウィンドウが終了した場合に使用量統計値を格納することとを含む。一実施形態において、複数のＥＵのサブセットをパワーゲーティングするためのロジックは、決定ウィンドウを規定することと、決定ウィンドウが終了した場合に、格納された複数の使用量統計値を取得することと、使用量が第１の閾値未満であることを格納された複数の使用量統計値が示す場合に、複数のＥＵのサブセットをパワーゲーティングすることとを含む。一実施形態において、使用量が第１の閾値を超えることを使用量統計値が示す場合、パワーゲーティングされる複数のＥＵの一部が有効にされる。一実施形態において、使用量が第２の閾値を超える場合、全てのＥＵが有効にされる。各ＥＵのＥＵ使用量は、ＥＵ内の浮動小数点ユニット（ＦＰＵ）の使用量により判断され得る。
【０１２７】
一実施形態において、ＧＰＵにおける複数のグラフィックスリソースをスケーリングするための方法は、ＧＰＵについての複数の使用量基準を読み取る段階と、グラフィックス状態情報を読み取り、複数のグラフィックスオペレーションのフレーム内における現在のグラフィックスオペレーションの位置を判断する段階とを備え、基準は、ＧＰＵのグラフィックスコアまたはサブコアの使用量データを含む。方法は、ＧＰＵのグラフィックスコアまたはサブコアをパワーゲーティングまたはパワーアンゲーティングする段階を更に備え、現在のグラフィックスオペレーションは、コアまたはサブコアの使用量が低いウィンドウ内にあり、グラフィックスコアまたはサブコアが有効または無効にされることを可能にするオペレーションの境界上にある。一実施形態において、オペレーションの境界は、グラフィックスオペレーションまたはパイプラインフラッシュオペレーションの新しいバッチバッファにおけるオペレーションを含む。一実施形態において、方法は、使用量が低いウィンドウの終わり付近のグラフィックスコアまたはサブコアをパワーアンゲーティングする段階を更に備える。使用量が低いウィンドウの終わりは、複数のグラフィックスオペレーションのフレーム内の現在のグラフィックスオペレーションの位置、および複数のグラフィックスオペレーションの前のフレームの複数の使用量基準に基づいて予測され得る。一実施形態において、方法は、複数のグラフィックスオペレーションのフレームを完了させる段階と、フレームについての複数の基準および状態情報を格納する段階と、格納された基準および状態情報に基づいて次のフレームに対する複数の使用量ウィンドウのセットを予測する段階とを更に備える。
【０１２８】
本明細書および特許請求の範囲における「第１の」、「第２の」、「第３の」、「第４の」等の用語は、もしあれば、類似の複数の要素を区別するのに用いられ、特定のシーケンシャルまたは時系列の順序を説明するのには必ずしも用いられない。そのように用いられる用語は、適切な条件下で相互に交換可能であり、従って本明細書において説明される複数の実施形態は、例えば、本明細書において説明され、または別途図示されるもの以外のシーケンスで動作することができることを理解されたい。
【０１２９】
説明される様々なコンポーネントは、説明される動作または機能を実行するための手段であり得る。本明細書に説明される各コンポーネントは、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。複数のコンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア（例えば、特定用途向けハードウェア、特定用途向け集積回路（ＡＳＩＣ）、（ＤＳＰ）等）、エンベデッドコントローラ、ハードワイヤード回路等として実装され得る。本明細書において説明されるもの以外に、その範囲を逸脱することなく、開示される実施形態および実装に対して様々な修正が行われ得る。従って、本明細書における図示および例は、限定的な意味ではなく例示的な意味に解釈されるべきである。本発明の範囲および趣旨は、以下の特許請求の範囲を参照することのみにより判断されるべきである。
［項目１］
複数のグラフィックス実行ユニットと、
上記複数のグラフィックス実行ユニットの使用量をモニタリングするための第１のロジックと、
グラフィックスオペレーションを検出するための第２のロジックと、
上記使用量に基づいて上記複数のグラフィックス実行ユニットの第１の部分をパワーゲーティングし、上記グラフィックスオペレーションの上記検出に応答して上記複数のグラフィックス実行ユニットの上記第１の部分をアンゲーティングするための第３のロジックとを備える、装置。
［項目２］
上記第３のロジックは、上記使用量に基づいて上記複数のグラフィックス実行ユニットの上記第１の部分を更にアンゲーティングする、項目１に記載の装置。
［項目３］
上記複数のグラフィックス実行ユニットの上記使用量は、浮動小数点ユニットの使用量であり、
上記グラフィックスオペレーションは、グラフィックスプログラミングインターフェースからのドローコールを含む、項目１に記載の装置。
［項目４］
上記第３のロジックは、更に、上記複数のグラフィックス実行ユニットの第２の部分のクロック周波数を増大させつつ、上記複数のグラフィックス実行ユニットの上記第１の部分をパワーゲーティングし、
クロック周波数における上記増大は、最大電流負荷を増大させない、項目１に記載の装置。
［項目５］
上記装置は、１または複数のサブコアを含むグラフィックスプロセッサであり、
上記複数のグラフィックス実行ユニットは、上記１または複数のサブコアにわたって分散される、項目４に記載の装置。
［項目６］
上記第３のロジックは、更に、上記１または複数のサブコアの使用量に基づいて上記１または複数のサブコアの一部をパワーゲーティングまたはアンゲーティングする、項目５に記載の装置。
［項目７］
上記１または複数のサブコアの上記使用量は、上記複数のグラフィックス実行ユニット、テクスチャ処理リソース、またはピクセル処理リソースの使用量を含む、項目６に記載の装置。
［項目８］
上記第３のロジックは、新しいバッチバッファまたはパイプラインフラッシュの始まりを含む境界において上記１または複数のサブコアの上記一部をパワーゲーティングまたはアンゲーティングする、項目６に記載の装置。
［項目９］
上記１または複数のサブコアを電力管理するための電力制御ユニット（ＰＣＵ）を更に備え、
上記ＰＣＵは、上記第１のロジック、上記第２のロジック、または上記第３のロジックを有する、項目８に記載の装置。
［項目１０］
上記ＰＣＵは、更に、上記１または複数のサブコアの使用量および状態を相互に関係付けて複数の使用量ウィンドウを判断する、項目９に記載の装置。
［項目１１］
１または複数のコアを有し、上記１または複数のコアの各々は、複数のサブコアを含むグラフィックスプロセッサと、
上記複数のサブコアの使用量に基づいて上記複数のサブコアの第１の部分をパワーゲーティングし、上記複数のサブコアの第２の部分をパワーゲーティングしない電力コントローラとを備える、グラフィックス処理システム。
［項目１２］
上記電力コントローラは、新しいバッチバッファまたはパイプラインフラッシュオペレーションを含む境界で上記複数のサブコアの上記第１の部分をパワーゲーティングする、項目１１に記載のシステム。
［項目１３］
上記複数のサブコアの各々は、テクスチャ処理リソースおよび複数の実行ユニットを含み、
上記複数のサブコアの上記使用量は、上記複数の実行ユニットの使用量または上記テクスチャ処理リソースの使用量を含む、項目１１に記載のシステム。
［項目１４］
上記グラフィックスプロセッサは、上記複数のサブコアの上記使用量を報告する、項目１３に記載のシステム。
［項目１５］
上記電力コントローラは、上記複数の実行ユニットの上記使用量に基づいて上記複数の実行ユニットのうちの１または複数をパワーゲーティングする、項目１３に記載のシステム。
［項目１６］
上記グラフィックスプロセッサは、グラフィックスオペレーションに応答してシグナリングし、上記電力コントローラは、上記シグナリングに応答して全てのパワーゲーティングされた実行ユニットをアンゲーティングする、項目１５に記載のシステム。
［項目１７］
多数のグラフィックスオペレーションが期間内に受信された後に、上記グラフィックスプロセッサは、シグナリングし、
上記グラフィックスオペレーションは、グラフィックスプログラミングインターフェースからのドローコールである、項目１６に記載のシステム。
［項目１８］
複数のグラフィックスプロセッサ実行リソースをスケーリングするための方法であって、
グラフィックスプロセッサ内の複数の実行ユニットの使用量を判断する段階と、
上記使用量に基づいて上記複数の実行ユニットの一部をパワーゲーティングしつつ、グラフィックスプログラミングインターフェースからのドローコールについてモニタリングする段階と、
上記使用量に基づいてパワーゲーティングされた上記複数の実行ユニットの少なくとも上記一部を有効にする段階と、
上記ドローコールに応答してパワーゲーティングされた上記複数の実行ユニットを有効にする段階とを備える方法。
［項目１９］
上記使用量を判断する段階は、
モニタウィンドウのための第１のタイマを規定する段階と、
上記モニタウィンドウ中に複数の実行ユニットの複数の使用量統計値を演算する段階と、
上記第１のタイマの終了に応答して上記複数の使用量統計値を格納する段階とを有する、項目１８に記載の方法。
［項目２０］
上記複数の実行ユニットの上記一部をパワーゲーティングする段階は、
決定ウィンドウのための第２のタイマを規定する段階と、
上記第２のタイマの終了に応答して上記複数の使用量統計値を取得する段階と、
上記複数の使用量統計値に基づいて上記複数の実行ユニットの上記一部をパワーゲーティングする段階とを有する、項目１９に記載の方法。
［項目２１］
複数のグラフィックスプロセッサリソースをスケーリングするための方法であって、
複数の使用量カウンタ、およびグラフィックスプロセッサのサブコアのグラフィックス状態を読み取る段階と、
複数のグラフィックスオペレーションのフレーム内の現在のグラフィックスオペレーションの位置を判断する段階と、
使用量が低いウィンドウ内にあり、パワーゲーティング境界上にある上記サブコアをパワーゲーティングする段階と、
使用量が低いウィンドウの終わりにあり、パワーアンゲーティング境界上にある上記サブコアをパワーアンゲーティングする段階とを備える、方法。
［項目２２］
上記パワーゲーティング境界および上記パワーアンゲーティング境界は、新しいバッチバッファまたはパイプラインフラッシュを含む、項目２１に記載の方法。
［項目２３］
上記複数のグラフィックスオペレーションの上記フレーム内の上記現在のグラフィックスオペレーションの上記位置、ならびに前のフレームの複数の基準および状態を用いて使用量が低い上記ウィンドウの上記終わりを予測する段階を更に備える、項目２１に記載の方法。
［項目２４］
上記複数のグラフィックスオペレーションの上記フレームを完了させる段階と、
上記フレームの複数の基準および状態を格納する段階と、
上記複数の基準および状態に基づいて次のフレームの使用量ウィンドウを予測する段階とを更に備える、項目２１に記載の方法。
［項目２５］
上記サブコアをパワーゲーティングする段階は、複数の実行リソース、複数のテクスチャリソース、または複数のピクセルリソースを含む複数のグラフィックスプロセッサリソースをスケーリングする、項目２１〜２４のいずれか１項に記載の方法。
【図１】
0006432894.tif 000003
【図２】
0006432894.tif 000004
【図３】
0006432894.tif 000005
【図４】
0006432894.tif 000006
【図５】
0006432894.tif 000007
【図６】
0006432894.tif 000008
【図７】
0006432894.tif 000009
【図８】
0006432894.tif 000010
【図９Ａ】
0006432894.tif 000011
【図９Ｂ】
0006432894.tif 000012
【図１０】
0006432894.tif 000013
【図１１】
0006432894.tif 000014
【図１２】
0006432894.tif 000015
【図１３】
0006432894.tif 000016
【図１４】
0006432894.tif 000017
【図１５】
0006432894.tif 000018
【図１６】
0006432894.tif 000019
【図１７】
0006432894.tif 000020
【図１８】
0006432894.tif 000021
【図１９】
0006432894.tif 000022
【図２０】
0006432894.tif 000023
【図２１】
0006432894.tif 000024