AMD が公式に提供しているオープンソース Vulkanドライバー、AMDVLK、それを構成する各種ソフトウェア (LLPC (LLVM-Based Pipeline Compiler), PAL (Platform Abstraction Library), XGL (Vulkan API Layer)) が、Beige Goby/Navi24 (gfx10) に対応した。
- Update pal from commit: f4c1b21c · GPUOpen-Drivers/pal@0a0a4ae
- Update llpc from commit: 9c33c180 · GPUOpen-Drivers/llpc@7c2f5f7
- Update xgl from commit: b30d9ce9 · GPUOpen-Drivers/xgl@d01032b
Beige Goby/Navi24 spec
Beige Goby/Navi24 の GPUコア部は、ShaderEngine (SE) 1基、SE あたりの ShaderArray (SA,SH) 2基、SA あたりの WGP (CU) 4基 (8基)、SE あたりの RenderBackend (RB) 4基という構成になっている。
スペックに関するもう 1つのコードブロックでは SE あたりの RB数は 2基となっているが、AMD 公式サイトでは ROP 32基 (RB+ 4基) となっているため、下引用部が正しいと思われる。1
メモリサイドキャッシュには、L2キャッシュブロック 1MiB (ブロック 4基)、L3キャッシュ/MALL 16MiB を持つ。メモリチャネルは 4ch、メモリタイプは GDDR6 に対応している (GDDR6 64-bit [16-bit x 4ch])。
余談となるが、AMDGPU に関するソフトウェア中では L3キャッシュを MALL と呼んでいるものの、MALL が何の略称かは分かれており、LLVM では Memory Attached Last Level 2、Linux Kernel における AMDGPUドライバーでは Memory Access at Last Level だとしている。3
else if (AMDGPU_IS_NAVI24(m_nullIdLookup.familyId, m_nullIdLookup.eRevId)) { pChipInfo->supportSpiPrefPriority = 1; pChipInfo->doubleOffchipLdsBuffers = 1; pChipInfo->gbAddrConfig = 0x242; // GB_ADDR_CONFIG_DEFAULT; pChipInfo->numShaderEngines = 1; // GPU__GC__NUM_SE; pChipInfo->numShaderArrays = 2; // GPU__GC__NUM_SA_PER_SE pChipInfo->maxNumRbPerSe = 4; // GPU__GC__NUM_RB_PER_SE; pChipInfo->nativeWavefrontSize = 32; // GPU__GC__SQ_WAVE_SIZE; pChipInfo->minWavefrontSize = 32; pChipInfo->maxWavefrontSize = 64; pChipInfo->numPhysicalVgprsPerSimd = 1024; // GPU__GC__NUM_GPRS; pChipInfo->maxNumCuPerSh = 8; // GPU__GC__NUM_WGP_PER_SA * 2; pChipInfo->numTccBlocks = 4; // GPU__GC__NUM_GL2C; pChipInfo->gsVgtTableDepth = 32; // GPU__VGT__GS_TABLE_DEPTH; pChipInfo->gsPrimBufferDepth = 1792; // GPU__GC__GSPRIM_BUFF_DEPTH; pChipInfo->maxGsWavesPerVgt = 32; // GPU__GC__NUM_MAX_GS_THDS; }
NGG (Next Generation Geometry) に対応する RDNA系アーキテクチャ GPU では、特殊なオンチップバッファ、Parameter Cache (PC) を持つ。PC はメモリキャッシュと異なり、ピクセルシェーダ (Pixel Shader, PS) への入力バッファとして用いられる。
RADVドライバーに NGGカリングが実装 | Coelacanth’s Dream
PC の規模について RDNA 2 dGPU という枠で見たとき、Beige Goby は他 GPU よりも少ない 512ラインとなっている。
その他 RDNA 2 dGPU、Sienna Cichlid/Navi21, Navy Flounder/Navi22, Dimgrey Cavefish/Navi23 それぞれで全体的な規模は異なるが、PC は同じ 1024ラインという構成を採っており、PC は GPUコア部の規模とは別に調節されているものと思われる。
また、RDNA 2 APU である VanGogh (Aerith), Yellow Carp (Rembrandt) で PC は、Beige Goby よりも小さい 256ラインとなっている。
case CHIP_RAVEN: case CHIP_RAVEN2: case CHIP_RENOIR: case CHIP_NAVI10: case CHIP_NAVI12: case CHIP_SIENNA_CICHLID: case CHIP_NAVY_FLOUNDER: case CHIP_DIMGREY_CAVEFISH: pc_lines = 1024; break; case CHIP_NAVI14: case CHIP_BEIGE_GOBY: pc_lines = 512; break; case CHIP_VANGOGH: case CHIP_YELLOW_CARP: pc_lines = 256; break;
RDNA 2 | Sienna Cichlid (Navi21) |
Navy Flounder (Navi22) |
Dimgrey Cavefish (Navi23) |
Beige Goby (Navi24) |
---|---|---|---|---|
Shader Engine | 4 | 2 | 2 | 1 |
WGP (CU) | 40 (80) | 20 (40) | 16 (32) | 8 (16) |
RB+ | 16 | 8 | 8 | 4 |
Memory Bus | 256-bit | 192-bit | 128-bit | 64-bit |
L2 Cache | 4 MiB | 3 MiB | 2 MiB | 1 MiB |
L3 Cache | 128 MiB | 96 MiB | 32 MiB | 16 MiB |
Transistor | 26.8 B | 17.2 B | 11.1 B | 5.4 B |
Process | 7 nm | 7nm | 7 nm | 6 nm |
Die size | 520 mm2 | 336 mm2 | 237 mm2 | 107 mm2 |
規模、ターゲット性能が近い Navi14 と Beige Goby/Navi24 を比較すると、SE 1基というのは共通するが、Beige Goby では 総 WGP (CU) 数は 8基減り、メモリバス幅と L2キャッシュも半減した。しかし L3キャッシュ 16 MiB が追加されている。
RB数も減ったが、処理可能なピクセル数を増やした RB+ となったため、相当 ROP数は変わらない。
それと Navi14 ではハードウェアのバグで NGG が無効化されていたが、Beige Goby ではそれが無いため有効可能になっていることは触れておきたい。
Navi14 | Beige Goby (Navi24) |
|
---|---|---|
Shader Engine | 1 | 1 |
WGP (CU) | 12 (24) | 8 (16) |
RB (ROP) | 8 (32) | 4 (32) |
Memory Bus | 128-bit | 64-bit |
L2 Cache | 2 MiB | 1 MiB |
L3 Cache | N/A | 16 MiB |
Transistor | 6.4 B | 5.4 B |
Process | 7 nm | 6 nm |
Die size | 158 mm2 | 107 mm2 |
NGG | Disabled (for HW bug) |
Enabled |