Coelacanth's Dream

Redwood Cove の Native Model ID が更新

以前に Meteor Lake に採用される Redwood Cove (Core, P-Core)Crestmont (Atom, E-Core) の存在と、それらマイクロアーキテクチャを識別するために割り当てられる Native Model ID について取り上げた。
その時点では、Redwood Cove の Native Model ID は Golden Cove と同じ 0x1CrestmontGracemont から更新された 0x2 が割り当てられているとされていたが、情報が更新され、Redwood Cove の Native Model ID が 0x2 となった。

Native Model ID は複数のマイクロアーキテクチャが混在するハイブリッドアーキテクチャ向けの情報であり、CPUID [LEAF=0x1A] 命令から取得することができる。
Core Type (Atom: 0x20, Core: 0x40) と Native Model ID の組み合わせからマイクロアーキテクチャを識別することができる。

Native Model ID の値に関する情報元は、主に Intel が公開している TMA (Top-down Microarchitecture Analysis), PMU (Performance Monitoring Unit) のイベント情報を記述したマップファイルとなる。
マップファイルは https://download.01.org/perfmon/ で公開されていたが、最近になって Github レポジトリ intel/perfmon に移行した。

Redwood Cove

intel/perfmon に Intel の Ed Baker 氏により、マップファイルを更新するプルリクエストが投稿されており、そこでは Meteor Lake-SCPUID Model (0xAC) を追加すると同時に、Redwood Cove の Native Model ID が 0x2 に更新されている。

    --- a/mapfile.csv
    +++ b/mapfile.csv
    @@ -152,4 +152,6 @@ GenuineIntel-6-BF,v1.16,/ADL/events/alderlake_uncore_experimental.json,uncore ex
     GenuineIntel-6-BE,v1.16,/ADL/events/alderlake_gracemont_core.json,core,,,
     GenuineIntel-6-BE,v1.16,/ADL/events/alderlake_uncore.json,uncore,,,
     GenuineIntel-6-AA,v1.00,/MTL/events/meteorlake_crestmont_core.json,hybridcore,0x20,0x000002,Atom
    -GenuineIntel-6-AA,v1.00,/MTL/events/meteorlake_redwoodcove_core.json,hybridcore,0x40,0x000001,Core
    +GenuineIntel-6-AA,v1.00,/MTL/events/meteorlake_redwoodcove_core.json,hybridcore,0x40,0x000002,Core
    +GenuineIntel-6-AC,v1.00,/MTL/events/meteorlake_crestmont_core.json,hybridcore,0x20,0x000002,Atom
    +GenuineIntel-6-AC,v1.00,/MTL/events/meteorlake_redwoodcove_core.json,hybridcore,0x40,0x000002,Core

Native Model ID についてプルリクエスト内では特に触れられていないが、Meteor Lake の初期サンプリングでは Redwood Cove が Native Model ID に 0x1 を返すようになっていたか、単なるタイプミスだったのだと思われる。

Native Model ID
(2022-Oct-27)
Type: Core
(0x40)
Type: Atom
(0x20)
Lakefield1 0x0 (SNC) 0x0 (TNT)
Alder Lake 0x1 (GLC) 0x1 (GRT)
Raptor Lake 0x1 (GLC) 0x1 (GRT)
Meteor Lake 0x2 (RWC) 0x2 (CMT)

ある意味不自然だった点が解消された訳だが、未だ Native Model ID の更新基準はよく分からないままだ。
先日 Intel® Architecture Instruction Set Extensions Programming Reference が更新され、Sierra Forest (Atom), Grand Ridge (Atom?), Granite Rapids (Core) それぞれに追加される命令が公開されたが、Meteor Lake については明記されておらず、それらの命令に対応しないと考えられる。
Intel® Architecture Instruction Set Extensions Programming Reference を基に、Meteor Lake のサポートを追加するパッチが GCC や Clang/LLVM に投稿されたが、対応命令範囲は Alder Lake (Golden Cove + Gracemont) と同じだとされている。2

Sierra Forest, Grand Ridge では対応命令に AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT8 命令が追加される。
Meteor Lake がそれらに対応しない理由としては、Sierra Forest, Grand RidgeCrestmont の次世代 Atom 系マイクロアーキテクチャを採用しているか、Redwood Cove がそれら命令に対応しないため、ハイブリッドアーキテクチャの特性上、無効化されていることが考えられる。

今回の更新により、Native Model ID の更新基準、言い換えればマイクロアーキテクチャが異なるとされる基準は対応命令範囲に限らないと言えるのかもしれない。

参考リンク