Koti / Sekalaista / Tuki hyperkierteitysteknologialle. Intelin Hyper-Threading-tekniikka. Tuottavuus ei koskaan riitä

Tuki hyperkierteitysteknologialle. Intelin Hyper-Threading-tekniikka. Tuottavuus ei koskaan riitä

Käyttäjät, jotka ovat ainakin kerran määrittäneet BIOSia, ovat luultavasti jo huomanneet, että siellä on Intel Hyper Threading -parametri, joka on monille käsittämätön. Monet eivät tiedä mitä tämä tekniikka on ja mihin tarkoitukseen sitä käytetään. Yritetään selvittää, mitä Hyper Threading on ja kuinka voit ottaa tämän tuen käyttöön. Yritämme myös selvittää, mitä etuja se antaa tietokoneelle. tämä asetus. Periaatteessa tässä ei ole mitään vaikeaa ymmärtää.

Intel Hyper Threading: mikä se on?
Jos et mene syvälle tietokoneterminologian viidakkoon, vaan kirjoitat sen yksinkertaisella kielellä tätä tekniikkaa suunniteltu lisäämään CPU:n samanaikaisesti käsittelemien komentojen määrää. Nykyaikaiset prosessorisirut käyttävät yleensä vain 70% käytettävissä olevista laskentaominaisuuksista. Loput jäävät niin sanotusti varaukseen. Mitä tulee tietovirran käsittelyyn, useimmissa tapauksissa käytetään vain yhtä säiettä huolimatta siitä, että järjestelmä käyttää moniytimistä prosessoria.

Työn perusperiaatteet
Keskusprosessorin ominaisuuksien lisäämiseksi kehitettiin erityinen Hyper Threading -tekniikka. Tämän tekniikan avulla on helppo jakaa yksi komentovirta kahdeksi. On myös mahdollista lisätä toinen stream olemassa olevaan streamiin. Vain tällainen virta on virtuaalinen eikä toimi fyysisellä tasolla. Tämän lähestymistavan avulla voit lisätä merkittävästi prosessorin suorituskykyä. Vastaavasti koko järjestelmä alkaa toimia nopeammin. Suorittimen suorituskyvyn kasvu voi vaihdella melko paljon. Tästä keskustellaan erikseen. Hyper Threading -tekniikan kehittäjät kuitenkin itse väittävät, että se ei ole täysimittainen ydin. Joissakin tapauksissa tämän tekniikan käyttö on täysin perusteltua. Jos tiedät Hyper Threading -prosessorien olemuksen, tulos ei kestä kauan.

Historiallinen viittaus
Sukellaanpa hieman tämän kehityksen historiaan. Hyper Threading -tuki ilmestyi aluksi vain Intel Pentium 4 -prosessoreissa, mutta myöhemmin tämän tekniikan käyttöönottoa jatkettiin Intel Core iX -sarjassa (X tarkoittaa tässä prosessorisarjaa). On huomattava, että jostain syystä se puuttuu Core 2 -prosessorisirujen riviltä. Totta, tuottavuuden kasvu oli silloin melko heikkoa: jossain 15-20 prosentin tasolla. Tämä osoitti, että prosessorissa ei ollut tarvittavaa prosessointitehoa ja luotu tekniikka oli käytännössä aikaansa edellä. Nykyään Hyper Threading -teknologian tuki on jo saatavilla lähes kaikissa nykyaikaisissa siruissa. Keskusprosessorin tehon lisäämiseksi prosessi itse käyttää vain 5 % kiteen pinnasta jättäen tilaa käskyjen ja tietojen käsittelylle.

Kysymys konflikteista ja suorituskyvystä
Kaikki tämä on varmasti hyvä, mutta joissakin tapauksissa tietojen käsittelyssä saattaa esiintyä työn hidastamista. Tämä johtuu enimmäkseen ns. haaran ennustusmoduulista ja riittämättömästä välimuistin koosta, kun sitä ladataan jatkuvasti uudelleen. Jos puhumme päämoduulista, niin sisään Tämä tapaus tilanne kehittyy siten, että joissain tapauksissa ensimmäinen säiettä saattaa vaatia dataa toiselta, jota ei välttämättä sillä hetkellä käsitellä tai jotka ovat käsittelyjonossa. Yhtä yleisiä ovat myös tilanteet, joissa suorittimen ytimellä on erittäin vakava kuorma, ja päämoduuli jatkaa siitä huolimatta tietojen lähettämistä sille. Jotkut ohjelmat ja sovellukset, kuten resurssiintensiiviset online-pelit, voivat hidastua vakavasti vain siksi, että niitä ei ole optimoitu Hyper Threading -tekniikan käyttöä varten. Mitä tapahtuu peleille? Käyttäjän tietokonejärjestelmä puolestaan ​​yrittää optimoida tietovirrat sovelluksesta palvelimelle. Ongelmana on, että peli ei osaa jakaa tietovirtoja itsenäisesti ja heittää kaiken yhteen kasaan. Yleisesti ottaen sitä ei ehkä yksinkertaisesti ole suunniteltu tähän. Joskus kaksiytimisissä prosessoreissa suorituskyvyn lisäys on huomattavasti suurempi kuin 4-ytimisissä prosessoreissa. Heillä ei vain ole prosessointitehoa.

Kuinka ottaa Hyper Threading käyttöön BIOSissa?
Olemme jo selvittäneet hieman siitä, mitä Hyper Threading -tekniikka on, ja tutustunut sen kehityshistoriaan. Olemme tulleet lähelle ymmärtämistä, mitä Hyper Threading -tekniikka on. Kuinka aktivoida tämä tekniikka käytettäväksi prosessorissa? Täällä kaikki tehdään yksinkertaisesti. Sinun on käytettävä BIOS-hallintaalijärjestelmää. Osajärjestelmään syötetään Del, F1, F2, F3, F8, F12, F2+Del jne. näppäimillä. Jos käytät Sony Vaio -kannettavaa, niillä on erityinen tulo, kun käytetään omistettua ASSIST-näppäintä. Jos käyttämäsi prosessori tukee Hyper Threading -tekniikkaa, BIOS-asetuksissa pitäisi olla erityinen asetusrivi. Useimmissa tapauksissa se näyttää Hyper Threading -tekniikalta, ja joskus se näyttää Functionilta. Alijärjestelmän kehittäjästä ja BIOS-versiosta riippuen tämän parametrin asetus voidaan sisällyttää joko päävalikkoon tai lisäasetuksiin. Ota tämä tekniikka käyttöön avaamalla asetusvalikko ja asettamalla arvoksi Käytössä. Tämän jälkeen sinun on tallennettava tehdyt muutokset ja käynnistettävä järjestelmä uudelleen.

Miksi Hyper Threading on hyödyllinen?
Lopuksi haluaisin puhua Hyper Threading -tekniikan käytön eduista. Mitä varten tämä kaikki on? Miksi on tarpeen lisätä prosessorin tehoa käsiteltäessä tietoja? Resurssiintensiivisten sovellusten ja ohjelmien parissa työskentelevien käyttäjien ei tarvitse selittää mitään. Monet varmaan tietävät, että graafiset, matemaattiset, suunnitteluohjelmistopaketit vaativat paljon järjestelmäresursseja työssään. Tästä johtuen koko järjestelmä kuormitetaan niin paljon, että se alkaa hidastua hirveästi. Tämän estämiseksi on suositeltavaa ottaa käyttöön Hyper Threading -tuki.

