Coelacanth's Dream

Navi21 /Sienna Cichlid のメモリは GDDR6 か HBM2 か、新たに出てきたパッチを読む

前回の記事で Navi21 /Sienna Cichlid の専用メモリのタイプは、Navi10 /Navi14 同様に GDDR6 ではないかと書いたが、それが揺らぐようなパッチが出てきた。
AMD Navi21 /Sienna Cichlid 情報近況 ―― GDDR6と省電力とサーバ向けと 【2020/07/21】 | Coelacanth’s Dream

それが以下のパッチで、主な内容としては UMC(Unified Memory Controller)1 Ver 8.7 にて ECC で検知されたメモリエラーをレポートする機能をサポートするものと推察される。
[PATCH] drm/amdgpu: add support for umc 8.7 ras functions

そして気になるのが以下の部分。

  +/* HBM  Memory Channel Width */
  +#define UMC_V8_7_HBM_MEMORY_CHANNEL_WIDTH	128
  +/* number of umc channel instance with memory map register access */
  +#define UMC_V8_7_CHANNEL_INSTANCE_NUM		2
  +/* number of umc instance with memory map register access */
  +#define UMC_V8_7_UMC_INSTANCE_NUM		8
  +/* total channel instances in one umc block */
  +#define UMC_V8_7_TOTAL_CHANNEL_NUM	(UMC_V8_7_CHANNEL_INSTANCE_NUM * UMC_V8_7_UMC_INSTANCE_NUM)
  +/* UMC regiser per channel offset */
  +#define UMC_V8_7_PER_CHANNEL_OFFSET_SIENNA	0x400

UMC v8.7 については初見だが、UMC_V8_7_PER_CHANNEL_OFFSET_SIENNA から Navi21 /Sienna Cichlid に関連付けられたものと思われる。Vega20Arcturus に関連付けられているのは UMC v6.1 であり、バージョンナンバーが一気に飛んでいることとなる。しかし、ECCに対応した製品を出す計画が無かっただけで、内部的には Navi1x 系にもUMC のバージョンが割り振られていたのであれば自然と考えられる。

して、上に引用した部分には Navi21 /Sienna Cihclid が HBM系のメモリを採用するかのように記述されている。

各マクロ名と値については、まず HBM系メモリは 128-bit のメモリチャネルを 8本束ね、1024-bit のインターフェイスを構成する。
UMC_V8_7_HBM_MEMORY_CHANNEL_WIDTH はそのままメモリチャネルの幅、UMC_V8_7_UMC_INSTANCE_NUM は束ねる本数に対応していると考えられる。
UMC_V8_7_CHANNEL_INSTANCE_NUM は、UMC v6.1 のファイルと比較すると、

  /* HBM  Memory Channel Width */
  #define UMC_V6_1_HBM_MEMORY_CHANNEL_WIDTH	128
  /* number of umc channel instance with memory map register access */
  #define UMC_V6_1_CHANNEL_INSTANCE_NUM		4
  /* number of umc instance with memory map register access */
  #define UMC_V6_1_UMC_INSTANCE_NUM		8
  /* total channel instances in one umc block */
  #define UMC_V6_1_TOTAL_CHANNEL_NUM	(UMC_V6_1_CHANNEL_INSTANCE_NUM * UMC_V6_1_UMC_INSTANCE_NUM)
  /* UMC regiser per channel offset */
  #define UMC_V6_1_PER_CHANNEL_OFFSET_VG20	0x800
  #define UMC_V6_1_PER_CHANNEL_OFFSET_ARCT	0x400

UMC v6.1 では値が 4 となっている。
比較できるファイルがこれしかないため、根拠とするには少し乏しいが、Vega20 のスペックから、インターフェイス数を表しているのかもしれない。

短絡的になれば、Navi21 /Sienna Cichlid は HBM2 2インターフェイス(2048-bit) に対応……とも考えられるが、前回 書いたように、GDDR6メモリを採用するような記述も見られる。

まさかの GDDR6 と HBM2 の両対応なんて考えが浮かんだりもするが、今の所それを判定するための文もない。
[PATCH] drm/amdgpu: enable umc 8.7 functions in gmc v10

まだ結論を出すことはできないが、考察の跡をつけ、今後のためとしたい。

参考リンク