GPUのコア:グラフィックスでの動作

グラフィックカードメーカーのマーケティングによって引き起こされる混乱のXNUMXつは、コアの数について話すときです。 GPU 持っている、私たちは彼らが数を誇張するために嘘をついていると予想します。 しかし、GPUのコアで何を理解しているのでしょうか、それらを CPU そして、どのような違いがありますか?

最新モデルのグラフィックカードを購入しようとすると、最初に目にするのは、大量のコアまたはプロセッサについて説明していることですが、それが間違った命名法であると説明するとどうなりますか?

GPUのコア:仕組み

メーカーが作る罠は、たとえばコアの名前で単純なALUまたは実行ユニットを呼び出すことです。 NVIDIA 32ビット浮動小数点で動作するALUをCUDAコアと呼びますが、厳密な場合、コアまたはプロセッサと呼ぶことはできなくなります。 それらは、そのように考慮されるべき基本的な要件を満たしていません。

では、GPUのコアまたはプロセッサとは何ですか?

CicloInstrucciónUnidadControl

コアまたはプロセッサは、完全な命令サイクルを一緒に実行できる集積回路またはその一部です。これは、メモリからの命令のキャプチャ、デコード、およびそれらの実行です。

ALUは実行ユニットにすぎないため、完全なコアとなるには制御ユニットが必要です。 そして、私たちは完全なコアとは何だと思いますか? さて、NVIDIAがSMと呼んでいるものは インテル サブスライスを呼び出し、 AMD 計算単位。

これは、命令サイクル全体が行われるのはこれらのユニットであり、命令サイクルの一部のみを担当するALUまたは実行ユニットではないためです。

GPUはプログラムを「実行」しません

NVIDIA GPU

GPUは、私たちが知っているようにプログラムを実行しないことに注意してください。これらは一連の命令です。 例外は、実際にはGPUコアであるもので実行されるシェーダープログラムです。

シェーダープログラムが行うことは、さまざまな段階でデータセットまたはグラフィカルプリミティブを操作することです。 ただし、ハードウェア機能レベルでは、これらはカーネルの形式で表示されます。

オペレーティングシステムのカーネルと混同しないように、カーネルは自己完結型のデータ+命令セットであり、GPUのコンテキストではスレッドとも呼ばれます。

GPUコアはCPUコアとどう違うのですか?

CPU GPU

主な違いは CPUは、主に命令レベルの並列性のために設計されています 一方、 GPUは、スレッドレベルの並列処理に特化しています。

命令レベルの並列性は、同じものの複数の命令を同時に実行することにより、プログラムの命令時間を短縮することを目的としています。 スレッドレベルの並列処理に基づくカーネルは、同時に複数のプログラムを取り、それらを並列に実行します ,

最新のCPUは、アーキテクチャでILPとTLPを組み合わせていますが、GPUは純粋にTLPのままです コントロールユニットを簡素化し、できるだけ多くのコアを配置できるようにするために、ILPを使用しません。

GPUでの実行とCPUでの実行

チップポルデントロ

ほとんどの場合、スレッドがGPUコアALUに到達すると、スレッドには命令とデータが直接含まれますが、GPUカーネルスケジューラの実行の遅延を回避するために、データをキャッシュとメモリで検索する必要がある場合があります。それが行うのは、いわゆるラウンドロビンであり、そのスレッドを渡して後で実行します。

CPUではこれを行うことができません。これは、スレッドが非常に複雑な命令のセットであり、スレッド間の依存関係が高いためです。GPUでは、実行スレッドが非常に小さいため、問題はありません。単一の命令期間の多くの場合、「カーネル」に自己完結型です。

実際には、GPUが行うことは、いわゆるウェーブにカーネルのセットを収集し、各ウェーブをGPUのALUに割り当てることです。これらは、カスケードで順番に実行されます。 各カーネルにはスレッドまたはカーネルの制限があり、新しいリストが必要になるまでしばらくの間ビジー状態を維持します。これにより、膨大な数のコアが常にメモリに要求を行うことを回避できます。