Snapdragon X Elite の12コアを Windows がどう見せているか(L3キャッシュが0と報告される)
この記事の見出し
Get-CimInstance Win32_Processor が返した L3CacheSize は 0 だった(最初に見たときは、さすがに二度見した)。
Snapdragon X Elite を積んだ Surface Pro 11th Edition を1年以上使っているのに、CPU の構成を真面目に読んだのは2026年8月2日が初めてだった。12コアのハイエンド SoC で三次キャッシュがゼロ、という数字はかなり怪しい。ベンチマークの結果ばかり見ていて、Windows がこの SoC をどう報告しているかを後回しにしていたことに、この時点で気づくことになる。
今回の目的は、値を集めることよりも、信用してよい項目と信用しにくい項目を分けることだった。WMI の出力は便利だが、埋まっている欄を全部そのまま信じると、L3CacheSize の 0 や CurrentClockSpeed の 3417 で簡単に読み違える。
Win32_Processorに聞いた
使ったコマンドは次の形。Name、NumberOfCores、NumberOfLogicalProcessors、MaxClockSpeed、CurrentClockSpeed、L2CacheSize、L3CacheSize、Architecture、AddressWidth をそのまま出した。
Get-CimInstance Win32_Processor |
Select-Object Name, NumberOfCores, NumberOfLogicalProcessors,
MaxClockSpeed, CurrentClockSpeed,
L2CacheSize, L3CacheSize, Architecture, AddressWidth
| 項目 | 値 |
|---|---|
| Name | Snapdragon(R) X 12-core X1E80100 @ 3.40 GHz |
| NumberOfCores | 12 |
| NumberOfLogicalProcessors | 12 |
| MaxClockSpeed | 3417 |
| CurrentClockSpeed | 3417 |
| L2CacheSize | 36864 |
| L3CacheSize | 0 |
| Architecture | 12 |
| AddressWidth | 64 |
表だけ見ると、Snapdragon(R) X 12-core X1E80100 @ 3.40 GHz は、12コア12論理プロセッサ、L2が36864KB、L3が0、Architectureが12、AddressWidthが64という構成に見える。ここで問題になるのは、同じ表の中に「そのまま使える値」と「報告値としては怪しい値」が混ざっていること。
12本しかグラフが出ない理由
NumberOfCores と NumberOfLogicalProcessors がどちらも12なので、この SoC には SMT がない。Intel や AMD の同クラスなら24論理になるところが、ここでは12で止まる。
タスクマネージャーのグラフが12本しか出ないのを、最初は表示の都合か不具合だと思っていた。実際に Win32_Processor で数え直すと、仕様どおりの12本だった。24本あるものだと思い込んでいたので、ここは地味に予想と違ったし、実際に数えるまで勘違いを続けていた、という失敗でもある。
並列度が効く処理では、この差は素直に効いた。手元では12並列を超えて投げても速くならず、ビルドやテストの並列数は12を上限に置いている。もちろん、I/O 待ちの多い処理ならもう少し投げてもよい場面はあるが、CPU を埋めるだけの処理では12を超えたあたりで疑うようにした。
Architectureの12はARM64
Architecture の 12 は ARM64 を指す値。x64 なら9、x86 なら0が返る。スクリプトから「今どのアーキで動いているか」を見たいだけなら、このプロパティは扱いやすい。
環境変数の PROCESSOR_ARCHITECTURE でも似た情報は取れる。ただ、エミュレーション下で実行されると x64 と答えてしまうことがあった。手元では実際に食い違いを見ているので、WMI 側を見るように変えた(ARM64 Windows で小さな診断スクリプトを書くときに効く)。
AddressWidth の64も、そのまま読んでよさそうだった。Architecture の12、NumberOfCores の12、NumberOfLogicalProcessors の12、AddressWidth の64。このあたりは、他の手段で見ても大きく揺れない固定値として扱っている(少なくとも手元では、ここで迷う場面は少ない)という整理にした。
L3CacheSizeの0は証拠にならない
L2CacheSize は36864、つまり36MB。12コアで割ると1コアあたり3MBになる。この数字自体はそれなりにもっともらしい。ただし、これが本当に「12コア合計の L2」なのか、「クラスタごとの値をどう合算したもの」なのかは、WMI の表だけでは読み切れなかった。
問題は L3CacheSize の 0。三次キャッシュが物理的にないと読むには、あまりにも危ない数字だった。いくつか調べてみると、Windows の WMI プロバイダが ARM64 の SoC で L3CacheSize を正しく埋めないケースがあるらしい。少なくとも、私の環境では WMI だけで「存在しない」のか「報告されていない」のかを区別できていない。
つまりこの 0 は「L3 がない証拠」ではなく、「WMI では確認できなかった値」として扱うのが安全だと思う。ここを取り違えると、キャッシュ前提の性能予測を丸ごと外す。では、この 0 は何を意味しているのか。0という数字は強く見えるが、今回の0は断定材料ではなかった(この表だけで「L3なし」と書いたら、かなり危ない)。
ClockSpeedも固定値に見える
MaxClockSpeed と CurrentClockSpeed がどちらも3417で一致している。負荷をかけた状態でも、アイドル状態でも、返ってくる値は3417のままだった。
最初の読み方はここでかなり揺れる。「常に最大クロックで張り付いている高性能な SoC」だと読んでしまい、そのつもりで消費電力の話を組み立てかけた。けれど、状態を変えても CurrentClockSpeed が動かないなら、動的な周波数を見ているとは考えにくい。公称値をそのまま返しているだけ、という見方のほうが自然だった。
WMI が返す値は、埋まっているものと埋まっていないものが混ざる。全部を等しく信用してはいけない、という当たり前の話に着地したわけだが、3417が2つ並ぶ見た目はなかなか紛らわしい。
周辺の値も0に注意する
同じタイミングで拾えたものも並べておく。メモリは総量33099544KB、空き7279708KB。GPU は Qualcomm Adreno X1-85、内蔵ディスプレイは2880x1920の60Hz。ストレージは SDDPTQD-1T00-1124-WD、NVMe 接続の SSD で1024209543168バイト。最終起動は2026年8月1日13時32分だった(再起動直後ではなく、普段使いの延長で取った値だ)。
GPU の AdapterRAM も0と返ってくる。統合 GPU なので専用メモリを持たない、という意味だと解釈しているが、ここも L3 と同じで、0を「無い」と読むか「報告されない」と読むかは分けて考えたほうがいい。
0は便利な数字に見える。けれど、WMI の0は「未設定」「不明」「本当にゼロ」が混ざることがある。Snapdragon X Elite の L3CacheSize と Qualcomm Adreno X1-85 の AdapterRAM は、まさにそこを疑うきっかけになった。
使える値だけを残す
整理すると、そのまま使えるのは NumberOfCores の12、NumberOfLogicalProcessors の12、Architecture の12、AddressWidth の64。ハードウェアの構成として固定されていて、他の手段で取っても同じ値になる。
使いにくいのは CurrentClockSpeed の3417と L3CacheSize の0。前者は動的な値を返していないように見えるし、後者は存在の有無すら判定できない。L2CacheSize の36864は中間で、36MBという数字はもっともらしいが、どういう単位で集計された値なのかまでは未確認のまま置いている。
2026年8月2日に分かったのは、数字を集めることより、数字の信用度を分けるほうが大事だということだった。9項目のうち、そのまま使えると判断したのは4項目だけ。Surface Pro 11th Edition の構成を見るつもりが、最後は WMI の報告値との付き合い方を考える話になってしまった。