AVX-512: kaikki edut ja haitat

Viimeisin päivitys: 16 huhtikuu 2024
Kirjoittaja: Jaime Herrera
AVX-512

Kuten ehkä tiedät, CPU käsittelee ohjelmistoa, jotta kaikki toimii tietokonejärjestelmässä. Ohjelmat koostuvat käskyistä ja datasta; käskyt osoittavat, mitä operaatiota datalle on suoritettava odotetun tuloksen saavuttamiseksi. Ja näin kaikki suoritetaan. Yksi CPU:n tärkeimmistä yksiköistä on ALU tai FPU, joka vastaa matemaattisista laskutoimituksista. Ja nykyisissä prosessoreissa, kuten Intelissä, on toiminnallisia yksiköitä, jotka pystyvät suorittamaan jopa 512 bitin datapituisia vektorikäskyjä, kuten AVX-512 josta keskustelemme täällä.

Näiden laajennusten tarkoituksena on nopeuttaa tiettyjen, erityisesti tieteellisten, työkuormien käsittelyä, jotka vaativat suuren määrän tämän tyyppisiä toimintoja. AVX-512:n ilmestyessä... Kaikki Intel-arvostelut eivät olleet hyviä.oli myös monia, jotka eivät pitäneet tästä lisäyksestä lainkaan ja kohtasivat jopa tiettyjä ongelmia, kuten tulemme näkemään…

Saatat olla kiinnostunut myös:

Miten ALU toimii?

Ennen kuin opit lisää AVX-512-käskykannasta, on ensin tärkeää ymmärtää, miten käskykanta toimii. ALU (aritmeettinen logiikkayksikkö), eli aritmeettinen ja looginen prosessointiyksikkö.

Eli tässä yksikössä ne suoritetaan laskutoimituksia, jotka sisältävät esimerkiksi yhteen-, kerto- ja jakolaskutoimituksiaNäiden tehtävien suorittamiseen ALU käyttää CPU:n ohjausyksikön ohjaamia erityisiä digitaalipiirejä. Kun se kaappaa käsiteltävän käskyn muistista ja dekoodaa sen, se lähettää ALU:lle Opcode-koodin, joka ilmaisee, mitä rekistereihin ladatuille kahdelle dataelementille tehdään. Esimerkiksi ADD-käsky laskisi yhteen, SUB-käsky vähentäisi, MUL-käsky kertoisi, DIV-käsky jakaisi jne.

Lisäksi tämä ALU, kuten muutkin CPU-yksiköt, toimii asettamassa tahdissa kellotaajuus. Esimerkiksi jos se on 5 GHz, niin ne suorittavat yksinkertaisesti sanottuna 5.000 miljardia operaatiota sekunnissa.

Tästä huolimatta suorittimen kellotaajuuden kasvaessa suorittimen tuottaman lämmön määrä kasvaa. Siksi taajuuden skaalaaminen yhä korkeammalle ei ole ainoa ratkaisu suorituskyvyn parantamiseksi. Siksi suoritinsuunnittelijoiden on etsittävä vaihtoehtoja suorituskyvyn parantamiseksi, kuten ydintason rinnakkaisuus, rekisterien uudelleennimeäminen, ennustaminen ja spekulointi, epäjärjestyksessä suoritettava suoritus, superskalaarijärjestelmät jne. Laskentatehon lisäämiseen tähtääviin toimenpiteisiin kuuluu myös SIMD-nimisiä ohjeita, eli vektori, joka pystyy toimimaan suuremmilla tietojoukoilla.

Esimerkki näistä Ohjeet ovat AVX-512, kun taas muut yksiköt toimivat 64-bittisellä datalla, näiden laajennusten erikoisyksiköt toimivat 512-bittisellä datapituudella, eli ne pystyvät käsittelemään kerrallaan kahdeksan kertaa normaalin sanakoon. Tätä varten ne tarvitsevat ALUt (kokonaisluvut) tai FPUt (jos liukuluku) suurempi ja monimutkaisempi, mikä lopulta tarkoittaa suurempaa sirupinta-alaa, siten korkeampia kustannuksia ja myös muita komplikaatioita…

Miten data pääsee ALU:lle?

No, nyt kun sinulla on perusymmärrys siitä, mikä ALU on ja miten se toimii, sekä mihin AVX-512:ita käytetään perustasolla, seuraava askel on oppia miten data saapuu ALU:lle, sillä tämä auttaa sinua myös ymmärtämään näitä laajennuksia.

ALU:lle pääsemiseksi datan on liikuttava eri tallennusjärjestelmien läpi. Tämä datamatka perustuu muistihierarkia tietokonejärjestelmästä. Lyhyt kuvaus tästä hierarkiasta olisi:

  • Toissijainen muisti: Nämä ovat massamuistivälineitä eli kiintolevyjä (HDD) tai SSD-kiintolevyjä, sekä muita asemia, jotka voidaan myös liittää I/O-järjestelmään, kuten optisia tallennusvälineitä. Ne tallentavat suuren määrän tietoa, mutta niiden muisti on hitaampaa kuin suorittimen nopeus. Siksi näiden tallennusvälineiden käyttöön liittyy suurempi viive. Näiden seuraamusten välttämiseksi lataamme tiedot ensisijaiseen muistiin, josta keskustelemme seuraavassa kohdassa. Kuvittele esimerkiksi, että sinulla on Word asennettuna kiintolevyllesi ja haluat suorittaa sen. Tämä ohjelmisto koostuu sarjasta suoritettavia tiedostoja eli binääritiedostoja, jotka sisältävät suorittimen suorittamiseen tarvittavat ohjeet ja tiedot. Voi myös käydä niin, että suoritettava ohjelmisto ei ole kiintolevyllä, kuten esimerkiksi silloin, kun asennat käyttöjärjestelmän USB-muistitikulta tai DVD-levyltä. Myös näiden ohjeiden ja tietojen sisältävät suoritettavat binääritiedostot löytyvät sieltä.
  • Ensisijainen muisti: Ensisijainen tallennusjärjestelmä koostuu RAM-muistista (RAM). Tämä tallennusjärjestelmä on nopeampi kuin toissijainen tallennusjärjestelmä, mutta se ei pysty tallentamaan yhtä paljon tietoa eikä tekemään sitä pysyvästi, koska se on haihtuva muisti, joka tallentaa tietoja käynnistyksen aikana. Eli aina, kun sammutat tietokoneen, asentamasi ohjelmat eivät poistu, mutta tämän RAM-muistin sisältö poistuu. Kuten sanoin, kun prosessi tai ohjelma ladataan RAM-muistiin, suoritettavan binääritiedoston ohjeet ja tiedot siirretään toissijaisesta yksiköstä tähän ensisijaiseen yksikköön, johon suoritin pääsee nopeammin käsiksi.
  • Kätkö: Välimuisti on upotettu suorittimeen ja se on nopein muistijärjestelmä, mutta sillä on myös hyvin pieni kapasiteetti ja se on haihtuva. Tämä muistijärjestelmä on yleensä jaettu kolmeen osaan: L1, L2 ja L3. Kaikki ALU:n käsiteltävät tiedot siirretään kiintolevyltä RAM-muistiin ja sitten välimuistiin. ALU ei kuitenkaan voi käyttää tietoja suoraan välimuistista. Siksi se tarvitsee toisen, vielä pienemmän ja nopeamman muistin, mikä on seuraava kohta...
  • CPU-rekisterit: CPU-rekisteri on hyvin yksinkertainen muisti, joka koostuu erittäin nopeista flip-flop-elementeistä. CPU-arkkitehtuurista riippuen rekisterien koko voi vaihdella. Ne voivat olla esimerkiksi 8-bittisiä, 16-bittisiä, 32-bittisiä, 64-bittisiä jne. Lisäksi niiden lukumäärä voi vaihdella, ja ne kaikki muodostavat CPU:n rekisteri-ikkunan tai -tiedoston. Näissä rekistereissä laskentayksiköt, kuten ALU tai FPU, voivat käyttää niihin ladattua dataa. Joten kun käsky noudetaan RAM-muistista CPU:lle noutosyklin aikana, ohjausyksikkö dekoodaa tai tulkitsee käskyn ja määrittää, mitä kyseisen käskyn suorittaminen edellyttää. Esimerkiksi ADD r1, r2, r3 voisi laskea yhteen rekisterin r2 + r3 tiedot ja tallentaa tuloksen r1:een. Tällä tavoin ohjausyksikkö lähettää tämän operaatiokoodin ALU:lle ja käskee sitä laskemaan yhteen arvot ja datan sijainnin, tässä tapauksessa tarvittavat rekisterit. ALU sitten käyttää dataa ja suorittaa yhteenlaskuoperaation. Näin tämä hierarkia toimii.
  I/O-järjestelmän toimintaperiaate

