„Hyper V“ režimas turi įtakos kompiuterio veikimui. „Hyper-Threading“ – kas tai? Kaip įjungti „Hyper-Threading“? Kaip veikia hipersriegis

„...Ir mes didžiuojamės, ir mūsų priešas didžiuojasi
Ranka, pamiršk tinginystę. Pažiūrėkime,
kas turi kieno batus gale
pagaliau nusilenks kelius...“
© filmas "D"Artanjanas ir trys muškietininkai"

Prieš kurį laiką autorius leido sau „šiek tiek paniurnėti“ dėl naujosios „Intel Hyper Threading“ paradigmos. „Intel“ nuopelnas – autoriaus sumišimas neliko nepastebėtas. Todėl autoriui buvo pasiūlyta padėti išsiaiškinti ( kaip subtiliai įvertino korporacijos vadovai) „tikra“ situacija naudojant „Hyper Threading“ technologiją. Na, o norą išsiaiškinti tiesą galima tik pagirti. Ar ne taip, mielas skaitytojau? Bent jau taip skamba vienas iš tikrovės: tiesa, tai gerai. Na, mes pasistengsime elgtis pagal šią frazę. Be to, iš tiesų pasirodė tam tikras kiekis naujos informacijos.

Pirmiausia suformuluokime, ką tiksliai žinome apie „Hyper Threading“ technologiją:

1. Ši technologija skirta procesoriaus efektyvumui padidinti. Faktas yra tas, kad, remiantis „Intel“ skaičiavimais, tik 30% veikia didžiąją laiko dalį ( Beje, tai gana prieštaringas skaičius, jo skaičiavimo detalės nežinomos) visų procesoriaus pavarų. Sutikite, tai gana įžeidžianti. Ir tai, kad kilo mintis kažkaip „sudėt“ likusius 70%, atrodo visai logiška ( Be to, pats Pentium 4 procesorius, kuriame bus įdiegta ši technologija, nenukenčia nuo per didelio našumo megahercuose.). Tad autorius priverstas pripažinti, kad ši mintis gana pagrįsta.

2. „Hyper Threading“ technologijos esmė yra ta, kad vykdant vieną programos „giją“, neveikiantys vykdomieji įrenginiai gali pradėti vykdyti kitą programos „giją“ ( arba "siūlai" kitas programas). Arba, pavyzdžiui, vykdydami vieną komandų seką, palaukite, kol duomenys iš atminties vykdys kitą seką.

3. Natūralu, kad vykdydamas skirtingas „gijas“, procesorius turi kažkaip atskirti, kurios komandos kuriai „gijai“ priklauso. Tai reiškia, kad yra tam tikras mechanizmas ( kažkoks ženklas), kurio dėka procesorius atskiria, kuriai „gijai“ priklauso komandos.

4. Taip pat aišku, kad atsižvelgiant į nedidelį bendrosios paskirties registrų skaičių x86 architektūroje ( iš viso 8), kiekviena gija turi savo registrų rinkinį. Tačiau tai nebėra naujiena; šis architektūrinis apribojimas buvo apeinamas gana ilgą laiką naudojant „registro pervadinimą“. Kitaip tariant, fizinių registrų yra daug daugiau nei loginių. „Pentium III“ procesoriuje jų yra 40. Žinoma, šis skaičius „Pentium 4“ nėra pateisinamas. išskyrus "simetrijos" svarstymus:-) nuomonė tokia, kad jų yra apie šimtus. Patikimos informacijos apie jų skaičių nepavyko rasti. Kol kas nepatvirtintais duomenimis, jų yra 256. Kitų šaltinių teigimu, kitas skaičius. Apskritai visiškas netikrumas... Beje, „Intel“ pozicija dėl tai priežastis visiškai nesuprantama :-( Autorius nesupranta, kas sukėlė tokį slaptumą.

5. Taip pat žinoma, kad tuo atveju, kai keli "gijos" reikalauja tų pačių išteklių arba viena iš "gijų" laukia duomenų, kad nesumažėtų našumas, programuotojas turi įterpti specialią "pauzę" komandą. Natūralu, kad tam reikės dar kartą perkompiliuoti programas.

6. Taip pat aišku, kad gali pasitaikyti situacijų, kai bandymai vienu metu vykdyti keletą „gijų“ lems našumo sumažėjimą. Pavyzdžiui, dėl to, kad L2 talpyklos dydis nėra begalinis, o aktyvios „gijos“ bandys įkelti talpyklą, gali būti, kad dėl tokios „kovos dėl talpyklos“ bus nuolat išvaloma ir perkraunama duomenys antrojo lygio talpykloje.

7. Intel teigia, kad optimizuojant programas šiai technologijai prieaugis sieks iki 30%. ( Tiksliau, „Intel“ teigia, kad šiandieninėse serverių programose ir šiandieninėse sistemose iki 30 proc.) Hm.... Tai daugiau nei pakankamai paskata optimizuoti.

Na, mes suformulavome keletą savybių. Dabar pabandykime pagalvoti apie kai kurias pasekmes ( kai tik įmanoma, remiantis mums žinoma informacija). Ką galime pasakyti? Na, pirmiausia turime atidžiau pažvelgti į tai, kas tiksliai mums yra siūloma. Ar šis sūris tikrai „nemokamas“? Pirmiausia išsiaiškinkime, kaip tiksliai vyks kelių „gijų“ apdorojimas vienu metu. Beje, ką „Intel“ reiškia žodžiu „gija“?

Autoriui susidarė įspūdis ( galbūt klaidingas), kuris šiuo atveju reiškia programos fragmentą, kurį daugiafunkcinė operacinė sistema priskiria vykdyti vienam iš kelių procesorių aparatinės įrangos sistemos procesorių. "Laukti!" dėmesingas skaitytojas pasakys: „Tai vienas iš apibrėžimų, kas čia naujo? Ir nieko viduje duota Autorius šiuo klausimu nepretenduoja į originalumą. Norėčiau išsiaiškinti, kas „Intel“ buvo „originalus“ :-). Na, priimkime tai kaip darbinę hipotezę.

Toliau vykdoma tam tikra gija. Tuo tarpu komandų dekoderis ( beje, visiškai asinchroninis ir neįtrauktas į liūdnai pagarsėjusius 20 „Net Burst“ etapų) atlieka mėginių ėmimą ir iššifravimą ( su visomis tarpusavio priklausomybėmis) V mikroinstrukcijos. Čia reikia išsiaiškinti, ką autorius reiškia žodžiu „asinchroninis“ - faktas yra tas, kad x86 komandų „sugriuvimas“ mikroinstrukcijose įvyksta iššifravimo bloke. Kiekviena x86 instrukcija gali būti iškoduota į vieną, dvi ar daugiau mikroinstrukcijų. Tuo pačiu metu apdorojimo etape išaiškinamos tarpusavio priklausomybės, o reikalingi duomenys pateikiami per sistemos magistralę. Atitinkamai, šio bloko veikimo greitis dažnai priklausys nuo duomenų prieigos iš atminties greičio ir, blogiausiu atveju, priklauso nuo jo. Logiška būtų jį „atsirišti“ nuo vamzdyno, kuriame iš tikrųjų atliekamos mikrooperacijos. Tai buvo padaryta įdėjus iššifravimo bloką prieš pėdsakų talpykla. Ko mes stengiamės tuo pasiekti? Ir šio „blokų pertvarkymo“ pagalba pasiekiame paprastą dalyką: jei sekimo talpykloje yra vykdymo mikroinstrukcijos, procesorius veikia efektyviau. Žinoma, šis įrenginys veikia procesoriaus dažniu, skirtingai nei Rapid Engine. Beje, autoriui susidarė įspūdis, kad šis dekoderis yra kažkas panašaus į iki 10–15 pakopų ilgio konvejerį. Taigi, nuo duomenų gavimo iš talpyklos iki rezultato gavimo, matyt, yra apie 30 35 etapus ( įskaitant Net Burst dujotiekįžr. Mikroprojektavimo ištekliai 2000 m. rugpjūčio mėn. Mikroprocesoriaus ataskaita, 14 tomas, archyvas8, 12 psl.).