Monet Intel-prosessorit sisältävät moduuleja Hyper tuki-Threading Technology, jonka kehittäjien idean mukaan pitäisi auttaa lisäämään sirun suorituskykyä ja nopeuttamaan PC:tä kokonaisuudessaan. Mikä on tämän amerikkalaisen yrityksen ratkaisun erityispiirteet? Kuinka voit hyödyntää Hyper-Threadingia?

Tekniikan perusteet

Katsotaanpa Hyper-Threadingin tärkeimpiä yksityiskohtia. Mikä tämä tekniikka on? Sen on kehittänyt Intel ja se esiteltiin ensimmäisen kerran yleisölle vuonna 2001. Sen luomisen tarkoituksena oli lisätä palvelimien suorituskykyä. Hyper-Threadingin pääperiaate on prosessorilaskelmien jakaminen useille säikeille. Lisäksi tämä on mahdollista, vaikka vain yksi ydin on asennettu vastaavaan mikropiiriin (jos puolestaan ​​​​on 2 tai useampia ja prosessorin säikeet ovat jo hajautettuja, tekniikka täydentää onnistuneesti tätä mekanismia).

PC-pääsirun toiminnan varmistaminen useissa säikeissä tehdään luomalla kopioita arkkitehtonisista tiloista laskelmien aikana. Tässä tapauksessa käytetään samoja resursseja sirulla. Jos sovellus käyttää asianmukaista kykyä, käytännössä merkittävät toiminnot suoritetaan paljon nopeammin. On myös tärkeää, että kyseistä tekniikkaa tukee tietokoneen syöttö/lähtöjärjestelmä - BIOS.

Hyper-Threadingin käyttöönotto

Jos tietokoneeseen asennettu prosessori tukee asianmukaista standardia, se aktivoituu yleensä automaattisesti. Mutta joissakin tapauksissa sinun on suoritettava tarvittavat toimenpiteet manuaalisesti, jotta Hyper-Threading-tekniikka toimii. Miten se otetaan käyttöön? Erittäin yksinkertainen.

Sinun on syötettävä BIOS-pääliittymä. Tätä varten sinun on painettava tietokoneen käynnistyksen alussa DEL, joskus - F2, F10, harvemmin - muita näppäimiä, mutta haluttu näkyy aina yhdellä näytöllä näkyvällä tekstirivillä heti sen jälkeen. PC:n käynnistäminen. BIOS-liittymästä sinun on löydettävä kohde Hyper-Threading: sitä tukevissa I / O-järjestelmän versioissa se sijaitsee yleensä näkyvällä paikalla. Kun olet valinnut sopivan vaihtoehdon, paina Enter ja aktivoi se ja merkitse se Käytössä. Jos tämä tila on jo asetettu, Hyper-Threading-tekniikka toimii. Voit käyttää kaikkia sen etuja. Kun olet aktivoinut tekniikan asetuksissa, sinun tulee tallentaa kaikki merkinnät BIOSiin valitsemalla Save and Exit Setup. Tämän jälkeen tietokone käynnistyy uudelleen tilassa, jossa prosessori toimii Hyper-Theading-tuen kanssa. Vastaavasti Hyper-Threading on poissa käytöstä. Voit tehdä tämän valitsemalla toisen vaihtoehdon vastaavasta kohdasta - Pois käytöstä ja tallentamalla asetukset.

Tutkittuaan Hyper-Threadingin käyttöönottoa ja tämän tekniikan poistamista käytöstä, katsotaanpa tarkemmin sen ominaisuuksia.

Suorittimet, joissa on Hyper Threading -tuki

Ensimmäinen prosessori, jolla yrityksen konsepti toteutettiin joidenkin lähteiden mukaan, on Intel Xeon MP, joka tunnetaan myös nimellä Foster MP. Tämä siru on monilta arkkitehtonisesti samanlainen kuin Pentium 4, joka myös myöhemmin toteutti kyseisen tekniikan. Myöhemmin monisäikeinen laskentaominaisuus otettiin käyttöön Xeon-palvelinprosessoreissa, joissa oli Prestonia-ydin.

Jos puhumme Hyper-Threadingin nykyisestä yleisyydestä - mitkä "ammattilaiset" tukevat sitä? Suosituimpia tämän tyyppisiä siruja ovat Core- ja Xeon-perheisiin kuuluvat. On myös tietoa, että samanlaisia ​​algoritmeja on toteutettu prosessoreissa, kuten Itanium ja Atom.

Tutkittuaan perustiedot Hyper-Threadingista, prosessoreista sen tuella, katsotaanpa merkittävimmät tosiasiat tekniikan kehityksen historiasta.

Kehityshistoria

Kuten edellä totesimme, Intel esitteli kyseessä olevan konseptin yleisölle vuonna 2001. Mutta ensimmäiset askeleet teknologian luomisessa otettiin 90-luvun alussa. Amerikkalaisen yrityksen insinöörit huomasivat, että PC-prosessorien resursseja ei käytetä täysimääräisesti suoritettaessa useita toimintoja.

Kuten Intelin asiantuntijat laskivat, mikropiiriä ei käytetä aktiivisesti merkittäviä aikavälejä - lähes suurimman osan ajasta - käyttäjän PC-työskentelyn aikana noin 30%. Asiantuntijoiden mielipiteet tästä luvusta ovat hyvin erilaisia ​​- joku pitää sitä selvästi aliarvioituina, toiset ovat täysin samaa mieltä amerikkalaisten kehittäjien opinnäytetyöstä.

Useimmat IT-asiantuntijat olivat kuitenkin yhtä mieltä siitä, että vaikka prosessorin kapasiteetista ei ole 70 %, mutta erittäin merkittävä osa niistä.

Kehittäjien päätehtävä

Intel on päättänyt korjata tämän tilanteen laadullisesti uudella lähestymistavalla varmistaakseen tärkeimpien PC-sirujen tehokkuuden. Ehdotettiin teknologian luomista, joka edistäisi prosessorien ominaisuuksien aktiivisempaa käyttöä. Vuonna 1996 Intelin asiantuntijat aloittivat sen käytännön kehittämisen.

Amerikkalaisen yrityksen konseptin mukaan prosessori, joka käsittelee tietoja yhdestä ohjelmasta, voisi ohjata käyttämättömät resurssit toimimaan toisen sovelluksen (tai nykyisen komponentin, mutta jolla on erilainen rakenne ja joka vaatii lisäresurssien käyttöä) kanssa. Vastaava algoritmi olettaa myös tehokkaan vuorovaikutuksen muiden PC-laitteistokomponenttien - RAM:n, piirisarjan ja ohjelmien - kanssa.

Intel onnistui ratkaisemaan ongelman. Aluksi tekniikkaa kutsuttiin Willametteksi. Vuonna 1999 se otettiin käyttöön joidenkin prosessorien arkkitehtuurissa, ja sen testaus aloitettiin. Pian tekniikka sai modernin nimensä - Hyper-Threading. On vaikea sanoa, mikä se tarkalleen oli - pelkkä tuotemerkin uudelleenmuutos vai perustavanlaatuiset muutokset. Tiedämme jo lisää faktoja tekniikan julkisuudesta ja sen toteutuksesta Intel-prosessorien eri malleissa. Nykyään yleisten kehitysnimien joukossa on Hyper-Threading Technology.

