Era il 2020 quando il “padre” di Linux, Linus Torvalds, augurava una “morte dolorosa” al set di istruzioni AVX-512 sviluppato da Intel. L’azienda di Santa Clara rispose alle feroci critiche descrivendo AVX-512 come una risorsa preziosa. Tanto preziosa che oggi Intel annuncia l’introduzione del supporto AVX10, un nuovo set di istruzioni che per la prima volta porta contemporaneamente AVX-512 sui core P e core E dei suoi processori. E non è una cosa da poco: vediamo perché.
Cosa sono le istruzioni AVX-512
AVX-512 (Advanced Vector Extensions 512 bit) è un insieme di istruzioni SIMD (Single Instruction, Multiple Data) sviluppato da Intel che eseguono operazioni su vettori di dati a 512 bit, consentendo l’elaborazione parallela di un gran numero di dati. AVX-512 è dapprima apparso nella famiglia di processori Xeon Scalable di seconda generazione per poi essere successivamente incluso nelle varie CPU della famiglia Core.
Il set di istruzioni AVX-512 offre prestazioni notevoli con carichi di lavoro altamente parallelizzati: elaborazioni di calcolo scientifico, rendering 3D, simulazioni e altre applicazioni che sfruttano intensamente le capacità SIMD. D’altra parte, le istruzioni AVX-512 richiedono una potenza di calcolo significativa e possono aumentare i consumi energetici e il calore da dissipare.
Perché AVX10 è così importante per Intel
AVX10 (Advanced Instruction Extensions 10) è un “superset” di AVX-512: integra cioè tutta la “ricchezza” di AVX-512 con alcune capacità addizionali fruibili con qualunque tipo di core sui processori ibridi dell’azienda.
Un vettore è una struttura dati che contiene una sequenza di elementi; la sua dimensione in bit determina la quantità di memoria richiesta per memorizzare ciascun elemento. La dimensione in bit del vettore è importante perché influisce sulla quantità di memoria richiesta per memorizzare i dati e può avere un impatto significativo sulle prestazioni del programma. Inoltre, può essere un fattore critico nel caso delle applicazioni che lavorano con grandi quantità di dati.
Con AVX10 sia i core P che i core E possono utilizzare vettori da 256 bit mentre servendosi unicamente dei core P più prestazionali è possibile utilizzare vettori da 512 bit.
Lo sviluppo di AVX-512 e, adesso, di AVX10 è così importante per Intel perché l’azienda può offrire vantaggi di performance significativi e capacità di elaborazione parallela per determinati carichi di lavoro e applicazioni specifiche.
Il nuovo set di istruzioni AVX10 non sarà supportato nelle CPU Intel di ultima generazione: arriverà soltanto nei chip futuri. Garantendo che AVX10 sarà il punto di riferimento sia per i processori consumer che per quelli server, dalla società di Pat Gelsinger arriva la conferma che i primi a implementare le istruzioni, seppur in modo parziale, saranno i processori server Granite Rapids (Xeon di sesta generazione) del prossimo anno.
Intel APX (Advanced Performance Extensions)
Simultaneamente, Intel ha presentato anche le nuove estensioni APX. Come hanno spiegato i portavoce dell’azienda, APX ottimizza l’utilizzo delle istruzioni di caricamento e memorizzazione, riducendo il numero di operazioni di accesso alla memoria e migliorando le prestazioni complessive. Il codice compilato con le estensioni APX contiene infatti meno istruzioni di caricamento (load; -10%) e memorizzazione (store; -20%) rispetto al codice compilato per un’architettura base Intel 64.
Gli accessi ai registri interni del processore tramite le estensioni APX sono più veloci e richiedono meno potenza rispetto alle operazioni che coinvolgono l’accesso alla memoria esterna. Infine, da quando nel 2019 Intel aveva deciso di abbandonare le estensioni Memory Protection Extensions (MPX), un’area pari a 128 byte era rimasta inutilizzata.
Le nuove estensioni APX, invece, utilizzano l’area per un diverso scopo, chiamato XSAVE. Si tratta di un’istruzione utilizzata per salvare e ripristinare lo stato di diversi registri del processore durante il passaggio da un contesto di esecuzione all’altro.