JP7339368B2 - グラフィックプロセッサ及び情報処理システム - Google Patents
グラフィックプロセッサ及び情報処理システム Download PDFInfo
- Publication number
- JP7339368B2 JP7339368B2 JP2021575687A JP2021575687A JP7339368B2 JP 7339368 B2 JP7339368 B2 JP 7339368B2 JP 2021575687 A JP2021575687 A JP 2021575687A JP 2021575687 A JP2021575687 A JP 2021575687A JP 7339368 B2 JP7339368 B2 JP 7339368B2
- Authority
- JP
- Japan
- Prior art keywords
- gpu
- memory
- processing
- data
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000010365 information processing Effects 0.000 title claims description 17
- 238000012545 processing Methods 0.000 claims description 193
- 230000015654 memory Effects 0.000 claims description 141
- 238000000034 method Methods 0.000 claims description 70
- 239000004744 fabric Substances 0.000 claims description 52
- 238000005070 sampling Methods 0.000 claims description 8
- 230000001172 regenerating effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 23
- 238000012546 transfer Methods 0.000 description 16
- 238000009877 rendering Methods 0.000 description 9
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 102100026533 Cytochrome P450 1A2 Human genes 0.000 description 2
- 101000855342 Homo sapiens Cytochrome P450 1A2 Proteins 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、グラフィックプロセッサ及び情報処理システムに関する。
GPU(Graphic Processing Unit)チップ(グラフィックプロセッサ)を用いた画像処理システムにおいて、性能向上が必要である場合、GPUチップを、より性能の高いGPUチップに置き換えて用いることが一般的である。
この例では、CPUで動作するソフトウェアの指示に基づき、1つのGPUチップが、そのGPUチップに直結された大容量メモリを利用しながら画像処理(特に3Dグラフィックスの描画処理)を実行する(図4(b))。しかしながら1チップで実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
そこで更なる性能向上を目指す場合、1システム内で複数のGPUチップを同時に利用することが考えられる(図4(c))が、この場合にはいくつか技術的課題が生じる。
まず、CPUソフトウェアの処理内容に従って、リアルタイムに3Dグラフィックスを描画するとき、GPU上の処理としては、動的に決まる1シーンに含まれるすべてのオブジェクト情報を把握したうえで1フレームを描画し、メモリ上のフレームバッファに出力する必要がある。この一連の処理には、多くの依存/参照関係があるので、複数のGPUチップと、それらに個別に接続され分断されているメモリに、処理を分割することが容易ではない。一般に複数のGPUチップと分断されたメモリでは、依存/参照関係の解決が困難であり、処理性能の向上が難しい。3Dグラフィックス描画処理を、適切に分散配置するソフトウェアを開発することも難易度が高い。
なお、GPUチップを、汎用コンピューティング処理に用いる場合は、3Dグラフィックス描画と異なり、このような複数のGPUチップに対する分散処理が、実現できる場合もある。これらの処理に要求されるリアルタイム性が低く、複数CPUに対する分散処理と同様の技法を用いて実行できる場合があるからである。しかし、この場合も、性能向上率は限定されている。
なお、CPUとGPUチップとがそれぞれ個別にメモリをもち、両者が分断されているよりも、ひとつの大容量メモリがCPUとGPUチップとによって共有されている形(いわゆるUMA:Unified Memory Architecture;図4(a))のほうが処理効率・性能・ソフトウェア開発難易度の面で優れる。しかし、この形態でも実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
このように、従来のGPUチップを用いた画像処理システムでは、性能の向上と、製造可能規模や電力密度の条件とを両立させることが困難であった。
本発明は上記実情に鑑みて為されたもので、製造可能規模や電力密度の条件を満足しつつ、性能を向上できるグラフィックプロセッサ及び情報処理システムを提供することを、その目的の一つとする。
上記従来例の問題点を解決する本発明の一態様は、コマンドプロセッサ及びジオメトリエンジンを有し、メモリと、他のグラフィックプロセッサに接続されるグラフィックプロセッサであって、自身に接続されたメモリとの間でデータを授受するバスファブリックと、前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されているものである。
本発明によると、製造可能規模や電力密度の条件を満足しつつ、性能を向上できるグラフィックプロセッサ及び情報処理システムを提供する。
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理システム1は、図1に例示するように、複数のグラフィックプロセッサ(GPU)10a,10b…と、各GPU10に対応して設けられるメモリ20a,20b…とを含み、各GPU10は、CPU30に接続されている。またこのCPU30にはメモリ31が接続されている。本実施の形態の情報処理システム1の一例は、この複数のGPU10が、全体として、仮想的な一つのGPUであるかのように動作するよう制御するものである。
なお、各GPUを区別する必要がない場合は、GPU10a,10b…を、GPU10と総称する。メモリについても同様に、メモリ20a,20b…を区別する必要のない場合は、メモリ20と総称する。
また図1ではGPU10が4個用いられる場合の一例を示しているが、GPUの数及び接続の態様は、この図1に例示の限りではない。この点について別の例を後に述べる。
各GPU10は、図2に例示するように、バスファブリック11と、コマンドプロセッサ(CP)12及びジオメトリエンジン(GE)13を含む制御ユニット14と、シェーダエンジン(SE)21,テクスチャユニット(TU)22,レンダリングバックエンド(RB)23、及びキャッシュ24を含む、複数の描画処理ユニット25と、L3キャッシュ27とを含む。
本実施の形態の例において、各GPU10に接続されているメモリ20a,20b…と、CPU30に接続されているメモリ31とは、全体として一つのメモリ空間を構成する。すなわち図3にその概要を例示するように、各メモリ20a,20b…及びメモリ31には、一つのメモリ空間内で互いに重なり合わないアドレス領域が割り当てられる。図3の例では、メモリ31にはアドレスA0からA1までのアドレス領域が割り当てられ、メモリ20aには、アドレスA1+1からA2までのアドレス領域が割り当てられ…というように、各メモリ20,31に割り当てたアドレス領域が互いに連続するアドレス領域となっており、全体として一つのアドレス領域を構成する例が示されている。
稼働中の複数のCPU30/GPU10は、こうして共通のグローバルなアドレス空間を共用しており、自身(CPU/GPUごと)のリソースが、当該アドレス空間のどのアドレス領域に割りあてられているかを把握している。具体的に本実施の形態のバスファブリック11は、自己を内包するGPU10に接続されたメモリ20に割り当てられたアドレス領域の情報を保持する。なお、GPU10ごとに個別に割り当てられたアドレス領域は連続したアドレス領域であってよい。また、この割りあての方法は、静的・動的いずれでもよい。さらに、MMU(Memory Management Unit)などを介してページ方式によりメモリ管理が行われてもよい。
[バスファブリックの構成・動作]
バスファブリック11は、所定のGPU間インターコネクト(本発明の第2のインターコネクトに相当する)CXを介して、他のGPU10のバスファブリック11との間でデータを授受し、当該他のGPU10に接続されるメモリ20にアクセス可能に接続されている。またバスファブリック11は、所定のチップ間インターコネクトCZを介してCPU30に接続されたメモリ31と、自身に接続されたメモリ20とを一つのメモリとして共用する。このようなチップ間インターコネクトCZ及びそれを介して行われる処理動作は従来のUMAでの構成と同様のものであるので、ここでの詳しい説明を省略する。
バスファブリック11は、所定のGPU間インターコネクト(本発明の第2のインターコネクトに相当する)CXを介して、他のGPU10のバスファブリック11との間でデータを授受し、当該他のGPU10に接続されるメモリ20にアクセス可能に接続されている。またバスファブリック11は、所定のチップ間インターコネクトCZを介してCPU30に接続されたメモリ31と、自身に接続されたメモリ20とを一つのメモリとして共用する。このようなチップ間インターコネクトCZ及びそれを介して行われる処理動作は従来のUMAでの構成と同様のものであるので、ここでの詳しい説明を省略する。
またこのバスファブリック11は、自身の属するGPU10内の各部から、アドレスを指定したメモリアクセス要求を受け入れる。バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであるか否かを判断する。
ここでバスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであれば、当該メモリアクセス要求に従って、自身の属するGPU10に接続されたメモリ20に対してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
またバスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスでなければ、当該指定されたアドレスを含むアドレス領域が割り当てられている他のCPU30またはGPU10を特定する。
バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、他のGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであれば、当該他のGPU10のバスファブリック11に対して、上記GPU間インターコネクトCXを介してデータ転送を行い、当該他のGPU10に接続されているメモリ20に対してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
また、バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、CPU30に接続されたメモリ31に割り当てられたアドレス領域内のアドレスであれば、CPU30に接続されたメモリ31に対して、上記チップ間インターコネクトCZを介してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
なお、バスファブリック11は、複数のGPU10やCPU30の接続トポロジーによってアクセスするメモリ20,31に接続された他のGPU10やCPU30との間でデータを送受するルートが複数ある場合は、当該接続関係に基づき、データ転送において最短となるルートを選択する。このようなルート選択の方法は、広く知られているので、ここでの説明は省略する。
さらにこのバスファブリック11は、GPU間インターコネクトCXを介して、所定のキャッシュコヒーレンスプロトコルに基づくデータ転送(いわゆるスヌーピング)を実行してもよい。本実施の形態におけるGPU10で用いられるキャッシュについては後に述べる。
[制御ユニットの構成]
制御ユニット14は、他のGPU10の制御ユニット14との間で、チップ間インターコネクトCY(本発明の第1のインターコネクトに相当する)を介してデータを送受可能に接続される。このチップ間インターコネクトCYは、複数のGPU10の制御ユニット14間(特に後に説明するGE13間)で、テッセレーションの前後でのシェーダの座標データや、3Dオブジェクトにおけるプリミティブ間接続情報、各GE13の動作ステータス(実行中,停止中,同期待ち,データ待ち,異常状態などの別を表す情報)を授受し、また、相互の制御ユニット14の処理を同期するためのハンドシェイク信号を授受する。
制御ユニット14は、他のGPU10の制御ユニット14との間で、チップ間インターコネクトCY(本発明の第1のインターコネクトに相当する)を介してデータを送受可能に接続される。このチップ間インターコネクトCYは、複数のGPU10の制御ユニット14間(特に後に説明するGE13間)で、テッセレーションの前後でのシェーダの座標データや、3Dオブジェクトにおけるプリミティブ間接続情報、各GE13の動作ステータス(実行中,停止中,同期待ち,データ待ち,異常状態などの別を表す情報)を授受し、また、相互の制御ユニット14の処理を同期するためのハンドシェイク信号を授受する。
この制御ユニット14は、少なくとも一つのCP12と、少なくとも一つのGE13を備える。CP12は、CPU30が生成したコマンド・ストリームを取得(フェッチ)してデコードし、当該デコードの結果に基づいて実行するべき処理を特定する。このCP12は、当該特定した処理を、描画処理ユニット25が備えるSE21等にディスパッチして実行させる。
本実施の形態の一例においてこのCP12は、コマンド・ストリームのフェッチ、デコード、並びにその実行を行うマイクロコントローラと、処理のディスパッチ等のリソース・マネジメント等を行うDMAとを含む。さらにこのCP12は、各処理の実行時期を調整するスケジューラを含んでもよい。
本実施の形態では、CP12は、自身が実行するべき処理だけでなく、他のGPU10のCP12が実行する処理の内容をも参照しつつ、自身の属するGPU10内での描画処理ユニット25等での処理のタイミング(優先順位や終了・同期等の処理、並びにスレッドの管理等の実行フロー全般)を管理する。
具体的に、このCP12は、他のGPU10のCP12との間で、ディスパッチした処理の内容を表す情報(処理ディスパッチ指示内容)、優先順位の指示、SE21などのチップ内の各ブロックの動作ステータス(実行中,停止中,同期待ち,データ待ち,異常状態などの別)を表す情報や、処理を同期するためのハンドシェイク信号を授受する。この実行タイミングの制御は、一般的な分散処理におけるプロセッサ間での処理タイミングの制御と同様の方法を採用できる。
GE13は、CPU30により描画するよう指示される、三次元の仮想的なオブジェクト(3Dオブジェクト)のサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、サーフェスシェーダとしての処理を行う。
またこのGE13は、複数の頂点からなるポリゴンなどのプリミティブの入力を受けて、頂点の削除や追加をおこなうジオメトリシェーダや、各頂点の座標変換をおこなうバーテックスシェーダ、それらを統合したプリミティブシェーダなどの処理を実行する。
ここで、サーフェスシェーダとしての処理に引き続く処理は、レンダリングの結果を描画する画面(スクリーン)を、部分ごと(例えば左上、右上、左下、右下の1/4ずつの範囲)に分割して得られる描画対象領域ごとに、後に説明するSE21等の演算ブロックを割り当てることで並列的に処理できるものであるが、3Dオブジェクトの描画結果が複数の描画対象領域に跨がる場合などでは、上記描画対象領域に分割する前の3Dオブジェクトに対して一括して処理を行う必要がある。そうでなければ分割部分ごとの整合性の維持が困難であり、また処理効率も向上できないからである。
そこで本実施の形態では、このGE13も、テッセレーション等の処理の前後の座標データを、他のGPU10のGE13との間で授受しつつ処理を行うこととする。
[制御ユニットによる分散処理]
具体的に、複数のGPU10が、全体として、仮想的に一つのGPUとして機能するよう制御する場合、各GPU10の制御ユニット14は、次のいずれかの方法で動作する。なお、以下の動作例では、いずれにおいても、チップ間インターコネクトCYを介しての転送が最も少なく、また最も短時間で完了する経路を選択するものとする。
具体的に、複数のGPU10が、全体として、仮想的に一つのGPUとして機能するよう制御する場合、各GPU10の制御ユニット14は、次のいずれかの方法で動作する。なお、以下の動作例では、いずれにおいても、チップ間インターコネクトCYを介しての転送が最も少なく、また最も短時間で完了する経路を選択するものとする。
(第1の方法) この方法では、複数のGPU10のいずれか一つのGPUの制御ユニット14が全GPU10の制御ユニット14の代表として機能する。
そしてこの代表となった制御ユニット14(便宜的にGPU10aの制御ユニット14aとする)のCP12aが、CPU30の出力するコマンド・ストリームをフェッチし、デコードして、当該デコードの結果に基づいて実行するべき処理を特定する。そして、このCP12aは、当該特定した処理を、各GPU10の備えるどの描画処理ユニット25のSE21等に処理させるかを決定する。例えばCP12aが、GPU10a自身の描画処理ユニット25において処理すると決定した場合、CP12aは、当該特定した処理の指示や当該処理に必要なデータを、チップ内インターコネクトを介してGPU10a自身の描画処理ユニット25に出力して処理を行わせる。
一方、CP12aが、GPU10aとは異なる他のGPU10、例えばGPU10bの描画処理ユニット25において処理すると決定した場合、CP12aは、当該特定した処理の指示や当該処理に必要なデータを、チップ間インターコネクトCYを介してGPU10bのCP12bへ送出する。
代表となっていないGPU10のCP12(上述の例ではGPU10aのCP12a以外のCP12)は、専ら、代表となったCP12aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったCP12aとのインタフェースとして機能することとなる(インアクティブの状態となる)。
つまり、ここでの例では、GPU10bのCP12bは、代表となったCP12aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10bの描画処理ユニット25に出力して処理を行わせる。
この例によると代表となったGPU10aのCP12aが、全体を統括して、主体的な制御管理を行う(アクティブの状態となって動作する)ことで、すべてのGPU10のシェーダ等での処理を管理する。これにより、全体的な処理割り当ての最適化や、同期処理が可能となるとともに、1チップでは達成できない多数のシェーダ等を用いた処理が可能となって、処理効率を向上できる。
またこの第1の方法では、当該代表となったGPU10aのGE13aが(アクティブの状態となって動作して)、描画するべきすべての3Dオブジェクトのサーフェスのテッセレーションなど、サーフェスシェーダとしての処理を行う。
そして、CP12aが行った処理の割り当てに基づいて、各3Dオブジェクトの情報(テッセレーションの結果等を含む)を、対応する描画処理ユニット25を内蔵するGPU10のGE13に対して送出する(自身が属するGPU10の描画処理ユニット25において処理する場合は、GE13aは、そのままチップ内インターコネクトを介して自身と同じGPU10a内の描画処理ユニット25に当該情報を出力する)。
このGE13においても、代表となっていないGPU10のGE13(上述の例ではGPU10aのGE13a以外のGE13)は、専ら、代表となったGE13aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったGE13aとのインタフェースとして機能することとなる(インアクティブの状態となる)。
つまり、例えばGPU10bのGE13bは、代表となったGE13aから、チップ間インターコネクトCYを介して受け入れた3Dオブジェクトの情報を、自身が属するGPU10bの描画処理ユニット25に出力して処理を行わせる。
(第2の方法) また、1つのGPU10内の制御ユニット14がすべてのGPU10内で行うべき処理を主体的に制御するのではなく、1つのGPU10内の制御ユニット14が全体を統括しつつ、各GPU10に分散処理を行わせることとしてもよい。
この第2の方法では、どのGPU10の制御ユニット14もアクティブの状態となって動作するが、特定のGPU10(例えばGPU10aとする)が主となり、この主となったGPU10aの制御ユニット14aが、他のGPU10b,c…の制御ユニット14b,c…をサブとして分散処理を行う。
具体的に、主となったGPU10aの制御ユニット14aのCP12aが、CPU30の出力するコマンド・ストリームをフェッチし、サブとなっている他のGPU10b,c…のCP12b,c…に対してデコード及び、当該デコードの結果に基づいて実行するべき処理を特定させる。
サブとして機能する各CP12b,c…は、当該特定した処理を、各GPU10の備えるどの描画処理ユニット25のSE21等に処理させるかを決定する。例えばCP12bが、自身の属するGPU10bの描画処理ユニット25において処理すると決定した場合、CP12bは、当該特定した処理の指示や当該処理に必要なデータを、チップ内インターコネクトを介してGPU10b自身の描画処理ユニット25に出力して処理を行わせる。
一方、CP12bが、GPU10bとは異なる他のGPU10a,c…、例えばGPU10aの描画処理ユニット25において処理すると決定した場合、CP12bは、当該特定した処理の指示や当該処理に必要なデータを、チップ間インターコネクトCYを介してGPU10aのCP12aへ送出する。
この第2の方法の例では、各CP12は、他のGPU10のCP12から受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったCP12aとのインタフェースとしても機能する。
つまり、ここでの例では、GPU10aのCP12aは、CP12bから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10aの描画処理ユニット25に出力して処理を行わせる。
またこの第2の方法では、主となったGPU10aのGE13aが、他のGPU10b,c…のGE13b,c…に対して、分散して、描画するべきすべての3Dオブジェクトのサーフェスのテッセレーションなど、サーフェスシェーダとしての処理を行わせる。この分散処理の制御は、広く知られた方法を採用できるので、ここでの詳しい説明は省略する。
そしてサブとなっているGPU10b,c…のGE13b,c…は、CP12が行った処理の割り当てに基づいて、各3Dオブジェクトの情報(テッセレーションの結果等を含む)を、対応する描画処理ユニット25を内蔵するGPU10のGE13に対して送出する(自身が属するGPU10の描画処理ユニット25において処理する場合は、GE13は、そのままチップ内インターコネクトを介して自身と同じGPU10内の描画処理ユニット25に当該情報を出力する)。
このGE13においても、他のGPU10のGE13から処理の指示や当該処理に必要なデータを受け入れると、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったGE13aとのインタフェースとしても機能することとなる。
この第2の方法では、複数のGPU10のCP12,GE13が分散処理により組み合わせて利用され、全体としてあたかも一つのCP12,GE13として機能する。もっとも、常にすべてのGPU10のCP12やGE13がアクティブとなって演算を行っている必要はなく、主となったCPU10のCP12,GE13は、実行するべき処理に必要な処理能力に応じて、サブとして稼働させるGPU10のCP12,GE13の数を決定し、当該数だけのGPU10のCP12,GE13を制御して、分散的に処理を行わせることとしてよい。
(第3の方法) さらに各GPU10が複数の制御ユニット14を備えてもよい。この場合、第1,第2の方法により、一つのGPU10内の一つの制御ユニット14が代表、または主となって分散処理を実行することとすれよい。あるいはこの例では、GPU10内の各制御ユニット14が、それぞれ別々のアプリケーションプログラムに基づく処理を実行してもよい。
[描画処理ユニットの構成・動作]
SE21は、制御ユニット14から入力されるデータを用いて、バーテックスシェーダやピクセルシェーダなど種々のシェーダとしての演算処理を実行する。このSE21は、一般的には、複数の処理を時分割・空間分割にて並列実行するユニット(Compute Unit:CU)を内蔵する。またこのSE21は、ポリゴンをピクセル値に変換するラスタライズ処理を実行してもよい。
SE21は、制御ユニット14から入力されるデータを用いて、バーテックスシェーダやピクセルシェーダなど種々のシェーダとしての演算処理を実行する。このSE21は、一般的には、複数の処理を時分割・空間分割にて並列実行するユニット(Compute Unit:CU)を内蔵する。またこのSE21は、ポリゴンをピクセル値に変換するラスタライズ処理を実行してもよい。
またこのSE21は、処理中、メモリ20,31に格納されたデータを読み出し、あるいはメモリ20,31へデータを書き込む際には、読み出しあるいは書き込みの対象となるアドレスを指定する情報とともに(データの書き込みの際は、さらに当該書き込むべきデータとともに)、メモリへのアクセス要求を、バスファブリック11に対して出力する。そしてこのSE21は、メモリ20,31から読み出されたデータを、バスファブリック11から受け入れる。
TU22は、テクスチャデータや、種々の数値テーブルを、メモリ20,31から取得するよう、バスファブリック11に対して要求する。そしてTU22は、バスファブリック11が当該要求に応じてメモリ20,31から取得したデータを受け入れて、必要に応じてフィルター処理のうえ、ピクセルシェーダとして動作するSE21に出力する。
RB23は、SE21が出力するピクセルシェーダ出力のピクセル値を受け入れて、アルファテスト、ステンシルテスト、デプステストなどを行って、各ピクセルを描画するか否かを判断し、描画すると判断したときには、当該ピクセルを、フレームバッファ(メモリ20,31内の所定のアドレスに確保されているものとする)に書き込む。この書き込みの際には、RB23は、メモリ20,31内のフレームバッファとして設定されたアドレス領域内の書き込むピクセルに対応するアドレスに、当該ピクセルの描画に係るデータを書き込むよう、バスファブリック11に対して要求する。
なお、SE21,TU22,RB23は、メモリ20,31へのアクセス要求を行う際に、バスファブリック11に対して直接、アクセス要求を出力してもよいが、ここではキャッシュ24を介して出力するものとする。またSE21,TU22,RB23は、メモリ20,31から読み出されるデータを、キャッシュ24を介して(あるいはキャッシュ24から)受け入れるものとする。
本実施の形態のGPU10では、一般的なGPUと同様に、同等の機能を有するSE21(CU)やTU22,RB23等の描画処理ユニット25を複数並列に内蔵してよい。この場合、CP12やGE13は、所定の分散処理制御方法に基づいて、複数の描画処理ユニットに並列的に描画処理を実行させる。
キャッシュ24は、複数のキャッシュライン(キャッシュタグとデータとを関連付けて記憶する記憶領域)を備える。またこのキャッシュ24は、アドレス比較器やウェイ切替器等を備える。各キャッシュラインは、タグとデータラインとを有し、タグはキャッシュ対象アドレス、リプレースルール制御ビット、パリティ・ECCビット、ラインロックビット等の制御情報等を含む。またこのタグには、どのGPU10に接続されたメモリ20から読み出されたデータを格納しているかを表す情報を含んでもよい。データラインは、例えばキャッシングしたデータのほか、パリティ・ECCビットを含んでもよい。
本実施の形態の一例では、このキャッシュ24は、SE21,TU22,RB23とバスファブリック11との間に介在し、SE21,TU22,RB23がバスファブリック11に対して出力するアクセス要求をインターセプトして、アクセスしようとするアドレスのデータがいずれかのキャッシュラインに格納されているか否かを判断する。キャッシュ24は、要求が読み出しである場合、ここでいずれかのキャッシュラインに、アクセスしようとするアドレスのデータが格納されていれば、当該データを読み出して要求元であるSE21,TU22,RB23のいずれかに出力する。また、要求が書き込みである場合、いずれかのキャッシュラインに、アクセスしようとするアドレスのデータが格納されていればキャッシュ24は、当該データに、要求されたデータを上書きする。
またこのキャッシュ24は、アクセスしようとするアドレスのデータがいずれかのキャッシュラインに格納されていなければ、インターセプトしたアクセス要求をバスファブリック11に出力する。そしてキャッシュ24は、バスファブリック11を介してメモリ20,31から読み出されたデータを受け入れ、このデータをアクセス要求元のSE21,TU22,RB23のいずれかに出力するとともに、当該受け入れたデータを、アクセス要求に係るアドレスに関連付けて、いずれかのキャッシュラインに格納する。この動作は一般的なキャッシュメモリの動作と同様である。
さらに本実施の形態では、このキャッシュ24は、バスファブリック11及びGPU間インターコネクトCXを介して、他のGPU10またはCPU30との間で、所定のキャッシュコヒーレンスプロトコルに基づくデータ転送(いわゆるスヌーピング)を実行する。これによりキャッシュされたデータの整合性を維持する。またキャッシュ24は、SE21,TU22,RB23に内蔵されてもよい。
さらに本実施の形態のキャッシュ24(L0,L1,L2キャッシュ)は、SE21,TU22,RB23とバスファブリック11との間に介在して、キャッシュラインごとに、キャッシュラインに格納したデータが、自身が属するGPU10に接続されたメモリ20から読み出したものか、他のGPU10に接続されたメモリ20から読み出したものかを表すフラグを関連付けられて記録してもよい。
このフラグは1ビットとし、自身が属するGPU10に接続されたメモリ20から読み出したものか、他のGPU10に接続されたメモリ20から読み出したものかを表すだけのものでもよい。また、多ビットで構成し、自身が属するGPU10または、他のどのGPU10に接続されたメモリ20から読み出したデータを格納しているかを特定するフラグ(GPU10を特定するフラグ)としてもよい。
このように構成した場合、キャッシュラインに格納したデータを置き換えるリプレース処理において、特定のGPU10に接続されたメモリ20から読み出したキャッシング結果を優先的に残すよう制御してもよい。また、キャッシュラインに格納したデータを置き換えるリプレース処理において、格納したデータを利用するアプリケーションの実行プロファイル結果を収集し、どのGPU10に接続されたメモリ20からのキャッシング結果を優先的に残すかの制御を行ってもよい。
さらに、SE21,TU22,RB23とバスファブリック11との間に介在するキャッシュ24は、そのキャッシュラインごとに、自身が属するGPU10に接続されたメモリ20から読み出したデータを格納するものか、他のGPU10に接続されたメモリ20から読み出したデータを格納するものかを設定する設定用のフラグを関連付けて記録してもよい。
この設定用のフラグも、1ビットとし、自身が属するGPU10に接続されたメモリ20から読み出したデータを格納するものか、他のGPU10に接続されたメモリ20から読み出したデータを格納するものかを表すだけのものでもよい。また、この設定用のフラグは、多ビットで構成し、自身が属するGPU10または、他のどのGPU10に接続されたメモリ20から読み出したデータを格納するものかを特定するフラグ(GPU10を特定するフラグ)としてもよい。
この例では、キャッシュを行うSE21,TU22,RB23やバスファブリック11等の各ブロックは、キャッシュラインごとの設定用のフラグを参照し、読み出したデータが、どのGPU10に接続されたメモリ20から読み出されたものかにより、どのキャッシュラインに当該データを格納するかを決定して、当該決定したキャッシュラインに当該データを格納する。
この場合も、どのキャッシュラインをどのGPU10に割り当てるかを決定する際に、予め、実行するアプリケーションの実行プロファイル結果を収集し、どのGPU10のメモリ20からのデータを優先的にキャッシングするかを制御してもよい。
さらに、本実施の形態のある態様では、SE21,TU22,RB23のそれぞれが、図示しないL0,L1キャッシュを内蔵してもよい。この例では、SE21,TU22,RB23の外部にあるキャッシュ24は、L2キャッシュとして機能する。またこの例では、SE21,TU22,RB23に内蔵されるL0,L1キャッシュは、L2キャッシュとして機能するキャッシュ24の上位の階層のキャッシュとして動作し、SE21,TU22,RB23のそれぞれが備える、SE21,TU22,RB23としての動作を行うための機能ブロック(コア)とキャッシュ24との間に介在してもよい。この例では、上記フラグや設定用フラグは、L2キャッシュとして機能するキャッシュ24においてのみ用いられる。
L3キャッシュ27は、バスファブリック11と、このバスファブリック11が属するGPU10に接続されているメモリ20との間に介在し、バスファブリック11による当該メモリ20へのアクセスをインターセプトして、メモリ20のキャッシュメモリとして動作する。
[動作]
本実施の形態は以上の構成を基本的に備えており、従ってCPU30がメモリ20,31の所定のアドレスに格納したコマンド・ストリームを、例えば代表となったGPU10aのCP12aが、自身のバスファブリック11aを介して読み出す。このデータの読み出しはL3キャッシュ27にキャッシュされたデータを読み出すことにより行われてもよい。
本実施の形態は以上の構成を基本的に備えており、従ってCPU30がメモリ20,31の所定のアドレスに格納したコマンド・ストリームを、例えば代表となったGPU10aのCP12aが、自身のバスファブリック11aを介して読み出す。このデータの読み出しはL3キャッシュ27にキャッシュされたデータを読み出すことにより行われてもよい。
CP12aはコマンド・ストリームをデコードし、デコードにより実行するべき処理を特定する。そして、CP12aは、当該特定した処理を、どのGPU10のどの描画処理ユニット25に行わせるかを決定して、処理のディスパッチを行う。
そして処理を行わせることとした描画処理ユニット25に対して処理の指示や処理に必要なデータ(の格納先アドレス等)を送出する。このときこれらの指示やデータの送出は、チップ間インターコネクトCYを介して行われる。
また代表となったGPU10aのGE13aは、CPU30により描画するよう指示される、三次元の仮想的なオブジェクト(3Dオブジェクト)のサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、サーフェスシェーダとしての処理を行う。そして当該処理の結果を、チップ間インターコネクトCYを介して他のGPU10b,c…のGE13b,c…に出力する。
他のGPU10b,c…のGE13b,c…は、GE13aから受け入れたテッセレーションの処理結果等の情報を、自己が属するGPU10の描画処理ユニット25に出力する。
そして各GPU10の描画処理ユニット25が、並列的に、描画の処理を実行する。この実行結果は、各GPU10のバスファブリック11を介して、各GPU10及びCPU30に接続されたメモリ20,31内に確保された、フレームバッファに格納される。
フレームバッファに格納されたデータは、例えばCPU30により読み出されて、図示しない画像表示処理部に出力され、ディスプレイ等に表示出力される。
本実施の形態では、各GPU10のバスファブリック11が、相互にGPU間インターコネクトCXを介して接続され、各メモリ20や、CPU30に接続されるメモリ31を互いに共有し、全体として一つのメモリ空間としてアクセス可能としている。また、他のGPU10において処理される内容を参照する必要のある制御ユニット14が、チップ間インターコネクトCYを介して互いにデータを送受可能に接続されている。これにより複数のGPU10があたかも1つのGPUであるかのように互いに協調して処理を進めることができる。
[インターコネクトの例]
なお、このGPU間インターコネクトCXやチップ間インターコネクトCYは、GPU10内で対応するチップ内インターコネクトの信号線を介して送受される信号(RAW値)をサンプリングし、当該サンプリングして得た情報を含むデータフレームを他のGPU10(あるいはCPU30)に対して送出し、受信した側でデサンプリングしてRAW値を再生し、GPU10内で対応するチップ内インターコネクトの信号線上に、当該RAW値を出力することで行われてもよい。
なお、このGPU間インターコネクトCXやチップ間インターコネクトCYは、GPU10内で対応するチップ内インターコネクトの信号線を介して送受される信号(RAW値)をサンプリングし、当該サンプリングして得た情報を含むデータフレームを他のGPU10(あるいはCPU30)に対して送出し、受信した側でデサンプリングしてRAW値を再生し、GPU10内で対応するチップ内インターコネクトの信号線上に、当該RAW値を出力することで行われてもよい。
ここでサンプリングの対象となる信号は、データバス上の信号だけでなく、制御信号を含んでもよい。すなわち、サンプリングするチップ内インターコネクトの信号線は、主なデータを転送するメイン・データ・インターコネクト(キャッシュコヒーレントプロトコルの信号を含んでもよい)や、SE21(CU)とL1キャッシュ間、L1-L2キャッシュ間、L1キャッシュとRB23間、L1-分散L2間のクロスバ、MMIOアクセス・インターコネクトなど、GPU10の制御コアからGPU10の各ブロックのレジスタやメモリ20にアクセスするためのインターコネクト、パワーマネージメント制御、試験・デバッグ用(DFT/DFD)、割り込み信号用などシステム制御のためのインターコネクト、各ブロックに固有な専用線を含むインターコネクト(例えばローカルデータバス、ハンドシェイク、制御ライン、CP12から各SE21間、RB23とSE21との間、GE13から各SE21間のインターコネクト)の信号線等である。
送信側となるGPU10は、バッファを備えて、自身のチップ内インターコネクトの信号線から、サンプリングして得たRAW値を送出するタイミングまで、送信するべきデータフレームを保持する。送出のタイミングは、受信側となったGPU10から指示されてもよい。
受信側となったGPU10は、バッファを備えて、自身のチップ内インターコネクトの信号線に、デサンプリングして得たRAW値を出力するタイミングまで、受信したデータフレームを保持する。データフレームを送受信するGPU10は、クレジットベース等、所定のフロー制御によりデータフレームの送受を行う。なお、このフロー制御は、サンプリングした信号線を含むチップ内インターコネクトを介したデータの授受で利用されるプロトコルのハンドシェイク信号には関わりなく行われる。
なお、不要な情報転送を低減するため、信号線上の信号が変化(0から1へ、1から0へ変化)したときに限り、サンプリングとフレーム生成を行うようにしてもよい。また、サンプリングの対象とする信号線を含むチップ内インターコネクトや、それに接続されたGPU10内のブロックがアクティブであるか否かを示す制御信号を参照してサンプリングするか否かを決定してもよい。
さらに、GPU間インターコネクトCXとチップ間インターコネクトCYとは、それぞれ互いに非同期で動作してよい。
[キャッシュ]
また本実施の形態において、描画処理ユニット25が備えるキャッシュ24は、記憶しているキャッシュライン内のデータが、自身が属するGPU10に接続されたメモリ20、または、他のGPU10に接続されたメモリ20(あるいはCPU30に接続されたメモリ31)のうち、どのGPU10(またはCPU30)に接続されたメモリ20(メモリ31)から読み出されたものであるかを特定する情報を、キャッシュラインごとに保持してもよい。この情報は、キャッシュコヒーレンスの処理において利用される。
また本実施の形態において、描画処理ユニット25が備えるキャッシュ24は、記憶しているキャッシュライン内のデータが、自身が属するGPU10に接続されたメモリ20、または、他のGPU10に接続されたメモリ20(あるいはCPU30に接続されたメモリ31)のうち、どのGPU10(またはCPU30)に接続されたメモリ20(メモリ31)から読み出されたものであるかを特定する情報を、キャッシュラインごとに保持してもよい。この情報は、キャッシュコヒーレンスの処理において利用される。
さらに、GPU10のCP21は、キャッシュ24が備えるキャッシュラインの各々に、どのGPU10に接続されたメモリ20(あるいはCPU30に接続されたメモリ31)から読み出したデータを格納するかを予め割り当てておいてもよい。この例では、あるGPU10に接続されたメモリ20から読み出されたデータは、当該メモリ20から読み出したデータを格納するものとして割り当てられたキャッシュラインに格納されることとなる。
[本実施の形態の特徴]
また、本実施の形態の情報処理システムの特徴は、次のように説明することもできる。すなわち、本実施の形態は、性能スケーラビリティがある巨大な画像処理システムを仮想的にマルチチップで構成する方法を提供する。
また、本実施の形態の情報処理システムの特徴は、次のように説明することもできる。すなわち、本実施の形態は、性能スケーラビリティがある巨大な画像処理システムを仮想的にマルチチップで構成する方法を提供する。
またその特徴事項は、次の通りである。
・複数のチップから構成されており、「各チップが個別に持つメモリを束ねて、仮想的に一つのメモリとして扱えるチップ間インタフェース」と「分散処理が困難な処理を、各チップをまたがって実行するためのチップ間インタフェース」をもつ画像処理システムである。
・GPU間接続ポート(CX)(CY)が異なるプロトコルで非同期に動作する。
・GPU間接続ポート(CY)が、CP,GEのみの接続をする。
・CP,GEの一連の複数チップにおける分散処理においてチップ間転送が最少・最短となる構成を選択する。
・複数GPUチップにおけるCP,GE分散処理方法を、1GPUチップ内においても適用することで、1GPUチップが空間分割によって複数アプリケーション処理の同時実行が可能となる。
・複数GPUチップにおけるCP,GE分散処理方法を前提として、GPUを指定の機能ごとにチップA/B/Cへ分割してもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングしているかフラグをもたせてもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングするか割り当てできてもよい。
・これにより動的な性能スケーラビリティをもたせることが可能となる(1チップ内の分割処理から、複数チップによる並列処理まで可能になる)。
・静的に性能スケーラビリティがあるマルチチップ・システムを構築することが可能となる。
・チップ内インターコネクト上の信号のRAW値をサンプリングして他のGPUへ送出し、他のGPUが、受信した情報をデサンプリングしてRAW値を得て自己のチップ内インターコネクトに出力するようなインターコネクト技術(以下サンプリングによるインターコネクト技術と呼ぶ)を、上記マルチチップ接続に適用することとしてもよい。
特願2019-189027の明細書及び図面に記載の内容は、本明細書に参照により合併(incorporated by reference)される。
・複数のチップから構成されており、「各チップが個別に持つメモリを束ねて、仮想的に一つのメモリとして扱えるチップ間インタフェース」と「分散処理が困難な処理を、各チップをまたがって実行するためのチップ間インタフェース」をもつ画像処理システムである。
・GPU間接続ポート(CX)(CY)が異なるプロトコルで非同期に動作する。
・GPU間接続ポート(CY)が、CP,GEのみの接続をする。
・CP,GEの一連の複数チップにおける分散処理においてチップ間転送が最少・最短となる構成を選択する。
・複数GPUチップにおけるCP,GE分散処理方法を、1GPUチップ内においても適用することで、1GPUチップが空間分割によって複数アプリケーション処理の同時実行が可能となる。
・複数GPUチップにおけるCP,GE分散処理方法を前提として、GPUを指定の機能ごとにチップA/B/Cへ分割してもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングしているかフラグをもたせてもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングするか割り当てできてもよい。
・これにより動的な性能スケーラビリティをもたせることが可能となる(1チップ内の分割処理から、複数チップによる並列処理まで可能になる)。
・静的に性能スケーラビリティがあるマルチチップ・システムを構築することが可能となる。
・チップ内インターコネクト上の信号のRAW値をサンプリングして他のGPUへ送出し、他のGPUが、受信した情報をデサンプリングしてRAW値を得て自己のチップ内インターコネクトに出力するようなインターコネクト技術(以下サンプリングによるインターコネクト技術と呼ぶ)を、上記マルチチップ接続に適用することとしてもよい。
特願2019-189027の明細書及び図面に記載の内容は、本明細書に参照により合併(incorporated by reference)される。
詳細に言えば、本実施の形態は、GPU間接続ポート(CX)(CY)を持ち、単独でも動作しうる1GPUをA/B/Cに機能分割する方法を持ち、分散メモリのキャッシュ効率を高める方法を持ち、CP,GEを分散処理する方法を持つことで、1チップ内の空間分割から複数チップ同時利用までフレキシブルなハードウエア構成が可能であり、かつ、同じ1GPU用プログラミングモデルのまま、異なる性能要件のアプリケーションを一つ以上マッピングして並列実行することができる情報処理システムである。
この実施形態の背景となった技術は次のようなものである。すなわち図4に示すように、GPUチップを用いた画像処理システムにおいて、性能向上が必要である場合、性能を向上させたGPUチップを用いることが一般的である。CPUで動作するソフトウェアの指示に基づき、1つのGPUチップが、そのGPUチップに直結された広帯域で大容量なメモリを利用しながら画像処理(とくに3D グラフィックスの描画処理)を実行する。すなわち従来例ではGPUチップが必要とするデータは、GPUチップに直結されたメモリに保持される。ただし、1チップで実現できる規模には、製造可能規模・電力密度などの要因で限界がある。更なる性能向上を目指す場合、1システム内で複数のGPUチップを同時に利用することが考えられるが、いくつか課題がある。
CPUソフトウェアの処理内容に従って、リアルタイムに3Dグラフィックスを描画するとき、動的にきまる1シーンに含まれるすべてのオブジェクト情報をGPU上の処理は把握したうえで、1フレームを描画し、メモリ上のフレームバッファに出力する。この一連の処理には、多くの依存/参照関係があり、複数のGPUチップと、それらに個別に接続され分断されているメモリに、処理を分割することが容易ではない。複数のGPUチップと分断されたメモリでは、依存/参照関係の解決が困難であり、処理性能の向上が難しい(図4(c))。3Dグラフィックス描画処理を、適切に分散配置するソフトウェアを開発することも難易度が高い。
なお、GPUのひとつの利用方法である汎用コンピューティング処理を実行する場合は、このような複数のGPUチップに対する分散処理が、3Dグラフィックス描画と異なり、実現できる場合もある。これらの処理に要求されるリアルタイム性は低く、複数CPUに対する分散処理と同様の技法を用いて実行できるからである。しかし、性能向上率は限定されている。
なお、CPUとGPUがそれぞれ個別のメモリをもち、両者が分断されている状態(図4(b))よりも、ひとつの大容量メモリがCPUとGPUによって共有されている形(UMA: Unified Memory Architecture、図4(a))のほうが処理効率・性能・ソフトウェア開発難易度の面で優れる。しかし、これにも実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
これに対し、本実施の形態の情報処理システムで用いるGPU51は次の図5(a)に例示する構成を備える。
このGPU51のそれぞれは、図5(b)に示すように、自メモリ52と同様に、他GPU51のメモリ52へダイレクトアクセスできるポートをもつ(X)。
またこのGPU51は、図5(b)に示されるように、自CP(Command Processor),GE(Geometry Engine)が、他GPU51の同ブロックと一体的に処理するために必要な内部通信を直結できるポートをもつ(Y)。
さらにGPU51は、図5(b)に示すように、自メモリをCPU53と共有(UMA)するためのダイレクトアクセスポートをもつ(Z)。
各GPU51は、これらのポートを介した接続により、あたかも1つのGPUであるように協調して処理を進めることができる(仮想的に、従来例の図4(a)と同様の構成)。
ソフトウェア開発においては、1つのGPUを用いる場合(従来の図4(a)) と同様のプログラミングモデルで対応できる。
1システムにおけるGPU接続数を変えることで、性能が異なるシステムを同一アーキテクチャ・同一プログラミングモデルのまま構築できる。
1システムにおけるGPUアクティブ範囲を変えることで、動的に異なる性能要件のアプリケーションを実行できる。
ここで1つのGPUは、それだけで単独GPUとして動作することもできる機能をもつ。
なお、ポート(X)は上記インターコネクトCXに、ポート(Y)は上記インターコネクトCYに、ポート(Z)は上記インターコネクトCZにそれぞれ対応するものである。また、GPU51やCPU53,メモリ52の並列数やGPU51の内部の構成、各チップの接続トポロジーは、この例のみに限定されない。
各部構成をさらに細分して示した構成は図6に例示するようなものとなる。図において、各部は次の通りである。なお、以下の説明で用いる図面において、比較的太い矢印はデータ信号線、細い矢印は制御信号線(Control Signal)を例示している。
CP(Command Processor)61:GPUの処理内容は、CPUが生成したコマンド・ストリーム(プリミティブな描画や汎用計算の要求群)がメモリ上のQueueにおかれることで指定されている。このコマンド・ストリームは、GPUのCP61がフェッチ・デコードし、必要に応じてよりプリミティブな処理に分解し、それらをShader Engine63(SE, Compute Unit(CU)631を内蔵する)などにディスパッチすることで実行される。CP61は、GPU内部に発行した処理要求の優先順位、終了・同期処理、スレッド管理を含む実行フロー全般の管理をおこなうことで、GPU全体の処理を統括する。ひとつのGPU内に、SE63などが複数並列にある場合、それら全体を統括下におき、各リソースへの処理割当の最適化や同期処理も含めて集中管理する。そのため、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、CP61は、すべてのチップの処理内容とリソース利用状態を把握し、制御する必要がある。本実施例におけるCP61とは、コードを実行するマイクロコントローラ、スケジューラ、時分割・空間分割によるリソース・マネジメント機能、コピーをおこなうDMAなどをあわせ持つ。
GE(Geometry Engine)62:Geometry Engine(GE, またはGeometry Processor)は、3Dオブジェクトのサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、主にサーフェスシェーダを処理する演算ブロックである。また、複数の頂点からなるポリゴンなどのプリミティブを入力とし、頂点の削除や追加をおこなうジオメトリシェーダや、各頂点の座標変換をおこなうバーテックスシェーダ、それらを統合したプリミティブシェーダなどの、サーフェスシェーダの後続処理は、スクリーンを分割した描画対象領域毎に、プリミティブ・ユニットやSE63(CU631)などの演算ブロックを割りあてあることで並列実行ができる。しかし、GE62は、領域分割される前の3Dオブジェクトに対して一括処理をおこなうことで整合性確保と処理効率向上をしており、テッセレーション前後の座標データを、各SE63(CU631)と授受しながら(621:入出力しながら)動作をおこなう必要がある。ひとつのGPU内に、SE63などが複数並列にある場合、それら全体と接続されている必要がある。そのため、複数のチップを用いて、仮想的にひとつのGPUを構築する場合も、GE62は、すべてのチップ内にあるSE63などと接続され(622)、GE62は全体整合性を確保しながら協調動作する必要がある。GE62は必要に応じてSE63にかわりバーテックスシェーダも実行する。図6では621,622は座標データやプリミティブ構成情報を授受するデータ信号線を概念的に表している。
SE(Shader Engine)63:Shader Engine63(SE)は、多くの種類のシェーダの演算処理を担当するブロックであり、多くの場合SIMD演算器を並列に持ち、SIMTとスレッド処理を用いて、複数の処理を時分割・空間分割にて並列実行する機能(Compute Unit:CU)631を内蔵する。またポリゴンをピクセル値に変換するラスタライズ機能なども持つ。性能向上のため、 GPUは、同じ機能をもつSE63(CU631)を複数並列に内蔵することが多い。バーテックスシェーダ・ピクセルシェーダや汎用コンピューティングの処理は、これら複数のSE63(CU631)に、スクリーンを分割した描画対象領域毎や汎用計算分割粒度毎に割りあてることもでき、個々のSE63(CU631)は相互参照や依存関係がない処理を並列に実行することが容易である。読み書きするメモリ領域はローカルが主体的であるが、グローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。なお、後述のTU(Texture Unit),RB(Rendering Backend)などを含めてSEと呼ぶ場合もある。本実施例において、Level 0/1キャッシュやローカルメモリをSEが内蔵し、Level2キャッシュはSE/TU/RB-Bus fabric間、Level3キャッシュはBus fabric-DRAM間にある。なお、図6ではキャッシュ階層やローカルメモリは図示していない。
TU(Texture Unit):テクスチャデータおよびその他の数値テーブルをメモリからフェッチし、必要に応じてフィルター処理のうえ、ピクセルシェーダにわたす。GPUは、同じ機能をもつTUを、SE63に直結された形で複数並列に内蔵することが多く、スクリーンを分割した描画対象領域毎に処理を並列に実行することが容易である。参照するメモリ領域はグローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。
RB(Rendering Backend):ピクセルシェーダ出力のピクセル値にAlpha/Stencil/Depth テストなどをおこない、フレームバッファに描画結果を出力する。GPUは、同じ機能をもつRendering Backend(RB, またはRaster Operation(ROP))を、SE63に直結された形で複数並列に内蔵することが多く、スクリーンを分割した描画対象領域毎に処理を並列に実行することが容易である。読み書きするメモリ領域はローカルが主体的であるが、グローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。
GPU間接続ポート(X) (Y):GPU間接続ポート(X)および(Y)は、非同期に動作する。GPU間接続ポート(X)および(Y)は、サンプリングによるインターコネクト技術を用いてもよい。GPU間接続ポート(X)と(Y)を、ひとつの物理インタフェースに多重化したうえで転送をしてもよい。サンプリングによるインターコネクト技術は、各転送のパケット化したうえで多重化、インタフェースの時分割多重化、いずれかでも実施できる。GPU間接続ポート(Y)においては、CP,GEブロックが内部で用いている、通知/観測・ハンドシェイク信号線を、サイドバンド信号として併設してもよい。
Bus Fabric (Interconnect),GPU間接続ポート(X):稼働中の複数のCPU/GPUチップは、共通のグローバルなアドレス空間を共有しており、自チップのリソースが、どのアドレス領域に割りあてられているか、把握している。複数のGPUチップが個別に持つメモリ空間を、ひとつの連続したアドレス領域に割りあてることができる。この割りあては、静的・動的いずれでもよい。またMMUなどを介してページ方式であってもよい。
GPU内の各ブロックからメモリアクセス要求があると、自GPU配下のメモリに対するアクセスか、それとも他GPU配下のメモリに対するアクセスか、アクセス対象アドレスに基づいて判定し、他GPUチップのメモリへのアクセスである場合は、GPU間接続ポート(X)を介してデータ転送をおこなう。
稼働中の複数のCPU/GPUチップは、チップ間接続において、目的の他GPUチップ配下メモリへアクセスするルートが複数ある場合は、その接続関係を把握しており、データ転送において最短のルートを選択することができる。
SE/TU/RBが内蔵するキャッシュ(本実施例においてはキャッシュ24のL0/L1/L2キャッシュ)は、自チップおよび外部チップへのアクセスをキャッシングできる。必要に応じてGPU間接続ポート(X)はキャッシュコヒーレントプロトコルをサポートし、各チップ間のL0/L1/L2キャッシュはデータ一貫性を持つことができる。
SE/TU/RBが内蔵するキャッシュは、各キャッシュラインに、キャッシングしたデータが、自チップか、他チップか、示すフラグを持ってよい。1ビットのみで自チップか否かを示す、多ビットで複数チップの特定可能としてもよい。キャッシュラインのリプレース処理において、特定チップのキャッシング結果を優先的に残す制御をおこなってもよい。キャッシュラインのリプレース処理において、あらかじめ各アプリケーションの実行プロファイル結果を収集し、どのチップのキャッシング結果を優先的に残すか制御をおこなってもよい。
SE/TU/RBが内蔵するキャッシュは、各キャッシュラインについて、自チップか、他チップか、どのチップのデータをキャッシングするか指定できるフラグを持ってよい。1ビットのみで自チップか否かを示す、多ビットで複数チップの特定可能としてもよい。キャッシュラインの各チップへの割り当て処理において、あらかじめ各アプリケーションの実行プロファイル結果を収集し、どのチップのキャッシングを優先的におこなうか制御をおこなってもよい。
このキャッシュは、例えば以下のような構成をとる。キャッシュは、複数のキャッシュライン、アドレス比較器、ウェイ切替器を内蔵する。また、ひとつのキャッシュラインは、一対のタグとデータラインをもつ。このタグは、例えば64ビット長で、キャッシュ対象アドレスのタグ、リプレースルール制御ビット、パリティ・ECCビット、ラインロックビットなどの制御ビット、そして、どのチップのメモリをキャッシングしているか示すビット、などをもつ。
またデータラインは、例えば288ビット長で、256ビット幅のキャッシングデータと、32ビットのパリティ・ECCビットを持つ。たとえば、上記ビット長のキャッシュラインを128ラインもつと、合計32キロバイトのキャッシュを構成する。
Bus Fabric:自チップメモリ間に内蔵するキャッシュ(本実施例においてはL3キャッシュ)は、もし自チップのメモリが複数に分割されている場合は、それぞれに対してキャッシュも分かれている。各L3キャッシュは、自キャッシュ直下のメモリに対するデータだけをキャッシングしており、同一メモリ領域が同時に他のL3キャッシュに保持されることはない。
図7は、本実施の形態の複数のGPUによる、仮想的な一つのGPUの構成方法の例を示す説明図である。
ここで、GPU間接続ポート(Y)を介しては、次の転送が行われる:
・GPU間接続ポート(Y)を用いるGE間転送:テッセレーション前後などシェーダの座標データ、オブジェクトにおけるプリミティブ間接続情報、GE各演算器の動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
・GPU間接続ポート(Y)を用いるCP間転送:処理ディスパッチ指示内容、優先順位指示、SEなど各ブロックの動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
・GPU間接続ポート(Y)を用いるGE間転送:テッセレーション前後などシェーダの座標データ、オブジェクトにおけるプリミティブ間接続情報、GE各演算器の動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
・GPU間接続ポート(Y)を用いるCP間転送:処理ディスパッチ指示内容、優先順位指示、SEなど各ブロックの動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
CP,GE分散処理:複数のGPUチップを用いて、仮想的にひとつのGPUを構築する場合、各GPUチップが備えるCP,GEブロックは以下いずれかの方法(1)乃至(3)で動作する。
いずれの場合も、CP,GEの複数チップにおける分散処理において、チップ間転送が最少・最短となる構成・経路を選択する(CP,GEのactive/main選択箇所、GPU間接続ポート(Y)選択箇所について)。
方法(1)では、特定チップのCP,GEが直接的に全体統括(main)をおこない、処理の一貫性を維持する(図7(a),(b))。このとき、特定チップのCPがもつコントローラが主体的に制御管理に利用される。また特定チップのGEがもつ演算器が主体的に利用される。他チップのCP,GEは自チップSEとのI/F処理のみ行う。
方法(2)では、特定チップのCP,GEが間接的に全体統括となり、分散処理を行い、処理の一貫性を維持する(図7(c))。このとき、特定チップのCPがもつコントローラが、各チップCPのコントローラを配下におき、階層制御を行う。また、各チップのGEを組み合わせて、あたかもひとつのGEとして機能し、並列に演算処理を行う。稼働GPU範囲に基づき、 CP,GE必要処理能力に応じてサブ(sub)として稼働させるブロック数を選択する。
なお、いずれの方法でも、同一チップ内のCPとGEとが全体統括となるとは限らない。
図8,図9は、それぞれ、方法(1)、(2)の具体的信号の流れを示す説明図である。
また図10(a),(b)は、方法(3)の動作例を示す。方法(3)では、1つのGPUチップ内のCP,GEが4分割されており、方法(1)(2)と同様の方法で分散処理に対応する。これを用いて、1つのGPUにおいて、空間分割で複数アプリケーションを実行することもできる。なお、この方法でも、同一チップ内のCPとGEとが全体統括となるとは限らない。
図11から図16は、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する方法のいくつかの態様を示すものである。以下の例において、チップAは、主にGraphics/Compute frontendや統括処理制御系を内蔵する。並列化が困難なGPU全体にまたがる処理系をもつ。チップAとI/O hubダイを統合する選択肢もある。機能を多重化し、チップAを廃したうえで、それぞれのチップBが、チップAの機能をもつ選択肢もある(実施例1b)。チップBの次に高速に動作するロジック回路を中心として構成し、必要に応じて各チップを接続するオンチップインターコネクトやペリフェラルI/FのハブとなるI/O Hubチップと統合することで、コストパフォーマンスに優れるロジック回路用シリコンプロセスを採用したときの恩恵が最大化する組み合わせとする。
また、チップBは、主にシェーダエンジン(Unified Shader, プログラマブルグラフィックス演算器)と、ラスタライザやレンダリングバックエンド(Z/Stencil/Blendなどのラスターオペレーション)、ローカルメモリ、L0/L1/L2キャッシュなどを内蔵する。高い演算並列性をもつ機能を中心に構成する。高速に動かす演算器、ハードワイヤードロジック、L0/L1高速キャッシュなどを中心として構成することで、最も微細化が進んだ高性能ロジック回路用シリコンプロセスを採用したときに、チップエリアや性能(動作周波数や消費電力)の恩恵が最大化する組み合わせとする。
チップCは、PHYや大容量キャッシュメモリ(オンチップSRAM、eDRAM、MRAM、FeRAMなど用いる)を中心として構成する。PHYなどのアナログ回路や大容量オンチップメモリ( SRAM、eDRAM、MRAM、ReRAM、FeRAMなど)を集積する場合に有利なシリコンプロセスを採用する。
具体的に図11は3種類のチップで1つのGPUを実現する例を示す。図11では各種類のGPUチップでありチップA111a,チップB111b,チップC111cが示されている。ここで各チップをまたぐオンチップインターコネクトは、送信側のチップ内の信号線上の信号をサンプリングして変調して送信し、受信側で復号し、受信側チップの対応する信号線上に出力するための構成(ラッパーと呼ぶ)を備えるものであってもよい。図11の例ではチップA111aを1つ、チップB111bを2つ、チップC111cを4つ組み合わせて1つのGPUを構成する例を示している。
また図12は2種類のチップ(チップB,C)で1つのGPUを構成する例を示す。図12では2種類のチップとしてチップB111b,チップC111cが示されている。この例でも、各チップをまたぐオンチップインターコネクトは、ラッパーを用いて、送信側のチップ内の信号線上の信号をサンプリングして変調して送信し、受信側で復号し、受信側チップの対応する信号線上に出力されるものであってもよい。図12の例ではチップB111bを2つ、チップC111cを4つ組み合わせて1つのGPUを構成する例を示している。
また例えば図13に示すように、多数のチップによるスケーラブルなGPUを構成する場合、システムが必要とする性能や機能に応じて柔軟な構成を採用し得る。図13ではポータブル機で用いる場合(図13(a))や、一つのGPUモジュールとして構成する場合(図13(b))、ホームコンソール等で利用する場合(図13(c))、より高性能なGPUモジュールとして構成する場合(図13(d))、並びにサーバ機などで用いる場合(図13(e))といった場合の構成例を示している。
なお、これら図11乃至図13の例において、各種類のGPUチップ(チップA,B,C)は、それぞれ、接続されうる対向チップ数に基づいて、オンチップインターコネクトを接続するためのラッパーを、必要な数だけ内蔵させておく。システム構成が、最大接続可能数よりも少ないチップ組み合わせ数の場合は、内蔵するラッパーの一部が未使用となっていてもよい。
ここで示したような複数種類のチップA,B,Cを用いる場合、図14に例示するように、2GPUシステム(図14(a))を、図14(b)(図13(e)に同じ)に例示する構成で実現できる。同様に、図14(c)に例示する4GPUシステムは、図14(d)に例示する構成で実現できる。図14(b)はサーバ機1ノードの構成等で利用でき、図14(d)は、サーバ機の大型(big)1ノードの構成等で利用できる。また図15(a)に例示するようなシステムは、図15(b)に例示する構成で実現できる。
図16は、多数のチップによるスケーラブルなGPUのパッケージ実装例を示す説明図である。図16(a)は、図13(c)に例示したGPU1601を1つのパッケージとして構成した例を示したものである。ここでGPU1601や、CPU1602は、RDL(Re-Distribution Layer)を用いて形成される。
また図16(b)は、図13(e)に示したGPUを、2つのパッケージのGPU(部分GPU)1610,1611で構成した例を示したものである。この例ではGPU1610,1611内に配置されたチップA,B,C間はシリコンインターポーザー(Si Interposer)を介して接続される。図16ではシリコンインターポーザー部分を、ハッチングを施した矩形で示している。またCPU1612は、いずれもRDL(Re-Distribution Layer)を用いて形成される。
図17から図21は、複数のアプリケーションを本実施の形態のGPUを用いて時分割的及び/または空間分割的に実行する例を表す説明図である。ここで時分割的(Time division“ (Temporal partitioning))方法(図17(a))では、仮に1GPUあたり40TFLOPSの性能がある場合、4つのアプリケーションが時分割的に動作すると、1つのアプリケーションあたり約10TFLOPSが利用できる。この図17(a)に例示する時分割的方法では、ハードウエア的な解決がされないと、コンテキストスイッチのオーバヘッドが大きいという問題点がある。例えばゲームアプリケーションを実行する際、多数の一時的に実行停止できない(non-preempt)処理であって、同期的に実行される処理である場合には、時分割的方法は適切でない。すなわち、頻繁に、小規模の(small granularityでの)コンテキストスイッチングが生じる場合には適さない。
一方、図17(b)に概念的に例示する空間的分割(“Hardware partitioning“ (Spatial partitioning))の方法でも同様に、仮に1GPUあたり40TFLOPSの性能がある場合、4つのアプリケーションが空間分割的に動作すると、1つのアプリケーションあたり約10TFLOPSが利用できる。この図17(b)の例では、完全な制御が可能であり、リアルタイム処理が可能となる。並列的に動作するブロックやユニットがGPU内に内蔵されている場合、これら並列的に動作する部分のそれぞれを利用して複数のアプリケーションを動作させることも可能である。
図18では4つのGPU1801,1802,1803,1804がそれぞれ一つのチップA、2つのチップB、及び4つのチップCで構成されている例を示している。図18(a)は空間分割的に、一つのCP,GEを用いて実行可能な第1のアプリケーションApp1が実行されるケースを示しており、この場合は図18(c)に例示するように、一つのGPU1801が備える4つのCP,4つのGEのうちそれぞれ一つずつがアクティブとなってアプリケーションの処理を実行する。この際、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
また図18(b)は、空間分割的に4つのアプリケーションApp1,App2,App3,App4を実行する例を示している。これらのアプリケーションは、それぞれ一つのCP,GEを用いれば処理可能なものであるとする。この例では、図18(d)に例示するように、一つのGPU1801が備える4つのCP,4つのGEがいずれもアクティブとなり、それぞれによって各アプリケーションの処理が実行される。このケースでも、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
なお、CP,GEの割り当てを切り替えるときには、コンテクスト・スイッチの処理も行うことで、処理経過の保持や処理の再開を可能とする。
図19(a)は、図18と同様の構成のGPUを用いて、空間分割的に5つのアプリケーションApp1,App2,App3,App4,App5を実行する例を示している。この例では各アプリケーションは、図18の例より多くのリソースを必要とする例としているが、GPUチップ間を跨いでのリソース利用がない例を示している。従って、図19(c)に示すように、各GPUチップ1801,1802,1803,1804内でそれぞれのアプリケーションの処理が行われることとなっており、それぞれの内部でCP,GEの一部がアクティブとなる。またこの例でもGPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
一方、図19(b)の例では、空間分割的に2つのアプリケーションApp1,App2を実行する例を示しているが、ここでアプリケーションApp1は、少なくともチップBを3つ、チップCを6つ分利用する処理を行っており、アプリケーションApp2は、チップCを9つ分利用する(対応するチップBは5つ分利用する)処理を行っているものとする。従って、アプリケーションApp1の実行は、GPU1801,1802を用いており、アプリケーションApp2の実行には、GPU1802,1803,1804を用いている(図19(d))。この例では、2つ以上のGPUに跨がる処理が行われるため、各アプリケーションを実行するためのメインのCP,GEがアクティブとなる。図の例では、GPU1801内でアプリケーションApp1のためのCP,GEがアクティブとなって動作し、GPU1804内でアプリケーションApp2のためのCP,GEがアクティブとなっているとして示している。また、GPU1801とGPU1802との間、並びにGPU1802とGPU1803との間、GPU1802とGPU1804との間でGPU間の接続ポート(X)、(Y)がアクティブとなり、その他の間(例えばGPU1801とGPU1803との間など)ではGPU間の接続ポート(X)、(Y)はインアクティブの状態となる。
また一つのアプリケーションの実行がどのGPU1801乃至1804の各チップA,B,Cに、どのように割り当てられてもよい(図20(a),(c))。また一つのアプリケーションによってすべてのGPU1801乃至1804が利用されてもよい(図20(b),(d))。
例えばまとめることにより一つのGPU内で実行可能なアプリケーションが複数のGPU1801,1802に跨がって処理されてもよい(図21(a),(c))。なお、複数のGPUに跨がる処理が発生しない場合は、仮に16個のアプリケーションが並列的に動作する(各チップCが互いに異なるアプリケーションを実行している)場合でも、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態となる(図21(b),(d))。
1 情報処理システム、10 GPU、11 バスファブリック、12 コマンドプロセッサ、13 ジオメトリエンジン、14 制御ユニット、20 メモリ、21 シェーダエンジン、22 テクスチャユニット、23 レンダリングバックエンド、24 キャッシュ、25 描画処理ユニット、27 L3キャッシュ。
Claims (8)
- コマンドプロセッサ及びジオメトリエンジンを有し、メモリと、他のグラフィックプロセッサに接続されるグラフィックプロセッサであって、
自身に接続されたメモリとの間でデータを授受するバスファブリックと、
前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、
前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されているグラフィックプロセッサ。 - 請求項1に記載のグラフィックプロセッサであって、
前記第1のインターコネクトと、第2のインターコネクトとは、互いに非同期に、他のグラフィックプロセッサとの間でデータの授受を行うグラフィックプロセッサ。 - 請求項1または2に記載のグラフィックプロセッサであって、
さらに描画処理を行う描画処理ユニットを複数備え、
前記コマンドプロセッサ及びジオメトリエンジンは、所定の分散処理制御方法に基づいて、前記複数の描画処理ユニットに並列的に描画処理を実行させるグラフィックプロセッサ。 - 請求項1から3のいずれか一項に記載のグラフィックプロセッサであって、
複数のキャッシュであって、各キャッシュが、前記グラフィックプロセッサ自身に接続されたメモリまたは、いずれかの他のグラフィックプロセッサに接続されたメモリのうち、割り当てられたメモリから読み出したデータを保持するキャッシュを備え、
前記キャッシュの各々を特定する情報に関連付けて、当該キャッシュに割り当てられたメモリが接続されているグラフィックプロセッサを特定する情報を保持するグラフィックプロセッサ。 - 請求項1から4のいずれか一項に記載のグラフィックプロセッサであって、
複数のキャッシュであって、各キャッシュが、前記グラフィックプロセッサ自身に接続されたメモリまたは、いずれかの他のグラフィックプロセッサに接続されたメモリのうち、割り当てられたメモリから読み出したデータを保持するキャッシュを備え、
前記キャッシュの各々に、どのグラフィックプロセッサに接続されたメモリを割り当てるかを設定するグラフィックプロセッサ。 - コマンドプロセッサ及びジオメトリエンジンを有し、メモリに接続されるグラフィックプロセッサを複数有し、
前記グラフィックプロセッサの各々が、
自身に接続されたメモリとの間でデータを授受するバスファブリックと、
前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、
前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されている情報処理システム。 - 請求項6に記載の情報処理システムであって、
前記グラフィックプロセッサの各々について、他のグラフィックプロセッサとの間でデータを授受する前記第1、第2のインターコネクトを、他のグラフィックプロセッサごとに、使用するか不使用とするか設定し、使用すると設定した第1、第2のインターコネクトを介して接続される他のグラフィックプロセッサとの間でデータを授受する情報処理システム。 - 請求項6または7に記載の情報処理システムであって、
前記第1、第2のインターコネクトが、グラフィックプロセッサのチップ内インターコネクトの信号線を介して送受される信号をサンプリングし、当該サンプリングして得た情報を含むデータフレームを他のグラフィックプロセッサに対して送出し、他のグラフィックプロセッサから受信したデータフレームをデサンプリングして再生した信号を、グラフィックプロセッサ内で対応するチップ内インターコネクトの信号線上に出力するチップ間インターコネクトである情報処理システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020018370 | 2020-02-05 | ||
JP2020018370 | 2020-02-05 | ||
PCT/JP2021/001092 WO2021157315A1 (ja) | 2020-02-05 | 2021-01-14 | グラフィックプロセッサ及び情報処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021157315A1 JPWO2021157315A1 (ja) | 2021-08-12 |
JP7339368B2 true JP7339368B2 (ja) | 2023-09-05 |
Family
ID=77199261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021575687A Active JP7339368B2 (ja) | 2020-02-05 | 2021-01-14 | グラフィックプロセッサ及び情報処理システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US12014443B2 (ja) |
EP (1) | EP4102465A4 (ja) |
JP (1) | JP7339368B2 (ja) |
WO (1) | WO2021157315A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115952126B (zh) * | 2023-03-14 | 2023-05-12 | 沐曦集成电路(上海)有限公司 | 一种gpu处理器系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014500549A (ja) | 2010-11-18 | 2014-01-09 | 日本テキサス・インスツルメンツ株式会社 | 処理クラスタのためのロード/ストア回路要素 |
JP2019521453A (ja) | 2016-07-21 | 2019-07-25 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 仮想メモリ内のスパースデータセットへのページフォールト無しの物理ページの割り当て |
US20200027015A1 (en) | 2017-04-07 | 2020-01-23 | Intel Corporation | Systems and methods for providing deeply stacked automated program synthesis |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10171766A (ja) | 1996-12-09 | 1998-06-26 | Nec Corp | グラフィックアクセラレータ |
US10580200B2 (en) * | 2017-04-07 | 2020-03-03 | Intel Corporation | Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp |
US10262388B2 (en) * | 2017-04-10 | 2019-04-16 | Intel Corporation | Frequent data value compression for graphics processing units |
JP2019189027A (ja) | 2018-04-25 | 2019-10-31 | トヨタ自動車株式会社 | 車両下部構造 |
JP7157330B2 (ja) * | 2018-11-27 | 2022-10-20 | 富士通株式会社 | 監視装置、監視方法および監視プログラム |
-
2021
- 2021-01-14 EP EP21750518.9A patent/EP4102465A4/en active Pending
- 2021-01-14 WO PCT/JP2021/001092 patent/WO2021157315A1/ja unknown
- 2021-01-14 US US17/796,346 patent/US12014443B2/en active Active
- 2021-01-14 JP JP2021575687A patent/JP7339368B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014500549A (ja) | 2010-11-18 | 2014-01-09 | 日本テキサス・インスツルメンツ株式会社 | 処理クラスタのためのロード/ストア回路要素 |
JP2019521453A (ja) | 2016-07-21 | 2019-07-25 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 仮想メモリ内のスパースデータセットへのページフォールト無しの物理ページの割り当て |
US20200027015A1 (en) | 2017-04-07 | 2020-01-23 | Intel Corporation | Systems and methods for providing deeply stacked automated program synthesis |
Also Published As
Publication number | Publication date |
---|---|
US20230066833A1 (en) | 2023-03-02 |
WO2021157315A1 (ja) | 2021-08-12 |
EP4102465A4 (en) | 2024-03-06 |
EP4102465A1 (en) | 2022-12-14 |
US12014443B2 (en) | 2024-06-18 |
JPWO2021157315A1 (ja) | 2021-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360914B2 (en) | Apparatus and method for memory management in a graphics processing environment | |
JP7000643B2 (ja) | 異種3次元回路スタック、システム、方法および装置 | |
US10664942B2 (en) | Reconfigurable virtual graphics and compute processor pipeline | |
JP4493626B2 (ja) | マルチプロセッサシステム、ライブラリモジュール、および描画処理方法 | |
CN105630441B (zh) | 一种基于统一染色技术的gpu系统 | |
US9214007B2 (en) | Graphics processor having unified cache system | |
US20220165014A1 (en) | Last-level projection method and apparatus for virtual and augmented reality | |
TWI620128B (zh) | 在中央處理單元與圖形處理單元間分享資源之裝置與系統 | |
US11403805B2 (en) | Position-based rendering apparatus and method for multi-die/GPU graphics processing | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
JP4059675B2 (ja) | 集積回路コンポーネントのシステム | |
JP2008538620A (ja) | モノリシック構成のシリコン・チップ上に多数のグラフィックス・コアを用いるグラフィック処理及び表示システム | |
TW201432570A (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TW201432453A (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TW201423600A (zh) | 用於在多緒處理單元中改善性能之技術 | |
JP2007533029A (ja) | スケーラブルシェーダアーキテクチャ | |
JP2010134929A (ja) | 圧縮状態ビットキャッシュ及びバッキング記憶装置 | |
CN112231094A (zh) | 用于配给虚拟化的多片图形处理硬件的装置和方法 | |
CN108694687A (zh) | 用于保护虚拟化和图形环境中的内容的设备及方法 | |
US20210056056A1 (en) | Source synchronized signaling mechanism | |
US10409571B1 (en) | Apparatus and method for efficiently accessing memory when performing a horizontal data reduction | |
JP7339368B2 (ja) | グラフィックプロセッサ及び情報処理システム | |
US6943804B2 (en) | System and method for performing BLTs | |
CN115335851B (zh) | 多租户图形处理单元的动态透明重新配置 | |
US12051144B2 (en) | Fully utilized hardware in a multi-tenancy graphics processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220615 |
|
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: 20230808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230824 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7339368 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |