組み込みデバイス向けのハイパーバイザー ACRN Hypervisor へのプルリクエストの中で Alder Lake-P の構成ファイルが投稿された。投稿したのは Intel の Kunhui-Li 氏。
ACRN Hypervisor は Intel が推進するオープンソースプロジェクトの一つであり、Intel はメンバーとして参加、自社プロセッサ用のコードを提供している。1
そして構成ファイルには CPUキャッシュの詳細情報が含まれており、既にキャッシュサイズはベンチマーク結果から知られていたが、今回キャッシュの way数も公開されたことになる。
Intel Alder Lake-S のベンチマーク結果から読むキャッシュ構成 【追記 2020-10-07】16-Core/24-Thread? | Coelacanth’s Dream
Index
構成ファイルからキャッシュ情報を読み取る
まず構成ファイルからキャッシュ情報を読み取る方法を書くと、構成ファイルは基本以下のように記述されている。
cache level
とその値はそのまま意と思われ、<processor>..</procssor>
にあるのはそのキャッシュを持つ CPUコアの ID と思われる。
そして type
だが、これは CPUID からキャッシュパラメーターを読み取るのに使われる定義と同じと思われる。
Intel® Architecture Instruction Set Extensions Programming Reference の Table 1-3 に記載されているが、 Leaf (EAXレジスタ) に 0x4、Sub-leaf (ECXレジスタ) にキャッシュレベルに対応した値をセットして CPUID命令を実行すると得られる 32-bit の値では、Bit 4-0 がキャッシュタイプを示すフィールドとなっており、1 は Data Cache、2 は Instruction Cache、3 は Unified Cache、0 は Null でその他は予約領域。
これを踏まえると、以下の上側は L1 Data Cache の構成を、下は L1 Instruction Cache の構成を示していることがわかる。早速ツールを自作する時に得た CPUID の知識が役立った。
また、ここにおける Alder Lake-P は 2x Core (Golden Cove) + 8x Atom (Gracemont) の構成となっており、Core ID: 0x0, 0x4 に Golden Cove 、Core ID: 0x8-0xF に Gracemont が対応している。
<caches> <cache level="1" id="0x0" type="1"> <cache_size>49152</cache_size> <line_size>64</line_size> <ways>12</ways> <sets>64</sets> <partitions>1</partitions> <self_initializing>1</self_initializing> <fully_associative>0</fully_associative> <write_back_invalidate>0</write_back_invalidate> <cache_inclusiveness>0</cache_inclusiveness> <complex_cache_indexing>0</complex_cache_indexing> <processors> <processor>0x0</processor> </processors> </cache> <cache level="1" id="0x0" type="2"> <cache_size>32768</cache_size> <line_size>64</line_size> <ways>8</ways> <sets>64</sets> <partitions>1</partitions> <self_initializing>1</self_initializing> <fully_associative>0</fully_associative> <write_back_invalidate>0</write_back_invalidate> <cache_inclusiveness>0</cache_inclusiveness> <complex_cache_indexing>0</complex_cache_indexing> <processors> <processor>0x0</processor> </processors> </cache>
Golden Cove, Gramont
現世代、Golden Cove と Gracemont からすれば前世代となる Willow Cove 、Tremont と一緒にキャッシュ構成をまとめたのが以下の表となる。
uArch | Golden Cove | Willow Cove | Sunny Cove | Gracemont | Tremont |
---|---|---|---|---|---|
L1 Data | 48 KiB /12-way |
48 KiB /12-way |
48 KiB /12-way |
32 KiB /8-way |
32 KiB /8-way |
L1 Inst | 32 KiB /8-way |
32 KiB /8-way |
32 KiB /8-way |
>64 KiB /8-way |
32 KiB /8-way |
L2 | 1.25 MiB /10-way |
1.25 MiB /20-way |
512 KiB /8-way |
2 MiB /16-way (per Module) |
1.5-4.5 MiB /12-way (per Cluster/Tile) |
L3 | 12 MiB /12-way (3 MiB per Core) |
12 MiB /12-way (3 MiB per Core) |
2 MiB /12-way |
12 MiB /12-way (3 MiB per Cluster/Tile) |
4 MiB /16-way |
- 表参考リンク
注目されるのは Golden Cove のキャッシュ構成だが、L1D/I と L2 のキャッシュサイズは Willow Cove と同じだが、L1I と L2 の way数を減らした興味深いものになっている。特に L2キャッシュは 半分の 10-way に減らされている。
ACRN Hypervisor には Tiger Lake の構成ファイルも存在するためそちらも確認したが、やはり Tiger Lake/Willow Cove は L2 1.25 MiB/20-way の構成だった。2
<cache level="2" id="0x0" type="3"> <cache_size>1310720</cache_size> <line_size>64</line_size> <ways>10</ways> <sets>2048</sets> <partitions>1</partitions> <self_initializing>1</self_initializing> <fully_associative>0</fully_associative> <write_back_invalidate>0</write_back_invalidate> <cache_inclusiveness>0</cache_inclusiveness> <complex_cache_indexing>0</complex_cache_indexing> <processors> <processor>0x0</processor> </processors> </cache>
CPUキャッシュにおいて、メモリアドレスに対応するキャッシュラインを複数設ける (n-way) ことは、キャッシュラインの競合 (スラッシング) が発生する確率を減らし、性能低下を防ぐ役割がある。way数を減らしたことは、単純にスラッシングが発生しやすくなるようにも思えるが、キャッシュラインに設けられたタグの比較回路を小さくできるため、キャッシュ密度を高めることができる。
また Gracemont では L1I キャッシュサイズが Tremont の 32 KiB/8-way から大幅に増量され、64 KiB/8-way となった。Core/Big側の Golden Cove も 32 KiB/8-way であり、Gracemont の L1I キャッシュは異様とも言える大きさだ。
これについては、Tremont で大幅に拡張されたデコーダーをより活用し、IPC と電力効率を向上させる狙いがあるのかもしれない。
Gracemont の L2キャッシュについては構成ファイルから得られる情報をそのまま記載したが、Tremont のように、プロセッサによって一定の範囲でサイズが選択可能となっている可能性もある。
Gracemont では Tremont 同様に 4コアで L2キャッシュを共有する、タイルとも呼ばれるクラスタを構成する。
L2キャッシュのサイズは Tremont では、マイクロサーバー向けの Snow Ridge が 4.5 MiB、他 Lakefield 、Elkhart Lake 、Jasper Lake が 1.5 MiB の構成を採用している。