GPUチップの設計方法
Chapter 1 Introduction to Gpu Chip Design

第1章: GPUチップ設計の概要

GPUとCPUの違い

グラフィックスプロセッシングユニット(GPU)は、フレームバッファ内の画像の高速な操作と変更を行うように設計された特殊な電子回路です。GPUは当初、ビデオゲームなどのグラフィックス集約型アプリケーションのCPUからのレンダリング処理をオフロードするために開発されました。

CPUは汎用コンピューティング向けに設計されており、さまざまなプログラムをサポートするための複雑な制御ロジックを備えているのに対し、GPUは並列処理に適した数多くの小さく効率的なコアで構成されています。これにより、GPUは大量のデータを並列に処理できるグラフィックスレンダリングに適しています。

CPUとGPUの主な構造的な違いは以下の通りです:

  • コア数: GPUには数百数千の小さなコアがあるのに対し、CPUには264個の大きな強力なコアがあります。
  • キャッシュ階層: CPUには遅延を低減するための大容量のキャッシュがありますが、GPUはより小さなキャッシュを持ち、高帯域幅に依存して遅延を補償しています。
  • 制御ロジック: CPUには複雑な分岐予測と乱数実行の機能がありますが、GPUの制御ロジックははるかに単純です。
  • 命令セット: CPUは汎用コンピューティング向けの幅広い命令セットをサポートしますが、GPUの命令セットはグラフィックス向けに最適化されています。
  • メモリ帯域幅: GPUには多数のコアを供給するための非常に高いメモリ帯域幅(最大1 TB/s)がありますが、CPUの帯域幅は50-100 GB/sと低い。
  • 浮動小数点性能: GPUは非常に高い浮動小数点性能を持ち、HPC(高性能コンピューティング)やAIワークロードに適しています。

要するに、GPUの高度な並列処理アーキテクチャにより、大量のデータを並列に処理する作業に優れていますが、CPUの高度な制御ロジックにより、より複雑な汎用コンピューティングに適しています。ここは日本語の翻訳です。コードの部分は翻訳していません。コメントのみ翻訳しています。

GPUの主要な用途と重要性

過去20年間、GPUは最も重要な計算技術の1つとなってきました。GPUの高度に並列化された構造により、並列処理の大きなデータブロックを処理するアルゴリズムでは、汎用CPUよりも効率的です。GPU技術の急速な進歩を推進してきた主要な用途分野には以下のようなものがあります:

コンピューターグラフィックスとゲーミング

GPUの最も一般的な用途は、ディスプレイ出力用のフレームバッファーにおける画像の高速な生成です。GPUは、コンピューターグラフィックスと画像処理に優れており、並列処理の大きなデータブロックを効果的に処理できます。GPUは、最新のゲーミングコンソールやゲーミングPCの標準的な構成要素となっています。

高性能コンピューティング(HPC)

GPUの並列処理能力により、並列アルゴリズムを使って非常に大きなデータセットを処理する科学計算アプリケーションに適しています。GPUは、気象予報、分子動力学シミュレーション、地震解析などの高並列ワークロードを加速するために、スーパーコンピューターやHPCクラスターで広く採用されています。

人工知能とマシンラーニング

GPUの並列処理能力は、近年の深層学習とAIの急速な進歩に不可欠でした。複雑な深層ニューラルネットワークの学習には膨大な計算能力が必要で、GPUは深層学習アルゴリズムの中心となる行列乗算演算を効率的に実行できるため、大規模なAIモデルの学習に最適なプラットフォームとなっています。主要なクラウドAIプラットフォームやAI用スーパーコンピューターでは、GPUが広く使用されています。今日の eSearch は GPU に大きく依存しています。

暗号通貨マイニング

GPU は暗号通貨マイニングにも広く使用されています。その並列処理能力は、ビットコインのような proof-of-work ベースの暗号通貨で使用される暗号化ハッシュアルゴリズムに適しています。2017年の暗号通貨ブームの際には、AMD およびNVIDIAの高性能GPUが非常に高い需要がありました。

高速コンピューティングとエッジAI