Yhteensopivuus tekniikan kanssa

Kuinka hyvin Hyper-Threading-teknologian tuki on toteutettu käyttöjärjestelmissä? Voidaan huomata, että jos puhumme modernista Windows-versiot, silloin käyttäjällä ei ole ongelmia hyödyntää täysimääräisesti Intel Hyper-Threading Technologyn etuja. Tietysti on myös erittäin tärkeää, että I / O-järjestelmä tukee tekniikkaa - puhuimme tästä edellä.

Ohjelmisto- ja laitteistotekijät

Mitä tulee käyttöjärjestelmän vanhempiin versioihin - Windows 98, NT ja suhteellisen vanhentunut XP: ACPI-tuki on välttämätön ehto Hyper-Threadingin yhteensopimiselle. Jos sitä ei ole toteutettu käyttöjärjestelmässä, tietokone ei tunnista kaikkia vastaavien moduulien muodostamia laskentavirtoja. Huomaa, että Windows XP kokonaisuutena varmistaa kyseisen tekniikan etujen hyödyntämisen. On myös erittäin toivottavaa, että monisäikeiset algoritmit toteutetaan PC:n omistajan käyttämissä sovelluksissa.

Joskus saatat tarvita tietokoneen - jos asennat siihen Hyper-Threading-tuella varustettuja prosessoreita niiden sijaan, jotka oli asennettu siihen alun perin ja jotka eivät olleet yhteensopivia tekniikan kanssa. Kuten käyttöjärjestelmissä, ei kuitenkaan ole erityisiä ongelmia, jos käyttäjällä on nykyaikainen PC tai ainakin vastaavat laitteistokomponentit ensimmäisiin Hyper Threading -prosessoreihin, kuten edellä totesimme, toteutettu Core-linjalla ja mukautettu. siihen emolevyjen piirisarjat tukevat täysin piirin vastaavia toimintoja.

Kiihtyvyyskriteerit

Jos tietokone ei ole laitteisto- ja ohjelmistokomponenttien tasolla yhteensopiva Hyper-Threadingin kanssa, tämä tekniikka voi teoriassa jopa hidastaa sen toimintaa. Tämä tilanne on saanut jotkut IT-ammattilaiset epäilemään Intelin ratkaisun mahdollisuuksia. He päättivät, että kyseessä ei ollut teknologinen harppaus, vaan markkinointiliike, joka on Hyper Threading -konseptin taustalla, joka arkkitehtuurinsa vuoksi ei pysty merkittävästi nopeuttamaan PC:tä. Mutta Intelin insinöörit hälvenivät nopeasti kriitikkojen epäilykset.

Joten perusedellytykset tekniikan menestyksekkäälle käytölle:

Tuki I/O-järjestelmän Hyper-Threadingille;

Emolevyn yhteensopivuus vastaavan tyyppisen prosessorin kanssa;

Käyttöjärjestelmän ja siinä käynnissä olevan tietyn sovelluksen tuki teknologialle.

Jos kahdessa ensimmäisessä kohdassa ei pitäisi olla erityisiä ongelmia, niin ohjelmien yhteensopivuuden suhteen Hyper-Threadingin kanssa saattaa silti esiintyä peittokuvia. Mutta voidaan huomata, että jos sovellus tukee esimerkiksi työtä kahden ytimen prosessorien kanssa, se on yhteensopiva, melkein taattu, Intelin tekniikan kanssa.

Ainakin on olemassa tutkimuksia, jotka vahvistavat kaksiytimisille mikropiireille sovitettujen ohjelmien suorituskyvyn lisääntymisen noin 15-18 %, jos Intel Hyper Threading -moduulit toimivat prosessorissa. Tiedämme jo, kuinka ne poistetaan käytöstä (jos käyttäjällä on epäilyksiä tekniikan käytön tarkoituksenmukaisuudesta). Mutta niiden ulkonäölle on luultavasti hyvin vähän konkreettisia syitä.

Hyper-threadingin käytännön hyödyllisyys

Onko kyseisellä tekniikalla ollut konkreettista vaikutusta Inteliin? Tästä asiasta on erilaisia ​​mielipiteitä. Mutta monet ihmiset huomauttavat, että Hyper-Threading-teknologiasta on tullut niin suosittu, että tämä ratkaisu on tullut välttämättömäksi monille palvelinjärjestelmien valmistajille, ja se sai myös positiivisen vastaanoton tavallisilta PC-käyttäjiltä.

Laitteiston tietojenkäsittely

Tekniikan tärkein etu on, että se on toteutettu laitteistomuodossa. Eli suurin osa laskelmista suoritetaan prosessorin sisällä erityisillä moduuleilla, eikä ohjelmistoalgoritmien muodossa, jotka lähetetään mikropiirin pääytimen tasolle - mikä merkitsisi mikropiirin yleisen suorituskyvyn heikkenemistä. PC. Yleisesti ottaen IT-asiantuntijoiden mukaan Intelin insinöörit onnistuivat ratkaisemaan ongelman, jonka he olivat tunnistaneet tekniikan kehittämisen alussa - saada prosessori toimimaan tehokkaammin. Itse asiassa, kuten testit ovat osoittaneet, monia käyttäjälle käytännössä merkittäviä tehtäviä ratkottaessa Hyper-Threadingin käyttö on mahdollistanut työn huomattavasti nopeuttamisen.

Voidaan todeta, että 4:n joukossa ne mikropiirit, jotka oli varustettu tukimoduuleilla tarkasteltavalle teknologialle, toimivat paljon tehokkaammin kuin ensimmäiset muutokset. Tämä ilmeni suurelta osin PC:n kyvyssä toimia todellisessa moniajotilassa - kun useita erilaisia Windows-sovellukset, ja on erittäin epätoivottavaa, että johtuen yhden niistä lisääntyneestä järjestelmäresurssien kulutuksesta, muiden nopeus laskee.

Eri tehtävien samanaikainen ratkaisu

Siten prosessorit, jotka tukevat Hyper-Threadingiä, sopivat paremmin kuin mikropiirit, jotka eivät ole sen kanssa yhteensopivia, käynnistämään samanaikaisesti esimerkiksi selaimen, toistamaan musiikkia ja työskentelemään asiakirjojen kanssa. Tietenkin käyttäjä tuntee kaikki nämä edut käytännössä vain, jos PC:n ohjelmisto- ja laitteistokomponentit ovat riittävän yhteensopivia tämän toimintatavan kanssa.

Samanlaisia ​​kehityskulkuja

Hyper-Threading ei ole ainoa tekniikka, joka on suunniteltu parantamaan tietokoneen suorituskykyä monisäikeisen laskennan avulla. Hänellä on analogeja.

Esimerkiksi IBM:n julkaisemat POWER5-prosessorit tukevat myös monisäikeistystä. Eli jokainen (yhteensä 2 vastaavaa elementtiä on asennettu siihen) voi suorittaa tehtäviä kahdessa säikeessä. Siten mikropiiri käsittelee 4 laskentavirtaa samanaikaisesti.

