Intel Hyper threading tehnologija. Još jednom o Hyper Threadingu

Mnogi Intel procesori uključuju module koji podržavaju Hyper-Threading tehnologiju, koja bi, prema ideji programera, trebalo da pomogne u povećanju performansi čipa i ubrzanju računara u celini. Koje su specifičnosti ovog rješenja američke korporacije? Kako možete iskoristiti prednosti Hyper-Threading-a?

Osnove tehnologije

Pogledajmo neke ključne informacije o Hyper-Threadingu. Kakva je ovo tehnologija? Razvio ga je Intel i prvi put je predstavljen javnosti 2001. godine. Svrha njegovog kreiranja bila je povećanje performansi servera. Glavni princip implementiran u Hyper-Threading je distribucija proračuna procesora u nekoliko niti. Štoviše, to je moguće čak i ako je samo jedna jezgra instalirana na odgovarajuću vrstu čipa (zauzvrat, ako ih ima 2 ili više, a niti u procesoru su već distribuirane, tehnologija uspješno nadopunjuje ovaj mehanizam).

Osiguravanje rada glavnog PC čipa unutar nekoliko niti se vrši kreiranjem kopija arhitektonskih stanja tokom proračuna. Ovo koristi isti skup resursa na čipu. Ako aplikacija koristi odgovarajuću funkciju, tada se praktično značajne operacije izvode mnogo brže. Takođe je važno da dotičnu tehnologiju podržava ulazno/izlazni sistem računara – BIOS.

Omogućavanje Hyper-Threadinga

Ako procesor instaliran u PC-u podržava odgovarajući standard, obično se automatski aktivira. Ali u nekim slučajevima morate ručno izvršiti potrebne radnje da bi Hyper-Threading tehnologija radila. Kako to omogućiti? Veoma jednostavno.

Morate ući u glavni BIOS interfejs. Da biste to učinili, na samom početku pokretanja računara morate pritisnuti DEL, ponekad F2, F10, rjeđe druge tipke, ali se željeni uvijek pojavljuje u jednom od redova teksta koji se prikazuje na ekranu odmah nakon uključivanja PC. U BIOS interfejsu morate pronaći stavku Hyper-Threading: u verzijama I/O sistema koje ga podržavaju, obično se nalazi na istaknutom mestu. Nakon odabira odgovarajuće opcije, pritisnite Enter i aktivirajte je, označavajući je kao Omogućeno. Ako je ovaj način već postavljen, onda Hyper-Threading tehnologija radi. Možete iskoristiti sve njegove prednosti. Nakon što ste aktivirali tehnologiju u postavkama, trebali biste sačuvati sve unose u BIOS-u odabirom Save and Exit Setup. Nakon toga, računar će se ponovo pokrenuti u režimu u kojem procesor radi sa podrškom za Hyper-Theading. Hyper-Threading je onemogućen na sličan način. Da biste to učinili, morate odabrati drugu opciju u odgovarajućoj stavci - Onemogućeno i sačuvati postavke.

Nakon što smo proučili kako omogućiti Hyper-Threading i deaktivirati ovu tehnologiju, pogledajmo njene karakteristike detaljnije.

Procesori sa podrškom za Hyper Threading

Prvi procesor na kojem je implementiran dotični koncept kompanije, prema nekim izvorima, bio je Intel Xeon MP, poznat i kao Foster MP. Ovaj čip je po nizu arhitektonskih komponenti sličan Pentiumu 4, na kojem je dotična tehnologija također naknadno implementirana. Nakon toga, multi-threaded computing funkcija je uvedena na Xeon server procesore sa Prestonia jezgrom.

Ako govorimo o trenutnoj rasprostranjenosti Hyper-Threadinga, koji „procesori“ ga podržavaju? Među najpopularnijim mikro krugovima ovog tipa- one koje pripadaju Core i Xeon porodicama. Postoje i informacije da su slični algoritmi implementirani u Itanium i Atom procesorima.

Nakon što smo proučili osnovne informacije o Hyper-Threadingu i procesorima koji ga podržavaju, razmotrit ćemo najzanimljivije činjenice u vezi s historijom razvoja tehnologije.

Istorija razvoja

Kao što smo već napomenuli, Intel je 2001. godine javnosti pokazao dotični koncept. Ali prvi koraci u stvaranju tehnologije napravljeni su još ranih 90-ih. Inženjeri jedne američke kompanije primijetili su da resursi PC procesora nisu u potpunosti iskorišteni prilikom izvođenja niza operacija.

Kako su Intel stručnjaci izračunali, dok korisnik radi na računaru, čip se ne koristi baš aktivno u značajnim intervalima – skoro većinu vremena – za oko 30%. Mišljenja stručnjaka o ovoj cifri su vrlo različita - jedni je smatraju očigledno potcijenjenom, drugi se potpuno slažu s tezom američkih programera.

Međutim, većina IT stručnjaka se složila da, iako nije 70% kapaciteta procesora u stanju mirovanja, to je vrlo značajan iznos.

Glavni zadatak programera

Intel je odlučio da ispravi ovo stanje kroz kvalitativno novi pristup osiguravanju efikasnosti glavnih PC čipova. Predloženo je stvaranje tehnologije koja bi omogućila aktivnije korištenje mogućnosti procesora. 1996. Intelovi stručnjaci započeli su njegov praktični razvoj.

Prema konceptu američke korporacije, procesor, dok obrađuje podatke iz jednog programa, može usmjeriti neaktivne resurse na rad s drugom aplikacijom (ili komponentom trenutne, ali koja ima drugačiju strukturu i zahtijeva korištenje dodatnih resursa) . Odgovarajući algoritam je takođe pretpostavio efektivnu interakciju sa drugim hardverskim komponentama računara - RAM-om, čipsetom i programima.

Intel je uspeo da reši problem. Tehnologija se prvobitno zvala Willamette. Godine 1999. uveden je u arhitekturu nekih procesora i počelo je testiranje. Ubrzo je tehnologija dobila svoje moderno ime - Hyper-Threading. Teško je reći o čemu se točno radilo - jednostavnom rebrendiranju ili radikalnim prilagodbama platforme. Već znamo dalje činjenice o pojavljivanju tehnologije u javnosti i njenoj implementaciji u različitim modelima Intel procesora. Među uobičajenim razvojnim imenima danas je Hyper-Threading Technology.

Razmatranja o kompatibilnosti tehnologije

Koliko dobro je podrška za Hyper-Threading tehnologiju implementirana u operativne sisteme? Može se primijetiti da ako govorimo o modernim verzijama Windowsa, onda neće biti problema sa korisnikom da u potpunosti iskoristi prednosti Intel Hyper-Threading tehnologije. Naravno, veoma je važno i da je tehnologija podržana ulazno/izlaznim sistemom - to smo rekli gore.

Softverski i hardverski faktori

Što se tiče starijih verzija OS-a - Windows 98, NT i relativno zastarjeli XP, neophodan uslov za kompatibilnost sa Hyper-Threadingom je ACPI podrška. Ako se ne implementira u OS, tada računar neće prepoznati sve računske niti koje formiraju odgovarajući moduli. Imajte na umu da Windows XP u cjelini osigurava korištenje prednosti dotične tehnologije. Takođe je veoma poželjno da se algoritmi višenitnog rada implementiraju u aplikacije koje koristi vlasnik računara.

Ponekad može biti potreban PC - ako su na njemu instalirani procesori s podrškom za Hyper-Threading umjesto onih koji su prvobitno bili instalirani na njemu i nisu bili kompatibilni sa tehnologijom. Međutim, kao iu slučaju operativnih sistema, neće biti posebnih problema ako korisnik ima na raspolaganju moderan PC ili barem onaj koji odgovara hardverskim komponentama prvih Hyper Threading procesora, kao što smo već napomenuli, implementiranih u Core liniju, i njoj prilagođene čipsetove za matične ploče ah u potpunosti podržavaju odgovarajuće funkcije čipa.

Kriterijumi ubrzanja

Ako računar na nivou hardverskih i softverskih komponenti nije kompatibilan sa Hyper-Threadingom, onda ova tehnologija, u teoriji, može čak i usporiti njegov rad. Ovakvo stanje je navelo neke IT stručnjake da sumnjaju u izglede Intelovog rešenja. Odlučili su da se ne radi o tehnološkom skoku, već o marketinškom triku koji je u osnovi koncepta Hyper Threadinga, koji zbog svoje arhitekture nije u stanju značajno ubrzati PC. Ali sumnje kritičara brzo su raspršili Intelovi inženjeri.

Dakle, osnovni uslovi da bi se tehnologija uspešno koristila:

Hyper-Threading podrška od strane I/O sistema;

Kompatibilnost matične ploče s procesorom odgovarajućeg tipa;

Tehnološka podrška od strane operativnog sistema i specifične aplikacije koja se u njemu izvodi.

Ako ne bi trebalo da bude posebnih problema u vezi sa prve dve tačke, onda u pogledu kompatibilnosti programa sa Hyper-Threadingom, neki problemi se i dalje mogu pojaviti. Ali može se primijetiti da ako aplikacija podržava, na primjer, rad sa dvojezgrenim procesorima, tada će biti kompatibilna, gotovo zagarantovana, sa Intel tehnologijom.

Barem postoje studije koje potvrđuju povećanje performansi programa prilagođenih dual-core čipovima za približno 15-18% ako procesor pokreće Intel Hyper Threading module. Već znamo kako ih onemogućiti (u slučaju da korisnik sumnja u preporučljivost korištenja tehnologije). Ali vjerojatno postoji vrlo malo opipljivih razloga za njihov izgled.

Praktična korisnost Hyper-Threading-a

Da li je tehnologija o kojoj je riječ napravila opipljivu razliku za Intel? Postoje različita mišljenja o ovom pitanju. Ali mnogi ljudi primjećuju da je Hyper-Threading tehnologija postala toliko popularna da je ovo rješenje postalo nezamjenjivo za mnoge proizvođače serverskih sistema, a pozitivno je primljeno i od običnih korisnika PC-a.

Hardverska obrada

Glavna prednost tehnologije je što je implementirana u hardverskom formatu. Odnosno, glavnina proračuna će se obavljati unutar procesora na posebnim modulima, a ne u obliku softverskih algoritama koji se prenose na nivo glavne jezgre čipa - što bi značilo smanjenje ukupnih performansi računara. . Generalno, kako napominju IT stručnjaci, Intelovi inženjeri su uspeli da reše problem koji su identifikovali na početku razvoja tehnologije - da procesor funkcioniše efikasnije. Zaista, kao što su testovi pokazali, prilikom rješavanja mnogih problema koji su praktički značajni za korisnika, korištenje Hyper-Threadinga značajno je ubrzalo rad.

Može se primijetiti da su među 4, ona mikro kola koja su bila opremljena modulima za podršku dotične tehnologije radila znatno efikasnije od prvih modifikacija. To je u velikoj mjeri bilo izraženo u sposobnosti PC-a da funkcionira u stvarnom multitasking modu - kada je nekoliko različitih tipova Windows aplikacije, a krajnje je nepoželjno da se, zbog povećane potrošnje sistemskih resursa od strane jednog od njih, smanji brzina ostalih.

