Moniytimiset prosessorit: toimintaperiaatteet. Hyper-Threading: Intelin "kaksi yhdessä" tai Xeonin piilotetut ominaisuudet

Kirjoitimme, että yhden prosessorin Xeon-järjestelmien käyttämisessä ei ole järkeä, koska korkeammalla hinnalla niiden suorituskyky on sama kuin saman taajuuden Pentium 4:llä. Nyt perusteellisemman tutkimuksen jälkeen tähän lausuntoon on todennäköisesti tehtävä pieni muutos. Hyper-Threading-tekniikka otettu käyttöön Intel Xeon Prestonia-ytimen kanssa se todella toimii ja antaa erittäin huomattavan vaikutuksen. Vaikka sitä käytettäessä herää monia kysymyksiä...

Annat tuottavuuden

"Nopeammin, vielä nopeammin..." Kilpailu suorituskyvystä on jatkunut vuosia, ja joskus on jopa vaikea sanoa, mikä tietokoneen komponentti kiihtyy nopeammin. Tämän saavuttamiseksi keksitään yhä enemmän uusia menetelmiä, ja mitä pidemmälle tähän lumivyörymäiseen prosessiin panostetaan pätevämpää työvoimaa ja laadukkaampia aivoja.

Jatkuva suorituskyvyn lisääminen on ehdottomasti tarpeen. Tekijä: vähintään, tämä on kannattavaa liiketoimintaa, ja tulee aina olemaan kaunis tapa rohkaista käyttäjiä päivittämään eilisestä "supertehokkaasta prosessorista" huomisen "vielä supertehokkaampaan...". Esimerkiksi samanaikainen puheentunnistus ja simultaanikäännös toiselle kielelle - eikö tämä ole kaikkien unelma? Tai epätavallisen realistisia pelejä, jotka ovat melkein "elokuvalaatuisia" (imevät kokonaan huomion ja johtavat joskus vakaviin psyyken muutoksiin) - eikö tämä ole monien nuorten ja vanhojen pelaajien toive?

Mutta tässä tapauksessa otetaan markkinointinäkökohdat pois yhtälöstä ja keskitytään teknisiin. Lisäksi kaikki ei ole niin synkkää: on kiireellisiä tehtäviä (palvelinsovellukset, tieteelliset laskelmat, mallintaminen jne.), joissa kaikki on enemmän. korkea suorituskyky, erityisesti keskusyksiköissä, on todella tarpeen.

Joten millä keinoilla niiden suorituskykyä voidaan parantaa?

Nosta kellonopeutta. Teknistä prosessia on mahdollista "ohentaa" edelleen ja taajuutta lisätä. Mutta kuten tiedätte, tämä ei ole helppoa ja on täynnä kaikenlaisia ​​ongelmia. sivuvaikutuksia kuten lämmönpoistoongelmia.

Prosessoriresurssien lisääminen- esimerkiksi välimuistin määrän lisääminen, uusien lohkojen (Execution Units) lisääminen. Kaikki tämä merkitsee transistorien määrän kasvua, monimutkaisempaa prosessoria, sirualueen kasvua ja siten kustannuksia.

Lisäksi kaksi edellistä menetelmää eivät yleensä tarjoa lineaarista tuottavuuden kasvua. Tämä tiedetään hyvin Pentium 4:ssä: virheet haaran ennustamisessa ja keskeytyksessä aiheuttavat pitkän liukuhihnan nollaamisen, mikä vaikuttaa suuresti yleiseen suorituskykyyn.

Monikäsittely. Useiden suoritinten asentaminen ja työn jakaminen niiden välillä on usein varsin tehokasta. Mutta tämä lähestymistapa ei ole kovin halpa - jokainen ylimääräinen prosessori lisää järjestelmän kustannuksia, ja kaksoisemolevy on paljon kalliimpi kuin tavallinen (puhumattakaan levyistä, jotka tukevat neljää tai useampaa suoritinta). Lisäksi kaikki sovellukset eivät hyödy moniprosessoinnista tarpeeksi suorituskyvyltään oikeuttamaan kustannukset.

"Puhtaan" moniprosessoinnin lisäksi on useita "välivaihtoehtoja", jotka voivat nopeuttaa sovelluksen suorittamista:

Chip Multiprocessing (CMP)- kaksi prosessoriydintä sijaitsee fyysisesti yhdellä sirulla yhteisen tai erillisen välimuistin avulla. Luonnollisesti kidekoko osoittautuu melko suureksi, ja tämä ei voi muuta kuin vaikuttaa kustannuksiin. Huomaa, että useat näistä "kaksoissuorittimista" voivat toimia myös moniprosessorijärjestelmässä.

Time-Slice Multithreading. Prosessori vaihtaa ohjelmasäikeiden välillä tietyin väliajoin. Yleiskustannukset voivat joskus olla melko merkittäviä, varsinkin jos prosessi odottaa.

Kytkentätapahtuman monisäikeistys. Tehtävän vaihtaminen, kun esiintyy pitkiä taukoja, kuten välimuistin poikkeamia, suuri määrä jotka ovat tyypillisiä palvelinsovelluksille. Tässä tapauksessa prosessi, joka odottaa tietojen lataamista suhteellisen hitaasta muistista välimuistiin, keskeytetään, mikä vapauttaa suorittimen resursseja muille prosesseille. Switch-on-Event Multithreading, kuten Time-Slice Multithreading, ei kuitenkaan aina saavuta prosessoriresurssien optimaalista käyttöä, mikä johtuu erityisesti virheistä haaran ennustamisessa, käskyriippuvuuksissa jne.

Samanaikainen monisäikeistys. Tässä tapauksessa ohjelmasäikeet suoritetaan yhdellä prosessorilla "samanaikaisesti", toisin sanoen vaihtamatta niiden välillä. Prosessoriresurssit jaetaan dynaamisesti periaatteen mukaan "jos et käytä sitä, anna se jollekin muulle". Juuri tämä lähestymistapa muodostaa Intelin Hyper-Threading-tekniikan perustan, jota nyt tarkastelemme.

Kuinka Hyper-Threading toimii

Kuten tiedätte, nykyinen "laskentaparadigma" sisältää monisäikeisen laskennan. Tämä ei koske vain palvelimia, joissa tällainen käsite on alun perin olemassa, vaan myös työasemia ja työpöytäjärjestelmiä. Säikeet voivat kuulua samaan tai eri sovelluksiin, mutta lähes aina aktiivisia säikeitä on useampi (varmistaaksesi tämä avaamalla Task Manager Windows 2000/XP:ssä ja laittamalla säikeiden määrän näyttö päälle). Tyypillinen prosessori voi kuitenkin suorittaa vain yhden säikeistä kerrallaan ja joutuu jatkuvasti vaihtamaan niiden välillä.

Hyper-Threading-tekniikka toteutettiin ensimmäistä kertaa Intel Xeon MP (Foster MP) -prosessorissa, jolla sitä testattiin. Muistakaamme, että IDF:n keväällä 2002 virallisesti esitelty Xeon MP käyttää Pentium 4 Willametteen liittyvää ydintä, sisältää 256 KB L2-välimuistin ja 512 KB/1 MB L3-välimuistin ja tukee toimintaa 4-prosessorin kokoonpanoissa. Hyper-Threading-tuki on saatavilla myös työasemaprosessorissa - Intel Xeon (Prestonia-ydin, 512 KB L2-välimuisti), joka tuli markkinoille hieman aikaisemmin kuin Xeon MP. Lukijamme tuntevat jo Intel Xeonin kahden prosessorin kokoonpanot, joten tarkastelemme Hyper-Threadingin ominaisuuksia näiden suorittimien esimerkin avulla - sekä teoreettisesti että käytännössä. Oli miten oli, "yksinkertainen" Xeon on arkipäiväisempi ja sulavampi asia kuin Xeon MP 4-prosessorijärjestelmissä...

Hyper-Threadingin toimintaperiaate perustuu siihen, että kulloinkin vain osa prosessorin resursseista käytetään suoritettaessa. ohjelmakoodi. Käyttämättömiä resursseja voidaan myös ladata työllä - esimerkiksi toista sovellusta (tai saman sovelluksen toista säiettä) voidaan käyttää rinnakkaiseen suoritukseen. Yhdessä fyysisessä Intel Xeon -prosessorissa muodostetaan kaksi loogista prosessoria (LP - Logical Processor), jotka jakavat CPU:n laskentaresurssit. Käyttöjärjestelmä ja sovellukset "näkevät" täsmälleen kaksi prosessoria ja voivat jakaa työn niiden välillä, kuten täysimittaisen kaksiprosessorijärjestelmän tapauksessa.

Yksi Hyper-Threadingin toteuttamisen tavoitteista on antaa sen toimia samalla nopeudella kuin tavallisessa CPU:ssa, kun aktiivisia säiettä on vain yksi. Tätä varten prosessorilla on kaksi pääkäyttötilaa: Single-Task (ST) ja Multi-Task (MT). ST-tilassa vain yksi looginen prosessori on aktiivinen, ja sillä on käytettävissä olevien resurssien jakamaton käyttö (ST0- ja ST1-tilat); toinen LP pysäytetään HALT-komennolla. Kun toinen ohjelmasäie ilmestyy, lepotilassa oleva looginen prosessori aktivoituu (keskeytyksen kautta) ja fyysinen CPU asetetaan MT-tilaan. Käyttämättömien LP-levyjen pysäyttäminen HALT-komennolla on määritetty käyttöjärjestelmälle, joka on viime kädessä vastuussa yhden säikeen yhtä nopeasta suorittamisesta kuin tapauksessa ilman Hyper-Threadingia.

Jokaiselle kahdelle LP:lle on tallennettu niin sanottu arkkitehtuuritila (AS), joka sisältää erityyppisten rekisterien tilan - yleiskäyttöinen, ohjaus, APIC ja palvelu. Jokaisella LP:llä on oma APIC (keskeytysohjain) ja joukko rekistereitä, joiden oikeaa toimintaa varten otetaan käyttöön RAT (Register Alias ​​Table) -konsepti, joka seuraa kahdeksan yleiskäyttöisen IA-32-rekisterin ja 128:n vastaavuutta. fyysisen CPU:n rekisterit (yksi RAT jokaista LP:tä kohti).

Kun kaksi säiettä on käynnissä, kahta vastaavaa seuraavan käskyn osoittimien sarjaa tuetaan. Suurin osa ohjeista on otettu Trace Cachesta (TC), jossa ne tallennetaan dekoodatussa muodossa, ja kaksi aktiivista LP:tä käyttävät TC:tä vuorotellen, joka toinen kello. Samaan aikaan, kun vain yksi LP on aktiivinen, sillä on yksinomainen pääsy TC:hen ilman kellon kiertoa. Pääsy Microcode ROMiin tapahtuu samalla tavalla. ITLB (Instruction Translation Look-aide Buffer) -lohkot, joita käytetään, kun tarvittavat käskyt eivät ole komentovälimuistissa, monistetaan ja kukin toimittaa komentoja omalle säikeelleen. Käskydekoodauslohko IA-32 Instruction Decode on jaettu ja siinä tapauksessa, että käskyt on dekoodattava molemmille säikeille, se palvelee niitä yksitellen (jälleen kellojakson kautta). Uop Queue- ja Allocator-lohkot jaetaan kahteen osaan, jolloin puolet elementeistä allokoidaan kullekin LP:lle. Aikataulut, numerointi 5, käsittelevät dekoodattujen komentojen (Uops) jonoja huolimatta kuulumisesta LP0/LP1:een ja suoria komentoja vaadittujen suoritusyksiköiden suorittamaan - riippuen ensimmäisen suoritusvalmiudesta ja toisen saatavuudesta. Kaikkien tasojen välimuistit (L1/L2 Xeonille sekä L3 Xeon MP:lle) jaetaan täysin kahden LP:n välillä, mutta tietojen eheyden varmistamiseksi DTLB:n (Data Translation Look-aside Buffer) merkinnät on varustettu kuvailijoilla loogisten prosessoritunnusten muodossa.

Siten molempien loogisten prosessorien käskyt voidaan suorittaa samanaikaisesti yhden fyysisen prosessorin resursseilla, jotka on jaettu neljään luokkaan:

  • monistettu;
  • Täysin jaettu;
  • elementtikuvaajilla (Entry Tagged);
  • dynaamisesti ositettu (Osioitu) riippuen käyttötilasta ST0/ST1 tai MT.

Samaan aikaan useimpia sovelluksia, jotka saavat kiihdytyksen moniprosessorijärjestelmissä, voidaan kiihdyttää myös suorittimessa, jossa on käytössä Hyper-Threading ilman muutoksia. Mutta on myös ongelmia: esimerkiksi jos yksi prosessi on odotussilmukassa, se voi viedä kaikki fyysisen CPU:n resurssit häiriten toisen LP:n toimintaa. Näin ollen suorituskyky Hyper-Threadingia käytettäessä voi joskus laskea (jopa 20 %). Tämän estämiseksi Intel suosittelee PAUSE-käskyn käyttöä (joka on otettu käyttöön IA-32:ssa Pentium 4:stä lähtien) tyhjien odotusjaksojen sijaan. Melko vakavaa työtä tehdään myös automaattisen ja puoliautomaattisen koodin optimoinnin parissa kääntämisen aikana - esimerkiksi Intel OpenMP C++/Fortran Compilers () -sarjan kääntäjät ovat edistyneet merkittävästi tässä suhteessa.

Intelin mukaan Hyper-Threadingin ensimmäisen toteutuksen toinen tavoite oli minimoida transistorien lukumäärän, sirun pinta-alan ja virrankulutuksen kasvu ja samalla saavuttaa huomattava suorituskyvyn kasvu. Ensimmäinen osa tästä sitoumuksesta on jo täytetty: Hyper-Threading-tuen lisääminen Xeon/Xeon MP:hen lisäsi suutinpinta-alaa ja virrankulutusta alle 5 %. Meidän on vielä tarkistettava, mitä tapahtui toisen osan (suorituskyvyn) kanssa.

Käytännön osa

Ilmeisistä syistä emme testannut 4-prosessorisia palvelinjärjestelmiä Xeon MP:ssä, jossa Hyper-Threading oli käytössä. Ensinnäkin se on melko työvoimavaltaista. Ja toiseksi, vaikka päättäisimmekin ryhtyä tällaiseen saavutukseen, olisi silti täysin mahdotonta saada tätä kalliita laitteita nyt, alle kuukausi virallisen ilmoituksen jälkeen. Siksi päätettiin rajoittua samaan järjestelmään kahdella Intel Xeon 2,2 GHz:llä, joilla suoritettiin näiden prosessorien ensimmäinen testaus (katso linkki artikkelin alussa). Järjestelmä perustui Supermicro P4DC6+ -emolevyyn ( Intelin piirisarja i860), sisälsi 512 Mt RDRAM-muistia, GeForce3-sirun näytönohjaimen (64 Mt DDR, Detonator 21.85 -ohjaimet), Western Digital WD300BB -kiintolevyn ja 6X DVD-ROM-levyn; Käyttöjärjestelmänä käytettiin Windows 2000 Professional SP2:ta.

Aluksi muutama yleisiä vaikutelmia. Kun asennat yhden Xeonin Prestonia-ytimellä, BIOS näyttää järjestelmän käynnistyksen yhteydessä viestin kahden CPU:n olemassaolosta; jos kaksi prosessoria on asennettu, käyttäjä näkee sanoman neljästä suorittimesta. Käyttöjärjestelmä tunnistaa tavallisesti "molemmat prosessorit", mutta vain, jos kaksi ehtoa täyttyy.

Ensinnäkin CMOS-asetuksissa jälkimmäinen BIOS-versiot Supermicro P4DCxx -korteissa on nyt Enable Hyper-Threading -vaihtoehto, jota ilman käyttöjärjestelmä tunnistaa vain fyysiset prosessorit. Toiseksi ACPI-ominaisuuksia käytetään ilmoittamaan käyttöjärjestelmälle ylimääräisten loogisten prosessorien läsnäolosta. Siksi, jotta Hyper-Threading voidaan ottaa käyttöön, ACPI-vaihtoehto on otettava käyttöön CMOS-asetuksissa ja ACPI-tuella varustettu HAL (Hardware Abstraction Layer) on asennettava myös itse käyttöjärjestelmälle. Onneksi Windows 2000:ssa HAL:n vaihtaminen Standard PC:stä (tai MPS Uni-/Multiprocessor PC:stä) ACPI Uni-/Multiprocessor PC:ksi on helppoa - "tietokoneohjaimen" vaihtaminen laitehallinnassa. Samaan aikaan vain Windows XP:lle laillisella tavalla ACPI HAL:iin siirtyminen tarkoittaa järjestelmän asentamista uudelleen olemassa olevan asennuksen päälle.

Mutta nyt kaikki valmistelut on tehty, ja Windows 2000 Promme uskoo jo vakaasti, että se toimii kahden prosessorin järjestelmässä (vaikka itse asiassa siihen on asennettu vain yksi prosessori). Nyt on perinteisesti aika päättää testaustavoitteista. Joten haluamme:

  • Arvioi Hyper-Threadingin vaikutus eri luokkien sovellusten suorituskykyyn.
  • Vertaa tätä vaikutusta toisen prosessorin asennuksen vaikutukseen.
  • Tarkista, kuinka "kohtuullisesti" resurssit on allokoitu aktiiviselle loogiselle prosessorille, kun toinen LP on käyttämättömänä.

Suorituksen arvioimiseksi otimme käyttöön joukon lukijoille jo tuttuja sovelluksia, joita käytetään työasemajärjestelmien testaamiseen. Aloitetaan lopusta ja tarkistetaan loogisten prosessorien "tasa-arvo". Se on hyvin yksinkertaista: ensin suoritamme testit yhdellä prosessorilla Hyper-Threadingin ollessa pois käytöstä, ja sitten toistamme prosessin Hyper-Threadingin ollessa käytössä ja käyttämällä vain toista kahdesta loogisesta suorittimesta (Task Managerin avulla). Koska tässä tapauksessa olemme kiinnostuneita vain suhteellisista arvoista, kaikkien testien tulokset viedään "isompi sitä parempi" -muotoon ja normalisoidaan (yksi prosessorijärjestelmän ilmaisimet ilman Hyper-Threadingia otetaan yhdeksi).

No, kuten näet, Intelin lupaukset täyttyvät tässä: vain yhdellä aktiivisella säikeellä kummankin LP:n suorituskyky on täsmälleen sama kuin fyysisen suorittimen suorituskyky ilman Hyper-Threadingia. Ei-aktiivinen LP (ja sekä LP0 että LP1) on todellakin keskeytetty, ja jaetut resurssit, sikäli kuin voidaan päätellä saaduista tuloksista, siirretään kokonaan aktiiviselle LP:lle käytettäväksi.

Siksi teemme ensimmäisen johtopäätöksen: kaksi loogista prosessoria ovat itse asiassa samanarvoisia, ja Hyper-Threadingin käyttöönotto "ei häiritse" yhden säikeen työtä (mikä sinänsä ei ole huono). Katsotaan nyt, "auttaako tämä sisällyttäminen", ja jos on, missä ja miten?

Renderöinti. 3D-mallinnuspakettien 3D Studio MAX 4.26, Lightwave 7b ja A|W Maya 4.0.1 neljän testin tulokset yhdistetään yhdeksi kaavioksi niiden samankaltaisuuden vuoksi.

