ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

最近気になりだしたCPUとGPUの違いについて

http://www.geforce.com/Active/en_US/shared/images/articles/gtx-680m/gtx-680m-chip-650.png
恥を承知で申し上げますと、「GPU=画像処理するやつ」ということは知っているのですが、逆にいうとそれくらいしか知らない人間です。さすがにそれはどうかと思いますし、このまえカーネルVM探検隊に行って来ましたし、その折に触れてそのへんに詳しい方からちょこちょこっとお話を聞いたので、せめてもう少し詳しく知っておきたいなと最近思っていました。というわけで、今回はGPUについて確認してみようと思います。

そもそもGPUってなんでしたっけ

Wikipediaの記事をそのまま引用するとこんな感じです。

Graphics Processing Unit(グラフィックス プロセッシング ユニット、略してGPU)とは、パーソナルコンピュータやワークステーション等の画像処理を担当する主要な部品のひとつ。Visual Processing Unit(ビジュアル プロセッシング ユニット、VPU)という名称もある。

というわけで、画像処理をするために特化した装置のようです。ゲームではCPUよりも重要視されることもあるようで、とくに90年代からのゲームハードは、当時の粋を集めたGPUを開発してきたようですね。まずはGPU歴史から見ていきましょう。

GPUの歴史をつまみ食い

遡ること1970年代のこと、画面に文字を表示するコントローラーを発展させた、画面の1ドット1ドットを個別に描画するコントローラーがコンピューターに乗っかっていました。これがGPUのご先祖様、グラフィックコントローラーです。当時のこいつはごくごく簡単な画像処理しかしていませんでした。簡単な図形描画の支援や、ごく限定的なスプライトの描画計算をしてビデオメモリに送るということだけをしていました。技術面の制約もあったのでしょうか、あまり仕事はできなかったようです。このころは演算の利便性を高めるためのチップと描画計算の結果をビデオメモリに送る仕事をするチップは別々だったようです。また、グラフィックコプロセッサという描画専門職の汎用的なCPUを搭載するということもあったようですが、安かろう悪かろうか、コストがアホみたいにかかるかのどちらかで、個人向けのPCにはあまり普及しなかったようです。その証拠にこのコプロセッサ、1990年代末にはオワコンになってます。
本格的に重要視されだすのは1990年代、Windowsの登場がきっかけだそうです。GUIを描画するためのパワーが必要になりますからね。この頃は「グラフィックアクセラレータ」と呼ばれていました。なお、これの少し前くらいにOpenGLが策定、標準化されたようです。結構歴史のある規格だったんですねこれ…1993年にはワンチップで2Dグラフィックスを扱える最初のグラフィックアクセラレータ"S3 86C911"が開発されます。これを皮切りに各所がこぞって2Dグラフィックアクセラレータを作り始めます。
2000年代に入ると座標変換とライティング処理がハードウェア化されます。この演算装置が「GPU」と呼ばれるようになのもこの頃です。さらに、今までは固定的だったパイプラインが、計算式を自由に変更できるようになります。「プログラマブルシェーダ」というやつらしいですね。もう少し進化するとシェーダをプログラミングする高級言語が開発されたり、シェーダが3Dグラフィックス以外にも使われるようになったりします。最近はGPUとCPUをワンチップ化したような製品が生まれています。IntelのCPUだとSandy Bridge世代からだとのことで、私が今使っているPCのCPUも該当します。

で、CPUとの違いは?

GPUの命令は、いくつかのデータのまとまりに、並列して同じ命令を実行するような感じで行います。1人で団体客を捌くような感じですね。対してCPUの場合は様々な命令が降ってきますので、それを(最近はある程度並列したり適切にスケジューリングしたりしてやりますが)やってきた順に個別にこなします。こちらはその人それぞれを個人客として相手します。
というわけで、CPUに比べると、GPUは「単純作業を数こなす」ような仕事が得意です。対してCPUは「様々な仕事ををれなりにこなす」仕事のほうが向いています。最近はGPUの特性を活かして汎用的な計算に利用しようという試みがあります。

まとめ

人を乗せて空を飛ぶという点で例えるとこうなる気がします。
GPU
http://www.asahicom.jp/topics/images/787-20120425SPHO0004AGOC.jpg
CPU↓
http://files.air-attack.com/MIL/jas39/jas39hungary_20080129.jpg