ムーアの法則の鈍化に伴い、CPUと協調して要求の高い作業負荷を高速化する特殊なアクセラレータチップのようなヘテロジニアスコンピューティングへの大きな傾向があります。GPUは、スマートフォン、スマートスピーカー、自動車システムなどのエッジデバイスにAI機能をもたらすためにも使用されています。モバイルSoCには、グラフィックスとAIワークロードの両方を加速するために使用される統合GPUが一般的に搭載されています。

GPUの大規模な並列性と高いメモリ帯域幅は、コンピューターグラフィックス以外の多くの用途で、今日最も重要なコンピューティングプラットフォームの1つにしています。汎用プロセッサの限界に達するにつれ、GPU、FPGA、AIアクセラレータなどの特殊チップが、未来のコンピューティングエンジンとして益々重要になっています。

コンピューテーションアクセラレータの概況

近年、一般目的のCPUからの性能向上が鈍化する中、特定のワークロードを高速化できる専用のアクセラレータチップへの傾向が高まっています。GPUは最も代表的なアクセラレータの1つですが、他にも重要なカテゴリーがいくつかあります:

Field Programmable Gate Arrays (FPGAs)

FPGAは、プログラム可能な相互接続によって接続された構成可能なロジックブロック(CLB)のマトリックスを中心とするセミコンダクタデバイスです。FPGAは製造後に目的のアプリケーションや機能要件に合わせて再プログラムできるため、ASICよりも柔軟な選択肢を提供します。FPGAは一般的に航空宇宙、防衛、ASICプロトタイピング、医療イメージング等で使用されています。加齢、コンピュータービジョン、音声認識、暗号化

特定用途向け集積回路(ASIC)

ASICは、CPUのような汎用目的ではなく、特定の用途向けにカスタマイズされた集積回路です。現代のASICには、32ビットまたは64ビットのプロセッサ、ROM、RAM、EEPROM、フラッシュメモリなどのメモリブロックを含む完全なプロセッサが含まれることが多くなっています。ASICは、ビットコインマイニング、AIアクセラレータ、5G無線通信、IoTデバイスなどに広く使用されています。

AIアクセラレータ

AIアクセラレータは、特にニューラルネットワークの学習と推論を高速化するために設計された専用チップです。Google のTensor Processing Unit (TPU)、Intel の Nervana Neural Network Processor (NNP)、スタートアップ企業が独自に開発しているAIチップなどが例として挙げられます。これらのチップは、低精度演算、効率的な行列乗算回路、演算とメモリの密接な統合により、GPUやCPUに比べてAIワークロードでのパフォーマンスあたりの消費電力が大幅に向上しています。

ビジョン処理ユニット(VPU)

VPUは、コンピュータービジョンと画像処理のワークロードを高速化するために設計された専用チップです。画像信号処理、ステレオビジョン、CNN ベースのオブジェクト検出などの専用ハードウェアを備えています。VPUは、自動運転ADAS、ドローン、AR/VRヘッドセット、スマートカメラ、その他のエッジデバイスなど、低遅延の視覚処理を必要とするアプリケーションで広く使用されています。

ニューロモルヒック型およびQuantumチップ

さらに先を見ると、ニューロモルヒック型チップは脳の構造を模倣することで高速かつ省エネのニューラルネットワークパフォーマンスを実現しようとしています。一方、Quantumチップは量子力学的効果を利用して、特定の問題を古典コンピューターよりも高速に解くことができます。これらは未だ研究段階にありますが、将来的に重要なアクセラレータとなる可能性があります。

コンピューティングの全体的な傾向は、ドメイン固有のアーキテクチャとともに、汎用CPUに加えて様々なアクセラレータを統合することで、特定のワークロードを高速化することです。重要なワークロード。GPUはこの加速コンピューティングモデルを開拓し、最も重要なタイプのアクセラレータの1つのままですが、多くの応用分野で他の様々なアクセラレータも重要になってきています。

GPUハードウェアの基礎

現代のGPUは、いくつかの主要なハードウェアコンポーネントで構成されています:

ストリーミングマルチプロセッサ(SM)

