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年代のグラフィックコントローラにさかのぼる。当時のグラフィックコントローラは非常に限定的な矩形領域転送(Bit Block Transfer, BitBLT)や、図形(多角形、矩形など)の描画を支援するに過ぎず、そのパフォーマンスも芳しくなかった。

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

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

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

[編集] 1990年代

1990年代に入ると、Silicon Graphicsが自社のグラフィックスワークステーション用のグラフィックライブラリとして開発・実装した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年にMicrosoftWindows95とともに開発したゲーム作成及びマルチメディア再生用の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などの標準規格も提案され、特定のメーカーのGPUに依存しないオープンな規格としての実装が期待されている。

パーソナル・コンピュータ用のCPUメーカーでは、今後CPUチップ内に複数のCPUと共にGPUなどのアクセラレータ回路も統合して、総合的な処理性能の向上を図る計画がある。例えば、米AMDでは「AMD Fusion」構想において1つのダイ上に2つ以上のCPUとGPU、メディア・プロセッサを集積し、スイッチ回路によって統合する計画がある。[2]

チップセット内蔵のグラフィック機能は、一般に単体のGPUに大きく劣るが、オフィススイートやネットアクセスなどを中心とした用途(特に低価格が求められる業務用や、低発熱・低消費電力が求められるノートパソコンが中心)では、相変わらず統合チップセットで間に合わせている場合が多い。しかし統合チップセットの内蔵GPUにも単体GPUの技術が持ち込まれ、近年では高性能化が著しい。

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

[編集] ゲーム機

ゲーム業界においても、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の場合はGeForce 256シリーズ以降、ジオメトリエンジンを搭載しているグラフィックスプロセッサを指す語として使われている。最近では、チップセット内に統合されているGPUの機能が向上してきたため、GPU単体の製品は比較的、高価で高性能なものへとシフトしてきた。

[編集] 出典

  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 「プロセサはマルチ×マルチへ」

[編集] 関連項目

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語