駆け出しエンジニアの気ままにブログ

このブログでは、駆け出しエンジニアの私が興味をもったトピックについて不定期に発信しています。

GPUの基本について改めてまとめてみる。  

GPUとは、Graphics Processing Unit「画像処理装置」の略。 初期のGPUはCPUの演算結果を所定の解像度とリフレッシュレートを備えた映像として出力するだけの装置でしたが、現在の「GPU」の受け持つ役割は、グラフィックに関連する三次元データの頂点とテクスチャ、アンチエイリアスの処理や、HDを初めとする圧縮されたビデオ映像のデコードと各種フィルタ処理、インターレースの解除などと拡大している。

ということで、今回のテーマは「GPU」です。

GPUは、CPUとともにコンピュータの処理能力を考える上で重要なモジュールの一つです。

以下、次の3つのポイントからGPUについてまとめていきます。
 
・シェーダとは
 
・GPGPUとは
 
・GPUの性質
 

・シェーダとは

「シェーダ」とは、3次元コンピュータグラフィックスにおいて、シェーディング(陰影処理)を行うコンピュータプログラムのこと。
「shade」とは「次第に変化させる」「陰影・グラデーションを付ける」という意味で、「shader」は頂点色やピクセル色などを次々に変化させるものを意味します。

GPUの主要な機能に「シェーダ・プロセッサ」「ストリーミング・プロセッサ」と呼ばれる「統合シェーダ」があります。
統合シェーダは、ハード的に分かれていた「ピクセル・シェーダ」(画像処理)と「バーテックス・シェーダ」(頂点処理)をまとめて、汎用的な演算ユニットで兼任させようと誕生した方式です。統合シェーダのことを、AMDでは「ストリームプロセッサ」と呼び、NVIDIAでは「CUDAコア」インテルでは「EU(Execution Unit)」と呼んでいます。
統合シェーダは、GPUの心臓にあたる部分であり、その数や性能はGPUの性能にそのまま反応されるといえます。

GPUに搭載されるストリーミング・プロセッサは増え続けています。
グラフィック処理は極度に並列化可能な処理となることが多く、ストリーミング・プロセッサを増やせば増やすほど、ほぼ直線的にパフォーマンスを上げていくことが可能です。
「NVIDIA SLI」や「AMD CrossFire」で実現するビデオカードの複数装着などの方式もあります。
いずれの方式にしても、技術のポイントは複数ビデオカードにより分割レンダリングをすることです。

現行のハイエンドGPUに搭載されているストリーミング・プロセッサ数はNVIDIAで512基、AMDで1536基となっており、CPUなどとは桁違いのマルチプロセッサ構成です。 これだけのストリーミング・プロセッサを搭載するGPUの演算能力は1.5〜2.7TFLOPSをオーバーします。

FLOPS(フロップス、Floating-point Operations Per Second)はコンピュータの性能指標の一つ。1秒間に浮動小数点数演算が何回できるか 数値の大きさだけでなく、理論的に算出された値の何%で実際のプログラムが動作するかということも重要。

・GPGPUとは

GPGPUは、Global Purpose computing on GPUの略で「汎用目的でのGPU演算処理」を意味する言葉です。
PC用ゲームにおける3D-CGのリアルタイムレンダリングを目的として機能向上と高性能化を進めてきたGPUを、グラフィックレンダリング意外の目的でも活用しようとする技術です。
GPGPUが注目を集めているのには、大きく分けて2つの理由があります。
1つ目は、CPUよりも並列処理に優れたGPUは、特定の演算に限定すれば、CPUの十倍以上もの性能を発揮するため、この特性を活用できれば、飛躍的な性能向上が見込めることです。
2つ目は、CPU自体の多コア化およびヘテロジニアス化(多種多様なコアによる演算の分散処理化)の流れです。

GPGPUのための開発環境およびAPIとしては、NVIDIAのCUDAとAMDのATI Streamが知られています。また、統合規格として「OpenCL」も提唱されています。
「CUDA」はNVIDIAが提供するGPU向けの当該開発環境であり、専用のコンパイラやライブラリなどを追加することで、C言語で開発してきたプログラムを手軽に高速化できる点が特徴として挙げられます。
「OpenCL」は、もともとアップル社が提案をはじめた規格でしたが、現在は標準化団体クロノス・グループの作業部下によって策定が進められています。

NVIDIAの外付けGPUのラインナップは、大まかに「Tesla」シリーズ、「Quadro」シリーズ、「GeForce」シリーズの3種類に分類できます。
GeForceシリーズは、外付けGPUの一般向け定番シリーズであり、エントリークラスからハイエンドまで幅広くカバーする製品が揃っています。
Teslaシリーズは、「ワークステーション」で活躍するハードです。
Quadroシリーズは、映像編集や開発者などの業務向け製品群で、CADや高度な3D映像編集などに利用される、非常に高価なGPUです。
NVIDIAの最新アーキテクチャである「Fermi」を採用したGPGPU用プロセッサ「Tesla 20」シリーズは、1TFLOPS以上の演算性能を1枚のカードで発揮できます。

・GPUの性質

GPUは、グラフィックス演算に特化した複数演算器による並列処理により、特定演算についてはCPUとは比べものにならない高速処理を実現します。
根本的なアーキテクチャ自体が、「大量のスレッド発行」、「CPUとは比べものにならない並列化」によって、処理の高速化を図るものとなっています。したがって、GPUの高速化には「GPUのトランジスタ数を限界まで増やすこと」が不可欠とも言えます。

トランジスタ数の増加に伴って問題になるのが、「ダイ・サイズの限界」と、「消費電力」「発熱」です。
GPUに限らず、プロセッサは供給された電力を、ほとんど熱に変換してしまいます。いわゆる「TDP」で示されるワット値の電熱器とも言い換えられます。
GPUの温度を100度以下の安定運用可能な領域に保つには、適切な冷却装置が必要不可欠です。
冷却はチップの上にヒートシンクを密着して取り付けることによって行いますが、このとき鍵になるのは、単位ダイ面積当たりの電力消費である「電力密度」です。
トータルで出る熱量が一定であれば、ダイ・サイズが小さいほど、電力密度が高くなり、より高速に熱を奪う高性能なヒートシンクが必要になります。

一般的にダイ・サイズは「トランジスタ数×プロセスルールの2乗」に比例します。
つまり、プロセスルールが2倍微細化すれば、同じダイサイズに4倍のトランジスタを載せることができる計算です。
しかし、回路の微細化が進むと「リーク電流」が増える現象が起こるため、必ずしも順調に消費電力を低減できるわけではありません。

ーーーーー
消費電力:「(動作周波数)×(動作電圧)+リーク電流」に比例
ダイ・サイズ:「プロセスルールの自乗×トランジスタ数」に比例
動作電圧:プロセスルール(nm)に応じて減る。
歩留まり:ダイ・サイズが大きいと、急激に悪化。
電力密度:「消費電力 / ダイ・サイズ」で求める。
電力密度:発熱量の密度とほぼイコール。
冷却装置:発熱量の密度が高いほど、高性能な製品が必要。
ーーーーー

ということで、今回は以上です。





スポンサーサイト

category: その他

tb: 0   cm: 0

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kazufumi1984engineer.blog.fc2.com/tb.php/130-50194f23
この記事にトラックバックする(FC2ブログユーザー)