0xDEADBEEF

RSS odkazy english edition
««« »»»

Proč je M1 tak rychlý?

3. 2. 2021

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í:

Pro porovnání parametry Zen 3:

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é.


K tématu:

píše k47 (@kaja47, k47)