V uplynulých dnech se objevily informace, podle nichž by procesory Nova Lake neměly poskytovat nové technologie APX a AVX10, které se od nich očekávaly podle zpráv, které jsme měli předtím. To, že Intel zatím v dokumentaci o těchto novinkách mlčí, by ale nemusel být definitivní konec, jak jsme upozorňovali. A teď skutečně svitla naděje, že přes „ohlušující ticho“ by v příští generaci CPU Intel tyto novinky nakonec být mohly.
NASM: Intel Nova Lake bude mít AVX10, APX, a dokonce části AMX?
Současná skepse ohledně toho, že by procesory Intel Core Ultra 400 „Nova Lake“ mohly dostat instrukce AVX10/AVX-512 a rozšíření APX, zavládla proto, že v dokumentech Intelu a v patchích pro překladač LLVM/Clang jsou aktuálně seznamy instrukčních rozšířeních pro tato CPU, které tyto novinky nezahrnují. InstLatX64, odborník na různá instrukční rozšíření procesorů x86, ale teď upozornil na to, že jinak je to v projektu NASM, což je assembler pro procesory x86. Podobně jako u překladačů jsou pro tento nástroj podrobnosti o podporovaných instrukcích důležité. A NASM má v kódu již také podporu procesorů Nova Lake odhalující jimi podporovaná rozšíření.
AVX10 a AVX-512
Kód NASM 3.01 v tuto chvíli ukazuje, že Nova Lake má podporu všech SIMD instrukcí AVX-512, které podporují procesory Xeon 6900P „Granite Rapids“ a které tvořily sadu označovanou v předchozích roadmapách Intelu jako AVX10.1. Nova Lake ale bude přidávat řadu dalších rozšíření AVX-512 a AVX10, které celkově jsou zahrnuté pod označení AVX10.2 (v dokumentech a kódu se také používá zápis AVX10_2). V krátkosti to znamená, že podle kódu NASM v procesorech Nova Lake jak AVX-512, tak AVX10 bude.
Intel u AVX10 původně chtěl prosazovat zjednodušenou verzi s jen 256bitovými registry a tím pádem jen 256bitovou šířkou zpracovávaných SIMD vektorů, která by nebyla kompatibilní s 512bitovým AVX-512. Nedávno ale firma oznámila, že tento plán zrušila. AVX10 místo toho bude vždy mít 512bitové registry. Jádra CPU, která budou chtít ušetřit na tranzistorech a spotřebě, budou tyto 512bitové operace zpracovávat ve dvou průchodech podobně jako třeba architektura Zen 4 od AMD, ale z pohledu programátora se nic nezmění. Je pravděpodobné, že jádra v Nova Lake budou AVX10 implementovat takto, s 256bitovými vykonávacími jednotkami.
Pro praxi jde možná i o lepší přístup než SIMD instrukce s variabilní délkou jako je RVV u RISC-V a SVE u Armu. Ty sice dovolují teoreticky zvětšit šířku vektoru u budoucích CPU na mnohem větší šířku, ale v praxi to firmy nedělají, takže procesory Arm mají stále jen 128bitové SIMD jednotky proti 256bitovým a 512bitovým u x86 procesorů. A variabilita vývoj softwaru spíše komplikuje, přičemž kód kvůli abstrakcím nemusí být tak efektivní jako u AVX-512.
U SIMD instrukcí obecně platí, že čim širší je zpracovávaný vektor, tím větší výkon tyto instrukce mohou přinést – 256bitový SIMD jednotka dokáže za cyklus zpracovat dvojnásobek výpočtů proti 128bitové. V softwaru škálování nemusí být perfektní, protože větší počet operací nemusí program být schopen efektivně využít. Obecně ale širší SIMD instrukce jako je AVX-512 a AVX10 představují potenciál pro zlepšení výkonu jádra CPU proti jádru, které má SIMD jednotky užší a tím méně výkonné.
Procesor Intel Granite Rapids ukázaný Intelem. Všechny menší součástky mimo čipletů ještě nejsou osazené
AMX?
Vedle AVX10 kód NASM procesorům Nova Lake připisuje také některé instrukce AMX, tedy rozšíření pro maticové výpočty (které se týkají zejména aplikací neuronových sítí neboli umělé inteligence). To je zajímavá novinka, teprve ale uvidíme, jak kompletní tato podpora bude a jak dobrý výkon budou tyto instrukce na jádrech procesorů Nova Lake podávat.
Nějaká forma maticových instrukcí má být v budoucnosti pro x86 procesory od Intelu i AMD standardem, takže Nova Lake se už možná na tuto budoucnost připravuje.
APX
A mezi podporovanými rozšířeními je uvedené i rozšíření APX, tedy nový režim vykonávání kódu, který dává programu k dispozici více obecných registrů, což architekturu x86 o něco přiblíží k tomu, co poskytují procesory RISC (zůstane jí však nevýhoda spočívající v proměnné délce instrukcí).
NASM pro procesory Nova Lake předpokládá přítomnost rozšíření APX, AVX10_2, AVX10_VNNI_INT, AMX_FP8, AMX_TF32, AMX_COMPLEX, AMX_AVX512, AMX_MOVRS. Je ale třeba říct, že i zde je šance, že nejde o definitivní informace a teoreticky mohou být v budoucnu aktualizované, ovšem v tomto případě tak, že zmínky o podpoře nových technologií zmizí. Osobně bych byl spíš optimista a předpokládal, že tyto instrukce jsou pro Nova Lake skutečně v plánu, jen je Intel z nějakých důvodů opatrný a nechce je veřejně potvrdit dopředu. NASM je ale softwarový projekt, který má mezi vývojáři a správci oficiálně i zaměstnance Intelu, takže je dost pravděpodobné, že kód je napsán podle dokumentů, které jsou zatím tajné a dostupné jen pod NDA.
Nelze ale vyloučit opak. Tedy že nějaké problémy při vývoji, nebo například to, že byla zrušena původní 256biová verze AVX10 a Intel tak musí jádra CPU adaptovat na plné 512bitové registry ZMM, opravdu vedly k tomu, že podporu těchto nových instrukcí bylo třeba odpískat. V takovém případě by jejich příchod byl odložen na některou z následujících generací (Core Ultra 500 „Razer Lake“ nebo Core Ultra 600 „Titan Lake“).
Procesory Intel Nova Lake by měly vyjít zhruba za rok, jejich vydání je očekáváno ve druhé polovině (pravděpodobně v poslední čtvrtině) roku 2026. Vyjasnění toho, které instrukce budou podporovány, ale snad přijde dřív.