(57)【特許請求の範囲】
【請求項１】
システムバスを介してアクセス可能なシステムメモリと、
グラフィックス処理ユニット（ＧＰＵ）と、
を備える装置であって、
前記グラフィックス処理ユニット（ＧＰＵ）は、下記を具備する、
ローカルメモリと、
前記システムバスを介して前記システムメモリから第１データを検索し、前記第１データに１つ又はそれより多くの修正タスクを行い、前記ローカルメモリに前記修正された第１データを格納し、前記ローカルメモリから第２データを検索し、前記第２データに１つ又はそれより多くの修正タスクを行い、及び前記システムバスを介して前記システムメモリに前記修正された第２データを格納するように構成されたメモリコピーエンジンと、ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも１つ、データの色変換、データの圧縮、データの解凍、又は１つのシェーダプログラムによって生成されたデータのデータ形式の別のシェーダプログラムによって利用可能なデータ形式への変換を備え、
前記ローカルメモリから前記修正された第１データを検索し、前記第２データを生成するために前記修正された第１データを処理し、そして前記ローカルメモリに前記第２データを格納するように構成されたシェーダプロセッサと、
ここにおいて、前記メモリコピーエンジンは、前記ローカルメモリに前記修正された第１データを格納することと、前記システムメモリに前記修正された第２データを格納することのうちの少なくとも１つを完了したことを前記シェーダプロセッサに指示するようにさらに構成される。
【請求項２】
前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、請求項１の装置。
【請求項３】
前記修正された第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項１の装置。
【請求項４】
前記メモリコピーエンジンはハードウェア上で実行するハードウェア又はソフトウェアとして実装され、そしてここにおいて、前記ハードウェアは前記シェーダプロセッサから分離され、かつ前記ＧＰＵのチップ上にある、請求項１の装置。
【請求項５】
前記シェーダプロセッサは、前記システムメモリから前記修正された第１データを検索するように構成されない、及び前記システムメモリに前記第２データを格納するように構成されない、うちの少なくとも一方である、請求項１の装置。
【請求項６】
前記シェーダプロセッサは、前記第２データを生成するために前記第１データを処理するための複数の算術演算に関する複数の命令を実行するように構成される、請求項１の装置。
【請求項７】
前記装置は、メディアプレーヤー、セット−トップボックス、無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも１つを備える、請求項１の装置。
【請求項８】
前記メモリコピーエンジンは、前記ローカルメモリから第４データを検索しているか、前記第４データを処理しているか、または前記ローカルメモリに前記第４データを格納している前記シェーダプロセッサと同時に、前記システムメモリから第３データを検索するか、又は前記システムメモリに前記第３データを格納するように構成される、請求項１の装置。
【請求項９】
グラフィックス処理ユニット（ＧＰＵ）のメモリコピーエンジンを用いて、システムバスを介して前記ＧＰＵの外部のシステムメモリから第１データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第１データに１つ又はそれより多くの修正タスクを行うことと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記修正された第１データを格納することと、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第１データを検索することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記修正された第１データを処理することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第２データに前記１つ又はそれより多くの修正タスクを行うことと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第２データを格納することと、
前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第１データを格納することと、及び前記システムメモリに前記修正された第２データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することと、
ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも１つ、データの色変換、データの圧縮、データの解凍、又は１つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備え、
を備える方法。
【請求項１０】
前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、請求項９の方法。
【請求項１１】
前記修正された第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項９の方法。
【請求項１２】
前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するように構成されない、及び前記システムメモリに前記第２データを格納するように構成されないうちの少なくとも一方である、請求項９の方法。
【請求項１３】
前記第２データを生成するために前記修正された第１データを処理することは、前記第２データを生成するために前記修正された第１データを処理するための複数の算術演算に関する複数の命令を実行することを備える、請求項９の方法。
【請求項１４】
前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索することか、又は前記システムメモリに前記第３データを格納することと、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索することか、前記第４データを処理することか、または前記ローカルメモリに前記第４データを格納することを、さらに備える請求項９の方法。
【請求項１５】
システムバスを介してアクセス可能なシステムメモリと、
前記システムメモリの外部のグラフィックス処理ユニット（ＧＰＵ）と、を備える装置であって、
前記ＧＰＵは下記を具備する、
ローカルメモリと、
前記ＧＰＵのメモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリから第１データを検索するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第１データに１つ又はそれより多くの修正タスクを行うための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリに前記修正された第１データを格納するための手段と、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第１データを検索するための手段と、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記修正された第１データを処理するための手段と、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第２データに前記１つ又はそれより多くの修正タスクを行うための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第２データを格納するための手段と、
前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第１データを格納することと、及び前記システムメモリに前記修正された第２データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示するための手段、
ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも１つ、データの色変換、データの圧縮、データの解凍、又は１つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備える。
【請求項１６】
前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、請求項１５の装置。
【請求項１７】
前記修正された第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項１５の装置。
【請求項１８】
前記シェーダプロセッサは、前記システムメモリから前記修正された第１データを検索するように構成されない、及び前記システムメモリに前記第２データを格納するように構成されない、うちの少なくとも一方である、請求項１５の装置。
【請求項１９】
前記第２データを生成するため前記第１データを処理するための前記手段は、前記第２データを生成するために前記修正された第１データを処理するための算術演算に関する命令を実行するための手段を備える、請求項１５の装置。
【請求項２０】
前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも１つを備える、請求項１５の装置。
【請求項２１】
前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索するか、又は前記システムメモリに前記第３データを格納するための手段と、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索するか、前記第４データを処理するか、または前記ローカルメモリに前記第４データを格納するための手段を、さらに備える、請求項１５の装置。
【請求項２２】
グラフィックス処理ユニット（ＧＰＵ）に下記をさせる複数の命令を備える非一時的コンピュータ可読記憶媒体であって、
前記ＧＰＵのメモリコピーエンジンを用いて、システムバスを介して前記ＧＰＵの外部のシステムメモリから第１データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第１データに１つ又はそれより多くの修正タスクを行うことと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記修正された第１データを格納することと、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第１データを検索することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記修正された第１データを処理することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記第２データに前記１つ又はそれより多くの修正タスクを行うことと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第２データを格納することと、
前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第１データを格納することと、及び前記システムメモリに前記修正された第２データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することと、
ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも１つ、データの色変換、データの圧縮、データの解凍、又は１つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備える。
【請求項２３】
請求項２２の非一時的コンピュータ読み取り可能な記憶媒体であって、メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、記憶媒体。
【請求項２４】
前記修正された第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項２２の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するように構成されない、及び前記システムメモリに前記第２データを格納するように構成されない、うちの少なくとも一方である、請求項２２の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記ＧＰＵに前記第２データを生成するために前記修正された第１データを処理させる前記複数の命令は、前記ＧＰＵに前記第２データを生成するために前記修正された第１データを処理するための算術演算に関する複数の命令を実行させる命令を備える、請求項２２の非一時的コンピュータ可読記憶媒体。
【請求項２７】
下記を行うための命令を、さらに備える、請求項２２の非一時的コンピュータ可読記憶媒体、
前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索するためか、又は前記システムメモリに前記第３データを格納するため、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索するためか、前記第４データを処理するためか、または前記ローカルメモリに第４データを格納するため。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフィックス処理ユニット（ＧＰＵｓ）に関し、そしてより詳細には、ＧＰＵとメモリの間の相互作用に関する。
【背景技術】
【０００２】
グラフィックスコンテンツを生成するデバイスは、一般的にグラフィックス処理ユニット(graphics processing unit)（ＧＰＵ）を含む。ＧＰＵは、グラフィックスデータを処理してディスプレー上のピクセルに関するピクセル値を生成することができる。グラフィックスデータの処理の１部は、それのローカルメモリ又はシステムメモリにアクセスするために、ＧＰＵを必要とすることがある。例えば、グラフィックスデータの少なくとも一部は、システムメモリに格納されることができ、そしてＧＰＵは、システムメモリからグラフィックスデータを検索(retrieve)することができる。
【発明の概要】
【０００３】
[0003]一般的に、本開示はメモリに格納されたグラフィックスデータにアクセスするための技術について説明する。いくつかの例において、この技術はグラフィックス処理ユニット（ＧＰＵ）上の１つまたはそれ以上のプログラムの実行から独立して、データの修正タスクを行うことを含むことができる。例えば、本開示の技術は、ＧＰＵがデータ処理に関連するタスクからメモリ管理とデータ修正に関連するタスクを切り離すことを可能にし、並びにこれらのタスクの独立した実行を可能にする。１つの例として、本開示に記載された技術は、ＧＰＵがメモリからデータを検索するかまたはメモリにデータを格納することを可能にし、並びにこういった機能を実行することに並列して、１つ又はそれより多くのプログラムの命令を実行することを可能にする。別の例として、本開示に記載されたこの技術は、命令の実行から独立して実行された命令が利用するより適切な形式にデータをコンバートすることをＧＰＵに許可することができる。
【０００４】
[0004]１つの例において、本開示は、システムバスを介してアクセス可能なシステムメモリと、グラフィックス処理ユニット（ＧＰＵ）を含む装置について説明する。ＧＰＵは、ローカルメモリと、メモリコピーエンジンと、シェーダ(shader)プロセッサを含む。メモリコピーエンジンは、システムバスを介してシステムメモリから第１データを検索し、かつローカルメモリに第１データを格納し、並びにローカルメモリから第２データを検索し、かつシステムバスを介してシステムメモリに第２データを格納するために動作可能である。シェーダプロセッサは、ローカルメモリから第１データを検索し、第２データを生成するために第１データを処理し、そしてローカルメモリに第２データを格納するために動作可能である。
【０００５】
[0005]別の例において、本開示は、グラフィックス処理ユニット（ＧＰＵ）のメモリコピーエンジンを用いて、システムバスを介してＧＰＵの外部のシステムメモリから第１データを検索することと、ＧＰＵのメモリコピーエンジンを用いて、ＧＰＵのローカルメモリに第１データを格納することを含む方法について説明する。この方法は、ＧＰＵのシェーダプロセッサを用いて、ローカルメモリから第１データを検索することと、ＧＰＵのシェーダプロセッサを用いて、第２データを生成するために第１データを処理することと、ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリに第２データを格納することをさらに含む。この方法はまた、ＧＰＵのメモリコピーエンジンを用いて、ローカルメモリから第２データを検索することと、ＧＰＵのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第２データを格納することを含む。
【０００６】
[0006]別の例において、本開示は、システムバスを介してアクセス可能なシステムメモリと、システムメモリの外部のグラフィックス処理ユニット（ＧＰＵ）を含む装置について説明する。ＧＰＵはローカルメモリを含む。この例において、ＧＰＵは又、ＧＰＵのメモリコピーエンジンを用いて、システムバスを介してＧＰＵの外部のシステムメモリから第１データを検索するための手段と、ＧＰＵのメモリコピーエンジンを用いて、ローカルメモリに第１データを格納するための手段とを含む。ＧＰＵは又、ＧＰＵのシェーダプロセッサを用いて、ローカルメモリから第１データを検索するための手段と、ＧＰＵのシェーダプロセッサを用いて、第２データを生成するために第１データを処理するための手段と、ＧＰＵのシェーダプロセッサを用いて、ローカルメモリに第２データを格納するための手段を含む。ＧＰＵは、ＧＰＵのメモリコピーエンジンを用いて、ローカルメモリから第２データを検索するための手段と、ＧＰＵのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第２データを格納するための手段をさらに含む。
【０００７】
[0007]別の例において、本開示は、非一時的コンピュータ可読記憶媒体について説明する。非一時的コンピュータ可読記憶媒体は、グラフィックス処理ユニット（ＧＰＵ）にＧＰＵのメモリコピーエンジンを用いて、システムバスを介してＧＰＵの外部のシステムメモリから第１データを検索させる命令と、ＧＰＵのメモリコピーエンジンを用いて、ＧＰＵのローカルメモリに第１データを格納させる命令を含む。この命令はさらに、ＧＰＵに、ＧＰＵのシェーダプロセッサを用いて、ローカルメモリから第１データを検索させ、ＧＰＵのシェーダプロセッサを用いて、第２データを生成するために第１データを処理させ、並びにＧＰＵのシェーダプロセッサを用いて、ローカルメモリに第２データを格納させる。この命令は又、ＧＰＵに、ＧＰＵのメモリコピーエンジンを用いて、ローカルメモリから第２データを検索させ、ＧＰＵのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第２データを格納させる。
【０００８】
[0008]１つまたはそれ以上の例の詳細は、下記に添付の図面及び明細書において説明される。その他の特徴、目的、利点は明細書及び図面から、並びに請求項から明らかに理解できるであろう。
【図面の簡単な説明】
【０００９】
【図１】図１は、本開示の１つ又はそれより多くの観点を実施するために動作可能であり得るグラフィックス処理ユニット（ＧＰＵ）の例を示すブロック図である。
【図２】図2は、本開示の１つ又はそれより多くの観点を実施するために、図１のＧＰＵを組み込むことができるコンピューティングデバイス(computing device)の例を示すブロック図である。
【図３】図３は、本開示の１つ又はそれより多くの観点に従って、図１に示されるように、ＧＰＵの動作例を示すフローチャートである。
【詳細な説明】
【００１０】
[0012]一般的に、本開示は、グラフィックス処理ユニット（ＧＰＵ）と、ＧＰＵを収容するデバイスのシステムメモリのようなメモリとの間の相互作用に関する。本開示の技術は一般的に、メディアプレーヤーのようなビデオデバイス、セット―トップボックス(set-top boxes)、モバイル電話のような無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡｓ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール(consoles)、ディスプレーデバイス、テレビ、等に適用可能である。
【００１１】
[0013]グラフィックス処理システムは一般的にＧＰＵとシステムメモリを含む。ＧＰＵは、場合によってＧＰＵ又はＧＰＵの平らな部分の外部のその他のプロセッサと共有され得るシェーダプロセッサとローカルメモリを含む。シェーダプロセッサはシェーダコアと呼ばれことがあり、様々なタイプのグラフィックス関連のジオメトリーシェーダ(geometory shader)、バーテックスシェーダ(vertex shader)、およびフラグメントシェーダ(fragment shader)のようなプログラムを実行するように構成されることができる。いくつかの例において、シェーダプロセッサはグラフィックス処理に関連するプログラムに加えて、複数のプログラムを実行するように構成されることができる。
【００１２】
[0014]例えば、ＧＰＵは並列して複数のタスク(task)を速くかつ能率的に行うように構成されることができる。いくつかのアプリケーションは、汎用処理に関してＧＰＵの能率的な並列処理能力を利用することができる。この意味において、ＧＰＵは、汎用ＧＰＵ（ＧＰＧＰＵ）として機能することができる。ＧＰＵのシェーダプロセッサ上で実行する汎用処理に関するプログラムはコンピュートシェーダ(compute shader)と呼ばれ得る。バーテックスシェーダ、ピクセルシェーダ、およびフラグメントシェーダのようなグラフィックス関連のプログラムと、コンピュートシェーダのような汎用処理用プログラムは、このようなプログラムがＧＰＵのシェーダプロセッサによって実行されることを示すために、一般にシェーダプログラムと呼ばれ得る。言い換えれば、用語「シェーダプログラム」が、グラフィックス関連の機能を実行する唯一のプログラムに限定されると考えられるべきではない。
【００１３】
[0015]本開示に記載された例のうちのいくつかにおいて、ＧＰＵはまたシェーダプロセッサとローカルメモリに加えて、メモリコピーエンジンを含むことができる。メモリコピーエンジンは、ハードウェア、ハードウェア上で実行するソフトウェア、又はそれらの組み合わせとして実施されることができる。メモリコピーエンジンは、システムメモリにデータを格納し、そしてシステムメモリからデータを検索するメモリ関連のタスクを扱うために動作することができる。この仕方において、システムメモリのメモリ管理に関連する命令は、メモリ管理に関連しない命令から分けられることができる。これは、シェーダプロセッサが、システムメモリからのデータの検索、又はシステムメモリへのデータの格納に関する命令を実行するメモリコピーエンジンと並列してシェーダプログラムの命令を実行することを可能にすることができる。命令の並列実行は、メモリコピーエンジンによる命令の実行と一部共通するシェーダプロセッサによる命令の実行だけでなく、シェーダプロセッサとメモリコピーエンジンによる命令の同時実行を指すことができる。
【００１４】
[0016］メモリコピーエンジンによって行われるタスクは様々な機構によって制御されることができる。例えば、コマンドプロセッサはメモリコピーエンジンとシェーダプロセッサのタスクをスケジュールすることができる。一方、シェーダプロセッサはメモリコピーエンジンのタスクをスケジュールすることができる。いくつかの別の例において、中央演算装置（ＣＰＵ）のようなＧＰＵの外部のデバイスは、メモリコピーエンジンとシェーダプロセッサのタスクをスケジュールすることができる。
【００１５】
[0017]いくつかの例において、メモリコピーエンジンはコピー命令を実行することに加えて命令を実行することができる。これらの付加的な命令は修正命令と呼ばれることができる。修正命令は、２つの例として、シェーダプログラムが利用できる、より適切な形式にデータを修正するか、又はデータがアクセスの容易さのために格納される場所を修正することができる。この仕方において、シェーダプロセッサは算術演算を行うためにさらに解放され、そしてその他の演算がメモリコピーエンジンにオフロードされることができる。
【００１６】
[0018]図１は、本開示の１つ又はそれより多くの観点を実施するために動作可能なグラフィックス処理ユニット（ＧＰＵ）の例を示すブロック図である。ＧＰＵ１０の複数の例は、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、又はその他同等の統合された、又はディスクリート論理回路を含むが、しかしそれらに限定されない。図１に示されるように、ＧＰＵ１０は、コマンドプロセッサ１２、固定された―機能グラフィックスユニット１４、シェーダプロセッサ１６、ローカルメモリ１８、メモリコピーエンジン２０、及びメモリインターフェース２２を含むことができる。メモリインターフェース２２は、ハードウェアコンポーネント、ハードウェア上で実行するソフトウェア、ハードウェア上で実行するファームウェア、又はそれらの任意の組み合わせとして実施されることができる。ＧＰＵ１０は、明確さのために、図１に示されない付加的なユニット又はモジュールを含むことができる。
【００１７】
[0019]ＧＰＵ１０は、様々なタイプのグラフィックスパイプラインを実施するために動作することができる。例えば、ＧＰＵ１０は、クロノスグループによって２００８年４月２４日に発売されかつ一般に入手可能なオープンＧＬ(OpenGL)  ＥＳ２．０の仕様書に記載されているものに類似するグラフィックスパイプラインを実施することができる。別の例として、本開示の観点は、グラフィックスパイプラインを定義するマイクロソフトのダイレクトエックス（Direct X）（ＤＸ）１０及び１１のアプリケーションプログラミングインターフェース（ＡＰＩｓ）において実施されることができる。グラフィックスパイプラインは、ＧＰＵ１０上で実行するソフトウェア、ＧＰＵ１０上で実行するファームウェア、ＧＰＵ１０上に形成された固定された―機能グラフィックスユニット１４のようなひとつ又はそれ以上のハードウェアユニット、又はそれらの組み合わせとして実施されることができる。ＧＰＵ１０はその他のタイプのグラフィックスパイプラインも同様に実施することができ、そして本開示の観点はオープンＧＬ  ＥＳ２．０の仕様、又はＤＸ１０及び１１  ＡＰＩｓのグラフィックスパイプラインに限定されると考えられるべきではない。さらに、ＧＰＵ１０によって実施されることができるその他のタイプのグラフィックスアルゴリズムが存在し得る。例えば、ＧＰＵ１０は、オープンＧＬ  ＥＳ２．０と、ＤＸ１０及び１１  ＡＰＩｓの代わりに、又はそれに加えて、レイ―トレーシングを実施することができる。
【００１８】
[0020]グラフィックスパイプラインを実施することに加えて、ＧＰＵ１０は非―グラフィックス関連の機能を実施するために動作することができる。例えば、ＧＰＵ１０は大規模な並列処理の機能性を支援するように構成されることができ、それはディスプレーの比較的多数のピクセルに関するピクセル値を生成するのと並列して複数のタスクの速くてかつ能率的な処理を必要とするグラフィックス関連の機能に適している。いくつかの非―グラフィックス関連のアプリケーションに関して、ＧＰＵ１０のこの速くてかつ能率的な並列処理を開発することは望ましいと考えられることができる。この意味において、ＧＰＵ１０は、グラフィックス及び非―グラフィックスの両方に関連する機能を実行するために動作可能な汎用ＧＰＵ（ＧＰＧＰＵ）と考えられることができる。さらに詳しく記載されるように、これらのグラフィックス及び非―グラフィックス関連の機能は、ＧＰＵ１０上で実行するプログラムによって定義されることができる。
【００１９】
[0021]コマンドプロセッサ１２は、ＧＰＵ１０のコントローラであり得る。例えば、コマンドプロセッサ１２は、シェーダプロセッサ１６とメモリコピーエンジン２０によって実行されるべきタスクをスケジュールすることができる。１つの例として、シェーダプロセッサ１６はシステムメモリ（不図示）に格納されるデータのブロック上で、算術演算のような演算を行うことができる。この例において、コマンドプロセッサ１２は、システムメモリからデータの第１ブロックを検索し、そしてローカルメモリ１８にデータの第１ブロックを格納するようにメモリコピーエンジン２０に命令することができる。コマンドプロセッサ１２はローカルメモリ１８からデータの第１ブロックを検索し、そしてデータの第１ブロック上の機能を実行するようにシェーダプロセッサ１６に命令することができる。いくつかの例において、シェーダプロセッサ１６がデータの第１ブロックに関する演算を行っている間、コマンドプロセッサ１２は、データの第１ブロックに関する演算を行うシェーダプロセッサ１６に並列して、システムメモリからデータの第２ブロックを検索するようにメモリコピーエンジン２０に命令することができる。
【００２０】
[0022]例えば、コマンドプロセッサ１２は、メモリコピーエンジン２０とシェーダプロセッサ１６によって行われるタスクをパイプライン(pipelining)していると考えられることができる。例えば、コマンドプロセッサ１２は、メモリコピーエンジン２０が現在のコピー命令を実行するのを完了する前に、次のコピー命令（例えば、システムメモリからデータを検索か、又はシステムメモリにデータを格納する）を実行するようにメモリコピーエンジン２０に命令することができる。この例において、メモリコピーエンジン２０が現在のコピー命令を完了した後、メモリコピーエンジン２０は次のコピー命令をすぐに実行するために準備をする。
【００２１】
[0023]いくつかの例において、メモリコピーエンジン２０は、メモリコピーのタスクの完了次第、シェーダプロセッサ１６に指示を提供することができる。例えば、メモリコピーエンジン２０は、シェーダプロセッサ１６がデータの現在のブロックに関するタスクを行っている間、シェーダプロセッサ１６によって使用されるべきデータの次のブロックを予め格納することができる。この例において、メモリコピーエンジン２０は、データの次のブロックがすでにローカルメモリ１８に格納され、そしてシェーダプロセッサ１６が、処理のためにローカルメモリ１８からデータの次のブロックを検索することができることをシェーダプロセッサ１６に指示することができる。
【００２２】
[0024]この仕方において、メモリコピーエンジン２０はそれの複数の演算とシェーダプロセッサ１６のそれらを同調することができる。例えば、メモリコピーエンジン２０は、データが処理のために入手可能である時に、シェーダプロセッサ１６に指示を与えるので、シェーダプロセッサ１６は、データが検索のために入手可能になるより前にデータを検索及び処理を試みることはできない。これは、シェーダプロセッサ１６がメモリコピーエンジン２０からの指示を待つ間、シェーダプロセッサ１６を潜在的にアイドルのままにすることができる。しかし、このアイドル時間は、シェーダプロセッサ１６がそれの算術演算を実行する間、メモリコピーエンジン２０は、それのコピー命令を実行するので、シェーダプロセッサ１６が全てのメモリ関連のタスクを扱うのにかかるだろう時間量よりも少ないこともある。
【００２３】
[0025]代替えの例において、コマンドプロセッサ１２は、いつメモリコピーエンジン２０がそれのタスクを完了したかを監視し、そしてシェーダプロセッサ１６にメモリコピーエンジン２０がそれのタスクを完了したという指示を与えることができる。言い換えれば、コマンドプロセッサ１２はシェーダプロセッサ１６によって実行される機能とメモリコピーエンジン２０によって実行される機能の間の適切な同期を維持することができる。
【００２４】
[0026]いくつかの代替えの例において、シェーダプロセッサ１６がコマンドプロセッサ１２の機能を実行することができ、そしてコマンドプロセッサ１２はこれらの例において必要でない可能性がある。いくつかの別の代替えの例において、ＧＰＵ１０は中央演算装置（ＣＰＵ）のような外部デバイスからスケジューリング情報を受信することができる。これらの例において、コマンドプロセッサ１２は必要でない可能性がある。しかし、これらの代替えの例のどちらにおいも、ＧＰＵ１０は依然として、その他の機能を実行するためのコマンドプロセッサ１２を含むことができる。同様に、これらの代替えの例のいずれかにおいて、メモリコピーエンジン２０は、いつそれがシェーダプロセッサ１６によって実行された命令とメモリコピーエンジン２０によって実行された命令を同期するためのそれのタスクを完了するかを、シェーダプロセッサ１６に指示を与えることができる。
【００２５】
[0027]固定された―機能グラフィックスユニット１４は、特定のタスクを実行するためにハードウェアに組み込まれることができるハードウェアユニットであり得る。例えば、固定された―機能グラフィックスユニット１２は、固定された―機能グラフィックスユニット１４は付加的なユニットを含むことができるが、ひとつ又はそれ以上のプリミティブ(primitive)アッセンブリユニットとラスタライゼーションションユニット(rasterization unit)を含むことができる。固定された―機能グラフィックスユニット１４のプリミティブアッセンブリユニットは、シェーダプロセッサ１６から取得されたバーテックス座標(vertex coordinates)に基づいて、三角形(triangles)又はその他のタイプの多角形(polygons)のようなプリミティブをアッセンブルすることができる。固定された―機能グラフィックスユニット１４のラスタライゼーションユニットは、アッセンブルされた多角形に関する一次方程式を決定し、そしてどのピクセルが決定された一次方程式に基づいてアッセンブルされた多角形の範囲内にあるかを判断することができる。固定された―機能グラフィックスユニット１４のこういった機能性は動作上の柔軟性を必要としないため、特定の機能を実行するためにハードワイヤード(hardwired)されることができる。
【００２６】
[0028]固定された―機能グラフィックスユニット１４が動作上の柔軟性を提供することができないのに対して、シェーダプロセッサ１６は動作上の幅広い柔軟性を提供することができる。例えば、シェーダプロセッサ１６は、同様にシェーダコアと呼ばれることができ、こういったグラフィックス及び非―グラフィックス関連のプログラム両方のようなプログラムを実行するために動作可能である。シェーダプロセッサ１６によって実行されるプログラムはシェーダプロセッサ１６によって実行される機能を定義する。
【００２７】
[0029]例えば、シェーダプロセッサ１６は、ジオメトリーシェーダ、バーテックスシェーダ、およびフラグメントシェーダのようなグラフィックス―関連のプログラムを実行するために動作可能である。ジオメトリーシェーダはシングルポリゴンのグラフィックスデータを取得し、そしてそのシングルポリゴンをマルチプルポリゴンに分割することができる。バーテックスシェーダは、ジオメトリーシェーダからマルチプルポリゴンを取得することができ、座標変換及び受信されたポリゴンのバーテックス上の点灯のような機能を実行することができる。フラグメントシェーダはディスプレー上に表示されるピクセルのピクセル値を決定することができる。
【００２８】
[0030]いくつかの例において、シェーダプロセッサ１６はまた、非―グラフィックス関連のプログラムを実行するために動作可能である。例えば、ＧＰＵ１０の大規模な並列処理能力は、複数の並列機能を実行する特定のタイプの非―グラフィックス関連のプログラムの能率的な実行を促進することができる。これらのタイプの非―グラフィックス関連のプログラムはコンピュートシェーダと呼ばれることができる。用語「シェーダプログラム」は一般的にシェーダプロセッサ１６を実行する任意のプログラムを指すことができる。例えば、用語シェーダプログラムはジオメトリーシェーダ、バーテックスシェーダ、フラグメントシェーダ、及びコンピュートシェーダを指すことができる。
【００２９】
[0031]シェーダプロセッサ１６上で実行するシェーダプログラムは、システムメモリに格納されたデータに関する算術演算のような演算を実行する。例えば、シェーダプロセッサ１６は、所望の算術演算を実行するためにプログラム可能な複数の算術論理ユニット（ＡＬＵｓ）を含むことができる。用語「データ」は非―グラフィックス関連のデータ（例えば、コンピュートシェーダによって使われるデータ）と同様に、ピクセル値（例えば、カラー値、不透明値、又はその他こういったピクセルの属性）のようなグラフィックス関連のデータを指すために用いられる。システムメモリはまた、算術演算の結果のようなシェーダプログラムによって生成されたデータを格納することができる。システムメモリはＧＰＵ１０の外部にあり、そしてデータアクセスのためにシステムバス２４を必要とするメモリであり得る。
【００３０】
[0032]本開示の観点に従って、メモリコピーエンジン２０はシステムメモリと相互作用を必要とするメモリ関連のタスクを扱うことができる。メモリコピーエンジン２０は、ハードウェア、ハードウェア上で実行するソフトウェア、又はそれらの組み合わせとして実装されることができる。例えば、非―限定的な例として、メモリコピーエンジン２０は、ソフトウェアとして実装される時、非常に特殊な機能を実行し、かつオープンＧＬ又はオープンＣＬの基準に従って設計されるプログラムであり得る。
【００３１】
[0033]例示の目的のために、メモリコピーエンジン２０は、ハードウェアユニットであるコンテクストにおいて説明される。例えば、メモリコピーエンジン２０は、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ、又はその他等価の集積回路として形成されることができる。いくつかの例において、メモリコピーエンジン２０は、ディスクリート論理回路又はディスクリートアナログ回路として形成されることができる。ハードウェアユニットに関する上記の例は例示の目的のために提供されており、そして限定していると考えられるべきでは無い。
【００３２】
[0034]１つの例として、メモリコピーエンジン２０は、システムメモリからデータを検索するか、又はシステムメモリにデータを格納するための命令のようなコピー命令を実行することができる。例えば、メモリコピーエンジン２０は、シェーダプロセッサ１６上で実行するシェーダプログラムによる使用のために、システムメモリからデータを検索し、そしてローカルメモリ１８に検索されたデータを格納するための命令を実行することができる。メモリコピーエンジン２０はまた、ローカルメモリ１８に格納されたデータを検索し、そしてシステムメモリにその検索されたデータを格納するための命令を実行することができる。
【００３３】
[0035]図１に示されるように、メモリコピーエンジン２０はメモリインターフェース２２に結合されることができる。メモリコピーエンジン２０は、メモリインターフェース２２を介してシステムメモリへデータを格納するか、又はシステムメモリからデータを検索することができる。この意味において、メモリインターフェース２２は、ＧＰＵ１０のコンポーネントとシステムメモリの間の媒介物として機能することができる。例えば、メモリインターフェース２２は、メモリインターフェース２２が、システムバス２４を介してデータを出力し、並びにシステムバス２４を介してデータを取得することを可能にするコンポーネントを含むことができる。
【００３４】
[0036]本開示に記載された例としての技術において、シェーダプロセッサ１６は、システムメモリからのデータの検索又はシステムメモリへのデータの格納に関する命令を実行するメモリコピーエンジン２０と並列して命令を実行することができる。例えば、シェーダプロセッサ１６は、メモリコピーエンジン２０が、システムメモリからのデータの検索、又はシステムメモリへのデータの格納に関する命令を実行している間、命令を実行することができる。シェーダプロセッサ１６とメモリコピーエンジン２０の並列実行は、シェーダプロセッサ１６とメモリコピーエンジン２０による命令の一部共通する実行又は同時に起こる実行を指すことができる。
【００３５】
[0037]並列した、又は別の状態のシェーダプロセッサ１６とメモリコピーエンジン２０によって実行される命令は、同じ命令である必要はないと理解されるべきである。一般に、メモリコピーエンジン２０は、シェーダプロセッサ１６が実行できないメモリアクセスに関連する命令を実行することができる。また、本開示に記載された技術は、メモリコピーエンジン２０とシェーダプロセッサ１６が同時に命令を実行することを可能にするが、本開示の観点はそのように限定されない。例えば、メモリコピーエンジン２０とシェーダプロセッサ１６は全ての例において同時に命令を実行する必要は無い。どちらかと言えば、メモリコピーエンジン２０とシェーダプロセッサ１６は同時に命令を実行する能力があるのである。
【００３６】
[0038]いくつかの例において、メモリコピーエンジン２０は、システムメモリからのデータの検索又はシステムメモリへのデータの格納に関する命令を実行することができるので、シェーダプロセッサ１６は、システムメモリからデータを検索又はシステムメモリへデータを格納しないように構成されることができる。言い換えれば、システムメモリへのアクセスはシェーダプロセッサ１６から完全にオフロードされることができ、かつこういったアクセスは、この例において、メモリコピーエンジン２０によってのみ実行されることができる。この仕方において、シェーダプロセッサ１６は、メモリコピーエンジン２０がデータを検索及び格納する間、シェーダプログラム又はプログラムを自由に実行することができる。これは、データの検索又は格納に関する命令を実行する必要がないことからシェーダプロセッサ１６を解放し、そしてメモリコピーエンジン２０によって実行されるデータ機能の格納及び検索と同時にシェーダプログラム又はプログラムの命令を自由に実行する。代替えの例において、シェーダプロセッサ１６がシステムメモリにアクセスすることは依然として可能である。
【００３７】
[0039]本開示の例において、シェーダプロセッサ１６は依然として、ローカルメモリ１８にシェーダプログラムによって生成されたデータを格納するための命令とローカルメモリ１８からデータを検索するための命令を実行することができる。例えば、メモリコピーエンジン２０はデータの格納及び検索に関連するコピー命令を実行することができ、並びにメモリコピーエンジン２０がこのようなコピー命令を実行している間に、シェーダプロセッサ１６は、同時に(at the same time)（例えば、同時に(simultaneously)）、シェーダプログラムのデータ処理命令のようなデータ処理命令を実行し続けることができる。命令を処理するデータの１つの例は、このような命令は一般的にデータに関する算術演算を行うためのものなので、算術命令であり得る。
【００３８】
[0040]システムメモリへのアクセスに関連する命令をメモリコピーエンジン２０にオフロードすることは、さらにＧＰＵ１０の処理能率を増進することになり得る。例えば、メモリ、例えば、ローカルメモリ１８とシステムメモリの両方へのアクセスに関連する全ての命令を扱うためのシェーダプロセッサ１６に依存する従来の技術。例えば、これらの従来の技術において、シェーダプロセッサ１６はテクスチャフェッチパイプラインを介してメモリインターフェース２２に結合されるかもしない。これら従来の技術に従って、シェーダプロセッサ１６はテクスチャフェッチパイプライン及びメモリインターフェース２２を介してシステムメモリにアクセスするかもしれない。
【００３９】
[0041]しかし、ローカルメモリ１８にアクセスするためのシェーダプログラムの命令は、シェーダプログラムのその他の命令と非同時に実行することができる一方、システムメモリにアクセスするためのシェーダプログラムの命令は、非同時に実行することはできない。むしろ、システムメモリにアクセスするための命令は、シェーダプロセッサ１６上で、シェーダプログラムのその他の命令と同時に実行することができる。システムメモリにアクセスするための命令に関して、従来の技術において、シェーダプロセッサ１６は、シェーダプロセッサ１６が、システムメモリから検索されるべき又はシステムメモリに格納されるべきデータを待つ間、アイドルのままであり、そしてその他の命令を実行することができない可能性がある。
【００４０】
[0042]メモリコピーエンジン２０を用いて、本開示に記載された技術は、シェーダプロセッサ１６が、メモリコピーエンジン２０によるメモリコピー命令の実行、例えば、システムメモリとＧＰＵ１０の間のデータ転送オペレーションに並列して、そしてシェーダプロセッサ１６がもはやメモリコピー命令を実行する必要がなくなるにつれて高まった性能を用いて、データに対してデータ処理命令を実行することを可能にする。予めメモリコピー命令のために使われたシェーダプログラムの命令に関するスロットは、実際の算術演算、例えばデータ処理命令を実行するためのシェーダプロセッサ１６によって実行されるべき命令のために解放されることができる。メモリコピーエンジン２０を用いて、シェーダプロセッサ１６は、データがシステムメモリにコピーされるか、又はシステムメモリから検索される間、アイドルかつその他の命令を実行できない状態である必要はない。その代り、メモリコピーエンジン２０は、シェーダプロセッサ１６がデータ処理命令を実行し続けることを可能にするこれらのタスクを扱う。
【００４１】
[0043]例示されたように、メモリコピーエンジン２０は、シェーダプロセッサ１６がメモリコピーエンジン２０を制御することは可能であるが、シェーダプロセッサ１６から分離、独立した処理ユニットである。例えば、メモリコピーエンジン２０とシェーダプロセッサ１６はＧＰＵ１０の内部に形成されることができるが、一方で、メモリコピーエンジン２０とシェーダプロセッサ１６はお互いの内部に形成されることはできない。言い換えれば、いくつかの例において、メモリコピーエンジン２０によって実行される機能は、シェーダプロセッサ１６が実行する必要のない機能である。例えば、シェーダプロセッサ１６は依然として格納及び検索のためにシステムメモリにアクセスできるが、しかし、このようなタスクを実行するメモリコピーエンジン２０を用いて、シェーダプロセッサ１６はこのようなタスクを実行することから解放されることができる。シェーダプログラムによって実行されるべき算術演算は、シェーダプロセッサ１６内までローカライズされる。システムメモリにアクセスするのに関連する演算はメモリコピーエンジン２０内部までローカライズされる。いくつかの例において、メモリコピーエンジン２０はシステムメモリにアクセスするのに関連する機能のみを実行することができるが、しかし本開示の観点は下記に記載される通りそのように限定されない。
【００４２】
[0044]一般的に、メモリコピーエンジン２０、シェーダプロセッサ１６、及びローカルメモリ１８は相互に分離し、かつＧＰＵ１０のチップ上にある。例えば、ＧＰＵ１０がそれ自体集積回路（例えば、チップ）である場合、メモリコピーエンジン２０、シェーダプロセッサ１６、及びローカルメモリ１８は、ＧＰＵ１０チップの別個のコンポーネントである（例えば、相互に分離して、かつＧＰＵ１０のチップ上にある）。いくつかの別の例において、メモリコピーエンジン２０及びシェーダプロセッサ１６は相互に分離し、かつＧＰＵ１０の一部であり得るが、しかしローカルメモリ１８は別のデバイスと共有されることができる。
【００４３】
[0045]メモリコピーエンジン２０に上述された例としての機能を実行させるための様々な方法が存在し得る。一般的に、メモリコピーエンジン２０に、例としての機能を実行させるための例としての技術は、メモリコピーエンジン２０がローカルメモリ１８にデータを予め格納することを可能にし、その結果、それは、このようなシェーダプログラムがデータを必要とするときに、シェーダプロセッサ１６上で実行するシェーダプログラムによって処理するために使用可能である。例えば、メモリコピーエンジン２０は、シェーダプロセッサ１６がバーテックスデータを利用する前に、ローカルメモリ１８にバーテックスデータを連続して格納することができる。同様に、メモリコピーエンジン２０に例としての機能を実行させるための例としての技術は、シェーダプロセッサ１６が別の命令を実行している間に、メモリコピーエンジン２０がシステムメモリにローカルメモリ１８からのデータを格納するのを可能にすることができる。
【００４４】
[0046]１つの例として、コマンドプロセッサ１２は、シェーダプロセッサ１６によって実行されるデータ処理命令と同時に、メモリコピーエンジン２０によって実行されるメモリコピー命令をスケジュールすることができる。例えば、コマンドプロセッサ１２は、メモリコピーエンジン２０にシステムメモリからソースデータの第１ブロックを検索し、そしてローカルメモリ１８にソースデータの第１ブロックを格納させることができる。データのブロックは、例示の目的だけのための１つの例として、予め決められたデータ量、例えば、１０ピクセルに関する属性値であり得る。ソースデータはシステムメモリから検索されたデータと呼ばれ得る。
【００４５】
[0047]コマンドプロセッサ１２は次に、シェーダプロセッサ１６にローカルメモリ１８からソースデータの第１ブロックを検索させ、並びに結果データの第１ブロックを生成するためにソースデータの第１ブロックを処理させることができる。結果データの第１ブロックは、シェーダプロセッサ１６がソースデータのブロックを処理した後、シェーダプロセッサ１６によって生成されたデータのブロックであり得る。
【００４６】
[0048]シェーダプロセッサ１６がソースデータの第１ブロックを処理している間（例えば同時に）、コマンドプロセッサ１２はメモリコピーエンジン２０に、システムメモリからソースデータの第２ブロックを検索し、かつローカルメモリ１８にソースデータの第２ブロックを格納するための命令を実行させることができる。シェーダプロセッサ１６がソースデータの第１ブロックを処理することを完了した後、シェーダプロセッサ１６は次に、ローカルメモリ１８にソースデータの第１ブロック、例えば結果データの第１ブロックの処理の結果を格納し、そしてすぐにローカルメモリ１８からソースデータの第２ブロックを処理することを開始することができる。この仕方において、ローカルメモリ１８が、システムメモリから検索されたデータ、例えばソースデータを格納し、かつシェーダプロセッサ１６によって処理された処理データ、例えば結果データを格納するための十分な格納容量を含む場合、同時に、メモリコピーエンジン２０は、シェーダプロセッサ１６がデータ処理命令を実行するのと同時にコピー命令を実行することができる。この仕方において、コマンドプロセッサ１２は、メモリコピーエンジン２０によって実行されるメモリコピーオペレーションをキュー(queue)することができる。
【００４７】
[0049]別の例として、シェーダプロセッサ１６は、先の例に記載したコマンドプロセッサ１２の例としての機能のいくつか又は全てを実行することができる。これらの例において、コマンドプロセッサ１２は、シェーダプロセッサ１６がコマンドプロセッサ１２のこのような機能を実行することができるので、必要でない可能性がある。しかし、ＧＰＵ１０は依然として、コマンドプロセッサ１２がその他のタスクを行うために必要とされる場合、コマンドプロセッサ１２を含むことができる。
【００４８】
[0050]例えば、シェーダプロセッサ１６は、シェーダプロセッサ１６がソースデータの現在のブロックを処理している間、ソースデータの次のブロックを検索するための命令を実行するようにメモリコピーエンジン２０に指示するコマンドをメモリコピーエンジン２０に発行することができる。次に、ソースデータの現在のブロックの処理の完了後、シェーダプロセッサ１６は、ローカルメモリ１８に結果データ（例えば、ソースデータの現在のブロックの処理の結果）を格納し、そしてメモリコピーエンジン２０がローカルメモリ１８に予め格納した次のブロックに関するソースデータを処理していることができる。シェーダプロセッサ１６はまたローカルメモリ１８から結果データを検索し、並びにシステムメモリにその結果データを格納するようにメモリコピーエンジン２０に指示することができる。
【００４９】
[0051]さらに別の例として、コマンドプロセッサ１２はコマンドシーケンサとして動作可能である。この例において、コマンドプロセッサ１２は中央演算装置（ＣＰＵ）のような別のデバイスからＧＰＵ１０によって実行されるべき命令を取得することができる。コマンドプロセッサ１２は、受信された複数の命令をシェーダプロセッサ１６によって実行されるべき命令とメモリコピーエンジン２０によって実行されるべき命令に分けることができる。例えば、コマンドプロセッサ１２は、複数の命令をシェーダプロセッサ１６によって実行されるべき算術命令とメモリコピーエンジン２０によって実行されるべきメモリの相互作用演算に分割することができる。コマンドプロセッサ１２は次に、必要に応じて、シェーダプロセッサ１６に算術演算を行うための命令を転送し、かつメモリコピーエンジン２０にメモリの相互作用演算を行うための命令を転送することができる。
【００５０】
[0052]例えば、コマンドプロセッサ１２はシェーダプロセッサ１６に、シェーダプロセッサ１６にローカルメモリ１８からデータのブロックを検索させかつそのデータを処理させるための命令を転送することができる。コマンドプロセッサ１２は、システムメモリからソースデータのブロックを検索するために、メモリコピーエンジン２０に命令を転送することができ、そしてシェーダプロセッサ１６とメモリコピーエンジン２０は、同時にそれらの各命令を実行することができる。この仕方において、シェーダプロセッサ１６が次に処理するソースデータはローカルメモリ１８に予め格納される。同様に、コマンドプロセッサ１２は、ローカルメモリ１８から、シェーダプロセッサ１６によって行われた演算の結果生じるデータを検索するために、メモリコピーエンジン２０に命令を転送し、並びにシステムメモリにこのようなデータを格納することができる。
【００５１】
[0053]さらなる例として、ＣＰＵのような別のデバイスは、シェーダプロセッサ１６とメモリコピーエンジン２０のおのおの一つずつに直接命令を送信することができる。例えば、ＣＰＵはシステムメモリとの相互作用に関連する全ての命令をメモリコピーエンジン２０に転送し、そして算術演算に関連する全ての命令をシェーダプロセッサ１６に転送することができる。
【００５２】
[0054]これらの例において、コマンドプロセッサ１２は、ＣＰＵが、シェーダプロセッサ１６とメモリコピーエンジン２０に直接命令を与えることができるので、必要ない可能性がある。しかし、ＧＰＵ１０は依然として、コマンドプロセッサ１２がその他のタスクを行うために必要とされる場合、コマンドプロセッサ１２を含むことができる。
【００５３】
[0055]前述の例において（例えば、ＧＰＵ１０がコマンドプロセッサ１２を含む場合、又はＧＰＵ１０がコマンドプロセッサ１２を含まない場合）、メモリコピーエンジン２０はシェーダプロセッサ１６によってその次に使用されるデータを予め格納することができる。いくつかの例において、メモリコピーエンジン２０は、シェーダプロセッサ１６に、シェーダプロセッサ１６が使用すべき次のデータがメモリコピーエンジン２０とシェーダプロセッサ１６の命令を同期するために既にローカルメモリ１８に格納されているという指示を提供することができる。シェーダプロセッサ１６は次にローカルメモリ１８から予め格納されたデータを検索し、そのデータを処理し、そしてそのデータの処理の結果である結果データを生成することができる。シェーダプロセッサ１６は次に、ローカルメモリ１８に結果データを格納することができる。いくつかの例において、例えば結果データがもはやシェーダプロセッサ１６によって必要とされない場合、メモリコピーエンジン２０はローカルメモリ１８からその結果データを検索し、そしてシステムメモリにその結果データを格納することができる。結果データが次の処理に必要である例においても、メモリコピーエンジン２０にとってローカルメモリ１８から結果データを検索し、そしてローカルメモリ１８上のメモリスペースを空けるためにシステムメモリに結果データを格納することは可能である。
【００５４】
[0056]本開示に記載された例としての技術はシステムの様々なタイプにおいて有益であり得る。いくつかの例として、本開示に記載された技術はビニング―ベースのレンダリングの最適化、画像処理、境界領域のコピー（例えば、隣接するブロック又はタイルのパーツ(parts)のコピー）、及びキュー―ベースの通信に適用できる。一般的に、本開示に記載された例としての技術はＧＰＵ１０とシステムメモリの間のデータの転送を必要とする任意のシェーダプロセッサの適用に有益であり得る。
【００５５】
[0057]一例として、このような機能性は、本開示の観点がそれに限られると考えられるべきではないが、生成された画像上のフィルタリングオペレーションを実行するシェーダプログラムを実行するために有益であり得る。例えば、フィルタリングオペレーションを実行するシェーダプログラムは、生成された画像上でブロック毎、又はタイル毎にこのようなフィルタリングオペレーションを実行することができる。この例において、メモリコピーエンジン２０は次のブロック又はタイルを予め格納することができ、一方、シェーダプロセッサ１６は現在のブロック又はタイル上のタスクを行うことができる。本開示の観点は、シェーダプロセッサ１６がフィルタリングオペレーションを行うシェーダプログラムを実行する状況に加えて、複数の状況に有益であり得る。データを予め格納するためのメモリコピーエンジン２０の能力は多種多様な異なるタイプのシェーダプログラムにわたって有益であり得る。
【００５６】
[0058]別の例として、フィルタリングオペレーションを実行する際、メモリコピーエンジン２０の機能性は、フィルタによって要求されるように、ソース画像の次のブロック又はタイル、それの隣接するブロック又はタイルの部分に加えて、ロードすることを考慮に入れることができる。いくつかの例において、シェーダプログラムがローカルメモリ１８に現在のブロック又はタイルの外側のデータを格納する必要がある場合、動作が重複又はより一層の複雑さをもたらすことになる。メモリコピーエンジン２０は、この方法において制限されることは無い。例えば、メモリコピーエンジン２０は、重複や複雑さが増すことなくデータのより大きい部分を検索することができる。
【００５７】
[0059]さらに、いくつかの例において、これらのシェーダプログラムは、長方形のフットプリント（例えば、長方形領域を形成するローカルメモリの格納場所に格納されるべきデータ）を用いてデータをロードするよう要求されることがある。メモリコピーエンジン２０はこのような制限のあるデータをロードすることを求められない。いくつかの例において、メモリコピーエンジン２０は、非―長方形のフットプリントを用いてデータをロードできるように構成されることができる。この仕方において、メモリコピーエンジン２０は重複及び複雑さを減らすことができる。
【００５８】
[0060]前述の例はシステムメモリにアクセスすることに関連したタスクを行うメモリコピーエンジン２０を用いて説明されるが、本開示の観点はそれに限定されない。いくつかの例において、メモリコピーエンジン２０はシステムメモリにアクセスするのに関連したタスクを行う代わりに、あるいはそのタスクを行うのに加えて、修正タスクを実行することができる。修正タスクはシステムに格納されたデータを修正すること、又はシステムメモリに格納されるべきデータをより使用に適した形式に修正することを指すことができる。修正タスクは同様にデータが格納される場所を修正することを指すことができる。
【００５９】
[0061]メモリコピーエンジン２０は、データが格納される場所を修正する修正タスクの１つの例として、メモリコピーエンジン２０はデータを集めてかつ圧縮することができる。例えば、異なるシェーダプログラム間で共有されるデータはまばらに分布され得る。まばらに分布されたデータは比較的大きい格納部分に渡って格納される少量のデータを指すことができる。これらの例において、メモリコピーエンジン２０はがデータを圧縮するので、データがシステムメモリ又はローカルメモリ１８の比較的大きい部分に渡って格納されることは無い。その代り、まばらに分布されたデータは、メモリのより小さい部分に再度書き込みされることができる。このデータの圧縮によって、メモリコピーエンジン２０は、より速くデータにアクセスすることができる。同様に、シェーダプロセッサ１６はこのようなデータの圧縮に気づかないので、算術演算に関するデータを利用するシェーダプログラムの命令を修正する必要は無い。
【００６０】
[0062]メモリコピーエンジン２０がシステムメモリに格納されたデータ又はシステムメモリに格納されるべきデータを修正するいくつかの例として、メモリコピーエンジン２０は、ローカルメモリ１８への格納又はシステムメモリへの格納のために、データの線形ブロックをデータのタイル状のブロックにコンバートすることができ、またその逆も可能である。メモリコピーエンジン２０はまた、シェーダプロセッサ１６に有益なその他の修正と同様に、マトリックスのｘ、ｙ方向にデータを再編成するか、赤―緑―青（ＲＧＢ）色をルマ及びクロミナンスの構成要素（ＹＵＶ）の色、またその逆へコンバートし、ＲＧＢ又はＹＵＶ形式を別の形式に符号化することができる。例えば、メモリコピーエンジン２０はまた、他のシェーダプログラムによって使用可能な別の形式にローカルメモリ１８に格納されたデータをコンバートする修正命令を実行することができる。メモリコピーエンジン２０はまた、ローカルメモリ１８からデータを検索し、かつそのデータをシステムメモリに格納する際に、圧縮されたデータ構造又は画像形式をパック又はアンパックするのと同様に、システムメモリからデータを検索し、かつそのデータをローカルメモリ１８に格納する際に、圧縮されたデータ構造又は画像形式をパック又はアンパックすることができる。
【００６１】
[0063]例えば、コンピュートシェーダはバーテックスシェーダに関する結果データを生成することができる。しかし、結果データのデータ形式はバーテックスシェーダに関する正しい形式ではあり得ない。この例において、メモリコピーエンジン２０はコンピュートシェーダからバーテックスシェーダに適した形式に結果データの形式を修正することができる。メモリコピーエンジン２０はまた、データが格納される場所を修正する（例えば、ローカルメモリ１８内の１つの場所からローカルメモリ１８内の別の場所にデータをコピーする）。動作に関して、これは、メモリコピーエンジン２０がローカルメモリ１８に対してシェーダプロセッサ１６が有する速いアクセスパターンを用いることによって、シェーダプロセッサ１６が効果的にアクセスできるローカルメモリ１８の複数の位置にデータを置くことができるので有益である。
【００６２】
[0064]さらなる例として、メモリコピーエンジン２０はまた、連結リストからリニア・フォーマット（linear format)への転換、プラナーからパッドされたＹＵＶへ、又はその逆の転換、符号化されたＨＤＲ（高ダイナミックレンジ）又はＲＧＭ形式からＦＰ１６又はＦＰ３２への変換、パディングの追加又は除去、データの調整、データの圧縮又は展開、２Ｄウェーヴレット変換、データ構造解析（リスト及びツリー構造のような）、等といった修正タスクを行うことができる。メモリコピーエンジン２０はまた、データの複数のコピーを提供することができる。例えば、システムメモリにデータを格納する際、メモリコピーエンジン２０は、破損からデータを守るためデータの複数のコピーを格納することができる。これらは、メモリコピーエンジン２０が実行可能な、例示のために提供された修正タスクの様々な例であり、本開示の観点は上記の例に限定されると考えられるべきではない。
【００６３】
[0065]この仕方において、シェーダプロセッサ１６によって実行された修正命令のいくつかは、メモリコピーエンジン２０へオフロードされることができる。これによって、シェーダプロセッサ１６は算術演算のような命令を処理するデータの実行だけが可能になり、そしてメモリコピーエンジン２０は、コピー及び修正タスクのいずれかを実行することができる。
【００６４】
[0066]ローカルメモリ１８は、キャッシュ、レジスタ、又はデータが格納されることができるいずれかの形式として形成されることができる。ＧＰＵ１０のコンポーネントは、システムメモリからデータを検索するか、又はシステムメモリにデータを格納するより速くかつより少ない電力の消費でローカルメモリ１８からデータを検索するか、又はローカルメモリ１８にデータを格納することができる。例えば、ＧＰＵ１０のコンポーネントは、広範囲にわたるスケジュールを必要とすることなく、並びに分離したバスが無くても、ローカルメモリ１８にアクセスすることができる。しかし、システムメモリへのアクセスは時間の浪費になる可能性のあるアクセススケジューリングを必要とする。例えば、ＧＰＵ１０は、システムバスに沿って転送するデータが無い使用可能なタイムスロットの間中システムメモリにアクセスすることができる。システムバス２４を介してのシステムメモリへのアクセスは電力を消費する場合がある。
【００６５】
[0067]さらに、ローカルメモリ１８はＧＰＵ１０の内部にあるように示されているが、本開示の観点はそれに限定されない。いくつかの例において、ＧＰＵ１０は、より大きい集積回路の一部であっても良い。この集積回路はディスプレープロセッサ、ビデオプロセッサなどのような付加的な処理ユニットを含んでも良い。これらの例において、ローカルメモリ１８は、場合によってはＧＰＵ１０の外部にあり、かつ集積回路内の様々な処理ユニットに対してローカルメモリとして機能することができる。この意味において、ローカルメモリ１８は、共有ローカルメモリと考えられることができる。しかし、これらの例においてでさえ、ＧＰＵ１０のコンポーネントは、システムバス２４を介してシステムメモリにアクセスするのに比べて、より早くかつより少ない消費電力を用いてローカルメモリ１８にアクセスすることができる。さらに、これらの例のいずれかにおいて、ＧＰＵ１０は、ローカルメモリ１８がＧＰＵ１０に対してローカルメモリとして機能するので、ローカルメモリ１８を備えているように依然としてみられる。例えば、ローカルメモリ１８がＧＰＵ１０の外部にある場合でさえ、ローカルメモリ１８は、ローカルメモリ１８がＧＰＵ１０のコンポーネントに対してローカルメモリの格納と検索を提供するので、機能的にＧＰＵ１０の一部であると依然として考えられることができる。
【００６６】
[0068]図２は、本開示の１つ又はそれより多くの観点を実施するために動作可能であり得るデバイス２６の例を示すブロック図である。デバイス２６の例は、メディアプレーヤーのようなビデオデバイス、セット―トップボックス、モバイル電話のような無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡｓ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、タブレットコンピュータデバイス等を含むが、それらに限定されない。デバイス２６は、プロセッサ２８、グラフィックス処理ユニット（ＧＰＵ）１０、システムメモリ３０、トランシーバモジュール３２、ユーザインターフェース３４、ディスプレーバッファ３６、及びディスプレー３８を含むことができる。
【００６７】
[0069]デバイス２６のＧＰＵ１０は、図２に示されるように、図１のＧＰＵ１０と同じか、又は実質的に類似していることができる。例えば、ＧＰＵ１０は、図１のメモリコピーエンジン２０と同じか、又は実質的に類似するメモリコピーエンジン２０を含むことができる。例えば、メモリコピーエンジン２０は、いくつかの例において、データの書式設定(data formating)のタスクを実行するのと同様に、システムメモリ３０にアクセスすることを要求するタスクを実行することができる。簡潔さの目的のために、ＧＰＵ１０とメモリコピーエンジン２０の例としての機能は、図２の例において、これ以上論じられない。
【００６８】
[0070]プロセッサ２８は、デバイス２６の中央演算装置（ＣＰＵ）であっても良く、かつ図１において上述したＣＰＵの機能を実行することができる。プロセッサ２８の具体例は、ＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、又は別の同等の統合された、又は個別の論理回路を含むが、しかしそれらに限定されない。プロセッサ２８とＧＰＵ１０は別々のユニットとして示されているが、本開示の観点はそれに限定されない。いくつかの例において、プロセッサ２８とＧＰＵ１０は、共通の集積回路（ＩＣ）内に形成されることができる。プロセッサ２８とＧＰＵ１０はそれぞれ単一のプロセッサコア又は複数のプロセッサコアを含むことができる。
【００６９】
[0071]ＧＰＵ２６は、明確さの目的のために、図2に示されない追加のモジュール又はユニットを含むことができる。例えば、デバイス２６は、デバイス２６がモバイル無線電話、又はデバイス２６がメディアプレーヤーである例における電話による通信を実現するために、スピーカー及びマイクロフォンを含むことができるが、そのいずれも図２に示されない。さらに、デバイス２６に示される様々なモジュール及びユニットは、デバイス２６のすべての例において必要であるわけではない。例えば、ユーザインターフェース３４とディスプレー３８は、デバイス２６が外部のユーザインターフェース又はディスプレーを有するインターフェースに備え付けられるデスクトップコンピュータ又は別のデバイスである例において、デバイス２６の外部にあることができる。
【００７０】
[0072]システムメモリ３０はデバイス２６のための全体的なメモリである可能性はあるが、ＧＰＵ１０のためのローカルメモリ（例えば、ローカルメモリ１８）ではあり得ない。例えば、システムメモリ３０はＧＰＵ１０によって作成されたデータを格納することができ、それは、結果データがＧＰＵ１０のシェーダプロセッサ１６によって行われるタスクから生じる結果であり得るため、結果データと呼ばれることができる。同様に、システムメモリ３０はＧＰＵ１０によって使用されるべきデータを格納することができ、それは、ソースデータがＧＰＵ１０のシェーダプロセッサ１６がタスクを行うために使用するデータであり得るので、ソースデータと呼ばれ得る。システムメモリ３０はまた、ＧＰＵ１０のシェーダプロセッサ１６によって実行されるシェーダプログラムに関する予め―コンパイルされた及び／又はコンパイルされたコードを格納することができる。プロセッサ２８及びＧＰＵ１０のようなデバイス２６の様々なコンポーネントは、バス２４を介してシステムメモリ３０にアクセスすることができる。
【００７１】
[0073]システムメモリ３０の例は、命令又はデータ構造の形式で所望のコードを格納するために使用されることができ、かつコンピュータ、プロセッサ、又はＧＰＵによってアクセスされることができるランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読み取り―専用メモリ（ＥＥＰＲＯＭ）、ＣＤ―ＲＯＭ又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又は任意のその他の媒体を含んでも良いが、しかしそれらに限定されることはない。いくつかの例において、システムメモリ３０は、コンピュータ―読取可能記憶装置のような１つ又はそれより多くのコンピュータ―読取可能記憶媒体を備えることができる。例えば、いくつかの実施例において、システムメモリ３０は、プロセッサ２８及び／又はＧＰＵ１０に本開示におけるプロセッサ２８とＧＰＵ１０に割り当てられた機能を実行させる命令を含むことができる。
【００７２】
[0074]システムメモリ３０は、いくつかの例において、非一時的記憶媒体と考えられることができる。用語「非一時的」は、記憶媒体が搬送波又は伝播された信号に組み入れられないことを示すことができる。しかし、用語「非一時的」は、システムメモリ３０が非―可動であることを意味すると解釈されるべきではない。１つの例として、システムメモリ３０はデバイス２６から取り除かれ、そして別のデバイスに移されることができる。別の例として、システムメモリ３２に実質的に類似する記憶デバイスは、デバイス２６に挿入されることができる。特定の例において、非一時的な記憶媒体は、時間を超えて変化できるデータを格納することができる（例えばＲＡＭに）。
【００７３】
[0075]ユーザインターフェース３４の例は、トラックボール、マウス、キーボード、及びその他の種類の入力デバイスを含むが、しかしそれらに限定されることはない。ユーザインターフェース３４はまた、タッチスクリーンであっても良く、かつディスプレー３８の一部として組み込まれても良い。トランシーバモジュール３２は、デバイス２６と別のデバイス又はネットワークの間の無線又は有線の通信を可能にする回路を含むことができる。トランシーバモジュール３２は変調器、復調器、増幅器、及び、有線又は無線通信のためのその他こういった回路を含むことができる。
【００７４】
[0076]ＧＰＵ１０は、ディスプレー３８に表示されるべき画像に関するピクセル値を出力することができる。いくつかの例において、ＧＰＵ１０は直接ディスプレー３８にピクセル値を出力することができる。いくつかの代替えの例において、ＧＰＵ１０はディスプレーバッファ３６に画像のピクセル値を出力することができる。ディスプレーバッファ３６は全体の画像がレンダーされるまで画像のピクセル値を一時的に格納することができる。ディスプレーバッファ３６は画像フレームバッファと考えられることができる。ディスプレーバッファ３６は次にディスプレー３８上に表示されるべきレンダーされた画像を転送することができる。ディスプレー３８は液晶ディスプレー（ＬＣＤ）、有機発光ダイオードディスプレー（ＯＬＥＤ）、カソードレイチューブ（ＣＲＴ）ディスプレー、プラズマディスプレー、又は別の種類のディスプレーデバイスを備えることができる。
【００７５】
[0077]図３は、本開示の１つ又はそれより多くの観点に従って、ＧＰＵ１０の例としての動作を示すフローチャートである。例示の目的のみのために、図１及び２を参照する。
【００７６】
[0078]ＧＰＵ１０のメモリコピーエンジン２０はシステムバス２４を介してＧＰＵ１０の外部にあるシステムメモリ３０から第１データを検索することができる（４０）。第１データはソースデータであっても良く、それはシステムメモリ３０に格納されるデータを指す。メモリコピーエンジン２０は、ローカルメモリ１８に第１データを格納することができる（４２）。メモリコピーエンジン２０は、ローカルメモリ１８に第１データを格納するためにシステムバス２４にアクセスする必要は無い。いくつかの例において、メモリコピーエンジン２０は第１データを修正し、そしてローカルメモリにその修正された第１データを格納することができる。
【００７７】
[0079]ＧＰＵ１０のシェーダプロセッサ１６は、ローカルメモリ１８から第１データを検索することができ（４４）、かつシステムバス２４にアクセスすること無くそうすることができる。シェーダプロセッサ１６は、第１データを処理して第２データを生成することができる。例えば、シェーダプロセッサ１６は、第１データに関する算術演算を実行して第２データを生成するシェーダプログラムの命令を実行することができる。第２データは、それがシェーダプロセッサ１６の演算の結果として生じるデータであることを示すために結果データとして表されることができる。シェーダプロセッサ１６は、ローカルメモリ１８に第２データを格納することができる（４８）。いくつかの例において、シェーダプロセッサ１６は、本開示の観点はそれに限定的されないが、システムメモリ３０にアクセスすることができず、そしてメモリコピーエンジン２０のみがシステムメモリ３０にアクセスすることができる。また、いくつかの例において、メモリコピーエンジン２０は第２データを修正し、かつろシステムメモリにその修正された第２データを格納することができる。
【００７８】
[0080]メモリコピーエンジン２０は、ローカルメモリ１８から第２データを検索することができる（５０）。メモリコピーエンジン２０は、システムバス２４を介してシステムメモリ３０に第２データを格納することができる（５２）。いくつかの例において、上述したように、メモリコピーエンジンはまた、データを修正するために動作可能であり得る。例えば、メモリコピーエンジン２０は、シェーダプロセッサ１６上で実行するシェーダプログラムによって使用可能なデータにローカルメモリ１８に格納された第１データを修正することができる。別の例として、メモリコピーエンジン２０は、シェーダプロセッサ１６上で実行するシェーダプログラムによって使用可能なデータにローカルメモリ１８に格納された第２データを修正することができる。
【００７９】
[0081]１つ又はそれより多くの例において、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせにおいて実施されることができる。ソフトウェアにおいて実施される場合、機能はコンピュータ―可読媒体上で、１つ又はそれより多くの命令又はコードとして格納されることができる。コンピュータ―可読媒体はコンピュータデータ記憶媒体を含むことができる。データ記憶媒体は、本開示に記載された技術の実施のための命令、コード、及び／又はデータ構造を検索するために１つ又はそれより多くのコンピュータ又は１つ又はそれより多くのプロセッサによってアクセスされることができる任意の入手可能な媒体であり得る。限定ではなく例として、このようなコンピュータ―可読媒体は、命令又はデータ構造の形式で所望のプログラムコードを記憶するために使用可能であり、かつコンピュータによってアクセスされることができるＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又はその他の光ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、あるいは、その他任意の媒体を備えることができる。ディスク（disk）およびディスク（disc）は、ここで使用されるように、ディスク（disks）が通常磁気的にデータを再生し、一方ディスク（discs）がレーザーを用いて光学的にデータを再生する点で、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多目的ディスク（ＤＶＤ）、フロッピー（登録商標）ディスクおよびブルーレイディスクを含む。上記の組み合わせはまた、コンピュータ―可読媒体の範囲内に含まれるべきである。
【００８０】
[0082]コードは、1つ又はそれ以上のデジタル信号プロセッサ（ＤＳＰｓ）のような１つ又はそれより多くのプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣｓ）、フィールドプログラマブル論理アレイ（ＦＰＧＡｓ）、又は、その他同等な集積又はディスクリート論理回路によって実行されることができる。従って、ここで使われるような用語「プロセッサ」は、前述の構造、又はここで記載された技術の実施に好適なその他任意の構造を指すことができる。また、技術は１つ又はそれより多くの回路又は論理エレメントにおいて十分に実施されることができる。
【００８１】
[0083]本開示の技術は、無線ハンドセット、集積回路（ＩＣ）又はＩＣｓのセット（すなわち、チップセット）を含む多種多様なデバイス又は装置において実施されることができる。様々なコンポーネント、モジュール、又はユニットが、開示された技術を実行するために構成されたデバイスの機能的な観点を強調するために本開示に記載されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。どちらかと言えば、上述されたように、様々なユニットはハードウェアユニットにおいて結合され、又は上述されたように１つ又はそれより多くのプロセッサを含み、適切なソフトウェア及び／又はファームウェアと連携して、相互動作するハードウェアユニットの集まりによって提供されることができる。
【００８２】
[0084]様々な具体例が説明されてきた。これら及びその他の例は、次の特許請求の範囲の範囲内にある。
以下に、本件出願当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]システムバスを介してアクセス可能なシステムメモリと、
グラフィックス処理ユニット（ＧＰＵ）と、
を備える装置であって、
前記グラフィックス処理ユニット（ＧＰＵ）は、下記を具備する、
ローカルメモリと、
前記システムバスを介して前記システムメモリから第１データを検索し、かつ前記ローカルメモリに前記第１データを格納し、並びに前記ローカルメモリから第２データを検索し、かつ前記システムバスを介して前記システムメモリに前記第２データを格納するために動作可能なメモリコピーエンジンと、
前記ローカルメモリから前記第１データを検索し、前記第２データを生成するために前記第１データを処理し、そして前記ローカルメモリに前記第２データを格納するために動作可能なシェーダプロセッサ。
[Ｃ２]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、Ｃ１の装置。
[Ｃ３]前記第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、Ｃ１の装置。
[Ｃ４]前記メモリコピーエンジンはハードウェア上で実行するハードウェア又はソフトウェアとして実装され、そしてここにおいて、前記ハードウェアは前記シェーダプロセッサから分離され、かつ前記ＧＰＵのチップ上にある、Ｃ１の装置。
[Ｃ５]前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するために動作できず、並びに前記システムメモリに前記第２データを格納するために動作できないうちの少なくとも一方である、Ｃ１の装置。
[Ｃ６]前記シェーダプロセッサは、前記第２データを生成するために前記第１データを処理するための複数の算術演算に関する複数の命令を実行するために動作可能である、Ｃ１の装置。
[Ｃ７]前記メモリコピーエンジンは、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第１データを修正するために、さらに動作可能である、Ｃ１の装置。
[Ｃ８]前記メモリコピーエンジンは、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第２データを修正するために、さらに動作可能である、Ｃ１の装置。
[Ｃ９]前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも１つを備える、Ｃ１の装置。
[Ｃ１０]前記メモリコピーエンジンは、前記ローカルメモリから第４データを検索しているか、前記第４データを処理しているか、または前記ローカルメモリに前記第４データを格納している前記シェーダプロセッサと同時に、前記システムメモリから第３データを検索するか、又は前記システムメモリに前記第３データを格納するために動作可能である、Ｃ１の装置。
[Ｃ１１]前記メモリコピーエンジンは、前記メモリコピーエンジンが、前記ローカルメモリに前記第１データを格納することと、及び前記システムメモリに前記第２データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示ためにさらに動作可能である、Ｃ１の装置。
[Ｃ１２]前記メモリコピーエンジンは、前記第１データを修正するためにさらに動作可能であり、そしてここにおいて、前記第１データを格納するために動作可能な前記メモリコピーエンジンは前記ローカルメモリに、前記修正された第１データを格納するために動作可能な前記メモリコピーエンジンを備える、Ｃ１の装置。
[Ｃ１３]前記メモリコピーエンジンは、前記第２データを修正するためにさらに動作可能であり、そしてここにおいて、第２データを格納するために動作可能な前記メモリコピーエンジンは前記システムメモリに前記修正された第２データを格納するために動作可能な前記メモリコピーエンジンを備える、Ｃ１の装置。
[Ｃ１４]グラフィックス処理ユニット（ＧＰＵ）のメモリコピーエンジンを用いて、システムバスを介して前記ＧＰＵの外部のシステムメモリから第１データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記第１データを格納することと、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記第１データを検索することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記第１データを処理することと、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索することと、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第２データを格納することと、
を備える方法。
[Ｃ１５]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、Ｃ１４の方法。
[Ｃ１６]前記第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、Ｃ１４の方法。
[Ｃ１７]前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するために動作できず、並びに前記システムメモリに前記第２データを格納するために動作できないうちの少なくとも一方である、Ｃ１４の方法。
[Ｃ１８]前記第２データを生成するために前記第１データを処理することは、前記第２データを生成するために前記第１データを処理するための複数の算術演算に関する複数の命令を実行することを備える、Ｃ１４の方法。
[Ｃ１９]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第１データを修正することを、さらに備える、Ｃ１４の方法。
[Ｃ２０]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第２データを修正することを、さらに備える、Ｃ１４の方法。
[Ｃ２１]前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索することか、又は前記システムメモリに前記第３データを格納することと、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索することか、前記第４データを処理することか、または前記ローカルメモリに前記第４データを格納することを、さらに備えるＣ１４の方法。
[Ｃ２２]前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記第１データを格納することと、及び前記システムメモリに前記第２データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することを、さらに備える、Ｃ１４の装置。
[Ｃ２３]前記メモリコピーエンジンを用いて、前記第１データを修正することをさらに備え、
ここにおいて、前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記第１データを格納することは、前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記修正された第１データを格納することを備える、Ｃ１４の方法。
[Ｃ２４]前記メモリコピーエンジンを用いて、前記第２データを修正することをさらに備え、
ここにおいて、前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第２データを格納することは、前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第２データを格納することを備える、Ｃ１４の方法。
[Ｃ２５]システムバスを介してアクセス可能なシステムメモリと、
前記システムメモリの外部のグラフィックス処理ユニット（ＧＰＵ）と、を備える装置であって、
前記ＧＰＵは下記を具備する、
ローカルメモリと、
前記ＧＰＵのメモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリから第１データを検索するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリに前記第１データを格納するための手段と、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記第１データを検索するための手段と、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記第１データを処理するための手段と、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索するための手段と、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第２データを格納するための手段。
[Ｃ２６]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、Ｃ２５の装置。
[Ｃ２７]前記第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、Ｃ２５の装置。
[Ｃ２８]前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するために動作できず、並びに前記システムメモリに前記第２データを格納するために動作できないうちの少なくとも一方である、Ｃ２５の装置。
[Ｃ２９]前記第２データを生成するため前記第１データを処理するための前記手段は、前記第２データを生成するために前記第１データを処理するための算術演算に関する命令を実行するための手段を備える、Ｃ２５の装置。
[Ｃ３０]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第１データを修正するための手段を、さらに備える、Ｃ２５の装置。
[Ｃ３１]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第２データを修正するための手段を、さらに備える、Ｃ２５の装置。
[Ｃ３２]前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも１つを備える、Ｃ２５の装置。
[Ｃ３３]前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索するか、又は前記システムメモリに前記第３データを格納するための手段と、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索するか、前記第４データを処理するか、または前記ローカルメモリに前記第４データを格納するための手段を、さらに備える、Ｃ２５の方法。
[Ｃ３４]グラフィックス処理ユニット（ＧＰＵ）に下記をさせる複数の命令を備える非一時的コンピュータ可読記憶媒体であって、
前記ＧＰＵのメモリコピーエンジンを用いて、システムバスを介して前記ＧＰＵの外部のシステムメモリから第１データを検索すること、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ＧＰＵのローカルメモリに前記第１データを格納すること、
前記ＧＰＵのシェーダプロセッサを用いて、前記ローカルメモリから前記第１データを検索すること、
前記ＧＰＵの前記シェーダプロセッサを用いて、第２データを生成するために前記第１データを処理すること、
前記ＧＰＵの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第２データを格納すること、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第２データを検索すること、
前記ＧＰＵの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第２データを格納すること。
[Ｃ３５]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記ＧＰＵのチップ上にある、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ３６]前記第１データはソースデータを備え、並びに前記第２データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ３７]前記シェーダプロセッサは、前記システムメモリから前記第１データを検索するために動作できず、並びに前記システムメモリに前記第２データを格納するために動作できないうちの少なくとも一方である、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ３８]前記ＧＰＵに前記第２データを生成するために前記第１データを処理させる前記複数の命令は、前記ＧＰＵに前記第２データを生成するために前記第１データを処理するための算術演算に関する複数の命令を実行させる命令を備える、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ３９]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第１データを修正するための複数の命令をさらに備える、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ４０]前記ＧＰＵの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第２データを修正するための複数の命令をさらに備える、Ｃ３４の非一時的コンピュータ可読記憶媒体。
[Ｃ４１]
下記を行うための命令を、さらに備える、Ｃ３４の非一時的コンピュータ可読記憶媒体、
前記メモリコピーエンジンを用いて、前記システムメモリから第３データを検索するためか、又は前記システムメモリに前記第３データを格納するため、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第４データを検索するためか、前記第４データを処理するためか、または前記ローカルメモリに第４データを格納するため。
【図１】
0005792391.tif 000002
【図２】
0005792391.tif 000003
【図３】
0005792391.tif 000004