Istovremeno rješavanje različitih problema

Dakle, procesori koji podržavaju Hyper-Threading su bolje prilagođeni od čipova koji nisu kompatibilni s njim da istovremeno pokreću, na primjer, pretraživač, puštaju muziku i rade sa dokumentima. Naravno, sve ove prednosti korisnik oseti u praksi samo ako su softverske i hardverske komponente računara dovoljno kompatibilne sa ovim režimom rada.

Sličan razvoj događaja

Tehnologija Hyper-Threading nije jedina koja je stvorena da poboljša performanse računara putem višenitnog računarstva. Ima analoge.

Na primjer, procesori POWER5 koje je objavio IBM također podržavaju multithreading. To jest, svaki od njih (ukupno su na njemu instalirana 2 odgovarajuća elementa) može obavljati zadatke unutar 2 niti. Dakle, čip istovremeno obrađuje 4 računske niti.

AMD takođe ima odličan posao u oblasti koncepta sa više niti. Dakle, poznato je da arhitektura Buldožera koristi algoritme slične Hyper-Threadingu. Posebnost AMD rješenja je da svaka nit obrađuje zasebne blokove procesora. Drugi nivo ostaje opšti. Slični koncepti su implementirani u AMD-ovoj Bobcat arhitekturi, koja je prilagođena laptopima i malim računarima.

Naravno, koncepti iz AMD-a, IBM-a i Intela mogu se vrlo uslovno smatrati direktnim analozima. Kao i pristupi projektovanju arhitekture procesora uopšte. Ali principi implementirani u odgovarajućim tehnologijama mogu se smatrati prilično sličnim, a ciljevi koje su programeri postavili u smislu povećanja efikasnosti mikrokola mogu biti vrlo bliski u suštini, ako ne i identični.

Ovo su ključne činjenice u vezi sa najzanimljivijom Intelovom tehnologijom. Utvrdili smo šta je to, kako omogućiti Hyper-Threading ili, obrnuto, deaktivirati ga. Poenta je vjerovatno u praktičnoj upotrebi njegovih prednosti, koje se mogu iskoristiti tako što ćete osigurati da hardverske i softverske komponente računara podržavaju tehnologiju.

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 sopstveni razvoj.

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 ram memorija DDR3-1600 (PC3-12800), 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, pošto 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 Hyper-Threading tehnologije unutar aplikacije, svaka nit koristi SetThreadAffinityMask API funkciju, koja postavlja masku u kojoj jedan bit odgovara svakom logičkom procesoru. Vrijednost jednog bita dozvoljava da određeni procesor koristi data nit, nulta vrijednost to zabranjuje. Za 8 logičkih procesora platforme koja se proučava, maska ​​11111111b dozvoljava 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, svako jezgro 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.

15.03.2013

Tehnologija Hyper-Threading pojavila se u Intelovim procesorima, zastrašujuće reći, prije više od 10 godina. I trenutno je važan element Core procesora. Međutim, pitanje potrebe za HT-om u igrama još uvijek nije potpuno jasno. Odlučili smo provesti test kako bismo shvatili da li igračima treba Core i7 ili je Core i5 bolji. Takođe saznajte koliko je Core i3 bolji od Pentiuma.


Tehnologija Hyper-Threading, koju je razvio Intel i koja se koristi isključivo u procesorima kompanije, počevši od nezaboravnog Pentiuma 4, je nešto što se trenutno uzima zdravo za gotovo. Njime je opremljen značajan broj procesora sadašnje i prethodnih generacija. Biće korišten u bliskoj budućnosti.

I mora se priznati da je Hyper-Threading tehnologija korisna i ima pozitivan efekat na performanse, inače je Intel ne bi koristio da pozicionira svoje procesore unutar linije. I to ne kao sporedni element, već jedan od najvažnijih, ako ne i najvažniji. Da bi bilo jasno o čemu govorimo, pripremili smo tabelu koja olakšava procenu principa segmentacije Intel procesora.


Kao što vidite, postoji vrlo malo razlika između Pentiuma i Core i3, kao i između Core i5 i Core i7. U stvari, modeli i3 i i7 razlikuju se od Pentiuma i i5 samo po veličini keš memorije trećeg nivoa po jezgru (ne računajući frekvenciju takta, naravno). Prvi par ima 1,5 megabajta, a drugi par ima 2 megabajta. Ova razlika ne može suštinski uticati na performanse procesora, jer je razlika u veličini keša veoma mala. Zbog toga su Core i3 i Core i7 dobili podršku za Hyper-Threading tehnologiju, koja je glavni element koji omogućava ovim procesorima da imaju prednost u performansama u odnosu na Pentium i Core i5, respektivno.

Kao rezultat toga, nešto veća keš memorija i podrška za Hyper-Threading omogućit će znatno veće cijene za procesore. Na primjer, procesori Pentium linije (oko 10 hiljada tenge) su otprilike dva puta jeftiniji od Core i3 (oko 20 hiljada tenge), i to uprkos činjenici da su fizički, na nivou hardvera, apsolutno identični, i, shodno tome , imaju istu cijenu. Razlika u ceni između Core i5 (oko 30 hiljada tenge) i Core i7 (oko 50 hiljada tenge) je takođe veoma velika, mada manje od dva puta kod mlađih modela.


