Coelacanth's Dream

Cyan Skilfish APU の GPUクロックと CPUコア数

RDNA アーキテクチャ APU Cyan Skilfish の各種クロックを、他 AMD GPU/APU 同様に取得し表示するパッチ、GPUクロックと電圧を範囲内で設定可能にするパッチが投稿された。
HWレイトレーシングをサポートする RDNA APU 「Cyan Skilfish (gfx1013)」 | Coelacanth’s Dream

Cyan Skilfish では、GPUクロック (SCLK, GPU gfx/compute engine clock) と、電圧の目標値 (target value) が設定可能となっている。ただ、Cyan Skilfish は (現時点のドライバーで?) DPM (Dynamic Power Management) をサポートしておらず、設定可能な値は 1つだけとなる。
GPUクロックは 1000 MHz - 2000 MHz、電圧は 700 mv - 1129 mv の範囲内で設定可能とされている。

 +/* unit: MHz */
 +#define CYAN_SKILLFISH_SCLK_MIN			1000
 +#define CYAN_SKILLFISH_SCLK_MAX			2000
 +#define CYAN_SKILLFISH_SCLK_DEFAULT			1800
 +
 +/* unit: mV */
 +#define CYAN_SKILLFISH_VDDC_MIN			700
 +#define CYAN_SKILLFISH_VDDC_MAX			1129
 +#define CYAN_SKILLFISH_VDDC_MAGIC			5118 // 0x13fe
 +

恐らくは設定した値が実質最大 GPUクロック、電圧として動作するのだと思われる。
GPUクロックがデフォルトで 1800 MHz、最大で 2000 MHz というのは、AMD Radeon™ RX 5700 XT 50th Anniversary の最大クロックが 1980 MHz であるから、RDNA アーキテクチャ らしいクロックと言えるかもしれない。
RDNA 2 アーキテクチャ では高クロック動作に向けた設計により、同じ消費電力で RDNA アーキテクチャ より 30% 高いクロックを実現している。1

Cyan Skilfish の CPUコア数は 8 か 6 か

最近の AMD APU では、AMD GPU ドライバー側でも CPUコア、CPU L3キャッシュのクロック、温度、消費電力を取得するようになっている。
ドライバーにはそれら読み取った値を格納する変数が用意されている訳だが、そこに使われている配列のサイズから APU のコア数を言わば逆に読み取ることができる。
例えば VanGogh APU (Zen 2 + RDNA 2) であれば以下のように 4コア、L3キャッシュ 1基 (CCX 1基) という CPU構成が、

   //3rd party tools in Windows need info in the case of APUs
   uint16_t CoreFrequency[4];     //[MHz]
   uint16_t CorePower[4];         //[mW]
   uint16_t CoreTemperature[4];   //[centi-Celsius]
   uint16_t L3Frequency[1];       //[MHz]
   uint16_t L3Temperature[1];     //[centi-Celsius]

Renoir APU (Zen 2 + Vega) では 8コア、L3キャッシュ 2基 (CCX 2基) という構成が読み取れる。

   uint16_t CoreFrequency[8];            //[MHz]
   uint16_t CorePower[8];                //[mW]
   uint16_t CoreTemperature[8];          //[centi-Celsius]
   uint16_t L3Frequency[2];              //[MHz]
   uint16_t L3Temperature[2];            //[centi-Celsius]

ちなみに Yellow Carp APU (Zen 3 ? + RDNA 2) では 8コア、L3キャッシュ 1基 (CCX 1基) となっている。2

今回で Cyan Skilfish に対しても同様のコードが追加されたのだが、以前は存在した、8コアであることを示すような記述を削除して、6コアを想定した記述が追加されている。
L3キャッシュは 2基 (CCX 2基) となっているため、Cyan Skilfish APU の CPUアーキテクチャは CCX を 4コアで構成する Zen/+/2 アーキテクチャ だと考えられる。コア数から、各 CCX から 1コアを無効化した 3+3 という設定だろうか。

 +typedef struct SmuMetricsTable_t {
 +	//CPU status
 +	uint16_t CoreFrequency[6];              //[MHz]
 +	uint32_t CorePower[6];                  //[mW]
 +	uint16_t CoreTemperature[6];            //[centi-Celsius]
 +	uint16_t L3Frequency[2];                //[MHz]
 +	uint16_t L3Temperature[2];              //[centi-Celsius]
 +	uint16_t C0Residency[6];                //Percentage
	
 -#define NUMBER_OF_PSTATES		8
 -#define NUMBER_OF_CORES			8

以前は、Cyan Skilfish のディスプレイエンジンがドライバーでサポートされていないこと、CPU 8コアを持つこと、また Cyan Skilfish (gfx1013) がレイトレーシング命令をサポートしていること等から、AMD 4700S Desktop KitCyan Skilfish ではないかと考えた。
公式に発表はされていないが AMD 4700S Desktop Kit はパッケージ、ダイの形状から PS5 SoC の一部、主に GPU を無効化した CPU ではないかと言われており3PS5 SoC もまた HWレイトレーシングに対応しているため、Cyan Skilfish・AMD 4700S・PS5 で繋がりが生まれる。
HWレイトレーシングをサポートする RDNA APU 「Cyan Skilfish (gfx1013)」 | Coelacanth’s Dream だが Cyan Skilfish が 6コアだとすると、その正体がまた少し戻って曖昧となる。
AMD 4700S 以外に PS5 SoC をベースにしたモデルが存在する 可能性 もある。

それと、AMD 4700S ではアーキテクチャのバックエンド部に変化があるらしく、FPU の性能が他の Zen 2 アーキテクチャ を採用する AMD CPU より低いらしいが、FPUパイプラインのデータ幅がどうなっているか気になる所だ。
Zen系 CPU では FPUパイプラインのデータ幅を示す情報を CPUID 命令を使って読み取れるようになっており、EAXレジスタに 0x8000001A を入れて CPUID 命令を実行し、EAXレジスタに出力された値の bit 2 が 1 であれば FP256 (256-bit) 、bit 0 が 1 であれば FP128 (128-bit) を示す。4
Zen/+ アーキテクチャ では FP128、Zen 2/3 アーキテクチャ であれば FP256 と表示される。
Zen 2 アーキテクチャ を採用する AMD 4700S が FP256 か FP128 のどちらだとしても、他とは部分的に異なる謎の Zen 2? アーキテクチャ であることに変わりはないが。

参考リンク