Coelacanth's Dream

Native Model ID が更新される Crestmont と更新されない Redwood Cove

Intel は PMU (Performance Monitoring Unit) で検出したハードウェアイベントをデコードそ、計測に用いるため、ハードウェアイベントの生データと概要をマッピングした JSONファイルを https://download.01.org/perfmon/ で公開している。
すでに Meteor Lake-M/P (Family: 0x6, Model: 0xAA) 用のファイルも公開されており、アーキテクチャ名が P-Core (Type: Core) は Redwood Cove、E-Core (Type: Atom) は Crestmont であることが明かされている。
同時に mapfile.csv (2022-Aug-09 18:19)Native Model ID の記載も追加されており、Redwood CoveGolden Cove と同じ 0x00000001Crestmont0x00000002 となる。

Native Model ID

Native Model IDCPUID (Leaf:0x1A) 命令から取得できるハイブリッドアーキテクチャに関する情報であり、各マイクロアーキテクチャを一意に識別するための ID となる。
CPUID (Leaf:0x1) から取得できる Family, Model, Stepping とは関係がなく、Family, Model, Stepping は CPU 全体の ID なのに対し、Native Model ID はマイクロアーキテクチャの ID だと言える。

CPUID (Leaf:0x1A) からは他に CPU Type[31:24] も取得でき、Type: Atom0x20Type: Core0x40 が割り当てられている。
Native Model ID は各 CPU Type ごとに割り当てられるとされており、CPU TypeNative Model ID の組み合わせ、言い換えれば CPUID [Leaf=0x1A].EAX の値のみでマイクロアーキテクチャを識別できる。

 Also, hybrid parts have a native model ID to uniquely identify the
 micro-architecture of each CPU. Please note that the native model ID is not
 related with the existing x86_model_id read from CPUID leaf 0x1.

現在 Intel CPU でハイブリッドアーキテクチャを採用し、Native Model ID が公開情報となっている CPU には、Lakefield, Alder Lake, Meteor Lake があり、それぞれの Native Model ID は以下の表のようになっている。
LakefieldNative Model ID は InstLatx64 氏が公開している CPUID dump 結果から確認した。
Raptor Lakemapfile.csv に含まれていないが、TMA_Metrics では Alder Lake (ADL) と同様のものとして扱っているため、Native Model IDAlder Lake と合わせた。

Native Model ID
(2022-Aug-09 18:19)
Type: Core Type: Atom
Lakefield1 0x0 0x0
Alder Lake 0x1 0x1
Raptor Lake 0x1 0x1
Meteor Lake 0x1? 0x2

Native Model ID がマイクロアーキテクチャに対して付けられるユニークな ID ということを考えれば、Meteor Lake はコードネームは違うが Native Model IDGolden Cove と同じ Redwood Cove (Core) と、Gracemont (Atom) から ID が更新された Crestmont を採用していることになる。
以上は一応、Intel が公式に公開している情報とドキュメントに記載された仕様から推測できる内容である。
Intel は Meteor Lake で新たにサポートする命令や拡張等を発表していないため、Golden CoveRedwood Cove のマイクロアーキテクチャが同じだとしても、それは現状矛盾しない。

しかし、Meteor Lake に関しては正式リリース前の早期に公開された情報であること、それと Nativi Model ID はドキュメントにはあるが、Native Model ID によって具体的に分岐するようなコードを今の所 Linux Kernel 等で確認できていないため、抜けがあるかもしれない。
Core TypeAtom (0x20), Core (0x40) が割り当てられているが、Native Model ID の割り当てがどうなっているかはドキュメントには記載されておらず、具体的に結び付けるようなソースコードも確認できていない。
マイクロアーキテクチャと Native Model ID の更新基準もはっきりとはしていない。
今後 mapfile.csv の内容が変更される可能性もある。
そういう訳であくまでもオタクの推測とメモ書き。

参考リンク