Kaikissa neljässä tapauksessa (Lightwave - kaksi eri kohtausta) prosessorin kuormitus pysyy lähes aina 100 prosentissa yhden prosessorin ollessa kytkettynä pois päältä Hyper-Threadingin ollessa pois päältä. Kuitenkin, kun Hyper-Threading on käytössä, kohtauslaskelmat nopeutuvat (tämän seurauksena meillä oli jopa vitsi CPU kuormitus yli 100 %). Kolmessa testissä Hyper-Threadingin 14-18 %:n suorituskyvyn lisäys on näkyvissä - toisaalta ei paljon verrattuna toiseen prosessoriin, mutta toisaalta melko hyvä, kun otetaan huomioon tämän efektin "vapaa" luonne. . Yhdessä kahdesta Lightwave-testistä suorituskyvyn kasvu on lähes nolla (ilmeisesti tämä johtuu tämän sovelluksen erityispiirteistä, jotka ovat täynnä outoja asioita). Mutta negatiivista tulosta ei ole missään, ja havaittava lisäys kolmessa muussa tapauksessa on rohkaisevaa. Ja tämä siitä huolimatta, että rinnakkaiset renderöintiprosessit tekevät samanlaista työtä eivätkä välttämättä pysty samanaikaisesti käyttämään fyysisen suorittimen resursseja parhaalla tavalla.

Photoshop ja MP3-koodaus. GOGO-no-coda 2.39c -koodekki on yksi harvoista, jotka tukevat SMP:tä, ja sen suorituskyky on kasvanut huomattavasti 34 % kahden prosessorin ansiosta. Samaan aikaan Hyper-Threadingin vaikutus on tässä tapauksessa nolla (emme pidä 3 %:n eroa merkittävänä). Mutta Photoshop 6.0.1 -testissä (skripti, joka koostuu suuresta joukosta komentoja ja suodattimia), hidastuminen näkyy, kun Hyper-Threading on käytössä, vaikka toinen fyysinen suoritin lisää tässä tapauksessa 12 % suorituskykyä. Tämä on itse asiassa ensimmäinen tapaus, jossa Hyper-Threading aiheuttaa suorituskyvyn laskun...

Ammattimainen OpenGL. On jo pitkään tiedetty, että SPEC ViewPerf ja monet muut OpenGL-sovellukset hidastavat usein SMP-järjestelmiä.

OpenGL ja kaksi prosessoria: miksi he eivät ole ystäviä

Olemme monta kertaa artikkeleissamme kiinnittäneet lukijoiden huomion siihen, että kahden prosessorin alustat osoittavat erittäin harvoin mitään merkittävää etua yhden prosessorin alustoihin verrattuna ammattimaisia ​​OpenGL-testejä suoritettaessa. Ja mikä parasta, on usein tapauksia, joissa toisen prosessorin asentaminen päinvastoin huonontaa järjestelmän suorituskykyä dynaamisten kolmiulotteisten kohtausten renderöinnissa.

Emme tietenkään olleet ainoita, jotka huomasivat tämän oudon. Jotkut testaajat yksinkertaisesti välttelivät tätä tosiasiaa – esimerkiksi esittivät vertailutulokset SPEC ViewPerf -testeistä vain kahden prosessorin kokoonpanoille, välttäen näin selityksiä "miksi kahden prosessorin järjestelmä on hitaampi?" Toiset tekivät kaikenlaisia ​​fantastisia oletuksia välimuistin koherenssista, tarpeesta ylläpitää sitä, tästä aiheutuvista yleiskustannuksista jne. Ja jostain syystä kukaan ei ollut yllättynyt siitä, että esimerkiksi prosessorit olivat jostain syystä kärsimättömiä seuraamaan koherenssia nimenomaan ikkunoidussa OpenGL-renderöinnissa ("laskennallisessa" olemuksessaan se ei juuri eroa muista laskennallisista tehtävistä).

Itse asiassa selitys on mielestämme paljon yksinkertaisempi. Kuten tiedät, sovellus voi toimia kahdella prosessorilla nopeammin kuin yhdellä, jos:

  • on enemmän kuin kaksi tai useampia samanaikaisesti suoritettavia ohjelmasäietiä;
  • nämä säikeet eivät häiritse toistensa suorittamista - ne eivät esimerkiksi kilpaile jaetusta resurssista, kuten ulkoinen tallennustila tai verkkoliitäntää.

Katsotaanpa nyt yksinkertaistettua, miltä OpenGL-renderöinti näyttää kahden säikeen suorittamana. Jos sovellus "näkee" kaksi prosessoria, luo kaksi OpenGL-renderöintisäiettä, niin kullekin niistä luodaan OpenGL-sääntöjen mukaan oma gl-kontekstinsa. Vastaavasti jokainen säie hahmontuu omaan gl-kontekstiinsa. Mutta ongelmana on, että ikkunassa, jossa kuva näytetään, vain yksi gl-konteksti voi olla ajan tasalla kerrallaan. Vastaavasti säikeet tässä tapauksessa yksinkertaisesti "yksi kerrallaan" näyttävät luodun kuvan ikkunassa ja tekevät kontekstistaan ​​vuorotellen nykyisen. Tarpeetonta sanoa, että tällainen "kontekstin lomittelu" voi olla erittäin kallista yleiskustannusten kannalta?

Lisäksi näytämme esimerkkinä kaavioita kahden suorittimen käytöstä useissa sovelluksissa, jotka näyttävät OpenGL-kohtauksia. Kaikki mittaukset suoritettiin alustalla seuraavalla kokoonpanolla:

  • yksi tai kaksi Intel Xeon 2,2 GHz (Hyper-Threading pois käytöstä);
  • 512 Mt RDRAM-muistia;
  • Supermicro P4DC6+ -emolevy;
  • ASUS V8200 Deluxe -näytönohjain (NVidia GeForce3, 64 Mt DDR SDRAM, Detonator 21.85 -ohjaimet);
  • Windows 2000 Professional SP2;
  • videotila 1280x1024x32 bpp, 85 Hz, Vsync pois käytöstä.

Sininen ja punainen näyttävät CPU 0:n ja CPU 1:n kuormituskaaviot. Keskellä oleva viiva on lopullinen suorittimen käyttökaavio. Kolme kuvaajaa vastaavat kahta kohtausta 3D Studio MAX 4.26:sta ja osasta SPEC ViewPerf -testiä (AWadvs-04).


Suorittimen käyttö: animaatio 3D Studio MAX 4.26 - Anibal (manipulaattoreiden kanssa).max


Suorittimen käyttö: Animaatio 3D Studio MAX 4.26 - Rabbit.max


Suorittimen käyttö: SPEC ViewPerf 6.1.2 - AWadvs-04

Sama kuva toistuu monissa muissa OpenGL:ää käyttävissä sovelluksissa. Kaksi prosessoria ei häiritse ollenkaan, ja prosessorin kokonaiskäyttö on 50-60 prosentin tasolla. Samanaikaisesti yhden prosessorin järjestelmässä kaikissa näissä tapauksissa suorittimen käyttö pysyy varmasti 100 prosentissa.

Siksi ei ole yllättävää, että monet OpenGL-sovellukset eivät kiihdy kovinkaan paljon kaksoisjärjestelmissä. No, sillä tosiasialla, että ne joskus jopa hidastuvat, on mielestämme täysin looginen selitys.

Voidaan todeta, että kahdella loogisella CPU:lla suorituskyvyn pudotus on vieläkin merkittävämpi, mikä on ymmärrettävää: kaksi loogista prosessoria häiritsee toisiaan samalla tavalla kuin kaksi fyysistä. Mutta niiden kokonaissuorituskyky luonnollisesti osoittautuu heikommaksi, joten kun Hyper-Threading on käytössä, se heikkenee jopa enemmän kuin yksinkertaisesti kahden fyysisen suorittimen ollessa käynnissä. Tulos on ennustettavissa ja johtopäätös on yksinkertainen: Hyper-Threading, kuten "oikea" SMP, on vasta-aiheinen OpenGL:lle.

CAD-sovellukset. Edellisen johtopäätöksen vahvistavat kahden CAD-testin tulokset - SPECapc SolidEdge V10:lle ja SPECapc SolidWorksille. Näiden Hyper-Threading-testien grafiikkasuorituskyky on samanlainen (vaikka SolidEdge V10:n SMP-järjestelmä näyttää hieman parempia tuloksia). Mutta prosessoria kuormittavien CPU_Score-testien tulokset saavat sinut ajattelemaan: 5-10 % lisäys SMP:stä ja 14-19 % hidastuminen Hyper-Threadingista.

Mutta loppujen lopuksi Intel myöntää rehellisesti, että Hyper-Threading voi aiheuttaa suorituskyvyn heikkenemistä joissakin tapauksissa - esimerkiksi käytettäessä tyhjiä odotussilmukoita. Voimme vain olettaa, että tämä on syy (SolidEdge- ja SolidWorks-koodin yksityiskohtainen tutkimus ei kuulu tämän artikkelin piiriin). Loppujen lopuksi kaikki tietävät CAD-sovelluskehittäjien konservatiivisuuden, koska he pitävät parempana todistettua luotettavuutta ja joilla ei ole erityistä kiirettä kirjoittaa koodia uudelleen ottaen huomioon uudet ohjelmointitrendit.

Yhteenveto eli "Huomio, oikea kysymys"

Hyper-Threading toimii, siitä ei ole epäilystäkään. Tekniikka ei tietenkään ole universaali: on sovelluksia, jotka kärsivät Hyper-Threadingista, ja jos tämä tekniikka leviää laajalle, niitä on toivottavaa muokata. Mutta eikö sama tapahtunut MMX:n ja SSE:n kanssa ja tapahtuu edelleen SSE2:n kanssa?

Tämä herättää kuitenkin kysymyksen tämän tekniikan soveltuvuudesta todellisuutemme. Hyper-Threadingilla varustetun Xeonin yhden prosessorin järjestelmän hylkäämme välittömästi (tai sallimme sen vain väliaikaisena, kunnes toinen prosessori on hankittu): edes 30 prosentin suorituskyvyn lisäys ei oikeuta hintaa millään tavalla - silloin olisi parempi ostaa tavallinen Pentium 4. Suorittimia on jäljellä kahdesta ja enemmän.