Gautas mikroinstrukcijų rinkinys kartu su visomis tarpusavio priklausomybėmis kaupiasi tos pačios talpyklos pėdsakų talpykloje, kurioje yra maždaug 12 000 mikrooperacijų. Remiantis apytiksliais skaičiavimais, tokio įvertinimo šaltinis yra P6 mikroinstrukcijos struktūra; faktas yra tas, kad instrukcijų trukmė iš esmės nepasikeis ( Atsižvelgiant į mikroinstrukcijos ilgį kartu su aptarnavimo laukais yra apie 100 bitų) sekimo talpyklos dydis gaunamas iš 96 KB į 120 KB!!! Tačiau! Atsižvelgiant į tai, dydžio duomenų talpykla 8 KB atrodo kažkaip asimetriškai :-)... ir blyškiai. Žinoma, didėjant dydžiui, prieigos vėlavimai didėja ( pavyzdžiui, padidinus iki 32 KB, uždelsimas vietoj dviejų laikrodžio ciklų bus 4). Bet ar prieigos prie šios duomenų talpyklos greitis tikrai toks svarbus, kad delsos padidėjimas 2 laikrodžio ciklais ( viso konvejerio viso ilgio fone) tokį apimčių didinimą daro nuostolingu? O gal tai tiesiog nenoras didinti kristalo dydį? Bet tada, pereinant prie 0,13 mikrono, pirmasis žingsnis buvo padidinti šią talpyklą ( ne antro lygio talpykla). Tie, kurie abejoja šia disertacija, turėtų prisiminti perėjimą nuo Pentium prie Pentium MMX dėl pirmojo lygio talpyklos padidėjimo padvigubėjo Beveik visų programų našumas padidėjo 10–15%. Ką galime pasakyti apie padidėjimą? keturgubai (ypač atsižvelgiant į tai, kad procesoriaus sparta padidėjo iki 2 GHz, o dauginimo koeficientas nuo 2,5 iki 20)? Remiantis nepatvirtintais pranešimais, kitoje Pentium4 (Prescott) branduolio modifikacijoje pirmojo lygio talpykla bus padidinta iki 16 arba 32 KB. Taip pat padidės antrojo lygio talpykla. Tačiau šiuo metu visa tai yra ne kas kita, kaip gandai. Atvirai kalbant, situacija šiek tiek neaiški. Nors, padarykime išlygą, autorius visiškai pripažįsta, kad tokiam sumanymui trukdo tam tikra specifinė priežastis. Pavyzdžiui, tam tikri blokų išdėstymo geometrijos reikalavimai arba banalus laisvos vietos trūkumas šalia konvejerio ( aišku, kad duomenų talpyklą reikia rasti arčiau ALU).

Nesiblaškydami pažvelkime į procesą toliau. Dujotiekis veikia, leiskite dabartinėms komandoms naudoti ALU. Aišku, kad FPU, SSE, SSE2 ir kiti neveikia. Tokios sėkmės nepasiseka „Hyper Threading“. Pastebėjęs, kad mikroinstrukcijos yra paruoštos kartu su naujos gijos duomenimis, registro pervadinimo blokas paskiria dalį fizinių registrų naujai gijai. Beje, galimi du variantai: fizinių registrų blokas yra bendras visoms gijomis arba atskiras kiekvienai. Sprendžiant iš to, kad Hyper Threading pristatyme iš Intel registro pervadinimo blokas nėra nurodytas kaip blokai, kuriuos reikia keisti, pasirinkta pirmoji parinktis. Ar tai gerai ar blogai? Technologų požiūriu tai aišku gerai, nes taupo tranzistorius. Programuotojų požiūriu kol kas neaišku. Jei fizinių registrų skaičius iš tikrųjų yra 128, tada su bet kokiu pagrįstu gijų skaičiumi negali kilti „registrų trūkumo“ padėtis. Tada jie ( mikroinstrukcijos) yra siunčiami planuokliui, kuris iš tikrųjų siunčia juos į vykdymo įrenginį ( jei jis neužimtas) arba „eilę“, jei šios pavaros šiuo metu nėra. Taigi idealiu atveju pasiekiamas efektyvesnis esamų pavarų panaudojimas. Šiuo metu aš pats CPU OS požiūriu atrodo kaip du „logiški“ procesoriai. Hm... Ar tikrai viskas taip be debesų? Pažvelkime į situaciją atidžiau: įrangos dalis ( pvz., talpyklos, Rapid Engine, perėjimo numatymo modulis) yra bendri abiem procesoriams. Beje, perėjimo numatymo tikslumas nuo to, greičiausiai, šiek tiek kentės. Ypač jei tuo pačiu metu vykdomos gijos nėra sujungtos viena su kita. Ir dalis ( pavyzdžiui, MIS mikroinstrukcijų sekos planavimo priemonė, tam tikra ROM, kurioje yra iš anksto užprogramuotų bendrų operacijų sekų rinkinys ir RAT registro pervadinimo lentelė.) blokai turi būti atskirti pagal skirtingas gijas, veikiančias „skirtinguose“ procesoriuose. Pakeliui ( iš talpyklos bendruomenės) tai reiškia, kad jei dvi gijos yra godžios talpykloje ( tai yra, talpyklos padidinimas turi puikų efektą), tai naudojant „Hyper Threading“ galima net sumažinti greitį. Taip atsitinka todėl, kad šiuo metu yra įdiegtas „konkurencinis“ kovos dėl talpyklos mechanizmas: „aktyvioji“ gija šiuo metu išstumia „neaktyviąją“. Tačiau talpyklos mechanizmas, matyt, gali pasikeisti. Taip pat aišku, kad greitis ( bent jau kol kas) sumažės tose paraiškose, kuriose jis sumažėjo sąžiningai DĮR. Pavyzdžiui, SPEC ViewPerf paprastai rodo geresnius rezultatus vieno procesoriaus sistemose. Todėl rezultatai tikriausiai bus mažesni sistemoje su „Hyper Threading“ nei be jos. Tiesą sakant, praktinio „Hyper Threading“ bandymo rezultatus galite peržiūrėti adresu.

