並列およびマルチコアアーキテクチャ
並列およびマルチコアアーキテクチャは、複数の操作を同時に実行するハードウェア(チップ上の複数のコア、ベクトルおよびSIMDユニット、大規模並列GPUなど)と、並列作業が正確かつ効率的に進行することを可能にするメモリおよび通信構造に関係しています。
Definition
並列およびマルチコアアーキテクチャとは、複製されたコア、広範なデータ並列ユニット、または特殊なアクセラレータを通じて複数の計算を同時に実行するコンピュータハードウェアの設計であり、それらを調整する相互接続およびメモリメカニズムを含みます。
Scope
この分野は、並列処理のためのハードウェア構成を対象としています。具体的には、チップマルチプロセッサとメニーコア設計、共有メモリシステムとそのコヒーレンスおよび一貫性、データレベル並列処理のためのSIMDおよびベクトルプロセッサ、そしてGPUアーキテクチャです。並列ハードウェアがどのように構築され、その性能がどのようにスケーリングされるかを扱います。並列および分散プログラミングのソフトウェア側面や、分散および並列コンピューティングで扱われるクラスタ規模の分散システム、そしてプロセッサマイクロアーキテクチャで扱われるシングルコア実行エンジンは対象外です。
Sub-topics
Core questions
- 並列ハードウェアはどのように性能をスケーリングし、そのスケーリングを制限するものは何ですか?
- 複数のコアはどのようにチップ上に統合され、共有メモリに接続されますか?
- 共有メモリハードウェアはどのようなメモリ一貫性とコヒーレンスの保証を提供しなければなりませんか?
- SIMD、ベクトル、およびGPUの設計はどのようにデータレベル並列処理を利用しますか?
- 並列アーキテクチャは、ワットあたりの有用なスループットを最大化するために、どのようにワークロードに適合させられますか?
Key concepts
- チップマルチプロセッサ
- スレッドレベル並列処理
- データレベル並列処理
- SIMDおよびベクトル処理
- GPUおよびメニーコア
- 共有メモリとコヒーレンス
- メモリ一貫性
- 相互接続ネットワーク
- アムダールの法則とスケーラビリティ
- 同期ハードウェア
Key theories
- アムダールの法則
- 計算を並列化することによる高速化は、逐次的に実行されなければならない部分によって制限されます。プロセッサが無限にあったとしても、逐次部分は全体的な高速化の上限を定め、並列アーキテクチャの設計と評価に影響を与えます。
- フリンの並列処理分類
- 並列ハードウェアは、命令ストリームとデータストリームの組み合わせ方によって分類されます。例えば、データ並列処理のための単一命令複数データ(SIMD)や、マルチコアおよびマルチプロセッサシステムのための複数命令複数データ(MIMD)などがあり、この分類はアーキテクチャの選択の枠組みとなります。
Mechanisms
マルチコアプロセッサは、オンチップ相互接続によって接続され、1つ以上のキャッシュレベルとメモリインターフェースを共有する複数のコアを1つのダイ上に配置します。コヒーレンスプロトコルはキャッシュの一貫性を維持し、メモリ一貫性モデルはコア間で認識されるメモリ操作の順序を定義します。データ並列ハードウェア(ベクトルユニット、SIMDレーン、多数の軽量コアを持つGPU)は、多くのデータ要素にわたって1つの操作を適用し、同期プリミティブは並列スレッドを調整します。
Clinical relevance
シングルコアのクロックスケーリングが停滞した後、並列およびマルチコアアーキテクチャは高性能化の主要な道筋となり、事実上すべての現代のプロセッサはマルチコアです。GPUとSIMDユニットは現在、グラフィックス、科学計算、そしてディープラーニングの中核をなす行列演算を支えており、並列ハードウェアは高性能計算および人工知能のワークロードにとって中心的な存在となっています。
History
並列マシンは、1970年代のCray-1のようなベクトルスーパーコンピュータや、1980年代から1990年代の研究用マルチプロセッサにまで遡ります。2000年代半ば頃の周波数スケーリングの終焉は、業界をマルチコアチップを標準とする方向へと押し進めました。GPUは固定機能グラフィックスパイプラインからプログラマブルなメニーコアアクセラレータへと進化し、データ並列アーキテクチャは現代の機械学習の基礎となりました。
Debates
- 汎用マルチコア対特殊化アクセラレータ
- 均質なマルチコアからの収穫逓減に伴い、特定のワークロードに対する効率性と引き換えに、プログラマビリティと柔軟性を犠牲にして、ドメイン固有のアクセラレータ(GPU、テンソルユニット)をどの程度優先すべきか、汎用コアと比較して議論があります。
Key figures
- Gene Amdahl
- Michael J. Flynn
- John L. Hennessy
- David A. Patterson
- David E. Culler
Related topics
Seminal works
- hennessy2019
- amdahl1967
- patterson2020
Frequently asked questions
- なぜプロセッサはマルチコアに移行したのですか?
- シングルコアのクロック周波数を上げることは、2000年代半ばに電力と熱の限界に達しました。より多くのコアを追加することで、同じ電力予算内で全体の処理能力を向上させることができたため、マルチコアは性能向上を維持する主要な方法となりました。ただし、これにより高速化の負担は並列ソフトウェアに移行しました。
- GPUはマルチコアCPUとどう違うのですか?
- CPUは、低遅延で汎用的な実行に最適化された、少数の強力なコアを持っています。GPUは、高スループットのデータ並列作業に最適化された、多数のより単純なコアを持っており、多くのデータ要素にわたって同じ操作を実行します。これはグラフィックスや高密度数値計算には適していますが、すべてのワークロードに適しているわけではありません。