JP5792391B2 - グラフィックス処理のためのメモリコピーエンジン - Google Patents

グラフィックス処理のためのメモリコピーエンジン Download PDF

Info

Publication number
JP5792391B2
JP5792391B2 JP2014529730A JP2014529730A JP5792391B2 JP 5792391 B2 JP5792391 B2 JP 5792391B2 JP 2014529730 A JP2014529730 A JP 2014529730A JP 2014529730 A JP2014529730 A JP 2014529730A JP 5792391 B2 JP5792391 B2 JP 5792391B2
Authority
JP
Japan
Prior art keywords
data
memory
gpu
copy engine
modified
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014529730A
Other languages
English (en)
Other versions
JP2014529831A (ja
Inventor
ノードルンド、ペトリ・オラビ
アルボ、ジュッカ—ペッカ
アルボ、ジュッカ―ペッカ
シンプソン、ロバート・ジェイ.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2014529831A publication Critical patent/JP2014529831A/ja
Application granted granted Critical
Publication of JP5792391B2 publication Critical patent/JP5792391B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、グラフィックス処理ユニット(GPUs)に関し、そしてより詳細には、GPUとメモリの間の相互作用に関する。
グラフィックスコンテンツを生成するデバイスは、一般的にグラフィックス処理ユニット(graphics processing unit)(GPU)を含む。GPUは、グラフィックスデータを処理してディスプレー上のピクセルに関するピクセル値を生成することができる。グラフィックスデータの処理の1部は、それのローカルメモリ又はシステムメモリにアクセスするために、GPUを必要とすることがある。例えば、グラフィックスデータの少なくとも一部は、システムメモリに格納されることができ、そしてGPUは、システムメモリからグラフィックスデータを検索(retrieve)することができる。
[0003]一般的に、本開示はメモリに格納されたグラフィックスデータにアクセスするための技術について説明する。いくつかの例において、この技術はグラフィックス処理ユニット(GPU)上の1つまたはそれ以上のプログラムの実行から独立して、データの修正タスクを行うことを含むことができる。例えば、本開示の技術は、GPUがデータ処理に関連するタスクからメモリ管理とデータ修正に関連するタスクを切り離すことを可能にし、並びにこれらのタスクの独立した実行を可能にする。1つの例として、本開示に記載された技術は、GPUがメモリからデータを検索するかまたはメモリにデータを格納することを可能にし、並びにこういった機能を実行することに並列して、1つ又はそれより多くのプログラムの命令を実行することを可能にする。別の例として、本開示に記載されたこの技術は、命令の実行から独立して実行された命令が利用するより適切な形式にデータをコンバートすることをGPUに許可することができる。
[0004]1つの例において、本開示は、システムバスを介してアクセス可能なシステムメモリと、グラフィックス処理ユニット(GPU)を含む装置について説明する。GPUは、ローカルメモリと、メモリコピーエンジンと、シェーダ(shader)プロセッサを含む。メモリコピーエンジンは、システムバスを介してシステムメモリから第1データを検索し、かつローカルメモリに第1データを格納し、並びにローカルメモリから第2データを検索し、かつシステムバスを介してシステムメモリに第2データを格納するために動作可能である。シェーダプロセッサは、ローカルメモリから第1データを検索し、第2データを生成するために第1データを処理し、そしてローカルメモリに第2データを格納するために動作可能である。
[0005]別の例において、本開示は、グラフィックス処理ユニット(GPU)のメモリコピーエンジンを用いて、システムバスを介してGPUの外部のシステムメモリから第1データを検索することと、GPUのメモリコピーエンジンを用いて、GPUのローカルメモリに第1データを格納することを含む方法について説明する。この方法は、GPUのシェーダプロセッサを用いて、ローカルメモリから第1データを検索することと、GPUのシェーダプロセッサを用いて、第2データを生成するために第1データを処理することと、GPUのシェーダプロセッサを用いて、前記ローカルメモリに第2データを格納することをさらに含む。この方法はまた、GPUのメモリコピーエンジンを用いて、ローカルメモリから第2データを検索することと、GPUのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第2データを格納することを含む。
[0006]別の例において、本開示は、システムバスを介してアクセス可能なシステムメモリと、システムメモリの外部のグラフィックス処理ユニット(GPU)を含む装置について説明する。GPUはローカルメモリを含む。この例において、GPUは又、GPUのメモリコピーエンジンを用いて、システムバスを介してGPUの外部のシステムメモリから第1データを検索するための手段と、GPUのメモリコピーエンジンを用いて、ローカルメモリに第1データを格納するための手段とを含む。GPUは又、GPUのシェーダプロセッサを用いて、ローカルメモリから第1データを検索するための手段と、GPUのシェーダプロセッサを用いて、第2データを生成するために第1データを処理するための手段と、GPUのシェーダプロセッサを用いて、ローカルメモリに第2データを格納するための手段を含む。GPUは、GPUのメモリコピーエンジンを用いて、ローカルメモリから第2データを検索するための手段と、GPUのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第2データを格納するための手段をさらに含む。
[0007]別の例において、本開示は、非一時的コンピュータ可読記憶媒体について説明する。非一時的コンピュータ可読記憶媒体は、グラフィックス処理ユニット(GPU)にGPUのメモリコピーエンジンを用いて、システムバスを介してGPUの外部のシステムメモリから第1データを検索させる命令と、GPUのメモリコピーエンジンを用いて、GPUのローカルメモリに第1データを格納させる命令を含む。この命令はさらに、GPUに、GPUのシェーダプロセッサを用いて、ローカルメモリから第1データを検索させ、GPUのシェーダプロセッサを用いて、第2データを生成するために第1データを処理させ、並びにGPUのシェーダプロセッサを用いて、ローカルメモリに第2データを格納させる。この命令は又、GPUに、GPUのメモリコピーエンジンを用いて、ローカルメモリから第2データを検索させ、GPUのメモリコピーエンジンを用いて、システムバスを介してシステムメモリに第2データを格納させる。
[0008]1つまたはそれ以上の例の詳細は、下記に添付の図面及び明細書において説明される。その他の特徴、目的、利点は明細書及び図面から、並びに請求項から明らかに理解できるであろう。
図1は、本開示の1つ又はそれより多くの観点を実施するために動作可能であり得るグラフィックス処理ユニット(GPU)の例を示すブロック図である。 図2は、本開示の1つ又はそれより多くの観点を実施するために、図1のGPUを組み込むことができるコンピューティングデバイス(computing device)の例を示すブロック図である。 図3は、本開示の1つ又はそれより多くの観点に従って、図1に示されるように、GPUの動作例を示すフローチャートである。
詳細な説明
[0012]一般的に、本開示は、グラフィックス処理ユニット(GPU)と、GPUを収容するデバイスのシステムメモリのようなメモリとの間の相互作用に関する。本開示の技術は一般的に、メディアプレーヤーのようなビデオデバイス、セット―トップボックス(set-top boxes)、モバイル電話のような無線ハンドセット、パーソナルデジタルアシスタント(PDAs)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール(consoles)、ディスプレーデバイス、テレビ、等に適用可能である。
[0013]グラフィックス処理システムは一般的にGPUとシステムメモリを含む。GPUは、場合によってGPU又はGPUの平らな部分の外部のその他のプロセッサと共有され得るシェーダプロセッサとローカルメモリを含む。シェーダプロセッサはシェーダコアと呼ばれことがあり、様々なタイプのグラフィックス関連のジオメトリーシェーダ(geometory shader)、バーテックスシェーダ(vertex shader)、およびフラグメントシェーダ(fragment shader)のようなプログラムを実行するように構成されることができる。いくつかの例において、シェーダプロセッサはグラフィックス処理に関連するプログラムに加えて、複数のプログラムを実行するように構成されることができる。
[0014]例えば、GPUは並列して複数のタスク(task)を速くかつ能率的に行うように構成されることができる。いくつかのアプリケーションは、汎用処理に関してGPUの能率的な並列処理能力を利用することができる。この意味において、GPUは、汎用GPU(GPGPU)として機能することができる。GPUのシェーダプロセッサ上で実行する汎用処理に関するプログラムはコンピュートシェーダ(compute shader)と呼ばれ得る。バーテックスシェーダ、ピクセルシェーダ、およびフラグメントシェーダのようなグラフィックス関連のプログラムと、コンピュートシェーダのような汎用処理用プログラムは、このようなプログラムがGPUのシェーダプロセッサによって実行されることを示すために、一般にシェーダプログラムと呼ばれ得る。言い換えれば、用語「シェーダプログラム」が、グラフィックス関連の機能を実行する唯一のプログラムに限定されると考えられるべきではない。
[0015]本開示に記載された例のうちのいくつかにおいて、GPUはまたシェーダプロセッサとローカルメモリに加えて、メモリコピーエンジンを含むことができる。メモリコピーエンジンは、ハードウェア、ハードウェア上で実行するソフトウェア、又はそれらの組み合わせとして実施されることができる。メモリコピーエンジンは、システムメモリにデータを格納し、そしてシステムメモリからデータを検索するメモリ関連のタスクを扱うために動作することができる。この仕方において、システムメモリのメモリ管理に関連する命令は、メモリ管理に関連しない命令から分けられることができる。これは、シェーダプロセッサが、システムメモリからのデータの検索、又はシステムメモリへのデータの格納に関する命令を実行するメモリコピーエンジンと並列してシェーダプログラムの命令を実行することを可能にすることができる。命令の並列実行は、メモリコピーエンジンによる命令の実行と一部共通するシェーダプロセッサによる命令の実行だけでなく、シェーダプロセッサとメモリコピーエンジンによる命令の同時実行を指すことができる。
[0016]メモリコピーエンジンによって行われるタスクは様々な機構によって制御されることができる。例えば、コマンドプロセッサはメモリコピーエンジンとシェーダプロセッサのタスクをスケジュールすることができる。一方、シェーダプロセッサはメモリコピーエンジンのタスクをスケジュールすることができる。いくつかの別の例において、中央演算装置(CPU)のようなGPUの外部のデバイスは、メモリコピーエンジンとシェーダプロセッサのタスクをスケジュールすることができる。
[0017]いくつかの例において、メモリコピーエンジンはコピー命令を実行することに加えて命令を実行することができる。これらの付加的な命令は修正命令と呼ばれることができる。修正命令は、2つの例として、シェーダプログラムが利用できる、より適切な形式にデータを修正するか、又はデータがアクセスの容易さのために格納される場所を修正することができる。この仕方において、シェーダプロセッサは算術演算を行うためにさらに解放され、そしてその他の演算がメモリコピーエンジンにオフロードされることができる。
[0018]図1は、本開示の1つ又はそれより多くの観点を実施するために動作可能なグラフィックス処理ユニット(GPU)の例を示すブロック図である。GPU10の複数の例は、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又はその他同等の統合された、又はディスクリート論理回路を含むが、しかしそれらに限定されない。図1に示されるように、GPU10は、コマンドプロセッサ12、固定された―機能グラフィックスユニット14、シェーダプロセッサ16、ローカルメモリ18、メモリコピーエンジン20、及びメモリインターフェース22を含むことができる。メモリインターフェース22は、ハードウェアコンポーネント、ハードウェア上で実行するソフトウェア、ハードウェア上で実行するファームウェア、又はそれらの任意の組み合わせとして実施されることができる。GPU10は、明確さのために、図1に示されない付加的なユニット又はモジュールを含むことができる。
[0019]GPU10は、様々なタイプのグラフィックスパイプラインを実施するために動作することができる。例えば、GPU10は、クロノスグループによって2008年4月24日に発売されかつ一般に入手可能なオープンGL(OpenGL) ES2.0の仕様書に記載されているものに類似するグラフィックスパイプラインを実施することができる。別の例として、本開示の観点は、グラフィックスパイプラインを定義するマイクロソフトのダイレクトエックス(Direct X)(DX)10及び11のアプリケーションプログラミングインターフェース(APIs)において実施されることができる。グラフィックスパイプラインは、GPU10上で実行するソフトウェア、GPU10上で実行するファームウェア、GPU10上に形成された固定された―機能グラフィックスユニット14のようなひとつ又はそれ以上のハードウェアユニット、又はそれらの組み合わせとして実施されることができる。GPU10はその他のタイプのグラフィックスパイプラインも同様に実施することができ、そして本開示の観点はオープンGL ES2.0の仕様、又はDX10及び11 APIsのグラフィックスパイプラインに限定されると考えられるべきではない。さらに、GPU10によって実施されることができるその他のタイプのグラフィックスアルゴリズムが存在し得る。例えば、GPU10は、オープンGL ES2.0と、DX10及び11 APIsの代わりに、又はそれに加えて、レイ―トレーシングを実施することができる。
[0020]グラフィックスパイプラインを実施することに加えて、GPU10は非―グラフィックス関連の機能を実施するために動作することができる。例えば、GPU10は大規模な並列処理の機能性を支援するように構成されることができ、それはディスプレーの比較的多数のピクセルに関するピクセル値を生成するのと並列して複数のタスクの速くてかつ能率的な処理を必要とするグラフィックス関連の機能に適している。いくつかの非―グラフィックス関連のアプリケーションに関して、GPU10のこの速くてかつ能率的な並列処理を開発することは望ましいと考えられることができる。この意味において、GPU10は、グラフィックス及び非―グラフィックスの両方に関連する機能を実行するために動作可能な汎用GPU(GPGPU)と考えられることができる。さらに詳しく記載されるように、これらのグラフィックス及び非―グラフィックス関連の機能は、GPU10上で実行するプログラムによって定義されることができる。
[0021]コマンドプロセッサ12は、GPU10のコントローラであり得る。例えば、コマンドプロセッサ12は、シェーダプロセッサ16とメモリコピーエンジン20によって実行されるべきタスクをスケジュールすることができる。1つの例として、シェーダプロセッサ16はシステムメモリ(不図示)に格納されるデータのブロック上で、算術演算のような演算を行うことができる。この例において、コマンドプロセッサ12は、システムメモリからデータの第1ブロックを検索し、そしてローカルメモリ18にデータの第1ブロックを格納するようにメモリコピーエンジン20に命令することができる。コマンドプロセッサ12はローカルメモリ18からデータの第1ブロックを検索し、そしてデータの第1ブロック上の機能を実行するようにシェーダプロセッサ16に命令することができる。いくつかの例において、シェーダプロセッサ16がデータの第1ブロックに関する演算を行っている間、コマンドプロセッサ12は、データの第1ブロックに関する演算を行うシェーダプロセッサ16に並列して、システムメモリからデータの第2ブロックを検索するようにメモリコピーエンジン20に命令することができる。
[0022]例えば、コマンドプロセッサ12は、メモリコピーエンジン20とシェーダプロセッサ16によって行われるタスクをパイプライン(pipelining)していると考えられることができる。例えば、コマンドプロセッサ12は、メモリコピーエンジン20が現在のコピー命令を実行するのを完了する前に、次のコピー命令(例えば、システムメモリからデータを検索か、又はシステムメモリにデータを格納する)を実行するようにメモリコピーエンジン20に命令することができる。この例において、メモリコピーエンジン20が現在のコピー命令を完了した後、メモリコピーエンジン20は次のコピー命令をすぐに実行するために準備をする。
[0023]いくつかの例において、メモリコピーエンジン20は、メモリコピーのタスクの完了次第、シェーダプロセッサ16に指示を提供することができる。例えば、メモリコピーエンジン20は、シェーダプロセッサ16がデータの現在のブロックに関するタスクを行っている間、シェーダプロセッサ16によって使用されるべきデータの次のブロックを予め格納することができる。この例において、メモリコピーエンジン20は、データの次のブロックがすでにローカルメモリ18に格納され、そしてシェーダプロセッサ16が、処理のためにローカルメモリ18からデータの次のブロックを検索することができることをシェーダプロセッサ16に指示することができる。
[0024]この仕方において、メモリコピーエンジン20はそれの複数の演算とシェーダプロセッサ16のそれらを同調することができる。例えば、メモリコピーエンジン20は、データが処理のために入手可能である時に、シェーダプロセッサ16に指示を与えるので、シェーダプロセッサ16は、データが検索のために入手可能になるより前にデータを検索及び処理を試みることはできない。これは、シェーダプロセッサ16がメモリコピーエンジン20からの指示を待つ間、シェーダプロセッサ16を潜在的にアイドルのままにすることができる。しかし、このアイドル時間は、シェーダプロセッサ16がそれの算術演算を実行する間、メモリコピーエンジン20は、それのコピー命令を実行するので、シェーダプロセッサ16が全てのメモリ関連のタスクを扱うのにかかるだろう時間量よりも少ないこともある。
[0025]代替えの例において、コマンドプロセッサ12は、いつメモリコピーエンジン20がそれのタスクを完了したかを監視し、そしてシェーダプロセッサ16にメモリコピーエンジン20がそれのタスクを完了したという指示を与えることができる。言い換えれば、コマンドプロセッサ12はシェーダプロセッサ16によって実行される機能とメモリコピーエンジン20によって実行される機能の間の適切な同期を維持することができる。
[0026]いくつかの代替えの例において、シェーダプロセッサ16がコマンドプロセッサ12の機能を実行することができ、そしてコマンドプロセッサ12はこれらの例において必要でない可能性がある。いくつかの別の代替えの例において、GPU10は中央演算装置(CPU)のような外部デバイスからスケジューリング情報を受信することができる。これらの例において、コマンドプロセッサ12は必要でない可能性がある。しかし、これらの代替えの例のどちらにおいも、GPU10は依然として、その他の機能を実行するためのコマンドプロセッサ12を含むことができる。同様に、これらの代替えの例のいずれかにおいて、メモリコピーエンジン20は、いつそれがシェーダプロセッサ16によって実行された命令とメモリコピーエンジン20によって実行された命令を同期するためのそれのタスクを完了するかを、シェーダプロセッサ16に指示を与えることができる。
[0027]固定された―機能グラフィックスユニット14は、特定のタスクを実行するためにハードウェアに組み込まれることができるハードウェアユニットであり得る。例えば、固定された―機能グラフィックスユニット12は、固定された―機能グラフィックスユニット14は付加的なユニットを含むことができるが、ひとつ又はそれ以上のプリミティブ(primitive)アッセンブリユニットとラスタライゼーションションユニット(rasterization unit)を含むことができる。固定された―機能グラフィックスユニット14のプリミティブアッセンブリユニットは、シェーダプロセッサ16から取得されたバーテックス座標(vertex coordinates)に基づいて、三角形(triangles)又はその他のタイプの多角形(polygons)のようなプリミティブをアッセンブルすることができる。固定された―機能グラフィックスユニット14のラスタライゼーションユニットは、アッセンブルされた多角形に関する一次方程式を決定し、そしてどのピクセルが決定された一次方程式に基づいてアッセンブルされた多角形の範囲内にあるかを判断することができる。固定された―機能グラフィックスユニット14のこういった機能性は動作上の柔軟性を必要としないため、特定の機能を実行するためにハードワイヤード(hardwired)されることができる。
[0028]固定された―機能グラフィックスユニット14が動作上の柔軟性を提供することができないのに対して、シェーダプロセッサ16は動作上の幅広い柔軟性を提供することができる。例えば、シェーダプロセッサ16は、同様にシェーダコアと呼ばれることができ、こういったグラフィックス及び非―グラフィックス関連のプログラム両方のようなプログラムを実行するために動作可能である。シェーダプロセッサ16によって実行されるプログラムはシェーダプロセッサ16によって実行される機能を定義する。
[0029]例えば、シェーダプロセッサ16は、ジオメトリーシェーダ、バーテックスシェーダ、およびフラグメントシェーダのようなグラフィックス―関連のプログラムを実行するために動作可能である。ジオメトリーシェーダはシングルポリゴンのグラフィックスデータを取得し、そしてそのシングルポリゴンをマルチプルポリゴンに分割することができる。バーテックスシェーダは、ジオメトリーシェーダからマルチプルポリゴンを取得することができ、座標変換及び受信されたポリゴンのバーテックス上の点灯のような機能を実行することができる。フラグメントシェーダはディスプレー上に表示されるピクセルのピクセル値を決定することができる。
[0030]いくつかの例において、シェーダプロセッサ16はまた、非―グラフィックス関連のプログラムを実行するために動作可能である。例えば、GPU10の大規模な並列処理能力は、複数の並列機能を実行する特定のタイプの非―グラフィックス関連のプログラムの能率的な実行を促進することができる。これらのタイプの非―グラフィックス関連のプログラムはコンピュートシェーダと呼ばれることができる。用語「シェーダプログラム」は一般的にシェーダプロセッサ16を実行する任意のプログラムを指すことができる。例えば、用語シェーダプログラムはジオメトリーシェーダ、バーテックスシェーダ、フラグメントシェーダ、及びコンピュートシェーダを指すことができる。
[0031]シェーダプロセッサ16上で実行するシェーダプログラムは、システムメモリに格納されたデータに関する算術演算のような演算を実行する。例えば、シェーダプロセッサ16は、所望の算術演算を実行するためにプログラム可能な複数の算術論理ユニット(ALUs)を含むことができる。用語「データ」は非―グラフィックス関連のデータ(例えば、コンピュートシェーダによって使われるデータ)と同様に、ピクセル値(例えば、カラー値、不透明値、又はその他こういったピクセルの属性)のようなグラフィックス関連のデータを指すために用いられる。システムメモリはまた、算術演算の結果のようなシェーダプログラムによって生成されたデータを格納することができる。システムメモリはGPU10の外部にあり、そしてデータアクセスのためにシステムバス24を必要とするメモリであり得る。
[0032]本開示の観点に従って、メモリコピーエンジン20はシステムメモリと相互作用を必要とするメモリ関連のタスクを扱うことができる。メモリコピーエンジン20は、ハードウェア、ハードウェア上で実行するソフトウェア、又はそれらの組み合わせとして実装されることができる。例えば、非―限定的な例として、メモリコピーエンジン20は、ソフトウェアとして実装される時、非常に特殊な機能を実行し、かつオープンGL又はオープンCLの基準に従って設計されるプログラムであり得る。
[0033]例示の目的のために、メモリコピーエンジン20は、ハードウェアユニットであるコンテクストにおいて説明される。例えば、メモリコピーエンジン20は、DSP、ASIC、FPGA、又はその他等価の集積回路として形成されることができる。いくつかの例において、メモリコピーエンジン20は、ディスクリート論理回路又はディスクリートアナログ回路として形成されることができる。ハードウェアユニットに関する上記の例は例示の目的のために提供されており、そして限定していると考えられるべきでは無い。
[0034]1つの例として、メモリコピーエンジン20は、システムメモリからデータを検索するか、又はシステムメモリにデータを格納するための命令のようなコピー命令を実行することができる。例えば、メモリコピーエンジン20は、シェーダプロセッサ16上で実行するシェーダプログラムによる使用のために、システムメモリからデータを検索し、そしてローカルメモリ18に検索されたデータを格納するための命令を実行することができる。メモリコピーエンジン20はまた、ローカルメモリ18に格納されたデータを検索し、そしてシステムメモリにその検索されたデータを格納するための命令を実行することができる。
[0035]図1に示されるように、メモリコピーエンジン20はメモリインターフェース22に結合されることができる。メモリコピーエンジン20は、メモリインターフェース22を介してシステムメモリへデータを格納するか、又はシステムメモリからデータを検索することができる。この意味において、メモリインターフェース22は、GPU10のコンポーネントとシステムメモリの間の媒介物として機能することができる。例えば、メモリインターフェース22は、メモリインターフェース22が、システムバス24を介してデータを出力し、並びにシステムバス24を介してデータを取得することを可能にするコンポーネントを含むことができる。
[0036]本開示に記載された例としての技術において、シェーダプロセッサ16は、システムメモリからのデータの検索又はシステムメモリへのデータの格納に関する命令を実行するメモリコピーエンジン20と並列して命令を実行することができる。例えば、シェーダプロセッサ16は、メモリコピーエンジン20が、システムメモリからのデータの検索、又はシステムメモリへのデータの格納に関する命令を実行している間、命令を実行することができる。シェーダプロセッサ16とメモリコピーエンジン20の並列実行は、シェーダプロセッサ16とメモリコピーエンジン20による命令の一部共通する実行又は同時に起こる実行を指すことができる。
[0037]並列した、又は別の状態のシェーダプロセッサ16とメモリコピーエンジン20によって実行される命令は、同じ命令である必要はないと理解されるべきである。一般に、メモリコピーエンジン20は、シェーダプロセッサ16が実行できないメモリアクセスに関連する命令を実行することができる。また、本開示に記載された技術は、メモリコピーエンジン20とシェーダプロセッサ16が同時に命令を実行することを可能にするが、本開示の観点はそのように限定されない。例えば、メモリコピーエンジン20とシェーダプロセッサ16は全ての例において同時に命令を実行する必要は無い。どちらかと言えば、メモリコピーエンジン20とシェーダプロセッサ16は同時に命令を実行する能力があるのである。
[0038]いくつかの例において、メモリコピーエンジン20は、システムメモリからのデータの検索又はシステムメモリへのデータの格納に関する命令を実行することができるので、シェーダプロセッサ16は、システムメモリからデータを検索又はシステムメモリへデータを格納しないように構成されることができる。言い換えれば、システムメモリへのアクセスはシェーダプロセッサ16から完全にオフロードされることができ、かつこういったアクセスは、この例において、メモリコピーエンジン20によってのみ実行されることができる。この仕方において、シェーダプロセッサ16は、メモリコピーエンジン20がデータを検索及び格納する間、シェーダプログラム又はプログラムを自由に実行することができる。これは、データの検索又は格納に関する命令を実行する必要がないことからシェーダプロセッサ16を解放し、そしてメモリコピーエンジン20によって実行されるデータ機能の格納及び検索と同時にシェーダプログラム又はプログラムの命令を自由に実行する。代替えの例において、シェーダプロセッサ16がシステムメモリにアクセスすることは依然として可能である。
[0039]本開示の例において、シェーダプロセッサ16は依然として、ローカルメモリ18にシェーダプログラムによって生成されたデータを格納するための命令とローカルメモリ18からデータを検索するための命令を実行することができる。例えば、メモリコピーエンジン20はデータの格納及び検索に関連するコピー命令を実行することができ、並びにメモリコピーエンジン20がこのようなコピー命令を実行している間に、シェーダプロセッサ16は、同時に(at the same time)(例えば、同時に(simultaneously))、シェーダプログラムのデータ処理命令のようなデータ処理命令を実行し続けることができる。命令を処理するデータの1つの例は、このような命令は一般的にデータに関する算術演算を行うためのものなので、算術命令であり得る。
[0040]システムメモリへのアクセスに関連する命令をメモリコピーエンジン20にオフロードすることは、さらにGPU10の処理能率を増進することになり得る。例えば、メモリ、例えば、ローカルメモリ18とシステムメモリの両方へのアクセスに関連する全ての命令を扱うためのシェーダプロセッサ16に依存する従来の技術。例えば、これらの従来の技術において、シェーダプロセッサ16はテクスチャフェッチパイプラインを介してメモリインターフェース22に結合されるかもしない。これら従来の技術に従って、シェーダプロセッサ16はテクスチャフェッチパイプライン及びメモリインターフェース22を介してシステムメモリにアクセスするかもしれない。
[0041]しかし、ローカルメモリ18にアクセスするためのシェーダプログラムの命令は、シェーダプログラムのその他の命令と非同時に実行することができる一方、システムメモリにアクセスするためのシェーダプログラムの命令は、非同時に実行することはできない。むしろ、システムメモリにアクセスするための命令は、シェーダプロセッサ16上で、シェーダプログラムのその他の命令と同時に実行することができる。システムメモリにアクセスするための命令に関して、従来の技術において、シェーダプロセッサ16は、シェーダプロセッサ16が、システムメモリから検索されるべき又はシステムメモリに格納されるべきデータを待つ間、アイドルのままであり、そしてその他の命令を実行することができない可能性がある。
[0042]メモリコピーエンジン20を用いて、本開示に記載された技術は、シェーダプロセッサ16が、メモリコピーエンジン20によるメモリコピー命令の実行、例えば、システムメモリとGPU10の間のデータ転送オペレーションに並列して、そしてシェーダプロセッサ16がもはやメモリコピー命令を実行する必要がなくなるにつれて高まった性能を用いて、データに対してデータ処理命令を実行することを可能にする。予めメモリコピー命令のために使われたシェーダプログラムの命令に関するスロットは、実際の算術演算、例えばデータ処理命令を実行するためのシェーダプロセッサ16によって実行されるべき命令のために解放されることができる。メモリコピーエンジン20を用いて、シェーダプロセッサ16は、データがシステムメモリにコピーされるか、又はシステムメモリから検索される間、アイドルかつその他の命令を実行できない状態である必要はない。その代り、メモリコピーエンジン20は、シェーダプロセッサ16がデータ処理命令を実行し続けることを可能にするこれらのタスクを扱う。
[0043]例示されたように、メモリコピーエンジン20は、シェーダプロセッサ16がメモリコピーエンジン20を制御することは可能であるが、シェーダプロセッサ16から分離、独立した処理ユニットである。例えば、メモリコピーエンジン20とシェーダプロセッサ16はGPU10の内部に形成されることができるが、一方で、メモリコピーエンジン20とシェーダプロセッサ16はお互いの内部に形成されることはできない。言い換えれば、いくつかの例において、メモリコピーエンジン20によって実行される機能は、シェーダプロセッサ16が実行する必要のない機能である。例えば、シェーダプロセッサ16は依然として格納及び検索のためにシステムメモリにアクセスできるが、しかし、このようなタスクを実行するメモリコピーエンジン20を用いて、シェーダプロセッサ16はこのようなタスクを実行することから解放されることができる。シェーダプログラムによって実行されるべき算術演算は、シェーダプロセッサ16内までローカライズされる。システムメモリにアクセスするのに関連する演算はメモリコピーエンジン20内部までローカライズされる。いくつかの例において、メモリコピーエンジン20はシステムメモリにアクセスするのに関連する機能のみを実行することができるが、しかし本開示の観点は下記に記載される通りそのように限定されない。
[0044]一般的に、メモリコピーエンジン20、シェーダプロセッサ16、及びローカルメモリ18は相互に分離し、かつGPU10のチップ上にある。例えば、GPU10がそれ自体集積回路(例えば、チップ)である場合、メモリコピーエンジン20、シェーダプロセッサ16、及びローカルメモリ18は、GPU10チップの別個のコンポーネントである(例えば、相互に分離して、かつGPU10のチップ上にある)。いくつかの別の例において、メモリコピーエンジン20及びシェーダプロセッサ16は相互に分離し、かつGPU10の一部であり得るが、しかしローカルメモリ18は別のデバイスと共有されることができる。
[0045]メモリコピーエンジン20に上述された例としての機能を実行させるための様々な方法が存在し得る。一般的に、メモリコピーエンジン20に、例としての機能を実行させるための例としての技術は、メモリコピーエンジン20がローカルメモリ18にデータを予め格納することを可能にし、その結果、それは、このようなシェーダプログラムがデータを必要とするときに、シェーダプロセッサ16上で実行するシェーダプログラムによって処理するために使用可能である。例えば、メモリコピーエンジン20は、シェーダプロセッサ16がバーテックスデータを利用する前に、ローカルメモリ18にバーテックスデータを連続して格納することができる。同様に、メモリコピーエンジン20に例としての機能を実行させるための例としての技術は、シェーダプロセッサ16が別の命令を実行している間に、メモリコピーエンジン20がシステムメモリにローカルメモリ18からのデータを格納するのを可能にすることができる。
[0046]1つの例として、コマンドプロセッサ12は、シェーダプロセッサ16によって実行されるデータ処理命令と同時に、メモリコピーエンジン20によって実行されるメモリコピー命令をスケジュールすることができる。例えば、コマンドプロセッサ12は、メモリコピーエンジン20にシステムメモリからソースデータの第1ブロックを検索し、そしてローカルメモリ18にソースデータの第1ブロックを格納させることができる。データのブロックは、例示の目的だけのための1つの例として、予め決められたデータ量、例えば、10ピクセルに関する属性値であり得る。ソースデータはシステムメモリから検索されたデータと呼ばれ得る。
[0047]コマンドプロセッサ12は次に、シェーダプロセッサ16にローカルメモリ18からソースデータの第1ブロックを検索させ、並びに結果データの第1ブロックを生成するためにソースデータの第1ブロックを処理させることができる。結果データの第1ブロックは、シェーダプロセッサ16がソースデータのブロックを処理した後、シェーダプロセッサ16によって生成されたデータのブロックであり得る。
[0048]シェーダプロセッサ16がソースデータの第1ブロックを処理している間(例えば同時に)、コマンドプロセッサ12はメモリコピーエンジン20に、システムメモリからソースデータの第2ブロックを検索し、かつローカルメモリ18にソースデータの第2ブロックを格納するための命令を実行させることができる。シェーダプロセッサ16がソースデータの第1ブロックを処理することを完了した後、シェーダプロセッサ16は次に、ローカルメモリ18にソースデータの第1ブロック、例えば結果データの第1ブロックの処理の結果を格納し、そしてすぐにローカルメモリ18からソースデータの第2ブロックを処理することを開始することができる。この仕方において、ローカルメモリ18が、システムメモリから検索されたデータ、例えばソースデータを格納し、かつシェーダプロセッサ16によって処理された処理データ、例えば結果データを格納するための十分な格納容量を含む場合、同時に、メモリコピーエンジン20は、シェーダプロセッサ16がデータ処理命令を実行するのと同時にコピー命令を実行することができる。この仕方において、コマンドプロセッサ12は、メモリコピーエンジン20によって実行されるメモリコピーオペレーションをキュー(queue)することができる。
[0049]別の例として、シェーダプロセッサ16は、先の例に記載したコマンドプロセッサ12の例としての機能のいくつか又は全てを実行することができる。これらの例において、コマンドプロセッサ12は、シェーダプロセッサ16がコマンドプロセッサ12のこのような機能を実行することができるので、必要でない可能性がある。しかし、GPU10は依然として、コマンドプロセッサ12がその他のタスクを行うために必要とされる場合、コマンドプロセッサ12を含むことができる。
[0050]例えば、シェーダプロセッサ16は、シェーダプロセッサ16がソースデータの現在のブロックを処理している間、ソースデータの次のブロックを検索するための命令を実行するようにメモリコピーエンジン20に指示するコマンドをメモリコピーエンジン20に発行することができる。次に、ソースデータの現在のブロックの処理の完了後、シェーダプロセッサ16は、ローカルメモリ18に結果データ(例えば、ソースデータの現在のブロックの処理の結果)を格納し、そしてメモリコピーエンジン20がローカルメモリ18に予め格納した次のブロックに関するソースデータを処理していることができる。シェーダプロセッサ16はまたローカルメモリ18から結果データを検索し、並びにシステムメモリにその結果データを格納するようにメモリコピーエンジン20に指示することができる。
[0051]さらに別の例として、コマンドプロセッサ12はコマンドシーケンサとして動作可能である。この例において、コマンドプロセッサ12は中央演算装置(CPU)のような別のデバイスからGPU10によって実行されるべき命令を取得することができる。コマンドプロセッサ12は、受信された複数の命令をシェーダプロセッサ16によって実行されるべき命令とメモリコピーエンジン20によって実行されるべき命令に分けることができる。例えば、コマンドプロセッサ12は、複数の命令をシェーダプロセッサ16によって実行されるべき算術命令とメモリコピーエンジン20によって実行されるべきメモリの相互作用演算に分割することができる。コマンドプロセッサ12は次に、必要に応じて、シェーダプロセッサ16に算術演算を行うための命令を転送し、かつメモリコピーエンジン20にメモリの相互作用演算を行うための命令を転送することができる。
[0052]例えば、コマンドプロセッサ12はシェーダプロセッサ16に、シェーダプロセッサ16にローカルメモリ18からデータのブロックを検索させかつそのデータを処理させるための命令を転送することができる。コマンドプロセッサ12は、システムメモリからソースデータのブロックを検索するために、メモリコピーエンジン20に命令を転送することができ、そしてシェーダプロセッサ16とメモリコピーエンジン20は、同時にそれらの各命令を実行することができる。この仕方において、シェーダプロセッサ16が次に処理するソースデータはローカルメモリ18に予め格納される。同様に、コマンドプロセッサ12は、ローカルメモリ18から、シェーダプロセッサ16によって行われた演算の結果生じるデータを検索するために、メモリコピーエンジン20に命令を転送し、並びにシステムメモリにこのようなデータを格納することができる。
[0053]さらなる例として、CPUのような別のデバイスは、シェーダプロセッサ16とメモリコピーエンジン20のおのおの一つずつに直接命令を送信することができる。例えば、CPUはシステムメモリとの相互作用に関連する全ての命令をメモリコピーエンジン20に転送し、そして算術演算に関連する全ての命令をシェーダプロセッサ16に転送することができる。
[0054]これらの例において、コマンドプロセッサ12は、CPUが、シェーダプロセッサ16とメモリコピーエンジン20に直接命令を与えることができるので、必要ない可能性がある。しかし、GPU10は依然として、コマンドプロセッサ12がその他のタスクを行うために必要とされる場合、コマンドプロセッサ12を含むことができる。
[0055]前述の例において(例えば、GPU10がコマンドプロセッサ12を含む場合、又はGPU10がコマンドプロセッサ12を含まない場合)、メモリコピーエンジン20はシェーダプロセッサ16によってその次に使用されるデータを予め格納することができる。いくつかの例において、メモリコピーエンジン20は、シェーダプロセッサ16に、シェーダプロセッサ16が使用すべき次のデータがメモリコピーエンジン20とシェーダプロセッサ16の命令を同期するために既にローカルメモリ18に格納されているという指示を提供することができる。シェーダプロセッサ16は次にローカルメモリ18から予め格納されたデータを検索し、そのデータを処理し、そしてそのデータの処理の結果である結果データを生成することができる。シェーダプロセッサ16は次に、ローカルメモリ18に結果データを格納することができる。いくつかの例において、例えば結果データがもはやシェーダプロセッサ16によって必要とされない場合、メモリコピーエンジン20はローカルメモリ18からその結果データを検索し、そしてシステムメモリにその結果データを格納することができる。結果データが次の処理に必要である例においても、メモリコピーエンジン20にとってローカルメモリ18から結果データを検索し、そしてローカルメモリ18上のメモリスペースを空けるためにシステムメモリに結果データを格納することは可能である。
[0056]本開示に記載された例としての技術はシステムの様々なタイプにおいて有益であり得る。いくつかの例として、本開示に記載された技術はビニング―ベースのレンダリングの最適化、画像処理、境界領域のコピー(例えば、隣接するブロック又はタイルのパーツ(parts)のコピー)、及びキュー―ベースの通信に適用できる。一般的に、本開示に記載された例としての技術はGPU10とシステムメモリの間のデータの転送を必要とする任意のシェーダプロセッサの適用に有益であり得る。
[0057]一例として、このような機能性は、本開示の観点がそれに限られると考えられるべきではないが、生成された画像上のフィルタリングオペレーションを実行するシェーダプログラムを実行するために有益であり得る。例えば、フィルタリングオペレーションを実行するシェーダプログラムは、生成された画像上でブロック毎、又はタイル毎にこのようなフィルタリングオペレーションを実行することができる。この例において、メモリコピーエンジン20は次のブロック又はタイルを予め格納することができ、一方、シェーダプロセッサ16は現在のブロック又はタイル上のタスクを行うことができる。本開示の観点は、シェーダプロセッサ16がフィルタリングオペレーションを行うシェーダプログラムを実行する状況に加えて、複数の状況に有益であり得る。データを予め格納するためのメモリコピーエンジン20の能力は多種多様な異なるタイプのシェーダプログラムにわたって有益であり得る。
[0058]別の例として、フィルタリングオペレーションを実行する際、メモリコピーエンジン20の機能性は、フィルタによって要求されるように、ソース画像の次のブロック又はタイル、それの隣接するブロック又はタイルの部分に加えて、ロードすることを考慮に入れることができる。いくつかの例において、シェーダプログラムがローカルメモリ18に現在のブロック又はタイルの外側のデータを格納する必要がある場合、動作が重複又はより一層の複雑さをもたらすことになる。メモリコピーエンジン20は、この方法において制限されることは無い。例えば、メモリコピーエンジン20は、重複や複雑さが増すことなくデータのより大きい部分を検索することができる。
[0059]さらに、いくつかの例において、これらのシェーダプログラムは、長方形のフットプリント(例えば、長方形領域を形成するローカルメモリの格納場所に格納されるべきデータ)を用いてデータをロードするよう要求されることがある。メモリコピーエンジン20はこのような制限のあるデータをロードすることを求められない。いくつかの例において、メモリコピーエンジン20は、非―長方形のフットプリントを用いてデータをロードできるように構成されることができる。この仕方において、メモリコピーエンジン20は重複及び複雑さを減らすことができる。
[0060]前述の例はシステムメモリにアクセスすることに関連したタスクを行うメモリコピーエンジン20を用いて説明されるが、本開示の観点はそれに限定されない。いくつかの例において、メモリコピーエンジン20はシステムメモリにアクセスするのに関連したタスクを行う代わりに、あるいはそのタスクを行うのに加えて、修正タスクを実行することができる。修正タスクはシステムに格納されたデータを修正すること、又はシステムメモリに格納されるべきデータをより使用に適した形式に修正することを指すことができる。修正タスクは同様にデータが格納される場所を修正することを指すことができる。
[0061]メモリコピーエンジン20は、データが格納される場所を修正する修正タスクの1つの例として、メモリコピーエンジン20はデータを集めてかつ圧縮することができる。例えば、異なるシェーダプログラム間で共有されるデータはまばらに分布され得る。まばらに分布されたデータは比較的大きい格納部分に渡って格納される少量のデータを指すことができる。これらの例において、メモリコピーエンジン20はがデータを圧縮するので、データがシステムメモリ又はローカルメモリ18の比較的大きい部分に渡って格納されることは無い。その代り、まばらに分布されたデータは、メモリのより小さい部分に再度書き込みされることができる。このデータの圧縮によって、メモリコピーエンジン20は、より速くデータにアクセスすることができる。同様に、シェーダプロセッサ16はこのようなデータの圧縮に気づかないので、算術演算に関するデータを利用するシェーダプログラムの命令を修正する必要は無い。
[0062]メモリコピーエンジン20がシステムメモリに格納されたデータ又はシステムメモリに格納されるべきデータを修正するいくつかの例として、メモリコピーエンジン20は、ローカルメモリ18への格納又はシステムメモリへの格納のために、データの線形ブロックをデータのタイル状のブロックにコンバートすることができ、またその逆も可能である。メモリコピーエンジン20はまた、シェーダプロセッサ16に有益なその他の修正と同様に、マトリックスのx、y方向にデータを再編成するか、赤―緑―青(RGB)色をルマ及びクロミナンスの構成要素(YUV)の色、またその逆へコンバートし、RGB又はYUV形式を別の形式に符号化することができる。例えば、メモリコピーエンジン20はまた、他のシェーダプログラムによって使用可能な別の形式にローカルメモリ18に格納されたデータをコンバートする修正命令を実行することができる。メモリコピーエンジン20はまた、ローカルメモリ18からデータを検索し、かつそのデータをシステムメモリに格納する際に、圧縮されたデータ構造又は画像形式をパック又はアンパックするのと同様に、システムメモリからデータを検索し、かつそのデータをローカルメモリ18に格納する際に、圧縮されたデータ構造又は画像形式をパック又はアンパックすることができる。
[0063]例えば、コンピュートシェーダはバーテックスシェーダに関する結果データを生成することができる。しかし、結果データのデータ形式はバーテックスシェーダに関する正しい形式ではあり得ない。この例において、メモリコピーエンジン20はコンピュートシェーダからバーテックスシェーダに適した形式に結果データの形式を修正することができる。メモリコピーエンジン20はまた、データが格納される場所を修正する(例えば、ローカルメモリ18内の1つの場所からローカルメモリ18内の別の場所にデータをコピーする)。動作に関して、これは、メモリコピーエンジン20がローカルメモリ18に対してシェーダプロセッサ16が有する速いアクセスパターンを用いることによって、シェーダプロセッサ16が効果的にアクセスできるローカルメモリ18の複数の位置にデータを置くことができるので有益である。
[0064]さらなる例として、メモリコピーエンジン20はまた、連結リストからリニア・フォーマット(linear format)への転換、プラナーからパッドされたYUVへ、又はその逆の転換、符号化されたHDR(高ダイナミックレンジ)又はRGM形式からFP16又はFP32への変換、パディングの追加又は除去、データの調整、データの圧縮又は展開、2Dウェーヴレット変換、データ構造解析(リスト及びツリー構造のような)、等といった修正タスクを行うことができる。メモリコピーエンジン20はまた、データの複数のコピーを提供することができる。例えば、システムメモリにデータを格納する際、メモリコピーエンジン20は、破損からデータを守るためデータの複数のコピーを格納することができる。これらは、メモリコピーエンジン20が実行可能な、例示のために提供された修正タスクの様々な例であり、本開示の観点は上記の例に限定されると考えられるべきではない。
[0065]この仕方において、シェーダプロセッサ16によって実行された修正命令のいくつかは、メモリコピーエンジン20へオフロードされることができる。これによって、シェーダプロセッサ16は算術演算のような命令を処理するデータの実行だけが可能になり、そしてメモリコピーエンジン20は、コピー及び修正タスクのいずれかを実行することができる。
[0066]ローカルメモリ18は、キャッシュ、レジスタ、又はデータが格納されることができるいずれかの形式として形成されることができる。GPU10のコンポーネントは、システムメモリからデータを検索するか、又はシステムメモリにデータを格納するより速くかつより少ない電力の消費でローカルメモリ18からデータを検索するか、又はローカルメモリ18にデータを格納することができる。例えば、GPU10のコンポーネントは、広範囲にわたるスケジュールを必要とすることなく、並びに分離したバスが無くても、ローカルメモリ18にアクセスすることができる。しかし、システムメモリへのアクセスは時間の浪費になる可能性のあるアクセススケジューリングを必要とする。例えば、GPU10は、システムバスに沿って転送するデータが無い使用可能なタイムスロットの間中システムメモリにアクセスすることができる。システムバス24を介してのシステムメモリへのアクセスは電力を消費する場合がある。
[0067]さらに、ローカルメモリ18はGPU10の内部にあるように示されているが、本開示の観点はそれに限定されない。いくつかの例において、GPU10は、より大きい集積回路の一部であっても良い。この集積回路はディスプレープロセッサ、ビデオプロセッサなどのような付加的な処理ユニットを含んでも良い。これらの例において、ローカルメモリ18は、場合によってはGPU10の外部にあり、かつ集積回路内の様々な処理ユニットに対してローカルメモリとして機能することができる。この意味において、ローカルメモリ18は、共有ローカルメモリと考えられることができる。しかし、これらの例においてでさえ、GPU10のコンポーネントは、システムバス24を介してシステムメモリにアクセスするのに比べて、より早くかつより少ない消費電力を用いてローカルメモリ18にアクセスすることができる。さらに、これらの例のいずれかにおいて、GPU10は、ローカルメモリ18がGPU10に対してローカルメモリとして機能するので、ローカルメモリ18を備えているように依然としてみられる。例えば、ローカルメモリ18がGPU10の外部にある場合でさえ、ローカルメモリ18は、ローカルメモリ18がGPU10のコンポーネントに対してローカルメモリの格納と検索を提供するので、機能的にGPU10の一部であると依然として考えられることができる。
[0068]図2は、本開示の1つ又はそれより多くの観点を実施するために動作可能であり得るデバイス26の例を示すブロック図である。デバイス26の例は、メディアプレーヤーのようなビデオデバイス、セット―トップボックス、モバイル電話のような無線ハンドセット、パーソナルデジタルアシスタント(PDAs)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、タブレットコンピュータデバイス等を含むが、それらに限定されない。デバイス26は、プロセッサ28、グラフィックス処理ユニット(GPU)10、システムメモリ30、トランシーバモジュール32、ユーザインターフェース34、ディスプレーバッファ36、及びディスプレー38を含むことができる。
[0069]デバイス26のGPU10は、図2に示されるように、図1のGPU10と同じか、又は実質的に類似していることができる。例えば、GPU10は、図1のメモリコピーエンジン20と同じか、又は実質的に類似するメモリコピーエンジン20を含むことができる。例えば、メモリコピーエンジン20は、いくつかの例において、データの書式設定(data formating)のタスクを実行するのと同様に、システムメモリ30にアクセスすることを要求するタスクを実行することができる。簡潔さの目的のために、GPU10とメモリコピーエンジン20の例としての機能は、図2の例において、これ以上論じられない。
[0070]プロセッサ28は、デバイス26の中央演算装置(CPU)であっても良く、かつ図1において上述したCPUの機能を実行することができる。プロセッサ28の具体例は、DSP、汎用マイクロプロセッサ、ASIC、FPGA、又は別の同等の統合された、又は個別の論理回路を含むが、しかしそれらに限定されない。プロセッサ28とGPU10は別々のユニットとして示されているが、本開示の観点はそれに限定されない。いくつかの例において、プロセッサ28とGPU10は、共通の集積回路(IC)内に形成されることができる。プロセッサ28とGPU10はそれぞれ単一のプロセッサコア又は複数のプロセッサコアを含むことができる。
[0071]GPU26は、明確さの目的のために、図2に示されない追加のモジュール又はユニットを含むことができる。例えば、デバイス26は、デバイス26がモバイル無線電話、又はデバイス26がメディアプレーヤーである例における電話による通信を実現するために、スピーカー及びマイクロフォンを含むことができるが、そのいずれも図2に示されない。さらに、デバイス26に示される様々なモジュール及びユニットは、デバイス26のすべての例において必要であるわけではない。例えば、ユーザインターフェース34とディスプレー38は、デバイス26が外部のユーザインターフェース又はディスプレーを有するインターフェースに備え付けられるデスクトップコンピュータ又は別のデバイスである例において、デバイス26の外部にあることができる。
[0072]システムメモリ30はデバイス26のための全体的なメモリである可能性はあるが、GPU10のためのローカルメモリ(例えば、ローカルメモリ18)ではあり得ない。例えば、システムメモリ30はGPU10によって作成されたデータを格納することができ、それは、結果データがGPU10のシェーダプロセッサ16によって行われるタスクから生じる結果であり得るため、結果データと呼ばれることができる。同様に、システムメモリ30はGPU10によって使用されるべきデータを格納することができ、それは、ソースデータがGPU10のシェーダプロセッサ16がタスクを行うために使用するデータであり得るので、ソースデータと呼ばれ得る。システムメモリ30はまた、GPU10のシェーダプロセッサ16によって実行されるシェーダプログラムに関する予め―コンパイルされた及び/又はコンパイルされたコードを格納することができる。プロセッサ28及びGPU10のようなデバイス26の様々なコンポーネントは、バス24を介してシステムメモリ30にアクセスすることができる。
[0073]システムメモリ30の例は、命令又はデータ構造の形式で所望のコードを格納するために使用されることができ、かつコンピュータ、プロセッサ、又はGPUによってアクセスされることができるランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラマブル読み取り―専用メモリ(EEPROM)、CD―ROM又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又は任意のその他の媒体を含んでも良いが、しかしそれらに限定されることはない。いくつかの例において、システムメモリ30は、コンピュータ―読取可能記憶装置のような1つ又はそれより多くのコンピュータ―読取可能記憶媒体を備えることができる。例えば、いくつかの実施例において、システムメモリ30は、プロセッサ28及び/又はGPU10に本開示におけるプロセッサ28とGPU10に割り当てられた機能を実行させる命令を含むことができる。
[0074]システムメモリ30は、いくつかの例において、非一時的記憶媒体と考えられることができる。用語「非一時的」は、記憶媒体が搬送波又は伝播された信号に組み入れられないことを示すことができる。しかし、用語「非一時的」は、システムメモリ30が非―可動であることを意味すると解釈されるべきではない。1つの例として、システムメモリ30はデバイス26から取り除かれ、そして別のデバイスに移されることができる。別の例として、システムメモリ32に実質的に類似する記憶デバイスは、デバイス26に挿入されることができる。特定の例において、非一時的な記憶媒体は、時間を超えて変化できるデータを格納することができる(例えばRAMに)。
[0075]ユーザインターフェース34の例は、トラックボール、マウス、キーボード、及びその他の種類の入力デバイスを含むが、しかしそれらに限定されることはない。ユーザインターフェース34はまた、タッチスクリーンであっても良く、かつディスプレー38の一部として組み込まれても良い。トランシーバモジュール32は、デバイス26と別のデバイス又はネットワークの間の無線又は有線の通信を可能にする回路を含むことができる。トランシーバモジュール32は変調器、復調器、増幅器、及び、有線又は無線通信のためのその他こういった回路を含むことができる。
[0076]GPU10は、ディスプレー38に表示されるべき画像に関するピクセル値を出力することができる。いくつかの例において、GPU10は直接ディスプレー38にピクセル値を出力することができる。いくつかの代替えの例において、GPU10はディスプレーバッファ36に画像のピクセル値を出力することができる。ディスプレーバッファ36は全体の画像がレンダーされるまで画像のピクセル値を一時的に格納することができる。ディスプレーバッファ36は画像フレームバッファと考えられることができる。ディスプレーバッファ36は次にディスプレー38上に表示されるべきレンダーされた画像を転送することができる。ディスプレー38は液晶ディスプレー(LCD)、有機発光ダイオードディスプレー(OLED)、カソードレイチューブ(CRT)ディスプレー、プラズマディスプレー、又は別の種類のディスプレーデバイスを備えることができる。
[0077]図3は、本開示の1つ又はそれより多くの観点に従って、GPU10の例としての動作を示すフローチャートである。例示の目的のみのために、図1及び2を参照する。
[0078]GPU10のメモリコピーエンジン20はシステムバス24を介してGPU10の外部にあるシステムメモリ30から第1データを検索することができる(40)。第1データはソースデータであっても良く、それはシステムメモリ30に格納されるデータを指す。メモリコピーエンジン20は、ローカルメモリ18に第1データを格納することができる(42)。メモリコピーエンジン20は、ローカルメモリ18に第1データを格納するためにシステムバス24にアクセスする必要は無い。いくつかの例において、メモリコピーエンジン20は第1データを修正し、そしてローカルメモリにその修正された第1データを格納することができる。
[0079]GPU10のシェーダプロセッサ16は、ローカルメモリ18から第1データを検索することができ(44)、かつシステムバス24にアクセスすること無くそうすることができる。シェーダプロセッサ16は、第1データを処理して第2データを生成することができる。例えば、シェーダプロセッサ16は、第1データに関する算術演算を実行して第2データを生成するシェーダプログラムの命令を実行することができる。第2データは、それがシェーダプロセッサ16の演算の結果として生じるデータであることを示すために結果データとして表されることができる。シェーダプロセッサ16は、ローカルメモリ18に第2データを格納することができる(48)。いくつかの例において、シェーダプロセッサ16は、本開示の観点はそれに限定的されないが、システムメモリ30にアクセスすることができず、そしてメモリコピーエンジン20のみがシステムメモリ30にアクセスすることができる。また、いくつかの例において、メモリコピーエンジン20は第2データを修正し、かつろシステムメモリにその修正された第2データを格納することができる。
[0080]メモリコピーエンジン20は、ローカルメモリ18から第2データを検索することができる(50)。メモリコピーエンジン20は、システムバス24を介してシステムメモリ30に第2データを格納することができる(52)。いくつかの例において、上述したように、メモリコピーエンジンはまた、データを修正するために動作可能であり得る。例えば、メモリコピーエンジン20は、シェーダプロセッサ16上で実行するシェーダプログラムによって使用可能なデータにローカルメモリ18に格納された第1データを修正することができる。別の例として、メモリコピーエンジン20は、シェーダプロセッサ16上で実行するシェーダプログラムによって使用可能なデータにローカルメモリ18に格納された第2データを修正することができる。
[0081]1つ又はそれより多くの例において、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせにおいて実施されることができる。ソフトウェアにおいて実施される場合、機能はコンピュータ―可読媒体上で、1つ又はそれより多くの命令又はコードとして格納されることができる。コンピュータ―可読媒体はコンピュータデータ記憶媒体を含むことができる。データ記憶媒体は、本開示に記載された技術の実施のための命令、コード、及び/又はデータ構造を検索するために1つ又はそれより多くのコンピュータ又は1つ又はそれより多くのプロセッサによってアクセスされることができる任意の入手可能な媒体であり得る。限定ではなく例として、このようなコンピュータ―可読媒体は、命令又はデータ構造の形式で所望のプログラムコードを記憶するために使用可能であり、かつコンピュータによってアクセスされることができるRAM、ROM、EEPROM、CD−ROM又はその他の光ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、あるいは、その他任意の媒体を備えることができる。ディスク(disk)およびディスク(disc)は、ここで使用されるように、ディスク(disks)が通常磁気的にデータを再生し、一方ディスク(discs)がレーザーを用いて光学的にデータを再生する点で、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスクおよびブルーレイディスクを含む。上記の組み合わせはまた、コンピュータ―可読媒体の範囲内に含まれるべきである。
[0082]コードは、1つ又はそれ以上のデジタル信号プロセッサ(DSPs)のような1つ又はそれより多くのプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASICs)、フィールドプログラマブル論理アレイ(FPGAs)、又は、その他同等な集積又はディスクリート論理回路によって実行されることができる。従って、ここで使われるような用語「プロセッサ」は、前述の構造、又はここで記載された技術の実施に好適なその他任意の構造を指すことができる。また、技術は1つ又はそれより多くの回路又は論理エレメントにおいて十分に実施されることができる。
[0083]本開示の技術は、無線ハンドセット、集積回路(IC)又はICsのセット(すなわち、チップセット)を含む多種多様なデバイス又は装置において実施されることができる。様々なコンポーネント、モジュール、又はユニットが、開示された技術を実行するために構成されたデバイスの機能的な観点を強調するために本開示に記載されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。どちらかと言えば、上述されたように、様々なユニットはハードウェアユニットにおいて結合され、又は上述されたように1つ又はそれより多くのプロセッサを含み、適切なソフトウェア及び/又はファームウェアと連携して、相互動作するハードウェアユニットの集まりによって提供されることができる。
[0084]様々な具体例が説明されてきた。これら及びその他の例は、次の特許請求の範囲の範囲内にある。
以下に、本件出願当初の特許請求の範囲に記載された発明を付記する。
[C1]システムバスを介してアクセス可能なシステムメモリと、
グラフィックス処理ユニット(GPU)と、
を備える装置であって、
前記グラフィックス処理ユニット(GPU)は、下記を具備する、
ローカルメモリと、
前記システムバスを介して前記システムメモリから第1データを検索し、かつ前記ローカルメモリに前記第1データを格納し、並びに前記ローカルメモリから第2データを検索し、かつ前記システムバスを介して前記システムメモリに前記第2データを格納するために動作可能なメモリコピーエンジンと、
前記ローカルメモリから前記第1データを検索し、前記第2データを生成するために前記第1データを処理し、そして前記ローカルメモリに前記第2データを格納するために動作可能なシェーダプロセッサ。
[C2]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、C1の装置。
[C3]前記第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、C1の装置。
[C4]前記メモリコピーエンジンはハードウェア上で実行するハードウェア又はソフトウェアとして実装され、そしてここにおいて、前記ハードウェアは前記シェーダプロセッサから分離され、かつ前記GPUのチップ上にある、C1の装置。
[C5]前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するために動作できず、並びに前記システムメモリに前記第2データを格納するために動作できないうちの少なくとも一方である、C1の装置。
[C6]前記シェーダプロセッサは、前記第2データを生成するために前記第1データを処理するための複数の算術演算に関する複数の命令を実行するために動作可能である、C1の装置。
[C7]前記メモリコピーエンジンは、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第1データを修正するために、さらに動作可能である、C1の装置。
[C8]前記メモリコピーエンジンは、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第2データを修正するために、さらに動作可能である、C1の装置。
[C9]前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも1つを備える、C1の装置。
[C10]前記メモリコピーエンジンは、前記ローカルメモリから第4データを検索しているか、前記第4データを処理しているか、または前記ローカルメモリに前記第4データを格納している前記シェーダプロセッサと同時に、前記システムメモリから第3データを検索するか、又は前記システムメモリに前記第3データを格納するために動作可能である、C1の装置。
[C11]前記メモリコピーエンジンは、前記メモリコピーエンジンが、前記ローカルメモリに前記第1データを格納することと、及び前記システムメモリに前記第2データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示ためにさらに動作可能である、C1の装置。
[C12]前記メモリコピーエンジンは、前記第1データを修正するためにさらに動作可能であり、そしてここにおいて、前記第1データを格納するために動作可能な前記メモリコピーエンジンは前記ローカルメモリに、前記修正された第1データを格納するために動作可能な前記メモリコピーエンジンを備える、C1の装置。
[C13]前記メモリコピーエンジンは、前記第2データを修正するためにさらに動作可能であり、そしてここにおいて、第2データを格納するために動作可能な前記メモリコピーエンジンは前記システムメモリに前記修正された第2データを格納するために動作可能な前記メモリコピーエンジンを備える、C1の装置。
[C14]グラフィックス処理ユニット(GPU)のメモリコピーエンジンを用いて、システムバスを介して前記GPUの外部のシステムメモリから第1データを検索することと、
前記GPUの前記メモリコピーエンジンを用いて、前記GPUのローカルメモリに前記第1データを格納することと、
前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記第1データを検索することと、
前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記第1データを処理することと、
前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納することと、
前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索することと、
前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第2データを格納することと、
を備える方法。
[C15]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、C14の方法。
[C16]前記第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、C14の方法。
[C17]前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するために動作できず、並びに前記システムメモリに前記第2データを格納するために動作できないうちの少なくとも一方である、C14の方法。
[C18]前記第2データを生成するために前記第1データを処理することは、前記第2データを生成するために前記第1データを処理するための複数の算術演算に関する複数の命令を実行することを備える、C14の方法。
[C19]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第1データを修正することを、さらに備える、C14の方法。
[C20]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第2データを修正することを、さらに備える、C14の方法。
[C21]前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索することか、又は前記システムメモリに前記第3データを格納することと、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索することか、前記第4データを処理することか、または前記ローカルメモリに前記第4データを格納することを、さらに備えるC14の方法。
[C22]前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記第1データを格納することと、及び前記システムメモリに前記第2データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することを、さらに備える、C14の装置。
[C23]前記メモリコピーエンジンを用いて、前記第1データを修正することをさらに備え、
ここにおいて、前記GPUの前記メモリコピーエンジンを用いて、前記GPUのローカルメモリに前記第1データを格納することは、前記メモリコピーエンジンを用いて、前記GPUのローカルメモリに前記修正された第1データを格納することを備える、C14の方法。
[C24]前記メモリコピーエンジンを用いて、前記第2データを修正することをさらに備え、
ここにおいて、前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第2データを格納することは、前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第2データを格納することを備える、C14の方法。
[C25]システムバスを介してアクセス可能なシステムメモリと、
前記システムメモリの外部のグラフィックス処理ユニット(GPU)と、を備える装置であって、
前記GPUは下記を具備する、
ローカルメモリと、
前記GPUのメモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリから第1データを検索するための手段と、
前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリに前記第1データを格納するための手段と、
前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記第1データを検索するための手段と、
前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記第1データを処理するための手段と、
前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納するための手段と、
前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索するための手段と、
前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第2データを格納するための手段。
[C26]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、C25の装置。
[C27]前記第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、C25の装置。
[C28]前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するために動作できず、並びに前記システムメモリに前記第2データを格納するために動作できないうちの少なくとも一方である、C25の装置。
[C29]前記第2データを生成するため前記第1データを処理するための前記手段は、前記第2データを生成するために前記第1データを処理するための算術演算に関する命令を実行するための手段を備える、C25の装置。
[C30]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第1データを修正するための手段を、さらに備える、C25の装置。
[C31]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第2データを修正するための手段を、さらに備える、C25の装置。
[C32]前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも1つを備える、C25の装置。
[C33]前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索するか、又は前記システムメモリに前記第3データを格納するための手段と、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索するか、前記第4データを処理するか、または前記ローカルメモリに前記第4データを格納するための手段を、さらに備える、C25の方法。
[C34]グラフィックス処理ユニット(GPU)に下記をさせる複数の命令を備える非一時的コンピュータ可読記憶媒体であって、
前記GPUのメモリコピーエンジンを用いて、システムバスを介して前記GPUの外部のシステムメモリから第1データを検索すること、
前記GPUの前記メモリコピーエンジンを用いて、前記GPUのローカルメモリに前記第1データを格納すること、
前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記第1データを検索すること、
前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記第1データを処理すること、
前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納すること、
前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索すること、
前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記第2データを格納すること。
[C35]前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、C34の非一時的コンピュータ可読記憶媒体。
[C36]前記第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、C34の非一時的コンピュータ可読記憶媒体。
[C37]前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するために動作できず、並びに前記システムメモリに前記第2データを格納するために動作できないうちの少なくとも一方である、C34の非一時的コンピュータ可読記憶媒体。
[C38]前記GPUに前記第2データを生成するために前記第1データを処理させる前記複数の命令は、前記GPUに前記第2データを生成するために前記第1データを処理するための算術演算に関する複数の命令を実行させる命令を備える、C34の非一時的コンピュータ可読記憶媒体。
[C39]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第1データを修正するための複数の命令をさらに備える、C34の非一時的コンピュータ可読記憶媒体。
[C40]前記GPUの前記メモリコピーエンジンを用いて、前記シェーダプロセッサ上で実行するシェーダプログラムによって使用可能なデータに、前記ローカルメモリに格納された前記第2データを修正するための複数の命令をさらに備える、C34の非一時的コンピュータ可読記憶媒体。
[C41]
下記を行うための命令を、さらに備える、C34の非一時的コンピュータ可読記憶媒体、
前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索するためか、又は前記システムメモリに前記第3データを格納するため、
同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索するためか、前記第4データを処理するためか、または前記ローカルメモリに第4データを格納するため。