SMはNVIDIAのGPUアーキテクチャの基本的な構成要素です。各SMには、制御ロジックと命令キャッシュを共有するCUDAコア(通常64〜128個)のセットが含まれています。各CUDAコアには、完全にパイプラインされた整数演算論理ユニット(ALU)と浮動小数点ユニット(FPU)があります。通常、GPUチップには16〜128個のSMがあり、数千のCUDAコアが存在します。

テクスチャ/L1キャッシュ

各SMには、パフォーマンスを向上させ、メモリトラフィックを削減するためのテクスチャキャッシュとL1キャッシュが用意されています。テクスチャキャッシュは空間的な局所性を最適化するように設計されており、グラフィックスワークロードに特に効果的です。L1キャッシュはメモリ操作(ロード、ストア)を処理し、低レイテンシでの高速なデータアクセスを提供します。

共有メモリ

共有メモリは、SMの中のCUDAコア間で共有される高速なオンチップメモリです。プログラム可能なキャッシュとして使用できるため、頻繁に再利用されるデータへのバンド幅の高い低レイテンシアクセスが可能になります。共有メモリは等サイズのメモリモジュール(バンク)に分割されており、コアによって同時にアクセスできます。

レジスタファイル

各SMには、オペランドの低レイテンシストレージを提供する大きなレジスタファイルがあります。レジスタファイルは、常駐スレッド間で分割されており、各スレッドに専用のレジスタセットが提供されます。レジスタへのアクセスは通常、命令あたり0クロックサイクルの遅延で行われますが、レジスタの読み取り後の書き込み依存関係やレジスタメモリバンクの競合により遅延が発生する可能性があります。

ワープスケジューラ

ワープスケジューラは、SMでのワープの管理とスケジューリングを担当しています。ワープは、CUDAコアで同時に実行される32個のスレッドのグループです。ワープスケジューラーは、実行準備ができたワープを選択し、コアに割り当てることで、高い利用率とレイテンシの隠蔽を実現します。

インターコネクトネットワーク

インターコネクトネットワークは、SМをGPUの共有L2キャッシュとメモリコントローラーに接続します。一般的にはクロスバースイッチとして実装され、複数のSМがL2キャッシュとDRAМに同時にアクセスできるようになっています。

メモリコントローラー

メモリコントローラーは、GPUのDRAМへのすべての読み取りと書き込みリクエストを処理します。DRAМアクセスパターンを最適化し、帯域幅の利用率を最大化する責任があります。最新のGPUには非常に広いDRAМインターフェイス(256ビットから4096ビット)があり、GDDR6やHBM2などの高帯域メモリテクノロジーをサポートしています。

RTコアとテンサーコア

最新のNVIDIAのGPUには、レイトレーシング(RTコア)とAI/深層学習(テンサーコア)を高速化するための専用ハードウェアユニットも含まれています。RTコアは、境界ボリュームヒエラルキー(BVH)の走査とレイ-三角形の交差テストを高速化し、テンサーコアは行列乗算や畳み込み演算の高スループットを提供します。

これらのハードウェアコンポーネントが連携することで、GPUは非常に高い演算スループットとメモリ帯域幅を実現できるようになり、グラフィックス、HPC、AIなどの並列ワークロードに適しています。最新GPUの高度に並列化されたアーキテクチャと専用ハードウェアユニットにより、特定のワークロードでは汎用CPUに比べて桁違いの性能を発揮できるようになっています。

GPUの歴史

