AVX-512: toate avantajele și dezavantajele

Ultima actualizare: 16 aprilie 2024
AVX-512

După cum știți, procesorul (CPU) procesează software-ul astfel încât totul să funcționeze într-un sistem informatic. Programele sunt alcătuite din instrucțiuni și date; instrucțiunile indică ce operațiune trebuie efectuată asupra datelor pentru a obține rezultatul așteptat. Și așa se execută totul. Ei bine, una dintre cele mai importante unități ale CPU este ALU sau FPU, care este responsabilă pentru operațiile matematice. Și, în procesoarele actuale, cum ar fi Intel, au fost incluse unități funcționale capabile să execute instrucțiuni vectoriale cu lungimi de date de până la 512 biți, cum ar fi AVX-512 despre care vom discuta aici.

Aceste extensii sunt destinate să accelereze procesarea anumitor sarcini de lucru, în special a celor științifice, care necesită un număr mare de operațiuni de acest tip. Cu toate acestea, când a apărut AVX-512, Nu toate recenziile pentru Intel au fost bune., au fost și mulți cărora nu le-a plăcut deloc această adăugire și chiar au întâmpinat anumite probleme, după cum vom vedea…

S-ar putea să vă intereseze și:

Cum funcționează o ALU?

Înainte de a afla mai multe despre setul de instrucțiuni AVX-512, este esențial să înțelegem cum funcționează un set de instrucțiuni. ALU (Unitate Logică Aritmetică), adică o unitate de procesare aritmetică și logică.

Adică, în această unitate se desfășoară calcule care includ operații precum adunarea, înmulțirea, împărțirea etc.Pentru a îndeplini aceste sarcini, ALU utilizează circuite digitale specifice controlate de unitatea de control a procesorului. Când capturează o instrucțiune care urmează să fie procesată din memorie și o decodează, trimite un Opcode către ALU indicând ce trebuie făcut cu cele două elemente de date încărcate în registre. De exemplu, o instrucțiune ADD ar aduna, o instrucțiune SUB ar scădea, MUL ar înmulți, DIV ar împărți etc.

În plus, această ALU, la fel ca restul unităților CPU, va funcționa în ritmul stabilit de frecvența ceasului. De exemplu, dacă este vorba de 5 GHz, atunci vor efectua 5.000 miliarde de operații pe secundă, ca să spunem foarte simplu.

Acestea fiind spuse, pe măsură ce viteza de ceas a procesorului crește, crește și cantitatea de căldură generată de procesor. Prin urmare, scalarea frecvenței din ce în ce mai mare nu este singura soluție pentru a obține performanță. Prin urmare, proiectanții de procesoare trebuie să caute alternative pentru a obține performanță, cum ar fi paralelismul la nivel de nucleu, redenumirea registrelor, predicția și speculația, execuția în afara ordinii, sistemele superscalare etc. Iar printre măsurile de creștere a puterii de calcul se numără și utilizarea... instrucțiuni numite SIMD, adică vectorial, capabil să opereze pe seturi de date mai mari.

Un exemplu din acestea Instrucțiunile sunt AVX-512, în timp ce restul unităților funcționează cu date pe 64 de biți, unitățile speciale pentru aceste extensii funcționează cu date cu o lungime de 512 biți, adică ar putea gestiona simultan de 8 ori dimensiunea normală a cuvintelor. Pentru a face acest lucru, au nevoie ALU-uri (numere întregi) sau FPU-uri (dacă sunt în virgulă mobilă) mai mari și mai complexe, ceea ce se traduce în cele din urmă într-o suprafață mai mare a cipului, prin urmare costuri mai mari și, de asemenea, alte complicații…

Cum ajung datele la ALU?

Ei bine, acum că aveți o înțelegere de bază a ceea ce este o ALU și cum funcționează, precum și la ce se folosesc AVX-512 la nivel de bază, următorul pas este să învățați cum ajung datele la ALU, deoarece acest lucru vă va ajuta și să înțelegeți aceste extensii.

Pentru a ajunge la ALU, datele trebuie să treacă prin diferite sisteme de stocare. Această călătorie a datelor se bazează pe ierarhia memoriei a sistemului informatic. O scurtă descriere a acestei ierarhii ar fi:

  • Memorie secundară: Acestea sunt medii de stocare în masă, adică hard disk-uri HDD sau SSD, printre alte unități care pot fi conectate și la sistemul I/O, cum ar fi mediile optice etc. Acestea stochează o cantitate mare de informații, dar memoria lor este mai lentă în comparație cu viteza procesorului. Prin urmare, accesarea acestor medii implică o penalizare, o latență mai mare. Așadar, pentru a evita aceste penalizări, ceea ce facem este să încărcăm aceste date într-o memorie primară, despre care vom discuta în punctul următor. De exemplu, pentru a vă face o idee mai clară, imaginați-vă că aveți Word instalat pe hard disk și doriți să îl rulați. Software-ul respectiv va fi compus dintr-o serie de fișiere executabile sau binare care conțin instrucțiunile și datele necesare procesorului pentru a le executa. De asemenea, se poate întâmpla ca software-ul pe care doriți să îl rulați să nu fie pe un hard disk, cum ar fi atunci când instalați un sistem de operare de pe o unitate flash USB sau DVD. Fișierele binare executabile cu acele instrucțiuni și date se vor găsi, de asemenea, acolo.
  • Memorie primară: Sistemul de stocare principal este format din memoria cu acces aleatoriu (RAM). Acest sistem de stocare este mai rapid decât sistemul de stocare secundar, dar nu poate stoca la fel de multe informații și nici nu o poate face permanent, deoarece este o memorie volatilă care stochează informații în timp ce este pornit. Adică, de fiecare dată când opriți computerul, programele instalate nu sunt șterse, dar conținutul acestei RAM este. După cum am spus, atunci când procesul sau programul este încărcat în RAM, ceea ce se face de fapt este transferul instrucțiunilor și datelor fișierului binar executabil de la unitatea secundară la această unitate primară, la care procesorul poate accesa mai rapid.
  • Cache: Memoria cache este încorporată în procesor și este cel mai rapid sistem de memorie, dar are și o capacitate foarte mică și este volatilă. Acest sistem de memorie este în general împărțit în trei părți: L1, L2 și L3. Orice date care trebuie procesate de ALU sunt mutate de pe hard disk în RAM și apoi în cache. Acestea fiind spuse, ALU nu poate accesa datele direct din cache. De aceea, are nevoie de o altă memorie, și mai mică și mai rapidă, ceea ce reprezintă următorul punct...
  • Registrele CPU: Registrul CPU este o memorie foarte simplă, compusă din elemente bistabile foarte rapide. În funcție de arhitectura CPU, registrele își pot schimba dimensiunea. De exemplu, acestea pot fi pe 8 biți, 16 biți, 32 biți, 64 biți etc. În plus, numărul lor poate fi variabil și toate alcătuiesc fereastra sau fișierul registrelor CPU. În aceste registre unitățile de calcul, cum ar fi ALU sau FPU, pot accesa datele încărcate în ele. Așadar, atunci când o instrucțiune este preluată din RAM către CPU în ciclul de preluare, instrucțiunea va fi decodificată sau interpretată de unitatea de control, care va determina ce implică executarea acelei instrucțiuni. De exemplu, ADD r1, r2, r3 ar putea aduna datele din registrul r2 + r3 și stoca rezultatul în r1. În acest fel, unitatea de control va trimite acest opcode către ALU, spunându-i să adune valorile și locația datelor, în acest caz registrele necesare. ALU accesează apoi datele și efectuează operațiunea de adunare. Așa funcționează această ierarhie.
  Cum funcționează sistemul I/O