AMD:llä on myös erinomaisia ​​tuloksia monisäikeisten konseptien alalla. Joten tiedetään, että Bulldozer-arkkitehtuuri käyttää algoritmeja, jotka ovat samanlaisia ​​kuin Hyper-Threading. AMD:n ratkaisun ominaisuus on, että kukin säikeistä käsittelee erillisiä prosessorilohkoja. Kun toinen taso pysyy yleisenä. Samanlaisia ​​konsepteja on toteutettu AMD:n kehittämässä Bobcat-arkkitehtuurissa, joka on sovitettu kannettaviin ja pieniin tietokoneisiin.

Tietenkin AMD:n, IBM:n ja Intelin konseptin suoria analogeja voidaan pitää hyvin ehdollisena. Sekä lähestymistapoja prosessorien arkkitehtuurin suunnitteluun yleensä. Mutta vastaavissa teknologioissa toteutettuja periaatteita voidaan pitää varsin samanlaisina, ja kehittäjien asettamat tavoitteet mikropiirien toiminnan tehostamiseksi ovat pohjimmiltaan hyvin läheisiä, elleivät identtisiä.

Nämä ovat tärkeimmät faktat Intelin mielenkiintoisimmista tekniikoista. Mikä se on, kuinka Hyper-Threading otetaan käyttöön tai päinvastoin deaktivoidaan, olemme määrittäneet. Pointti on luultavasti sen etujen käytännön hyödyntämisessä, jota voidaan hyödyntää varmistamalla, että PC laitteisto- ja ohjelmistokomponenteissa tukee tekniikkaa.

Hyper Threading (hyperketjutus, "hyperketjutus", hyper threading - rus.) - yrityksen kehittämä tekniikka Intel, jonka avulla prosessoriydin voi suorittaa enemmän tietovirtaa kuin yksi (yleensä kaksi). Koska havaittiin, että perinteinen prosessori useimmissa tehtävissä käyttää enintään 70% Kaikesta laskentatehosta päätettiin käyttää tekniikkaa, jonka avulla tiettyjen laskentayksiköiden ollessa lepotilassa niitä voidaan kuormittaa työllä toisella säikeellä. Tämän avulla voit lisätä ytimen suorituskykyä 10 - 80 % tehtävästä riippuen.

Katso kuinka Hyper-Threading toimii .

Oletetaan, että prosessori suorittaa yksinkertaisia ​​laskelmia ja samalla komentolohko on tyhjäkäynnillä ja SIMD laajennuksia.

Osoitemoduuli havaitsee tämän ja lähettää tiedot sinne jatkolaskentaa varten. Jos tiedot ovat tarkkoja, nämä lohkot suorittavat ne hitaammin, mutta tiedot eivät ole lepotilassa. Tai he esikäsittelevät ne, jotta asianmukainen lohko käsittelee edelleen nopeasti. Tämä lisää suorituskykyä.

Luonnollisesti virtuaalilanka ei saavuta täysimittaista ydintä, mutta tämän avulla voit saavuttaa melkein 100% laskentatehon tehokkuutta, kuormittamalla lähes koko prosessori työllä, jättämättä sitä tyhjäkäynnille. Kaiken tämän kanssa ottaa käyttöön HT-teknologiaa vain noin 5% lisää kuoppitilaa, ja suorituskykyä voidaan joskus lisätä 50% . Tämä lisäalue sisältää lisärekisteri- ja haaraennustuslohkot, jotka laskevat, missä laskentatehoa voidaan kulloinkin käyttää, ja lähettävät sinne dataa lisäosoitelohkosta.

Ensimmäistä kertaa tekniikka ilmestyi prosessoreihin Pentium 4, mutta suorituskyvyssä ei tapahtunut suurta kasvua, koska prosessorilla itsessään ei ollut suurta laskentatehoa. Kasvu oli parhaimmillaan 15-20% , ja monissa tehtävissä prosessori toimi paljon hitaammin kuin ilman HT.

Hidasta prosessori tekniikan vuoksi Hyper Threading, tapahtuu, jos:

  • Ei tarpeeksi välimuistia kaikille annetuille ja se käynnistyy uudelleen syklisesti hidastaen prosessoria.
  • Haaraennustaja ei pysty käsittelemään tietoja oikein. Esiintyy pääasiassa johtuen optimoinnin puute tietyille ohjelmistoille tai käyttöjärjestelmän tuelle.
  • Se voi myös johtua tietoriippuvuudet, kun esimerkiksi ensimmäinen säie vaatii välitöntä dataa toiselta, mutta ne eivät ole vielä valmiita tai odottavat jonossa toista säiettä. Tai syklinen data tarvitsee tiettyjä lohkoja nopeaa käsittelyä varten, ja niihin ladataan muuta dataa. Tietojen riippuvuudesta voi olla monia muunnelmia.
  • Jos ydin on jo raskaasti kuormitettu ja "ei tarpeeksi älykäs" haaran ennustusmoduuli lähettää silti dataa, joka hidastaa prosessoria (koskee Pentium 4).

Jälkeen Pentium 4, Intel aloitti tekniikan käytön vasta vuodesta Core i7 ensimmäinen sukupolvi, ohittaen sarjan 2 .

Prosessorien prosessointitehosta on tullut riittävä hypersäikeistyksen täysimääräiseen toteuttamiseen ilman suurta haittaa, jopa optimoimattomissa sovelluksissa. Myöhemmin, Hyper Threading ilmestyi keskiluokan ja jopa budjetti- ja kannettaviin prosessoreihin. Käytetty kaikissa sarjoissa ydin i (i3; i5; i7) ja edelleen mobiili prosessorit atomi(Ei lainkaan). Mielenkiintoista, dual-core prosessorit HT, saavat paremman suorituskyvyn kuin neliytiminen käytöstä Hyper Threading, seisomassa 75% täysimittainen neljän ydinvoimalan.

Missä HyperThreading on hyödyllinen?

Se on hyödyllinen käytettäväksi ammattimaisten, graafisten, analyyttisten, matemaattisten ja tieteellisten ohjelmien, video- ja äänieditorien, arkistointiohjelmien ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas &jne). Kaikki ohjelmat, jotka käyttävät paljon laskelmia, HT on varmasti hyödyllistä. Onneksi sisään 90% tapauksissa tällaiset ohjelmat ovat hyvin optimoituja sen käyttöä varten.

hyperketjuttaminen välttämätön palvelinjärjestelmille. Itse asiassa tätä markkinarakoa varten se kehitettiin osittain. Kiitokset HT, voit lisätä merkittävästi prosessorin tuottoa, kun tehtäviä on paljon. Jokainen säie puretaan puoleen, millä on myönteinen vaikutus datan osoitteisiin ja haaran ennustamiseen.

monet tietokonepelit , liittyvät negatiivisesti läsnäoloon Hyper Threading, mikä vähentää kehysten määrää sekunnissa. Tämä johtuu optimoinnin puutteesta Hyper Threading pelin puolelta. Yksi käyttöjärjestelmän optimointi ei aina riitä, etenkään epätavallisen, heterogeenisen ja monimutkaisen tiedon kanssa työskennellessä.

Tukevilla emolevyillä HT, voit aina poistaa hypersäikeistystekniikan käytöstä.

20. tammikuuta 2015 klo 19.43

Lisää Hyper-Threadingista

  • IT-järjestelmien testaus,
  • Ohjelmointi

Oli aika, jolloin oli tarpeen arvioida muistin suorituskykyä Hyper-threading-tekniikan yhteydessä. Tulimme siihen tulokseen, että sen vaikutus ei aina ole positiivinen. Kun vapaa-ajan määrä ilmaantui, haluttiin jatkaa tutkimusta ja pohtia käynnissä olevia prosesseja konesyklien ja bittien tarkkuudella käyttäen ohjelmisto omaa kehitystä.

Tutkittu alusta

Kokeiden kohde - ASUS kannettava tietokone N750JK Intel Core i7-4700HQ -prosessorilla. Kellotaajuus on 2,4 GHz, jota tehostaa Intel Turbo Boost -tila 3,4 GHz asti. 16 gigatavua asennettu RAM-muisti DDR3-1600 (PC3-12800), joka toimii kaksikanavaisessa tilassa. Käyttöjärjestelmä - Microsoft Windows 8.1 64 bittiä.

Kuva 1 Tutkitun alustan konfiguraatio.

Tutkittavan alustan prosessori sisältää 4 ydintä, jotka Hyper-Threading-tekniikan ollessa käytössä tarjoavat laitteistotuen 8 säikeelle tai loogiselle prosessorille. Alustan laiteohjelmisto välittää nämä tiedot käyttöjärjestelmälle MADT (Multiple APIC Description Table) ACPI-taulukon kautta. Koska alusta sisältää vain yhden RAM-ohjaimen, ei ole olemassa SRAT-taulukkoa (System Resource Affinity Table), joka ilmoittaisi prosessoriytimien läheisyyden muistiohjaimiin. Ilmeisesti kyseessä oleva kannettava tietokone ei ole NUMA-alusta, vaan käyttöjärjestelmä, pitää sitä yhtenäistämistarkoituksessa NUMA-järjestelmänä, jossa on yksi verkkotunnus, kuten rivi NUMA Nodes = 1 osoittaa. Kokeilujemme kannalta olennainen tosiasia on, että ensimmäisen tason datavälimuisti on kooltaan 32 kilotavua. jokainen neljästä ytimestä. Kaksi loogista prosessoria, jotka jakavat saman ytimen, jakavat L1- ja L2-välimuistit.

Tutkittu toiminta

Tutkimme datalohkon lukunopeuden riippuvuutta sen koosta. Tätä varten valitsemme tuottavimman menetelmän, nimittäin 256-bittisten operandien lukemisen VMOVAPD AVX -käskyllä. Kaavioissa X-akseli näyttää lohkon koon ja Y-akseli lukunopeuden. Pisteen X läheisyydessä, joka vastaa L1-välimuistin kokoa, odotamme näkevän käännekohdan, koska suorituskyvyn pitäisi laskea sen jälkeen, kun käsiteltävä lohko poistuu välimuistista. Testissämme monisäikeistyksen tapauksessa jokainen 16 aloitetusta säikeestä toimii erillisellä osoitealueella. Hyper-Threading-tekniikan ohjaamiseksi sovelluksen sisällä jokainen säie käyttää SetThreadAffinityMask API -toimintoa, joka asettaa maskin, jossa jokainen looginen prosessori vastaa yhtä bittiä. Yksi bitin arvo sallii määritetyn säikeen määritetyn prosessorin käytön, nolla-arvo estää sen. Tutkitun alustan kahdeksalle loogiselle prosessorille maski 11111111b sallii kaikkien prosessorien käytön (Hyper-Threading käytössä), maski 01010101b mahdollistaa yhden loogisen prosessorin käytön jokaisessa ytimessä (Hyper-Threading pois käytöstä).

Kaavioissa käytetään seuraavia lyhenteitä:

MBPS (megatavua sekunnissa)lohkon lukunopeus megatavuina sekunnissa;

CPI (kellot per ohje)jaksojen määrä ohjetta kohden;

TSC (aikaleimalaskuri)prosessorin syklilaskuri.

Huomautus: TSC-rekisterin kellonopeus ei välttämättä vastaa prosessorin kellonopeutta Turbo Boost -tilassa. Tämä on otettava huomioon tuloksia tulkittaessa.

Kaavioiden oikealla puolella visualisoidaan heksadesimaalivedos käskyistä, jotka muodostavat kussakin ohjelmasäikeessä suoritetun kohdeoperaation syklin rungon tai tämän koodin ensimmäiset 128 tavua.

Kokemus numero 1. Yksi lanka



Kuva 2 Lukeminen yhdessä ketjussa

Suurin nopeus on 213563 megatavua sekunnissa. Käännepiste esiintyy noin 32 kilotavun lohkokoossa.

Kokemus numero 2. 16 säiettä 4 prosessorissa, Hyper-Threading pois käytöstä



Kuva 3 Lukeminen kuudessatoista ketjussa. Käytettyjen loogisten prosessorien määrä on neljä

Hyper-säie on poistettu käytöstä. Suurin nopeus on 797598 megatavua sekunnissa. Käännepiste esiintyy noin 32 kilotavun lohkokoossa. Kuten odotettua, verrattuna yhdellä säikeellä lukemiseen, nopeus kasvoi noin 4-kertaiseksi, mitä tulee toimivien ytimien lukumäärään.

Kokemus numero 3. 16 säiettä 8 prosessorissa, Hyper-Threading käytössä



Kuva 4 Lukeminen kuudessatoista ketjussa. Loogisia prosessoreita käytetään kahdeksan

Hyper-säie käytössä. Enimmäisnopeus 800 722 megatavua sekunnissa Hyper-Threadingin sisällyttämisen seurauksena ei juuri kasvanut. Suuri miinus on, että käännekohta esiintyy noin 16 kilotavun lohkokoossa. Hyper-Threadingin käyttöönotto nosti hieman maksiminopeutta, mutta nyt nopeuden pudotus tapahtuu puolessa lohkokoosta - noin 16 kilotavua, joten keskinopeus on laskenut merkittävästi. Tämä ei ole yllättävää, jokaisella ytimellä on oma L1-välimuisti, kun taas saman ytimen loogiset prosessorit jakavat sen.

johtopäätöksiä

Tutkittu toiminta skaalautuu varsin hyvin moniytimisellä prosessorilla. Syynä on se, että jokaisessa ytimessä on oma ensimmäisen ja toisen tason välimuisti, kohdelohkon koko on verrattavissa välimuistin kokoon ja jokainen säikeistä toimii omalla osoitealueellaan. Akateemisiin tarkoituksiin loimme tällaiset olosuhteet synteettisessä testissä ymmärtäen, että todelliset sovellukset ovat yleensä kaukana ihanteellisesta optimoinnista. Mutta Hyper-Threadingin sisällyttämisellä, jopa näissä olosuhteissa, oli kielteinen vaikutus, huippunopeuden lievällä kasvulla, lohkojen, joiden koko on välillä 16-32, käsittelynopeudessa on huomattava menetys. kilotavua.

Kirjoitimme, että yhden prosessorin Xeon-järjestelmien käytössä ei ole järkeä, koska korkeammalla hinnalla niiden suorituskyky on sama kuin saman taajuuden Pentium 4:llä. Nyt, tarkemman tarkastelun jälkeen, tätä lausuntoa joutuu todennäköisesti hieman muuttamaan. Intel Xeonissa Prestonia-ytimellä toteutettu Hyper-Threading-tekniikka todella toimii ja antaa varsin konkreettisen vaikutuksen. Vaikka sen käytössä on myös monia kysymyksiä ...

