JP2010244529A - デッドロックを起こさないパイプライン処理のためのシステム及び方法 - Google Patents

デッドロックを起こさないパイプライン処理のためのシステム及び方法 Download PDF

Info

Publication number
JP2010244529A
JP2010244529A JP2010066407A JP2010066407A JP2010244529A JP 2010244529 A JP2010244529 A JP 2010244529A JP 2010066407 A JP2010066407 A JP 2010066407A JP 2010066407 A JP2010066407 A JP 2010066407A JP 2010244529 A JP2010244529 A JP 2010244529A
Authority
JP
Japan
Prior art keywords
texture
unit
thread
pipeline
execution
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
JP2010066407A
Other languages
English (en)
Other versions
JP5240588B2 (ja
Inventor
Michael Toksvig
トクスヴィグ ミカエル
Erik Lindholm
リンホルム エリック
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of JP2010244529A publication Critical patent/JP2010244529A/ja
Application granted granted Critical
Publication of JP5240588B2 publication Critical patent/JP5240588B2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Abstract

【課題】デッドロック無くグラフィック処理を増大させる。
【解決手段】実行ユニットのパイプライン結果(例えば、テクスチャーパイプライン結果)用の記憶スペースを提供する。この記憶スペースにより、テクスチャーユニットを利用して情報を記憶することができ、一方、レジスタファイルの対応する位置が他のスレッドへの再割当てのために使用できるようになるので、複数のスレッドの処理を増大させることができる。更に、要求の数を制限し、要求のセットのうちの各要求を完了するのに使用可能なリソースがない限り、その要求のセットが発せられないようにすることにより、デッドロックを防止する。
【選択図】図2

Description

[001]本発明の実施形態は、一般的に、グラフィック処理ユニット(GPU)における命令処理に係る。
[002]コンピュータシステムの進歩につれて、グラフィック処理ユニット(GPU)も益々進歩してきている。例えば、GPUが複数の実行ユニットを含んでおり、それら実行ユニットをビジーに維持することは、高い全GPU性能を保証するための益々重要なタスクとなってきている。
[003]GPUは、テクスチャー処理オペレーションを行うためのテクスチャーユニットを含むことが多い。これらテクスチャーユニットは、メモリに記憶されたテクスチャーデータにアクセスしてテクスチャーオペレーションを行う必要がある。このメモリアクセスは、通常、GPUの実行ユニットの速度に対して比較的に長い時間を要するものである。これに対応して、所定時に幾つかのテクスチャー要求が発せられる。ある従来のGPUにおいては、テクスチャー要求の各々は、パラメータを得るためレジスタを指定し、そのレジスタは、典型的には、そのテクスチャー処理オペレーションの結果のためのものと同じである。
[004]不都合なことに、処理過程にあり得るテクスチャーパイプラインの全てのテクスチャーオペレーションのためのレジスタファイル記憶スペースは、大量のメモリ記憶スペースとなってしまう。従って、記憶スペースに限界があることにより、発することのできる要求の数、従って、一時に処理され得るピクセルの数が制限されてしまう。その1つ解決法として、テクスチャーオペレーションの結果を、そのテクスチャー要求を含んでいた記憶場所へと書き込み戻すものがあった。しかしながら、このような解決法では、依然として、記憶結果スペースがテクスチャー要求のために割り当てられたままであり、このことは、任意の所定時にそのパイプラインにおいて処理されるピクセルの数が制限されてしまうことを意味しており、実行ユニットがビジーに維持されないことがあることを意味しており、GPUの全性能に影響が及ぼされてしまう。
[005]他の1つの解決法として、各スレッドが複数の未完了のテクスチャー要求を担い、こうすることにより、テクスチャー待ち時間をカバーするのに少しのスレッドしか必要とされないようにするものがある。不都合なことに、これでも、各スレッドが、中間結果の同時記憶を行えるようにするため、より多くのレジスタを必要とすることになる。これでは、必要とされるレジスタファイルのサイズが増大してしまう。スレッド当たり複数のテクスチャー命令を発し、それに対応して大きなレジスタファイルを必要としないようにすることができると、効果的であろう。このような形式において、セーブされている、例えば、テクスチャーオペレーションに割り当てられていない使用可能なレジスタファイルサイズを使用して、より多くのスレッドを発することができる。
[006]従って、グラフィックスレッド処理のための記憶スペースの必要を減少させ且つデッドロックを防止することのできるシステムが必要とされている。本発明の実施形態によれば、実行ユニットのパイプライン結果のための記憶スペース(例えば、テクスチャーパイプラインの結果のためのバッファ)が設けられる。更に、各スレッドの要求の数を制限し、要求のセットの全ての要求を完了するのに使用可能なリソースがない限り、その要求のセットを発し又は開始させないようにすることにより、デッドロックを防止するような実施形態が提供される。従って、本発明の実施形態によれば、デッドロックを起こすことなく性能を増大させることができる。
[007]より詳細には、本発明の実施形態によれば、大きなレジスタファイル記憶スペースを必要とせずに、複数の未完了テクスチャー要求を担う各スレッドの使用を増大させることができる。何故ならば、テクスチャーオペレーションの結果がパイプラインバッファに記憶されるからである。テクスチャー命令は、2つの部分に分割され、その第1の部分は、テクスチャーユニットへのテクスチャー要求発行であり、第2の部分は、テクスチャーユニットからの結果を読み戻すオペレーションである。結果は、レジスタバッファでなく、パイプラインバッファユニットに置かれる。デッドロックを避けるため、スレッドは、バッファが要求の全てを受容できない限り、その要求を発しない。こうすることで、そのデータがバッファに存在していないために要求が満足されないような状態を避けることができる。バッファリングされた結果は、結果スロットの全てがふさがってしまい、パイプラインが停止してしまうのを避けるために、読み取られる必要がある。レジスタファイル記憶スペースの必要をより少なくすることにより、より多くのスレッドを同時に処理することができ、それにより、並列性を増大し、従って、GPUの性能を増大させることができる。
[008]1つの実施形態では、本発明は、グラフィック処理ユニット(GPU)のデッドロックを防止するためのコンピュータで実施される方法である。この方法は、パイプラインの部分(例えば、テクスチャーパイプラインの部分又はテクスチャーユニットのバッファ)である使用可能なパイプラインバッファリソースの数を決定するステップと、第1のスレッドの1つ以上のテクスチャー要求に基づいて要求されるリソースの数を決定するステップと、を含む。もし、要求されるリソースの数がバッファにおける使用可能なリソースの数より少ない場合には、上記1つ以上の要求に対応するリソースがバッファにおいて割り当てられ、そうでない場合には、割り当てられない。この方法は、更に、使用可能なリソースの数を調整する(例えば、減少させる)ステップと、1つ以上の要求を発するステップと、を含む。そして、リソースの数は、他のオペレーションによりバッファの内容が読み出されたときに、調整される(例えば、増加される)。
[009]別の実施形態では、本発明は、グラフィック処理用のシステムとして実施され、このシステムでは、テクスチャーオペレーションがテクスチャー要求オペレーションとテクスチャー読戻しオペレーションとに分けられ、更に、テクスチャーオペレーションの結果が、レジスタファイルでなく、テクスチャーパイプラインに付随するバッファに記憶される。このシステムは、実行用のスレッドを選択するためのスケジューリングモジュールと、スレッドのテクスチャー要求の数を決定するための要求トラッキングモジュールと、を含む。テクスチャー要求の各々は、実行パイプラインのリソース(例えば、テクスチャーパイプラインのスロット又はテクスチャーユニットのバッファスロット)に対応し得る。このシステムは、更に、実行パイプラインの使用可能なバッファリソースの数を決定するためのリソース監視モジュールと、デッドロックを防止するため使用可能なリソース(例えば、テクスチャーユニットにおけるスロット)の数に基づいて要求を実行すべきか否かを決定し且つ実行パイプラインのリソースを割り当てるための実行モジュールと、を含む。
[010]このようにして、本発明の実施形態によれば、通常、グラフィック処理ユニット(GPU)の利用度を増大させ、従って、その性能を増大させる。実施形態では、結果を記憶するためテクスチャーパイプライン用の記憶スペース(例えば、バッファ)が設けられ、レジスタファイルにおける記憶スペースを空けておくようにすることができる。レジスタファイルにおいて使用可能なスペースが増大することにより、実行ユニットがより多くのスレッドを同時に取り扱うことができるようになり、効果的である。本発明の実施形態にでは、更に、使用可能なバッファリソースに基づいて発することができる複数のテクスチャー要求の数を制御して、結果が読み取られるスレッドのポイントに常に達することができるようにすることにより、デッドロックを防止することができる。従って、本発明の実施形態によれば、デッドロックを起こすことなく性能を増大させることができる。
[011]別の実施形態では、本発明は、レジスタファイルでなく、パイプラインバッファにテクスチャー結果を記憶し且つテクスチャー要求及びテクスチャー読戻しオペレーションを含む2つのオペレーションにテクスチャー命令を分けるようなシステムにおいて計算上のデッドロックを防止するための方法として実施される。この方法は、実行ユニットのプロフィール(例えば、テクスチャーユニットのための)にアクセスするステップを含む。実行ユニットのプロフィールは、クロックサイクル当たり処理されるユニットの数及びパイプラインリソースの数を含み得る。パイプラインリソースの数は、パイプライン深さ及びバッファサイズを含み得る。この方法は、更に、スレッド当たりの要求の数及びデッドロックなしに実行できるスレッドの数を決定するステップと、その数のスレッドのみで同時に動作するステップと、を含む。
[012]添付図面において、本発明を、それに限定するというのでなく、例により説明する。添付の図面においては、同様の参照符号は同様の要素を示している。
本発明の一実施形態による例示のコンピュータシステムを示している。 本発明の一の実施形態による例示の実行ユニットのブロック図を示している。 本発明の一実施形態による例示のスレッドの図を示している。 本発明の一実施形態による例示のシステムのブロック図を示している。 グラフィック処理ユニット(GPU)のデッドロックを防止するための例示のコンピュータ制御処理のフローチャートを示している。 本発明の一実施形態によるデッドロックを防止するための例示のコンピュータ制御処理のフローチャートを示している。
発明の詳細な説明
[019]本発明の好ましい実施形態について、以下詳細に説明する。これら実施形態の例を、添付図面に示す。本発明を好ましい実施形態に関連して説明するが、これらは、本発明をこれら実施形態に限定しようとしているものではないことを理解されたい。反対に、本発明は、特許請求の範囲の記載により限定されるような発明の精神及び範囲内に含まれる代替物、変形物及び均等物をカバーしようとするものである。さらに、本発明の実施形態の以下の詳細な説明においては、本発明を完全に理解することを可能とするため、種々の特定の細部について説明する。しかしながら、本発明がこれらの特定の細部なしでも実施することができるものであることは、当業者には認識されよう。一方では、よく知られた方法、手順、構成部分及び回路については、本発明の実施形態の態様を不必要に不明瞭なものとしてしまわないように、詳細に説明していない。
<表記法及び命名法>
[020]以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに関するオペレーションの手順、ステップ、ロジックブロック、処理及びその他の記号表現の形にてなされている。これらの説明及び表現は、自分の業績の実体を他の当業者に対して最も効果的に伝えるためデータ処理技術の当業者により使用される手段である。手順、コンピュータ実行ステップ、ロジックブロック、プロセス等は、ここで、且つ一般的に、希望の結果に至る自己矛盾のない一連のステップ又は命令であると考えられている。ステップは、物理量の物理的操作を必要とするものである。通常、必ずしもそうではないが、これらの量は、コンピュータシステムにおいて記憶されたり、転送されたり、結合されたり、比較されたり、その他の形にて操作されることのできる電気的又は磁気的信号の形を取っている。これらの信号を、ビット、値、要素、記号、文字、用語、数字等として記載するのが、時には、又、主として慣用されているという理由で、便宜的であることが分かっている。
[021]しかしながら、これらの及び同様の用語の全ては、適当な物理量に関連付けられるものであり、これらの量に適用される単なる便宜的なラベルに過ぎないことを、念頭におかれたい。前述したことから明らかなように、特に断らない限り、本発明を通じて、「処理する」、又は「アクセスする」、又は「実行する」、又は「記憶する」、又は「レンダリングする」等の如き用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理(電子的)量として表されているデータを操作して、コンピュータシステムのメモリ又はレジスタ又は他の同様の情報記憶、送信又は表示デバイス内の物理量として同様に表される他のデータへと変換する集積回路(例えば、図1のコンピューティングシステム100)又は同様の電子計算デバイスのオペレーション及び処理を指していることを、理解されたい。
<コンピュータシステムプラットフォーム>
[022]図1は、本発明の一実施形態によるコンピュータシステム100を示している。コンピュータシステム100は、本発明の実施形態による基本コンピュータシステムの構成要素を示しており、特定のハードウエアベースの機能及びソフトウエアベースの機能のための実行プラットフォームを提供する。一般的に、コンピュータシステム100は、少なくとも1つのCPU101と、システムメモリ115と、少なくとも1つのグラフィック処理ユニット(GPU)110と、を備えている。CPU101は、ブリッジコンポーネント/メモリコントローラ(図示せず)を介してシステムメモリ115に結合され得、又は、CPU101の内部のメモリコントローラ(図示せず)を介してシステムメモリ115に直接的に結合され得る。GPU110は、ディスプレイ112に結合される。1つ以上の付加的なGPUを、オプションとして、システム100に任意的に結合して、計算能力を更に増大させることが可能である。GPU110は、CPU101及びシステムメモリ115に結合されている。GPU110は、別個の構成部分、コネクタ(例えば、AGPスロット、PCIエクスプレススロット等)を介してコンピュータシステム100に結合するように設計された別個のグラフィックカード、別個の集積回路ダイ(例えば、マザーボード上に直接に取り付けられた)として実施することができ、又は、コンピュータシステムチップセットコンポーネント(図示せず)の集積回路ダイ内に含まれた一体化GPUとして実施することもできる。さらに、高帯域グラフィックデータ記憶用のGPU110に対してローカルグラフィックメモリ114を含ませることもできる。
[023]CPU101及びGPU110は、単一集積回路ダイとして一体化されていてもよく、これらCPU及びGPUは、命令ロジック、バッファ、ファンクショナルユニットと等といった種々のリソースを共用してもよく、又は、グラフィック及び汎用オペレーション用に別個のリソースを設けてもよい。GPUは、更に、コアロジックコンポーネットに一体化されていてもよい。従って、GPU110に関連するよう本明細書に説明する回路及び/又は機能の任意のもの又は全てのものは、適切に実装されたCPU101において実施でき、又は適切に実装されたCPU101により行うことができるものである。さらに、本明細書における実施形態は、GPUに関しているが、説明する回路及び/又は機能は、他のタイプのプロセッサ(例えば、汎用又は他の特定目的コプロセッサ)にて実施することもでき又はCPU内にて実施することができることに、注意されたい。
[024]システム100は、例えば、専用グラフィックレンダリングGPU110に結合された強力汎用CPU101を有するデスクトップコンピュータシステム又はサーバーコンピュータシステムとして実施することができる。このような実施形態では、周辺バス、特殊化オーディオ/ビデオコンポーネント、IOデバイス等を加える構成要素を含ませることができる。同様に、システム100は、ハンドヘルドデバイス(例えば、携帯電話等)、直接放送衛星(DBS)/地上セットトップボックス、又は、例えば、ワシントン州レドモンドのマイクロソフトコーポレーションから入手できるXbox(登録商標)、又は日本国東京のソニーコンピュータエンターテインメントコーポレーションから入手できるPlayStation3(登録商標)のようなセットトップビデオゲームコンソールデバイスとして実施することができる。システム100は、計算デバイスの電子装置(例えば、構成部分101、115、110、114等)が単一の集積回路ダイ内に全体的に含まれる「システムオンチップ」として実施することもできる。例としては、ディスプレイを有するハンドヘルド機器、カーナビゲーションシステム、携帯型娯楽システム等がある。
[025]本発明の実施形態は、通常、GPUのグラフィック処理利用度を増大させることができ、従って、グラフィック処理ユニット(GPU)の性能を増大させることができる。実施形態では、テクスチャー結果を記憶するためのテクスチャーパイプラインバッファが設けられ、これにより、通常使用されているレジスタファイルの記憶スペースを空けることができるようになる。レジスタファイルにおいて使用可能なスペースが増大されると、実行ユニットがより多くのスレッドを同時に取り扱うことが可能となる。本発明の実施形態は、更に、パイプラインに対して発せられる複数のテクスチャー要求の数を制御して、それら結果が読み戻される各スレッドにおけるポイントへ常に達して実行可能とすることができるようにすることにより、パイプラインデッドロックを防止することができる。従って、本発明の実施形態は、デッドロックを起こすことなくプロセッサ性能を増大することができる。
[026]図2は、本発明の一実施形態によるGPUの例示の実行ユニットのブロック図を示している。実行ユニット200は、テクスチャーユニット202、数値演算ユニット220、スケジューラ230及びレジスタファイル240を含んでいる。GPU(例えば、GPU110)は、複数のスレッドを並列に実行するため、実行ユニット200と実質的に同様の複数の実行ユニットを有することができることが、理解されよう。例えば、GPUは、各々2つの実行ユニットを有する8つのプロセッサグループを有し得る。従って、実施形態は、単一命令多重データ(SIMD)実行(例えば、並列における16個のピクセルに対して1つの命令)を支援することができる。一実施形態では、本明細書で説明するスレッドは、当分野においてよく知られているように、画像又はビデオフレームの個々のピクセルである。
[027]テクスチャーユニット202は、テクスチャーパイプライン204及びパイプラインバッファ210を含んでいる。テクスチャーパイプライン204は、N個のスロット又はパイプライン位置206−208を有する。テクスチャーパイプライン204は、結果をパイプラインバッファ210へ書き込む。テクスチャーオペレーションは、比較的に長い時間(例えば、300個のクロックサイクル)を要するメモリへのアクセスを必要とすることが多い。従って、テクスチャーパイプライン204は、このような遅延を受容するために、300個のスロット又は要素長とし得る。例えば、テクスチャーパイプライン204は、隣接ピクセルを分析して、テクスチャーにおいてそれらピクセルの各々がどのくらい離れているかを決定することにより、LOD(level of detail)の計算を行うために、各スロットがクロックサイクル当たり4つのピクセルを受け取ることができるようにし得る。十分なワークロードを持って、テクスチャーパイプライン204をビジーに維持するためには、スロット当たり4ピクセルで300個の深さをもったスロットを有するテクスチャーユニットに対しては、1200個のピクセル又はスレッドのワークが必要とされる。他のスレッドは、テクスチャーオペレーションがテクスチャーパイプライン204によって行われている間、作動し続けることができる。複数のテクスチャーオペレーションを続けて発するようなスレッドの場合には、そのパイプラインをフルに維持するのに必要とされるスレッドはより少なくなる。例えば、2つのテクスチャーオペレーションを続けて発するスレッドの場合には、パイプラインをフルに維持するのに必要とされるスレッドの数は半数だけとなる。
[028]数値演算ユニット220は、スロット224〜226を有する数値演算パイプライン222を含んでいる。スレッドがテクスチャー要求の完了を待っている間に、数値演算ユニット220へ数値演算要求が発せられ得る。一実施形態では、数値演算ユニット220は、レジスタファイル240からソースデータを得て、結果デスティネーションデータをレジスタファイル240へ戻す。例えば、数値演算ユニット220がクロック当たり16個のピクセルを取り扱え、結果を戻すのに5つのクロックを要する場合には、命令が独立しており且つ各スレッドが一時に1つの未完了の命令を有する限り、80個のスレッドがその数値演算ユニットをビジーに維持する。別の実施例として、各スレッドが数値演算命令を発することができる場合には、各サイクルは、そのパイプラインをビジーに維持するのに16個のスレッドを必要とする。前述の例を参照すると、1280個のスレッドがテクスチャーユニット202及び数値演算ユニット220の両方をビジーに維持する。1280個のスレッドが使用可能でない場合には、実行ユニットは、ワーク無しのままとされ、バブル、即ち処理アクティビティの全くない期間を生ずる。実行ユニットにおけるバブルは、そのパイプラインがロードされているときを除いて、望ましいものではないと、理解されている。
[029]性能を増大するためには、パイプラインを通して、より多くのスレッドを処理することが望ましい。従って、複数のテクスチャーオペレーションを有するスレッドを使用することにより、複数の増大したテクスチャースレッドを同時に処理することが可能となる。本発明の実施形態は、効果的な手段としてパイプラインバッファ210を提供して、相応に大きなレジスタファイルを必要とすることなく、テクスチャー記憶スペースを提供する。従来の技術においては、典型的には、同時に処理されるスレッドの数を増大させることができるようにするためには、相応に大きなレジスタファイルが必要とされていたのである。
[030]レジスタファイル240は、スレッド情報を記憶する。ワークの各ユニットは、スレッドを取り扱うためワークのユニットに関連する状態情報を有する。例えば、1つのピクセルについて、状態情報は、X、Y及びテクスチャー座標を含み得る。レジスタファイル240のサイズは、数値演算ユニット及びテクスチャーの幅(例えば、クロック当たりのピクセル)及び深さ(例えば、クロックサイクル)に基づくことができる。即ち、レジスタの数は、未完了の状態において実行ユニット200に存在し得るピクセル又はスレッドの数を制御する。一実施形態では、テクスチャーデータのための記憶スペースとしてテクスチャーパイプライン204及びパイプラインバッファ210を使用することにより、同じ数のスレッドを処理するのに必要なレジスタファイル240のリソースを減少させ、或いは、同じサイズのレジスタファイルが同時により多くのスレッドを処理することが可能であることにより、従来のユニットよりも性能を増大させる。
[031]一実施形態では、スケジューラ230が、テクスチャーオペレーションの座標をテクスチャーパイプライン204へ書き込む。テクスチャーパイプライン204へ書き込まれた座標に対応するレジスタファイル240の記憶位置は必要とされない。一実施形態では、テクスチャーユニット202は、テクスチャーパイプライン204に入る前に記憶されるべきテクスチャーオペレーション要求のためのバッファ(図示せず)を有し得る。従って、テクスチャーパイプライン204に入る前に記憶されるべきテクスチャーオペレーションのためのバッファにより、テクスチャーパイプライン204の前でバッファにおいてテクスチャー座標が生成され、それにより、テクスチャー座標をバッファリングするために使用され得たレジスタを空けておくことが可能とされる。
[032]パイプラインバッファ210は、テクスチャーパイプライン204から出力される結果を記憶するように動作することができる。スレッドは、各スロットが読み取られていない結果で占められてしまうことによりパイプラインが停止する前に、そのテクスチャーパイプラインからテクスチャーオペレーションの結果を読み出す。パイプラインバッファ210は、N個のスロット又は記憶位置212〜214を含む。パイプラインバッファ210は、パイプラインの停止を避けるよう結果がパイプラインバッファ210から読み出されることが必要となる前に所定量の時間を許容する。パイプラインバッファ210によれば、テクスチャー要求がテクスチャーパイプライン204へ発せられてテクスチャー要求がテクスチャーパイプライン204により処理されている間に、スペースを結果用にレジスタファイル240に割り当てることなく、テクスチャー要求をテクスチャーパイプライン204へ発することが可能となることが、理解されよう。従って、パイプラインバッファ210から結果を読み取るための記憶スペースは、その結果がパイプラインバッファ210において使用できるようになると、動的に割り当てられる。テクスチャーオペレーションがレジスタファイルを使用しないので、本発明の一実施形態によれば、各テクスチャーオペレーションは、2つのオペレーション、即ち、テクスチャーユニットに対する要求(テクスチャー要求)と、結果をそのテクスチャーユニットから読み戻すオペレーションに分けられる。
[033]一実施形態では、テクスチャー要求がテクスチャーパイプライン202の1つのスロットへ発せられると、パイプラインバッファ210における1つのスロットが、そのテクスチャー要求の結果を記憶するために割り当てられる。パイプラインバッファ210は、これに限定されないが、先入れ先出し(FIFO)バッファを含む種々の記憶タイプであってもよい。結果は順序通りでない態様にてパイプラインバッファ210から読み取ることができることは、理解されよう。例えば、16個のスロットを有するバッファの場合には、発せられる要求は、16番目毎に、同じスロットに割り当てられる。更に、16個のスロットを有するバッファの場合には、テクスチャーパイプからの各結果は、バッファスロットの全てが使用できないものとなる(例えば、読み取られていない結果を有する)ことによりパイプラインが停止してしまうのを避けるよう、16個のクロックサイクル内に読み取られる。バッファスロットは、命令がテクスチャーパイプラインに入れられたサイクルに基づくことができる。
[034]あるテクスチャー処理オペレーションは、他のテクスチャー処理オペレーションよりも実質的に多くの記憶スペースを必要とすることがある。例えば、あるテクスチャー処理オペレーションが、16個のサンプルでテクスチャーをサンプリングし、それらの結果を平均化することを必要とすることがある。従来のテクスチャーパイプラインでは、平均化される位置の各々に対して、16個のサンプルが必要とされる。それにより、従来のテクスチャーパイプラインのレジスタファイルの記憶スペースは増大し、所定の時間で処理できるスレッドの数が制限されてしまう。本発明の実施形態によれば、テクスチャーパイプラインへ16個の要求を発し、次いで、それら結果を一時に1つずつ読み出して、それら結果を加算していくことができ、従って、レジスタファイル240において16個のサンプルのためのスペースの必要性を減少させ又は省くことができる。更に、データがレジスタファイルに記憶される必要がある時、又は、結果がテクスチャーパイプラインバッファ210にて受け取られるにつれて計算できる時を決定するのに、コンパイラを係わらせることができることは、理解されよう。
[035]パイプラインバッファ210の使用により、より小さなレジスタファイルの使用が可能とされている。何故ならば、記憶位置が結果のために必要とされる前に、要求を発することができるからである。例えば、16個の要求が発せられ、それから、レジスタファイルの座標に対応するスペースを、更なるスレッドに再割当てすることができる。テクスチャー結果が平均化される前述の例を参照すると、それらの結果は、単一レジスタにおいて結果を組み合わせることができるので、スペースの割当てを必要としない。従って、パイプラインバッファ210は、所定の時間でより多くのスレッドの処理を行うことができるようにし、それにより、実行ユニットをビジーに維持することができる。より詳細には、パイプラインバッファ210は、テクスチャーパイプライン204が記憶スペースとして効率的に使用され得るようにする。何故ならば、テクスチャーパイプライン204へ書き込まれた座標又は他のデータを記憶したレジスタファイル240の部分は、他のスレッドのためのデータの記憶スペースとして使用できるようになるからである。パイプラインバッファ210は、更に、所定の時間により多くのスレッドを処理できるようにすることにより、バブルを防止することができることは、理解されよう。
[036]パイプラインバッファ210の使用により、ソース及びデスティネーション命令のエミュレーションが可能となる。一実施形態では、スケジューラ230の状態マシンが、テクスチャー要求をテクスチャーユニット204へ書き込み、結果用の記憶スペースとしてレジスタファイル240を使用する代わりに、パイプラインバッファ210からそれら結果を読み取る。例えば、レジスタR0〜R3に記憶された座標のテクスチャーオペレーション用の命令(例えば、「テキストR0〜R3」)が実行され、そこでは、レジスタR0〜R3のデータがテクスチャーパイプライン204へ書き込まれ、結果がパイプラインバッファ210から読み取られ、レジスタR0〜R3に記憶される。ソース及びデスティネーション命令は、2つの命令、即ち、1)テクスチャー命令をテクスチャーパイプラインへ書き込むこと、及び、2)テクスチャーユニットからバッファへ結果を読み出すこと、になることは、理解されよう。
[037]図3は、複数のテクスチャーオペレーションを可能とする本発明の一実施形態による例示のスレッドの図を示している。例示のスレッド300は、要求A304、要求B306、要求C308、要求D310、MADD312、読取り結果A314、読取り結果B316、読取り結果C318及び読取り結果D320を含む。MADD命令(例えば、MADD312)は、テクスチャー結果に依存しておらず、従って、テクスチャー結果を待つ必要がないことは、理解されよう。一実施形態では、スレッド300は、GPU実行ユニット(例えば、実行ユニット200)により実行される。スレッド300が、より多くの要求、MADD及び読取り結果を含み得ることは、理解されよう。要求304−310、MADD312及び読取り結果314−320は、コンパイラにより配列され得る。
[038]プログラムカウンタ302は、要求A304でスレッド300の実行を開始する。一実施形態では、要求の数が決定され、この場合には、4つのテクスチャー要求304−310が存在する。使用可能なリソース(例えば、パイプラインスロット及びバッファ記憶位置を含むテクスチャーユニットスロット)の数が、4つのテクスチャーユニットリソースを使用することができるか否かについて、チェックされる。4つのテクスチャーリソースが使用できる場合には、リソース割当てカウンタが、パイプライン204に対して発せられている要求304−310に対応して4だけ増分させられる。4つのテクスチャーリソースをスレッド300に割り当てることにより、テクスチャーオペレーションの完了時に、結果314−320が(例えば、パイプラインバッファ210から)読み取られることが保証されて、デッドロックが防止される。一実施形態では、リソースのチェック及びリソースの割当ては、アトミック操作である。
[039]使用可能な4つのテクスチャーリソースが存在しない場合には、スレッド300は、4つのテクスチャーリソースが使用できるようになるまで、スリープ状態に置かれる。別のスレッドが、当該スレッドの実行のために十分なリソースがある場合には、実行され得る。テクスチャーオペレーションがテクスチャーパイプラインの下段に移動して、テクスチャー処理結果がそのパイプラインバッファから読み取られると、テクスチャーリソースが使用できるようになる。幾つかの実施形態によれば、スレッドは、全てのテクスチャー要求をパイプライン上に置くか、又は、何も置かないか、のみが許可されている。これにより、デッドロックが防止される。何故ならば、スレッドは、当該スレッドがパイプラインバッファからテクスチャー処理結果を読み取ることができるポイントに達するまでは、テクスチャーフェッチのいずれをも発することができないからである。結果バッファが一杯になると、パイプラインは、何かが読み取られるまでは、停止する。テクスチャー結果を読み取ることが予想されるスレッドが更なるテクスチャー要求を発するのを待つ場合には、デッドロックが生ずる。更に、これらのスレッドがテクスチャー結果を読み取らないシェーダプログラムを通してのパスを取る場合には、デッドロックが生ずる。
[040]一実施形態では、プログラムカウンタ302が要求306−308へと移動するときに、リソース割当てカウンタが、要求306−308の発行に関しては変化されない。読取り要求314−320の各々の発行時に、リソース割当てカウンタは、読取り要求314−320の各々が行われるにつれてパイプラインバッファ(例えば、パイプラインバッファ210)のスロットがフリーになることに対応して、1だけ減分される。
[041]リソーストラッキングは、種々の方法で実行され得ることが、理解されよう。例えば、リソース割当てカウンタは、テクスチャーユニットにおける空いている又は使用可能なリソースの数に初期化され、要求のセットが発せられる度に、当該カウンタは、その要求の数だけ減少させられる。各結果がテクスチャーユニットから読み取られると、カウンタは、増分される(例えば、そのカウンタは、結果314〜320の各々が読み取られるときに、増分される)。このことは、動的割当て構造を表している。
[042]デッドロックを防止するため、静的割当てを使用することもできることは、理解されよう。この実施形態では、どのくらいの数のスポットを、システムが保持することができるかが、知られている。例えば、テクスチャーユニットにおいて400個のリソースが使用でき、各スレッドが4つのテクスチャーオペレーションを必要とする場合には、デッドロックを防止するために、スケジューラ230は、任意の時点で100個の同時のスレッドのみを許容する。この場合には、カウンタは必要とされない。
[043]さらに、スレッドの命令は、実行を最適化するように、コンパイラにより配列又は順序付けされることが、理解されよう。例えば、テクスチャー要求が数値演算要求に依存していない場合には、当該テクスチャー要求は、当該数値演算要求(例えば、MADD312)の前に移動され、当該テクスチャー要求が処理されている間に、当該数値演算要求を完了することができるようにすることができる。命令のこのような再配列は、命令が同時に実行され、テクスチャー要求情報がテクスチャーユニット(例えば、テクスチャーユニット202)に記憶されるので、スレッドが占めるスペースをより小さいものとすることを可能とする。コンパイラは、更に、予測ワークロード比率(例えば、各テクスチャー要求について4つの数値演算要求)を維持するように命令を配列し得る。ワークロード比率は、それによってハードウエアユニットが設計されたファクタであり、ワークをこの比率の当たりに平衡させることにより、ワークロードにおけるバブルを最少とすることができるものであることは、理解されよう。
[044]図4は、本発明の種々の実施形態によって使用される例示の構成要素を示している。システム400においては、特定の構成要素が示されているのであるが、このような構成要素は例であることを、理解されたい。即ち、本発明の実施形態は、種々の他の構成要素又はシステム400に示している構成要素の種々の変形を設けることでも、十分に適合できるものである。システム400における構成要素は、本明細書に提示した以外の構成要素とでも動作できるものであり、また、システム400の目的を達成するために、システム400の構成要素の全てが必要とされているのでもないことは、理解されよう。
[045]図4は、本発明の一実施形態による例示のシステムのブロック図を示している。システム400は、ハードウエア又はソフトウエアにて実施され得る。一実施形態では、システム400は、ディスプレイに画像又はビデオをレンダリングするためのグラフィック命令を処理することができる。システム400は、GPUの部分である実行ユニット410と通信し及び/又はそれを制御する。システム400は、スケジューリングモジュール402、要求トラッキングモジュール404,リソース監視モジュール406及び実行モジュール408を含んでいる。
[046]スケジューリングモジュール402は、実行用にスレッドを選択する。スケジューリングモジュール402は、実行用にスレッドを選択し、そのスレッドの一部(例えば、1つ以上のテクスチャー要求及び1つ以上の数値演算要求)の実行のスケジューリングを行う。スケジューリングモジュール402は、実行用に次のスレッド又はその一部を選択することができる。
[047]要求トラッキングモジュール404は、テクスチャー要求の数を決定する。一実施形態では、それら要求は、テクスチャーユニット412又は数値演算ユニット414の実行パイプラインに対して発せられる。より詳細には、要求の数は、テクスチャー結果の読取り前のテクスチャーパイプラインに対するテクスチャー要求の数であってもよい。一実施形態では、テクスチャーユニット412のテクスチャーパイプラインは、テクスチャーユニット412のテクスチャーパイプラインからの結果を記憶するためのバッファを含む。本明細書に説明するように、それら要求は、コンパイラにより配列されていてもよい。
[048]リソース監視モジュール406は、実行パイプラインの使用可能なリソース(例えば、テクスチャーパイプライン及びパイプラインバッファ)の数を決定する。一実施形態では、リソース監視モジュール406は、テクスチャーユニット412の実行パイプラインの使用可能なリソースの数を決定する。別の実施形態では、リソース監視モジュール406は、使用可能な(例えば、再割当てされていない)リソースの数に対応するカウンタ、例えば、動的アーキテクチャーに基づいて、使用可能なリソースの数を決定する。更に別の実施形態では、リソース監視モジュール406は、所定の時間に進行中であることのできるスレッドの最大数に対応する数をチェックすることにより、例えば、静的アーキテクチャーにより、使用可能なリソースの数を決定する。
[049]実行モジュール408は、使用可能なリソースの数に基づいて要求を実行すべきか否かを決定し、実行パイプラインのリソースを割り当てる。要求のデータを記憶するのに十分なリソースを使用できない場合には、その要求又は要求のグループは、発せられない。一実施形態では、実行モジュール408は、それら要求を実行すべきか否かを決定し、パイプラインのリソースをアトミック操作として割り当て、それにより、同じリソースが2つ以上のスレッドへ割り当てられるという並列スレッド実行における問題を回避する。
[050]要求を実行すべきか否か及びリソースを割り当てるべきか否かを実行モジュール408が決定することにより、デッドロックが防止される。実行モジュール408は、(要求を有する)スレッドの部分が、結果が読み出さる部分へと、常に進むことができるようにする。換言すると、パイプライン内容は、それらが読み出される時にのみ、空となる。パイプラインが一杯であることによりスレッドがその内容を読み出すことができるポイントへ達することができない場合には、デッドロックが生ずる。本発明の実施形態によれば、要求のセットが発せられる前にリソースの完全割り当てがなされるか、又は、全く要求が発せられないようにすることができる。これにより、デッドロックが防止される。何故ならば、結果がテクスチャーユニットから読み取られる部分へと、そのプログラムが進むことができるかのチェックがなされるまでは、テクスチャー要求の全てが発せられないようにされているからである。一般的に言って、X個のテクスチャー要求を有するスレッドの場合には、それらX個のテクスチャー要求が発せられる前に、テクスチャーユニットにおけるX個のスロットが予約され又は割り当てられる。
[051]例えば、テクスチャーパイプラインが300個のスロットを有し、バッファが16個のスロット又は記憶位置を有する場合には、そのパイプラインの停止を生ずることなく、316個のテクスチャー要求をなし得る。スロットは、結果が読み取られ去るまでは、各要求に対してグループにて予約されたままである。例えば、スレッドが4つのテクスチャー要求を含む場合には、それら4つのテクスチャー要求は、テクスチャーユニットの4つのスロットがそれら要求に対応して割り当てられた状態にて発せられる(使用可能な4つのスロットがある場合のみ)。従って、各スレッドは、結果がテクスチャーユニット412から読み出されるポイントに当該スレッドが達することができるようにするのに十分なリソースがある場合にのみ、要求を発することができる。
[052]テクスチャーユニットのリソースがそのスレッドに対して割り当てられると、当該スレッドに対するリソースの割当てにより、それら要求が実行され得ることが保証されるので、テクスチャー要求がスケジューリングモジュール402次第で発せられることは、理解されよう。テクスチャー要求が完了するのに要する時間のため、スレッドは、結果がテクスチャーユニットから読み取ることができるようになるまで、又は、他の非テクスチャーオペレーションが完了されるまで、スケジューリングモジュール402によりスリープ状態に置かれる。例えば、テクスチャー結果を待っているスレッドは、数値演算ユニット(例えば、数値演算ユニット414)へ発する数値演算要求を有していてもよい。
[053]以下、図5及び図6を参照する。フローチャート500及び600は、本発明の種々の実施形態により使用される例示の機能を示している。フローチャート500及び600には、特定の機能ブロック(「ブロック」)が示されているが、このようなステップは例である。即ち、実施形態は、種々な他のブロック又はフローチャート500及び600に示されたブロックの種々の変形を行うのにも十分に適合され得る。フローチャート500及び600におけるブロックは、本明細書に示した順序と異なる順序にて行うことができること及びフローチャート500及び600におけるブロックの全てを行わなくてもよいことは、理解されよう。
[054]図5は、グラフィック処理ユニット(GPU)の機能パイプラインのデッドロックを防止するためにパイプラインバッファを使用して種々のスレッドの実行結果を記憶する典型的なコンピュータ制御処理のフローチャートを示している。フローチャート500の方法は、更に、スレッドのテクスチャーオペレーションを行うことにレジスタファイル記憶スペースを必要としないことにより、GPUの処理リソースの効率的な使用を可能とし得る。フローチャート500の処理は、デッドロックを防止するための動的処理であることは、理解されよう。
[055]ブロック502において、パイプラインバッファ及び/又はパイプラインの使用可能なリソースの数が決定される。本明細書で説明するように、使用可能なリソースは、機能パイプライン(例えば、テクスチャーパイプライン)のパイプラインバッファの一部、又は、テクスチャーパイプラインのバッファ部分を含み得る。本明細書で説明するように、使用可能なリソースの数は、使用可能なリソースの数をトラッキングするカウンタに基づいて、決定することができる。
[056]ブロック504において、要求されるリソースの数が、第1のスレッドの1つ以上のテクスチャー要求に基づいて決定される。グループにてなされるテクスチャー要求の場合には、要求される数は、そのグループにおける要求の全てである。
[057]ブロック506において、要求されたリソースの数が使用可能なリソースの数より少ないことに応答して、その1つ以上の要求に対応するリソースが、パイプラインに割り当てられる。本明細書で説明するように、使用可能なリソースの数の決定及び要求されたリソースの数に対応するリソースの割当ては、アトミック操作であることができる。
[058]ブロック508において、使用可能なリソースの数が、発せられた要求を受容するように調整される。本明細書で説明するように、このような調整は、使用可能なリソースをトラッキングする数を増分することを含み得る。リソースの数は、リソースをトラッキングする数が実行ユニットのリソースと比較される方法に基づいて、増分又は減分されることは、理解されよう。
[059]ブロック510において、それら1つ以上の要求が発せられる。本明細書で説明するように、それら要求は、テクスチャー要求であってもよい。このような形式にて、テクスチャー要求のセットは、同じスレッドの対応する読取りが実行される時に、そのデータがそのバッファにあることが保証されるように、発せられる。
[060]ブロック512において、使用可能なリソースの数が調整される。本明細書で説明するように、この調整は、使用可能なリソースの数を減少させることを含み得る。要求を有する更なるスレッドがある場合には、ブロック516を行うことができ、第2のスレッドがアクセスされる。ブロック516が行われた後、ブロック502が、第2のスレッド用に行われる。要求結果の1つ以上が使用できる場合には、ブロック514を行うことができる。
[061]ブロック514において、それら1つ以上の要求に応答して1つ以上の結果が読み取られる。本明細書で説明するように、それら結果は、テクスチャーユニットのパイプラインバッファから読み取られる。次いで、ブロック516を行うことができ、第2のスレッドが選択される。
[062]図6は、機能パイプラインの結果データを、レジスタファイルでなく、パイプラインバッファへと書き込むシステムにおいて、本発明の一実施形態によりデッドロックを防止するための例示のコンピュータ制御処理のフローチャートを示している。一実施形態では、フローチャート600の方法は、コンパイラにより行うことができる。フローチャート600の処理は、デッドロックを防止するための静的処理であり得ることは、理解されよう。
[063]ブロック602において、実行ユニットのプロフィールが、GPUに対してアクセスされる。実行ユニットは、テクスチャーユニット及び数値演算ユニットを含み得る。一実施形態では、実行ユニットのプロフィールは、クロックサイクル当たり処理されるユニット(例えば、ピクセル)の数及びパイプラインリソースの数を含む。パイプラインリソースの数は、パイプライン深さ及びバッファサイズを含み得る。一実施形態では、バッファサイズは、テクスチャーパイプライン結果バッファのサイズに対応する。
[064]ブロック604において、デッドロック無しに実行され得るスレッド当たりのテクスチャー要求及びスレッドの数が決定される。本明細書に説明するように、スレッド当たりの要求及びスレッドの数は、テクスチャー要求の結果が読み取られる前に、発する必要のあるテクスチャー要求の数に基づき得る。例えば、テクスチャーパイプライン及びパイプラインバッファが400個のスロットを有しており、読取りが必要とされる前にスレッド当たり4つのテクスチャー要求がある場合には、同時スレッドの数は、デッドロックを防止するため、このシステムでは100に制限される。一実施形態では、スレッドの数は、次のタイルが処理される前に、空間タイルの全てのスレッドが完了するように、画像のタイルに基づく。例えば、ある1つのタイルの複数のスレッドが、プロセッサに存在している複数のタイルを利用するように、一緒にスケジューリングされる。これは、任意のキャッシュの局所性を利用し得ることが、理解されよう。こうして、タイルは、リソースの欠如のためテクスチャーパイプの停止を起こす可能性無く、テクスチャー要求及びテクスチャー戻しシーケンスを完了することができるように、処理される。
[065]ブロック606において、デッドロック無く実行され得るスレッド当たりの要求の数に基づいて、スレッドの命令が再配列される。本明細書に説明するように、コンパイラにより、結果がスレッドにより読み取られる前に、限定数の要求が発せられるよう、命令を再配列することができる。
[066]本発明の特定の実施形態の前述の説明は、例示のための説明として提示されたものである。これら説明は、これが全てであるというものでなく、又、本発明を、ここで開示した形そのものに限定しようとするものでなく、前述したことを考慮するならば、多くの変更及び変形が可能であるものである。これら実施形態は、本発明の原理及びその実際の応用について最良の説明をなし、それにより、他の当業者が、本発明及び種々な実施形態を、意図するような特定の用途に適合するように種々な変更を加えて最良に利用できるようにするために、選択され説明されているのである。本発明の範囲は、特許請求の範囲及びそれらの均等物により定められることを意図している。
100…コンピュータシステム、101…CPU、110…グラフィック処理ユニット(GPU)、112…ディスプレイ、114…ローカルグラフィックメモリ、115…システムメモリ、200…実行ユニット、202…テクスチャーユニット、204…テクスチャーパイプライン、206…パイプライン位置(スロット)、208…パイプライン位置(スロット)、210…パイプラインバッファ、212…記憶位置(スロット)、214…記憶位置(スロット)、220…数値演算ユニット、222…数値演算パイプライン、224…スロット、226…スロット、230…スケジューラ、240…レジスタファイル、300…スレッド、302…プログラムカウンタ、304…テクスチャー要求A、306…テクスチャー要求B、308…テクスチャー要求C、310…テクスチャー要求D、312…MADD、314…読取り結果A、316…読取り結果B、318…読取り結果C、320…読取り結果D、400…システム、402…スケジューリングモジュール、404…要求トラッキングモジュール、406…リソース監視モジュール、408…実行モジュール、410…実行ユニット、412…テクスチャーユニット、414…数値演算ユニット、500…フローチャート、600…フローチャート。

