RDNA 3/GFX11 では CU ごとに持つ L0ベクタキャッシュと Shader Array (SA) ごとに持つ GL1データキャッシュ (RDNA L1キャッシュ) が、RDNA 2/GFX10.3 から倍のサイズに増やされることが AMD の Liu, Aaron 氏によって明かされている。
RDNA 3/GFX11 からは GPU 内部に格納されている (と思われる) IP Discovery Table からキャッシュ情報を読み取るようになり、AMDGPUドライバー中にハードコードされることはなくなった。1
しかし、Phoenix APU (GC 11.0.1, GFX1103) に限ってはキャッシュ情報が含まれておらず、他の RDNA 3/GFX11 GPU のように読み取れないため、Yellow Carp/Rembrandt APU のキャッシュ情報を用いるようにするのが当該のパッチとなる。
パッチは AMD の Zhang, Yifan 氏によって投稿されている。
これは一時的な回避策とされ、IP Discovery Table にキャッシュ情報が追加され次第、パッチで追加された部分は削除される。
Phoenix APU (GC 11.0.1, GFX1103) と Yellow Carp/Rembrandt APU のキャッシュ情報は完全には一致せず、異なる点が L0ベクタキャッシュ (TCP L1 Cache per CU, Texture Cacher per Pipe, Private) と GL1データキャッシュとなる。
それに触れたのが以下の Liu, Aaron 氏によるコメント。
[Public] Hi Yifan, Yellow carp's cache info cannot be duplicated to GC_11_0_1. Different point to GC_11_0_1: TCP L1 Cache size is 32 GL1 Data Cache size per SA is 256 Others looks good to me -- Best Regards Aaron Liu
Phoenix APU (GC 11.0.1, GFX1103) では、L0ベクタキャッシュは 32KiB に、GL1データキャッシュは 256KiB になるとされており、RDNA 2/GFX10.3 と比較するとそれぞれ倍のサイズに増加している。
他キャッシュは同じとされており、WGP (CU 2基) ごとに持つスカラ命令キャッシュ (L1i) とスカラデータキャッシュ (L1k)、GPU全体で共有する L2データキャッシュのサイズについては Yellow Carp/Rembdrandt APU と変わらない。
以下は Yellow Carp/Rembrandt APU のキャッシュ情報となり、スカラ命令キャッシュは 32KiB、スカラデータキャッシュは 16KiB、L2データキャッシュは 2048KiB (2MiB) となる。
それと MALL (Infinity Cache, L3データキャッシュ) に触れられていないことから、やはり APU では MALL を搭載しない方針と思われる。
static struct kfd_gpu_cache_info yellow_carp_cache_info[] = { { /* TCP L1 Cache per CU */ .cache_size = 16, .cache_level = 1, .flags = (CRAT_CACHE_FLAGS_ENABLED | CRAT_CACHE_FLAGS_DATA_CACHE | CRAT_CACHE_FLAGS_SIMD_CACHE), .num_cu_shared = 1, }, { /* Scalar L1 Instruction Cache per SQC */ .cache_size = 32, .cache_level = 1, .flags = (CRAT_CACHE_FLAGS_ENABLED | CRAT_CACHE_FLAGS_INST_CACHE | CRAT_CACHE_FLAGS_SIMD_CACHE), .num_cu_shared = 2, }, { /* Scalar L1 Data Cache per SQC */ .cache_size = 16, .cache_level = 1, .flags = (CRAT_CACHE_FLAGS_ENABLED | CRAT_CACHE_FLAGS_DATA_CACHE | CRAT_CACHE_FLAGS_SIMD_CACHE), .num_cu_shared = 2, }, { /* GL1 Data Cache per SA */ .cache_size = 128, .cache_level = 1, .flags = (CRAT_CACHE_FLAGS_ENABLED | CRAT_CACHE_FLAGS_DATA_CACHE | CRAT_CACHE_FLAGS_SIMD_CACHE), .num_cu_shared = 6, }, { /* L2 Data Cache per GPU (Total Tex Cache) */ .cache_size = 2048, .cache_level = 2, .flags = (CRAT_CACHE_FLAGS_ENABLED | CRAT_CACHE_FLAGS_DATA_CACHE | CRAT_CACHE_FLAGS_SIMD_CACHE), .num_cu_shared = 6, }, };
引用元:[linux-kernel v5.19] drivers/gpu/drm/amd/amdkfd/kfd_crat.c
L0ベクタキャッシュと GL1データキャッシュの変化はあくまでも Phoenix APU (GC 11.0.1, GFX1103) を指定したものではあるが、RDNA 3/GFX11 dGPU でも同様の変更を採用していると思われる。
RDNA 3/GFX11 では他にもキャッシュ構成の変更が施されており、スカラ命令キャッシュのキャッシュラインサイズが RDNA 2/GFX10.3 の 64Byte から 128Byte に拡大されている。
Cache Line Size | L1i | L1k | L1d | GL1 | GL2 |
---|---|---|---|---|---|
GFX9/Vega (without Aldebaran) | 32B | 32B | 64B | - | 64B |
GFX10/RDNA 1, GFX10.3/RDNA 2 | 64B | 64B | 128B | 128B | 128B |
GFX11 | 128B | 128B? | 128B? | 128B? | 128B |
RDNA 3/GFX11 では VOPD (Dual issue wave32)
命令2や WMMA (Wave Matrix Multiply-accumulate)
命令3に対応し、WGP (CU) あたりの性能が向上していると考えられ、それに伴って L0ベクタキャッシュのサイズが増やされたと考えられる。
GL1データキャッシュは Shader Array 内の WGP 以外に RB (Render Backend) のキャッシュにも接続されており、GL1データキャッシュを増やすことでピクセル処理性能の向上を狙ったことも考えられる。
Cache Info | Yellow Carp (Rembrandt) | Phoenix (GC 11.0.1, GFX1103) |
---|---|---|
L0 Vector Data (per CU) | 16KiB | 32KiB |
L1 Scalar Inst. (per WGP) | 32KiB | 32KiB |
L1 Scalar Data (per WGP) | 16KiB | 16KiB |
GL1 Data (per SA) | 128KiB | 256KiB |
L2 Data | 2048KiB (2MiB) | 2048KiB (2MiB) |
L3 (MALL) | N/A | N/A |
GC (Graphics Compute) IP ver | GFX ID | AMDGPU_FAMILY | Type |
---|---|---|---|
11.0.0 | gfx1100 (Navi31)4 | AMDGPU_FAMILY_GC_11_0_0 (FAMILY_GFX1100) | dGPU |
11.0.1 | gfx1103 (Phoenix) | AMDGPU_FAMILY_GC_11_0_1 (FAMILY_GFX1103) | APU |
11.0.2 | gfx1102 (Navi33) | AMDGPU_FAMILY_GC_11_0_0 (FAMILY_GFX1100) | dGPU |
11.0.3? | gfx1101 (Navi32)? | AMDGPU_FAMILY_GC_11_0_0 (FAMILY_GFX1100)? | dGPU |
-
次世代 GPU IPブロックのサポートが進む AMDGPUドライバー ―― GFX11, GC 11.0, MES 11.0, IMU | Coelacanth’s Dream ↩︎
-
GFX11 でサポートされる VOPD (Dual issue wave32) 命令の範囲と特徴 | Coelacanth’s Dream ↩︎
-
RDNA 3/GFX11 では行列積和演算命令、WMMA (Wave Matrix Multiply-accumulate) をサポート | Coelacanth’s Dream ↩︎
-
Support Tensile for gfx11 series platform by TonyYHsieh · Pull Request #1521 · ROCmSoftwarePlatform/Tensile ↩︎