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