Graphics Processing Unit
出典: フリー百科事典『ウィキペディア(Wikipedia)』
GPU(Graphics Processing Unit)又はVPU(Visual Processing Unit)とは、ジオメトリエンジンなどのハードウェアによる演算能力を備えているグラフィックスプロセッサを指す言葉である。
GPUは、 NVIDIA Corporation (nVIDIA) 、VPUは ATI Technologies Inc. によってそれぞれ命名された。
目次 |
[編集] 概要
パーソナルコンピュータ及びワークステーション用のグラフィック処理用のチップが、CPUと同じように高性能化されてきたので、CPUと並ぶコンピュータの中心的なチップになっているという意味を持つ。
GPUの場合、 GeForce 256 シリーズ以降、ジオメトリエンジンを搭載しているグラフィックスプロセッサを指す語として使われている。
最近では、チップセット内に統合されたGPUの機能が向上してきたため、GPU単体の製品は比較的、高価で高性能なものへとシフトしている。
[編集] 歴史
[編集] 1970年代〜1980年代
コンシューマPC向けGPUの起源は1970年代から1980年代のグラフィックチップにさかのぼる。当時のチップは非常に限定的なスプライトのBitBLTや、形状(多角形、矩形など)の描画を支援するにすぎなかった。GPUのなかには、いくつかの命令をディスプレイリストとしてまとめて実行したり、DMA転送を用いることでメインCPUの負荷を減らしたりするものもあった。
有名なものに、MSXに搭載されたVDP:Video Display Processorがある。 低価格汎用設計であり、低解像度での表示に特化したものであるが、スプライトやハードウェアスクロール等の ハードウェアアクセラレーション機能を有していた。 MSXが同一規格、低価格での普及を目指していたことから、相当数(1990年代に400万台出荷、出荷を記念して MSX関連雑誌で特集が組まれた)が売られた。
汎用的なグラフィックスコプロセッサが開発されたが、非常に高価でなかなか普及には至らなかった。MacintoshはQuickDrawを用いハードウェアでの描画支援機能なしで画像表示を行っていた。
1980年代から1990年代前半にかけてはBit Block Transfer(BitBlt)をサポートするチップと、描画を高速化するチップは別々のチップとして実装されていたが、チップ処理技術が進化するとともに安価になり、VGAカードをはじめとするグラフィックカード上に実装され、普及していった。
AmigaはビデオハードウエアにBlitterを搭載した最初のコンシューマ向けコンピュータで、1987年のVGA発表とともにリリースされたIBMの8514グラフィックスシステムは2Dの基本的な描画機能をサポートした最初のPC用グラフィックアクセラレータとなった。
1980年代後半から1990年代前半の日本国内で広く普及していたPCとしてPC-9801シリーズがあるが、同シリーズのグラフィックコントローラとしてGDC,GRCG,EGCが、 後継の上位機PC-9821シリーズのグラフィックコントローラとしてPEGCが搭載されていた。 これらは、グラフィックVRAMに直線・円弧・四角塗りつぶしなどの図形描画を行ったり、複数プレーンへの同時描画を行う機能を持っていた。 当時ゲーム用途にはスプライト機能が有利とされていたが、PC-9801シリーズのグラフィックコントローラはスプライト機能を持っていなかった。 同時期のホビーユースパソコンの一部(X68000,MSX,FM TOWNS)はスプライト機能を持っていたため、グラフィック性能ではPC-98x1シリーズは劣っていた。
[編集] 1990年代
1990年代の初めごろ、Microsoft Windowsの普及とともに、グラフィックアクセラレータへのニーズが高まり、WindowsのグラフィックスAPIであるGDIに対応したグラフィックアクセラレータが開発された。
1991年にS3 Graphics社が開発した"S3 86C911"は、最初のワンチップ2Dグラフィックアクセラレータであった。"86C911"という名は設計者がその速さの指標としてポルシェ911にちなんで名付けたほどである。86C911を皮切りとして数々のグラフィックアクセラレータが発売された。
1995年までには、あらゆる主要なPCグラフィックチップメーカーが2Dアクセラレータを開発し、とうとう汎用グラフィックスコプロセッサは市場からなくなった。
VDP等の汎用グラフィックプロセッサについては、カーナビ等の表示用に使用され新たな市場を形成している。 90年代後半からは、携帯電話に多色表示がもちいられるようになり、その分野においても有用な市場を形成 している。
1995年にMicrosoftがWindows95とともに開発したゲーム作成及びマルチメディア再生用のAPI群DirectXではさらにグラフィックアクセラレータの性能が強化された。DirectXのコンポートネントのひとつDirect3Dは当初から3Dグラフィック処理のハードウエア化を想定したレンダリングパイプラインを持っていた。
1997年当時のグラフィックアクセラレータはレンダリングのみしかサポートしていなかったが、この頃からZバッファ、アルファブレンディング、フォグ、ステンシルバッファ、テクスチャマッピング、テクスチャフィルタリングなどの機能を次々搭載し、3Dグラフィック表示機能を競うようになった。DVD-Video再生支援機能を備えるチップも現れた。
[編集] 2000年代
2000年代に入ると、座標変換とライティングがハードウエア化され、CPUの負荷は激減した(ハードウェアT&L)。この頃から、グラフィックアクセラレータはGPUと呼ばれるのが一般的になった。
DirectX8になると、GPUは固定的なパイプラインではなく、プログラマが自由に計算式を変更できるプログラマブルシェーダがサポートされた。従来はポリゴン単位でしか計算をプログラムできなかったのに対し、ピクセル単位でプログラミングができるプログラマブルピクセルシェーダの導入により、自由度は飛躍的に向上した。プログラマブルシェーダーは頂点シェーダ(VertexShader)とピクセルシェーダ(PixelShader)の二種類が用意され、頂点シェーダーは座標変換とライティングを、ピクセルシェーダはレンダリングをそれぞれ担当していた。また、この世代になるとマルチテクスチャ、キューブマップ、アニソトロピックフィルタ、ボリュームテクスチャなどがあらたにサポートされ、HDRIによるレンダリングや動的な環境マッピングの生成が可能になった。動画の再生にシェーダを使う技術も搭載された。(AVIVO、PureVideo)
DirectX9世代になると、このプログラムシェーダがさらに進化し、シェーダのプログラムを書くための専用の高級言語、Cg、HLSL、GLSLなどが開発され、シェーダを物理演算などゲームでの3Dグラフィック表示以外の演算に使うことも多くなった。Windows Vistaの描画機能「Windows Aero Glass」は画面表示をプログラムシェーダを利用して行うので、この世代のビデオチップが必須になっている。(Windows Aero Glassを切ればDirectX8世代以前のビデオチップでもWindows Vistaは稼働する)また、Mac OS XのCore Imageではシェーダを利用して2Dグラフィックの処理を行っている。
DirectX10世代ではさらに自由度が増し、頂点シェーダとピクセルシェーダを統合して統合シェーダ(Unified Shader)を搭載するGPU(GeForce8シリーズ)が現れている(DirectX10では統合シェーダ実装は必須ではない)。Windows用の標準的なC言語のコンパイラが用意され、科学技術計算やシミュレーションなど、GPUの演算能力を汎用的な用途に広く使えるようになると見込まれている。
[編集] ゲーム機
ゲーム業界においても、1990年代後半から3D描画能力の向上が求められ、ゲーム機ベンダーは大手GPUメーカと共同でPC用GPUをベースにした専用のGPUを開発した。 中にはPC用のGPUよりも高性能なものもある。
- プレイステーション2に搭載されたGS (SCE製)
- GPUにオンチップでVRAMを混載し、2560bitという内部バスを実現した。性能や半導体プロセス技術の面で、後のGPUにも影響を与えた。
- プレイステーション3に搭載されたRSX (NVIDIA製)
- ニンテンドーゲームキューブに搭載されたFLIPPER (ATI製)
- ドリームキャストに搭載されたPower VR2 (NEC製)
- Xbox 360に搭載されたXenos (ATI製)
[編集] GPU 開発会社
- NVIDIA Corporation
- ATI Technologies
- 3Dlabs
- Matrox
- XGI Technology Inc.
- S3 Graphics
- Intel
- 3dfx (now part of NVIDIA)