メインコンテンツへスキップ
見出し画像

GPUとは? CPUとの違いと、AIの計算に向く理由。並列計算とHBM

    AI のニュースでは、GPU という半導体の名前がよく出てきます。GPU は、もともと画面に映す画像を作るための半導体でした。

    この記事では、CPU と GPU の設計の違い、画像の計算から AI の計算へ使い道が広がった歴史、GPU が AI の計算に向く理由、そして GPU に数を届ける HBM(広帯域メモリ)の役割を、順に整理します。

    AI の計算の中身が、掛け算と足し算(積和)の繰り返しであることは、記事「AIは、なぜ大量の半導体を使うのか。行列の計算、学習と推論」で扱いました。

    CPU やメモリなど、働きごとの半導体の種類は、記事「半導体の種類と用途。計算・記憶・電力・光とセンサーの働きから」で扱いました。

    本文の[1]のような番号は、押すと出典のページが開きます。

    画像
    この記事の流れ。CPU と GPU の違い、画像の計算から AI へ広がった歴史、行列の計算に向く理由、数を届ける HBM

    CPU と GPU は、何をする半導体か

    CPU:コンピューターの中枢

    CPU(中央処理装置)は、コンピューターの中枢を担う電子回路で、プログラムの実行、数値演算、情報処理、機器の制御などを行います[1]。命令を読み解いて実行し、計算を行いながら、外部の装置と信号をやり取りして制御します[1]。

    パソコンでは、文書の作成、表計算、ウェブの閲覧など、性質の違う多くの仕事を CPU が受け持っています。順番に従って、次々と違う種類の命令を処理していくのが、CPU の得意なことです。

    GPU:画像を作るための計算から始まった

    GPU は、3次元のコンピューターグラフィックス(立体を画面に描く技術)に必要な計算を行う半導体です[2]。別の用語辞典では、画面に表示する画像データを作る専用の半導体と説明され、以前は CPU に計算させていた映像を、今は専用の半導体に任せて負担を減らしていると書かれています[2]。

    GPU という名前は、Graphics Processing Unit(画像を処理する装置)の頭文字です。

    CPU と GPU は、設計の目標が違う

    少数の命令の流れを速く、多数の流れを同時に

    NVIDIA の CUDA の解説は、GPU と CPU は異なる目標を念頭に設計されていると述べています[3]。CPU は、一続きの命令の流れ(スレッド)を、できるだけ速く実行することに優れるよう設計され、同時に実行できるスレッドは数十です[3]。

    これに対して、GPU は、数千のスレッドを同時に実行することに優れるよう設計されています[3]。1つのスレッドの速さを抑える代わりに、全体として処理できる量を大きくする設計です[3]。

    トランジスタの使い道が違う

    同じ解説によると、GPU は並列性の高い計算に特化しており、より多くのトランジスタをデータの処理に割り当てています[3]。一方、CPU は、より多くのトランジスタを、データのキャッシュと流れの制御に割り当てています[3]。

    トランジスタは、電気の流れをオンとオフで切り替える小さな部品で、半導体の回路の基本の単位です。キャッシュは、よく使うデータを計算の部品の近くに置いておく、小さく速いメモリです。流れの制御は、次にどの命令を実行するかを決める仕事です。

    画像
    CPU と GPU の、チップの中の使い方の違い(模式図)。CPU は制御とキャッシュに多く、GPU は計算の部品に多くを割り当てる

    得意な仕事を分けて受け持つ

    たとえるなら、CPU は、どんな仕事も素早くこなす少数の熟練の職人の集まりです。GPU は、決まった単純な作業を、大勢の作業者が一斉に進める作業場に近いといえます。

    ただし、GPU があれば CPU が要らなくなるわけではありません。HBM などのメモリを作る Samsung の解説は、AI の計算を行うチップについて、CPU は、データの前処理、仕事の割り振り、システムの管理を受け持つことが多いと説明しています[4]。同じ解説は、GPU の効率は、計算の種類によって変わるとも述べています[4]。

    順番に従って違う種類の仕事を次々と処理する部分は CPU が、同じ手順の計算を大量に同時に進める部分は GPU が受け持つ、という分担です。GPU は CPU の代わりではなく、CPU と組み合わせて使う半導体です。

    画像
    CPU と GPU の分担。順番に進める仕事は CPU、同じ計算を大量に同時に進める仕事は GPU

    なぜ、画像の計算は同時に進められるのか

    画面は、画素の集まり

    画面に映る画像は、画素(ピクセル)と呼ばれる小さな点の集まりです。横1920個、縦1080個の画素の画面なら、画素の数は次のとおりです。

    1920 × 1080 = 207万3600

    画素ごとに、どの色で光らせるかを計算します。動く映像では、画面を1秒間に何十回も描き直すため、この計算も繰り返します。

    画素ごとの計算は、互いの答えを待たない

    画素の色の計算は、多くの場合、画素ごとに同じ手順で、ほかの画素の答えを待たずに進められます。百科事典では、画像のように、データとそれに対する処理を本質的に並列に行うべきものもあると説明されています[5]。

    並列処理は、多数の情報に同じ処理を行う場合に、同じ装置を多数並べて同時に実行することで、全体の処理の速さを上げる方法です[5]。Samsung の解説は、GPU の並列性の高い設計が、もともと多数の画素を同時に処理するために作られ、深層学習の中心にある行列の計算にもよく合うと説明しています[4]。

    画像
    画素ごとの計算。同じ手順を、互いの答えを待たずに、多数の画素で同時に進められる

    画像の計算から、AI の計算へ(年表)

    GPU の使い道は、画像の計算から、科学技術の計算、そして AI の計算へと広がってきました。主な出来事を、年の順に並べます。

    決まった処理の専用回路から始まった

    NVIDIA の資料によると、GPU は最初、リアルタイムの3次元の描画の中で並列の処理を速くする、決まった機能だけを持つハードウェアでした[3]。NVIDIA は、1999年8月に発売した GeForce 256 を、業界で最初の GPU としています[6]。NVIDIA の研究者が2021年に学術誌 IEEE Micro に書いた論文は、この GPU を、大量の小数の計算と高いメモリの帯域幅を必要とする、リアルタイムの描画のための専用のプロセッサーと説明しています[7]。

    プログラムで動かせるようになった

    世代を重ねるごとに、GPU は、プログラムで動きを決められる部分が増えていきました[3]。同じ資料によると、2003年までに、描画の手順の一部の段階が完全にプログラムで動かせるようになり、場面や画像の部分ごとに、独自の処理を並列に実行できるようになりました[3]。

    同じ論文は、プログラムで動かせることと、小数を含む計算の性能の組み合わせによって、GPU を科学的な計算に使う上で魅力的になったと述べています[7]。

    画像以外の計算に使うための仕組み

    NVIDIA は、2006年に CUDA を発表しました。CUDA は、画像を描くための仕組みを通さずに、どんな計算でも GPU の処理の能力を使えるようにするためのものです[3]。

    GPU を画像の処理以外の目的に使う技術を GPGPU と呼びます[8]。単純だが大量の計算を繰り返す必要がある、科学技術の計算などに向くとされます[8]。

    深層学習で使われるようになった

    2012年に発表された、画像を見分けるニューラルネットワークの論文で、著者らは、学習に GTX 580(メモリ3ギガバイト)という GPU を2台使い、5〜6日かかったと書いています[9]。

    同じ論文は、当時の GPU が、最適化した計算の実装と組み合わせることで、大きなニューラルネットワークの学習を可能にするだけの能力を持つと述べています[9]。先に挙げた2021年の論文は、GPU を深層学習の主要な基盤と位置づけています[7]。

    画像
    GPU の年表。画像を描く専用の回路から、プログラムで動かせる GPU、画像以外の計算、深層学習へ

    GPU が、AI の計算に向く理由

    AI の計算の中心は、積和

    AI の計算の中心は、入力に重みを掛けて足し合わせる積和の繰り返しです。詳しくは冒頭に挙げた AI と半導体の記事で扱いましたが、たとえば、入力が2と3、重みが1と2なら、2 × 1 + 3 × 2 = 8 と計算します。

    NVIDIA の資料は、掛け算と足し算を組み合わせた計算が、今のニューラルネットワークで最も頻繁に行われる計算だと述べています[10]。重みを縦と横に並べた行列を使うと、多くの積和をまとめて書けます。

    それぞれの積和は、互いの答えを待たない

    同じ入力2と3に、別の重み3と1を掛けると、2 × 3 + 3 × 1 = 9 です。8を求める計算と9を求める計算は、互いの答えを使わないため、別々の計算の部品で同時に進められます。

    入力と重みの数が1000ずつになれば、積和の答えは1000個、掛け算は100万回になります。画素ごとの計算と同じように、同じ手順の計算が、互いの答えを待たずに大量に並ぶ形です。

    百科事典では、GPGPU は行列の計算に特化した補助のプロセッサー(コプロセッサー)とされています[8]。深層学習の主な計算が行列の計算であるため、その処理を速くするハードウェアとして注目され、最先端の深層学習の学習には、多数の GPGPU を並列に動かすことが欠かせなくなっていると説明されています[8]。

    画像
    行列の計算を GPU に割り振る。答えの1つずつを別の計算の部品が受け持ち、同時に進める

    GPU の中の、計算の区画

    NVIDIA の資料は、GPU を、計算の区画とメモリの階層からできた、並列性の高い処理装置と説明しています[10]。NVIDIA の GPU は、SM(ストリーミング・マルチプロセッサー)と呼ぶ多数の計算の区画、チップの上の L2 キャッシュ、広い帯域のメモリでできています[10]。

    計算の命令は SM が実行し、データとプログラムは、L2 キャッシュを通してメモリから読み出されます[10]。同じ資料は、例として、NVIDIA A100 という GPU が、108個の SM、40メガバイトの L2 キャッシュ、80ギガバイトの HBM2 のメモリを持ち、メモリから最大で毎秒2039ギガバイトを読み書きできるとしています[10]。

    GPU は、並列の資源を生かすため、多くのスレッドを同時に実行します[10]。また、ある計算が前の答えを待つ間は、別のスレッドの実行に切り替えて、待ち時間を隠します[10]。

    NVIDIA の GPU には、行列の掛け算と足し算を速くするための Tensor コア という部品もあり、Volta という世代から入っています[10]。AI の計算だけに絞った専用のチップの話は、ここでは扱いません。

    画像
    GPU の中のつくり(NVIDIA の資料をもとにした模式図)。多数の SM、L2 キャッシュ、HBM

    HBM:計算の区画に、数を届けるメモリ

    計算が速くても、数が届かなければ待つ

    計算の区画がいくら多くても、計算に使う数(重みや入力)がメモリから届かなければ、計算は進みません。Samsung の解説は、プロセッサーの性能に比べてメモリが十分な速さでデータを送れないと、計算の資源が計算よりも待つことに多くの時間を使うと述べています[4]。この不釣り合いは、一般にメモリの壁と呼ばれています[4]。

    メモリの性能には、2つの見方があります。帯域幅は、一定の時間に運べるデータの量で、容量は、置いておけるデータの量です[4]。AI の計算では、容量だけでなく、帯域幅も大切になります。

    画像
    容量と帯域幅。容量は置ける量、帯域幅は一定の時間に運べる量

    1バイトを読む間に、何回計算できるか

    NVIDIA の資料は、処理装置の計算の速さとメモリの帯域幅の比を「ops:byte 比」と呼んでいます[10]。例として挙げられた V100 という GPU は、Tensor コアで16ビットの小数(FP16)を計算する場合の最大の速さが毎秒125テラ回(テラは1兆)、チップの外のメモリの帯域幅が約毎秒900ギガバイトです[10]。

    この2つの数から、比を計算すると次のとおりです。

    125兆 ÷ 9000億 = 約139

    チップの外のメモリから1バイトを読む間に、約139回の計算ができる、という意味です。

    同じ資料によると、この比は、データがチップの中から来るか外から来るかによって、40から139の間になります[10]。1バイトあたりの計算の回数が、この比より少ない計算では、メモリの読み書きが全体の速さを決めることになります(AI と半導体の記事で扱った「メモリが律速」の状態)[10]。同じ資料は、よく使われる計算の多くは、1バイトあたりの計算の回数が少なく、2バイトの数を1つ読み書きするごとに1回しか計算しないこともあると述べています[10]。

    画像
    1バイトを読む間に、何回計算できるか(V100 の例、NVIDIA の資料の数から計算)

    HBM は、DRAM を積み重ねて、すぐ隣に置く

    この待ち時間を減らすために使われるのが HBM(High Bandwidth Memory、広帯域メモリ)です。Samsung の解説は、HBM が、縦に積み重ねる構造と幅の広い入出力の接続を組み合わせていると説明しています[4]。

    HBM では、複数の DRAM(データを一時的に置くメモリの一種)のチップを積み重ね、TSV(シリコン貫通電極:チップを上下に貫く配線)でつなぎます[4]。これにより、大量のデータを並列に動かせます[4]。

    HBM は、インターポーザー(チップどうしを細かい配線でつなぐ土台)などの技術を使って、AI のチップのすぐ近くに置かれます[4]。同じ解説によると、データの通り道が短くなることで、信号の損失やデータを送るための電力を減らせます[4]。

    画像
    HBM のつくり(模式図)。DRAM のチップを積み重ねて TSV でつなぎ、インターポーザーの上で GPU のすぐ隣に置く

    新しい規格:HBM4

    半導体の規格を決める業界団体 JEDEC は、2025年4月に、HBM の新しい規格 HBM4 を発表しました。発表によると、HBM4 は、2048ビットの幅の接続で、最大毎秒8ギガビットの速さでデータを送り、全体の帯域幅は最大で毎秒2テラバイトになります[11]。

    2048本の信号の線のそれぞれが毎秒8ギガビットを送ると考えて、この数を確かめると、次のとおりです。8ビットが1バイトです。

    2048 × 8 = 1万6384(ギガビット毎秒)
    1万6384 ÷ 8 = 2048(ギガバイト毎秒)
    2048ギガバイト毎秒 = 約2テラバイト毎秒

    同じ発表は、HBM4 が、DRAM を4段・8段・12段・16段に積み重ねる構成に対応するとしています[11]。また、大量のデータを効率よく扱う必要がある用途として、生成 AI、高性能の計算、高性能のグラフィックスカード、サーバーを挙げています[11]。

    画像
    HBM4 の帯域幅(JEDEC、2025年4月)。2048ビットの幅 × 毎秒8ギガビットで、約2テラバイト毎秒

    まとめ

    • CPU は、少数のスレッドをできるだけ速く実行するよう設計され、トランジスタをキャッシュと流れの制御に多く割り当てる

    • GPU は、数千のスレッドを同時に実行するよう設計され、トランジスタをデータの処理に多く割り当てる

    • 画像の計算は、画素ごとに同じ手順を、互いの答えを待たずに進められるため、GPU は並列処理に向く形で発達した

    • GPU は、決まった機能の回路から、プログラムで動かせる装置になり、CUDA などで画像以外の計算にも使われ、深層学習の主要な基盤になった

    • AI の計算の中心の積和も、互いの答えを待たずに大量に並ぶため、GPU の並列処理に合う

    • CPU は順番に進める仕事、GPU は同じ計算を大量に同時に進める仕事を受け持ち、組み合わせて使う

    • 計算の区画に数を届ける速さ(帯域幅)が不足すると、計算は待つ。HBM は、DRAM を積み重ねて GPU のすぐ隣に置き、帯域幅を大きくする

    画像
    この記事のまとめ。CPU と GPU の設計の違い、並列処理に合う計算、数を届ける HBM

    AI のニュースで GPU や HBM の名前が出てきたときは、同じ手順の計算を大量に同時に進めることと、その計算に数を途切れなく届けることの、2つの面から読むと、それぞれの部品が何を受け持っているのかが分かりやすくなります。

    免責事項

    この記事は、筆者が個人として調べたことをもとに、執筆時点の内容をまとめたものです。分かりやすさを優先し、CPU と GPU の内部のつくりの細かい点や例外を省いています。図のチップの中の配分は模式図で、特定の製品の実際の配置ではありません。

    製品の性能の数は、各社の資料が例として示した値で、製品や設定によって変わります。

    投資などの判断の助言ではありません。正確な情報は、出典や各機関・各社の公式の情報で確認してください。この記事の内容を利用して生じた損害については、責任を負いかねます。

    NDシステムズについて

    NDシステムズは、福岡県久留米市を拠点に、ホームページの制作、業務に合わせた事務のシステムの開発、AI・DX支援を行っています。まずはお気軽に無料相談でご相談ください。

    参考文献

    1. CPU(コトバンク)

    2. GPU(コトバンク)

    3. CUDA Programming Guide 1.1. Introduction(NVIDIA)(英語)

    4. Part 1: The Evolution of AI and AI Chips, and the HBM That Powers Them(Samsung Semiconductor の技術ブログ。掲載日の表示なし)(英語)

    5. 並列処理(コトバンク)

    6. NVIDIA Corporate Timeline 1999(NVIDIA)(英語)

    7. Evolution of the Graphics Processing Unit (GPU)(W. Dally ほか、IEEE Micro、2021年12月。NVIDIA Research の紹介ページ)(英語)

    8. GPGPU(コトバンク)

    9. ImageNet Classification with Deep Convolutional Neural Networks(A. Krizhevsky、I. Sutskever、G. E. Hinton、NIPS 2012(現在の NeurIPS)の論文集、PDF)(英語)

    10. GPU Performance Background User's Guide(NVIDIA Deep Learning Performance)(英語)

    11. JEDEC and Industry Leaders Collaborate to Release JESD270-4 HBM4 Standard(JEDEC の発表、Business Wire 配信、2025年4月16日)(英語)

     
     
    福岡県久留米市のNDシステムズです。IT・AI、語学、会計、数学、九州北部の風景などについて、調べて考えたことを書いています。記事は筆者が個人として調べた執筆時点の内容で、専門家の助言ではありません。最新の情報は出典でご確認ください。

    あなたへのおすすめ