AVX

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 15. juli 2021; checks kræver 8 redigeringer .

Advanced Vector Extensions (AVX) er en x86- instruktionssætudvidelse til Intel- og AMD- mikroprocessorer , foreslået af Intel i marts 2008. [1]

AVX giver forskellige forbedringer, nye instruktioner og et nyt maskinkodekodningsskema.

Forbedringer

Nyt kodeskema

Det nye VEX- instruktionskodningsskema bruger VEX-præfikset. Der er i øjeblikket to VEX-præfikser, 2 og 3 bytes lange. For et 2-byte VEX-præfiks er den første byte 0xC5, for et 3-byte VEX-præfiks er det 0xC4.

I 64-bit-tilstand er den første byte af VEX-præfikset unik. I 32-bit-tilstand er der en konflikt med LES- og LDS-instruktionerne, som løses af den høje bit af den anden byte, det har kun betydning i 64-bit-tilstand, gennem ikke-understøttede former for LES- og LDS-instruktionerne. [3]

Længden af ​​eksisterende AVX-instruktioner, sammen med VEX-præfikset, overstiger ikke 11 bytes. Længere instruktioner forventes i fremtidige versioner.

Nye instruktioner

Instruktion Beskrivelse
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Kopierer en 32-, 64- eller 128-bit operand fra hukommelsen til alle elementer i et XMM- eller YMM-vektorregister.
VINSERTF128 Erstatter den lave eller høje halvdel af et 256-bit YMM-register med værdien af ​​128-bit operanden. Den anden del af det modtagende register ændres ikke.
VEXTTRACTF128 Uddrager den lave eller høje halvdel af et 256-bit YMM-register og kopierer det til en 128-bit destinationsoperand.
VMASKMOVPS, VMASKMOVPD Betinget læser et hvilket som helst antal elementer fra vektoroperanden fra hukommelsen ind i destinationsregisteret, efterlader de resterende elementer ulæste og nulstiller de tilsvarende elementer i destinationsregisteret. Den kan også betinget skrive et hvilket som helst antal elementer fra et vektorregister til en vektoroperand i hukommelsen, hvilket efterlader de resterende elementer i hukommelsesoperanden uændrede.
VPERMILPS, VPERMILPD Omarrangerer vektorens 32-bit eller 64-bit elementer i henhold til vælgeroperanden (fra hukommelse eller fra register).
VPERM2F128 Skifter de 4 128-bit indgange fra to 256-bit registre til 256-bit destinationsoperanden ved at bruge en umiddelbar konstant (imm) som vælgeren.
VZEROALL Rydder alle YMM-registre og markerer dem som ubrugte. Bruges ved skift mellem 128-bit og 256-bit tilstand.
VZEROUPPER Indstiller de høje halvdele af alle YMM-registre til nul. Bruges ved skift mellem 128-bit og 256-bit tilstand.

AVX-specifikationen beskriver også PCLMUL-instruktionsgruppen (Parallel Carry-Less Multiplication, Parallel CLMUL)

Ansøgning

Velegnet til intensive flydende kommaberegninger i multimedieprogrammer og videnskabelige opgaver. Hvor en højere grad af parallelitet er mulig, øger ydeevnen med reelle tal.

Support

Support i operativsystemer

Brugen af ​​YMM-registre kræver support fra operativsystemet. Følgende systemer understøtter YMM-registre:

Mikroprocessorer med AVX

Kompatibilitet mellem Intel- og AMD-implementeringer diskuteres i denne artikel .

Mikroprocessorer med AVX2

AVX-512

AVX-512 udvider AVX-instruktionssættet til 512-bit vektorer ved hjælp af EVEX-præfikskodningen. AVX-512-udvidelsen introducerer 32 vektorregistre (ZMM) på 512 bit hver, 8 maskeregistre, 512-bit pakkede formater for heltal og brøker og operationer på dem, finkontrol af afrundingstilstande (giver dig mulighed for at tilsidesætte globale indstillinger), udsendes (distribution af information fra et registerelement til andre), fejlundertrykkelse i operationer med brøktal, samle-/spredningsoperationer (samling og distribution af vektorregisterelementer til/fra flere hukommelsesadresser), hurtige matematiske operationer, kompakt kodning af store offsets. AVX-512 tilbyder AVX-kompatibilitet i den forstand, at et program kan bruge både AVX- og AVX-512-instruktioner uden forringelse af ydeevnen. AVX-registrene (YMM0-YMM15) er afbildet til de nederste dele af AVX-512-registrene (ZMM0-ZMM15), svarende til SSE- og AVX-registrene. [12]