Claims (20)

  1. グラフィック処理ユニットにおいてデータを処理する方法であって、
    前記グラフィック処理ユニットの実行ユニットから結果を受け取るように結合されたパイプラインバッファの空きメモリリソースのカウントを保持するステップと、
    スレッドの前記実行ユニットに対する要求の数を決定するステップであって、該要求の数は、読戻しオペレーションが前記スレッド内に存在する前に、前記スレッド内に存在する複数の要求オペレーションの数を含む、該ステップと、
    前記数の要求の全てを受容するのに十分な前記パイプラインバッファの空きメモリリソースが存在する場合に、前記実行ユニットへ前記数の要求を発し、存在しない場合には、前記実行ユニットへ前記数の要求のいずれをも発しない、ステップと、
    前記実行ユニットが、発せられた要求の結果を、その実行後に、前記パイプラインバッファへ書き込むステップと、
    を含む方法。
  2. 前記パイプラインバッファの空きメモリリソースのカウントを保持するステップは、前記実行ユニットへ前記数の要求が発せられたことに応答して、前記パイプラインバッファの前記空きメモリリソースの前記カウントを減少させることを含む、請求項1に記載の方法。
  3. 前記スレッドが、前記実行ユニットに発せられた要求に対応する前記パイプラインバッファからの読戻しオペレーションを実行するステップを更に含み、
    前記パイプラインバッファの空きメモリリソースの前記カウントを保持するステップは、更に、前記スレッドが前記読戻しオペレーションを実行することに応答して、前記パイプラインバッファの前記空きメモリリソースの前記カウントを増大させることを含む、請求項2に記載の方法。
  4. 前記実行ユニットは、前記グラフィック処理ユニット内のテクスチャーユニットであり、
    更に、前記テクスチャーユニットの各テクスチャーオペレーションは、前記テクスチャーユニットに対するテクスチャー要求オペレーション及び前記パイプラインバッファからのテクスチャー読戻しオペレーションを含む、請求項1に記載の方法。
  5. 前記発すること及び前記発しないことは、前記パイプラインバッファ内に割り当てられた結果スペースを有するグループ化されたテクスチャー要求オペレーションのみを発することにより、前記テクスチャーユニットのデッドロックを防止し、
    前記グループ化されたテクスチャー要求オペレーションは、前記スレッドの第1の発せられていないテクスチャー読戻しオペレーションに先行する該スレッド内の全ての発せられていない一連のテクスチャー要求オペレーションである、請求項4に記載の方法。
  6. 前記スレッドが、前記グラフィック処理ユニットの数値演算機能ユニットへ数値演算オペレーションを発するステップと、
    前記数値演算機能ユニットが、レジスタファイルのソースレジスタから前記数値演算オペレーション用のソースオペランドを得て、前記数値演算オペレーションの実行による結果を前記レジスタファイルのデスティネーションレジスタへ戻すステップと、
    を更に含む、請求項1に記載の方法。
  7. 前記機能ユニットは、テクスチャーユニットであり、前記レジスタファイルは、前記テクスチャーユニットの実行による結果を受け取らない、請求項6に記載の方法。
  8. グラフィック処理ユニットにおいてデータを処理する方法であって、
    前記グラフィック処理ユニットの実行ユニットから結果を受け取るように結合されたパイプラインバッファのサイズを決定するステップと、
    各スレッド内の要求オペレーションの数に基づいて、更に前記パイプラインバッファの前記サイズに基づいて、前記実行ユニットで同時に動作することが許されるスレッドの数を決定するステップと、
    デッドロックを防止するため、前記数以下のスレッドのみが前記実行ユニットで同時に動作することを許可するステップと、
    前記数のスレッドが、前記実行ユニットへ要求オペレーションを発するステップと、
    前記実行ユニットが、前記要求オペレーションの結果を、その実行後に、前記パイプラインバッファへ書き込むステップと、
    を含む方法。
  9. 前記スレッドの数を決定するステップは、前記パイプラインバッファの前記サイズを、各スレッド内の前記要求オペレーションの数で除算することを含む、請求項8に記載の方法。
  10. 前記数のスレッドが、前記実行ユニットへ発せられた前記要求オペレーションに対応する前記パイプラインバッファからの読戻しオペレーションを実行するステップを更に含む、請求項8に記載の方法。
  11. 前記実行ユニットは、前記グラフィック処理ユニット内のテクスチャーユニットであり、
    更に、前記テクスチャーユニットの各テクスチャーオペレーションは、テクスチャー要求オペレーション及び前記パイプラインバッファからのテクスチャー読戻しオペレーションを含む、請求項8に記載の方法。
  12. 前記数以下のスレッドのみが前記実行ユニットで同時に動作することを許可するステップは、前記数のスレッド内の全てのテクスチャー読戻しオペレーションが実行する機会を有することを保証することにより、デッドロックを防止する、請求項11に記載の方法。
  13. スレッドが、前記グラフィック処理ユニットの数値演算機能ユニットへ数値演算オペレーションを発するステップと、
    前記数値演算機能ユニットが、レジスタファイルのソースレジスタから前記数値演算オペレーション用のソースオペランドを得て、前記数値演算オペレーションの実行による結果を前記レジスタファイルのデスティネーションレジスタへ戻すステップと、
    を更に含む、請求項8に記載の方法。
  14. 前記機能ユニットは、テクスチャーユニットであり、前記レジスタファイルは、前記テクスチャーユニットの実行による結果を受け取らない、請求項13に記載の方法。
  15. グラフィック処理ユニットのプロセッサグループであって、
    該プロセッサグループ内の同時に動作できる複数のスレッドに関連するデータを記憶するためのレジスタファイルと、
    前記複数のスレッドのテクスチャーオペレーションを処理するためのテクスチャーユニットであって、各テクスチャーオペレーションは、要求テクスチャーオペレーション及び対応するテクスチャー読戻しオペレーションを含む、該テクスチャーユニットと、
    前記テクスチャーユニットに結合されたパイプラインバッファであって、前記テクスチャーユニットから結果を受け取り、記憶するための該パイプラインバッファと、
    を備えるプロセッサグループ。
  16. 前記複数のスレッドの数値演算オペレーションを処理するための数値演算機能ユニットを更に備えており、
    前記数値演算機能ユニットは、前記レジスタファイルからソースオペランドを受け取るように結合されており、前記レジスタファイルへ結果を記憶させるように結合されている、請求項15に記載のプロセッサグループ。
  17. 前記パイプラインバッファ及び前記テクスチャーユニットの空きメモリリソースのカウントを保持するためのカウンタを更に備えている、請求項15に記載のプロセッサグループ。
  18. 前記テクスチャーユニット内のデッドロックを防止するための回路を更に備えており、前記デッドロックを防止するための回路は、
    スレッドの前記テクスチャーユニット用のテクスチャー要求オペレーションの数を決定するための回路であって、前記テクスチャー要求オペレーションの数は、テクスチャー読戻しオペレーションが前記スレッド内に存在する前に前記スレッド内に存在する複数のテクスチャー要求オペレーションの数を含む、該回路と、
    前記数のテクスチャー要求オペレーションの全てを受容するのに十分な前記パイプラインバッファ及び前記テクスチャーユニットの空きメモリリソースが存在する場合には、前記テクスチャーユニットへ前記数の要求を発し、存在しない場合には、前記テクスチャーユニットへ前記数のテクスチャー要求オペレーションのいずれをも発しない回路と、
    を備える、請求項17に記載のプロセッサグループ。
  19. 所定の数以下のスレッドのみが前記テクスチャーユニットで同時に動作することを許可することにより、前記テクスチャーユニット内のデッドロックを防止する回路を更に備え、
    前記スレッドの所定の数は、各スレッド内のテクスチャー要求オペレーションの数に基づき、更に、前記パイプラインバッファ及び前記テクスチャーユニットのサイズに基づく、請求項15に記載のプロセッサグループ。
  20. 前記スレッドの所定の数は、前記パイプラインバッファの前記サイズ及び前記テクスチャーユニットの前記サイズを各スレッド内の前記テクスチャー要求オペレーションの数で除算することにより算出される、請求項19に記載のプロセッサグループ。
JP2010066407A 2009-04-08 2010-03-23 デッドロックを起こさないパイプライン処理のためのシステム及び方法 Active JP5240588B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/420,751 US8698823B2 (en) 2009-04-08 2009-04-08 System and method for deadlock-free pipelining
US12/420,751 2009-04-08

Publications (2)

Publication Number Publication Date
JP2010244529A true JP2010244529A (ja) 2010-10-28
JP5240588B2 JP5240588B2 (ja) 2013-07-17

Family

ID=42934008

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010066407A Active JP5240588B2 (ja) 2009-04-08 2010-03-23 デッドロックを起こさないパイプライン処理のためのシステム及び方法

Country Status (5)

Country Link
US (2) US8698823B2 (ja)
JP (1) JP5240588B2 (ja)
KR (1) KR101226817B1 (ja)
CN (1) CN101859257B (ja)
TW (1) TWI423162B (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9849372B2 (en) 2012-09-28 2017-12-26 Sony Interactive Entertainment Inc. Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title
US9626191B2 (en) 2011-12-22 2017-04-18 Nvidia Corporation Shaped register file reads
US20130191572A1 (en) * 2012-01-23 2013-07-25 Qualcomm Incorporated Transaction ordering to avoid bus deadlocks
US9694276B2 (en) 2012-06-29 2017-07-04 Sony Interactive Entertainment Inc. Pre-loading translated code in cloud based emulated applications
US9656163B2 (en) 2012-06-29 2017-05-23 Sony Interactive Entertainment Inc. Haptic enhancements for emulated video game not originally designed with haptic capabilities
US9925468B2 (en) 2012-06-29 2018-03-27 Sony Interactive Entertainment Inc. Suspending state of cloud-based legacy applications
US9623327B2 (en) 2012-06-29 2017-04-18 Sony Interactive Entertainment Inc. Determining triggers for cloud-based emulated games
US9707476B2 (en) 2012-09-28 2017-07-18 Sony Interactive Entertainment Inc. Method for creating a mini-game
US11013993B2 (en) 2012-09-28 2021-05-25 Sony Interactive Entertainment Inc. Pre-loading translated code in cloud based emulated applications
US20140092087A1 (en) 2012-09-28 2014-04-03 Takayuki Kazama Adaptive load balancing in software emulation of gpu hardware
US9697006B2 (en) * 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9183092B1 (en) * 2013-01-21 2015-11-10 Amazon Technologies, Inc. Avoidance of dependency issues in network-based service startup workflows
US9405605B1 (en) 2013-01-21 2016-08-02 Amazon Technologies, Inc. Correction of dependency issues in network-based service remedial workflows
US9165396B2 (en) * 2013-02-26 2015-10-20 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue
US9171525B2 (en) * 2013-02-26 2015-10-27 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue
US9258012B2 (en) 2013-03-15 2016-02-09 Sony Computer Entertainment Inc. Compression of state information for data transfer over cloud-based networks
JP5466786B1 (ja) * 2013-08-28 2014-04-09 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム
KR102161742B1 (ko) 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
US9760967B2 (en) * 2013-11-13 2017-09-12 Qualcomm Incorporated System and method of dynamically throttling CPU frequency for gaming workloads
CN103713884B (zh) * 2013-12-18 2016-06-29 珠海金山网络游戏科技有限公司 多线程通过数组处理数据的方法、系统及多线程处理器
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
CN103955407B (zh) * 2014-04-24 2018-09-25 深圳中微电科技有限公司 在处理器中减小纹理延迟的方法及装置
US9633153B1 (en) * 2014-12-31 2017-04-25 Cadence Design Systems, Inc. Method, system, and computer program product for verifying an electronic design using stall prevention requirements of electronic circuit design models of the electronic design
US9747226B2 (en) * 2015-03-30 2017-08-29 Cavium, Inc. Packet processing system, method and device to optimize packet buffer space
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
US10242494B2 (en) * 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
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
CN107770090B (zh) * 2017-10-20 2020-05-01 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置
CN108509241B (zh) * 2018-03-15 2021-06-04 Oppo广东移动通信有限公司 一种图像的全屏显示方法、全屏显示装置及移动终端
US10990443B2 (en) 2018-12-04 2021-04-27 International Business Machines Corporation Utilization profiling and scheduling operations using thread specific execution units usage of a multi-core multi-threaded processor
US10657699B1 (en) * 2018-12-08 2020-05-19 Arm Limited Performing texturing operations for sets of plural execution threads in graphics processing systems
KR20200081966A (ko) * 2018-12-28 2020-07-08 엘지디스플레이 주식회사 발광 표시장치
KR102531567B1 (ko) * 2020-04-03 2023-05-15 서울대학교산학협력단 데드락 회피 방법 및 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001312719A (ja) * 2000-05-02 2001-11-09 Olympus Optical Co Ltd 画像処理装置とその制御方法
JP2007525768A (ja) * 2004-02-27 2007-09-06 エヌヴィディア コーポレイション テクスチャ要求のためのレジスタベースのキューイング
JP2007538319A (ja) * 2004-05-14 2007-12-27 エヌヴィディア コーポレイション 低電力プログラマブルプロセッサ
JP2008512771A (ja) * 2004-09-13 2008-04-24 エヌヴィディア コーポレイション フラグメントシェーディングパイプラインにおけるスケーラビリティの向上

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6414648A (en) * 1987-07-08 1989-01-18 Mitsubishi Electric Corp Arithmetic processor
US5455913A (en) * 1990-05-14 1995-10-03 At&T Global Information Solutions Company System and method for transferring data between independent busses
US5301295A (en) * 1991-05-22 1994-04-05 Analog Devices, Inc. Data processor apparatus and method with selective caching of instructions
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
US5768548A (en) * 1992-04-15 1998-06-16 Intel Corporation Bus bridge for responding to received first write command by storing data and for responding to received second write command by transferring the stored data
US5546548A (en) * 1993-03-31 1996-08-13 Intel Corporation Arbiter and arbitration process for a dynamic and flexible prioritization
US5555424A (en) 1994-10-06 1996-09-10 The Dow Chemical Company Extended Harvard architecture computer memory system with programmable variable address increment
US5706466A (en) * 1995-01-13 1998-01-06 Vlsi Technology, Inc. Von Neumann system with harvard processor and instruction buffer
US5923859A (en) * 1995-04-13 1999-07-13 Compaq Computer Corporation Dual arbiters for arbitrating access to a first and second bus in a computer system having bus masters on each bus
US5877741A (en) * 1995-06-07 1999-03-02 Seiko Epson Corporation System and method for implementing an overlay pathway
US6175634B1 (en) * 1995-08-28 2001-01-16 Intel Corporation Adaptive noise reduction technique for multi-point communication system
US6226695B1 (en) * 1995-09-29 2001-05-01 International Business Machines Corporation Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors
US5717954A (en) * 1995-10-13 1998-02-10 Compaq Computer Corporation Locked exchange FIFO
US5940866A (en) * 1995-12-13 1999-08-17 International Business Machines Corporation Information handling system having a local address queue for local storage of command blocks transferred from a host processing side
US5968143A (en) * 1995-12-13 1999-10-19 International Business Machines Corporation Information handling system for transfer of command blocks to a local processing side without local processor intervention
US5761468A (en) * 1996-05-15 1998-06-02 Sun Microsystems Inc Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions
US5822568A (en) * 1996-05-20 1998-10-13 Advanced Micro Devices, Inc. System for improving the real-time functionality of a personal computer which employs an interrupt servicing DMA controller
US5745772A (en) * 1996-08-02 1998-04-28 Micron Electronics, Inc. Advanced programmable interrupt controller
US5790817A (en) * 1996-09-25 1998-08-04 Advanced Micro Devices, Inc. Configurable digital wireless and wired communications system architecture for implementing baseband functionality
US6185634B1 (en) * 1996-09-27 2001-02-06 Emc Corporation Address triggered DMA controller with an indicative signal including circuitry for calculating a new trigger address value based on the sum of the current trigger address and the descriptor register data with a trigger address register
US6018803A (en) * 1996-12-17 2000-01-25 Intel Corporation Method and apparatus for detecting bus utilization in a computer system based on a number of bus events per sample period
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US5864876A (en) * 1997-01-06 1999-01-26 Creative Technology Ltd. DMA device with local page table
US5881248A (en) * 1997-03-06 1999-03-09 Advanced Micro Devices, Inc. System and method for optimizing system bus bandwidth in an embedded communication system
US6526518B1 (en) * 1997-05-22 2003-02-25 Creative Technology, Ltd. Programmable bus
US6085276A (en) * 1997-10-24 2000-07-04 Compaq Computers Corporation Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US6016528A (en) * 1997-10-29 2000-01-18 Vlsi Technology, Inc. Priority arbitration system providing low latency and guaranteed access for devices
US6098114A (en) * 1997-11-14 2000-08-01 3Ware Disk array system for processing and tracking the completion of I/O requests
US6418496B2 (en) * 1997-12-10 2002-07-09 Intel Corporation System and apparatus including lowest priority logic to select a processor to receive an interrupt message
US6233656B1 (en) * 1997-12-22 2001-05-15 Lsi Logic Corporation Bandwidth optimization cache
US6298407B1 (en) * 1998-03-04 2001-10-02 Intel Corporation Trigger points for performance optimization in bus-to-bus bridges
US6157980A (en) * 1998-03-23 2000-12-05 International Business Machines Corporation Cache directory addressing scheme for variable cache sizes
US6085278A (en) * 1998-06-02 2000-07-04 Adaptec, Inc. Communications interface adapter for a computer system including posting of system interrupt status
US6182112B1 (en) * 1998-06-12 2001-01-30 Unisys Corporation Method of and apparatus for bandwidth control of transfers via a bi-directional interface
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6101568A (en) * 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6065088A (en) * 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6205524B1 (en) * 1998-09-16 2001-03-20 Neomagic Corp. Multimedia arbiter and method using fixed round-robin slots for real-time agents and a timed priority slot for non-real-time agents
US20020056027A1 (en) * 1998-10-29 2002-05-09 Hiroki Kanai Information processing system
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6314472B1 (en) * 1998-12-01 2001-11-06 Intel Corporation Abort of DRAM read ahead when PCI read multiple has ended
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors
US6345341B1 (en) * 1999-06-24 2002-02-05 International Business Machines Corporation Method of cache management for dynamically disabling O state memory-consistent data
US6681285B1 (en) * 1999-07-22 2004-01-20 Index Systems, Inc. Memory controller and interface
US7389466B1 (en) 1999-08-12 2008-06-17 Texas Instruments Incorporated ECC in computer system with associated mass storage device, and method for operating same
AU762703B2 (en) * 1999-10-29 2003-07-03 Kabushiki Kaisha Toshiba Data write control system and method therefor
US6574712B1 (en) * 1999-11-08 2003-06-03 International Business Machines Corporation Software prefetch system and method for predetermining amount of streamed data
US6631434B1 (en) * 1999-11-15 2003-10-07 Hewlett-Packard Development Company, L.P. Dynamic early indication system for a computer
US6560657B1 (en) * 1999-12-23 2003-05-06 Intel Corporation System and method for controlling peripheral devices
US6499090B1 (en) * 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
JP3450248B2 (ja) * 2000-01-19 2003-09-22 エヌイーシー東芝スペースシステム株式会社 人工衛星搭載用データバス制御方法、そのシステム
US6578102B1 (en) * 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
JP3796390B2 (ja) 2000-04-27 2006-07-12 シャープ株式会社 データ駆動型情報処理装置
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US6427195B1 (en) * 2000-06-13 2002-07-30 Hewlett-Packard Company Thread local cache memory allocator in a multitasking operating system
US6754755B1 (en) * 2000-08-10 2004-06-22 Hewlett-Packard Development Company, L.P. Service request system using an activity indicator to reduce processing overhead
US6745258B1 (en) * 2000-08-22 2004-06-01 Hewlett-Packard Development Company, L.P. Raid system having multiple reply queues for use with multiprocessor host
US6957290B1 (en) * 2000-10-06 2005-10-18 Broadcom Corporation Fast arbitration scheme for a bus
US6696954B2 (en) * 2000-10-16 2004-02-24 Amerasia International Technology, Inc. Antenna array for smart RFID tags
US6681281B1 (en) * 2000-11-17 2004-01-20 Advanced Micro Devices, Inc. System and method for implementing a multi-level interrupt scheme in a computer system
US6480939B2 (en) * 2000-12-29 2002-11-12 Intel Corporation Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware
GB0031763D0 (en) * 2000-12-29 2001-02-07 Mitel Semiconductor Ltd Arbiter for a queue management system
US6901467B2 (en) * 2001-02-23 2005-05-31 Hewlett-Packard Development Company, L.P. Enhancing a PCI-X split completion transaction by aligning cachelines with an allowable disconnect boundary's ending address
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US20020144054A1 (en) * 2001-03-30 2002-10-03 Fanning Blaise B. Prefetch canceling based on most recent accesses
US6728856B2 (en) * 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US6842803B2 (en) * 2001-07-09 2005-01-11 Advanced Micro Devices, Inc. Computer system with privileged-mode modem driver
US6907480B2 (en) * 2001-07-11 2005-06-14 Seiko Epson Corporation Data processing apparatus and data input/output apparatus and data input/output method
US6696854B2 (en) * 2001-09-17 2004-02-24 Broadcom Corporation Methods and circuitry for implementing first-in first-out structure
US7376846B2 (en) 2001-10-14 2008-05-20 Palm, Inc. Charging and communication cable system for a mobile computer apparatus
US6915363B2 (en) * 2001-12-13 2005-07-05 Seagate Technology Llc System for selectively controlling spin-up control for data storage devices in an array using predetermined out of band (OOB) signals
US6925534B2 (en) * 2001-12-31 2005-08-02 Intel Corporation Distributed memory module cache prefetch
US6877048B2 (en) * 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US20030187911A1 (en) * 2002-04-01 2003-10-02 Michael Abd-El-Malek Method and apparatus to facilitate recovering a thread from a checkpoint
TWI258081B (en) * 2002-04-04 2006-07-11 Via Tech Inc Arbitrating method and arbiter for bus grant
US6904473B1 (en) * 2002-05-24 2005-06-07 Xyratex Technology Limited Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory
US20030229743A1 (en) * 2002-06-05 2003-12-11 Brown Andrew C. Methods and structure for improved fairness bus arbitration
US6898674B2 (en) * 2002-06-11 2005-05-24 Intel Corporation Apparatus, method, and system for synchronizing information prefetch between processors and memory controllers
US6801963B2 (en) * 2002-07-24 2004-10-05 Intel Corporation Method, system, and program for configuring components on a bus for input/output operations
DE10234934A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Antwortreihenwiederherstellungsmechanismus
DE10234933A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Pufferung von Non-Posted-Lesebefehlen und Antworten
US6957306B2 (en) * 2002-09-09 2005-10-18 Broadcom Corporation System and method for controlling prefetching
US6895475B2 (en) * 2002-09-30 2005-05-17 Analog Devices, Inc. Prefetch buffer method and apparatus
KR20040029254A (ko) * 2002-09-30 2004-04-06 마츠시타 덴끼 산교 가부시키가이샤 자원관리장치
TW569236B (en) * 2002-10-03 2004-01-01 Via Tech Inc Multiple-grant controller with parallel arbitration mechanism and related method
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US6976106B2 (en) * 2002-11-01 2005-12-13 Sonics, Inc. Method and apparatus for speculative response arbitration to improve system latency
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US20040117606A1 (en) * 2002-12-17 2004-06-17 Hong Wang Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US7143219B1 (en) 2002-12-31 2006-11-28 Intel Corporation Multilevel fair priority round robin arbiter
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US6950892B2 (en) * 2003-04-10 2005-09-27 International Business Machines Corporation Method and system for managing distributed arbitration for multicycle data transfer requests
JP3632695B2 (ja) 2003-05-06 2005-03-23 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
JP4313607B2 (ja) * 2003-05-08 2009-08-12 富士通株式会社 バス接続回路及びバス接続システム
US7177985B1 (en) 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7139878B2 (en) * 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement
US8386648B1 (en) 2003-06-26 2013-02-26 Nvidia Corporation Hardware support system for accelerated disk I/O
US7225318B2 (en) * 2003-10-08 2007-05-29 Intel Corporation Dynamic prefetch in continuous burst read operation
US6996647B2 (en) * 2003-12-17 2006-02-07 International Business Machines Corporation Token swapping for hot spot management
US7281148B2 (en) * 2004-03-26 2007-10-09 Intel Corporation Power managed busses and arbitration
US7315912B2 (en) 2004-04-01 2008-01-01 Nvidia Corporation Deadlock avoidance in a bus fabric
JP4377279B2 (ja) * 2004-05-06 2009-12-02 株式会社日立製作所 ストレージシステム、コンピュータシステム、およびストレージシステムの設定方法
US7206902B2 (en) * 2004-08-17 2007-04-17 Nvidia Corporation System, apparatus and method for predicting accesses to a memory
US7260686B2 (en) * 2004-08-17 2007-08-21 Nvidia Corporation System, apparatus and method for performing look-ahead lookup on predictive information in a cache memory
US7461211B2 (en) * 2004-08-17 2008-12-02 Nvidia Corporation System, apparatus and method for generating nonsequential predictions to access a memory
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7525986B2 (en) 2004-10-28 2009-04-28 Intel Corporation Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools
US7263566B2 (en) 2004-12-30 2007-08-28 Qualcomm Incorporated Method and apparatus of reducing transfer latency in an SOC interconnect
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US20070165042A1 (en) * 2005-12-26 2007-07-19 Seitaro Yagi Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method
JP4621604B2 (ja) 2006-02-20 2011-01-26 株式会社東芝 バス装置、バスシステムおよび情報転送方法
JP4892253B2 (ja) 2006-02-28 2012-03-07 ルネサスエレクトロニクス株式会社 電子装置
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8345053B2 (en) * 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US7631126B2 (en) 2007-05-24 2009-12-08 Research In Motion Limited System and method for interfacing an electronic device with a host system
US7734856B2 (en) 2007-08-22 2010-06-08 Lantiq Deutschland Gmbh Method for operating a plurality of arbiters and arbiter system
US7876329B2 (en) * 2007-09-10 2011-01-25 Via Technologies, Inc. Systems and methods for managing texture data in a computer
US8099539B2 (en) 2008-03-10 2012-01-17 Lsi Corporation Method and system of a shared bus architecture
US8370552B2 (en) 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US7895385B2 (en) 2008-12-09 2011-02-22 Nvidia Corporation Establishing communication over serial buses in a slave device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001312719A (ja) * 2000-05-02 2001-11-09 Olympus Optical Co Ltd 画像処理装置とその制御方法
JP2007525768A (ja) * 2004-02-27 2007-09-06 エヌヴィディア コーポレイション テクスチャ要求のためのレジスタベースのキューイング
JP2007538319A (ja) * 2004-05-14 2007-12-27 エヌヴィディア コーポレイション 低電力プログラマブルプロセッサ
JP2008512771A (ja) * 2004-09-13 2008-04-24 エヌヴィディア コーポレイション フラグメントシェーディングパイプラインにおけるスケーラビリティの向上

Also Published As

Publication number Publication date
US8698823B2 (en) 2014-04-15
US20100259536A1 (en) 2010-10-14
TWI423162B (zh) 2014-01-11
JP5240588B2 (ja) 2013-07-17
TW201044311A (en) 2010-12-16
KR20100112099A (ko) 2010-10-18
US9928639B2 (en) 2018-03-27
US20140092114A1 (en) 2014-04-03
KR101226817B1 (ko) 2013-01-28
CN101859257A (zh) 2010-10-13
CN101859257B (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
JP5240588B2 (ja) デッドロックを起こさないパイプライン処理のためのシステム及び方法
US9436504B2 (en) Techniques for managing the execution order of multiple nested tasks executing on a parallel processor
JP5939524B2 (ja) サブバッファオブジェクト
TWI493451B (zh) 使用預解碼資料進行指令排程的方法和裝置
US9069609B2 (en) Scheduling and execution of compute tasks
US20120110586A1 (en) Thread group scheduler for computing on a parallel thread processor
TWI501150B (zh) 無指令解碼而排程指令的方法和裝置
US9921873B2 (en) Controlling work distribution for processing tasks
US20180165786A1 (en) Resource sharing on shader processor of gpu
JP2019519843A (ja) 仮想ベクトルレジスタファイルを使用するシステム及び方法
US20130300655A1 (en) Graphics processing unit sharing between many applications
US9798544B2 (en) Reordering buffer for memory access locality
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
US9489245B2 (en) Work-queue-based graphics processing unit work creation
US9135081B2 (en) Work-queue-based graphics processing unit work creation
US9262348B2 (en) Memory bandwidth reallocation for isochronous traffic
US9286256B2 (en) Sharing data crossbar for reads and writes in a data cache
US20140240329A1 (en) Graphics processing unit with a texture return buffer and a texture queue
WO2023163863A1 (en) Dynamic wave pairing
US9665920B1 (en) Simultaneous execution of compute and graphics applications

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121217

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130321

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5240588

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250