Kuvitellaan nyt, että ostamme kaksiprosessorisen Xeon-järjestelmän (esimerkiksi Windows 2000/XP Professionalin kanssa). Kaksi prosessoria on asennettu, Hyper-Threading on käytössä, BIOS löytää jopa neljä loogista prosessoria, nyt olemme lähdössä... Stop. Mutta kuinka monta prosessoria käyttöjärjestelmämme näkee? Aivan oikein, kaksi. Vain kaksi, koska sitä ei yksinkertaisesti ole suunniteltu enempään. Nämä ovat kaksi fyysistä prosessoria, eli kaikki toimii täsmälleen samalla tavalla kuin Hyper-Threadingin ollessa pois käytöstä - ei hitaammin (kaksi "lisää" loogista suoritinta yksinkertaisesti pysähtyy), mutta ei nopeammin (testattu lisätestejä, emme esitä tuloksia, koska ne ovat täysin ilmeisiä). Hmm, ei kovin kivaa...

Mitä jää jäljelle? Eikö meidän todellakaan pitäisi asentaa Advanced Server tai .NET Server työasemaamme? Ei, järjestelmä asentaa, tunnistaa kaikki neljä loogista prosessoria ja toimii. Mutta palvelimen käyttöjärjestelmä näyttää hieman oudolta työasemalla, lievästi sanottuna (puhumattakaan taloudellisista näkökohdista). Ainoa järkevä tapaus on, kun kahden prosessorin Xeon-järjestelmämme toimii palvelimena (ainakin jotkut kokoajat ovat epäröimättä jo alkaneet tuottaa palvelimia työaseman Xeon-prosessoreille). Mutta kaksoistyöasemissa, joissa on vastaava käyttöjärjestelmä, Hyper-Threadingin soveltuvuus on edelleen kyseenalainen. Intel kannattaa nyt aktiivisesti käyttöjärjestelmän lisensointia, joka perustuu fyysisten prosessorien määrään loogisten prosessorien sijaan. Neuvottelut jatkuvat edelleen, ja yleisesti ottaen paljon riippuu siitä, nähdäänkö työasemakäyttöjärjestelmä, joka tukee neljää prosessoria.

No, palvelimien kanssa kaikki käy yksinkertaisesti. Esimerkiksi Windows 2000 Advanced Server, joka on asennettu kaksiprosessoriseen Xeon-järjestelmään, jossa Hyper-Threading on käytössä, "näkee" neljä loogista prosessoria ja toimii sujuvasti siinä. Arvioidaksemme, mitä Hyper-Threading voi tehdä palvelinjärjestelmissä, esittelemme Intel Microprocessor Software Labsin tulokset kaksiprosessoriisille Xeon MP -järjestelmille ja useille Microsoftin palvelinsovelluksille.

Kahden prosessorin palvelimen suorituskyvyn lisäys 20-30 % "ilmaiseksi" on enemmän kuin houkuttelevaa (etenkin verrattuna "todellisen" 4-prosessorisen järjestelmän ostamiseen).

Joten käy ilmi, että nykyinen hetki Hyper-Threadingin käytännön soveltuvuus on mahdollista vain palvelimissa. Työasemien ongelma riippuu käyttöjärjestelmän lisensointia koskevasta päätöksestä. Vaikka vielä yksi Hyper-Threading-sovellus on aivan todellinen - jos myös työpöytäprosessorit saavat tukea tälle tekniikalle. Esimerkiksi (kuvitellaan), miksi järjestelmä, jossa on Pentium 4 Hyper-Threading-tuki, johon on asennettu SMP-tuella varustettu Windows 2000/XP Professional?.. Tässä ei kuitenkaan ole mitään uskomatonta: innostuneet Intel-kehittäjät lupaavat Hyper-Threadingin laajan käyttöönoton - palvelimista työpöytä- ja mobiilijärjestelmiin.

Ensimmäiset usealla ytimisellä varustetut tietokoneprosessorit ilmestyivät kuluttajamarkkinoille jo 2000-luvun puolivälissä, mutta monet käyttäjät eivät vieläkään täysin ymmärrä, mitä moniytimiset prosessorit ovat ja kuinka ymmärtää niiden ominaisuuksia.

Artikkelin "Koko totuus moniytimisistä prosessoreista" videomuoto

Yksinkertainen selitys kysymykselle "mikä on prosessori"

Mikroprosessori on yksi tietokoneen tärkeimmistä laitteista. Tämä kuiva virallinen nimi lyhennetään usein yksinkertaisesti "prosessoriksi"). Prosessori on mikropiiri, jonka pinta-ala on verrattavissa tulitikkurasiaan. Jos haluat, prosessori on kuin auton moottori. Tärkein osa, mutta ei ainoa. Autossa on myös pyörät, kori ja soitin ajovaloilla. Mutta prosessori (kuten auton moottori) määrää "koneen" tehon.

Monet ihmiset kutsuvat prosessoria järjestelmäyksiköksi - "laatikoksi", jonka sisällä kaikki PC-komponentit sijaitsevat, mutta tämä on pohjimmiltaan väärin. Järjestelmäyksikkö on tietokoneen kotelo ja kaikki sen komponentit - kovalevy, RAM ja monia muita yksityiskohtia.

Prosessoritoiminto - Laske. Ei ole niin tärkeää mitkä. Tosiasia on, että kaikki tietokonetyö perustuu yksinomaan aritmeettisiin laskelmiin. Yhteen-, kerto-, vähennys- ja muu algebra - kaikki tämä tapahtuu mikropiirillä, jota kutsutaan "prosessoriksi". Ja tällaisten laskelmien tulokset näytetään näytöllä pelin, Word-tiedoston tai vain työpöydän muodossa.

Laskelmia suorittavan tietokoneen pääosa on mikä on prosessori.

Mikä on prosessoriydin ja moniytiminen

Prosessorivuosisatojen alusta lähtien nämä mikropiirit olivat yksiytimistä. Ydin on itse asiassa prosessori. Sen pää- ja pääosa. Prosessoreissa on myös muita osia - esimerkiksi "jalat"-koskettimet, mikroskooppiset "sähköjohdot" - mutta laskelmista vastaava lohko on ns. prosessorin ydin. Kun prosessoreista tuli hyvin pieniä, insinöörit päättivät yhdistää useita ydintä yhden prosessorin "koteloon".

Jos kuvittelet prosessorin asunnona, niin ydin on tällaisen asunnon suuri huone. Yksiö on yksi prosessoriydin (iso huone-halli), keittiö, kylpyhuone, käytävä... Kaksio on kuin kaksi prosessoriydintä muiden huoneiden ohella. Tarjolla on kolmen, neljän ja jopa 12 huoneen asuntoja. Sama pätee prosessoreihin: yhden ”huoneisto”-kiteen sisällä voi olla useita ”huone”ytimiä.

Moniytiminen- Tämä on yhden prosessorin jakaminen useisiin identtisiin toimintolohkoihin. Lohkojen määrä on yhden prosessorin sisällä olevien ytimien lukumäärä.

Moniytimisprosessorien tyypit

On olemassa väärinkäsitys: "mitä enemmän ytimiä prosessorissa on, sitä parempi." Juuri näin markkinoijat, joille maksetaan tällaisen väärinkäsityksen luomisesta, yrittävät esittää asian. Heidän tehtävänsä on myydä halpoja prosessoreita, lisäksi korkeammalla hinnalla ja valtavia määriä. Mutta itse asiassa ytimien määrä on kaukana prosessorien pääominaisuuksista.

Palataan prosessorien ja huoneistojen analogiaan. Kaksio on kalliimpi, mukavampi ja arvostetumpi kuin yksiö. Mutta vain, jos nämä asunnot sijaitsevat samalla alueella, samalla tavalla varusteltuina ja niiden peruskorjaus on samanlainen. On heikkoja neliytimiä (tai jopa 6-ytimiä) prosessoreita, jotka ovat huomattavasti heikompia kuin kaksiytimiset. Mutta siihen on vaikea uskoa: tietysti se on taikuutta suuria lukuja 4 tai 6 "joitakin" kahta vastaan. Juuri näin kuitenkin tapahtuu hyvin, hyvin usein. Näyttää samalta neljän huoneen asunnolta, mutta raunioina, ilman remonttia, täysin syrjäisellä alueella - ja jopa ylellisen kaksio-huoneiston hinnalla aivan keskustassa.

Kuinka monta ydintä prosessorissa on?

varten henkilökohtaiset tietokoneet ja kannettavat tietokoneet, yhden ytimen prosessoreita ei ole valmistettu kunnolla useaan vuoteen, ja niitä on hyvin harvoin myynnissä. Ydinten lukumäärä alkaa kahdesta. Neljä ydintä - yleensä nämä ovat kalliimpia prosessoreita, mutta niistä on hyötyä. On myös 6-ytiminen prosessoreita, jotka ovat uskomattoman kalliita ja paljon vähemmän hyödyllisiä käytännössä. Harvat tehtävät voivat parantaa näiden hirviömäisten kristallien suorituskykyä.

AMD teki kokeen luoda 3-ytiminen prosessoreita, mutta tämä on jo menneisyyttä. Se meni melko hyvin, mutta heidän aikansa on kulunut.

Muuten, AMD yritys tuottaa myös moniytimisprosessoreita, mutta pääsääntöisesti ne ovat huomattavasti heikompia kuin Intelin kilpailijat. Totta, niiden hinta on paljon alhaisempi. Sinun tarvitsee vain tietää, että AMD:n 4 ydintä osoittautuvat melkein aina huomattavasti heikommaksi kuin samat Intelin 4 ydintä.