Koliko je opravdano ovo povećanje cijene? Kakvu stvarnu dobit pruža Hyper-Threading? Odgovor je odavno poznat: povećanje varira, sve zavisi od aplikacije i njene optimizacije. Odlučili smo provjeriti što HT može učiniti u igricama, kao jednoj od najzahtjevnijih aplikacija za “kućanstvo”. Osim toga, ovaj test će biti odličan dodatak našem prethodnom materijalu o uticaju broja jezgara u procesoru na performanse igara.

Prije nego što pređemo na testove, prisjetimo se (ili saznamo) šta je Hyper-Threading tehnologija. Kao što je sam Intel rekao kada je uveo ovu tehnologiju prije mnogo godina, u tome nema ništa posebno komplikovano. Zapravo, sve što je potrebno za uvođenje HT-a na fizičkoj razini je da se jednoj fizičkoj jezgri doda ne jedan set registara i kontroler prekida, već dva. U procesorima Pentium 4, ovi dodatni elementi su povećali broj tranzistora za samo pet posto. U modernim Ivy Bridge jezgrama (kao i Sandy Bridge i budući Haswell), dodatni elementi za čak četiri jezgra ne povećavaju matricu ni za 1 posto.


Dodatni registri i kontroler prekida, zajedno sa softverskom podrškom, omogućavaju operativnom sistemu da vidi ne jedno fizičko jezgro, već dva logička. Istovremeno, obrada podataka iz dva toka koje sistem šalje i dalje se odvija na istom jezgru, ali sa nekim karakteristikama. Jedna nit još uvijek ima cijeli procesor na raspolaganju, ali čim se neki CPU blokovi oslobode i ne rade, oni se odmah predaju drugoj niti. Zahvaljujući tome, bilo je moguće istovremeno koristiti sve blokove procesora i na taj način povećati njegovu efikasnost. Kako je sam Intel naveo, povećanje performansi u idealnim uslovima može dostići i do 30 procenata. Istina, ovi pokazatelji vrijede samo za Pentium 4 sa svojim vrlo dugim cijevnim procesima od HT-a.

Ali idealni uslovi za Hyper-Threading nisu uvek slučaj. I što je najvažnije, najgori rezultat HT-a nije nedostatak povećanja performansi, već njegovo smanjenje. Odnosno, pod određenim uvjetima, performanse procesora s HT-om će pasti u odnosu na procesor bez HT-a zbog činjenice da će troškovi podjele niti i čekanja značajno premašiti dobit od obrade paralelnih niti, što je moguće u ovom konkretnom slučaju. slučaj. A takvi se slučajevi dešavaju mnogo češće nego što bi Intel želio. Štoviše, mnoge godine korištenja Hyper-Threadinga nisu poboljšale situaciju. Ovo se posebno odnosi na igre koje su vrlo složene i nimalo standardne u smislu izračunavanja podataka i aplikacija.

Kako bismo saznali utjecaj Hyper-Threadinga na performanse igara, ponovo smo koristili naš dugotrajni Core i7-2700K testni procesor i simulirali četiri procesora odjednom tako što smo onemogućili jezgre i uključili/isključili HT. Uobičajeno se mogu nazvati Pentium (2 jezgra, HT onemogućen), Core i3 (2 jezgra, HT omogućen), Core i5 (4 jezgre, HT onemogućen) i Core i7 (4 jezgre, HT omogućen). Zašto uslovno? Prije svega zato što po nekim karakteristikama ne odgovaraju pravim proizvodima. Konkretno, onemogućavanje jezgara ne dovodi do odgovarajućeg smanjenja volumena keša trećeg nivoa - njegov volumen za sve je 8 megabajta. I, osim toga, svi naši „uslovni“ procesori rade na istoj frekvenciji od 3,5 gigaherca, što još nisu postigli svi procesori Intelove linije.


Međutim, ovo je čak i na bolje, jer ćemo zahvaljujući stalnoj promeni svih važnih parametara moći bez ikakvih rezervi saznati stvarni uticaj Hyper-Threadinga na performanse igara. A procentualna razlika u performansama između našeg “uslovnog” Pentiuma i Core i3 će biti blizu razlici između stvarnih procesora, pod uslovom da su frekvencije jednake. Takođe ne bi trebalo da zbuni to što koristimo procesor sa Sandy Bridge arhitekturom, jer su naši testovi efikasnosti, o kojima možete pročitati u članku „Gole performanse – Ispitivanje efikasnosti ALU-a i FPU-a,” pokazali da je uticaj Hyper- Threading u najnovijim generacijama procesora Core ostaje nepromijenjen. Najvjerovatnije će ovaj materijal biti relevantan i za nadolazeće Haswell procesore.

Pa, čini se da su sva pitanja u vezi sa metodologijom testiranja, kao i operativnim karakteristikama Hyper-Threading tehnologije, razmotrena i stoga je vrijeme da pređemo na najzanimljiviju stvar - testove.

Čak i u testu u kojem smo proučavali uticaj broja procesorskih jezgara na performanse igara, otkrili smo da je 3DMark 11 potpuno opušten po pitanju performansi procesora, radeći savršeno čak i na jednoj jezgri. Hyper-Threading je imao isti „moćan“ uticaj. Kao što vidite, test ne primjećuje nikakve razlike između Pentiuma i Core i7, a da ne spominjemo srednje modele.

Metro 2033

Ali Metro 2033 je jasno primijetio pojavu Hyper-Threadinga. I negativno je reagovala na njega! Da, tako je: omogućavanje HT-a u ovoj igri ima negativan utjecaj na performanse. Mali uticaj, naravno - 0,5 frejmova u sekundi sa četiri fizička jezgra, i 0,7 sa dva. Ali ova činjenica daje sve razloge da se kaže da je Metro 2033 Pentium brži od Core i3, a Core i5 bolji od Core i7. Ovo je potvrda činjenice da Hyper-Threading ne pokazuje svoju efikasnost uvijek i ne svuda.

