なぜ、足し算しか出来ないCPUと掛け算しか出来ないGPUが役に立つのか?
はじめに
現代のコンピュータは、CPU(Central Processing Unit)とGPU(Graphics Processing Unit)の二つを車の両輪のように使い分けています。一般的にCPUは「汎用的な計算機」、GPUは「並列演算に特化した計算機」と説明されますが、その根底にある思想を突き詰めると、CPUは「足し算しか出来ない装置」、GPUは「掛け算(積和演算)しか出来ない装置」と表現することができます。本稿では、なぜこのような制約がありながらも両者が役に立ち、現代社会を支えているのかを考察します。
CPU ― 足し算だけで世界を表現する
CPUの中心にはALU(算術論理演算器)があり、そこで最も基本的な演算は「足し算」です。減算は「負の数を足す」ことで実現され、乗算や除算は「繰り返しの足し算・引き算」によって表現されます。さらに論理演算やシフト演算を組み合わせれば、ほとんどの処理は足し算の応用として記述できます。
このシンプルな基底演算の組み合わせにより、CPUはチューリング完全性を満たし、理論上あらゆるアルゴリズムを実行できます。つまりCPUは「世界のあらゆる計算を、足し算を土台に再現する装置」として機能するのです。そのため、OSの制御からアプリケーションの実行まで、極めて幅広い用途を一手に担えます。
GPU ― 掛け算に特化することで速度を得る
一方、GPUは登場の背景が異なります。3Dグラフィックス処理では、頂点座標の行列変換、ライティング計算、テクスチャのマッピングといった処理に、膨大な掛け算と足し算(積和演算)が必要です。この負荷に耐えるため、GPUは「Multiply-Accumulate(MAC, 積和演算)」を爆発的に並列処理できる構造として設計されました。
GPUは汎用性を犠牲にする代わりに、特定の計算においてはCPUを桁違いに上回ります。特にAIにおけるニューラルネットワークの学習や推論は、大規模な行列積の繰り返しであり、GPUが圧倒的な性能を発揮する領域です。言い換えれば、GPUは「掛け算しかできないからこそ、掛け算を極限まで速くできる装置」なのです。
両者の補完関係
CPUとGPUは正反対の性質を持ちます。CPUは足し算を基礎に汎用的な処理を得意とし、GPUは掛け算に特化して演算速度を稼ぎます。ではなぜ両者は共存しているのでしょうか。
その理由は、現実の計算が「汎用的な処理」と「特化した数値計算」の両方を必要とするからです。たとえばディープラーニングの学習では、学習データの前処理や制御フローはCPUが担い、重み行列の計算はGPUが担当します。3Dゲームにおいても、ゲームの進行やAI制御はCPUが処理し、画面描画はGPUが担当します。つまり両者の役割分担がなければ、現代の高度なコンピューティング環境は成立しないのです。
歴史的必然としての「足し算」と「掛け算」
歴史的に見れば、CPUは「できるだけ少ないトランジスタであらゆる計算を実現する」ために足し算を基底としました。これによりチューリング完全性を確保し、汎用機としての地位を築きました。
一方、GPUは「特定の計算(積和演算)を極限まで速くする」という実用的要請から進化しました。結果として、AIや科学技術計算など、線形代数を土台にする分野ではGPUが欠かせない存在となりました。
まとめ
CPUは足し算しかできないように見えて、その基底的性質によりどんな計算でも実行できる汎用性を持ちます。GPUは掛け算しかできないように見えて、その特化性により特定の計算分野で圧倒的な速度を誇ります。両者は単独では不完全ですが、組み合わせることで汎用性と高速性を両立させています。
この関係は、人間社会でいう「万能型のゼネラリスト」と「一点突破のスペシャリスト」の関係に似ています。ゼネラリストだけでは効率が悪く、スペシャリストだけでは適応できない場面がある。両者が協調するからこそ、社会も計算機も豊かに機能するのです。
Discussion