Nyt tiedät, että prosessoreissa on 1, 2, 3, 4, 6 ja 12 ydintä. Yksiytiminen ja 12-ytiminen prosessorit ovat erittäin harvinaisia. Kolmen ytimen prosessorit ovat menneisyyttä. Kuuden ytimen prosessorit ovat joko erittäin kalliita (Intel) tai eivät niin vahvoja (AMD), että maksat enemmän numerosta. 2- ja 4-ytimet ovat yleisimpiä ja käytännöllisimpiä laitteita heikoimmasta tehokkaimpaan.

Moniytimisen prosessorin taajuus

Yksi ominaisuuksista tietokoneen prosessorit- niiden taajuus. Samat megahertsit (ja useammin gigahertsit). Taajuus on tärkeä ominaisuus, mutta ei suinkaan ainoa. Kyllä, ei ehkä tärkein. Esimerkiksi kaksiytiminen 2 gigahertsin prosessori on tehokkaampi tarjonta kuin sen yksiytiminen 3 gigahertsin vastine.

On täysin väärin olettaa, että prosessorin taajuus on yhtä suuri kuin sen ytimien taajuus kerrottuna ytimien lukumäärällä. Yksinkertaisesti sanottuna 2-ydinprosessorin, jonka ydintaajuus on 2 GHz, kokonaistaajuus ei missään tapauksessa ole yhtä suuri kuin 4 gigahertsiä! Edes käsitettä "yhteinen taajuus" ei ole olemassa. Tässä tapauksessa CPU-taajuus täsmälleen 2 GHz. Ei kerto-, yhteen- tai muita operaatioita.

Ja jälleen "muutamme" prosessoreista asuntoja. Jos kunkin huoneen kattojen korkeus on 3 metriä, asunnon kokonaiskorkeus pysyy samana - silti samat kolme metriä, eikä senttimetriä korkeampi. Riippumatta siitä, kuinka monta huonetta tällaisessa asunnossa on, näiden huoneiden korkeus ei muutu. Samoin prosessorin ytimien kellonopeus. Se ei laske eikä kerro.

Virtuaalinen moniytiminen tai Hyper-Threading

Niitä on myös virtuaalisia prosessoriytimiä. Intel-prosessorien Hyper-Threading-tekniikka saa tietokoneen "ajattelemaan", että kaksiytimisessä prosessorissa on itse asiassa 4 ydintä. Hyvin samanlainen kuin yksi ja ainoa kovalevy jaettu useisiin loogisiin- paikalliset asemat C, D, E ja niin edelleen.

HyperSäiketys on erittäin hyödyllinen tekniikka useisiin tehtäviin.. Joskus käy niin, että prosessorin ydin on vain puolet käytetty, ja sen koostumuksessa olevat muut transistorit ovat tyhjäkäynnillä. Insinöörit keksivät tavan saada nämä "joutotyöläiset" toimimaan myös jakamalla jokainen fyysinen prosessoriydin kahteen "virtuaaliseen" osaan. On kuin melko suuri huone olisi jaettu väliseinällä kahdeksi.

Onko tässä mitään käytännön järkeä? temppu kanssa virtuaalisia ytimiä ? Useimmiten - kyllä, vaikka kaikki riippuu erityisistä tehtävistä. Näyttää siltä, ​​että huoneita on enemmän (ja mikä tärkeintä, niitä käytetään järkevämmin), mutta huoneen pinta-ala ei ole muuttunut. Toimistoissa tällaiset väliseinät ovat uskomattoman hyödyllisiä, ja myös joissakin asuinhuoneistoissa. Muissa tapauksissa ei ole mitään järkeä osioida huonetta (jakaa prosessorin ydin kahdeksi virtuaaliseksi).

Huomaa, että kallein ja tehokkaat prosessorit luokkaaYdini7 on pakollinenHyperLangoitus. Niissä on 4 fyysistä ydintä ja 8 virtuaalista ydintä. Osoittautuu, että 8 laskennallista säiettä toimii samanaikaisesti yhdellä prosessorilla. Halvemmat mutta myös tehokkaat Intel-luokan prosessorit Ydini5 koostuvat neljä ydintä, mutta Hyper Threading ei toimi siellä. Osoittautuu, että Core i5 toimii 4 laskentasäikeellä.

Prosessorit Ydini3- tyypillinen "keskiarvo", sekä hinnassa että suorituskyvyssä. Niissä on kaksi ydintä, eikä niissä ole aavistustakaan Hyper-Threadingista. Kaiken kaikkiaan se käy ilmi Ydini3 vain kaksi laskennallista säiettä. Sama pätee suoraan budjettikiteisiin Pentium jaCeleron. Kaksi ydintä, ei hypersäikeistystä = kaksi säiettä.

Tarvitseeko tietokone monta ydintä? Kuinka monta ydintä prosessori tarvitsee?

Kaikki nykyaikaiset prosessorit ovat riittävän tehokkaita yleisiin tehtäviin. Netin selaaminen, kirjeenvaihto sosiaalisissa verkostoissa ja sähköpostilla, toimistotyöt Word-PowerPoint-Excel: heikko Atom, budjetti Celeron ja Pentium sopivat tähän työhön, puhumattakaan tehokkaammasta Core i3:sta. Kaksi ydintä on enemmän kuin tarpeeksi normaaliin työhön. Prosessori kanssa suuri määrä ytimet eivät lisää merkittävästi nopeutta.

Peleissä kannattaa kiinnittää huomiota prosessoreihinYdini3 taii5. Pikemminkin pelin suorituskyky ei riipu prosessorista, vaan näytönohjaimesta. Harvoin peli vaatii Core i7:n täyden tehon. Siksi uskotaan, että pelit vaativat enintään neljä prosessoriydintä, ja useammin kaksi ydintä sopii.

Vakavaan työhön, kuten erityiseen insinööriohjelmat, videokoodaus ja muut resurssit vaativat tehtävät Tarvitaan todella tuottavia laitteita. Usein täällä ei käytetä vain fyysisiä, vaan myös virtuaalisia prosessoriytimiä. Mitä enemmän laskentasäikeitä, sitä parempi. Ja sillä ei ole väliä, kuinka paljon tällainen prosessori maksaa: ammattilaisille hinta ei ole niin tärkeä.

Onko moniytimisistä prosessoreista mitään hyötyä?

Ehdottomasti kyllä. Samaan aikaan tietokoneella on useita tehtäviä - ainakin Windows-käyttö (muuten, nämä ovat satoja erilaisia ​​​​tehtäviä) ja samalla elokuvan toistaminen. Musiikin toistaminen ja Internetin selaaminen. Tekstieditorin työ ja mukana musiikki. Kaksi prosessoriydintä - ja tämä on itse asiassa kaksi prosessoria - selviytyy erilaisista tehtävistä nopeammin kuin yksi. Kaksi ydintä tekee tästä hieman nopeampaa. Neljä on jopa nopeampi kuin kaksi.

Moniytimisen tekniikan ensimmäisinä vuosina kaikki ohjelmat eivät pystyneet toimimaan edes kahdella prosessoriytimellä. Vuoteen 2014 mennessä suurin osa sovelluksista ymmärtää ja voi hyödyntää useita ytimiä. Kahden ytimen prosessorin tehtävien käsittelynopeus harvoin kaksinkertaistuu, mutta suorituskyky kasvaa lähes aina.

Siksi syvälle juurtunut myytti, että ohjelmat eivät voi käyttää useita ytimiä, on vanhentunutta tietoa. Ennen oli näin, mutta nykyään tilanne on parantunut dramaattisesti. Useiden ytimien edut ovat kiistattomat, se on tosiasia.

Kun prosessorissa on vähemmän ytimiä, se on parempi

Sinun ei pitäisi ostaa prosessoria käyttämällä väärää kaavaa "mitä enemmän ytimiä, sitä parempi". Tämä on väärin. Ensinnäkin 4-, 6- ja 8-ytimiset prosessorit ovat huomattavasti kalliimpia kuin kaksiytimiset vastineensa. Huomattava hinnankorotus ei aina ole perusteltua suorituskyvyn kannalta. Esimerkiksi, jos 8-ytiminen prosessori osoittautuu vain 10% nopeammaksi kuin prosessori, jossa on vähemmän ytimiä, mutta on 2 kertaa kalliimpi, tällaista ostoa on vaikea perustella.

Toiseksi, mitä enemmän ytimiä prosessorissa on, sitä ahneempi se kuluttaa energiaa. Ei ole mitään järkeä ostaa paljon kalliimpaa kannettavaa, jossa on 4-ytiminen (8-säikeinen) Core i7, jos kannettava tietokone käsittelee vain käsittelyä tekstitiedostoja, Internetin selaaminen ja niin edelleen. Kaksiytimisessä (4 säiettä) Core i5:ssä ei ole eroa, ja klassinen Core i3, jossa on vain kaksi laskentasäiettä, ei ole huonompi kuin sen merkittävämpi "kollega". Ja tällaisesta akusta tehokas kannettava tietokone toimii paljon vähemmän kuin taloudellinen ja vaatimaton Core i3.

Moniytimiset prosessorit matkapuhelimissa ja tableteissa

Useiden laskentaytimien muoti yhden prosessorin sisällä koskee myös mobiililaitteita. Älypuhelimet ja tabletit, joissa on suuri määrä ytimiä, eivät käytä lähes koskaan mikroprosessorien kaikkia ominaisuuksia. Kaksiytimiset kannettavat tietokoneet toimivat joskus hieman nopeammin, mutta 4 ja vielä enemmän 8 ydintä on suoraan sanottuna liikaa. Akku kuluu täysin jumalattomasti, ja tehokkaat tietokonelaitteet ovat yksinkertaisesti käyttämättömänä. Johtopäätös - puhelimien, älypuhelimien ja tablettien moniytimiset prosessorit ovat vain kunnianosoitus markkinoinnille, eivät kiireellinen tarve. Tietokoneet ovat vaativampia laitteita kuin puhelimet. He todella tarvitsevat kaksi prosessoriydintä. Neljä ei haittaa. 6 ja 8 - ylimäärä normaaleja tehtäviä ja jopa peleissä.

Kuinka valita moniytiminen prosessori ja olla tekemättä virhettä?

