Coelacanth's Dream

Intel、Alder Lake Developer Guide を公開

Intel は 2021/10/04 付でゲーム開発者向けに Alder Lake への性能最適化手法をまとめた 「Intel® Codename Alder Lake (ADL) Developer Guide」 を公開した。

Alder Lake は Big/Performance Core (Golden Cove/Core) と Small/Efficient Core (Gracemont/Atom) の異なる 2種類の CPUアーキテクチャを組み合わせたハイブリッドアーキテクチャを採り、最適化のためにはそれを意識したスレッド化が必要となる。

また Intel は現地時間 2021/10/27-2021/10/28 に Intel Innovation と題したイベントを予定しており、Alder Lake Developer Guide の公開はそれに合わせたものと思われる。
イベントでは 「Performance Tuning Games for Alder Lake and Hybrid Architectures」 、 「Alchemist Graphics Architecture and Features for Game Developers」 というセッションが予定されている。

異なる 2種類の CPUアーキテクチャ

Golden Cove と Gracemont ではキャッシュ構成が異なり、Golden Cove は各コアが L2キャッシュ 1.25 MiB を持ち、L3キャッシュ/LLC (Last Level Cache) に接続されるが、Gracemont は 4コアで L2キャッシュ 2 MiB を共有し、モジュール/クラスターを構成する。
Golden Cove は Intel Hyper-Threading が有効化されているため 2スレッドで L1キャッシュを共有することになるが、Gracemont では無効化されている、あるいはサポートされていないため 1コア/1スレッドが独自の L1キャッシュを持つといった違いもある。
Golden Cove と Gracemont との間でキャッシュを共有する場合は L3/LLC でのコヒーレンスに制限される。

ハイブリッドアーキテクチャでは対応命令/ISAレベルでは対称的となり、そのため Golden Cove の一部機能は制限される。
Golden Cove では AVX512系命令に対応しているが、Gracemont は AVX2 までのサポートであるため、Gracemont/E-Core が有効化されている場合、AVX512 は無効化される。
同時に Gracemont/E-Core を BIOS/UEFI から無効化する機能が存在するが、それをユーザーが切り替え可能とするかは OEM に委ねられるとしている。
Alder Lake では BIOS から一方の CPUタイプを無効化可能 | Coelacanth’s Dream ただ、AVX512 が無効化されている理由に Gracemont/E-Core を挙げているが、Gracemont/E-Core をすべて無効化すれば AVX512 が有効化されるかどうかについては明言されていない。
Intel Architecture Day 2021、Hot Chip 33 で語られたところでは、Gracemont/E-Core を無効化しても AVX-512 等は有効化されず、また AVX-512 ユニットを Alder Lake の Golden Cove/P-Core には物理的に搭載していないという。

SKU (Stock-Keeping Unit) の節で、モバイル向け SKU ではすべてで Gracemont/E-Core が有効化されているが、デスクトップ向けでは Gracemont/E-Core を無効化し、Golden Cove/P-Core のみを有効化した SKU が存在するとしている。
仮に Gracemont/E-Core の無効化で AVX512 のサポート有無が変わると SKU 間で大きな性能差が生まれることになるため、そうした点からも Alder Lake では AVX512 が存在しない可能性が高い。

E-Core の活用

Alder Lake の性能を最大限引き出すには Gracemont/E-Core の活用が必要となる。
しかし単一のスレッドプールを Gracemont/E-Core を含めたトポロジに割り当てた場合、スレッドの同期部分で Gracemont/E-Core が足を引っ張り全体の性能が低下する恐れや、スレッドの切り替えによるオーバーヘッドの発生が予想される。
そこで高性能を必要とする重要度の高いスレッドプールと、非同期的な、性能に影響するクリティカルパスの外にある重要度の低いスレッドプールを用意することが推奨されている。
それによって ITD (Intel Thread Director) と OSスケジューラーはより適切にスレッドを Golden Cove/P-Core 、Gracemont/E-Core に割り当てることができる。
重要度の高いスレッドプールには Golden Cove/P-Core のみを割り当てるよう、アプリケーション、ゲーム側で設定できる。
Gracemont/E-Core に向いた処理には、シェーダーコンパイル、音声処理、アセットストリーミング、展開処理等が挙げられている。

モバイル向けでは最大で Golden Cove/P-Core 6コア + Gracemont/E-Core 8コアという構成で、SKU によっては 2コア+8コアという Gracemont/E-Core の比率が大きい構成が用意されているため、こうした Alder Lake 向けの最適化はモバイル向けでは特に重要となる。

uArch Golden Cove Willow Cove Sunny Cove Gracemont Tremont
L1 Data size 48 KiB
/12-way
48 KiB
/12-way
48 KiB
/12-way
32 KiB
/8-way
32 KiB
/8-way
L1D BW
(L: Load, S: Store)
256B?
(L: 3x32B? or 2x64B?)
(S: 2x64B?)
? 192B
(L: 2x64B)
(S: 1x64B or 2x32B)
128B???
(L: 2x32B? + S: 2x32B?)
64B???
(L: 1x32B + S: 1x32B)
(L: 2x32B or S: 2x32B)
L1 Inst. size 32 KiB
/8-way
32 KiB
/8-way
32 KiB
/8-way
64 KiB
/8-way
32 KiB
/8-way
L1I BW ? ? ? 32B?
(2x 16B)
32B
(2x 16B)
L2 size 1.25 MiB/10-way (Client)
2 MiB (Data Center)
1.25 MiB
/20-way
512 KiB
/8-way
2 MiB
/16-way
(per Module)
1.5-4.5 MiB
/12-way
(per Cluster/Module)
L2 BW Peak/Sustained ? ? 64B/48B 64B/?
L3 size 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/Module)
4 MiB
/16-way

参考リンク