Myös, kuten ehkä tiedät, tiedot ja ohjeet Useimmin käytetyt tiedostot tallennetaan välimuistiin, jotta niihin pääsee nopeammin käsiksi, jos niitä tarvitaan uudelleen tulevaisuudessa. Kuten arvata saattaa, jokainen välimuistitaso nopeutuu:

  • L1Tämä on ensimmäinen taso, nopein kaikista ja jolla on pienin latenssi. Tämä tarkoittaa, että sen käyttämiseen kuluu vähemmän kellojaksoja. Lisäksi tämä muisti on yleensä jaettu L1D- tai L1-tasoon dataa varten ja L1I- tai L1-tasoon käskyjä varten. Tämä tarkoittaa, että käskyjä ja dataa ei sekoiteta.
  • L2Tämä on välimuistin seuraava taso, ja sen kapasiteetti on suurempi kuin L1:n, mutta se on jonkin verran hitaampi, joten sen käyttämiseen tarvitaan enemmän syklejä. Tässä sekä data että käskyt sekoittuvat, koska se on unified.
  • L3Tämän tason kapasiteetti on suurempi kuin L2:n, mutta se on jopa hitaampi kuin L2. Ja kuten L2, se on myös unified, tallentaen sekä dataa että ohjeita. Jos L3 on viimeinen taso, se tunnetaan myös nimellä LLC (Last Level Cache), vaikka muissa järjestelmissä voi olla muita tasoja, kuten L4 jne.

Kuten voit kuvitella, kun suorittimen on etsittävä dataa tai käskyä suorituskyvyn parantamiseksi, se etsii ensin L1-muistista, koska se vaatii vähiten kellojaksoja päästäkseen niihin käsiksi. Jos dataa tai käskyä ei ole siellä, se etsii seuraavaksi nopeimmasta L2-muistista. Ja jos dataa tai käskyä ei ole sielläkään, se etsii L3-muistista. Jos dataa tai käskyä ei ole sielläkään, se etsii RAM-muistista ja niin edelleen.

Mikä on AVX-512 ja miten se toimii?

Sarja AVX-512-ohjeet Se on AVX:n toinen versio ja saapui Intelin prosessoreihin vuonna 2013. AVX on lyhenne sanoista Advanced Vector Extensions, ja se esiteltiin ensimmäisen kerran Intelin Xeon Phi -prosessorissa (Knights Landing) ja myöhemmin Intelin palvelimille Skylake-X-pohjaisten Xeonien myötä.

  Laitteistofoorumi: täydellinen opas osioihin ja sisältöön

Lisäksi AVX-512-käskykanta pääsi myös kuluttajalaitteisiin, eli PC-tietokoneisiin, Cannon-järven arkkitehtuuri ja myöhemmin tuki Ice Lake- ja Tiger Lake -arkkitehtuureja. Ehkä yksi kritisoiduimmista vaiheista, jota ei olisi koskaan pitänyt tehdä, yhtäältä siksi, ettei ollut tarpeeksi ohjelmistoa näiden ohjeiden hyödyntämiseen, ja toisaalta siksi, että se lisäsi näiden yksiköiden monimutkaisuutta.

Kuten edellä selitettiin, ALU/FPU voi käyttää vain laitteessa olevia tietoja. CPU-rekisteriAVX-käskykanta kasvattaa näiden rekistereiden kokoa. Tämä kasvu mahdollistaa useiden datapisteiden käsittelyn yhdellä käskyllä, mikä parantaa suorituskykyä.

Tämän ohjekokoelman päätavoitteena oli nopeuttaa tiedon pakkaamiseen, kuvankäsittelyyn ja kryptografisiin laskelmiin liittyviä tehtäviäTarjoamalla kaksinkertaisen laskentatehon AVX-256:een verrattuna, AVX-512-käskykanta paransi suorituskykyään huomattavasti. Näiden Intel-suorittimien suorituskykyä ei kuitenkaan kaksinkertaistettu, kuten monet saattaisivat luulla.

Miksi Intel lopettaa AVX-512:n valmistuksen?

Intel

Kuten edellä selitettiin, AVX-512-käskykanta tarjoaa useita etuja laskennallisissa laskutoimituksissa, mutta kaikki ei ollut tervetulluttaOn totta, että suositut kirjastot, kuten TensorFlow, käyttävät käskykanta-arvoa nopeampien laskelmien tekemiseen suorittimilla, jotka tukevat käskykanta-arvoa.

AMD otti AVX-512:n ensimmäisen kerran käyttöön Zen 4 -pohjaisissa mikroprosessoreissa. Täydellinen vaihdos näiden kahden yrityksen välillä…

Miksi Intel sitten poistaa AVX-512:n käytöstä uusissa Alder Lake -prosessoreissaan? Totuus on, että niitä ei ole poistettu kokonaan. Esimerkiksi ... Leppäjärvi Meidän on koostuttava heterogeenisestä moniydinarkkitehtuurista, jossa on tehokkaat P-ytimet ja tehokkaat E-ytimet.

Vaikka P-ytimet perustuvat Golden Cove -mikroarkkitehtuuriin ja niillä on kyky suorittaa näitä ohjeita, Gracemont-mikroarkkitehtuuriin perustuvissa E-ytimissä Näitä ohjeita ei saa suorittaaNäiden ytimien ajoitusohjelma hylkää tällaiset ohjeet pitääkseen ytimet pienempinä ja energiatehokkaampina.

Alder Lake -suorittimista ja uudemmista ei kuitenkaan tueta AVX-512-käskykanta, koska muuten olisi olemassa E-ytimiä, jotka eivät pystyisi suorittamaan tiettyjä ohjelmia. Niitä voidaan kuitenkin käyttää muissa suorittimissa, joissa Intel ei ole fyysisesti yhdistänyt näitä ytimiä, kuten Xeonin tapauksessa HPC:ssä ja palvelimissa, ja jopa joissakin tietokoneissa, joissa se on sallittua. poista E-ytimet käytöstä BIOSista/UEFI:sta.

Tarvitaanko AVX-512:ta kuluttajakäyttöön tarkoitetussa suorittimessa?

AMD Ryzen 7 7700X

AVX-512-käskykanta kasvattaa suorittimen rekisterikokoa parantaakseen sen suorituskykyä. Tämä suorituskyvyn kasvu mahdollistaa suorittimien nopeamman numeroiden käsittelyn, jolloin käyttäjät voivat suorittaa video-/äänipakkausalgoritmeja nopeammin.

Tämä suorituskyvyn kasvu voidaan kuitenkin havaita vain, kun ohjelmassa määritellyt ohjeet ovat optimoitu toimimaan AVX-512-käskykannasta. Muuten ne ovat täysin hyödyttömiä, ja AVX-512:n alhaisen käyttöönoton vuoksi näin tapahtuu vain harvoissa tilanteissa.

