JP2013504127A - Gpuワークのハードウエアベースでのスケジューリング - Google Patents

Gpuワークのハードウエアベースでのスケジューリング Download PDF

Info

Publication number
JP2013504127A
JP2013504127A JP2012528042A JP2012528042A JP2013504127A JP 2013504127 A JP2013504127 A JP 2013504127A JP 2012528042 A JP2012528042 A JP 2012528042A JP 2012528042 A JP2012528042 A JP 2012528042A JP 2013504127 A JP2013504127 A JP 2013504127A
Authority
JP
Japan
Prior art keywords
gpu
buffer
buffers
cpu
subset
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.)
Granted
Application number
JP2012528042A
Other languages
English (en)
Other versions
JP2013504127A5 (ja
JP5722327B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013504127A publication Critical patent/JP2013504127A/ja
Publication of JP2013504127A5 publication Critical patent/JP2013504127A5/ja
Application granted granted Critical
Publication of JP5722327B2 publication Critical patent/JP5722327B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)

Abstract

【解決手段】
CPU等の第1のプロセッサによって発行されるコマンドをGPU等の第2のプロセッサ上でスケジューリングし且つ実行するための装置及び方法が開示される。1つの実施形態では、グラフィクス処理ユニット(GPU)上で処理を実行する方法は、メモリ内の1つ以上のバッファをモニタリングすることと、1つ以上のバッファから第1のサブセットをGPU上での実行のためにGPUのワークロードプロファイルに基づいて選択することと、第1のサブセットをGPU上で実行することと、を含む。GPUはまた、1つ以上のバッファの優先順位を受信してよく、この場合、選択することは受信された優先順位に更に基づく。GPU内でコマンドの優先順位付け及びスケジューリングを行うことによって、システム性能が高まる。
【選択図】図1

Description

