Graphics Processing Unit

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
NVIDIA製のGPU - GeForce 6600 GT

Graphics Processing Unit(グラフィックス プロセッシング ユニット、略してGPU)とは、パーソナルコンピュータワークステーション等の画像処理を担当する主要な部品のひとつ。Visual Processing Unit(ビジュアル プロセッシング ユニット、VPU)という名称もある。

コンピュータシステムにおいて画像表示を担当するASICであるグラフィックコントローラから発展したもので、GPUはジオメトリエンジンなどの専用ハードウェアによって画像データ処理を行う集積回路をさす。現在の高機能GPUは高速のVRAMと接続され、グラフィックスシェーディングに特化した演算器を複数搭載するマイクロプロセッサとなっている。

歴史[編集]

1970年代〜1980年代[編集]

コンシューマPC向けGPUの起源は1970年代から1980年代のグラフィックコントローラにさかのぼる。当時のグラフィックコントローラは、矩形や多角形の領域を単純に塗り潰したり、BitBLT(Bit Block Transfer、ビット単位でのブロック転送)などにより、2次元画像に対して簡単な描画処理を行うだけであり、その機能と能力は限定的だった。

グラフィックコントローラの中には、いくつかの命令をディスプレイリストとしてまとめて実行したり、DMA転送を用いることでメインCPUの負荷を減らしたりするものもあった。このような専用のグラフィックコントローラを用いずに、DMAコントローラで処理したり、汎用CPUをグラフィック処理専用に割り当てたグラフィックサブシステムを充てるコンピュータも存在した。汎用的なグラフィックス・コプロセッサは古くから開発されてきたが、当時の技術的な制約から安価な製品では機能や性能に乏しく、また高機能なものは回路の規模が増大し非常に高価なものとならざるを得ず、結果的にパーソナルコンピュータへ広く採用されることはなかった。

1980年代から1990年代前半にかけてはBit Block Transferをサポートするチップと、描画を高速化するチップは別々のチップとして実装されていたが、チップ処理技術が進化するとともに安価になり、VGAカードをはじめとするグラフィックカード上に実装され、普及していった。1987年のVGA発表とともにリリースされたIBMの8514グラフィックスシステムは、2Dの基本的な描画機能をサポートした最初のPC用グラフィック・アクセラレータとなった。AmigaはビデオハードウエアにBlitterを搭載した最初のコンシューマ向けコンピュータであった。

1980年代後半から1990年代前半の日本国内で広く普及していたPCとしてPC-9800シリーズがあるが、同シリーズのグラフィック・コントローラとしてGDC、GRCGEGCが搭載された。これらは、グラフィックVRAMに直線・円弧・四角塗りつぶしなどの図形描画を行ったり、複数プレーンへの同時描画を行う機能を持っていた。

1990年代[編集]

1990年代に入ると、シリコングラフィックスが自社のグラフィックスワークステーション用のグラフィックライブラリとして開発・実装したIRIS GLOpenGLに発展して標準化され、標準化されたグラフィックライブラリとそのAPIに対応したハードウェアアクセラレータ、という図式が登場する。

実装当初のIRIS GLはソフトウェアによるものであったが、SGIでは当初よりこのAPIをハードウェアによって高速処理させる(ハードウェアアクセラレーションを行う)ことを念頭に設計しており、程なくIRIS GLアクセラレータを搭載したワークステーションが登場する。ただし、当初のIRIS GLアクセラレータはまだ単体の半導体プロセッサではなく、グラフィックサブシステムは巨大な基板であった。

1990年代の初めごろ、Microsoft Windowsの普及とともに、グラフィック・アクセラレータへのニーズが高まり、WindowsのグラフィックスAPIであるGDIに対応したグラフィック・アクセラレータが開発された。

1991年S3 Graphicsが開発した"S3 86C911"は、最初のワンチップ2Dグラフィック・アクセラレータであった。"86C911"という名は設計者がその速さを標榜するためポルシェ911にちなんで名付けた。86C911を皮切りとして数々のグラフィック・アクセラレータが発売された。

1995年には3DlabsがOpenGLアクセラレータのワンチップ化に成功し、低価格化と高パフォーマンス化が加速度的に進行し始める。また同年に登場したインテルのPentium Proプロセッサの処理能力は同時代のRISCプロセッサの領域に差し掛かっており、このCPUとワンチップ化によって価格を下げたOpenGLアクセラレータのセットは、それまでメーカーに高収益をもたらしていたグラフィックスワークステーションというカテゴリーにローエンドから価格破壊を仕掛ける原動力となった。

1995年までには、あらゆる主要なPCグラフィックチップメーカーが2Dアクセラレータを開発し、とうとう汎用グラフィックス・コプロセッサは市場からなくなった。

1995年にマイクロソフトWindows95とともに開発したゲーム作成及びマルチメディア再生用のAPI群DirectXではさらにグラフィック・アクセラレータの性能が強化された。DirectXのコンポートネントのひとつDirect3Dは当初から3Dグラフィック処理のハードウエア化を想定したレンダリング・パイプラインを持っていた。

