AVX-512, Intel SIMD Instruktioner til AI og multimedia

AVX-512 instruktioner er et af de unikke elementer i Intel's x86 CPU arkitekturer. Men hvad er disse instruktioner, da det skyldes implementeringen på Intel-CPU'er? Fortsæt læsning for at forstå årsagen til eksistensen af ​​disse instruktioner, hvilke varianter den har, og hvorfor den ikke bruges af AMD i sine CPU'er.

AVX-instruktioner blev først implementeret i Intel CPU'er, der erstattede de gamle SSE-instruktioner. Siden da er de blevet standard-SIMD-instruktionerne til x86-CPU'er i deres to varianter, 128-bit og 256-bit, der også er vedtaget af AMD. På den anden side, hvis vi taler om AVX-512 instruktionerne, er situationen anderledes, og de bruges kun i Intel CPU'er.

Intel SIMD-instruktioner

Hvad er en SIMD-enhed?

Unidad SIMD

En SIMD-enhed er en type eksekveringsenhed, der er beregnet til at udføre den samme instruktion til flere data på samme tid. Derfor er dets akkumulatorregister længere end en traditionel instruktion, da det skal gruppere de forskellige data, som det har til at fungere med den samme instruktion.

SIMD-enheder er traditionelt blevet brugt til at fremskynde såkaldte multimedieprocesser, hvor det er nødvendigt at manipulere forskellige data under de samme instruktioner. SIMD-enhederne gør det muligt at parallelisere udførelsen af ​​programmet i disse dele og fremskynde udførelsestiden.

For at adskille SIMD-eksekveringsenhederne fra de traditionelle i hver processor har de deres egen delmængde af instruktioner, der normalt er et spejl af skalarinstruktionerne eller med en enkelt operand. Selvom der er tilfælde, der ikke er muligt at gøre med en skalar enhed, og som er eksklusive for SIMD-enheder.

AVX-512's historie

Xeon Phi AVX-512

AVX-instruktionerne, Advanced Vector eXtensions, har været inde i Intel-processorer i årevis, men oprindelsen til AVX-512-instruktionerne er forskellig fra resten. Grunden? Dens oprindelse er Intel Larrabee-projektet, et forsøg fra Intel i slutningen af ​​2000'erne på at skabe et GPU det blev til sidst Xeon Phi-acceleratorerne. En række processorer beregnet til højtydende computing, som Intel udgav for et par år siden.

Xeon Phi / Larrabee-arkitekturen inkluderede en speciel version af AVX-instruktionerne med en størrelse i deres akkumulatorregister på 512 bit, hvilket betyder, at de kan fungere med op til 16 32-bit data. Årsagen til dette beløb har at gøre med det faktum, at det typiske forhold per operation for en GPU normalt er 16: 1. Lad os ikke glemme, at AVX-512-instruktionerne stammer fra det mislykkede Larrabee-projekt og blev bragt derfra til Xeon Phi.

Den dag i dag eksisterer Xeon Phi ikke længere, årsagen til dette er, at det samme kan gøres via en traditionel GPU til computing. Dette fik Intel til at overføre disse instruktioner til sin hovedlinje af CPU'er.

Gibberish, der er AVX-512 instruktioner

Intel AVX-512

AVX-512 instruktionerne er ikke en homogen blok, der er implementeret 100%, men har snarere forskellige udvidelser, der afhængigt af typen af ​​processor er tilføjet eller ej. Alle CPU'er kaldes AVX512F, men der er yderligere instruktioner, der ikke er en del af det originale instruktionssæt, og som Intel har tilføjet over tid.

AVX512-udvidelserne er som følger:

  • AVX-512-CD: Konfliktdetektion tillader sløjfer at blive vektoriseret og derfor vektoriseret. De blev først tilføjet i Skylake-X eller Skylake-SP.
  • AVX-512-ER: Gensidige og eksponentielle instruktioner, der er designet til implementering af transcendentale operationer. De blev tilføjet i et Xeon Phi-sortiment kaldet Knights Landing.
  • AVX-512-PF: Endnu en inkludering i Knights Landing, denne gang for at øge instruktionernes forsigtigheds- eller præktekniske kapacitet.
  • AVX-512-BW: Instruktioner på byte-niveau (8-bit) og ord-niveau (16-bit). Denne udvidelse giver dig mulighed for at arbejde med 8-bit og 16-bit data.
  • AVX-512-DQ: Tilføj nye instruktioner med 32-bit og 64-bit data.
  • AVX-512-VL : Tillader, at AVX-instruktioner fungerer på XMM (128-bit) og YMM (256-bit) akkumulatorregistre
  • AVX-512-IFMA: Fused Multiply Add, som i det mindste er en A * (B + C) instruktion med 52-bit heltal præcision.
  • AVX-512-VBMI: Instruktioner til vektormanipulation på byte-niveau er en udvidelse til AVX-512-BW.
  • AVX-512-VNNI: Vector Neural Network Instructions er en række instruktioner tilføjet for at fremskynde Deep Learning-algoritmer, der bruges i applikationer relateret til kunstig intelligens.

Hvorfor har AMD ikke implementeret det på deres CPU'er endnu?

AMD EPYC

Årsagen til dette er meget enkel, AMD er forpligtet til den kombinerede brug af sin CPU og GPU, når man accelererer bestemte typer applikationer. Lad os ikke glemme oprindelsen af ​​AVX-512 i en mislykket GPU fra Intel og AMD takket være deres Radeon GPU'er har de ikke brug for brugen af ​​AVX-512 instruktioner.

Derfor er AVX-512 instruktionerne eksklusive for Intel-processorer, ikke for total eksklusivitet, men fordi AMD ikke har nogen interesse i at bruge denne type instruktioner i sine CPU'er, da det er hensigten at sælge sine GPU'er, især den nyligt lancerede AMD Instinct højtydende computing med CDNA-arkitektur.

Har AVX-512 instruktionerne en fremtid?

Intel Xe gengivelse

Vi ved det ikke, det afhænger af succesen med Intel Xe, især Xe-HPC, som vil give Intel en GPU-arkitektur på niveauet AMD og NVIDIA. Dette betyder en konflikt mellem Intel Xe og AVX-512 instruktionerne for at løse de samme problemer.

Problemet med AVX-512 er, at aktivering af den del af CPU'en, der bruger den, ender med at påvirke CPU-urets hastighed og reducere den med ca. 25% i et program, der bruger disse instruktioner til bestemte øjeblikke. Derudover er dens instruktioner beregnet til højtydende computing og AI-applikationer, der ikke er vigtige i, hvad der er en hjemme-CPU, og udseendet af specialiserede enheder gør det til spild af transistorer og plads.

I virkeligheden udskifter acceleratorer eller domænespecifikke processorer langsomt SIMD-enheder i CPU'er, da de kan gøre det samme, mens de optager mindre plads og med et lille strømforbrug i sammenligning.