De asemenea, după cum probabil știți, date și instrucțiuni Fișierele cel mai frecvent utilizate sunt memorate în cache, astfel încât să poată fi accesate mai rapid dacă vor fi necesare din nou în viitor. După cum s-ar putea crede, fiecare nivel de cache devine mai rapid:

  • L1Acesta este primul nivel, cel mai rapid dintre toate, cu cea mai mică latență. Aceasta înseamnă că se pierd mai puține cicluri de ceas accesând-o. În plus, această memorie este de obicei împărțită într-un L1D sau L1 pentru date și un L1I sau L1 pentru instrucțiuni. Aceasta înseamnă că instrucțiunile și datele nu sunt amestecate.
  • L2Acesta este următorul nivel de memorie cache și are o capacitate mai mare decât L1, dar este ceva mai lent, așa că sunt necesare mai multe cicluri pentru a-l accesa. Aici, atât datele, cât și instrucțiunile vor fi amestecate, deoarece este unificat.
  • L3Acest nivel are o capacitate mai mare decât L2, dar este chiar mai lent decât L2. Și, la fel ca L2, este, de asemenea, unificat, stocând atât date, cât și instrucțiuni. Dacă L3 este ultimul nivel, este cunoscut și sub numele de LLC (Last Level Cache), deși alte sisteme pot avea și alte niveluri, cum ar fi L4 etc.

După cum vă puteți imagina, atunci când procesorul trebuie să caute date sau instrucțiuni pentru a crește performanța, va căuta mai întâi în L1, deoarece necesită cele mai puține cicluri de ceas pentru acces. Dacă nu este acolo, va căuta atunci în L2, următorul cel mai rapid. Și dacă nici nu este acolo, va căuta în L3. Dacă nici nu este acolo, va căuta în RAM și așa mai departe.

Ce este AVX-512 și cum funcționează?

Setul de Instrucțiuni AVX-512 Este a doua iterație a AVX și a ajuns în procesoarele Intel în 2013. AVX este prescurtarea de la Advanced Vector Extensions și a fost introdusă pentru prima dată în Xeon Phi (Knights Landing) de la Intel, iar ulterior a ajuns pe serverele Intel cu Xeon-uri bazate pe Skylake-X.

  Forum hardware: ghid complet pentru secțiuni și conținut

În plus, setul de instrucțiuni AVX-512 a ajuns și la echipamentele de larg consum, adică PC-urile, cu Arhitectura lacului Cannon și ulterior a suportat arhitecturile Ice Lake și Tiger Lake. Poate unul dintre cei mai criticați pași care nu ar fi trebuit niciodată făcuți, pe de o parte pentru că nu exista suficient software pentru a profita de aceste instrucțiuni și, pe de altă parte, pentru că adăuga complexitate acestor unități.

Așa cum s-a explicat mai sus, ALU/FPU poate accesa doar datele prezente în Registrul CPUSetul de instrucțiuni AVX mărește dimensiunea acestor registre. Această creștere permite procesarea mai multor puncte de date cu o singură instrucțiune, sporind performanța.

Obiectivul principal al acestui set de instrucțiuni a fost accelerarea sarcinilor legate de compresia datelor, procesarea imaginilor și calculele criptograficeOferind o putere de calcul dublă față de AVX-256, setul de instrucțiuni AVX-512 a oferit îmbunătățiri substanțiale ale performanței. Cu toate acestea, performanța acestor procesoare Intel nu a fost dublată, așa cum ar putea crede mulți.

De ce renunță Intel la producția de AVX-512?

Intel

Așa cum s-a explicat mai sus, setul de instrucțiuni AVX-512 oferă mai multe avantaje în calculele computaționale, dar nu totul a fost binevenitEste adevărat că bibliotecile populare precum TensorFlow folosesc setul de instrucțiuni pentru a oferi calcule mai rapide pe procesoarele care suportă setul de instrucțiuni.

AMD a adoptat pentru prima dată AVX-512 în microprocesoarele bazate pe Zen 4. O schimbare completă între cele două companii…

Așadar, de ce dezactivează Intel AVX-512 pe procesoarele sale recente Alder Lake? Ei bine, adevărul este că acestea nu au fost eliminate complet. De exemplu, în Lacul Alder Trebuie să fim compuși dintr-o arhitectură multi-core eterogenă, cu P-Core de înaltă performanță și E-Core de înaltă eficiență.

În timp ce nucleele P se bazează pe microarhitectura Golden Cove și au capacitatea de a executa aceste instrucțiuni, în cazul nucleelor ​​E bazate pe microarhitectura Gracemont, Nu este permisă executarea acestor instrucțiuniPlanificatorul pentru aceste nuclee va respinge astfel de instrucțiuni pentru a le menține mai mici și mai eficiente din punct de vedere energetic.

