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単体の製品は比較的、高価で高性能なものへとシフトしている。
[編集] 歴史
コンシューマPC向けGPUの起源は1970年代から1980年代のグラフィックチップにさかのぼる。当時のチップは非常に限定的なスプライトのBitBLTや、形状(多角形、矩形など)の描画を支援するにすぎなかった。GPUのなかには、いくつかの命令をディスプレイリストとしてまとめて実行したり、DMA転送を用いることでメインCPUの負荷を減らしたりするものもあった。
汎用的なグラフィックスコプロセッサが開発されたが、非常に高価でなかなか普及には至らなかった。
1980年代から1990年代前半にかけてはBitBLTをサポートするチップと、描画を高速化するチップは別々のチップとして実装されていたが、チップ処理技術が進化するとともに安価になり、VGAカードをはじめとするグラフィックカード上に実装され、普及していった。
AmigaはビデオハードウエアにBlitterを搭載した最初のコンシューマ向けコンピュータで、IBMの8514グラフィックスシステムは2Dの基本的な描画機能をサポートした最初のPC用グラフィックアクセラレータとなった。
1990年代の初めごろ、Microsoft Windowsの普及とともに、グラフィックアクセラレータへのニーズが高まり、WindowsのグラフィックスAPIであるGDIに対応したグラフィックアクセラレータが開発された。
1991年にS3 Graphics社が開発した"S3 86C911"は、最初のワンチップ2Dグラフィックアクセラレータであった。"86C911"という名は設計者がその速さの指標としてポルシェ911にちなんで名付けたほどである。86C911を皮切りとして数々のグラフィックアクセラレータが発売された。
1995年までには、あらゆる主要なPCグラフィックチップメーカーが2Dアクセラレータを開発し、とうとう汎用グラフィックスコプロセッサは市場からなくなった。
1995年にMicrosoftがWindows95とともに開発したDirectXではさらにグラフィックアクセラレータの性能が強化された。
DirectXの提供するコンポートネントのひとつDirect3Dは当初からハードウエア化を想定したレンダリングパイプラインを持っていた。
1997年当時のグラフィックアクセラレータはレンダリングのみしかサポートしていなかったが、2000年代に入ると、座標変換とライティングがハードウエア化され、CPUの負荷は激減した。この頃から、グラフィックアクセラレータはGPUと呼ばれるのが一般的になった。この頃のGPUは固定的なパイプラインを持ち、Zバッファ、バンプマッピング、ステンシルバッファ、テクスチャマッピング、テクスチャフィルタリングなどをサポートしていた。
DirectX8になると、GPUは固定的なパイプラインではなく、プログラマが自由に計算式を変更できるプログラマブルシェーダがサポートされた。従来はポリゴン単位でしか計算をプログラムできなかったのに対し、ピクセル単位でプログラミングができるプログラマブルピクセルシェーダーの導入により、自由度は飛躍的に向上した。プログラマブルシェーダーは頂点シェーダー(VertexShader)とピクセルシェーダー(PixelShader)の二種類が用意され、頂点シェーダーは座標変換とライティングを、ピクセルシェーダーはレンダリングをそれぞれ担当していた。また、この世代になるとマルチテクスチャ、キューブマップ、アニソトロピックフィルタ、ボリュームテクスチャなどがあらたにサポートされ、HDRIによるレンダリングや動的な環境マッピングの生成が可能になった。
DirectX9世代になると、このプログラムシェーダーがさらに進化し、シェーダーのプログラムを書くための専用の高級言語、Cg、HLSL、GLSLなどが開発された。
次世代のDirectXではさらに自由度が増し、頂点シェーダーとピクセルシェーダーを統合してユニファイドシェーダー(UnifiedShader)になると言われている。