Anna suorituskykyä

"Nopeammin, vielä nopeammin...". Kilpailu suorituskyvystä on jatkunut vuosia, ja joskus on jopa vaikea sanoa, mikä tietokoneen komponenteista kiihtyy nopeammin. Tätä varten keksitään yhä enemmän uusia tapoja, ja mitä pidemmälle, sitä enemmän ammattitaitoista työvoimaa ja korkealaatuisia aivoja tähän lumivyörymäiseen prosessiin investoidaan.

Jatkuva suorituskyvyn lisääminen on tietysti tarpeen. Ainakin se on kannattavaa liiketoimintaa, ja aina on mukava tapa rohkaista käyttäjiä päivittämään eilinen "superperforming CPU" huomisen "vielä supersuper...". Esimerkiksi samanaikainen puheentunnistus ja simultaanikäännös toiselle kielelle - eikö tämä ole kaikkien unelma? Tai epätavallisen realistisia pelejä, jotka ovat lähes "elokuvalaatuisia" (imevät täysin huomion ja johtavat joskus vakaviin psyyken muutoksiin) - eikö tämä ole monien nuorten ja vanhojen pelaajien toive?

Mutta jätetään pois markkinoinnin näkökohdat tässä tapauksessa keskittyen 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 mitkä ovat tapoja parantaa heidän suorituskykyään?

Kellon tehostus. Voidaan "ohentaa" edelleen tekninen prosessi ja lisää taajuutta. Mutta kuten tiedätte, tämä ei ole helppoa ja on täynnä kaikenlaisia ​​​​sivuvaikutuksia, kuten lämmönpoistoongelmia.

Prosessoriresurssien lisääminen- esimerkiksi lisäämällä välimuistin määrää, lisäämällä uusia lohkoja (Execution Units). Kaikki tämä merkitsee transistorien määrän kasvua, prosessorin monimutkaisuutta, kiteen pinta-alan kasvua ja siten kustannuksia.

Lisäksi kaksi edellistä menetelmää eivät pääsääntöisesti anna millään tavalla lineaarista tuottavuuden kasvua. Tämä tiedetään hyvin Pentium 4 -esimerkissä: virheet haaran ennustamisessa ja keskeytyksessä aiheuttavat pitkän liukuhihnan nollauksen, 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 emolevyistä, jotka tukevat neljää tai useampaa suoritinta). Lisäksi kaikki sovellukset eivät hyödy moniprosessoinnista tarpeeksi perustellakseen kustannuksia.

"Puhtaan" moniprosessoinnin lisäksi on olemassa useita "välitason" vaihtoehtoja, joiden avulla voit nopeuttaa sovelluksen suorittamista:

Chip Multiprocessing (CMP)- Kaksi prosessoriydintä sijaitsevat fyysisesti samassa sirussa yhteisen tai erillisen välimuistin avulla. Luonnollisesti kiteen koko 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 raskaita, varsinkin jos prosessi odottaa.

Kytkentätapahtuman monisäikeistys. Tehtävän vaihtaminen pitkien taukojen sattuessa, kuten "välimuistin puuttuessa" (cache misses), joista suuri määrä on tyypillistä 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 haaran ennustusvirheistä, käskyriippuvuudesta jne.

Samanaikainen monisäikeistys. Tässä tapauksessa ohjelmasäikeet suoritetaan samalla prosessorilla "samanaikaisesti", toisin sanoen vaihtamatta niiden välillä. Prosessoriresurssit jaetaan dynaamisesti periaatteen "jos et käytä, anna se jollekin toiselle" mukaisesti. Tämä lähestymistapa on taustalla Intelin teknologiat Hyper-Threading, johon nyt siirrymme.

Kuinka Hyper-Threading toimii

Kuten tiedätte, nykyinen "laskentaparadigma" sisältää monisäikeinen laskenta. 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 aktiivisia säikeitä on melkein aina enemmän kuin yksi (nähdäksesi tämän avaamalla Windows 2000/XP:n Tehtävienhallinnan ja laittamalla säikeiden määrän näyttö päälle). Samaan aikaan tavanomainen prosessori voi suorittaa vain yhden säikeistä kerrallaan ja joutuu jatkuvasti vaihtamaan niiden välillä.

Ensimmäistä kertaa Hyper-Threading-tekniikka toteutettiin Intel Xeon MP (Foster MP) -prosessorissa, jossa se "ajoi sisään". Muista, että IDF:n keväällä 2002 virallisesti esitelty Xeon MP käyttää Pentium 4 Willamette -ydintä, sisältää 256 kilotavua L2-välimuistia ja 512 kilotavua/1 MB L3-välimuistia ja tukee 4-prosessorin kokoonpanoja. Hyper-Threading-tuki on myös työasemien Intel Xeon -prosessorissa (Prestonia-ydin, 512 KB L2-välimuisti), joka tuli markkinoille hieman aikaisemmin kuin Xeon MP. Lukijamme tuntevat jo Intel Xeonin kahden prosessorin kokoonpanot, joten harkitsemme Hyper-Threadingin mahdollisuuksia käyttämällä näitä suorittimia esimerkkinä - sekä teoreettisesti että käytännössä. Oli miten oli, "yksinkertainen" Xeon on arkipäiväisempi ja sulavampi kuin Xeon MP 4-prosessorijärjestelmissä...

Hyper-Threadingin toimintaperiaate perustuu siihen, että kulloinkin vain osa prosessorin resursseista käytetään ohjelmakoodin suorittamiseen. Käyttämättömiä resursseja voidaan myös ladata työllä - esimerkiksi yhtä 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 kahden prosessorin järjestelmän tapauksessa.

Yksi Hyper-Threadingin toteuttamisen tavoitteista on sallia vain yhden aktiivisen säikeen ajaa samalla nopeudella kuin normaalissa prosessorissa. Tätä varten prosessorilla on kaksi päätoimintatilaa: Single-Task (ST) ja Multi-Task (MT). ST-tilassa vain yksi looginen prosessori on aktiivinen ja käyttää käytettävissä olevia resursseja jakamatta (ST0- ja ST1-tilat); toinen LP pysäytetään HALT-komennolla. Kun toinen ohjelmasäie ilmestyy, vapaa looginen prosessori aktivoituu (keskeytyksen kautta) ja fyysinen CPU asetetaan MT-tilaan. Käyttämättömien LP-levyjen pysäyttäminen HALT-komennolla on käyttöjärjestelmän vastuulla, joka on viime kädessä vastuussa yhden säikeen yhtä nopeasta suorittamisesta kuin tapauksessa ilman Hyper-Threadingia.

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

