(57)【要約】      （修正有）【課題】より小さなグラフィックス・デバイスの多数のタイルで構成されるタイル化されたアーキテクチャを有するグラフィックス、メディア及びコンピュータ・デバイスを提供する。【解決手段】データ処理システムにおいて、ワーク配布インフラストラクチャは、可変数の複数タイルにわたってスケーリングされるワークロード・ディスパッチを可能にする。ワーク・アイテムは、複数のタイルを跨ぐことが可能なワークロードとともに、複数タイルの任意の１つ以上のタイルにサブミットされることが可能である。追加的に、作業アイテムの完了時に、デバイス内のグラフィックス、メディア、及び／又は計算エンジンは、実行のための新しい作業アイテムを、最小の待ち時間で容易に獲得することができる。【選択図】図１５
2020113252.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス・プロセッサであって：
グラフィックス処理エンジンの第１タイル；
グラフィックス処理エンジンの第２タイル；及び
ホスト・システムと前記グラフィックス・プロセッサとの間のインターフェース；
を含み、前記インターフェースは、
第１パーティションと第２パーティションとを有するワークロードに関するコマンドのセットを受信し、前記コマンドのセットを前記グラフィックス処理エンジンの第１タイルへ送信し、前記コマンドのセットを前記グラフィックス処理エンジンの第２タイルへ送信し；  
前記グラフィックス処理エンジンの第１タイルは、前記第１パーティションに関連付けられる第１パーティション識別子を第１ハードウェア・コンテキストから読み込み、前記第２パーティションのコマンドをバイパスしながら、前記第１パーティションのコマンドを条件に応じて実行し；及び
前記グラフィックス処理エンジンの第２タイルは、前記第２パーティションに関連付けられる第２パーティション識別子を第２ハードウェア・コンテキストから読み込み、前記第１パーティションのコマンドをバイパスしながら、前記第２パーティションのコマンドを条件に応じて実行する、グラフィックス・プロセッサ。
【請求項２】
前記ホスト・システムに対する前記インターフェースは、前記第１ハードウェア・コンテキストを前記グラフィックス処理プロセッサの第１タイルに関連付けるコマンドを更に受信する、請求項１に記載のグラフィックス・プロセッサ。
【請求項３】
前記ホスト・システムに対する前記インターフェースは、前記第１ハードウェア・コンテキストを第１論理レンダー・コンテキストに基づいて設定するコマンドを更に受信する、請求項２に記載のグラフィックス・プロセッサ。
【請求項４】
前記ホスト・システムに対する前記インターフェースは、前記第２ハードウェア・コンテキストを前記グラフィックス処理プロセッサの第２タイルに関連付けるコマンドを更に受信する、請求項３に記載のグラフィックス・プロセッサ。
【請求項５】
前記ホスト・システムに対する前記インターフェースは、前記第２ハードウェア・コンテキストを第２論理レンダー・コンテキストに基づいて設定するコマンドを更に受信する、請求項４に記載のグラフィックス・プロセッサ。
【請求項６】
前記インターフェースは、前記ワークロードに関して実行されるコマンドを含むメモリ・バッファを介して、前記ワークロードに関する前記コマンドのセットを受信する、請求項５に記載のグラフィックス・プロセッサ。
【請求項７】
前記第１ハードウェア・コンテキストは、前記メモリ・バッファにおける、前記第１パーティションの始まりに関連付けられる第１オフセットを含み、前記第２ハードウェア・コンテキストは、前記メモリ・バッファにおける、前記第２パーティションの始まりに関連付けられる第２オフセットを含む、請求項６に記載のグラフィックス・プロセッサ。
【請求項８】
前記グラフィックス処理プロセッサの第１タイルは、前記第１パーティションのコマンドの実行を、前記メモリ・バッファ内の第１オフセットの場所に格納されているコマンドで開始する、請求項７に記載のグラフィックス・プロセッサ。
【請求項９】
前記グラフィックス処理プロセッサの第２タイルは、前記第２パーティションのコマンドの実行を、前記メモリ・バッファ内の第２オフセットの場所に格納されているコマンドで開始する、請求項７又は８に記載のグラフィックス・プロセッサ。
【請求項１０】
前記グラフィックス処理プロセッサの第１タイルは、前記第１パーティション及び前記第２パーティションの実行が完了した場合に、前記グラフィックス処理プロセッサの第２タイルと同期する、請求項９に記載のグラフィックス・プロセッサ。
【請求項１１】
１つ以上のプロセッサにオペレーションを実行させる命令を有するコンピュータ・プログラムであって、前記オペレーションは：
グラフィックス処理エンジンの複数のタイルを有するグラフィックス・プロセッサによって実行されるワークロードのコマンドのセットを生成するステップ；
前記コマンドのセットを第１パーティションと第２パーティションとに分けるステップ；
前記第１パーティションを識別する第１パーティション識別子を第１レンダー・コンテキストに関連付けるステップ；
前記第２パーティションを識別する第２パーティション識別子を第２レンダー・コンテキストに関連付けるステップ；
前記グラフィックス処理エンジンの複数のタイルのうちの第１グラフィックス処理エンジン・タイルと第２グラフィックス処理エンジン・タイルの各々に、前記第１パーティションと前記第２パーティションとをサブミットするステップ；
前記第１グラフィックス処理エンジン・タイルにより前記第１パーティションを実行するステップ；及び
前記第２グラフィックス処理エンジン・タイルにより前記第２パーティションを実行するステップを含む、コンピュータ・プログラム。
【請求項１２】
前記オペレーションは、前記第１パーティション及び前記第２パーティションを実行する前に：
前記第１パーティション識別子を前記第１パーティションに割り当てるステップ；及び
前記第２パーティション識別子を前記第２パーティションに割り当てるステップ；
を更に含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記オペレーションは、更に：
前記第１レンダー・コンテキストを初期化し、前記第１パーティションを実行するために使用される実行状態を規定するステップ；及び
前記第２レンダー・コンテキストを初期化し、前記第２パーティションを実行するために使用される実行状態を規定するステップ；
を含む、請求項１１又は１２に記載のコンピュータ・プログラム。
【請求項１４】
前記第１グラフィックス処理エンジン・タイルと第２グラフィックス処理エンジン・タイルの各々に、前記第１パーティションと前記第２パーティションとをサブミットするステップが、前記第１パーティション及び前記第２パーティションのコマンドを含むバッチ・バッファをサブミットするステップを含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記オペレーションが、前記第１パーティション及び前記第２パーティションを実行する前に、前記第１レンダー・コンテキストを前記第１グラフィックス処理エンジン・タイルに割り当て、前記第２レンダー・コンテキストを前記第２グラフィックス処理エンジン・タイルに割り当てるステップを更に含む、請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記第１レンダー・コンテキストが、前記バッチ・バッファにおける、前記第１パーティションの始まりに対する第１オフセットを含み、前記第２レンダー・コンテキストが、前記バッチ・バッファにおける、前記第２パーティションの始まりに対する第２オフセットを含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記バッチ・バッファは、前記第１パーティション及び前記第２パーティションのエンドにおいて同期コマンドを含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
グラフィックス処理エンジンの第１タイルとグラフィックス処理エンジンの第２タイルとを含むグラフィックス・プロセッサを含むデータ処理システムであって、前記グラフィックス・プロセッサは：
第１パーティションと第２パーティションとを有するワークロードに関するコマンドのセットを受信し；
前記第１パーティションを実行するように前記グラフィックス処理エンジンの第１タイルを設定し；
前記第１パーティションの実行と同時に前記第２パーティションを実行するように前記グラフィックス処理エンジンの第２タイルを設定し；
前記第１パーティションの実行完了前に、前記グラフィックス処理エンジンの第１タイルから前記グラフィックス処理エンジンの第３タイルへ前記第１パーティションの実行を移行するトリガを受信し；及び
前記グラフィックス処理エンジンの第３タイルにより、前記第１パーティションの少なくとも一部を実行する、データ処理システム。
【請求項１９】
前記第１パーティションの実行を移行することは、前記グラフィックス処理エンジンの第１タイルから前記グラフィックス処理エンジンの第３タイルへ、前記第１パーティションのパーティション識別子をアトミックに指定し直すことを含む、請求項１８に記載のデータ処理システム。
【請求項２０】
前記グラフィックス・プロセッサは、前記第１パーティションの実行を開始する前に、前記第１パーティションの実行を移行する、請求項１９に記載のデータ処理システム。
【請求項２１】
分散グラフィックス・コンピュータにおいてコマンドを実行する方法であって：
グラフィックス・プロセッサにおいてコマンドのセットを受信するステップであって、前記コマンドのセットは、第１パーティションと第２パーティションとを有するワークロードを表し、前記グラフィックス・プロセッサはグラフィックス処理エンジンの複数のタイルを含む、ステップと；
グラフィックス処理エンジンの第１タイルによって、前記第１パーティションに関連付けられる第１パーティション識別子を第１ハードウェア・コンテキストから読み込むステップ；
グラフィックス処理エンジンの第２タイルによって、前記第２パーティションに関連付けられる第２パーティション識別子を第２ハードウェア・コンテキストから読み込むステップ；
それぞれのタイルに関連するパーティション識別子を有するコマンドを条件に応じて実行するように、前記グラフィックス処理エンジンの第１タイルと前記グラフィックス処理エンジンの第２タイルとを設定するステップ；
前記第２パーティションのコマンドをバイパスしながら前記グラフィックス処理エンジンの第１タイルで前記第１パーティションのコマンドを実行するステップ；及び
前記第１パーティションのコマンドをバイパスしながら前記グラフィックス処理エンジンの第２タイルで前記第２パーティションのコマンドを実行するステップ；
を含む方法。
【請求項２２】
前記グラフィックス処理エンジンの第１タイルを前記第１ハードウェア・コンテキストに関連付けるステップ；及び
前記グラフィックス処理エンジンの第２タイルを前記第２ハードウェア・コンテキストに関連付けるステップ；
を更に含む請求項２１に記載の方法。
【請求項２３】
前記第１パーティションの実行を完了する前に、前記グラフィックス処理エンジンの第１タイルから前記グラフィックス処理エンジンの第３タイルへの前記第１パーティションの実行を移行するトリガを受信するステップ；及び
前記グラフィックス処理エンジンの第３タイルにより前記第１パーティションの少なくとも一部を実行するステップ；
を更に含む請求項２１に記載の方法。
【請求項２４】
前記グラフィックス処理エンジンの第１タイルから前記グラフィックス処理エンジンの第３タイルへ、前記第１パーティションのパーティション識別子をアトミックに指定し直すことにより、前記第１パーティションの実行を移行するステップを更に含む請求項２３に記載の方法。
【請求項２５】
請求項２１−２４の内の何れか１項に記載の実行するための手段を含むシステム。
【請求項２６】
請求項１１−１７の内の何れか１項に記載のコンピュータ・プログラムを格納する記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
［０００１］
コンピューティング・システムは、グラフィックス処理を実行し、線形補間、モザイク処理、ラスタライゼーション、テクスチャ・マッピング、深度テスト等のワークロードを並列演算するグラフィックス・プロセッサを含むことができる。従来、グラフィックス・プロセッサは、グラフィックス・データを処理するために、固定された機能演算ユニットを使用していた。しかしながら、現代のグラフィックス・プロセッサは、プログラム可能な部分を含んでおり、このようなプロセッサが、頂点データ及びフラグメント・データを処理するためのより広範な種々のオペレーション、並びに汎用の並列演算ワークロードをサポートすることを可能にする。このようなプロセッサは一般にインターフェースを含み、そのインターフェースを介して、プログラム可能なワークロードは、プロセッサ上での実行のためにスケジューリングされることが可能である。
【図面の簡単な説明】
【０００２】
［０００２］
本実施形態の上記の特徴が詳細に理解され得るように、上記で簡単に要約される実施形態のより具体的な説明は実施形態を参照することによってなされ、実施形態の幾つかは添付図面に示される。
【０００３】
［０００３］
【図１】図１は実施形態による処理システムのブロック図である。  ［０００４］
【図２】図２は実施形態によるプロセッサのブロック図である。  ［０００５］
【図３】図３は実施形態によるグラフィックス・プロセッサのブロック図である。  ［０００６］
【図４】図４は幾つかの実施形態によるグラフィックス・プロセッサのグラフィックス処理エンジンのブロック図である。  ［０００７］
【図５】図５は本明細書で説明される幾つかの実施形態によるグラフィックス・プロセッサ・コアのハードウェア論理のブロック図である。  ［０００８］
【図６Ａ】図６Ａ〜図６Ｂは、本明細書で説明される実施形態による、グラフィックス・プロセッサ・コアで使用される処理エレメントのアレイを含むスレッド実行ロジックを示す。
【図６Ｂ】図６Ａ〜図６Ｂは、本明細書で説明される実施形態による、グラフィックス・プロセッサ・コアで使用される処理エレメントのアレイを含むスレッド実行ロジックを示す。  ［０００９］
【図７】図７は、幾つかの実施形態によるグラフィックス・プロセッサ命令フォーマットを示すブロック図である。  ［００１０］
【図８】図８は他の実施形態によるグラフィックス・プロセッサのブロック図である。  ［００１１］
【図９Ａ】図９Ａ〜９Ｂは、幾つかの実施形態によるグラフィックス・プロセッサ・コマンド・フォーマット及びコマンド・シーケンスを示す。
【図９Ｂ】図９Ａ〜９Ｂは、幾つかの実施形態によるグラフィックス・プロセッサ・コマンド・フォーマット及びコマンド・シーケンスを示す。  ［００１２］
【図１０】図１０は、幾つかの実施形態によるデータ処理システムのための例示的なグラフィックス・ソフトウェア・アーキテクチャを示す。  ［００１３］
【図１１Ａ】図１１Ａは実施形態によるＩＰコア開発システムを示すブロック図である。  ［００１４］
【図１１Ｂ】図１１Ｂは本明細書で説明される幾つかの実施形態による集積回路パッケージ・アセンブリの側断面図を示す。  ［００１５］
【図１２】図１２は実施形態によるチップ集積回路上の例示的なシステムを示すブロック図である。  ［００１６］
【図１３Ａ】図１３Ａ〜１３Ｂは、本明細書で説明される実施形態によるＳｏＣ内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。
【図１３Ｂ】図１３Ａ〜１３Ｂは、本明細書で説明される実施形態によるＳｏＣ内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。  ［００１７］
【図１４Ａ】図１４Ａ〜１４Ｂは、本明細書で説明される実施形態による更なる例示的なグラフィックス・プロセッサ・ロジックを示す。
【図１４Ｂ】図１４Ａ〜１４Ｂは、本明細書で説明される実施形態による更なる例示的なグラフィックス・プロセッサ・ロジックを示す。  ［００１８］
【図１５】図１５は実施形態によるデータ処理システムのブロック図である。  ［００１９］
【図１６Ａ】図１６Ａ〜１６Ｃは、実施形態によるマルチタイル・ワーク・スケジューリングを実行するグラフィックス処理システムを示す。
【図１６Ｂ】図１６Ａ〜１６Ｃは、実施形態によるマルチタイル・ワーク・スケジューリングを実行するグラフィックス処理システムを示す。
【図１６Ｃ】図１６Ａ〜１６Ｃは、実施形態によるマルチ・タイル・ワーク・スケジューリングを実行するグラフィックス処理システムを示す。  ［００２０］
【図１７】図１７は本明細書で説明される実施形態によるタイル・ワーク分配及びスケジューリング・システムを示す。  ［００２１］
【図１８】図１８は実施形態によるマルチ・タイル・グラフィックス処理システム上の負荷バランスをとることを可能にするシステムを示す。  ［００２２］
【図１９】図１９は実施形態によるマルチ・タイル・ワークロード・スケジューリング方法のフロー図を示す。  ［００２３］
【図２０】図２０は実施形態によるマルチ・タイル・ワークロードを実行する方法のフロー図を示す。  ［００２４］
【図２１】図２１は実施形態によるタイル間でワークロードを移行する方法のフロー図を示す。  ［００２５］
【図２２】図２２は実施形態によるグラフィックス・プロセッサを含むコンピューティング・デバイスのブロック図である。
【発明を実施するための形態】
【０００４】
［００２６］
本明細書で説明される実施形態は、より小さなグラフィックス・デバイスの多数のタイルで構成されるタイル化されたアーキテクチャを有するグラフィックス、メディア、及びコンピュータ・デバイスを提供する。そのようなデバイスは、デバイスのパワー及び／又はパフォーマンス・ターゲットに応じて、より多数の又はより少数のタイルを含むようにスケーリングされることが可能である。本明細書で説明されるスケーリングされるデバイスは、複数タイルにわたるワークロードの効率的な配分を可能にするために、特別に適合させられる作業配分インフラストラクチャを利用することができる。本明細書で説明される作業配分インフラストラクチャは、可変数の複数タイルにわたるスケーリングされたワークロード・ディスパッチを可能にする。ワーク・アイテムは、複数のタイルに広がり得るワークロードとともに、複数のタイルのうちの任意の１つ以上へサブミットされることが可能である。更に、ワーク・アイテムの完了時に、デバイス内のグラフィックス、メディア、及び／又はコンピュータ・エンジンは、実行する新しいワーク・アイテムを最小の待ち時間で容易に獲得することができる。
【０００５】
［００２７］
当技術分野で知られているグラフィックス、メディア、及び／又はコンピュータ・デバイスでは、１つ以上のソフトウェア・レイヤが、デバイス内の種々のエンジンに作業アイテムを分配するために使用されている。ソフトウェアは、様々なエンジンにおける負荷を監視し、それらのエンジンにワークロードを効率的に配分又は再分配することを試みることが可能である。そのようなソフトウェアは、グラフィックス、メディア、及び／又はコンピュータ・デバイスを含むデータ処理システム又はコンピューティング・デバイスのうちの１つ以上のホスト・プロセッサ（例えば、ＣＰＵコア）上で実行されるデバイス・ドライバ又はデバイス・サポート・フレームワークの一部であり得る。しかしながら、ワークロードを監視して配分するためにホスト・ソフトウェアを当てにすることは、様々な非効率性を招く。例えば、コマンド・バッファの再パケット化が必要とされ、余分なＣＰＵサイクルを導入し、待ち時間を加え及びデバイス動作のための電力消費を増加させる。
【０００６】
［００２８］
一実施形態は作業スケジューリング及びサブミッション・インフラストラクチャを提供し、この場合において、ソフトウェアは、ワークロード分配構成を含むワークロードのための統一されたコマンド・バッファを作成することができる。次いで、ソフトウェアは、タイルへ直接的にワーク・アイテムをサブミットすることが可能であり、タイル内のローカル・ハードウェア・スケジューラはタイル内の適切なエンジンに対するワークロードをスケジューリングすることが可能である。各々のエンジンは、同じコマンド・バッファを実行することが可能である。エンジンが新たな作業アイテムを実行する準備ができた場合、エンジンは動的に且つアトミックに（ａｔｏｍｉｃａｌｌｙ）、実行する作業の次のチャンク（例えばパーティション）を獲得することが可能である。一実施形態では、統一されたコマンド・バッファは、分散され分配されたワークロードの実行終了時で待ち合わせる同期コマンドを含む。
【０００７】
［００２９］
動作中に、アプリケーション又はユーザ・モード・グラフィックス・ドライバ（ＵＭＤ）は、分散された実行を促すフォーマットでワークロード・コマンドをサブミットすることが可能である。ワークロード・コマンドは、統一されたコマンド・バッファ・フォーマットを有するコマンド・バッファに挿入される。コマンド・バッファ内のコマンドは、複数のタイルにわたって分散される実行を可能にするために、パーティションに分断される。グラフィックス、メディア、及びコンピュータ・デバイスにおけるエンジンは、実行するワークロード・パーティションをアトミックに取得するメカニズムを含み、そのパーティションに関連するコマンドを実行することが可能である。エンジンの実行状態を監視するために、デバイスのハイレベル・スケジューラによって介入は必要とされない。ハイレベル・スケジューラによってエンジンに提供されるパーティションの代わりに、エンジンは必要に応じて作業パーティションを取得することが可能である。
【０００８】
［００３０］
説明の目的のために、多くの具体的な詳細が、以下で説明される様々な実施形態の十分な理解を提供するように述べられる。しかしながら、当業者は、これらのうち幾らかの具体的な詳細なしに実施形態が実施され得ることは当業者に明らかであろう。他の例では、周知の構造及びデバイスは、基本原理を曖昧にしてしまうことを回避するため、及び実施形態のより十分な理解を提供するために、ブロック図形式で示される。以下の幾つかの実施形態は、グラフィックス・プロセッサに関連して説明されるが、本明細書で説明される技術及び教示は、汎用処理デバイス又はグラフィックス処理デバイスを含む様々なタイプの回路又は半導体デバイスに適用され得る。本明細書において「一実施形態」又は「実施形態」という言及は、実施形態に関係又は関連して説明される特定の特長、構造、又は特徴が、そのような実施形態のうちの少なくとも１つに含まれ得ることを示す。しかしながら、明細書中の様々な箇所における「一実施形態において」という語句の出現は、必ずしも同一の実施形態を指すわけではない。
【０００９】
［００３１］
以下の説明及び特許請求の範囲において、用語「結合された」及び「接続された」は、それらの派生したものとともに使用され得る。これらの用語は互いに同義語として意図されたものではないことが理解されるべきである。  「結合された」は、互いに直接的に物理的又は電気的に接触していてもいなくてもよい２つ以上の要素が、互いに協働又は相互作用することを示すために使用される。「接続された」は、相互に結合された２つ以上の要素間の通信の確立を示すために使用される。
【００１０】
［００３２］
以下の説明において、図１−１４は、種々の実施形態を組み込むか、又は関連する例示的なデータ処理システム及びグラフィックス・プロセッサ・ロジックの概要を提供する。図１５−２２は、様々な実施形態の具体的な詳細を提供する。以下の実施形態の幾つかの態様は、グラフィックス・プロセッサに関連して説明され、他の態様は、中央処理ユニット（ＣＰＵ）等の汎用プロセッサに関連して説明される。類似の技術及び教示は、他のタイプの回路又は半導体デバイスに適用されることが可能であり、他のタイプの回路又は半導体デバイスは、メニー・インテグレーテッド・コア・プロセッサ、ＧＰＵクラスタ、又はフィールド・プログラマブル・ゲート・アレイの１つ以上のインスタンスを含むがこれらに限定されない。一般に、教示は、画像（例えば、サンプル、ピクセル）、頂点データ、又は幾何学データを操作又は処理する任意のプロセッサ又は機械に適用可能である。
【００１１】
［００４２］
システム概要
図１は、実施形態による処理システム１００のブロック図である。種々の実施形態において、システム１００は、１つ以上のプロセッサ１０２及び１つ以上のグラフィックス・プロセッサ１０８を含み、シングル・プロセッサ・デスクトップ・システム、マルチプロセッサ・ワークステーション・システム、又は多数のプロセッサ１０２若しくはプロセッサ・コア１０７を有するサーバ・システムであってもよい。一実施形態では、システム１００は、モバイル、ハンドヘルド、又は埋込装置での使用のためにシステム・オン・チップ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ：ＳｏＣ）集積回路内に組み込まれた処理プラットフォームである。
【００１２】
［００４３］
一実施形態では、システム１００は、サーバに基づくゲーム・プラットフォーム、ゲーム及びメディア・コンソールを含むゲーム・コンソール、モバイル・ゲーム・コンソール、ハンドヘルド・ゲーム・コンソール、又はオンライン・ゲーム・コンソールを含む又はその中に組み込まれることが可能である。幾つかの実施形態では、システム１００は、モバイル・フォン、スマートフォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。処理システム１００は、スマート・ウォッチ・ウェアラブル・デバイス、スマート眼鏡デバイス、拡張現実デバイス、又は仮想現実デバイス等のウェアラブル・デバイスを含み、それに結合され、又はその中に統合されることが可能である。幾つかの実施形態では、処理システム１００は、１つ以上のプロセッサ１０２及び１つ以上のグラフィックス・プロセッサ１０８により生成されるグラフィカル・インターフェースを有するテレビジョン又はセット・トップ・ボックス・デバイスである。
【００１３】
［００４４］
幾つかの実施形態では、１つ以上のプロセッサ１０２はそれぞれ、実行されるとシステムの動作及びユーザ・ソフトウェアを実行する命令を処理する１つ以上のプロセッサ・コア１０７を含む。幾つかの実施形態では、１つ以上のプロセッサ・コア１０７の各々は、特定命令セット１０９を処理するよう構成される。幾つかの実施形態では、命令セット１０９は、複合命令セット計算（ＣＩＳＣ）、縮小命令セット計算（ＲＩＳＣ）、又は超長命令語（ＶＬＩＷ）による計算を促進することができる。複数のプロセッサ・コア１０７はそれぞれ、他の命令セットのエミュレーションを促進する命令を含み得る様々な命令セット１０９を処理することができる。プロセッサ・コア１０７はまた、ディジタル信号プロセッサ（ＤＳＰ）等の他の処理デバイスを含んでもよい。
【００１４】
［００４５］
幾つかの実施形態では、プロセッサ１０２は、キャッシュ・メモリ１０４を含む。アーキテクチャに依存して、プロセッサ１０２は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有し得る。幾つかの実施形態では、キャッシュ・メモリは、プロセッサ１０２の様々なコンポーネントの間で共有される。幾つかの実施形態では、プロセッサ１０２はまた、プロセッサ・コア１０７の中で既知のキャッシュ・コヒーレンス技術を用いて共有されてよい外部キャッシュ（例えばレベル３（Ｌｅｖｅｌ−３：Ｌ３）キャッシュ又はラスト・レベル・キャッシュ（Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ：ＬＬＣ））（図示せず）も使用する。レジスタ・ファイル１０６はプロセッサ１０２に更に含まれ、これは、異なるタイプのデータを格納する異なるタイプのレジスタ（例えば、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタ）を含んでよい。幾つかのレジスタは汎用レジスタであってよい一方、他のレジスタはプロセッサ１０２の設計に固有であってもよい。
【００１５】
［００４６］
幾つかの実施形態では、１つ以上のプロセッサ１０２は、１つ以上のインターフェース・バス１１０に結合され、アドレス、データ、又は制御信号のような通信信号を、プロセッサ１０２とシステム１００内の他のコンポーネントとの間で伝送する。インターフェース・バス１１０は、一実施形態では、ダイレクト・メディア・インターフェース（ＤＭＩ）バスのバージョンのようなプロセッサ・バスであり得る。しかしながら、プロセッサ・バスは、ＤＭＩバスに限定されず、１つ以上の周辺機器相互接続バス（例えば、ＰＣＩ、ＰＣＩＥｘｐｒｅｓｓ）、メモリバス、又は他の種類のインターフェース・バスを含んでよい。一実施形態では、プロセッサ１０２は、統合メモリ・コントローラ１１６及びプラットフォーム・コントローラ・ハブ１３０を含む。メモリ・コントローラ１１６は、メモリ・デバイスとシステム１００の他のコンポーネントとの間の通信を促進する一方、プラットフォーム・コントローラ・ハブ（ＰＣＨ）１３０は、ローカルＩ／Ｏバスを介してＩ／Ｏデバイスへの接続を提供する。
【００１６】
［００４７］
メモリ１２０は、ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）デバイス、ＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又は処理メモリとして機能するために適切な性能を備える何らかの他のメモリ・デバイスであり得る。一実施形態では、メモリ・デバイス１２０は、１つ以上のプロセッサ１０２がアプリケーション又はプロセスを実行する場合に使用するためのデータ１２２及び命令１２１を格納するために、システム１００のシステム・メモリとして動作することが可能である。メモリ・コントローラ１１６はまた、プロセッサ１０２内の１つ以上のグラフィックス・プロセッサ１０８と通信してグラフィックス及びメディア・オペレーションを実行し得る選択的な外部グラフィックス・プロセッサ１１２に結合する。幾つかの実施形態では、ディスプレイ・デバイス１１１は、プロセッサ１０２と接続し得る。ディスプレイ・デバイス１１１は、モバイル電子デバイス又はラップトップ・デバイス内にあるような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース（例えばＤｉｓｐｌａｙＰｏｒｔ等）を介して取り付けられた外部ディスプレイ・デバイスのうちの１つ以上であり得る。一実施形態では、ディスプレイ・デバイス１１１は、仮想現実（ＶＲ）アプリケーション又は拡張現実（ＡＲ）アプリケーションで使用する立体ディスプレイ・デバイスのようなＨＭＤ（ｈｅａｄ  ｍｏｕｎｔｅｄ  ｄｉｓｐｌａｙ）であり得る。
【００１７】
［００４８］
幾つかの実施形態では、プラットフォーム・コントローラ・ハブ１３０は、周辺機器が、メモリ・デバイス１２０及びプロセッサ１０２に高速Ｉ／Ｏバスを介して接続することを可能にする。Ｉ／Ｏ周辺機器は、オーディオ・コントローラ１４６、ネットワーク・コントローラ１３４、ファームウェア・インターフェース１２８、無線トランシーバ１２６、タッチセンサ１２５、データ・ストレージ・デバイス１２４（例えば、ハード・ディスク・ドライブ、フラッシュ・メモリ、等）を含むが、これらに限定されない。データ記憶デバイス１２４は、ストレージ・インターフェース（例えばＳＡＴＡ）を介して又は周辺機器コンポーネント相互接続バス（例えば、ＰＣＩ、ＰＣＩＥｘｐｒｅｓｓ）のような周辺機器バスを介して、接続することが可能である。タッチセンサ１２５は、タッチ・スクリーン・センサ、圧力センサ、又は指紋センサを含み得る。無線トランシーバ１２６は、Ｗｉ−Ｆｉトランシーバ、Ｂｌｕｅｔｏｏｔｈ（登録商標）トランシーバ、又は３Ｇ、４Ｇ、若しくはＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）トランシーバ等のモバイル・ネットワーク・トランシーバであり得る。ファームウェア・インターフェース１２８は、システム・ファームウェアとの通信を可能にし、例えばＵＥＦＩ（ｕｎｉｆｉｅｄ  ｅｘｔｅｎｓｉｂｌｅ  ｆｉｒｍｗａｒｅ  ｉｎｔｅｒｆａｃｅ）であり得る。ネットワーク・コントローラ１３４は、有線ネットワークへのネットワーク接続を可能にする。幾つかの実施形態では、高性能ネットワーク・コントローラ（図示しない）はインターフェース・バス１１０と結合する。オーディオ・コントローラ１４６は、一実施形態では、マルチ・チャネル高解像度オーディオ・コントローラである。一実施形態では、システム１００は、レガシ（例えば、パーソナル・システム２（ＰＳ／２））デバイスをシステムに結合する選択的なレガシＩ／Ｏ・コントローラ１４０を含む。プラットフォーム・コントローラ・ハブ１３０は、１つ以上のＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）・コントローラ１４２にも、キーボード及びマウス１４３の組み合わせ、カメラ１４４、又は他のＵＳＢ入力デバイスのような接続入力デバイスを接続し得る。
【００１８】
［００４９］
図示のシステム１００は、例示的であって限定ではなく、別様に構成される他の種類のデータ処理システムもまた使用され得ることが理解される。例えば、メモリ・コントローラ１１６及びプラットフォーム・コントローラ・ハブ１３０の例は、外部グラフィックス・プロセッサ１１２のような個別外部グラフィックス・プロセッサに統合されてもよい。一実施形態では、プラットフォーム・コントローラ・ハブ１３０及び／又はメモリ・コントローラ１１６は、１つ以上のプロセッサ１０２の外部にあってよい。例えば、システム１００は、プロセッサ１０２と通信するシステム・チップセット内にあるメモリ・コントローラ・ハブ及び周辺機器コントローラ・ハブとして構成され得る外部メモリ・コントローラ１１６及びプラットフォーム・コントローラ・ハブ１３０を含み得る。
【００１９】
［００５０］
図２は、１つ以上のプロセッサ・コア２０２Ａ〜２０２Ｎ、統合メモリ・コントローラ２１４、及び統合グラフィックス・プロセッサ２０８を有するプロセッサ２００の実施形態のブロック図である。本願明細書の任意の他の図の要素と同じ参照番号（又は名称）を有する図２のこれらの要素は、本願明細書の他の場所に記載されたものと同様の方法で動作し又は機能することが可能であるが、そのように限定されない。プロセッサ２００は、破線ボックスにより示される包含する追加コア２０２Ｎまでの追加コアを含み得る。プロセッサ・コア２０２Ａ〜２０２Ｎの各々は、１つ以上の内部キャッシュ・ユニット２０４Ａ〜２０４Ｎを含む。幾つかの実施形態では、各プロセッサ・コアはまた、１つ以上の共有キャッシュ・ユニット２０６へのアクセスも有する。
【００２０】
［００５１］
内部キャッシュ・ユニット２０４Ａ〜２０４Ｎ及び共有キャッシュ・ユニット２０６は、プロセッサ２００内のキャッシュ・メモリ階層構造を表す。キャッシュ・メモリ階層構造は、各プロセッサ・コアの中に少なくとも１つのレベルの命令及びデータ・キャッシュ、及び１つ以上のレベルの共有中間レベルキャッシュ（例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又はキャッシュの他のレベル）を含むことができ、ここで、外部メモリの以前の最高レベルのキャッシュはＬＬＣとして分類される。幾つかの実施形態では、キャッシュ・コヒーレンス・ロジックは、種々のキャッシュ・ユニット２０６及び２０４Ａ〜２０４Ｎの間のコヒーレンスを維持する。
【００２１】
［００５２］
幾つかの実施形態では、プロセッサ２００はまた、１つ以上のバス・コントローラ・ユニット２１６及びシステム・エージェント・コア２１０のセットを含んでもよい。１つ以上のバス・コントローラ・ユニット２１６は、１つ以上のＰＣＩ又はＰＣＩエクスプレス・バスのような周辺機器バスのセットを管理する。システム・エージェント・コア２１０は、種々のプロセッサ・コンポーネントに管理機能を提供する。幾つかの実施形態では、システム・エージェント・コア２１０は、種々の外部メモリ・デバイス（図示せず）へのアクセスを管理する１つ以上の統合メモリ・コントローラ２１４を含む。
【００２２】
［００５３］
幾つかの実施形態では、プロセッサ・コア２０２Ａ〜２０２Ｎのうちの１つ以上は、同時マルチ・スレッドのサポートを含む。このような実施形態では、システム・エージェント・コア２１０は、マルチ・スレッド処理の間にコア２０２Ａ〜２０２Ｎを調整し及び作動させるコンポーネントを含む。システム・エージェント・コア２１０は、プロセッサ・コア２０２Ａ〜２０２Ｎ及びグラフィックス・プロセッサ２０８の電力状態を規制するロジック及びコンポーネントを含む電力制御ユニット（ＰＣＵ）を追加的に含んでよい。
【００２３】
［００５４］
幾つかの実施形態では、プロセッサ２００は、グラフィックス処理演算を実行するグラフィックス・プロセッサ２０８を追加的に含む。幾つかの実施形態では、グラフィックス・プロセッサ２０８は、共有キャッシュ・ユニット２０６と１つ以上の統合メモリ・コントローラ２１４を含むシステム・エージェント・コア２１０とのセットに結合する。幾つかの実施形態では、システム・エージェント・コア２１０はまた、１つ以上の結合したディスプレイへのグラフィックス・プロセッサ出力を駆動するディスプレイ・コントローラ２１１も含む。幾つかの実施形態では、ディスプレイ・コントローラ２１１は、少なくとも１つの相互接続を介してグラフィックス・プロセッサに結合される別個のモジュールであってもよく、又はグラフィックス・プロセッサ２０８内に統合されてよい。
【００２４】
［００５５］
幾つかの実施形態では、リングに基づく相互接続ユニット２１２は、プロセッサ２００の内部コンポーネントを結合するために使用される。しかしながら、ポイント・ツー・ポイント相互接続、切り替え相互接続、又は当該技術分野で周知の技術を含む他の技術のような、代替の相互接続ユニットが使用されてもよい。幾つかの実施形態では、グラフィックス・プロセッサ２０８は、Ｉ／Ｏリンク２１３を介してリング相互接続２１２に結合する。
【００２５】
［００５６］
例示的なＩ／Ｏリンク２１３は、種々のプロセッサ・コンポーネントとｅＤＲＡＭモジュール等の高性能内蔵メモリ・モジュール２１８との間の通信を促進するパッケージＩ／Ｏ相互接続を含む、複数種類のうちの少なくとも１つのＩ／Ｏ相互接続を表す。幾つかの実施形態では、プロセッサ・コア２０２Ａ〜２０２Ｎ及びグラフィックス・プロセッサ２０８の各々は、内蔵メモリ・モジュール２１８を共有ラスト・レベル・キャッシュとして使用する。
【００２６】
［００５７］
幾つかの実施形態では、プロセッサ・コア２０２Ａ〜２０２Ｎは、同じ命令セット・アーキテクチャを実行する同種のコアである。別の実施形態では、プロセッサ・コア２０２Ａ〜２０２Ｎは、命令セット・アーキテクチャ（ＩＳＡ）の観点からは異種であり、１つ以上のプロセッサ・コア２０２Ａ〜２０２Ｎが第１命令セットを実行する一方、少なくとも１つの他のコアが第１命令セットの一部分又は異なる命令セットを実行する。一実施形態では、プロセッサ・コア２０２Ａ〜２０２Ｎは、マイクロアーキテクチャの観点からは異種であり、比較的高い電力消費の１つ以上のコアが、比較的低い電力消費の１つ以上のパワーコアに結合する。更に、プロセッサ２００は、１つ以上のチップ上に又は図示したコンポーネントを備えるＳｏＣ集積回路として他のコンポーネントに加えて実装され得る。
【００２７】
［００５８］
図３は、個別グラフィックス処理ユニットであってもよい又は複数の処理コアと共に統合されたグラフィックス・プロセッサであってもよい、グラフィックス・プロセッサ３００のブロック図である。幾つかの実施形態では、グラフィックス・プロセッサ上のレジスタへのメモリ・マップドＩ／Ｏインターフェースを介して、及びプロセッサ・メモリ内に置かれたコマンドにより、グラフィックス・プロセッサは通信する。幾つかの実施形態では、グラフィックス・プロセッサ３００は、メモリにアクセスするためのメモリ・インターフェース３１４を含む。メモリ・インターフェース３１４は、ローカル・メモリ、１つ以上の内部キャッシュ、１つ以上の共有外部キャッシュ、及び／又はシステム・メモリへのインターフェースであり得る。
【００２８】
［００５９］
幾つかの実施形態では、グラフィックス・プロセッサ３００はまた、ディスプレイ・デバイス３２０へのディスプレイ出力データを駆動するディスプレイ・コントローラ３０２も含む。ディスプレイ・コントローラ３０２は、ディスプレイの１つ以上のオーバレイ・プレーン及びビデオの複数レイヤの構成又はユーザ・インターフェース要素のためのハードウェアを含む。ディスプレイ・デバイス３２０は、内部又は外部ディスプレイ・デバイスであり得る。一実施形態では、ディスプレイ・デバイス３２０は、仮想現実（ＶＲ）ディスプレイ・デバイス又は拡張現実（ＡＲ）ディスプレイ・デバイス等のヘッド・マウント・ディスプレイ・デバイスである。幾つかの実施形態では、グラフィックス・プロセッサ３００は、限定ではないが、ＭＰＥＧ−２のようなＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）フォーマット、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ及びＳＭＰＴＥ（Ｓｏｃｉｅｔｙ  ｏｆ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  ＆  Ｔｅｌｅｖｉｓｉｏｎ  Ｅｎｇｉｎｅｅｒｓ）４２１Ｍ／ＶＣ−１のようなＡＶＣ（Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）フォーマット、並びにＪＰＥＧ及びＭＪＰＥＧ（Ｍｏｔｉｏｎ  ＪＰＥＧ）フォーマットのようなＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）フォーマットを含む１つ以上のメディア符号化フォーマットに、それから、又はその間でメディアを符号化、復号、又はトランスコードするビデオ・コーデック・エンジン３０６を含む。
【００２９】
［００６０］
幾つかの実施形態では、グラフィックス・プロセッサ３００は、例えばビット境界ブロック転送を含む２次元（２Ｄ）ラスタライザ演算を実行するブロック画像転送（ＢＬＩＴ）エンジン３０４を含む。しかしながら、一実施形態では、２Ｄグラフィックス演算は、グラフィックス処理エンジン（ＧＰＥ）３１０の１つ以上のコンポーネントを用いて実行される。幾つかの実施形態では、ＧＰＥ３１０は、３次元（３Ｄ）グラフィックス演算及びメディア演算を含むグラフィックス演算を実行するコンピュータ・エンジンである。
【００３０】
［００６１］
幾つかの実施形態では、ＧＰＥ３１０は、３Ｄ基本形状（例えば、長方形、三角形、等）に対して作用する処理機能を用いて３次元画像及びシーンをレンダリングするような３Ｄオペレーションを実行する３Ｄパイプライン３１２を含む。３Ｄパイプライン３１２は、要素内で種々のタスクを実行する及び／又は３Ｄ／メディア・サブシステム３１５への実行スレッドを生み出すプログラマブル及び固定機能要素を含む。３Ｄパイプライン３１２は、メディア・オペレーションを実行するために使用可能であるが、ＧＰＥ３１０の実施形態もまた、ビデオ後処理及び画像改善のようなメディア・オペレーションを実行するために特に使用されるメディア・パイプライン３１６を含む。
【００３１】
［００６２］
幾つかの実施形態では、メディア・パイプライン３１６は、ビデオ・コーデック・エンジン３０６の代わりに又はそれを代理して、ビデオ復号加速化、ビデオ・デインターレース、及びビデオ符号化加速化のような１つ以上の固有のメディア・オペレーションを実行する固定機能又はプログラマブル・ロジック・ユニットを含む。幾つかの実施形態では、メディア・パイプライン３１６は、３Ｄ／メディア・サブシステム３１５上で実行するためにスレッドを生み出すスレッド生成ユニットを更に含む。生成されたスレッドは、３Ｄ／メディア・サブシステム３１５に含まれる１つ以上のグラフィックス実行ユニットで、メディア・オペレーションのための演算を実行する。
【００３２】
［００６３］
幾つかの実施形態では、３Ｄ／メディア・サブシステム３１５は、３Ｄパイプライン３１２及びメディア・パイプライン３１６により生み出されたスレッドを実行するロジックを含む。一実施形態では、パイプラインは、スレッド実行要求を３Ｄ／メディア・サブシステム３１５へ送信し、そのサブシステムは利用可能なスレッド実行リソースへの種々の要求を調停し及びディスパッチするスレッド・ディスパッチ・ロジックを含む。実行リソースは、３Ｄ及びメディア・スレッドを処理するグラフィックス実行ユニットのアレイを含む。幾つかの実施形態では、３Ｄ／メディア・サブシステム３１５は、スレッド命令及びデータのための１つ以上の内部キャッシュを含む。幾つかの実施形態では、サブシステムはまた、スレッド間でデータを共有し及び出力データを格納するために、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
【００３３】
［００６４］
グラフィックス処理エンジン
図４は、幾つかの実施形態によるグラフィックス・プロセッサのグラフィックス処理エンジン４１０のブロック図である。一実施形態では、グラフィックス処理エンジン（ＧＰＥ）４１０は、図３に示されるＧＰＥ３１０の１つのバージョンである。本願明細書の任意の他の図の要素と同じ参照番号（又は名称）を有する図４の要素は、本願明細書の他の場所に記載されたものと同様のいずれかの方法で動作し又は機能し得るが、そのように限定されない。例えば、図３の３Ｄパイプライン３１２及びメディア・パイプライン３１６が説明される。メディア・パイプライン３１６は、ＧＰＥ４１０の幾つかの実施形態において任意であり、ＧＰＥ４１０内に明示的に含まれなくてもよい。例えば、少なくとも一実施形態では、別個のメディア及び／又は画像プロセッサがＧＰＥ４１０に結合される。
【００３４】
［００６５］
幾つかの実施形態では、ＧＰＥ４１０は、コマンド・ストリームを３Ｄパイプライン３１２及び／又はメディア・パイプライン３１６に提供するコマンド・ストリーマ４０３に結合する又はそれを含む。幾つかの実施形態では、コマンド・ストリーマ４０３は、システム・メモリ、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの１つ以上であり得るメモリに結合される。幾つかの実施形態では、コマンド・ストリーマ４０３は、コマンドをメモリから受信し、該コマンドを３Ｄパイプライン３１２及び／又はメディア・パイプライン３１６へ送信する。コマンドは、３Ｄパイプライン３１２及びメディア・パイプライン３１６に対するコマンドを格納するリング・バッファからフェッチされる指令である。一実施形態では、リング・バッファは、複数のコマンドのバッチを格納するバッチ・コマンド・バッファを更に含み得る。３Ｄパイプライン３１２に対するコマンドは、限定ではないが３Ｄパイプライン３１２の頂点及び形状データ及び／又はメディア・パイプライン３１６の画像データ及びメモリ・オブジェクトのような、メモリに格納されたデータに対するリファレンスも含み得る。３Ｄパイプライン３１２及びメディア・パイプライン３１６は、それぞれのパイプライン内のロジックにより演算を実行することにより、又は１つ以上の実行スレッドをグラフィックス・コア・アレイ４１４へディスパッチすることにより、コマンド及びデータを処理する。一実施形態では、グラフィックス・コア・アレイ４１４は、グラフィックス・コア（例えば、グラフィックス・コア４１５Ａ、グラフィックス・コア４１５Ｂ）の１つ以上のブロックを含み、各ブロックは１つ以上のグラフィックス・コアを含む。各グラフィックス・コアは、グラフィック及び演算オペレーション、並びに固定機能テクスチャ処理及び／又は機械学習及び人工知能加速ロジックを実行する汎用及びグラフィック専用実行ロジックを含むグラフィックス実行リソースのセットを含む。
【００３５】
［００６６］
種々の実施形態において、３Ｄパイプライン３１２は、頂点シェーダ、形状シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、演算シェーダ、又は他のシェーダ・プログラム等の１つ以上のシェーダ（ｓｈａｄｅｒ）プログラムを、命令を処理して実行スレッドをグラフィックス・コア・アレイ４１４へディスパッチすることによって処理する、固定された機能及びプログラム可能なロジックを含む。グラフィックス・コア・アレイ４１４は、これらのシェーダ・プログラムを処理する際に使用する実行リソースの統合ブロックを提供する。グラフィックス・コア・アレイ４１４のグラフィックス・コア４１５Ａ〜４１５Ｂ内の多目的実行ロジック（例えば、実行ユニット）は、種々の３Ｄ  ＡＰＩシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することが可能である。
【００３６】
［００６７］
幾つかの実施形態では、グラフィックス・コア・アレイ４１４はまた、ビデオ及び／又は画像処理のようなメディア機能を実行する実行ロジックも含む。一実施形態では、実行ユニットは、グラフィックス処理演算に加えて並列汎用コンピュータ演算を実行するようプログラム可能な汎用ロジックを更に含む。汎用ロジックは、図１のプロセッサ・コア１０７又は図２のコア２０２Ａ〜２０２Ｎ内の汎用ロジックと並列に又はそれと関連して演算処理を実行することが可能である。
【００３７】
［００６８］
グラフィックス・コア・アレイ４１４上で実行するスレッドにより生成された出力データは、統合リターン・バッファ（ＵＲＢ）４１８内のメモリへデータを出力することが可能である。ＵＲＢ４１８は複数のスレッドに対するデータを格納することが可能である。幾つかの実施形態では、ＵＲＢ４１８は、グラフィックス・コア・アレイ４１４上で実行する様々なスレッド間でデータを送信するために使用されてよい。幾つかの実施形態では、ＵＲＢ４１８は、グラフィックス・コア・アレイにおけるスレッドと共有機能ロジック４２０内の固定機能ロジックと間の同期化のために追加的に使用されてもよい。
【００３８】
［００６９］
幾つかの実施形態では、グラフィックス・コア・アレイ４１４はスケーラブルであり、その結果、その結果、アレイは可変数のグラフィックス・コア・を含み、各グラフィックス・コア・は、ＧＰＥ４１０のターゲット電力及びパフォーマンス・レベルに基づく可変数の実行ユニットを有する。一実施形態では、実行リソースは動的にスケーラブルであり、その結果、実行リソースは必要に応じてイネーブル又ディセーブルにされ得る。
【００３９】
［００７０］
グラフィックス・コア・アレイ４１４は、グラフィックス・コア・アレイ内のグラフィックス・コア間で共有される複数のリソースを含む共有機能ロジック４２０に結合する。共有機能ロジック４２０内の共有機能は、特別な補足機能をグラフィックス・コア・アレイ４１４に提供するハードウェア・ロジック・ユニットである。種々の実施形態において、共有機能ロジック４２０は、サンプラ４２１、マス（ｍａｔｈ）４２２、及びスレッド間通信（ｉｎｔｅｒ−ｔｈｒｅａｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ：ＩＴＣ）４２３ロジックを含むが、これらに限定されない。更に、幾つかの実施形態は、共有される機能ロジック４２０内に１つ以上のキャッシュ４２５を実装する。
【００４０】
［００７１］
共有機能が実装され、その場合に、所与の特別な機能に対する要求は、グラフィックス・コア・アレイ４１４に含まれるものには不十分である。その代わりに、該特別な機能の単一のインスタンス化が、共有機能ロジック４２０内のスタンドアロン・エンティティとして実装され、グラフィックス・コア・アレイ４１４内の実行リソースの間で共有される。グラフィックス・コア・アレイ４１４の間で共有され及びグラフィックス・コア・アレイ４１４内に含まれる機能の詳細なセットは、実施形態の間で変わる。幾つかの実施形態では、共有機能ロジック４２０の中で、グラフィックス・コア・アレイ４１４により幅広く使用される特定の共有機能が、グラフィックス・コア・アレイ４１４内の共有機能ロジック４１６内に含まれてよい。種々の実施形態で、グラフィックス・コア・アレイ４１４内の共有機能ロジック４１６は、共有機能ロジック４２０内の一部又は全部のロジックを含み得る。一実施形態では、共有機能ロジック４２０内の全部のロジック要素は、グラフィックス・コア・アレイ４１４の共有機能ロジック４１６内で複製されてよい。一実施形態では、グラフィックス・コア・アレイ４１６の共有機能ロジック４１６の方を選んで共有機能ロジック４２０は除外される。
【００４１】
［００７２］
図５は、本願明細書に記載の幾つかの実施形態によるグラフィックス・プロセッサ・コア５００のハードウェア・ロジックのブロック図である。本願明細書の任意の他の図の要素と同じ参照番号（又は名称）を有する図５の要素は、本願明細書の他の場所に記載されたものと同様のいずれかの方法で動作し又は機能し得るが、そのように限定されない。図示のグラフィックス・プロセッサ・コア５００は、幾つかの実施形態では、図４のグラフィックス・コア・アレイ４１４内に含まれる。グラフィックス・プロセッサ・コア５００は、しばしばコア・スライスと呼ばれ、モジュラ・グラフィックス・プロセッサ内の１つ又は複数のグラフィックス・コアであり得る。グラフィックス・プロセッサ・コア５００は、１つのグラフィックス・コア・スライスの例であり、本願明細書に記載のグラフィックス・プロセッサは、ターゲット電力及びパフォーマンス・エンベロープに基づいて複数のグラフィックス・コア・スライスを含んでよい。各グラフィックス・プロセッサ・コア５００は、汎用及び固定機能ロジックのモジュラ・ブロックを含む、サブスライスとも呼ばれる複数のサブ・コア５０１Ａ〜５０１Ｆに結合された固定機能ブロック５３０を含み得る。
【００４２】
［００７３］
幾つかの実施形態では、固定機能ブロック５３０は、例えばより低いパフォーマンス及び／又はより低電力のグラフィックス・プロセッサ実装において、グラフィックス・プロセッサ・コア５００内の全てのサブ・コアにより共有されることが可能な形状／固定機能パイプライン５３６を含む。種々の実施形態では、形状／固定機能パイプライン５３６は、３Ｄ固定機能パイプライン（例えば、図３及び図４の３Ｄパイプライン３１２）、ビデオ・フロント・エンド・ユニット、スレッド生成部及びスレッド・ディスパッチ部、並びに、図４の統合リターン・バッファ４１８等の統合リターン・バッファを管理する統合リターン・バッファ・マネジャを含む。
【００４３】
［００７４］
一実施形態では、固定機能ブロック５３０はまた、グラフィックスＳｏＣインターフェース５３７、グラフィックス・マイクロコントローラ５３８、及びメディア・パイプライン５３９も含む。グラフィックスＳｏＣインターフェース５３７は、グラフィックス・コア５００とシステム・オン・チップ集積回路内の他のプロセッサ・コアとの間のインターフェースを提供する。グラフィックス・マイクロコントローラ５３８は、スレッド・ディスパッチ、スケジューリング、及び先取り（ｐｒｅ−ｅｍｐｔｉｏｎ）を含む、グラフィックス・プロセッサ・コア５００の種々の機能を管理するように構成可能なプログラマブル・サブ・プロセッサである。メディア・パイプライン５３９（例えば、図３及び図４のメディア・パイプライン）は、画像及びビデオ・データを含むマルチメディア・データの復号、符号化、前処理、及び／又は後処理を促進するロジックを含む。メディア・パイプライン５３９は、サブ・コア５０１Ａ〜５０１Ｆ内の計算又はサンプリング・ロジックへの要求によりメディア演算を実行する。
【００４４】
［００７５］
一実施形態では、ＳｏＣインターフェース５３７は、汎用アプリケーション・プロセッサ・コア（例えば、ＣＰＵ）、及び／又は共有ラスト・レベル・キャッシュ・メモリ、システムＲＡＭ及び／又は内蔵オンチップ若しくはオンパッケージＤＲＡＭのようなメモリ階層的要素を含むＳｏＣ内の他のコンポーネントとグラフィックス・プロセッサ・コア５００が通信することを可能にする。ＳｏＣインターフェース５３７はまた、カメラ撮像パイプラインのようなＳｏＣ内の固定機能デバイスと通信できるようにすることも可能であり、グラフィックス・コア５００とＳｏＣ内のＣＰＵとの間で共有され得るグローバル・メモリ・アトミックの使用を可能にし及び／又はそれを実現する。ＳｏＣインターフェース５３７はまた、グラフィックス・コア５００の電力管理制御も実現し、グラフィックス・コア５００のクロック・ドメインとＳｏＣ内の他のクロック・ドメインとの間のインターフェースをイネーブルにすることができる。一実施形態では、ＳｏＣインターフェース５３７は、コマンド及び命令をグラフィックス・プロセッサ内の１つ以上のグラフィックス・コアの各々に提供するよう構成されるコマンド・ストリーマ及びグローバル・スレッド・ディスパッチ部からの、コマンド・バッファの受信を可能にする。コマンド及び命令は、メディア演算が実行される場合にはメディア・パイプライン５３９へ、又はグラフィックス処理演算が実行される場合には形状及び固定機能パイプライン（例えば、形状及び固定機能パイプライン５３６、形状及び固定機能パイプライン５１４）へ、ディスパッチされ得る。
【００４５】
［００７６］
グラフィックス・マイクロコントローラ５３８は、グラフィックス・コア５００のために種々のスケジューリング及び管理タスクを実行するよう構成され得る。一実施形態では、グラフィックス・マイクロコントローラ５３８は、サブ・コア５０１Ａ〜５０１Ｆ内の実行ユニット（ＥＵ）アレイ５０２Ａ〜５０２Ｆ、５０４Ａ〜５０４Ｆ内の種々のグラフィックス並列エンジンで、グラフィックス及び／又は演算ワークロードのスケジューリングを実行することが可能である。このスケジューリング・モデルでは、グラフィックス・コア５００を含むＳｏＣのＣＰＵコアで動作するホスト・ソフトウェアは、適切なグラフィックス・エンジンでスケジューリング・オペレーションを呼び出す複数のうち何れかのグラフィックス・プロセッサ・ドアベル（ｄｏｏｒｂｅｌｌ）にワークロードをサブミットすることが可能である。スケジューリング・オペレーションは、次に実行すべきワークロードを決定し、ワークロードをコマンド・ストリーマにサブミットし、エンジン上で動作している既存のワークロードを先取りし、ワークロードの進捗を監視し、及びワークロードが完了するとホスト・ソフトウェアに通知することを含む。一実施形態では、グラフィックス・マイクロコントローラ５３８はまた、グラフィックス・コア５００に対して低電力又はアイドル状態を促進し、システムにおけるグラフィックス・ドライバ・ソフトウェア及び／又はオペレーティング・システムから独立した低電力状態遷移にわたってグラフィックス・コア４００内のレジスタを保存及び復元する能力を、グラフィックス・コア５００に提供する。
【００４６】
［００７７］
グラフィックス・コア５００は、図示のサブ・コア５０１Ａ〜５０１Ｆより多くの又は少ない、最大Ｎ個のモジュラ・サブ・コアを有することができる。Ｎ個のサブ・コアの各セットについて、グラフィックス・コア５００はまた、共有機能ロジック５１０、共有及び／又はキャッシュ・メモリ５１２、形状／固定機能パイプライン５１４、並びに種々のグラフィックス及びコンピュータ処理オペレーションを加速する追加固定機能ロジック５１６を含むことが可能である。共有機能ロジック５１０は、グラフィックス・コア５００内のＮ個各々のサブ・コアにより共有されることが可能な図４の共有機能ロジック４２０（例えば、サンプラ、マス、及び／又はスレッド間通信ロジック）に関連付けられるロジック・ユニットを含み得る。共有及び／又はキャッシュ・メモリ５１２は、グラフィックス・コア５００内のＮ個のサブ・コア５０１Ａ〜５０１Ｆのセットのためのラスト・レベル・キャッシュであることが可能であり、複数のサブ・コアによりアクセス可能な共有メモリとしても機能することも可能である。形状／固定機能パイプライン５１４は、固定機能ブロック５３０内の形状／固定機能パイプライン５３６の代わりに含まれることが可能であり、同一又は類似のロジック・ユニットを含むことが可能である。
【００４７】
［００７８］
一実施形態では、グラフィックス・コア５００は、グラフィックス・コア５００による使用のための種々の固定機能加速ロジックを含み得る追加の固定機能ブロック５１６を含む。一実施形態では、追加の固定機能ロジック５１６は、位置限定シェーディング（ｐｏｓｉｔｉｏｎ  ｏｎｌｙ  ｓｈａｄｉｎｇ）に使用するために、追加の形状パイプラインを含む。位置限定シェーディングでは、２つの形状パイプラインが存在し、それらは、形状／固定機能パイプライン５１６、５３６内の完全形状パイプライン、及び追加の固定機能ロジック５１６に含まれてよい追加の形状パイプラインであるカル・パイプライン（ａ  ｃｕｌｌ  ｐｉｐｅｌｉｎｅ）である。一実施形態では、カル・パイプラインは、完全形状パイプラインの縮小バージョンである。完全パイプライン及びカル・パイプラインは、同じアプリケーションの異なるインスタンスを実行することが可能であり、各インスタンスは別個のコンテキストを有する。位置限定シェーディングは、廃棄された三角形の長いカル・ラン（ｌｏｎｇ  ｃｕｌｌ  ｒｕｎｓ）を隠すことができ、幾つかの例では、シェーディングをより早期に完了させることができる。例えば、一実施形態では、追加no
固定機能ロジック５１６内のカル・パイプライン・ロジックは、位置シェーダをメイン・アプリケーションと並列に実行することが可能であり、一般に、完全パイプラインより速く重要な結果を生成し、なぜならカル・パイプラインは、フレーム・バッファに対するピクセルのラスタライズ及びレンダリングを実行せずに、頂点の位置属性のみをフェッチしてシェーディングするからである。カル・パイプラインは、生成した重要な結果を用いて、それらの三角形が選別された（ｃｕｌｌｅｄ）か否かに拘わらず、全ての三角形に対する可視性情報を計算する。完全パイプライン（本例ではリプレイ・パイプラインと呼ばれ得る）は、可視性情報を使用して、カル処理済みの三角形をスキップし、最終的にラスタライズ段階へ渡される可視三角形のみをシェーディングする。
【００４８】
［００７９］
一実施形態では、追加の固定機能ロジック５１６はまた、機械学習トレーニング又は推定の最適化を含む実装のために、固定機能マトリクス乗算ロジック等の機械学習加速ロジックを更に含み得る。
【００４９】
［００８０］
各グラフィックス・サブ・コア５０１Ａ〜５０１Ｆ内に、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムによる要求に応答して、グラフィックス、メディア、及びコンピュータ演算を実行するために使用され得る実行リソースのセットが含まれる。グラフィックス・サブ・コア５０１Ａ〜５０１Ｆは、複数のＥＵアレイ５０２Ａ〜５０２Ｆ、５０４Ａ〜５０４Ｆ、スレッド・ディスパッチ及びスレッド間通信（ｔｈｒｅａｄ  ｄｉｓｐａｔｃｈ  ａｎｄ  ｉｎｔｅｒ−ｔｈｒｅａｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ：ＴＤ／ＩＣ）ロジック５０３Ａ〜５０３Ｆ、３Ｄ（例えば、テクスチャ）サンプラ５０５Ａ〜５０５Ｆ、メディア・サンプラ５０６Ａ〜５０６Ｆ、シェーダ・プロセッサ５０７Ａ〜５０７Ｆ、及び共有ローカル・メモリ（ｓｈａｒｅｄ  ｌｏｃａｌ  ｍｅｍｏｒｙ：ＳＬＭ）５０８Ａ〜５０８Ｆを含む。ＥＵアレイ５０２Ａ〜５０２Ｆ、５０４Ａ〜５０４Ｆはそれぞれ複数の実行ユニットを含み、実行ユニットは、グラフィックス、メディア、又は演算シェーダ・プログラムを含むグラフィックス、メディア、又は演算オペレーションのサービスにおいて浮動小数点及び整数／固定小数点ロジック・オペレーションを実行することが可能な汎用グラフィックス処理ユニットである。ＴＤ／ＩＣロジック５０３Ａ〜５０３Ｆは、サブ・コア内の実行ユニットのためにローカル・スレッド・ディスパッチ及びスレッド制御オペレーションを実行し、サブ・コアの実行ユニット上で動作しているスレッド間の通信を促進する。３Ｄサンプラ５０５Ａ〜５０５Ｆは、テクスチャ又は他の３Ｄグラフィック関連データをメモリに読み込むことができる。３Ｄサンプラは、設定されたサンプラ状態及び所与のテクスチャに関連付けられるテクスチャ・フォーマットに基づいて別様にテクスチャ・データを読み込むことが可能である。メディア・サンプラ５０５Ａ〜５０５Ｆは、メディア・データに関連付けられる種類及びフォーマットに基づいて同様な読み込み動作を実行することができる。一実施形態では、各グラフィックス・サブ・コア５０１Ａ〜５０１Ｆは、代替的に、統合３Ｄ及びメディア・サンプラを含むことが可能である。サブ・コア５０１Ａ〜５０１Ｆの各々の中の実行ユニット上で動作するスレッドは、各サブ・コア内の共有ローカル・メモリ５０８Ａ〜５０８Ｆを利用することが可能であり、スレッド・グループ内で動作するスレッドを、オンチップ・メモリの共通プールを用いて実行できるようにする。
【００５０】
［００８１］
実行ユニット
図６Ａ〜６Ｂは、本願明細書に記載の実施形態によるグラフィックス・プロセッサ・コアで利用される処理要素のアレイを含むスレッド実行ロジック６００を示す。本願明細書の任意の他の図の要素と同じ参照符号（又は名称）を有する図６Ａ〜６Ｂの要素は、本願明細書の他の場所に記載されたものと同様のいずれかの方法で動作し又は機能し得るが、そのように限定されない。図６Ａは、図５の各サブ・コア５０１Ａ〜５０１Ｆと共に説明されたハードウェア・ロジックの変形を含み得るスレッド実行ロジック６００の概観を示す。図６Ｂは、実行ユニットの例示的な内部の詳細を示す。
【００５１】
［００８２］
図６Ａに示すように、幾つかの実施形態では、スレッド実行ロジック６００は、シェーダ・プロセッサ６０２、スレッド・ディスパッチャ６０４、命令キャッシュ６０６、複数の実行ユニット６０８Ａ〜６０８Ｎを含むスケーラブル実行ユニット・アレイ、サンプラ６１０、データ・キャッシュ６１２、及びデータ・ポート６１４を含む。一実施形態では、スケーラブル実行ユニット・アレイは、１つ以上の実行ユニット（例えば、実行ユニット６０８Ａ、６０８Ｂ、６０８Ｃ、６０８Ｄ〜６０８Ｎ−１及び６０８Ｎ）を、ワークロードの計算要件に基づいてイネーブル又はディセーブルにすることにより、動的にスケーリングすることが可能である。一実施形態では、含まれるコンポーネントは、コンポーネントの各々をリンクする相互接続設備により相互接続される。幾つかの実施形態では、スレッド実行ロジック６００は、命令キャッシュ６０６、データ・ポート６１４、サンプラ６１０、及び実行ユニット６０８Ａ〜６０８Ｎのうちの１つ以上を通じて、システム・メモリ又はキャッシュ・メモリ等のメモリに対する１つ以上の接続を含む。幾つかの実施形態では、各実行ユニット（例えば６０８Ａ）は、複数のデータ要素を各スレッドのために並列に処理しながら、複数の同時ハードウェア・スレッドを実行することが可能なスタンドアロン型プログラマブル汎用計算ユニットである。種々の実施形態において、実行ユニット６０８Ａ〜６０８Ｎのアレイは、任意の数の個々の実行ユニットを含むようにスケーラブルである。
【００５２】
［００８３］
幾つかの実施形態では、実行ユニット６０８Ａ〜６０８Ｎは、主にシェーダ・プログラムを実行するために使用される。シェーダ・プロセッサ６０２は、種々のシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられる実行スレッドをスレッド・ディスパッチャ６０４によりディスパッチすることが可能である。一実施形態では、スレッド・ディスパッチャは、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット６０８Ａ〜６０８Ｎ内の１つ以上の実行ユニット上でインスタンス化するロジックを含む。例えば、形状パイプラインは、頂点、モザイク又はテッセレーション（ｔｅｓｓｅｌｌａｔｉｏｎ）、又は形状シェーダを、処理のためにスレッド実行ロジックにディスパッチすることが可能である。幾つかの実施形態では、スレッド・ディスパッチャ６０４はまた、実行中のシェーダ・プログラムからのランタイム・スレッド生成要求も処理することが可能である。
【００５３】
［００８４］
幾つかの実施形態では、実行ユニット６０８Ａ〜６０８Ｎは、多くの３Ｄグラフィックス標準仕様からのグラフィックス・シェーダ命令のための本来的なサポートを含む命令セットをサポートし、その結果、グラフィックス・ライブラリ（例えば、ダイレクト３Ｄ及びオープンＧＬ）からのシェーダ・プログラムは、最小限の変換で実行される。実行ユニットは、頂点及び形状処理（例えば、頂点プログラム、形状プログラム、頂点シェーダ）、ピクセル処理（例えば、ピクセル・シェーダ、フラグメント・シェーダ）、及び汎用処理（例えば、計算及びメディア・シェーダ）をサポートする。実行ユニット６０８Ａ−６０８Ｎの各々は、ＳＩＭＤ（ｍｕｌｔｉ−ｉｓｓｕｅ  ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）の実行が可能であり、マルチ・スレッド・オペレーションは、より大きな遅延のメモリ・アクセスに直面する効率的な実行環境を可能にする。各実行ユニットの中の各ハードウェア・スレッドは、専用高帯域幅レジスタ・ファイル及び関連する独立スレッド状態を有する。実行は、整数、単精度及び倍精度浮動小数点演算、ＳＩＭＤ分岐能力、論理演算、超越論的演算、及び他の様々な演算を行うことが可能なパイプラインに対するクロック毎のマルチ・イシュー（ｍｕｌｔｉ−ｉｓｓｕｅ）である。メモリ又は何れかの共有機能からのデータを待機している間、実行ユニット６０８Ａ−６０８Ｎ内の従属ロジックは、要求したデータが返されるまで待機スレッドをスリープさせる。待機スレッドがスリープしている間、ハードウェア・リソースは、他のスレッドを処理することに専念してよい。例えば、頂点シェーダ演算に関連する遅延の間、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別の種類のシェーダ・プログラムのために演算を実行することが可能である。
【００５４】
［００８５］
実行ユニット６０８Ａ−６０８Ｎの中の各実行ユニットは、データ要素のアレイに関して動作する。データ要素の数は、「実行サイズ」又は命令のためのチャネル数である。実行チャネルは、データ要素アクセス、マスキング、及び命令内のフロー制御に対する実行についての論理ユニットである。チャネル数は、特定のグラフィックス・プロセッサの物理ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）又はＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｕｎｉｔ）の数と独立であってよい。幾つかの実施形態では、実行ユニット６０８Ａ−６０８Ｎは、整数及び浮動小数点データ型をサポートする。
【００５５】
［００８６］
実行ユニット命令セットは、ＳＩＭＤ命令を含む。種々のデータ要素は、パックされたデータ・タイプとしてレジスタに格納されることが可能であり、実行ユニットは、要素のデータ・サイズに基づいて種々の要素を処理することになる。例えば、２５６ビット幅のベクトルに関して演算する場合、ベクトルの２５６ビットは、レジスタに格納され、実行ユニットは、４個の別個の６４ビットのパックされたデータ要素（クワッド・ワード（Ｑｕａｄ−Ｗｏｒｄ：ＱＷ）サイズ・データ要素）、８個の別個の３２ビットのパックされたデータ要素（ダブル・ワード（ＤｏｕｂｌｅＷｏｒｄ：ＤＷ）サイズ・データ要素）、１６個の別個の１６ビットのパックされたデータ要素（ワード（Ｗｏｒｄ：Ｗ）サイズ・データ要素）、又は３２個の別個の８ビットデータ要素（バイト（ｂｙｔｅ：Ｂ）サイズ・データ要素）として、ベクトルに関して演算する。しかしながら、異なるベクトル幅及びレジスタ・サイズが可能である。
【００５６】
［００８７］
ある実施形態では、１つ以上の実行ユニットが、融合実行ユニットに共通であるスレッド制御ロジック（６０７Ａ〜６０７Ｎ）を有する融合ＥＵ６０９Ａ〜６０９Ｎに結合されることが可能である。複数のＥＵがＥＵグループに融合されることが可能である。融合ＥＵグループ内の各ＥＵは、別個のＳＩＭＤハードウェア・スレッドを実行するよう構成されることが可能である。融合ＥＵグループ内のＥＵ数は、実施形態に応じて変化し得る。更に、ＳＩＭＤ８、ＳＩＭＤ１６、及びＳＩＭＤ３２を含むがこれらに限定されない種々のＳＩＭＤ幅が、ＥＵ毎に実行されることが可能である。各融合グラフィックス実行ユニット６０９Ａ〜６０９Ｎは、少なくとも２つの実行ユニットを含む。例えば、第１実行ユニット６０９Ａは、第１ＥＵ６０８Ａ、第２ＥＵ６０８Ｂ、及び第１ＥＵ６０８Ａと第２ＥＵ６０８Ｂとに共通するスレッド制御ロジック６０７Ａを含む。スレッド制御ロジック６０７Ａは、融合グラフィックス実行ユニット６０９Ａで実行されるスレッドを制御し、融合実行ユニット６０９Ａ〜６０９Ｎ内の各ＥＵが、共通命令ポインタ・レジスタを使用して実行することを可能にする。
【００５７】
［００８８］
１つ以上の内部命令キャッシュ（例えば６０６）が、実行ユニット用のスレッド命令をキャッシュするために、スレッド実行ロジック６００に含まれる。幾つかの実施形態では、１つ以上のデータ・キャッシュ（例えば６１２）は、スレッド実行中にスレッド・データをキャッシュするために含まれる。幾つかの実施形態では、サンプラ６１０は、３Ｄ演算のためのテクスチャ・サンプリング及びメディア演算のためのメディア・サンプリングを提供するために含まれる。幾つかの実施形態では、サンプラ６１０は、サンプリングされたデータを実行ユニットに提供する前に、サンプリング・プロセス中にテクスチャ又はメディア・データを処理するために、特別なテクスチャ又はメディア・サンプリング機能を含む。
【００５８】
［００８９］
実行中、グラフィックス及びメディア・パイプラインは、スレッド開始要求をスレッド実行ロジック６００へ、スレッド生成（ｓｐａｗｎｉｎｇ）及びディスパッチ（ｄｉｓｐａｔｃｈ）ロジックを介して送信する。幾何学オブジェクトのグループが処理され、ピクセル・データにラスタライズされると、シェーダ・プロセッサ６０２内のピクセル・プロセッサ・ロジック（例えば、ピクセル・シェーダ・ロジック、フラグメント・シェーダ・ロジック、等）が呼び出され、出力情報を更に計算し及び出力面（例えば、色バッファ、深度バッファ、ステンシル・バッファ、等）に書き込まれるべき結果を生じさせる。幾つかの実施形態では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタライズされたオブジェクト全体にわたって補間されるべき種々の頂点属性の値を計算する。幾つかの実施形態では、シェーダ・プロセッサ６０２内のピクセル・プロセッサ・ロジックは、ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）−供給ピクセル又はフラグメント・シェーダ・プログラムを実行する。シェーダ・プログラムを実行するために、シェーダ・プロセッサ６０２は、スレッドを実行ユニット（例えば６０８Ａ）へ、スレッド・ディスパッチャ６０４を介してディスパッチする。幾つかの実施形態では、シェーダ・プロセッサ６０２は、サンプラ６１０内のテクスチャ・サンプリング・ロジックを使用して、メモリに格納されたテクスチャ・マップ内のテクスチャ・データにアクセスする。テクスチャ・データ及び入力幾何学データに対する算術演算は、各々の幾何学フラグメントのピクセル・カラー・データを計算し、又は１つ以上のピクセルを将来の処理から破棄する。
【００５９】
［００９０］
幾つかの実施形態では、データ・ポート６１４は、グラフィックス・プロセッサ出力パイプラインでの更なる処理のために処理済みデータをメモリへ出力するように、スレッド実行ロジック６００にメモリ・アクセス・メカニズムを提供する。幾つかの実施形態では、データ・ポート６１４は、データ・ポートを介するメモリ・アクセスのためにデータをキャッシュするように、１つ以上のキャッシュ・メモリ（例えば、データ・キャッシュ６１２）を含む又はそれに結合する。
【００６０】
［００９１］
図６Ｂに示されるように、グラフィックス実行ユニット６０８は、命令フェッチ・ユニット６３７、汎用レジスタ・ファイル・アレイ（ｇｅｎｅｒａｌ  ｒｅｇｉｓｔｅｒ  ｆｉｌｅ  ａｒｒａｙ：ＧＲＦ）６２４、アーキテクチャ・レジスタ・ファイル・アレイ（ａｒｃｈｉｔｅｃｔｕｒａｌ  ｒｅｇｉｓｔｅｒ  ｆｉｌｅ  ａｒｒａｙ：ＡＲＦ）６２６、スレッド・アービタ６２２、送信ユニット６３０、分岐ユニット６３２、一群のＳＩＭＤ浮動小数点ユニット（ＦＰＵ）６３４、及び一実施形態では一群の専用の整数型ＳＩＭＤ  ＡＬＵ６３５を含む。ＧＲＦ６２４及びＡＲＦ６２６は、グラフィックス実行ユニット６０８内でアクティブであってよい同時ハードウェア・スレッドにそれぞれ関連付けられる汎用レジスタ・ファイル及びアーキテクチャ・レジスタ・ファイルのセットを含む。一実施形態では、スレッド毎のアーキテクチャ状態はＡＲＦ６２６内に保持される一方、スレッド実行中に使用されるデータはＧＲＦ６２４に格納される。各スレッドのための命令ポインタを含む各スレッドの実行状態は、ＡＲＦ６２６内のスレッド専用レジスタに保持されることが可能である。
【００６１】
［００９２］
一実施形態では、グラフィックス実行ユニット６０８は、同時複数スレッド（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ：ＳＭＴ）及び詳細インタリーブド・マルチ・スレッド（Ｉｎｔｅｒｌｅａｖｅｄ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ：ＩＭＴ）の結合であるアーキテクチャを有する。アーキテクチャは、ターゲットの同時スレッド数、及び実行ユニット当たりのレジスタ数に基づいて、設計時に微調整されることが可能なモジュラ構成を有し、ここで、実行ユニット・リソースは、複数同時スレッドを実行するために使用されるロジックにわたって分割される。
【００６２】
［００９３］
一実施形態では、グラフィックス実行ユニット６０８は、それぞれ異なる命令であってよい複数の命令を同時発行（ｃｏ−ｉｓｓｕｅ）することが可能である。グラフィックス実行ユニット・スレッド６０８のスレッド・アービタ６２２は、命令を、送信ユニット６３０、分岐ユニット６４２、又はＳＩＭＤ  ＦＰＵ６３４へ実行のためにディスパッチすることができる。各実行スレッドは、ＧＲＦ６２４内の１２８個の汎用レジスタにアクセスすることが可能であり、ここで、各レジスタは、３２ビット・データ要素のＳＩＭＤ８要素ベクトルとしてアクセス可能な３２バイトを格納することが可能である。一実施形態では、各実行ユニット・スレッドは、ＧＲＦ６２４内の４Ｋバイトへのアクセスを有するが、実施形態はそのように限定されず、他の実施形態ではより多数の又は少数のレジスタ・リソースが提供され得る。一実施形態では、最大７個のスレッドが同時に実行できるが、実行ユニット当たりのスレッド数は、実施形態によって変化し得る。７個のスレッドが４Ｋバイトにアクセスし得る実施形態では、ＧＲＦ６２４は合計２８Ｋバイトを格納することが可能である。フレキシブルなアドレッシング・モードは、レジスタが一緒にアドレス指定されて、効率的により幅広いレジスタを構築すること、又はストライド処理された（ｓｔｒｉｄｅｄ）方形ブロック・データ構造を表すことを可能にする。
【００６３】
［００９４］
一実施形態では、メモリ動作、サンプラ動作、及び他の長レイテンシ・システム通信は、メッセージ受け渡し送信ユニット６３０により実行される「送信」命令によりディスパッチされる。一実施形態では、分岐命令は、ＳＩＭＤダイバージェンス及び最終的コンバージェンスを促進する専用分岐ユニット６３２へディスパッチされる。
【００６４】
［００９５］
一実施形態では、グラフィックス実行ユニット６０８は、浮動小数点演算を実行するために１つ以上のＳＩＭＤ浮動小数点ユニット（ＦＰＵ）６３４を含む。一実施形態では、ＦＰＵ６３４は整数計算もサポートする。一実施形態では、ＦＰＵ６３４は、最大Ｍ個の３２ビット浮動小数点（又は整数）演算をＳＩＭＤ実行し、又は最大２Ｍ個の１６ビット整数若しくは１６ビット浮動小数点演算をＳＩＭＤ実行することができる。一実施形態では、ＦＰＵのうちの少なくとも１つは、高スループットの卓越した演算機能及び倍精度の６４ビット浮動小数点をサポートするために、拡張された演算能力を提供する。幾つかの実施形態では、８ビット整数ＳＩＭＤ  ＡＬＵのセット６３５も存在し、機械学習計算に関連する演算を実行するために特別に最適化されてもよい。
【００６５】
［００９６］
一実施形態では、グラフィックス実行ユニット６０８の複数のインスタンスのアレイは、グラフィックス・サブ・コア・グルーピング（例えば、サブスライス）でインスタンス化されることが可能である。スケーラビリティのために、製品アーキテクチャは、サブ・コア・グルーピング当たりの正確な実行ユニット数を選択することが可能である。一実施形態では、実行ユニット６０８は、複数の実行チャネルにわたって命令を実行することが可能である。別の実施形態では、グラフィックス実行ユニット６０８で実行される各スレッドは、異なるチャネルで実行される。
【００６６】
［００９７］
図７は、幾つかの実施形態によるグラフィックス・プロセッサ命令フォーマットを示すブロック図である。１つ以上の実施形態において、グラフィックス・プロセッサ実行ユニットは、複数のフォーマットの命令を有する命令セットをサポートする。実線ボックスは、実行ユニット命令に一般的に含まれるコンポーネントを示す一方、破線は任意の又は命令のサブセットにのみ含まれるコンポーネントを含む。幾つかの実施形態では、説明され図示される命令フォーマット７００は、マクロ命令であり、ここでマクロ命令は実行ユニットに供給される命令であり、これに対して、マイクロ・オペレーションは、命令が処理されると命令デコードから生じる。
【００６７】
［００９８］
幾つかの実施形態では、グラフィックス・プロセッサ実行ユニットは、本来、１２８ビット命令フォーマット７１０の命令をサポートする。６４ビットの小型命令フォーマット７３０は、選択された命令、命令オプション、及びオペランド数に基づいて、幾つかの命令に利用可能である。ネイティブの１２８ビット命令フォーマット７１０は、全ての命令オプションへのアクセスを提供する一方、幾つかのオプション及び演算は、６４ビット・フォーマット７３０で制限される。６４ビット・フォーマット７３０で利用可能なネイティブ命令は、実施形態により変化する。幾つかの実施形態では、命令は、インデックス・フィールド７１３内のインデックス値のセットを用いて部分的に圧縮される。実行ユニット・ハードウェアは、インデックス値に基づいて圧縮テーブルのセットを参照し、圧縮テーブル出力を用いて、１２８ビット命令フォーマット７１０内のネイティブ命令を再構成する。
【００６８】
［００９９］
フォーマット毎に、命令オペコード７１２は、実行ユニットが実行しようとする演算を定める。実行ユニットは、各オペランドの複数のデータ要素にわたって各命令を並行に実行する。例えば、加算命令に応答して、実行ユニットは、テクスチャ要素又はピクチャ要素を表す各々のカラー・チャネルにわたって同時加算演算を実行する。デフォルトで、実行ユニットは、オペランドの全てのデータ・チャネルにわたって各命令を実行する。幾つかの実施形態では、命令制御フィールド７１４は、チャネル選択（例えば、予測）及びデータ・チャネル順序（例えばスイズル（ｓｗｉｚｚｌｅ））のような所定の実行オプションに対する制御を可能にする。１２８ビット命令フォーマット７１０の命令では、実行サイズ・フィールド７１６は、並列に実行されるデータ・チャネルの数を制限する。幾つかの実施形態では、実行サイズ・フィールド７１６は、６４ビット小型命令フォーマット７３０での使用に利用可能でない。
【００６９】
［０１００］
幾つかの実行ユニット命令は、２個のソース・オペランド、ｓｒｃ０  ７２０及びｓｒｃ１  ７２２と１つの宛先７１８とを含む最大３個のオペランドを有する。幾つかの実施形態では、実行ユニットは、宛先の１つが示唆される二重宛先（ｄｕａｌ  ｄｅｓｔｉｎａｔｉｏｎ）命令をサポートする。データ操作命令は、第３ソース・オペランド（例えば、ＳＲＣ２  ７２４）を有し、ここで命令オペコード７１２はソース・オペランド数を決定する。命令の最後のソース・オペランドは、命令と共に渡される中間（例えば、ハードコードされた）値であり得る。
【００７０】
［０１０１］
幾つかの実施形態では、１２８ビット命令フォーマット７１０は、例えば直接レジスタ・アドレッシング・モード又は間接レジスタ・アドレッシング・モードが使用されることを指定するアクセス／アドレス・モード・フィールド７２６を含む。直接レジスタ・アドレッシング・モードが使用される場合、１つ以上のオペランドのレジスタ・アドレスは、命令の中のビットにより直接的に提供される。
【００７１】
［０１０２］
幾つかの実施形態では、１２８ビット命令フォーマット７１０は、命令のアドレス・モード及び／又はアクセス・モードを指定するアクセス／アドレス・モード・フィールド７２６を含む。一実施形態では、アクセス・モードは、命令のデータ・アクセス・アライメントを定めるために使用される。幾つかの実施形態は、１６バイト整合アクセス・モード及び１バイト整合アクセス・モードを含むアクセス・モードをサポートし、ここで、アクセス・モードのバイト・アライメントは、命令オペランドのアクセス・アライメントを決定する。例えば、第１モードの場合に、命令は、ソース及び宛先オペランドのためにバイト整合アドレッシングを使用し、第２モードの場合に、命令は、全てのソース及び宛先オペランドのために１６バイト整合アドレッシングを使用してよい。  
［０１０３］
一実施形態では、アクセス／アドレス・モード・フィールド７２６のアドレス・モード部分は、命令が直接又は間接アドレッシングを使用するか否かを決定する。直接レジスタ・アドレッシング・モードが使用される場合、命令内のビットは、１つ以上のオペランドのレジスタ・アドレスを直接的に提供する。間接レジスタ・アドレッシング・モードが使用される場合、１つ以上のオペランドのレジスタ・アドレスは、アドレス・レジスタ値及び命令内のアドレス中間フィールドに基づいて計算され得る。
【００７２】
［０１０４］
幾つかの実施形態では、命令は、オペコード・デコード７４０を簡略化するために、オペコード７１２ビット・フィールドに基づいてグループ化される。８ビット・オペコードでは、ビット４、５、及び６は、実行ユニットがオペコードのタイプを決定することを可能にする。図示の明確なオペコード・グループ化は、単なる一例である。幾つかの実施形態では、移動（ｍｏｖｅ）及びロジック・オペコード・グループ７４２は、データ移動及びロジック命令（例えば、移動（ｍｏｖ）、比較（ｃｍｐ））を含む。幾つかの実施形態では、移動及びロジック・グループ７４２は、５個の最上位ビット（ＭＳＢ）を共有し、ここで、移動（ｍｏｖ）命令は００００ｘｘｘｘｂの形式であり、ロジック命令は０００１ｘｘｘｘｂの形式である。フロー制御命令グループ７４４（例えば、呼び出し（ｃａｌｌ）、ジャンプ（ｊｍｐ））は、００１０ｘｘｘｘｂ（例えば、０ｘ２０）の形式で命令を含む。様々な命令グループ７４６は、００１１ｘｘｘｘｂ（例えば０ｘ３０）の形式で同期命令（例えば、待機（ｗａｉｔ）、送信（ｓｅｎｄ））を含む混合命令を含む。並列演算命令グループ７４８は、０１００ｘｘｘｘｂ（例えば、０ｘ４０）の形式でコンポーネントに渡る算術演算命令（例えば、加算（ａｄｄ）、乗算（ｍｕｌ））を含む。並列算術グループ７４８は、データ・チャネルに渡り並列に算術演算を実行する。ベクトル算術グループ７５０は、０１０１ｘｘｘｘｂ（例えば、０ｘ５０）の形式で算術演算命令（例えばｄｐ４）を含む。ベクトル算術グループは、ベクトル・オペランドに対してドット積計算のような算術演算を実行する。
【００７３】
［０１０５］
グラフィックス・パイプライン
図８は、グラフィックス・プロセッサ８００の別の実施形態のブロック図である。本願明細書の任意の他の図の要素と同じ参照符号（又は名称）を有する図８の要素は、本願明細書の他の場所に記載されたものと同様のいずれかの方法で動作し又は機能し得るが、そのように限定されない。
【００７４】
［０１０６］
幾つかの実施形態では、グラフィックス・プロセッサ８００は、幾何学パイプライン８２０、メディア・パイプライン８３０、ディスプレイ・エンジン８４０、スレッド実行ロジック８５０、及びレンダ出力パイプライン８７０を含む。幾つかの実施形態では、グラフィックス・プロセッサ８００は、１つ以上の汎用処理コアを含むマルチ・コア処理システム内のグラフィックス・プロセッサである。グラフィックス・プロセッサは、１つ以上の制御レジスタ（図示せず）へのレジスタ書き込みにより、又はリング相互接続８０２を介するグラフィックス・プロセッサ８００へ発行されるコマンドにより、制御される。幾つかの実施形態では、リング相互接続８０２は、グラフィックス・プロセッサ８００を、他のグラフィックス・プロセッサ又は汎用プロセッサ等の他の処理コンポーネントに結合する。リング相互接続８０２からのコマンドは、幾何学パイプライン８２０又はメディア・パイプライン８３０の個々のコンポーネントに命令を供給するコマンド・ストリーマ８０３により解釈される。
【００７５】
［０１０７］
幾つかの実施形態では、コマンド・ストリーマ８０３は、頂点データをメモリから読み込み及びコマンド・ストリーマ８０３により提供される頂点処理コマンドを実行する、頂点フェッチャ８０５の動作を指示する。幾つかの実施形態では、頂点フェッチャ８０５は、頂点データを頂点シェーダ８０７に提供し、頂点シェーダ８０７は、各頂点への座標空間変換及び照明オペレーションを実行する。幾つかの実施形態では、頂点フェッチャ８０５及び頂点シェーダ８０７は、実行スレッドを実行ユニット８５２Ａ〜８５２Ｂへスレッド・ディスパッチャ８３１を介してディスパッチすることにより、頂点処理命令を実行する。
【００７６】
［０１０８］
幾つかの実施形態では、実行ユニット８５２Ａ〜８５２Ｂは、グラフィックス及びメディア・オペレーションを実行するための命令セットを有するベクトル・プロセッサのアレイである。幾つかの実施形態では、実行ユニット８５２Ａ〜８５２Ｂは、各アレイに特有の又はアレイ間で共有される付属のＬ１キャッシュ８５１を有する。キャッシュは、データ・キャッシュ、命令キャッシュ、又は異なるパーティションにデータ及び命令を含めるように区分される単一キャッシュとして構成できる。
【００７７】
［０１０９］
幾つかの実施形態では、幾何学パイプライン８２０は、３Ｄオブジェクトのハードウェア高速化テッセレーション（ｈａｒｄｗａｒｅ−ａｃｃｅｌｅｒａｔｅｄ  ｔｅｓｓｅｌｌａｔｉｏｎ）を実行するテッセレーション・コンポーネントを含む。幾つかの実施形態では、プログラマブル・ハル（ｈｕｌｌ）シェーダ８１１がテッセレーション・オペレーションを構成する。プログラマブル・ドメイン・シェーダ８１７は、テッセレーション出力のバックエンド評価を提供する。テッセレータ８１３は、ハル・シェーダ８１１の指示で動作し、幾何学パイプライン８２０への入力として提供される粗・幾何学モデルに基づいて詳細・幾何学オブジェクトのセットを生成するための特定用途ロジックを含む。幾つかの実施形態では、テッセレーションが使用されない場合、テッセレーション・コンポーネント（例えば、ハル・シェーダ８１１、テッセレータ８１３、及びドメイン・シェーダ８１７）は、迂回されることが可能である。
【００７８】
［０１１０］
幾つかの実施形態では、完成した幾何学オブジェクトは、実行ユニット８５２Ａ〜８５２Ｂへディスパッチされる１つ以上のスレッドを介して幾何学シェーダ８１９により処理されることが可能であり、又はクリッパ８２９へ直接的に進むことが可能である。幾つかの実施形態では、幾何学シェーダは、グラフィックス・パイプラインの前段階でのように頂点又は頂点のパッチではなく、全体の幾何学オブジェクトに作用する。テッセレーションがディセーブルにされる場合、幾何学シェーダ８１９は、頂点シェーダ８０７から入力を受信する。幾つかの実施形態では、幾何学シェーダ８１９は、テッセレーション・ユニットがディセーブルにされる場合に、幾何学テッセレーションを実行するように幾何学シェーダ・プログラムによりプログラム可能である。
【００７９】
［０１１１］
ラスタライズの前に、クリッパ８２９は頂点データを処理することができる。クリッパ８２９は、クリッピング及び幾何学シェーダ機能を有する固定機能クリッパ又はプログラマブル・クリッパであってよい。幾つかの実施形態では、レンダ出力パイプライン８７０内のラスタライザ及び深度テスト・コンポーネント８７３は、幾何学オブジェクトをピクセル表現毎に変換するためにピクセル・シェーダをディスパッチする。幾つかの実施形態では、ピクセル・シェーダ・ロジックは、スレッド実行ロジック８５０に含まれる。幾つかの実施形態では、アプリケーションは、ラスタライザ及び深度テスト・コンポーネント８７３を迂回し、ストリーム出力ユニット８２３を介して未ラスタライズ頂点データにアクセスすることができる。
【００８０】
［０１１２］
グラフィックス・プロセッサ８００は、相互接続バス、相互接続ファブリック、又はプロセッサの主要コンポーネントの間でデータ及びメッセージの受け渡しを可能にする何らかの他の相互接続メカニズムを有する。幾つかの実施形態では、実行ユニット８５２Ａ〜８５２Ｂ及び関連するロジック・ユニット（例えば、Ｌ１キャッシュ８５１、サンプラ８５４、テクスチャ・キャッシュ８５８、等）は、メモリ・アクセス及びプロセッサのレンダ出力パイプライン・コンポーネントとの通信を実行するために、データ・ポート８５６を介して相互接続する。幾つかの実施形態では、サンプラ８５４、キャッシュ８５１、８５８、及び実行ユニット８５２Ａ〜８５２Ｂはそれぞれ、別個のメモリ・アクセス・パスを有する。一実施形態では、テクスチャ・キャッシュ８５８は、サンプラ・キャッシュとして構成されることも可能である。
【００８１】
［０１１３］
幾つかの実施形態では、レンダ出力パイプライン８７０は、頂点に基づくオブジェクトを、関連するピクセルに基づく表現に変換するラスタライザ及び深度テスト・コンポーネント８７３を含む。幾つかの実施形態では、ラスタライザ・ロジックは、固定機能トライアングル及びライン・ラスタライゼーションを実行するために、ウィンドウァ／マスクァ・ユニット（ａ  ｗｉｎｄｏｗｅｒ／ｍａｓｋｅｒ  ｕｎｉｔ）を含む。幾つかの実施形態では、関連するレンダー・キャッシュ８７８及び深度キャッシュ８７９も利用可能である。ピクセル演算コンポーネント８７７は、ピクセルに基づく演算をデータに対して実行するが、幾つかの例では、２Ｄオペレーションに関連するピクセル・オペレーション（例えば、ブレンディングによるビット・ブロック画像転送）は、２Ｄエンジン８４１により実行され、又はオーバレイ・ディスプレイ面を用いてディスプレイ・コントローラ８４３により表示の時点で置き換えられる。幾つかの実施形態では、共有Ｌ３キャッシュ８７５は、全てのグラフィックス・コンポーネントに利用可能であり、メイン・システム・メモリを使用せずに、データの共有を可能にする。
【００８２】
［０１１４］
幾つかの実施形態では、グラフィックス・プロセッサ・メディア・パイプライン８３０は、メディア・エンジン８３７及びビデオ・フロント・エンド８３４を含む。幾つかの実施形態では、ビデオ・フロント・エンド８３４は、コマンド・ストリーマ８０３からパイプライン・コマンドを受信する。幾つかの実施形態では、メディア・パイプライン８３０は、別個のコマンド・ストリーマを含む。幾つかの実施形態では、ビデオ・フロント・エンド８３４は、コマンドをメディア・エンジン８３７へ送信する前に、メディア・コマンドを処理する。幾つかの実施形態では、メディア・エンジン８３７は、スレッド・ディスパッチャ８３１によりスレッド実行ユニット８５０へディスパッチするために、スレッドを生成するスレッド生成機能を含む。
【００８３】
［０１１５］
幾つかの実施形態では、グラフィックス・プロセッサ８００はディスプレイ・エンジン８４０を含む。幾つかの実施形態では、ディスプレイ・エンジン８４０は、プロセッサ８００の外部にあり、リング相互接続８０２、又は何らかの他の相互接続バス若しくはファブリックを介して、グラフィックス・プロセッサと結合する。幾つかの実施形態では、ディスプレイ・エンジン８４０は、２Ｄエンジン８４１及びディスプレイ・コントローラ８４３を含む。幾つかの実施形態では、ディスプレイ・エンジン８４０は、３Ｄパイプラインと独立に動作することが可能な特定用途ロジックを含む。幾つかの実施形態では、ディスプレイ・コントローラ８４３は、ラップトップ・コンピュータにおけるようなシステム一体化ディスプレイ・デバイス、又はディスプレイ・デバイス・コネクタを介して取り付けられる外部ディスプレイ・デバイスであってよいディスプレイ・デバイス（図示せず）に結合する。
【００８４】
［０１１６］
幾つかの実施形態では、幾何学パイプライン８２０及びメディア・パイプライン８３０は、複数のグラフィックス及びメディア・プログラミング・インターフェースに基づいて演算を実行するよう構成可能であり、何らかの１つのアプリケーション・プログラミング・インターフェース（ＡＰＩ）に特有ではない。幾つかの実施形態では、グラフィックス・プロセッサのためのドライバ・ソフトウェアは、特定のグラフィックス又はメディア・ライブラリに特有のＡＰＩ呼び出しを、グラフィックス・プロセッサにより処理されることが可能なコマンドに変換する。幾つかの実施形態では、ＯｐｅｎＧＬ（Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）、ＯｐｅｎＣＬ（Ｏｐｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｌａｎｇｕａｇｅ）、及び／又はヴァルカン（Ｖｕｌｋａｎ）グラフィックス及び計算ＡＰＩ、クロノス・グループ（Ｋｈｒｏｎｏｓ  Ｇｒｏｕｐ）からの全てのためにサポートが提供される。幾つかの実施形態ではまた、マイクロソフト・コーポレーションからのダイレクト３Ｄライブラリのためにサポートが提供されてもよい。幾つかの実施形態では、これらのライブラリの組み合せがサポートされてもよい。サポートは、ＯｐｅｎＣＶ（Ｏｐｅｎ  Ｓｏｕｒｃｅ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  Ｌｉｂｒａｒｙ）についても提供されてもよい。将来のＡＰＩのパイプラインからグラフィックス・プロセッサのパイプラインへのマッピングが行われ得る場合、互換性のある３Ｄパイプラインを有する将来のＡＰＩもまた、サポートされるであろう。
【００８５】
［０１１７］
グラフィックス・パイプライン・プログラミング
図９Ａは、幾つかの実施形態によるグラフィックス・プロセッサ・コマンド・フォーマットを示すブロック図である。図９Ｂは、実施形態によるグラフィックス・プロセッサ・コマンド・シーケンス９１０を示すブロック図である。図９Ａ内の実線ボックスは、グラフィックス・コマンドに一般的に含まれるコンポーネントを示す一方、破線は任意的である又はグラフィックス・コマンドのサブセットにのみ含まれるコンポーネントを含む。図９Ａの例示的なグラフィックス・プロセッサ・コマンド・フォーマット９００は、クライアント９０２、コマンド演算コード（オペコード）９０４、及びコマンドのためのデータ９０６を識別するデータ・フィールドを含む。サブ・オペコード９０５及びコマンド・サイズ９０８も、何らかのコマンドに含まれる。
【００８６】
［０１１８］
幾つかの実施形態では、クライアント９０２は、コマンド・データを処理するグラフィックス・デバイスのクライアント・ユニットを指定する。幾つかの実施形態では、グラフィックス・プロセッサ・コマンド・パーサは、各コマンドのクライアント・フィールドを調べ、コマンドの更なる処理を条件付け、及びコマンド・データを適切なクライアント・ユニットへルーティングする。幾つかの実施形態では、グラフィックス・プロセッサ・クライアント・ユニットは、メモリ・インターフェース・ユニット、レンダー・ユニット、２Ｄユニット、３Ｄユニット、及びメディア・ユニットを含む。各クライアント・ユニットは、コマンドを処理する対応する処理パイプラインを有する。コマンドがクライアント・ユニットにより受信されると、クライアント・ユニットは、オペコード９０４と存在する場合にはサブ・オペコード９０５とを読み込み、実行すべきオペレーションを決定する。クライアント・ユニットは、データ・フィールド９０６内の情報を用いてコマンドを実行する。幾つかのコマンドに関し、明示的なコマンド・サイズ９０８が、コマンドのサイズを指定するように期待される。幾つかの実施形態では、コマンド・パーサは、コマンド・オペコードに基づいて、コマンドの少なくとも幾つかのサイズを自動的に決定する。幾つかの実施形態では、コマンドは、複数のダブル・ワードにより揃えられる。
【００８７】
［０１１９］
図９Ｂのフロー図は、例示的なグラフィックス・プロセッサ・コマンド・シーケンス９１０を示す。幾つかの実施形態では、グラフィックス・プロセッサの実施形態を特徴付けるデータ処理システムのソフトウェア又はファームウェアは、示されるコマンド・シーケンスのバージョンを使用して、グラフィックス・オペレーションのセットを設定し、実行し、及び終了する。例示の目的でのみ、サンプル・コマンド・シーケンスが示され説明されるが、実施形態はこれらの特定のコマンド又はこのコマンド・シーケンスに限定されない。更に、コマンドは、コマンド・シーケンスの中で、コマンドのバッチとして発行されてもよく、その結果、グラフィックス・プロセッサは、少なくとも部分的に同時発生するコマンドのシーケンスを処理することになる。
【００８８】
［０１２０］
幾つかの実施形態では、グラフィックス・プロセッサ・コマンド・シーケンス９１０は、パイプライン・フラッシュ・コマンド９１２で始まり、任意のアクティブなグラフィックス・パイプラインに、パイプラインの現在保留中のコマンドを完了させる。幾つかの実施形態では、３Ｄパイプライン９２２及びメディア・パイプライン９２４は、同時に動作しない。パイプライン・フラッシュは、アクティブ・グラフィックス・パイプラインに、任意の保留中コマンドを完了させるために実行される。パイプライン・フラッシュに応答して、グラフィックス・プロセッサのためのコマンド・パーサは、アクティブな描画エンジンが保留中のオペレーションを完了し、及び関連リード・キャッシュが無効化されるまで、コマンド処理を一時停止する。選択的に、「ダーティ（ｄｉｒｔｙ）」としてマークされたレンダー・キャッシュの中の任意のデータは、メモリにフラッシュされることが可能である。幾つかの実施形態では、パイプライン・フラッシュ・コマンド９１２は、パイプライン同期のために、又はグラフィックス・プロセッサを低電力状態にする前に、使用されることが可能である。
【００８９】
［０１２１］
幾つかの実施形態では、パイプライン選択コマンド９１３は、コマンド・シーケンスが、パイプライン間で明示的に切り替えることをグラフィックス・プロセッサに要求する場合に使用される。幾つかの実施形態では、パイプライン選択コマンド９１３は、コンテキストが両方のパイプラインにコマンドを発行するものでない限り、パイプライン・コマンドを発行する前に、実行コンテキスト内で１度だけ要求される。幾つかの実施形態では、パイプライン・フラッシュ・コマンド９１２は、パイプライン選択コマンド９１３によるパイプライン切り替えの直前に要求される。
【００９０】
［０１２２］
幾つかの実施形態では、パイプライン制御コマンド９１４は、オペレーションのためにグラフィックス・パイプラインを構成し、３Ｄパイプライン９２２及びメディア・パイプライン９２４をプログラムするために使用される。幾つかの実施形態では、パイプライン制御コマンド９１４は、アクティブ・パイプラインのパイプライン状態を構成する。一実施形態では、パイプライン制御コマンド９１４は、パイプライン同期のために使用され、コマンドのバッチを処理する前にアクティブ・パイプラインの中の１つ以上のキャッシュ・メモリからのデータをクリアする。
【００９１】
［０１２３］
幾つかの実施形態では、リターン・バッファ状態コマンド９１６は、データを書き込むために、それぞれのパイプラインのリターン・バッファのセットを構成するために使用される。幾つかのパイプライン演算は、演算が処理中に中間データを書き込む１つ以上のリターン・バッファの割り当て、選択、又は設定を必要とする。幾つかの実施形態では、グラフィックス・プロセッサはまた、１つ以上のリターン・バッファを使用して、出力データを格納し、及びスレッド間通信を実行する。幾つかの実施形態では、リターン・バッファ状態９１６は、パイプライン演算のセットのために使用するリターン・バッファのサイズ及び数を選択することを含む。
【００９２】
［０１２４］
コマンド・シーケンスの中の残りのコマンドは、演算のためのアクティブ・パイプラインに基づき相違する。パイプライン決定９２０に基づき、コマンド・シーケンスは、３Ｄパイプライン状態９３０で開始する３Ｄパイプライン９２２、又はメディア・パイプライン状態９４０で開始するメディア・パイプライン９２４に合わせられる。
【００９３】
［０１２５］
３Ｄパイプライン状態９３０を構成するためのコマンドは、頂点バッファ状態、頂点要素状態、定色状態、深さバッファ状態、及び３Ｄプリミティブ・コマンドが処理される前に構成されるべき他の状態変数のための、３Ｄ状態設定コマンドを含む。これらのコマンドの値は、少なくとも部分的に、使用中の特定の３Ｄ  ＡＰＩに基づき決定される。幾つかの実施形態では、３Ｄパイプライン状態９３０コマンドはまた、特定のパイプライン要素が使用されない場合、該要素を選択的にディセーブルにし又はバイパスすることが可能である。
【００９４】
［０１２６］
幾つかの実施形態では、３Ｄプリミティブ９３２コマンドは、３Ｄパイプラインにより処理されるべき３Ｄプリミティブをサブミットするために使用される。３Ｄプリミティブ９３２コマンドによりグラフィックス・プロセッサに渡されるコマンド及び関連パラメータは、グラフィックス・パイプライン内の頂点フェッチ機能へ転送される。頂点フェッチ機能は、３Ｄプリミティブ９３２コマンド・データを用いて頂点データ構造を生成する。頂点データ構造は、１つ以上のリターン・バッファに格納される。幾つかの実施形態では、３Ｄプリミティブ９３２コマンドは、頂点シェーダにより、３Ｄプリミティブに関して頂点演算を実行するために使用される。頂点シェーダを処理するために、３Ｄパイプライン９２２は、グラフィックス・プロセッサ実行ユニットへシェーダ実行スレッドをディスパッチする。
【００９５】
［０１２７］
幾つかの実施形態では、３Ｄパイプライン９２２は、実行９３４コマンド又はイベントによりトリガされる。幾つかの実施形態では、レジスタ書き込みは、コマンド実行をトリガする。幾つかの実施形態では、実行は、コマンド・シーケンス内の「ｇｏ」又は「ｋｉｃｋ」コマンドによりトリガされる。一実施形態では、コマンド実行は、パイプライン同期コマンドを用いてトリガされ、グラフィックス・パイプラインを通じてコマンド・シーケンスをフラッシュする。３Ｄパイプラインは、３Ｄプリミティブのために幾何学処理を実行することになる。演算が完了すると、結果として生じた幾何学オブジェクトはラスタライズされ、ピクセル・エンジンは結果として生じたピクセルを着色する。ピクセル・シェーディング及びピクセル・バック・エンド演算を制御するための追加コマンドもまた、これらの演算のために含まれてよい。
【００９６】
［０１２８］
幾つかの実施形態では、グラフィックス・プロセッサ・コマンド・シーケンス９１０は、メディア演算を実行する場合に、メディア・パイプライン９２４パスを辿る。通常、メディア・パイプライン９２４に関するプログラミングの具体的な使用及び方法は、実行されるべきメディア又は計算演算に依存する。特定のメディア復号演算は、メディア復号中のメディア・パイプラインにオフロードされてよい。幾つかの実施形態では、メディア・パイプラインもまた迂回されることが可能であり、メディア復号は、１つ以上の汎用処理コアにより提供されるリソースを全体的又は部分的に用いて実行されることが可能である。一実施形態では、メディア・パイプラインもまた、汎用グラフィックス・プロセッサユニット（ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ：ＧＰＧＰＵ）演算のための要素を含み、ここで、グラフィックス・プロセッサは、グラフィックス・プリミティブのレンダリングに明示的には関連しないコンピュータ・シェーダ・プログラムを用いてＳＩＭＤベクトル演算を実行するために使用される。
【００９７】
［０１２９］
幾つかの実施形態では、メディア・パイプライン９２４は、３Ｄパイプライン９２２と同様の方法で構成される。メディア・パイプライン状態９４０を構成するコマンドのセットは、メディア・オブジェクト・コマンド９２４の前にコマンド・シーケンスにディスパッチ又は配置される。幾つかの実施形態では、メディア・パイプライン状態９４０のためのコマンドは、メディア・オブジェクトを処理するために使用されるメディア・パイプライン要素を構成するためのデータを含む。これは、エンコーダ又はデコーダ・フォーマット等の、メディア・パイプライン内のビデオ復号及びビデオ符号化ロジックを構成するためのデータを含む。幾つかの実施形態では、メディア・パイプライン状態９４０のためのコマンドはまた、状態設定のバッチを含む、「間接」状態要素に対する１つ以上のポインタの使用をサポートする。
【００９８】
［０１３０］
幾つかの実施形態では、メディア・オブジェクト・コマンド９４２は、メディア・パイプラインによる処理のために、メディア・オブジェクトに対するポインタを供給する。メディア・オブジェクトは、処理されるべきビデオ・データを含むメモリ・バッファを含む。幾つかの実施形態では、全てのメディア・パイプライン状態は、メディア・オブジェクト・コマンド９４２を発行する前に有効化されなければならない。パイプライン状態が構成され、メディア・オブジェクト・コマンド９４２が待ち行列に入れられると、メディア・パイプライン９２４は、実行コマンド９４４又は等価な実行イベント（例えば、レジスタ書き込み）によりトリガされる。メディア・パイプライン９２４からの出力は、次に、３Ｄパイプライン９２２又はメディア・パイプライン９２４により提供される演算により後処理されてもよい。幾つかの実施形態では、ＧＰＧＰＵ演算が設定され、メディア演算と同様の方法で実行される。
【００９９】
［０１３１］
グラフィックス・ソフトウェア・アーキテクチャ
図１０は、幾つかの実施形態によるデータ処理システム１０００の例示的なグラフィックス・ソフトウェア・アーキテクチャを示す。幾つかの実施形態では、ソフトウェア・アーキテクチャは、３Ｄグラフィックス・アプリケーション１０１０、オペレーティング・システム１０２０、及び少なくとも１つのプロセッサ１０３０を含む。幾つかの実施形態では、プロセッサ１０３０は、グラフィックス・プロセッサ１０３２、及び１つ以上の汎用プロセッサ・コア１０３４を含む。グラフィックス・アプリケーション１０１０及びオペレーティング・システム１０２０はそれぞれ、データ処理システムのシステム・メモリ１０５０内で実行する。
【０１００】
［０１３２］
幾つかの実施形態では、３Ｄグラフィックス・アプリケーション１０１０は、シェーダ命令１０１２を含む１つ以上のシェーダ・プログラムを含む。シェーダ言語命令は、ＨＬＳＬ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ｓｈａｄｅｒ  Ｌａｎｇｕａｇｅ）又はＧＬＳＬ（ＯｐｅｎＧＬ  Ｓｈａｄｅｒ  Ｌａｎｇｕａｇｅ）のような高級シェーダ言語のものであってよい。アプリケーションはまた、汎用プロセッサ・コア１０３４による実行に適したマシン語の実行命令１０１４も含む。アプリケーションは、頂点データにより定義されるグラフィックス・オブジェクト１０１６も含む。
【０１０１】
［０１３３］
幾つかの実施形態では、オペレーティング・システム１０２０は、マイクロソフト社のＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システム、独自使用のＵＮＩＸ（登録商標）のようなオペレーティング・システム、又はＬｉｎｕｘ（登録商標）カーネルの変形を用いるオープン・ソースＵＮＩＸ等のオペレーティング・システムである。オペレーティング・システム１０２０は、Ｄｉｒｅｃｔ３Ｄ  ＡＰＩ、ＯｐｅｎＧＬ  ＡＰＩ又はＶｕｌｋａｎＡＰＩのような、グラフィックスＡＰＩ１０２２をサポートすることが可能である。Ｄｉｒｅｃｔ３Ｄ  ＡＰＩが使用される場合、オペレーティング・システム１０２０は、フロントエンド・シェーダ・コンパイラ１０２４を用いて、ＨＬＳＬの任意のシェーダ命令１０１２を低レベルのシェーダ言語にコンパイルする。コンパイルは、ジャスト・イン・タイム（ｊｕｓｔ−ｉｎ−ｔｉｍｅ：ＪＩＴ）コンパイルであってよく、又はアプリケーションはコンパイル前にシェーダを実行することが可能である。幾つかの実施形態では、高レベルのシェーダは、３Ｄグラフィックス・アプリケーション１０１０のコンパイル中に低レベルのシェーダにコンパイルされる。幾つかの実施形態では、シェーダ命令１０１２は、Ｖｕｌｋａｎ  ＡＰＩにより使用される標準ポータブル中間表現（Ｓｔａｎｄａｒｄ  Ｐｏｒｔａｂｌｅ  Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ：ＳＰＩＲ）の或るバージョンのような中間形式で提供される。
【０１０２】
［０１３４］
幾つかの実施形態では、ユーザ・モード・グラフィックス・ドライバ１０２６は、シェーダ命令１０１２をハードウェア特有の表現に変換するバックエンド・シェーダ・コンパイラ１０２７を含む。ＯｐｅｎＧＬ  ＡＰＩが使用される場合、ＧＬＳＬ高級言語のシェーダ命令は、コンパイルのためにユーザ・モード・グラフィックス・ドライバ１０２６に渡される。幾つかの実施形態では、ユーザ・モード・グラフィックス・ドライバ１０２６は、カーネル・モード・グラフィックス・ドライバ１０２９と通信するために、オペレーティング・システム・カーネル・モード機能１０２８を用いる。幾つかの実施形態では、カーネル・モード・グラフィックス・ドライバ１０２９は、コマンド及び命令をディスパッチするためにグラフィックス・プロセッサ１０３２と通信する。
【０１０３】
［０１３５］
ＩＰコア実装
少なくとも１つの実施形態の１つ以上の態様は、プロセッサ等の集積回路内のロジックを表現及び／又は規定する、機械可読媒体に格納された代表的なコードによって実装されてもよい。例えば、機械可読媒体は、プロセッサ内の種々のロジックを表す命令を含んでよい。機械により読み込まれると、命令は、該機械に、本願明細書に記載の技術を実行するロジックを作成させることができる。このような表現は、「ＩＰコア」として知られ、集積回路の構造を記述するハードウェア・モデルのような、有形の機械可読媒体に格納されてよい集積回路のためのロジックの再利用可能なユニットである。ハードウェア・モデルは、集積回路を製造する製造装置にハードウェア・モデルをロードする、様々な顧客又は製造設備に供給されてよい。本願明細書に記載の実施形態のうちの何れかに関連して記載された動作を回路が実行するように、集積回路は製造され得る。
【０１０４】
［０１３６］
図１１Ａは、一実施形態による演算を実行するための集積回路を製造するために使用され得るＩＰコア開発システム１１００を示すブロック図である。ＩＰコア開発システム１１００は、より大きな設計に組み込まれ又は集積回路全体（例えば、ＳＯＣ集積回路）を構成するために使用されることが可能なモジュラ再使用可能設計を生成するために使用されうる。設計設備１１３０は、高級プログラミング言語（例えば、Ｃ／Ｃ＋＋）でＩＰコア設計のソフトウェア・シミュレーション１１１０を生成することが可能である。ソフトウェア・シミュレーション１１１０は、シミュレーション・モデル１１１２を用いてＩＰコアの動作を設計し、テストし、及び検証するために使用されることが可能である。シミュレーション・モデル１１１２は、機能、動作、及び／又はタイミングのシミュレーションを含んでもよい。レジスタ転送レベル（ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：ＲＴＬ）１１１５が次に生成され、又はシミュレーション・モデル１１１２から合成され得る。ＲＴＬ設計１１１５は、モデル化したディジタル信号を用いて実行される関連ロジックを含む、ハードウェア・レジスタ間のディジタル信号のフローをモデル化する集積回路動作の抽象化である。ＲＴＬ設計１１１５に加えて、ロジック・レベル又はトランジスタ・レベルでの低レベル設計もまた、生成され、設計され、又は合成されてよい。したがって、初期設計及びシミュレーションの特定の詳細事項は変化し得る。
【０１０５】
［０１３７］
ＲＴＬ設計１１１５又は均等物は、更に、設計設備によりハードウェア・モデル１１２０へと合成されてもよく、ハードウェア・モデル１１２０は、ハードウェア記述言語（ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ：ＨＤＬ）又は何らかの他の表現の物理設計データであってよい。ＨＤＬは、ＩＰコア設計を検証するために更にシミュレートされ又はテストされてよい。ＩＰコア設計は、不揮発性メモリ１１４０（例えば、ハード・ディスク、フラッシュ・メモリ、又は任意の不揮発性記憶媒体）を用いて第三者製造設備１１６５へ分配するために格納され得る。代替的に、ＩＰコア設計は、有線接続１１５０又は無線接続１１６０を介して（例えばインターネットを介して）伝送され得る。製造設備１１６５は、次に、ＩＰコア設計に少なくとも部分的に基づく集積回路を製造してよい。製造された集積回路は、本願明細書に記載の少なくとも１つの実施形態に従い演算を実行するよう構成され得る。
【０１０６】
［０１３８］
図１１Ｂは、本願明細書に記載の幾つかの実施形態による集積回路パッケージ・アセンブリ１１７０の側断面図を示す。集積回路パッケージ・アセンブリ１１７０は、本願明細書に記載のような１つ以上のプロセッサ又はアクセラレータ・デバイスの実装を示す。パッケージ・アセンブリ１１７０は、基板１１８０に接続されたハードウェア・ロジック１１７２、１１７４の複数のユニットを含む。ロジック１１７２、１１７４は、少なくとも部分的に設定可能ロジック又は固定機能ロジックハードウェアで実装されてよく、本願明細書に記載のプロセッサ・コア、グラフィックス・プロセッサ、又は他のアクセラレータ・デバイスのうちの任意の１つ以上の部分を含み得る。ロジック１１７２、１１７４の各ユニットは、半導体ダイ内に実装され、相互接続構造１１７３を介して基板１１８０に結合されることが可能である。相互接続構造１１７３は、ロジック１１７２、１１７４と基板１１８０との間で電気信号をルーティングするよう構成されてよく、限定ではないがバンプ又はピラーのような相互接続を含み得る。幾つかの実施形態では、相互接続構造１１７３は、ロジック１１７２、１１７４の演算に関連付けられた、例えば入力／出力（Ｉ／Ｏ）信号及び／又は電力若しくはグランド信号等の電気信号をルーティングするよう構成されてよい。幾つかの実施形態では、基板１１８０は、エポキシ・ベースの積層基板である。パッケージ基板１１８０は、他の実施形態では他の適切な種類の基板を含んでよい。パッケージ・アセンブリ１１７０は、パッケージ相互接続１１８３を介して他の電気デバイスに接続され得る。パッケージ相互接続１１８３は、マザーボード、他のチップセット、又はマルチチップ・モジュールのような他の電気デバイスへ電気信号をルーティングするために、基板１１８０の表面に結合され得る。
【０１０７】
［０１３９］
幾つかの実施形態では、ロジック１１７２、１１７４のユニットは、ロジック１１７２、１１７４の間で電気信号をルーティングするよう構成されるブリッジ１１８２に電気的に結合される。ブリッジ１１８２は、電気信号のためのルートを提供する高密度の相互接続構造であってよい。ブリッジ１１８２は、ガラス又は適切な半導体材料により構成されるブリッジ基板を含んでよい。電気的ルーティング特徴は、ロジック１１７２、１１７４の間のチップ間接続を提供するために、ブリッジ基板上に形成されることが可能である。
【０１０８】
［０１４０］
ロジック１１７２、１１７４の２つのユニット及びブリッジ１１８２が示されているが、本願明細書に記載の実施形態は、より多くの又はより少ないロジック・ユニットを１つ以上のダイに含めてもよい。ロジックが単一のダイに含まれる場合、ブリッジ１１８２は除外され得るので、１つ以上のダイは、ゼロ以上のブリッジにより接続され得る。代替として、複数のダイ又はロジックのユニットが、１つ以上のブリッジにより接続され得る。追加的に、複数のロジック・ユニット、ダイ、及びブリッジは、３次元構成を含む他の可能な構成で一緒に接続され得る。
【０１０９】
［０１４１］
例示的なシステム・オン・チップ集積回路
図１２〜１４は、本願明細書に記載の種々の実施形態による、１つ以上のＩＰコアを用いて製造され得る例示的な集積回路及び関連するグラフィックス・プロセッサを示す。図示されたものに加えて、追加のグラフィックス・プロセッサ／コア、周辺機器インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他のロジック及び回路が含まれてよい。
【０１１０】
［０１４２］
図１２は、実施形態による、１つ以上のＩＰコアを用いて製造され得る例示的なシステム・オン・チップ集積回路１２００を示すブロック図である。例示的な集積回路１２００は、１つ以上のアプリケーション・プロセッサ１２０５（例えば、ＣＰＵ）、少なくとも１つのグラフィックス・プロセッサ１２１０を含み、追加的に、画像プロセッサ１２１５及び／又はビデオ・プロセッサ１２２０を含んでよく、これらのうちの任意のものが、同一の又は複数の異なる設計設備からのモジュラＩＰコアであってよい。集積回路１２００は、ＵＳＢコントローラ１２２５、ＵＡＲＴコントローラ１２３０、ＳＰＩ／ＳＤＩＯコントローラ１２３５、及びＩ２Ｓ／Ｉ２Ｃコントローラ１２４０を含む周辺機器又はバス・ロジックを含む。追加的に、集積回路は、ＨＤＭＩ（登録商標）（ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）コントローラ１２５０及びＭＩＰＩ（ｍｏｂｉｌｅ  ｉｎｄｕｓｔｒｙ  ｐｒｏｃｅｓｓｏｒ  ｉｎｔｅｒｆａｃｅ）ディスプレイ・インターフェース１２５５のうちの１つ以上に結合されるディスプレイ・デバイス１２４５を含むことが可能である。ストレージは、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム１２６０により提供されてよい。メモリ・インターフェースは、ＳＤＲＡＭ又はＳＲＡＭメモリ・デバイスへのアクセスのためにメモリ・コントローラ１２６５により提供されてよい。幾つかの集積回路は、追加的に、内蔵セキュリティ・エンジン１２７０を含む。
【０１１１】
［０１４３］
図１３Ａ〜１３Ｂｈは、本願明細書に記載の実施形態による、ＳｏＣ内で使用する例示的なグラフィックス・プロセッサを示すブロック図である。図１３Ａは、実施形態による、１つ以上のＩＰコアを用いて製造され得るシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ１３１０を示す。図１３Ｂは、実施形態による、１つ以上のＩＰコアを用いて製造され得るシステム・オン・チップ集積回路の追加的な例示的なグラフィックス・プロセッサ１３４０を示す。図１３Ａのグラフィックス・プロセッサ１３１０は、低電力グラフィックス・プロセッサ・コアの一例である。図１３Ｂのグラフィックス・プロセッサ１３４０は、高性能グラフィックス・プロセッサ・コアの一例である。グラフィックス・プロセッサ１３１０、１３４０の各々は、図１２のグラフィックス・プロセッサの変形であり得る。
【０１１２】
［０１４４］
図１３Ａに示すように、グラフィックス・プロセッサ１３１０は、頂点プロセッサ１３０５及び１つ以上のフラグメント・プロセッサ１３１５Ａ〜１３１５Ｎ（例えば、１３１５Ａ、１３１５、１３１５Ｃ、１３１５Ｄ、乃至１３１５Ｎ−１、及び１３１５Ｎ）を含む。グラフィックス・プロセッサ１３１０は、別個のロジックにより異なるシェーダ・プログラムを実行することが可能であり、その結果、頂点プロセッサ１３０５は、頂点シェーダ・プログラムの演算を実行するために最適化される一方、１つ以上のフラグメント・プロセッサ１３１５Ａ〜１３１５Ｎは、フラグメント又はピクセル・シェーダ・プログラムのフラグメント（例えばピクセル）シェーディング演算を実行する。頂点プロセッサ１３０５は、３Ｄグラフィックス・パイプラインの頂点処理段階を実行し、プリミティブ及び頂点データを生成する。フラグメント・プロセッサ１３０５Ａ〜１３１５Ｎは、頂点プロセッサ１３０５により生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスで表示されるフレーム・バッファを生成する。一実施形態では、フラグメント・プロセッサ１３１５Ａ〜１３１５Ｎは、Ｄｉｒｅｃｔ  ３Ｄ  ＡＰＩ内で提供されるようなピクセル・シェーダ・プログラムと同様なオペレーションを実行するために使用され得るＯｐｅｎＧＬ  ＡＰＩ内で提供される場合に、フラグメント・シェーダ・プログラムを実行するように最適化される。
【０１１３】
［０１４５］
グラフィックス・プロセッサ１３１０は、追加的に、１つ以上のメモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ：ＭＭＵ）１３２０Ａ〜１３２０Ｂ、キャッシュ１３２５Ａ〜１３２５Ｂ、及び回路相互接続１３３０Ａ〜１３３０Ｂを含む。１つ以上のＭＭＵ１３２０Ａ〜１３２０Ｂは、１つ以上のキャッシュ１３２５Ａ〜１３２５Ｂに格納された頂点又は画像／テクスチャ・データに加えて、メモリに格納される頂点又は画像／テクスチャ・データを参照し得る頂点プロセッサ１３０５及び／又はフラグメント・プロセッサ１３１５Ａ〜１３１５Ｎを含むグラフィックス・プロセッサ１３１０のために仮想ないし物理アドレスへのマッピングを提供する。一実施形態では、１つ以上のＭＭＵ１３２０Ａ〜１３２０Ｂは、図１２の１つ以上のアプリケーション・プロセッサ１２０５、画像プロセッサ１２１５、及び／又はビデオ・プロセッサ１２２０に関連する１つ以上のＭＭＵを含む、システム内の他のＭＭＵと同期化されることが可能であり、その結果、各プロセッサ１２０５〜１２２０は、共有又は統一された仮想メモリ・システムに参加することが可能である。１つ以上の回路相互接続１３３０Ａ〜１３３０Ｂは、実施形態に従って、グラフィックス・プロセッサ１３１０が、ＳｏＣの内部バスを介して又は直接接続を介して、ＳｏＣ内の他のＩＰコアとのインターフェースを為すように動作させる。
【０１１４】
［０１４６］
図１３Ｂに示すように、グラフィックス・プロセッサ１３４０は、図１３Ａのグラフィックス・プロセッサ１３１０の１つ以上のＭＭＵ１３２０Ａ〜１３２０Ｂ、キャッシュ１３２５Ａ〜１３２５Ｂ、及び回路相互接続１３３０Ａ〜１３３０Ｂを含む。グラフィックス・プロセッサ１３４０は、統一シェーダ・コア・アーキテクチャを提供する１つ以上のシェーダ・コア１３５５Ａ〜１３５５Ｎ（例えば、１３５５Ａ、１３５５Ｂ、１３５５Ｃ、１３５５Ｄ、１３５５Ｅ、１３５５Ｆ乃至１３５５Ｎ−１、及び１３５５Ｎ）を含み、統一シェーダ・コア・アーキテクチャでは、単一のコア又はタイプ又はコアが、頂点シェーダ、フラグメント・シェーダ、及び／又はコンピュータ・シェーダを実現するためのシェーダ・プログラム・コードを含む全てのタイプのプログラマブル・シェーダ・コードを実行することが可能である。存在するシェーダ・コアの正確な数は、実施形態及び実装の間で変化し得る。追加的に、グラフィックス・プロセッサ１３４０は、インターコア・タスク・マネジャ１３４５を含み、インターコア・タスク・マネジャ１３４５は、実行スレッドを１つ以上のシェーダ・コア１３５５Ａ〜１３５５Ｎへディスパッチするスレッド・ディスパッチャ、及びタイルに基づくレンダリングのためのタイリング・オペレーションを加速するタイリング・ユニット１３５８として動作し、ここで、シーンのレンダリング・オペレーションは、例えばシーン内の局所的な空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、画像空間において細分化される。
【０１１５】
［０１４７］
図１４Ａ〜１４Ｂは、本願明細書に記載の実施形態による追加的の例示的なグラフィックス・プロセッサ・ロジックを示す。図１４Ａは、図１２のグラフィックス・プロセッサ１２１０内に含まれ得る及び図１３Ｂにおけるもののような統一シェーダ・コア１３５５Ａ〜１３５５Ｎであり得る、グラフィックス・コア・１４００を示す。図１４Ｂは、マルチチップ・モジュールでの配備に適した高度に並列化された汎用グラフィックス処理ユニット１４３０を示す。
【０１１６】
［０１４８］
図１４Ａに示すように、グラフィックス・コア１４００は、グラフィックス・コア１４００内の実行リソースに共通である、共有命令キャッシュ１４０２、テクスチャ・ユニット１４１８、及びキャッシュ／共有メモリ１４２０を含む。グラフィックス・コア１４００は、複数のスライス１４０１Ａ〜１４０１Ｎ又は各コアのためのパーティションを含むことが可能であり、グラフィックス・プロセッサは、グラフィックス・コア１４００の複数のインスタンスを含むことが可能である。スライス１４０１Ａ〜１４０１Ｎは、ローカル命令キャッシュ１４０４Ａ〜１４０４Ｎ、スレッド・スケジューラ１４０６Ａ〜１４０６Ｎ、スレッド・ディスパッチャ１４０８Ａ〜１４０８Ｎ、及びレジスタ１４１０Ａ〜１４１０Ｎのセットを含むサポート・ロジックを含み得る。ロジック演算を実行するために、スライス１４０１Ａ〜１４０１Ｎは、追加機能ユニット（ＡＦＵ（ａｄｄｉｔｉｏｎａｌ  ｆｕｎｃｔｉｏｎ  ｕｎｉｔ）１４１２Ａ〜１４１２Ｎ）、浮動小数点ユニット（ＦＰＵ（ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｕｎｉｔ）１４１４Ａ〜１４１４Ｎ）、整数算術論理ユニット（ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）１４１６Ａ〜１４１６Ｎ）、アドレス計算ユニット（ＡＣＵ（ａｄｄｒｅｓｓ  ｃｏｍｐｕｔａｔｉｏｎａｌ  ｕｎｉｔ）１４１３Ａ〜１４１３Ｎ）、倍精度浮動小数点ユニット（ＤＰＦＰＵ（ｄｏｕｂｌｅ−ｐｒｅｃｉｓｉｏｎ  ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｕｎｉｔ）１４１５Ａ〜１４１５Ｎ）、及び行列処理ユニット（ＭＰＵ（ｍａｔｒｉｘ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）１４１７Ａ〜１４１７Ｎ）のセットを含み得る。
【０１１７】
［０１４９］
計算ユニットのうちの幾つかは、特定の精度で動作する。例えば、ＦＰＵ１４１４Ａ〜１４１４Ｎは、単精度（３２ビット）及び半精度（１６ビット）の浮動小数点演算を実行することが可能である一方、ＤＰＦＰＵ１４１５Ａ〜１４１５Ｎは倍精度（６４ビット）の浮動小数点演算を実行する。ＡＬＵ１４１６Ａ〜１４１６Ｎは、８ビット、１６ビット、及び３２ビットの精度で可変精度の整数演算を実行することが可能であり、混合精度演算のために構成されることが可能である。ＭＰＵ１４１７Ａ〜１４１７Ｎはまた、半精度浮動小数点及び８ビット整数演算を含む混合精度行列演算のためにも構成され得る。ＭＰＵ１４１７Ａ〜１４１７Ｎは、加速汎用行列乗算（ｇｅｎｅｒａｌ  ｍａｔｒｉｘ  ｔｏ  ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ：ＧＥＭＭ）のサポートを有効にすることを含む、機械学習アプリケーション・フレームワークを加速させる種々の行列演算を実行することが可能である。ＡＦＵ１４１２Ａ〜１４１２Ｎは、三角法演算（例えば、Ｓｉｎｅ、Ｃｏｓｉｎｅ、等）を含む、浮動小数点又は整数ユニットによりサポートされない追加の論理演算を実行することが可能である。
【０１１８】
［０１５０］
図１４Ｂに示すように、汎用処理ユニット（ＧＰＧＰＵ）１４３０は、高度に並列的な計算オペレーションを、グラフィックス処理ユニットのアレイにより実行させ得るよう構成されることが可能である。更に、ＧＰＧＰＵ１４３０は、ＧＰＧＰＵの他のインスタンスに直接的にリンクされ、マルチＧＰＵクラスタを生成して特定の深層ニューラル・ネットワークのトレーニング速度を向上させることが可能である。ＧＰＧＰＵ１４３０は、ホスト・プロセッサとの接続を可能にするために、ホスト・インターフェース１４３２を含む。一実施形態では、ホスト・インターフェース１４３２はＰＣＩ  Ｅｘｐｒｅｓｓインターフェースである。しかしながら、ホスト・インターフェースはまた、ベンダ固有通信インターフェース又は通信設備であるとすることも可能である。ＧＰＧＰＵ１４３０は、ホスト・プロセッサからコマンドを受信し、グローバル・スケジューラ１４３４を用いて、これらのコマンドに関連する実行スレッドを、計算クラスタ１４３６Ａ〜１４３６Ｈのセットへ分配する。計算クラスタ１４３６Ａ〜１４３６Ｈは、キャッシュ・メモリ１４３８を共有する。キャッシュ・メモリ１４３８は、計算クラスタ１４３６Ａ〜１４３６Ｈ内のキャッシュ・メモリのために、より上位のキャッシュとして機能し得る。
【０１１９】
［０１５１］
ＧＰＧＰＵ１４３０は、メモリ・コントローラ１４４２Ａ〜１４４２Ｂのセットを介して計算クラスタ１４３６Ａ〜１４３６Ｈに結合されたメモリ１４４３４Ａ〜１４４３４Ｂを含む。種々の実施形態において、メモリ１４３４Ａ〜１４３４Ｂは、ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、又はＧＤＤＲ（ｇｒａｐｈｉｃｓ  ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ）メモリを含むＳＧＲＡＭ（ｓｙｎｃｈｒｏｎｏｕｓ  ｇｒａｐｈｉｃｓ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のようなグラフィックス・ランダム・アクセス・メモリを含む様々な種類のメモリ・デバイスを含み得る。
【０１２０】
［０１５２］
一実施形態では、計算クラスタ１４３６Ａ〜１４３６Ｈはそれぞれ、図１４Ａのグラフィックス・コア１４００のようなグラフィックス・コアのセットを含み、グラフィックス・コアは、機械学習計算に適したものを含む範囲の精度で計算オペレーションを実行することが可能な複数種類の整数及び浮動小数点論理ユニットを含み得る。例えば、及び一実施形態では、計算クラスタ１４３６Ａ〜１４３６Ｈの各々の中の浮動小数点ユニットの少なくとも或るサブセットは、１６ビット又は３２ビット浮動小数点演算を実行するよう構成されることが可能である一方、浮動小数点ユニットの異なるサブセットは、６４ビット浮動小数点演算を実行するように構成され得る。
【０１２１】
［０１５３］
ＧＰＧＰＵ１４３０の複数のインスタンスは、計算クラスタとして動作するよう構成され得る。同期及びデータ交換のために計算クラスタにより使用される通信メカニズムは、実施形態に応じて異なる。一実施形態では、ＧＰＧＰＵ１４３０の複数のインスタンスは、ホスト・インターフェース１４３２を介して通信する。一実施形態では、ＧＰＧＰＵ１４３０は、ＧＰＧＰＵの他のインスタンスへの直接接続を可能にするＧＰＵリンク１４４０にＧＰＧＰＵ１４３０を結合するＩ／Ｏハブ１４３９を含む。一実施形態では、ＧＰＵリンク１４４０は、ＧＰＧＰＵ１４３０の複数のインスタンスの間の通信及び同期を可能にする専用のＧＰＵ−ＧＰＵブリッジに結合される。一実施形態では、ＧＰＵリンク１４４０は、他のＧＰＧＰＵ又は並列プロセッサに対してデータを送信及び受信するために、高速相互接続で結合する。一実施形態では、ＧＰＧＰＵ１４３０の複数のインスタンスは、別個のデータ処理システム内に置かれ、ホスト・インターフェース１４３２を介してアクセス可能なネットワーク・デバイスを介して通信する。一実施形態では、ＧＰＵリンク１４４０は、ホスト・インターフェース１４３２に追加的に又は代替的に、ホスト・プロセッサへの接続を可能にするよう構成され得る。
【０１２２】
［０１５４］
ＧＰＧＰＵ１４３０の図示の構成は、ニューラル・ネットワークをトレーニングするために構成され得るが、一実施形態は、高性能又は低電力推定（ｉｎｆｅｒｅｎｃｉｎｇ）プラットフォーム内での配備のために構成され得るＧＰＧＰＵ１４３０の代替構成を提供する。推定構成では、ＧＰＧＰＵ１４３０は、トレーニング構成と比べて、より少ない計算クラスタ１４３６Ａ〜１４３６Ｈを含む。更に、メモリ１４３４Ａ〜１４３４Ｂに関連するメモリ技術は、推定及びトレーニング構成の間で異なってもよく、より高い帯域幅メモリ技術がトレーニング構成に充てられる。一実施形態では、ＧＰＧＰＵ１４３０の推定構成は、特定命令の推定をサポートすることが可能である。例えば、推定構成は、配備されるニューラル・ネットワークの推定演算中に共通に使用される１つ以上の８ビット整数ドット積命令のサポートを提供することが可能である。
【０１２３】
［０１５５］
分散グラフィックス・デバイスにおけるワークロード・スケジューリング及び分配
本明細書に記載される実施形態は、より小さなグラフィックス・デバイスの多数のタイルで構成されるタイル化されたアーキテクチャを有するグラフィックス、メディア、及びコンピュータ・デバイスを提供する。そのようなデバイスは、デバイスのパワー及び／又はパフォーマンス・ターゲットに応じて、より多数の又はより小数のタイルを含むようにスケーリングされることが可能である。このようなスケーリングされるデバイスは、複数タイルにわたるワークロードの効率的な配分を可能にするために、特別に仕立てられた作業配分インフラストラクチャを利用することが可能である。本明細書に記載されるワーク配布インフラストラクチャは、可変数の複数タイルにわたってスケーリングされるワークロード・ディスパッチを可能にする。ワーク・アイテムは、複数のタイルを跨ぐことが可能なワークロードとともに、複数タイルの任意の１つ以上のタイルにサブミットされることが可能である。追加的に、作業アイテムの完了時に、デバイス内のグラフィックス、メディア、及び／又は計算エンジンは、実行のための新しい作業アイテムを、最小の待ち時間で容易に獲得することができる。
【０１２４】
［０１５６］
図１５は、一実施形態によるデータ処理システム１５００のブロック図である。データ処理システム１５００は、プロセッサ１５０２、統一メモリ１５１０、及び機械学習加速論理を含むＧＰＧＰＵ１５２０を有するヘテロジニアス処理システムである。プロセッサ１５０２及びＧＰＧＰＵ１５２０は、本明細書に記載のプロセッサ及びＧＰＧＰＵ／パラレル・プロセッサの何れであってもよい。プロセッサ１５０２は、システム・メモリ１５１２に格納されたコンパイラ１５１５のための命令を実行することができる。コンパイラ１５１５は、ソース・コード１５１４Ａをコンパイルされたコード１５１４Ｂにコンパイルするためにプロセッサ１５０２上で実行する。コンパイルされたコード１５１４Ｂは、プロセッサ１５０２によって実行され得る命令、及び／又はＧＰＧＰＵ１５２０によって実行され得る命令を含むことが可能である。コンパイルの間に、コンパイル１５１５は、コンパイルされたコード１５１４Ｂに存在するデータ並列性のレベルに関するヒント、及び／又はコンパイルされたコード１５１４Ｂに基づいてディスパッチされるスレッドに関連するデータ局所性に関するヒントを含む、メタデータを挿入するためのオペレーションを実行することができる。コンパイラ１５１５は、そのようなオペレーションを実行するために必要な情報を含むことができ、あるいは、そのオペレーションはランタイム・ライブラリ１５１６の支援とともに実行されることが可能である。ランタイム・ライブラリ１５１６はまた、ソース・コード１５１４Ａのコンパイルにおいてコンパイラ１５１５を支援することができ、また、ＧＰＧＰＵ１５２０上のコンパイルされた命令の実行を促進にするために、コンパイルされたコード１５１４Ｂとランタイムでリンクされる命令を含むことも可能である。
【０１２５】
［０１５７］
統一メモリ１５１０は、プロセッサ１５０２及びＧＰＧＰＵ１５２０によってアクセスされ得る統一されたアドレス空間を表す。統一メモリは、システム・メモリ１５１２に加えて、ＧＰＧＰＵメモリ１５１８を含むことができる。ＧＰＧＰＵメモリ１５１８は、ＧＰＧＰＵ１５２０のアドレス空間内のメモリであり、システム・メモリ１５１２の一部又は全部を含むことが可能である。一実施形態では、ＧＰＧＰＵメモリ１５１８は、ＧＰＧＰＵ１５２０によって排他的に使用するように専念される任意のメモリの少なくとも一部も含むことができる。一実施形態では、システム・メモリ１５１２に格納されたコンパイルされたコード１５１４Ｂは、ＧＰＧＰＵ１５２０によるアクセスのために、ＧＰＧＰＵメモリ１５１８にマッピングされることが可能である。
【０１２６】
［０１５８］
ＧＰＧＰＵ１５２０は、複数のエンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎを含み、これらは、本明細書に記載される種々の計算ユニット又は実行エレメントのうちの１つ以上を含むことが可能である。一実施形態では、ＧＰＧＰＵ１５２０は、行列演算のサブセット（例えば、ドット積など）を加速するように設計された１つ以上の特殊関数計算ユニットを含むことが可能な行列加速器１５２３を更に含む。ＧＰＧＰＵ１５２０はまた、限定されるものではないが、グローバル・レジスタ１５２５のセット、パワー・パフォーマンス・モジュール１５２６、及び共有キャッシュ１５２７を含むリソースのセットを含むことが可能であり、リソースのセットはエンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎによって共有されることが可能である。一実施形態では、グローバル・レジスタ１５２５は、直接的及び間接的にアクセス可能なレジスタを含む。パワー・パフォーマンス・モジュール１５２６は、エンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎ内の構成要素の電力消費を調整するために、エンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎに対する電力配分及びクロック周波数を調整するように構成されることが可能である。例えば、一実施形態では、エンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎ内の構成要素に分配される電力は、データ処理システム１５００の電力又はパフォーマンス・ターゲットに基づいて、動的に切り替えられることが可能である（例えば、ゲート制御される）。様々な実施形態では、共有キャッシュ１５２７は、命令キャッシュ及び／又は下位レベルのデータ・キャッシュを含むことが可能である。
【０１２７】
［０１５９］
一実施形態では、各エンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎは、複数のワークロード又は単一の分散されたワークロードを実行するために、独立して又は協調して動作することが可能な一組のグラフィックス処理エンジンを含む。各タイルは、異なる活動を行う様々なエンジンを含む。様々なエンジンは、コマンドのバッチを含むメモリ・バッファであるバッチ・バッファ内で提供されるコマンドを処理し、エンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎ内の実行ユニットを使用してこれらのコマンドを実行することができる。ホスト・プロセッサ上で実行するソフトウェアはグローバル・スケジューラ１５２２へ作業アイテムをサブミットすることが可能であり、グローバル・スケジューラは、種々の作業アイテムを１つ以上のエンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎに配布することが可能である。代替的に、ソフトウェアは、作業アイテムをタイルに直接的にサブミットし、タイル内のハードウェアのスケジューリングは、タイル内の適切なエンジンに対するワークロードの予定を立てることができる。
【０１２８】
［０００１］
図１６Ａ〜１６Ｃは、実施形態による、マルチ・タイル作業スケジューリングを実現するグラフィックス処理システム１６００を示す。図１６Ａは一実施形態によるグラフィックス処理システム１６００の概要を示す。図１６Ｂはシステム・グラフィックス・インターフェース１６０２の一例を示す。図１６Ｃはエンジン・ブロック・タイル１６０５の一例を示す。
【０１２９】
［０００２］
図１６Ａに示されるように、グラフィックス処理システム１６００は、ワークロード１６０４Ａ〜１６０４Ｄを１つ以上のエンジン・ブロック・タイル１６０５Ａ〜１６０５Ｄへ送ることができるアプリケーション及び／又はグラフィックス・ドライバ（ａｐｐ／ｄｒｉｖｅｒ１６０１）を含み、これは図１５のエンジン・ブロック・タイル１５２４Ａ〜１５２４Ｎと同様又はその変形であり得る。ワークロード１６０４Ａ〜１６０４Ｄは、同一のワークロード及び／又は別個のワークロードの一部であるとすることが可能である。ワークロード１６０４Ａ〜１６０４Ｄは、ワークロード間の関係（又はその欠如）に応じて、互いに協調して又は独立して実行されることが可能である。アプリケーション／ドライバ１６０１のアプリケーションは、グラフィックス処理システムにワークロードをサブミットすることができる、又はそのように構成される任意のアプリケーションであるとすることが可能である。ドライバは、アプリケーションが、関連するカーネル・モード・ドライバを介してワークロードをサブミットすることが可能なユーザ・モード・ドライバであるとすることが可能である。
【０１３０】
［０００３］
幾つかの実施形態及び／又は実装では、グローバル・スケジューラ（例えば、図１５のグローバル・スケジューラ１５２２）は、ワークロードをエンジン・ブロック・タイルにディスパッチする。他の実施形態では、ワークロードは、各自それぞれのエンジン・ブロック・タイル１６０５Ａに関連するシステム・グラフィックス・インターフェース１６０２Ａ−１６０２Ｄ内のドアベル１６０３Ａ−１６０３Ｄを介して、エンジン・ブロック・タイル１６０５Ａ−１６０５Ｄに直接的にサブミットされることが可能である。
【０１３１】
［０００４］
各エンジン・ブロック・タイル１６０５Ａ−１６０４Ｄに関連するシステム・グラフィックス・インターフェース１６０２Ａ−１６０２Ｄは、ホスト・システムと、エンジン・ブロック・タイルが内部に存在するグラフィックス・システムとの間のインターフェースを提供する。システム・グラフィックス・インターフェース１６０２Ａ〜１６０２Ｄは、グラフィックス処理システムをデバイスとしてホスト・システムに提示するグラフィックス・デバイス・ロジックを含み、且つＰＣＩｅバスを介してグラフィックス・デバイスとの通信を可能にするＰＣＩｅコンフィギュレーション空間データを含む。他の実施形態では、プロセッサ・インターフェース・バス（例えば、プロセッサ・リング又はメッシュ・バス、ＣｏｒｅＬｉｎｋ又はＡＭＢＡバス等）、又はＮＶＬｉｎｋ等の他のタイプのメッシュ又はファブリック・インターフェース等の、様々なタイプのホスト又はデバイス・インターフェース・バスに使用されることが可能である。一実施形態では、割り込み生成は、システムグラフィックス・インターフェース１６０２Ａ〜１６０２Ｄを介して処理される。割込み発生のために、システム・グラフィックス・インターフェース１６０２Ａ〜１６０２Ｄのうちの１つが、グラフィックス・システムのマスター・インターフェースとして機能することが可能である。一実施形態では、システム・グラフィックス・インターフェース１６０２Ａ〜１６０２Ｄは、グラフィックス処理システムのためにホスト・アドレス空間からローカル・アドレス空間への変換を行うことが可能である。
【０１３２】
［０００５］
一実施形態では、システム・グラフィックス・インターフェース１６０２Ａ〜１６０２Ｄの各々は、ドアベル１６０４Ａ〜１６０４Ｄを含み、これを通じて、ワークロード１６０４Ａ〜１６０４Ｄはサブミットされることが可能である。一実施形態では、各々のドアベル１６０４Ａ−１６０４Ｄは、２５６個のドアベルをサポートするドアベル・ブロックであるが、ドアベル・ブロックは、任意数のドアベルを含むことが可能である。ドアベルは、アプリケーションに割り当てられることが可能であり、アプリケーションのタイルに対する相性（ａｆｆｉｎｉｔｙ）はグラフィックス・ドライバで管理されることが可能である。アプリケーションは、１つ以上のドアベルに割り当てられることが可能であり、ドアベルの割り当ては、クロス・タイル割り当て（ｃｒｏｓｓ−ｔｉｌｅ  ａｓｓｉｇｎｍｅｎｔｓ）とすることが可能である。ワークロードをサブミットするために、アプリケーション又はドライバ・ソフトウェアは、アプリケーションがサブミットしている作業のタイプに基づいて、適切なドアベルを鳴らすこと（又は取り次ぐこと）が可能である。ソフトウェアがタイルに関連する扉のドアベルを鳴らすと、スケジューリングはタイル内でローカルに管理されることが可能である。例えば、タイルに関連付けられたシステム・グラフィックス・インターフェースは、タイル内のローカル・スケジューラを使用して、要求されたワークロードをローカル・エンジンにスケジュールすることが可能である。
【０１３３】
［０００６］
図１６Ｂは一実施形態によるシステム・グラフィックス・インターフェース１６０２を示す。システム・グラフィックス・インターフェース１６０２は、割り込みユニット６１２、デバイス・インターフェース１６１４、ドアベル１６０３、システム／デバイス・アドレス変換器１６１６、及びバッチ・バッファ・サブミッタ１６１８を含む。割り込みユニット１６１２は、遠隔又はマスター割り込みユニットとして構成されることが可能であり、割り込みユニット１６１２の割り込みレジスタ内に格納された値に従って生成されるメッセージ・シグナル割り込み（ａ  ｍｅｓｓａｇｅ  ｓｉｇｎａｌｅｄ  ｉｎｔｅｒｒｕｐｔ：ＭＳＩ）を送信することが可能である。デバイス・インターフェース１６１４はハードウェアを含み、全体として又は個々のタイルとしてのグラフィックス・システムが、（限定ではないが）ＰＣＩｅバス等のインターフェース・バスにおけるデバイスとして提供できるようにすることが可能である。ドアベル１６０３は、複数のドアベル・インターフェースのうちの１つであり、それを通じてワークロード１６０４はサブミットされることが可能であり、ここで、ワークロード１６０４は図１６Ａのワークロード１６０４Ａ〜１６０４Ｄの内のうちの何れかであり得る。ドアベル１６０３は、関連するエンジン・ブロック・タイルに、作業要求は処理可能であることを通知するために使用され得るドアベル構造又はレジスタであり得る。一実施形態では、作業要求は、バッチ化コマンドのバッファ（例えば、バッチ・バッファ）の形態で提供される。バッチ・バッファは、バッチ・バッファ・サブミッタ１６１８を介して処理されることが可能である。一実施形態では、バッチ・バッファ・サブミッタ１６１８は、システム・アドレスからエンジン・ブロック・タイルのデバイス・ローカル・アドレスへ変換するために、システム／デバイス・アドレス変換器１６１６を使用することができる。バッチ・バッファのコマンドは、関連するエンジン・ブロック・タイルへサブミットされることが可能である。
【０１３４】
［０００７］
図１６Ｃは、システム・グラフィックス・インターフェースを介してアプリケーション又はドライバからワークロードを受け取ることが可能なエンジン・ブロック・タイル１６０５を示す。エンジン・ブロック・タイル１６０５は、ホスト・システムから受け取ったコマンドを処理することが可能な複数のエンジンを含む。エンジンは、種々のオペレーションを実行することが可能であり、且つ実行ユニット６２９Ａ〜６２９Ｎのうちの１つ以上のブロックにより、それらのコマンドに潜む命令を実行することが可能である。エンジン・ブロック・タイル１６０５はまた、エンジン・ブロック・タイル１６０５のためのローカル・スケジューラであるスケジューラ６２１を含み、このスケジューラは、種々のタイルによる処理のためのコマンドをスケジュールし、及び／又は実行ユニット６２９Ａ−６２９Ｎ上で実行するための命令をスケジュールする。一実施形態では、エンジン・ブロック・タイルのエンジンは、レンダー・コマンド・ストリーマ（ＲＣＳ６２３）、ポジション・オンリー・コマンド・ストリーマ（ＰＯＣＳ６２４）、計算コマンド・ストリーマ（ＣＣＳ６２５）、コピー・エンジン６２２、及び１つ以上のメディア・エンジン・スライス６２６を含み、それらのスライスは、ビデオ・デコード・オペレーションを実行するための１つ以上のビデオ・コマンド・ストリーマ（ＶＣＳｎ６２７）と、ビデオ・エンコード・オペレーションを実行するためのビデオ・エンコード・コマンド・ストリーマ（ＶＥＣＳｎ６２８）とを含む。入力バッチ・バッファは、図示されたエンジンのうちの任意の１つ以上、及び図示されていない他のエンジンによって処理されるコマンドを含むことができる。
【０１３５】
［０００８］
本明細書に記載される実施形態は、アプリケーション又はグラフィックス・ドライバが、複数のタイルにまたがるワークロードを明示的にサブミットすることを可能にする。更に、タイル間の負荷バランスは、ワークロードがサブミットされた後に実行されることが可能である。一実施形態では、クロス・タイル・ワークロードを可能にするために、実施されるべき作業アイテムのスーパーセット（ｓｕｐｅｒｓｅｔ）を含む同じバッチ・バッファが、タイル・ワーク・グループ内に含まれるべき各タイルに提出される。所与のタイルが、サブミットされた全てのワークロードを実行するように意図されていない場合であっても、コマンドを実行することになる全てのタイルに全てのコマンドがサブミットされる。その代わりに、各タイルは、サブミットされたワークロードのサブセットを実行する。一実施形態では、所与のタイルは、タイルに関連するハードウェア・コンテキストに提供された識別子に基づいて、ワークロードの特定のサブセットを実行することができる。
【０１３６】
［０００９］
図１７は、本明細書に記載される実施形態による、タイル・ワーク配分及びスケジューリング・システム１７００を示す。タイル・ワーク配分及びスケジューリング・システム１７００は、複数のＧＰＵ１７３０Ａ−１７３０Ｄをわたってワークロードが分配されることを可能にし、ここで、複数のＧＰＵの各々は、図１６Ａにおけるようにエンジン・ブロック・タイル１６０５Ａ−１６０５Ｄのインスタンスであり得る。ＧＰＵ１７３０Ａ〜１７３０Ｄは、ＧＰＵ１７３０Ａ〜１７３０Ｄのそれぞれのシステム・グラフィックス・インターフェースの構成に基づいて、１つ以上のデバイスとして列挙され得る。
【０１３７】
［００１０］
ＧＰＵスパニング・ワークロードの実行を可能にするために、個々のハードウェア・コンテキスト１７２０Ａ〜１７２０Ｄが作成され、各自それぞれのＧＰＵ１７３０Ａ〜１７３０Ｄに関連付けられることが可能である。一実施形態では、ハードウェア・コンテキスト及びバッチ・バッファ１７０８は、ホスト・システムのプロセッサ上で実行するユーザ・モード・ドライバによって作成されることが可能である。このバッチ・バッファ１７０８は、コマンドが実行されるべき実行状態を定義するコマンドと、実行スレッドをディスパッチしてワークロードを実行することをＧＰＵに行わせるＧＰＧＰＵウォーカー・コマンドとを含む。各ハードウェア・コンテキスト１７２０Ａ〜１７２０Ｄは、ハードウェア・コンテキストのそれぞれのＧＰＵ１７３０Ａ〜１７３０Ｄのためのさらなる実行状態を定義する。一実施形態では、ハードウェア・コンテキスト内で定義される実行状態は、タイル・グループ・オフセット（ＴＧ＿ＯＦＦＳＥＴ）及びタイル・グループ・ステップ（ＴＧ＿ＳＴＥＰ）を各ＧＰＵに対して指定することができる。タイル・グループ・オフセットは、それぞれのＧＰＵによって実行されるコマンドに関する、バッチ・バッファ１７０８内の開始位置を指定する。タイル・グループ・ステップは、ワークロードのパーティション数を指定することができる。バッチ・バッファ開始コマンドは、それぞれのＧＰＵ１７３０Ａ〜１７３０Ｄに関連するコマンド・リング・バッファ１７１０Ａ〜１７１０Ｄに挿入される。ＧＰＵ１７３０Ａ〜１７３０Ｄは、ＧＰＵに関連するコマンドを実行し、これらのコマンドの完了時に待機状態１７０２Ａ〜１７０２Ｄに入る。一実施形態では、待機状態１７０２Ａ〜１７０２Ｄは、ＧＰＵに対するコマンドの最後に挿入される、明示的なセマフォ待機又は別の同期／待機コマンドに基づいて入力される。他の実施形態では、自動同期システムが、ＧＰＵ１７２０Ａ〜１７２０Ｄを同期させるために使用される。
【０１３８】
［００１１］
図１８は、実施形態によるマルチ・タイル・グラフィックス処理システムにおける負荷バランス処理を可能にするシステム１８００を示す。同じバッチ・バッファ１８１０は、一組の物理的なエンジン・ブロック・タイル１８２２Ａ〜１８２２Ｃ内の複数の仮想エンジンに提供されるコマンド１８１２Ａ〜１８１２Ｃを含むことができる。エンジン・ブロック・タイル１８２２Ａ〜１８２２Ｃ内の物理エンジンは仮想化されることが可能であり、その結果、コマンドは、何れかの物理的タイル内に物理的に存在し得る仮想エンジンを参照する。一実施形態では、アプリケーション／ドライバ１６０１は、Ｎ個のローカル・レンダー・コンテキスト・アドレス（ＬＲＣＡｓ）を生成することによって、仮想エンジンのＮ個のセットの間でワークロードを分割することが可能である。各ＬＲＣＡ１８０２Ａ−１８０２Ｃは、ＬＲＣＡが関連付けられているワークロード・パーティションを識別するワークロード・パーティション識別子（ＷＰＡＲＩＤ１８０１）を含む。各ＬＲＣＡは、ワークロードの並列実行を可能にするために、物理的なエンジン・ブロック・タイル１８２２Ａ〜１８２２Ｃ内の異なるエンジンにサブミットされることが可能である。ワークロードの実行中、エンジンは、ＬＲＣＡで提供されるＷＰＡＲＩＤを使用して、実行されるワークロードの部分を識別する。
【０１３９】
［００１２］
例えば、物理タイル１８２２Ａに関連付けられるＬＲＣＡ１８０２Ａは、ＸというＷＰＡＲＩＤを割り当てられることが可能である。ＬＲＣＡ１８０２Ａは、物理タイル０（物理エンジン・タイル１８２２Ａ）に関連付けられることが可能な、仮想エンジンＸによって実行されるべきコマンドを含むバッチ・バッファ１８１０の一部を参照することが可能である。次いで、物理タイル０は、ワークロード１８１４Ａとして、仮想エンジンＸコマンド１８１２Ａを実行することができる。ＬＲＣＡ１８０２Ｂは、物理的タイル１（物理的エンジン・タイル１８２２Ｂ）に関連付けられることが可能な、仮想エンジンＹによって実行されるコマンドを含むバッチ・バッファ１８１０の一部を参照することが可能である。次いで、物理タイル１は、ワークロード１８１４Ｂとして、仮想エンジンＹコマンド１８１２Ｂを実行することができる。ＬＲＣＡ１８０２Ｃは、物理的タイル２（物理的エンジン・タイル１８２２Ｃ）に関連付けられることが可能な、仮想エンジンＺによって実行されるコマンドを含むバッチ・バッファ１８１０の一部を参照することが可能である。次いで、物理タイル２は、ワークロード１８１４Ｃとして、仮想エンジンＺコマンド１８１２Ｃを実行することができる。
【０１４０】
［００１３］
一実施形態では、ＷＰＡＲＩＤ１８０１はホワイトリスト・パラメータであり、ユーザ・モード・ドライバは、ダイナミック負荷バランシングを可能にするように修正することができる。ＷＰＡＲＩＤに対する変更は、ワークロードの実行中に実行されることが可能である。変更は、異なる同時実行エンジンが、同じＷＰＡＲＩＤのオーナーシップを主張することを防止するために、アトミックに実行される。一実施形態では、ＷＰＡＲＩＤは、ハードウェア・コンテキストの保存及び復元の一部として保存及び復元される。
【０１４１】
［００１４］
ＬＲＣＡでＷＰＡＲＩＤ  ＩＤを動的に取得することは、コンテキストが透過的に任意の物理タイルに移行されることを許容する。実行中、ワークロードが実行される物理タイルに関係なく、所与のＷＰＡＲＩＤに意図された同じコマンドのサブセットが実行されるであろう。一実施形態では、複数のＬＲＣＡが同一エンジンにサブミットされ、コマンドの実行をシリアル化することができる。例えば、仮想エンジンＸコマンド１８１２Ａ及び仮想エンジンＹコマンド１８１２Ｂが両方とも物理的エンジン・タイル１８２２Ｂにサブミットされる場合、両方のコマンド・セットは、直列化された方法で実行される。
【０１４２】
［００１５］
一実施形態では、仮想エンジン・コマンドの実行は、物理エンジン・タイル１８２２Ａ〜１８２２Ｃ内で、予測実行ロジックを使用して処理される。ハードウェアに提供されるバッチ・バッファの一部が、物理タイル及び／又は仮想エンジンのセットに関連するＬＲＣＡによって提供されるＷＰＡＲＩＤに一致する場合、エンジンに対する命令及び／又はコマンドは条件付きで実行されることが可能である。一実施形態では、条件付き実行が可能である場合、タイルは、ＬＲＣＡによって提供されるＷＰＡＲＩＤと一致しないコマンドの実行を自動的にバイパスするので、個々のバッチ・バッファ開始位置は必要とされないかもしれない。一実施形態では、タイル間のＷＰＡＲＩＤを移行することによって動的負荷分散が実行される場合、タイルは、新しいＷＰＡＲＩＤのためのコマンドを実行するために、タイル内の条件付き実行ユニットを実行及びリセットするコマンドについて、バッチ・バッファを再スキャンすることができる。ＷＰＡＲＩＤが削除された場合、タイルは、削除されたＷＰＡＲＩＤに関連するコマンドの実行を停止してよい。
【０１４３】
［００１６］
図１９は一実施形態によるマルチ・タイル・ワークロード・スケジューリングの方法１９００のフロー図を示す。方法１９００は、本明細書に記載のマルチ・タイル、マルチ・コア、又はマルチＧＰＵグラフィックス処理システムを含むホスト処理システムのアプリケーション又はドライバによって実行されることが可能である。グラフィックス処理エンジンのタイルが参照される場合、同様の技術が、マルチＧＰＵ又はマルチ・コアＧＰＵに適用されることが可能であり、ここで、複数のＧＰＵ又は複数のＧＰＵコアは、本明細書に記載されるようなマルチ・タイル・グラフィックス・プロセッサ・アーキテクチャであるか、又はそれを含む。例えば、マルチ・タイルＧＰＵは、システム・グラフィックス・インターフェースの構成に応じて、単一のグラフィックス・プロセッサ又は１つ以上のグラフィックス・プロセッサ・デバイスとしてホスト処理システムに提示されるように構成されることが可能である。
【０１４４】
［００１７］
ブロック１９０２に示すように、一実施形態では、方法１９００は、グラフィックス処理エンジンの複数のタイルを有するグラフィックス・プロセッサによって実行されるべきワークロードのコマンドのセットを生成するためのオペレーションを実行することを含む。ブロック１９０４において、オペレーションは、コマンドのセットを第１パーティションと第２パーティションとに分配する。ブロック１９０６において、オペレーションは、第１パーティションに第１パーティション識別子を割り当て、第２パーティションに第２パーティション識別子を割り当てることが可能である。ブロック１９０８において、オペレーションは追加的に、グラフィックス処理エンジンの複数タイルのうちの第１グラフィックス処理エンジン・タイルに関連する第１ハードウェア・コンテキストに、第１のパーティション識別子を関連付け、及び、グラフィックス処理エンジンの複数タイルの第２グラフィックス処理エンジン・タイルに関連する第２ハードウェア・コンテキストに、第２パーティション識別子を関連付ける。ブロック１９１０において、オペレーションは、第１パーティション及び第２パーティションを、第１グラフィックス処理エンジン・タイル及び第２グラフィックス処理エンジン・タイルの各々にサブミットする。ブロック１９１２において、オペレーションは追加的に、第１グラフィックス処理エンジン・タイルを介して第１パーティションを実行し、第２グラフィックス処理エンジン・タイルを介して第２パーティションを実行する。
【０１４５】
［００１８］
一群のコマンドの区分けは、図１７及び図１８に示されるように実行されることが可能である。各パーティションのコマンドはバッチ・バッファにロードされることが可能であり、同じバッチ・バッファがグラフィックス処理エンジンの各タイルにサブミットされることが可能である。各自のタイルのハードウェア・コンテキストは、タイルによって処理されるコマンドの開始に対応するバッチ・バッファ開始位置を設定することが可能である。一実施形態では、パーティション識別子はまた、コマンドのパーティションに関連付けられることも可能である。タイルは、他のパーティションのコマンドをバイパスしながら、関連するパーティションのバッチ・バッファ内のコマンドを条件付きで実行するように設定されることが可能である。
【０１４６】
［００１９］
図２０は一実施形態によるマルチ・タイル・ワークロードを実行する方法２０００のフロー図を示す。方法２０００は、本明細書に記載されるように、マルチ・タイル、マルチ・コア、又はマルチＧＰＵグラフィックス処理システムによって実行されることが可能である。グラフィックス処理エンジンのタイルが参照される場合、同様の技術がマルチＧＰＵ又はマルチ・コアＧＰＵに適用されることが可能であり、ここで、複数のＧＰＵ又は複数のＧＰＵコアは、上述のようにマルチ・タイル・グラフィックス・プロセッサ・アーキテクチャを含む。
【０１４７】
［００２０］
ブロック２００２に示されるように、方法２０００は、一連のコマンドを受信するグラフィックス・プロセッサを含む。コマンドのセットは、第１パーティションと第２パーティションとを有するワークロードを表し、グラフィックス・プロセッサは、グラフィックス処理エンジンの複数のタイルを含む。ブロック２００４では、グラフィックス・プロセッサは、グラフィックス処理エンジンの第１タイルを第１ハードウェア・コンテキストに関連付け、且つグラフィックス処理エンジンの第２タイルを第２ハードウェア・コンテキストに関連付けることが可能である。ブロック２００６において、グラフィックス・プロセッサは、次いで、グラフィックス処理エンジンの第１タイルによって、第１ハードウェア・コンテキストから第１パーティション識別子を読み込み、グラフィックス処理エンジンの第２タイルによって、第２ハードウェア・コンテキストから第２パーティション識別子を読み込むことができる。第１パーティション識別子は第１パーティションに関連付けられ、第２パーティション識別子は第２パーティションに関連付けられる。ブロック２００８において、グラフィックス・プロセッサは、グラフィックス処理エンジンの第１タイルとグラフィックス処理エンジンの第２タイルとを、それぞれのタイルに関連するパーティション識別子を有するコマンドを条件通りに実行するように構成することが可能である。ブロック２０１０において、グラフィックス・プロセッサは、次に、第２パーティションのコマンドをバイパスしながらグラフィックス処理エンジンの第１タイルで第１パーティションのコマンドを実行し、第１パーティションのコマンドをバイパスしながらグラフィックス処理エンジンの第２タイルで第２パーティションのコマンドを実行することができる。
【０１４８】
［００２１］
図２１は一実施形態によるタイル間でワークロードを移行する方法２１００のフロー図を示す。方法２１００は、本明細書に記載されるように、マルチ・タイル、マルチ・コア、又はマルチＧＰＵグラフィックス処理システムによって実行されることが可能である。グラフィックス処理エンジンのタイルが参照される場合、同様の技術がマルチＧＰＵ又はマルチ・コアＧＰＵに適用されることが可能であり、ここで、複数のＧＰＵ又は複数のＧＰＵコアは、上述のようにマルチ・タイルのグラフィックス・プロセッサ・アーキテクチャを含む。
【０１４９】
［００２２］
ブロック２１０２に示されるように、方法２１００は、一組のコマンドを受信するグラフィックス・プロセッサを含む。コマンドのセットは、第１パーティションと第２パーティションとを有するワークロードを表す。ブロック２１０４において、グラフィックス・プロセッサは、第１パーティションを実行するために、グラフィックス処理エンジンの第１タイルを構成することができる。ブロック２１０６において、グラフィックス・プロセッサは、第２パーティションを実行するために、グラフィックス処理エンジンの第２タイルを構成することができる。ブロック２１０８において、第１パーティションの実行が完了する前に、グラフィックス・プロセッサは、グラフィックス処理エンジンの第１タイルからグラフィックス処理エンジンの第３タイルへ、第１パーティションの実行を移すトリガを受け取ることができる。次いで、グラフィックス・プロセッサは、第１パーティションを第３タイルに移行し、ブロック２１１０に示すように、グラフィックス処理エンジンの第３タイルにより第１パーティションの少なくとも一部を実行することができる。第１パーティションの実行を第３タイルに移行させるトリガは、一実施形態では、第１パーティションの識別子を第１タイルから第３タイルへ移動させるために、第１及び第３パーティション上のワークロード・パーティション識別子（ＷＰＡＲＩＤ）のアトミック更新（ａｎ  ａｔｏｍｉｃ  ｕｐｄａｔｅ）を含む。第３タイルは、第１パーティションのＷＰＡＲＩＤに関連付けられるバッチ・バッファ・コマンドを条件付に応じて実行する一方、第１タイルは、第１パーティションのＷＰＡＲＩＤに関連付けられるバッチ・バッファ・コマンドをもはや実行しないであろう。
【０１５０】
［００３３］
図２２は一実施形態によるグラフィックス・プロセッサ２２０４を含むコンピューティング・デバイス２２００のブロック図である。コンピューティング・デバイス２２００は、図１におけるもののようなデータ処理システム１００等の本明細書に記載されるコンピューティング・デバイスであるとすることが可能である。また、コンピューティング・デバイス２２００はまた、セット・トップ・ボックス（例えば、インターネットに基づくケーブル・テレビのセット・トップ・ボックス等）、グローバル・ポジショニング・システム（ＧＰＳ）に基づくデバイス等の通信デバイスであってもよいし、又はそれに含まれていてもよい。コンピューティング・デバイス２２００はまた、セルラー電話、スマートフォン、パーソナル・ディジタル・アシスタント（ＰＤＡ）、タブレット・コンピュータ、ラップトップ・コンピュータ、ｅリーダー、スマート・テレビ、テレビジョン・プラットフォーム、ウェアラブル・デバイス（例えば、眼鏡、時計、ブレスレット、スマートカード、宝飾品、衣類など）、メディア・プレーヤー等のモバイル・コンピューティング・デバイスであってもよいし、又はそれに含まれていてもよい。例えば、一実施形態では、コンピューティング・デバイス２２００は、集積回路（「ＩＣ」）、例えばシステム・オン・チップ（「ＳｏＣ」又は「ＳＯＣ」）を使用し、コンピューティング・デバイス２２００の種々のハードウェア及び／又はソフトウェア構成要素を単一のチップ上に統合する、モバイル・コンピューティング・デバイスを含む。
【０１５１】
［０１３５］
コンピューティング・デバイス２２００は、グラフィックス・プロセッサ２２０４を含む。グラフィックス・プロセッサ２２０４は、本明細書に記載される任意のグラフィックス・プロセッサを表す。グラフィックス・プロセッサは、１つ以上のグラフィックス・エンジン、グラフィックス・プロセッサ・コア、及び本明細書に記載される他のグラフィックス実行リソースを含む。このようなグラフィックス実行リソースは、実行ユニット、シェーダ・エンジン、フラグメント・プロセッサ、頂点プロセッサ、ストリーミング・マルチプロセッサ、グラフィックス・プロセッサ・クラスタ、又はグラフィックス及び画像リソースの処理に適した任意のコンピューティング・リソースのコレクションを含む形態で提供されることが可能であるが、これらに限定されない。
【０１５２】
［０１３６］
一実施形態では、グラフィックス・プロセッサ２２０４は、キャッシュ２２１４を含み、キャッシュ２２１４は、単一のキャッシュであるとすることが可能であり、又は複数のセグメントに分割されることが可能であり、任意の数のＬ１、Ｌ２、Ｌ３、又はＬ４キャッシュ、レンダリング・キャッシュ、深さキャッシュ、サンプラ・キャッシュ、及び／又はシェーダ・ユニット・キャッシュを含むが、これらに限定されない。グラフィックス・プロセッサ２２０４はまた、複数のＧＰＧＰＵタイル２２０４を含み、各タイルは、例えば図１６Ｃに示すように複数のグラフィックス・プロセッサ・エンジン及び実行ユニットを含む。ＧＰＧＰＵタイル２２０４は、アーキテクチャに関して類似していても同一であってもよい。各ＧＰＧＰＵタイルは、仮想化された一組のグラフィックス・プロセッサ・エンジンを含むことが可能である。仮想化エンジンは、コマンドを実行する物理的なＧＰＧＰＵタイルにとって不可知のコマンド・ストリームが構築されることを可能にする。更に、コマンドは、物理タイル内又は物理タイルにわたって仮想エンジン間で動的に移行させられることが可能である。様々な実施形態では、ＧＰＧＰＵエンジン・タイル２２４０は、バリア／同期ユニット２２４２及び条件付き実行ユニット２２４４を含むことができる。バリア／同期ユニット２２４２は、ワークロード・パーティションの完了時にＧＰＧＰＵエンジン・タイル２２４０を同期させるために使用されることが可能である。条件付き実行ユニット２２４４は、コマンドに関連付けられたワークロード・パーティション識別子とＧＰＧＰＵエンジン・タイルに関連付けられたワークロード・パーティション識別子との間の一致性に基づいて、バッチ・バッファ・コマンドの条件付き実行及び／又は予測される実行を可能にするために使用されることが可能である。
【０１５３】
［０１３７］
図示されているように、一実施形態では、グラフィックス・プロセッサ２２０４に加えて、コンピューティング・デバイス２２００は任意の数及びタイプのハードウェア構成要素及び／又はソフトウェア構成要素を更に含んでもよく、アプリケーション・プロセッサ２２０６、メモリ２２０８、及び入力／出力（Ｉ／Ｏ）ソース２２１０を含んでよいが、これらに限定されない。アプリケーション・プロセッサ２２０６は、図３を参照して示されるように、ハードウェア・グラフィックス・パイプラインと相互作用し、グラフィックス・パイプライン機能を共有することができる。処理されたデータは、ハードウェア・グラフィックス・パイプライン内のバッファに格納され、状態情報はメモリ２２０８に格納される。結果のデータは、図３の表示装置３２３のような表示装置を介して出力するために、表示コントローラに転送されることが可能である。表示装置は、陰極線管（ＣＲＴ）、薄膜トランジスタ（ＴＦＴ）、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）アレイ等の種々のタイプのものであってもよく、グラフィカル・ユーザ・インターフェースによりユーザに情報を表示するように構成され得る。
【０１５４】
［０１３８］
アプリケーション・プロセッサ２２０６は、図１のプロセッサ１０２のような１つ又は複数のプロセッサを含むことができ、コンピューティング・デバイス２２００のオペレーティング・システム（ＯＳ）２２０２を実行するために少なくとも部分的に使用される中央処理ユニット（ＣＰＵ）であってもよい。ＯＳ２２０２は、コンピュータ・デバイス２２００のハードウェア及び／又は物理リソースと、１つ以上のユーザとの間のインターフェースとして機能することができる。ＯＳ２２０２は、ユーザ・モード・ドライバ（ＵＭＤ２２２３）及びカーネル・モード・ドライバ（ＫＭＤ２２２４）等のグラフィックス・ドライバ論理２２２２を含むことが可能であり、これらは、図１０のユーザ・モード・グラフィックス・ドライバ１０２６及び／又はカーネル・モード・グラフィックス・ドライバ１０２９の変形であるとすることも可能である。ＵＭＤ２２２３は、コンピューティング・デバイス上で実行されるアプリケーションとインターフェースを為し、これらのアプリケーションがグラフィックス・プロセッサ２２０４の複数のＧＰＧＰＵエンジン・タイル２２２４にまたがるワークロードをサブミットすることを可能にすることができる。
【０１５５】
［０１３９］
幾つかの実施形態では、グラフィックス・プロセッサ２２０４は、アプリケーション・プロセッサ２２０６の一部（物理的ＣＰＵパッケージの一部など）として存在してもよく、その場合、メモリ２２０８の少なくとも一部は、アプリケーション・プロセッサ２２０６及びグラフィックス・プロセッサ２２０４によって共有されてもよいが、メモリ２２０８の少なくとも一部は、グラフィックス・プロセッサ２２０４に排他的であってもよく、又はグラフィックス・プロセッサ２２０４はメモリの別個の記憶部を有してもよいこと等が想定されている。メモリ２２０８は、バッファ（例えば、フレームバッファ）の予め割り当てられた領域を含んでもよいが；実施形態はそのように限定されず、下位のグラフィックス・パイプラインにアクセス可能な任意のメモリが使用されてもよいことが当業者に理解されるべきである。メモリ２２０８は、デスクトップ又は３Ｄグラフィックス・シーンをレンダリングするためにグラフィックス・プロセッサ２２０４を使用するアプリケーションを含む種々の形態のランダム・アクセス・メモリ（ＲＡＭ）（例えば、ＳＤＲＡＭ、ＳＲＡＭなど）を含んでもよい。メモリ・コントローラを使用して、メモリ２２０８内のデータにアクセスし、グラフィックス・パイプライン処理のためにグラフィックス・プロセッサ２２０４へデータを転送することができる。メモリ２２０８は、コンピューティング・デバイス２２００内の他の構成要素に利用可能にされてもよい。例えば、コンピューティング・デバイス２２００の種々のＩ／Ｏソース２２１０から受信される任意のデータ（例えば、入力グラフィックス・データ）は、ソフトウェア・プログラム又はアプリケーションの実装において１つ以上のプロセッサ（例えば、アプリケーション・プロセッサ２２０６）によるそれらの使用の前に、メモリ２２０８に一時的にキューイングされ得る。同様に、ソフトウェア・プログラムがコンピューティング・デバイス２２００から外部エンティティへ、計算システム・インターフェースのうちの１つを介して送信されるべきであると判断したデータ、又は内部記憶素子に記憶されるべきであると判断したデータは、しばしば、その送信又は記憶される前に、メモリ２２０８に一時的にキューイングされる。
【０１５６】
［０１４０］
Ｉ／Ｏソースは、タッチスクリーン、タッチ・パネル、タッチ・パッド、仮想の又は正規のキーボード、仮想又は正規のマウス、ポート、コネクタ、ネットワーク・デバイスなどのデバイスを含むことができる。更に、Ｉ／Ｏソース２２１０は、コンピューティング・デバイス２２００（例えば、ネットワーキング・アダプタ）に対して及び／又はそこから；又は、コンピューティング・デバイス２２００（例えば、ハード・ディスク・ドライブ）内の大規模な不揮発性記憶装置に関して、データを転送するために実装される１つ以上のＩ／Ｏデバイスを含んでもよい。英数字及び他のキーを含むユーザ入力デバイスは、情報及びコマンド選択をグラフィックス・プロセッサ２２０４へ連絡するために使用されてもよい。別のタイプのユーザ入力デバイスは、マウス、トラックボール、タッチスクリーン、タッチパッド、又はカーソル方向キーのようなカーソル制御装置であり、方向情報及びコマンド選択をＧＰＵに伝達し、表示装置上のカーソルの動きを制御する。コンピュータ・デバイス２２００のカメラ及びマイクロフォン・アレイは、ジェスチャを観察し、オーディオ及びビデオを記録し、ビジュアル及びオーディオ・コマンドを受信及び送信するために使用され得る。
【０１５７】
［０１４１］
ネットワーク・インターフェースとして構成されるＩ／Ｏソース２２１０は、ＬＡＮ、ワイド・エリア・ネットワーク（ＷＡＮ）、大都市エリア・ネットワーク（ＭＡＮ）、パーソナル・エリア・ネットワーク（ＰＡＮ）、ブルートゥース（登録商標）、クラウド・ネットワーク、セルラー又はモバイル・ネットワーク（例えば、第３世代（３Ｇ）、第４世代（４Ｇ）等）、イントラネット、インターネット等のネットワークへのアクセスを提供することができる。ネットワーク・インターフェースは、例えば、１つ以上のアンテナを有する無線ネットワーク・インターフェースを含んでもよい。ネットワーク・インターフェースはまた、例えば、イーサネット（登録商標）・ケーブル、同軸ケーブル、光ファイバ・ケーブル、シリアル・ケーブル、又はパラレル・ケーブルであってもよいネットワーク・ケーブルを介して遠隔装置と通信するための有線ネットワーク・インターフェースを含んでもよい。
【０１５８】
［０１４２］
ネットワーク・インターフェースは、例えばＩＥＥＥ８０２．１１規格に準拠することによってＬＡＮへのアクセスを提供することができ、及び／又は無線ネットワーク・インターフェースは、例えばＢｌｕｅｔｏｏｔｈ規格に準拠することによってパーソナル・エリア・ネットワークへのアクセスを提供することができる。標準規格の前のバージョン及び後のバージョンを含む他の無線ネットワーク・インターフェース及び／又はプロトコルもまたサポートされていてよい。無線ＬＡＮ規格による通信に加えて、又はその代わりに、ネットワーク・インターフェースは、例えば、時分割多元接続（ＴＤＭＡ）プロトコル、移動通信用グローバル・システム（ＧＳＭ（登録商標））プロトコル、符号分割多元接続（ＣＤＭＡ）プロトコル、及び／又は任意の他のタイプの無線通信プロトコルを使用して無線通信を提供することができる。
【０１５９】
［０１４３］
上述した例よりも小さく、又はより多く装備されたシステムが、特定の実装のために好ましいかもしれないことが理解されるべきである。したがって、コンピューティング・デバイス２２００の構成は、価格制約、性能条件、技術的改良、又は他の状況などの多くの要因に依存して、実装ごとに相違し得る。具体例は、移動装置、パーソナル・デジタル・アシスタント、モバイル・コンピューティング・デバイス、スマートフォン、セルラー電話、ハンドセット、ワンウェイ・ページャ、双方向ページャ、メッセージング・デバイス、コンピュータ、パーソナル・コンピュータ（ＰＣ）、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、ハンドヘルド・コンピュータ、タブレット・コンピュータ、サーバ、サーバ・アレイ又はサーバ・ファーム、ウェブ・サーバ、ネットワーク・サーバ、インターネット・サーバ、ワーク・ステーション、ミニ・コンピュータ、メイン・フレーム・コンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティング・システム、マルチプロセッサ・システム、プロセッサ・ベース・システム、電化製品、プログラマブル電化製品、テレビジョン、デジタル・テレビジョン、セット・ボックス、ワイヤレス・アクセス・ポイント、基地局、加入者局、モバイル・サブスクライバ・センター、無線ネットワーク・コントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、又はそれらの組み合わせを含む（但し、限定ではない）。
【０１６０】
［０１４４］
実施形態は、親基板を使用して相互接続された１つ以上のマイクロチップ又は集積回路、ハードワイヤード論理回路、メモリ・デバイスによって記憶され且つマイクロプロセッサ、ファームウェア、特定用途向け集積回路（ＡＳＩＣ）、及び／又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）によって実行されるソフトウェア、の任意の組み合わせとして実装されることが可能である。用語「ロジック」又は「論理」は、例えば、ソフトウェア又はハードウェア、及び／又はソフトウェアとハードウェアの組み合わせを含むことができる。
【０１６１】
［０１４５］
実施形態は例えばコンピュータ・プログラム製品として提供されてもよく、コンピュータ・プログラム製品は、コンピュータ、コンピュータのネットワーク、又は他の電子デバイスのような１つ又は複数のマシンによって実行されると、本明細書に記載される実施形態に従って動作を実行する１つ又は複数のマシンをもたらすことができる、マシン実行可能命令を記憶した１つ又は複数のマシン可読媒体を含むことができる。マシン可読媒体は、フロッピー・ディスケット、光ディスク、ＣＤ−ＲＯＭ（コンパクト・ディスク・リード・オンリー・メモリ）、及び光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ（消去可能プログラマブル・リード・オンリー・メモリ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブル・リード・オンリー・メモリ）、磁気カード又は光カード、フラッシュ・メモリ、又は機械実行可能命令を記憶するのに適した他のタイプの媒体／機械可読媒体を含み得るが、これらに限定されない。
【０１６２】
［０１４６］
更に、実施形態は、コンピュータ・プログラム製品としてダウンロードされてもよく、ここで、プログラムは、通信リンク（例えば、モデム及び／又はネットワーク接続）を介して搬送波又は他の伝搬媒体で具現化され及び／又は変調された１つ以上のデータ信号によって、リモート・コンピュータ（例えば、クライアント）から要求しているコンピュータ（例えば、クライアント）へ転送され得る。
【０１６３】
［０１４７］
以下の節及び／又は実施例は、特定の実施形態又はその具体例に関する。実施例における特定事項は、１つ又は複数の実施形態のどこででも使用され得る。様々な実施形態又は実施例の様々な特徴は、様々な異なる用途に合わせて含まれる幾つかの特徴及び除外されるその他の特徴ともに様々に組み合わせられてよい。具体例は、方法のような対象事項、方法の動作を実行する手段、マシンによって実行されたときにマシンに方法の動作を実行させる命令を含む少なくとも１つの機械可読媒体、又は本明細書に記載される実施形態及び実施例に従う装置又はシステムを含み得る。種々の構成要素は、記載されるオペレーション又は機能を実行するための手段であり得る。
【０１６４】
［０１４８］
一実施形態は、グラフィックス処理エンジンの第１タイル、グラフィックス処理エンジンの第２タイル、及びホスト・システムとグラフィックス・プロセッサとの間のインターフェースを含むグラフィックス・プロセッサを提供する。インターフェースは、第１パーティションと第２パーティションとを有するワークロードに関するコマンドのセットを受信し、コマンドのセットをグラフィックス処理エンジンの第１タイルに送信し、グラフィックス処理エンジンの第２タイルにコマンドのセットを送信するように構成されることが可能である。グラフィックス処理エンジンの第１タイルは、第１ハードウェア・コンテキストから第１パーティション識別子を読み込むことが可能であり、第１パーティション識別子は第１パーティションに関連付けられている。次いで、第１タイルは、第２パーティションのコマンドをバイパスしながら、第１パーティションのコマンドを条件に応じて実行することができる。グラフィックス処理エンジンの第２タイルは、第２ハードウェア・コンテキストから第２パーティション識別子を読み込むことが可能であり、第２パーティション識別子は第２パーティションに関連付けられている。次いで、第２タイルは、第１パーティションのコマンドをバイパスしながら、第２パーティションのコマンドを条件に応じて実行することができる。
【０１６５】
［０１４９］
一実施形態は、１つ以上のプロセッサにより実行される場合に、１つ以上のプロセッサにオペレーションを実行させる命令を格納する非一時的なマシン読み込み可能な媒体を提供し、オペレーションは、グラフィックス処理エンジンの複数のタイルを有するグラフィックス・プロセッサによって実行されるワークロードのコマンドのセットを生成するステップと、コマンドのセットを第１パーティションと第２パーティションに分けるステップと、第１パーティションを識別する第１パーティション識別子を第１レンダリング・コンテキストに関連付けるステップと、第２パーティションを識別する第２パーティション識別子を第２レンダリング・コンテキストに関連付けるステップと、グラフィックス処理エンジンの複数のタイルのうちの第１グラフィックス処理エンジン・タイルと第２グラフィックス処理エンジン・タイルの各々に、第１パーティションと第２パーティションとをサブミットするステップと、第１グラフィックス処理エンジン・タイルにより第１パーティションを実行し、第２グラフィックス処理エンジン・タイルにより第２パーティションを実行するステップとを含む。
【０１６６】
［０１５０］
一実施形態は、グラフィックス処理エンジンの第１タイルと、グラフィックス処理エンジンの第２タイルとを含むグラフィックス・プロセッサを含むデータ処理システムを提供する。グラフィックス・プロセッサは、第１パーティションと第２パーティションを有するワークロードのための一連のコマンドを受信し、第１パーティションを実行するようにグラフィックス処理エンジンの第１タイルを構成し、第１パーティションの実行と同時に第２パーティションを実行するようにグラフィックス処理エンジンの第２タイルを構成することができる。一実施形態では、第１パーティションの実行完了前に、グラフィックス・プロセッサは、グラフィックス処理エンジンの第１タイルからグラフィックス処理エンジンの第３タイルへ第１パーティションの実行を移し、グラフィックス処理エンジンの第３タイルにより第１パーティションの少なくとも一部を実行するトリガを受信することができる。第１パーティションの実行を移すことは、グラフィックス処理エンジンの第１タイルからグラフィックス処理エンジンの第３タイルへ、第１パーティションのパーティション識別子をアトミックにアサインし直すことを含む。一実施形態では、第１パーティションは、第１パーティションの実行を開始する前に移行される。
【０１６７】
［０１５１］
一実施形態は方法を提供し、方法は、グラフィックス・プロセッサにおいてコマンドのセットを受信するステップであって、コマンドのセットは、第１パーティションと第２パーティションとを有するワークロードを表し、グラフィックス・プロセッサはグラフィックス処理エンジンの複数のタイルを含む、ステップと、グラフィックス処理エンジンの第１タイルによって、第１パーティションに関連付けられる第１パーティション識別子を第１ハードウェア・コンテキストから読み込むステップと、グラフィックス処理エンジンの第２タイルによって、第２パーティションに関連付けられる第２パーティション識別子を第２ハードウェア・コンテキストから読み込むステップと、それぞれのタイルに関連するパーティション識別子を有するコマンドを条件に応じて実行するように、グラフィックス処理エンジンの第１タイルとグラフィックス処理エンジンの第２タイルとを設定するステップと、第２パーティションのコマンドをバイパスしながらグラフィックス処理エンジンの第１タイルで第１パーティションのコマンドを実行し、第１パーティションのコマンドをバイパスしながらグラフィックス処理エンジンの第２タイルで第２パーティションのコマンドを実行するステップとを含む。一実施態様において、本方法は、更に、グラフィックス処理エンジンの第１タイルを第１ハードウェア・コンテキストに関連付け、グラフィックス処理エンジンの第２タイルを第２ハードウェア・コンテキストに関連付けるステップを含む。
【０１６８】
［０１５２］
当業者は、前述の説明から、実施形態の広範な技術が種々の形態で実装され得ることを理解するであろう。従って、実施形態がその特定の実施例に関連して説明されてきたが、図面、明細書、及び以下の請求の範囲の検討により、他の修正が当業者に明らかになるので、実施形態の真の範囲はそのように限定されるべきではない。
【図１】
2020113252.tif 000003
【図２】
2020113252.tif 000004
【図３】
2020113252.tif 000005
【図４】
2020113252.tif 000006
【図５】
2020113252.tif 000007
【図６Ａ】
2020113252.tif 000008
【図６Ｂ】
2020113252.tif 000009
【図７】
2020113252.tif 000010
【図８】
2020113252.tif 000011
【図９Ａ】
2020113252.tif 000012
【図９Ｂ】
2020113252.tif 000013
【図１０】
2020113252.tif 000014
【図１１Ａ】
2020113252.tif 000015
【図１１Ｂ】
2020113252.tif 000016
【図１２】
2020113252.tif 000017
【図１３Ａ】
2020113252.tif 000018
【図１３Ｂ】
2020113252.tif 000019
【図１４Ａ】
2020113252.tif 000020
【図１４Ｂ】
2020113252.tif 000021
【図１５】
2020113252.tif 000022
【図１６Ａ】
2020113252.tif 000023
【図１６Ｂ】
2020113252.tif 000024
【図１６Ｃ】
2020113252.tif 000025
【図１７】
2020113252.tif 000026
【図１８】
2020113252.tif 000027
【図１９】
2020113252.tif 000028
【図２０】
2020113252.tif 000029
【図２１】
2020113252.tif 000030
【図２２】
2020113252.tif 000031
【外国語明細書】
2020113252000001.pdf