Coelacanth's Dream

AMD の次世代GPU、Sienna Cichlid の Linux Kernelパッチが投稿される

AMD の次世代GPU、Sienna Cichlid をサポートする一連の Linux Kernel パッチが投稿された。
Sienna Cichlid GPU のメジャーバージョン(世代)は GFX10、マイナーバージョンは 3 であり、
gfx103x となる RDNA 2 GPU に関連すると見られる。
[PATCH 000/207] Add Support for Sienna Cichlid

ディスプレイコントローラの eChipRev は 40 であり、過去に投稿されたパッチと照らし合わせると、Navi21 のものと一致する。1 Sienna Cichlid == Navi21?

VRAMには Navi1x から続いて GDDR6 を採用すると見られる。2

(追記)

Guru3DSienna Cichlid が VRAMバス幅 128-bit なんて書いているが、
AMD Sienna Cichlid spotted in Linux Kernel patches, Big Navi?

その根拠としている部分を見ると、まず判定部分に amdgpu_emu_mode == 1 があることからエミュレータで実行している場合を対象としていることがわかる。
drm/amdgpu AMDgpu driver — The Linux Kernel documentation


-	if (!amdgpu_emu_mode)
-		adev->gmc.vram_width = vram_width;
-	else
+	if (adev->asic_type == CHIP_SIENNA_CICHLID && amdgpu_emu_mode == 1) {
+		adev->gmc.vram_type = AMDGPU_VRAM_TYPE_GDDR6;
 		adev->gmc.vram_width = 1 * 128; /* numchan * chansize */
+	} else {
+		r = amdgpu_atomfirmware_get_vram_info(adev,
+				&vram_width, &vram_type, &vram_vendor);
+		adev->gmc.vram_width = vram_width;
+
+		adev->gmc.vram_type = vram_type;
+		adev->gmc.vram_vendor = vram_vendor;
+	}

引用元: [PATCH 017/207] drm/amdgpu: add gmc ip block for sienna_cichlid

128-bit の根拠としている行に + マークが付いていないことから、追加されたコードではなく元々あったものだということもわかる。
そして、 - マークの付いている部分を見るに、元々 Navi1x系をエミュレータで実行した時は VRAM 128-bit としていたらしい。

だから Sienna Cichlid が VRAM 128-bit だという根拠にはなり得ない。

本来なら影響力のあるメディアや個人が指摘すべきなんだろうけど、嘘と誤解釈ばかりで真実がどこにも無いよりはマシなはず。
そう、だよね?

(追記終了)

インデックス

Async Ring のサポートが追加された GFX

Navi1x では無効化されていた 3D pipe、Async ring が Sienna Cichlid ではサポートされている。3
ring とは CP(Command Processor) が各ユニットへコマンドを発行する単位。

Navi1x で無効化したのはユースケースがないため、という理由だったが4Sienna Cichlid /RDNA 2 ではあるということだろうか?
RDNA 2 で追加される新機能にはコンソール機から、レイトレーシング、メッシュシェーダーへの対応が確認されているが、それらに関係しているのかもしれない。

従来から倍に増やされている SDMAコントローラ

Sienna Cichlid は SDMAコントローラを 4基持ち、これは従来の一般向けGPUの倍の数だ。5(HPC向けの Arcturus は 8基)
コントローラあたりのキュー数が減らされていないため、純粋に倍となる。6
増やした意図ははっきりせず、Arctturus のように XGMI/マルチGPU に最適化された SDMAコントローラという訳でもないようだ。
追加された atom_smc_dpm_info_v4_9 には XGMIに関するコードがあるが7Arcturus の v4_6 と同一であることから流用したものと思われ、Sienna Cichlid が実際にサポートしているかは定かでない。2

SMU(System Management Unit) のバージョンが Sienna CichlidArcturus とで同じであるため、コードの流用は普通だ。
しかし、arcturus_ppt.csienna_cichlid_ppt.c を見比べると、(ppt = PPTable)
後者は SMC_DPM_FEATUREFEATURE_DPM_XGMI_MASK が無い、message_map に SetXgmiMode が無いといった違いがある。89
そのため、やはり Sienna Cichlid が XGMI /Inifnity Fabric を介したマルチGPUをサポートするかは微妙、というのが現在の個人的姿勢だ。

また、これまでは SDMAコントローラそれぞれのファームウェアイメージが用意され、それぞれロードするという形だったが、この部分が改良され、1つのファームウェアイメージを共有するようになった。
Arcturus は末尾の番号が違う 8つのファームウェアイメージを用意することになったため、さすがに面倒、冗長だと感じたのだろうか。

非対称構成な 2つの VCN 3.0

動画のデコード/エンコードを担当するマルチメディア部の VCN も更新されている。
Sienna Cichlid は 2つの VCN3インスタンスを持つが、それらは非対称であり、片方がデコードのみ、もう片方がエンコードのみを担当する。10

Unified Video Decoder という名前ながらエンコードも担当していた UVD と VCE(Video Compression Engine) が VCN(Video Core Next) に統合され、11
VCN3 ではデコード担当とエンコード担当がはっきり分かれる訳だ。

詳細は不明なDCN3

DCN も更新され、DCN3 となった。
どういった新機能があるかはまだ不明。(読み取れていない)

一応、リソースから最大6画面出力ということは読み取れる。12一般向けでミドル帯以上のGPUとして普通の規模だろう。

余談

最後に余談を。
Arcturus ではそのコードネームの長さから略称が安定しない印象があるが、Sienna Cichlid はどうなるのか。
それと、コードネームの Cichlid (シクリッド) は調べるまで知らなかったが、カワスズメ科の硬骨魚の総称らしい。
分布は主にアフリカと中南米、一部が熱帯アジアであり、観賞用、食用とされている。
Sienna (シエナ) には黄褐色または赤褐色の意味があり、イタリア中部の都市 Siena(シエーナ) が由来らしい。
AMD が EPYC CPU のコードネームにイタリアの都市を用いていたことを考えると、Sienna Cichlid が突拍子もないコードネームという感じはしない。