Tämän päivän artikkelin käytännön osa koskee vuotta 2014. On epätodennäköistä, että mikään muuttuisi merkittävästi tulevina vuosina. Puhumme vain Intelin valmistamista prosessoreista. Kyllä, AMD tarjoaa hyviä ratkaisuja, mutta ne ovat vähemmän suosittuja ja vaikeammin ymmärrettäviä.

Huomaa, että taulukko perustuu vuosien 2012–2014 prosessoreihin. Vanhemmilla näytteillä on erilaisia ​​ominaisuuksia. Emme myöskään maininneet harvinaisia ​​prosessorivaihtoehtoja, esimerkiksi yksiytimistä Celeronia (sellaisia ​​on nykyäänkin, mutta tämä on epätyypillinen vaihtoehto, jota ei juuri ole edustettuna markkinoilla). Sinun ei pitäisi valita prosessoreita pelkästään niiden sisällä olevien ytimien lukumäärän perusteella - on muita, enemmän tärkeitä ominaisuuksia. Taulukko helpottaa vain moniytimisen prosessorin valintaa, mutta tietty malli (ja jokaisessa luokassa on kymmeniä) tulee ostaa vasta, kun olet perehtynyt huolellisesti niiden parametreihin: taajuus, lämmönpoisto, tuotanto, välimuisti koko ja muut ominaisuudet.

CPU Ydinten lukumäärä Laskennalliset säikeet Tyypillinen sovellus
Atomi 1-2 1-4 Vähätehoiset tietokoneet ja netbookit. Atom-prosessorien tavoitteena on minimoida virrankulutus. Niiden tuottavuus on minimaalinen.
Celeron 2 2 Halvimmat prosessorit pöytäkoneille ja kannettaville tietokoneille. Suorituskyky riittää toimistotehtäviin, mutta nämä eivät ole pelisuorittimia ollenkaan.
Pentium 2 2 Intel-prosessorit ovat yhtä edullisia ja heikkoja kuin Celeron. Erinomainen valinta toimistotietokoneisiin. Pentiumit on varustettu hieman suuremmalla välimuistilla ja joskus hieman paremmalla suorituskyvyllä Celeroniin verrattuna
Core i3 2 4 Kaksi melko tehokasta ydintä, joista jokainen on jaettu kahteen virtuaaliseen "prosessoriin" (Hyper-Threading). Nämä ovat jo melko tehokkaita suorittimia ei liian korkeilla hinnoilla. Hyvä valinta koti- tai tehokkaalle toimistotietokoneelle ilman erityisiä suorituskykyvaatimuksia.
Core i5 4 4 Täydelliset 4-ytimiset Core i5 -prosessorit ovat melko kalliita. Heidän suorituskykynsä puuttuu vain vaativimmista tehtävistä.
Core i7 4-6 8-12 Tehokkaimmat, mutta erityisen kalliit Intel-prosessorit. Yleensä ne ovat harvoin nopeampia kuin Core i5, ja vain joissakin ohjelmissa. Niille ei yksinkertaisesti ole vaihtoehtoja.

Lyhyt tiivistelmä artikkelista "Koko totuus moniytimisistä prosessoreista". Muistiinpanon sijaan

  • CPU:n ydin- hänen komponentti. Todella, itsenäinen prosessori kotelon sisällä. Kaksiytiminen prosessori - kaksi prosessoria yhdessä.
  • Moniytiminen verrattavissa huoneiston huoneiden määrään. Kaksio ovat parempia kuin yksiö, mutta vain muiden ominaisuuksien ollessa samat (asunnon sijainti, kunto, pinta-ala, kattokorkeus).
  • Väite, että mitä enemmän ytimiä prosessorissa on, sitä parempi se onmarkkinointitemppu, täysin väärä sääntö. Loppujen lopuksi asunto valitaan paitsi huoneiden lukumäärän, myös sen sijainnin, remontin ja muiden parametrien perusteella. Sama koskee useita prosessorin sisällä olevia ytimiä.
  • On olemassa "virtuaalinen" moniytiminen— Hyper-Threading-tekniikka. Tämän tekniikan ansiosta jokainen "fyysinen" ydin on jaettu kahteen "virtuaaliseen" ytimeen. Osoittautuu, että 2-ytimisessä prosessorissa, jossa on Hyper-Threading, on vain kaksi todellista ydintä, mutta nämä prosessorit käsittelevät samanaikaisesti 4 laskentasäiettä. Tämä on todella hyödyllinen ominaisuus, mutta 4-säikeistä prosessoria ei voida pitää neliytimisenä.
  • Intelin työpöytäprosessoreille: Celeron - 2 ydintä ja 2 säiettä. Pentium - 2 ydintä, 2 lankaa. Core i3 - 2 ydintä, 4 säiettä. Core i5 - 4 ydintä, 4 säiettä. Core i7 - 4 ydintä, 8 säiettä. Kannettava tietokone (mobiili) Prosessori Intel niillä on eri määrä ytimiä/lankoja.
  • varten kannettavat tietokoneet Energiatehokkuus (käytännössä akun kesto) on usein tärkeämpää kuin ytimien lukumäärä.
  • Opetusohjelma

Tässä artikkelissa yritän kuvata terminologiaa, jota käytetään kuvaamaan järjestelmiä, jotka pystyvät suorittamaan useita ohjelmia rinnakkain, eli moniytiminen, moniprosessori, monisäikeinen. Eri tyypit IA-32 CPU:n rinnakkaisuus ilmestyi eri aikoina ja hieman epäjohdonmukaisessa järjestyksessä. Kaikessa tässä on melko helppoa hämmentyä, varsinkin kun otetaan huomioon, että käyttöjärjestelmät piilottavat huolellisesti yksityiskohtia vähemmän kehittyneiltä sovellusohjelmilta.

Artikkelin tarkoituksena on osoittaa, että kaikilla mahdollisilla moniprosessori-, moniytimis- ja konfiguraatioilla monisäikeiset järjestelmät niillä ajettaville ohjelmille luodaan mahdollisuuksia sekä abstraktioon (erojen huomioimatta jättämiseen) että erityispiirteiden huomioimiseen (kyky selvittää konfiguraatio ohjelmallisesti).

Varoitus artikkelissa olevista ®, ™ -merkeistä

Kommenttini selittää, miksi yritysten työntekijöiden tulisi käyttää tekijänoikeusilmoituksia julkisessa viestinnässä. Tässä artikkelissa minun piti käyttää niitä melko usein.

CPU

Tietenkin vanhin, useimmin käytetty ja kiistanalainen termi on "prosessori".

IN moderni maailma Prosessori on se, mitä ostamme kauniissa vähittäismyyntilaatikossa tai ei niin mukavassa OEM-paketissa. Jakamaton kokonaisuus, joka on asetettu emolevyn liitäntään. Vaikka liitintä ei olisi eikä sitä voi poistaa, eli jos se on tiukasti juotettu, se on yksi siru.

Mobiilijärjestelmissä (puhelimet, tabletit, kannettavat tietokoneet) ja useimmissa pöytätietokoneissa on yksi prosessori. Työasemissa ja palvelimissa on joskus kaksi tai useampi prosessori yhdellä emolevyllä.

Useiden suoritinten tukeminen yhdessä järjestelmässä vaatii useita suunnittelumuutoksia. Niitä on ainakin tarjottava fyysinen yhteys(tarjoa useita pistorasioita emolevylle), ratkaise prosessorin tunnistusongelmia (katso myöhemmin tässä artikkelissa sekä edellinen huomautukseni), muistin käytön koordinointiin ja keskeytystoimitukseen (keskeytysohjaimen on kyettävä reitittämään keskeytykset useille prosessoreille) ja tietysti käyttöjärjestelmän tuki. Valitettavasti en löytänyt dokumentaarista mainintaa ensimmäisen moniprosessorijärjestelmän luomisesta Intel-prosessoreille, mutta Wikipedia väittää, että Sequent Computer Systems toimitti ne jo vuonna 1987 käyttämällä Intel 80386 -prosessoreita Tuki useille siruille yhdessä järjestelmässä. alkaen Intel® Pentiumista.

Jos prosessoreita on useita, jokaisella niistä on oma liitin levyllä. Jokaisella niistä on täydelliset itsenäiset kopiot kaikista resursseista, kuten rekistereistä, suorituslaitteista, välimuistista. Heillä on yhteinen muisti - RAM. Muisti voidaan yhdistää niihin monin eri tavoin ja melko ei-triviaaleilla tavoilla, mutta tämä on erillinen tarina, joka ei kuulu tämän artikkelin piiriin. Tärkeää on, että suoritettaville ohjelmille tulee joka tapauksessa luoda illuusio homogeenisesta jaetusta muistista, joka on käytettävissä kaikilta järjestelmän prosessoreilta.


Valmiina lentoon! Intel® Desktop Board D5400XS

Ydin

Historiallisesti Intel IA-32:n moniytiminen ilmestyi myöhemmin kuin Intel® HyperThreading, mutta loogisessa hierarkiassa se tulee seuraavaksi.

Vaikuttaa siltä, ​​​​että jos järjestelmässä on enemmän prosessoreita, sen suorituskyky on korkeampi (tehtävissä, jotka voivat käyttää kaikkia resursseja). Kuitenkin, jos niiden välisen viestinnän kustannukset ovat liian korkeat, kaikki rinnakkaisuudesta saatavat hyödyt kuolevat yhteisen tiedon siirron pitkillä viiveillä. Juuri tätä havaitaan moniprosessorijärjestelmissä - sekä fyysisesti että loogisesti ne ovat hyvin kaukana toisistaan. varten tehokasta viestintää Tällaisissa olosuhteissa on tarpeen keksiä erikoisväyliä, kuten Intel® QuickPath Interconnect. Energiankulutusta, loppuratkaisun kokoa ja hintaa tämä kaikki ei tietenkään vähennä. Komponenttien korkean integroinnin pitäisi tulla apuun - piirit, jotka suorittavat osia rinnakkaisohjelma, sinun on vedettävä ne lähemmäs toisiaan, mieluiten yhden kristallin päällä. Toisin sanoen yhden prosessorin tulisi järjestää useita ytimet, identtisiä toistensa kanssa kaikessa, mutta toimivat itsenäisesti.

