# AVX-512

AVX-512 són extensions de 512 bits a les instruccions SIMD Advanced Vector Extensions de 256 bits per a l'arquitectura de conjunt d'instruccions (ISA) x86 proposades per Intel el juliol de 2013, i implementades per primera vegada a l'Intel Xeon Phi x200 de 2016 (Knights Landing), i després en diverses CPU AMD i altres Intel (vegeu la llista a continuació). AVX-512 consta de múltiples extensions que es poden implementar de manera independent. Aquesta política s'allunya del requisit històric d'implementar tot el bloc d'instruccions. Totes les implementacions d'AVX-512 només requereixen l'extensió bàsica AVX-512F (AVX-512 Foundation).A més d'ampliar la majoria de les instruccions de 256 bits, les extensions introdueixen diverses operacions noves, com ara noves conversions de dades, operacions de dispersió i permutacions. El nombre de registres AVX augmenta de 16 a 32 i s'afegeixen vuit nous "registres de màscara", que permeten la selecció variable i la combinació dels resultats de les instruccions. A les CPU amb l'extensió de longitud vectorial (VL), inclosa a la majoria de processadors compatibles amb AVX-512 (vegeu AVX-512 § Notes): aquestes instruccions també es poden utilitzar en mides vectorials de 128 bits i 256 bits. AVX-512 no és el primer conjunt d'instruccions SIMD de 512 bits que Intel ha introduït als processadors: les instruccions SIMD anteriors de 512 bits utilitzades en els coprocessadors Xeon Phi de primera generació, derivats del projecte Larrabee d'Intel, són similars però no són compatibles amb els binaris i només parcialment compatible amb la font.

## Conjunt d'instruccions

El conjunt d'instruccions AVX-512 consta de diversos conjunts separats, cadascun amb el seu propi bit de funció CPUID únic; tanmateix, normalment s'agrupen per la generació de processadors que els implementa.

### F, CD, ER, PF

    Introduït amb Xeon Phi x200 (Knights Landing) i Xeon Gold/Platinum (Skylake SP "Purley"), i els dos últims (ER i PF) són específics de Knights Landing.
   * Fundació AVX-512 (F) – amplia la majoria de les instruccions AVX basades en 32 i 64 bits amb l'esquema de codificació EVEX per suportar registres de 512 bits, màscares d'operació, difusió de paràmetres i arrodoniment integrat i control d'excepcions, implementat per Knights Landing i Skylake Xeon
   * AVX-512 Instruccions de detecció de conflictes (CD) – detecció eficient de conflictes per permetre vectoritzar més bucles, implementada per Knights Landing i Skylake X
   * AVX-512 Instruccions exponencials i recíproques (ER) – operacions exponencials i recíproques dissenyades per ajudar a implementar operacions transcendentals, implementades per Knights Landing
   * AVX-512 Instruccions de recuperació prèvia (PF) – noves capacitats de recuperació prèvia, implementades per Knights Landing

### VL, DQ, BW

    Presentat amb Skylake X i Cannon Lake.
   * AVX-512 Extensions de longitud vectorial (VL) – amplia la majoria de les operacions AVX-512 per funcionar també en registres XMM (128 bits) i YMM (256 bits)
   * AVX-512 Instruccions de paraules dobles i quàdruples (DQ) – afegeix noves instruccions AVX-512 de 32 i 64 bits
   * AVX-512 Instruccions en bytes i paraules (BW) – amplia AVX-512 per cobrir operacions enteres de 8 i 16 bits

### IFMA, VBMI

    Introduït amb Cannon Lake.
   * AVX-512 Addició de multiplicació fusionada d'entiers (IFMA): suma de multiplicació fusionada de nombres enters amb precisió de 52 bits.
   * Les instruccions de manipulació de bytes vectorials AVX-512 (VBMI) afegeixen instruccions de permutació de bytes vectorials que no estaven presents a AVX-512BW.

### 4VNNIW, 4FMAPS

    Presentat amb Knights Mill.
   * AVX-512 Instruccions de xarxa neuronal vectorial Precisió variable de paraules (4VNNIW) : instruccions vectorials per a aprenentatge profund, paraula millorada i precisió variable.
   * AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS): instruccions vectorials per a aprenentatge profund, punt flotant, precisió única.

### VPOCNTDQ

    Instrucció de recompte de població vectorial. Presentat amb Knights Mill i Ice Lake.

### VNNI, VBMI2, BITALG

    Introduït amb Ice Lake.
   * AVX-512 Instruccions de xarxa neuronal vectorial (VNNI): instruccions vectorials per a l'aprenentatge profund.
   * AVX-512 Instruccions de manipulació de bytes vectorials 2 (VBMI2): càrrega, emmagatzematge i concatenació de bytes/paraules amb shift.
   * Algoritmes de bits AVX-512 (BITALG): instruccions de manipulació de bits/bits de paraula que amplien VPOPCNTDQ.

### VP2 INTERSECT

    Introduït amb Tiger Lake.
   * AVX-512 Intersecció de parells de vectors amb un parell de registres de màscara (VP2INTERSECT).

### GFNI, VPCLMULQDQ, VAES

    Introduït amb Ice Lake.
   * Aquestes no són funcions de l'AVX-512 per se. Juntament amb AVX-512, permeten versions codificades EVEX d'instruccions GFNI, PCLMULQDQ i AES.

## Codificació i característiques

El prefix VEX utilitzat per AVX i AVX2, tot i ser flexible, no deixava prou espai per a les funcions que Intel volia afegir a AVX-512. Això els ha portat a definir un nou prefix anomenat EVEX.
En comparació amb VEX, EVEX afegeix els següents avantatges:
* Codificació de registre ampliada que permet 32 registres de 512 bits.
* Afegeix 8 nous registres d'opmask per emmascarar la majoria de les instruccions de l'AVX-512.
* Afegeix un nou mode de memòria escalar que realitza automàticament una emissió.
* Afegeix espai per al control explícit d'arrodoniment a cada instrucció.
* Afegeix un nou mode d'adreçament de memòria de desplaçament comprimit.
Els registres ampliats, el bit d'amplada SIMD i els registres opmask de l'AVX-512 són obligatoris i tots requereixen suport del sistema operatiu.

## Referències

* ↑ James Reinders. «AVX-512 Instructions» (en anglès). Intel, 23-07-2013. [Consulta: 20 agost 2013].
* ↑ Kusswurm, 2022, p. 223.
* ↑ James Reinders. «AVX-512 Instructions» (en anglès). Intel, 23-07-2013. [Consulta: 20 agost 2013].
* ↑ Khanna, Nischay. «What Is AVX-512 and Why Is Intel Killing It Off?» (en anglès), 27-08-2022. [Consulta: 8 desembre 2023].
* ↑ «Intel Architecture Instruction Set Extensions Programming Reference» (PDF) (en anglès). Intel. [Consulta: 29 gener 2014].