JP2011522325A - ローカル及びグローバルのデータ共有 - Google Patents

ローカル及びグローバルのデータ共有 Download PDF

Info

Publication number
JP2011522325A
JP2011522325A JP2011511649A JP2011511649A JP2011522325A JP 2011522325 A JP2011522325 A JP 2011522325A JP 2011511649 A JP2011511649 A JP 2011511649A JP 2011511649 A JP2011511649 A JP 2011511649A JP 2011522325 A JP2011522325 A JP 2011522325A
Authority
JP
Japan
Prior art keywords
thread
private
simd
lane
processors
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
JP2011511649A
Other languages
English (en)
Other versions
JP5461533B2 (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 JP2011522325A publication Critical patent/JP2011522325A/ja
Application granted granted Critical
Publication of JP5461533B2 publication Critical patent/JP5461533B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

【解決手段】
1つ以上のSIMD処理ユニットと、1つ以上のSIMD処理ユニットに対応するローカルデータシェアとを有するプロセッサと、グローバルデータシェアとを有するグラフィックス処理ユニットが開示されており、ローカルデータシェアは、1つ以上の実行ウエーブフロントに割り当てられた複数スレッドの各群のための1つ以上の小さい待ち時間のアクセス可能なメモリ領域を備えており、グローバルデータシェアは、スレッドの各群のための1つ以上の小さい待ち時間のメモリ領域を備えている。
【選択図】図1

Description

本発明は概してグラフィックス処理ユニットにおける実行スレッド間でのデータの共有を最適化することに関する。
グラフィックス処理ユニット(GPU)はグラフィックス処理動作に対して最適化された特殊目的の集積回路である。GPUは多くの場合、グラフィックス処理を必要とするアプリケーション、例えばビデオゲームアプリケーションを実行するために使用されるコンピュータデバイス(例えばパーソナルコンピュータ、レンダリングファーム又はサーバ、携帯型デバイス、デジタルテレビジョン等)内に組み込まれる。
処理効率を改善するために、GPUは一般的に、単一命令多重化データ(Single Instruction, Multiple Data)(「SIMD」又は「ベクター」)命令を用いる並列スレッドを実行してデータレベルでの並列処理を達成している。これにより、例えば個々のSIMDレーン(lane)上で各画素に対する動作の別々のスレッドを実行することによって、多重化画素のデータに対してSIMDプロセッサが同一の命令を実行することが可能になる。しかし、任意の1つのSIMDレーン内で生成されるデータは典型的には、計算する上での複雑で且つ費用のかかるデータ記憶及び検索命令の実行なくしては、他のSIMDレーンにアクセスすることができない。
よって、SIMDレーン間でのデータの共有を可能にするための改良された技術が求められている。
本発明の実施形態は、複数のSIMD処理ユニットと、グローバルデータシェア(GDS)とを備えたグラフィックス処理ユニットを含み、各SIMD処理ユニットは、複数のスレッドプロセッサと、各々が複数のスレッドプロセッサの1つと通信する複数の汎用レジスタ(GPR)ファイルと、複数のスレッドプロセッサの各々と通信するローカルデータシェア(LDS)とを備えており、GDSは複数のSIMD処理ユニットの各々における複数のスレッドプロセッサの各々と通信する。
本発明の実施形態は、複数のSIMD処理ユニットを形成することと、グローバルデータシェア(GDS)を形成することとを備えた製造の方法を更に含み、各SIMD処理ユニットは、複数のスレッドプロセッサと、各々が複数のスレッドプロセッサの1つと通信する複数の汎用レジスタ(GPR)ファイルと、複数のスレッドプロセッサの各々と通信するローカルデータシェア(LDS)とを備えており、GDSは複数のSIMD処理ユニットの各々における複数のスレッドプロセッサの各々と通信する。
本発明の実施形態は、コンピュータデバイスによって実行されるときにコンピュータデバイスに方法を実行させるコンピュータ実行可能命令が記憶されたコンピュータ可読媒体を追加的に含み、方法は、画像の一連の画素を一連のSIMDプロセッサに割り振ることと、一連の画素の一部の画素を一連のSIMDプロセッサの各処理レーンに割り振ることと、各処理レーンに関連する汎用レジスタ(GPR)ファイルに一部の画素を記憶することと、一部の画素に基いてレーン毎ローカル結果を算出することと、GPRファイルからのレーン毎ローカル結果を処理レーンに関連するローカルデータシェア(LDS)のプライベート領域に書き込むこととを備えており、LDSは処理レーンを含むSIMDプロセッサにのみ関連している。
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
添付の図面は、ここに組み込まれまた出願書類の一部をなし、本発明の実施形態を示しそして、明細書と共に本発明の原理を説明し並びに関連分野を含めた当業者が本発明をつくり及び使用することを可能にするのに更に役立つ。
図1は本発明の実施形態に従うコンピューティングアーキテクチャを示す図である。
図2は本発明の実施形態に従うローカルデータシェアを示す図である。
図3は本発明の実施形態に従うグローバルデータシェアを示す図である。
図4は本発明に従い画像処理アルゴリズムを改善するためにコンピューティングアーキテクチャを利用可能なステップを示すフローチャートである。
図5は本発明の実施形態を実装可能な例示的なコンピュータシステムを示す図である。
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
I.序論
本発明の以下の詳細な説明は、この発明に合致する例示的な実施形態を示す添付の図面を参照する。他の実施形態も可能であり、本発明の精神及び範囲内で実施形態に対して修正がなされ得る。従って、詳細な説明は本発明を限定することを意図されたものではない。むしろ本発明の範囲は添付の特許請求の範囲によって画定される。
本発明はソフトウエア、ハードウエア、ファームウエア、及び/又は図面に示された実体の多くの異なる実施形態において後述するように実装又は実施され得ることが当業者にとって明らかであろう。本発明を実装又は実施するハードウエアの特別な制御を伴ういかなる現実的なソフトウエアコードも本発明を限定していない。このように、本発明の動作上の挙動は、ここに提示される詳細さのレベルを前提として実施形態の修正及び変更が可能であるとの理解のもとに記述されることになる。また、そして当業者にとって明らかであろうように、この発明の種々の実施形態のシミュレーション、合成及び/又は製造は、一つには、一般的なプログラミング言語(例えばC又はC++)、VerilogHDL、VHDL、AlteraHDL(AHDL)等を含むハードウエア記述言語(HDL)、あるいは他の利用可能なプログラミングを含むコンピュータ可読コード(上述したような)及び/又は回路等キャプチュアツール(例えば回路キャプチュアツール)の使用を通して達成され得る。
このコンピュータ可読コードは、半導体、磁気ディスク、光学ディスク(例えばCD−ROM、DVD−ROM)を含むあらゆる既知のコンピュータ使用可能媒体内に配置されてよく、またコンピュータが使用可能な(例えば可読な)伝送媒体(例えばデジタル、光学的、又はアナログ系の媒体を含む搬送波又は他のあらゆる媒体)において具現化されるコンピュータデータ信号として処置されてよい。従って、コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信網を介して伝送されてよい。上述したシステム及び技術により達成される機能及び/又は提供される構造は、プログラムコードにおいて具現化されるコア(例えばGPUコア)内に表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
図1は本発明の実施形態に従うコンピューティングアーキテクチャ100を示している。アーキテクチャ100は1つ以上のSIMDプロセッサ102a〜102mを含む。各SIMDプロセッサは本発明の実施形態に従いSIMD_0_102a内に示される1つ以上のスレッドプロセッサ104a0〜104an及びSIMD_m_102m内に示される1つ以上のスレッドプロセッサ104m0〜104mnを含む。各スレッドプロセッサはまた本発明の実施形態に従いSIMD_0_102a内に示される汎用レジスタ(GPR)ファイル106a0〜106an及びSIMD_m_102m内に示されるGPRファイル106m0〜106mnを伴う。各々が複数のスレッドプロセッサ及び複数のGPRファイルを伴う複数のSIMDプロセッサが本発明の範囲内で意図されていることを参照符号は示しているが、場合によっては個々のSIMDプロセッサ、スレッドプロセッサ及びGPRファイルが基本参照番号(例えば102、104、及び106)によって参照されるであろう。
単一のスレッドプロセッサ104及びそれに付随するGPRファイル106の組み合わせは、一般的にはSIMD処理レーン(あるいは単に「レーン」又は「SIMDレーン」)と称される。関連分野を含めた当業者であれば理解するであろうように、スレッドプロセッサ104及びGPRファイル106に付随する付加的な要素が単一のSIMDレーンの一部を構成してよく、また図1に示される特定の実施形態は例示を目的としたものであり限定を目的としたものではない。
本発明の実施形態によると、アーキテクチャ100はローカルデータシェア(LDS)108a〜108mを更に含み、1つのLDS108は各SIMDプロセッサ102に付随する。また、アーキテクチャ100は、各SIMDプロセッサ102の各スレッドプロセッサ104によってアクセス可能なグローバルデータシェア(GDS)110を含む。LDS及びGDSについては以下に更に論じられる。
アーキテクチャ100での処理を実行するに際しては、処理は1つのSIMDプロセッサ102での実行のためのスレッドの集合を生じさせることができる。スレッドの集合における各スレッドはSIMDプロセッサ102内の特定のSIMDレーンに割り当てられ、従って各スレッドは特定のスレッドプロセッサ104及びGPRファイル106に割り当てられる。本発明の実施形態によると、共通処理から生じるこのスレッドの集合は「ウエーブフロント(wavefront)」として1つのSIMDプロセッサ102に割り当てられ、ウエーブフロント内の個々のスレッドの実行を一時的にマスキングすることを可能にする。本発明の実施形態によると、多重化ウエーブフロントがスレッドの任意の他の集合として1つのSIMDプロセッサ102に割り当てられてよい。SIMDプロセッサ102内で動作している全てのスレッドは多重化ウエーブフロント又はその任意の一部からなり、集合的に一群のスレッドと称される。
II.汎用レジスタ
本発明の実施形態によると、各SIMDプロセッサ102は1つ以上のスレッドプロセッサ104を含み、各スレッドプロセッサは1つのGPRファイル106を伴う。上述したように、1つのウエーブフロントが1つのSIMDプロセッサに割り当てられる。ウエーブフロントの各スレッドは特定のSIMDレーンでの実行のために割り当てられ、従ってそのSIMDレーンに付随する特定のスレッドプロセッサ104及びGPRファイル106に割り当てられる。スレッドプロセッサ104で実行されているスレッドは、同じレーンのGPRファイル106のレジスタに対して読み出し及び書き込みが可能である。関連分野を含めた当業者であれば理解するであろうように、GPRファイル106内のレジスタにアクセスするためにスレッドプロセッサ104がGPRファイル106と通信することを可能にする多くのレジスタアクセス実装が存在し、また本発明の実施形態はいかなる特定の実装にも限定されない。
各GPRファイル106は本発明の実施形態に従い、スレッドプロセッサ104で実行されているスレッドに関連付けられる指定プライベートスペース、即ちレジスタブロックを含む。本発明の更なる実施形態によると、GPRファイル106は複数のプライベートレジスタブロックに前もってセグメント化されている。スレッドプロセッサ104で実行されている新たなスレッドが最初の実行でのプライベートレジスタブロックを割り当てられて、それら新たなスレッドのみがそのプライベートレジスタブロックへの書き込みアクセスを有することとなる。
本発明の追加的な実施形態によると、GPRファイル106は共有グローバルプールを含み、スレッドプロセッサ104で実行されている任意のスレッドは、そのスレッドがどのウエーブフロントに関連付けられているかにかかわらず共有グローバルプールに対して書き込み及び読み出しが可能である。この機能は、予約されたグローバル領域に対して、近隣のスレッドがアクセスすることを可能にし、それにより順序無依存の連想グローバルデータ(order-independent associative global data)での読み出し、修正及び書き込みを可能にする。この機能は更に、同一のSIMDレーンに割り当てられているにもかかわらず異なるウエーブフロントに属する複数スレッド間での高速な共有を可能にする。
III.ローカルデータシェア
上述したように各SIMDプロセッサ102は1つのLDS108を含む。このLDS108は同一SIMDプロセッサ102内で全てのスレッドプロセッサ104によって直接アクセス可能である。本発明の実施形態によると、LDS108は複数のプライベート書き込みスペースにセグメント化され、各プライベート書き込みスペースは1つのスレッドプロセッサ104に対して実行される1つのスレッドに対応し且つそのスレッドのために予約される。本発明の追加的な実施形態によると、各プライベート書き込みスペースは1つのスレッドプロセッサ104に対応する。関連分野を含めた当業者であれば理解するであろうように、LDS108のセグメント化の方法は変更され得るものであり、また前述したセグメント化フォーマットは例示を目的としたものであり限定を目的とはしていない。
本発明の実施形態によると、LDS108のプライベート書き込みスペースに割り当てられたスレッドプロセッサ104で実行されているスレッドは、その割り当てられたプライベート書き込みスペースに対して書き込み及び読み出しが可能である。また、いずれのスレッドプロセッサ104もがLDS108のいずれのプライベート書き込みスペースからも読み出し可能であり、それにより複数のスレッドプロセッサ104がSIMDプロセッサ102内でデータを共有することを可能にしている。関連分野を含めた当業者であれば理解するであろうように、LDS108は「オーナ書き込み」モデルを用いて動作するが他のアクセスモデルも利用可能であり、またオーナ書き込みモデルは例示を目的としたものであり限定を目的とはしていない。
本発明の追加的な実施形態によると、LDS108のプライベート書き込みスペースに割り当てられた個々のスレッドは、割り当てられたプライベート書き込みスペースに対して書き込み及び読み出しが可能である。その結果、他のスレッドプロセッサ104で実行されているスレッドを含めSIMDプロセッサ102で実行されているいかなるスレッドも、その割り当てられたプライベート書き込みスペースからデータを読み出すことができる。
オーナ書き込みモデルを有するLDS108を設けることによって、上述のGPR共有におけるように単一のスレッドプロセッサ104で実行されている複数スレッドの間でだけでなく、SIMD102の全てのスレッドプロセッサ104で実行されている全てのスレッドの間でのデータの共有が可能になる。これにより、1つのウエーブフロント内の複数スレッドが当該ウエーブフロント内で他のスレッドとデータを共有することが可能になる。またこれにより、同一のSIMD102で実行されている任意のウエーブフロント内で動作中の複数スレッドが、一群のスレッド内の他の任意のウエーブフロントに属する複数スレッドからのデータにアクセスすることが可能になる。
図2は本発明の実施形態によるLDSメモリ書き込みアーキテクチャ200を示しており、図1のLDS108a〜108mに対応している。関連分野を含めた当業者であれば、図2に示されているデータ幅及び論理レイアウトは図示されたとおり正確に実装される必要はなく、また種々のデータ幅及び論理レイアウトが適応可能であることを理解するであろう。単一のSIMDプロセッサ102内の全GPRファイル106の集合は、図2においてはGPR201として示されている。
本発明の実施形態によると、GPR201からLDS203へのデータの書き込みは、スレッドベクター書き込み位置に対応するLDS内のアドレスにデータを書き込むことにより達成され、スレッドベクター書き込み位置は特定のスレッドの実行のために予約されたLDSの区画である。これはLDS内でのスレッドのプライベート書き込みスペースと称される。関連分野を含めた当業者であれば理解するであろうように、幾つものアドレス指定モード(addressing modes)が使用可能であり、またここでのアドレス指定モードは例示を目的としたものであり限定を目的とはしていない。
本発明の更なる実施形態によると、LDSにおけるプライベート書き込みスペースは可変である。限定はされないが例えば、16までのウエーブフロントに適応するプライベート書き込みスペースがスレッド毎に1つのレジスタとして割り当てられ、あるいは代替的には16のレジスタ及び1つだけのウエーブフロントが割り当てられる。関連分野を含めた当業者であれば認識するであろうように、スレッド毎に割り当てられる多数のレジスタの多数の組み合わせ及び、結果としてLDSに収容され得るウエーブフロントの総数が存在し、上述のグルーピングは例示的なものであり限定的なものではない。追加的な実施形態では、複数のウエーブフロントはスレッドの可変サイズの1群に分類することもができる。
本発明の追加的な実施形態によると、1つ以上のマルチプレクサ202がGPR201からLDS203へデータを書き込むために構成される。書き込みが予定されている場合、データはGPR201から読み出され、そしてLDS203へ書き込まれる。実施形態においては、4つのスレッドに対するデータが単一クロック周期においてGPR201からLDS203へ書き込まれる。
前述したように、本発明の実施形態ではSIMDプロセッサ102毎に1つのLDSメモリ108/203がある。本発明の付加的な実施形態によると、SIMDプロセッサ102で実行されている各ウエーブフロントはLDS108内のウエーブフロントメモリ領域に割り当てられる。ウエーブフロントを含む各スレッドはこのより大きなウエーブフロントメモリ領域内の特定のメモリ領域に割り当てられる。これにより、スレッドが、そのスレッドが割り当てられていないメモリ領域又はそのスレッドの対応するウエーブフロントの他のスレッドによって共有されていないメモリ領域にデータを書き込むことが防止されるにもかかわらず、スレッドがその割り当てられたメモリ領域内でデータを交換することが可能になる。
限定はされないが例えばLDSメモリ203は、メモリを各ウエーブフロントに対応するメモリ領域に分けることによって索引を付される。例えば、メモリ領域206はウエーブフロント0に対応している。メモリ領域206へ書き込む場合、ウエーブフロント0のスレッド0〜3は符号204で示されるようにバンクインデックス0でLDS203へ書き込むことが予定される。ある実施形態では、この書き込みは単一クロック周期内に生じる。この処理はウエーブフロント0内の一連の4つのスレッドの各々に対して繰り返され、各連続する一連の4つのスレッドは続くクロック周期において次のバンクに対して書き込む。関連分野を含めた当業者であれば、タイミング及びメモリサイズのための値が限定ではなく例示のために提供されていることを理解するであろう。
本発明の更なる実施形態によると、LDSからのデータの高速読み出しを可能にする特別なブロードキャスト読み出しモードが利用可能であり、LDSからのデータはウエーブフロント内の全てのスレッド又は共有レジスタへ戻される。ある実施形態では、ブロードキャスト読み出しモードは1乃至4のダブルワード(dwords)のデータの高速読み出しを実行し、それぞれのウエーブフロント内の全てのスレッドに対してデータを4クロック周期内で戻す。
本発明の追加的な実施形態によると、バリア命令(barrier instructions)が実装される。このバリア命令は同一の処理から生じる全てのスレッド(例えば一群のスレッド、又はウエーブフロント)内に存在していてよく、スレッドの全てが開始前に当該バリアポイントに同期することを強制する。このことは、限定はされないが例えば、LDSにアクセスするときのハザード状態を回避するために用いられてよい。例えば、他のウエーブフロントからの異なるスレッドにより書き込まれたLDS内のデータに対する読み出し命令をスレッドが実行している場合、スレッドが読み出しを要求しているデータがこの時点で利用可能であるかは未知である。このデータを提供する書き込み命令をバリア命令に先立ち発行し、且つ読み出し命令をバリア命令の後に発行することによって、読み出し命令がLDSから正確なデータを取得するのを保証することができる。関連分野を含めた当業者であれば理解するであろうように、限定はされないが例えば他のアクセスハザードの回避を含む他の利用がこのバリア命令にとって可能である。
IV.グローバルデータシェア
図3は本発明の実施形態に従い全てのSIMD処理ユニットについての読み出し及び書き込み動作を支援するGDS300である。また本発明の更なる実施形態によると、SIMD処理ユニットはブロードキャストを伴うGDS300からデータを要求するように動作し、GDSがシステム内のGPRファイルの全てをGDS300からのブロードキャストデータで更新することが可能になる。
関連分野を含めた当業者であれば、図3に示されているデータ幅及び論理レイアウトは図示されたとおり正確に実装される必要はなく、また種々のデータ幅及び論理レイアウトが適応可能であることを理解するであろう。
V.アプリケーション例
図4は本発明の実施形態に従いプライベートGPRスペース、グローバルGPRスペース、LDS、及びGDSの前述した機能を利用するアプリケーション例を示すフローチャート400である。限定はされないが例えばフローチャート400は、単一経路における画像の特性、例えば画像の最大及び最小輝度値を算出するために利用することができる。関連分野を含めた当業者であれば理解するであろうように、他のアプリケーションもまたプライベートGPRスペース、グローバルGPRスペース、LDS、及びGDSの構成を利用することができ、フローチャート400は例示を目的としたものであり限定を目的とはしていない。
方法はステップ402で開始されステップ404へ進み、画像の複数画素の一部(subset)が1つ以上のウエーブフロントに割り振られる。各ウエーブフロント内において、ウエーブフロントに割り当てられた複数画素の一部は、SIMDプロセッサ102に割り当てられたウエーブフロントの各スレッドに割り振られる。ウエーブフロントの各スレッドは割り当てられたSIMDプロセッサ102のレーン内で実行され、そのレーンは特定のスレッドプロセッサ104及びそれに付随するGPRファイル106に対応している。1つ以上のウエーブフロントが単一のSIMDプロセッサ102内で実行されていてよいので、フローチャート400のステップを実行中の多重化スレッドは同一SIMDプロセッサ102内の同一レーンに割り当てられてよい。
ステップ406では、各スレッドの対応する複数画素の一部がその関連するGPRファイル106内に記憶される。スレッドプロセッサ104における個々のスレッドは次いでステップ408にて、スレッド毎プライベート結果を算出する。最大及び最小輝度値の例との関係では、スレッドプロセッサ104は実行中のスレッドが割り当てられた複数画素の一部に対して最大及び最小輝度値を算出する。ウエーブフロントの各レーンは、その結果を自動的に各レーンのグローバルGPRスペース内に記憶されているレーン毎の結果と結びつける。画像の全ての画素の予定が決定されてから、LDS108におけるスレッドのプライベート領域に書き込まれつつあるグローバルレジスタに記憶されている「ローカル結果」を伴って縮小段階(reduction phase)が開始される。
各SIMD102に対して、SIMD102の各レーンによって生成されるローカル結果の全てを読み出すために1つのレーンが次いでステップ412で構成され、SIMDローカル結果を見いだすためにデータを縮小する。例えば、単一のスレッドプロセッサ104に対応する1つのレーンが割り当てられて、SIMDローカル結果を見いだすために複数のローカル結果が縮小される。当該スレッドプロセッサ104は次いで全てのローカル結果をLDS108からGPRファイル106へ読み込み、全てのローカル結果から最大及び最小輝度値を算出する。この計算の結果がSIMDローカル結果となる。ステップ414では、スレッドプロセッサ104がSIMDローカル結果をGDS110のプライベート領域に書き込む。
同様にステップ416では、単一のスレッドプロセッサ104がSIMDローカル結果の全てをGDS110から読み出すと共に収集し、最終的な結果を見いだすためにデータを縮小する。例えば、単一のスレッドプロセッサ104が全てのSIMDローカル結果をGDS110からそのGPRファイル106へ読み込み、全てのSIMDローカル結果の間で最大及び最小輝度値を算出する。この計算の結果は縮小の最終的な結果となる。ステップ418では最終的な結果が次いでメモリロケーションに記憶される。本発明の追加的な実施形態によると、最終的な結果はGDSに記憶し直され、記憶動作の後、フローチャート400に説明される動作の第2の経路に対してGPRファイル106を投入するための、ステップ418で算出された最終的な結果を中間結果として用いるブロードキャスト読み込みが続く。
VI.コンピュータシステム実装
本発明の種々の側面がソフトウエア、ファームウエア、ハードウエア、又はそれらの組み合わせによって実装され得る。図5は本発明又はその一部がコンピュータ可読コードとして実装され得る例示的なコンピュータシステム500を示している。本発明の種々の実施形態がこの例示的なコンピュータシステム500に関して説明される。本明細書を読んだ後で、どのようにして他のコンピュータシステム及び/又はコンピュータアーキテクチュアを用いて本発明を実施又は実装するかについて、関連分野を含めた当業者にとって明白になろう。
コンピュータシステム500は1つ以上のプロセッサ、例えばプロセッサ504を含む。プロセッサ504は特定用途のあるいは汎用のプロセッサであってよい。プロセッサ504は通信基盤(communication infrastructure)506(例えばバス又はネットワーク)に接続される。
コンピュータシステム500はまた、望ましくはランダムアクセスメモリ(RAM)である主メモリ508を含み、更に補助メモリ510を含むことができる。補助メモリ510は例えば、ハードディスクドライブ512、リムーバブル記憶装置514、及び/又はメモリスティックを含んでいてよい。リムーバブル記憶装置514はフレキシブルディスクドライブ、磁気テープドライブ、光学ディスクドライブ、フラッシュメモリ等を備えていてよい。リムーバブル記憶装置514は周知の方法によりリムーバブル記憶ユニット518から読み出し及び/又はリムーバブル記憶ユニット518へ書き込みする。リムーバブル記憶ユニット518はフレキシブルディスク、磁気テープ、光学ディスク等を備えていてよく、リムーバブル記憶装置514によって読み出され且つ書き込まれる。関連分野を含めた当業者に理解されるであろうように、リムーバブル記憶ユニット518はコンピュータソフトウエア及び/又はデータが既に記憶されたコンピュータ利用可能記憶媒体を含む。
代替的な実装においては、補助メモリ510は、コンピュータプログラム又は他の命令がコンピュータシステム500に読み込まれることを可能にする他の同様の手段を含むことができる。当該手段は例えばリムーバブル記憶ユニット522及びインタフェース520を含んでよい。当該手段の例は、プログラムカートリッジ及びカートリッジインタフェース(それらの例はビデオゲームデバイスにおいて見られる)、リムーバブルメモリチップ(例えばEPROM又はPROM)及び関連するソケット、並びにソフトウエア及びデータをリムーバブル記憶ユニット522からコンピュータシステム500へ転送することを可能にする他のリムーバブル記憶ユニット522及びインタフェース520を含むことができる。
コンピュータシステム500はまた通信インタフェース524を含むことができる。通信インタフェース524はソフトウエア及びデータがコンピュータシステム500と外部デバイスの間で転送されることを可能にする。通信インタフェース524はモデム、ネットワークインタフェース(例えばLANカード)、通信ポート、PCMCIAスロット及びカード等を含むことができる。通信インタフェース524を介して転送されるソフトウエア及びデータは、電子的、電磁気的、光学的であってよい信号、又は通信インタフェース524によって受け取られることが可能な他の信号の形態にある。これらの信号は通信パス526を介して通信インタフェース524へ供給される。通信パス526は信号を伝え、ワイヤ若しくはケーブル、光ファイバ、電話線、携帯電話リンク、RFリンク又は他の通信チャネルを用いて実装され得る。
この文書では、「コンピュータプログラム媒体」及び「コンピュータ使用可能媒体」という用語は、リムーバブル記憶ユニット518、リムーバブル記憶ユニット522、及びハードディスクドライブ512に組み込まれるハードディスクを一般的には参照して用いられる。通信パス526を介して伝えられる信号もまた、ここに説明される論理を具現化することができる。コンピュータプログラム媒体及びコンピュータ使用可能媒体はまた、主メモリ508及び補助メモリ510等のメモリ半導体(例えばDRAM等)であってよいメモリを参照してよい。これらのコンピュータプログラム製品はコンピュータシステム500にソフトウエアを供給するための手段である。
コンピュータプログラム(コンピュータ制御論理あるいはデータ及び/又は命令とも称される)は主メモリ508及び/又は補助メモリ510内に記憶される。コンピュータプログラムはまた、通信インタフェース524を介しても受け取られることができる。当該コンピュータプログラムは、実行されたときに、ここで論じられる本発明をコンピュータシステム500が実施又は実装することを可能にする。特に、コンピュータプログラムは、実行されたときに、本発明の処理をプロセッサ504が実施又は実装することを可能にする。従って、当該コンピュータプログラムはコンピュータシステム500の制御器に相当する。ソフトウエアを用いて本発明が実施又は実装される場合、ソフトウエアはコンピュータプログラム製品内に記憶されていてよく、リムーバブル記憶装置514、インタフェース520、ハードディスクドライブ512又は通信インタフェース524を用いてコンピュータシステム500内に取り込まれてよい。
本発明はまた、任意のコンピュータ利用可能媒体に記憶されるソフトウエアを備えるコンピュータプログラム製品に向けられている。当該ソフトウエアは、1つ以上のデータ処理デバイス内で実行されたときに、1つ以上のデータ処理デバイスにここで説明されているような又は前述したような動作をさせ、ここに説明される本発明の実施形態を実行するコンピュータデバイス(例えばASIC又はプロセッサ)の合成及び/又は製造を可能にする。本発明の実施形態は、現在知られている又は将来知られることになる任意のコンピュータ使用可能又はコンピュータ可読の媒体を採用する。コンピュータ使用可能媒体の例は、限定はされないが、主要記憶デバイス(例えば任意の種類のランダムアクセスメモリ)、補助記憶デバイス(例えばハードドライブ、フレキシブルディスク、CD_ROM、ZIPディスク、テープ、磁気記憶デバイス、光学記憶デバイス、MEMS、ナノテクノロジー記憶デバイス等)、及び通信媒体(例えば有線及び無線通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク、イントラネット等)を含む。
VII.結論
本発明の種々の実施形態が上に説明されてきたが、それらは例示のみを目的として提示されたものであり、限定を目的とはしていない。添付の特許請求の範囲で画定されるような本発明の精神及び範囲から逸脱することなしに、形態及び詳細における種々の変更がここになされ得ることが関連分野をも含めた当業者によって理解されるであろう。本発明はこれらの例示に限定されないことが理解されるべきである。本発明はここに説明されるように動作する任意の要素に適用可能である。従って、本発明の広さ及び範囲は上述のいかなる例示的実施形態によっても限定されるべきではなく、後述の特許請求の範囲及びそれらの均等なものに従ってのみ画定されるべきである。

Claims (25)

  1. 複数のSIMD処理ユニットと、グローバルデータシェア(GDS)と、を備えたグラフィックス処理ユニットであって、
    各SIMD処理ユニットは、
    複数のスレッドプロセッサと、
    各々が前記複数のスレッドプロセッサの1つと通信する複数の汎用レジスタ(GPR)ファイルと、
    前記複数のスレッドプロセッサの各々と通信するローカルデータシェア(LDS)と、を備えており、
    前記GDSは、前記複数のSIMD処理ユニットの各々における前記複数のスレッドプロセッサの各々と通信する、グラフィックス処理ユニット。
  2. 前記複数のGPRファイルの各々は、当該GPRファイルに関連する前記スレッドプロセッサで実行中の1つ以上のスレッドの第1のスレッドに割り当てられるレジスタのプライベートブロックと、レジスタのグローバルブロックと、を備えており、
    前記第1のスレッドのみが前記プライベートブロックに対して読み出し及び書き込み可能であり、前記1つ以上のスレッドの任意のスレッドが前記グローバルブロックに対して読み出し及び書き込み可能である、請求項1に記載のグラフィックス処理ユニット。
  3. 前記複数のSIMD処理ユニットの各LDSは、複数のプライベート書き込みスペースを備えており、
    前記複数のプライベート書き込みスペースの各々は、当該LDSに関連する前記SIMD処理ユニットの前記複数のスレッドプロセッサで実行中の複数のスレッドの各々に割り当てられる、請求項1に記載のグラフィックス処理ユニット。
  4. 前記複数のプライベート書き込みスペースのサイズが可変である、請求項3に記載のグラフィックス処理ユニット。
  5. 前記複数のスレッドプロセッサの第1のスレッドプロセッサのみがその割り当てられたプライベート書き込みスペースに書き込み可能であり、
    前記複数のスレッドプロセッサは、当該割り当てられたプライベート書き込みスペースから読み出し可能である、請求項3に記載のグラフィックス処理ユニット。
  6. 前記GDSは複数のプライベート書き込みスペースを備えており、
    前記複数のプライベート書き込みスペースの各々は、前記複数のSIMD処理ユニットの前記複数のスレッドプロセッサの1つに割り当てられる、 請求項1に記載のグラフィックス処理ユニット。
  7. 前記複数のスレッドプロセッサの第1のスレッドプロセッサのみがその割り当てられたプライベート書き込みスペースに書き込み可能であり、
    前記複数のスレッドプロセッサは当該割り当てられたプライベート書き込みスペースから読み出し可能である、請求項6に記載のグラフィックス処理ユニット。
  8. 複数のSIMD処理ユニットを形成することと、グローバルデータシェア(GDS)を形成することとを備えた製造の方法であって、
    各SIMD処理ユニットは、
    複数のスレッドプロセッサと、
    各々が前記複数のスレッドプロセッサの1つと通信する複数の汎用レジスタ(GPR)ファイルと、
    前記複数のスレッドプロセッサの各々と通信するローカルデータシェア(LDS)とを備えており、
    前記GDSは、前記複数のSIMD処理ユニットの各々における前記複数のスレッドプロセッサの各々と通信する、製造の方法。
  9. 前記複数のSIMD処理ユニットの各々を形成することは、前記複数のGPRファイルの各々を形成することを備えており、
    各GPRファイルは、当該GPRファイルに関連する前記スレッドプロセッサで実行中の1つ以上のスレッドの第1のスレッドに割り当てられるレジスタのプライベートブロックと、レジスタのグローバルブロックと、を備えており、
    前記第1のスレッドのみが前記プライベートブロックに対して書き込み可能であり、前記1つ以上のスレッドの任意のスレッドが前記プライベートブロックから読み出し可能であり、前記1つ以上のスレッドの任意のスレッドが前記グローバルブロックに対して読み出し及び書き込み可能である、 請求項8に記載の方法。
  10. 前記複数のSIMD処理ユニットの各々を形成することは、前記LDSを形成することを備えており、
    前記LDSは、複数のプライベート書き込みスペースを備えており、
    前記複数のプライベート書き込みスペースの各々は、当該LDSに関連する前記SIMD処理ユニットの前記複数のスレッドプロセッサで実行中の複数のスレッドの各々に割り当てられる、請求項8に記載の方法。
  11. 前記プライベート書き込みスペースのサイズが可変である、請求項10に記載の方法。
  12. 前記複数のスレッドプロセッサの1つのスレッドプロセッサで実行中の第1のスレッドのみがその割り当てられたプライベート書き込みスペースに書き込み可能であり、
    前記複数のスレッドプロセッサで実行中の前記複数のスレッドは、当該割り当てられたプライベート書き込みスペースから読み出し可能である、 請求項10に記載の方法。
  13. 前記GDSは複数のプライベート書き込みスペースを備えており、
    前記複数のプライベート書き込みスペースの各々は前記複数のSIMD処理ユニットの前記複数のスレッドプロセッサで実行中の複数のスレッドの1つに割り当てられる、請求項8に記載の方法。
  14. 前記複数のスレッドプロセッサの1つのプロセッサで実行中の第1のスレッドのみがその割り当てられたプライベート書き込みスペースに対して読み出し及び書き込み可能である、請求項13に記載の方法。
  15. 前記方法はハードウエア記述言語命令を合成することによって実行される、請求項8に記載の方法。
  16. コンピュータデバイスによって実行されるときに前記コンピュータデバイスに方法を実行させるコンピュータ実行可能命令が記憶されたコンピュータ可読媒体であって、前記方法は、
    画像の一連の画素を一連のSIMDプロセッサに割り振ることと、
    前記一連の画素の一部の画素を前記一連のSIMDプロセッサの各々の処理レーンで実行中の各スレッドに割り振ることと、
    各処理レーンに関連する汎用レジスタ(GPR)ファイルに前記一部の画素を記憶することと、
    前記GPRファイル内のプライベートスペースにおける前記一部の画素に基づいてスレッド毎プライベート結果を算出することと、
    前記スレッド毎プライベート結果を同一のレーンからの複数のスレッドによって算出される複数の追加的なスレッド毎プライベート結果と共に蓄積して前記GPRファイル内のグローバルスペース内に記憶されるレーン毎ローカル結果を生成することと、
    前記レーン毎ローカル結果を前記GPRファイル内の前記グローバルスペースから前記処理レーンに関連するローカルデータシェア(LDS)のプライベート領域に書き込むことと、を備えており、
    前記LDSは前記処理レーンを含む前記SIMDプロセッサにのみ関連しているコンピュータ可読媒体。
  17. 前記方法は、
    各レーン毎ローカル結果を前記LDSから第1の単一の処理レーンの第1の単一のGPRファイルに読み込むことと、
    SIMDローカル結果を見いだすために前記LDSからの全てのレーン毎ローカル結果の結果を縮小することと、
    前記SIMDローカル結果を前記第1の単一のGPRファイルから前記第1の単一の処理レーンに関連するグローバルデータシェア(GDS)のプライベート領域に書き込むことと、を更に備えている、請求項16に記載のコンピュータ可読媒体。
  18. 前記方法は、
    各SIMDローカル結果を前記GDSから第2の単一の処理レーンの第2の単一のGPRファイルに読み込むことと、
    最終的な結果を見いだすために前記GDSからの全てのSIMDローカル結果の結果を縮小することと、
    前記最終的な結果を書き込むことと、を更に備えている、請求項17に記載のコンピュータ可読媒体。
  19. 前記最終的な結果を書き込むことは前記最終的な結果をメモリロケーションに書き込むことを備えている、請求項18に記載のコンピュータ可読媒体。
  20. 前記最終的な結果を書き込むことは前記最終的な結果を前記GDSに書き込み直すことを備えており、前記方法は、
    ブロードキャスト読み出し命令を実行することと、
    前記ブロードキャスト読み出し命令に応答して前記GDSから前記最終的な結果を前記GPRに投入することと、
    前記最終的な結果を後続の計算における中間結果として用いて後続のスレッド毎プライベート結果を算出することと、を更に備えている、請求項18に記載のコンピュータ可読媒体。
  21. 画像の一連の画素を一連のSIMDプロセッサに割り振ることと、
    前記一連のSIMDプロセッサの各々の処理レーンで実行中の各スレッドに前記一連の画素の一部の画素を割り振ることと、
    各処理レーンに関連する汎用レジスタ(GPR)ファイルに前記一部の画素を記憶することと、
    前記GPRファイル内のプライベートスペースにおける前記一部の画素に基いてスレッド毎プライベート結果を算出することと、
    前記スレッド毎プライベート結果を同一のレーンからの複数のスレッドによって算出される複数の追加的なスレッド毎プライベート結果と共に蓄積して前記GPRファイル内のグローバルスペース内に記憶されるレーン毎ローカル結果を生成することと、
    前記レーン毎ローカル結果を前記GPRファイル内の前記グローバルスペースから前記処理レーンに関連するローカルデータシェア(LDS)のプライベート領域に書き込むことと、を備えた方法であって、
    前記LDSは前記処理レーンを含む前記SIMDプロセッサにのみ関連している方法。
  22. 各レーン毎ローカル結果を前記LDSから第1の単一の処理レーンの第1の単一のGPRファイルに読み込むことと、
    SIMDローカル結果を見いだすために前記LDSからの全てのレーン毎ローカル結果の結果を縮小することと、
    前記SIMDローカル結果を前記第1の単一のGPRファイルから前記第1の単一の処理レーンに関連するグローバルデータシェア(GDS)のプライベート領域に書き込むことと、を更に備えた、請求項21に記載の方法。
  23. 各SIMDローカル結果を前記GDSから第2の単一の処理レーンの第2の単一のGPRファイルに読み込むことと、
    最終的な結果を見いだすために前記GDSからの全てのSIMDローカル結果の結果を縮小することと、
    前記最終的な結果を書き込むことと、を更に備えた、請求項22に記載の方法。
  24. 前記最終的な結果を書き込むことは、前記最終的な結果をメモリロケーションに書き込むことを備えている、請求項23に記載の方法。
  25. 前記最終的な結果を書き込むことは、前記最終的な結果を前記GDSに書き込み直すことを備えており、
    ブロードキャスト読み出し命令を実行することと、
    前記ブロードキャスト読み出し命令に応答して前記GDSから前記最終的な結果を前記GPRに投入することと、
    前記最終的な結果を後続の計算における中間結果として用いて後続のスレッド毎プライベート結果を算出することと、を更に備えた、請求項23に記載の方法。
JP2011511649A 2008-05-30 2009-06-01 ローカル及びグローバルのデータ共有 Active JP5461533B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5753408P 2008-05-30 2008-05-30
US61/057,534 2008-05-30
PCT/US2009/003315 WO2009145917A1 (en) 2008-05-30 2009-06-01 Local and global data share

Publications (2)

Publication Number Publication Date
JP2011522325A true JP2011522325A (ja) 2011-07-28
JP5461533B2 JP5461533B2 (ja) 2014-04-02

Family

ID=41377444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011511649A Active JP5461533B2 (ja) 2008-05-30 2009-06-01 ローカル及びグローバルのデータ共有

Country Status (6)

Country Link
US (2) US9619428B2 (ja)
EP (2) EP2289001B1 (ja)
JP (1) JP5461533B2 (ja)
KR (1) KR101474478B1 (ja)
CN (1) CN102047241B (ja)
WO (1) WO2009145917A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014501008A (ja) * 2010-11-18 2014-01-16 日本テキサス・インスツルメンツ株式会社 データを移動させるための方法及び装置
JP7246308B2 (ja) 2016-11-23 2023-03-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド デュアルモードローカルデータストア

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US20100250564A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution
EP2596470A1 (en) * 2010-07-19 2013-05-29 Advanced Micro Devices, Inc. Data processing using on-chip memory in multiple processing units
US8752064B2 (en) * 2010-12-14 2014-06-10 Advanced Micro Devices, Inc. Optimizing communication of system call requests
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US9547880B2 (en) 2012-04-09 2017-01-17 Intel Corporation Parallel processing image data having top-left dependent pixels
US10062135B2 (en) * 2013-07-31 2018-08-28 National Technology & Engineering Solutions Of Sandia, Llc Graphics processing unit management system for computed tomography
US9633411B2 (en) * 2014-06-26 2017-04-25 Qualcomm Incorporated Load scheme for shared register in GPU
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US9760969B2 (en) * 2015-03-09 2017-09-12 Mediatek Inc. Graphic processing system and method thereof
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
US9779469B2 (en) * 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
GB2546308B (en) 2016-01-15 2019-04-03 Advanced Risc Mach Ltd Data processing systems
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) * 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10552934B2 (en) 2016-07-01 2020-02-04 Intel Corporation Reducing memory latency in graphics operations
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US10033482B2 (en) * 2016-08-03 2018-07-24 Samsung Electronics Co., Ltd System and method for providing interference parameter estimation for multi-input multi-output (MIMO) communication system
US10223822B2 (en) * 2016-12-22 2019-03-05 Apple Inc. Mid-render compute for graphics processing
US10580104B2 (en) * 2017-04-17 2020-03-03 Intel Corporation Read/write modes for reducing power consumption in graphics processing units
US10922258B2 (en) * 2017-12-22 2021-02-16 Alibaba Group Holding Limited Centralized-distributed mixed organization of shared memory for neural network processing
GB2578932B (en) 2019-02-14 2021-02-24 Imagination Tech Ltd Allocation of memory
US11029954B2 (en) * 2019-04-22 2021-06-08 Samsung Electronics Co., Ltd. Per-lane dynamic indexing in temporary registers
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
US10891708B1 (en) 2019-11-25 2021-01-12 Arm Limited Shader program execution in graphics processing
US11361400B1 (en) 2021-05-06 2022-06-14 Arm Limited Full tile primitives in tile-based graphics processing
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files
CN117132450B (zh) * 2023-10-24 2024-02-20 芯动微电子科技(武汉)有限公司 一种可实现数据共享的计算装置和图形处理器

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05506113A (ja) * 1990-01-05 1993-09-02 マスパー・コンピューター・コーポレイション 並列プロセッサメモリシステム
JPH06332700A (ja) * 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
JPH0863361A (ja) * 1994-08-08 1996-03-08 Rockwell Internatl Corp レジスタファイル、およびレジスタファイルを管理する方法
JPH09198361A (ja) * 1996-01-23 1997-07-31 Kofu Nippon Denki Kk マルチプロセッサシステム
JPH10162130A (ja) * 1996-12-02 1998-06-19 Hitachi Ltd 並列データ処理装置および方法
JP2000305841A (ja) * 1999-03-29 2000-11-02 Internatl Business Mach Corp <Ibm> メモリを区画化する方法及び装置
JP2003030047A (ja) * 2001-07-16 2003-01-31 Fujitsu Ltd キャッシュ装置およびキャッシュ方法
US20050010743A1 (en) * 1998-12-03 2005-01-13 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
JP2005070938A (ja) * 2003-08-21 2005-03-17 Matsushita Electric Ind Co Ltd 信号処理装置及びそれを用いた電子機器
JP2005189975A (ja) * 2003-12-24 2005-07-14 Toshiba Corp 画像処理装置、画像処理方法およびプログラム
JP2005310167A (ja) * 2004-04-23 2005-11-04 Sony Computer Entertainment Inc マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器
WO2006015868A2 (en) * 2004-08-13 2006-02-16 Clearspeed Technology Plc Global memory system for a data processor comprising a plurality of processing elements
WO2007038456A1 (en) * 2005-09-27 2007-04-05 Sony Computer Entertainment Inc. Cell processor task and data management
JP2007095065A (ja) * 2005-09-27 2007-04-12 Sony Computer Entertainment Inc ネットワーク上におけるcellプロセッサ制御技術

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
GB2377519B (en) * 2001-02-14 2005-06-15 Clearspeed Technology Ltd Lookup engine
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
US7634621B1 (en) * 2004-07-13 2009-12-15 Nvidia Corporation Register file allocation
US7480768B2 (en) 2005-09-30 2009-01-20 Intel Corporation Apparatus, systems and methods to reduce access to shared data storage
US7750915B1 (en) * 2005-12-19 2010-07-06 Nvidia Corporation Concurrent access of data elements stored across multiple banks in a shared memory resource
US7970956B2 (en) 2006-03-27 2011-06-28 Ati Technologies, Inc. Graphics-processing system and method of broadcasting write requests to multiple graphics devices
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US8108872B1 (en) * 2006-10-23 2012-01-31 Nvidia Corporation Thread-type-based resource allocation in a multithreaded processor
US20080109795A1 (en) * 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7940261B2 (en) * 2007-01-10 2011-05-10 Qualcomm Incorporated Automatic load balancing of a 3D graphics pipeline
US8248422B2 (en) * 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05506113A (ja) * 1990-01-05 1993-09-02 マスパー・コンピューター・コーポレイション 並列プロセッサメモリシステム
JPH06332700A (ja) * 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
JPH0863361A (ja) * 1994-08-08 1996-03-08 Rockwell Internatl Corp レジスタファイル、およびレジスタファイルを管理する方法
JPH09198361A (ja) * 1996-01-23 1997-07-31 Kofu Nippon Denki Kk マルチプロセッサシステム
JPH10162130A (ja) * 1996-12-02 1998-06-19 Hitachi Ltd 並列データ処理装置および方法
US20050010743A1 (en) * 1998-12-03 2005-01-13 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
JP2000305841A (ja) * 1999-03-29 2000-11-02 Internatl Business Mach Corp <Ibm> メモリを区画化する方法及び装置
JP2003030047A (ja) * 2001-07-16 2003-01-31 Fujitsu Ltd キャッシュ装置およびキャッシュ方法
JP2005070938A (ja) * 2003-08-21 2005-03-17 Matsushita Electric Ind Co Ltd 信号処理装置及びそれを用いた電子機器
JP2005189975A (ja) * 2003-12-24 2005-07-14 Toshiba Corp 画像処理装置、画像処理方法およびプログラム
JP2005310167A (ja) * 2004-04-23 2005-11-04 Sony Computer Entertainment Inc マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器
WO2006015868A2 (en) * 2004-08-13 2006-02-16 Clearspeed Technology Plc Global memory system for a data processor comprising a plurality of processing elements
WO2007038456A1 (en) * 2005-09-27 2007-04-05 Sony Computer Entertainment Inc. Cell processor task and data management
JP2007095065A (ja) * 2005-09-27 2007-04-12 Sony Computer Entertainment Inc ネットワーク上におけるcellプロセッサ制御技術

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014501008A (ja) * 2010-11-18 2014-01-16 日本テキサス・インスツルメンツ株式会社 データを移動させるための方法及び装置
JP2014501009A (ja) * 2010-11-18 2014-01-16 日本テキサス・インスツルメンツ株式会社 データを移動させるための方法及び装置
JP2014501007A (ja) * 2010-11-18 2014-01-16 日本テキサス・インスツルメンツ株式会社 汎用レジスタファイルからsimdレジスタファイルへデータを移動させるための方法及び装置
JP2014505916A (ja) * 2010-11-18 2014-03-06 日本テキサス・インスツルメンツ株式会社 Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置
JP7246308B2 (ja) 2016-11-23 2023-03-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド デュアルモードローカルデータストア

