Proč je M1 tak rychlý?
V éteru se už pár měsíců vznáší otázka, proč je nové CPU od apple rychlejší než to nejlepší z x86 světa z dílen Intelu a AMD? Mnoho článků se snaží poskytnou odpověď, aspoň nominálně titulkem, ale na otázku neodpoví a vysvětlení nepodá. Většinou spadnou do šablony „protože interní paralelismus“ nebo ještě vágněji „protože RISC“. Na to ale není potřeba dlouhá esej, stačí letmý pohled do naměřených specifikací:
- 8-široký dekodér
- velká L1 cache (192 kB L1I, 128 kB L1D)
- gigantická sdílená L2 cache (8 MB)
- 16 exekučních jednotek
- reorder buffer pro 630 μop
- 350+ fyzických int registrů
- 380+ fyzických floating point registrů
- masivní paměťový paralelismus
Pro porovnání parametry Zen 3:
- 4-široký dekodér (z op cache odbaví 8 macro op, do backendu jich pošle 6)
- 32+32 kB L1 cache (+ 4k op cache)
- 512 kB L2 cache
- 32MB L3 victim cache sdílené osmi jádry
- 16 exekučních jednotek
- reorder buffer pro 256 macro op
- 192 fyzických int registrů
- 256 fyzických floating point registrů
- 24 paralelních cache miss
Porovnání s později uvedeným Ice Lake SP
- 32 kB L1I$ + 48 kB L1D$
- 1280 kB L2$
- 1.5 MB L3$
- out of order window: 352
- in flight load stores: 128 + 72
- 280 int a 224 FP registrů
- 2× 512-bit FP SIMD
M1 je out-of-order monstrum. Proto.
Ale proč M1 tohle dokáže, zatímco dvojice firem léta dominující CPU průmyslu ne? O to tady jde. Toto vysvětlení jsem nikde nečetl.
Může za to ARM architektura a s ní spojená fixní délka instrukcí a relaxovaný paměťový model? Pokročilejší litografický proces než zbytek světa, který poskytne víc tranzistorů pro OOO mašinérii a cache? Roky intenzivního vývoje vlastní architektury? Nebo prostý fakt, že jde o produkt jedné z nejbohatších firem světa, které peníze tečou z uší?
Skutečná otázka zní, proč jsou x86 procesory tak pomalé. Mnoho komentářů totiž implicitně předpokládá, že klasická dvojka v křemíkovém byznysu byla vždy ve vrcholné kondici. To ale není pravda.
Intel má problémy posledních pět let, možná víc. Do dneška nedokáže plně přejít z 14 nm procesu na něco novějšího. AMD tiskne třetí Zeny na 7 nm procesu, M1 využívá proces o jednu generaci pokročilejší. Problémy přinutily Intel celé roky donekonečna mírně vylepšovat Skylake architekturu na 14 nm procesu a doufat že to bude stačit. (Tady si nejsem úplně jistý, co je top-end chipzilly. V myriádě generací a půlgenerací a čtvrdtenerací jsem se definitivně ztratil někdy kolem roku 2017.)
AMD, která vždy hrála druhé housle, se k životu probudila až se Zeny a jejich první generace spatřila světlo světa před třemi roky. Předcházející generace buldozerů a dalších těžkých strojů stála za hovno legendárním způsobem. Hlava mi nebere, jak firma mohla přežít, ale asi pomohlo zastoupení v konzolích a grafické karty. Možná. Nicméně trajektorie Zenů je dechberoucí. První generace vzbudila ohlasy v duchu „hele, AMD ožila, roztomilé“, druhá překonala chipzillu téměř ve všech ohledech, třetí zcela kraluje x86 segmentu a cílí na plný gamut strojů od malých po gigantické. Na jedné straně 4 jádra, na druhé 64 jader na placce křemíku v NUMA systému s mnoha terabajty paměti.
Naproti tomu M1 je výsledek dekády kontinuálního vývoje vlastního křemíku pro jeden segment spotřební elektroniky, který neustále vede k efektivnější a rychlejší mikroarchitektuře. Situace by mohla být jiná, kdyby Intel pochodoval svým rytmem bez klopýtání a AMD vytáhla hlavu z písku o roky dřív.
Tak proč? Je snadné vidět, proč je M1 velice rychlý, na to stačí pohled do specifikace. Ale jak je toho dosaženo? Jde o souhru dočasných faktorů nebo jde o zásadnější důsledek architektury? Do jaké míry? Nevím a nemám dost znalostí, abych to dokázal zodpovědět. Moje pracovní teorie je ta, že pocitu výjimečného výkonu zčásti napomáhá unikátní konstelace, kdy nikdo z ostatních hráčů není v plné kondici.
Na závěr divoká spekulace: Pokud je pravda, že velkou roli hraje dekódování instrukcí, kde má x86 se svým barokním systémem prefixů a proměnných délek nevýhodu, Intel vydá update x86 s příčetnějším formátem instrukcí. Půjde pořád o stejnou architekturu, zpětně kompatibilní, jen přibude nový mód, kde jednotlivé instrukce budou mít fixní délku a zjednoduší se systém prefixů. Jsem si skoro 100% jistý, že se to nestane, ale kdyby ano, tady jste to slyšeli poprvé.
Dodatky:
- Apple M1 Microarchitecture Research
- Apple M1: Load and Store Queue Measurements
- vlákno M1 uarch details
- AMX koprocesor
- Velká jádra M1 jsou v porovnání se těmi v Zenu 3 obrovská.
- ARM or x86? ISA Doesn’t Matter
- M1
K tématu: