JP4493626B2 - マルチプロセッサシステム、ライブラリモジュール、および描画処理方法 - Google Patents

マルチプロセッサシステム、ライブラリモジュール、および描画処理方法 Download PDF

Info

Publication number
JP4493626B2
JP4493626B2 JP2006145727A JP2006145727A JP4493626B2 JP 4493626 B2 JP4493626 B2 JP 4493626B2 JP 2006145727 A JP2006145727 A JP 2006145727A JP 2006145727 A JP2006145727 A JP 2006145727A JP 4493626 B2 JP4493626 B2 JP 4493626B2
Authority
JP
Japan
Prior art keywords
memory
processing unit
graphics
interface
file
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.)
Expired - Fee Related
Application number
JP2006145727A
Other languages
English (en)
Other versions
JP2007316940A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2006145727A priority Critical patent/JP4493626B2/ja
Priority to US12/293,519 priority patent/US20090128574A1/en
Priority to EP07737015A priority patent/EP2023252A4/en
Priority to PCT/JP2007/000358 priority patent/WO2007138735A1/ja
Publication of JP2007316940A publication Critical patent/JP2007316940A/ja
Application granted granted Critical
Publication of JP4493626B2 publication Critical patent/JP4493626B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory 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)
  • Image Generation (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Description

この発明はグラフィックス処理技術に関し、特にマルチプロセッサにおけるグラフィックス処理技術およびグラフィックスライブラリに関する。
パーソナルコンピュータやゲーム専用機において、高品質な3次元コンピュータグラフィックスを用いたゲームやシミュレーションなどのアプリケーションを実行したり、実写とコンピュータグラフィックスを融合させた映像コンテンツの再生を行うなど、高画質のグラフィックスの利用が広がっている。
一般に、グラフィックス処理は、CPUとグラフィックスプロセッシングユニット(GPU)が連携することで実行される。CPUが汎用的な演算を行う汎用プロセッサであるのに対して、GPUは高度なグラフィックス演算を行うための専用プロセッサである。CPUはオブジェクトの3次元モデルにもとづいて投影変換などのジオメトリ演算を行い、GPUはCPUから頂点データなどを受け取ってレンダリングを実行する。GPUはラスタライザやピクセルシェーダなどの専用ハードウェアから構成され、パイプライン処理でグラフィックス処理を実行する。最近のGPUには、プログラムシェーダと呼ばれるように、シェーダ機能がプログラム可能なものもある。
CPUとGPUが連携してグラフィックス処理を行う場合、CPUとGPUの処理能力の違いや、CPUとGPUに搭載されたメモリ容量の違いなどを考慮してグラフィックス処理をCPUとGPUの間で最適に分担することが必要となる。特にCPU側には十分なメモリ容量を搭載できるが、GPU側のメモリ容量は制限されることが多いため、GPUのメモリを有効に活用する必要がある。また、CPUとGPUを接続する入出力インタフェースの帯域に制限があると、その帯域がボトルネックとなって全体のグラフィックス処理の効率が低下することがある。
本発明はこうした課題に鑑みてなされたものであり、その目的は、CPUとGPUを含むマルチプロセッサシステムにおいて、グラフィックス処理の効率化を図ることにある。
上記課題を解決するために、本発明のある態様のマルチプロセッサシステムは、ローカルメモリを搭載したグラフィックスプロセッシングユニットと、メインメモリを搭載した汎用プロセッシングユニットと、前記グラフィックスプロセッシングユニットのI/Oポートと前記汎用プロセッシングユニットのI/Oポートを接続し、前記グラフィックスプロセッシングユニットと前記汎用プロセッシングユニットが互いにデータをやりとりするためのI/Oインタフェースとを含む。前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記メインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域がメモリマップされており、前記メインメモリの前記仮想メモリ領域には、前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルが保持され、前記グラフィックスプロセッシングユニットは、前記I/Oアドレス空間にメモリマップされた前記仮想メモリに前記I/Oインタフェースを介してアクセスして前記ファイルを読み取り、前記グラフィックス演算に利用する。
前記メインメモリの前記仮想メモリ領域に保持される「前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータ」の一例は、テクスチャマッピングに利用されるテクスチャ、頂点データなどのジオメトリデータ、シェーダプログラムのコード列などがある。
前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納した複数のファイルの内、一部のファイルは前記メインメモリの前記仮想メモリ領域に保持され、残りのファイルは前記ローカルメモリに保持され、前記グラフィックスプロセッシングユニットは、前記I/Oアドレス空間にメモリマップされた前記仮想メモリに前記I/Oインタフェースを介してアクセスして前記一部のファイルを読み取るとともに、前記ローカルメモリにアクセスして前記残りのファイルを読み取り、読み取られた前記複数のファイルを前記グラフィックス演算に利用してもよい。
前記ファイルは、前記メインメモリの前記仮想メモリ領域と前記ローカルメモリの両方に重複して保持され、前記グラフィックスプロセッシングユニットは、前記I/Oインタフェースを介した前記仮想メモリのアクセスによる前記ファイルの読み取りと、前記ローカルメモリのアクセスによる前記ファイルの読み取りとを前記ローカルメモリのバスの輻輳状態に応じて切り替え、前記仮想メモリまたは前記ローカルメモリから読み取られた前記ファイルを前記グラフィックス演算に利用してもよい。
本発明の別の態様は、ライブラリモジュールである。このライブラリモジュールは、I/Oインタフェースを介してグラフィックスプロセッシングユニットと接続可能な汎用プロセッシングユニットにおいて実行されるプログラムから呼び出されるプログラム部品をファイルにまとめたライブラリモジュールであって、前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記汎用プロセッシングユニットに搭載されたメインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域をメモリマップするメモリ管理機能と、前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルを前記メインメモリ内の前記仮想メモリ領域に配置するデータ配置機能とを前記汎用プロセッシングユニットに実現させる。
前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納した複数のファイルの内、前記メインメモリの前記仮想メモリ領域に配置すべき一部のファイルの指定を受け付ける指定機能と、前記メインメモリと前記グラフィックスプロセッシングユニットに搭載されたローカルメモリの間でデータ転送するデータ転送機能とをさらに前記汎用プロセッシングユニットに実現させ、前記データ配置機能は、前記複数のファイルの内、指定された前記一部のファイルを前記メインメモリの前記仮想メモリ領域に配置し、残りのファイルを前記データ転送機能により前記ローカルメモリに転送してもよい。
本発明のさらに別の態様は、描画処理方法である。この方法は、汎用プロセッシングユニットとグラフィックスプロセッシングユニットとがI/Oインタフェースを介して互いに接続されたマルチプロセッサシステムにおける描画処理方法であって、前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記汎用プロセッシングユニットに搭載されたメインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域をメモリマップするステップと、前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルを前記メインメモリ内の前記仮想メモリ領域に保持するステップと、前記グラフィックスプロセッシングユニットが、前記I/Oインタフェースを介して前記I/Oアドレス空間にメモリマップされた前記仮想メモリにアクセスして前記ファイルを読み取り、前記グラフィックス演算に利用するステップとを含む。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、プロセッサ、装置、システム、コンピュータプログラム、プログラム製品、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、グラフィックス処理の効率を向上させることができる。
図1は、実施の形態に係るマルチプロセッサシステムの構成図である。このマルチプロセッサシステムは、CPU(Central Processing Unit)100と、GPU(Graphic Processing Unit)200と、メインメモリ120と、ローカルメモリ220とを含む。
CPU100は、単一のメインプロセッサであってもよく、複数のプロセッサを含むマルチプロセッサシステムであってもよく、あるいは、複数のプロセッサコアを1個のパッケージに集積したマルチコアプロセッサであってもよい。GPU200は、グラフィックプロセッサコアを搭載したグラフィックチップである。
CPU100の入出力ポートとGPU200の入出力ポートは、入出力インタフェース(以下、「IOIF」と呼ぶ)110で接続されており、CPU100とGPU200は互いにIOIF110を介してデータをやりとりすることができる。IOIF110は、非常に高速なインタフェースであり、その帯域幅は、CPU100とメインメモリ120の間を結ぶバス122や、GPU200とローカルメモリ220の間を結ぶバス222の帯域幅にほぼ等しい。
グラフィックスライブラリ300は、描画処理を行うために生成されるグラフィックスコマンドを生成および管理するためのライブラリであり、アプリケーション310からこのライブラリを呼び出してグラフィックス処理を実行することができる。また、グラフィックスライブラリ300は、メモリ管理やデータ転送制御の機能を提供し、それらの機能を利用して、アプリケーション310から、メモリマッピングや、ジオメトリ情報、テクスチャ、シェーダプログラムなどのデータのメモリ間転送などを実行することができる。
CPU100は、アプリケーション310がグラフィックスライブラリ300を用いて生成したグラフィックスコマンドを、メインメモリ120内に設けられたコマンドバッファ10にキューイングする。GPU200は、コマンドバッファ10に蓄積されたグラフィックスコマンドを順次読み出して処理する。コマンドバッファ10に対するグラフィックスコマンドの読み書きには同期機能が提供されており、アプリケーション310は、CPU100からGPU200への処理の流れをきめ細かく制御することができる。
CPU100は、オブジェクトの3次元モデルにもとづいて、ポリゴンの頂点座標値、頂点カラー、法線ベクトル、UV値などのジオメトリデータ12を生成し、メインメモリ120に格納する。また、CPU100は、ポリゴン表面にマッピングするためのテクスチャ14をメインメモリ120に格納する。さらに、CPU100は、ハードディスクなどの記録媒体からシェーダプログラム16を読み込み、メインメモリ120に格納する。
メインメモリ120のメモリ領域はI/Oアドレス空間にメモリマッピングされており、GPU200は、I/Oアドレス空間にメモリマップされたメインメモリ120のメモリ領域をIOIF110経由で読み取ることができる。このように、GPU200は、ローカルメモリ220の他にメインメモリ120へアクセスすることができるため、ジオメトリデータ、テクスチャなどグラフィックス演算に必要なデータをローカルメモリ220にもメインメモリ120にも配置することができる。グラフィックス演算に必要なデータの参照頻度やサイズに応じて、システム全体でもっとも効率が良くなるようにローカルメモリ220またはメインメモリ120にデータが配置される。
ジオメトリデータ12、テクスチャ14およびシェーダプログラム16が格納されたメインメモリ120内のメモリ領域は、IOIF110のコントローラに設けられたメモリ内のI/Oアドレス空間にメモリマッピングされる。GPU200は、IOIF110を介して、I/Oアドレス空間にメモリマッピングされたジオメトリデータ12、テクスチャ14およびシェーダプログラム16を読み出す。
GPU200は、シェーダプログラム16にしたがって、ジオメトリデータ12を用いてポリゴンのラスタライズデータを生成し、ピクセルデータをフレームバッファ20に書き込む。さらに、GPU200は、ポリゴン表面にテクスチャ14をマッピングし、テクスチャマッピング後のピクセルデータをフレームバッファ20に書き込む。
また、GPU200は、ローカルメモリ220内にジオメトリデータ22、テクスチャ24およびシェーダプログラム26が格納されている場合、ローカルメモリ220からこれらのデータを読み出し、グラフィックス演算に利用する。これらのデータは、メインメモリ120からローカルメモリ220にあらかじめDMA転送してもよく、GPU200がIOIF110経由でメインメモリ120から読み出し、ローカルメモリ220に格納してもよい。
図2は、メインメモリ120の実効アドレス空間140とIOIF110のI/Oアドレス空間150の関係を説明する図である。
アプリケーション310は、グラフィックスライブラリ300のメモリ初期化関数を用いて、GPU200にアクセスを許可するメインメモリ120内のメモリ領域を確保する。グラフィックスライブラリ300は、確保されたメモリ領域の実効アドレスとサイズにもとづいて、そのメモリ領域をI/Oアドレス空間にメモリマッピングする。これにより、メインメモリ120内のメモリ領域がI/Oアドレス空間150の一部としてGPU200からアクセス可能になる。
GPU200がメインメモリ120へアクセスする際に使用する参照先アドレスは、I/Oアドレス空間150の先頭アドレスをベースアドレスとするオフセットであり、実効アドレス空間140の実効アドレスではない。グラフィックスライブラリ300は、I/Oアドレス空間150のベースアドレスを管理するとともに、実効アドレス空間140を参照する際の実効アドレスを、I/Oアドレス空間150を参照する際のオフセットに変換する関数を提供する。
グラフィックスライブラリ300は、実効アドレス空間140からI/Oアドレス空間150へのメモリマッピングを管理し、アプリケーションがメインメモリ120内で確保した連続領域がGPU200からも同じような連続領域に見えることを保証する。これにより、実効アドレス空間140において実効アドレスで参照されるデータをI/Oアドレス空間150においてベースアドレスに対するオフセットを指定することで読み出すことが可能となる。もっとも、実効アドレス空間140およびI/Oアドレス空間150はともに仮想的なメモリ空間であるから、物理メモリとしては連続している必要はない。
以下、図3A〜図3Cを参照して、テクスチャをメインメモリ120および/またはローカルメモリ220に配置した場合にテクスチャの転送効率がどのように変わるか説明する。ここでは、テクスチャの例で説明するが、テクスチャ以外のグラフィックス演算に必要なデータを配置する場合にも同様のことが当てはまる。
図3Aは、テクスチャをローカルメモリ220側に配置した構成を示す。メインメモリ120に格納されたテクスチャ14は、ローカルメモリ220にあらかじめDMA転送される。GPU200は、ローカルメモリ220にDMA転送されたテクスチャ24を読み出してグラフィックス演算に利用する。一方、GPU200は、ローカルメモリ220のフレームバッファ20に対してピクセルデータ25を読み書きする。
この構成では、GPU200とローカルメモリ220の間のバス222は、ピクセルデータ25の読み書きとテクスチャ24の読み取りの両方に用いられ、バスの帯域がリードとライトの双方向で消費されることになるから、テクスチャの転送速度が低下し、グラフィックス演算の全体の処理効率が落ちる。
図3Bは、テクスチャをメインメモリ120側に配置した構成を示す。メインメモリ120にテクスチャ14が格納されており、テクスチャ14が格納された領域は、GPU200からアクセス可能にI/Oアドレス空間にメモリマッピングされている。GPU200はIOIF110を介してメインメモリ120内のテクスチャ14を読み取り、テクスチャマッピングに利用する。一方、GPU200はローカルメモリ220のフレームバッファ20に対してピクセルデータ25を読み書きする。
この構成では、テクスチャ14の読み取りはIOIF110の帯域を使って行われ、ピクセルデータ25の読み書きはバス222の帯域を使って行われる。図3Aの構成と比べた場合、バス222の帯域はピクセルデータ25の読み書きに使われるだけであり、テクスチャの読み取りはバス222に負担をかけない。テクスチャ14はIOIF110の帯域を使って転送されるから、GPU200がローカルメモリ220のフレームバッファ20にピクセルデータ25を書き込んでいる間も、テクスチャ14の転送速度が低下することはない。
図3Cは、テクスチャをメインメモリ120とローカルメモリ220に分散配置した構成を示す。テクスチャのファイルが複数枚ある場合に、メインメモリ120に一部の枚数のテクスチャ14が格納され、ローカルメモリ220に残りの枚数のテクスチャ24が格納される。
IOIF110の帯域幅はバス222の帯域幅と同程度に大きいが、GPU200がIOIF110経由でメインメモリ120内のテクスチャ14を読み取る場合は、CPU100側の処理が介在するため、GPU200がバス222経由でローカルメモリ220から直接テクスチャ24を読み取る場合よりもレーテンシーが長くなる。一方、GPU200がローカルメモリ220からテクスチャ24を読み取る場合は、ピクセルデータ25の読み書きと競合するため、バス222の帯域幅が圧迫され、転送速度が低下することがある。そこで、テクスチャをメインメモリ120とローカルメモリ220に分散させて格納しておくことにより、テクスチャの読み取り速度を最適化することが可能となる。
図4は、メインメモリ120に配置されるテクスチャの枚数を変化させた場合におけるテクスチャの転送速度を示す図である。ここでは、8枚のテクスチャを用いて描画処理を行うサンプルプログラムを用いて実験し、メインメモリ120とローカルメモリ220に配置されるテクスチャの枚数を変えながら描画時間を計測する。サンプルプログラムでは、8枚のテクスチャの平均値を求めて各ポリゴンにテクスチャマッピングする。8枚のテクスチャの総データ量を測定された描画時間で割ることで全テクスチャの転送速度が求められる。
同図には、メインメモリ120に配置されるテクスチャの枚数を0〜8の間で変化させて描画処理を実行したときの全テクスチャの転送速度(単位はギガバイト/秒)が示されている。メインメモリ120に格納されない残りのテクスチャはあらかじめローカルメモリ220に転送される。メインメモリ120に格納するテクスチャの枚数を増やしていくにつれて転送速度が上昇し、5枚のテクスチャをメインメモリ120に配置した場合に転送速度が最大になる。これは、メインメモリ120に記憶されたテクスチャの読み込みはIOIF110の帯域幅を利用して行われ、ローカルメモリ220のバス222の輻輳を避けることができるからである。しかし、6枚以上のテクスチャをメインメモリ120に配置すると、転送速度が逆に低下していく。これは、IOIF110の帯域がボトルネックとなり、また、ローカルメモリ220からデータを読み出すときのレーテンシーによって描画時間が長くなるためである。なお、この結果は、負荷の状況によって変化する。
この実験結果にもとづいて、5枚のテクスチャをメインメモリ120に配置し、3枚のテクスチャをローカルメモリ220に配置することで、最適な転送速度を実現することができる。プログラマは、このようなサンプルプログラムを用いて実験することで、メインメモリ120とローカルメモリ220に格納するテクスチャの最適な配分をあらかじめ決定する。グラフィックスライブラリ300は、メインメモリ120からローカルメモリ220へデータを転送するための関数を提供しており、プログラマは、その関数を用いて、テクスチャの配置をプログラムする。
また、別のサンプルプログラムの例として、ビデオテクスチャの処理プログラムを用いることもできる。ビデオテクスチャとは、動画のフレームをテクスチャとして画面の一部に貼り付けたものである。このビデオテクスチャのサンプルプログラムでは、CPU100が実行するビデオコーデック(codec)で生成された動画のフレームをテクスチャとして用いるため、テクスチャをあらかじめローカルメモリ220に格納しておくことはできない。ビデオコーデックによりメインメモリ120に生成される動画フレームをGPU200が直接読み出すか、メインメモリ120に生成された動画フレームをいったんローカルメモリ220にフレーム毎に転送するしかない。
ビデオテクスチャのサンプルプログラムでは、メインメモリ120に生成された動画フレームをGPU200がIOIF110経由で読み込み、テクスチャマッピングに利用する場合の描画時間を計測することができる。また、動画フレームをフレーム毎にメインメモリ120からローカルメモリ220へIOIF110を介して転送した上で、GPU200がローカルメモリ220からバス222経由で動画のフレームを読み込み、テクスチャマッピングに利用する場合の描画時間を計測することができる。
動画フレームをテクスチャとしてメインメモリ120に格納し、メインメモリ120から直接テクスチャマッピングする場合、GPU200によるローカルメモリ220に対するアクセスはピクセルデータの書き込みだけになるため、ローカルメモリ220に対して発生するアクセス負荷が減る。これに対して、ローカルメモリ220に動画フレームを転送してローカルメモリ220から動画フレームを読み出してテクスチャマッピングする場合、ローカルメモリ220からのテクスチャの読み込みとローカルメモリ220へのピクセルデータの書き込みの両方向のアクセスが発生するため、バス222の輻輳により、テクスチャの転送速度が低下する。
プログラマは、実際のアプリケーションに近いサンプルプログラムを用いてシミュレーションを行い、テクスチャがメインメモリ120および/またはローカルメモリ220に最適に配置されるようにアプリケーションをプログラミングする。
複数のテクスチャをテクスチャマッピングに利用する場合、テクスチャによって参照される頻度が異なることもある。GPU200からの参照頻度の高いテクスチャは、GPU200から高速にアクセス可能なローカルメモリ220に配置し、GPU200からの参照頻度の低いテクスチャはメインメモリ120に配置することで転送効率の調整を図ることができる。また、メインメモリ120の容量に比べてローカルメモリ220の容量が小さい場合、サイズの小さいテクスチャをローカルメモリ220に配置し、サイズの大きいテクスチャをメインメモリ120に配置してもよい。
あらかじめ用意されたテクスチャを利用する場合はテクスチャに対して書き込みが発生せず、テクスチャは読み取り専用となるから、メインメモリ120に配置してGPU200から読み出すことがグラフィックス処理全体の効率化につながる。しかしながら、CPU100やGPU200がテクスチャを生成する場合は、テクスチャを生成するCPU100やGPU200が直接読み書きするメモリにテクスチャを格納するのが効率的である。たとえば、パーリン(Perlin)ノイズで生成されるテクスチャのようなプロシージャルテクスチャ(procedual texture)では、CPU100が計算によりテクスチャを生成するため、CPU100が直接読み書き可能なメインメモリ120にテクスチャを格納するのが効率的である。
一方、描画テクスチャ(rendered texture)と呼ばれるように、GPU200がフレームバッファ20に描画したフレームをテクスチャとして用いる場合は、GPU200が直接読み書きできるローカルメモリ220にテクスチャを格納するのが効率的である。
このように、テクスチャに対して読み書きが発生する場合は、その読み書きの主体がCPU100である場合は、メインメモリ120にテクスチャを格納し、読み書きの主体がGPU200である場合は、ローカルメモリ220にテクスチャを格納するのが処理効率の面で有利である。
同様に、頂点データについても、CPU100が頂点データを生成する場合は、頂点データをメインメモリ120に配置するのが効率的であり、GPU200が頂点データを生成する場合は、頂点データをローカルメモリ220に配置するのが効率的である。ディスプレイスメントマッピング(displacement mapping)のようにテクスチャマッピングの手法で頂点位置を変位させる場合は、GPU200が頂点データを読み書きするため、頂点データをローカルメモリ220側に配置する方が効率的である。
このように、GPU200がメインメモリ120にもローカルメモリ220にもアクセスできる構成であることを利用して、テクスチャなどのグラフィックス演算に必要なデータをメインメモリ120および/またはローカルメモリ220に最適に分散配置して、テクスチャの転送速度を高め、グラフィックス処理の効率を上げることができる。
特に、GPU200が大きなサイズのポリゴンを描画するときなど、ローカルメモリ220に対してピクセルデータを大量に書き込む場合は、ローカルメモリ220に対する書き込みによりバス222が占有される。このような場合、メインメモリ120にテクスチャを配置して、IOIF110を経由してメインメモリ120からテクスチャを読み取ってテクスチャマッピングするのが効率的である。
上記の説明では、テクスチャをメインメモリ120、ローカルメモリ220のいずれかに配置したが、ローカルメモリ220に十分な容量がある場合、メインメモリ120とローカルメモリ220の両方にテクスチャを重複させて配置し、同一テクスチャをメインメモリ120とローカルメモリ220のどちらからでも読み取れるように構成してもよい。この構成によれば、ローカルメモリ220に対する書き込みアクセスが多発する状況では、メインメモリ120からテクスチャを読み取り、ローカルメモリ220に対する書き込みアクセスが少ない状況では、ローカルメモリ220からテクスチャを読み取るなど、ローカルメモリ220のバス222の輻輳状態に応じて、メインメモリ120とローカルメモリ220の間でテクスチャの読み取り先を切り替えることが可能である。シミュレーションなどによってテクスチャの最適な配置を決めることなく、アプリケーションの実行過程において、テクスチャの読み取り先をメインメモリ120とローカルメモリ220の間で動的に切り替えて転送効率を最適化することができるという利点がある。
図5は、グラフィックスライブラリ300が提供する機能を説明する図である。グラフィックスライブラリ300は、メモリ管理機能162、データ配置機能164、データ転送機能166などを提供するプログラム部品を1つのファイルにまとめたものである。これらのプログラム部品の機能をアプリケーション310から利用するためのアプリケーションプログラムインタフェース(API)がプログラマに提供されている。
メモリ管理機能162は、実効アドレス空間140におけるメモリ領域の実効アドレスとサイズの指定を受けて、そのメモリ領域をI/Oアドレス空間150にメモリマッピングする。データ配置機能164は、グラフィックス演算に必要なデータの内、メインメモリ120に格納すべきものを実効アドレス空間140のメモリ領域に格納する。データ転送機能166は、グラフィックス演算に必要なデータの内、メインメモリ120に配置せずに、ローカルメモリ220に配置すべきものをメインメモリ120から読み出し、ローカルメモリ220に転送する。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
実施の形態では、ポリゴン表面にテクスチャをマッピングするテクスチャマッピングを説明したが、ポリゴン表面にテクスチャ以外のデータをマッピングしてもよい。たとえば、法線ベクトルをマッピングするバンプマッピングの場合、法線ベクトルを格納した法線マップがテクスチャの代わりに用いられる。テクスチャ以外のマッピングデータについても実施の形態と同様に、メインメモリ120とローカルメモリ220に分散配置して、転送速度の効率化を図ることができることは言うまでもない。
IOIF110経由でメインメモリ120にアクセスするときのレーテンシーが長いため、CPU100のキャッシュメモリにメインメモリ120のデータをキャッシュすることでレーテンシーを短くすることができる。特にテクスチャの読み込みのために、CPU100にはテクスチャをキャッシュするためのテクスチャキャッシュが設けられてもよい。テクスチャキャッシュがCPU100に設けられていることから、より積極的にテクスチャをメインメモリ120に配置することで、IOIF110の帯域を活用した転送効率の改善を達成することができるようになる。
実施の形態に係るマルチプロセッサシステムの構成図である。 実効アドレス空間とI/Oアドレス空間の関係を説明する図である。 テクスチャをローカルメモリ側に配置した構成を示す図である。 テクスチャをメインメモリ側に配置した構成を示す図である。 テクスチャをメインメモリとローカルメモリに分散配置した構成を示す図である。 メインメモリに配置されるテクスチャの枚数を変化させた場合におけるテクスチャの転送速度を示す図である。 グラフィックスライブラリが提供する機能を説明する図である。
符号の説明
10 コマンドバッファ、 12、22 ジオメトリデータ、 14、24 テクスチャ、 16、26 シェーダプログラム、 20 フレームバッファ、 100 CPU、 110 IOIF、 120 メインメモリ、 122 バス、 140 実効アドレス空間、 150 I/Oアドレス空間、 162 メモリ管理機能、 164 データ配置機能、 166 データ転送機能、 200 GPU、 220 ローカルメモリ、 222 バス、 300 グラフィックスライブラリ、 310 アプリケーション。

Claims (11)

  1. ローカルメモリを搭載したグラフィックスプロセッシングユニットと、
    メインメモリを搭載した汎用プロセッシングユニットと、
    前記グラフィックスプロセッシングユニットのI/Oポートと前記汎用プロセッシングユニットのI/Oポートを接続し、前記グラフィックスプロセッシングユニットと前記汎用プロセッシングユニットが互いにデータをやりとりするためのI/Oインタフェースとを含み、
    前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記メインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域がメモリマップされており、
    前記メインメモリの前記仮想メモリ領域には、前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルが保持され、前記グラフィックスプロセッシングユニットは、前記I/Oアドレス空間にメモリマップされた前記仮想メモリに前記I/Oインタフェースを介してアクセスして前記ファイルを読み取り、前記グラフィックス演算に利用することを特徴とするマルチプロセッサシステム。
  2. 前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納した複数のファイルの内、一部のファイルは前記メインメモリの前記仮想メモリ領域に保持され、残りのファイルは前記ローカルメモリに保持され、前記グラフィックスプロセッシングユニットは、前記I/Oアドレス空間にメモリマップされた前記仮想メモリに前記I/Oインタフェースを介してアクセスして前記一部のファイルを読み取るとともに、前記ローカルメモリにアクセスして前記残りのファイルを読み取り、読み取られた前記複数のファイルを前記グラフィックス演算に利用することを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記グラフィックスプロセッシングユニットによるグラフィックス演算における参照頻度が所定の閾値以下の前記ファイルは前記メインメモリの前記仮想メモリ領域に保持され、残りの前記ファイルは前記ローカルメモリに保持されることを特徴とする請求項2に記載のマルチプロセッサシステム。
  4. 前記ローカルメモリの容量が前記メインメモリの容量よりも小さい場合、ファイルサイズが所定のサイズ以上の前記ファイルは前記メインメモリの前記仮想メモリ領域に保持され、残りの前記ファイルは前記ローカルメモリに保持されることを特徴とする請求項2に記載のマルチプロセッサシステム。
  5. 前記複数のファイルの内、前記メインメモリの前記仮想メモリ領域に保持されるファイルの枚数を変えた場合に、前記グラフィックスプロセッシングユニットが前記ローカルメモリに対して描画データを読み書きしながら描画処理を行う過程で前記複数のファイルを参照する際の転送速度が最大になるファイルの枚数が最適枚数として取得され、前記最適枚数の前記ファイルが前記メインメモリの前記仮想メモリ領域に保持され、残りの前記ファイルは前記ローカルメモリに保持されることを特徴とする請求項2に記載のマルチプロセッサシステム。
  6. 前記ファイルは、前記メインメモリの前記仮想メモリ領域と前記ローカルメモリの両方に重複して保持され、前記グラフィックスプロセッシングユニットは、前記I/Oインタフェースを介した前記仮想メモリのアクセスによる前記ファイルの読み取りと、前記ローカルメモリのアクセスによる前記ファイルの読み取りとを前記ローカルメモリのバスの輻輳状態に応じて切り替え、前記仮想メモリまたは前記ローカルメモリから読み取られた前記ファイルを前記グラフィックス演算に利用することを特徴とする請求項1に記載のマルチプロセッサシステム。
  7. 前記メインメモリの前記仮想メモリ領域には、前記グラフィックスプロセッシングユニットによるマッピング処理に必要となるマッピングデータを格納したファイルが保持され、前記グラフィックスプロセッシングユニットは、前記I/Oインタフェースを介して前記I/Oアドレス空間にメモリマップされた前記仮想メモリにアクセスして前記ファイルを読み取り、前記マッピング処理に利用することを特徴とする請求項1から6のいずれかに記載のマルチプロセッサシステム。
  8. I/Oインタフェースを介してグラフィックスプロセッシングユニットと接続可能な汎用プロセッシングユニットにおいて実行されるプログラムから呼び出されるプログラム部品をファイルにまとめたライブラリモジュールであって、
    前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記汎用プロセッシングユニットに搭載されたメインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域をメモリマップするメモリ管理機能と、
    前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルを前記メインメモリ内の前記仮想メモリ領域に配置するデータ配置機能と
    を前記汎用プロセッシングユニットに実現させることを特徴とするライブラリモジュール。
  9. 前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納した複数のファイルの内、前記メインメモリの前記仮想メモリ領域に配置すべき一部のファイルの指定を受け付けるインタフェース機能と、
    前記メインメモリと前記グラフィックスプロセッシングユニットに搭載されたローカルメモリの間でデータ転送するデータ転送機能と
    をさらに前記汎用プロセッシングユニットに実現させ、
    前記データ配置機能は、前記複数のファイルの内、指定された前記一部のファイルを前記メインメモリの前記仮想メモリ領域に配置し、残りのファイルを前記データ転送機能により前記ローカルメモリに転送することを特徴とする請求項8に記載のライブラリモジュール。
  10. 汎用プロセッシングユニットとグラフィックスプロセッシングユニットとがI/Oインタフェースを介して互いに接続されたマルチプロセッサシステムにおいて実行可能なプログラムであって、
    前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記汎用プロセッシングユニットに搭載されたメインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域をメモリマップするメモリ管理機能と、
    前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルを前記メインメモリ内の前記仮想メモリ領域に配置するデータ配置機能と
    を前記汎用プロセッシングユニットに実現させ、
    前記I/Oインタフェースを介して前記I/Oアドレス空間にメモリマップされた前記仮想メモリにアクセスして前記ファイルを読み取るデータ読み取り機能と、
    前記仮想メモリから読み出された前記ファイルを前記グラフィックス演算に利用するグラフィックス処理機能と
    を前記グラフィックスプロセッシングユニットに実現させることを特徴とするプログラム。
  11. 汎用プロセッシングユニットとグラフィックスプロセッシングユニットとがI/Oインタフェースを介して互いに接続されたマルチプロセッサシステムにおける描画処理方法であって、
    前記グラフィックスプロセッシングユニットが前記I/Oインタフェースを介して前記汎用プロセッシングユニットに搭載されたメインメモリ内の所定の仮想メモリ領域にアクセスするために、前記I/Oインタフェースを介してアクセス可能なI/Oアドレス空間に前記仮想メモリ領域をメモリマップするステップと、
    前記グラフィックスプロセッシングユニットによるグラフィックス演算において参照されるデータであって、前記グラフィックス演算において更新されないデータを格納したファイルを前記メインメモリ内の前記仮想メモリ領域に保持するステップと、
    前記グラフィックスプロセッシングユニットが、前記I/Oインタフェースを介して前記I/Oアドレス空間にメモリマップされた前記仮想メモリにアクセスして前記ファイルを読み取り、前記グラフィックス演算に利用するステップとを含むことを特徴とする描画処理方法。
JP2006145727A 2006-05-25 2006-05-25 マルチプロセッサシステム、ライブラリモジュール、および描画処理方法 Expired - Fee Related JP4493626B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006145727A JP4493626B2 (ja) 2006-05-25 2006-05-25 マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
US12/293,519 US20090128574A1 (en) 2006-05-25 2007-04-03 Multiprocessor System, Library Module And Rendering Processing Method
EP07737015A EP2023252A4 (en) 2006-05-25 2007-04-03 MULTIPROCESSOR SYSTEM, LIBRARY MODULE, AND GRAPHIC PROCESSING METHOD
PCT/JP2007/000358 WO2007138735A1 (ja) 2006-05-25 2007-04-03 マルチプロセッサシステム、ライブラリモジュール、および描画処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006145727A JP4493626B2 (ja) 2006-05-25 2006-05-25 マルチプロセッサシステム、ライブラリモジュール、および描画処理方法

Publications (2)

Publication Number Publication Date
JP2007316940A JP2007316940A (ja) 2007-12-06
JP4493626B2 true JP4493626B2 (ja) 2010-06-30

Family

ID=38778263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006145727A Expired - Fee Related JP4493626B2 (ja) 2006-05-25 2006-05-25 マルチプロセッサシステム、ライブラリモジュール、および描画処理方法

Country Status (4)

Country Link
US (1) US20090128574A1 (ja)
EP (1) EP2023252A4 (ja)
JP (1) JP4493626B2 (ja)
WO (1) WO2007138735A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8149242B2 (en) * 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8279213B2 (en) * 2009-12-23 2012-10-02 Intel Corporation Synchronized media processing
KR101885211B1 (ko) 2012-01-27 2018-08-29 삼성전자 주식회사 Gpu의 자원 할당을 위한 방법 및 장치
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9214005B2 (en) 2012-12-18 2015-12-15 Google Technology Holdings LLC Methods and systems for overriding graphics commands
US9137320B2 (en) 2012-12-18 2015-09-15 Google Technology Holdings LLC Methods and systems for overriding graphics commands
US8982137B2 (en) * 2012-12-18 2015-03-17 Google Technology Holdings LLC Methods and systems for overriding graphics commands
GB2556743B (en) * 2012-12-21 2018-12-05 Displaylink Uk Ltd Management of memory for storing display data
WO2014178450A1 (ko) * 2013-04-30 2014-11-06 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
US20150091912A1 (en) * 2013-09-27 2015-04-02 Nvidia Corporation Independent memory heaps for scalable link interface technology
CN106951190B (zh) * 2017-03-21 2019-11-26 联想(北京)有限公司 数据存储及访问方法、节点和服务器集群
CN110347463B (zh) * 2019-06-25 2022-04-08 荣耀终端有限公司 图像处理方法、相关设备及计算机存储介质
KR102484914B1 (ko) * 2021-11-23 2023-01-06 (주)글루시스 가상화 환경에서 데이터를 저장하는 방법
US20240220122A1 (en) * 2022-12-28 2024-07-04 Advanced Micro Devices, Inc. Partial Address Memory Requests

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS619738A (ja) * 1984-06-26 1986-01-17 Fuji Electric Co Ltd アドレスマツピング方式
US5155822A (en) * 1987-08-13 1992-10-13 Digital Equipment Corporation High performance graphics workstation
JPH0573518A (ja) * 1991-09-18 1993-03-26 Nec Corp メモリマツプドcpuシステム
JPH07282023A (ja) * 1994-04-06 1995-10-27 Hitachi Ltd データ転送量可変プロセッサ及びそれを用いたシステム
EP0945788B1 (en) * 1998-02-04 2004-08-04 Texas Instruments Inc. Data processing system with digital signal processor core and co-processor and data processing method
US6750870B2 (en) * 2000-12-06 2004-06-15 Hewlett-Packard Development Company, L.P. Multi-mode graphics address remapping table for an accelerated graphics port device
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers

Also Published As

Publication number Publication date
EP2023252A1 (en) 2009-02-11
WO2007138735A1 (ja) 2007-12-06
JP2007316940A (ja) 2007-12-06
EP2023252A4 (en) 2010-09-29
US20090128574A1 (en) 2009-05-21

Similar Documents

Publication Publication Date Title
JP4493626B2 (ja) マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
US7333114B2 (en) System and method for parallel execution of data generation tasks
US7355601B2 (en) System and method for transfer of data between processors using a locked set, head and tail pointers
EP1921584B1 (en) Graphics processing apparatus, graphics library module, and graphics processing method
JP4550878B2 (ja) グラフィックス処理装置
TWI520071B (zh) 在中央處理單元與圖形處理單元間分享資源之技術
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US9734548B2 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
US8760460B1 (en) Hardware-managed virtual buffers using a shared memory for load distribution
US7533237B1 (en) Off-chip memory allocation for a unified shader
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US8810592B2 (en) Vertex attribute buffer for inline immediate attributes and constants
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
EP2495665A2 (en) Command transfer controlling apparatus and command transfer controlling method
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
US20240193844A1 (en) Configurable multiple-die graphics processing unit
US20210158599A1 (en) Data flow in a distributed graphics processing unit architecture
WO2021157315A1 (ja) グラフィックプロセッサ及び情報処理システム
US12051144B2 (en) Fully utilized hardware in a multi-tenancy graphics processing unit
US8749562B1 (en) Sharing binding groups between shaders
JP5670723B2 (ja) 画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070822

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100406

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130416

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees