Višenitna obrada

S Vikipedije, slobodne enciklopedije

Računarski procesori sa višenitnom obradom imaju hardversku podršku za efikasno izvršavanje višestrukih niti. Oni se razlikuju od višeprocesorskih sistema (kao što su višejezgarni procesori) u tome što niti moraju da dele resurse jednog jezgra: računarske jedinice, keš i bafer asocijativnog prevođenja (TLB). Dok višeprocesorski sistemi uključuju potpuno višestruke procesne jedinice, višenitna obrada cilja na povećanje iskorišćenja jednog jezgra korišćenjem paralelizma na nivou niti i instrukcija. Pošto se te tehnike međusobno dopunjuju, često se kombinuju u sistemima sa višestrukim višenitnim procesorima i kod procesora sa višestrukim višenitnim jezgrima.

Pregled[uredi | uredi izvor]

Paradigma višenitne obrade je postala popularnija otkako je napredak na polju paralelizma na nivou instrukcije dostigao vrhunac krajem 1990ih. Ovo je omogućilo da se koncept protočnog računarstva vrati na scenu iz specijalizovanog polja obrade transkacija:

  • Iako je jako teško dodatno ubrzati jednu nit ili jedan program, većina računarskih sistema u stvari obavlja više stvari istovremeno među gomilom niti i programa.
  • Tehnike koje bi omogućile ubrzanje propusne moći celog sistema sa svim zadacima bi napravile značajno ubrzanje.

Dve glavne tehnike propusnog računarstva su višestruki procesori i višenitna obrada.

Prednosti[uredi | uredi izvor]

Neke od prednosti su:

  • Ako nit napravi puno promašaja keša, druge niti mogu nastaviti, koristeći prednost neiskorišćenih računarskih resursa, što može dovesti do bržeg izvršavanja, s obzirom da bi ti resursi bili neiskorišćeni da se samo jedna nit izvršava.
  • Ako nit ne može iskoristiti sve računarske resurse procesora (jer instrukcije zavise od međusobnih rezultata), pokretanje druge niti ih može iskoristiti.
  • Ako nekoliko niti obrađuje isti skup podataka, one mogu deliti keš, što dovodi to bolje iskorišćenosti keša ili sinhronizacije njihovih vrednosti.

Mane[uredi | uredi izvor]

Neke od kritika višenitne obrade su:

  • Višestruke niti mogu međusobno smetati jedna drugoj pri deljenju hardvera kao što su keševi ili bafer asocijativnog prevođenja (TLBs).
  • Izvršno vreme jedne niti nije poboljšano već može biti smanjeno, čak i kada se samo jedna nit izvršava. Ovo je zbog niže frekvencije i/ili dodatnih faza protočne obrade koje su neophodne da se realizuje hardver smene niti.
  • Hardverska podrška za višenitnu obradu je vidljivija softveru, stoga zahteva zahteva više promena na nivou programa i operativnog sistema, za razliku od višeprocesorskih sistema.

Zato dobitak dosta varira; Intel tvrdi do 30 procenata poboljšanja sa svojom Hyper-threading tehnologijom,[1] dok sintetički program koji samo izvršava petlju neoptimizovanih zavisnih operacija sa pokretnim zarezom dobija čak 100 procenata poboljšanja kada se izvršava paralelno. S druge strane, ručno optimizovani asemblerski programi koji koriste MMX ili Altivec proširenja i izvode predohvat podataka (kao kod video enkodera), zaobilaze promašaje u kešu i neiskorišćenost resursa. Takvi programi stoga nemaju korist od hardverske višenitne obrade i mogu dobiti i lošije performanse usled deljenja resursa.

Hardverske tehnike za podršku višenitne obrade često idu u paru sa softverskim tehnikama za obradu više zadataka istovremeno kod računarskih programa.

  • Raspoređivanje niti je takođe veliki problem kod višenitne obrade.

Tipovi višenitne obrade[uredi | uredi izvor]

Blokovska višenitna obrada[uredi | uredi izvor]

Koncept[uredi | uredi izvor]

Najjednostavniji tip višenitne obrade se dešava kada jedna nit radi sve dok ne bude blokirana od strane događaja koji bi inače stvorio dugotrajno odugovlačenje. To odugovlačenje bi mogao biti promašaj u kešu koji mora da pristupi memoriji van čipa, što može potrošiti stotine procesorskih ciklusa dok se podatak ne vrati. Umesto da čeka da se odugovlačenje razreši, višenitni procesor bi stavio drugu nit na izvršenje koja je spremna. Tek kada podaci za prethodnu nit stignu, ona će biti vraćena na listu spremnih niti.

Na primer:

  1. Ciklus i : instrukcija j iz niti A je izdata
  2. Ciklus i+1: instrukcija j+1 iz niti A je izdata
  3. Ciklus i+2: instrukcija j+2 iz niti A je izdata, load instrukcija pravi promašaj u kešu
  4. Ciklus i+3: poziva se raspoređivač niti, prebacuje na nit B
  5. Ciklus i+4: instrukcija k iz niti B je izdata
  6. Ciklus i+5: instrukcija k+1 iz niti B je izdata

Konceptualno, to je slično kooperativnoj obradi višestrukih zadataka kod operativnih sistema u realnom vremenu kod kojih zadaci sami odustaju od izvršenja kada moraju da čekaju na neki događaj.

Terminologija[uredi | uredi izvor]

Ovaj tip višenitne obrade je poznat kao blokovska ili kooperativna ili gruba višenitna obrada.

Cena hardvera[uredi | uredi izvor]

Cilj hardverske podrške višenitne obrade je da omogući brzu smenu između blokiranih niti i onih koje su spremne za izvršenje. Da bi se ovo postiglo, hardverska cena je u dupliranju programski vidljivih registara kao i nekih procesorskih kontrolnih registara (kao što je programski brojač).

Smena sa jedne niti na drugu znači da hardver prelazi sa korišćenja jednog skupa registara na drugi.

Prednosti takvog dodatnog hardvera su:

  • Smena niti se može odraditi u jednom procesorskom ciklusu.
  • Svakoj niti se čini da se sama izvršava na procesoru i da ne deli nikakve hardverske resurse sa bilo kojom drugom niti. Ovo minimizira količinu softverskih promena neophodnih na nivou aplikacije i operativnog sistema u svrhu podrške višenitne obrade.

Radi efikasne smene između aktivnih niti, svaka aktivna nit mora imati svoj sopstveni skup registara. Na primer, za brzu smenu između dve niti, registarski hardver mora biti instanciran dvaput.

Primeri[uredi | uredi izvor]

  • Puno porodica mikrokontrolera i ugrađenih procesora imaju višestruke grupe registara u cilju brze smene konteksta u slučaju prekida. Takve šeme se mogu smatrati tipom blokovske višenitne obrade između korisničke programske niti i niti prekida.

Isprepletana višenitna obrada[uredi | uredi izvor]

  1. Ciklus i+1: instrukcija iz niti B je izdata
  2. Ciklus i+2: instrukcija iz niti C je izdata

Svrha isprepletane višenitne obrade je uklanjanje svih zastoja unutar protočne obrade usled zavisnosti podataka. S obzirom da je jedna nit relativno nezavisna od drugih, manja je verovatnoća da će instrukciji iz jedne faze protočne obrade trebati rezultat starije instrukcije u protočnoj obradi.

Konceptualno, to je slično obradi više istovremenih zadataka sa smenom konteksta kod operativnih sistema. Može se napraviti analogija da je delić vremena dat svakoj aktivnoj niti jedan procesorski ciklus.

Terminologija[uredi | uredi izvor]

Ovaj tip višenitne obrade je prvo zvan cilindrična obrada, kod koje komore cilindra predstavljaju faze protočne obrade i njene izvršne niti. Isprepletana ili prekidna ili fina' ili vremenska višenitna obrada je modernija terminologija.

Cena hardvera[uredi | uredi izvor]

Kao dodatak ceni hardvera diskutovanoj kod blokovske višenitne obrade, isprepletana obrada nosi i cenu toga što svaka faza protočne obrade prati ID niti instrukcije koju izvršava. Takođe, s obzirom da se više niti izvršava istovremeno, deljeni resurci kao što su keševi i TLBovi moraju biti veći da bi se izbegao konflit između niti.

Istovremena višenitna obrada[uredi | uredi izvor]

Koncept[uredi | uredi izvor]

Najnapredniji tip višenitne obrade se odnosi na superskalarne procesore. Običan superskalarni procesor izdaje višestruke instrukcije iz jedne niti u svakom ciklusu procesora. Kod istovremene višenitne obrade (SMT), superskalarni procesor može izdati instrukcije iz višestrukih niti u svakom ciklusu procesora. Prepoznajući da svaka pojedinačna nit ima ograničen nivo paralelizma na nivou instrukcije, ovaj tip višenitne obrade pokušava da iskoristi paralelizam na nivou različitih niti radi smanjenja neiskorišćenih procesorskih resursa.

Na primer:

  1. Ciklus i : instrukcije j i j+1 iz niti A; instrukcija k iz niti B su sve istovremeno izdate
  2. Ciklus i+1: instrukcija j+2 iz niti A; instrukcija k+1 iz niti B; instrukcija m iz niti C su sve istovremeno izdate
  3. Ciklus i+2: instrukcija j+3 iz niti A; instrukcijas m+1 i m+2 iz niti C su sve istovremeno izdate

Terminologija[uredi | uredi izvor]

Da bi se razlikovali drugi tipovi višenitne obrade od SMT-a, izraz vremenska višenitna obrada se koristi da naznači kada se instrukcija iz samo jedne niti može izvršavati u jednom trenutku.

Cena hardvera[uredi | uredi izvor]

Kao dodatak ceni hardvera diskutovanoj kod isprepletane višenitne obrade, SMT nosi dodatnu cenu toga što svaka faza protočne obrade prati ID niti svake instrukcije koja se obrađuje. I ovog puta, deljeni resurci kao što su keševi i TLBovi moraju biti dovoljno veliki za veliki broj aktivnih niti koje se obrađuju.

Primeri[uredi | uredi izvor]

Specifičnosti implementacije[uredi | uredi izvor]

Glavno polje istraživanja je raspoređivač niti koji mora brzo izabrati za izvršavanje između liste spremnih niti kao i da održava liste spremnih i zaustavljenih niti. Važna podtema su različite šeme prioriteta niti koje raspoređivač može koristiti. Raspoređivač može biti u potpunosti implementiran u softveru, potpuno u hardveru, kao i u kombinaciji hardvera/softvera.

Drugo polje istraživanja je koji tip događaja bi trebalo da izazove smenu niti - promašaj u kešu, među-nitna komunikacija, DMA završetak, itd.

Ako se višenitna šema podudara sa svim softverski vidljivim stanjima, uključuje privilegovane kontrolne registre, TLBove, itd, to omogućuje da se virtuelna mašina pravi za svaku nit. Ovo omogućuje svakoj niti da izvršava svoj sopstveni operativni sistem na istom procesoru. S druge strane, ako je samo stanje korisničkog režima sačuvano, manje harvera je potrebno što omogućuje da više niti bude aktivno istovremeno za istu površinu čipa/cenu.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Intel Hyper-Threading Technology, Technical User's Guide (PDF). Arhivirano iz originala (PDF) 21. 08. 2010. g. Pristupljeno 28. 12. 2013.