Totuși, procesoarele Alder Lake de acum înainte nu suportă setul de instrucțiuni AVX-512, deoarece altfel ar exista E-Core-uri care nu ar putea rula anumite programe. Cu toate acestea, acestea pot fi utilizate în alte procesoare unde Intel nu a amestecat fizic aceste nuclee, cum ar fi în cazul Xeon pentru HPC și servere și chiar și în unele computere unde este permis. dezactivați E-core-urile din BIOS/UEFI.

Este necesar AVX-512 pe un procesor de consum?

AMD Ryzen 7 7700X

Setul de instrucțiuni AVX-512 mărește dimensiunea registrului unui procesor pentru a-i îmbunătăți performanța. Aceasta creșterea performanței permite procesoarelor să proceseze numerele mai rapid, permițând utilizatorilor să ruleze algoritmi de compresie video/audio la viteze mai mari.

Acestea fiind spuse, această creștere a performanței poate fi observată doar atunci când instrucțiunile definite într-un program sunt optimizat pentru funcționare în setul de instrucțiuni AVX-512. Altfel, acestea vor fi complet inutile, iar având în vedere rata scăzută de adoptare a AVX-512, acest lucru se întâmplă în puține situații.

Din acest motiv, arhitecturile setului de instrucțiuni precum AVX-512 sunt mai potrivite pentru sarcini de lucru de tipul server și HPC, dar nu pentru consumatorul obișnuit. Prin urmare, nu are prea mult sens să se facă acest lucru.

Deci de ce le-a integrat AMD acum? La vremea respectivă, au făcut bine că au stat deoparte pentru a nu avea aceleași probleme pe care le-a avut Intel pe vremea sa. Dar acum au mers în direcția opusă și le-au adoptat și ei. Și asta se poate datora faptului că microarhitecturile proiectate de AMD, cum ar fi... Zen 4, sunt folosite atât pentru cipurile Ryzen, cât și pentru Threadripper și EPYC și probabil că au creat același procesor pentru toate cipurile, așa cum a făcut Intel la vremea respectivă. În acest fel, AMD poate acum să lucreze și cu AVX-512 în servere, stații de lucru și HPC pentru a concura cu Xeon.

De ce i-a eliminat Intel din Alder Lake?

Intel Core i7-13700K

Suportul Intel pentru instrucțiunile AVX-512 cu procesoarele sale Alder Lake a fost o afacere obscurăInițial, compania a declarat că funcția nu va funcționa pe noile sale procesoare de generația a 12-a sau pe cele ulterioare. Dar ulterior a schimbat cursul când producătorii de plăci de bază au găsit diverse soluții pentru a activa aceste instrucțiuni din firmware.

  Ghid complet: Ce trebuie să faceți dacă placa video nu apare în BIOS-ul UEFI

În acest fel, puteți Activați sau dezactivați această opțiune din BIOS/UEFI a plăcii de bază, oferind astfel utilizatorilor opțiunea de a utiliza AVX-512 sau nu, în funcție de nevoile lor de volum de lucru.

Totuși, se pare că Intel vinde și unele unități non-K, adică cele care nu sunt deblocate pentru overclocking, cu AVX-512 dezactivat în mod implicitȘi, deși nu pare să fie eliminat la nivel hardware al acestor produse, acest blocaj ar împiedica utilizatorii să le utilizeze.

Dar se pare că Intel s-a jucat cu mouse-ul și mouse-ul, deoarece în cele din urmă se pare că firma americană a optat pentru sprijin pentru dizabilități fizice Instrucțiunile AVX-512 sunt utilizate în cipurile lor de consum la nivel de siliciu, așa că nu se poate face nimic pentru a utiliza aceste instrucțiuni, totul în numele creșterii eficienței energetice.

