JP5792402B2 - グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行 - Google Patents

グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行 Download PDF

Info

Publication number
JP5792402B2
JP5792402B2 JP2014560926A JP2014560926A JP5792402B2 JP 5792402 B2 JP5792402 B2 JP 5792402B2 JP 2014560926 A JP2014560926 A JP 2014560926A JP 2014560926 A JP2014560926 A JP 2014560926A JP 5792402 B2 JP5792402 B2 JP 5792402B2
Authority
JP
Japan
Prior art keywords
shader
instructions
gpu
graphics application
graphics
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
JP2014560926A
Other languages
English (en)
Other versions
JP2015515052A5 (ja
JP2015515052A (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 JP2015515052A publication Critical patent/JP2015515052A/ja
Publication of JP2015515052A5 publication Critical patent/JP2015515052A5/ja
Application granted granted Critical
Publication of JP5792402B2 publication Critical patent/JP5792402B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

[0001]本開示は、グラフィックス処理ユニット(GPU)上で実行するアプリケーションを対象とし、より詳細には、GPUがそのようなアプリケーションを実行する方法を対象とする。
[0002]グラフィックス処理ユニット(GPU)は、従来、極めて限られた機能的フレキシビリティを与える固定機能パイプラインにおけるグラフィックス関係処理のみを実行することに限定されていた。より新しいGPUは、プログラムを実行するプログラマブルコアを含み、それによって、従来のGPUと比較してより大きい機能的フレキシビリティを与える。プログラマブルコアは、グラフィックスアプリケーションと非グラフィックスアプリケーションの両方を実行し、いわゆる汎用GPU(GPGPU:general purpose GPU)アプリケーションを可能にし得る。
[0003]概して、本開示は、グラフィックス処理ユニット(GPU)上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの並列実行のための技法に関する。GPUは、1つまたは複数のグラフィックスアプリケーションと1つまたは複数の非グラフィックスアプリケーションとを実行することが可能である複数のシェーダコア(shader core)を含み得る。本開示で説明する技法は、グラフィックスアプリケーションのためのシェーダコアの第1のセットと非グラフィックスアプリケーションのためのシェーダコアの第2のセットとを選択的に確保し得る。本技法はまた、グラフィックスアプリケーションのための命令と非グラフィックスアプリケーションのための命令とを画成し得る。このようにして、シェーダコアの第1のセット上で実行するグラフィックスアプリケーションは、シェーダコアの第2のセット上で実行する非グラフィックスアプリケーションの実行に干渉しないことがあり、その逆も同様である。そのような画成された実行は、GPU上での同時の(すなわち、並列の)グラフィックスアプリケーションおよび非グラフィックスアプリケーションの効率的な実行を促進し得る。
[0004]一例では、本開示では、グラフィックス処理ユニット(GPU)を用いて、グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサ(shader processor)のシェーダコアの第1のセットの指示を受信することと、GPUを用いて、非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することとを含む方法について説明する。本方法は、GPUを用いて、グラフィックスアプリケーションの命令を受信することと、GPUを用いて、非グラフィックスアプリケーションの命令を受信することとをさらに含む。本方法はまた、GPUを用いて、シェーダコアの第1のセットでグラフィックスアプリケーションの命令を実行することと、グラフィックスアプリケーションの命令を実行するのと実質的に同時に、GPUを用いて、シェーダコアの第2のセットで非グラフィックスアプリケーションの命令を実行することとを含む。
[0005]別の例では、本開示では、プロセッサ上のドライバを用いて、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの第1のセットを判断することと、プロセッサ上のドライバを用いて、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断することとを含む方法について説明する。本方法はまた、シェーダコアの第1のセットの指示とシェーダコアの第2のセットの指示とをGPUに送信することを含む。
[0006]別の例では、本開示では、複数のシェーダコアを含むシェーダプロセッサを含むグラフィックス処理ユニット(GPU)について説明する。本GPUはまた、グラフィックスアプリケーションの命令を実行するために確保されたシェーダコアの第1のセットの指示を受信し、グラフィックスアプリケーションの命令を受信するように構成された第1のコマンドプロセッサを含む。本GPUはまた、非グラフィックスアプリケーションの命令を実行するために確保されたシェーダコアの第2の異なるセットの指示を受信し、非グラフィックスアプリケーションの命令を受信するように構成された第2のコマンドプロセッサを含む。
[0007]別の例では、本開示では、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの第1のセットを判断し、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断するように構成されたプロセッサについて説明する。本プロセッサはまた、シェーダコアの第1のセットの指示とシェーダコアの第2のセットの指示とをGPUに送信するように構成される。
[0008]別の例では、本開示では、グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信するための第1の手段と、非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信するための第2の手段とを含むGPUについて説明する。本GPUはまた、グラフィックスアプリケーションの命令を受信するための第3の手段と、非グラフィックスアプリケーションの命令を受信するための第4の手段とを備える。本GPUは、シェーダコアの第1のセットでグラフィックスアプリケーションの命令を実行するための手段と、グラフィックスアプリケーションの命令を実行するのと同時に、シェーダコアの第2のセットで非グラフィックスアプリケーションの命令を実行するための手段とをさらに備える。
[0009]別の例では、本開示では、1つまたは複数のプロセッサに、グラフィックス処理ユニット(GPU)を用いて、グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信することと、GPUを用いて、非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することとを行わせる命令を備えるコンピュータ可読記憶媒体について説明する。命令はまた、1つまたは複数のプロセッサに、GPUを用いて、グラフィックスアプリケーションの命令を受信することと、GPUを用いて、非グラフィックスアプリケーションの命令を受信することとを行わせる。命令はまた、1つまたは複数のプロセッサに、GPUを用いて、シェーダコアの第1のセットでグラフィックスアプリケーションの命令を実行することと、グラフィックスアプリケーションの命令を実行するのと同時に、GPUを用いて、シェーダコアの第2のセットで非グラフィックスアプリケーションの命令を実行することとを行わせる。
[0010]別の例では、本開示では、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの第1のセットを判断するための手段と、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断するための手段とを含むプロセッサについて説明する。本プロセッサはまた、シェーダコアの第1のセットの指示とシェーダコアの第2のセットの指示とをGPUに送信するための手段を含む。
[0011]別の例では、本開示では、1つまたは複数のプロセッサに、1つまたは複数のプロセッサ上のドライバを用いて、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの第1のセットを判断することと、1つまたは複数のプロセッサ上のドライバを用いて、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断することとを行わせる命令を備えるコンピュータ可読記憶媒体について説明する。命令はまた、1つまたは複数のプロセッサに、シェーダコアの第1のセットの指示とシェーダコアの第2のセットの指示とをGPUに送信することを行わせる。
[0012]別の例では、本開示では、プロセッサとグラフィックス処理ユニット(GPU)とを含む装置について説明する。本プロセッサは、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第1のセットを判断し、シェーダコアの第2の異なるセットによって実行されるべきグラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断し、シェーダコアの第1のセットの指示とシェーダコアの第2のセットの指示とをGPUに送信するように構成される。本GPUは、シェーダコアの第1のセットとシェーダコアの第2のセットとを含む複数のシェーダコアを含むシェーダプロセッサと、グラフィックスアプリケーションの命令を実行するために確保されたシェーダコアの第1のセットの指示を受信し、グラフィックスアプリケーションの命令を受信するように構成された第1のコマンドプロセッサと、非グラフィックスアプリケーションの命令を実行するために確保されたシェーダコアの第2の異なるセットの指示を受信し、非グラフィックスアプリケーションの命令を受信するように構成された第2のコマンドプロセッサとを含む。
[0013]本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示の他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
[0014]本開示で説明する1つまたは複数の例示的な技法を実装し得るデバイスを示すブロック図。 [0015]図1のグラフィックス処理ユニット(GPU)の一例をさらに詳細に示すブロック図。 [0016]図1のGPUの別の例をさらに詳細に示すブロック図。 [0017]本開示で説明する1つまたは複数の例による例示的な技法を示すフローチャート。 [0018]本開示で説明する1つまたは複数の例による別の例示的な技法を示すフローチャート。 [0019]図1に示した例示的なデバイスをさらに詳細に示すブロック図。
[0020]グラフィックス処理ユニット(GPU)は、コマンドプロセッサと、固定機能グラフィックス処理ハードウェアユニットと、シェーダプロセッサを形成する1つまたは複数のシェーダコアとを含む。従来、シェーダプロセッサの1つまたは複数のシェーダコアは、グラフィックスデータに対して機能を実行することに限定されたプログラムを実行していた。たとえば、1つまたは複数のシェーダコアは、頂点シェーダとフラグメントシェーダとを実行し、従来、非グラフィックスアプリケーションを実行していなかった。
[0021]しかしながら、GPUによってサポートされる超並列(massive parallel)計算効率は非グラフィックス関係アプリケーションに利益を与え得る。たとえば、より新しいGPUは、一般的な処理機能を与え、汎用GPU(GPGPU)と呼ばれることがある。これらのGPGPUのシェーダコアは、グラフィックスアプリケーションならびに非グラフィックスアプリケーションを実行し得る。
[0022]グラフィックスアプリケーションと非グラフィックスアプリケーションが両方ともGPGPUの1つまたは複数のシェーダコア上で実行するので、非グラフィックスアプリケーションの実行はグラフィックスアプリケーションの実行に潜在的に干渉し得る。たとえば、GPGPUのシェーダコアは、非グラフィックスアプリケーションと、デバイスのためのユーザインターフェースを生成するグラフィックスアプリケーションとを実行していると仮定する。この例では、非グラフィックスアプリケーションの実行がユーザインターフェースの生成に干渉することが可能であり得る。この干渉によりユーザインターフェースが反応しなくなることがあり、それによりユーザエクスペリエンスが潜在的に低下することがある。
[0023]以下でより詳細に説明するように、本開示では、単一のGPGPUのシェーダプロセッサの1つまたは複数のシェーダコアが、非グラフィックスアプリケーションがグラフィックスアプリケーションの性能に干渉することなしにグラフィックスアプリケーションと非グラフィックスアプリケーションとを実行し得、その逆も同様である技法について説明する。たとえば、シェーダプロセッサの1つまたは複数のシェーダコアはグラフィックスアプリケーションのために確保され得、シェーダプロセッサの1つまたは複数の他のシェーダコアは非グラフィックスアプリケーションのために確保され得る。シェーダコアの確保は静的にまたは動的に行われ得る。たとえば、シェーダコアの確保はあらかじめ決定され得る。別の例では、グラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行中に、本技法は、いくつのシェーダコアがグラフィックスアプリケーションのために確保されるべきか、およびいくつのシェーダコアが非グラフィックスアプリケーションのために確保されるべきかを選択し得る。本技法により、単一の組込みGPUを、グラフィックスアプリケーションと非グラフィックスアプリケーションとの間で共有することがはるかに簡単になることがあり、それにより、高レイテンシ非グラフィックスアプリケーションが、低レイテンシグラフィックスアプリケーションを中断させることなしに実行することが可能になり得る。
[0024]図1は、本開示で説明する1つまたは複数の例示的な技法を実装し得るデバイスを示すブロック図である。図1は、プロセッサ12と、グラフィックス処理ユニット(GPU)16と、システムメモリ26とを含むデバイス10を示す。デバイス10は、図6にさらに示されているように、図1に示された構成要素に加えて、構成要素を含む。デバイス10の例としては、限定はしないが、メディアプレーヤなどのビデオデバイス、セットトップボックス、携帯電話またはいわゆるスマートフォンなどのワイヤレスハンドセット、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーミングコンソール、ビデオ会議ユニット、タブレットコンピューティングデバイスなどがある。
[0025]プロセッサ12はデバイス10の中央処理ユニット(CPU)であり得る。GPU16は、グラフィックス関係機能を実行するように構成された処理ユニットであり得る。たとえば、GPU16は、ディスプレイ上での提示のためにグラフィックスデータを生成し、出力し、ならびにGPU16によって行われる超並列処理(massive processing parallelism)を活用する非グラフィックス関係機能を実行し得る。たとえば、GPU16は、計算アプリケーションと呼ばれることがある、グラフィックスアプリケーションと非グラフィックスアプリケーションの両方を実行し得る。GPU16は、グラフィックス処理能力に加えて汎用処理能力を与え得るので、GPU16は汎用GPU(GPGPU)と呼ばれることがある。
[0026]プロセッサ12およびGPU16の例としては、限定はしないが、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、様々な汎用または専用処理ハードウェアのいずれかがある。いくつかの例では、GPU16は、グラフィックスを処理するために、ならびに非グラフィックス関係アプリケーションを実行するために超並列処理を行うことなど、特定の使用のために設計された複数のプロセッサコアを有するマイクロプロセッサであり得る。さらに、プロセッサ12およびGPU16は別個の構成要素として示されているが、本開示の態様はそのように限定されない。たとえば、プロセッサ12およびGPU16は共通の集積回路(IC)中に常駐し得る。
[0027]システムメモリ26は、デバイス10のシステムメモリであり、プロセッサ12およびGPU16の外部にある。たとえば、システムメモリ26は、プロセッサ12およびGPU16に対してオフチップであり得、システムバスを介してアクセス可能であり得る。図示のように、システムメモリ26は、プロセッサ12およびGPU16によって実行されるアプリケーションを記憶し得る。たとえば、グラフィックスアプリケーション28は、GPU16が実行するグラフィックスアプリケーションである。グラフィックスアプリケーション28の例としては頂点シェーダおよびフラグメントシェーダがある。非グラフィックスアプリケーション30は、GPU16が実行する非グラフィックスアプリケーションである。非グラフィックスアプリケーション30の一例は、パノラマピクチャを作成するために異なるピクチャをスティッチするアプリケーションである。たとえば、ピクチャは、デバイス10によってキャプチャされ、GPU16とともにスティッチされたピクチャであり得る。GPUドライバ14は、システムメモリ26が記憶するアプリケーションの別の例である。プロセッサ12は、プロセッサ12とGPU16との間の通信を可能にするアプリケーションであり得るGPUドライバ14を実行し得る。
[0028]さらに、システムメモリ26は、実行されたアプリケーションが動作するデータ、ならびにアプリケーションから生じるデータを記憶し得る。しかしながら、すべてのそのようなデータが、あらゆる例においてシステムメモリ26に記憶される必要があるとは限らない。いくつかの事例では、データは、プロセッサ12またはGPU16上のメモリにローカルに記憶され得る。
[0029]システムメモリ26はコンピュータ可読記憶媒体の一例であり得る。たとえば、システムメモリ26は、本開示では、プロセッサ12とGPU16とに、各々に起因する機能を実行させる命令を記憶し得る。システムメモリ26は、1つまたは複数のプロセッサ、たとえば、アプリケーションプロセッサ12またはGPU16に様々な機能を実行させる命令を備えるコンピュータ可読記憶媒体と見なされ得る。
[0030]システムメモリ26の例としては、限定はしないが、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータまたはプロセッサによってアクセスされ得る、任意の他の媒体がある。システムメモリ26は、いくつかの例では、非一時的記憶媒体と見なされ得る。「非一時的」という用語は、記憶媒体が、搬送波または伝搬信号では実施されないことを示し得る。ただし、「非一時的」という用語は、システムメモリ26が非可動であることを意味するものと解釈されるべきでない。一例として、システムメモリ26は、デバイス10から取り外され、別のデバイスに移され得る。別の例として、システムメモリ26と実質的に同様のストレージデバイスが、デバイス10中に挿入され得る。いくつかの例では、非一時的記憶媒体は、経時的に変動し得るデータを(たとえば、RAMに)記憶し得る。
[0031]上記で説明したように、GPU16は、1つまたは複数のグラフィックスアプリケーション(たとえば、グラフィックスアプリケーション28)と1つまたは複数の非グラフィックスアプリケーション(たとえば、非グラフィックスアプリケーション30)とを同時に(すなわち、並列に)実行し得る。しかしながら、不十分なリソース管理により、非グラフィックスアプリケーション30の実行がグラフィックスアプリケーション28の実行に干渉することがある。本開示の技法によれば、GPU16は、最小の実行干渉でグラフィックスアプリケーション28と非グラフィックスアプリケーション30とを同時に実行することが可能であり得る。
[0032]図示のように、GPU16は、(グラフィックス機能パイプライン18と総称される)グラフィックス機能パイプライン18Aおよび18Bと、(非グラフィックス機能パイプライン20と総称される)非グラフィックス機能パイプライン20Aおよび20Bと、シェーダプロセッサ22と、GPUメモリ24とを含む。GPUメモリ24はGPU16のためのオンチップメモリであり得る。たとえば、GPUメモリ24は、グラフィックス機能パイプライン18、非グラフィックス機能パイプライン20、およびシェーダプロセッサ22が迅速にデータにアクセスすることを可能にする、キャッシュメモリであり得る。
[0033]グラフィックス機能パイプライン18はグラフィックス関係機能を処理し、非グラフィックス機能パイプライン20は非グラフィックス関係機能を処理する。このようにして、本開示で説明する技法は、非グラフィックス関係機能のためのリソースからグラフィックス関係機能のためのリソースを画成する。たとえば、グラフィックス機能パイプライン18によって処理されるグラフィックス関係機能は、GPU16がグラフィックス関係機能と非グラフィックス関係機能の両方を同時に実行しているときでも、非グラフィックス機能パイプライン20によって処理される非グラフィックス関係機能に干渉しないことがあり、その逆も同様である。言い換えれば、グラフィックス機能パイプライン18および非グラフィックス機能パイプライン20はそれぞれの機能を並列に実行し得る。
[0034]いくつかの例では、グラフィックス機能パイプライン18および非グラフィックス機能パイプライン20は固定機能ユニットを含み得る。しかしながら、グラフィックス機能パイプライン18および非グラフィックス機能パイプライン20はシェーダプロセッサ22を共有し得る。シェーダプロセッサ22は、グラフィックスアプリケーションと非グラフィックスアプリケーションの両方を同時に実行するように構成される。たとえば、シェーダプロセッサ22は、グラフィックスアプリケーション28を実行し、同時に、非グラフィックスアプリケーション30を実行し得る。図1は、1つのグラフィックスアプリケーションおよび1つの非グラフィックスアプリケーションのみを示しているが、本開示の態様はそのように限定されない。他の例では、GPU16は、1つまたは複数のグラフィックスアプリケーションと1つまたは複数の非グラフィックスアプリケーションとをすべて同時に実行し得る。
[0035]グラフィックスアプリケーション28と非グラフィックスアプリケーション30とを実行するために、シェーダプロセッサ22は、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の命令を実行する複数のシェーダコアを含む。たとえば、シェーダコアは、作業グループまたはタスクと呼ばれる、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の命令のサブセットを実行し得る。これらのシェーダコアはグラフィックスアプリケーション28または非グラフィックスアプリケーション30に割り振られ得る。
[0036]本開示で説明する技法では、GPUドライバ14は、グラフィックスアプリケーション28を実行するためにシェーダプロセッサ22内のシェーダコアの第1のセットを確保し、非グラフィックスアプリケーション30を実行するためにシェーダプロセッサ22内のシェーダコアの第2のセットを確保し得る。上記で説明したように、GPUドライバ14は、プロセッサ12およびGPU15が互いに通信することを可能にし得る。シェーダコアを確保することは、シェーダプロセッサ22内のそのシェーダコアをグラフィックスアプリケーション28または非グラフィックスアプリケーション30のうちの特定の1つに割り振ることを指し得る。たとえば、グラフィックスアプリケーション28のために確保されたシェーダコアは、グラフィックスアプリケーション28の命令を実行するために割り振られ、そのシェーダコアがもはやグラフィックスアプリケーション28のために確保されなくなるまで、非グラフィックスアプリケーション30の命令を実行することが可能でないことがある。同様に、非グラフィックスアプリケーション30のために確保されたシェーダコアは、そのシェーダコアがもはや非グラフィックスアプリケーション30のために確保されなくなるまで、グラフィックスアプリケーション28の命令を実行するために使用可能でないことがある。
[0037]例示的な例として、シェーダプロセッサ22は4つのシェーダコアを含み得るが、より多いまたはより少ないシェーダコアが可能である。この例では、GPUドライバ14は、グラフィックスアプリケーション28のために4つのシェーダコアのうちの2つを確保し、非グラフィックスアプリケーション30のために残りの2つのシェーダコアを確保し得る。ただし、シェーダコアの任意の組合せが可能である。たとえば、GPUドライバ14は、グラフィックスアプリケーション28のために4つのシェーダコアのうちの3つを確保し、非グラフィックスアプリケーション30のために残りのシェーダコアを確保し得る。GPUドライバ14が、グラフィックスアプリケーション28のためにすべての4つのシェーダコアを確保し、非グラフィックスアプリケーション30のためにいずれも確保しないこと、またはその逆さえも可能であり得る。
[0038]GPUドライバ14は、プロセッサ12がGPU16を制御することを可能にする、プロセッサ12とGPU16との間のインターフェースとして機能し得る。たとえば、プロセッサ12がGPU16にコマンドを送信する必要があるとき、プロセッサ12がコマンドを送信するのは、GPUドライバ14を通してである。プロセッサ12がGPU16に送信し得るコマンドは、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の命令をロードし、実行するためのコマンドと、データがシステムメモリ26中のどこに位置するかをGPU16に示すコマンド、およびそのようなデータをロードするためのコマンドと、他のそのようなコマンドとを含む。このようにして、プロセッサ12はGPU16の機能を制御し得る。
[0039]図示ように、GPUドライバ14はプロセッサ12内に破線で示されている。これは、GPUドライバ14が、プロセッサ12上で実行しているソフトウェアであることを示すためである。この例では、システムメモリ26は、プロセッサ12が実行のために取り出す、GPUドライバ14のソースコードまたはオブジェクトコードを記憶する。代替として、GPUドライバ14は、プロセッサ12内に組み込まれたハードウェア、またはプロセッサ12およびGPU16に結合する、プロセッサ12の外部のハードウェアであり得る。概して、GPUドライバ14は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せであり得る。説明および明快のために、本開示で説明する例について、プロセッサ12上で実行しているソフトウェアであるGPUドライバ14に関して説明する。
[0040]GPUドライバ14は、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のために確保されるべきであるシェーダコアの数を判断するために様々な基準を利用し得る。一例として、プロセッサ12はGPU16を制御するので、プロセッサ12は、グラフィックスアプリケーション28のためのいくつの命令および非グラフィックスアプリケーション30のためのいくつの命令が、シェーダプロセッサ22のシェーダコアによる実行のために現在キューイングされているかに関してよく知っていることがある。この例では、GPUドライバ14は、シェーダプロセッサ22による実行のためにキュー中にある、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のための命令の数に基づいてシェーダコアを確保し得る。
[0041]たとえば、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のためのキューイングされた命令の数が等しい場合、GPUドライバ14は、アプリケーションの各タイプについて、シェーダプロセッサ22の等しい数のシェーダコアを確保し得る。グラフィックスアプリケーション28のためのコマンドよりも非グラフィックスアプリケーション30のためのコマンドが多い場合、GPUドライバ14は、グラフィックスアプリケーション28のためのシェーダコアよりも非グラフィックスアプリケーション30のためのシェーダコアを多く確保し得る。実行のために現在キューイングされている、非グラフィックスアプリケーション30のための命令がない場合、GPUドライバ14は、グラフィックスアプリケーション28のためにすべてのシェーダコアを確保し得る。いくつかの例では、各アプリケーションのために確保されたシェーダコアの数は、実行のためにキューイングされた命令の数に比例し得る。しかしながら、実行時間および優先度など、他のファクタが、アプリケーションの各々のために確保されたシェーダコアの数に影響を及ぼすこともある。
[0042]いくつかの例では、GPUドライバ14はグラフィックスアプリケーション28のほうへバイアスされ得る。たとえば、反応しないグラフィックスアプリケーションがユーザエクスペリエンスを低下させることがある。ユーザエクスペリエンスのそのような低下を制限するために、GPUドライバ14は、非グラフィックスアプリケーション30の命令を実行する際にユーザエクスペリエンスがわずかな低下を生じる場合でも、グラフィックスアプリケーション28専用の十分なシェーダコアがあることを保証するように構成され得る。言い換えれば、ユーザエクスペリエンスの観点から、グラフィックスアプリケーション28の適時の実行は非グラフィックスアプリケーション30の適時の実行よりも有益であり得る。より良いユーザエクスペリエンスを支援するために、GPUドライバ14は、十分なシェーダコアをグラフィックスアプリケーション28に充てるために非グラフィックスアプリケーション30の適時の実行を犠牲にするように構成され得る。
[0043]これらの場合では、GPUドライバ14はシェーダコアを不均等に割り当て得る。たとえば、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のためのキューイングされた命令の数が等しい場合、GPUドライバ14は、非グラフィックスアプリケーション30のためのシェーダコアよりもグラフィックスアプリケーション28のためのシェーダコアを多く確保し得る。非グラフィックスアプリケーション30のための命令がグラフィックスアプリケーション28のための命令の2倍である場合、GPUドライバ14は、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の各々に等しい数のシェーダコアを割り当て得る。
[0044]このようにして、GPUドライバ14は、好適なユーザエクスペリエンスを与えるために、いくつのシェーダコアがグラフィックスアプリケーション28によって必要とされ、いくつのシェーダコアが非グラフィックスアプリケーション30によって必要とされるかを判断し得る。そのような好適なユーザエクスペリエンスを実現するために、GPUドライバ14はいくつかの基準を利用し得る。たとえば、上記で説明したように、グラフィックスアプリケーション28の無中断実行は、非グラフィックスアプリケーション30の遅いまたは遅延した実行よりも重要であり得、それが、非グラフィックスアプリケーション30のためのシェーダコアがより少ないことを意味する場合でも、GPUドライバ14は、十分なシェーダコアがグラフィックスアプリケーション28のために利用可能であることを保証するように構成され得る。
[0045]いくつかの例では、非グラフィックスアプリケーション30の実行をグラフィックスアプリケーション28よりも優先させることが可能であり得る。たとえば、非グラフィックスアプリケーション30は、適時の実行がグラフィックスディスプレイの潜在的な軽微な劣化よりも有益であり得る重要なアプリケーションであり得る。このようにして、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の相対的優先度は構成可能であり得る。
[0046]たとえば、プロセッサ12によって実行されるGPUドライバ14は、いくつのシェーダコアがグラフィックスアプリケーション28のために確保されるべきか、およびいくつのシェーダコアが非グラフィックスアプリケーション30のために確保されるべきかを判断する際に追加の基準を利用し得る。たとえば、グラフィックスアプリケーション28の1つまたは複数のタスクは、比較的短い時間期間(たとえば、数ミリ秒)で完了し得、非グラフィックスアプリケーション30の1つまたは複数のタスクは、比較的長い時間期間(たとえば、数秒)で完了し得る。例示的な例として、GPU16は、ビデオゲームのフレームまたはユーザインターフェーススクリーンを生成するために複数のグラフィックスアプリケーションを実行し得、それらのうちの1つがグラフィックスアプリケーション28である。一例として、GPU16はまた、一例として複数のカメラピクチャを単一のパノラマ画像にスティッチするか、または他の例として解読(decryption)または復元(decompression)を行うために、非グラフィックスアプリケーション30を実行し得る。
[0047]この状況では、GPU16は、滑らかなアニメーションを実現するために、30〜60フレーム毎秒のリフレッシュ速度でフレームを生成する必要があり得る。そのような30〜60フレーム毎秒のリフレッシュ速度では、シェーダプロセッサ22は、GPU16が30〜60フレーム毎秒のリフレッシュ速度を達成することができるように数ミリ秒以内でグラフィックスアプリケーション28のタスクの実行を完了する必要があり得る。非グラフィックスアプリケーション30の実行は、滑らかなアニメーション、またはそのことについてどんなアニメーションをも実現することを必要としないことがある。したがって、GPU16は、数ミリ秒以上で非グラフィックスアプリケーション30の実行を完了することが好適であり得る。たとえば、この例では、非グラフィックスアプリケーション30は、ほぼ数ミリ秒以内で単一のパノラマ画像へのカメラピクチャのスティッチングを完了する必要がないことがあり、非グラフィックスアプリケーション30は、スティッチングを完了するのに0.5〜1秒かかることが好適であり得る。
[0048]GPUドライバ14は、概して、グラフィックスアプリケーション28および非グラフィックスアプリケーション30が、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のためのシェーダコアの数を判断するためのタスクを完了するために異なる時間量を必要とし得る基準を利用し得る。本開示で使用するタスクは、グラフィックスアプリケーション28または非グラフィックスアプリケーション30によって実行される機能のサブセットを指す。タスクは作業グループと見なされ得る。グラフィックスアプリケーション28の場合、作業グループを画成するための論理的な方法があり得る。たとえば、1つの作業グループは、グラフィックスアプリケーション28のための1つのフレーム、またはそのフレーム中のタイルを生成するために必要とされるすべての機能を含み得る。作業グループのこの論理的な画成のために、シェーダプロセッサ22がグラフィックスアプリケーション28のためのタスクを完了するのにどのくらいの時間がかかるかを予測することは容易であり得る。
[0049]非グラフィックスアプリケーション30のための機能を画成するための論理的な方法がないことがあり、それにより、シェーダプロセッサ22が非グラフィックスアプリケーション30のためのタスクを完了するのにかかる時間量を推定することが困難になり得る。グラフィックスアプリケーション28のためのシェーダプロセッサ22のシェーダコアを確保することと、非グラフィックスアプリケーション30のためのシェーダプロセッサ22のシェーダコアを確保することとによって、本技法は、非グラフィックスアプリケーション30がタスクを完了するのにどのくらいの時間がかかるかを予測することが困難であり得る場合でも、グラフィックスアプリケーション28と非グラフィックスアプリケーション30との間の実行干渉を最小限に抑えることが可能であり得る。
[0050]本開示で説明する技法は、システムメモリ26への過度のアクセスなしに、および複数のGPUを必要とすることなしに、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の効率的な並列実行を可能にし得る。たとえば、GPU16は、グラフィックスアプリケーション28を実行するために非グラフィックスアプリケーション30を実行するのを停止する必要がないことがある。たとえば、非グラフィックスアプリケーションに専用のシェーダプロセッサ22のシェーダコアは非グラフィックスアプリケーション上でのみ動作し、グラフィックスアプリケーションに専用のシェーダプロセッサ22のプロセッサコアはグラフィックスアプリケーション上でのみ別々に動作する。また、本技法は、単一のGPU16上で実行するためにグラフィックスアプリケーション28と非グラフィックスアプリケーション30の両方を可能にし得る。
[0051]いくつかの他の技法は、グラフィックスアプリケーション28の実行を可能にするために非グラフィックスアプリケーション30の実行を停止し得る。しかしながら、非グラフィックスアプリケーション30の実行を停止するために、これらの他の技法において使用されるGPUは、それが休止される瞬間に非グラフィックスアプリケーションのすべての状態情報をシステムメモリ26に記憶し、非グラフィックスアプリケーション30の実行が再開されたとき、システムメモリ26からすべての状態情報を取り出す必要があり得る。すべての状態情報のこの記憶および取出しは、バス帯域幅を消費し、比較的大きい電力量を必要とし得る。
[0052]非グラフィックスアプリケーション30の実行を停止し、次いで後で実行を再開するこれらの他の技法は、グラフィックスアプリケーション28および非グラフィックスアプリケーション30を同時に実行するのではなく、これらのアプリケーションの実行をインターリーブすると見なされ得る。本開示で説明するように、シェーダプロセッサ22のプロセッサコアの異なるセットを使用する、同時のグラフィックスアプリケーション28および非グラフィックスアプリケーション30の効率的な並列実行(すなわち、同時)は、これらのアプリケーションの実行をインターリーブする必要がないことがあり、それにより、バス帯域幅および電力消費の効率的な使用が促進され得る。
[0053]いくつかの他の追加の技法の例では、本技法は、非グラフィックスアプリケーション30などの非グラフィックスアプリケーションがどのくらい長くGPU上で実行したかを計時した。実行がしきい値時間よりも長くかかった場合、GPUは、非グラフィックスアプリケーション30を実行するのを完全に停止することになる。しかしながら、そのような技法は、いくつかのタイプの非グラフィックスアプリケーション(たとえば、実行するために割り当てられた時間よりも多くの時間を必要とする非グラフィックスアプリケーション)が実行することを可能にしなかった。
[0054]さらにいくつかの他の技法では、デバイスは2つのGPUを含むことになる。一方のGPUはグラフィックスアプリケーション28のために確保され、他方は非グラフィックスアプリケーション30のために確保されることになる。しかしながら、2つのグラフィックス処理デバイスを利用することはデバイス上の追加のスペースを利用し、ただし、そのような追加のスペースは利用可能でないことがある。また、所与の瞬間について、実行される必要があるグラフィックスアプリケーションがないが、実行される必要がある非グラフィックスアプリケーションがあるか、またはその逆も同様であることが可能であり得る。これらの場合のいずれでも、一方のGPUはアイドルのままであるが、他方のGPUはアクティブのままであり、これは、GPUの非効率的な使用であり得る。
[0055]図2は、図1のGPUの一例をさらに詳細に示すブロック図である。たとえば、図2は、GPU16をさらに詳細に示し、GPU16は汎用GPU(GPGPU)の一例である。図示のように、シェーダプロセッサ22およびGPUメモリ24に加えて、GPU16は、グラフィックスコマンドプロセッサ32と、グラフィックス作業負荷分配ユニット34と、(グラフィックス固定機能ユニット36と総称される)グラフィックス固定機能ユニット36Aおよび36Bと、非グラフィックスコマンドプロセッサ38と、非グラフィックス作業負荷分配ユニット40とを含み得る。シェーダプロセッサ22は、(シェーダコア42と総称される)複数のシェーダコア42A〜42Nを含み得る。たとえば、シェーダプロセッサ22は4つのシェーダコア42を含み得るが、より多いまたはより少ないシェーダコア42が可能である。いくつかの例では、シェーダコア42は、テクスチャリングがそのようなコア中で行われることもあることを示すために、シェーダ/テクスチャコアと呼ばれることがある。ただし、理解を容易にするために、シェーダコア42はシェーダコアまたはシェーダ/テクスチャコアを指す。
[0056]GPU16は、図2に示された構成要素以外に、追加の構成要素を含み得る。たとえば、図示のように、非グラフィックス作業負荷分配ユニット40はシェーダプロセッサ22に直接出力し、シェーダプロセッサ22はGPUメモリ24に直接出力する。他の例では、非グラフィックス作業負荷分配ユニット40とシェーダプロセッサ22との間に、およびシェーダプロセッサ22とGPUメモリ24との間に1つまたは複数の構成要素があり得る。さらに、GPU16内の構成要素の特定の構成も、例示のために与えたものであり、限定的であると考えられるべきではない。代替例では、構成要素は、図2に示された方法とは異なる方法で順序付けられ得る。
[0057]図2において、グラフィックスコマンドプロセッサ32、グラフィックス作業負荷分配ユニット34、グラフィックス固定機能ユニット36Aおよびグラフィックス固定機能ユニット36Bは、グラフィックス機能パイプライン18Aおよび18B(図1)の一部であり得る。また、非グラフィックスコマンドプロセッサ38および非グラフィックス作業負荷分配ユニット40は、非グラフィックス機能パイプライン20A(図1)の一部であり得る。GPU16は、明快のために図2に示していない非グラフィックス機能パイプライン20B(図1)の一部になる構成要素を含み得る。GPU16のこれらの様々な構成要素は、ハードウェア、ハードウェア上で実行されるソフトウェア、またはそれらの組合せとして実装され得る。限定としてではなく、単に例示のために、GPU16の構成要素をハードウェアユニットとして説明する。
[0058]図示のように、GPU16は、2つのコマンドプロセッサ(すなわち、グラフィックスコマンドプロセッサ32および非グラフィックスコマンドプロセッサ38)を含む。代替例では、図3に関してより詳細に説明するように、GPU16が単一のコマンドプロセッサを含むことが可能であり得る。図2の例では、グラフィックスコマンドプロセッサ32と非グラフィックスコマンドプロセッサ38は互いに同じであり得る。グラフィックスコマンドプロセッサ32は、グラフィックス機能のためのものであり、非グラフィックス機能のためのものでないコマンドまたは命令に基づいて動作し得る。非グラフィックスコマンドプロセッサ38は、非グラフィックス機能のためのものであり、グラフィックス機能のためのものでないコマンドまたは命令に基づいて動作し得る。このようにして、GPU16は、グラフィックスコマンドおよび命令と非グラフィックスコマンドおよび命令とを画成し得、それによって、GPU16上でのグラフィックスアプリケーションと非グラフィックスアプリケーションの両方の効率的な並列実行(たとえば、同時)を促進し得る。
[0059]たとえば、図1に示したように、プロセッサ12上で実行しているGPUドライバ14は、システムメモリ26からグラフィックスアプリケーション28の命令とそれらの命令によって使用されるべきであるデータとを取り出すようにグラフィックスコマンドプロセッサ32に命令し得る。GPUドライバ14はまた、グラフィックスアプリケーション28のために確保されたシェーダコア42の数(たとえば、グラフィックスアプリケーション28のために確保されたシェーダコア42の第1のセット)、および場合によってはシェーダコア42のうちのどのシェーダコアがグラフィックスアプリケーション28のために確保されるかを示す指示をグラフィックスコマンドプロセッサ32に送信し得る。同様に、GPUドライバ14は、システムメモリ26から非グラフィックスアプリケーション30の命令とそれらの命令によって使用されるべきであるデータとを取り出すように非グラフィックスコマンドプロセッサ38に命令し得る。GPUドライバ14はまた、非グラフィックスアプリケーション30のために確保されたシェーダコア42の数(たとえば、非グラフィックスアプリケーション30のために確保された1つまたは複数のシェーダコア42の第2のセット)、および場合によってはシェーダコア42のうちのどのシェーダコアが非グラフィックスアプリケーション30のために確保されるかを示す指示を非グラフィックスコマンドプロセッサ38に送信し得る。
[0060]グラフィックスコマンドプロセッサ32と非グラフィックスコマンドプロセッサ38の両方を含むGPU16は、単一のコマンドプロセッサを含む他のGPUと比較して、GPU16の全体的なサイズを増加させ得る。ただし、追加のコマンドプロセッサを含めることによるサイズの増加は極めてわずかであり得る。たいていの場合、追加のコマンドプロセッサを含めることによるサイズの増加は、上記で説明したように、2つの別個のグラフィックス処理デバイスを使用することよりもはるかに小さい。
[0061]さらに、追加のコマンドプロセッサを含めることは、単一のコマンドプロセッサを含むGPUと比較して、GPU16に追加の電力を使用させ得る。ただし、本開示で説明する技法は、追加の電力の使用を最小限に抑え得る。たとえば、上記で説明したように、GPUドライバ14は、非グラフィックスアプリケーション30およびグラフィックスアプリケーション28のための命令またはコマンドがあるかどうかを判断するように構成され得る。非グラフィックスアプリケーション30のための命令がない場合、GPUドライバ14は、電源を切断するように非グラフィックスコマンドプロセッサ38に命令し得る。GPUドライバ14は、次いで、必要とされるときに電源投入するようにコマンドプロセッサ38に命令し得る。
[0062]グラフィックス作業負荷分配ユニット34および非グラフィックス作業負荷分配ユニット40は、作業負荷をそれぞれの確保されたシェーダコア42にどのように分配するかを判断する。たとえば、グラフィックス作業負荷分配ユニット34は、グラフィックスコマンドプロセッサ32から、シェーダコア42のうちのどのシェーダコアがグラフィックスアプリケーション28のために確保されるかの指示を受信し得る。グラフィックス作業負荷分配ユニット34は、グラフィックスコマンドプロセッサ32がシステムメモリ26から取り出した命令が、グラフィックスアプリケーション28のために確保されたシェーダコア42間でどのように分割されるべきかを判断し得る。非グラフィックス作業負荷分配ユニット40は、非グラフィックスコマンドプロセッサ38から、シェーダコア42のうちのどのシェーダコアが非グラフィックスアプリケーション30のために確保されるかの指示を受信し得る。非グラフィックス作業負荷分配ユニット40は、非グラフィックスコマンドプロセッサ38がシステムメモリ26から取り出した命令が、非グラフィックスアプリケーション30のために確保されたシェーダコア42間でどのように分割されるべきかを判断し得る。
[0063]グラフィックス固定機能ユニット36は、特定のグラフィックス機能を実行するハードワイヤード固定機能論理ユニットであり得る。たとえば、シェーダプロセッサ22の確保されたシェーダコア42上で実行しているグラフィックスアプリケーション28は、機能的フレキシビリティを可能にし得、グラフィックス固定機能ユニット36は、もしあれば、最小の機能的フレキシビリティを与え得る。グラフィックス固定機能ユニット36の各々は、プリミティブアセンブリユニット、錐台ユニット(frustum unit)、透視除算ユニット(perspective divide unit)、ビューポート変換ユニット、深度テストユニット、ラスタライゼーションユニット(rasterization unit)、フラグメント単位動作ユニット(per-fragment operation unit)、およびアルファブレンディングユニット(alpha blending unit)など、様々なハードワイヤードユニットを含み得る。グラフィックス機能パイプライン18Aの一部を形成し得る、固定機能ユニット36のこれらのユニットは、例示のために与えたものであり、限定的であると考えられるべきではない。さらに、これらのユニットのいくつかはグラフィックス固定機能ユニット36A中に常駐し得、他のユニットはグラフィックス固定機能ユニット36B中に常駐し得る。これらのユニットの特定の順序は異なる例においても異なり得る。
[0064]図2において、グラフィックス固定機能ユニット36Bおよびシェーダプロセッサ22はGPUメモリ24に出力し得る。GPUメモリ24は、(たとえば、アドレスベースの)カラーバッファキャッシュまたは汎用キャッシュ、あるいはそれらの任意の組合せを含む、多段専用キャッシュ(multi-stage specialized cache)など、キャッシュメモリであり得る。いくつかの例では、GPUメモリ24は、2つの領域(すなわち、グラフィックスメモリ44および非グラフィックスメモリ46)に分割され得る。この例では、グラフィックスメモリ44はグラフィックス機能のために確保され得、非グラフィックスメモリ46は非グラフィックス機能のために確保され得る。
[0065]GPUメモリ24は、グラフィックスメモリ44のためのストレージスペースを非グラフィックスメモリ46よりも優先させ得る。一例として、グラフィックスコマンドプロセッサ32および非グラフィックスコマンドプロセッサ38のうちの少なくとも1つは、ストレージグラフィックスデータを非グラフィックスデータよりも優先させるようにGPUメモリ24に命令し得る。言い換えれば、グラフィックス機能(たとえば、命令またはコマンド、命令またはコマンドによって使用されるべきデータ、および得られたデータ)のための記憶は非グラフィックス機能のための記憶よりも優先させられ得る。この例では、次いで、非グラフィックス機能のためのデータは、GPUメモリ24内にローカルにではなく、システムメモリ26に記憶され得る。また、キャッシュミスが生じた場合、グラフィックスアプリケーション28のための要求、および一般のグラフィックス機能は、たとえば、システムバスを介した、システムメモリ26へのアクセスのために、非グラフィックスアプリケーション30および一般の非グラフィックス機能に勝る優先度を与えられ得る。メモリ記憶および取出しにおけるそのような優先度は、ユーザエクスペリエンスの低下を最小限に抑えるために、グラフィックスアプリケーションが適時に実行されることをさらに保証し得る。
[0066]図3は、図1のGPUの別の例をさらに詳細に示すブロック図である。図3に示すGPU16は、図2に示したGPU16と実質的に同様であり得る。したがって、簡潔のために、異なるそれらのユニットのみについて、詳細に説明する。図2に示したユニットと同じ参照番号をもつ図3に示すユニットは、実質的に同様の方法で機能し得る。
[0067]図3の例では、GPU16は、2つの別個のコマンドプロセッサ(たとえば、図2のグラフィックスコマンドプロセッサ32および非グラフィックスコマンドプロセッサ38)ではなく、単一のコマンドプロセッサ33を含み得る。この例では、コマンドプロセッサ33は、コマンドの2つ以上のストリームを並列に(すなわち、同時に)処理するように構成され得る。たとえば、GPUドライバ14は、GPUドライバ14がグラフィックスコマンドプロセッサ32と非グラフィックスコマンドプロセッサ38とに送信した命令と同様の命令をコマンドプロセッサ33に送信し得る。
[0068]一例として、GPUドライバ14は、システムメモリ26からグラフィックスアプリケーション28の命令を取り出し、システムメモリ26からの命令によって使用されるべきであるデータを取り出し、グラフィックスアプリケーション28のために確保されたシェーダコア42の数を示し、場合によってはシェーダコア42のうちのどのシェーダコアがグラフィックスアプリケーション28のために確保されるかを示すようにコマンドプロセッサ33に命令し得る。コマンドプロセッサ33がグラフィックスアプリケーション28のための命令を受信するのと同時にまたは重複して、コマンドプロセッサ33は、システムメモリ26から非グラフィックスアプリケーション30の命令を取り出し、システムメモリ26からの命令によって使用されるべきであるデータを取り出し、非グラフィックスアプリケーション30のために確保されたシェーダコア42の数を示し、場合によってはシェーダコア42のうちのどのシェーダコアが非グラフィックスアプリケーション30のために確保されるかを示すようにコマンドプロセッサ33に命令する、GPUドライバ14からの命令を受信し得る。
[0069]この例では、コマンドプロセッサ33は、どの命令がグラフィックス機能のためのものであるかと、どの命令が非グラフィックス機能のためのものであるかとを画成するように構成され得る。たとえば、GPUドライバ14は、GPUドライバ14がコマンドプロセッサ33に送信する命令が、グラフィックス機能のためのものであるか、非グラフィックス機能のためのものであるかを示し得る。概して、GPUドライバ14およびコマンドプロセッサ33は、グラフィックスアプリケーション28の命令など、グラフィックス機能のための命令と、非グラフィックスアプリケーション30の命令など、非グラフィックス機能のための命令とを画成するために任意の技法を利用し得る。
[0070]単一のコマンドプロセッサを含むGPUの他の例では、そのようなコマンドプロセッサは、同時にまたは重複してプロセッサから複数の命令ストリームを受信することが可能でないことがある。コマンドプロセッサ33は、GPU16に、グラフィックスアプリケーション28および非グラフィックスアプリケーション30のための命令を同時に処理させ得る。いくつかの事例では、グラフィックスアプリケーション28のための命令がないか、またはグラフィックスアプリケーション28がアイドルである場合、コマンドプロセッサ33は、依然として、実行のために非グラフィックスアプリケーション30のための命令を受信し得る。同様に、非グラフィックスアプリケーション30のための命令がないか、またはグラフィックスアプリケーション30がアイドルである場合、コマンドプロセッサ33は、依然として、実行のためにグラフィックスアプリケーション28のための命令を受信し得る。
[0071]図4は、本開示で説明する1つまたは複数の例による例示的な技法を示すフローチャートである。単に説明のために、および理解を容易にするために、図1〜図3を参照する。
[0072]GPUが、グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサの1つまたは複数のシェーダコアの第1のセットの指示を受信する(48)。GPUはまた、非グラフィックスアプリケーションのために確保された、シェーダプロセッサの1つまたは複数のシェーダコアの第2の異なるセットの指示を受信する(50)。一例として、GPU16の第1のコマンドプロセッサ(たとえば、グラフィックスコマンドプロセッサ32)が、グラフィックスアプリケーション28のために確保されたシェーダコア42から、シェーダコアの第1のセットのGPUドライバ14からの指示を受信し得る。この例では、GPU16の第2の異なるコマンドプロセッサ(たとえば、非グラフィックスコマンドプロセッサ38)は、非グラフィックスアプリケーション30のために確保されたシェーダコア42から、シェーダコアの第2の異なるセットのGPUドライバ14からの指示を受信し得る。代替例では、第1のコマンドプロセッサと第2のコマンドプロセッサは同じコマンドプロセッサであり得る。たとえば、この代替例では、コマンドプロセッサ33は、グラフィックスアプリケーション28のために確保されたシェーダコアの第1のセットのGPUドライバ14からの指示と、非グラフィックスアプリケーション30のために確保されたシェーダコアの第2の異なるセットの指示とを受信し得る。
[0073]これらの例のいずれでも、シェーダコアの第1のセットの指示およびシェーダコアの第2の異なるセットの指示は、シェーダコア42のうちのいくつがグラフィックスアプリケーション28のために確保され、シェーダコア42のうちのいくつが非グラフィックスアプリケーション30のために確保されるかを示す指示を含み得る。いくつかの例では、シェーダコアの第1のセットの指示およびシェーダコアの第2の異なるセットの指示はまた、シェーダコア42のうちのどのシェーダコアがグラフィックスアプリケーション28のために確保され、シェーダコア42のうちのどのシェーダコアが非グラフィックスアプリケーション30のために確保されるかの指示を含み得る。
[0074]シェーダコアの第1のセット(たとえば、1つまたは複数のシェーダコア42)は、グラフィックスアプリケーション28などのグラフィックスアプリケーションの命令を実行する(52)。たとえば、グラフィックスコマンドプロセッサ32またはコマンドプロセッサ33は、実行のためにグラフィックスアプリケーション28の命令を受信し、シェーダコアの第1のセットにグラフィックスアプリケーション28の命令を実行させ得る。この例では、シェーダコアの第1のセットは非グラフィックスアプリケーション30の命令を実行しないことがある。いくつかの例では、第1の作業負荷分配ユニット(たとえば、グラフィックス作業負荷分配ユニット34)は、シェーダコアの第1のセットのうちのどのシェーダコアがグラフィックスアプリケーション28の命令のうちのどの命令を実行するかを判断し得る。この例では、シェーダコアの第1のセットは、グラフィックス作業負荷分配ユニット34によって判断された命令を実行し得る。
[0075]シェーダコアの第2のセット(たとえば、残りのシェーダコア42のうちの1つまたは複数)は非グラフィックスアプリケーション30の命令を実行する(54)。たとえば、非グラフィックスコマンドプロセッサ38またはコマンドプロセッサ33は、実行のために非グラフィックスアプリケーション30の命令を受信し、シェーダコアの第2のセットに非グラフィックスアプリケーション30の命令を実行させ得る。この例では、シェーダコアの第2のセットはグラフィックスアプリケーション28の命令を実行しないことがある。いくつかの例では、第2の作業負荷分配ユニット(たとえば、非グラフィックス作業負荷分配ユニット40)は、シェーダコアの第2のセットのうちのどのシェーダコアが非グラフィックスアプリケーション30ののうちのどの命令を実行するかを判断し得る。この例では、シェーダコアの第2のセットは、非グラフィックス作業負荷分配ユニット40によって判断された命令を実行し得る。
[0076]いくつかの例では、シェーダコアの第1のセットがグラフィックスアプリケーション28の命令を実行しているのと同時に、シェーダコアの第2のセットは、グラフィックスアプリケーション28および非グラフィックスアプリケーション30の並列実行を可能にするために非グラフィックスアプリケーション30の命令を実行していることがある。いくつかの例では、GPU16が、グラフィックスコマンドプロセッサ32またはコマンドプロセッサ33を介して、グラフィックスアプリケーション28のための命令を受信しているのと同時に、GPU16は、非グラフィックスコマンドプロセッサ38またはコマンドプロセッサ33を介して、非グラフィックスアプリケーション30のための命令を受信している。
[0077]図5は、本開示で説明する1つまたは複数の例による別の例示的な技法を示すフローチャートである。単に説明のために、および理解を容易にするために、図1〜図3を参照する。
[0078]プロセッサ上のドライバが、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第1のセットを判断する(56)。たとえば、プロセッサ12上で実行していることがあるGPUドライバ14は、グラフィックスアプリケーション28を実行するために、GPU16のシェーダプロセッサ22のシェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーション28のために確保されるかを判断し得る。
[0079]プロセッサ上のドライバは、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、GPUのシェーダプロセッサのシェーダコアの第2のセットを判断する(58)。たとえば、GPUドライバ14は、非グラフィックスアプリケーション30を実行するために、GPU16のシェーダプロセッサ22のシェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーション30のために確保されるかを判断し得る。
[0080]いくつかの例では、GPUドライバ14は、シェーダコアの第1のセット(すなわち、グラフィックスアプリケーション28のために確保されたシェーダコア)がシェーダコアの第2のセット(すなわち、非グラフィックスアプリケーション30のために確保されたシェーダコア)よりも多くのシェーダコアを含むと判断し得る。いくつのシェーダコアがグラフィックスアプリケーション28のために確保されるべきかの判断を行うために、GPUドライバ14は、現在キューイングされている、グラフィックスアプリケーション28の命令の数を判断し得る。同様に、いくつのシェーダコアが非グラフィックスアプリケーション30のために確保されるべきかの判断を行うために、GPUドライバ14は、現在キューイングされている、非グラフィックスアプリケーション30の命令の数を判断し得る。
[0081]ドライバは、シェーダコアの第1のセットの指示をGPU内の第1のコマンドプロセッサに送信する(60)。ドライバはまた、シェーダコアの第2のセットの指示をGPU内の第2のコマンドプロセッサに送信する(62)。次いで、GPUは、シェーダコアの第1のセット上でグラフィックスアプリケーション28を実行し、シェーダコアの第2のセット上で非グラフィックスアプリケーション30を実行し得る。いくつかの例では、第1のコマンドプロセッサと第2のコマンドプロセッサは異なるコマンドプロセッサであり得る。代替例では、第1のコマンドプロセッサと第2のコマンドプロセッサは同じコマンドプロセッサであり得る。たとえば、GPUドライバ14は、第1のコマンドプロセッサと第2のコマンドプロセッサが異なるコマンドプロセッサである例において、シェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーション28のために確保されるかを示す指示をグラフィックスコマンドプロセッサ32に送信し、シェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーション30ために確保されるかを示す指示を非グラフィックスコマンドプロセッサ38に送信し得る。別の例では、GPUドライバ14は、第1のコマンドプロセッサと第2のコマンドプロセッサが同じコマンドプロセッサである例において、シェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーション28のために確保されるかを示す指示をコマンドプロセッサ33に送信し、シェーダコア42のうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーション30ために確保されるかを示す指示をコマンドプロセッサ33に送信し得る。
[0082]図6は、図1に示した例示的なデバイスをさらに詳細に示すブロック図である。たとえば、図6は、図1のデバイス10をより詳細に示す。簡潔のために、図6に示されているが、図1に示されていないデバイス10の構成要素のみについて、詳細に説明する。
[0083]図6の例では、デバイス10は、プロセッサ12と、GPU16と、メモリ26と、トランシーバモジュール64と、ユーザインターフェース66と、ディスプレイ68と、ディスプレイプロセッサ70とを含み得る。デバイス10は、明快のために図6に示されていない追加のモジュールまたはユニットを含み得る。たとえば、デバイス10は、デバイス10がモバイルワイヤレス電話である例において電話通信を実現するために、そのいずれも図6に示されていないスピーカーおよびマイクロフォンを含み、またはデバイス10がメディアプレーヤである例においてスピーカーを含み得る。デバイス10はまた、ビデオカメラを含み得る。さらに、デバイス10に示された様々なモジュールおよびユニットは、デバイス10のあらゆる例において必要であるとは限らない。たとえば、ユーザインターフェース66およびディスプレイ68は、デバイス10が、デスクトップコンピュータ、あるいは外部ユーザインターフェースまたはディスプレイとインターフェースする能力がある他のデバイスである例において、デバイス10の外部にあり得る。
[0084]ユーザインターフェース66の例としては、限定はしないが、トラックボール、マウス、キーボード、および他のタイプの入力デバイスがある。ユーザインターフェース66はまた、タッチスクリーンであり得、ディスプレイ68の一部として組み込まれ得る。トランシーバモジュール64は、デバイス10と別のデバイスまたはネットワークとの間のワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール64は、ワイヤードまたはワイヤレス通信のための変調器、復調器、増幅器および他のそのような回路を含み得る。ディスプレイ68は、液晶ディスプレイ(LCD)、有機発光ダイオードディスプレイ(OLED)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスを備え得る。
[0085]いくつかの例では、GPU16が、ディスプレイ68上での表示のためにグラフィックスデータを生成した後、GPU16は、一時記憶のために、得られたグラフィックスデータをシステムメモリ26に出力し得る。ディスプレイプロセッサ70は、システムメモリ26からグラフィックスデータを取り出し、グラフィックスデータに対して何らかの後処理を実行し、得られたグラフィックスデータをディスプレイ68に出力し得る。たとえば、ディスプレイプロセッサ70は、さらなる拡張を実行するか、またはGPU16によって生成されたグラフィックスデータをスケーリングし得る。他の例では、GPU16がグラフィックスデータをシステムメモリ26内のフレームバッファに出力することが可能であり得、フレームバッファは、次いで、グラフィックスデータをディスプレイ68に出力する。この例では、ディスプレイプロセッサ70は必要でないことがある。
[0086]図6の例では、プロセッサ12およびGPU16は、図1〜図5に関して上記で説明したように構成され得る。たとえば、GPU16は、複数のシェーダコアを含むシェーダプロセッサを含み得る。プロセッサ12は、グラフィックスアプリケーションを実行するためにGPU16のための複数のシェーダコアの第1のセットを確保し、非グラフィックスアプリケーションを実行するためにGPU16のための複数のシェーダコアの第2のセットを確保し得る。この例では、上記で説明したように、グラフィックスアプリケーションのために確保されたシェーダコアは非グラフィックスアプリケーションのための命令を実行しないことがあり、その逆も同様である。
[0087]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装した場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶され得る。コンピュータ可読媒体はコンピュータデータ記憶媒体を含み得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
[0088]コードは、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
[0089]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、ハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
[0090]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
グラフィックス処理ユニット(GPU)を用いて、グラフィックスアプリケーションのために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信することと、
前記GPUを用いて、非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することと、
前記GPUを用いて、前記グラフィックスアプリケーションの命令を受信することと、
前記GPUを用いて、前記非グラフィックスアプリケーションの命令を受信することと、
前記GPUを用いて、シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令を実行することと、
前記グラフィックスアプリケーションの前記命令を実行するのと実質的に同時に、前記GPUを用いて、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令を実行することと
を備える方法。
[C2]
シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUの第1のコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、前記GPUの第2の異なるコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備える、C1に記載の方法。
[C3]
シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUのコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、同じコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備える、C1に記載の方法。
[C4]
シェーダコアの前記第1のセットで前記非グラフィックスアプリケーションの前記命令を実行しないことと、
シェーダコアの前記第2のセットで前記グラフィックスアプリケーションの前記命令を実行しないことと
をさらに備える、C1に記載の方法。
[C5]
前記非グラフィックスアプリケーションの命令を受信することが、前記グラフィックスアプリケーションの命令を受信するのと同時に前記非グラフィックスアプリケーションの前記命令を受信することを備える、C1に記載の方法。
[C6]
第1の作業負荷分配ユニットを用いて、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと、
第2の異なる作業負荷分配ユニットを用いて、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと
をさらに備え、
前記グラフィックスアプリケーションの前記命令を実行することは、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて前記グラフィックスアプリケーションの前記命令を実行することを備え、
前記非グラフィックスアプリケーションの前記命令を実行することは、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて前記非グラフィックスアプリケーションの前記命令を実行することを備える、C1に記載の方法。
[C7]
前記グラフィックスアプリケーションの前記命令の前記実行の結果を前記GPU内のメモリキャッシュに記憶することを前記非グラフィックスアプリケーションの前記命令の前記実行の結果を前記GPU内の前記メモリキャッシュに記憶することよりも優先させること
をさらに備える、C1に記載の方法。
[C8]
シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUの第1のコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、前記GPUの第2の異なるコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備え、前記方法は、
前記非グラフィックスアプリケーションの命令がないとき、前記第2のコマンドプロセッサの電源を切断するための指示を受信することと、
前記指示を受信したことに応答して前記第2のコマンドプロセッサの電源を切断することと
をさらに備える、C1に記載の方法。
[C9]
シェーダコアの前記第1のセットのシェーダコアの数がシェーダコアの前記第2のセットのシェーダコアの数とは異なる、C1に記載の方法。
[C10]
プロセッサ上のドライバを用いて、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの前記第1のセットを判断することと、
前記プロセッサ上の前記ドライバを用いて、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの前記第2のセットを判断することと、
シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
を備える方法。
[C11]
シェーダコアの前記第1のセットを判断することは、前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが前記グラフィックスアプリケーションのために確保されるべきかを判断することを備え、シェーダコアの前記第2のセットを判断することは、前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが前記非グラフィックスアプリケーションのために確保されるべきかを判断することを備える、C10に記載の方法。
[C12]
シェーダコアの前記第1のセットがシェーダコアの前記第2のセットよりも多くのシェーダコアを含むと判断すること
をさらに備える、C10に記載の方法。
[C13]
シェーダコアの前記第1のセットを判断することが、前記グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第1のセットを判断することを備える、C10に記載の方法。
[C14]
シェーダコアの前記第2のセットを判断することが、前記非グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第2のセットを判断することを備える、C10に記載の方法。
[C15]
送信することが、
シェーダコアの前記第1のセットの前記指示を前記GPU内の第1のコマンドプロセッサに送信することと、
シェーダコアの前記第2のセットの前記指示を前記GPU内の第2の異なるプロセッサに送信することと
を備える、C10に記載の方法。
[C16]
送信することが、
シェーダコアの前記第1のセットの前記指示を前記GPU内のコマンドプロセッサに送信することと、
シェーダコアの前記第2のセットの前記指示を前記GPU内の同じコマンドプロセッサに送信することと
を備える、C10に記載の方法。
[C17]
複数のシェーダコアを含むシェーダプロセッサと、
グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの第1のセットの指示を受信し、前記グラフィックスアプリケーションの前記命令を受信するように構成された第1のコマンドプロセッサと、
非グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの第2の異なるセットの指示を受信し、前記非グラフィックスアプリケーションの前記命令を受信するように構成された第2のコマンドプロセッサと
を備えるグラフィックス処理ユニット(GPU)。
[C18]
前記第1のコマンドプロセッサが前記第2のコマンドプロセッサとは異なる、C17に記載のGPU。
[C19]
前記第1のコマンドプロセッサが前記第2のコマンドプロセッサと同じである、C17に記載のGPU。
[C20]
前記シェーダコアの前記第1のセットが、前記グラフィックスアプリケーションの前記命令を実行するように構成され、
前記グラフィックスアプリケーションの前記命令の前記実行と実質的に同時に、前記シェーダコアの前記第2のセットが、前記非グラフィックスアプリケーションの前記命令を実行するように構成された、C17に記載のGPU。
[C21]
シェーダコアの前記第1のセットが、前記非グラフィックスアプリケーションの命令を実行しないように構成され、
シェーダコアの前記第2のセットが、前記グラフィックスアプリケーションの命令を実行しないように構成された、C17に記載のGPU。
[C22]
前記第1のコマンドプロセッサは、前記第2のコマンドプロセッサが前記非グラフィックスアプリケーションの前記命令を受信するのと同時に前記グラフィックスアプリケーションの前記命令を受信するように構成された、C17に記載のGPU。
[C23]
前記シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第1の作業負荷分配ユニットと、
前記シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第2の異なる作業負荷分配ユニットと
をさらに備え、
前記シェーダコアの前記第1のセットが、前記第1の作業負荷分配ユニットの前記判断に基づいて前記グラフィックスアプリケーションの前記命令を実行するように構成され、
前記シェーダコアの前記第2のセットが、前記第2の作業負荷分配ユニットの前記判断に基づいて前記非グラフィックスアプリケーションの前記命令を実行するように構成された、C17に記載のGPU。
[C24]
メモリキャッシュ
をさらに備え、
前記第1のコマンドプロセッサおよび前記第2のコマンドプロセッサのうちの少なくとも1つが、前記メモリキャッシュへの前記グラフィックスアプリケーションの前記命令の前記実行の結果の記憶を前記メモリキャッシュへの前記非グラフィックスアプリケーションの前記命令の前記実行の結果の記憶よりも優先させるように構成された、C17に記載のGPU。
[C25]
前記GPUは、前記非グラフィックスアプリケーションの命令がないとき、前記第2のコマンドプロセッサの電源を切断するための指示を受信し、電源を切断するための前記指示の前記受信に応答して前記第2のコマンドプロセッサの電源を切断するように構成された、C17に記載のGPU。
[C26]
前記シェーダコアの前記第1のセットのシェーダコアの数が前記シェーダコアの前記第2のセットのシェーダコアの数とは異なる、C17に記載のGPU。
[C27]
シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサの前記シェーダコアの前記第1のセットを判断することと、
シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの前記第2のセットを判断することと、
シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
を行うように構成されたプロセッサ。
[C28]
前記プロセッサが、前記判断と前記GPUへの前記送信とを行うドライバを実行する、C27に記載のプロセッサ。
[C29]
前記プロセッサは、シェーダコアの前記第1のセットを判断するために、前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが前記グラフィックスアプリケーションのために確保されるべきかを判断し、シェーダコアの前記第2のセットを判断するために、前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが前記非グラフィックスアプリケーションのために確保されるべきかを判断するように構成された、C27に記載のプロセッサ。
[C30]
前記プロセッサは、シェーダコアの前記第1のセットがシェーダコアの前記第2のセットよりも多くのシェーダコアを含むと判断するように構成された、C27に記載のプロセッサ。
[C31]
前記プロセッサが、前記グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第1のセットを判断するように構成された、C27に記載のプロセッサ。
[C32]
前記プロセッサが、前記非グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第2のセットを判断するように構成された、C27に記載のプロセッサ。
[C33]
前記プロセッサが、
前記シェーダコアの前記第1のセットの前記指示を前記GPUの第1のコマンドプロセッサに送信することと、
前記シェーダコアの前記第2のセットの前記指示を前記GPUの第2の異なるコマンドプロセッサに送信することと
を行うように構成された、C27に記載のプロセッサ。
[C34]
前記プロセッサが、
前記シェーダコアの前記第1のセットの前記指示を前記GPUのコマンドプロセッサに送信することと、
前記シェーダコアの前記第2のセットの前記指示を前記GPUの同じコマンドプロセッサに送信することと
を行うように構成された、C27に記載のプロセッサ。
[C35]
グラフィックス処理ユニット(GPU)であって、
グラフィックスアプリケーションのために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信するための第1の手段と、
非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信するための第2の手段と、
前記グラフィックスアプリケーションの命令を受信するための第3の手段と、
前記非グラフィックスアプリケーションの命令を受信するための第4の手段と、
シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令を実行するための手段と、
前記グラフィックスアプリケーションの前記命令を実行するのと同時に、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令を実行するための手段と
を備えるGPU。
[C36]
受信するための前記第1の手段および受信するための前記第2の手段が、受信するための異なる手段を備える、C35に記載のGPU。
[C37]
1つまたは複数のプロセッサに、
グラフィックス処理ユニット(GPU)を用いて、グラフィックスアプリケーションのために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信することと、
前記GPUを用いて、非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することと、
前記GPUを用いて、前記グラフィックスアプリケーションの命令を受信することと、
前記GPUを用いて、前記非グラフィックスアプリケーションの命令を受信することと、
前記GPUを用いて、シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令を実行することと、
前記グラフィックスアプリケーションの前記命令を実行するのと同時に、前記GPUを用いて、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令を実行することと
を行わせる命令を備えるコンピュータ可読記憶媒体。
[C38]
シェーダコアの前記第1のセットの前記指示を受信するための前記命令が、第1のコマンドプロセッサを用いてシェーダコアの前記第1のセットの前記指示を受信するための命令を備え、シェーダコアの前記第2のセットの前記指示を受信するための前記命令が、第2の異なるコマンドプロセッサを用いてシェーダコアの前記第2のセットの前記指示を受信するための命令を備える、C37に記載のコンピュータ可読記憶媒体。
[C39]
シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの前記第1のセットを判断するための手段と、
シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの前記第2のセットを判断するための手段と、
シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信するための手段と
を備えるプロセッサ。
[C40]
1つまたは複数のプロセッサに、
前記1つまたは複数のプロセッサ上のドライバを用いて、シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアの前記第1のセットを判断することと、
前記1つまたは複数のプロセッサ上の前記ドライバを用いて、シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの前記第2のセットを判断することと、
シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
を行わせる命令を備えるコンピュータ可読記憶媒体。
[C41]
プロセッサと、
グラフィックス処理ユニット(GPU)と
を備え、
前記プロセッサが、
シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、前記GPUのシェーダプロセッサの前記シェーダコアの前記第1のセットを判断することと、
シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、前記GPUの前記シェーダプロセッサのシェーダコアの前記第2のセットを判断することと、
シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
を行うように構成され、
前記GPUが、
シェーダコアの前記第1のセットとシェーダコアの前記第2のセットとを含む複数のシェーダコアを含む前記シェーダプロセッサと、
前記グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの前記第1のセットの前記指示を受信し、前記グラフィックスアプリケーションの前記命令を受信するように構成された第1のコマンドプロセッサと、
前記非グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの前記第2の異なるセットの前記指示を受信し、前記非グラフィックスアプリケーションの前記命令を受信するように構成された第2のコマンドプロセッサと
を備える、装置。

Claims (34)

  1. グラフィックス処理ユニット(GPU)を用いて、グラフィックスアプリケーションの命令を実行するために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信することと、
    前記GPUを用いて、非グラフィックスアプリケーションの命令を実行するために確保された、同じGPUの同じシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することと、
    前記GPUを用いて、前記グラフィックスアプリケーションの前記命令を受信することと、
    前記GPUを用いて、前記非グラフィックスアプリケーションの前記命令を受信することと、
    前記GPUの第1の作業負荷分配ユニットを用いて、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと、
    前記GPUの第2の異なる作業負荷分配ユニットを用いて、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと、
    前記GPUを用いて、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令のすべてを実行することと、
    前記グラフィックスアプリケーションの前記命令を実行するのと実質的に同時に、前記GPUを用いて、前記非グラフィックスアプリケーションの前記実行と前記グラフィックスアプリケーションの前記実行とをインターリーブすることなく、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令のすべてを実行することと
    を備える方法。
  2. シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUの第1のコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、前記GPUの第2の異なるコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備える、請求項1に記載の方法。
  3. シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUのコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、同じコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備える、請求項1に記載の方法。
  4. 前記非グラフィックスアプリケーションの命令を受信することが、前記グラフィックスアプリケーションの命令を受信するのと同時に前記非グラフィックスアプリケーションの前記命令を受信することを備える、請求項1に記載の方法。
  5. 前記グラフィックスアプリケーションの前記命令の前記実行の結果を前記GPU内のメモリキャッシュに記憶することを前記非グラフィックスアプリケーションの前記命令の前記実行の結果を前記GPU内の前記メモリキャッシュに記憶することよりも優先させること
    をさらに備える、請求項1に記載の方法。
  6. シェーダコアの前記第1のセットの前記指示を受信することが、前記GPUの第1のコマンドプロセッサを用いて、シェーダコアの前記第1のセットの前記指示を受信することを備え、シェーダコアの前記第2のセットの前記指示を受信することが、前記GPUの第2の異なるコマンドプロセッサを用いて、シェーダコアの前記第2のセットの前記指示を受信することを備え、前記方法は、
    前記非グラフィックスアプリケーションの命令がないとき、前記第2のコマンドプロセッサの電源を切断するための指示を受信することと、
    前記指示を受信したことに応答して前記第2のコマンドプロセッサの電源を切断することと
    をさらに備える、請求項1に記載の方法。
  7. シェーダコアの前記第1のセットのシェーダコアの数がシェーダコアの前記第2のセットのシェーダコアの数とは異なる、請求項1に記載の方法。
  8. プロセッサ上のドライバを用いて、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーションのために確保されるかを判断することと、前記グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第1のセットを備え、前記グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第1のセット上で実行されるべきである、
    前記プロセッサ上の前記ドライバを用いて、同じGPUの同じシェーダプロセッサの前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーションのために確保されるかを判断することと、前記非グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第2の異なるセットを備え、前記非グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第2のセットによって実行されるべきである、
    前記GPUが、前記非グラフィックスアプリケーションと前記グラフィックスアプリケーションの前記実行をインターリーブすることなく、実質的に同時に前記グラフィックスアプリケーションの命令と前記非グラフィックスアプリケーションの命令とを実行することを可能にするために、シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
    を備える方法。
  9. より多くのシェーダコアが前記グラフィックスアプリケーションを実行するために利用可能であるように、シェーダコアの前記第1のセットがシェーダコアの前記第2のセットよりも多くのシェーダコアを含むと判断すること
    をさらに備える、請求項に記載の方法。
  10. シェーダコアの前記第1のセットを判断することが、前記グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第1のセットを判断することを備える、請求項に記載の方法。
  11. シェーダコアの前記第2のセットを判断することが、前記非グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第2のセットを判断することを備える、請求項に記載の方法。
  12. 送信することが、
    シェーダコアの前記第1のセットの前記指示を前記GPU内の第1のコマンドプロセッサに送信することと、
    シェーダコアの前記第2のセットの前記指示を前記GPU内の第2の異なるプロセッサに送信することと
    を備える、請求項に記載の方法。
  13. 送信することが、
    シェーダコアの前記第1のセットの前記指示を前記GPU内のコマンドプロセッサに送信することと、
    シェーダコアの前記第2のセットの前記指示を前記GPU内の同じコマンドプロセッサに送信することと
    を備える、請求項に記載の方法。
  14. 複数のシェーダコアを含むシェーダプロセッサと、
    グラフィックスアプリケーションの命令を実行するために確保された前記シェーダプロセッサの前記シェーダコアの第1のセットの指示を受信し、前記グラフィックスアプリケーションの前記命令を受信するように構成された第1のコマンドプロセッサと、
    非グラフィックスアプリケーションの命令を実行するために確保された同じシェーダプロセッサの前記シェーダコアの第2の異なるセットの指示を受信し、前記非グラフィックスアプリケーションの前記命令を受信するように構成された第2のコマンドプロセッサと、
    前記シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第1の作業負荷分配ユニットと、
    前記シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第2の異なる作業負荷分配ユニットと、
    を備え、
    他のシェーダコアではなく、前記シェーダコアの前記第1のセットがシェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記第1の作業負荷分配ユニットの前記判断に基づいて、前記グラフィックスアプリケーションの前記命令のすべてを実行するように構成され、
    他のシェーダコアではなく、前記シェーダコアの前記第2のセットが、前記グラフィックスアプリケーションの前記命令の前記実行と実質的に同時に、前記非グラフィックスアプリケーションの前記実行と前記グラフィックスアプリケーションの前記実行とをインターリーブすることなく、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記第2の作業負荷分配ユニットの前記判断に基づいて、前記非グラフィックスアプリケーションの前記命令のすべてを実行するように構成された、
    グラフィックス処理ユニット(GPU)。
  15. 前記第1のコマンドプロセッサが前記第2のコマンドプロセッサとは異なる、請求項14に記載のGPU。
  16. 前記第1のコマンドプロセッサが前記第2のコマンドプロセッサと同じである、請求項14に記載のGPU。
  17. 前記第1のコマンドプロセッサは、前記第2のコマンドプロセッサが前記非グラフィックスアプリケーションの前記命令を受信するのと同時に前記グラフィックスアプリケーションの前記命令を受信するように構成された、請求項14に記載のGPU。
  18. メモリキャッシュ
    をさらに備え、
    前記第1のコマンドプロセッサおよび前記第2のコマンドプロセッサのうちの少なくとも1つが、前記メモリキャッシュへの前記グラフィックスアプリケーションの前記命令の前記実行の結果の記憶を前記メモリキャッシュへの前記非グラフィックスアプリケーションの前記命令の前記実行の結果の記憶よりも優先させるように構成された、請求項14に記載のGPU。
  19. 前記GPUは、前記非グラフィックスアプリケーションの命令がないとき、前記第2のコマンドプロセッサの電源を切断するための指示を受信し、電源を切断するための前記指示の前記受信に応答して前記第2のコマンドプロセッサの電源を切断するように構成された、請求項14に記載のGPU。
  20. 前記シェーダコアの前記第1のセットのシェーダコアの数が前記シェーダコアの前記第2のセットのシェーダコアの数とは異なる、請求項14に記載のGPU。
  21. ラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーションのために確保されるかを判断することと、前記グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第1のセットを備え、前記グラフィックスアプリケーションのすべての命令は、前記シェーダコアの前記第1のセット上で実行されるべきである、
    じGPUの同じシェーダプロセッサの前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーションのために確保されるかを判断することと、前記非グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第2の異なるセットを備え、前記非グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第2のセットによって実行されるべきである、
    前記GPUが、前記非グラフィックスアプリケーションと前記グラフィックスアプリケーションの前記実行をインターリーブすることなく、実質的に同時に前記グラフィックスアプリケーションの命令と前記非グラフィックスアプリケーションの命令とを実行することを可能にするために、シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
    を行うように構成されたプロセッサ。
  22. 前記プロセッサが、前記判断と前記GPUへの前記送信とを行うドライバを実行する、請求項21に記載のプロセッサ。
  23. 前記プロセッサは、より多くのシェーダコアが前記グラフィックスアプリケーションを実行するために利用可能であるように、シェーダコアの前記第1のセットがシェーダコアの前記第2のセットよりも多くのシェーダコアを含むと判断するように構成された、請求項21に記載のプロセッサ。
  24. 前記プロセッサが、前記グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第1のセットを判断するように構成された、請求項21に記載のプロセッサ。
  25. 前記プロセッサが、前記非グラフィックスアプリケーションのキューイングされた命令の数に基づいてシェーダコアの前記第2のセットを判断するように構成された、請求項21に記載のプロセッサ。
  26. 前記プロセッサが、
    前記シェーダコアの前記第1のセットの前記指示を前記GPUの第1のコマンドプロセッサに送信することと、
    前記シェーダコアの前記第2のセットの前記指示を前記GPUの第2の異なるコマンドプロセッサに送信することと
    を行うように構成された、請求項21に記載のプロセッサ。
  27. 前記プロセッサが、
    前記シェーダコアの前記第1のセットの前記指示を前記GPUのコマンドプロセッサに送信することと、
    前記シェーダコアの前記第2のセットの前記指示を前記GPUの同じコマンドプロセッサに送信することと
    を行うように構成された、請求項21に記載のプロセッサ。
  28. グラフィックス処理ユニット(GPU)であって、
    グラフィックスアプリケーションの命令を実行するために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信するための第1の手段と、
    非グラフィックスアプリケーションの命令を実行するために確保された、同じGPUの同じシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信するための第2の手段と、
    前記グラフィックスアプリケーションの前記命令を受信するための第3の手段と、
    前記非グラフィックスアプリケーションの前記命令を受信するための第4の手段と、
    シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するための手段と、
    シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するための手段と、
    シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令のすべてを実行するための手段と、
    前記グラフィックスアプリケーションの前記命令を実行するのと同時に、前記非グラフィックスアプリケーションの前記実行と前記グラフィックスアプリケーションの前記実行とをインターリーブすることなく、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令のすべてを実行するための手段と
    を備えるGPU。
  29. 受信するための前記第1の手段および受信するための前記第2の手段が、受信するための異なる手段を備える、請求項28に記載のGPU。
  30. グラフィックス処理ユニット(GPU)に、
    前記GPUを用いて、グラフィックスアプリケーションの命令を実行するために確保された、前記GPUのシェーダプロセッサのシェーダコアの第1のセットの指示を受信することと、
    前記GPUを用いて、非グラフィックスアプリケーションの命令を実行するために確保された、同じGPUの同じシェーダプロセッサのシェーダコアの第2の異なるセットの指示を受信することと、
    前記GPUを用いて、前記グラフィックスアプリケーションの前記命令を受信することと、
    前記GPUを用いて、前記非グラフィックスアプリケーションの前記命令を受信することと、
    前記GPUの第1の作業負荷分配ユニットを用いて、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと、
    前記GPUの第2の異なる作業負荷分配ユニットを用いて、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断することと、
    前記GPUを用いて、シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第1のセットで前記グラフィックスアプリケーションの前記命令のすべてを実行することと、
    前記グラフィックスアプリケーションの前記命令を実行するのと同時に、前記GPUを用いて、前記非グラフィックスアプリケーションの前記実行と前記グラフィックスアプリケーションの前記実行とをインターリーブすることなく、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記判断に基づいて、他のシェーダコアではなく、シェーダコアの前記第2のセットで前記非グラフィックスアプリケーションの前記命令のすべてを実行することと
    を行わせる命令を備える、非一時的コンピュータ可読記憶媒体。
  31. シェーダコアの前記第1のセットの前記指示を受信するための前記命令が、第1のコマンドプロセッサを用いてシェーダコアの前記第1のセットの前記指示を受信するための命令を備え、シェーダコアの前記第2のセットの前記指示を受信するための前記命令が、第2の異なるコマンドプロセッサを用いてシェーダコアの前記第2のセットの前記指示を受信するための命令を備える、請求項30に記載の非一時的コンピュータ可読記憶媒体。
  32. ラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーションのために確保されるかを判断するための手段と、前記グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第1のセットを備え、前記グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第1のセット上で実行されるべきである、
    じGPUの同じシェーダプロセッサの前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーションのために確保されるかを判断するための手段と、前記非グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第2の異なるセットを備え、前記非グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第2のセットによって実行されるべきである、
    前記GPUが、前記非グラフィックスアプリケーションと前記グラフィックスアプリケーションの前記実行をインターリーブすることなく、実質的に同時に前記グラフィックスアプリケーションの命令と前記非グラフィックスアプリケーションの命令とを実行することを可能にするために、シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信するための手段と
    を備えるプロセッサ。
  33. 1つまたは複数のプロセッサに、
    前記1つまたは複数のプロセッサ上のドライバを用いて、グラフィックス処理ユニット(GPU)のシェーダプロセッサのシェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアがグラフィックスアプリケーションのために確保されるかを判断することと、前記グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第1のセットを備え、前記グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第1のセット上で実行されるべきである、
    前記1つまたは複数のプロセッサ上の前記ドライバを用いて、同じGPUの同じシェーダプロセッサの前記シェーダコアのうちのいくつのシェーダコアおよびどのシェーダコアが非グラフィックスアプリケーションのために確保されるかを判断することと、前記非グラフィックスアプリケーションのために確保された前記判断されたシェーダコアは、シェーダコアの第2の異なるセットを備え、前記非グラフィックスアプリケーションのすべての命令は、シェーダコアの前記第2のセットによって実行されるべきである、
    前記GPUが、前記非グラフィックスアプリケーションと前記グラフィックスアプリケーションの前記実行をインターリーブすることなく、実質的に同時に前記グラフィックスアプリケーションの命令と前記非グラフィックスアプリケーションの命令とを実行することを可能にするために、シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
    を行わせる命令を備える、非一時的コンピュータ可読記憶媒体。
  34. プロセッサと、
    グラフィックス処理ユニット(GPU)と
    を備え、
    前記プロセッサが、
    シェーダコアの第1のセット上で実行されるべきグラフィックスアプリケーションのために確保された、前記GPUのシェーダプロセッサの前記シェーダコアの前記第1のセットを判断することと、
    シェーダコアの第2の異なるセットによって実行されるべき非グラフィックスアプリケーションのために確保された、同じGPUの同じシェーダプロセッサのシェーダコアの前記第2のセットを判断することと、
    前記GPUが、互いに干渉せずに実質的に同時に前記グラフィックスアプリケーションの命令と前記非グラフィックスアプリケーションの命令とを実行することを可能にするために、シェーダコアの前記第1のセットの指示とシェーダコアの前記第2のセットの指示とを前記GPUに送信することと
    を行うように構成され、
    前記GPUが、
    シェーダコアの前記第1のセットとシェーダコアの前記第2のセットとを含む複数のシェーダコアを含む前記シェーダプロセッサと、
    前記グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの前記第1のセットの前記指示を受信し、前記グラフィックスアプリケーションの前記命令を受信するように構成された第1のコマンドプロセッサと、
    前記非グラフィックスアプリケーションの命令を実行するために確保された前記シェーダコアの前記第2の異なるセットの前記指示を受信し、前記非グラフィックスアプリケーションの前記命令を受信するように構成された第2のコマンドプロセッサと
    前記シェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第1の作業負荷分配ユニットと、
    前記シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかを判断するように構成された第2の異なる作業負荷分配ユニットと、
    を備え、
    他のシェーダコアではなく、前記シェーダコアの前記第1のセットがシェーダコアの前記第1のセットのうちのどのシェーダコアが前記グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記第1の作業負荷分配ユニットの前記判断に基づいて、前記グラフィックスアプリケーションの前記命令のすべてを実行するように構成され、
    他のシェーダコアではなく、前記シェーダコアの前記第2のセットが、前記グラフィックスアプリケーションの前記命令の前記実行と実質的に同時に、前記非グラフィックスアプリケーションの前記実行と前記グラフィックスアプリケーションの前記実行とをインターリーブすることなく、シェーダコアの前記第2のセットのうちのどのシェーダコアが前記非グラフィックスアプリケーションの前記命令のうちのどの命令を実行するかの前記第2の作業負荷分配ユニットの前記判断に基づいて、前記非グラフィックスアプリケーションの前記命令のすべてを実行するように構成された、装置。
JP2014560926A 2012-03-07 2013-02-18 グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行 Active JP5792402B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/414,450 US9019289B2 (en) 2012-03-07 2012-03-07 Execution of graphics and non-graphics applications on a graphics processing unit
US13/414,450 2012-03-07
PCT/US2013/026596 WO2013133957A1 (en) 2012-03-07 2013-02-18 Execution of graphics and non-graphics applications on a graphics processing unit

Publications (3)

Publication Number Publication Date
JP2015515052A JP2015515052A (ja) 2015-05-21
JP2015515052A5 JP2015515052A5 (ja) 2015-07-30
JP5792402B2 true JP5792402B2 (ja) 2015-10-14

Family

ID=47833377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014560926A Active JP5792402B2 (ja) 2012-03-07 2013-02-18 グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行

Country Status (8)

Country Link
US (1) US9019289B2 (ja)
EP (1) EP2823459B1 (ja)
JP (1) JP5792402B2 (ja)
KR (1) KR101552079B1 (ja)
CN (1) CN104160420B (ja)
ES (1) ES2572555T3 (ja)
HU (1) HUE027044T2 (ja)
WO (1) WO2013133957A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007054876A1 (de) * 2006-11-22 2008-06-19 Sms Demag Ag Verfahren und Vorrichtung zur Wärmebehandlung von Schweißnähten
US10817043B2 (en) * 2011-07-26 2020-10-27 Nvidia Corporation System and method for entering and exiting sleep mode in a graphics subsystem
US10198788B2 (en) * 2013-11-11 2019-02-05 Oxide Interactive Llc Method and system of temporally asynchronous shading decoupled from rasterization
CN105786449B (zh) * 2014-12-26 2018-07-24 龙芯中科技术有限公司 基于图形处理的指令调度方法及装置
US20160210231A1 (en) * 2015-01-21 2016-07-21 Mediatek Singapore Pte. Ltd. Heterogeneous system architecture for shared memory
US20160260246A1 (en) * 2015-03-02 2016-09-08 Advanced Micro Devices, Inc. Providing asynchronous display shader functionality on a shared shader core
US9799089B1 (en) * 2016-05-23 2017-10-24 Qualcomm Incorporated Per-shader preamble for graphics processing
US20180033114A1 (en) * 2016-07-26 2018-02-01 Mediatek Inc. Graphics Pipeline That Supports Multiple Concurrent Processes
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417734B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
US10861126B1 (en) 2019-06-21 2020-12-08 Intel Corporation Asynchronous execution mechanism
US11436783B2 (en) 2019-10-16 2022-09-06 Oxide Interactive, Inc. Method and system of decoupled object space shading
US11282160B2 (en) * 2020-03-12 2022-03-22 Cisco Technology, Inc. Function-as-a-service (FaaS) model for specialized processing units
GB2600712B (en) * 2020-11-04 2024-08-28 Advanced Risc Mach Ltd Data processing systems
JP2022187116A (ja) * 2021-06-07 2022-12-19 富士通株式会社 多重制御プログラム、情報処理装置および多重制御方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070204268A1 (en) 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
WO2008021310A2 (en) 2006-08-14 2008-02-21 Wms Gaming Inc. Applying graphical characteristics to graphical objects in a wagering game machine
US20090305790A1 (en) * 2007-01-30 2009-12-10 Vitie Inc. Methods and Apparatuses of Game Appliance Execution and Rendering Service
US8922565B2 (en) 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
WO2009085063A1 (en) 2007-12-21 2009-07-09 Studio Gpu, Inc. Method and system for fast rendering of a three dimensional scene
DE102008005124A1 (de) 2008-01-18 2009-07-23 Kuka Roboter Gmbh Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter
WO2011023204A1 (en) 2009-08-24 2011-03-03 Abb Research Ltd. Simulation of distributed virtual control systems
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US9142057B2 (en) 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
US20110212761A1 (en) 2010-02-26 2011-09-01 Igt Gaming machine processor
EP2383648B1 (en) * 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US9311102B2 (en) * 2010-07-13 2016-04-12 Advanced Micro Devices, Inc. Dynamic control of SIMDs
US20120229481A1 (en) * 2010-12-13 2012-09-13 Ati Technologies Ulc Accessibility of graphics processing compute resources
US20130141447A1 (en) * 2011-12-06 2013-06-06 Advanced Micro Devices, Inc. Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs

Also Published As

Publication number Publication date
US9019289B2 (en) 2015-04-28
US20130235053A1 (en) 2013-09-12
HUE027044T2 (en) 2016-08-29
CN104160420A (zh) 2014-11-19
WO2013133957A1 (en) 2013-09-12
KR20140138842A (ko) 2014-12-04
EP2823459A1 (en) 2015-01-14
JP2015515052A (ja) 2015-05-21
ES2572555T3 (es) 2016-06-01
KR101552079B1 (ko) 2015-09-09
CN104160420B (zh) 2016-08-24
EP2823459B1 (en) 2016-02-17

Similar Documents

Publication Publication Date Title
JP5792402B2 (ja) グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行
KR101707289B1 (ko) 그래픽 병렬 처리 유닛에 대한 버퍼 관리
JP6136033B2 (ja) 方法、コンピューティングデバイス、およびプログラム
TWI622015B (zh) 用於處理單元之以訊框為基礎之時脈速率調整
JP2018533112A (ja) コマンドストリームヒントを使用したgpu作業負荷の特徴づけおよび電力管理
US20170053374A1 (en) REGISTER SPILL MANAGEMENT FOR GENERAL PURPOSE REGISTERS (GPRs)
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
US9779473B2 (en) Memory mapping for a graphics processing unit
US20170116701A1 (en) Gpu operation algorithm selection based on command stream marker
KR102521654B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
KR102223446B1 (ko) 비특권 애플리케이션에 의한 그래픽 작업부하 실행의뢰
WO2021236263A1 (en) Gpr optimization in a gpu based on a gpr release mechanism
US11055808B2 (en) Methods and apparatus for wave slot management
US9489707B2 (en) Sampler load balancing
TW202341063A (zh) 動態波配對

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150612

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150612

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150612

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150630

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: 5792402

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