Tiger LakeだのDG1だのGen12だので、最近Intel GPUが盛り上がっているため、
公開されているコードをハードウェアや製品に結び付けられる程度には読み方を覚え、まとめてみた。
公開されている情報量は多いが、それなりに整理がされており、付随するコメントも親切でやりやすくはあった。
Sandybridgeとかからまとめるのはさすがに量が多くなりすぎてしまうため、Skylake (Gen9) からとした。
今も現役な14nm世代であり、特に複雑なのが丁度そのあたりなため、まとめる意義があるはずだ。
スペース削減のため、表ではSkylake以降のコードネームにおいて末尾の Lake を「L」1文字に省略している。
Kaby Lakeと、Skylake以降のコードネームでは Lake が分離しているため、わざわざ記述する必要もないと思う。
それと略称の最後がLなら、まず Lake だと言っていい。
ただGemini Lakeだけは例外で、GLKと略されている。Atom系だから?
Intel GPU | a.k.a. | Memo | Gen | Device ID | |
---|---|---|---|---|---|
Skylake | SKL | Gen9 | 0x1902 - 0x193D | ||
Kaby L | KBL | Gen9 | 0x5906 - 0x593D | ||
Amber L (AML) | Gen9 | 0x591C, 0x87C0 | |||
Coffee L | CFL | Gen9 | 0x3E90 - 0x3EA8 | ||
Amber L (AML) | Gen9 | 0x87CA | |||
Whiskey L (WHL) | Gen9 | 0x3EA0 - 0x3EA4 | |||
Comet L (CML) | Gen9 | 0x9B21 - 0x9BF6 | |||
Broxton | BXT | Atom | Canceled | Gen9 | 0x0A84, 0x1A84, 0x1A85 |
Apollo L (APL) | Gen9 | 0x5A84, 0x5A85 | |||
Gemini L | GLK | Atom | Gen9 | 0x3184, 0x3185 | |
WillowView | = Willow Trail? | Canceled | |||
GlenView | GLV | Atom? | ??? | Gen9 | 0x3E04 |
Cannon L | CNL | Gen10 | 0x5A42 - 0x5A5C | ||
Ice L (LP) | ICL (LP) | Gen11 | 0x8A50 - 0x8A71 | ||
LakeField | LKF | Gen11 | 0x9840 - 0x9850 | ||
Jasper L | JSL | Gen11 | 0x4500 | ||
Elkhart L | EHL | = Jasper | Gen11 | 0x4500 - 0x4569 | |
Tiger L (LP) | TGL (LP) | Gen12 | 0x9A40 - 0x9A7F |
参考: igfxfmid.h - intel/intel-graphics-compiler
(追記 2019/12/02 01:23)GlenViewのGenをGen9に修正。 指摘を受けて見直したらそこにはGen9。
https://github.com/intel/intel-graphics-compiler/blob/862d1d982b4a54417e801b55cb63019b7c2322e4/IGC/common/SystemThread.h#L85
真面目に読み込んでみた感想としては、知らないコードネームがちらほらあって驚いた。
Broxton、WillowView、GlenViewとか。
GlenViewは、その名前とGen9であることくらいしか判明していない。
BroxtonとWillowViewはキャンセルされており、影も薄くなるよなという感じ。
それとAmber、Whiskey、Cometは少しややこしいが、PCHでもっとややこしくなる。
スペックの知り方
Intelのmedia-driverレポジトリ内のファイルを読むのが手っ取り早いし正確だ。
github.com/intel/media-driver/tree/master/media_driver/linux/genX/ddi/media_sysinfo_gX.cpp
(Xには世代の数字が入る。)
https://github.com/intel/media-driver/tree/master/media_driver/linux
以下、Gen10/11/12のびみょうなまとめ。
Gen10
Cannon Lakeだけの世代となり、そのCannon Lakeも一応世にではしたけれどGPUが無効にされていたため実性能がわかっていない幻のGen10のファイルを読むと、
GT3、GT3eのスペックも記述されており、規模だけで言えばIce LakeのGen11より大きい72EU、さらにはeDRAM付きもありえたかもしれないというのが面白い。
それとスペックがMesaの方と微妙に差異がある。
i965_pci_ids.h - Mesa
gen_device_info.c - Mesa
MesaではGen10 GT2が総サブスライス数:5、サブスライスあたりのEU数:8とのことから合計40EUと読めるが、
media-driverでは総サブスライス数:4、サブスライスあたりのEU数:8と、合計32EUとなっている。
それとMesaにはGT0.5/1/1.5があるのに対し、media-driverではGT1/1.5だけであり、
スペックで見れば、 40EUの構成を消して下から押し上げて数字を当てはめたという感じだ。
なんとかGPUの仕様を変えて出荷しようと迷走した結果なのだろうか。
Gen11
Ice Lakeで真新しい情報は特にない、はず。
だがGen11を搭載するもう1つのElkhart Lakeでは、32EU、L3キャッシュ 1280KBとされていた。
このElkhart Lake、名前こそ結構コードで出ているものの、詳細はまだベールに包まれている。
Atom系だとは言われているが。
Jasper Lakeという名前もあるが、PCH以外Elkhart Lakeとほぼ同一と思われる。
LakeFieldは、media-driverに詳細はまだないが、intel-grahics-compilerでの名前から64EUだとわかる。
https://github.com/intel/intel-graphics-compiler/blob/master/inc/common/igfxfmid.h#L569
また、LakeFieldのAtom、GPU側がElkhart Lakeと読むことができ、
gen_perf.c - Mesa
Gen11だという発表とも一致する。
Intelが3D積層のヘテロジニアスマルチコアCPU「Lakefield」の技術を発表 - PC Watch
アーキテクチャ面では、Gen11のスライス数が1までで、サブスライスを増やすといった構成になっているが、
これがどう作用しているのかは(私が)よくわからない。
L3キャッシュはバンクあたり384KBと、それまでの256KBから増量された。
ディスプレイ周りではDSC(Display Stream Compression)に対応してる、はずだが特にアピールされていない。
Display Stream Compression enabling on eDP/DP - Patchwork Intel GFX
現状Ice Lakeはモバイル向けしか出ていないのに、8Kディスプレイへの接続を推しても……ということなのだろうか。
Gen10でもDSCらしき記述があるがこれも、GPUが無効化されているのにそんな話しても……といった感じか。
i915_pci.c#n736
Gen12
Gen12はまだmedia-driverにはないが、Mesaには記述されている。
https://gitlab.freedesktop.org/mesa/mesa/blob/master/src/intel/dev/gen_device_info.c#L1035
スペックではGT1が32EU、GT2が96EUとなり、スライス数、バンクあたりのL3キャッシュはGen11を継承して1、384KB。
合計L3キャッシュ容量もIce Lakeと同じ3072 KB。
IntelのGithubレポジトリの1つ、compute-runtime よりL3キャッシュは8バンク、3840 KBという構成だとわかった。
hw_info_tgllp.inl - Intel / compute-runtime
バンク数はIcelakeと同じであることから、バンクあたりの容量をGen11の384 KBから480 KBに増やしたと推測される。
Tiger Lake LPという名前でありながら、intel-graphics-compilerにはID名に DESK_65W があったり。
https://github.com/intel/intel-graphics-compiler/blob/master/inc/common/igfxfmid.h#L557
DESK_WS_65Wというのもあるが、
intel-graphics-compilerにはキャンセルされたものや、予定していたであろうCannon LakeのIDが大量に残されていたりするため、
記憶の隅に置いておく程度が丁度いいだろう。
subslicesが、dual_subslicesとなっているがこれまたどういった狙いがあるかは不明。
何となくRDNAのWGP(DualCU)が思い浮かぶが、AMDからIntelに移籍したRaja Koduri氏と関係しているのだろうか……
DG1
世代的にはGen12_5とされているが、Gen12(Tiger Lake LP)とどこまで違うかは不明。
キャッシュ、メモリ構成、規模等で分けているのだろうか?
[Intel-gfx] [PATCH 0/1] dg1: enable dsb back
dGPU関連ではMulti-GPUのサポートが追加されている。
[Intel-gfx] [CI] drm/i915/pmu: Support multiple GPUs
iGPU側は特に指定されていないため、Gen9でも恩恵を受けられるかもしれない。
オープンな範囲で公開されている情報と私の理解力では、まだDG1はこの程度の情報しか見つけられなかった。
かといって噂レベルの情報を取り入れても混乱するため、ここまでとする。
次はIntel PCHをまとめるつもりだが、やる気次第。