Hyper V režim utiče na performanse računara. Hyper-Threading - šta je to? Kako omogućiti Hyper-Threading? Kako radi Hyper-Threading

„...I mi smo ponosni i naš neprijatelj je ponosan
Ruko, zaboravi na lenjost. da vidimo,
ko ima čije čizme na kraju
konačno će pokleknuti..."
© film "D"Artagnan i tri musketara"

Prije nekog vremena, autor je dozvolio sebi da “malo gunđa” o novoj paradigmi iz Intel Hyper Threadinga. Svaka čast Intelu, zbunjenost autora nije prošla nezapaženo. Stoga je autoru ponuđena pomoć u pronalaženju ( kako su menadžeri korporacije delikatno procijenili) "stvarna" situacija sa Hyper Threading tehnologijom. Pa, želja da se sazna istina može se samo pohvaliti. Zar nije tako, dragi čitaoče? Barem, ovako zvuči jedna od istina: istina to je dobro. Pa, pokušaćemo da se ponašamo u skladu sa ovom frazom. Štaviše, izvjesna količina novih informacija se zaista pojavila.

Prvo, hajde da formulišemo šta tačno znamo o tehnologiji Hyper Threading:

1. Ova tehnologija je dizajnirana da poveća efikasnost procesora. Činjenica je da, prema procjenama Intela, samo 30% vremena radi ( Inače, ovo je prilično kontroverzna cifra;) svih aktuatora u procesoru. Slažem se, ovo je prilično uvredljivo. A činjenica da je nastala ideja da se nekako "zbroji" preostalih 70% izgleda sasvim logično ( Štaviše, sam procesor Pentium 4, u koji će ova tehnologija biti implementirana, ne pati od pretjeranih performansi po megahercu). Stoga je autor primoran priznati da je ova ideja sasvim zdrava.

2. Suština Hyper Threading tehnologije je da tokom izvršavanja jedne "niti" programa, neaktivni izvršni uređaji mogu početi izvršavati drugu "nit" programa ( ili "niti" drugi programe). Ili, na primjer, kada izvršavate jednu sekvencu naredbi, pričekajte da podaci iz memorije izvrše drugu sekvencu.

3. Naravno, kada izvršava različite „niti“, procesor mora nekako razlikovati koje komande pripadaju kojoj „niti“. To znači da postoji neki mehanizam ( neka marka), zahvaljujući čemu procesor razlikuje kojoj „niti“ komande pripadaju.

4. Takođe je jasno da, s obzirom na mali broj registara opšte namene u x86 arhitekturi ( ukupno 8), svaka nit ima svoj skup registara. Međutim, ovo više nije vijest, ovo arhitektonsko ograničenje se zaobilazi već neko vrijeme korištenjem „preimenovanja registra“. Drugim riječima, postoji mnogo više fizičkih nego logičkih registara. Ima ih 40 u procesoru Pentium III. Sigurno je da je ovaj broj veći za Pentium 4. osim zbog razmatranja "simetrije":-) Mišljenje je da ih ima na stotine. Nisu pronađeni pouzdani podaci o njihovom broju. Prema još nepotvrđenim podacima, ima ih 256. Prema drugim izvorima, drugi broj. Generalno, potpuna neizvjesnost... Usput, Intelov stav na ovo razlog je potpuno neshvatljiv :-( Autor ne razumije šta je uzrokovalo takvu tajnovitost.

5. Takođe je poznato da u slučaju kada nekoliko „niti“ zahteva iste resurse, ili jedna „nit“ čeka podatke, kako bi se izbegao pad performansi, programer mora da unese posebnu „pauzu“ komanda. Naravno, ovo će zahtijevati još jednu rekompilaciju programa.

6. Takođe je jasno da mogu postojati situacije u kojima će pokušaji istovremenog izvršavanja nekoliko „niti“ dovesti do pada performansi. Na primjer, zbog činjenice da veličina L2 keš memorije nije beskonačna, a aktivne "niti" će pokušati učitati keš memoriju, moguće je da će takva "borba za keš" dovesti do stalnog brisanja i ponovnog učitavanja podaci u kešu drugog nivoa.

7. Intel tvrdi da će pri optimizaciji programa za ovu tehnologiju dobit biti do 30%. ( Tačnije, Intel tvrdi da na današnjim serverskim aplikacijama i današnjim sistemima do 30%) Hm.... Ovo je više nego dovoljan poticaj za optimizaciju.

Pa, formulirali smo neke karakteristike. Pokušajmo sada razmisliti o nekim implikacijama ( kad god je to moguće, na osnovu nama poznatih informacija). šta možemo reći? Pa, prvo, trebamo bolje pogledati šta nam se tačno nudi. Da li je ovaj sir zaista "besplatan"? Prvo, hajde da shvatimo kako će se tačno desiti „istovremena“ obrada nekoliko „niti“. Usput, šta Intel znači pod riječju "nit"?

Autor ima utisak ( moguće pogrešno), što se u ovom slučaju odnosi na fragment programa koji operativni sistem za više zadataka dodeljuje za izvršenje jednom od procesora višeprocesorskog hardverskog sistema. "Čekaj!" pažljivi čitalac će reći "ovo je jedna od definicija?" I ništa unutra dato Autor ne tvrdi originalnost u ovom pitanju. Voleo bih da shvatim šta je Intel "original" :-). Pa, uzmimo to kao radnu hipotezu.

Zatim se izvršava određena nit. U međuvremenu, komandni dekoder ( usput, potpuno asinkrono i nije uključeno u ozloglašenih 20 faza Net Burst-a) vrši uzorkovanje i dešifriranje ( sa svim međuzavisnostima) V mikroinstrukcije. Ovdje je potrebno razjasniti što autor misli pod riječju "asinhroni" - činjenica je da se rezultat "kolapsa" x86 naredbi u mikroinstrukcijama javlja u bloku za dešifriranje. Svaka x86 instrukcija može se dekodirati u jednu, dvije ili više mikroinstrukcija. Istovremeno, u fazi obrade, razjašnjavaju se međuzavisnosti i dostavljaju se potrebni podaci preko sistemske magistrale. U skladu s tim, brzina rada ovog bloka često će ovisiti o brzini pristupa podacima iz memorije i, u najgorem slučaju, njome je određena. Bilo bi logično da se „odveže“ od cevovoda u kojem se, zapravo, izvode mikrooperacije. To je učinjeno postavljanjem bloka za dešifriranje prije keš za praćenje. Šta ovim postižemo? A uz pomoć ovog „preuređivanja blokova“ postižemo jednostavnu stvar: ako u kešu praćenja postoje mikroinstrukcije za izvršenje, procesor radi efikasnije. Naravno, ova jedinica radi na frekvenciji procesora, za razliku od Rapid Engine-a. Inače, autor je stekao utisak da je ovaj dekoder nešto poput pokretne trake dužine do 10-15 stepeni. Dakle, od preuzimanja podataka iz keša do dobijanja rezultata, očigledno, postoji oko 30 35 faza ( uključujući Net Burst cjevovod, pogledajte Microdesign Resursi avgust 2000. Izveštaj o mikroprocesoru, tom 14, arhiva8, stranica 12).

Rezultirajući skup mikroinstrukcija, zajedno sa svim međuzavisnostima, akumulira se u kešu tragova u istoj keš memoriji, koja sadrži približno 12.000 mikrooperacija. Prema grubim procjenama, izvor takve procjene je struktura mikroinstrukcije P6; činjenica je da se u osnovi dužina instrukcija vjerojatno neće dramatično promijeniti ( Uzimajući u obzir dužinu mikroinstrukcije zajedno sa servisnim poljima je oko 100 bita) veličina predmemorije tragova se dobiva iz 96 KB to 120 KB!!! Kako god! Na ovoj pozadini, predmemorija podataka veličine 8 KB izgleda nekako asimetrično :-)… i blijedo. Naravno, kako se veličina povećava, kašnjenja pristupa se povećavaju ( na primjer, kada se poveća na 32 KB, kašnjenje će umjesto dva ciklusa biti 4). Ali da li je brzina pristupa ovoj keš memoriji zaista toliko važna da povećanje latencije za 2 ciklusa takta ( na pozadini ukupne dužine čitavog transportera) čini takvo povećanje obima neisplativim? Ili je jednostavno u pitanju nevoljkost da se poveća veličina kristala? Ali onda, kada se prelazi na 0,13 mikrona, prvi korak je bio povećanje ove posebne keš memorije ( nije keš drugog nivoa). Oni koji sumnjaju u ovu tezu trebali bi se sjetiti tranzicije sa Pentiuma na Pentium MMX zahvaljujući povećanju keš memorije prvog nivoa udvostručeno Gotovo svi programi su dobili povećanje performansi od 10 do 15%. Šta možemo reći o povećanju? četvorostruko (posebno imajući u vidu da su brzine procesora porasle na 2 GHz, a faktor množenja sa 2,5 na 20)? Prema nepotvrđenim izveštajima, u sledećoj modifikaciji Pentium4 (Prescott) jezgra, keš memorija prvog nivoa biće povećana na 16 ili 32 KB. Keš memorija drugog nivoa će se takođe povećati. Međutim, u ovom trenutku sve ovo nisu ništa drugo do glasine. Iskreno govoreći, ovo je pomalo zbunjujuća situacija. Iako, da se rezervišemo, autor u potpunosti priznaje da je ovakva ideja sputana određenim specifičnim razlogom. Kao primjer, određeni zahtjevi za geometriju rasporeda blokova ili banalan nedostatak slobodnog prostora u blizini transportera ( jasno je da je potrebno locirati keš podataka bliže ALU).

Bez ometanja, pogledajmo dalje proces. Cjevovod je pokrenut, neka trenutni timovi koriste ALU. Jasno je da FPU, SSE, SSE2 i drugi miruju. Nema takve sreće. Hyper Threading dolazi u igru. Primećujući da su mikroinstrukcije spremne zajedno sa podacima za novu nit, jedinica za preimenovanje registra dodeljuje deo fizičkih registara novoj niti. Usput, moguće su dvije opcije: blok fizičkih registara je zajednički za sve niti ili odvojen za svaku. Sudeći po činjenici da u Intelovoj prezentaciji Hyper Threading, blok za preimenovanje registra nije naveden kao blokovi koje treba promijeniti, prva opcija je odabrana. Da li je to dobro ili loše? Sa stanovišta tehnologa, ovo je očigledno dobro, jer štedi tranzistore. Sa stanovišta programera, to je još uvijek nejasno. Ako je broj fizičkih registara zaista 128, onda s bilo kojim razumnim brojem niti ne može doći do situacije “nedostatak registra”. Onda oni ( mikroinstrukcije) šalju se planeru, koji ih, zapravo, šalje izvršnom uređaju ( ako nije zauzet) ili "u redu čekanja" ako ovaj aktuator trenutno nije dostupan. Tako se u idealnom slučaju postiže efikasnija upotreba postojećih aktuatora. U ovo vrijeme ja CPU sa stanovišta OS-a izgleda kao dva "logična" procesora. Hm... Da li je zaista sve tako bez oblaka? Pogledajmo izbliza situaciju: komad opreme ( kao što su keš memorije, Rapid Engine, modul za predviđanje tranzicije) su zajednički za oba procesora. Između ostalog, tačnost predviđanja prelaza od ovoga, najvjerovatnije, malo će patiti. Pogotovo ako niti koje se istovremeno izvršavaju nisu povezane jedna s drugom. I dio ( na primjer, planer sekvenci mikroinstrukcija MIS vrsta ROM-a koji sadrži skup unaprijed programiranih sekvenci uobičajenih operacija i tablicu preimenovanja RAT registra) blokovi se moraju razlikovati po različitim nitima koje rade na “različitim” procesorima. Usput ( iz keš zajednice) slijedi da ako su dvije niti pohlepne za keširanje ( odnosno povećanje keš memorije ima veliki efekat), To korištenje Hyper Threading može čak i smanjiti brzinu. To se dešava zato što je u ovom trenutku implementiran “konkurentski” mehanizam za borbu za keš: “aktivna” nit u ovom trenutku zamjenjuje “neaktivnu”. Međutim, mehanizam keširanja se očigledno može promijeniti. Takođe je jasno da je brzina ( barem za sada) će se smanjiti u onim aplikacijama u kojima se smanjio u poštenom SMP-u. Kao primjer, SPEC ViewPerf obično pokazuje bolje rezultate na jednoprocesorskim sistemima. Stoga će rezultati vjerovatno biti niži na sistemu sa Hyper Threadingom nego bez njega. Zapravo, rezultate praktičnog testiranja Hyper Threadinga možete pogledati na.

