回答:
トップレベルでは、GPUはいくつかのシェーダーコアに分割されます。ノートブックやタブレットの小さなGPUはコアが数個しかないかもしれませんが、ハイエンドのデスクトップGPUは数十個しかないかもしれません。
シェーダーコアに加えて、テクスチャユニットもあります。それらは、GPUに応じて、シェーダーコアごとに1つのテクスチャユニット、または2つまたは3つのシェーダーコアで共有される1つのテクスチャユニットと一緒にグループ化できます。
チップ全体が単一のL2キャッシュを共有しますが、異なるユニットには個別のL1キャッシュがあります。テクスチャユニットにはテクスチャキャッシュがあり、シェーダーユニットには命令と定数/ユニフォームのキャッシュがあり、バッファロードがテクスチャロードとは別のパスであるかどうかに応じて、バッファデータ用の個別のキャッシュがある場合があります(GPUアーキテクチャによって異なります)。
テクスチャユニットは、シェーダーコアから独立して非同期で動作します。シェーダーがテクスチャの読み取りを実行すると、それらの間の小さなバスを介してテクスチャユニットにリクエストが送信されます。シェーダーは、可能であれば実行を継続できます。または、中断されて、テクスチャの読み取りが完了するまで待機している間、他のシェーダースレッドを実行できます。
テクスチャユニットは一連のリクエストをバッチ処理し、ミップレベルと異方性を選択し、UVをテクセル座標に変換し、クランプ/ラップモードを適用するなど、アドレッシング計算を実行します。必要なテクセルがわかると、それらを介してそれらを読み取ります。キャッシュ階層。メモリの読み取りがCPUで機能するのと同じ方法(最初にL1を調べ、そこにない場合はL2を調べ、次にDRAMを調べます)。多くの保留中のテクスチャリクエストがすべて同じまたは近くのテクセルを必要とする場合(それらはよくあるように)、少数のメモリトランザクションだけで多くの保留中のリクエストを満たすことができるため、ここで多くの効率が得られます。これらの操作はすべてパイプライン処理されるので、テクスチャユニットが1つのバッチでメモリを待機している間、別のバッチのリクエストのアドレッシング計算を実行できます。
データが返されると、テクスチャユニットは圧縮形式をデコードし、必要に応じてsRGB変換とフィルタリングを実行してから、結果をシェーダーコアに返します。