GPUの歴史は、1990年代の3Dグラフィックスアクセラレーションの初期に遡ります:

  • 1990年代: 3dfx VoodooやNVIDIA RIVA TNTなどの初期の3Dアクセラレータが1990年代半ばに登場し、3DグラフィックスレンダリングをCPUから offloadするようになりました。これらは固定機能デバイスで、特定のグラフィックスAPIに最適化されており、プログラム可能ではありませんでした。

  • 1999年: NVIDIAがGeForce 256を発表しました。これは、標準の3Dレンダリングパイプラインに加えて、ハードウェアによるトランスフォームとライティング(T&L)を実装した最初のGPUでした。ここは日本語の翻訳です。コードの部分は翻訳していません。コメントのみ翻訳しています。

  • 2001年: NVIDIAは、プログラム可能な頂点シェーダーとピクセルシェーダーを導入したGeForce 3を発売しました。これにより、より現実的で動的なビジュアルエフェクトが可能になり、固定機能から可プログラム可能なグラフィックスパイプラインへの移行が始まりました。

  • 2006年: NVIDIA社のGeForce 8800 GTXの発売は重要な転換点でした。これは初めてCUDAプログラミングモデルをサポートするGPUで、開発者がグラフィックス以外の一般目的コンピューティング(GPGPU)にGPUを使えるようになりました。128のCUDAコアを搭載し、500 GFLOPSを超えるパフォーマンスを発揮しました。

  • 2008年: Apple、AMD、Intel、NVIDIAは、ヘテロジニアスシステムの並列プログラミングのためのオープン標準であるOpenCLを開発するワーキンググループを立ち上げました。OpenCLはベンダー非依存の選択肢を提供しましたが、CUDAが最も広く使用されるGPGPUプラットフォームのままでした。

  • 2010年: NVIDIAはFermiアーキテクチャを発表しました。最大512のCUDAコア、統一されたL1/L2キャッシュ階層、ECC対応メモリ、倍精度演算性能の向上など、GPUをHPCやサイエンティフィックコンピューティングの幅広い分野で活用できるようにしました。

  • 2016年: NVIDIAはPascalアーキテクチャのTesla P100を発表しました。HBM2メモリ、最大3584のCUDAコア、深層学習向けのFP16コアを特徴としており、10 TFLOPSを超えるパフォーマンスを発揮し、AIトレーニングのプラットフォームとしてのGPUの地位を確立しました。

  • 2018年: NVIDIAはTuringアーキテクチャを発表しました。リアルタイムレイトレーシングのためのRTコア、AIインファレンス高速化のためのTensorコアを導入し、ラスタライゼーションやGPGPUを超えて、高度なレンダリング技術とAI加速を実現しました。

結論

過去20年間、GPUは固定機能のグラフィックスアクセラレータから、高度にプログラム可能なデバイスへと進化してきました。GPUは、ゲームやビジュアライゼーション、ハイパフォーマンスコンピューティング、人工知能など、幅広い分野で重要な役割を果たしている、省エネルギーコンピューティングエンジンです。この変革を可能にした主な建築上の革新は以下のとおりです:

  • プログラマブルシェーディングの導入と、分岐とループのサポート
  • 異なるシェーディングタスクに同じ処理ユニットを使用できる統一シェーダーアーキテクチャ
  • CUDA やOpenCLなどの汎用プログラミングモデルのサポート追加
  • メモリレイテンシを隠し、算術ユニットの稼働率を維持するための、マルチスレッディングの広範な活用による、エネルギー効率の向上
  • メモリ帯域幅の継続的な改善と、GDDR6やHBM2などの高帯域メモリ技術の導入
  • レンダリングやAIワークロードを高速化するための、レイトレーシングやテンソル処理用の固定機能ユニットの搭載

将来的には、特殊化とヘテロジニアスコンピューティングが、パフォーマンスと効率の向上の主要なドライバーとなり続けると明らかです。GPUは、省エネルギーの並列処理の伝統と、ドメイン固有の機能を取り入れつつ汎用プログラミング可能性を維持する能力から、これらの傾向の最前線に位置し続けることができます。チップレットベースの設計や先進的なパッケージング技術により、GPUはさらに高いパフォーマンスに拡張し、より多くの機能を統合することができるようになります。

同時に、科学計算、データ分析、機械学習などの分野で、GPUが得意とする細粒度の並列性を示す作業負荷が増えるにつれ、GPUアクセラレーションの適用範囲も広がり続けています。これらの新興アプリケーションを高速化する能力により、GPUは将来の計算の進歩を牽引する上で、ますます重要な役割を果たすことになるでしょう。その建築を理解することが、GPUの潜在能力を引き出す鍵となります。