Inače, informacije su procurile na Internet ALU u Pentiumu 4 16-bit. U početku je autor bio vrlo skeptičan prema takvim informacijama - kažu, šta su zavidnici mislili :-). A onda me je objavljivanje takvih informacija u Micro Design Report-u navelo na razmišljanje: šta ako je to istina? I, iako informacije o tome nisu direktno vezane za temu članka, teško je odoljeti :-). Koliko je autor dovoljno „razumeo“, poenta je da je ALU zaista 16-bitni. naglašavam Samo ALU. Ovo nema nikakve veze sa bitnim kapacitetom samog procesora. Dakle, u pola takta ( to se zove tik, tik) ALU ( dvostruku frekvenciju, kao što se sjećate) izračunava samo 16 bita. Drugih 16 se računa u sljedećem poluvremenu. Otuda je, inače, lako razumjeti potrebu da se ALU napravi duplo brže - to je neophodno za pravovremeno “brušenje” podataka. Dakle, puna 32 bita se izračunavaju u punom ciklusu takta. Zapravo, očigledno su potrebna 2 ciklusa zbog potrebe da se "zalijepe" i "odlijepe" bitovi, ali ovo pitanje treba razjasniti. Zapravo, iskopavanja (o kojima možete napisati posebnu pjesmu) su dala sljedeće: svaka ALU je podijeljena na 2 16-bitne polovine. Prvi polu-ciklus obrađuje 16 bita dva brojevi i forme nose bitove za druge polovice. Druga polovina završava obradu u ovom trenutku prethodni brojevi. Druga polovina ALU obrađuje 16 bitova iz sljedeći parove brojeva i oblikuje njihove transfere. Druga polovina obrađuje gornjih 16 bitova prvi par brojeva i dobija gotov 32-bitni rezultat. Kašnjenje u prijemu 1 rezultata je 1 ciklus takta, ali tada svakih pola ciklusa takta izlazi 1 32-bitni rezultat. Prilično duhovito i efektno. Zašto je odabran baš ovaj ALU model? Očigledno, sa takvom organizacijom, Intel ubija nekoliko ptica jednim udarcem:

1. Jasno je da je 16-bitni široki cevovod lakše overclockati nego 32-bitni široki cevovod, jednostavno zbog prisutnosti preslušavanja i kooperacije.

2. Očigledno, Intel je smatrao da su operacije računanja cijelih brojeva dovoljno česte da ubrzaju ALU, a ne, recimo, FPU. Vjerovatno je da se prilikom izračunavanja rezultata cjelobrojnih operacija koriste ili tabele ili "akumulirane" šeme. Poređenja radi, jedna 32-bitna tabela je 2E32 adrese, tj. 4 gigabajta. Dvije 16-bitne tablice su 2x64kb ili 128 kilobajta osjetite razliku! A akumulacija crtica u dva 16-bitna dijela događa se brže nego u jednom 32-bitnom dijelu.

3. Štedi tranzistore i... toplinu. Uostalom, nije tajna da su svi ovi arhitektonski trikovi zagrijani. Očigledno je bio prilično velik (i možda Dom) problem koliko vrijedi Thermal Monitor, na primjer, kao tehnologija! Uostalom, nema mnogo potrebe za takvom tehnologijom kao takvom, što je, naravno, lijepo što postoji. Ali budimo iskreni - jednostavno blokiranje bilo bi dovoljno za dovoljnu pouzdanost. Budući da je predviđena tako složena tehnologija, to znači da se opcija ozbiljno razmatrala kada su takve promjene frekvencije u pokretu bile jedan od normalnih načina rada. Ili možda glavni? Nije uzalud bilo glasina da je Pentium 4 planiran sa mnogo većim brojem aktuatora. Tada je problem topline jednostavno trebao postati glavni. Ili bolje rečeno, prema istim glasinama, oslobađanje topline je trebalo biti dovoljno 150 W. I onda je vrlo logično poduzeti mjere kako bi se osiguralo da procesor radi "punim kapacitetom" samo u sistemima gdje je omogućeno normalno hlađenje. Štaviše, većina slučajeva „kineskog“ porijekla ne blista promišljenim dizajnom u smislu hlađenja. Hm.... Prešli smo dug put :-)

Ali sve je ovo teoretisanje. Postoje li danas procesori koji koriste ovu tehnologiju? Jedi. Ovo je Xeon ( Prestonia) i XeonMP. Štaviše, zanimljivo je da se XeonMP razlikuje od Xeona po tome što podržava do 4 procesora ( setovi čipova kao što je IBM Summit podržavaju do 16 procesora, tehnika je približno ista kao kod ProFusion čipseta) i prisustvo keš memorije trećeg nivoa od 512 KB i 1 MB, integrisane u kernel. Usput, zašto su integrisali keš memoriju trećeg nivoa? Zašto keš prvog nivoa nije povećan?? Mora postojati neki razuman razlog... Zašto nisu povećali keš memoriju drugog nivoa? Možda je razlog to što je Advanced Transfer Cacheu potrebno relativno malo kašnjenje. A povećanje veličine keš memorije dovodi do povećanja latencije. Stoga su keš memorija trećeg nivoa za jezgro i keš drugog nivoa generalno „predstavljeni“ kao sabirnica. Samo guma :-). Dakle, napredak je očigledan - sve je učinjeno kako bi se osiguralo da se podaci unose u jezgro što je brže moguće ( a istovremeno je memorijska magistrala bila manje opterećena).

Pa, ispada da nema posebnih uskih grla? Zašto autor neće moći da "gunđa"? Jedan procesor - i OS vidi dva. Fino! Dva procesora i OS vidi 4! Ljepota! Stani! Koji OS radi sa 4 procesora? Operativni sistemi iz Microsofta koji razumiju troškove više od dva procesora potpuno drugačije novac. Na primjer, 2000 Professional, XP Professional, NT4.0 razumiju samo dva procesora. A s obzirom da je za sada ova tehnologija namijenjena tržištu radnih stanica ( i servere) i dostupan je samo u odgovarajućim procesorima - ispostavilo se da je prokleto uvredljivo. Danas možemo koristiti procesore sa ovom tehnologijom samo kupovinom dvoprocesorske ploče i ugradnjom jedan CPU. Što dalje idete, to je sve čudnije, kako je govorila Alisa u zemlji čuda... Odnosno, osoba željna korištenja ove tehnologije jednostavno je prisiljena kupiti Server i Advanced Server verzije trenutnih operativnih sistema. Oh, i "besplatni" procesor je malo skup... Valja dodati, možda, da Intel trenutno aktivno „komunicira“ sa Microsoftom, pokušavajući da poveže politiku licenciranja sa fizički procesor. Barem prema dokumentu, novi operativni sistemi iz Microsofta će biti licencirani fizičkim procesorom. Najmanje WindowsXP je licenciran na osnovu broja fizičkih procesora.

Naravno, uvijek se možete obratiti operativnim sistemima drugih proizvođača. Budimo iskreni - ovo nije baš dobar izlaz iz trenutne situacije... Dakle, može se razumjeti oklevanje Intela, koji je dugo razmišljao da li da koristi ovu tehnologiju ili ne.

Pa, ne zaboravimo jedan prilično važan zaključak: Korištenje Hyper Threadinga može dovesti do povećanja i gubitka performansi. Pa, pošto smo već razgovarali o gubitku, hajde da shvatimo šta je potrebno za pobedu: a da bi pobedili, neophodno je da znaju o ovoj tehnologiji:

  1. BIOS matične ploče
  2. Operativni sistem (!!!)
  3. Zapravo, sama aplikacija

