たとえ話で理解するハイテク:CPUとGPU
最近、複数の人から同じ質問を頂きます。CPUとGPUの違いや、NVIDIAのGPUの特徴についての質問です。GPUに関連する話題は、生成AIやGPUクラウド、NVIDIAの株価など、ビジネスの分野で話題になっています。
私が仕事でお話する方々は技術分野に詳しくない方や、技術系ではあるけれどハードウェアの詳細には詳しくない方が多いので、説明する際はできるだけ分かりやすい例え話をしています。
新しい技術とか概念というのは人間が作るものですので、多くの場合は人間が作った別のものに似ています。そして、似た特性を持つものは、利点や制約も似ていることが多いです。
CPUとGPUの違いを例えると、CPUは少人数で多様な仕事をこなす優秀な人が働いている会社のようなもので、一方でGPUは多数のアルバイトが働くコールセンターのようなものです、と説明しています。
【CPU:Central Processing Unit(中央演算装置)】タスクをCPUに依頼する場合、特定のルールに従って依頼する必要があります。それがなければ、CPUは動いてくれません。ただし、うまく伝えればどんなタスクでも実行してくれます。
このルールは、オペレーティングシステム(OS)と呼ばれるソフトウェアによって定められています。さらに、OS上で動くアプリケーションソフトウェアの中で、具体的な依頼内容を書いていきます。例えば、WindowsやMacOS、iPhone/iPadのiOS、AndroidなどがOSの一例です。
そして、CPUは非常に人気があり、多くの依頼が寄せられているため、以前は一人で行っていた作業を複数の人が同時に行えるようになりました。この作業を行う人々を「コア」と呼びます。かつては1つだったCPUの中のコアの数が2つや4つと増え、最近では32個や64個のコアが1つのCPUに組み込まれるようになりました。
このような複数のコアを持つCPUをマルチコアCPUと呼びます。ただし、CPUが1つと言っても、コアの数が分からないことがあるため、現在は部品としてのCPUの数を「ソケット」と呼んで区別しています。イメージとしては、1つのソケットが会社であり、コアの数が社員数に相当します。
このCPUはメモリと一緒に仕事をします。少し専門的な話になりますが、CPUはメモリからデータを取ってくることを「Fetch(フェッチ)」と呼び、そのデータを計算することを「Execute(エグゼクト)」と言います。CPUはどれだけ高速になっても、コア数が増えても、実際に行っている作業はFetchとExecuteを繰り返すだけです。
【GPU:Graphics processing Unit(画像処理装置)】CPUは様々な計算やメモリへの書き込み処理で忙しいため、ディスプレイに絵を描くのが遅くなってしまいます。そのため、絵を描くための計算と描画を行う専用装置であるGPUが生まれました。
絵を描くための計算処理と描画とは、たとえばXY座標の3点の情報を受け取り、「この点で囲まれる三角形の領域を赤く塗りつぶす」といった簡単な作業を行います。
しかし、画面上のグラフィックが高精細になると、塗りつぶした三角形の横は台形で黄色に、その隣の長方形は青にと、単純な作業でも多くの作業が必要です。画面上に表示される多角形の一つ一つをポリゴンと呼びますが、最新のゲームでは高精細なキャラクタを滑らかに動かすために、一秒間に何十回もポリゴンを書き換える作業が必要です。
「赤く塗りつぶす」という作業は、「青く塗りつぶす」という別の領域を塗る作業とは独立して進められるため、この単純な作業を多くの人が同時に行うと仕事が早く進みます。
そのため、簡単な作業を多くの人に行ってもらい、CPUには命令を出してもらい、GPUは描画に専念する仕組みが生まれました。これが画像処理専用装置であるGPUです。
CPUは32コアや64コアなどのコア数のモデルが存在しますが、GPUのコア数は簡単な作業だけを行うため少ない部品で構成されており、5000コアや7000コアなどの規模で作られています。これが5000人のアルバイトがいるコールセンターに例えた理由です。
【NVIDIAが注目されるワケ】ここで、GPUの中身がCPUより単純なのであれば、CPUメーカーはGPUを設計・製造できるのではないか?という疑問が生じます。
実際、CPUメーカーであるAMD社は、NVIDIA社の競合メーカーだったカナダのATI Technologiesを2006年に買収してGPUの開発製造メーカーにもなりました。また、Intel社はGPUブランドとしてARCを立ち上げ、独自のGPUを開発していますが、まだ競争力のある製品があるわけではありません。
NVIDIAだけが注目されて評価されているのはナゼでしょうか?
ここでもう一度、例え話に戻ります。
お金を払って5000人のアルバイトを集めても、すぐにコールセンター業務を始めることはできません。それぞれのアルバイトが通話するシステム、それぞれに順序よく仕事を割り当てるためのシステムや進捗管理システム、勤怠管理システムが必要になるからです。
NVIDIAのGPUが広く使われているのは、このようなシステムソフトウェアが優れているためです。CUDA (Compute Unified Device Architecture)と呼ばれるソフトウエア開発キット(SDK)を使うことで、単純な作業を大規模な並列演算として実行することができるようになります。
もちろん、GPUの性能も非常に優れていますが、CUDAによる高速描画やAIの学習、推論などの並列演算が可能になるおかげで、NVIDIAは選ばれています。ユーザはCUDAを使って作られたソフトウェアを、さらに高い性能で動かすために、NVIDIAの最新のGPUを選びます。
つまり、CUDAを使うことでNVIDIAが選ばれ、NVIDIAのGPUによって作られたソフトウェアがさらに高い性能を発揮するという好循環が生まれるのです。
AMDやインテルがGPUの売り上げを増やすためには、CUDAと同じくらい優れた機能を持ったSDKを提供する必要があります。また、ユーザーに選ばれるためには、CUDAから移植できるSDKも必要です。
GPUチップの需要は今後も増え続けると考えられますが、NVIDIAは数年のアドバンテージを持っていると考えられます。
今回はCPUとGPUの違いを少数精鋭社員の企業と大規模コールセンターの違いにたとえて説明してみました。どこかでGPUという単語を見た時に思い出してもらえたら嬉しく思います。
最後までお読み頂きありがとうございました。