FPU a SIMD: AMX v serverech, Alder Lake přijde o AVX-512
Procesory Intel Alder Lake budou asi největší hardwarová událost letoška. Jsou ještě přes dva měsíce daleko, ale už jsme dostali snad nejvíc očekávané info: Intel odhalil architekturu jader těchto CPU. Ta slibuje velké navýšení výkonu – půjde o jeden z největších architektonických skoků v x86 procesorech. Například poprvé přináší šest paralelních dekodérů a další posílení IPC, čímž Intel jde podobou cestou jako účinná jádra Applu.
Protože Intel nepoužívá oddělenou FPU, jsou floating-point a SIMD jednotky (které provádějí jak celočíselné, tak floating-point, ač se jim někdy tradičně říká FPU) za těmi samými porty jako celočíselné ALU operace. Paralelismus SIMD části ale není tak silný, všechny jednotky jsou zdá se jen za třemi porty – 0, 1 a 5 jako u předchozích architektur.
Použití jen tří portů bohužel omezuje možnost zvýšit IPC procesoru tím, že se proloží SIMD nebo floating-point a skalární celočíselné instrukce (což by mělo fungovat třeba u AMD Zenů nebo ARMů). Méně portů obecně znamená více konfliktů. Například je velmi užitečné, že jádra Intelu mají dvě jednotky pro permutace, ale při využití této schopnosti provést dva shuffly v jednom cyklu už je volný jen jeden další SIMD port pro jiné operace. Ač má tedy Golden Cove teoreticky širší jádro, při některých mixech instrukcí by Zen 2 nebo Zen 3 mohl zpracovat za cyklus víc operací.
Na všech třech portech jsou SIMD ALU pro celočíselné operace, permutace (shuffle) jsou na dvou (1, 5), SIMD posuny jsou na dvou (0, 1), floating-point dělička na jednom. Mělo by to znamenat, že 512bitobých operací lze v jednom cyklu udělat dvě až tři podle typu – tedy u těch celočíselných. U floating-point to budou maximálně dvě 512bitové operace, nebo tři 256bitové v případě FMA.
Nové v Golden Cove je, že dva porty mají také rychlou floating-point sčítačku (FADD) na portech 1 a 5, která má nízkou latenci a lepší spotřebu proti těžkotonážnějším jednotkám FMA,které tak pro sčítání zastoupí. Jednotka FMA je na třech portech, přičemž stejně jako v předchozích architekturách – tedy aspoň těch serverových to funguje tak, že první dvě FMA jsou 256bitové, takže dohromady umí dvě instrukce AVX/AVX2 za takt, nebo se mohou sdružit pro výpočet jedné 512bitové operace AVX-512. Třetí jednotka FMA na portu 5 je nativně 512bitová, takže umí provést jednu operaci AVX-512 každý cyklus (ovšem latence může být delší). Není jasné, zda bude tato 512bitová FMA zase jenom ve verzi jádra pro procesory Xeon Sapphire Rapids a odvozenou HEDT platformu, nebo tentokrát bude i v procesorech pro spotřebitelský trh.
FP16 výpočty
Instrukce AVX-512 jinak v jádře Golden Cove nově mají schopnost pracovat s 16bitovými hodnotami FP16 (kdy je možná vypočítat 2× více operací za cyklus než s přesností FP32), což je sice zase nové rozšíření (přidávající fragmentaci), ale pro některé aplikace jako je AI (ale asi i pro některé multimediální úlohy) to může být dost přínosné. Toto a přidání jednotek FADD je zdá se v Golden Cove hlavní změna SIMD/FPU části, jinak se nezvýšily hrubé teoretické schopnosti této části backendu (ale celkově asi výkon bude vyšší díky posílení ostatních částí jádra).
AVX-512 bude natvrdo vypnuté
Ve výsledku je to jedno, protože AVX-512 představuje konflikt s big.LITTLE architekturou, jelikož malá jádra Gracemont tyto instrukce neumí. Při přesunu programu na toto jádro by proto došlo k pádu aplikace. Současně by se AVX-512 nedalo reálně použít v mnohovláknovém kódu, protože byste pravděpodobně nezískali navíc dost výkonu na to, aby se překonala ztrátu z toho, že nevyužijete výkon malých jader, která by mohla aplikace vytížit současně s velkými jádry, pokud by AVX-512 nepoužívala (a vypadá to, že výkon přidaný těmito malými jádry ukáže být značný).
Intel již potvrdil, že z tohoto důvodu budou mít jádra Golden Cove ve spotřebitelských procesorech Alder Lake podporu AVX-512 vždy vypnutou, ačkoliv v křemíku bude přítomná, a budou podporovat maximálně AVX a AVX2. Nepůjde ji ani znovu zapnout, pokud byste deaktivovali malá jádra Gracemont. Procesor ji má natvrdo hardwarově deaktivovanou bez možnosti zapnutí. Toto je škoda pro vývojáře softwaru. Původně se objevovaly informace, že by Intel mohl dovolit u Alder Lake malá jádra dočasně vypínat a tím aktivovat AVX-512, nakonec asi kvůli komplikacím s tím spojeným tato možnost existovat nebude.
AVX-512 tak asi bude možné používat jedině u serverové verze jádra Golden Cove v procesorech Sapphire Rapids – ve Xeonech a v odvozených highendových procesorech Core na tzv. „HEDT“ platformě (tedy následníkovi dnešní X299). Intel by teoreticky mohl vydat nějaké verze Alder Lake pro mainstreamový desktop, kde by z továrny byla naopak natvrdo vypnutá malá jádra a AVX-512 by mohlo být aktivní, ale v nabídce CPU by to pak vypadalo dost divně, takže moc nečekáme, že by se takovéto speciální modely atraktivní pro vývoj softwaru s AVX-512 objevily.
Jak už poznamenalo mnoho lidí, Intel tímto hodně zkomplikoval použití instrukcí AVX-512, protože jen co se v mainstreamových CPU objevily (Ice/Tiger/Rocket Lake), už jsou zase pryč, takže uživatelská základna zůstává příliš malá. Koncepce big.LITTLE je z tohoto jednoho pohledu dost neblahá zpráva. Objevily se – zatím neoficiální – zprávy, že AMD by naopak AVX-512 teď, zrovna, když ho Intel odebral, mohlo podporovat v jádru Zen 4. Takže to vypadá, že pokud budete chtít tuto dřívější exkluzivní výsadu Intelů, bude vás to paradoxně tlačit ke konkurenci.
Intel zřejmě v Alder Lake vypnul i některé další instrukce, které Golden Cove a i velká jádra předtím uměla, takže výsledkem by mělo být, že instrukční sada přesně odpovídá malým jádrům. Další oběti už snad ale nejsou tak významné (i když pokud jste je už v nějakém programu stihli uplatnit, asi radost mít nebudete).
Co z AVX-512 v této osekané variantě Golden Cove ale zbylo, budou instrukce VNNI, ovšem v omezené verzi používající jen 256bitové registry pro AVX (YMM) místo 512bitových (ZMM). Tyto instrukce budou mít i malá jádra, a tak bude VNNI256 možné používat i v jádrech Golden Cove procesorů Alder Lake.
Advanced Matrix Extensions (AMX)
Pokud jde o serverovou verzi Golden Cove v procesorech Sapphire Rapids, bude mít kromě aktivního AVX-512 ještě jednu specialitu: instrukční rozšíření AMX, které zdá se ve spotřebitelské verzi (procesory Alder Lake) nedostaneme.
Tyto instrukce budou provádět maticové operace s vysokým paralelismem a tím i hrubým výkonem (ovšem s relativně omezeným použitím, proto také výkon může být tak vysoký), jelikož jde o akcelerátory určené pro strojové učení/umělou inteligenci. Lze je tedy asi chápat jako obdobu třeba Tensor jader v GPU Nvidia. Jednotka provádějící operace AMX je podle schématu Intelu v jádře přítomná jedna, na portu 5.
Instrukce AMX budou provádět maticové násobení s hodnotami INT8. Budou k tomu používat nové 1024bitové registry (jádro jich má osm – T0 až T7), nad nimiž tyto operace budou probíhat. V jednom registru se tedy bude najednou zpracovávat 128 hodnot INT8. Výkon instrukcí AMX má dosahovat až 2048 operací ze jeden cyklus na jednom jádru (takže pokud to dobře počítám, cca 2 TOPS při frekvenci 1 GHz, 8 TOPS při 4 GHz…).
Článek pokračuje v další kapitole.
- Contents
- Architektura Golden Cove: historicky nejvýkonnější frontend u x86
- Rozšíření ve výpočetních jednotkách a prohloubení „okna“
- FPU a SIMD: AMX v serverech, Alder Lake přijde o AVX-512
- Rozšíření jádra získalo o 19 % vyšší výkon při stejném taktu
Oprava chyby v článku: bylo špatně napsané srovnání s počtem AGU a load/store operací za cyklus u Zenu 3 (ten má jen 3 AGU a může tedy udělat jen maximálně tři operace za cyklus: tři čtení, nebo dva zápisy a jedno čtení, nebo dvě čtení a jeden zápis, kdežto Golden Cove má 5 AGU umí 3 čtení a zároveň 2 zápisy).