[go: up one dir, main page]

JP2010050970A - 中央処理装置と画像処理装置との間で通信するための機器および方法 - Google Patents

中央処理装置と画像処理装置との間で通信するための機器および方法 Download PDF

Info

Publication number
JP2010050970A
JP2010050970A JP2009190869A JP2009190869A JP2010050970A JP 2010050970 A JP2010050970 A JP 2010050970A JP 2009190869 A JP2009190869 A JP 2009190869A JP 2009190869 A JP2009190869 A JP 2009190869A JP 2010050970 A JP2010050970 A JP 2010050970A
Authority
JP
Japan
Prior art keywords
image processing
processing unit
gpu
central processing
processing device
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.)
Pending
Application number
JP2009190869A
Other languages
English (en)
Inventor
Simon Andrew Ford
サイモン・アンドリュー・フォード
Sean Tristram Ellis
ショーン・トリストラム・エリス
Edward Charles Plowman
エドワード・チャールズ・プロウマン
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2010050970A publication Critical patent/JP2010050970A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Facsimiles In General (AREA)
  • Image Processing (AREA)

Abstract

【課題】本発明は、データ処理機器の中央処理装置と画像処理装置との間で通信するための改善された技術を提供する。
【解決手段】該中央処理装置および該画像処理装置によってアクセスできる、共有メモリが提供され、それを介して、該中央処理装置と該画像処理装置との間で、データ構造を共有できる。また、バスが提供され、それを介して、該中央処理装置、画像処理装置、および共有メモリが通信する。該画像処理装置を制御する第1の機構に基づき、該中央処理装置は、該バスを介して、制御信号を送る。しかしながら、加えて、該中央処理装置と該画像処理装置との間にインタフェースが提供され、該画像処理装置を制御するための追加の機構に基づき、該中央処理装置は、該インタフェースを介して制御信号を提供する。
【選択図】図3A

Description

本発明は、中央処理装置と画像処理装置との間で通信するための機器および方法に関し、特に、中央処理装置が、画像処理装置のリソースをより効率的に使用できるようにする技術に関する。
画像処理装置(GPU)は、通常、一般的な画像処理動作、例えば、ベクトル入力の内積、外積、および行列積計算等の幾何学的処理機能の高速かつ効率的実行を促進するように設計される。GPUが、このような操作のために、典型的に最適化されているため、それらは、概して、たとえCPUがSIMD(単一命令・複数データ処理)ハードウェアを含むとしても、中央処理装置(CPU)よりはるかに速くこれらのタスクを完了する。
典型的なシステムオンチップ(SoC)環境においては、CPUおよびGPUは、バスインフラストラクチャを介して互いに連結され得、共有メモリは、CPUがGPUによって実施される動作のバッチをセットアップするための機構として利用される。そのような既知の構成は、CPU10がバスネットワーク30を介してGPU20と連結され、共有メモリ40もバスネットワーク30に連結されている、図1に示される。バスネットワーク30は、1つ以上の別個のバスを組み込み得、共有メモリ40は、1つ以上のレベルのキャッシュを含んでも含まなくてもよいことは理解されるであろう。
CPUが、GPUによる実行のための動作のバッチをセットアップできる方法は、図1の1から4の参照符号が付された矢印で図式的に示され、ステップの順は、図2のフローチャートによってより詳細に図示される。特に、矢印1によって示され、図2のステップ100で記載されるように、CPUは、最初に、1つ以上のデータ構造を共有メモリ40に格納する。当業者によって理解されるように、それぞれのデータ構造は、CPUおよびGPUの両方によって理解される所定のフォーマットを有し、データ構造内に提供される実際のデータは、GPUが動作するデータ値を特定するだけでなく、GPUによって実施される画像処理動作を定義する命令も特定し得る。また、命令およびデータ値が、データ構造内に直接指定され得る一方、データ構造は、特定の命令および/またはデータ値が見つかり得るメモリアドレスを特定する、1つ以上のポインタを含み得ることが理解されるであろう。
図1の矢印2によって示され、図2のステップ105によって図示されるように、またCPUは、一般的に、1つ以上のデータ構造を共有メモリに格納することに加えて、様々な制御情報を、GPU20内の1つ以上のメモリにマップされた制御レジスタ25に書き込む。制御レジスタ25がメモリにマップされているため、それらは、関連メモリアドレスを指定するアクセス要求を発行するCPUによって、バスネットワーク30を介して、CPUによって直接アクセスすることができる。このルートを介して、GPUの特定の基本的な制御パラメータは、CPU10の制御の下で設定することができる。通常、制御レジスタ25のうちの1つは、画像処理動作のバッチ処理を開始するために、GPUによってアクセスされる共有メモリ内の少なくとも1つのデータ構造を特定する、その中に格納された値を有する。
一旦メモリにマップされた制御レジスタが設定され、関連データ構造が共有メモリ40に格納されると、次いでGPUは、共有メモリ40からの関連データ構造の取り出しを開始するために、メモリにマップされた制御レジスタ内の情報を使用して、動作を開始する。図1の矢印3によって示され、図2のステップ110によって図示されるように、これは、GPUに、データ構造によって定義されるように、要求される画像処理動作を実施させ、通常、結果は、もとの所定のアドレスで始まる共有メモリ40に格納される。
GPU20は、データ構造によって指定される動作のバッチの実施を完了する際、図1の矢印4によって示され、図2のステップ115によって図示されるように、IRQパス50を介してCPUに割り込みを発行する。割り込みが受信されると、CPU10は、共有メモリ40から結果データを取り出すために、通常、割り込みサービスルーチン(ISR)を実行し、それ以降、結果データは、CPUによる後続動作の実施の間、CPUによって使用することができる。
一般的な画像処理動作では、GPU20は、通常、これらの動作が代わりにCPU10上で実施される場合より、はるかに多いスループットを達成することができ、したがってGPUの使用は、システム全体の性能を大幅に向上することができる。しかしながら、図1および図2の上記の説明を参照すると、GPU20の必要なメモリにマップされた制御レジスタ25をプログラムする必要があることに加え、共有メモリ内に作成されたデータ構造の構成を通じて通信する必要があるため、GPUによって実施される動作のセットアップに、かなりのセットアップ時間がかかることが理解されるであろう。この長い待ち時間は、CPUからGPUに該仕事をオフロードすることによって達成されるスループット性能利益によって埋め合わせられる、関連する長い待ち時間に対して十分に大規模なバッチに形成することができる通常の画像動作では、一般に問題であるとは見なされない。
しかしながら、GPUによって効率的に実施することができる可能性がある、CPUによって現在実施されている別の動作があるが、GPUが動作を実施するようにセットアップするのに伴う長い待ち時間は、GPUの使用を不可能にする。例えば、CPU上での画像およびゲームコードの実行中、例えば、物理ベースアニメーション、3D世界における経路探索のための人工知能コード、または人工知能構成物での可視オブジェクトの判断に見られる、プログラムコードの内部ループの部分でコードの比較的小さな断片が複数回繰り返されることは、一般的である。このようなコードの実行は、通常、タイムクリティカルである。このようなコードによって定義される動作または動作のグループは、原理上、GPUの使用によって加速することができる一方、それらは、比較的小さなコード部分(一旦コードがGPUにマップされると要求されるGPU動作の数から見て)を含み、比較的小さな量のデータ(例えば1つまたは2つの行列および多数のベクトル)と関連する傾向がある。通常、これらの動作を、データ構造を共有メモリに書き出すのに伴う待ち時間を克服するために、十分に大規模なバッチで実施されるように構成し、GPUに必要な動作を実施させ、その後、割り込みを発行し、次いで関連結果を読み込むために、CPUに割り込みに応答させることは困難である。
特にCPUは、多くの場合、そのような場合においてGPUを使用することによって導入される長い待ち時間を埋め合わせることができない(オフロードされた動作または動作のグループの後のCPUコードは、通常、オフロードされた動作の結果に大きく依存する)ことから、このような要因は、CPUが、上記の種類の動作のためにGPUの処理能力を利用するのを妨げる傾向がある。
しかしながら、従来、GPUが使用される画像処理動作の種類では、GPUの使用可能なハードウェアリソースが、常に完全に利用されていないことが観察され、したがってGPUは、予備の処理能力を有すると考えられる。
したがって、GPUが、既存の画像処理動作を実施し続けられるようにするが、待ち時間に対する許容度がより低い別の動作をGPUにオフロードすることも促進される、CPUとGPUとの間の通信のための改善された技術を提供することが望ましい。
第1の態様から見ると、本発明は、命令のストリームを実行するための中央処理装置と、中央処理装置の代わりに画像処理動作を実施するための画像処理装置と、中央処理装置および画像処理装置によってアクセスでき、それを介して、中央処理装置と画像処理装置との間でデータ構造を共有できる、共有メモリと、それを介して中央処理装置、画像処理装置、および共有メモリが通信する、バスであって、中央処理装置は、該バスを介して、画像処理装置を制御するための第1の機構として、制御信号を送る、バスと、中央処理装置と画像処理装置との間のインタフェースであって、中央処理装置は、画像処理装置を制御するための追加の機構として、該インタフェースを介して制御信号を提供するインタフェースと、を含む、データ処理機器を提供する。
本発明によると、CPUは、GPUを制御する2つの別個の機構が提供される。第1の機構に基づき、制御信号は、CPU、GPU、および共有メモリを相互接続するバスを介して送ることができるので、GPUが標準的な方法で制御できるようになる。しかしながら、さらに、CPUとGPUとの間にインタフェースが提供され、制御信号は、画像処理装置を制御するための追加の機構として、インタフェースを介して直接提供され得る。2つの別個の機構を提供することによって、CPUによるGPUの制御に関して、大幅に改善された柔軟性がもたらされる。セットアップ段階に伴う長い待ち時間が、GPUの使用によってもたらされる、改善されたスループットで埋め合わせられる分を上回る、大規模なバッチジョブでは、制御信号がCPUとGPUとの間のバスを介して送られており、かつ要求されたデータ構造が、共有メモリ内に確立されている、第1の機構が使用され得る。第1の機構の使用に関連する待ち時間が、第1の機構を利用するのを妨げる、および/またはタスク自体が、待ち時間に対する許容度が低い(例えばこれらのタスクが、CPU上で実行しているコードのタイムクリティカルなビット内の動作に関連する場合)、より小さなタスクでは、次いでCPUとGPUとの間のインタフェースが、制御信号をGPUに提供するための直接的機構として使用され得る。
したがって、本発明の追加の機構の使用によって、これは、従来、GPUにオフロードされる、これらの動作より待ち時間に対する許容度が大幅に低い動作の実施のために、CPUが、より短い待ち時間でより効率的に、GPUリソースを使用するための技術を提供する。
一実施形態においては、第1の機構を使用して、画像処理装置が、中央処理装置によって実施される動作に疎結合した画像処理動作を実施するように制御し、追加の機構を使用して、画像処理装置が、中央処理装置によって実施される動作に密結合した処理動作を実行するように制御する。疎結合した動作は、通常、従来では、動作の大規模なバッチとしてGPUにオフロードされる、標準的な画像処理動作の場合のように、これらの動作の結果の可用性のタイミングがCPUにとってタイムクリティカルではない動作とみなすことができる。対照的に、密結合した動作は、結果の可用性のタイミングがCPUにとってクリティカルであり、これらの結果の可用性のいずれかの大幅な遅延が、CPUの性能に重大な影響を及ぼすものである。
本発明の追加の機構のインタフェースを使用して、CPUからGPUにオフロードされる動作は、画像処理動作である必要はなく、代わりに、GPUのハードウェアリソースを使用して効率的に実施することができる、いずれかの動作であってよいことに注目すべきである。例には、ゲーム物理学、進路探索、粒子シミュレーション(例えば、煙、炎等)、流体シミュレーション、音響効果または信号処理の特定の種類等を含む。
本発明の追加の機構を採用する際、インタフェースを介して制御信号が提供され得る、多数の方法が存在する。一実施形態においては、インタフェースを介して提供される制御信号は、実際には、画像処理装置によって実行される1つ以上の命令を含む。
特定の一実施形態においては、そのような方法でインタフェースを介して提供される命令は、実際には、CPUによって実行される命令のストリーム内に含まれ、CPUによって、画像処理装置によって取り扱われる命令として認識される。多くの場合、また、GPU命令の指示は、GPU内でのGPU命令の実行中に、インタフェースを介してCPUとGPUとの間を通る、1つ以上のハンドシェーキング信号と共に、CPUパイプラインを通過する。
特定の一実施形態においては、CPUによって認識されるGPU命令は、いずれかの任意の命令が、CPU命令またはGPU命令の両方ではなく、いずれかとして識別されるように、CPUの命令セットの使用されていない端にコーディングされてもよい。しかしながら、別の実施形態においては、命令は、CPUが、その動作のモードを変更するように、命令ストリームに含むことができ、これは、同一の命令コーディングが再使用されるが、命令コーディングは、CPUおよびGPUに対して異なることを意味するようにすることができる。
例えば、一実施形態においては、該インタフェース上に該1つ以上の命令を提供する前に、中央処理装置は、該ストリーム内の後続命令が、画像処理装置によって取り扱われる命令として解釈されるように、中央処理装置によって使用される命令セットから、画像処理装置によって使用される命令セットに切り替えるための切り替え命令を実行する。したがって、CPUによる切り替え命令の実行は、CPUが、次の命令をGPU命令として解釈し、その結果、これらの命令をインタフェースを介してGPUに提供するようにする。多くの場合、切り替え命令は、次いで特定の一連のGPU命令が実行され、その後、CPUがCPU命令の実行を継続できるようにするために、動作のモードが通常のCPUモードに戻るようにする、分岐命令の特定の種類の形態を採る。
追加の機構を採用する際、インタフェースを介して提供される命令は、様々な形態であってもよい。例えば、一実施形態においては、これらの命令のうちの少なくとも1つは、共有メモリ内の1つ以上のデータ構造へポインタを提供し得る。したがって、このような実施形態においては、命令は、インタフェースを介して、CPUからGPUに直接投入され得るが、次いで動作されるデータ値、および任意に実施される動作の識別表示は、次いで共有メモリ内の1つ以上のデータ構造によって提供される。
しかしながら、本発明の追加の機構を使用する際、共有メモリは、依然として利用され得るが、共有メモリを使用する必要はない。一実施形態においては、インタフェースを介して提供される命令のうちの少なくとも1つは、GPU上で実行される際、データが、CPUのレジスタファイルとGPUのレジスタファイルとの間で転送されるようにする。したがって、本実施形態においては、CPUおよびGPUの両方が、別個のレジスタファイルを保持し、データは、インタフェースを介して、それぞれのレジスタファイル間で送られ得る。代替として、より詳細に後で議論するように、CPUおよびGPUは、レジスタファイルをCPUと共有するように構成され、GPUに、CPUの代わりにいずれかの特定の動作を実施する際にレジスタファイル内のどのレジスタがGPUによって使用されるかを特定し得る。
さらに、一実施形態においては、追加の機構を使用する際、インタフェースを介して提供される命令のうちの少なくとも1つは、画像処理装置によって実施されるデータ処理動作を指定し得る。したがって、該実施形態においては、命令の少なくともいくつかは、GPUによって実行される実際の動作を特定し、したがって、例えば演算動作、制御フロー動作、論理動作、比較動作、マスキング動作等を特定し得る。
インタフェース上の経路指定命令の代替として、別の実施形態においては、追加の機構を採用する際、インタフェースを介して提供される制御信号は、CPUによる、少なくとも1つの命令の実行からもたらされ得る。
特定の一実施形態においては、このように提供される制御信号は、該共有メモリ内の1つ以上のデータ構造へポインタを提供し、画像処理装置によって実施される処理動作を定義し得る。したがって、このような実施形態においては、CPU内での1つ以上の命令の実行によって、共有メモリ内の1つ以上のデータ構造を参照して、GPU上で動作を開始するために、制御信号が、インタフェースを介してGPUに直接提供されるようになり得る。
一実施形態においては、中央処理装置および画像処理装置は、レジスタファイルを共有するように構成され、追加の機構を採用する際、インタフェースを介して提供される該制御信号は、該制御信号によって定義される処理動作を実施する際に画像処理装置によって使用される、共有レジスタファイルの1つ以上のレジスタを指定する。これは、CPUとGPUとの間でのデータの共有に特に効率的な機構を提供することができる。
そのような一実施形態においては、中央処理装置は、画像処理装置が、該制御信号によって定義される処理動作を実施している間、これらのレジスタが中央処理装置によって使用されるのを防ぐために、画像処理装置によって使用されるものとして制御信号内に指定されるこれらのレジスタを、スコアボード回路内で特定するように構成される。したがって、該機構によって、特定のレジスタを、画像処理装置による使用のために確保することができ、画像処理装置による関連処理動作が完了すると、次いでこれらのレジスタを、中央処理装置による再使用のために解放することができる。
スコアボード回路を使用することによって、CPUは、GPUによるオフロードされた動作の完了を待つ間、動作を継続することができる。しかしながら、CPUが停頓し、GPUからの結果を待つ実施形態においては、スコアボード回路は、必ずしも上述したように使用しなくてもよい。
一実施形態においては、画像処理装置が、追加の機構に基づき、インタフェースを介して提供される該制御信号によって定義される処理動作を実施している間、中央処理装置は、画像処理装置によって実施される該処理動作の結果に依存しない命令を実行し続ける。
しかしながら、追加の機構のインタフェースの使用によってGPUにオフロードされる動作の種類は、多くの場合、CPUがいかなる大幅なさらなる進行をも行うことができる前に、CPUが、これらの動作の結果を必要とする動作であると想定される。したがって、一実施形態においては、追加の機構に基づき、インタフェースを介して該制御信号が提供された後、中央処理装置は、該制御信号に応答して、画像処理装置によって実施される処理動作の結果が、中央処理装置に利用可能になるまで、その命令の実行を中断する。
一実施形態においては、画像処理装置は、マルチスレッド実行を支援し、画像処理装置内のスレッドをスケジューリングするためのスケジューラを含む。そのような一実施形態においては、画像処理装置によって、インタフェースを介して中央処理装置から提供される、いずれかの制御信号が受信されると、スケジューラは、これらの制御信号に関連付けられた処理動作のための少なくとも1つのスレッドをスケジュールするように構成される。本発明の特定の実施形態においては、これは、単一実行スレッドを介した、CPU上でのアプリケーションコードの実行からGPU上でのそのアプリケーションコードの実行への移行、および再び戻る移行を制御するための機構を提供することができる。
一実施形態においては、スケジューラは、インタフェースを介して受信される該制御信号に関連付けられたいずれかのスレッドに、別のスレッドより高い優先度を与えるように構成される。追加の機構の使用によってGPUにオフロードされた動作が、CPUによって実施される動作に密結合される場合、これは、これらのオフロードされた動作が、確実にGPU内で可能な限り早く実施され、したがって待ち時間を最小化するための機構を提供する。
一実施形態においては、スケジューラは、画像処理装置のいずれかの空いている計算能力を利用しようとする方法で、インタフェースを介して受信される該制御信号に関連付けられた、いずれかのスレッドをスケジュールするように構成される。本実施形態によると、目的は、追加の機構を介してGPUにオフロードされた動作に、GPUによって実施される大量の処理に影響を及ぼさない方法で対応することであり、依然として、第1の機構によって開始されると見込まれる。したがって、GPUは、疎結合された動作を実行するその能力を維持するが、GPUの未使用の計算能力を利用しようとする方法で、追加の機構を介して送られたいずれかの追加の動作を組み込む。多くの状況において、追加の機構の使用によって、第1の機構を使用する際のセットアップ時間に伴う長い待ち時間が回避され、したがってGPUの空いている計算能力が頻繁に発生すると考えられるため、これは、依然としてCPUによって要求されるタイミングを満足し、この手法は、追加の機構を介してGPUにオフロードされた動作のために十分に早い応答時間を提供することができる。
当然のことながら、一部の実施形態においては、この手法は、追加の機構のインタフェースを介して送られる動作に、ある種のより高い優先度が与えられる手法と併用することができる。例えば、このような手法は、スケジューラが、最初に、インタフェースを介して受信される制御信号に関連付けられたいずれかのスレッドに、GPUの空いている計算リソースを割り当てようとするが、所定の時間の後、それが可能とならない場合は、その後、できるだけ早く、確実にそれがスケジュールされるようにするために、次いでスレッドにより高い優先度が与えられるようにすることを可能にし得る。
一実施形態においては、第1の機構が採用される際、バスを介して送られる制御信号により、画像処理装置を制御するために、制御値が画像処理装置のメモリにマップされた制御レジスタに書き込まれる。したがって、このような実施形態においては、CPUとGPUとの間のインタフェースが、CPUからGPUに制御信号を直接供給できるようにする、本発明の追加の機構とは対照的に、第1の機構は、制御信号のアドレスに基づく経路指定に依存する。
第2の態様から見ると、本発明は、命令のストリームを実行するための中央処理手段と、中央処理手段の代わりに画像処理動作を実施するための画像処理手段と、中央処理手段と画像処理手段との間でデータ構造を共有するために、中央処理手段および画像処理手段によってアクセスできる共有メモリ手段と、中央処理手段と、画像処理手段と、共有メモリ手段との間の通信のためのバス手段であって、中央処理手段は、バス手段を介して、画像処理手段を制御するための第1の機構として、制御信号を送るためのものである、バス手段と、中央処理手段と画像処理手段との間のインタフェース手段であって、中央処理手段は、画像処理手段を制御するための追加の機構として、インタフェース手段を介して制御信号を提供するためのものである、インタフェース手段と、を含む、データ処理機器を提供する。
第3の態様から見ると、本発明は、命令のストリームを実行するための中央処理装置と、中央処理装置の代わりに画像処理動作を実施するための画像処理装置と、を含むデータ処理機器を操作する方法であって、中央処理装置と画像処理装置との間でデータ構造を共有するために、中央処理装置および画像処理装置によってアクセスできる共有メモリを採用するステップと、それを介して、中央処理装置、画像処理装置、および共有メモリが通信する、バスを提供するステップと、画像処理装置を制御するための第1の機構として、バスを介して中央処理装置から制御信号を送るステップと、中央処理装置と画像処理装置との間にインタフェースを提供するステップと、画像処理装置を制御するための追加の機構として、インタフェースを介して、中央処理装置から制御信号を提供するステップと、を含む、方法を提供する。
本発明は、例としてのみ以下の添付の図面に図示される、その実施形態を参照して、さらに説明される。
既知の構成に従う、CPUおよびGPUの連結を図式的に示すダイアグラムである。 図1に示される機器の動作を示すフローチャートである。 本発明の一実施形態に従う、データ処理機器を図式的に示すダイアグラムである。 本発明の別の実施形態に従う、データ処理機器を図式的に示すダイアグラムである。 本発明の一実施形態に従う、図3Aまたは図3BのGPUの実行パイプライン内に提供される構成要素を図示する、ブロック図である。 本発明の一実施形態に従う、図4のスケジューラの動作を図示する、フローチャートである。 本発明の別の実施形態に従う、図4のスケジューラの動作を図示する、フローチャートである。 本発明の実施形態のCPU/GPUインタフェースを介してGPUを制御するために使用され得る、3つの異なる機構を示す図である。 本発明の実施形態のCPU/GPUインタフェースを介してGPUを制御するために使用され得る、3つの異なる機構を示す図である。 本発明の実施形態のCPU/GPUインタフェースを介してGPUを制御するために使用され得る、3つの異なる機構を示す図である。
図3Aは、本発明の一実施形態に従う、データ処理機器を図式的に図示する、ブロック図である。特定の一実施形態においては、データ処理機器は、システムオンチップ(SoC)の形態を採る。図1の従来技術に類似する方法においては、CPU210およびGPU220は、バスネットワーク230に連結され、共有メモリ240もバスネットワークに連結される。バスネットワーク230は、1つ以上の別個のバスを組み込み得、共有メモリ240は、1つ以上のレベルのキャッシュを含んでも含まなくてもよい。
GPUを制御するための第1の機構により、CPU210は、1つ以上のデータ構造を共有メモリ240内に格納し得、GPUによる一連の画像処理動作の実施を開始するために、様々な制御値をGPUに書き込むように、バス230を介して、GPU内の1つ以上のメモリにマップされた制御レジスタにさらにアクセスし得る。図1の前述の従来技術の実施例と同様に、該機構が使用される際、GPUによって要求されたタスクが完了すると、パス250を介して、GPUからCPUに割り込みが発行され得る。
しかしながら、図3Aに示される本発明の実施形態によると、GPUを制御するための代替の直接的機構を提供するために、インタフェース215は、CPU210とGPU220との間にも提供される。この代替の機構が採用される際、CPU210は、インタフェース内の制御パス215を介して、1つ以上の制御信号を発行し、これは、GPUによって受信されると、GPUに、前述の第1の機構の使用の結果として既にスケジュールされているいずれかの動作に加えて、GPU内で実行する1つ以上の処理動作をスケジュールさせる。
GPUを制御するためのこれらの2つの異なる、かつ別個の機構を提供することによって、大幅に柔軟性が改善される。特に、セットアップ段階(GPUの要求される制御レジスタをプログラムし、要求されるデータ構造を共有メモリに格納する)に伴う長い待ち時間が、GPUの使用によってもたらされる、改善されたスループットで埋め合わせられる分を上回る、大規模なバッチジョブでは、従来の第1の機構が使用される。しかしながら、第1の機構の使用に関連する待ち時間が、その機構を使用するのを妨げる、および/またはタスク自体が、待ち時間に対する許容度が低い、より小さなタスクでは、GPUに制御信号を提供するための直接的機構として、次いでCPU210とGPU220との間のインタフェース215が使用され得る。
本発明の実施形態のインタフェース215を使用する際、GPUによる要求された動作の実施中のCPUとGPUとの間でのデータの転送を管理するために使用され得る、数多くの技術が存在する。ある場合には、データをCPUとGPUとの間で転送するために、共有メモリ240、および特に、共有メモリ内に格納された1つ以上のデータ構造を使用することが依然として適切である場合があるが、GPUによって処理される、要求されたデータ値は、代わりに、インタフェース215を介して、CPUとGPUとの間で直接転送し得る。図3Aに示された実施形態においては、CPU210およびGPU220の両方が、それぞれ、それら自体のそれぞれのレジスタファイル212、222を有し得、データは、インタフェース215の制御パスを介してCPUからGPUに送信された制御信号に応答して、GPU220上での関連データ処理動作の実施中に、要求に応じて、および要求される際に、パス217を介して、CPUレジスタファイル212からGPUレジスタファイル222に移動され得る。同様に、GPUによって生成される結果データは、CPU210による後続参照のために、パス217を介して、GPUレジスタファイル222から、もとのCPUレジスタファイル212に格納され得る。
図3Bは、本発明の別の実施形態を図示する。該実施形態は、図3Aを参照した前述されたものと類似するが、図3Bの実施形態においては、共有レジスタファイル216がCPU210内に提供され、GPU220は、それ自体の別個のレジスタファイルを有しない。本実施形態により、インタフェース215の制御パスを介して、CPU210からGPU220に発行される制御信号は、インタフェース215を介して、CPUによって開始される、要求された動作を実施する際にGPU220によって使用される、共有レジスタファイル216の1つ以上のレジスタを指定するように構成することができる。次いでGPU220は、パス219を介して、これらの特定のレジスタにアクセスすることができ、特に、共有レジスタファイル216は、要求された動作の実行中、GPU220のデータパス実行パイプラインにアクセスできるようになる。
一実施形態においては、CPU210が、GPU220上で特定のタスクを開始するためにインタフェース機構を使用する際、次いでCPU210は停頓し、GPUから結果が戻るのを待つ。しかしながら、別の実施形態においては、CPU210は、GPUによって生成される結果に依存しない、いずれかの命令の実行を継続するように構成され得る。その場合においては、任意のスコアボード回路218が提供され得、GPUが、これらのレジスタへのアクセスを要求する動作を実施中に、これらのレジスタが、CPUによって使用されるのを防ぐために、これを使用して、GPUによる使用のために指定されている、これらのレジスタを特定する。次いでレジスタは、GPUが要求された動作が完了したことを示す際にCPUによる使用のために解放される。
GPUは、通常、特定の画像処理動作を実施するために最適化された、1つ以上のパイプラインで繋がれた実行装置を含む。そのような一実行装置が、図4に示されている。特に、図4は、共有メモリから得られた三角形データからピクセル値を生成するための実行装置270を構成するために使用され得、GPU220の構成要素を図示する。実行装置270は、メモリインタフェース280を介した共有メモリ240へアクセスでき、前述の第1の機構を使用する、CPU210によるGPU220のセットアップの後、以下の一連の動作を実施するように構成され得る。
最初に、タイルリストリーダ300は、それぞれの画面タイルの三角形データを示す、1つ以上のデータ構造を読み取るために、メモリインタフェース280を介して共有メモリ240にアクセスするように構成される。次いで三角形セットアップエンジン305は、これらのデータ構造を、ラスタデータに変換される(すなわち、ピクセルに変えられる)三角形のリストに変換するために、データ構造を処理する。次いでラスタライザ回路310は、それぞれの三角形を形成するために計算する必要があるすべてのピクセルを判断する。その後、計算する必要があるこれらのピクセルは、スケジューラ待ち行列315(一実施形態においては、FIFO待ち行列として構成され得る)内に置かれる。
次いでスケジューラ回路320が、通常、マルチスレッドパイプラインとして構成される、シェーダパイプライン325を制御するために使用される。特に、スケジューラは、スケジューラ待ち行列内のピクセルのそれぞれに必要なピクセル計算を実施するために、ピクセルシェーダプログラムをスケジューリングおよび再スケジューリングすることによって、シェーダパイプラインを制御する。スケジューラ待ち行列から取り出された特定のピクセルにピクセルシェーダプログラムがスケジュールされると、次いで該ピクセルシェーダプログラムは、シェーダパイプライン325内で実行され、シェーダパイプラインを1回以上通過した後には、該プログラムは、次いで関連するピクセルのピクセルカラーを計算しているであろう。
次いで合成回路330が使用され、計算されたピクセルが既存のものと混合され、その後、画面タイルのために計算されたピクセルを回収するために使用される、タイルバッファ335にアウトプットが転送される。通常、GPUの上記の動作は、CPUによって従来の第1の機構を使用してセットアップされ、CPUは、共有メモリに格納された1つ以上のデータ構造を介して、処理のための大量の三角形データを提供する。バス230を介して、要求されたデータ構造を共有メモリに格納し、GPU220の関連メモリにマップされた制御レジスタに書き込むのに伴う大規模なセットアップ時間は、上記の動作を実施する際にGPU220によって達成される高スループットで埋め合わせられる分を上回る。
しかしながら、本発明の実施形態により、そのような大規模なバッチジョブ処理を実施する際にも、GPUのハードウェアリソースの一部が未使用状態である時間が依然として存在し、これは、効率的にアクセスすることができる場合、別の目的でCPUによって有益に使用できることが認識された。例えば、これらのリソースが、CPUによって最小待ち時間でアクセスすることができる場合、特定の動作を実施するために、CPUによって使用することができる処理リソースが、シェーダパイプライン325内に存在し得る。
本発明の実施形態によると、CPU210は、そのような動作をGPU220にオフロードできるようにするために、インタフェース215によって提供される追加の制御機構を使用するように構成される。したがって、シェーダパイプライン325の実施例を考慮し、スケジューラ320は、インタフェース215を介してCPUからGPUに送られる制御信号を受信するように構成することができ、実際に、特定の制御信号も、処理されるデータを特定する、いずれかの要求されるデータ信号と共に、シェーダパイプラインに送ることができる。同様に、シェーダパイプラインは、図4に示されるように、インタフェース215を介してデータおよび関連する信号をCPUに出力して戻し得る。
図5Aは、スケジューラ320を、インタフェース215を介して受信されるいかなる制御信号でも考慮して動作するように構成することができる、一方法を図示する、フローチャートである。図5Aに図示されるプロセスは、通常、スケジューラが、シェーダパイプラインにスケジュールされる次のジョブに関する決定を行う必要がある度に実行され、したがって、例えばプロセスは、クロック周期毎に1度実施されてもよい。ステップ400では、スケジューラは、シェーダパイプライン内に再スケジュールする必要のあるプログラムが存在するかを判定し、例としては、特定のピクセルカラーを判定するために、プログラムが、2回以上シェーダパイプラインを通過する必要がある場合であり得る。そのようなプログラムがシェーダパイプラインの終端に到達し、再度スケジュールする必要がある場合、次いでこれは、ステップ400で再スケジュールされ、そしてそのプログラムはステップ420で判定される。
しかしながら、再スケジュールする必要のあるプログラムがないと見なされると、次いでプロセスは、インタフェース215を介して、CPUからいずれかの制御信号が受信されたかを判定する、ステップ405に進む。該制御信号は、以下、CPU要求を示すと見なされる。それぞれのCPU要求は、GPUによって実施される1つ以上の処理動作を特定し得る。一実施形態においては、前述のとおり、そのような動作は、通常、CPUによって実施される動作に密結合され、したがって、機構の長い待ち時間のため、従来の第1の機構を介してGPUにオフロードすることができない。図5Aのプロセスにより、スケジューラは、インタフェースを介して受信されるいかなるこのようなCPU要求も、優先度が高いものとして扱い、したがって、いずれかのこのようなCPU要求のあるところでは、プロセスは、CPU要求を実行するためにプログラムをスケジュールする、ステップ410に分岐する。ステップ405でCPU要求が検出されない場合、次いでプロセスは、スケジューラ320がスケジューラ待ち行列315から次のジョブを取り出し、そのジョブに対応するためにプログラムをスケジュールする、ステップ415に進む。
上述の機構が、インタフェース215を介して受信されるCPU要求が確実にGPUによって迅速に対処されるようにする一方、多くの実施形態においては、そのようなCPU要求を、GPUの通常動作に対してそれ程侵入的に対処する必要がなく、代わりに、スケジューラは、シェーダパイプライン内でリソースが利用可能である限り、これらのCPU要求を割り当てるようにすることができる。図5Bは、そのようなスキームに組み込むために、スケジューラ320によって実施され得る、別の一連の動作を図示する。図5Aと同様に、図5Bのフローチャートによって図示されるプロセスは、スケジューラが、プログラムをシェーダパイプラインにスケジュールする必要がある度に繰り返され、したがって、一実施形態においては、クロック周期毎に繰り返され得る。
ステップ450では、スケジューラ320は、再スケジュールする必要のあるプログラムが存在するかを判定し、そうであれば、次いでプログラムは、ステップ460で再スケジュールされる。したがって、ステップ450および460は、図5Aを参照して前述のステップ400および420と類似することが理解されるであろう。
プログラムを再スケジュールする必要がない場合、次いでプロセスは、スケジューラ待ち行列315から次のジョブが取り出され、シェーダパイプライン325にスケジュールされる、ステップ455に進む。その後、またはプログラムが再スケジュールされるステップ460の後、スケジューラ320は、ステップ465で、CPUからいずれかの制御信号が受信されたか、すなわち、保留となっているCPU要求があるかを判定する。ない場合には、さらなる動作は要求されない。しかしながら、CPU要求が保留となっている場合、次いでプロセスは、スケジューラが、CPU要求を取り扱うのに利用することができる、シェーダパイプライン内の任意の予備リソースがあるかを判定する、ステップ470に進む。そうである場合には、次いでステップ475で、これらのリソースは、CPU要求を実行するために、スケジュールされ、一方、予備リソースがない場合には、この時点で動作は行われない。
図5Bのフローチャートは、インタフェースを介して受信されるCPU要求を、それらが利用可能になり次第、および利用可能になる際、シェーダパイプラインのリソースにスケジュールできるようにすることが理解されるであろう。シェーダパイプライン内のリソースが、短時間内に利用可能になる可能性が高いと見なされると、GPUによって実施されている主要なバッチジョブに影響が全くないわけではないが、ほとんどないため、次いでこのような手法は、インタフェース215を介して受信されるCPU要求が、迅速かつ非常に効率的な方法で取り扱われるようにすることができる。インタフェースを介して、CPU要求を直接GPUに投入することにより、第1の機構の長いセットアップ待ち時間が回避されることから、GPUは、より侵入的な図5Aの手法というよりはむしろ図5Bのフローにしたがってスケジュールされる際にも、CPUのタイミング要求を満たすのに十分迅速に、CPU要求を取り扱うことができると考えられる。
図6から図8は、本発明の実施形態のインタフェースを介してGPUを制御するための3つの別の機構を図示する。図6に図式的に示される手法により、CPU210は、共有命令のストリーム500内に提供される、一連の命令を実行するように構成される。命令のストリーム内に現れ、CPU210によって実行される通常のCPU命令に加えて、コーディングがCPU命令セットと重複せず、したがって、最初の復号段階中に、CPUによってGPU命令として認識することができる、複数のGPU命令が存在する。一旦GPU命令として認識されると、これらの命令は、GPUによる実行のために、インタフェース215を介してGPU220に転送される。多くの場合、GPU命令の指示も、GPU内でGPU命令を実行中、インタフェース215を介して、CPUとGPUとの間を転送する、1つ以上のハンドシェーキング信号と共に、CPUパイプラインを通過する。
図6の手法の特定の一実施形態においては、CPU210が、GPUを制御するためにインタフェース215を使用する際、GPUが制御される方法は、ARMのNeon SIMD処理回路が、ARMプロセッサコアによって制御される方法と類似すると見なすことができ、ARMのNeon SIMD処理回路の一般的説明は、共同所有の米国特許第7,145,480号明細書に記載されているが、その全内容は引用により本明細書に組み込まれている。
図7は、共有命令のストリーム510が、この場合もやはりCPU210によって実行されるが、CPUおよびGPU命令が完全に独自のコーディングを有しない、別の手法を図示する。代わりに、CPU210は、CPU標準モードの動作からGPUモードの動作に切り替えるための切り替え命令を実行するように構成することができる。切り替え命令の後、GPUモードの動作と見なして、後続命令が復号される。図7に示される実施例においては、この切り替え命令は、「BXL」命令と称され、これは、動作のモードを変更することに加えて、一連のGPU命令が存在するコードストリームの一部に分岐を生じさせる。連続する命令の1つ以上が、依然としてCPUによって実行される必要があり得る場合がある一方、切り替え後の命令の大部分は、GPUによる実行が意図され、したがって実行のために、インタフェース215を介してGPU220に送られると想定される。要求される一連のGPU命令が実行される際、プロセスは、通常のCPUモードが再開される、BXL命令の後のCPU命令に分岐して戻り、後続命令は、CPU命令として復号され、実行される。
通常のCPUモードに戻る複数の方法を提供することができる。例えば、一実施形態においては、GPU命令のうちの1つは、GPUが実行内容を再びCPUに変更させ得る。これは、明示的BX型命令、または非GPUアドレスに戻るようにする命令のいずれかであってよい。代替として、GPUスレッドを抹消し、CPUが、もとのBXL命令の後の次の命令から継続できるようにする、特別命令であってもよい。
図6の手法が使用されるか図7の手法が使用されるかに関わらず、インタフェースを介してGPUに転送される命令は、様々な形態を取り得る。一実施形態においては、命令のうちの少なくとも1つは、共有メモリ内の1つ以上のデータ構造へのポインタを提供してもよい。したがって、このような実施形態においては、命令は、インタフェースを介して、CPUからGPUに直接投入され得るが、次いで動作されるデータ値、および任意に実施される動作の識別は、共有メモリ内の1つ以上のデータ構造によって提供される。
しかしながら、共有メモリを使用する必要はなく、代わりに、インタフェースを介して提供される命令の1つ以上が、実施例が図3Aを参照して上述されるように、GPU上で実行される際、データはCPUのレジスタファイルとGPUのレジスタファイルとの間で転送され得る。代替として、図3Bを参照して上述されるように、共有レジスタファイルが提供され得、インタフェースを介して送られる1つ以上の命令は、要求される動作を実施する際にGPUによって使用される、共有レジスタファイルのレジスタを特定し得る。
さらに、1つ以上の命令は、画像処理装置によって実施される実際のデータ処理動作、例えば演算動作、制御フロー動作、論理動作、比較動作、マスキング動作等を指定し得る。
図8は、命令のストリーム520は共有されず、代わりに、CPU210によって実行される命令のみを含む際に使用され得る、別の機構を図示する。しかしながら、CPUによって実行される、少なくとも1つの命令は、GPU上で1つ以上の動作を開始するために、インタフェースを介して、1つ以上の制御信号をGPU220に送信し得る。図8の実施例においては、この種類の命令はBXGPU命令と称され、実行される際、CPUに、GPU220に転送するための1つ以上の制御信号を生成させ、その後、CPUの実行は停頓する。制御信号は、一実施形態においては、共有メモリ内の1つ以上のデータ構造へポインタを提供し得、また、実施される動作のためにGPUを構成するのに必要な様々な状態情報を提供し得る。これらの制御信号が受信されると、GPUは、例えば図5Aまたは図5Bの前述の機構を使用して、要求されたタスクをスケジュールし、完了すると、パス250を介して割り込み信号を発行する。次いでCPUは、GPUから結果データ(例えば、共有メモリに格納され得るか、またはインタフェースを介してCPUレジスタファイルに直接格納され得る)を取り出すために、割り込みサービスルーチンを実行することによって、割り込みに応答する。次いでCPUは、一連の命令520の実行を再開し、BXGPU命令の直後の命令から開始する。
本発明の実施形態の上記の説明から、このような実施形態のインタフェース215を使用することによって、CPU中心のコードが、GPUにオフロードされた、より従来の動作に関連するセットアップオーバーヘッドを生じることなく、特定のタスクのためにGPUハードウェアを利用することができるように、システムオンチップ環境内のCPUおよびGPUを密接に連結するための技術が提供されることが理解されるであろう。一実施形態においては、CPUおよびGPUの両方は、CPUによって管理される、一般的な命令のストリームから実行し、通信機構は、タスク切り替えもしくは通信オーバーヘッドまたはペナルティを最小化するようにすることができる。
本発明の実施形態は、加速し、単一実行スレッドから潜在するGPU計算能力に容易に吸収することができる、クリティカルコード部分の再標的化を可能にする能力を提供し、共有メモリ対話によって到達できる域を超えて、GPU/CPU構成要素の全体の能力を向上する。
本発明の一実施形態においては、インタフェース機構が使用される際、CPUとGPUとの間の通信に共有メモリを使用することは、回避、または少なくとも大幅に低減することができる。一実施形態においては、データは、CPUのレジスタファイルとGPUのレジスタファイルとの間のインタフェースを介して直接転送することができ、または代替として、共有レジスタファイルを使用することができる。共有レジスタバンクが使用される特定の一実施形態を考慮すると、次いでCPU210が、前述の米国特許第7,145,480号明細書に記載されるもの等のNeonアーキテクチャを採用する場合、Neonレジスタバンクの数、幅、および本質的構成は、レジスタバンクが、GPUが動作する必要のあるデータを含む可能性をより高くするので、次いでNeon機能用に提供されたSIMIレジスタバンクは、GPUと共有されるレジスタバンクとして割り振られ得る。例えば、ゲームエンジン人工知能および物理コードならびにデータ表現は、Neonに役立ち、本発明のインタフェース機構を使用して、特定の機能をGPUにオフロードする能力により、これは、処理能力における大幅な改善をもたらすことが可能である。該実施形態においては、GPU内の動作レジスタが、中間結果および一時的値に使用することができる一方、CPU側のNeonレジスタは、初期入力および最終出力レジスタに使用することができる。該手法は、マイクロアーキテクチャの複雑性を低減するのに役立つであろう。
本明細書において、特定の実施形態を説明したが、本発明は、それに制限されず、本発明の範囲内において、多くの修正および追加が行われ得ることが理解されるであろう。例えば、本発明の範囲から逸脱することなく、添付の特許請求の範囲における、独立請求項の特徴と従属請求項の特徴との様々な組み合わせを行い得る。
210 CPU
212、222 レジスタファイル
215 インタフェース
217、250 パス
220 GPU
230 バスネットワーク
240 共有メモリ

