CPUとGPUの違い:構造・得意な処理・用途を比較
CPUは、1つの仕事をできるだけ速く終わらせるために作られていて、強力なコアを少数と、大きなキャッシュ、賢い制御回路を持ちます。GPUは、似た仕事を大量に同時にこなすために作られていて、単純な演算器を数千個そろえ、膨大な数のスレッドを切り替えることでメモリの待ち時間を隠します。CPUは複雑で分岐の多い逐次的な処理に、GPUは画像処理やディープラーニングのような大規模な並列計算に向いています。
| 項目 | CPU | GPU |
|---|---|---|
| 設計の目的 | 低遅延。1つのスレッドをできるだけ速く終わらせる | 高スループット。全体でできるだけ多くの仕事をこなす |
| コア数 | 複雑なコアが数個から数百個 | 単純な演算器が数千個。いくつかの塊にまとめられている |
| 実行モデル | 各コアに投機実行(アウトオブオーダー)と分岐予測があり、SIMD命令も使う | SIMT。スレッドのグループ(たとえば32個)が、同じ命令をそろって実行する |
| 制御回路とキャッシュ | 大きなキャッシュと高度な制御回路が、チップ面積の多くを占める | 面積の多くを演算器に使う。スレッドあたりのキャッシュは小さい |
| メモリ遅延の隠し方 | 主にキャッシュとプリフェッチ | 主に、待っているスレッドから別の実行可能なスレッドへ切り替える |
| メモリ | DDRやLPDDR。帯域は一般に数十〜数百GB/s | GDDRやHBM。帯域は一般に数百GB/s〜数TB/s |
| 分岐 | 分岐や不規則なコードに強い | グループ内のスレッドが別々の分岐に進むと遅くなる(ダイバージェンス) |
| データの置き場所 | メインメモリを直接扱う | 外付けのGPUは専用メモリを持つので、PCIeなどでデータをコピーする必要がある |
| プログラミング | ほとんどの言語やツールが使える | CUDA、HIP、OpenCL、シェーダー言語などの専用のモデル |
| 得意な処理 | OS、データベース、制御ロジック、一般的なアプリケーション | グラフィックス、行列・ベクトル計算、ディープラーニング、シミュレーション |
数値は代表的な目安で、世代や製品によって異なります。