Also Published As

Publication number Publication date
US9619428B2 (en) 2017-04-11
US20090300621A1 (en) 2009-12-03
EP3413206A1 (en) 2018-12-12
WO2009145917A1 (en) 2009-12-03
CN102047241A (zh) 2011-05-04
US20170212757A1 (en) 2017-07-27
KR101474478B1 (ko) 2014-12-19
EP2289001A1 (en) 2011-03-02
US10140123B2 (en) 2018-11-27
JP5461533B2 (ja) 2014-04-02
KR20110015439A (ko) 2011-02-15
EP3413206B1 (en) 2020-10-28
EP2289001B1 (en) 2018-07-25
EP2289001A4 (en) 2012-12-05
CN102047241B (zh) 2014-03-12

Similar Documents

Publication Publication Date Title
JP5461533B2 (ja) ローカル及びグローバルのデータ共有
US10255547B2 (en) Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
CN106991011B (zh) 基于cpu多线程与gpu多粒度并行及协同优化的方法
EP1921584B1 (en) Graphics processing apparatus, graphics library module, and graphics processing method
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US8086806B2 (en) Systems and methods for coalescing memory accesses of parallel threads
US7725518B1 (en) Work-efficient parallel prefix sum algorithm for graphics processing units
EP3172659B1 (en) Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US8392669B1 (en) Systems and methods for coalescing memory accesses of parallel threads
US20200327417A1 (en) Ir drop prediction with maximum convolutional neural network
US11030095B2 (en) Virtual space memory bandwidth reduction
US20140267224A1 (en) Handling post-z coverage data in raster operations
JP2008003708A (ja) 映像処理エンジンおよびそれを含む映像処理システム
CN109964244B (zh) 用于图形处理的本地图像块
CN110223216B (zh) 一种基于并行plb的数据处理方法、装置及计算机存储介质
TW201435581A (zh) 透過管線狀態繫結觸發的效能事件擷取
US8478946B2 (en) Method and system for local data sharing
CN114830082B (zh) 从多个寄存器中选择的simd操作数排列
US9189448B2 (en) Routing image data across on-chip networks
JP2010244096A (ja) データ処理装置、印刷システムおよびプログラム
US20230267992A1 (en) Keeper-free volatile memory system
CN115775198A (zh) 多核gpu中的重叠几何形状处理
CN116360672A (zh) 访问存储器的方法、装置和电子设备
US20240257432A1 (en) Method of generating a mipmap
US20240249127A1 (en) Neural network processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140115

R150 Certificate of patent or registration of utility model

Ref document number: 5461533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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