本発明は、概してプロセッサ上でのコマンドのスケジューリングに関する。
グラフィクスプロセッサユニット(GPU)は処理能力が急速に増大している。処理能力の増大は、少なくとも部分的には、GPU内に含まれる多重独立処理ユニット(例えばSIMDプロセッサ、ALU)に起因している。多くのグラフィクスアプリケーションにおいて、多重独立処理ユニットは、並列幾何計算、頂点計算、及び/又は画素操作を行うために利用される。例えば、グラフィクスアプリケーションはしばしば単一命令多重データ(SIMD)として特徴付けられることがあり、この場合、命令の同じシーケンスが多重並列データストリーム上で実行されて、動作の実質的なスピードアップを生じさせることができる。
別の成長トレンドは、必ずしもSIMD型の計算ではなくてよい汎用計算のためのGPUの使用である。一般的計算のためのGPUの使用は、GPGPU型のコンピューティングと称される。GPGPU型のコンピューティングにおいては、CPUは、通常はCPUにおいてなされていた計算ワーク項目(compute work items)を行うためにGPUを用いることができる。
従来、GPUのためのワーク、例えば頂点及びテクスチャの情報のストリーム並びにそのような情報を処理するための命令は、GPU上で動作するようにCPUによってスケジューリングされている。CPU上で実行中のソフトウエアは、なんらかの優先順位に従って種々のワークの項目(以下「コマンド」とも称される)を優先順位付けするであろうし、そしてそれらをシステムメモリバッファ内にエンキューする(enqueue)であろう。GPUは、次に処理されるべきワーク項目をシステムメモリバッファから非同期的にリトリーブする(retrieves)。GPU上では、次に処理されるべきワーク項目の選択は、CPUによって指定される優先順位に基づいている。場合によっては、CPUはワーク項目毎基準で優先度を指定するかもしれないし、また他の場合にはCPUは、各メモリバッファに関連付けて優先度を指定するかもしれないし、そしてメモリバッファ内にエンキューされた任意のワーク項目は当該バッファに関連付けられた優先度を有することになる。
GPUにおける処理能力の急速な増大に伴い、また汎用計算のためのGPUの増大傾向にある使用に伴い、GPUの利用可能な計算能力をより十分に利用する更に効果的な手段が必要とされている。従って、GPU資源をワーク項目に対してより効果的に割り当てることができる方法及びシステムが求められている。
CPU等の第1のプロセッサによって発行されるコマンドをGPU等の第2のプロセッサ上でスケジューリングし且つ実行するための装置及び方法が開示される。1つの実施形態では、グラフィクス処理ユニット(GPU)上で処理を実行する方法は、メモリ内の1つ以上のバッファからバッファの第1のサブセットを第1のサブセットからのワーク項目のGPU上での実行のためにGPUのワークロードプロファイルに基づいて選択することと、第1のサブセットからのワーク項目をGPU上で実行することと、を含む。GPUはまた、1つ以上のバッファの優先順位を受信してよく、この場合、選択することは受信された優先順位に更に基づく。
別の実施形態は、GPU上でワーク項目を実行するためのシステムである。GPUは、メモリ内の1つ以上のバッファからバッファの第1のサブセットを第1のサブセットからのワーク項目のGPU上での実行のためにGPUのワークロードプロファイルに基づいて選択すると共に、第1のサブセットをGPU上で実行するように構成される。GPUは1つ以上のバッファの優先順位を受信するように更に構成されてよく、この場合、選択することは受信された優先順位に更に基づく。
本発明の更なる実施形態、特徴、及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。
出願書類に組み込まれ且つその一部をなす添付の図面は、本発明の実施形態を示し、そして上述の一般的な説明及び後述の実施形態の詳細な説明と共に、本発明の原理を説明するのに役立つ。
図1は本発明の実施形態に従うシステムを示す図である。
図2は本発明の実施形態に従う例示的なリングバッファ割り当てを示す図である。
図3は本発明の実施形態に従い処理するためのGPUへコマンドを伝えるCPUに実装される処理におけるステップを示すフローチャートである。
図4は本発明の実施形態に従いCPUから受信したコマンドを処理するGPUに実装される処理におけるステップを示すフローチャートである。
図5は本発明の実施形態に従い実行のためにコマンドを優先順位付けると共にスケジューリングするGPUに実装される処理におけるステップを示すフローチャートである。
図6は本発明の実施形態に従いコマンドを実行するGPUに実装される処理におけるステップを示すフローチャートである。
本発明の実施形態は、グラフィクス処理ユニット(GPU)資源の実質的に改善された利用を可能にすることができる。本発明はここでは特定の応用のための例示的な実施形態と共に説明されるが、本発明はそれらに限定されないことが理解されるべきである。ここに提供される教示を利用可能な当業者であれば、その範囲内及び本発明が有意に有用であろう追加的な分野における追加的な修正、応用、及び実施形態を認識するであろう。
本発明の実施形態は、ワーク項目(例えばコマンド又はコマンドバッファ)を提供するCPU及びCPUによって提供されるワーク項目を処理するGPUのような少なくとも2つのプロセッサを有する任意のコンピュータシステム又はコンピューティングデバイスにおいて用いられてよい。限定はしないが例えば実施形態は、ラップトップコンピュータ、パーソナルコンピュータ、ゲームプラットホーム、エンタテーメントプラットホーム、パーソナルデジタルアシスタンス、及びビデオプラットホームを含むコンピュータを含んでいてよい。
CPU及びGPUを有するシステムにおいては、GPUの利用は全体的なシステム性能における重要因子である。理想的には、最大での又は最大の近くでのGPU利用を有することが望まれるであろう。CPUはGPU内で用いられる命令及びデータを提供する。従来のシステムにおいては、CPUはGPUへの命令及びデータの実質的に全てをコマンドバッファ内に提供していたであろうし、またGPUは単純に入力としてそれらのコマンドバッファを取り込み、そして実行していたであろう(即ちコマンドバッファからのコマンドを実行していたであろう)。コマンドバッファは、命令又はコマンドを関連データと共に含むデータ構造である。従来のシステムにおいては、コマンドバッファのいかなる優先順位付けもCPUによってはなされていなかったし、そしてGPUは、CPUによってキューされる(queued)と共に優先順位付けされたコマンドを、CPUによって指定された順序で単純に実行していた。効率的ではあるが、GPU上で実行されるべきワークの優先順位付けのためにCPUのみに頼るGPUの従来の手法は、改善の余地を残している。本発明の実施形態は、CPUによって指定されるコマンドをGPUが優先順位付けすると共にスケジューリングするのを可能にすることに向けられている。例えばGPUは、そのローカル資源利用可能性に基づいて、CPUと比べてより動的な様態で且つより効率的な様態で、実行されるべきコマンドを優先順位付けることができる。また、GPUは、CPUによって指定されるコマンドの任意の優先順位付けを超えて第2レベルの優先順位付けを行うことができる。
GPU上でのコマンドのハードウエアベースでのスケジューリングのためのシステム
図1は、本発明の実施形態に従いワーク項目(例えばコマンド)がGPU上で実行されるシステムを示している。システム100は、CPU101、システムメモリ102、グラフィクスドライバ103、GPU104、及び通信基盤105を含む。当業者は、図1の実施形態において示されるものに加えて又はそれらとは異なるソフトウエア、ハードウエア及びファームウエアの構成要素を含み得ることを理解するであろう。
CPU101は、任意の商業的に利用可能なCPU、デジタル信号プロセッサ(DSP)、特定用途向け集積化プロセッサ(ASIC)、フィールドプログラム可能ゲートアレイ(FPGA)、又は特注プロセッサであってよい。CPU101は、通信基盤105等の通信基盤を用いて結合される1つ以上のプロセッサを備えることができる。CPU101はまた、2つ以上の処理コアを同一ダイ上に有する1つ以上のプロセッサ、例えば多重コアプロセッサを含み得る。図1に示される実施形態においては、CPU101は、処理コア即ちコア1・101a及びコア2・101bを有するデュアルコアプロセッサであってよい。CPU101は、オペレーティングシステム(図示せず)及び1つ以上のアプリケーションを実行し、そしてシステム100のための制御プロセッサである。CPU101上で実行中のオペレーティングシステムは、システム100内のデバイスへのアクセスを制御すると共に容易にする。ユーザアプリケーションを含めてCPU101上で実行中の1つ以上のアプリケーションは、GPU104及びシステムメモリ102を含むシステム100の種々のデバイスの使用を連携させてタスクを達成することをCPU101にさせる。
システムメモリ102は1つ以上のメモリデバイスを含む。典型的には、システムメモリ102は、ダイナミックランダムアクセスメモリ(DRAM)又はデータの非永続的記憶のために用いられる同様のメモリデバイスであってよい。幾つかの実施形態においては、システムメモリ102は、フラッシュメモリデバイス及び/又はスタティックRAM(SRAM)デバイス等のメモリデバイスを含み得る。実施形態におけるシステム100の実行の間、システムメモリ102は、その中に備わる1つ以上のメモリバッファ110を有することができ、それらを介してCPU101はGPU104へコマンドを伝えることができる。
それらを介してCPU101がコマンドをGPU104へ伝えるメモリバッファ110は、リングバッファ、又はワーク項目の効率的なキュー入れ(queuing)に適する他のデータ構造として実装されてよい。以下、メモリバッファ110はリングバッファ110とも称される。CPU101からGPU104へのコマンドは命令及びデータを含み得る。幾つかの実施形態においては、命令及びデータを有するデータ構造は、CPU101上で実行中のアプリケーション及び/又はオペレーティングシステムによってリングバッファ110へ入力される。CPU101(又はCPU101上で実行中のアプリケーション及び/又はオペレーティングシステム)は、1つ以上のリングバッファ110に関連する優先度を指定することができる。コマンドは、各コマンドの決定された優先度レベルに基づいてリングバッファへ加えられてよい。例えばCPU101は、高い優先度コマンド、低い優先度コマンド、及び低遅延コマンドに対して各々1つのリングバッファを定義してよい。
実際のコマンド(例えば命令及びデータ)を保持するために、間接バッファ111のセットが用いられてよい。例えば、CPU101がコマンドバッファをGPU104へ伝える場合、コマンドバッファは間接バッファ111内に記憶されていてよく、そして当該間接バッファへのポインタが、対応する優先度レベルのリングバッファ内に挿入され得る。尚、間接バッファ111は、単一レベルの間接(indirection)又は多重レベルの間接のいずれかを可能にするように実装され得る。
システムメモリ102内又はシステム100の他のレジスタメモリ設備内には、リングバッファワークレジスタ112が実装され得る。リングバッファワークレジスタ112は、例えば、リングバッファ110内のコマンドに関するCPU101とGPU104の間での通信を提供する。例えば、リングバッファ110へのコマンドの書き込み器としてのCPU101及びそのようなコマンドの読み出し器としてのGPU104は、リングバッファ110内の最後に加えられた項目及び最後に読み出された項目をそれぞれ表示する書き込みポインタ及び読み出しポインタを連携させてよい。利用可能なリングバッファ110のリスト、CPU101によって指定された優先順位、等の他の情報もまた、リングバッファワークレジスタ112を介してGPU104へと伝えられ得る。
グラフィクスドライバ103は、ソフトウエア、ファームウエア、ハードウエア、又はそれらの任意の組み合わせを備えていてよい。ある実施形態においては、グラフィクスドライバ103は完全にソフトウエアにおいて実装される。システム100の実行の間、グラフィクスドライバ103ソフトウエアはシステムメモリ102内に備わっていてよい。グラフィクスドライバ103は、CPU101及びCPU101上で実行中のアプリケーションがGPU104にアクセスするためのインタフェース及び/又はアプリケーションプログラミングインタフェース(API)を提供する。一般的には、システム100が持ち込まれると、オペレーティングシステムはグラフィクスドライバ103を特定のGPU104に適するように初期化する。
GPU104は、グラフィクスアクセラレーション機能及び他の計算機能をシステム100に提供する。GPU104は、複数のプロセッサ、例えば算術論理演算ユニット(ALU)等の処理要素を含む単一命令多重データ(SIMD)プロセッサを含み得る。多重SIMDプロセッサを有することは、概して、GPU104をグラフィクス処理で一般的なようなデータ並列タスクの実行に理想的に適したものにする。例えばディスプレイ上に画像を描画する場合、同一又は実質的に同一の命令が、ディスプレイ上に描画される各画素に実行される。GPU104はまた、グラフィクス動作以外のタスク、例えばデータストリームの並列実行からの利益を享受することができる種々の数値計算タスク(compute intensive tasks)に対しても用いられ得る。以下の説明では、説明の簡略化のためにグラフィクスアプリケーションが用いられる。しかし、当業者であれば、グラフィクスプロセッサ上で実行され得る様々な他のタスクにもここでの教示が適用可能であることを認識するであろう。また、当業者に理解されるであろうように、GPU104は、CPU101、ブリッジチップ(例えばノースブリッジ、サウスブリッジ、又は組み合わせられたデバイス)等の別のデバイス内に組み込まれた論理であってよい。
GPU104は、GPUメモリ120、3次元/計算シェーダコンプレックス(3D/CSコンプレックス)130、リングリスト制御器(RLC)140、及びコマンドプロセッサ150を含む構成要素を備えている。GPUメモリ120は、GPU104内での計算の間における使用のためのローカルメモリを提供し、そしてDRAM等のメモリデバイスを含んでいてよい。ある実施形態においては、GPUメモリ120は複数のコンテクスト保存区域(CSA)121を含む。各CSAは、後で説明されるように完了の前にGPU104における実行から外へ交換されるワーク項目のコンテクストを保存するためのメモリ区域を提供する。
3D/CSコンプレックス130はGPU104内での主要な計算要素であり、並列データストリーム上での計算を含む計算を容易にする複数のSIMDプロセッサからなる。3D/CSコンプレックスは、例えば、頂点シェーダ、画素シェーダ、幾何シェーダ、統一シェーダ、及びGPU104内でのデータ計算に必要な他の要素を含み得る。以下に説明される実施形態においては、3D/CSコンプレックスは、3D計算要素、計算シェーダ要素、及び低遅延計算要素を備えるものとみなされてよい。CPU101からGPU104へ送られるコマンドは、3D/CSコンプレックスを用いて実装される。
リングリスト制御器(RLC)140は、メモリバッファ(例えばリングバッファ110)へのアクセスを連携させる機能性を包含する。ある実施形態においては、RLC140は、GPU104内で処理されることになるリングバッファ110のリストを決定し、CPU101(より具体的にはCPU101上で実行中の処理又はオペレーティングシステム)によって指定されるリングバッファ110の任意の優先順位を受信し、そしてGPU104内の処理資源の利用を最適化する様態でGPU104上でのリングバッファのスケジューリングを決定する。例えばRLC140はコマンドプロセッサ150と共に、3D/CSコンプレックス130内の各SIMDプロセッサを最大利用で又はその近くで維持する様態で、CPU101から受信したリングバッファをスケジューリングすることができる。
コマンドプロセッサ150はGPU104内の処理を制御する。コマンドプロセッサは実行されるべき命令をCPU101から受信し、そしてそれらの命令のGPU104上での実行を連携させる。場合によっては、コマンドプロセッサはGPU104内で実行されるべき1つ以上のコマンドを生成してよく、これらはCPU101から受信される各コマンドに対応している。ある実施形態においては、コマンドプロセッサ150はRLC140と共に、GPU104上でのコマンドの優先順位付け及びスケジューリングを、GPU104資源の利用を最大化する様態で実装する。コマンドプロセッサ150及びRLC140の機能性を実装している論理命令は、ハードウエア、ファームウエア若しくはソフトウエア又はそれらの組み合わせにおいて実装され得る。1つの実施形態においては、コマンドプロセッサ150は、スケジューリング論理を含む実装論理のためのマイクロコードを伴うRISCエンジンとして実装される。
通信基盤105は、システム100のデバイス及び構成要素への結合を提供する。通信基盤105は1つ以上の通信バス、例えば周辺要素相互接続(Peripheral Component Interconnect)(PCI)、進歩的グラフィクスポート(Advanced Graphics Port)(AGP)等を含み得る。
図2はCPU101からGPU104へ伝えられるリングバッファの例を示している。図示される例では、システム100の動作の間におけるある瞬間に、システムメモリ102は、その中に構成された複数のリングバッファのセット200を有しており、これらリングバッファはリングバッファ0…6(即ち201,202,203,204,205,206,207)を含む。セット200のうち、GPU104は、リングバッファ0・201、リングバッファ1・202、リングバッファ2・203及びリングバッファ5・206を含むサブセット210にアクセスする。サブセット210はCPU101によって指定される基準に基づいて選択されてよく、例えば、CPU101は、GPU104上で実行される準備ができているコマンドを有するものとしてサブセット210を指定することができる。例えば、1つ以上のコマンドを各リングバッファ201,202,203,206にエンキューした後、CPU101は、GPU104によって読み出されるリングバッファワークレジスタ112内のロケーションのような1つ以上のメモリロケーションを更新することができる。別の実施形態においては、1つ以上のコマンドを1つ以上のリングバッファに書き込む場合に、CPU101は、コマンドバッファが処理のために利用可能であることのGPU104への通知をGPU104内のレジスタ内へ直接的に書き込むことができる。
GPU104は、システムメモリ102内のリングバッファ、システムメモリ内のリングバッファワークレジスタ、及び/又はCPU101によって更新される他のレジスタロケーションを定期的にモニタリングして、GPU104によって処理される準備ができているコマンドバッファをリングバッファのどれかが有しているかどうかを決定する。GPU104によって処理される準備ができているコマンドバッファを1つ以上のリングバッファが有していることを検出した場合、GPU104は、実行(即ちコマンドバッファ内のコマンドの実行)のためのコマンドバッファを受信することができる。ある実施形態においては、GPU104は、直接メモリアクセス(DMA)等を用いて、CPU101によって指定されるリングバッファをGPUローカルメモリ内又は汎用レジスタ(GPR)のセット内へ受信してよい。RLC140は、リングバッファのモニタリングを行うと共にGPUメモリ及び/又はGPRへのリングバッファの転送を制御してよい。GPU104上で実行されるべきリングバッファのセットを決定したならば、RLC140は、GPUへのリングバッファの割り当て、リングバッファの優先順位付け、及びリングバッファ内のコマンドバッファの優先順位付けを決定する。幾つかの実施形態においては、優先順位付けの決定は、コマンドプロセッサ150と連携するRLC140によって行われる。例えば、GPU104上での実行のために受信されるリングバッファのサブセット210においては、CPU101によって決定される優先順位付け及びGPU104によって決定される優先順位付けに基づいて、図示されるように、優先度レベル1としてのリングバッファ0、優先度レベル2としてのリングバッファ2、並びに優先度レベル3としてのリングバッファ1及び5の優先順位が決定されてよい。
CPU処理
図3は本発明の実施形態に従いCPU、例えばCPU101によって実行される処理ステップ(例えばステップ301〜305)のフローチャートを示している。ステップ301では、CPU101は、コマンドバッファをGPU104へ転送する目的でシステムメモリ102内のリングバッファのセットを初期化する。ここでの説明においては、コマンドバッファをGPU104に伝える方法を実装するために選択されるデータ構造としてリングバッファが用いられているが、当業者であればリングバッファの代わりに1つ以上の他のデータ構造が用いられ得ることを理解するであろう。初期化ステップ301は、システム起動時又はアプリケーション起動時のいずれかに生じてよい。例えば、CPU101上で実行しているオペレーティングシステムがGPU104及び関連するグラフィクスドライバ103を使用のために構成するシステム起動時には、命令及びデータを後続のアプリケーションからGPU104へ転送する場合の使用のために、1つ以上のリングバッファが初期化されてよい。別の実施形態においては、GPUを利用するダイレクト・エックス(DirectX)コード等のコードを有しているアプリケーションがロードされる場合、リングバッファはそのアプリケーションの初期化の一部として構成されてよい。更に別の例示的な実施形態においては、1つ以上のリングバッファがシステム起動時に初期化されてよく、また追加的なバッファが追加されると共にアプリケーション起動時に初期化されてよい。
初期化は、メモリ割り当て、リングバッファに対応するデータ構造の初期化、及びリングバッファ構成情報をGPU104へ伝えるために用いられる1つ以上のレジスタを更新することを含み得る。例えば、リングバッファの初期化は、リングバッファデータ構造(例えばリングバッファ110)のためのメモリ割り当て、リングバッファ要素に関連する実際のコマンドバッファ(例えば間接バッファ111)を保持するための1つ以上のメモリ区域の割り当て、及び1つ以上のレジスタ(例えばリングバッファワークレジスタ112内の1つ以上のレジスタ)の初期化を含み得る。リングバッファ及び間接リングバッファは、構成パラメータに基づいて、又は実行されるアプリケーションに応じて動的に決定されるパラメータに基づいて初期化されてよい。例えば、リングバッファの数、リングバッファのサイズ、間接バッファ区域のサイズ等がシステム起動時の構成パラメータとして提供されてよく、且つ/又はこれらのパラメータの1つ以上はアプリケーション特性に基づいて決定されてよい。
ある実施形態においては、各リングバッファ110は円形アレイとして実装される。円形アレイの各要素は、間接バッファ区域111内のロケーションへのポインタを収容することを意図されている。各リングバッファデータ構造はまた、リングバッファ構造のメンテナンスに必要なパラメータ、例えば先頭ポインタ及び末尾ポインタ等を有していてもよい。間接バッファ区域111は、コマンドバッファに対応する複数のデータ構造を収容することを意図されている。例えば各コマンドバッファは、GPUによって実行されることになる1つ以上のコマンド、及び関連データを含み得る。実際のコマンドバッファをリングバッファとは異なるロケーション内に記憶しておくことは、メモリ利用の効率性に関連して有利である。間接バッファ区域111は、コマンド毎基準で割り当てること、各リングバッファに対して区域を割り当てること、及び全てのリングバッファ110に対して1つの連続的な区域を割り当てることを含む種々の方法において割り当てられ得る。リングバッファワークレジスタ112はレジスタ及び/又は他のロケーションを含み得る。リングバッファワークレジスタ112はシステムメモリ102内に構成されているように図示されているが、当業者であればリングバッファワークレジスタがシステムメモリ102内以外のロケーションにおける1つ以上のレジスタを含み得ることを理解するであろう。例えばリングバッファワークレジスタ112は、GPU104内の1つ以上のレジスタを含み得る。リングバッファワークレジスタ112は、CPU101によるリングバッファ使用に関連する情報をGPU104へ伝えるために利用され得る。例えば、現在アクティブなリングバッファのリスト、CPU101によって決定されたアクティブなリングバッファの優先順位、1つ以上のGPU要素へのアクティブなリングバッファの割り当て、等の情報が、CPU101によってGPU104へ伝えられ得る。別の実施形態においては、リングバッファワークレジスタ112はまた、各リングバッファに対する現在の読み出しポインタ及び書き込みポインタ等の情報を伝えるためにも用いられ得る。
ステップ303では、CPU101はリングバッファ構成をGPU104に通知する。このステップは、システム起動時又はアプリケーション起動時に、システムメモリ102内でのCPU101によるリングバッファの初期化の後に生じる。幾つかの実施形態においては、ステップ303はシステム起動時及びアプリケーション起動時に行われてよい。例えば、アクティブなリングバッファの数の設定がアプリケーション起動に際して変更される場合、そのような変更がGPU104へと伝えられるであろう。本発明のある実施形態においては、GPU104へ運ばれるリングバッファ構成情報は、リングバッファの数、各リングバッファのロケーション及びサイズ、並びにCPU101が決定した優先順位を含む。フレームバッファ構成に関する異なる構成情報及び/又は付加的な構成情報が、本発明の種々の実施形態において伝えられ得る。ステップ303における通知は、GPU104によってモニタリングされる1つ以上のレジスタロケーション、例えばリングバッファワークレジスタ112に、CPU101が書き込むことに基づいていてよい。別の実施形態においては、CPU101上で実行中のアプリケーション又はCPU101のオペレーティングシステムが、グラフィクスドライバ103の使用を通して、GPU104への通知を開始する。本発明の実施形態においては、グラフィクスドライバ103は、GPU104へ伝えられるべき情報をシステムメモリ102内に書き込むことができる。
ステップ305では、コマンドがリングバッファに書き込まれる。例えば、ゲームアプリケーション等のアプリケーションの実行の間、ディスプレイ上での画像の描画を含む種々のグラフィクス関連タスクを行うために、様々なグラフィクス関連コマンドが実行される。アプリケーションコードは、ダイレクト・エックス等のグラフィクス処理プラットホームを用いるグラフィクスコマンドを利用してよい。システム100上での実行のためにアプリケーションをコンパイルするに際して、又は場合によってはより動的にランタイムに際して、特定のコマンドがGPU104上で処理されるべくCPU101によって関連データと共に解放されるべきであることが決定される。例えば、ある機能を実行するためにダイレクト・エックスAPIを呼び出している任意のコマンドが、GPU104上での処理のために選択されてよい。オペレーティングシステム、又は幾つかの実施形態ではアプリケーションそれ自身が、GPU104上での処理のために選択されるコマンド及び関連データを、命令及びデータをGPU104へ伝えるために構成されるリングバッファへと書き込む。コマンド及び関連データは、一般にコマンドバッファとして知られるデータ構造へと形成され得る。コマンドバッファは1つ以上の命令及び関連データを含む。例えば、「ドロー(draw)」コマンドに対しては、対応するコマンドバッファは、「ドロー」コマンドの他、ディスプレイ上にドローされ又は描画されるべき画像を含む。
前述したように、CPU101はリングバッファに対して決定された優先順位を有していてよく、それに従ってCPU101はコマンドバッファをGPU104へ伝える。従って、ステップ305においてコマンドバッファを書き込む場合、各コマンドバッファは、コマンドの優先順位に最も合致するリングバッファ内にエンキューされる。例えばゲームアプリケーションは、殆ど即時的なディスプレイを必要とする様々なゲームキャラクタ画像描画、及びそれほど時間臨界ではないメニューや他のユーザイベントを生成する。従って、時間臨界な画像に対応するコマンドバッファは、それほど時間臨界ではないメニューやユーザイベントのためのコマンドバッファよりも高い優先度のリングバッファへとエンキューされ得る。コマンドバッファを適切なリングバッファへ書き込むことは、間接バッファ区域111内にコマンドバッファを保持するためのメモリ区域を割り当てることと、間接バッファ区域111内の対応するロケーションへのポインタをリングバッファ内にエンキューすることとを含み得る。間接バッファ111へのポインタをリングバッファ内に挿入することはまた、そのリングバッファのデータ構造要素、例えば先頭ポインタ及び末尾ポインタを更新することを含む。加えて、CPU101は、書き込み器としてのCPU101及び読み出し器としてのGPU104によるリングバッファへの安全な同時アクセスにおいて用いられる追加的な値及びポインタを表示する値を更新してよい。1つ以上のコマンドバッファをリングバッファへ書き込むことに続いて、CPU101は、1つ以上のレジスタ及び/又は他のメモリロケーションを更新して、GPU104にデータの利用可能性を通知することができる。幾つかの実施形態においては、GPU104はそれぞれのリングバッファを継続的にモニタリングしているであろうから、CPU101からの別個の通知は必要ないであろう。
処理300は、CPU101が結合しているGPU内の処理とは実質的に非同期な様態でCPU101に実装されてよい。処理300は、CPU101上で実行中のアプリケーションの実行を可能にしながら、GPU104のような他のプロセッサ内で処理されることが保留されている多重コマンドを有することができる。一方、例えば入ってくるコマンドバッファにGPUが圧倒されないことを確実にするために、CPU101とGPU104の間に実装される何らかの同期メカニズムがあるかもしれない。例えば、CPU101は、リングバッファがいつGPU104によって処理されていないかを検出するように配置された技術を有していていてよく、その結果、CPU101は遅れた処理に反応することができる。CPU101はまた、CPU101によってリングバッファ内にエンキューされた各コマンドバッファがGPU104によって消費されているかどうかを検出するように配置されたメカニズムを有していてよい。例えば、リングバッファにエンキューされた各コマンドバッファに対して、CPU101は、リングバッファワークメモリ112内のメモリロケーションに値を書き込んでよい。その後、CPU101は、そのメモリロケーションで値を定期的にチェックすることができる。GPU104がコマンドバッファを処理するとき、GPU104は、リングバッファワークレジスタ112内のそれぞれのロケーションを異なる値で更新することができる。リングバッファワークメモリ112内のそれぞれのロケーションにおいてタイムアウト期間後に変更されていない値は、GPU104が適切に機能していないことをCPU101に示すことができる。
GPU処理
図4は本発明の実施形態に従いGPU104によって実装される処理400のステップ401〜409を示すフローチャートである。処理400は、本発明の種々の実施形態においてハードウエア、ファームウエア、及び/又はソフトウエアにおいて実装され得る。例えばRLC140機能は、高度な柔軟性を維持しつつ高度な性能をも達成するハードウエア及びマイクロコードの組み合わせを用いて実装され得る。
ステップ401では、GPU104はシステムメモリ102内のリングバッファの構成を決定し、その構成を介してGPU104はCPU101からのコマンドバッファを受信する。ステップ401は、システム起動時及び/又はアプリケーション起動時に実行されてよい。例えばシステム起動時のCPU101による初期化の場合、GPU104は、システムメモリ102内のリングバッファの構成を決定することができる。GPU104はまた、アプリケーションの起動時又はCPU101から信号を受信した場合に、リングバッファの構成を決定してよい。CPU101がシステム起動時にリングバッファ110を初期化し且つシステム動作中にリングバッファの更なる追加及び/又は除去を行わない実施形態においては、GPU104はステップ401をシステム起動時にのみ実行することができる。一方、CPU101が、システム起動時以外のときに、例えばアプリケーション起動時にリングバッファ110に対する構成変更を行う場合、GPU104は、そのような変更が生じるときにリングバッファ構成の表示(view)を更新する必要がある。GPU104によるリングバッファの構成の決定は、リングバッファ若しくは関連するレジスタ若しくはメモリロケーションのGPU104による定期的なモニタリングに基づき又はCPU101から受信されるメッセージ若しくは信号に基づき行われてよい。ある実施形態においては、ステップ401の機能は主としてRLC140内に実装される。
リングバッファ110の構成を決定したならば、ステップ403において、GPU104は、処理のために利用可能なリングバッファを検出するためにリングバッファをモニタリングする。例えばCPU101上で実行するゲームアプリケーションとしては、処理300のステップ305に関連して説明したように、グラフィクス処理を必要としている動作のためのコマンドが、CPU101によってリングバッファ110内にコマンドバッファの形態でエンキューされる。アプリケーションを実行するのに従ってコマンドバッファが生成されそしてリングバッファ内にエンキューされるにつれて、CPU101は1つ以上のメモリロケーション及び/又はレジスタを更新してどのリングバッファが処理のために利用可能であるのかをGPU104に対して示すことができる。GPU104は、CPU101によって更新されるそのようなメモリロケーション及び/又はレジスタをモニタリングすることができる。ある実施形態においては、ステップ403の機能は主としてRLC140内に実装される。
ステップ405では、GPU104は処理及び実行のためのリングバッファ110のサブセットを選択する。ステップ405は、処理のためにリングバッファ110内にエンキューされるコマンドバッファを検出することに応答して、又はCPU101から受信されるメッセージ若しくは信号に応答して実行され得る。処理及び実行のためのリングバッファのサブセットの選択、例えば図2に示される利用可能なリングバッファ200からのサブセット210の選択は、1つ以上の因子に基づくであろう。1つの実施形態においては、CPU101は、それがGPU内での処理のために準備ができていると見なしているリングバッファのリストを維持してよく、そしてGPU104はそのようなリングバッファから処理されるべきサブセットを選択する。幾つかの実施形態においてはGPU104、別の実施形態においてはCPU101が単純にコマンドバッファを1つ以上のリングバッファにエンキューし、そして実行のために保留中のエンキューされたコマンドバッファを有する1つ以上のリングバッファをGPU104が選択する。
実行のために選択されるリングバッファのサブセットは、幾つかの実施形態においては、GPU104内での処理に備えてGPUローカルメモリ又はGPR内へと持ち込まれる。システムメモリ102からのコマンドバッファの転送は、DMA処理によって制御され得る。コマンドバッファがシステムメモリ102から読み出されるときに、GPU104は1つ以上のロケーションを更新してどのコマンドバッファが読み出されたのか及びコマンドバッファの各々が処理されたかどうかを表示することができる。そのような更新されるメモリロケーションは、リングバッファワークレジスタ112内、リングバッファデータ構造内、及び/又はGPUローカルメモリ若しくはGPR内にあってよい。ある実施形態においては、ステップ403の機能は、主としてRLC140内に実装される。
ステップ407では、GPU104は、GPU上での実行のためのコマンドバッファを優先度基準に従って選択する。このステップの処理の間、GPU104は、先のステップにおいて選択されたリングバッファがどのようにして1つ以上のGPUに割り当てられるか、及び個々のコマンドがどのようにしてGPU内の資源に割り当てられるのかを決定する。例えばGPU104は、ステップ405においてシステムメモリ102から選択されたリングバッファのサブセット210がGPU104上で処理されることになる優先順位を決定してよく、また幾つかの実施形態においては、各リングバッファの処理の間にコマンドがどのようにして優先順位付けられ且つスケジューリングされるのかを決定してよい。ある実施形態においては、ステップ403の機能は、主としてRLC140内に実装される。図5はステップ407における処理を更に説明している。
ステップ409では、選択されたコマンドが、先のステップでGPU104において決定された優先順位に従ってGPU104上で実行される。1つの実施形態においては、実行のために選択されたリングバッファサブセット210は、GPU104上での実行のための優先度に従って順序付けられている。各リングバッファ内において、コマンドは実行のために優先順位付けられると共にスケジューリングされていてよく、あるいはリングバッファ内での出現の順序で実行されてよい。別の実施形態においては、GPU104は、CPU101によって指定される優先順位付け、リングバッファの種類又はコマンドバッファの種類、GPU104上で利用可能な処理資源、等の多重因子を考慮に入れながら、処理を保留中の全てのコマンドバッファの優先順位付けを定期的に決定することができる。
CPU101からのコマンドバッファ内で受信したコマンドを実行することは、コマンドプロセッサ150が、受信されたコマンドに対応する1つ以上のコマンドを生成すると共にGPU104上の処理資源上でコマンドをスケジューリングすることを含み得る。例えば、画像を描画するためにCPU101から受信された単一のコマンドは、画像を再分割することと、画像の再分割された部分の各1つを処理するための1つ以上の命令を生成することとをコマンドプロセッサ150にさせてよい。コマンドプロセッサは次いで、再分割された部分の各1つが処理資源、例えばGPU104内のSIMDプロセッサ及び/又はALU上で実行されるように、再分割された部分の各1つをスケジューリングする。実行のためのコマンドのスケジューリング及びGPU上でのコマンドの実行は、コマンドの優先順位を指定するRLC140と連携させられているコマンドプロセッサ150によって主として管理される。
コマンドの実行は、本発明に従う種々の方法において進み得る。1つの実施形態においては、各コマンドが実行を完了し、そして処理資源が利用可能になると、優先度に従う次のコマンドがその処理資源上で実行される。実施形態はまた、実行されるべき次のコマンドを選択する場合に、先になされた優先順位付けを超えて他の因子が考慮される方法を実装することができる。例えば、保留中のコマンドが評価されてよく、そして利用可能な資源を最適に利用する可能性が最も高いコマンドは、どの時点でも実行されるべき次のコマンドとしてスケジューリングされてよい。本発明の更に他の実施形態においては、幾つかの及び/又は幾つかの種類のコマンドのGPU104内での実行の完了の時点で、GPU104はステップ405に戻ると共に処理に利用可能なリングバッファを再選択することができる。
概して、GPU104におけるコマンドの実行の間、RLC140又はGPU104内の別の構成要素は、リングバッファ110等のシステムメモリ内のリングバッファのモニタリングを継続する。継続されるモニタリングは、例えばいつコマンドバッファが高い優先度キューに加えられたかをGPU104が検出することを可能にする。CPU101によって高い優先度のリングバッファに加えられた1つ以上のコマンドバッファを有することは、より低い優先度の1つ以上のコマンドのGPU104による実行の間、より高い優先度のコマンドが実行され得るように、GPU104に1つ以上のコマンドをプリエンプト(pre-empt)させることができる。図6は、より低い優先度の1つ以上のコマンドの実行の間に、より高い優先度のコマンドをGPU104が収容することを可能にするために、本発明の実施形態に従って実装され得るステップ601〜609を示している。例えばステップ601〜609は、ステップ409の処理の間に実装されてよい。
図5は本発明の実施形態に従い上述したステップ407を実装しているステップ501〜505を示している。主としてRLC140及びコマンドプロセッサ150によって実装されるステップ501〜505は、GPU104がリングバッファ及びコマンドバッファの優先順位を決定することを可能にする。
ステップ501では、GPU104の現在のワークロードのプロファイルが決定される。ある実施形態においては、RLC140及び/又はコマンドプロセッサ150は、使用のために利用可能な処理要素、処理要素の相対的な処理能力、保留中のワークロード、及び保留中のワークロードの現在の優先順位、等の因子を決定して、ワークロードプロファイルを作成する。ワークロードプロファイルはGPUの状態を反映する。利用可能な処理要素及び各々の相対的な処理能力の決定は、SIMD要素、ALU能力、3D処理デバイス、計算シェーダデバイス、及び低遅延処理デバイス等の別個の処理要素の考慮を含んでいてよい。GPUの現在のワークロードのプロファイリングは、連続的基準で又は定期的に動的に実行され得る。例えば、RLC140及び/又はコマンドプロセッサ150は、コマンド若しくはリングバッファが実行を完了したとき、又はリングバッファの新たなサブセットがシステムメモリから読み出されたときに、GPUワークロードのプロファイリングを開始してよい。ワークロードプロファイルはまた、ワークロードの決定が必要なたびに新たに生成されてよく、あるいは予め定められた種類のイベント、例えばリングバッファの実行完了、システムメモリからのリングバッファのサブセットの読み出し、等の場合にワークロードプロファイルが更新されるような様態で、維持されてよい。
ステップ503では、GPU104上での実行を保留中のリングバッファの優先順位をGPU104が決定する。ある実施形態においては、RLC140及びコマンドプロセッサ150は、先のステップ501において決定されたワークロードプロファイルに基づいて順位を決定する。GPU104によって決定される優先順位は、CPU101によって指定されているリングバッファの順位に基づいていてよい。CPU101によって指定される優先順位が実質的に守られ得る一方で、GPUの動的なワークロードプロファイルに基づいて実際の実行を最適化することができる。その実行シーケンスを動的に再順序付ける能力は、GPUの処理要素がどのように利用されていようとも、GPUがきめの細かい制御を有することを可能にする。
ステップ504では、GPU104は、リングバッファの各々に関連するコマンドの優先順位を決定する。例えば、RLC140及びコマンドプロセッサ150は、先のステップ501で決定されたワークロードプロファイル及びステップ503で決定されたリングバッファ優先順位付けに基づいて、順位を決定することができる。リングバッファにおけるコマンドの優先順位は、GPU内のどの処理要素に各コマンドが割り当てられているかについての決定に関与し得る。それぞれのリングバッファ内でのコマンドの実行の再順序付けの能力は、例えば当初は低い優先度に指定されていたコマンドを高い優先度の処理資源が利用可能である場合に高い優先度として実行するため、若しくは高い優先度の資源が塞がっている場合に高い優先度のコマンドを低い優先度として実行するために動的な決定をなすことによって、又は要素利用可能性に基づいて通常は計算シェーダ要素若しくは低遅延要素上で実行されるであろうコマンドを実行することによって、GPUがその資源をよりよく利用することを可能にする。
図6は、より低い優先度の1つ以上のコマンドの実行の間にGPU104がより高い優先度のコマンドを収容することを可能にするために本発明の実施形態に従って実装され得るステップ601〜609を示している。例えばステップ601〜609は、ステップ409の処理の間に実装されてよい。
ステップ601では、GPU104は、別のコマンドを処理するためにコンテクストスイッチが必要であるかどうかを決定する。コンテクストスイッチが必要であるかどうかの決定は、現在実行中の処理の優先度、実行を必要としている処理の優先度、実行タイムスライス値(execution time slice values)、及び各現在実行中処理に対する実行の残り時間、等の1つ以上の因子に基づいていてよい。コマンドプロセッサ150は、例えば、上述のような1つ以上の因子を考慮する機能性、及びコンテクストスイッチが強制されるべきであるかどうかに関する決定を行う機能性を包含し得る。
ステップ603では、実行中コマンド及び/又は実行中リングバッファがプリエンプトされる。実行中コマンド及び/又は実行中リングバッファをプリエンプトすることは、プリエンプトされたコマンド及び/又はリングバッファの状態を保存することを含む。本発明の実施形態においては、プリエンプトされたコマンド及び/又はリングバッファの状態は、GPUローカルメモリ内に構成されるコンテクスト保存区域(CSA)内に保存される。例えば、現在実行中のリングバッファがプリエンプトされるべきである場合、リングバッファの保留中のコマンド、データ、及び実行パラメータ、例えばプログラムカウンタ、を含むリングバッファの状態、等がGPUローカルメモリ内の区域、例えばGPUメモリ120内のCSA121に保存される。
ステップ605では、別のコマンド及び/又は別のリングバッファがRLC140及びコマンドプロセッサ150による実行内へと交換される。実行内へと交換されるコマンド及び/又はリングバッファは、GPU104上で初めて実行中になることになってよく、あるいはCSAから回復させられるコマンド及び/又はリングバッファであってよい。例えば、交換されて入ってくるコマンド及び/又はリングバッファは、そのタイムスライスの終点で前もって実行されていたものであってよく、またそのタイムスライスの終点でCSAに保存されていたものであってよい。
ステップ607では、現在実行中のコマンドは実行を完了する。現在実行中のコマンドが実行を完了すると、同じリングバッファ内の次のコマンドが実行され得る。本発明の実施形態においては、処理400のステップ407に関連して論じられたように、GPU104は、コマンドの実行順序をリングバッファ内で決定することができる。幾つかの実施形態においては、処理の実行の完了に際して、GPU104は、実行のためのより高い優先度のリングバッファをチェックすること又は同じリングバッファ内のより高い優先度のコマンドをチェックすること、等の動作を行って、次の実行のための処理及び/又はリングバッファを決定してよい。
ステップ607では、現在実行中のリングバッファは、それに付随する全ての保留中のコマンドの実行を完了する。リングバッファの実行の完了の場合、GPU104は、別のリングバッファ、例えば優先度の順序における次のリングバッファを実行のために選択することができる。
上述の実施形態は、ベリログ(Verilog)、RTL、ネットリスツ(netlists)等のハードウエア記述言語において記述されてよく、またこれらの記述は、ここに説明される本発明の態様を具現化している1つ以上のハードウエアデバイスを生成するためのマスクワーク/フォトマスクの創出を通して最終的に製造処理を構成することを可能にするために用いられ得る。
結論
上述した実施形態によって説明される本発明は、CPU等の第1のプロセッサからコマンドを受信するGPU等の第2のプロセッサ内の処理資源のより効率的な割り当てを可能にする。ローカルで決定された因子、例えば処理デバイス利用可能性、ワークロード、等に基づいてそのワークロードを優先順位付け且つスケジューリングする能力は、第2のプロセッサの利用を増大させる。
概要及び要約の部は、発明者によって検討された本発明の1つ以上のしかし全部ではない例示的な実施形態を説明することができ、従って本発明及び添付の特許請求の範囲を限定することが意図されているわけではけっしてない。
特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実行される限りにおいて、代替的な境界が画定されてよい。
特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者の知識を適用することによって、過度の実験を必要とせず、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ/又は種々の応用に適用することができる。従って、そのような適用及び修正は、ここに提示されている教示及び指針に基いて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、本出願書類の用語等が教示及び指針の下で当業者によって解釈されるべきであるという点において、説明を目的としたものであって限定を目的としていないことが理解されるべきである。
本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではなく、以下の特許請求の範囲及びそれらと均等なものに従ってのみ画定されるべきである。