1997年当時のグラフィック・アクセラレータはレンダリングのみしかサポートしていなかったが、この頃からZバッファアルファブレンディング、フォグ、ステンシルバッファテクスチャマッピングテクスチャフィルタリングなどの機能を次々搭載し、3Dグラフィック表示機能を競うようになった。DVD-Video再生支援機能を備えるチップも現れた。

VDP等の汎用グラフィック・プロセッサについては、カーナビ等の表示用に使用され新たな市場を形成している。90年代後半からは、携帯電話に多色表示がもちいられるようになり、その分野においても有用な市場を形成している。

一方、システムの低価格化を目的に、チップセットのノースブリッジにグラフィックコアの統合を行った、統合チップセットが1997年ころから登場し始める。1999年の「Intel 810」チップセットの登場で、低価格機には統合チップセットの使用が定着し始めた。

2000年代[編集]

3次元グラフィックスのパイプライン処理

2000年代に入ると、座標変換とライティングがハードウエア化され、CPUの負荷は激減した (ハードウェアT&L)。この頃から、グラフィック・アクセラレータはGPUと呼ばれるのが一般的になった。

DirectX 8になると、GPUは固定的なパイプラインではなく、プログラマが自由に計算式を変更できるプログラマブルシェーダがサポートされた。

従来はポリゴン単位でしか計算をプログラムできなかったのに対し、ピクセル単位でプログラミングができるプログラマブル・ピクセル・シェーダの導入により、自由度は飛躍的に向上した。プログラマブル・シェーダーはバーテックス・シェーダ (Vertex Shader) とピクセル・シェーダ (Pixel Shader) の二種類が用意され、バーテックス・シェーダは座標変換とライティングを、ピクセル・シェーダはレンダリングをそれぞれ担当していた。

また、この世代になるとマルチテクスチャ、キューブマップ、アニソトロピック・フィルタ、ボリューム・テクスチャなどが新たにサポートされ、HDRIによるレンダリングや動的な環境マッピングの生成が可能になった。動画の再生や圧縮にシェーダを使う技術も搭載された。 (Intel Clear VideoPureVideoAVIVOChromotion)

GeForce 8800の内部構造
統合シェーダである「Streaming Processor」が128個搭載されている。これにより最大500GFLOPS超で処理する。

DirectX 9世代になると、このプログラム・シェーダがさらに進化し、シェーダのプログラムを書くための専用の高級言語、CgHLSLGLSLなどが開発され、シェーダを物理演算などゲームでの3Dグラフィック表示以外の演算に使うことも多くなった。Windows Vistaの描画機能「Windows Aero」 (Desktop Window Manager) は画面表示をプログラム・シェーダを利用して行うので[1]、この世代のビデオチップが必須になっている。(Windows Aero Glassを使用しなければDirectX 8世代以前のビデオチップでもWindows Vistaは稼働する)また、Mac OS XCore Imageではシェーダを利用して2Dグラフィックのフィルタ処理を行っている。

DirectX10世代ではさらに自由度が増し、「シェーダモデル4.0」 (SM 4.0) に基づくグラフィックスパイプラインが導入され、バーテックス・シェーダとピクセル・シェーダの間でジオメトリシェーダ (Geometry Shader)による処理が行われるようになった。

グラフィックス描画処理では3次元空間を構成する表現のために3角形を色付けするピクセル・シェーディング処理の負荷が、精細度や特殊処理などによって大きく変化するため、固定のパイプライン処理ではボトルネックになることが多かった。この制約を解消するために、演算ユニットを汎用化する統合型シェーダによって固定のパイプラインの一部をより柔軟な構成に変更した。バーテックス・シェーダとジオメトリ・シェーダ、そしてピクセル・シェーダの機能をあわせもつ統合シェーダ (Unified Shader) を多数搭載することによってプログラムの自由度と共にボトルネックを解消し、演算回路数の増加に比例した画像描画処理速度の向上を得た。[2]

GeForce 8シリーズではWindows / Mac OS X / Linux用の標準的なCコンパイラ (CUDA) が提供され、Radeon HD 2000シリーズではハードウェアに直接アクセスできる環境 (Close to Metal) が用意されている。これにより科学技術計算やシミュレーション、画像認識、音声認識など、GPUの演算能力を汎用的な用途へ広く利用できるようになった。また、特定メーカーに依存しないOpenCLという標準規格に続き、米マイクロソフト社からC++の拡張版言語として"C++ AMP"も登場した[3]

主にDirectXに最適化されたGeforceやRADEONなど3Dゲーム向け製品と異なり、業務用ワークステーションなど業務用途に特化して設計されたNVIDIA Quadro、AMDのATI FireProが存在する。これら業務用製品はOpenGLに最適化されておりCADHPC金融CG映像、建築/設計、DTP、研究開発分野において採用されている。

