Hyper Threading

In Glogpedia

by abecirov
Last updated 6 years ago

Discipline:
Science
Subject:
Technology

Toggle fullscreen Print glog
Hyper Threading

Hyper-threding tehnologija

Hyper Threading je tehnologija istovremene obrade više programskih niti u procesoru, razvijena u tvrtki Intel. Tehnologija višenitne obrade omogućava poboljšavanje općenite učinkovitosti superskalarnih procesora sa hardverskom podrškom za višenitni rad. Trenutno je implementirana u procesorskim obiteljima Atom, Core i3, Core i5, Core i7, Itanium, Pentium 4 i Xeon.

Za svaku prisutnu procesorsku jezgru operativni sustav pristupa prema dva virtualna procesora i raspoređuje opterećenje između njih kad je to moguće. Hyper Threading zahtijeva da operativni sustav podržava više procesora ali i da bude optimizran za rad s njima.

Korijeni tehnologije susreću se u tehnologiji koju je razvijala tvrtka DEC (Digital Equipment Corporation) ali ju je na tržište plasirala tvrtka Intel 2002. godine u procesoru Pentium 4 HT Northwood koji je radio na 3,06 GHz.Prema tvrdnjama iz tvrtke Intel , procesori s ugrađenom tehnologijom HT postižu do 30% bolje rezultate u usporedbi s identičnim procesorima bez ugrađene tehnologije Hyper Threading.

Kako radi HyperThreading?Opišimo funkcioniranje Hyper-threadinga, korak po korak... Kako to izgleda u samom procesoru?Prvi dio Pentium 4 cjevovoda odgovoran je za davanje dekodiranih x86 instrukcija izvršnom dijelu cjevovoda, gdje su smještene udvostručene jedinice dva logička procesora. Trace Cache sadrži već dekodirane instrukcije (UOPS), a nije udvostručen već se dijeli među logičkim procesorima, koji imaju vlastite Instruction Pointere koji upućuju na slijedeću instrukciju koja će se izvoditi. Instrukcije iz Trace Cachea stavljaju se u UOP red (UOP queue) koji je individualan za svaki virtualni CPU. Ako u Trace Cacheu nema instrukcija (TC je svojevrstan L1 cache), CPU će izvršiti instrukcije iz L2 cachea, a tu se koristi Instruction Translation Lookaside Buffer (ITLB) koji prevodi adrese pohranjene u Instruction Pointeru u fizičke adrese. ITLB je individualan za svaki logički CPU, dok se L2 cache dijeli. Također, samo je jedan x86 dekoder, no ona nikad nije previše opterećen jer je većina dekodiranih instrukcija pohranjena u Trace Cacheu. Ako oba logička procesora istovremeno pristupe decoderu, on određuje prioritet i izvodi cjelovito dekodiranje instrukcije prvo za jedan a tek potom za drugi logički CPU. Dekodirane instrukcije se pohranjuju u Trace Cache, naravno. Izvršna jedinica prima sekvence instrukcija u dvije linije, svaku od jednog logičkog procesora. Potom se sve instrukcije prosljeđuju kroz Allocator i Register Rename jedinice, gdje procesor dodjeljuje resurse za izvršenje instrukcija. Registeri i bufferi dijele se među logičkim CPU a ako se neki od resursa više ne koristi, automatski je na raspolaganju drugom logičkom CPU. Čim je ovaj stupanj obrade završen, instrukcije se sortiraju u dva reda - jedan za operacije s memorijom i drugi za "ostale operacije", a oba se dijele u dvije grupe, svaku za pojedini logički CPU. Potom se mikrooperacije sortirane na ovaj način prosljeđuju do Scheduling stupnja, gdje idu dalje u izvršnu jedinicu (Execution Unit) procesora, po sistemu "prvi-dođe-prvi-izađe" (first-in-first-out). Moguća je i zamjena prioriteta od izvršenja instrukcija jednog logičkog CPU-a na drugi. Na ovom su stupnju su mikrooperacije logičkih CPU-a potpuno izmiješane, te mogu biti izvođene simultano. Kako su registri fizičkog procesora vrlo usko povezani sa registrima logičkih CPU-a, moguće je izvršavati instrukcije bez posebnog praćenja kojem procesoru koja instrukcija pripada. No, Retirement jedinica obnavlja početni red instrukcija i određuje kojem logičkom procesoru pripadaju, a Re-Order Buffer podijeljen je na dvije polovice, za svaki logički procesor po jedna. Ne zaboravite kako su L1 i L2 cache također dijeljeni među logičkim procesorima te, iako je Data Translation Lookaside Buffer (DTLB) dijeljen (DTLB transformira adrese procesiranih podataka u njihove fizičke adrese), ipak su svi podatci već označeni sa CPU identifikatorom. Na taj način se odmah zna kojem logičkom procesoru pripada pojedina instrukcija ili podatak.Na opisani način Hyper-Threading tehnologija dozvoljava opterećenje izvršnih jedinica procesora mnogo jače no što je to kod drugih procesora zahvaljujući simultanom procesiranju dviju linija instrukcija. No, ovaj pristup nije uvijek efikasan i s pozitivnim učinkom: ako su logički CPU postavili zahtjeve za procesiranjem sličnih ili čak istih sljedova instrukcija, neće biti nikakvih poboljšanja performansi jer će jedan od zahtjeva uvijek zauzeti sve raspoložive resurse, a drugi će virtualni CPU jednostavno čekati na red. Ako drugi virtualni CPU čak i ima prioritet izvođenja, operativni sustav će ipak misliti kako su tu dva neovisna procesora i ništa neće poduzeti kako bi riješio problem te će sustav biti paraliziran. To je jedan od razloga zašto Intel stimulira proizvođače softvera da svoje aplikacije optimiraju za korištenje Hyper-Threadinga. Jedan od glavnih principa te optimizacije je korištenje nove instrukcije PAUSE, koja ne može "zamrznuti" fizički CPU te se tako izbjegavaju prazni radni taktovi u procesoru


Comments

    There are no comments for this Glog.