(57)【要約】【解決手段】  プロセッサは第１のシェーダエンジン及び第２のシェーダエンジンを含む。第１のシェーダエンジンは、ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理するように構成される。第２のシェーダエンジンは、ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理するように構成される。第１及び第２のシェーダエンジンの両方はまた、一般計算シェーダ及び非画素グラフィクスシェーダを処理するようにも構成される。プロセッサはまた、第１及び第２のシェーダに結合されると共にこれらの間に置かれるレベル１（Ｌ１）データキャッシュを含んでいてもよい。【選択図】図２
2013504129.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理するように構成される第１のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理するように構成される第２のシェーダエンジンと、を備え、
前記第１及び第２のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成されるプロセッサ。
【請求項２】
前記第１及び第２のシェーダエンジンに結合されると共に前記第１及び第２のシェーダエンジンの間に置かれるレベル１（Ｌ１）データキャッシュを更に備える請求項１のプロセッサ。
【請求項３】
前記第１のシェーダエンジン、前記第２のシェーダエンジン及び前記Ｌ１データキャッシュは実質的にスクエアなフロアプランを前記プロセッサに提供するように配置される請求項２のプロセッサ。
【請求項４】
前記第Ｌ１データキャッシュはレベル２（Ｌ２）データキャッシュに結合される請求項２のプロセッサ。
【請求項５】
前記ディスプレイデバイス上で表示されるべき画素の第３のサブセットのための画素シェーダを処理するように構成される第３のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第４のサブセットのための画素シェーダを処理するように構成される第４のシェーダエンジンと、を更に備え、
前記Ｌ１データキャッシュは前記第３及び第４のシェーダエンジンに結合されると共に前記第３及び第４のシェーダエンジンの間に置かれ、
前記第３及び第４のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成される請求項２のプロセッサ。
【請求項６】
前記第１及び第２のシェーダエンジンへ発行されるべきワークロードを準備するように構成される入力論理を更に備える請求項１のプロセッサ。
【請求項７】
前記入力論理は、
前記ワークロードを走査すると共に前記第１のシェーダエンジンによって処理されるべき画素の前記第１のサブセットを識別するように構成される第１の走査変換器と、
前記ワークロードを走査すると共に前記第２のシェーダエンジンによって処理されるべき画素の前記第２のサブセットを識別するように構成される第２の走査変換器と、を備える請求項６のプロセッサ。
【請求項８】
前記第１のシェーダエンジン及び第１の複数のオフチップメモリチャネルに結合されて前記第１のシェーダエンジンからの結果データが前記第１の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第１の出力論理と、
前記第２のシェーダエンジン及び第２の複数のオフチップメモリチャネルに結合されて前記第２のシェーダエンジンからの結果データが前記第２の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第２の出力論理と、を更に備える請求項１のプロセッサ。
【請求項９】
クロスバーを更に備え、前記クロスバーは、
（i）前記第１のシェーダエンジンからの第１のデータパスを前記第２の複数のオフチップメモリチャネルに供給し、且つ
（ii）前記第２のシェーダエンジンからの第２のデータパスを前記第１の複数のオフチップメモリチャネルに供給する請求項８のプロセッサ。
【請求項１０】
コンピューティングデバイス上で実行されるときにプロセッサを定義する命令が入っているコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記プロセッサは、
ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理するように構成される第１のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理するように構成される第２のシェーダエンジンと、を備え、
前記第１及び第２のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成されるコンピュータプログラム製品。
【請求項１１】
前記プロセッサは、
前記第１及び第２のシェーダエンジンに結合されると共に前記第１及び第２のシェーダエンジンの間に置かれるレベル１（Ｌ１）データキャッシュを更に備える請求項１０のコンピュータプログラム製品。
【請求項１２】
前記第１のシェーダエンジン、前記第２のシェーダエンジン及び前記Ｌ１データキャッシュは実質的にスクエアなフロアプランを前記プロセッサに提供するように配置される請求項１１のコンピュータプログラム製品。
【請求項１３】
前記第Ｌ１データキャッシュはレベル２（Ｌ２）データキャッシュに結合される請求項１１のコンピュータプログラム製品。
【請求項１４】
前記プロセッサは、
前記ディスプレイデバイス上で表示されるべき画素の第３のサブセットのための画素シェーダを処理するように構成される第３のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第４のサブセットのための画素シェーダを処理するように構成される第４のシェーダエンジンと、を更に備え、
前記Ｌ１データキャッシュは前記第３及び第４のシェーダエンジンに結合されると共に前記第３及び第４のシェーダの間に置かれ、
前記第３及び第４のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成される請求項１１のコンピュータプログラム製品。
【請求項１５】
前記プロセッサは、
前記第１及び第２のシェーダエンジンへ発行されるべきワークロードを準備するように構成される入力論理を更に備える請求項１０のコンピュータプログラム製品。
【請求項１６】
前記入力論理は、
前記ワークロードを走査すると共に前記第１のシェーダエンジンによって処理されるべき画素の前記第１のサブセットを識別するように構成される第１の走査変換器と、
前記ワークロードを走査すると共に前記第２のシェーダエンジンによって処理されるべき画素の前記第２のサブセットを識別するように構成される第２の走査変換器と、を備える請求項１５のコンピュータプログラム製品。
【請求項１７】
前記プロセッサは、
前記第１のシェーダエンジン及び第１の複数のオフチップメモリチャネルに結合されて前記第１のシェーダエンジンからの結果データが前記第１の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第１の出力論理と、
前記第２のシェーダエンジン及び第２の複数のオフチップメモリチャネルに結合されて前記第２のシェーダエンジンからの結果データが前記第２の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第２の出力論理と、を更に備える請求項１０のコンピュータプログラム製品。
【請求項１８】
前記プロセッサはクロスバーを更に備え、前記クロスバーは、
（i）前記第１のシェーダエンジンからの第１のデータパスを前記第２の複数のオフチップメモリチャネルに供給し、且つ
（ii）前記第２のシェーダエンジンからの第２のデータパスを前記第１の複数のオフチップメモリチャネルに供給する請求項１７のコンピュータプログラム製品。
【請求項１９】
処理ユニットにおいてシェーダを処理するための方法であって、
ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを第１のシェーダエンジンにおいて処理することと、
前記ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを第２のシェーダエンジンにおいて処理することと、
一般計算シェーダ及び非画素グラフィクスシェーダを前記第１及び第２のシェーダの両方において処理することと、を備える方法。
【請求項２０】
前記第１のシェーダエンジンによって処理されるべき画素の前記第１のサブセットを、第１の走査変換器を用いて識別することと、
前記第２のシェーダエンジンによって処理されるべき画素の前記第２のサブセットを、第２の走査変換器を用いて識別することと、を更に備える請求項１９の方法。
【請求項２１】
前記ディスプレイデバイス上で表示されるべき画素の第３のサブセットのための画素シェーダを第３のシェーダエンジンにおいて処理することと、
前記ディスプレイデバイス上で表示されるべき画素の第４のサブセットのための画素シェーダを第４のシェーダエンジンにおいて処理することと、を更に備える請求項１９の方法。
【請求項２２】
メモリと、
第１の処理ユニットと、
第２の処理ユニットと、
前記メモリ、前記第１の処理ユニット及び前記第２の処理ユニットに結合されるバスと、を備えるシステムであって、前記第２の処理ユニットは、
ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理するように構成される第１のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理するように構成される第２のシェーダエンジンと、を備え、
前記第１及び第２のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成されるシステム。
【請求項２３】
前記第２の処理ユニットは、
前記第１及び第２のシェーダエンジンに結合されると共に前記第１及び第２のシェーダエンジンの間に置かれるレベル１（Ｌ１）データキャッシュを更に備える請求項２２のシステム。
【請求項２４】
前記第１のシェーダエンジン、前記第２のシェーダエンジン及び前記Ｌ１データキャッシュは実質的にスクエアなフロアプランを前記第２の処理ユニットに提供するように配置される請求項２３のシステム。
【請求項２５】
前記第Ｌ１データキャッシュはレベル２（Ｌ２）データキャッシュに結合される請求項２３のシステム。
【請求項２６】
前記第２の処理ユニットは、
前記ディスプレイデバイス上で表示されるべき画素の第３のサブセットのための画素シェーダを処理するように構成される第３のシェーダエンジンと、
前記ディスプレイデバイス上で表示されるべき画素の第４のサブセットのための画素シェーダを処理するように構成される第４のシェーダエンジンと、を更に備え、
前記Ｌ１データキャッシュは前記第３及び第４のシェーダエンジンに結合されると共に前記第３及び第４のシェーダエンジンの間に置かれ、
前記第３及び第４のシェーダエンジンは一般計算シェーダ及び非画素グラフィクスシェーダを処理するように各々更に構成される請求項２３のシステム。
【請求項２７】
前記第２の処理ユニットは、
前記第１及び第２のシェーダエンジンへ発行されるべきワークロードを準備するように構成される入力論理を更に備える請求項２２のシステム。
【請求項２８】
前記入力論理は、
前記ワークロードを走査すると共に前記第１のシェーダエンジンによって処理されるべき画素の前記第１のサブセットを識別するように構成される第１の走査変換器と、
前記ワークロードを走査すると共に前記第２のシェーダエンジンによって処理されるべき画素の前記第２のサブセットを識別するように構成される第２の走査変換器と、を備える請求項２７のシステム。
【請求項２９】
前記第２の処理ユニットは、
前記第１のシェーダエンジン及び第１の複数のオフチップメモリチャネルに結合されて前記第１のシェーダエンジンからの結果データが前記第１の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第１の出力論理と、
前記第２のシェーダエンジン及び第２の複数のオフチップメモリチャネルに結合されて前記第２のシェーダエンジンからの結果データが前記第２の複数のオフチップメモリチャネルのどれかに供給されることを可能にする第２の出力論理と、を更に備える請求項２２のシステム。
【請求項３０】
前記第２の処理ユニットはクロスバーを更に備え、前記クロスバーは、
（i）前記第１のシェーダエンジンからの第１のデータパスを前記第２の複数のオフチップメモリチャネルに供給し、且つ
（ii）前記第２のシェーダエンジンからの第２のデータパスを前記第１の複数のオフチップメモリチャネルに供給する請求項２９のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してコンピュータシステムにおいて行われるコンピューティング動作に向けられている。より特定的には、本発明はコンピュータシステムにおいてコンピューティング動作を行う処理ユニットに向けられている。
【背景技術】
【０００２】
グラフィクス処理ユニット（ＧＰＵ）は、グラフィクス処理タスクを行うことに適合させられている複雑な集積回路である。ＧＰＵは、例えば、ビデオゲームアプリケーション等のエンドユーザアプリケーションによって要求されるグラフィクス処理タスクを実行することができる。ＧＰＵは、ディスクリートな（即ち別個の）デバイス及び／又はパッケージであることがあり、あるいは別のプロセッサ（例えばＣＰＵ）と同じデバイス及び／又パッケージ内に含まれていることがある。例えばＧＰＵは、経路付けデバイス又は例えばノースブリッジ等のブリッジデバイス内にしばしば集積化される。そのような例においては、エンドユーザアプリケーションとＧＰＵの間には何層ものソフトウエアが存在する。エンドユーザアプリケーションは、アプリケーションプログラミングインタフェース（ＡＰＩ）と通信する。ＡＰＩは、ＧＰＵに依存するフォーマットでよりはむしろ標準的なフォーマットでエンドユーザアプリケーションがグラフィクスデータ及びコマンドを出力することを可能にする。ワシントン、レドモンドのマイクロソフト社(Microsoft Corporation of Redmond, Washington)によって開発されたダイレクトＸ(DirectX)（登録商標）及びクロノスグループ(Khronos Group)によって推奨されているオープンＧＬ(OpenGL)（登録商標）を含めて様々な種類のＡＰＩが商業的に利用可能である。ＡＰＩはドライバと通信する。ドライバは、ＡＰＩから受信した標準コードを、ＧＰＵによって理解されるネイティブフォーマットの命令にトランスレートする。ドライバは典型的にはＧＰＵの製造業者によって書かれる。ＧＰＵは次いでドライバからの命令を実行する。
【０００３】
ＧＰＵによって行われるグラフィクス処理タスクは、典型的には、行列操作及びベクトル操作等の複雑な数学的計算を伴う。これらの計算を効率的に行うために、ＧＰＵはシェーダエンジン(shader engine)と称される処理要素のアレイを典型的には含む。処理要素のアレイは、単一命令多重データ（ＳＩＭＤ）デバイスへと組織化されている。シェーダエンジンは、シェーダプログラムと称される命令のシーケンスを実行する。シェーダプログラムを実行するために必要なデータは、シェーダエンジンの異なる処理要素へ並列で分配される。異なる処理要素は次いで、データの異なる断片に同じ操作を行うであろう。このようにしてＧＰＵは、グラフィクス処理タスクに必要な複雑な数学的計算を典型的な中央処理ユニット（ＣＰＵ）よりも速く行うことができる。
【０００４】
従来、ＧＰＵは、単一のグラフィクス処理タスクを完了するのに必要な異なるシェーダプログラムを実行するために、異なるシェーダエンジンを含んでいたかもしれない。例えば単一のグラフィクス処理は、少なくとも２つの異なるシェーダプログラムの実行を必要とすることがあり、１つは三角形の頂点を操作する頂点シェーダであり、もう１つはディスプレイデバイス（例えばコンピュータスクリーン）上に表示されることになる画素を決定する画素シェーダである。計算のこれら２セットを行うために、典型的なＧＰＵは２つの異なるシェーダエンジン、即ち（i）頂点シェーダを行う第１のシェーダエンジンと（ii）画素シェーダを行う第２のシェーダエンジンとを含んでいたかもしれない。
【０００５】
近年では、ＧＰＵは１つの統合化シェーダエンジンを含むように設計されてきている。統合化シェーダエンジンは、幾つかの異なる種類のシェーダプログラムを行うことが可能な処理要素のアレイを含んでいる。統合化シェーダエンジンは、例えば、頂点シェーダ、幾何シェーダ及び画素シェーダを実行し、各シェーダは、パイプライン内の異なるシェーダエンジンに進行するよりもむしろ、統合化シェーダの処理要素のアレイを通って再循環する。典型的なグラフィクス処理タスク（例えば頂点シェーダ、幾何シェーダ、画素シェーダ等）に加えて、統合化シェーダエンジンは、つい最近では一般計算動作（例えば数学的アルゴリズム、物理的シミュレーション等）を行うためにも用いられてきている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
競争力を保つために、ＧＰＵの計算能力は、消費者の要望についていくために継続的に増大すべきであり、またエンドユーザアプリケーション及びＡＰＩの要求に応じて進歩している。ＧＰＵの計算能力を増大させる１つの方法は、シェーダエンジンのアレイにおける処理要素の数を増やすことである。しかし、増大した数の処理要素にワークロード及びデータを供給するためには、処理要素に入力している入力／出力バスは、現在利用可能なＧＰＵの能力をまさに維持するために対応して増えるであろう。
【０００７】
ＧＰＵの計算能力を増大させるための見込みのある解決法は、シェーダエンジンに含まれているＳＩＭＤの幅を増大させることである。しかし、この解決法はＳＩＭＤダイバージェンス(divergence)を伴う問題を有していそうである。ＳＩＭＤダイバージェンスは、ＳＩＭＤデバイス上で実行中の異なるスレッドがシェーダプログラムの分岐命令における異なる方向をとる場合に生じる。例えばシェーダプログラムは、表１に示されるような分岐命令を有していることがある。ＳＩＭＤダイバージェンスは、例えば、ＳＩＭＤデバイス上で実行中の第１のスレッドが分岐命令の「ゼン(then)」部（即ち動作１(operation 1)）にエンターし且つそのＳＩＭＤデバイス上で実行中の第２のスレッドがその分岐命令の「エルス(else)」部（即ち動作２(operation 2)）にエンターする場合に、生じる。このシナリオでは、第２のスレッド（「エルス」部にエンターした）は、第１のスレッド（「イフ(if)」状態に入った）を待つ必要があるであろう。ＳＩＭＤダイバージェンスに付随するこの待ちは、実行するための追加的な時間の負担をシェーダプログラムにかける。ＳＩＭＤダイバージェンスの可能性に起因して、ＳＩＭＤの幅を単純に増大させることは、ＧＰＵの計算能力を増大させるための有望な選択肢ではないかもしれない。
【表１】
2013504129.tif 000003
【０００８】
ＧＰＵの計算能力を増大させるための別の見込みのある解決法は、シェーダエンジンのアレイ内の処理要素（例えばＳＩＭＤ）のスタック(stack)を増大させることである。しかし、この解決法は幾つかの理由で問題である。先ず、処理要素のスタックを増大させることは細長いチップを結果としてもたらし得るし、場合によっては製造上の問題を生じさせる。加えて、処理要素のスタックを増大させることは、スタックにワークロードを供給することに伴う入力待ち時間の増大、及びスタックからの結果を経路付けることに伴う出力待ち時間の増大を生じさせる。更に、スタックにデータ（例えば状態データ）を供給するための待ち時間の増大があるかもしれない。このように、処理要素のスタックの深さを単純に大きくすることは、ＧＰＵの計算能力を増大させるための有望な選択肢ではないかもしれない。
【０００９】
上述に鑑み、増大した計算能力を伴うＧＰＵ及びそのアプリケーションが必要とされている。
【課題を解決するための手段】
【００１０】
本発明は、増大した計算能力を伴うプロセッサ及びそのアプリケーションを提供することによって上述の必要性を満たす。プロセッサの単一のシェーダエンジンの幅又は深さを増大させることよりもむしろ、本発明の実施形態は、複数のシェーダエンジンを伴うプロセッサを提供する。
【００１１】
例えば、本発明の実施形態によると、プロセッサは第１のシェーダエンジン及び第２のシェーダエンジンを含む。第１のシェーダエンジンは、ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理するように構成される。第２のシェーダエンジンは、ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理するように構成される。第１及び第２のシェーダエンジンの両方はまた、一般計算シェーダ及び非画素グラフィクスシェーダを処理するようにも構成される。プロセッサはまた、第１及び第２のシェーダエンジンに結合されると共にこれらの間に置かれるレベル１（Ｌ１）データキャッシュを含んでいてもよい。
【００１２】
別の実施形態では、プロセッサはソフトウエアにおいて定義される。この実施形態では、コンピュータプログラム製品は、コンピューティングデバイス上で実行される場合にプロセッサを定義する命令が入っているコンピュータ可読記憶媒体を含む。
【００１３】
更なる実施形態では、プロセッサはコンピューティングシステム内に含まれる。この実施形態では、コンピューティングシステムは、メモリと、第１の処理ユニットと、第２の処理ユニットと、メモリ、第１の処理ユニット及び第２の処理ユニットに結合されるバスと、を含む。例示的なコンピューティングシステムは、限定はされないが、スーパーコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ビデオゲームデバイス、埋め込みデバイス、携帯デバイス（例えば携帯電話、スマートフォン、ＭＰ３プレイヤ、カメラ等）、又はプロセッサを含み若しくはプロセッサを含むように構成される何らかの他のデバイスを含んでいてよい。
【００１４】
更なる実施形態は、プロセッサにおいてシェーダを処理するための方法を提供する。この方法によると、第１のシェーダエンジンが、ディスプレイデバイス上で表示されるべき画素の第１のサブセットのための画素シェーダを処理し、そして第２のシェーダエンジンが、ディスプレイデバイス上で表示されるべき画素の第２のサブセットのための画素シェーダを処理する。第１及び第２のシェーダエンジンの両方はまた、一般計算シェーダ及び非画素グラフィクスシェーダをも処理する。
【００１５】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１６】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
【００１７】
【図１】図１は本発明の実施形態に従う例示的なコンピューティングシステムのブロック図である。
【００１８】
【図２】図２は本発明の実施形態に従い複数の分割スクリーン統合化シェーダエンジンを伴う例示的なＧＰＵのブロック図である。
【００１９】
【図３】図３は図２のＧＰＵ内に含まれる例示的な入力論理のブロック図である。
【００２０】
【図４Ａ】図４Ａは図２のＧＰＵの例示的な分割スクリーン統合化シェーダエンジンのブロック図（その１）である。
【図４Ｂ】図４Ｂは図２のＧＰＵの例示的な分割スクリーン統合化シェーダエンジンのブロック図（その２）である。
【００２１】
【図５】図５は図２のＧＰＵのシェーダエンジンによって共有される例示的なレベル１（Ｌ１）データキャッシュのブロック図である。
【００２２】
【図６】図６は図２のＧＰＵ内に含まれる例示的なオフチップメモリアクセス論理のブロック図である。
【００２３】
本発明の特徴及び利益は、図面と共に以下に記述される詳細な説明からより明らかになり、図面において同様の参照符号は全体を通して対応する要素を識別する。図面において、同様の参照数字は一般的に同一の、機能的に類似の、及び／又は構造的に類似の要素を示す。ある要素が最初に現れる図面は対応する参照番号の一番左の単一又は複数の桁によって示される。
【発明を実施するための形態】
【００２４】
I．概説
本発明の本実施形態は、複数のシェーダエンジンを伴う処理ユニット及びそのアプリケーションに向けられている。以下の詳細な説明において、「１つの実施形態」、「ある実施形態」、「例示的実施形態」等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。
【００２５】
ある実施形態によると、プロセッサの計算能力は、複数のシェーダエンジンをプロセッサに設けることによって増大させられる。複数のシェーダエンジンを伴うプロセッサを設計することは、単一のシェーダエンジンの幅及び／又は深さを単純に増大させるよりもむしろ、多数のＳＩＭＤにわたる更なる拡張性(scalability)を促進する。ある実施形態においては、複数のシェーダエンジンは、共通のキャッシュシステムへのアクセスを共有して、シェーダエンジンにデータを供給することに付随する待ち時間を低減する。この実施形態においては、複数のシェーダエンジン、及びキャッシュシステムは、実質的にスクエアなフロアプラン(substantially square floor plan)をプロセッサに提供するように構成されてよい。例えばキャッシュシステム（又は少なくともその部分）は、キャッシュシステムに一方の側からアクセスしている半分のシェーダエンジン及びキャッシュシステムに他方の側からアクセスしている他の半分のシェーダエンジンについて中央のロケーション内に置かれてよい。プロセッサのシェーダエンジンは、非画素シェーダ及び画素シェーダを異なるように取り扱う。
【００２６】
非画素シェーダに対しては、プロセッサの各シェーダエンジンは統合化されている。つまり、各シェーダエンジンは一般計算シェーダ（例えば数学的アルゴリズム、物理的シミュレーション等）及び非画素グラフィクスシェーダ（例えば頂点シェーダ、幾何シェーダ、テセレーションシェーダ(tessellation shaders)等）を処理するように構成される。ある実施形態においては、非画素シェーダは総当り制(round-robin fashion)で複数のシェーダへ送られる。
【００２７】
画素シェーダに対しては、プロセッサの各シェーダエンジンは、ディスプレイデバイスによって表示されるべき画素の特定のサブセットを処理するように構成される。ディスプレイデバイスの画素は、シェーダエンジンの数に対応する数のサブセットへと区分化される。例えばプロセッサが２つのシェーダエンジンを含む実施形態においては、ディスプレイデバイスの画素は画素の第１及び第２のサブセットへと区分化される（例えば第１のサブセットを備えるチェッカー盤パターンの偶数の画素及び第２のサブセットを備えるチェッカー盤パターンの奇数の画素を伴うチェッカー盤）。この実施形態においては、プロセッサの第１のシェーダエンジンは第１のサブセットの画素を処理するように構成され、そしてプロセッサの第２のシェーダエンジンは第２のサブセットの画素を処理するように構成される。プロセッサは３つ以上（例えば４つ、８つ、等）のシェーダエンジンを含んでいてもよい。この場合、ディスプレイデバイスの画素は３つ以上（例えば４つ、８つ、等）のサブセットへと区分化され、画素の各サブセットはプロセッサの特定のシェーダエンジンによって処理される。
【００２８】
本発明の実施形態に従う例示的なプロセッサの更なる詳細が以下に説明される。しかし、これらの詳細を提供するのに先立ちそのようなプロセッサが実装されるであろう例示的なシステムを説明することは有用である。
【００２９】
II．例示的なシステム
図１は本発明の実施形態に従う例示的なコンピューティングシステム１００のブロック図である。コンピューティングシステム１００は、ＣＰＵ１０２、ＧＰＵ１１０を含み、そして随意的にコプロセッサ１１２を含んでいてよい。加えてコンピューティングシステム１００は、ＣＰＵ１０２、ＧＰＵ１１０及びコプロセッサ１１２によってアクセスされてよいシステムメモリ１０４を含む。実施形態においては、コンピューティングシステム１００は、スーパーコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ビデオゲームデバイス、埋め込みデバイス、携帯デバイス（例えば携帯電話、スマートフォン、ＭＰ３プレイヤ、カメラ、ＧＰＳデバイス等）、又はＧＰＵを含み若しくはＧＰＵを含むように構成される何らかの他のデバイスを備えていてよい。図１には具体的に示されていないが、コンピューティングシステム１００は、コンピューティングシステム１００のコンテンツ（例えばグラフィクス、ビデオ等）を表示するためのディスプレイデバイス（例えば陰極線管、液晶ディスプレイ、プラズマディスプレイ等）を含んでいてもよい。
【００３０】
ＧＰＵ１１０及びコプロセッサ１１２は、ＣＰＵ１０２及びシステムメモリとバス１１４を介して通信する。バス１１４は、周辺要素インタフェース(peripheral component interface)（ＰＣＩ）バス、アクセラレーテッドグラフィクスポート(accelerated graphics port)（ＡＧＰ）バス、ＰＣＩエクスプレス(PCI Express)（ＰＣＩＥ）バス、又は現在用いられ若しくは将来開発される別の種類のバスを含めてコンピュータシステムにおいて用いられる任意の種類のバスであってよい。
【００３１】
ＧＰＵ１１０及びコプロセッサ１１２は、特定の特別の機能を、ＣＰＵ１０２がソフトウエアにおいてそれらを行い得るであろうよりも通常は高速に行うことによって、ＣＰＵ１０２を支援する。例えばＧＰＵ１１０は、データ並列コンピューティングタスク、例えばグラフィクス処理タスク（例えば頂点シェーダ、幾何シェーダ、画素シェーダ等を含む）及び一般計算タスク（例えば数学的アルゴリズム、物理的シミュレーション等を含む）を処理してよい。後で更に詳細に説明されるように、ＧＰＵ１１０は本発明の実施形態に従って複数のシェーダエンジンを含む。複数のシェーダエンジンは、単一のシェーダエンジンＧＰＵと比較して増大された計算能力をＧＰＵ１１０に提供する。コプロセッサ１１２は、限定はされないが、浮動小数点コプロセッサ、ＧＰＵ、ネットワーキングコプロセッサ、並びに関連する分野を含めて当業者に明らかであろうような他の種類のコプロセッサ及びプロセッサを含んでいてよい。
【００３２】
システムメモリ１０４に加えて、コンピューティングシステム１００はローカルメモリ１０６及びローカルメモリ１０８を更に含む。ローカルメモリ１０６はＧＰＵ１１０に結合されており、またバス１１４に結合されていてもよい。ローカルメモリ１０８はコプロセッサ１１２に結合されており、またバス１１４に結合されていてもよい。ローカルメモリ１０６及び１０８は、特定のデータ（例えば頻繁に用いられるデータ）への、そのデータがシステムメモリ１０４内に記憶されていたとした場合に可能であろうよりも高速なアクセスを提供するために、それぞれＧＰＵ１１０及びコプロセッサ１１２に利用可能である。
【００３３】
ある実施形態においては、ＧＰＵ１１０及びコプロセッサ１１２は、ＣＰＵ１０２と並列に命令をデコードし、そしてそれらを対象としている命令のみを実行する。別の実施形態においては、ＧＰＵ１１０及びコプロセッサ１１２を対象としている命令をＣＰＵ１０２がそれぞれのコマンドバッファへ送る。
【００３４】
III．例示的なプロセッサ
図２は本発明の実施形態に従い複数のシェーダエンジンを有する例示的なプロセッサのブロック図である。例示のみを目的とし且つ限定を目的とせずに、例示的なプロセッサがＧＰＵに関して以下に説明される。しかし、関連分野を含めた当業者であれば、本発明の実施形態は複数のシェーダエンジンを含む他の種類のプロセッサ、例えばビデオ処理ユニット、中央処理ユニット、コプロセッサ等にも適用され得ることを理解するであろう。これら他の種類のプロセッサは本発明の精神及び範囲内で検討される。
【００３５】
図２の実施形態において示されるように、ＧＰＵ１１０は２つのシェーダエンジン、即ち第１のシェーダエンジン２１０Ａ及び第２のシェーダエンジン２１０Ｂを含む。シェーダエンジン２１０は非画素シェーダに関して統合化されており、即ち、各シェーダエンジン２１０は、非画素グラフィクスシェーダ（例えば頂点シェーダ、幾何シェーダ、テセレーションシェーダ等）及び一般計算シェーダ（例えば数学的アルゴリズム、物理的シミュレーション等）を実行するように構成されていることを意味している。各非画素シェーダは、パイプライン内の異なるシェーダエンジンに進行するよりもむしろ、シェーダエンジン２１０の処理要素のアレイを通って単純に再循環する。
【００３６】
非画素シェーダとは異なり、シェーダエンジン２１０は画素シェーダに関して統合化されていない。画素シェーダに対しては、各シェーダエンジン２１０は、ディスプレイ上に表示されるべき画素のサブセットに対してシェーダプログラムを実行するように構成される。例えば、第１のシェーダエンジン２１０Ａは、ディスプレイ上に表示されるべき画素の第１のサブセット（例えば半分）に対してシェーダプログラムを実行し、そして第２のシェーダエンジン２１０Ｂは、ディスプレイ上に表示されるべき画素の第２のサブセット（例えば残りの半分）に対してシェーダプログラムを実行する。
【００３７】
図２は２つのシェーダエンジンのみを伴うＧＰＵを図示しているが、これは例示的な目的なだけであり且つ限定の目的ではないことが理解されるべきである。ある実施形態においては、ＧＰＵ１１０は３つ以上（例えば４つ、８つ、等）のシェーダエンジンを含んでいてよい。そのような実施形態においては、シェーダエンジンの半分はデータパス（例えばデータキャッシュ２０６）の一方の側に位置し、またシェーダエンジンの残りの半分はデータパス（例えばデータキャッシュ２０６）の他方の側に位置する。シェーダエンジンの半分はデータパスの一方の側に位置し、またシェーダエンジンの残りの半分はデータパスの他方の側に位置するので、ＧＰＵ１１０は実質的にスクエアなフロアープランを有するように構成され得る。
【００３８】
シェーダエンジン２１０に加えて、図２は、ＧＰＵ１１０が更に入力論理２０４、キャッシュシステム（（レベル１（Ｌ１））データキャッシュ２０６、（レベル２（Ｌ２））データキャッシュ２１６を含む）及び出力論理（経路付け論理２１２Ａ〜Ｂ、クロスバー２１４及びオフチップのメモリアクセス論理２１８Ａ〜Ｂを含む）を含んでいることを示している。以下これらの要素の各々を更に詳細に説明する。
【００３９】
Ａ．入力論理２０４
入力論理２０４はグラフィクス処理タスク及び一般計算タスクに前処理を行い、そしてこれらのタスクをシェーダエンジン２１０へ発行する。図３は入力２０４の実施形態を示している。図３の実施形態に示されるように、入力論理２０４は、コマンドプロセッサ３０２、頂点解析器３１０、プリミティブアセンブラ(primitive assembler)３１２、第１の走査変換器３１４Ａ、第２の走査変換器３１４Ｂ、第１の入力制御ブロック３１６Ａ及び第２の入力制御ブロック３１６Ｂを含む。
【００４０】
コマンドプロセッサ３０２は、グラフィクス処理タスク及び一般計算タスクをＣＰＵから受信する。コマンドプロセッサ３０２は次いで、これらのタスクを頂点解析器３１０へ渡す。
【００４１】
頂点解析器３１０は、グラフィクス処理タスク及び／又は一般計算タスクに関連する全てのシェーダプログラムを識別する。頂点解析器３１０は、利用可能になるはずの入力データ及び出力データに基づいて各シェーダプログラムがシェーダエンジン２１０においていつ着手され得るのかをスケジューリングする。例えば、特定のグラフィクス処理タスクは第１のシェーダプログラム及び第２のシェーダプログラムの実行を必要とするであろうし、ここで第２のシェーダプログラムは第１のシェーダプログラムによって生成されるデータに依存する。この例に従うと、頂点解析器３１０は、第１及び第２のシェーダプログラムを識別すると共に第１のシェーダプログラムが第２のシェーダプログラムよりも先に実行されるようにスケジューリングし、その結果、第２のシェーダプログラムのためのデータは、第２のシェーダプログラムが着手されるときに利用可能になるはずである。
【００４２】
着手のためにシェーダプログラムをスケジューリングすることに加えて、頂点解析器３１０はまた、頂点バッファへのポインタを生成し、そして接続性データ(connectivity data)を含む。ポインタは頂点バッファから頂点を読み出すために用いられる。頂点が既に処理されてしまっており且つ頂点バッファ内に記憶されている場合、頂点解析器３１０はその頂点を頂点バッファから読み出してよく、その結果、頂点は１回だけ処理される。接続性データは、複数の頂点が互いにどのように適合してプリミティブ（例えば三角形）を作成するのかを指定し、その結果、プリミティブは適切にラスタライズされ(rasterized)得る。
【００４３】
頂点解析器３１０はプリミティブアセンブラ３１２及び入力制御ブロック３１６に結合されている。頂点解析器３１０からの幾つかのシェーダプログラムはプリミティブアセンブラ３１２へ送られ、また他は第１の入力制御ブロック３１６Ａ又は第２の入力制御ブロック３１６Ｂのいずれかへ送られる。特に、画素シェーダはプリミティブアセンブラ３１２に送られる一方で、一般計算シェーダ及び非画素グラフィクスシェーダは入力制御ブロック３１６へ渡される。
【００４４】
プリミティブアセンブラ３１２は、プリミティブをそれらが走査変換器３１４へ送られるのに先立ち前処理（例えば変形、クリップ等）する。図３の実施形態に示されるように、プリミティブアセンブラは、プリミティブを頂点解析器３１０又は経路付け論理２１２から受信してよい。
【００４５】
走査変換器３１４はプリミティブを横断して(traverse)異なるシェーダエンジン２１０によって処理されるべき画素を決定する。ある実施形態においては、第１の走査変換器３１４Ａは、画素の第１のサブセット（例えばチェッカー盤パターンの偶数の画素）を第１のシェーダエンジン２１０Ａによる後続の処理のために第１の入力制御ブロック３１６Ａへと送り、また第２の走査変換器３１４Ｂは、画素の第２のサブセット（例えばチェッカー盤パターンの奇数の画素）を第２のシェーダエンジン２１０Ｂによる後続の処理のために第２の入力制御ブロック３１６Ｂへと送る。
【００４６】
走査変換器３１４から画素を受信することに加えて、入力制御ブロック３１６はまた、前述したように頂点解析器３１０から非画素シェーダを受信する。ある実施形態においては、頂点解析器３１０は、非画素シェーダ（例えば一般計算シェーダ及び非画素グラフィクスシェーダ）を総当り制で入力制御ブロック３１６に渡す。例えば頂点解析器３１０は、第１の非画素シェーダ、第２の非画素シェーダ、第３の非画素シェーダ、第４の非画素シェーダ、等を備えている非画素シェーダのストリームをシーケンシャルにスケジューリングしてよい。非画素シェーダの総当り分配に従い、頂点解析器３１０は、第１の非画素シェーダを第１の入力制御ブロック３１６Ａへ、第２の非画素シェーダを第２の入力制御ブロック３１６Ｂへ、第３の非画素シェーダを第１の入力制御ブロック３１６Ａへ、第４の非画素シェーダを第２の入力制御ブロック３１６Ｂへ、等のように送る。
【００４７】
入力制御ブロック３１６は、シェーダエンジン２１０内のどこに特定のワークロードを送るのかを決定する。既に簡単に述べられ且つ以下に更に詳細に説明されるように、各シェーダエンジン２１０は複数の処理要素（例えばＳＩＭＤ）を含む。入力制御ブロック３１６は、新たなワークロードを処理するためにどの処理要素（例えばＳＩＭＤ）が利用可能であるのかを識別し、そして新たなワークロードを利用可能な処理要素（例えばＳＩＭＤ）へ送る。特に、第１の入力制御ブロック３１６Ａはワークロードを第１のシェーダエンジン２１０Ａの処理要素（例えばＳＩＭＤ）へ送り、また第２の入力制御ブロック３１６Ｂはワークロードを第２のシェーダエンジン２１０Ｂの処理要素（例えばＳＩＭＤ）へ送る。
【００４８】
Ｂ．シェーダエンジン２１０
図４Ａ及び４Ｂはそれぞれ第１のシェーダエンジン２１０Ａ及び第２のシェーダエンジン２１０Ｂの例示的な詳細を示している。図４Ａ及び４Ｂの実施形態に示されるように、シェーダエンジン２１０は、これら２つのシェーダエンジンの間の中心軸に関して互いの鏡像として構成される。このようにして、シェーダエンジン２１０は、以下に更に詳細に説明されるように単一のキャッシュシステムへの共通のアクセスを共有することができる。
【００４９】
図４Ａ及び４Ｂを参照すると、各シェーダエンジン２１０は、複数のＳＩＭＤ４０６、複数のローカルデータシェア（ＬＤＳ）４０４及びシーケンサ４０２を含む。ＳＩＭＤ４０６は、各シェーダエンジン２１０のデータ並列処理要素である。ある実施形態においては、各シェーダエンジンは１０行のＳＩＭＤ４０６を含み、各行は４要素の算術論理ユニット(arithmetic-logic units)（ＡＬＵ）の４つのグループを備えている。各ＬＤＳ４０４は１行のＳＩＭＤ４０６によって用いられるデータを記憶する。シーケンサ４０２は、シェーダエンジン２１０内の異なるＳＩＭＤ４０６によってどのワークロードが処理されているのかの経過を追って、複数のスレッドが並列に実行されることを可能にする。ある実施形態においては、例えば、各シェーダエンジン２１０内でどの時点においても３０，０００スレッドが実行され得る。これらのスレッドを実行するためにＳＩＭＤ４０６が必要とするデータは、キャッシュシステムからリトリーブされて(retrieved)よい。
【００５０】
Ｃ．キャッシュシステム
再び図２を参照すると、キャッシュシステムは、Ｌ１データキャッシュ２０６、Ｌ２データキャッシュ２１６及びオフチップメモリアクセス論理２１８を含む。シェーダプログラムを実行するためにシェーダエンジン２１０がデータを必要とすると、先ずＬ１データキャッシュ２０６に対して要求が作成される。Ｌ１データキャッシュ２０６内でキャッシュヒットがある（即ち要求されたデータがＬ１データキャッシュ２０６内にある）場合には、そのデータをどちらのシェーダエンジンが必要としたのかに応じて、データは第１のシェーダエンジン２１０Ａ又は第２のシェーダエンジン２１０Ｂのいずれかに転送される。Ｌ１データキャッシュ２０６内でキャッシュミスがある（即ち要求されたデータがＬ１データキャッシュ２０６内に無い）場合には、Ｌ１データキャッシュ２０６は当該要求をＬ２データキャッシュ２１６へ転送する。Ｌ２データキャッシュ２１６はＬ１データキャッシュ２０６よりも大きなキャッシュメモリユニットではあるが、より大きなそのサイズに起因して、要求されたデータがＬ２データキャッシュ２１６内に含まれているかどうかを決定するために、典型的にはより長い時間がかかる。Ｌ２データキャッシュ２１６内でキャッシュヒットがある場合には、要求されたデータは、Ｌ１データキャッシュ２０６内に記憶され、そしてそのデータを要求したシェーダエンジン２１０へと転送される。Ｌ２データキャッシュ２１６内でキャッシュミスがある場合には、要求されたデータは、オフチップメモリアクセス論理２１８を介してオフチップメモリからリトリーブされる必要がある。
【００５１】
図５はＬ１データキャッシュ２０６の実施形態を示している。図５の実施形態に示されるように、Ｌ１データキャッシュ２０６は、各シェーダエンジン２１０の複数のＳＩＭＤ４０６に対応する複数の行の論理ブロックを含む。Ｌ１データキャッシュ２０６の論理ブロックの各行は、第１のテクスチャアドレスユニット５０２Ａ、第１のテクスチャデータユニット５０４Ａ、テクスチャ・キャッシュ／Ｌ１対５１０、第２のテクスチャデータユニット５０４Ｂ及び第２のテクスチャアドレスユニット５０２Ｂを含む。
【００５２】
テクスチャアドレスユニット５０２は、シーケンサ４０２からの状態データに基づいてテクスチャアドレスを生成する。このようにして適切なテクスチャデータが後続の処理のためにローカルメモリ内へとロードされ得る。第１のテクスチャアドレスユニット５０２Ａは第１のシェーダエンジン２１０Ａのためのテクスチャアドレスを生成し、また第２のテクスチャアドレスユニット５０２Ｂは第２のシェーダエンジン２１０Ｂのためのテクスチャアドレスを生成する。
【００５３】
テクスチャデータユニット５０４は、データをフィルタリングすると共にデータをシェーダエンジン２１０へ戻す。第１のテクスチャデータユニット５０４Ａは第１のシェーダエンジン２１０Ａに結合され、また第２のテクスチャデータユニット５０４Ｂは第２のシェーダエンジン２１０Ｂに結合される。
【００５４】
テクスチャ・キャッシュ／Ｌ１対５１０は、データのレベル１キャッシングを行う。前述したように、テクスチャ・キャッシュ／Ｌ１対５１０内でミスがある場合、Ｌ２データキャッシュ２１６に対して要求が作成される。テクスチャ・キャッシュ／Ｌ１対５１０は、第１のシェーダエンジン２１０Ａ及び第２のシェーダエンジン２１０Ｂの両方からのデータ要求をサービスする。このようにして、シェーダエンジン２１０のためにデータをリトリーブすることに付随する待ち時間が低減され得る。
【００５５】
Ｄ．出力論理
シェーダプログラムを実行した後、シェーダエンジン２１０は結果を出力論理に渡す。図２を参照すると、出力論理は、経路付け論理２１２、クロスバー２１４及びオフチップメモリアクセス論理２１８を含む。図２に示されるように、第１のシェーダエンジン２１０Ａは結果を第１の経路付け論理２１２Ａに渡し、また第２のシェーダエンジン２１０Ｂは結果を第２の経路付け論理２１２Ｂに渡す。
【００５６】
各経路付け論理２１２はエクスポートバッファを含む。シェーダエンジン２１０のＳＩＭＤ４０６をビジーに保つために、ワークロードはシェーダエンジン２１０にラスタライズ順(rasterization order)ではなく発行されてよい。しかし、画素がディスプレイデバイス上で適切に表示されることを確実にするために、シェーダエンジン２１０からの結果は、最終的にはラスタライズ順に組み合わせ戻されるべきである。各経路付け論理２１２内にエクスポートバッファを含ませることによって、シェーダエンジン２１０がラスタライズ順ではなく結果をエクスポートすることができる。
【００５７】
各経路付け論理２１２はまた、シェーダエンジン２１０の結果を適切に経路付けるための論理を含む。図２に示されるように、経路付け論理２１２は、シェーダエンジン２１０からの結果を、（i）入力論理２０４、この場合、結果は続いて第１のシェーダエンジン２１０Ａ又は第２のシェーダエンジン２１０Ｂのいずれかによって処理されることになる、（ii）第１のオフチップメモリアクセス論理２１８Ａ、この場合、結果は続いて第１の複数のオフチップメモリチャネルの１つに書き込まれることになる、又は（iii）第２のオフチップメモリアクセス論理２１８Ｂ、この場合、結果は続いて第２の複数のオフチップメモリチャネルの１つに書き込まれることになる、のどこかのロケーションに経路付けてよい。第１の経路付け論理２１２Ａは、結果を第１のオフチップメモリアクセス論理２１８Ａに直接渡してもよいが、クロスバー２１４を用いて結果を第２のオフチップメモリアクセス論理２１８Ｂに渡す。同様に、第２の経路付け論理２１２Ｂは、結果を第２のオフチップメモリアクセス論理２１８Ｂに直接渡してもよいが、クロスバー２１４を用いて結果を第１のオフチップメモリアクセス論理２１８Ａに渡す。ある実施形態においては、クロスバー２１４は３２個の画素クロスバーを備えており、ここでは各画素は１２８ビットを備えている。
【００５８】
図６はオフチップメモリアクセス論理２１８の例示的な詳細を示している。図６の実施形態に示されるように、オフチップメモリアクセス論理２１８は、複数の書き込み結合(write-combining)キャッシュ６０２Ａ〜Ｄ、複数の深さバッファ６０４Ａ〜Ｄ、複数の色バッファ６０６Ａ〜Ｄ、第１のメモリインタフェース６０８Ａ及び第２のメモリインタフェース６０８Ｂを含む。書き込み結合キャッシュ６０２は、オフチップメモリへ書き込まれるべきデータを結合して、オフチップメモリへの効率的なアクセスを可能にする。深さバッファはｚ試験に対して生じる。色バッファ６０６は色混合に対して生じる。各メモリインタフェース６０８はデュアルチャネルメモリ制御器を備えている。オフチップメモリアクセス論理２１８は２つのデュアルチャネルメモリ制御器を含むので、各オフチップメモリアクセス論理２１８は４つの異なるオフチップメモリチャネルへのアクセスを提供する。
【００５９】
IV．例示的な動作
動作においてＧＰＵ１１０は、グラフィクス処理タスク及び一般計算タスクをＣＰＵ１０２から受信する。ＧＰＵ１１０の入力論理２０４は、非画素シェーダの実行に付随するワークロードを上述のような交互の様態（例えば総当り制）で第１のシェーダエンジン２１０Ａ又は第２のシェーダエンジン２１０Ｂのいずれかに送る。画素シェーダに対しては、入力論理２０４は、画素の第１のサブセット（例えばチェッカー盤パターンの偶数の画素）を第１のシェーダエンジン２１０Ａへ送り、また画素の第２のサブセット（例えばチェッカー盤パターンの奇数の画素）を第２のシェーダエンジン２１０Ｂへ送る。
【００６０】
実行のためのワークロードが発行された後、シェーダエンジン２１０は、これらのワークロードを実行するために必要なデータをリトリーブする。前述したように、データはキャッシュシステム（Ｌ１データキャッシュ２０６、Ｌ２データキャッシュ２１６及びオフチップメモリアクセス論理２１８を備えている）からリトリーブされる。
【００６１】
シェーダエンジン２１０からの結果は次いで、経路付け論理２１２によって適切なロケーションへ経路付けられる。重要なことに、クロスバー２１４は、両方のシェーダエンジン２１０からの結果が第１のオフチップメモリアクセス論理２１８Ａ又は第２のオフチップメモリアクセス論理２１８Ｂのいずれかを介して任意のオフチップメモリチャネルへ書き込まれることを可能にする。
【００６２】
V．例示的なソフトウエア実装
ＧＰＵ１１０のハードウエア実装に加えて、そのようなＧＰＵはまた、例えばソフトウエア（例えばコンピュータ可読プログラムコード）を記憶するように構成されるコンピュータ可読媒体内に配置されるソフトウエアにおいて具現化されてもよい。プログラムコードは、（i）ここに開示されるシステムの機能及び技術（例えばＧＰＵ１１０内でグラフィクス処理タスク及び一般計算タスクを実行すること）、（ii）ここに開示されるシステムの製造及び技術（例えばＧＰＵ１１０の製造）又は（iii）ここに開示されるシステムの機能及び製造並びに技術の組み合わせ、の実施形態を含めて本発明の実施形態の実施可能性を生じさせる。
【００６３】
例えばこのことは、一般的なプログラミング言語（例えばＣ又はＣ＋＋）、ベリログ(Verilog)ＨＤＬ、ＶＨＤＬ、アルテラ(Altera)ＨＤＬ（ＡＨＤＬ）等を含むハードウエア記述言語(hardware description languages)（ＨＤＬ）、あるいは他の利用可能なプログラミング及び／又は回路図等（schematic）キャプチャツール(capture tools)（例えば回路キャプチャツール）の使用を通して達成され得る。プログラムコードは、半導体、磁気ディスク、光学ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）を含む任意の既知のコンピュータ可読媒体内に配置され得る。従って、コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信ネットワークを介して伝送され得る。上述したシステム及び技術によって達成される機能及び／又は提供される構造は、プログラムコードにおいて具現化されるコア（例えばＧＰＵコア）内で表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
【００６４】
VI．結論
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の１つ以上であるが全てではない例示的な実施形態を記述することができ、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【図１】
2013504129.tif 000004
【図２】
2013504129.tif 000005
【図３】
2013504129.tif 000006
【図４Ａ】
2013504129.tif 000007
【図４Ｂ】
2013504129.tif 000008
【図５】
2013504129.tif 000009
【図６】
2013504129.tif 000010
【国際調査報告】
2013504129.tif 000011
2013504129.tif 000012
2013504129.tif 000013