Dozvolite mi da se zadržim na ovom pitanju detaljnije; poenta je da BIOS nije problem. O operativnom sistemu smo razgovarali malo ranije. Ali u onim nitima koje, na primjer, očekuju podatke iz memorije, morat ćete unijeti posebnu naredbu pauza, kako ne bi usporio procesor; Uostalom, u nedostatku podataka, nit je sposobna blokirati određene aktuatore. A da bi se ubacila ova naredba, aplikacije će morati ponovo da se kompajliraju - to nije dobro, ali zahvaljujući Intelu, svi su se nedavno počeli navikavati na to :-). Dakle, glavni ( prema autoru) nedostatak Hyper Threading tehnologije je potreba za još jednom kompilacijom. Glavna prednost ovog pristupa je takva rekompilacija usput ( i najvjerovatnije primjetnije :-)će povećati performanse u “poštenim” dual-procesorskim sistemima i to se može samo pozdraviti. Inače, već postoje eksperimentalne studije koje to potvrđuju u u većini slučajeva, programi optimizovani za SMP, iskoristite Hyper Threading sa 15% na 18%. Ovo je sasvim dobro. Usput, možete vidjeti i u kojim slučajevima Hyper Threading dovodi do pada performansi.

I na kraju, hajde da zamislimo šta bi se moglo promijeniti ( poboljšati) u daljem razvoju ove ideje. Sasvim je očigledno da će razvoj ove tehnologije biti direktno povezan sa razvojem Pentium 4 jezgra. Šta je sljedeće na našem planu? 0,09 mikronska tehnologija, poznatija kao 90nm... Autor je sklon vjerovati ( trenutno), da će razvoj ove porodice procesora ići u nekoliko pravaca odjednom:

  • Zahvaljujući „finijem“ tehničkom procesu, frekvencija procesora će postati još veća.
  • Nadajmo se da će keš podataka biti povećan. Najmanje do 32 KB.
  • Oni će napraviti “pošten” 32-bitni ALU. Ovo bi trebalo da poboljša produktivnost.
  • Povećajte brzinu sistemske magistrale ( međutim, to je već u bliskoj budućnosti).
  • Oni će napraviti dvokanalnu DDR memoriju ( opet, čekanje je relativno kratko).
  • Možda će uvesti analognu x86-64 tehnologiju, ako ova tehnologija ( zahvaljujući AMD-u) će se ukorijeniti. Istovremeno, autor se svim silama nada da će ovaj analog biti kompatibilan sa x86-64. Prestanite kreirati ekstenzije koje nisu međusobno kompatibilne... Opet će nam biti zanimljiv Jerry Sanders, u kojem je naveo da su se AMD i Intel prošle godine dogovorili o unakrsnom licenciranju za sve osim za Pentium4 sistemsku magistralu. Da li to znači da će Intel ugraditi x86-64 u sljedeću Pentium4 (Prescott) jezgru, a AMD će ugraditi Hyper Threading u svoje procesore? Zanimljivo pitanje...
  • Možda će se povećati broj aktuatora. Istina, kao i prethodni, ovo je prilično kontroverzna točka, jer zahtijeva gotovo potpuni redizajn kernela - a to je dug i radno intenzivan proces.

Pitam se da li će se razviti ideja o Hyper Threadingu? Činjenica je da, kvantitativno, nema gdje da se razvije, jasno je da su dva fizička procesora bolja od tri logička. Da, i pozicioniranje neće biti lako... Zanimljivo, Hyper Threading takođe može biti koristan kada se integrišu dva ( ili više) procesora po čipu. Pa, pod kvalitativnim promenama autor podrazumeva da će prisustvo takve tehnologije u običnim desktop računarima dovesti do toga da će zapravo većina korisnika raditi na [skoro] dual-procesor mašinama što je jako dobro. To je dobro jer takve mašine rade mnogo lakše i bolje reagiraju na radnje korisnika, čak i pod velikim opterećenjem. Ovo je, sa stanovišta autora, veoma dobro.

Umjesto pogovora

Autor mora priznati da se tokom rada na članku njegov stav prema Hyper Threadingu nekoliko puta promijenio. Kako su se informacije prikupljale i obrađivale, stav je postao generalno pozitivan ili obrnuto :-). U ovom trenutku možemo napisati sljedeće:

Postoje samo dva načina za poboljšanje performansi: povećanje frekvencije i povećanje performansi po taktu. I, ako je čitava arhitektura Pentium4 dizajnirana za prvi put, onda je Hyper Threading samo drugi. Sa ove tačke gledišta, to se može samo pozdraviti. Hyper Threading također ima nekoliko zanimljivih posljedica, kao što su: promjena programske paradigme, dovođenje višeprocesiranja u mase, povećanje performansi procesora. Međutim, postoji nekoliko „velikih neravnina“ na ovom putu na kojima je važno da se ne „zaglavite“: nedostatak normalne podrške operativnih sistema i, što je najvažnije, potreba za ponovnim kompajliranjem ( au nekim slučajevima i promjenu algoritma) aplikacije tako da mogu u potpunosti iskoristiti Hyper Threading. Pored toga, prisustvo Hyper Threading-a bi omogućilo da se operativni sistem i aplikacije istinski pokrenu paralelno, a ne u „komadima“ jedan po jedan, kao što je sada slučaj. Naravno, pod uslovom da ima dovoljno slobodnih aktuatora.

Autor želi da istakne svoju zahvalnost Maxim Lenya(aka C.A.R.C.A.S.S.) i Ilya Vaitsman(aka Stranger_NN) za opetovanu i neprocjenjivu pomoć u pisanju članka.
Takođe želim da se zahvalim svim učesnicima foruma koji su u više navrata iznosili vredne komentare.

Hyper-Threading (hiper threading, 'hyper threading', hyper threading - ruski) - tehnologija koju je razvila kompanija Intel, omogućavajući jezgru procesora da izvrši više od jedne (obično dvije) niti podataka. Pošto je utvrđeno da tipičan procesor u većini zadataka ne koristi više od 70% Od sve računarske snage, odlučeno je da se koristi tehnologija koja omogućava, kada su određene računarske jedinice neaktivne, da se opterete radom sa drugom niti. Ovo vam omogućava da povećate performanse kernela od 10 do 80% zavisno od zadatka.

Razumijevanje kako Hyper-Threading funkcionira .

Recimo da procesor obavlja jednostavne proračune, a istovremeno blok instrukcija miruje i SIMD ekstenzije.

Modul za adresiranje to detektuje i tamo šalje podatke za naknadni proračun. Ako su podaci specifični, ovi blokovi će ih izvršavati sporije, ali podaci neće biti mirni. Ili će ih prethodno obraditi za dalju brzu obradu od strane odgovarajućeg bloka. Ovo daje dodatni dobitak u performansama.