Tästä syystä AVX-512:n kaltaiset käskykanta-arkkitehtuurit sopivat paremmin seuraavan tyyppisille työkuormille: palvelin ja HPC, mutta ei keskivertokuluttajalle. Siksi siinä ei ole paljon järkeä.

Miksi AMD on sitten integroinut ne nyt? Aikoinaan he pärjäsivät hyvin pysymällä poissa, jotta heillä ei olisi samoja ongelmia kuin Intelillä aikoinaan. Mutta nyt he ovat menneet päinvastaiseen suuntaan ja ottaneet ne myös käyttöön. Ja se voi johtua siitä, että AMD:n suunnittelemat mikroarkkitehtuurit, kuten Zen 4, käytetään sekä Ryzen- että Threadripper- ja EPYC-siruissa, ja ehkä he ovat luoneet saman kaikille siruille, kuten Intel teki aikoinaan. Tällä tavoin AMD voi nyt myös työskennellä AVX-512:n kanssa palvelimissa, työasemissa ja HPC:ssä kilpaillakseen Xeonin kanssa.

Miksi Intel on poistanut ne Alder Lakesta?

Intel Core i7-13700K

Intelin tuki AVX-512-käskyille Alder Lake -prosessoreissaan se on ollut hämärä juttuAluksi yritys ilmoitti, että ominaisuus ei toimisi sen uusissa 12. sukupolven prosessoreissa tai uudemmissa. Myöhemmin yhtiö kuitenkin muutti suuntaansa, kun emolevyvalmistajat löysivät erilaisia ​​ratkaisuja näiden ohjeiden ottamiseksi käyttöön laiteohjelmistosta.

  Täydellinen opas: Mitä tehdä, jos näytönohjain ei näy UEFI BIOSissa

Tällä tavalla voit Ota tämä asetus käyttöön tai poista se käytöstä BIOSissa/UEFI:ssa emolevystä, mikä antaa käyttäjille mahdollisuuden käyttää AVX-512:ta tai olla käyttämättä työmäärän tarpeistaan ​​riippuen.

Näyttää kuitenkin siltä, ​​että Intel myy myös joitakin muita kuin K-yksiköitä, eli sellaisia, joita ei ole avattu ylikellotusta varten, AVX-512 on oletuksena poistettu käytöstä.Ja vaikka sitä ei näytä olevan poistettu näiden tuotteiden laitteistotasolla, tämä esto estäisi käyttäjiä käyttämästä niitä.

Mutta näyttää siltä, ​​että Intel on leikkinyt hiirellä ja hiirellä, koska lopulta näyttää siltä, ​​että amerikkalainen yritys on valinnut fyysisesti poistaa tuen käytöstä AVX-512-käskyjä käytetään kuluttajasiruissa piisirutasolla, joten näiden käskyjen käytölle ei voida tehdä mitään, kaikki energiatehokkuuden parantamisen nimissä.

