CPUおよびGPUでのこれらのユニットのロードストア、説明、およびユーティリティ

ロードストア

アーキテクチャの重要な部分のXNUMXつは、ロードストアユニットです。ロードストアユニットは、両方のメモリ関連の命令を実行する役割を果たします。 CPU および GPU。 機能とは何か、これらのユニットがシンプルでアクセスしやすい方法でどのように機能するかを知りたい場合は、読み続けてください。

CPUとメモリの通信は重要です。ここ、HardZoneでは、さまざまな要素を説明するためにいくつかの記事を作成しました。今度は、CPUとGPUの両方のアーキテクチャで不可欠であり、したがって不可欠なロードストアユニットの番です。 。

ロードストアユニットとは何ですか?

ロードストアユニット

これはCPUの実行ユニットであり、実行ユニットは、デコードされた命令を解決するために使用されるユニットです。 ちなみに、他の種類の実行ユニットがあることを思い出してください。

  • ALU:さまざまなタイプの算術演算の実行を担当するさまざまなタイプのユニットです。 それらは、単一の数値、数値の文字列、または行列でさえも機能します。
  • ジャンプユニット:これらのユニットは、コード内のジャンプ命令を受け取ります。つまり、実行はメモリの別の部分に移動します。

一方、ロード/ストアユニットは、アクセスに関連する命令の実行を担当します。 RAM 読み取りか書き込みかに関係なく、システムのメモリ。 L / Sユニットはありませんが、並行して動作し、データへのアクセスを管理するXNUMXつのタイプのユニットがあります。

その動作の最も簡単な説明は次のとおりです。ロードユニットはRAMメモリからレジスタへの情報の保存を担当し、ストアユニットは反対方向に情報を保存します。 機能するために、このタイプのユニット用に独自のメモリがあり、各命令のメモリ要求を格納します。

ロードストアユニットはどこにありますか?

ローカライズをロードストアします

最初に考えることができるのは、ロード/ストアユニットは可能な限りプロセッサに近いということですが、RAMからレジスタにデータを移動することが仕事であるにもかかわらず、RAMに直接アクセスすることはできません。 、ではなく、すでに説明した別のメカニズム:」 これは、CPUがRAMメモリに非常に迅速にアクセスする方法です 」が担当し、CPUのメモリインターフェイスとRAMの通信について説明します。

最も単純な概念では、ロード/ストアユニットは、プロセッサをRAMメモリと通信するインターフェイス、特にMARおよびMDRレジスタと通信し、これらのレジスタを操作したり、データを転送したりする権限を持つ唯一のユニットです。特定の命令を実行するために、さまざまなレジスタに接続します。

したがって、ロード/ストアユニットはメモリに最も近い部分には配置されませんが、異なる実行ユニットのレジスタのレジスタとすべてのプロセッサで使用されるメモリインターフェイスの中間に配置されます。 周囲にあります。

キャッシュ階層の追加

キャッシュプライマーnivelspllit

キャッシュは、その時点でコードが実行されている場所に最も近いデータをコピーするプロセッサへの内部メモリにすぎません。 階層内の新しいレベルごとにストレージ容量が大きくなりますが、同時に速度が遅くなり、待ち時間が長くなります。 代わりに、逆の方法で、各キャッシュレベルには前のキャッシュレベルの一部のみが含まれますが、より高速で待ち時間が短くなります。

現在のCPUでは、最下位レベルのキャッシュであるXNUMXつのレベルを除いて、すべてのレベルに同じメモリ内の命令とデータに関する情報が含まれています。 命令用のキャッシュとデータ用のキャッシュがある場合。 ロード/ストアユニットは、命令キャッシュとは相互作用しませんが、データキャッシュと相互作用します。

LSUデータキャッシュ

各カーネル内のロードユニットがデータを必要とする場合、最初に行うことは、特定のメモリアドレスの情報が含まれているかどうかをデータキャッシュに「尋ねる」ことです。 操作は読み取り専用であるため、見つかった場合は、キャッシュから対応するレジストリにコピーします。 キャッシュレベルで見つからない場合は、レベルごとに下がります。 ピラミッド型のオフィスビルでドキュメントを探している人と考えてください。各レベルには、検索するファイルがさらにあります。

一方、ストアユニットはもう少し複雑で、キャッシュ内のメモリアドレスも検索しますが、内部に格納されているデータの変更について説明した瞬間から、キャッシュ階層全体およびRAM自体のメモリアドレスへの参照。

RISC =ロードストア?

RISCとCISC

ロード/ストアユニットの機能を学習したら、履歴コンテキストを提供する必要があります。つまり、CPUがシステムのRAMにアクセスしてデータをロードおよび保存する方法はこれらだけではありません。

ロードストアの概念は、RISCタイプのレジスタと命令のセットに関連しており、命令のセットが削減されます。これを行うXNUMXつの方法は、次のような別の命令で異なる命令のメモリにアクセスするプロセスを分離することです。いくつかの指示。 ロード/ストアユニットを使用してその部分を実行する同様のメモリアクセスプロセスがあります。

結果はすでにわかっています。CISC命令セットのプログラムのバイナリコードは、よりコンパクトで小さいバイナリになりますが、RISCユニットのバイナリコードは大きくなります。 コンピューティングの初期の頃、RAMは非常に高価で不足しており、バイナリコードをできるだけ小さく保つことが重要であったことを覚えておいてください。 現在、すべてのx86 CPUはポストRISCです。これは、x86命令をデコードするときに、CPUがRISCCPUであるかのように機能できるようにする一連のマイクロ命令でデコードするためです。

GPU上のLSU

NVIDIA GPU

はい、GPUにはロード/ストアユニットもあります。ロード/ストアユニットはコンピューティングユニットにあり、このALUが実行する必要のあるデータの検索を担当します。 からの計算単位は AMD、からのサブスライス インテル またはからのストリームマルチプロセッサ NVIDIA バックグラウンドには、同じことを表すさまざまなシニフィアンがあります。プログラムが実行されるGPUコアは、口語的にはシェーダーと呼ばれます。

コンピューティングユニットのさまざまなALUは、ほとんどの場合レジスタレベルで動作する傾向があります。つまり、命令には直接動作するデータが付属していますが、一部の命令はレジスタにないデータを参照するため、必要です。キャッシュを介してそれらを検索します。

データ検索システムはCPUの場合と同じです。最初に、各コンピューティングユニットのデータキャッシュを調べ、GPUがアクセスできる限りメモリ階層の最後に到達するまでダウンします。 これは、テクスチャマップなどの大きなデータにアクセスする場合に不可欠です。

GPUとロードストアドライブの機能を修正しました

Esquema SM NVIDIA チューリング

コンピューティングユニットにあるユニットの中には、ロードストアユニットを使用してGPUと通信するものがあります。これらのユニットは、ALUではなく、固定機能またはアクセラレータの独立したユニットです。 現在、GPUのロード/ストアユニットを利用するユニットにはXNUMXつのタイプがあります。

  • テクスチャフィルタリングユニット
  • レイトレーシングで光線の交点を計算する担当ユニット

これらのユニットは、データキャッシュにアクセスして、機能を実行するための入力パラメータとして同上を取得する必要があるためです。 コンピューティングユニット内のロード/ストアユニットの数は可変ですが、バイリニアフィルターを実行するために16つのデータを必要とする4つのテクスチャユニットがあるため、通常は4以上です。

同様に、BVHツリーのノードのデータはさまざまなキャッシュレベルに保存されます。 NVIDIA GPUなどの特定のケースでは、レイトレーシングユニットには、RTコア自体のL0キャッシュから読み取る内部LSUがあります。