Kun ajetaan kahta säiettä, tuetaan kahta vastaavaa seuraavan käskyn osoittimien sarjaa. Suurin osa ohjeista on otettu Trace Cachesta (TC), johon ne tallennetaan dekoodatussa muodossa, ja kaksi aktiivista LP:tä pääsevät vuorotellen TC:hen joka kello. Samaan aikaan, kun vain yksi LP on aktiivinen, se saa eksklusiivisen pääsyn TC:hen ilman kellojen lomittamista. Samalla tavalla tapahtuu pääsy Microcode ROM:iin. ITLB-lohkot (Instruction Translation Look-aide Buffer), jotka aktivoidaan, kun käskyvälimuistissa ei ole tarvittavia ohjeita, kopioidaan ja ne toimittavat kukin omalle säikeelleen ohjeita. IA-32 Instruction Decode -käskydekoodauslohko on jaettu ja siinä tapauksessa, että käskydekoodaus tarvitaan molemmille virroille, se palvelee niitä yksitellen (jälleen joka jakso). Uop-jono- ja allokaattori-lohkot jaetaan kahteen osaan siten, että puolet elementeistä on varattu kullekin LP:lle. Viiden kappaleen ajoittajat prosessoivat purettujen komentojen (Uops) jonoja huolimatta kuulumisesta LP0 / LP1:een ja suorista komentoista tarvittavien suoritusyksiköiden suorittamaan - riippuen ensimmäisen suoritusvalmiudesta ja toisen saatavuudesta. Kaikkien tasojen välimuistit (L1/L2 Xeonille ja L3 Xeon MP:lle) jaetaan täysin kahden LP:n välillä, mutta tietojen eheyden varmistamiseksi DTLB:n (Data Translation Look-aide Buffer) merkinnät toimitetaan kuvailijoilla muodossa loogiset prosessoritunnukset.

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

  • monistettu (Duplicated);
  • täysin jaettu (Fully Shared);
  • elementtien kuvaajilla (Entry Tagged);
  • dynaamisesti jaettu (Osioitu) riippuen ST0/ST1:n tai MT:n toimintatavasta.

Useimmat sovellukset, jotka kiihtyvät moniprosessorijärjestelmissä, voidaan kuitenkin kiihdyttää myös suorittimessa, jossa Hyper-Threading on käytössä, ilman muutoksia. Mutta on myös ongelmia: esimerkiksi jos yksi prosessi on odotussilmukassa, se voi viedä kaikki fyysisen CPU:n resurssit ja estää toista LP:tä toimimasta. Siten suorituskyky Hyper-Threadingia käytettäessä voi joskus laskea (jopa 20 %). Tämän estämiseksi Intel suosittelee PAUSE-käskyn käyttämistä tyhjien odotussilmukoiden sijaan (otettu käyttöön IA-32:ssa Pentium 4:stä alkaen). 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, suutinpinta-alan ja virrankulutuksen kasvu ja samalla parantaa huomattavasti suorituskykyä. 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 %. Mitä toiselle osalle (esitys) tapahtui, meidän on vielä tarkistettava.

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, jos päätämme tällaisesta saavutuksesta, on vieläkin nyt, alle kuukausi virallisen ilmoituksen jälkeen, täysin epärealistista saada tämä kallis laite. Siksi päätettiin rajoittua samaan järjestelmään kahdella Intel Xeon 2,2 GHz:llä, joilla suoritettiin näiden prosessorien ensimmäiset testit (katso linkki artikkelin alussa). Järjestelmä perustui emolevy Supermicro P4DC6+ ( Intelin piirisarja i860), sisälsi 512 Mt RDRAM-muistia, näytönohjaimen GeForce3-sirulla (64 Mt DDR, Detonator 21.85 ajurit), HDD länsimainen digitaalinen WD300BB ja 6X DVD-ROM; Käyttöjärjestelmänä käytettiin Windows 2000 Professional SP2:ta.

Ensin muutama yleisvaikutelma. Kun asennat yhden Xeonin Prestonia-ytimen kanssa käynnistyksen yhteydessä järjestelmän BIOS näyttää viestin kahden CPU:n läsnäolosta; jos kaksi prosessoria on asennettu, käyttäjä näkee viestin 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 -kortit esittelivät Enable Hyper-Threading -kohteen, jota ilman käyttöjärjestelmä tunnistaa vain fyysiset prosessorit. Toiseksi ACPI:tä käytetään kertomaan käyttöjärjestelmälle, että on olemassa muita loogisia prosessoreita. Siksi, jotta Hyper-Threading voidaan ottaa käyttöön, ACPI-vaihtoehto on otettava käyttöön CMOS-asetuksissa ja HAL (Hardware Abstraction Layer) ACPI-tuella 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 – muuttamalla "tietokoneohjainta" laitehallinnassa. Samaan aikaan Windows XP:ssä ainoa laillinen tapa siirtyä ACPI HAL:iin on asentaa järjestelmä 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 on vain yksi prosessori asennettuna). Nyt, kuten tavallista, on aika päättää testauksen tavoitteista. Haluamme siis:

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

Suorituksen arvioimiseksi otimme lukijoille jo tutun sovelluksen, jota käytettiin työasemajärjestelmien testaamiseen. Aloitetaan ehkä lopusta ja tarkistetaan loogisten suorittimien "tasa-arvo". Kaikki on äärimmäisen 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 pelkistetään "isompi sitä parempi" -muotoon ja normalisoidaan (yksiprosessorijärjestelmän ilmaisimet ilman Hyper-Threadingia otetaan yksikkönä).

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

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

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

Kaikissa neljässä tapauksessa (Lightwave - kaksi eri kohtausta) prosessorin kuormitus yhden prosessorin läsnä ollessa, jonka Hyper-Threading on poistettu käytöstä, pidetään lähes jatkuvasti 100 prosentissa. Kuitenkin, kun Hyper-Threading on käytössä, kohtausten laskeminen kiihtyy (tämän seurauksena meillä oli jopa vitsi yli 100 prosentin suorittimen käytöstä). Kolmessa testissä voimme nähdä Hyper-Threadingin suorituskyvyn parantuneen 14--18 % - toisaalta ei paljon verrattuna toiseen prosessoriin, mutta toisaalta melko hyvä, kun otetaan huomioon "ilmainen" vaikutus. tämä vaikutus. Yhdessä kahdesta Lightwave-testistä suorituskyvyn lisäys on lähes nolla (ilmeisesti tämän omituisuuksia täynnä olevan sovelluksen spesifisyys vaikuttaa). 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ä varmasti pysty käyttämään fyysisen prosessorin resursseja samanaikaisesti parhaalla mahdollisella tavalla.

Photoshop ja MP3-koodaus. GOGO-no-coda 2.39c -koodekki on yksi harvoista, joka tukee SMP:tä, ja sen suorituskyky on 34 % parempi kuin kaksi prosessoria. Samanaikaisesti 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), voit nähdä hidastumisen, kun Hyper-Threading on käytössä, vaikka toinen fyysinen suoritin lisää tässä tapauksessa 12 % suorituskykyä. Tässä on itse asiassa ensimmäinen tapaus, jossa Hyper-Threading aiheuttaa suorituskyvyn laskun ...

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

OpenGL ja kaksoisprosessori: miksi he eivät ole ystäviä

Usein artikkeleissa kiinnitimme lukijoiden huomion siihen, että ammattimaisia ​​OpenGL-testejä suoritettaessa kahden prosessorin alustat osoittavat harvoin mitään merkittävää etua yksiprosessorisiin verrattuna. Ja mikä parasta, on tapauksia, joissa toisen prosessorin asentaminen päinvastoin heikentää järjestelmän suorituskykyä dynaamisten 3D-kohtausten renderöinnissa.

