以前に Meteor Lake に採用される Redwood Cove (Core, P-Core) と Crestmont (Atom, E-Core) の存在と、それらマイクロアーキテクチャを識別するために割り当てられる Native Model ID について取り上げた。
その時点では、Redwood Cove の Native Model ID は Golden Cove と同じ 0x1
、Crestmont は Gracemont から更新された 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-S の CPUID 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 Ridge が Crestmont の次世代 Atom 系マイクロアーキテクチャを採用しているか、Redwood Cove がそれら命令に対応しないため、ハイブリッドアーキテクチャの特性上、無効化されていることが考えられる。
今回の更新により、Native Model ID の更新基準、言い換えればマイクロアーキテクチャが異なるとされる基準は対応命令範囲に限らないと言えるのかもしれない。
参考リンク
- Intel® Architecture Instruction Set Extensions Programming Reference
- Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-L
- Native Model ID が更新される Crestmont と更新されない Redwood Cove | Coelacanth’s Dream
- Intel Sierra Forest, Grand Ridge, Granite Rapids でサポートされる新命令 | Coelacanth’s Dream