Claims (27)

  1. システムバスを介してアクセス可能なシステムメモリと、
    グラフィックス処理ユニット(GPU)と、
    を備える装置であって、
    前記グラフィックス処理ユニット(GPU)は、下記を具備する、
    ローカルメモリと、
    前記システムバスを介して前記システムメモリから第1データを検索し、前記第1データ1つ又はそれより多くの修正タスクを行い、前記ローカルメモリに前記修正された第1データを格納し、前記ローカルメモリから第2データを検索し、前記第2データ1つ又はそれより多くの修正タスクを行い、及び前記システムバスを介して前記システムメモリに前記修正された第2データを格納するように構成されたメモリコピーエンジンと、ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも1つ、データの色変換、データの圧縮、データの解凍、又は1つのシェーダプログラムによって生成されたデータのデータ形式の別のシェーダプログラムによって利用可能なデータ形式への変換を備え、
    前記ローカルメモリから前記修正された第1データを検索し、前記第2データを生成するために前記修正された第1データを処理し、そして前記ローカルメモリに前記第2データを格納するように構成されたシェーダプロセッサと、
    ここにおいて、前記メモリコピーエンジンは、前記ローカルメモリに前記修正された第1データを格納することと、前記システムメモリに前記修正された第2データを格納することのうちの少なくとも1つを完了したことを前記シェーダプロセッサに指示するようにさらに構成される。
  2. 前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、請求項1の装置。
  3. 前記修正された第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項1の装置。
  4. 前記メモリコピーエンジンはハードウェア上で実行するハードウェア又はソフトウェアとして実装され、そしてここにおいて、前記ハードウェアは前記シェーダプロセッサから分離され、かつ前記GPUのチップ上にある、請求項1の装置。
  5. 前記シェーダプロセッサは、前記システムメモリから前記修正された第1データを検索するように構成されない、及び前記システムメモリに前記第2データを格納するように構成されない、うちの少なくとも一方である、請求項1の装置。
  6. 前記シェーダプロセッサは、前記第2データを生成するために前記第1データを処理するための複数の算術演算に関する複数の命令を実行するように構成される、請求項1の装置。
  7. 前記装置は、メディアプレーヤー、セット−トップボックス、無線ハンドセット、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも1つを備える、請求項1の装置。
  8. 前記メモリコピーエンジンは、前記ローカルメモリから第4データを検索しているか、前記第4データを処理しているか、または前記ローカルメモリに前記第4データを格納している前記シェーダプロセッサと同時に、前記システムメモリから第3データを検索するか、又は前記システムメモリに前記第3データを格納するように構成される、請求項1の装置。
  9. グラフィックス処理ユニット(GPU)のメモリコピーエンジンを用いて、システムバスを介して前記GPUの外部のシステムメモリから第1データを検索することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記第1データ1つ又はそれより多くの修正タスクを行うことと、
    前記GPUの前記メモリコピーエンジンを用いて、前GPUのローカルメモリに前記修正された第1データを格納することと、
    前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第1データを検索することと、
    前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記修正された第1データを処理することと、
    前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記第2データ前記1つ又はそれより多くの修正タスクを行うことと、
    前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第2データを格納することと、
    前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第1データを格納することと、及び前記システムメモリに前記修正された第2データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することと、
    ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも1つ、データの色変換、データの圧縮、データの解凍、又は1つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備え、
    を備える方法。
  10. 前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、請求項9の方法。
  11. 前記修正された第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項9の方法。
  12. 前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するように構成されない、及び前記システムメモリに前記第2データを格納するように構成されないうちの少なくとも一方である、請求項9の方法。
  13. 前記第2データを生成するために前記修正された第1データを処理することは、前記第2データを生成するために前記修正された第1データを処理するための複数の算術演算に関する複数の命令を実行することを備える、請求項9の方法。
  14. 前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索することか、又は前記システムメモリに前記第3データを格納することと、
    同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索することか、前記第4データを処理することか、または前記ローカルメモリに前記第4データを格納することを、さらに備える請求項9の方法。
  15. システムバスを介してアクセス可能なシステムメモリと、
    前記システムメモリの外部のグラフィックス処理ユニット(GPU)と、を備える装置であって、
    前記GPUは下記を具備する、
    ローカルメモリと、
    前記GPUのメモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリから第1データを検索するための手段と、
    前記GPUの前記メモリコピーエンジンを用いて、前記第1データ1つ又はそれより多くの修正タスクを行うための手段と、
    前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリに前記修正された第1データを格納するための手段と、
    前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第1データを検索するための手段と、
    前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記修正された第1データを処理するための手段と、
    前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納するための手段と、
    前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索するための手段と、
    前記GPUの前記メモリコピーエンジンを用いて、前記第2データ前記1つ又はそれより多くの修正タスクを行うための手段と、
    前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第2データを格納するための手段と、
    前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第1データを格納することと、及び前記システムメモリに前記修正された第2データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示するための手段、
    ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも1つ、データの色変換、データの圧縮、データの解凍、又は1つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備える。
  16. 前記メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある、請求項15の装置。
  17. 前記修正された第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項15の装置。
  18. 前記シェーダプロセッサは、前記システムメモリから前記修正された第1データを検索するように構成されない、及び前記システムメモリに前記第2データを格納するように構成されない、うちの少なくとも一方である、請求項15の装置。
  19. 前記第2データを生成するため前記第1データを処理するための前記手段は、前記第2データを生成するために前記修正された第1データを処理するための算術演算に関する命令を実行するための手段を備える、請求項15の装置。
  20. 前記装置は、メディアプレーヤー、セット―トップボックス、無線ハンドセット、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム用コンソール、ビデオ会議ユニット、及びタブレットコンピュータデバイスのうちの少なくとも1つを備える、請求項15の装置。
  21. 前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索するか、又は前記システムメモリに前記第3データを格納するための手段と、
    同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索するか、前記第4データを処理するか、または前記ローカルメモリに前記第4データを格納するための手段を、さらに備える、請求項15の装置
  22. グラフィックス処理ユニット(GPU)に下記をさせる複数の命令を備える非一時的コンピュータ可読記憶媒体であって、
    前記GPUのメモリコピーエンジンを用いて、システムバスを介して前記GPUの外部のシステムメモリから第1データを検索することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記第1データ1つ又はそれより多くの修正タスクを行うことと、
    前記GPUの前記メモリコピーエンジンを用いて、前記GPUのローカルメモリに前記修正された第1データを格納することと、
    前記GPUのシェーダプロセッサを用いて、前記ローカルメモリから前記修正された第1データを検索することと、
    前記GPUの前記シェーダプロセッサを用いて、第2データを生成するために前記修正された第1データを処理することと、
    前記GPUの前記シェーダプロセッサを用いて、前記ローカルメモリに前記第2データを格納することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記ローカルメモリから前記第2データを検索することと、
    前記GPUの前記メモリコピーエンジンを用いて、前記第2データ前記1つ又はそれより多くの修正タスクを行うことと、
    前記GPUの前記メモリコピーエンジンを用いて、前記システムバスを介して前記システムメモリに前記修正された第2データを格納することと、
    前記メモリコピーエンジンを用いて、前記メモリコピーエンジンが、前記ローカルメモリに前記修正された第1データを格納することと、及び前記システムメモリに前記修正された第2データを格納することのうちの少なくとも一方を完了したことを前記シェーダプロセッサに指示することと
    ここにおいて、前記修正タスクは、データを圧縮すること及び収集することのうちの少なくとも1つ、データの色変換、データの圧縮、データの解凍、又は1つのシェーダプログラムによって生成されたデータのデータ形式を、別のシェーダプログラムによって利用可能なデータ形式への変換を備える。
  23. 請求項22の非一時的コンピュータ読み取り可能な記憶媒体であって、メモリコピーエンジン、前記シェーダプロセッサ、及び前記ローカルメモリは相互に分離され、かつ前記GPUのチップ上にある記憶媒体。
  24. 前記修正された第1データはソースデータを備え、並びに前記第2データは前記ソースデータの前記処理の結果生じる複数の結果データを備える、請求項2の非一時的コンピュータ可読記憶媒体。
  25. 前記シェーダプロセッサは、前記システムメモリから前記第1データを検索するように構成されない、及び前記システムメモリに前記第2データを格納するように構成されないうちの少なくとも一方である、請求項2の非一時的コンピュータ可読記憶媒体。
  26. 前記GPUに前記第2データを生成するために前記修正された第1データを処理させる前記複数の命令は、前記GPUに前記第2データを生成するために前記修正された第1データを処理するための算術演算に関する複数の命令を実行させる命令を備える、請求項2の非一時的コンピュータ可読記憶媒体。
  27. 下記を行うための命令を、さらに備える、請求項22の非一時的コンピュータ可読記憶媒体、
    前記メモリコピーエンジンを用いて、前記システムメモリから第3データを検索するためか、又は前記システムメモリに前記第3データを格納するため、
    同時に、前記シェーダプロセッサを用いて、前記ローカルメモリから第4データを検索するためか、前記第4データを処理するためか、または前記ローカルメモリに第4データを格納するため。