Luonnollisesti emme vain me huomanneet tätä omituisuutta. Jotkut testaajat yksinkertaisesti ohittivat tämän tosiasian hiljaa - esimerkiksi toimittamalla SPEC ViewPerf -vertailutuloksia vain kahden prosessorin kokoonpanoille, välttäen näin selityksiä "miksi kahden prosessorin järjestelmä on hitaampi?". Toiset tekivät kaikenlaisia ​​mielikuvituksellisia oletuksia välimuistin koherenssista, tarpeesta ylläpitää sitä, siitä aiheutuvista yleiskustannuksista ja niin edelleen. Ja jostain syystä kukaan ei ollut yllättynyt siitä, että esimerkiksi prosessorit olivat kärsimättömiä tarkkailemaan koherenssia tarkasti ikkunoidussa OpenGL-renderöinnissa ("laskennallisessa" olemuksessaan se ei juuri eroa muista laskentatehtävästä).

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

  • on enemmän kuin kaksi tai useampia samanaikaisesti suoriutuvia ohjelmasäikiä (säikeitä);
  • nämä säikeet eivät häiritse toistensa suoritusta - ne eivät esimerkiksi kilpaile jaetusta resurssista, kuten ulkoisesta asemasta tai verkkoliitännästä.

Katsotaanpa nyt yksinkertaistettua, miltä OpenGL-renderöinti näyttää kahden säikeen suorittamana. Jos sovellus, "nähdessään" kaksi prosessoria, luo kaksi OpenGL-renderöintisäiettä, niin kullekin niistä luodaan OpenGL:n 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" tulostavat generoidun kuvan ikkunaan, jolloin niiden konteksti on vuorotellen ajankohtainen. Tarpeetonta sanoa, että tällainen "kontekstin lomittelu" voi olla erittäin kallista yleiskustannusten kannalta?

Lisäksi annamme esimerkkinä kaavioita kahden suorittimen käytöstä useissa sovelluksissa, jotka näyttävät OpenGL-kohtauksia. Kaikki mittaukset suoritettiin alustalla, jossa oli seuraava kokoonpano:

  • yksi tai kaksi Intel Xeon 2,2 GHz (Hyper-Threading pois käytöstä);
  • 512 Mt RDRAM;
  • 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 ovat CPU 0:n ja CPU 1:n kuormituskaavioita. 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 kuvio toistuu monissa muissa OpenGL:ää käyttävissä sovelluksissa. Kaksi prosessoria ei vaivaudu töihin ollenkaan ja prosessorin kokonaiskäyttö on 50-60% tasolla. Samanaikaisesti yhden prosessorin järjestelmässä kaikissa näissä tapauksissa suorittimen käyttö pysyy varmasti 100 prosentin tasolla.

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

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

CAD-sovellukset. Edellisen päätelmän vahvistavat kahden CAD-testin tulokset - SPECapc SolidEdge V10:lle ja SPECapc SolidWorksille. Näiden Hyper-Threading-testien grafiikkasuorituskyky on samanlainen (vaikka tulos on hieman korkeampi SolidEdge V10:n SMP-järjestelmän tapauksessa). 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 joissain tapauksissa heikentää suorituskykyä - esimerkiksi käytettäessä tyhjiä odotussilmukoita. Voimme vain olettaa, että tämä on syy (SolidEdge- ja SolidWorks-koodin yksityiskohtainen tarkastelu ei kuulu tämän artikkelin piiriin). Loppujen lopuksi kaikki tietävät CAD-sovelluskehittäjien konservatiivisuuden, jotka suosivat todistettua luotettavuutta ja joilla ei ole 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 universaalia: on sovelluksia, joissa Hyper-Threading "tulee huonoksi", ja tämän tekniikan leviämisen tapauksessa niitä olisi toivottavaa muokata. Mutta eikö sama tapahtunut MMX:lle ja SSE:lle ja tapahtuu edelleen SSE2:lle?

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 pidämme sitä vain väliaikaisena, odotettaessa toisen prosessorin ostoa): edes 30 % suorituskyvyn lisäys ei oikeuta hintaa missään. tapa - silloin on parempi ostaa tavallinen Pentium 4. Prosessoreja on jäljellä kahdesta tai useammasta.

Kuvitellaan nyt, että ostamme kahden prosessorin Xeon-järjestelmän (esimerkiksi Windows 2000/XP Professionalilla). Kaksi CPU:ta asennettu, Hyper-Threading käytössä, BIOS löytää peräti neljä loogista prosessoria, nyt lähdetään... Lopeta. Mutta kuinka monta prosessoria käyttöjärjestelmämme näkee? Aivan oikein, kaksi. Vain kaksi, koska sitä ei yksinkertaisesti ole suunniteltu suuremmalle määrälle. Nämä ovat kaksi fyysistä prosessoria, eli kaikki toimii täsmälleen samalla tavalla kuin käytöstä poistetun Hyper-Threadingin kanssa - ei hitaammin (kaksi "lisää" loogista prosessoria yksinkertaisesti pysähtyy), mutta ei nopeammin (varmistettu lisätesteillä, tuloksia ei mainita niiden ilmeisyys). Hmm, ei kovin hauskaa...

Mitä on jäljellä? Älä todellakaan asenna Advanced Serveriä tai .NET Serveriä työasemaamme? Ei, järjestelmä asentaa, tunnistaa kaikki neljä loogista prosessoria ja toimii. Se on vain palvelinkäyttöjärjestelmän ulkonäkö työasemassa, lievästi sanottuna, hieman outoa (puhumattakaan taloudellisista näkökohdista). Ainoa järkevä tapaus on, kun kahden prosessorin Xeon-järjestelmämme toimii palvelimena (ainakin jotkut rakentajat eivät epäröi julkaista palvelimia työaseman Xeon-prosessoreissa). Mutta kahdessa työasemassa, joissa on vastaavat käyttöjärjestelmät, Hyper-Threadingin soveltuvuus on edelleen kyseenalainen. Intel kannattaa nyt aktiivisesti käyttöjärjestelmän lisensointia, joka perustuu ei loogisten, vaan fyysisten suorittimien määrään. Keskustelut jatkuvat edelleen, ja yleisesti ottaen paljon riippuu siitä, näemmekö työasemakäyttöjärjestelmän, joka tukee neljää prosessoria.

Palvelinten kanssa kaikki selviää yksinkertaisesti. Esimerkiksi Windows 2000 Advanced Server, joka on asennettu kaksikantiseen Xeon-järjestelmään, jossa Hyper-Threading on käytössä, näkee neljä loogista prosessoria ja toimii sujuvasti siinä. Arvioidaksemme, mitä Hyper-Threading tuo palvelinjärjestelmiin, esittelemme Intel Microprocessor Software Labsin tulokset kahden prosessorin järjestelmille Xeon MP:ssä ja useissa Microsoftin palvelinsovelluksissa.

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

Joten käy ilmi, että tällä hetkellä Hyper-Threadingin käytännön soveltuvuus on mahdollista vain palvelimissa. Työasemien ongelma riippuu käyttöjärjestelmän lisensoinnin ratkaisusta. Vaikka vielä yksi Hyper-Threadingin sovellus on aivan todellinen - jos työpöytäprosessorit saavat tukea tälle tekniikalle. Esimerkiksi (kuvitellaan), miksi Hyper-Threading-tuella varustettu Pentium 4 -järjestelmä on huono, johon on asennettu SMP-tuella varustettu Windows 2000/XP Professional? - palvelimista työpöytä- ja mobiilijärjestelmiin.