AVX-512

De la Viquipèdia, l'enciclopèdia lliure

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),[1] 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.[2] 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 § CPUs with AVX-512): 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.[3]

Conjunt d'instruccions[modifica]

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.[4]

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[modifica]

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: [5]

  • 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[modifica]

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