Naravno, virtuelna nit ne dostiže punopravni kernel, ali to vam omogućava da postignete skoro 100% efikasnost računarske snage, opterećujući skoro ceo procesor radom, sprečavajući ga da miruje. uz sve ovo, implementirati HT tehnologiju potrebno je samo oko 5% dodatni prostor na čipu, a performanse se ponekad mogu dodati 50% . Ovo dodatno područje uključuje dodatne blokove registra i predviđanja grananja, koji tok izračunavaju gdje se trenutno može koristiti računarska snaga i tamo šalju podatke iz dodatnog bloka adresiranja.

Po prvi put, tehnologija se pojavila na procesorima Pentium 4, ali nije došlo do velikog povećanja performansi, budući da sam procesor nije imao veliku računarsku snagu. Povećanje je bilo u najboljem slučaju 15-20% , a u mnogim zadacima procesor je radio mnogo sporije nego bez njega HT.

Uspori procesor zbog tehnologije Hyper Threading, javlja se ako:

  • Nedovoljno keš memorije za sve ovo i ciklično se ponovo pokreće, usporavajući procesor.
  • Prediktor grane ne može ispravno obraditi podatke. Javlja se uglavnom zbog nedostatak optimizacije za određeni softver ili podršku operativnog sistema.
  • Može se pojaviti i zbog zavisnosti podataka, kada, na primjer, prva nit zahtijeva trenutne podatke iz druge, ali još nije spremna ili je u redu za drugu nit. Ili ciklični podaci zahtijevaju određene blokove za brzu obradu, a oni se učitavaju s drugim podacima. Može postojati mnogo varijacija ovisnosti o podacima.
  • Ako je jezgro već jako opterećeno, a „nedovoljno pametan“ modul za predviđanje grananja i dalje šalje podatke koji usporavaju procesor (relevantno za Pentium 4).

Poslije Pentium 4, Intel počeo koristiti tehnologiju tek počevši od Core i7 prva generacija, preskačući seriju 2 .

Računarska snaga procesora postala je dovoljna za potpunu implementaciju hiperthreadinga bez veće štete, čak i za neoptimizirane aplikacije. kasnije, Hyper-Threading pojavio se na procesorima srednje klase, pa čak i na budžetskim i prenosivim procesorima. Korišćen na svim serijama Core i (i3; i5; i7) i na mobilnim procesorima Atom(ne sve). Ono što je zanimljivo je da su dvojezgarni procesori sa HT, dobićete veći dobitak u performansama od četverojezgrenih Hyper-Threading, stoji dalje 75% punopravni četveronuklearni.

Gdje je korisna tehnologija HyperThreading?

Biće korisno za upotrebu u kombinaciji sa stručnim, grafičkim, analitičkim, matematičkim i naučnim programima, video i audio urednicima, arhivistima ( Photoshop, Corel Draw, Maya, 3D’s Max, WinRar, Sony Vegas & itd). Svi programi koji koriste veliki broj kalkulacija, HT sigurno će biti od koristi. Srećom, u 90% U slučajevima, takvi programi su dobro optimizovani za njegovu upotrebu.

HyperThreading nezamjenjiv za serverske sisteme. Zapravo, djelomično je razvijen za ovu nišu. Hvala za HT, možete značajno povećati izlaz procesora kada postoji veliki broj zadataka. Svaka nit će se prepoloviti, što ima blagotvoran učinak na adresiranje podataka i predviđanje grananja.

Mnogi kompjuterske igrice, imaju negativan stav prema prisustvu Hyper-Threading, zbog čega se smanjuje broj sličica u sekundi. To je zbog nedostatka optimizacije za Hyper-Threading sa strane igre. Optimizacija samog operativnog sistema nije uvijek dovoljna, posebno kada se radi sa neobičnim, raznolikim i složenim podacima.

Na matičnim pločama koje podržavaju HT, uvijek možete onemogućiti hiperthreading tehnologiju.

Pozdrav ljubiteljima kompjutera i hardvera.

Da li biste želeli da u svom računaru imate procesor visokih performansi koji može da obavlja mnoge zadatke istovremeno brzinom munje? Ko bi odbio, zar ne? Onda vam predlažem da se upoznate s tehnologijom hiper threadinga: što je to i kako radi, naučit ćete iz ovog članka.


Objašnjenje koncepta

Hyper-threading se sa engleskog prevodi kao “hiper-preciznost”. Tehnologija je s razlogom dobila tako glasno ime. Uostalom, operativni sistem uzima jedan fizički procesor opremljen kao dva logička jezgra. Posljedično, više naredbi se obrađuje bez ikakvog utjecaja na performanse.

Kako je to moguće? Zbog činjenice da procesor:

  • Čuva informacije o nekoliko pokrenutih niti odjednom;
  • Za svaki logički procesor postoji jedan skup registara - blokovi brze interne memorije, kao i jedan blok prekida. Potonji je odgovoran za sekvencijalno izvršavanje zahtjeva sa različitih uređaja.

Kako to izgleda u praksi? Recimo da fizički procesor sada obrađuje komande prvog logičkog procesora. Ali u potonjem se dogodila neka vrsta kvara i on, na primjer, mora čekati podatke iz memorije. Fizički neće gubiti vrijeme i odmah će se prebaciti na drugi logički procesor.

O poboljšanju produktivnosti

Efikasnost fizičkog procesora, po pravilu, nije veća od 70%. Zašto? Često neki blokovi jednostavno nisu potrebni da bi se izvršio određeni zadatak. Na primjer, kada CPU izvodi trivijalne računske radnje, blok instrukcija i SIMD ekstenzije se ne koriste. Dešava se da dođe do kvara u modulu za predviđanje grananja ili prilikom pristupa kešu.

U ovakvim situacijama, Hyper-threading popunjava "praznine" drugim zadacima. Dakle, efikasnost tehnologije leži u činjenici da koristan rad ne miruje i da se daje neaktivnim uređajima.

Nastanak i implementacija

Možemo smatrati da je Hyper-threading već proslavio svoju 15. godišnjicu. Uostalom, razvijen je na bazi super-threading tehnologije, koja je objavljena 2002. godine i prvo je počela da radi u Xeon proizvodima, a zatim je iste godine integrisana u Pentium 4. Autorska prava za ove tehnologije pripadaju Intelu.

HT je implementiran u procesore koji rade na NetBurst mikroarhitekturi, koju karakteriziraju velike brzine takta. Tehnološka podrška implementirana je u modele Core vPro, M i Xeon porodica. Međutim, Core 2 serija (“Duo”, “Quad”) nije integrisana. Tehnologija slična po principu rada implementirana je u Atom i Itanium procesorima.