Claims (20)

  1. データ処理機器であって、
    命令のストリームを実行するための中央処理装置と、
    前記中央処理装置の代わりに、画像処理動作を実施するための画像処理装置と、
    前記中央処理装置および前記画像処理装置によってアクセスでき、それを介して前記中央処理装置と前記画像処理装置との間でデータ構造を共有できる、共有メモリと、
    それを介して前記中央処理装置、画像処理装置、および共有メモリが通信する、バスであって、前記中央処理装置は、前記画像処理装置を制御するための第1の機構として、前記バスを介して、制御信号を送る、バスと、
    前記中央処理装置と前記画像処理装置との間のインタフェースであって、前記中央処理装置は、前記画像処理装置を制御するための追加の機構として、前記インタフェースを介して制御信号を提供するインタフェースと、を備えることを特徴とするデータ処理機器。
  2. 前記第1の機構を使用して、前記画像処理装置が、前記中央処理装置によって実施される動作と疎結合される画像処理動作を実施するように制御し、
    前記追加の機構を使用して、前記画像処理装置が、前記中央処理装置によって実施される動作と密結合される処理動作を実施するように制御することを特徴とする請求項1に記載のデータ処理機器。
  3. 前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号は、前記画像処理装置によって実行される1つ以上の命令を含むことを特徴とする請求項1に記載のデータ処理機器。
  4. 前記1つ以上の命令は、前記命令のストリーム内に含まれ、前記画像処理装置によって取り扱われる命令として、前記中央処理装置によって認識されることを特徴とする請求項3に記載のデータ処理機器。
  5. 前記インタフェースを介して前記1つ以上の命令を提供する前に、前記中央処理装置は、前記ストリーム内の後続命令が、前記画像処理装置によって取り扱われる命令として解釈されるように、前記中央処理装置によって使用される命令セットから、前記画像処理装置によって使用される命令セットに切り替えるための切り替え命令を実行することを特徴とする請求項3に記載のデータ処理装置。
  6. 前記1つ以上の命令のうちの少なくとも1つが、前記共有メモリ内の1つ以上のデータ構造へポインタを提供する命令であることを特徴とする請求項3に記載のデータ処理機器。
  7. 前記1つ以上の命令のうちの少なくとも1つが、実行される際に、前記中央処理装置のレジスタファイルと前記画像処理装置のレジスタファイルとの間でデータを転送するようにする命令であることを特徴とする請求項3に記載のデータ処理機器。
  8. 前記1つ以上の命令のうちの少なくとも1つは、前記画像処理装置によって実施されるデータ処理動作を指定することを特徴とする請求項3に記載のデータ処理機器。
  9. 前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号が、前記中央処理装置による、少なくとも1つの命令の実行から生じることを特徴とする請求項1に記載のデータ処理機器。
  10. 前記制御信号は、前記共有メモリ内の1つ以上のデータ構造へポインタを提供し、前記画像処理装置によって実施される前記処理動作を定義することを特徴とする請求項9に記載のデータ処理機器。
  11. 前記中央処理装置および画像処理装置は、レジスタファイルを共有するように構成され、前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号は、前記制御信号によって定義される処理動作を実施する際に前記画像処理装置によって使用される、前記共有レジスタファイルの1つ以上の前記レジスタを指定することを特徴とする請求項1に記載のデータ処理機器。
  12. 前記中央処理装置は、前記画像処理装置が、前記制御信号によって定義された前記処理動作を実施している間、これらのレジスタが前記中央処理装置によって使用されるのを防ぐために、前記画像処理装置によって使用するためのものとして前記制御信号内に指定されるこれらのレジスタを、スコアボード回路内で特定するように構成されることを特徴とする請求項11に記載のデータ処理機器。
  13. 前記画像処理装置が、前記追加の機構に基づき、前記インタフェースを介して提供される前記制御信号によって定義される処理動作を実施している間、前記中央処理装置は、前記画像処理装置によって実施される前記処理動作の結果に依存しない命令を実行し続けることを特徴とする請求項1に記載のデータ処理機器。
  14. 前記追加の機構に基づき、前記インタフェースを介して前記制御信号が提供された後、前記中央処理装置は、前記制御信号に応答して、前記画像処理装置によって実施される前記処理動作の結果が、前記中央処理装置に利用可能になるまで、その命令の実行を中断することを特徴とする請求項1に記載のデータ処理機器。
  15. 前記画像処理装置は、マルチスレッド実行を支援し、前記画像処理装置内のスレッドをスケジューリングするためのスケジューラを備え、
    前記インタフェースを介して、前記画像処理装置によって前記制御信号が受信されると、前記スケジューラは、これらの制御信号に関連付けられた前記処理動作のための少なくとも1つのスレッドをスケジュールするように構成されることを特徴とする請求項1に記載のデータ処理機器。
  16. 前記スケジューラは、前記インタフェースを介して受信される、前記制御信号に関連付けられたいずれかのスレッドに、別のスレッドに与えられる優先度よりも高い優先度を与えるように構成されることを特徴とする請求項15に記載のデータ処理機器。
  17. 前記スケジューラは、前記インタフェースを介して受信される、前記制御信号に関連付けられたいずれかのスレッドを、前記画像処理装置のいずれかの空いている計算能力を利用しようとする方法でスケジュールするように構成されることを特徴とする請求項15に記載のデータ処理機器。
  18. 前記第1の機構を採用する際、前記バスを介して送られる前記制御信号により、前記画像処理装置を制御するために、制御値が、前記画像処理装置のメモリにマップされた制御レジスタに書き込まれることを特徴とする請求項1に記載のデータ処理機器。
  19. データ処理機器であって、
    命令のストリームを実行するための中央処理手段と、
    前記中央処理手段の代わりに、画像処理動作を実施するための画像処理手段と、
    前記中央処理手段および前記画像処理手段によってアクセスできる、前記中央処理手段と前記画像処理手段との間でデータ構造を共有するための共有メモリ手段と、
    前記中央処理手段と、画像処理手段と、共有メモリ手段との間の通信のためのバス手段であって、前記中央処理手段は、前記バス手段を介して、前記画像処理手段を制御するための第1の機構として、制御信号を送るためのものである、バス手段と、
    前記中央処理手段と前記画像処理手段との間のインタフェース手段であって、前記中央処理手段は、前記画像処理手段を制御するための追加の機構として、前記インタフェースを介して制御信号を提供するためのものである、インタフェース手段と、を備えることを特徴とするデータ処理機器。
  20. 命令のストリームを実施するための中央処理装置と、前記中央処理装置の代わりに、画像処理動作を実行するための画像処理装置と、を備えるデータ処理機器を操作する方法であって、
    前記中央処理装置と前記画像処理装置との間でデータ構造を共有するために、前記中央処理装置および前記画像処理装置によってアクセスできる、共有メモリを採用するステップと、
    それを介して前記中央処理装置、画像処理装置、および共有メモリが通信する、バスを提供するステップと、
    前記バスを介して、前記画像処理装置を制御するための第1の機構として、前記中央処理装置からの制御信号を送るステップと、
    前記中央処理装置と前記画像処理装置との間に、インタフェースを提供するステップと、
    前記画像処理装置を制御するために、追加の機構として、前記インタフェースを介して、前記中央処理装置から制御信号を提供するステップと、を含むことを特徴とする方法。
JP2009190869A 2008-08-22 2009-08-20 中央処理装置と画像処理装置との間で通信するための機器および方法 Pending JP2010050970A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0815442.9A GB2462860B (en) 2008-08-22 2008-08-22 Apparatus and method for communicating between a central processing unit and a graphics processing unit

Publications (1)

Publication Number Publication Date
JP2010050970A true JP2010050970A (ja) 2010-03-04

Family

ID=39846750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009190869A Pending JP2010050970A (ja) 2008-08-22 2009-08-20 中央処理装置と画像処理装置との間で通信するための機器および方法

Country Status (4)

Country Link
US (1) US8675006B2 (ja)
JP (1) JP2010050970A (ja)
CN (1) CN101667284B (ja)
GB (2) GB2462860B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017208124A (ja) * 2012-08-17 2017-11-24 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
KR20190095489A (ko) * 2016-12-28 2019-08-14 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
JP2019525277A (ja) * 2016-06-17 2019-09-05 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 共有機械学習データ構造
JP2019185743A (ja) * 2018-04-04 2019-10-24 エスケーハイニックス株式会社SKhynix Inc. 拡張メモリカードを含むデータ処理システム

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US20110134120A1 (en) * 2009-12-07 2011-06-09 Smart Technologies Ulc Method and computing device for capturing screen images and for identifying screen image changes using a gpu
US20110227934A1 (en) * 2010-03-19 2011-09-22 Microsoft Corporation Architecture for Volume Rendering
US8275805B2 (en) * 2010-03-26 2012-09-25 Intel Corporation Method of decreasing a total computation time for a visual simulation loop in a virtual world application
US20110242115A1 (en) * 2010-03-30 2011-10-06 You-Ming Tsao Method for performing image signal processing with aid of a graphics processing unit, and associated apparatus
EP2564322A4 (en) * 2010-04-30 2017-03-08 Hewlett-Packard Enterprise Development LP Management data transfer between processors
CN102298567A (zh) * 2010-06-28 2011-12-28 安凯(广州)微电子技术有限公司 一种集成中央运算和图形加速的移动处理器架构
CN101908035B (zh) * 2010-07-30 2012-09-05 北京华傲精创科技开发有限公司 视频编解码方法、gpu及其与cpu的交互方法及系统
US8937622B2 (en) 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
KR101791182B1 (ko) * 2010-12-15 2017-10-27 어드밴스드 마이크로 디바이시즈, 인코포레이티드 컴퓨터 시스템 인터럽트 핸들링
US8886699B2 (en) * 2011-01-21 2014-11-11 Cloudium Systems Limited Offloading the processing of signals
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10795722B2 (en) * 2011-11-09 2020-10-06 Nvidia Corporation Compute task state encapsulation
CN102521036A (zh) * 2011-12-05 2012-06-27 苏州希图视鼎微电子有限公司 指令驱动协处理器的任务中断方法及系统
US9170820B2 (en) * 2011-12-15 2015-10-27 Advanced Micro Devices, Inc. Syscall mechanism for processor to processor calls
CN102630006B (zh) * 2012-03-20 2017-03-08 中广传播集团有限公司 一种传输视频流的装置和方法
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
CN103164839B (zh) 2013-03-07 2019-06-21 华为技术有限公司 一种绘图方法、装置及终端
US20140375658A1 (en) * 2013-06-25 2014-12-25 Ati Technologies Ulc Processor Core to Graphics Processor Task Scheduling and Execution
CN104253807B (zh) * 2013-06-28 2017-12-15 华为技术有限公司 一种媒体资源控制方法及装置
US10111099B2 (en) 2014-05-12 2018-10-23 Microsoft Technology Licensing, Llc Distributing content in managed wireless distribution networks
US9874914B2 (en) 2014-05-19 2018-01-23 Microsoft Technology Licensing, Llc Power management contracts for accessory devices
US10062188B2 (en) * 2014-06-05 2018-08-28 Microsoft Technology Licensing, Llc Customizable route planning using graphics processing unit
US9717006B2 (en) 2014-06-23 2017-07-25 Microsoft Technology Licensing, Llc Device quarantine in a wireless network
US9437172B2 (en) 2014-08-19 2016-09-06 Apple Inc. High-speed low-power access to register files
CN104539540A (zh) * 2015-01-15 2015-04-22 浪潮(北京)电子信息产业有限公司 一种基于图形处理单元gpu的路由方法和设备
FR3031819B1 (fr) * 2015-01-21 2018-01-26 Safran Electronics & Defense Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede
GB2536658B (en) * 2015-03-24 2017-03-22 Imagination Tech Ltd Controlling data flow between processors in a processing system
US9830676B2 (en) * 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads
CN110456900B (zh) * 2015-09-28 2021-06-29 华为终端有限公司 一种接口电路、显示驱动器、终端设备和显示控制方法
US10430189B2 (en) * 2017-09-19 2019-10-01 Intel Corporation GPU register allocation mechanism
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
US11900157B2 (en) * 2018-09-19 2024-02-13 Intel Corporation Hybrid virtual GPU co-scheduling
EP3825844B1 (en) * 2018-10-19 2024-06-05 Nippon Telegraph And Telephone Corporation Data processing system, central processing unit, and data processing method
US11763507B2 (en) * 2018-12-05 2023-09-19 Sony Group Corporation Emulating hand-drawn lines in CG animation
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
US11966631B2 (en) * 2021-04-16 2024-04-23 Western Digital Technologies, Inc. Command queue order adjustment in a data storage device
CN115269466A (zh) * 2022-07-29 2022-11-01 联想(北京)有限公司 一种电子设备及控制方法
CN117290098B (zh) * 2023-09-22 2024-08-13 中国科学院自动化研究所 基于gpu内联直通的高速数据处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289120A (ja) * 1997-04-14 1998-10-27 Hitachi Ltd 情報処理装置
JP2003529151A (ja) * 2000-03-27 2003-09-30 インフィネオン テクノロギーズ アーゲー 構成可能な長命令語(cliw)を使用するプロセッサにユーザ定義の実行ユニットを追加するための方法と装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683657B2 (ja) * 1996-09-30 2005-08-17 株式会社ルネサステクノロジ グラフィックス表示装置およびグラフィックスプロセッサ
US6182203B1 (en) * 1997-01-24 2001-01-30 Texas Instruments Incorporated Microprocessor
US20030212735A1 (en) * 2002-05-13 2003-11-13 Nvidia Corporation Method and apparatus for providing an integrated network of processors
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7697007B1 (en) * 2005-12-19 2010-04-13 Nvidia Corporation Predicated launching of compute thread arrays
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
JP2008021228A (ja) * 2006-07-14 2008-01-31 Renesas Technology Corp データ処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10289120A (ja) * 1997-04-14 1998-10-27 Hitachi Ltd 情報処理装置
JP2003529151A (ja) * 2000-03-27 2003-09-30 インフィネオン テクノロギーズ アーゲー 構成可能な長命令語(cliw)を使用するプロセッサにユーザ定義の実行ユニットを追加するための方法と装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017208124A (ja) * 2012-08-17 2017-11-24 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
JP2019525277A (ja) * 2016-06-17 2019-09-05 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 共有機械学習データ構造
US11797459B2 (en) 2016-06-17 2023-10-24 Hewlett-Packard Development Company, L.P. Shared machine-learning data structure
KR20190095489A (ko) * 2016-12-28 2019-08-14 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
KR102725293B1 (ko) 2016-12-28 2024-11-01 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
JP2019185743A (ja) * 2018-04-04 2019-10-24 エスケーハイニックス株式会社SKhynix Inc. 拡張メモリカードを含むデータ処理システム