Adică, pe scurt, schimbările pe care Intel le-a făcut au fost:

  1. El a declarat presei că AVX-512 nu va fi compatibil cu noile procesoare hibride.
  2. Înainte de lansare, a apărut un ghid de optimizare care arăta cum se utilizează această funcție.
  3. Intel a negat din nou că aceste instrucțiuni ar fi acceptate, probabil din cauza tuturor criticilor primite în trecut. Apoi a eliminat referințele din acest ghid.
  4. Când a fost lansat Alder Lake, s-a descoperit că instrucțiunile funcționau pe unele plăci de bază cu firmware-ul corespunzător. Acest lucru a fost făcut de producătorii de plăci de bază împotriva dorințelor Intel.
  5. Inițial, Intel a tăcut, deși a declarat presei taiwaneze că suportul pentru AVX-512 era prezent, deși nu în mod implicit, așa că, dacă cineva ar fi vrut să îl folosească pe propriul risc, ar fi putut, la fel cum își asumă riscurile overclocking-ului...
  6. Anul trecut, Intel a anunțat că va dezactiva în sfârșit AVX-512 cu o nouă actualizare de firmware sau microcod.
  7. În aceeași săptămână, au apărut versiuni de BIOS/UEFI care dezactivau opțiunea AVX-512.
  8. MSI a găsit o modalitate de a ocoli această blocare Intel AVX-512, permițând modificări ușoare la BIOS/UEFI.
  9. Intel nu a fost mulțumită de acest lucru și, în cele din urmă, a decis să dezactiveze setul de instrucțiuni din hardware, astfel încât acesta să nu poată fi modificat în niciun fel. Prin urmare, va fi disponibil fizic pe versiunile timpurii ale Alder Lake, în timp ce nu va fi disponibil pe versiunile ulterioare ale Alder Lake.

Deci, dacă doriți să activați AVX-512, atunci trebuie să cumpără Intel Xeon, care, bineînțeles, sunt mai scumpe.

În tot acest timp telenovelăAcum, AMD adaugă suport AVX-512 pe toate cipurile sale Zen 4, chiar și pe cele de consum. Așadar, dacă doriți un procesor pentru PC-ul dvs. care are AVX-512, cea mai bună opțiune în acest moment este un Ryzen 7000 (Zen 4).

Ce este VNNI?

inteligența artificială

Și, pentru a încheia, nu aș vrea să închei fără să vorbesc despre AVX-512 VNNI, adică o extensie special concepută pentru a accelera algoritmii rețelelor neuronale convoluționale. Acronimul VNNI reprezintă Instrucțiuni pentru rețeaua neuronală vectorială.

Aceste instrucțiuni extind extensiile inițiale AVX-512, cu patru instrucțiuni noi pentru a accelera buclele rețelelor neuronale. Aceste instrucțiuni sunt:

  • VPDPBUSDAceastă instrucțiune poate înmulți octeții individuali (8 biți = 1 octet) ai primului operand sursă cu octeții corespunzători ai celui de-al doilea operand sursă, producând rezultate de cuvinte pe 16 biți care sunt însumate și acumulate într-un operand destinație de tip cuvânt dublu (32 de biți).
  • VPDPBUSDS: la fel ca mai sus, cu excepția faptului că depășirea sumei intermediare se saturează la 0x7FFF_FFFF/0x8000_0000 pentru numere pozitive/negative.
  • VPDPWSSDÎn această altă instrucțiune, cuvintele individuale (16 biți) ale primului operand sursă pot fi înmulțite cu cuvântul corespunzător al celui de-al doilea operand sursă, producând rezultate intermediare sub formă de cuvinte care sunt adunate și acumulate într-un cuvânt dublu (32 biți) al operandului destinație.
  • VPDPWSSDSDupă cum vă puteți imagina, este la fel ca precedentul, cu excepția faptului că depășirea sumei intermediare se saturează la 0x7FFF_FFFF/0x8000_0000 pentru numere pozitive/negative.

Principala motivație din spatele extensiei AVX512 VNNI este observația că multe bucle strânse ale rețelelor neuronale convoluționale necesită multiplicarea repetată a două valori pe 16 biți sau a două valori pe 8 biți și acumularea rezultatului într-un acumulator pe 32 de biți. Acest lucru este posibil folosind două instrucțiuni, VPMADDWD care sunt folosite pentru a înmulți două perechi de 16 biți și a le aduna urmate de unul VPADDD care însumează valoarea acumulată.