Kako to omogućiti? Ne morate imati samo jedan od gore navedenih procesora, već i operativni sistem koji podržava tehnologiju i BIOS koji ima opciju uključivanja i isključivanja HT-a. Ako nije, ažurirajte BIOS.

Prednosti i mane Hyper-threadinga

Možda ste već zaključili neke od prednosti tehnologije iz gornjih informacija. Dodaću im još par riječi:

  • Stabilan rad nekoliko paralelnih programa;
  • Smanjeno vrijeme odziva prilikom surfanja internetom ili rada sa aplikacijama.

Kao što razumete, bila je muva u masti. Možda neće doći do povećanja performansi iz sljedećih razloga:

  • Nedovoljno keš memorije. Na primjer, 4-jezgreni i7 procesori imaju 8 MB keš memorije, ali postoji isti broj logičkih jezgara. Dobijamo samo 1 MB po jezgri, što većini programa nije dovoljno za obavljanje računalnih zadataka. Zbog toga produktivnost ne samo da miruje, već čak i pada.

  • Ovisnost o podacima. Recimo da prva nit odmah zahtijeva informacije od druge, ali još nije spremna ili je u redu čekanja u drugoj niti. Dešava se i da su cikličnim podacima potrebni određeni blokovi da bi brzo završili zadatak, ali su oni već zauzeti drugim poslom.
  • Preopterećenje kernela. Dešava se da je jezgra možda već preopterećena, ali unatoč tome, modul za predviđanje i dalje joj šalje podatke, zbog čega računalo počinje usporavati.

Gdje je Hyper-threading potreban?

Tehnologija će biti korisna kada se koriste programi koji zahtijevaju velike resurse: audio, video i foto uređivači, igre, arhivari. To uključuje Photoshop, Maya, 3D’s Max, Corel Draw, WinRar, itd.

Važno je da je softver optimiziran za rad s Hyper-threadingom. U suprotnom može doći do kašnjenja. Činjenica je da programi logička jezgra smatraju fizičkim, tako da mogu slati različite zadatke istom bloku.

Čekamo vas da posjetite moj blog.

U februaru 2002. debitovala je Intelova vlasnička tehnologija, Hyper-Threading. Šta je ovo i zašto je danas postalo gotovo univerzalno? Odgovor na ovo i više pitanja bit će razmotren u ovom materijalu.

Povijest nastanka HT tehnologije

Prvi desktop procesor koji je podržavao logičko multithreading bio je Pentium četvrte generacije. Hyper-Threading je tehnologija koja je u ovom slučaju omogućila obradu dva toka podataka odjednom na jednoj fizičkoj jezgri. Štaviše, ovaj čip je instaliran u procesorsku utičnicu PGA478, radio je u 32-bitnom računarskom režimu, a frekvencija mu je bila 3,06 GHz. Prije toga, mogao se naći samo u serverskim procesorskim uređajima serije XEON.

Nakon što je postigao uspješne rezultate u ovoj niši, Intel je odlučio proširiti HT na desktop segment. Nakon toga, cijela porodica takvih procesora je objavljena u okviru PGA478. Nakon što je LGA775 socket debitovao, NT je privremeno zaboravljen. Ali s početkom prodaje LGA1156, dobio je drugi vjetar 2009. godine. Od tada je postao obavezan atribut procesorskih rješenja kompanije Intel, kako u segmentu ultra-performansi, tako iu budžetskim računarskim sistemima.

Koncept ove tehnologije

Suština Intel Hyper-Threading tehnologije je da kroz minimalne promjene u rasporedu mikroprocesorskog uređaja, programeri osiguravaju da se na nivou sistema i softvera kod obrađuje u dvije niti na jednom fizičkom jezgru. Svi elementi računskog modula ostaju nepromijenjeni, dodaju se samo posebni registri i redizajnirani kontroler prekida.

Ako iz nekog razloga fizički računarski modul počne da miruje, tada se na njemu pokreće druga programska nit, dok prva čeka na prijem potrebnih podataka ili informacija. Odnosno, ako su ranije zastoji u radu računarskog dijela čipova bili prilično česti, Hyper-Threading gotovo u potpunosti eliminira ovu mogućnost. Pogledajmo šta je ova tehnologija u nastavku.

Na nivou hardvera

Povećani su zahtjevi za hardver kada se koristi Hyper-Threading. Matična ploča, BIOS i procesor moraju to podržavati. Barem unutar procesorskog socketa PGA478, takvoj kompatibilnosti je trebalo obratiti posebnu pažnju. Nisu svi setovi sistemske logike u ovom slučaju bili orijentisani na upotrebu NT-a, baš kao i procesorski uređaji. Čak i ako je tako željena skraćenica bila prisutna u nomenklaturi matične ploče, to uopće nije značilo da su čipovi ispravno inicijalizirani iz razloga što je bilo potrebno ažurirati BIOS.

Situacija u ovom slučaju se dramatično promijenila od LGA1156. Ova računarska platforma je prvobitno dizajnirana za upotrebu Hyper-Threading-a. Stoga korisnici u ovom slučaju nisu naišli na značajnije probleme s korištenjem potonjeg. Isto važi i za naredne procesorske utičnice kao što su LGA1155, LGA1151 i LGA1150.

Utičnice visokih performansi LGA1366, LGA2011 i LGA2011-v3 mogle bi se pohvaliti sličnim nedostatkom problema s korištenjem HT-a. Povrh svega, Intelov direktni konkurent, AMD, implementirao je vrlo sličnu tehnologiju logičkog multitaskinga - SMT - u najnoviju generaciju svojih procesora za AM4. Koristi gotovo identičan koncept. Jedina razlika je u nazivu.

Glavne komponente sa softverske strane

Treba napomenuti da čak i ako je NT u potpunosti podržan hardverskim resursima, neće uvijek uspješno raditi na softverskom nivou. Za početak, operativni sistem mora biti sposoban da radi istovremeno sa nekoliko računarskih jezgara. Današnje zastarjele verzije sistemskog softvera MS-DOS ili Windows 98 nemaju ovu funkciju. Ali u slučaju Windows 10 ne nastaju nikakvi problemi, a ovaj operativni sistem je već u početku dizajniran za takve hardverske resurse osobnog računala.

Sada ćemo shvatiti kako omogućiti Hyper-Threading u Windowsu. U pravilu, ovo je poseban uslužni program sa CD-a matične ploče. Ima posebnu karticu na kojoj možete promijeniti vrijednosti u BIOS-u u realnom vremenu. To, pak, dovodi do činjenice da opcija Hyper-Threading u njoj ide na poziciju Enabled, a dodatne logičke niti se aktiviraju, čak i bez ponovnog pokretanja operativnog sistema.

Omogućavanje tehnologije

Mnogi korisnici početnici prilično često, u početnoj fazi korištenja novog računara, postavljaju jedno važno pitanje vezano za Hyper-Threading: kako ga omogućiti? Postoje dva moguća načina za rješavanje ovog problema. Jedan od njih je korištenje BIOS-a. U ovom slučaju morate učiniti sljedeće:

  • Kada uključite računar, inicijaliziramo proceduru za ulazak u BIOS. Da biste to uradili, samo držite pritisnuto dugme DEL kada se pojavi test ekran (u nekim slučajevima morate držati pritisnut taster F2).
  • Nakon što se pojavi plavi ekran, koristite navigacijske tipke da odete na karticu NAPREDNO.
  • Zatim na njemu nalazimo stavku Hyper-Threading.
  • Nasuprot njemu morate postaviti vrijednost na Enabled.

Ključni nedostatak ove metode je potreba za ponovnim pokretanjem osobnog računala da bi se izvršila ova operacija. Prava alternativa je korištenje uslužnog programa za konfiguraciju matične ploče. Ova metoda je detaljno opisana u prethodnom dijelu. I u ovom slučaju uopće nije potrebno ulaziti u BIOS.

Onemogućavanje NT-a

Analogno metodama za uključivanje NT-a, postoje dva načina za deaktiviranje ove funkcije. Jedan od njih se može izvesti samo tokom inicijalizacije računarskog sistema. To, pak, nije sasvim zgodno u praksi. Stoga se stručnjaci odlučuju za drugu metodu, koja se zasniva na korištenju kompjuterskog uslužnog programa na matičnoj ploči. U prvom slučaju izvode se sljedeće manipulacije:

  1. Prilikom učitavanja elektronskog računara prelazimo u osnovni ulazno-izlazni sistem (njegovo drugo ime je BIOS) prema prethodno opisanoj metodi.
  2. Pomeramo se pomoću tastera sa strelicama na stavku menija Napredno.
  3. Zatim morate pronaći stavku menija Hyper-Threading (u nekim modelima matičnih ploča može biti označena kao HT). Nasuprot njemu, pomoću dugmadi PG DN i PG UP, postavite vrijednost na Disabled.
  4. Demolirane promjene spremamo pomoću F10.
  5. Izađite iz BIOS-a i ponovo pokrenite lični računar.

U drugom slučaju, kada koristite dijagnostički uslužni program matične ploče, nema potrebe za ponovnim pokretanjem računara. To je njegova ključna prednost. Algoritam u ovom slučaju je identičan. Razlika je u tome što koristi unaprijed instalirani specijalni uslužni program proizvođača matične ploče.

Prethodno su opisana dva glavna načina da se onemogući Hyper-Threading. Iako se drugi od njih nominalno smatra složenijim, praktičniji je iz razloga što ne zahtijeva ponovno pokretanje računara.

Modeli procesora koji podržavaju NT

U početku, kao što je ranije navedeno, podrška za Hyper-Threading bila je implementirana samo u procesorskim uređajima Pentium 4 serije i samo u verziji PGA478. Ali u okviru LGA1156 i kasnijih računarskih platformi, tehnologija o kojoj se govori u ovom materijalu korišćena je u skoro svim mogućim modelima čipova. Uz njegovu pomoć, Celeron procesori su se iz jednojezgrenog pretvorili u rješenje s dva niti. Zauzvrat, Penrium i i3 su već mogli obraditi 4 toka koda uz njegovu pomoć. Pa, vodeća rješenja i7 serije mogu istovremeno raditi sa 8 logičkih procesora.

Radi jasnoće, predstavljamo upotrebu NT-a u okviru trenutne računarske platforme kompanije Intel - LGA1151:

  • CPU serije Celeron ne podržavaju ovu tehnologiju i imaju samo 2 računarske jedinice.
  • Pentium linijski čipovi su opremljeni sa 2 jezgra i četiri niti. Kao rezultat toga, NT je u ovom slučaju potpuno podržan.
  • Snažniji procesorski uređaji Core i3 modela imaju sličan raspored: 2 fizička modula mogu raditi u 4 niti.
  • Kao i većina jeftinih Celeron čipova, Core i5 nije opremljen HT podrškom.
  • Vodeća i7 rješenja također podržavaju HT. Samo u ovom slučaju, umjesto 2 stvarna jezgra, već postoje 4 jedinice za obradu koda. Oni, pak, već mogu raditi u 8 niti.

Hyper-Threading - šta je to tehnologija i koja je njena glavna svrha? Ovo je logičan multitasking, koji omogućava, kroz minimalna podešavanja hardvera, da se povećaju performanse računarskog sistema u celini.

U kojim slučajevima se ova tehnologija najbolje koristi?

U nekim slučajevima, kao što je ranije navedeno, NT povećava brzinu kojom procesor obrađuje programski kod. Hyper-Threading može efikasno raditi samo sa vrućim softverom. Tipični primjeri su video i audio koderi, profesionalni grafički paketi i arhiveri. Takođe, prisustvo takve tehnologije može značajno poboljšati performanse serverskog sistema. Ali sa jednonitnom implementacijom programskog koda, prisustvo Hyper-Threadinga je nivelirano, odnosno dobijate običan procesor koji rješava jedan zadatak na jednom jezgru.

Prednosti i nedostaci

Intel Hyper-Threading tehnologija ima određene nedostatke. Prvi od njih je povećana cijena CPU-a. Ali veća brzina i poboljšani raspored silikonskih čipova će u svakom slučaju povećati cijenu CPU-a. Također, povećana površina poluvodičke baze procesorskog uređaja dovodi do povećanja potrošnje energije i temperature. Razlika u ovom slučaju je neznatna i ne prelazi 5%, ali ipak postoji. Drugih bitnih nedostataka u ovom slučaju nema.

Sada o prednostima. Vlasnička NT tehnologija iz Intela ne utiče na performanse i performanse, odnosno takav računar neće moći pasti ispod određenog praga. Ako softver savršeno podržava paralelno računanje, tada će doći do određenog povećanja brzine i, naravno, produktivnosti.

Testovi pokazuju da u nekim slučajevima povećanje može doseći 20%. Najoptimiraniji softver u ovom slučaju su razni transkoderi multimedijalnog sadržaja, arhivatori i grafički paketi. Ali sa igricama nije sve tako dobro. Oni su, zauzvrat, sposobni da rade u 4 niti, i, kao rezultat toga, vodeći čipovi u ovom slučaju ne mogu nadmašiti procesorska rešenja srednjeg nivoa.

Moderna alternativa iz AMD-a

Hyper-Threading tehnologija danas nije jedina te vrste. Ona ima pravu alternativu. Sa izdavanjem AM4 platforme, AMD joj je ponudio dostojnog konkurenta u obliku SMT-a. Na nivou hardvera, ovo su identična rješenja. Samo Intelov vodeći model može obraditi 8 niti, a vodeći AMD čip 16. Sama ova okolnost ukazuje da je drugo rješenje obećavajuće.

Stoga je Intel primoran hitno prilagoditi svoje planove izdavanja proizvoda i ponuditi potpuno nova procesorska rješenja koja mogu konkurirati novajlijama iz AMD-a. Samo danas još nisu preuređeni. Stoga, ako vam je potrebna pristupačna računarska platforma, onda je bolje odabrati LGA1151 iz Intela. Ako vam je potrebno povećanje performansi, onda bi AM4 od AMD-a bio poželjniji.

Bilo je vremena kada je bilo potrebno procijeniti performanse memorije u kontekstu Hyper-threading tehnologije. Došli smo do zaključka da njegov uticaj nije uvijek pozitivan. Kada se pojavio kvantum slobodnog vremena, pojavila se želja da se nastavi istraživanje i razmatraju tekući procesi sa preciznošću ciklusa i bitova mašinskog takta, koristeći softver sopstvenog dizajna.

Platforma u studiji

Predmet eksperimenata je ASUS N750JK laptop sa Intel Core i7-4700HQ procesorom. Frekvencija takta 2,4 GHz, povećana u Intel Turbo Boost modu do 3,4 GHz. Instalirano 16 gigabajta DDR3-1600 RAM-a (PC3-12800), koji radi u dvokanalnom režimu. Operativni sistem – Microsoft Windows 8.1 64 bit.

Slika 1. Konfiguracija platforme koja se proučava.

Procesor platforme koja se proučava sadrži 4 jezgra, koja, kada je omogućena Hyper-Threading tehnologija, pruža hardversku podršku za 8 niti ili logičkih procesora. Firmver platforme prenosi ove informacije operativnom sistemu preko ACPI tabele MADT (Multiple APIC Description Table). Budući da platforma sadrži samo jedan RAM kontroler, ne postoji tablica SRAT (System Resource Affinity Table) koja deklarira blizinu procesorskih jezgri memorijskim kontrolerima. Očigledno, laptop koji se proučava nije NUMA platforma, ali ga operativni sistem, u svrhu objedinjavanja, smatra NUMA sistemom sa jednim domenom, što je označeno linijom NUMA Nodes = 1. Činjenica koja je fundamentalna za naše eksperimenti su da keš podataka prve razine ima veličinu 32 kilobajta za svaku od četiri jezgre. Dva logička procesora koji dijele jedno jezgro dijele L1 i L2 keš memorije.

Operacija koja se proučava

Proučavat ćemo ovisnost brzine čitanja bloka podataka o njegovoj veličini. Da bismo to učinili, izabrat ćemo najproduktivniju metodu, odnosno čitanje 256-bitnih operanda pomoću AVX instrukcije VMOVAPD. Na grafikonima, X os prikazuje veličinu bloka, a Y osa prikazuje brzinu čitanja. Oko tačke X, koja odgovara veličini L1 keš memorije, očekujemo da vidimo prelomnu tačku, jer bi performanse trebalo da padnu nakon što obrađeni blok napusti ograničenja keša. U našem testu, u slučaju višenitne obrade, svaka od 16 pokrenutih niti radi sa zasebnim rasponom adresa. Za kontrolu tehnologije Hyper-Threading unutar aplikacije, svaka nit koristi SetThreadAffinityMask API funkciju, koja postavlja masku u kojoj jedan bit odgovara svakom logičkom procesoru. Jedna bitna vrijednost dozvoljava da određeni procesor koristi data nit, nulta vrijednost to zabranjuje. Za 8 logičkih procesora platforme koja se proučava, maska ​​11111111b omogućava korištenje svih procesora (Hyper-Threading je omogućen), maska ​​01010101b dozvoljava korištenje jednog logičkog procesora u svakoj jezgri (Hyper-Threading je onemogućen).

U grafikonima se koriste sljedeće skraćenice:

MBPS (Megabajti po sekundi)brzina čitanja bloka u megabajtima u sekundi;

CPI (taktovi po instrukciji)broj taktova po instrukciji;

TSC (brojač vremenske oznake)Brojač CPU ciklusa.

Napomena: brzina takta TSC registra možda neće odgovarati brzini procesorskog takta kada radi u Turbo Boost modu. Ovo se mora uzeti u obzir prilikom tumačenja rezultata.

Na desnoj strani grafikona, vizualiziran je heksadecimalni dump instrukcija koje čine tijelo petlje ciljne operacije koja se izvršava u svakoj od programskih niti, ili prvih 128 bajtova ovog koda.

Iskustvo br. 1. Jedna nit



Fig.2 Čitanje jedne niti

Maksimalna brzina je 213563 megabajta u sekundi. Tačka infleksije se javlja na bloku veličine oko 32 kilobajta.

Iskustvo br. 2. 16 niti na 4 procesora, Hyper-Threading je onemogućen



Fig.3 Čitanje u šesnaest niti. Broj korištenih logičkih procesora je četiri

Hyper-Threading je onemogućen. Maksimalna brzina je 797598 megabajta u sekundi. Tačka infleksije se javlja na bloku veličine oko 32 kilobajta. Očekivano, u poređenju sa čitanjem sa jednom niti, brzina se povećala za otprilike 4 puta, na osnovu broja radnih jezgara.

Iskustvo br. 3. 16 niti na 8 procesora, Hyper-Threading omogućen



Fig.4 Čitanje u šesnaest niti. Broj korištenih logičkih procesora je osam

Hyper-Threading je omogućen. Maksimalna brzina je 800.722 megabajta u sekundi kao rezultat omogućavanja Hyper-Threading-a, gotovo da se nije povećala. Veliki minus je što se tačka pregiba javlja na bloku veličine oko 16 kilobajta. Omogućavanje Hyper-Threadinga neznatno je povećalo maksimalnu brzinu, ali pad brzine se sada događa na pola veličine bloka - oko 16 kilobajta, tako da je prosječna brzina značajno opala. To nije iznenađujuće, svaka jezgra ima svoju L1 keš memoriju, dok je logički procesori iste jezgre dijele.

zaključci

Proučena operacija se prilično dobro mjeri na procesoru s više jezgara. Razlozi: Svaka jezgra sadrži vlastitu L1 i L2 keš memoriju, veličina ciljnog bloka je uporediva s veličinom keša, a svaka nit radi sa vlastitim rasponom adresa. Za akademske svrhe, stvorili smo ove uslove u sintetičkom testu, prepoznajući da su aplikacije u stvarnom svetu obično daleko od idealne optimizacije. Ali omogućavanje Hyper-Threading-a, čak i pod ovim uslovima, imalo je negativan efekat sa blagim povećanjem vršne brzine, postoji značajan gubitak u brzini obrade blokova čija se veličina kreće od 16 do 32 kilobajta.
mob_info