Also Published As

Publication number Publication date
GB2462860B (en) 2012-05-16
GB0818203D0 (en) 2008-11-12
US20100045682A1 (en) 2010-02-25
GB2462860A (en) 2010-02-24
CN101667284A (zh) 2010-03-10
GB0815442D0 (en) 2008-10-01
CN101667284B (zh) 2013-06-05
US8675006B2 (en) 2014-03-18

Similar Documents

Publication Publication Date Title
JP2010050970A (ja) 中央処理装置と画像処理装置との間で通信するための機器および方法
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
US10579388B2 (en) Policies for shader resource allocation in a shader core
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
US10026145B2 (en) Resource sharing on shader processor of GPU
TWI493451B (zh) 使用預解碼資料進行指令排程的方法和裝置
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
US10824467B2 (en) Data processing system with protected mode of operation for processing protected content
US20140022263A1 (en) Method for urgency-based preemption of a process
US10242420B2 (en) Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta
KR20120058605A (ko) Gpu 워크의 하드웨어 기반 스케쥴링
CN109584141B (zh) 可切换的混合图形
JP2013546097A (ja) グラフィックス処理計算リソースのアクセシビリティ
CN108604185B (zh) 用于将工作负荷有效地提交到高性能图形子系统的方法和装置
CN103197918A (zh) 多通道时间片组
US20120188259A1 (en) Mechanisms for Enabling Task Scheduling
JP2014503898A (ja) 処理装置の同期動作のための方法およびシステム
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor
US20130155079A1 (en) Saving and Restoring Shader Context State
CN120821580B (zh) 应用于gpu的任务处理方法、gpu、设备及存储介质
US10423424B2 (en) Replicated stateless copy engine
US20240403056A1 (en) Shader launch scheduling optimization
JP2024545660A (ja) 加速処理ユニットのインライン中断

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140310