Eli yhteenvetona voidaan sanoa, että Intelin tekemät muutokset ovat olleet:

  1. Hän kertoi lehdistölle, että AVX-512 ei olisi yhteensopiva uusien hybridiprosessoreiden kanssa.
  2. Ennen julkaisua ilmestyi optimointiopas, joka näytti, miten tätä ominaisuutta käytetään.
  3. Intel kielsi jälleen, että näitä ohjeita tuettaisiin, kenties kaiken aiemmin saamansa kritiikin vuoksi. Sen jälkeen se poisti viittaukset tästä oppaasta.
  4. Kun Alder Lake julkaistiin, havaittiin, että sen ohjeet toimivat joillakin emolevyillä, joissa oli asianmukaiset laiteohjelmistot. Emolevyvalmistajat tekivät tämän Intelin toiveita vastaan.
  5. Intel pysyi aluksi hiljaa, vaikka se kertoi taiwanilaiselle lehdistölle, että AVX-512-tuki oli olemassa, vaikkakaan ei oletuksena, joten jos joku halusi käyttää sitä omalla vastuullaan, hän voisi tehdä sen, aivan kuten hän kantaa ylikellotuksen riskit…
  6. Viime vuonna Intel ilmoitti, että se lopulta poistaa AVX-512:n käytöstä uudella laiteohjelmistolla tai mikrokoodipäivityksellä.
  7. Samalla viikolla ilmestyi BIOS/UEFI-julkaisuja, jotka poistivat käytöstä AVX-512-vaihtoehdon.
  8. MSI löysi keinon ohittaa tämän Intel AVX-512 -lukituksen, mikä mahdollistaa helpot muutokset BIOS/UEFI-asetuksiin.
  9. Intel ei ollut tähän tyytyväinen ja päätti lopulta poistaa käskykannan käytöstä laitteistossa, jotta sitä ei voitaisi muuttaa millään tavalla. Siksi se on fyysisesti saatavilla varhaisissa Alder Lake -koontiversioissa, mutta ei myöhemmissä Alder Lake -koontiversioissa.

Joten jos haluat AVX-512:n olevan käytössä, sinun on osta Intel Xeon, jotka toki ovat kalliimpia.

Kaiken tämän aikana saippuaoopperaAMD lisää nyt AVX-512-tuen kaikkiin Zen 4 -prosessoreihinsa, myös kuluttajakäyttöön tarkoitettuihin. Joten jos haluat tietokoneellesi prosessorin, jossa on AVX-512, paras vaihtoehto juuri nyt on Ryzen 7000 (Zen 4).

Mikä on VNNI?

Inteligencia keinotekoinen

Ja lopuksi, en haluaisi lopettaa puhumatta siitä AVX-512 VNNI, eli laajennus, joka on erityisesti suunniteltu kiihdyttämään konvoluutiohermoverkkoalgoritmeja. Lyhenne VNNI tulee sanoista Vektorin neuroverkkoohjeet.

Nämä ohjeet laajentavat alkuperäisiä AVX-512-laajennuksia seuraavasti: neljä uutta ohjetta neuroverkkosilmukoiden nopeuttamiseksi. Nämä ohjeet ovat:

  • VPDPBUSDTämä käsky voi kertoa ensimmäisen lähdeoperandin yksittäiset tavut (8 bittiä = 1 tavu) toisen lähdeoperandin vastaavilla tavuilla, jolloin saadaan 16-bittisiä sanatuloksia, jotka summataan ja kerätään kaksoissanaiseksi (32-bittiseksi) kohdeoperandiksi.
  • VPDPBUSDSSama kuin yllä, paitsi että välisumman ylivuoto kyllästyy kohdassa 0x7FFF_FFFF/0x8000_0000 positiivisilla/negatiivisilla luvuilla.
  • VPDPWSSDTässä toisessa käskyssä ensimmäisen lähdeoperandin yksittäiset sanat (16 bittiä) voidaan kertoa toisen lähdeoperandin vastaavalla sanalla, jolloin saadaan välituloksia, jotka lasketaan yhteen ja kerätään kohdeoperandin kaksoissanaksi (32 bittiä).
  • VPDPWSSDSKuten voitte kuvitella, se on sama kuin edellinen, paitsi että välisumman ylivuoto saturoituu kohdassa 0x7FFF_FFFF/0x8000_0000 positiivisilla/negatiivisilla luvuilla.

AVX512 VNNI -laajennuksen pääasiallinen motivaatio on havainto, että monet tiukat konvoluutiohermoverkkosilmukat vaativat kahden 16-bittisen tai kahden 8-bittisen arvon toistuvaa kertolaskua ja tuloksen keräämistä 32-bittiseen akkumulaattoriin. Tämä on mahdollista käyttämällä kahta käskyä, VPMADDWD joita käytetään kahden 16-bittisen parin kertomiseen ja niiden yhteenlaskemiseen, jota seuraa yksi VPADDD mikä laskee yhteen kertyneen arvon.