Beje, į internetą nutekėjo informacija, kad ALU Pentium 4 16 bitų. Iš pradžių autorius į tokią informaciją žiūrėjo labai skeptiškai – sako, ką pagalvojo pavyduoliai :-). Ir tada tokios informacijos paskelbimas „Micro Design Report“ privertė susimąstyti: o jei tai tiesa? Ir nors informacija apie tai nėra tiesiogiai susijusi su straipsnio tema, sunku atsispirti :-). Kiek autorius pakankamai „supranta“, esmė ta, kad ALU iš tiesų yra 16 bitų. pabrėžiu Tik ALU. Tai neturi nieko bendra su paties procesoriaus bitų talpa. Taigi per pusę takto ( tai vadinama varnele, varnele) ALU ( dvigubo dažnio, kaip prisimenate) apskaičiuoja tik 16 bitų. Antrieji 16 skaičiuojami per kitą pusę smūgio. Taigi, beje, poreikis padaryti ALU dvigubai greitesnį yra lengvai suprantamas - tai būtina norint laiku „šlifuoti“ duomenis. Taigi per visą laikrodžio ciklą apskaičiuojami visi 32 bitai. Tiesą sakant, matyt, reikia 2 ciklų, nes reikia "suklijuoti" ir "atklijuoti" bitus, bet šį klausimą reikia išsiaiškinti. Tiesą sakant, kasinėjimai (apie kuriuos galite parašyti atskirą eilėraštį) davė štai ką: kiekvienas ALU padalintas į 2 16 bitų dalis. Pirmasis pusciklas apdoroja 16 bitų du skaičiai ir formos nešiojimo bitai kitoms pusėms. Kitos pusės apdorojimas šiuo metu baigiamas ankstesnis numeriai. Antra pažymėkite pirmą pusę ALU apdoroja 16 bitų nuo Kitas skaičių poras ir formuoja jų perkėlimus. Antroji pusė apdoroja viršutinius 16 bitų pirma pora skaičių ir gauna galutinį 32 bitų rezultatą. Vėlavimas gauti 1 rezultatą yra 1 laikrodžio ciklas, bet tada kas pusę laikrodžio ciklo yra 1 32 bitų rezultatas. Visai šmaikštus ir efektyvus. Kodėl pasirinktas būtent šis ALU modelis? Matyt, su tokia organizacija „Intel“ vienu akmeniu žudo kelis paukščius:

1. Akivaizdu, kad 16 bitų pločio konvejerį lengviau pagreitinti nei 32 bitų pločio konvejerį vien dėl to, kad yra skersinio pokalbio ir

2. Matyt, "Intel" manė, kad sveikųjų skaičių skaičiavimo operacijos yra pakankamai dažnos, kad pagreitintų ALU, o ne, tarkime, FPU. Tikėtina, kad skaičiuojant sveikųjų skaičių operacijų rezultatus, naudojamos arba lentelės, arba „carry-cumulated“ schemos. Palyginimui, viena 32 bitų lentelė yra 2E32 adresai, t.y. 4 gigabaitai. Dvi 16 bitų lentelės yra 2x64kb arba 128 kilobaitai, pajuskite skirtumą! Ir brūkšnelių kaupimas dviejose 16 bitų dalyse vyksta greičiau nei vienoje 32 bitų dalyje.

3. Taupo tranzistorius ir... šilumą. Juk ne paslaptis, kad visos šios architektūrinės gudrybės yra įkaitintos. Matyt, jis buvo gana didelis (o galbūt namai) problema ko verta, pavyzdžiui, kaip technologija Thermal Monitor! Galų gale, tokios technologijos nereikia, tai, žinoma, malonu, kad ji egzistuoja. Bet būkime atviri – pakankamam patikimumui užtektų ir paprasto blokavimo. Kadangi buvo numatyta tokia sudėtinga technologija, tai reiškia, kad ši galimybė buvo rimtai apsvarstyta, kai tokie dažnio pokyčiai kelyje buvo vienas iš įprastų darbo režimų. O gal pagrindinis? Ne veltui sklandė kalbos, kad „Pentium 4“ planuojama su daug didesniu pavarų skaičiumi. Tada šilumos problema tiesiog turėjo tapti pagrindine. O tiksliau, pagal tuos pačius gandus, šilumos išsiskyrimas turėjo būti iki 150 W. Ir tada labai logiška imtis priemonių, užtikrinančių, kad procesorius veiktų „visu pajėgumu“ tik sistemose, kuriose užtikrinamas normalus aušinimas. Be to, dauguma „kiniškos“ kilmės atvejų vėsinimo požiūriu neblizga apgalvotu dizainu. Hm... Mes nuėjome ilgą kelią :-)

Bet visa tai yra teorija. Ar šiandien yra procesorių, naudojančių šią technologiją? Valgyk. Tai Xeonas ( Prestonia) ir XeonMP. Be to, įdomu tai, kad XeonMP skiriasi nuo Xeon tuo, kad palaiko iki 4 procesorių ( mikroschemų rinkiniai, tokie kaip IBM Summit, palaiko iki 16 procesorių, technologija yra maždaug tokia pati kaip ir ProFusion mikroschemų rinkinyje) ir 512 KB ir 1 MB trečiojo lygio talpyklos, integruotos į branduolį, buvimas. Beje, kodėl jie integravo trečiojo lygio talpyklą? Kodėl pirmojo lygio talpykla nepadidinta?? Turi būti kokia nors pagrįsta priežastis... Kodėl jie nepadidino antrojo lygio talpyklos? Galbūt priežastis yra ta, kad išplėstinei perdavimo talpyklai reikia palyginti mažos delsos. O talpyklos dydžio padidinimas padidina delsą. Todėl trečiojo lygio talpykla pagrindiniam ir antrojo lygio talpykla paprastai „vaizduojama“ kaip magistralė. Tik padanga :-). Taigi pažanga akivaizdi – buvo padaryta viskas, kad duomenys būtų kuo greičiau įvesti į branduolį ( ir tuo pačiu metu atminties magistralė buvo apkrauta mažiau).

Na, pasirodo, ypatingų kliūčių nėra? Kodėl autorius negalės „murmėti“? Vienas procesorius – ir OS mato du. gerai! Du procesoriai ir OS mato 4! Grožis! Sustabdyti! Kokia OS veikia su 4 procesoriais? „Microsoft“ operacinės sistemos, kurios supranta daugiau nei du procesorius, kainuoja visiškai kitoks pinigų. Pavyzdžiui, 2000 Professional, XP Professional, NT4.0 supranta tik du procesorius. Ir atsižvelgiant į tai, kad kol kas ši technologija skirta darbo vietų rinkai ( ir serveriai) ir yra prieinamas tik atitinkamuose procesoriuose – pasirodo, tai tiesiog velniškai įžeidžianti. Šiandien procesorius su šia technologija galime naudoti tik įsigiję dviejų procesorių plokštę ir sumontavę vienas CPU. Kuo toliau, tuo keisčiau, kaip sakydavo Alisa Stebuklų šalyje... Tai reiškia, kad žmogus, norintis naudotis šia technologija, yra tiesiog priverstas pirkti dabartinių operacinių sistemų serverio ir išplėstinio serverio versijas. O ir „nemokamas“ procesorius kiek brangus... Galbūt verta pridurti, kad „Intel“ šiuo metu aktyviai „bendrauja“ su „Microsoft“, bandydama susieti licencijavimo politiką su fizinis procesorius. Bent jau pagal dokumentą naujos „Microsoft“ operacinės sistemos bus licencijuotos fizinio procesoriaus. Bent jau WindowsXP licencijuota pagal fizinių procesorių skaičių.

Natūralu, kad visada galite kreiptis į kitų gamintojų operacines sistemas. Būkime atviri – tai nėra labai gera išeitis iš esamos padėties... Taigi galima suprasti „Intel“ dvejones, kurios gana ilgai galvojo, naudoti šią technologiją ar ne.

Na, nepamirškime gana svarbios išvados: Naudojant „Hyper Threading“ gali padidėti ir sumažėti našumas. Na, o kadangi mes jau kalbėjome apie pralaimėjimą, pabandykime suprasti, ko reikia norint laimėti: o norint laimėti, būtina, kad jie žinotų apie šią technologiją:

  1. Pagrindinės plokštės BIOS
  2. Operacinė sistema (!!!)
  3. Tiesą sakant, pati programa

Leiskite man išsamiau pakalbėti apie tai, kad problema nėra BIOS. Šiek tiek anksčiau aptarėme operacinę sistemą. Bet tose gijose, kurios, pavyzdžiui, tikisi duomenų iš atminties, turėsite įvesti specialią komandą Pauzė, kad nesulėtėtų procesoriaus; juk nesant duomenų sriegis gali užblokuoti tam tikras pavaras. Ir norint įterpti šią komandą, programas reikės perkompiliuoti - tai nėra gerai, bet „Intel“ dėka neseniai visi pradėjo prie to priprasti :-). Taigi pagrindinis ( pasak autoriaus) Hyper Threading technologijos trūkumas yra kitos kompiliacijos poreikis. Pagrindinis šio metodo pranašumas yra toks perkompiliavimas pakeliui ( ir greičiausiai labiau pastebima :-) padidins „sąžiningų“ dviejų procesorių sistemų našumą ir tai galima tik sveikinti. Beje, jau yra eksperimentinių tyrimų, kurie patvirtina, kad in daugeliu atvejų programos, optimizuotos SMP, naudos iš Hyper Threading nuo 15% iki 18%. Tai gana gerai. Beje, taip pat galite pamatyti, kokiais atvejais „Hyper Threading“ sumažina našumą.

Ir galiausiai pabandykime įsivaizduoti, kas galėtų pasikeisti ( pagerinti) toliau plėtojant šią idėją. Visiškai akivaizdu, kad šios technologijos vystymasis bus tiesiogiai susijęs su Pentium 4 branduolio kūrimu Taigi įsivaizduokime galimus branduolio pokyčius. Kas toliau mūsų plane? 0,09 mikrono technologija, geriau žinoma kaip 90 nm…. Autorius linkęs tikėti ( šiuo metu), kad šios procesorių šeimos plėtra vyks keliomis kryptimis vienu metu:

  • Dėl „geresnio“ techninio proceso procesoriaus dažnis taps dar didesnis.
  • Tikėkimės, kad duomenų talpykla bus padidinta. Mažiausiai iki 32KB.
  • Jie sukurs „sąžiningą“ 32 bitų ALU. Tai turėtų pagerinti produktyvumą.
  • Padidinkite sistemos magistralės greitį ( tačiau tai jau netolimoje ateityje).
  • Jie sukurs dviejų kanalų DDR atmintį ( vėlgi laukti palyginti trumpai).
  • Galbūt jie pristatys x86-64 technologijos analogą, jei ši technologija ( AMD dėka) prigis. Tuo pačiu autorius iš visų jėgų tikisi, kad šis analogas bus suderinamas su x86-64. Nustokite kurti vienas su kitu nesuderinamus plėtinius... Vėlgi, mus sudomins Jerry Sandersas, kuriame jis teigė, kad AMD ir „Intel“ pernai susitarė dėl kryžminio licencijavimo viskam, išskyrus „Pentium4“ sistemos magistralę. Ar tai reiškia, kad „Intel“ sukurs x86-64 į kitą „Pentium4“ („Prescott“) branduolį, o AMD į savo procesorius įves „Hyper Threading“? Įdomus klausimas...
  • Galbūt bus padidintas pavarų skaičius. Tiesa, kaip ir ankstesnis, tai gana prieštaringas klausimas, nes tam reikia beveik visiškai perdaryti branduolį - ir tai yra ilgas ir daug darbo reikalaujantis procesas.

Įdomu, ar bus išplėtota „Hyper Threading“ idėja? Faktas yra tas, kad kiekybiškai nėra kur vystytis, aišku, kad du fiziniai procesoriai yra geresni už tris loginius. Taip, ir padėties nustatymas nebus lengvas... Įdomu tai, kad „Hyper Threading“ taip pat gali būti naudinga integruojant du ( arba daugiau) procesorių viename luste. Na, o kokybiniais pokyčiais autorius reiškia, kad tokios technologijos buvimas įprastuose staliniuose kompiuteriuose lems tai, kad iš tikrųjų dauguma vartotojų dirbs su [beveik] dviejų procesorių įrenginiais, o tai yra labai gerai. Tai gerai, nes tokios mašinos dirba daug sklandžiau ir labiau reaguoja į vartotojo veiksmus net ir esant didelei apkrovai. Tai, autoriaus požiūriu, yra labai gerai.

Vietoj pokalbio

Autorius turi pripažinti, kad dirbant prie straipsnio, jo požiūris į „Hyper Threading“ keitėsi kelis kartus. Renkant ir apdorojant informaciją požiūris tapo arba apskritai teigiamas, arba atvirkščiai :-). Šiuo metu galime rašyti taip:

Yra tik du būdai pagerinti našumą: padidinti dažnį ir padidinti našumą vienam laikrodžiui. Ir jei visa „Pentium4“ architektūra skirta pirmajam keliui, „Hyper Threading“ yra tik antrasis. Šiuo požiūriu tai galima tik sveikinti. „Hyper Threading“ taip pat turi keletą įdomių pasekmių, tokių kaip: programavimo paradigmos pakeitimas, kelių procesų perkėlimas į mases, procesoriaus našumo didinimas. Tačiau šiame kelyje yra keletas „didelių iškilimų“, ant kurių svarbu „neužstrigti“: normalios operacinių sistemų palaikymo trūkumas ir, svarbiausia, poreikis perkompiliuoti ( o kai kuriais atvejais – pakeitus algoritmą) programas, kad jos galėtų išnaudoti visas „Hyper Threading“ teikiamas galimybes. Be to, naudojant „Hyper Threading“ būtų galima iš tikrųjų paleisti operacinę sistemą ir programas lygiagrečiai, o ne „gabalais“ po vieną, kaip yra dabar. Žinoma, su sąlyga, kad yra pakankamai laisvų pavarų.

Autorius norėtų pabrėžti savo dėkingumą Maksimas Lenija(dar žinomas kaip C.A.R.C.A.S.S.) ir Ilja Vaitsmanas(dar žinomas kaip Stranger_NN) už pakartotinę ir neįkainojamą pagalbą rašant straipsnį.
Taip pat noriu padėkoti visiems forumo dalyviams, kurie ne kartą išsakė vertingų komentarų.

Hipersriegiavimas (hipersriegiavimas, „hipersriegiavimas“, hipersriegiavimas – rusiškai) – įmonės sukurta technologija Intel, leidžianti procesoriaus branduoliui vykdyti daugiau nei vieną (dažniausiai dvi) duomenų gijas. Kadangi buvo nustatyta, kad įprastas procesorius daugumoje užduočių naudoja ne daugiau kaip 70% visos skaičiavimo galios, buvo nuspręsta naudoti technologiją, kuri leidžia, kai tam tikri skaičiavimo vienetai neveikia, apkrauti juos darbu kita gija. Tai leidžia padidinti branduolio našumą nuo 10 iki 80 proc. priklausomai nuo užduoties.

Supratimas, kaip veikia „Hyper-Threading“. .

Tarkime, procesorius atlieka paprastus skaičiavimus ir tuo pačiu komandų blokas yra tuščiosios eigos ir SIMD plėtiniai.

Adresavimo modulis tai aptinka ir siunčia duomenis tolesniam skaičiavimui. Jei duomenys yra konkretūs, šie blokai juos vykdys lėčiau, tačiau duomenys nebus nenaudojami. Arba jie iš anksto apdoros juos tolesniam greitam apdorojimui atitinkamame bloke. Tai suteikia papildomo našumo padidėjimo.

