Coelacanth's Dream

Raptor Lake と Meteor Lake の CPUID Model

Intel の Tony Luck 氏により、Linux Kernel (arch/x86/include/asm/intel-family.h) に Raptor Lake-SMeteor Lake-M/P, S の CPUID Model を追加するパッチが投稿されている。
CPUID[LEAF=0x1].EAX から取得できる CPUID Family, Model, Stepping は、主にプロセッサやプラットフォームの判定、ステイトの情報や perf ツールのための PMU (Performance Monitoring Unit) 情報をそれぞれに適用するのに用いられる。

Raptor Lake

Linux Kernel (arch/x86/include/asm/intel-family.h) にはすでに INTEL_FAM6_RAPTORLAKE (0xB7)INTEL_FAM6_RAPTORLAKE_P (0xBA) の CPUID Model が追加されていた。
法則から、接尾辞が付いていない INTEL_FAM6_RAPTORLAKE (0xB7) がデスクトップ向けの Raptor Lake-S だと考えられ、実際 Bootlog でも Raptor Lake-S の CPUID Model は 0xB7 となっていた。1

それが今回のパッチで INTEL_FAM6_RAPTORLAKE_S (0xBF) が新たに追加された。

   *		_X	- regular server parts
   *		_D	- micro server parts
   *		_N,_P	- other mobile parts
 + *		_S	- other client parts
   *
   *		Historical OPTDIFFs:
   *
 @@ -112,6 +113,7 @@
	 
  #define INTEL_FAM6_RAPTORLAKE		0xB7
  #define INTEL_FAM6_RAPTORLAKE_P		0xBA
 +#define INTEL_FAM6_RAPTORLAKE_S		0xBF

ここでの接尾辞無しは regular client parts を、_Sother client parts を意味するため、デスクトップ向け Raptor Lake として INTEL_FAM6_RAPTORLAKE{,_S} の 2種類があると考えれば、若干紛らわしくはあるが不自然ではない。

ただ引っ掛かるのは、CPUID Model: 0xBF は以前に Alder Lake としてドキュメントに記載され2、コンパイラに追加された CPUID Model でもあることだ。3
その時は Alder Lake-N (CPUID Model: 0xBE) の typo ではないかと考えたが、今回のパッチで Raptor Lake として追加されたことで、デスクトップ向け Raptor Lake ではあるが実質 Alder Lake であるのが CPUID Model: 0xBF という解釈も可能になる。
CPUID Model: 0xBF は CPUID Model, Stepping こそ Alder Lake-S と異なるが、構成は Alder Lake-S と同じ、リフレッシュモデルのような立ち位置にあるのかもしれない。

また、Tony Luck 氏はパッチ内で、ソフトウェア的な観点では RAPTORLAKE*ALDERLAKE* の機能において、2つの間に異なる点はないとコメントしている。
ここでの機能はあくまでステイトや PMU のことを指していると思われる。

 Note1: Model 0xB7 already claimed the "no suffix" #define for a regular
 client part, so add (yet another) suffix "S" to distinguish this new
 part from the earlier one.
	
 Note2: the RAPTORLAKE* and ALDERLAKE* processors are very similar from a
 software enabling point of view.  There are no known features that have
 model-specific enabling and also differ between the two.  In other words,
 every single place that list *one* or more RAPTORLAKE* or ALDERLAKE*
 processors should list all of them.

Meteor Lake

Meteor Lake の CPUID Model は、デスクトップ向け (regular client parts) と思われる INTEL_FAM6_METEORLAKE0xAC、モバイル向けである INTEL_FAM6_METEORLAKE_L0xAA とされている。

INTEL_FAM6_METEORLAKE については、以前に触れた intel/dptf ((Intel (R) Dynamic Tuning for Chromium OS) にある CPUID_FAMILY_MODEL_MTL_S の情報と異なるが、CPUID_FAMILY_MODEL_MTL_S は CPUID Model が Ice Lake-D と被っているため、今回のパッチが正しい情報だと思われる。4

 +#define INTEL_FAM6_METEORLAKE		0xAC
 +#define INTEL_FAM6_METEORLAKE_L		0xAA
 +

自分の主観だが、珍しくパッチ内でリリース予定時期と製造プロセスについても触れられている。

 ---
 These are destined for release in 2023 on Intel 4 process node.
	
 As is the custom, I'm just adding the model numbers so perf, power
 etc. teams can added model specific code to their respective subsystems
Family 0x6 CPUID Model
Alder Lake-S 0x97
Alder Lake-M/P 0x9A
Alder Lake-N 0xBE
Raptor Lake-S 0xB7
Raptor Lake-P 0xBA
Raptor Lake-S (Alder Lake-R?) 0xBF
Meteor Lake-S 0xAC
Meteor Lake-M/P 0xAA
Sapphire Rapids 0x8F
Emerald Rapids 0x8F?
(Stepping: 0x8?)