Claims (22)

  1. グラフィクス処理ユニット(GPU)上でワーク項目を処理する方法であって、
    メモリ内の1つ以上のバッファからバッファの第1のサブセットを前記第1のサブセットからのワーク項目の前記GPU上での実行のために前記GPUのワークロードプロファイルに基づいて選択することと、
    前記第1のサブセットからの前記ワーク項目を前記GPU上で実行することと、を備える方法。
  2. 前記1つ以上のバッファの優先順位を受信することを更に備え、
    前記選択することは前記受信された優先順位に更に基づく請求項1の方法。
  3. 前記実行することは、
    前記第1のサブセットからの第1のバッファからのワーク項目を前記GPU上で実行することと、
    第2のバッファからのワーク項目が前記GPU上で実行されるべきことを決定することと、
    前記第1のバッファからのワーク項目を実行からプリエンプトすることと、
    前記第2のバッファからのワーク項目の前記GPU上での実行を開始することと、を備える請求項1の方法。
  4. 前記プリエンプトすることは、
    前記第1のリングバッファのコンテクストをローカルメモリ内のコンテクスト保存区域に保存することを備える請求項3の方法。
  5. 前記決定することは、
    前記第1のバッファからのワーク項目の実行における経過時間を予め定められたタイムスライス値と比較することを備える請求項3の方法。
  6. 前記決定することは、
    前記バッファの少なくとも1つをモニタリングすることと、
    前記第1のバッファよりも高い優先度レベルを有する前記バッファの前記少なくとも1つにおけるワーク項目を検出することと、を備える請求項3の方法。
  7. 前記モニタリングすることは、
    第2のプロセッサによって書き込まれた少なくとも1つのメモリロケーションを読み出すことと、
    前記少なくとも1つのメモリロケーションから読み出される値に基づいてコマンド書き込みイベントを検出することと、を備える請求項1の方法。
  8. 前記選択することは、
    前記バッファの各々におけるワーク項目を解析することと、
    前記バッファの前記各々の優先度を決定することと、
    前記決定された優先度に基づいて前記第1のサブセットを選択することと、を備える請求項1の方法。
  9. 前記メモリは中央処理ユニット(CPU)及び前記GPUに結合されるシステムメモリである請求項1の方法。
  10. 前記1つ以上のバッファの少なくとも1つはリングバッファである請求項1の方法。
  11. 前記第1のサブセットの各々は中央処理ユニット(CPU)によって書き込まれる1つ以上のコマンドバッファを含む請求項1の方法。
  12. グラフィクス処理ユニット(GPU)上でワーク項目を実行するためのシステムであって、前記GPUは、
    メモリ内の1つ以上のバッファからバッファの第1のサブセットを前記第1のサブセットからのワーク項目の前記GPU上での実行のために前記GPUのワークロードプロファイルに基づいて選択することと、
    前記第1のサブセットからの前記ワーク項目を前記GPU上で実行することと、のために構成されるシステム。
  13. 前記GPUは前記1つ以上のバッファの優先順位を受信することのために更に構成され、
    前記選択することは前記受信された優先順位に更に基づく請求項12のシステム。
  14. 前記GPUは、
    前記第1のサブセットからの第1のバッファを実行することと、
    第2のバッファが前記GPU上で実行されるべきことを決定することと、
    前記第1のバッファを実行からプリエンプトすることと、
    前記第2のバッファの前記GPU上での実行を開始することと、のために更に構成される請求項12のシステム。
  15. 前記プリエンプトすることは、
    前記第1のリングバッファのコンテクストをローカルメモリ内のコンテクスト保存区域に保存することを備える請求項14のシステム。
  16. 前記決定することは、
    前記バッファの少なくとも1つをモニタリングすることと、
    前記第1のバッファよりも高い優先度レベルを有する前記バッファの前記少なくとも1つにおけるワーク項目を検出することと、を備える請求項14のシステム。
  17. 前記1つ以上のバッファの少なくとも1つはリングバッファである請求項12のシステム。
  18. 中央処理ユニット(CPU)と、
    前記CPU及び前記GPUに結合される前記メモリと、を更に備える請求項12のシステム。
  19. 前記GPUは1つ以上のコンテクスト保存区域を伴って構成されるローカルメモリを備える請求項12のシステム。
  20. 命令を記憶しているコンピュータ可読媒体であって、前記命令は実行されるときに方法を用いてグラフィクス処理ユニット(GPU)上でワーク項目を処理することに適合させられており、前記方法は、
    メモリ内の1つ以上のバッファからバッファの第1のサブセットを前記第1のサブセットからのワーク項目の前記GPU上での実行のために前記GPUのワークロードプロファイルに基づいて選択することと、
    前記第1のサブセットからの前記ワーク項目を前記GPU上で実行することと、を備えるコンピュータ可読媒体。
  21. 前記命令はハードウエア記述言語命令を備える請求項20のコンピュータ可読媒体。
  22. 前記命令は前記ワーク項目をGPU上で処理するためのデバイスを創出するマスクワーク/フォトマスクの創出を通した製造処理を構成することに適合させられている請求項20のコンピュータ可読媒体。