JP2014529730A 2011-09-07 2012-08-13 グラフィックス処理のためのメモリコピーエンジン Active JP5792391B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/227,363 2011-09-07
US13/227,363 US8941655B2 (en) 2011-09-07 2011-09-07 Memory copy engine for graphics processing
PCT/US2012/050613 WO2013036358A1 (en) 2011-09-07 2012-08-13 Memory copy engine for graphics processing

Publications (2)

Publication Number Publication Date
JP2014529831A JP2014529831A (ja) 2014-11-13
JP5792391B2 true JP5792391B2 (ja) 2015-10-14

Family

ID=46705060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529730A Active JP5792391B2 (ja) 2011-09-07 2012-08-13 グラフィックス処理のためのメモリコピーエンジン

Country Status (8)

Country Link
US (1) US8941655B2 (ja)
EP (1) EP2754055B1 (ja)
JP (1) JP5792391B2 (ja)
KR (1) KR101564859B1 (ja)
CN (1) CN103782280B (ja)
ES (1) ES2688353T3 (ja)
HU (1) HUE040473T2 (ja)
WO (1) WO2013036358A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924752B1 (en) 2011-04-20 2014-12-30 Apple Inc. Power management for a graphics processing unit or other circuit
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9390461B1 (en) 2012-05-08 2016-07-12 Apple Inc. Graphics hardware mode controls
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10062135B2 (en) * 2013-07-31 2018-08-28 National Technology & Engineering Solutions Of Sandia, Llc Graphics processing unit management system for computed tomography
US20150109315A1 (en) * 2013-10-23 2015-04-23 Nvidia Corporation System, method, and computer program product for mapping tiles to physical memory locations
US9612884B2 (en) * 2014-12-04 2017-04-04 Advanced Micro Devices, Inc. Memory management in graphics and compute application programming interfaces
US9779469B2 (en) * 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US20170371797A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Pre-fetch mechanism for compressed memory lines in a processor-based system
US10223822B2 (en) * 2016-12-22 2019-03-05 Apple Inc. Mid-render compute for graphics processing
US10331532B2 (en) * 2017-01-19 2019-06-25 Qualcomm Incorporated Periodic non-intrusive diagnosis of lockstep systems
US10467796B2 (en) 2017-04-17 2019-11-05 Intel Corporation Graphics system with additional context
JP7080698B2 (ja) * 2018-03-30 2022-06-06 株式会社デンソー 情報処理装置
US11734873B2 (en) 2019-12-13 2023-08-22 Sony Group Corporation Real-time volumetric visualization of 2-D images
KR20230138777A (ko) * 2022-03-24 2023-10-05 삼성전자주식회사 데이터 재구성가능한 스토리지 장치, 전자 시스템 및 그 동작방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US7053901B2 (en) 2003-12-11 2006-05-30 Nvidia Corporation System and method for accelerating a special purpose processor
US7821520B1 (en) 2004-12-10 2010-10-26 Nvidia Corporation Fragment processor having dual mode register file
US8427496B1 (en) * 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
CN101156176A (zh) * 2005-10-25 2008-04-02 三菱电机株式会社 图像处理装置
JP4439491B2 (ja) 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US8736626B2 (en) 2008-08-26 2014-05-27 Matrox Graphics Inc. Method and system for cryptographically securing a graphics system
US20100315421A1 (en) * 2009-06-16 2010-12-16 Disney Enterprises, Inc. Generating fog effects in a simulated environment
US20100332792A1 (en) * 2009-06-30 2010-12-30 Advanced Micro Devices, Inc. Integrated Vector-Scalar Processor
US8484647B2 (en) 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US8675003B2 (en) 2009-09-09 2014-03-18 Advanced Micro Devices, Inc. Efficient data access for unified pixel interpolation
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU

Also Published As

Publication number Publication date
JP2014529831A (ja) 2014-11-13
ES2688353T3 (es) 2018-11-02
KR101564859B1 (ko) 2015-10-30
EP2754055A1 (en) 2014-07-16
WO2013036358A1 (en) 2013-03-14
US8941655B2 (en) 2015-01-27
CN103782280A (zh) 2014-05-07
EP2754055B1 (en) 2018-06-27
US20130057562A1 (en) 2013-03-07
CN103782280B (zh) 2016-04-06
KR20140053370A (ko) 2014-05-07
HUE040473T2 (hu) 2019-03-28

Similar Documents

Publication Publication Date Title
JP5792391B2 (ja) グラフィックス処理のためのメモリコピーエンジン
KR102695571B1 (ko) 머신 러닝 워크로드들에서 텐서 오브젝트 지원을 위한 방법들 및 장치
US11232534B2 (en) Scheme for compressing vertex shader output parameters
US9384522B2 (en) Reordering of command streams for graphical processing units (GPUs)
JP5960368B2 (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
JP6073533B1 (ja) タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング
JP6352546B2 (ja) 非整列ブロック転送動作の処理
JP5048836B2 (ja) グラフィックス・システムにおけるヴァリングの圧縮と関連付けのための方式
US10297003B2 (en) Efficient saving and restoring of context information for context switches
KR101630996B1 (ko) 셰이더 동작의 동기화
JP5792402B2 (ja) グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行
KR20120125395A (ko) 그래픽 시스템에서 2차 프로세서를 이용하기 위한 시스템 및 방법
JP2018529168A (ja) 帯域幅圧縮グラフィックスデータの記憶
TW202215376A (zh) 用於圖形處理單元混合渲染的裝置和方法
CN111986279A (zh) 有效访问存储器和避免不必要的计算的技术
TW202219887A (zh) 快速增量共享常數
JP6271812B2 (ja) 透過的画素フォーマット変換器
TW202213031A (zh) 經壓縮的幾何形狀渲染與資料串流
JP2018503919A (ja) ベイヤーマッピングを備えたグラフィックス処理ユニット
Bratt The arm® mali-t880 mobile gpu
KR20230010672A (ko) 데이터 압축의 방법 및 장치
KR20230149319A (ko) 프리미티브들의 배치들의 지오메트리 프로세싱을 위한 스케일러블 프리미티브 레이트 아키텍처
TW202334896A (zh) 使用可壓縮性預測的葉節點壓縮

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150616

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150805

R150 Certificate of patent or registration of utility model

Ref document number: 5792391

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250