Graphics Processing Unit
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、GRCG、EGCが搭載された。これらは、グラフィックVRAMに直線・円弧・四角塗りつぶしなどの図形描画を行ったり、複数プレーンへの同時描画を行う機能を持っていた。
1990年代
1990年代に入ると、シリコングラフィックスが自社のグラフィックスワークステーション用のグラフィックライブラリとして開発・実装したIRIS GLがOpenGLに発展して標準化され、標準化されたグラフィックライブラリとその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年代
2000年代に入ると、座標変換とライティングがハードウエア化され、CPUの負荷は激減した (ハードウェアT&L)。この頃から、グラフィック・アクセラレータはGPUと呼ばれるのが一般的になった。
DirectX 8になると、GPUは固定的なパイプラインではなく、プログラマが自由に計算式(陰影計算といったレンダリングアルゴリズムの一部)を変更できるプログラマブルシェーダーがサポートされた。
従来はポリゴン単位でしか陰影計算をプログラムできなかったのに対し、ピクセル単位でプログラミングができるプログラマブルピクセルシェーダーの導入により、自由度は飛躍的に向上した。プログラマブルシェーダーは頂点シェーダー (Vertex Shader) とピクセルシェーダー (Pixel Shader) の二種類が用意され、頂点シェーダーは座標変換とライティングを、ピクセルシェーダーはレンダリングをそれぞれ担当していた。
また、この世代になるとマルチテクスチャ、キューブマップ、アニソトロピック(異方性)フィルタ、ボリュームテクスチャなどが新たにサポートされ、HDRIによるレンダリングや動的な環境マッピングの生成が可能になった。動画の再生や圧縮にシェーダーを使う技術も搭載された (Intel Clear Video、PureVideo、AVIVO、Chromotion)。
DirectX 9世代になると、このプログラマブルシェーダーがさらに進化し、シェーダーのプログラムを書くための専用の高級言語であるCg、HLSL、GLSLなどが開発され、シェーダーを物理演算などゲームでの3Dグラフィック表示以外の演算に使うことも多くなった。Windows Vistaの描画機能「Windows Aero」 (Desktop Window Manager) は画面表示をプログラマブルシェーダーを利用して行うので[1]、この世代のビデオチップが必須になっている(Windows Aero Glassを使用しなければDirectX 8世代以前のビデオチップでもWindows Vista自体は稼働する)。また、Mac OS XのCore ImageではOpenGLのプログラマブルシェーダーを利用して2Dグラフィックのフィルタ処理を行っている。
DirectX 10世代ではさらに自由度が増し、「シェーダーモデル4.0」 (SM 4.0) に基づくグラフィックスパイプラインが導入され、頂点シェーダーとピクセルシェーダーの間でジオメトリシェーダー (Geometry Shader) によるプリミティブ増減処理を行なえるようになった。
グラフィックス描画処理では3次元空間を構成する表現のために3角形を色付けするピクセルシェーディング処理の負荷が、精細度や特殊処理などによって大きく変化するため、固定のパイプライン処理ではボトルネックになることが多かった。この制約を解消するために、DirectX 10世代では演算ユニットを汎用化する統合型シェーダーアーキテクチャによって固定のパイプラインの一部をより柔軟な構成に変更した。頂点シェーダーとジオメトリシェーダー、そしてピクセルシェーダーの機能をあわせもつ統合型シェーダー (Unified Shader) [2]を多数搭載することによってプログラムの自由度と共にボトルネックを解消し、演算回路数の増加に比例した画像描画処理速度の向上を得た。[3]
GeForce 8シリーズではWindows / Mac OS X / Linux用の標準的な汎用Cコンパイラ環境 (CUDA) が提供され、一方Radeon HD 2000シリーズではハードウェアに直接アクセスできる環境 (Close to Metal) が用意されている。これにより科学技術計算やシミュレーション、画像認識、音声認識など、GPUの演算能力を汎用的な用途へ広く利用できるようになった(GPGPU)。また、特定メーカーに依存しないOpenCLというヘテロジニアス計算環境向け標準規格に続き、米マイクロソフト社からDirectX 11 APIの一部としてGPGPU用APIであるDirectComputeがリリースされた(のちにDirectComputeをバックエンドとするGPGPU向けC++言語拡張・ライブラリとして"C++ AMP"も登場した[4])。DirectX 11のシェーダーモデル5.0では、頂点シェーダーとジオメトリシェーダーの間に、ポリゴンの細分割・詳細化(サブディビジョンサーフェイス)をGPUで行なうテッセレーションシェーダー(ハルシェーダー、固定機能テッセレータ、ドメインシェーダー)が追加された[5]。
なお、主にDirectXに最適化されたGeForceやRADEONなど3Dゲーム向け製品と異なり、業務用ワークステーションなど高い信頼性や耐久性が必要とされる業務用途に特化して設計されたNVIDIA Quadro、AMDのATI FireProが存在する。これら業務用製品はDirect3DよりもOpenGLに最適化されており、CAD、HPC、金融、CG映像、建築/設計、DTP、研究開発分野において採用されている。
2010年代
主なCPUメーカーは、従来のCPU機能だけにとどまらず、1つのCPUチップ内に複数のCPUコア(マルチコア)を搭載すると同時に、画像出力専用回路としてGPUコアも統合した製品を提供するようになった。例えば、米AMDでは「AMD Fusion」構想において1つのダイ上に2つ以上のCPUとGPUを統合し[6][3]、米インテル社でもCore i5、Core i7、Core i3での"Sandy Bridge"世代から、同様の製品を提供している[7][8][9]。CPUチップにGPUが含まれることで、従来必要だったCPU側の外部メモリ空間内のグラフィックスデータをGPUの外部メモリ空間側へ転送する操作は基本的に不要になるが、CPUとGPUの外部メモリが共用されるため、CPUチップの外部メモリバスにはCPUのアクセス帯域に加えてGPUのアクセス帯域も加わる。このため、仮にCPUチップに極めて高い性能のGPUを統合しても、統合チップのメモリアクセス帯域も相応に増強されないと、それがボトルネックとなって性能向上は望めない。
ゲーム機
ゲーム業界においても、1990年代後半から3D描画能力の向上が求められ、ゲーム機ベンダーはGPUメーカと共同で専用のGPUを開発するようになった。PC用GPUより先行した新機能やeDRAMの搭載で差別化したものが多い。一般には、(汎用化・共通化のための分厚い抽象化層がほとんど不要なAPIが使えることもあいまって)下位や中位のパーソナル・コンピュータ用GPUよりも画像処理性能においては高性能である。
- PlayStationに搭載されたGTE(SCE製) - ハードウェアジオメトリエンジンをPC用GPUより4年ほど先行して搭載している
- PlayStation 2に搭載されたGS (SCE製) - GPUにeDRAMをVRAMとしてオンダイで混載し、2560bitという広帯域な内部バスを実現した。eDRAMはゲーム機用GPUに多用されるようになった
- PlayStation 3に搭載されたRSX (NVIDIA製)
- NINTENDO64に搭載されたRCP (SGI(現AMD)製) - 座標計算や音声処理を全て内蔵DSPによるSIMD演算で行う構造で、これは現代で言えば頂点シェーダーによるGPGPUを行うことに相当する先鋭的なもの
- ニンテンドーゲームキューブに搭載されたFLIPPER (ATi(旧ArtXが担当、NEC製造)(現AMD)製)
- Wiiに搭載されたHollywood (AMD(NEC製造)製)
- ドリームキャスト、NAOMIに搭載されたPowerVR2 (VideoLogic(NEC製造)製)
- Xboxに搭載されたXGPU (NVIDIA製)
- Xbox 360に搭載されたXenos (AMD製) - ユニファイドシェーダーをPC用GPUより先行して搭載している。DirectX 9世代とDirectX 10世代の中間に相当する
組み込みシステム
近年携帯電話やカーナビゲーションシステムの表示機能の高度化が著しく、組み込みシステムにおいて用いられていたVDPに代わって、プログラマブルシェーダを搭載したGPUが採用されることが増えてきている。特に使用メモリと消費電力を抑える要求から、PowerVRのシェアが高い。
GPU 開発企業
チップセットまたはCPU統合GPUのみ手がけている企業
過去にGPUまたはビデオチップを手がけていた企業
- 3dfx (現在はNVIDIAの一部)
- 3Dlabs(現在は低消費電力のメディアプロセッサを手がける)
- ATI Technologies (現在はAMDの一部門となっている。ATIブランドは買収後しばらく存続していたがAMDブランドに統一された[10])
- Chips&Technologies
- Cirrus Logic(グラフィック部門を売却)
- NeoMagic(小型デバイス用メディアプロセッサ事業などを行っており、PC向けからは撤退)
- Number Nine
- Trident Microsystems
- Tseng Labs
- VideoLogic(現在のImagination Technologies。組み込み市場に特化し、他社への設計のライセンスを行っている)
- Weitek(ロックウェルに買収される)
- XGI Technology Inc.
その他
「GPU」という名前
GPUは、NVIDIA Corporationが、GeForce 256の発表時に提唱した呼称である。VPUは 3Dlabs Inc.が、WildcatVP(量産品としては世界初の汎用シェーダ型設計のGPU)の発表時に命名した。なお、VPUの呼称に関しては、ATI TechnologiesがRADEON9500/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ゲームの快適なプレイやCADオペレーション・3DCG制作におけるプレビュー用途を想定した、比較的高価で高性能なものへとシフトしている。
出典
- ↑ テンプレート:Cite web
- ↑ 【レビュー】初の統合型シェーダーアーキテクチャ「GeForce 8800シリーズ」を試す (1) 新アーキテクチャで登場したG80 | マイナビニュース
- ↑ 3.0 3.1 日経エレクトロニクス 2007/10/8 「プロセサはマルチ×マルチへ」
- ↑ MicrosoftがGPGPU開発向けC++の拡張「C++ AMP」を発表 - 多和田新也(AFDSレポート)、PC Watch、Impress(2011年6月17日付配信、2012年3月24日閲覧)
- ↑ テッセレーションの概要
- ↑ 現実路線へ修正されたAMDのFUSION - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2007年12月25日付配信、2012年3月24日閲覧)
- ↑ Intelの次期CPU「Ivy Bridge(アイビーブリッジ)」を裸にする - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2012年3月2日付配信、2012年3月24日閲覧)
- ↑ Intel NehalemとAMD FUSION 両社のCPU+GPU統合の違い - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2007年10月11日付配信、2012年3月24日閲覧)
- ↑ CPUとGPUの境界がなくなる時代が始まる2009年のプロセッサ - 後藤弘茂のWeekly海外ニュース、PC Watch、Impress(2008年12月2日付配信、2012年3月24日閲覧)
- ↑ 4Gamer.net ― ATIにお別れ。AMD,ATIブランドを統合し,GPUは「AMD Radeon」に