JP2012528042A 2009-09-03 2010-09-02 Gpuワークのハードウエアベースでのスケジューリング Active JP5722327B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/553,637 2009-09-03
US12/553,637 US8310492B2 (en) 2009-09-03 2009-09-03 Hardware-based scheduling of GPU work
PCT/US2010/047666 WO2011028896A1 (en) 2009-09-03 2010-09-02 Hardware-based scheduling of gpu work

Publications (3)

Publication Number Publication Date
JP2013504127A true JP2013504127A (ja) 2013-02-04
JP2013504127A5 JP2013504127A5 (ja) 2013-10-24
JP5722327B2 JP5722327B2 (ja) 2015-05-20

Family

ID=43064658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012528042A Active JP5722327B2 (ja) 2009-09-03 2010-09-02 Gpuワークのハードウエアベースでのスケジューリング

Country Status (7)

Country Link
US (1) US8310492B2 (ja)
EP (1) EP2473914B1 (ja)
JP (1) JP5722327B2 (ja)
KR (1) KR101587201B1 (ja)
CN (1) CN102597950B (ja)
IN (1) IN2012DN02567A (ja)
WO (1) WO2011028896A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017163441A1 (ja) * 2016-03-24 2017-09-28 富士ゼロックス株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
JP2019536169A (ja) * 2016-11-23 2019-12-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated パーシステントコンピューティングのための低電力及び低レイテンシのgpuコプロセッサ

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529632B2 (en) * 2009-09-03 2016-12-27 Advanced Micro Devices, Inc. Interlocked increment memory allocation and access
US9244690B2 (en) * 2009-09-09 2016-01-26 Advanced Micro Devices, Inc. Variable frequency output to one or more buffers
US9189242B2 (en) * 2009-09-24 2015-11-17 Nvidia Corporation Credit-based streaming multiprocessor warp scheduling
US9665920B1 (en) * 2009-10-05 2017-05-30 Nvidia Corporation Simultaneous execution of compute and graphics applications
US8305947B2 (en) * 2010-02-12 2012-11-06 Intel Corporation Minimizing power consumption in a network device
US9519943B2 (en) * 2010-12-07 2016-12-13 Advanced Micro Devices, Inc. Priority-based command execution
US9176794B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US20120151145A1 (en) * 2010-12-13 2012-06-14 Advanced Micro Devices, Inc. Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit
US9176795B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics processing dispatch from user mode
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
GB2489278B (en) * 2011-03-24 2019-12-25 Advanced Risc Mach Ltd Improving the scheduling of tasks to be performed by a non-coherent device
GB2505818B (en) * 2011-06-16 2016-02-10 Imagination Tech Ltd Graphics processor with non-blocking concurrent architecture
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US8782665B1 (en) 2013-03-23 2014-07-15 Throughputer, Inc. Program execution optimization for multi-stage manycore processors
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US8884974B2 (en) 2011-08-12 2014-11-11 Microsoft Corporation Managing multiple GPU-based rendering contexts
US8780120B2 (en) * 2011-10-02 2014-07-15 Microsoft Corporation GPU self throttling
US9122522B2 (en) * 2011-12-14 2015-09-01 Advanced Micro Devices, Inc. Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US9329893B2 (en) * 2011-12-14 2016-05-03 Advanced Micro Devices, Inc. Method for resuming an APD wavefront in which a subset of elements have faulted
US8842122B2 (en) 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US8928677B2 (en) * 2012-01-24 2015-01-06 Nvidia Corporation Low latency concurrent computation
US9529575B2 (en) 2012-02-16 2016-12-27 Microsoft Technology Licensing, Llc Rasterization of compute shaders
US9996394B2 (en) 2012-03-01 2018-06-12 Microsoft Technology Licensing, Llc Scheduling accelerator tasks on accelerators using graphs
US9019289B2 (en) * 2012-03-07 2015-04-28 Qualcomm Incorporated Execution of graphics and non-graphics applications on a graphics processing unit
GB2501757A (en) * 2012-05-04 2013-11-06 Ibm Instrumentation of software applications for configuration thereof
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
US8649770B1 (en) 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
US9304813B2 (en) 2012-07-18 2016-04-05 Intel Corporation CPU independent graphics scheduler for performing scheduling operations for graphics hardware
KR101984635B1 (ko) * 2012-07-19 2019-05-31 삼성전자주식회사 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법
US10002021B2 (en) * 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US9183412B2 (en) 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US9696784B2 (en) * 2012-09-14 2017-07-04 Advanced Micro Devices, Inc. Direct hardware access media player
US9342122B2 (en) * 2012-09-17 2016-05-17 Intel Corporation Distributing power to heterogeneous compute elements of a processor
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9563253B2 (en) 2013-03-12 2017-02-07 Intel Corporation Techniques for power saving on graphics-related workloads
US9613208B1 (en) 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
US9632834B2 (en) * 2013-05-17 2017-04-25 Nvidia Corporation Assigning priorities to computational work streams by mapping desired execution priorities to device priorities
KR102037812B1 (ko) * 2013-05-28 2019-10-29 삼성전자 주식회사 멀티 코어 그래픽 처리 장치
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9424079B2 (en) 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine
US9659342B2 (en) 2013-06-29 2017-05-23 Intel Corporation Mid command buffer preemption for graphics workloads
US9183606B1 (en) * 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
US8972630B1 (en) * 2013-09-25 2015-03-03 Netronome Systems, Incorporated Transactional memory that supports a put with low priority ring command
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9161325B1 (en) 2013-11-20 2015-10-13 Sprint Communications Company L.P. Subscriber identity module virtualization
US20150145871A1 (en) * 2013-11-22 2015-05-28 Nvidia Corporation System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor
GB2521151B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
GB2521155B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
US9118655B1 (en) 2014-01-24 2015-08-25 Sprint Communications Company L.P. Trusted display and transmission of digital ticket documentation
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US10346941B2 (en) * 2014-05-30 2019-07-09 Apple Inc. System and method for unified application programming interface and model
JP6437579B2 (ja) * 2014-06-26 2018-12-12 インテル コーポレイション 仮想化環境におけるインテリジェントgpuスケジューリング
US9230085B1 (en) 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
EP3191946A4 (en) * 2014-09-12 2018-03-21 INTEL Corporation Facilitating dynamic parallel scheduling of command packets at graphics processing units on computing devices
US10521874B2 (en) * 2014-09-26 2019-12-31 Intel Corporation Method and apparatus for a highly efficient graphics processing unit (GPU) execution model
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US9679346B2 (en) 2015-06-07 2017-06-13 Apple Inc. Graphics engine and environment for efficient real time rendering of graphics that are not pre-known
US9747659B2 (en) * 2015-06-07 2017-08-29 Apple Inc. Starvation free scheduling of prioritized workloads on the GPU
US10282804B2 (en) * 2015-06-12 2019-05-07 Intel Corporation Facilitating configuration of computing engines based on runtime workload measurements at computing devices
US10069766B2 (en) * 2015-07-07 2018-09-04 TransferSoft, Inc. Accelerated data transfer using thread pool for parallel operations
US9779469B2 (en) * 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
CN105139356B (zh) * 2015-08-25 2018-06-22 北京锤子数码科技有限公司 一种图像数据的毛玻璃效果处理方法和装置
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
US10515430B2 (en) 2015-11-03 2019-12-24 International Business Machines Corporation Allocating device buffer on GPGPU for an object with metadata using access boundary alignment
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
US10580108B2 (en) 2015-12-22 2020-03-03 Intel Corporation Method and apparatus for best effort quality of service (QoS) scheduling in a graphics processing architecture
US10210593B2 (en) 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US9900378B2 (en) 2016-02-01 2018-02-20 Sas Institute Inc. Node device function and cache aware task assignment
CA2974556C (en) * 2016-08-25 2018-06-05 Sas Institute Inc. Compilation for node device gpu-based parallel processing
US10664942B2 (en) 2016-10-21 2020-05-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline
GB2558884B (en) * 2017-01-12 2019-12-25 Imagination Tech Ltd Graphics processing units and methods using cost indications for sets of tiles of a rendering space
GB2558885B (en) * 2017-01-12 2021-04-07 Imagination Tech Ltd Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
US10204394B2 (en) 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US10503546B2 (en) 2017-06-02 2019-12-10 Apple Inc. GPU resource priorities based on hardware utilization
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
US10373287B2 (en) 2017-08-18 2019-08-06 Apple Inc. Fast GPU context switch
US10474600B2 (en) * 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
US10475150B2 (en) * 2017-09-29 2019-11-12 Intel Corporation GPU minimum latency dispatch for short-duration tasks
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
US11650902B2 (en) * 2017-11-08 2023-05-16 Intel Corporation Methods and apparatus to perform instruction-level graphics processing unit (GPU) profiling based on binary instrumentation
CN107920025B (zh) * 2017-11-20 2021-09-14 北京工业大学 一种面向cpu-gpu异构片上网络的动态路由方法
US10269167B1 (en) * 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
KR102092459B1 (ko) * 2018-06-20 2020-03-23 한국과학기술원 컨테이너 기반 가상화 환경에서 gpu 메모리 자원 관리 및 스케줄링 방법 및 시스템
US10424043B1 (en) * 2018-07-02 2019-09-24 Intel Corporation Efficiently enqueuing workloads from user mode to hardware across privilege domains
CN112912849A (zh) * 2018-07-27 2021-06-04 浙江天猫技术有限公司 一种基于图数据的计算运行调度方法、系统、计算机可读介质及设备
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10692169B2 (en) 2018-09-28 2020-06-23 Apple Inc. Graphics driver virtual channels for out-of-order command scheduling for a graphics processor
US10795730B2 (en) 2018-09-28 2020-10-06 Apple Inc. Graphics hardware driven pause for quality of service adjustment
US11182258B2 (en) * 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
CN110888737A (zh) * 2019-11-18 2020-03-17 中国航空工业集团公司西安航空计算技术研究所 一种支持多GPU的Ringbuffer实现系统及方法
CN111580974B (zh) * 2020-05-08 2023-06-27 抖音视界有限公司 Gpu实例分配方法、装置、电子设备和计算机可读介质
KR20220123883A (ko) 2021-03-02 2022-09-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
CN113051082A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 软件硬件数据同步方法、装置、电子设备和存储介质
JP7158530B1 (ja) 2021-05-10 2022-10-21 株式会社セイバン 背負いベルトおよび背負い鞄
US20230108001A1 (en) * 2021-09-27 2023-04-06 Advanced Micro Devices, Inc. Priority-based scheduling with limited resources
WO2023113822A1 (en) * 2021-12-17 2023-06-22 Google Llc Loading state detection for gaming applications

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244572A (ja) * 1994-03-07 1995-09-19 Hitachi Ltd 並列描画処理装置
JPH09185508A (ja) * 1995-12-28 1997-07-15 Fuji Xerox Co Ltd 画像形成装置および画像形成方法
JPH11133943A (ja) * 1997-10-27 1999-05-21 Hitachi Ltd データ処理装置及びデータ処理システム
JP2001291098A (ja) * 2000-04-10 2001-10-19 Yamaha Corp 画像プロセッサ
JP2002216155A (ja) * 2001-01-12 2002-08-02 Namco Ltd 画像生成システム、プログラム及び情報記憶媒体
JP2003006669A (ja) * 2001-06-22 2003-01-10 Toshiba Corp 画像描画装置
JP2003233508A (ja) * 2002-01-04 2003-08-22 Microsoft Corp コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
WO2008082964A1 (en) * 2006-12-30 2008-07-10 Intel Corporation Thread queuing method and apparatus

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889779A (en) * 1996-12-02 1999-03-30 Rockwell Science Center Scheduler utilizing dynamic schedule table
KR100988395B1 (ko) * 2003-02-18 2010-10-18 마이크로소프트 코포레이션 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
US7659904B2 (en) * 2003-04-07 2010-02-09 Ati Technologies Ulc System and method for processing high priority data elements
US8504736B2 (en) * 2008-05-30 2013-08-06 Sony Computer Entertainment America Inc. File input/output scheduler

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244572A (ja) * 1994-03-07 1995-09-19 Hitachi Ltd 並列描画処理装置
JPH09185508A (ja) * 1995-12-28 1997-07-15 Fuji Xerox Co Ltd 画像形成装置および画像形成方法
JPH11133943A (ja) * 1997-10-27 1999-05-21 Hitachi Ltd データ処理装置及びデータ処理システム
JP2001291098A (ja) * 2000-04-10 2001-10-19 Yamaha Corp 画像プロセッサ
JP2002216155A (ja) * 2001-01-12 2002-08-02 Namco Ltd 画像生成システム、プログラム及び情報記憶媒体
JP2003006669A (ja) * 2001-06-22 2003-01-10 Toshiba Corp 画像描画装置
JP2003233508A (ja) * 2002-01-04 2003-08-22 Microsoft Corp コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
WO2008082964A1 (en) * 2006-12-30 2008-07-10 Intel Corporation Thread queuing method and apparatus
JP2010515161A (ja) * 2006-12-30 2010-05-06 インテル コーポレイション スレッドをキューに供給する方法及び装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017163441A1 (ja) * 2016-03-24 2017-09-28 富士ゼロックス株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
CN108463836A (zh) * 2016-03-24 2018-08-28 富士施乐株式会社 图像处理装置、图像处理方法和图像处理程序
US10650481B2 (en) 2016-03-24 2020-05-12 Fuji Xerox Co., Ltd. Image processing device, image processing method, and non-transitory computer readable medium for image processing
CN108463836B (zh) * 2016-03-24 2022-04-01 富士胶片商业创新有限公司 图像处理装置、图像处理方法和图像处理程序
JP2019536169A (ja) * 2016-11-23 2019-12-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated パーシステントコンピューティングのための低電力及び低レイテンシのgpuコプロセッサ
JP7078622B2 (ja) 2016-11-23 2022-05-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド パーシステントコンピューティングのための低電力及び低レイテンシのgpuコプロセッサ
US11625807B2 (en) 2016-11-23 2023-04-11 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing

Also Published As

Publication number Publication date
EP2473914B1 (en) 2017-03-22
KR20120058605A (ko) 2012-06-07
WO2011028896A1 (en) 2011-03-10
IN2012DN02567A (ja) 2015-08-28
EP2473914A1 (en) 2012-07-11
US8310492B2 (en) 2012-11-13
CN102597950B (zh) 2014-10-29
CN102597950A (zh) 2012-07-18
KR101587201B1 (ko) 2016-01-20
US20110050713A1 (en) 2011-03-03
JP5722327B2 (ja) 2015-05-20

Similar Documents

Publication Publication Date Title
JP5722327B2 (ja) Gpuワークのハードウエアベースでのスケジューリング
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US8963933B2 (en) Method for urgency-based preemption of a process
KR101922681B1 (ko) 셰이더 코어에서 셰이더 자원 할당을 위한 정책
JP6228459B2 (ja) システムコール要求の通信の最適化
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
US20120179851A1 (en) Computer System Interrupt Handling
US20120229481A1 (en) Accessibility of graphics processing compute resources
US20200167191A1 (en) Laxity-aware, dynamic priority variation at a processor
US20120180056A1 (en) Heterogeneous Enqueuinig and Dequeuing Mechanism for Task Scheduling
JP5805783B2 (ja) コンピュータシステムインタラプト処理
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
JP2022079764A (ja) 同期制御システムおよび同期制御方法
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
US20240111578A1 (en) Hierarchical work scheduling

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130902

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130902

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140728

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150108

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150325

R150 Certificate of patent or registration of utility model

Ref document number: 5722327

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