Crysis 2

Ova utakmica je pokazala vrlo zanimljive rezultate. Prije svega, napominjemo da je utjecaj Hyper-Threadinga jasno vidljiv kod dual-core procesora – Core i3 je ispred Pentiuma za skoro 9 posto, što je dosta za ovu igru. Pobjeda za HT i Intel? Ne baš, pošto Core i7 nije pokazao nikakvu dobit u odnosu na znatno jeftiniji Core i5. Ali postoji razumno objašnjenje za ovo - Crysis 2 ne može koristiti više od četiri toka podataka. Zbog toga vidimo dobar porast dual-core sa HT-om – ipak, četiri niti, iako logično, bolje su od dva. S druge strane, nije bilo gdje staviti dodatne Core i7 niti su bile sasvim dovoljne četiri fizička jezgra. Dakle, na osnovu rezultata ovog testa, možemo primijetiti pozitivan utjecaj HT-a u Core i3, koji je ovdje primjetno bolji od Pentiuma. Ali među četverojezgrenim procesorima, Core i5 opet izgleda kao razumnije rješenje.

Battlefield 3

Ovdje su rezultati vrlo čudni. Ako je u testu za broj jezgara, bojno polje bilo primjer mikroskopskog, ali linearnog povećanja, onda je uključivanje Hyper-Threadinga unijelo haos u rezultate. Zapravo, možemo konstatovati da se Core i3, sa svoje dvije jezgre i HT, pokazao najboljim od svih, ispred čak i Core i5 i Core i7. Čudno je, naravno, ali u isto vrijeme, Core i5 i Core i7 su opet bili na istom nivou. Šta ovo objašnjava nije jasno. Najvjerovatnije je tu ulogu odigrala metodologija testiranja u ovoj igri, koja daje veće greške od standardnih benčmarkova.

U prošlom testu F1 2011 se pokazao kao jedna od igara koja je vrlo kritična prema broju jezgara, a na ovom nas je ponovo iznenadila odličnim uticajem Hyper-Threading tehnologije na performanse. I opet, kao u Crysisu 2, uključivanje HT-a radilo je vrlo dobro na dvojezgrenim procesorima. Pogledajte razliku između našeg uslovnog Core i3 i Pentiuma - ona je više nego dvostruka! Jasno je vidljivo da igrici itekako nedostaju dva jezgra, a istovremeno je njen kod toliko dobro paralelan da je efekat neverovatan. S druge strane, ne možete se raspravljati sa četiri fizička jezgra - Core i5 je primjetno brži od Core i3. Ali Core i7, opet, kao iu prethodnim igrama, nije pokazao ništa izvanredno u poređenju sa Core i5. Razlog je isti - igra ne može koristiti više od 4 niti, a troškovi pokretanja HT-a smanjuju performanse Core i7 ispod nivoa Core i5.

Starom ratniku Hyper-Threading ne treba ništa više nego što ježu treba majica - njegov utjecaj nikako nije tako jasno vidljiv kao u F1 2011 ili Crysis 2. Ipak, još uvijek primjećujemo da uključivanje HT-a na dvojezgrenom procesoru donio 1 dodatni okvir. Ovo svakako nije dovoljno da se kaže da je Core i3 bolji od Pentiuma. U najmanju ruku, ovo poboljšanje očito ne odgovara razlici u cijeni ovih procesora. A ne vrijedi ni spominjati razliku u cijeni između Core i5 i Core i7, jer se procesor bez HT podrške opet pokazao bržim. I to znatno brže - za 7 posto. Šta god da se kaže, opet navodimo činjenicu da su četiri threada maksimum za ovu igru, pa samim tim HyperThreading u ovom slučaju ne pomaže Core i7, već otežava.

U prošlosti smo govorili o tehnologiji Simultaneous Multi-Threading (SMT), koja se koristi u Intel procesorima. Iako je prvobitno bila pod kodnim imenom Jackson Technology kao moguća opcija, Intel je svoju tehnologiju zvanično najavio na IDF forumu prošle jeseni. Kodno ime Jackson zamijenjeno je prikladnijim Hyper-Threading. Dakle, da bismo razumjeli kako nova tehnologija funkcionira, potrebno nam je početno znanje. Naime, moramo znati šta je nit, kako se te niti izvršavaju. Zašto aplikacija radi? Kako procesor zna koje operacije treba da izvrši nad kojim podacima? Sve ove informacije sadržane su u kompajliranom kodu pokrenute aplikacije. I čim aplikacija primi bilo koju naredbu ili bilo koji podatak od korisnika, niti se odmah šalju procesoru, uslijed čega on izvršava ono što mora učiniti kao odgovor na zahtjev korisnika. Sa tačke gledišta procesora, nit je skup instrukcija koje treba izvršiti. Kada vas pogodi projektil u Quake III Areni, ili kada otvorite Microsoft Word dokument, procesoru se šalje određeni set instrukcija koje mora izvršiti.

Procesor tačno zna gde da dobije ova uputstva. Retko spominjani registar koji se zove Programski brojač (PC) je dizajniran za ovu svrhu. Ovaj registar ukazuje na lokaciju u memoriji gdje je pohranjena sljedeća instrukcija koja će se izvršiti. Kada se nit pošalje procesoru, memorijska adresa niti se učitava u ovaj programski brojač tako da procesor tačno zna gdje da počne izvršavanje. Nakon svake instrukcije, vrijednost ovog registra se povećava. Cijeli ovaj proces traje dok se nit ne završi. Na kraju izvršavanja niti, adresa naredne instrukcije koja će se izvršiti se unosi u programski brojač. Niti mogu prekidati jedna drugu, a procesor pohranjuje vrijednost programskog brojača na stek i učitava novu vrijednost u brojač. Ali još uvijek postoji ograničenje u ovom procesu - samo jedna nit se može izvršiti u jedinici vremena.

Postoji dobro poznat način rješavanja ovog problema. Sastoji se od korištenja dva procesora - ako jedan procesor može izvršiti jednu po jednu nit, onda dva procesora već mogu izvršiti dvije niti u istoj jedinici vremena. Imajte na umu da ova metoda nije idealna. Dolazi sa mnogim drugim problemima. Neki su vam vjerovatno već poznati. Prvo, više procesora je uvijek skuplje od jednog. Drugo, upravljanje dva procesora takođe nije tako lako. Osim toga, ne zaboravite na podelu resursa između procesora. Na primjer, prije uvođenja AMD 760MP čipseta, sve x86 platforme sa podrškom za višeprocesiranje dijelile su svu propusnost sistemske magistrale među svim dostupnim procesorima. Ali glavni nedostatak je drugačiji - za takav rad i aplikacija i sam operativni sistem moraju podržavati višeprocesiranje. Sposobnost distribucije izvršenja više niti na računarske resurse često se naziva višenitno. Istovremeno, operativni sistem mora podržavati višenitnost. Aplikacije također moraju podržavati multithreading kako bi maksimalno iskoristili resurse vašeg računara. Imajte ovo na umu dok gledamo drugi pristup rješavanju problema višenitnosti, Intelovu novu Hyper-Threading tehnologiju.

Produktivnosti nikad dosta

Uvek se mnogo priča o efikasnosti. I to ne samo u korporativnom okruženju, u nekim ozbiljnim projektima, već iu svakodnevnom životu. Kažu da homo sapiens samo djelimično koristi mogućnosti svog mozga. Isto važi i za procesore savremenih računara.

Uzmite Pentium 4, na primjer, procesor ima ukupno sedam izvršnih jedinica, od kojih dvije mogu raditi dvostruko brže od dvije operacije (mikro-operacije) po taktu. Ali u svakom slučaju, nećete naći program koji bi mogao ispuniti sve ove uređaje uputama. Konvencionalni programi se zadovoljavaju jednostavnim proračunima cijelih brojeva i nekoliko operacija učitavanja i pohranjivanja podataka, dok su operacije s pomičnim zarezom ostavljene po strani. Drugi programi (na primjer, Maya) prvenstveno učitavaju uređaje s pomičnim zarezom radom.

Da bismo ilustrirali situaciju, zamislimo procesor sa tri izvršne jedinice: aritmetičko-logičkom jedinicom (cijeli ALU), jedinicom s pomičnim zarezom (FPU) i jedinicom za učitavanje/skladištenje (za pisanje i čitanje podataka iz memorije). Uz to, pretpostavimo da naš procesor može izvršiti bilo koju operaciju u jednom taktnom ciklusu i može istovremeno distribuirati operacije na sva tri uređaja. Zamislimo da je nit sljedećih instrukcija poslana ovom procesoru na izvršenje:

Slika ispod ilustruje nivo opterećenja aktuatora (siva označava uređaj u stanju mirovanja, plava označava radni uređaj):

Dakle, vidite da se u svakom ciklusu takta koristi samo 33% svih aktuatora. Ovaj put FPU ostaje potpuno neiskorišten. Prema Intelu, većina IA-32 x86 programa ne koristi više od 35% izvršnih jedinica Pentium 4 procesora.

Zamislimo drugu nit i pošaljimo je procesoru na izvršenje. Ovaj put će se sastojati od operacija učitavanja podataka, dodavanja i pohranjivanja podataka. Oni će se izvršavati sljedećim redoslijedom:

I opet, opterećenje na aktuatorima je samo 33%.

Dobar izlaz iz ove situacije bi bio paralelizam nivoa instrukcija (ILP). U ovom slučaju, nekoliko instrukcija se izvršava istovremeno, jer je procesor sposoban ispuniti nekoliko paralelnih izvršnih jedinica odjednom. Nažalost, većina x86 programa nije adekvatno prilagođena ILP-u. Stoga moramo pronaći druge načine za povećanje produktivnosti. Tako, na primjer, ako sistem koristi dva procesora odjednom, tada bi se dvije niti mogle izvršavati istovremeno. Ovo rješenje se naziva paralelizam na nivou niti (TLP). Inače, ovo rješenje je prilično skupo.

Koji drugi načini postoje da se poveća izvršna moć modernih x86 procesora?

Hyper-Threading

Problem nedovoljne iskorištenosti aktuatora nastaje iz više razloga. Uopšteno govoreći, ako procesor ne može da primi podatke željenom brzinom (ovo se dešava kao rezultat nedovoljnog propusnog opsega sistemske i memorijske magistrale), tada se aktuatori neće koristiti tako efikasno. Osim toga, postoji još jedan razlog - nedostatak paralelizma na nivou instrukcija u većini komandnih niti.

Trenutno, većina proizvođača poboljšava brzinu procesora povećanjem brzine takta i veličine keša. Naravno, na ovaj način možete povećati performanse, ali i dalje potencijal procesora neće biti u potpunosti iskorišten. Kada bismo mogli pokrenuti više niti u isto vrijeme, mogli bismo koristiti procesor mnogo efikasnije. Upravo je to suština Hyper-Threading tehnologije.