Natūralu, kad virtualioji gija nepasiekia visaverčio branduolio, tačiau tai leidžia pasiekti beveik 100% skaičiavimo galios efektyvumą, apkraunant beveik visą procesorių darbu, neleidžiant jam neveikti. Su visu tuo, įdiegti HT technologiją užtrunka tik apie 5% papildomos vietos luste, o našumas kartais gali būti padidintas 50% . Ši papildoma sritis apima papildomus registrų blokus ir šakų prognozes, kurios apskaičiuoja, kur šiuo metu gali būti naudojama skaičiavimo galia, ir siunčia duomenis iš papildomo adresavimo bloko.

Pirmą kartą ši technologija pasirodė procesoriuose Pentium 4, tačiau didelio našumo padidėjimo nebuvo, nes pats procesorius neturėjo didelės skaičiavimo galios. Padidėjimas buvo geriausiu atveju 15-20% , o daugelyje užduočių procesorius veikė daug lėčiau nei be jo HT.

Lėčiau procesorius dėl technologijos Hiper Threading, įvyksta, jei:

  • Nepakankamos talpyklos dėl viso to ir jis cikliškai persikrauna, sulėtindamas procesorių.
  • Šakos prognozuotojas negali tinkamai apdoroti duomenų. Atsiranda daugiausia dėl optimizavimo trūkumas tam tikrai programinei įrangai arba operacinės sistemos palaikymui.
  • Taip pat gali atsirasti dėl duomenų priklausomybės, kai, pavyzdžiui, pirmajai gijai reikia nedelsiant pateikti antrosios gijos duomenis, bet ji dar neparengta arba yra eilėje į kitą giją. Arba cikliniams duomenims reikia tam tikrų blokų, kad būtų galima greitai apdoroti, ir jie įkeliami kitais duomenimis. Gali būti daug duomenų priklausomybės variantų.
  • Jei branduolys jau labai apkrautas, o „nepakankamai protingas“ atšakos numatymo modulis vis tiek siunčia duomenis, kurie sulėtina procesorių (aktualu Pentium 4).

Po to Pentium 4, Intel pradėjo naudoti technologijas tik nuo Core i7 pirmosios kartos, praleidžiant seriją 2 .

Procesorių skaičiavimo galia tapo pakankama visiškam hipergijos įgyvendinimui be didelės žalos, net ir neoptimizuotoms programoms. Vėliau Hipersriegiavimas pasirodė vidutinės klasės ir net biudžetiniuose bei nešiojamuose procesoriuose. Naudotas visose serijose Core i (i3; i5; i7) ir mobiliuosiuose procesoriuose Atom(visai ne). Įdomu tai, kad dviejų branduolių procesoriai su HT, naudojant didesnį našumą nei keturių branduolių Hipersriegiavimas, stovi ant 75% visavertis keturbranduolinis.

Kur naudinga HyperThreading technologija?