Brugt i Intel Xeon Phi (tidligere Intel MIC ) Knights Landing (version AVX3.1), Intel Skylake-X , [12] Intel Ice Lake , Intel Tiger Lake , Intel Rocket Lake . AVX-512-understøttelse er også tilgængelig i de højtydende Golden Cove [13] -kerner i Intel Alder Lake- processorer , men de energieffektive Gracemont-kerner er frataget det. I december 2021 er AVX-512-understøttelse af forbruger Alder Lake-processorer ikke blevet officielt annonceret. [fjorten]

Fremtidige udvidelser

VEX -instruktionskodningsskemaet tillader nemt yderligere udvidelse af AVX-instruktionssættet. Den næste version, AVX2, tilføjede instruktioner til at arbejde med heltal, FMA3 (øget ydeevne ved behandling af flydende kommatal med 2 gange [11] ), indlæsning af en hukommelsesallokeret vektor (samler) og så videre.

Forskellige planlagte tilføjelser til x86- instruktionssættet :

Broadwell -generationsserverprocessorer tilføjede AVX 3.1-udvidelser, og Skylake -generationsserverprocessorer tilføjede  AVX 3.2.

Noter

  1. ISA-udvidelser | Intel®-software . Hentet 24. juni 2016. Arkiveret fra originalen 6. maj 2019.
  2. Intel® Xeon Phi™ Coprocessor Instruktionssæt Architecture Reference Manual (link ikke tilgængeligt) . Arkiveret fra originalen den 11. maj 2013. 
  3. 1 2 Introduktion til Intel® Advanced Vector Extensions - Intel® Software Network . Hentet 19. juli 2012. Arkiveret fra originalen 16. juni 2012.
  4. Spørgsmål om AVX - Intel® Software Network . Hentet 24. juni 2016. Arkiveret fra originalen 7. august 2016.
  5. Intel® AVX-optimering i Intel® MKL . Dato for adgang: 7. januar 2014. Arkiveret fra originalen 7. januar 2014.
  6. x86: Tilføj linux-kerneunderstøttelse til YMM-tilstand (downlink) . Hentet 13. juli 2009. Arkiveret fra originalen 5. april 2012. 
  7. Linux 2.6.30 - Linux Kernel Newbies (downlink) . Hentet 13. juli 2009. Arkiveret fra originalen 5. april 2012. 
  8. 1 2 Aktiver Windows 7-understøttelse af Intel AVX (downlink) . Microsoft. Dato for adgang: 29. januar 2011. Arkiveret fra originalen 5. april 2012. 
  9. Intel tilbyder et kig på Nehalem og Larrabee (downlink) . ExtremeTech (17. marts 2008). Arkiveret fra originalen den 7. juni 2011. 
  10. At finde en balance (downlink) . Dave Christie, AMD-udviklerblogs (7. maj 2009). Hentet 8. maj 2009. Arkiveret fra originalen 5. april 2012. 
  11. 1 2 Flere detaljer om det fremtidige AVX-instruktionssæt 2.0 | Tech News Pedia (utilgængeligt link) . Hentet 14. november 2012. Arkiveret fra originalen 31. oktober 2012. 
  12. 1 2 James Reinders (23. juli 2013), AVX-512 Instructions , Intel , < http://software.intel.com/en-us/blogs/2013/avx-512-instructions > . Hentet 20. august 2013. Arkiveret 31. marts 2015 på Wayback Machine 
  13. Dr. Ian Cutress, Andrei Frumusanu. Intel Architecture Day 2021: Alder Lake, Golden Cove og Gracemont Detaljeret . www.anandtech.com _ Hentet 23. december 2021. Arkiveret fra originalen 4. januar 2022.
  14. Produktspecifikationer  . _ www.intel.com . Hentet: 23. december 2021.

Links