2010年代[編集]

主なCPUメーカーは、従来のCPU機能だけにとどまらず、1つのCPUチップ内に複数のCPUコア(マルチコア)を搭載すると同時に、画像出力専用回路としてGPUコアも統合した製品を提供するようになった。例えば、米AMDでは「AMD Fusion」構想において1つのダイ上に2つ以上のCPUとGPUを統合し[4][2]、米インテル社でもCore i5Core i7Core i3での"Sandy Bridge"世代から、同様の製品を提供している[5][6][7]。CPUチップにGPUが含まれることで、従来必要だったCPU側の外部メモリ空間内のグラフィックスデータをGPUの外部メモリ空間側へ転送する操作は基本的に不要になるが、CPUとGPUの外部メモリが共用されるため、CPUチップの外部メモリバスにはCPUのアクセス帯域に加えてGPUのアクセス帯域も加わる。このため、仮にCPUチップに極めて高い性能のGPUを統合しても、統合チップのメモリアクセス帯域も相応に増強されないと、それがボトルネックとなって性能向上は望めない。

ゲーム機[編集]

ゲーム業界においても、1990年代後半から3D描画能力の向上が求められ、ゲーム機ベンダーはGPUメーカと共同で専用のGPUを開発するようになった。PC用GPUより先行した新機能やeDRAMの搭載で差別化したものが多い。一般には、下位や中位のパーソナル・コンピュータ用GPUよりも画像処理性能においては高性能である。

組み込みシステム[編集]

近年携帯電話カーナビゲーションシステムの表示機能の高度化が著しく、組み込みシステムにおいて用いられていたVDPに代わって、プログラマブルシェーダを搭載したGPUが採用されることが増えてきている。特に使用メモリと消費電力を抑える要求から、PowerVRのシェアが高い。

GPU 開発企業[編集]

チップセットまたはCPU統合GPUのみ手がけている企業[編集]

  • インテル (かつては単体製品も提供していた)
  • SiS (かつては単体製品も提供していた)

過去にGPUまたはビデオチップを手がけていた企業[編集]

その他[編集]

「GPU」という名前[編集]

GPUは、NVIDIA Corporationが、GeForce 256の発表時に提唱した呼称である。VPUは 3Dlabs Inc.が、WildcatVP(量産品としては世界初の汎用シェーダ型設計のGPU)の発表時に命名した。なお、VPUの呼称に関しては、ATI TechnologiesRADEON9500/9700の発表時に提唱したと誤解されやすいが、実際は、3DLabsのWildcatVPの発表が先行している。また、ATIがVPUの呼称を使ったのは、当時は3DLabsと提携していたからでもある。

なお、現在はAMD (ATI) も主にGPUの呼称を使用している。

統合GPU[編集]

一般に、チップセットおよびCPU内蔵GPU(統合GPU、iGPU)のグラフィック機能は単体チップ型のGPU(ディスクリートGPU、dGPU)に劣るが、消費電力やコスト面では有利である。このため、オフィススイートやネットアクセスなどを中心とした高性能が必要ない用途が想定され、低価格が求められる業務用端末(クライアント)機向けや、低発熱・低消費電力が求められるノートパソコンなどでは単体チップのGPUではなく、統合GPUが多く搭載されている。比較的高性能なGPUを使用するゲーム機でもコストダウンを目的としてGPUの統合化が進んでいる。

高性能なGPUの利用を前提とするAeroを搭載したWindows Vistaの登場以降、チップセット内、およびCPUパッケージ内に統合されているGPUコアの性能が向上してきたため、ローエンドの物からGPU単体の製品は3Dゲームの快適なプレイ用途を想定した、比較的高価で高性能なものへとシフトしている。

出典[編集]

  1. ^ Schechter, Greg (2006年3月19日). “DWM's use of DirectX, GPUs, and hardware acceleration” (英語). Greg Schechter's Blog. 2009年2月14日閲覧。
  2. ^ a b 日経エレクトロニクス 2007/10/8 「プロセサはマルチ×マルチへ」
  3. ^ MicrosoftがGPGPU開発向けC++の拡張「C++ AMP」を発表 - 多和田新也(AFDSレポート)、PC Watch、Impress(2011年6月17日付配信、2012年3月24日閲覧)
  4. ^ 現実路線へ修正されたAMDのFUSION - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2007年12月25日付配信、2012年3月24日閲覧)
  5. ^ Intelの次期CPU「Ivy Bridge(アイビーブリッジ)」を裸にする - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2012年3月2日付配信、2012年3月24日閲覧)
  6. ^ Intel NehalemとAMD FUSION 両社のCPU+GPU統合の違い - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2007年10月11日付配信、2012年3月24日閲覧)
  7. ^ CPUとGPUの境界がなくなる時代が始まる2009年のプロセッサ - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2008年12月2日付配信、2012年3月24日閲覧)

関連項目[編集]