Hyper-Threading je naziv tehnologije koja je ranije postojala izvan x86 svijeta, Simultaneous Multi-Threading (SMT). Ideja iza ove tehnologije je jednostavna. Jedan fizički procesor izgleda operativnom sistemu kao dva logička procesora, a operativni sistem ne vidi razliku između jednog SMT procesora ili dva obična procesora. U oba slučaja, operativni sistem usmjerava niti kao da je sistem sa dva procesora. Nadalje, svi problemi se rješavaju na hardverskom nivou.

U procesoru sa Hyper-Threadingom, svaki logički procesor ima svoj skup registara (uključujući poseban programski brojač), a da ne bi komplicirao tehnologiju, ne implementira istovremeno izvršenje dohvaćanje/dekodiranje instrukcija u dvije niti. To jest, takve instrukcije se izvršavaju jedna po jedna. Paralelno se izvršavaju samo obične naredbe.

Tehnologija je službeno najavljena na Intel Developer Forumu prošle jeseni. Tehnologija je demonstrirana na Xeon procesoru, gdje je renderiranje izvršeno pomoću Maye. U ovom testu, Xeon sa Hyper-Threadingom pokazao se 30% bolje od standardnog Xeona. Lijepo povećanje performansi, ali ono što je najzanimljivije je da je tehnologija već prisutna u Pentium 4 i Xeon jezgrima, samo što je isključena.

Tehnologija još nije objavljena, ali oni od vas koji su kupili 0,13 mikronski Xeon i instalirali ovaj procesor na ploče sa ažuriranim BIOS-om vjerovatno su bili iznenađeni kada su vidjeli opciju u BIOS-u za omogućavanje/onemogućavanje Hyper-Threadinga.

U međuvremenu, Intel će ostaviti opciju Hyper-Threading onemogućenu prema zadanim postavkama. Međutim, da biste ga omogućili, samo trebate ažurirati BIOS. Sve ovo se odnosi na radne stanice i servere, što se tiče tržišta personalnih računara, kompanija nema planova u vezi sa ovom tehnologijom u bliskoj budućnosti. Iako je to moguće, proizvođači matičnih ploča će omogućiti mogućnost Hyper-Threadinga pomoću posebnog BIOS-a.

Ostaje vrlo zanimljivo pitanje, zašto Intel želi da ostavi ovu opciju onemogućenu?

Ući dublje u tehnologiju

Sjećate li se one dvije teme iz prethodnih primjera? Pretpostavimo ovaj put da je naš procesor opremljen Hyper-Threadingom. Hajde da vidimo šta će se desiti ako pokušamo da izvršimo ove dve niti istovremeno:

Kao i ranije, plavi pravokutnici označavaju izvršenje instrukcije prve niti, a zeleni pravokutnici označavaju izvršenje instrukcije druge niti. Sivi pravokutnici pokazuju neiskorištene aktuatore, a crveni pravokutnici ukazuju na sukob kada jedan uređaj primi dva odjednom. različita uputstva iz različitih tokova.

Dakle, šta vidimo? Paralelizam na nivou niti nije uspio - uređaji za izvršavanje počeli su se koristiti još manje efikasno. Umjesto paralelnog izvršavanja niti, procesor ih izvršava sporije nego da ih izvršava bez Hyper-Threadinga. Razlog je prilično jednostavan. Pokušali smo izvršiti dvije vrlo slične niti istovremeno. Na kraju krajeva, oba se sastoje od operacija učitavanja/skladišta i operacija sabiranja. Ako bismo paralelno pokretali "cjelobrojnu" aplikaciju i aplikaciju s pomičnim zarezom, bili bismo u mnogo boljoj situaciji. Kao što vidite, efikasnost Hyper-Threading-a u velikoj meri zavisi od vrste opterećenja na računaru.

Trenutno, većina korisnika računara koristi svoj računar otprilike onako kako je opisano u našem primeru. Procesor izvodi mnoge vrlo slične operacije. Nažalost, kada su slične operacije u pitanju, javljaju se dodatne poteškoće u upravljanju. Postoje situacije kada nema više aktuatora traženog tipa, a na sreću ima duplo više instrukcija nego inače. U većini slučajeva, kada bi procesori kućnih računara koristili Hyper-Threading tehnologiju, performanse se ne bi povećale, a možda čak i smanjile za 0-10%.

Međutim, na radnim stanicama Hyper-Threading ima više mogućnosti za povećanje produktivnosti. Ali s druge strane, sve zavisi od specifične upotrebe računara. Radna stanica može značiti ili vrhunski računar za obradu 3D grafike ili jednostavno teško opterećen računar.

Najveće povećanje performansi od upotrebe Hyper-Threadinga uočeno je u serverskim aplikacijama. To je uglavnom zbog širokog spektra operacija koje se šalju procesoru. Server baze podataka koji koristi transakcije može raditi 20-30% brže kada je omogućena opcija Hyper-Threading. Nešto manji dobici u performansama uočeni su na web serverima iu drugim područjima.

Maksimalna efikasnost od Hyper-Threadinga

Mislite li da je Intel razvio Hyper-Threading samo za svoju liniju serverskih procesora? Naravno da ne. Da je to slučaj, oni ne bi trošili prostor na čipu na svojim drugim procesorima. U stvari, arhitektura NetBurst koja se koristi u Pentium 4 i Xeonu je savršeno prikladna za kernel koji podržava istovremeno multithreading. Zamislimo ponovo procesor. Ovaj put će imati još jedan aktuator - drugi cjelobrojni uređaj. Pogledajmo šta će se dogoditi ako niti pokreću oba uređaja:

Koristeći drugi cjelobrojni uređaj, jedini konflikt se dogodio u posljednjoj operaciji. Naš teoretski procesor je donekle sličan Pentiumu 4. Ima čak tri cjelobrojna uređaja (dva ALU i jedan spori cjelobrojni uređaj za rotiranje smjena). Što je još važnije, oba Pentium 4 uređaja sa cijelim brojem mogu raditi dvostrukom brzinom – izvodeći dvije mikro operacije po ciklusu takta. To, zauzvrat, znači da bi bilo koji od ova dva Pentium 4/Xeon cjelobrojna uređaja mogao izvršiti te dvije operacije sabiranja iz različitih niti u jednom ciklusu takta.

Ali to ne rješava naš problem. Ne bi imalo smisla jednostavno dodati dodatne izvršne jedinice procesoru kako bi se povećale performanse Hyper-Threadinga. Što se tiče silicijumskog prostora, ovo bi bilo izuzetno skupo. Umjesto toga, Intel je predložio da programeri optimizuju programe za Hyper-Threading.

Koristeći instrukciju HALT, možete suspendirati jedan od logičkih procesora, čime ćete povećati performanse aplikacija koje nemaju koristi od Hyper-Threadinga. Dakle, aplikacija neće raditi sporije, već će jedan od logičkih procesora biti zaustavljen i sistem će raditi na jednom logičkom procesoru - performanse će biti iste kao na jednoprocesorskim računarima. Zatim, kada aplikacija odluči da će imati koristi od Hyper-Threadinga u performansama, drugi logički procesor će jednostavno nastaviti svoj rad.

Na Intelovoj web stranici postoji prezentacija koja tačno opisuje kako programirati da biste maksimalno iskoristili Hyper-Threading.

zaključci

Iako smo svi bili izuzetno uzbuđeni kada smo čuli glasine o Hyper-Threadingu u jezgri svih modernih Pentium 4/Xeona, to ipak neće biti besplatna izvedba za sve prilike. Razlozi su jasni, a pred tehnologijom je dug put prije nego što vidimo da Hyper-Threading radi na svim platformama, uključujući kućne računare. Uz podršku programera, tehnologija definitivno može biti dobar saveznik za Pentium 4, Xeon i Intelove procesore buduće generacije.

S obzirom na trenutna ograničenja i dostupnu tehnologiju pakovanja, Hyper-Threading se čini pametnijim izborom za potrošačko tržište od, na primjer, AMD-ovog SledgeHammer pristupa – ovi procesori koriste čak dvije jezgre. I dok tehnologije pakovanja kao što je Bumpless Build-Up Layer ne sazre, troškovi razvoja višejezgrenih procesora mogu biti previsoki.

Zanimljivo je primijetiti koliko su se AMD i Intel razlikovali u posljednjih nekoliko godina. Uostalom, AMD je nekada praktično kopirao Intelove procesore. Sada su kompanije razvile fundamentalno različite pristupe budućim procesorima za servere i radne stanice. AMD je zapravo prešao veoma dug put. A ako Sledge Hammer procesori zapravo koriste dvije jezgre, onda će takvo rješenje biti efikasnije u performansama od Hyper-Threadinga. Zaista, u ovom slučaju, osim udvostručavanja broja svih aktuatora, otklanjaju se problemi koje smo gore opisali.

Hyper-Threading se neko vrijeme neće pojaviti na mainstream PC tržištu, ali uz dobru podršku programera, to bi mogla biti sljedeća tehnologija koja će se spustiti sa nivoa servera na mainstream PC.

„...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 Hyper Threading tehnologiji:

1. Ova tehnologija je dizajnirana da poveća efikasnost procesora. Činjenica je da, prema Intelovim procjenama, samo 30% radi većinu vremena ( 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 kojem ć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, to više nije vijest ovo ograničenje arhitekture se već neko vrijeme koriste uz pomoć „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. Općenito, 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 ovisi o brzini pristupa podacima iz memorije iu najgorem slučaju njome je određena. Bilo bi logično da se „odveže“ od cjevovoda u kojem se, zapravo, izvode mikrooperacije. To je učinjeno postavljanjem bloka za dešifriranje prije keš za praćenje. Šta ovim pokušavamo postići? 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 10 15% povećanje performansi. Š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, prvi nivo keš memorije će biti povećan 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, situacija je malo nejasna. 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 proces dalje. 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 nastati situacija „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, MIS planer sekvenci mikroinstrukcija 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 trenutno istiskuje „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. Stoga je, inače, lako razumljiva potreba da se ALU napravi duplo bržim – 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 najviših 16 bita 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, na primjer, Thermal Monitor kao tehnologija! Uostalom, nema mnogo potrebe za takvom tehnologijom kao takvom, dakako, lijepo je š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 tada je vrlo logično poduzeti mjere kako bi se osiguralo da procesor radi "punim kapacitetom" samo u sistemima gdje je osigurano 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 ( čipseta IBM tip Summit podržava do 16 procesora, metodologija je približno ista kao u ProFusion čipsetu) 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 cijenu 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 ideš, 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 prema broju 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; na kraju krajeva, 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 navikli 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-procesor 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 poboljšati 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 multiprocesiranja 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. Osim toga, prisustvo Hyper Threadinga bi omogućilo istinski paralelni rad operativni sistem i aplikacije, a ne u "komadima" jedan po jedan, kao sada. 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 više puta iznosili vredne komentare.

mob_info