Ensimmäiset Intelin moniytimiset IA-32-prosessorit esiteltiin vuonna 2005. Sen jälkeen keskimääräinen ytimien määrä palvelin-, työpöytä- ja nyt mobiilialustoissa on kasvanut tasaisesti.

Toisin kuin kaksi yhden ytimen prosessoria samassa järjestelmässä jakaa vain muistia, kaksi ydintä voi myös jakaa välimuistit ja muut muistiin liittyvät resurssit. Useimmiten ensimmäisen tason välimuistit pysyvät yksityisinä (jokaisella ytimellä on oma), kun taas toinen ja kolmas taso voivat olla joko jaettuja tai erillisiä. Tämän järjestelmäorganisaation avulla voit vähentää tiedon toimitusviiveitä viereisten ytimien välillä, varsinkin jos ne työskentelevät yhteisen tehtävän parissa.


Mikrovalokuva neliytimisestä Intel-prosessorista koodinimeltään Nehalem. Yksittäiset ytimet on korostettu, jaettu välimuisti kolmas taso sekä QPI-linkit muihin prosessoreihin ja yhteiseen muistiohjaimeen.

Hypersäie

Noin 2002 asti ainoa tapa saada IA-32-järjestelmä, joka pystyy ajamaan kahta tai useampaa ohjelmaa rinnakkain, oli käyttää moniprosessorijärjestelmiä. Intel® Pentium® 4 sekä Xeon-linja koodinimeltään Foster (Netburst) esiteltiin uutta tekniikkaa- hypersäikeet tai hypersäikeet, - Intel® HyperThreading (jäljempänä HT).

Ei mitään uutta auringon alla. HT on erikoistapaus mitä kirjallisuudessa kutsutaan simultaneous multithreading (SMT). Toisin kuin "oikeat" ytimet, jotka ovat täydellisiä ja itsenäisiä kopioita, HT:n tapauksessa vain osa sisäisistä solmuista, jotka ovat ensisijaisesti vastuussa arkkitehtonisen tilan - rekisterien - tallentamisesta, monistetaan yhdessä prosessorissa. Datan järjestämisestä ja käsittelystä vastaavat toimeenpanosolmut pysyvät yksittäisinä, ja niitä käyttää milloin tahansa enintään yksi säikeistä. Kuten ytimet, hypersäikeet jakavat välimuistit, mutta taso riippuu tietystä järjestelmästä.

En yritä selittää kaikkia SMT-mallien ja erityisesti HT-mallien etuja ja haittoja. Kiinnostunut lukija saattaa löytää yksityiskohtaista keskustelua teknologiaa monissa lähteissä ja tietysti Wikipediassa. Huomautan kuitenkin seuraavan tärkeän kohdan, joka selittää nykyiset rajoitukset hypersäikeiden lukumäärälle todellisissa tuotteissa.

Viestirajoitukset
Missä tapauksissa "epäreilujen" moniytimien esiintyminen HT:n muodossa on perusteltua? Jos yksi sovellussäie ei pysty lataamaan kaikkia ytimen sisällä olevia suoritussolmuja, ne voidaan "lainata" toiselle säikeelle. Tämä on tyypillistä sovelluksille, joissa pullonkaula ei ole laskennassa, vaan tiedonhaussa, eli usein syntyy välimuistin menetyksiä ja joutuu odottamaan tietojen toimittamista muistista. Tänä aikana ydin ilman HT:ta pakotetaan olemaan tyhjäkäynnillä. HT:n läsnäolon avulla voit nopeasti vaihtaa vapaat suoritussolmut toiseen arkkitehtoniseen tilaan (koska se on monistettu) ja suorittaa sen käskyt. Tämä on erikoistapaus latenssipiilotukseksi kutsutusta tekniikasta, kun yksi pitkä operaatio, jonka aikana hyödyllisiä resursseja tyhjäkäynnillä, peitettynä muiden tehtävien rinnakkaisella suorittamisella. Jos sovelluksella on jo korkea ytimen resurssien käyttöaste, hypersäikeiden läsnäolo ei salli kiihdytystä - tässä tarvitaan "rehellisiä" ytimiä.

Tyypillisissä yleiskäyttöisiin konearkkitehtuureihin suunnitelluissa työpöytä- ja palvelinsovelluksissa on mahdollisuus rinnakkaisuuteen HT:n avulla. Tämä potentiaali on kuitenkin nopeasti käytetty. Ehkä tästä syystä lähes kaikissa IA-32-prosessoreissa laitteiston hypersäikeiden määrä ei ylitä kahta. Tyypillisissä skenaarioissa hyöty kolmen tai useamman hypersäikeen käytöstä olisi pieni, mutta meistin koon, sen virrankulutuksen ja kustannusten menetys on merkittävä.

Erilainen tilanne havaitaan tyypillisissä videokiihdyttimillä suoritettavissa tehtävissä. Siksi näille arkkitehtuureille on ominaista SMT-tekniikan käyttö suuremmalla määrällä säikeitä. Koska Intel® Xeon Phi -apuprosessorit (julkaistu vuonna 2010) ovat ideologisesti ja genealogisesti melko lähellä näytönohjainkortteja, niissä saattaa olla neljä Hyperthreading jokaisessa ytimessä - IA-32:lle ainutlaatuinen konfiguraatio.

Looginen prosessori

Kolmesta kuvatusta rinnakkaisuuden "tasosta" (prosessorit, ytimet, hypersäikeet) osa tai jopa kaikki saattavat puuttua tietystä järjestelmästä. Tähän vaikuttaa BIOS-asetukset(moniydin ja monisäike on poistettu käytöstä erikseen), mikroarkkitehtuuriominaisuudet (esimerkiksi HT puuttui Intel® Core™ Duosta, mutta se palautettiin Nehalemin julkaisun myötä) ja järjestelmätapahtumat (moniprosessoripalvelimet voivat sammua epäonnistuneet prosessorit, jos vikoja havaitaan, ja jatkavat "lentämistä" jäljellä oleville prosessoreille). Miten tämä monitasoinen samanaikaisuuden eläintarha näkyy käyttöjärjestelmälle ja viime kädessä sovellussovelluksille?

Lisäksi mukavuuden vuoksi merkitsemme prosessorien, ytimien ja säikeiden lukumäärää tietyssä järjestelmässä kolmella ( x, y, z), missä x on prosessorien lukumäärä, y- kunkin prosessorin ytimien lukumäärä ja z- hypersäikeiden lukumäärä kussakin ytimessä. Tästä eteenpäin kutsun tätä kolmeksi topologia- vakiintunut termi, jolla ei ole juurikaan tekemistä matematiikan alan kanssa. Työ s = xyz määrittää kutsuttujen entiteettien määrän loogiset prosessorit järjestelmät. Se määrittelee rinnakkain suoritettavien jaetun muistijärjestelmän sovellusprosessien riippumattomien kontekstien kokonaismäärän, jotka käyttöjärjestelmän on pakko ottaa huomioon. Sanon "pakotettu", koska se ei voi ohjata kahden prosessin suoritusjärjestystä eri loogisissa prosessoreissa. Tämä pätee myös hypersäikeisiin: vaikka ne toimivat "peräkkäin" samassa ytimessä, tietyn järjestyksen määrää laitteisto, eivätkä ohjelmat voi havaita tai ohjata sitä.

Useimmiten käyttöjärjestelmä piilottaa loppusovelluksilta sen järjestelmän fyysisen topologian ominaisuudet, jossa se toimii. Esimerkiksi seuraavat kolme topologiaa: (2, 1, 1), (1, 2, 1) ja (1, 1, 2) - käyttöjärjestelmä edustaa kahta loogista prosessoria, vaikka ensimmäisessä niistä on kaksi prosessoria, toinen - kaksi ydintä ja kolmas - vain kaksi lankaa.


Windows Task Manager näyttää 8 loogista prosessoria; mutta kuinka paljon se on prosessoreissa, ytimissä ja hypersäikeissä?


Linux-top näyttää 4 loogista prosessoria.

Tämä on varsin kätevää tekijöille sovellussovelluksia- Heidän ei tarvitse käsitellä laitteen ominaisuuksia, jotka ovat usein heille merkityksettömiä.

Topologian ohjelmistomäärittely

Tietenkin topologian abstraktio yhdeksi määräksi loogisia prosessoreita joissakin tapauksissa luo tarpeeksi aihetta hämmennykseen ja väärinkäsityksiin (kiihkeissä Internet-kiistoissa). Tietokonesovellukset, jotka haluavat puristaa maksimaalisen suorituskyvyn laitteistosta, vaativat yksityiskohtaista hallintaa sen suhteen, mihin niiden säikeet sijoitetaan: lähemmäksi toisiaan vierekkäisissä hypersäikeissä tai päinvastoin kauempana eri prosessorit. Viestinnän nopeus loogisten prosessorien välillä samassa ytimessä tai prosessorissa on paljon suurempi kuin prosessorien välisen tiedonsiirron nopeus. Myös työmuistin organisoinnin heterogeenisyyden mahdollisuus mutkistaa kuvaa.

Tietoa koko järjestelmän topologiasta sekä kunkin loogisen prosessorin sijainnista IA-32:ssa on saatavilla CPUID-käskyn avulla. Ensimmäisten moniprosessorijärjestelmien syntymisen jälkeen loogisen prosessorin tunnistusjärjestelmää on laajennettu useita kertoja. Tähän mennessä sen osat ovat CPUID:n arkkeissa 1, 4 ja 11. Mitä arkkia kannattaa tarkastella, voit määrittää seuraavasta artikkelista otetusta vuokaaviosta:

En kyllästy teitä kaikilla yksityiskohdilla täällä. yksittäisiä osia tämä algoritmi. Jos kiinnostusta löytyy, tämän artikkelin seuraava osa voidaan omisttaa tälle. Viittaan kiinnostuneen lukijan puoleen, joka tutkii tätä asiaa mahdollisimman yksityiskohtaisesti. Tässä kuvailen ensin lyhyesti mitä APIC on ja miten se liittyy topologiaan. Harkitse seuraavaksi työskentelyä taulukon 0xB (yksitoista desimaalilukuina), joka on käytössä nykyinen hetki on viimeinen sana"apico-rakennuksessa".

APIC-tunnus
Paikallinen APIC (Advanced Programmable Interrupt Controller) on laite (nyt osa prosessoria), joka vastaa tiettyyn loogiseen prosessoriin tulevien keskeytysten käsittelystä. Jokaisella loogisella prosessorilla on oma APIC. Ja jokaisella niistä järjestelmässä on oltava yksilöllinen APIC ID -arvo. Tätä numeroa käyttävät keskeytysohjaimet osoitteisiin lähettäessään viestejä ja kaikki muut (esimerkiksi käyttöjärjestelmä) loogisten prosessorien tunnistamiseen. Tämän keskeytysohjaimen erittely on kehittynyt Intelin sirut 8259 PIC Dual PIC:n, APIC:n ja xAPIC:n kautta x2APIC:iin.

Tällä hetkellä APIC ID:hen tallennetun numeron leveys on saavuttanut täydet 32 ​​bittiä, vaikka aiemmin se oli rajoitettu 16:een ja vielä aikaisemmin - vain 8 bittiin. Nykyään vanhojen aikojen jäänteet ovat hajallaan CPUID:ssä, mutta CPUID.0xB.EDX palauttaa kaikki 32 bittiä APIC ID:stä. Jokaisella loogisella prosessorilla, joka suorittaa itsenäisesti CPUID-käskyn, palautetaan eri arvo.

Perhesuhteiden selkeyttäminen
APIC ID -arvo itsessään ei kerro mitään topologiasta. Jotta voit selvittää, mitkä kaksi loogista prosessoria sijaitsevat fyysisen prosessorin sisällä (eli ne ovat "veli"hypersäikeitä), mitkä kaksi ovat saman prosessorin sisällä ja mitkä ovat täysin erilaisia ​​​​prosessoreita, sinun on verrattava niiden APIC ID -arvoja. Suhteen asteesta riippuen jotkut heidän osistaan ​​osuvat yhteen. Nämä tiedot sisältyvät CPUID.0xB-alilistoihin, jotka on operandikoodattu ECX:ssä. Jokainen niistä kuvaa tilannetta bittikenttä yksi topologiatasoista EAX:ssa (tarkemmin sanottuna bittien määrä, jotka on siirrettävä oikealle APIC ID:ssä alempien topologiatasojen poistamiseksi), sekä tämän tason tyyppi - hypersäie, ydin tai prosessori - ECX:ssä.

Saman ytimen sisällä sijaitsevissa loogisissa prosessoreissa kaikki APIC ID -bitit täsmäävät, paitsi ne, jotka kuuluvat SMT-kenttään. Samassa prosessorissa sijaitseville loogisille prosessoreille kaikki bitit paitsi Core- ja SMT-kentät. Koska CPUID.0xB:n aliarkkien määrä voi kasvaa, voimme tämän järjestelmän avulla tukea topologioiden kuvausta suuremmalla määrällä tasoja, jos tarvetta tulevaisuudessa ilmenee. Lisäksi on mahdollista ottaa käyttöön välitasoja olemassa olevien tasojen väliin.

Tärkeä seuraus tämän järjestelmän organisoinnista on, että järjestelmän kaikkien loogisten prosessorien kaikkien APIC-tunnusten joukossa voi olla "reikiä", ts. ne eivät mene peräkkäin. Esimerkiksi moniytimisessä prosessorissa, jossa HT on pois päältä, kaikki APIC ID:t voivat osoittautua parillisiksi, koska vähiten merkitsevä bitti, joka vastaa hypersäikeen numeron koodaamisesta, on aina nolla.

Huomaan, että CPUID.0xB ei ole ainoa tiedonlähde käyttöjärjestelmän käytettävissä olevista loogisista prosessoreista. Luettelo kaikista sen käytettävissä olevista prosessoreista sekä niiden APIC ID -arvot on koodattu MADT ACPI -taulukkoon.

Käyttöjärjestelmät ja topologia

Käyttöjärjestelmät tarjoavat tietoa loogisten prosessorien topologiasta sovelluksille, jotka käyttävät omia rajapintojaan.

Linuxissa topologiatiedot sisältyvät /proc/cpuinfo-pseudotiedostoon sekä dmidecode-komennon ulostuloon. Alla olevassa esimerkissä suodatan cpuinfon sisällön jossain neliytimisessä järjestelmässä ilman HT:tä, jättäen vain topologiaan liittyvät merkinnät:

Piilotettu teksti

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "prosessori\|fyysinen\ tunnus\|sisarukset\|ydin\|ytimet\|apicid" prosessori: 0 fyysistä tunnusta: 0 sisarusta: 4 ydintä: 0 prosessorin ydintä: 2 apicid: 0 alkuperäinen apicid: 0 prosessori: 1 fyysinen tunnus: 0 sisaruksia: 4 ydintunnus: 0 prosessoriytimiä: 2 apicid: 1 alkuperäinen apicid: 1 prosessori: 2 fyysinen tunnus: 0 sisaruksia: 4 ydintunnus: 1 prosessoriytimiä: 2 apicid: 2 alkuperäinen apicid: 2 prosessori: 3 fyysinen tunnus: 0 sisaruksia: 4 ydintunnus: 1 prosessoriytimiä: 2 apicid: 3 alkuapitsid: 3

FreeBSD:ssä topologia raportoidaan sysctl-mekanismin kautta muuttujassa kern.sched.topology_spec XML-muodossa:

Piilotettu teksti

user@host:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 THREAD ryhmäSMT ryhmä 2, 3 THREAD ryhmäSMT ryhmä 4, 5 THREAD ryhmäSMT ryhmä 6, 7 THREAD ryhmäSMT ryhmä

MS Windows 8:ssa topologiatiedot näkyvät Task Managerissa.

Moniytimiset prosessorit ovat keskusprosessoreita, jotka sisältävät enemmän kuin kaksi laskentaydintä. Tällaiset ytimet voivat sijaita joko yhdessä kotelossa tai yhdellä prosessorisirulla.

Mikä on moniytiminen prosessori?

Useimmiten moniytimiset prosessorit tarkoittavat keskusprosessoreita, joissa useita laskentaytimiä on integroitu yhdelle sirulle (eli ne sijaitsevat yhdellä piisirulla).

Tyypillisesti kellotaajuus moniytimisissä prosessoreissa on tarkoituksella alhaisempi. Tämä tehdään virrankulutuksen vähentämiseksi säilyttäen samalla vaadittu prosessorin suorituskyky. Jokainen ydin on täysimittainen mikroprosessori, jolle on ominaista kaikkien ominaisuudet nykyaikaiset prosessorit- Se käyttää monitasoista välimuistia, tukee epäjärjestyksessä koodin suorittamista ja vektorikäskyjä.

Hyper-ketjutus

Moniytimisprosessorien ytimet voivat tukea SMT-tekniikkaa, jonka avulla voit suorittaa useita laskentasäikeitä ja luoda useita loogisia prosessoreita kunkin ytimen perusteella. Intelin valmistamissa prosessoreissa tätä tekniikkaa kutsutaan "hyper-threadingiksi". Sen ansiosta voit kaksinkertaistaa loogisten prosessorien määrän verrattuna fyysisten sirujen määrään. Tätä tekniikkaa tukevissa mikroprosessoreissa jokainen fyysinen prosessori pystyy ylläpitämään kahden säikeen tilaa samanaikaisesti. Käyttöjärjestelmässä tämä näyttää siltä, ​​että sillä olisi kaksi loogista prosessoria. Jos jommankumman työssä on tauko (esimerkiksi se odottaa tietojen vastaanottamista muistista), toinen looginen prosessori alkaa suorittaa omaa säiettään.

Moniytimisprosessorien tyypit

Moniytimiset prosessorit on jaettu useisiin tyyppeihin. Ne voivat tukea tai olla tukematta jaetun välimuistin käyttöä. Ydinten välinen kommunikaatio toteutetaan periaatteella käyttämällä jaettua väylää, verkkoa point-to-point linkeillä, verkkoa kytkimellä tai käyttämällä jaettua välimuistia.

Toimintaperiaate

Useimmat nykyaikaiset moniytimisprosessorit toimivat seuraavan kaavion mukaisesti. Jos käynnissä oleva sovellus tukee monisäikeistystä, se voi pakottaa prosessorin suorittamaan useita tehtäviä samanaikaisesti. Jos tietokoneessasi on esimerkiksi 4-ytiminen prosessori, jossa on kellotaajuus 1,8 GHz, ohjelma voi "lataa" kaikki neljä ydintä työllä kerralla, kun taas prosessorin kokonaistaajuus on 7,2 GHz. Jos useita ohjelmia on käynnissä samanaikaisesti, jokainen niistä voi käyttää osaa prosessorin ytimistä, mikä myös lisää tietokoneen suorituskykyä.

Monet käyttöjärjestelmät tukevat monisäikeistystä, joten moniytimisprosessorien käyttö voi nopeuttaa tietokonettasi jopa sovelluksissa, jotka eivät tue monisäikeistystä. Jos tarkastelemme vain yhden sovelluksen toimintaa, moniytimisprosessorien käyttö on perusteltua vain, jos tämä sovellus on optimoitu monisäikeiseen. Muuten moniytimisen prosessorin nopeus ei eroa tavallisen prosessorin nopeudesta, ja joskus se toimii jopa hitaammin.