Tai bus naudinga naudoti kartu su profesionaliomis, grafinėmis, analitinėmis, matematinėmis ir mokslinėmis programomis, vaizdo ir garso redaktoriais, archyvatoriais ( „Photoshop“, „Corel Draw“, „Maya“, „3D's Max“, „WinRar“, „Sony Vegas“. ir tt). Visos programos, kurios naudoja daug skaičiavimų, HT tikrai bus naudinga ir naudinga. Laimei, į 90% atvejų tokios programos yra gerai optimizuotos jo naudojimui.

HiperThreading būtini serverių sistemoms. Tiesą sakant, jis buvo iš dalies sukurtas šiai nišai. Ačiū HT, galite žymiai padidinti procesoriaus išvestį, kai yra daug užduočių. Kiekviena gija bus iškraunama per pusę, o tai turi teigiamą poveikį duomenų adresavimui ir šakų numatymui.

Daug Kompiuteriniai žaidimai, turi neigiamą požiūrį į buvimą Hipersriegiavimas, dėl ko mažėja kadrų per sekundę skaičius. Taip yra dėl to, kad trūksta optimizavimo Hipersriegiavimas iš žaidimo pusės. Vien operacinės sistemos optimizavimo ne visada pakanka, ypač dirbant su neįprastais, įvairiais ir sudėtingais duomenimis.

Pagrindinėse plokštėse, kurios palaiko HT, visada galite išjungti hipergijos technologiją.

Sveiki kompiuterių ir techninės įrangos mylėtojai.

Ar norėtumėte savo kompiuteryje turėti didelio našumo procesorių, galintį vienu metu žaibišku greičiu atlikti daug užduočių? Kas atsisakytų, tiesa? Tada siūlau susipažinti su hipersriegimo technologija: kas tai yra ir kaip ji veikia, sužinosite iš šio straipsnio.


Sąvokos paaiškinimas

„Hyper-threading“ iš anglų kalbos išverstas kaip „hiper tikslumas“. Technologija gavo tokį garsų pavadinimą dėl priežasties. Juk operacinė sistema vieną su juo aprūpintą fizinį procesorių paima kaip du loginius branduolius. Todėl daugiau komandų apdorojama be jokio poveikio našumui.

Kaip tai įmanoma? Dėl to, kad procesorius:

  • Išsaugo informaciją apie kelias einamąsias gijas vienu metu;
  • Kiekvienam loginiam procesoriui yra vienas registrų rinkinys - greitos vidinės atminties blokai, taip pat vienas pertraukų blokas. Pastarasis yra atsakingas už nuoseklų užklausų iš skirtingų įrenginių vykdymą.

Kaip tai atrodo praktikoje? Tarkime, kad fizinis procesorius dabar apdoroja komandas iš pirmojo loginio procesoriaus. Tačiau pastarajame įvyko kažkoks gedimas ir, pavyzdžiui, reikia laukti duomenų iš atminties. Fizinis negaiš laiko ir iškart pereis prie antrojo loginio procesoriaus.

Apie produktyvumo didinimą

Fizinio procesoriaus efektyvumas, kaip taisyklė, yra ne didesnis kaip 70%. Kodėl? Dažnai kai kurie blokai yra tiesiog nereikalingi tam tikrai užduočiai atlikti. Pavyzdžiui, kai CPU atlieka trivialius skaičiavimo veiksmus, komandų blokas ir SIMD plėtiniai nenaudojami. Taip atsitinka, kad gedimas įvyksta šakos numatymo modulyje arba pasiekiant talpyklą.

Tokiose situacijose „Hyper-threading“ užpildo „spragas“ kitomis užduotimis. Taigi technologijos efektyvumas slypi tame, kad naudingas darbas nebūna tuščias ir atiduodamas neaktyviems įrenginiams.

Atsiradimas ir įgyvendinimas

Galime manyti, kad „Hyper-threading“ jau atšventė 15 metų jubiliejų. Juk jis buvo sukurtas super-threading technologijos pagrindu, kuri buvo išleista 2002 metais ir iš pradžių pradėjo veikti Xeon gaminiuose, o tais pačiais metais buvo integruota į Pentium 4. Šių technologijų autorių teisės priklauso Intel.

HT yra įdiegtas procesoriuose, kuriuose veikia NetBurst mikroarchitektūra, kuri pasižymi dideliu taktiniu greičiu. Technologijų palaikymas įdiegtas Core vPro, M ir Xeon šeimų modeliuose. Tačiau Core 2 serija („Duo“, „Quad“) nėra integruota. Panaši veikimo principu technologija įdiegta Atom ir Itanium procesoriuose.

Kaip jį įjungti? Turite turėti ne tik vieną iš minėtų procesorių, bet ir operacinę sistemą, palaikančią technologiją bei BIOS, turinčią galimybę įjungti ir išjungti HT. Jei ne, atnaujinkite BIOS.

„Hyper-threading“ privalumai ir trūkumai

Galbūt jau supratote apie kai kuriuos technologijos pranašumus iš anksčiau pateiktos informacijos. Prie jų pridėsiu dar porą žodžių:

  • Stabilus kelių programų veikimas lygiagrečiai;
  • Sutrumpintas atsako laikas naršant internete arba dirbant su programomis.

Kaip suprantate, buvo musė tepalu. Našumas gali nepadidėti dėl šių priežasčių:

  • Nepakanka talpyklos atminties. Pavyzdžiui, 4 branduolių i7 procesoriai turi 8 MB talpyklą, bet tiek pat loginių branduolių. Vienam branduoliui gauname tik 1 MB, o to daugumai programų nepakanka skaičiavimo užduotims atlikti. Dėl šios priežasties produktyvumas ne tik stovi vietoje, bet netgi krenta.

  • Priklausomybė nuo duomenų. Tarkime, pirmajai gijai iš karto reikia informacijos iš antrosios, bet ji dar nėra paruošta arba yra kitoje gijoje. Taip pat atsitinka, kad cikliniams duomenims reikia tam tikrų blokų, kad būtų galima greitai atlikti užduotį, tačiau jie jau yra užimti kitais darbais.
  • Branduolio perkrova. Taip atsitinka, kad branduolys jau gali būti perkrautas, tačiau nepaisant to, numatymo modulis vis tiek siunčia į jį duomenis, dėl ko kompiuteris pradeda lėtėti.

Kur reikalingas hipersriegis?

Technologija pravers naudojant daug resursų reikalaujančias programas: garso, vaizdo ir nuotraukų redaktorius, žaidimus, archyvus. Tai apima „Photoshop“, „Maya“, „3D's Max“, „Corel Draw“, „WinRar“ ir kt.

Svarbu, kad programinė įranga būtų optimizuota dirbti su „Hyper-threading“. Priešingu atveju gali atsirasti vėlavimų. Faktas yra tas, kad programos loginius branduolius laiko fiziniais, todėl į tą patį bloką gali siųsti skirtingas užduotis.

Laukiame jūsų apsilankant mano tinklaraštyje.

2002 m. vasario mėn. debiutavo „Intel“ patentuota technologija „Hyper-Threading“. Kas tai yra ir kodėl šiandien ji tapo beveik visuotine? Atsakymas į šį klausimą ir dar daugiau bus aptartas šioje medžiagoje.

HT technologijos atsiradimo istorija

Pirmasis stalinio kompiuterio procesorius, palaikantis loginį kelių gijų ryšį, buvo ketvirtos kartos Pentium. „Hyper-Threading“ yra technologija, kuri šiuo atveju leido apdoroti du duomenų srautus vienu metu viename fiziniame branduolyje. Be to, ši mikroschema buvo įdiegta PGA478 procesoriaus lizde, veikė 32 bitų skaičiavimo režimu, o jo taktinis dažnis buvo 3,06 GHz. Prieš tai jį buvo galima rasti tik XEON serijos serverių procesorių įrenginiuose.

Pasiekusi sėkmingų rezultatų šioje nišoje, „Intel“ nusprendė išplėsti HT į stalinių kompiuterių segmentą. Vėliau PGA478 buvo išleista visa tokių procesorių šeima. Po LGA775 lizdo debiutavimo NT buvo laikinai pamirštas. Tačiau prasidėjus LGA1156 pardavimui, 2009 m. jis gavo antrą vėją. Nuo tada jis tapo privalomu „Intel“ procesorių sprendimų atributu tiek itin didelio našumo segmente, tiek biudžetinėse kompiuterių sistemose.

Šios technologijos koncepcija

Intel Hyper-Threading technologijos esmė yra ta, kad minimaliai pakeitę mikroprocesoriaus įrenginio išdėstymą, kūrėjai užtikrina, kad sistemos ir programinės įrangos lygiu kodas būtų apdorojamas dviem gijomis vienoje fizinėje šerdyje. Visi skaičiavimo modulio elementai lieka nepakitę, pridedami tik specialūs registrai ir perdarytas pertraukų valdiklis.

Jei dėl kokių nors priežasčių fizinis skaičiavimo modulis pradeda neveikti, tada jame paleidžiama antra programos gija, o pirmoji laukia, kol bus gauti reikalingi duomenys ar informacija. Tai yra, jei anksčiau lustų skaičiavimo dalies veikimo prastovos buvo gana dažnos, „Hyper-Threading“ šią galimybę beveik visiškai pašalina. Pažiūrėkime, kokia yra ši technologija.

Aparatūros lygiu

Naudojant Hyper-Threading aparatūrai keliami didesni reikalavimai. Ją turi palaikyti pagrindinė plokštė, BIOS ir procesorius. Bent jau PGA478 procesoriaus lizde tokiam suderinamumui reikėjo skirti ypatingą dėmesį. Ne visi sistemos logikos rinkiniai šiuo atveju buvo orientuoti į NT naudojimą, kaip ir procesorių įrenginiai. Ir net jei toks trokštamas santrumpa buvo pagrindinės plokštės nomenklatūroje, tai visiškai nereiškė, kad lustai buvo tinkamai inicijuoti dėl to, kad reikėjo atnaujinti BIOS.

Situacija šiuo atveju labai pasikeitė nuo LGA1156. Ši skaičiavimo platforma iš pradžių buvo sukurta naudoti Hyper-Threading. Todėl šiuo atveju vartotojai nesusidūrė su reikšmingomis pastarojo naudojimo problemomis. Tas pats pasakytina apie vėlesnius procesoriaus lizdus, ​​tokius kaip LGA1155, LGA1151 ir LGA1150.

Didelio našumo lizdai LGA1366, LGA2011 ir LGA2011-v3 galėtų pasigirti panašiu HT naudojimo problemų trūkumu. Be to, tiesioginis „Intel“ konkurentas AMD įdiegė labai panašią loginę daugiafunkcinę technologiją – SMT – naujausios kartos savo AM4 procesoriuose. Jame naudojama beveik identiška koncepcija. Vienintelis skirtumas yra pavadinime.

Pagrindiniai komponentai iš programinės įrangos pusės

Reikėtų pažymėti, kad net jei NT yra visiškai palaikomas aparatinės įrangos išteklių, jis ne visada sėkmingai veiks programinės įrangos lygiu. Pirmiausia operacinė sistema turi turėti galimybę vienu metu dirbti su keliais skaičiavimo branduoliais. Šiandieninės pasenusios MS-DOS arba Windows 98 sistemos programinės įrangos versijos šios funkcijos neturi. Tačiau „Windows 10“ atveju problemų nekyla, o ši operacinė sistema jau iš pradžių skirta tokiems asmeninio kompiuterio aparatūros ištekliams.

Dabar išsiaiškinkime, kaip įjungti „Hyper-Threading“ sistemoje „Windows“ Norėdami tai padaryti, kompiuteryje turi būti įdiegta visa reikalinga valdymo programinė įranga. Paprastai tai yra speciali pagrindinės plokštės kompaktinio disko programa. Jame yra specialus skirtukas, kuriame galite keisti BIOS reikšmes realiuoju laiku. Tai, savo ruožtu, lemia tai, kad joje esanti parinktis „Hyper-Threading“ pereina į „Enabled“ padėtį ir suaktyvinamos papildomos loginės gijos, net ir neperkraunant operacinės sistemos.

Įgalinimo technologija

Daugelis pradedančiųjų vartotojų gana dažnai pradiniame naujo kompiuterio naudojimo etape užduoda vieną svarbų klausimą apie „Hyper-Threading“: kaip jį įjungti? Yra du galimi šios problemos sprendimo būdai. Vienas iš jų yra BIOS naudojimas. Tokiu atveju turite atlikti šiuos veiksmus:

  • Kai įjungiate kompiuterį, inicijuojame įėjimo į BIOS procedūrą. Norėdami tai padaryti, tiesiog laikykite nuspaudę mygtuką DEL, kai pasirodys bandymo ekranas (kai kuriais atvejais reikia palaikyti F2).
  • Kai pasirodys mėlynas ekranas, naršymo mygtukais eikite į skirtuką IŠPLĖSTINĖ.
  • Tada jame randame elementą „Hyper-Threading“.
  • Priešingai, turite nustatyti reikšmę į Įjungta.

Pagrindinis šio metodo trūkumas yra tai, kad norint atlikti šią operaciją, reikia iš naujo paleisti asmeninį kompiuterį. Tikra alternatyva yra naudoti pagrindinės plokštės konfigūravimo įrankį. Šis metodas buvo išsamiai aprašytas ankstesniame skyriuje. Ir šiuo atveju visai nebūtina įvesti BIOS.

NT išjungimas

Analogiškai su NT įjungimo būdais yra du būdai išjungti šią funkciją. Vieną iš jų galima atlikti tik kompiuterinės sistemos inicijavimo metu. Tai, savo ruožtu, nėra visiškai patogu praktikoje. Todėl ekspertai pasirenka antrąjį metodą, kuris pagrįstas kompiuterio naudingumo naudojimu pagrindinėje plokštėje. Pirmuoju atveju atliekamos šios manipuliacijos:

  1. Įkeldami elektroninį kompiuterį, pagal anksčiau aprašytą metodą pereiname į pagrindinę įvesties-išvesties sistemą (antrasis jos pavadinimas yra BIOS).
  2. Naudodami žymeklio klavišus pereiname į meniu elementą Išplėstinė.
  3. Tada turite rasti meniu elementą „Hyper-Threading“ (kai kuriuose pagrindinės plokštės modeliuose jis gali būti pažymėtas kaip HT). Priešais jį, naudodami mygtukus PG DN ir PG UP, nustatykite reikšmę į Išjungta.
  4. Nugriautus pakeitimus išsaugome naudodami F10.
  5. Išeikite iš BIOS ir iš naujo paleiskite asmeninį kompiuterį.

Antruoju atveju, naudojant pagrindinės plokštės diagnostikos įrankį, nereikia iš naujo paleisti kompiuterio. Tai yra pagrindinis jo pranašumas. Algoritmas šiuo atveju yra identiškas. Skirtumas tas, kad jis naudoja iš anksto įdiegtą specialią pagrindinės plokštės gamintojo programą.

Anksčiau buvo aprašyti du pagrindiniai Hyper-Threading išjungimo būdai. Nors antrasis iš jų nominaliai laikomas sudėtingesniu, jis yra praktiškesnis dėl to, kad nereikia iš naujo paleisti kompiuterio.

Procesorių modeliai, palaikantys NT

Iš pradžių, kaip minėta anksčiau, „Hyper-Threading“ palaikymas buvo įdiegtas tik „Pentium 4“ serijos procesorių įrenginiuose ir tik PGA478 versijoje. Tačiau jau LGA1156 ir vėlesnių skaičiavimo platformų rėmuose šioje medžiagoje aptarta technologija buvo naudojama beveik visuose įmanomuose lustų modeliuose. Su jo pagalba „Celeron“ procesoriai iš vieno branduolio virto dviejų gijų sprendimu. Savo ruožtu Penrium ir i3 su jo pagalba jau galėjo apdoroti 4 kodų srautus. Na, o pavyzdiniai i7 serijos sprendimai gali vienu metu dirbti su 8 loginiais procesoriais.

Siekiant aiškumo, pristatome NT naudojimą dabartinėje „Intel“ skaičiavimo platformoje – LGA1151:

  • Celeron serijos CPU nepalaiko šios technologijos ir turi tik 2 skaičiavimo blokus.
  • Pentium linijos lustuose yra 2 branduoliai ir keturi sriegiai. Dėl to NT šiuo atveju yra visiškai palaikoma.
  • Galingesni Core i3 modelių asortimento procesorių įrenginiai turi panašų išdėstymą: 2 fiziniai moduliai gali veikti 4 gijomis.
  • Kaip ir dauguma nebrangių „Celeron“ lustų, „Core i5“ neturi HT palaikymo.
  • Pavyzdiniai i7 sprendimai taip pat palaiko HT. Tik šiuo atveju vietoj 2 tikrų branduolių jau yra 4 kodų apdorojimo įrenginiai. Jie, savo ruožtu, jau gali dirbti 8 gijomis.

„Hyper-Threading“ – kas yra ši technologija ir koks jos pagrindinis tikslas? Tai yra logiškas kelių užduočių atlikimas, leidžiantis minimaliais techninės įrangos koregavimais padidinti visos kompiuterinės sistemos našumą.

Kokiais atvejais geriausia naudoti šią technologiją?

Kai kuriais atvejais, kaip minėta anksčiau, NT padidina procesoriaus programos kodo apdorojimo greitį. „Hyper-Threading“ gali efektyviai veikti tik naudojant karštą programinę įrangą. Tipiški pavyzdžiai yra vaizdo ir garso kodavimo įrenginiai, profesionalūs grafikos paketai ir archyvatoriai. Be to, tokios technologijos buvimas gali žymiai pagerinti serverio sistemos našumą. Tačiau naudojant vienos gijos programos kodą, „Hyper-Threading“ buvimas yra išlygintas, tai yra, jūs gaunate įprastą procesorių, kuris išsprendžia vieną užduotį viename šerdyje.

Privalumai ir trūkumai

„Intel Hyper-Threading“ technologija turi tam tikrų trūkumų. Pirmasis iš jų yra padidėjusi procesoriaus kaina. Tačiau didesnis greitis ir patobulintas silicio lusto išdėstymas bet kokiu atveju padidins procesoriaus kainą. Be to, padidėjęs procesoriaus įrenginio puslaidininkinio pagrindo plotas padidina energijos suvartojimą ir temperatūrą. Skirtumas šiuo atveju yra nereikšmingas ir neviršija 5%, tačiau jis vis dar egzistuoja. Kitų reikšmingų trūkumų šiuo atveju nėra.

Dabar apie naudą. „Intel“ patentuota NT technologija neturi įtakos našumui ir našumui, tai yra, toks kompiuteris negalės nukristi žemiau tam tikros ribos. Jei programinė įranga puikiai palaiko lygiagretųjį skaičiavimą, bus tam tikras greitis ir, žinoma, produktyvumas.

Testai rodo, kad kai kuriais atvejais padidėjimas gali siekti 20 proc. Šiuo atveju labiausiai optimizuota programinė įranga yra įvairūs daugialypės terpės turinio perkodatoriai, archyvatoriai ir grafikos paketai. Bet su žaidimais viskas nėra taip gerai. Jie, savo ruožtu, gali veikti 4 gijomis, ir dėl to flagmanų lustai šiuo atveju negali pranokti vidutinio lygio procesorių sprendimų.

Šiuolaikinė AMD alternatyva

„Hyper-Threading“ technologija šiandien nėra vienintelė tokia. Ji turi realią alternatyvą. Išleisdama AM4 platformą, AMD pasiūlė jai vertą konkurentą SMT pavidalu. Techninės įrangos lygmeniu tai yra identiški sprendimai. Tik flagmanas iš Intel gali apdoroti 8 gijas, o pirmaujantis AMD lustas – 16. Jau vien ši aplinkybė rodo, kad antrasis sprendimas yra perspektyvesnis.

Todėl „Intel“ yra priversta skubiai koreguoti savo produktų išleidimo planus ir pasiūlyti visiškai naujus procesorių sprendimus, galinčius konkuruoti su naujokais iš AMD. Tik šiandien jos dar nepertvarkytos. Todėl, jei jums reikia prieinamos kompiuterio platformos, geriau pasirinkti „Intel“ LGA1151. Jei jums reikia padidinti našumą, geriau būtų AM4 iš AMD.

Buvo laikas, kai reikėjo įvertinti atminties našumą Hyper-threading technologijos kontekste. Priėjome išvados, kad jos įtaka ne visada yra teigiama. Atsiradus laisvo laiko kvantui, atsirado noras tęsti tyrimus ir nagrinėti vykstančius procesus mašininio laikrodžio ciklų ir bitų tikslumu, naudojant mūsų pačių sukurtą programinę įrangą.

Tiriama platforma

Eksperimentų objektas – ASUS N750JK nešiojamas kompiuteris su Intel Core i7-4700HQ procesoriumi. Laikrodžio dažnis 2,4 GHz, padidintas Intel Turbo Boost režimu iki 3,4 GHz. Įdiegta 16 gigabaitų DDR3-1600 RAM (PC3-12800), veikianti dviejų kanalų režimu. Operacinė sistema – Microsoft Windows 8.1 64 bit.

1 pav. Tiriamos platformos konfigūracija.

Tiriamos platformos procesoriuje yra 4 branduoliai, kurie, įjungus Hyper-Threading technologiją, suteikia techninės įrangos palaikymą 8 gijomis arba loginiams procesoriams. Platformos programinė įranga perduoda šią informaciją operacinei sistemai per ACPI lentelę MADT (Multiple APIC Description Table). Kadangi platformoje yra tik vienas RAM valdiklis, nėra SRAT (System Resource Affinity Table), kuri deklaruotų procesoriaus branduolių artumą prie atminties valdiklių. Akivaizdu, kad tiriamas nešiojamas kompiuteris nėra NUMA platforma, tačiau operacinė sistema, siekdama suvienodinimo, laiko jį NUMA sistema su vienu domenu, kaip rodo eilutė NUMA Nodes = 1. Faktas, kuris yra esminis mūsų Eksperimentai rodo, kad pirmojo lygio duomenų talpyklos dydis yra 32 kilobaitai kiekvienam iš keturių branduolių. Du loginiai procesoriai, turintys vieną branduolį, dalijasi L1 ir L2 talpyklomis.

Tiriama operacija

Ištirsime duomenų bloko skaitymo greičio priklausomybę nuo jo dydžio. Norėdami tai padaryti, pasirinksime produktyviausią metodą, ty 256 bitų operandų skaitymą naudodami AVX instrukciją VMOVAPD. Grafikuose X ašis rodo bloko dydį, o Y ašis – skaitymo greitį. Aplink tašką X, kuris atitinka L1 talpyklos dydį, tikimės pamatyti posūkio tašką, nes našumas turėtų sumažėti, kai apdorotas blokas paliks talpyklos ribas. Mūsų bandymo metu, kai atliekamas kelių gijų apdorojimas, kiekviena iš 16 inicijuotų gijų veikia su atskiru adresų diapazonu. Norint valdyti Hyper-Threading technologiją programoje, kiekviena gija naudoja SetThreadAffinityMask API funkciją, kuri nustato kaukę, kurioje vienas bitas atitinka kiekvieną loginį procesorių. Vieno bito reikšmė leidžia nurodytam procesorių naudoti tam tikrai gijai, o nulinė reikšmė – draudžia. 8 tiriamos platformos loginiams procesoriams kaukė 11111111b leidžia naudoti visus procesorius (Hyper-Threading įjungtas), kaukė 01010101b leidžia naudoti po vieną loginį procesorių kiekviename branduolyje (Hyper-Threading išjungtas).

Grafikuose naudojamos šios santrumpos:

MBPS (megabaitai per sekundę)blokuoti skaitymo greitį megabaitais per sekundę;

CPI (laikrodžiai pagal nurodymus)laikrodžio ciklų skaičius vienai komandai;

TSC (laiko žymų skaitiklis)CPU ciklo skaitiklis.

Pastaba: TSC registro laikrodžio greitis gali neatitikti procesoriaus laikrodžio greičio, kai veikia Turbo Boost režimu. Į tai reikia atsižvelgti interpretuojant rezultatus.

Dešinėje grafikų pusėje vizualizuojamas šešioliktainis instrukcijų, sudarančių kiekvienoje programos gijoje vykdomos tikslinės operacijos ciklo turinį, arba pirmųjų 128 šio kodo baitų išmetimas.

Patirtis Nr.1. Vienas siūlas



2 pav Vienos gijos skaitymas

Didžiausias greitis yra 213563 megabaitai per sekundę. Posūkio taškas atsiranda esant maždaug 32 kilobaitų bloko dydžiui.

Patirtis Nr.2. 16 gijų 4 procesoriuose, Hyper-Threading išjungtas



3 pav Skaitymas su šešiolika gijų. Naudojamų loginių procesorių skaičius yra keturi

Hyper-Threading išjungtas. Maksimalus greitis yra 797598 megabaitai per sekundę. Posūkio taškas atsiranda esant maždaug 32 kilobaitų bloko dydžiui. Kaip ir tikėtasi, lyginant su skaitymu viena gija, greitis padidėjo maždaug 4 kartus, atsižvelgiant į veikiančių branduolių skaičių.

Patirtis Nr.3. 16 gijų 8 procesoriuose, įjungtas „Hyper-Threading“.



4 pav Skaitymas su šešiolika gijų. Naudojamų loginių procesorių skaičius yra aštuoni

„Hyper-Threading“ įjungta. Maksimalus greitis yra 800 722 megabaitai per sekundę, įjungus „Hyper-Threading“, jis beveik nepadidėjo. Didelis minusas yra tas, kad vingio taškas atsiranda esant maždaug 16 kilobaitų bloko dydžiui. „Hyper-Threading“ įjungimas šiek tiek padidino maksimalų greitį, tačiau dabar greičio kritimas įvyksta perpus mažesnio bloko dydžio – apie 16 kilobaitų, todėl vidutinis greitis gerokai sumažėjo. Tai nenuostabu, kiekvienas branduolys turi savo L1 talpyklą, o to paties branduolio loginiai procesoriai ja dalijasi.

išvadas

Operacija gana gerai ištyrė svarstykles kelių branduolių procesoriuje. Priežastys: Kiekviename branduolyje yra atskira L1 ir L2 talpykla, tikslinio bloko dydis yra panašus į talpyklos dydį, o kiekviena gija veikia su savo adresų diapazonu. Akademiniais tikslais šias sąlygas sukūrėme atlikdami sintetinį testą, pripažindami, kad realaus pasaulio taikomosios programos paprastai toli gražu nėra idealios. Tačiau „Hyper-Threading“ įjungimas net ir tokiomis sąlygomis turėjo neigiamą poveikį, šiek tiek padidinus didžiausią greitį, smarkiai sumažėja blokų, kurių dydis svyruoja nuo 16 iki 32 kilobaitų, apdorojimo greitis.
mob_info