Izbor čitalaca
Popularni članci
U ovom članku pokušaću da opišem terminologiju koja se koristi za opisivanje sistema koji mogu da izvršavaju više programa paralelno, tj. višejezgarni, višeprocesorski, višenitni. Različiti tipovi paralelizma u IA-32 CPU-u pojavili su se u različito vrijeme i pomalo nedosljednim redoslijedom. Lako se zbuniti u svemu ovome, posebno s obzirom na to da operativni sistemi paze da sakriju detalje od manje sofisticiranih aplikativnih programa.
Svrha članka je pokazati da se uz svu raznolikost mogućih konfiguracija višeprocesorskih, višejezgrenih i višenitnih sistema za programe koji se na njima pokreću, stvaraju mogućnosti kako za apstrakciju (zanemarivanje razlika) tako i za uzimanje u obzir specifičnosti ( mogućnost programskog učenja konfiguracije).
Upozorenje o znakovima ®, ™ u članku
Moj objašnjava zašto bi zaposleni u kompaniji trebali koristiti oznake autorskih prava u javnim komunikacijama. U ovom članku, morali su se koristiti prilično često.
U savremenom svetu, procesor je ono što kupujemo u prelepoj maloprodajnoj kutiji ili ne baš lepom OEM pakovanju. Nedjeljiv entitet umetnut u utičnicu na matičnoj ploči. Čak i ako nema konektora i ne može se ukloniti, odnosno ako je čvrsto zalemljen, ovo je jedan čip.
Mobilni sistemi (telefoni, tableti, laptopi) i većina desktop računara imaju jedan procesor. Radne stanice i serveri ponekad imaju dva ili više procesora na istoj matičnoj ploči.
Podrška za više CPU-a u jednom sistemu zahtijeva brojne promjene dizajna. U najmanju ruku, potrebno je osigurati njihovu fizičku vezu (predvidjeti nekoliko soketa na matičnoj ploči), riješiti probleme identifikacije procesora (vidi dalje u ovom članku, kao i moju bilješku), koordinirati pristup memoriji i isporuku prekida ( kontroler prekida mora biti u stanju da usmjeri prekide na više procesora) i, naravno, podršku operativnog sistema. Nažalost, nisam uspeo da pronađem dokumentovano pominjanje trenutka kada je prvi višeprocesorski sistem kreiran na Intel procesorima, ali Wikipedia tvrdi da ih je Sequent Computer Systems isporučio već 1987. koristeći Intel 80386 procesore. Široko rasprostranjena podrška za nekoliko čipova u jednom sistemu postaje dostupna počevši od Intel® Pentiuma.
Ako postoji nekoliko procesora, onda svaki od njih ima svoj konektor na ploči. Istovremeno, svaki od njih ima potpune nezavisne kopije svih resursa, kao što su registri, izvršni uređaji, keš memorije. Oni dijele zajedničku memoriju - RAM. S njima se pamćenje može povezati na različite i prilično netrivijalne načine, ali ovo je posebna priča koja je izvan okvira ovog članka. Važno je da u svakom slučaju izvršni programi moraju stvoriti iluziju homogene dijeljene memorije, dostupnoj svim procesorima u sistemu.
Čini se da ako u sistemu ima više procesora, onda su njegove performanse veće (na zadacima koji mogu koristiti sve resurse). Međutim, ako je cijena komunikacije između njih previsoka, onda se sav dobitak od paralelizma ubija dugim kašnjenjima u prijenosu zajedničkih podataka. To je upravo ono što se uočava u višeprocesorskim sistemima - i fizički i logički su veoma udaljeni jedan od drugog. Za efikasnu komunikaciju u takvim uslovima, moraju se izmisliti specijalizovane magistrale kao što je Intel® QuickPath Interconnect. Potrošnja energije, veličina i cijena konačnog rješenja, naravno, ne smanjuju se od svega ovoga. Visoka integracija komponenti bi trebala priskočiti u pomoć - kola koja izvode dijelove paralelnog programa moraju se povući bliže jedno drugom, po mogućnosti na jednom čipu. Drugim riječima, jedan procesor bi trebao organizirati nekoliko jezgra, identični jedni drugima u svemu, ali rade nezavisno.
Prvi Intelovi procesori sa više jezgara IA-32 predstavljeni su 2005. godine. Od tada, prosječan broj jezgara na serverskim, desktop, a sada i mobilnim platformama stalno raste.
Za razliku od dva procesora s jednom jezgrom u istom sistemu, koji dijele samo memoriju, dvije jezgre također mogu dijeliti keš memorije i druge resurse odgovorne za interakciju s memorijom. Najčešće, kešovi prvog nivoa ostaju privatni (svako jezgro ima svoje), dok drugi i treći nivo mogu biti zajednički ili odvojeni. Ovakva organizacija sistema smanjuje kašnjenje u isporuci podataka između susednih jezgara, posebno ako rade na zajedničkom zadatku.
Nema ničeg novog pod suncem. HT je poseban slučaj onoga što se u literaturi naziva simultano višenitnost (SMT). Za razliku od "pravih" jezgri, koje su potpune i nezavisne kopije, u slučaju HT-a samo je dio internih čvorova dupliciran u jednom procesoru, prvenstveno odgovornom za pohranjivanje arhitektonskog stanja - registara. Izvršni čvorovi odgovorni za organiziranje i obradu podataka ostaju u jednini i u svakom trenutku ih koristi najviše jedna od niti. Kao i jezgra, hipernitovi dijele keš memorije među sobom, ali počevši od toga na kojem nivou ovisi o specifičnom sistemu.
Neću pokušavati objasniti sve prednosti i nedostatke SMT dizajna općenito, a posebno HT dizajna. Zainteresovani čitalac može pronaći prilično detaljnu raspravu o tehnologiji u mnogim izvorima, i naravno na Wikipediji. Međutim, primijetit ću sljedeću važnu tačku, koja objašnjava trenutna ograničenja broja hipernitova u stvarnoj proizvodnji.
Tipični scenariji za desktop i serverske aplikacije dizajnirane za strojne arhitekture opće namjene imaju potencijal za paralelizam implementiran pomoću HT-a. Međutim, ovaj potencijal se brzo "iskoristi". Možda iz tog razloga, na gotovo svim IA-32 procesorima, broj hardverskih hipernitova ne prelazi dva. U tipičnim scenarijima, dobitak od korištenja tri ili više hipernitiranja bio bi mali, ali je gubitak u veličini matrice, potrošnji energije i cijeni značajan.
Druga situacija je uočena u tipičnim zadacima koji se obavljaju na video akceleratorima. Stoga ove arhitekture karakteriše upotreba SMT tehnologije sa većim brojem niti. Budući da su Intel® Xeon Phi koprocesori (uvedeni 2010.) ideološki i genealoški prilično bliski video karticama, možda imaju četiri hiperthreading na svakom jezgru - konfiguracija jedinstvena za IA-32.
Nadalje, radi praktičnosti, broj procesora, jezgara i niti u nekom sistemu označavamo trostrukom ( x, y, z), Gdje x je broj procesora y je broj jezgara u svakom procesoru, i z je broj hipernitova u svakoj jezgri. U nastavku ću se osvrnuti na ovaj trio topologija- ustaljeni termin koji nema mnogo veze sa odsjekom matematike. Posao str = xyz definira broj imenovanih entiteta logičkih procesora sistemima. Definira ukupan broj nezavisnih konteksta procesa aplikacije u sistemu dijeljene memorije koji se izvršava paralelno koje operativni sistem mora uzeti u obzir. Kažem "prisilno" jer ne može kontrolirati redoslijed izvršenja dva procesa koji su na različitim logičkim procesorima. Ovo se takođe odnosi i na hipernitove: iako se pokreću "sekvencionalno" na istoj jezgri, određeni redosled diktira hardver i nije vidljiv niti kontrolisan od strane programa.
Operativni sistem najčešće skriva od krajnjih aplikacija karakteristike fizičke topologije sistema na kojem radi. Na primjer, sljedeće tri topologije: (2, 1, 1), (1, 2, 1) i (1, 1, 2) - OS će biti predstavljen kao dva logička procesora, iako prvi od njih ima dva procesora , druga ima dvije jezgre, a treća samo dvije niti.
Windows Task Manager prikazuje 8 logičkih procesora; ali koliko je to u procesorima, jezgrima i hipernitovima?
Linux vrh prikazuje 4 logička procesora.
Ovo je prilično zgodno za kreatore primijenjenih aplikacija - ne moraju se baviti hardverskim karakteristikama koje su za njih često beznačajne.
Informacije o topologiji sistema u cjelini, kao io poziciji svakog logičkog procesora u IA-32, dostupne su korištenjem CPUID instrukcije. Od pojave prvih višeprocesorskih sistema, šema logičke identifikacije procesora je nekoliko puta proširena. Do danas su njegovi dijelovi sadržani u listovima 1, 4 i 11 CPUID-a. Koji od listova gledati može se odrediti iz sljedećeg blok dijagrama, preuzetog iz članka:
Neću ovdje dosaditi sa svim detaljima pojedinih dijelova ovog algoritma. Ako postoji interes, tome se može posvetiti sljedeći dio ovog članka. Uputiću zainteresovanog čitaoca, u kojem je ovo pitanje analizirano što je moguće detaljnije. Ovdje ću prvo ukratko opisati šta je APIC i kako je on povezan s topologijom. Zatim, razmislite o radu sa listom 0xB (jedanaest u decimali), koji je trenutno najnovija riječ u "apico-buildingu".
Trenutno je širina broja pohranjenog u APIC ID-u dostigla puna 32 bita, iako je u prošlosti bila ograničena na 16, a još ranije na samo 8 bita. Danas su ostaci starih dana raštrkani po cijelom CPUID-u, ali sva 32 bita APIC ID-a se vraćaju u CPUID.0xB.EDX. Svaki logički procesor koji nezavisno izvršava CPUID instrukciju će vratiti različitu vrijednost.
Logički procesori unutar iste jezgre će odgovarati svim bitovima APIC ID-a osim onih u SMT polju. Za logičke procesore koji su u istom procesoru, svi bitovi osim za Core i SMT polja. Pošto broj podlistova za CPUID.0xB može rasti, ova šema će podržati opis topologija sa većim brojem nivoa, ako bude potrebno u budućnosti. Štaviše, biće moguće uvesti srednje nivoe između postojećih.
Važna posledica organizacije ove šeme je da u skupu svih APIC ID-ova svih logičkih procesora sistema mogu postojati „rupe“, tj. neće ići sekvencijalno. Na primjer, u višejezgrenom procesoru s onemogućenim HT-om, svi APIC ID-ovi mogu se pokazati parnim, budući da će bit najmanjeg značaja koji je odgovoran za kodiranje hipernitnog broja uvijek biti nula.
Imajte na umu da CPUID.0xB nije jedini izvor informacija o logičkim procesorima dostupnim operativnom sistemu. Lista svih procesora koji su mu dostupni, zajedno sa njihovim APIC ID vrijednostima, je kodirana u MADT ACPI tabeli.
Na Linuxu su informacije o topologiji sadržane u /proc/cpuinfo pseudo-datoteci, kao i izlaz naredbe dmidecode. U primjeru ispod, filtriram sadržaj cpuinfo na nekom ne-HT četverojezgrenom sistemu, ostavljajući samo unose koji se odnose na topologiju:
Skriveni tekst
[email protected]:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" procesor: 0 fizički id: 0 braće i sestara: 4 core id: 0 jezgra procesora: 2 apicid: 0 početni apicid: 0 procesor: 1 fizički id: 0 braće i sestara: 4 id jezgre: 0 jezgra procesora: 2 apicid: 1 početni apicid: 1 procesor: 2 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgra procesora: 2 apicid: 2 početni apicid: 2 procesor: 3 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgra procesora: 2 apicid: 3 početni apicid: 3
U FreeBSD-u, topologija se izvještava putem sysctl mehanizma u varijabli kern.sched.topology_spec kao XML:
Skriveni tekst
[email protected]:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec:
U MS Windows 8, informacije o topologiji mogu se vidjeti u Task Manageru.
Ne možete se nositi s ovim problemom, a da ne znate šta je 4-jezgarni procesor. Kod procesora s jednom, dvije i tri jezgre sve je jednostavno: oni imaju jednu, dvije ili tri jezgre, respektivno. Što se tiče 4-jezgrene, onda nije sve kako se čini na prvi pogled.
Većina ljudi griješi misleći da se frekvencija svake jezgre zbraja. Pošto je frekvencija jezgara 2,5 GHz, a postoje 4 jezgre, onda je 2,5 * 4 = 10 GHz. Ali to nije tako: frekvencija je uvijek ista - 2,5 GHz. Zašto se frekvencija ne zbraja? Zato što svaki procesor radi paralelno sa ovom frekvencijom.
Dio je dio vremena za koji procesor dodjeljuje resurse svim nitima koje su ušle u procesor. To je kao 4 autoputa sa ograničenjem brzine od 60 km/h (2,5 GHz): imamo kamione koji treba da nam dostave robu (ovo su naši delovi programa ili delovi programa), a da bismo povećali brzinu isporuke (povećati efikasnost sistema), trebamo koristiti sva 4 autoputa ili povećati ograničenje brzine (3,0 GHz). Ali za većinu programa nemoguće je raditi u više niti, jer rade u jednoj niti i mogu koristiti samo jedan autoput (što znači da će samo 25% ukupne snage procesora biti dodijeljeno našem programu) jer logika u programu se mora izvršavati sekvencijalno (threaded), a ako prekinete sekvencu, logika će biti prekinuta, a to će dovesti do kvarova. Novi programi pokušavaju koristiti multiprogramiranje - mogućnost rada u nekoliko niti (naših autoputeva), a ne u jednoj, kao većina programa sada. Igre su uglavnom optimizovane za višenitnost, ali glavna nit obično radi u jednoj. Iako sada pokušavaju to podijeliti na nekoliko, kako bi olakšali i ubrzali. Stoga je za igre ili aplikacije koje obično rade u jednoj ili dvije niti, bolje uzeti 2-jezgreni procesor.
Ako je frekvencija dvojezgrene jezgre ista kao i kod četverojezgrene, onda je bolje uzeti četverojezgrenu, naravno, jer imamo ogroman broj programa koji rade u isto vrijeme, iako slabo opterećenje . Dobit ćemo performanse sistema zbog činjenice da svi ostali procesi mogu biti istjerani na drugo jezgro kada je jedan od njih potpuno učitan. Ali obično je frekvencija novog dual-corea viša od frekvencije novog četverojezgrenog. Zato u testovima u igricama 2-nuklearne pobjeđuju s većom frekvencijom od 4-nuklearne sa manjom.
Sada shvatimo da pri prelasku s jednojezgrenog na dvojezgreni, brzina raste brže ne samo zbog istovremene obrade od strane jezgara, već i zbog čekanja i čekanja na procesoru.
Frekvencija procesora sa jednom jezgrom i procesora sa dva jezgra je ista, ali računar radi brže sa 2 jezgre. Poenta je multiprogramiranje, kada se izvrši prijelaz s jednojezgrenog na dvojezgreni, brzina se značajno povećava. A multiprogramiranje se odnosi na rad sa nitima. Zamislite 2 niti, na primjer, pokretanje Windows-a i pokretanje kompjuterske igrice. Ako imamo jedno jezgro, onda se igra (dio) obrađuje sekvencijalno, zatim rad Windowsa (dio). Procesi moraju čekati u redu, odnosno kada se "komad" igre obradi, onda Windows mora čekati završetak obrade igre (dio igre). Kada smo prešli na 2 jezgre, čak i sa istom frekvencijom kao i jedno jezgro, računar počinje brže da obrađuje, jer se red čekanja smanjuje za 2 puta.
Detaljnije ću objasniti na primjeru 100 aplikacija, ako imamo 1 jezgro, onda se 1 aplikacija obrađuje, preostalih 99 čekaju na red. I što je duži red čekanja, to duže traju ažuriranja, a onda osjećamo da se naš sistem usporava. A kada imamo 2 jezgre, onda se red dijeli na pola, odnosno 50 aplikacija na jednoj i 50 na drugoj, stoga ih je lakše i brže ažurirati. Važno je znati da je red sve manji i da se naše aplikacije brže ažuriraju.
Za testiranje niti, pokrenite winrar da komprimujete veliku datoteku i pogledajte u menadžeru (komprimuje se u jednu nit) koliko će CPU-a koristiti (25% na 4-jezgarnom i 50% na 2-jezgrenom). Iz ovoga proizilazi da će našoj igri, ako radi u jednoj niti u četverojezgrenom procesoru, biti dodijeljeno 25% snage procesora, 50% ako se radi o dual-core procesoru. U igrama imamo multithreading, ali će glavna nit u igri i dalje biti obrađena na četvrtini procesora (u četverojezgrenom).
Sve se smatralo pojednostavljenim, 2-jezgrene sa višom frekvencijom bolje su za igre, budući da je više frekvencije dodijeljeno jednoj niti, a 4-jezgreni su pogodni za višenitne podatke, na primjer, mnoge aplikacije koje rade u isto vrijeme.
2-jezgarni i5 procesor ima tehnologiju koja vam omogućava da simulirate rad sistema, kao kod 4-jezgrenog procesora. U stvari, postoje samo 2 jezgre, ali za Windows, 4 jezgre su simulirane. 4 reda (niti) 2 reda (niti) po jezgri se obrađuju naizmjenično. Svaka jezgra zauzima dio svake od niti, odnosno može biti četverojezgrena.
Za moderne operativne sisteme kao što su Windows 7 ili novi Windows 8.1, jedno ili dva procesorska jezgra u sistemskoj jedinici više nisu dovoljna. Stoga proizvođači nastoje dodati što više jezgri modernim računarima. ali i uštedite na cijeni. U osnovi sada proizvode dva, četiri nuklearna laptopa i četiri nuklearna procesora za kompjutere.
Ponekad, u procesu savladavanja personalnog računara ili laptopa, korisnik ima pitanje R12; Koliko jezgara ima u njegovom kompjuteru? Mnogi žele saznajte koliko jezgri procesor u svom kompjuteru.
Kako to saznati? To je vrlo lako uraditi. Postoje programi pomoću kojih možete saznati mnoge sistemske parametre, kao što su video kartica, zvučna kartica, RAM, temperatura i tako dalje. Za ove namjene vrlo je prikladan program Everest, ili kako su ga nekada zvali Aida. Postoje zasebni programi pomoću kojih možete saznati samo o video kartici ili samo o procesoru. Ali u našem slučaju ništa od ovoga nije potrebno. Saznat ćemo koliko je jezgara u našem računalu pomoću ugrađenih Windows alata.
Dakle, počnimo!
METODA 1.
Da biste to uradili, idite na meni "Start" i na desnoj strani menija potražite stavku "Računar" i kliknite desnim tasterom miša na nju
Tako ćemo otvoriti prozor u kojem trebate odabrati stavku "Svojstva".
Ulazimo u svojstva računara, gdje možemo vidjeti veličinu RAM-a, vrstu procesora, ali ne i broj jezgara, ali da bismo saznali koliko ih je u procesoru, moramo pronaći liniju “ Upravljač uređajima” na lijevoj strani.
Ulazimo u upravitelj uređaja i pronalazimo redak "Procesori". Da biste ga proširili, kliknite na mali trokut nasuprot stavke "Procesori"
I vidimo broj jezgara u procesoru. Saznao sam da imam četiri jezgra. Možete imati dva i tri ili četiri i šest.
METODA 2.(još lakše)
Moramo pokrenuti upravitelj zadataka, za to desnom tipkom miša kliknemo na traku za brzo pokretanje i u prozoru koji se otvori odaberite stavku "Pokreni upravitelj zadataka"
U gornjem panelu menadžera odaberite karticu "Performanse" i pogledajte hronologiju učitavanja centralne memorije. Svaki poseban prozor prikazuje učitavanje kernela. To jest, imam 4 prozora i stoga četiri jezgra.
Sada znate kako je lako saznajte koliko jezgri na vašem računaru!
U ovom članku pokušaću da opišem terminologiju koja se koristi za opisivanje sistema koji mogu da izvršavaju više programa paralelno, tj. višejezgarni, višeprocesorski, višenitni. Različiti tipovi paralelizma u IA-32 CPU-u pojavili su se u različito vrijeme i pomalo nedosljednim redoslijedom. Lako se zbuniti u svemu ovome, posebno s obzirom na to da operativni sistemi paze da sakriju detalje od manje sofisticiranih aplikativnih programa.
Svrha članka je pokazati da se uz svu raznolikost mogućih konfiguracija višeprocesorskih, višejezgrenih i višenitnih sistema za programe koji se na njima pokreću, stvaraju mogućnosti kako za apstrakciju (zanemarivanje razlika) tako i za uzimanje u obzir specifičnosti ( mogućnost programskog učenja konfiguracije).
Upozorenje o znakovima ®, ™ u članku
Moj komentar objašnjava zašto bi zaposleni u kompaniji trebali koristiti oznake autorskih prava u javnim komunikacijama. U ovom članku, morali su se koristiti prilično često.
U savremenom svetu, procesor je ono što kupujemo u prelepoj maloprodajnoj kutiji ili ne baš lepom OEM pakovanju. Nedjeljiv entitet umetnut u utičnicu na matičnoj ploči. Čak i ako nema konektora i ne može se ukloniti, odnosno ako je čvrsto zalemljen, ovo je jedan čip.
Mobilni sistemi (telefoni, tableti, laptopi) i većina desktop računara imaju jedan procesor. Radne stanice i serveri ponekad imaju dva ili više procesora na istoj matičnoj ploči.
Podrška za više CPU-a u jednom sistemu zahtijeva brojne promjene dizajna. U najmanju ruku, potrebno je obezbediti njihovu fizičku vezu (obezbediti nekoliko soketa na matičnoj ploči), rešiti probleme identifikacije procesora (vidi dalje u ovom članku, kao i moju prethodnu napomenu), koordinaciju pristupa memoriji i prekid isporuke ( kontroler prekida mora biti u stanju da usmjeri prekide na više procesora) i, naravno, podršku operativnog sistema. Nažalost, nisam uspeo da pronađem dokumentovano pominjanje trenutka kada je prvi višeprocesorski sistem kreiran na Intel procesorima, ali Wikipedia tvrdi da ih je Sequent Computer Systems isporučio već 1987. koristeći Intel 80386 procesore. Široko rasprostranjena podrška za nekoliko čipova u jednom sistemu postaje dostupna počevši od Intel® Pentiuma.
Ako postoji nekoliko procesora, onda svaki od njih ima svoj konektor na ploči. Istovremeno, svaki od njih ima potpune nezavisne kopije svih resursa, kao što su registri, izvršni uređaji, keš memorije. Oni dijele zajedničku memoriju - RAM. S njima se pamćenje može povezati na različite i prilično netrivijalne načine, ali ovo je posebna priča koja je izvan okvira ovog članka. Važno je da u svakom slučaju izvršni programi moraju stvoriti iluziju homogene dijeljene memorije, dostupnoj svim procesorima u sistemu.
Čini se da ako u sistemu ima više procesora, onda su njegove performanse veće (na zadacima koji mogu koristiti sve resurse). Međutim, ako je cijena komunikacije između njih previsoka, onda se sav dobitak od paralelizma ubija dugim kašnjenjima u prijenosu zajedničkih podataka. To je upravo ono što se uočava u višeprocesorskim sistemima - i fizički i logički su veoma udaljeni jedan od drugog. Za efikasnu komunikaciju u takvim uslovima, moraju se izmisliti specijalizovane magistrale kao što je Intel® QuickPath Interconnect. Potrošnja energije, veličina i cijena konačnog rješenja, naravno, ne smanjuju se od svega ovoga. Visoka integracija komponenti bi trebala priskočiti u pomoć - kola koja izvode dijelove paralelnog programa moraju se povući bliže jedno drugom, po mogućnosti na jednom čipu. Drugim riječima, jedan procesor bi trebao organizirati nekoliko jezgra, identični jedni drugima u svemu, ali rade nezavisno.
Prvi Intelovi procesori sa više jezgara IA-32 predstavljeni su 2005. godine. Od tada, prosječan broj jezgara na serverskim, desktop, a sada i mobilnim platformama stalno raste.
Za razliku od dva procesora s jednom jezgrom u istom sistemu, koji dijele samo memoriju, dvije jezgre također mogu dijeliti keš memorije i druge resurse odgovorne za interakciju s memorijom. Najčešće, kešovi prvog nivoa ostaju privatni (svako jezgro ima svoje), dok drugi i treći nivo mogu biti zajednički ili odvojeni. Ovakva organizacija sistema smanjuje kašnjenje u isporuci podataka između susednih jezgara, posebno ako rade na zajedničkom zadatku.
Nema ničeg novog pod suncem. HT je poseban slučaj onoga što se u literaturi naziva simultano višenitnost (SMT). Za razliku od "pravih" jezgri, koje su potpune i nezavisne kopije, u slučaju HT-a samo je dio internih čvorova dupliciran u jednom procesoru, prvenstveno odgovornom za pohranjivanje arhitektonskog stanja - registara. Izvršni čvorovi odgovorni za organiziranje i obradu podataka ostaju u jednini i u svakom trenutku ih koristi najviše jedna od niti. Kao i jezgra, hipernitovi dijele keš memorije među sobom, ali počevši od toga na kojem nivou ovisi o specifičnom sistemu.
Neću pokušavati objasniti sve prednosti i nedostatke SMT dizajna općenito, a posebno HT dizajna. Zainteresovani čitalac može pronaći prilično detaljnu raspravu o tehnologiji u mnogim izvorima, i naravno na Wikipediji. Međutim, primijetit ću sljedeću važnu tačku, koja objašnjava trenutna ograničenja broja hipernitova u stvarnoj proizvodnji.
Tipični scenariji za desktop i serverske aplikacije dizajnirane za strojne arhitekture opće namjene imaju potencijal za paralelizam implementiran pomoću HT-a. Međutim, ovaj potencijal se brzo "iskoristi". Možda iz tog razloga, na gotovo svim IA-32 procesorima, broj hardverskih hipernitova ne prelazi dva. U tipičnim scenarijima, dobitak od korištenja tri ili više hipernitiranja bio bi mali, ali je gubitak u veličini matrice, potrošnji energije i cijeni značajan.
Druga situacija je uočena u tipičnim zadacima koji se obavljaju na video akceleratorima. Stoga ove arhitekture karakteriše upotreba SMT tehnologije sa većim brojem niti. Budući da su Intel® Xeon Phi koprocesori (uvedeni 2010.) ideološki i genealoški prilično bliski video karticama, možda imaju četiri hiperthreading na svakom jezgru - konfiguracija jedinstvena za IA-32.
Nadalje, radi praktičnosti, broj procesora, jezgara i niti u nekom sistemu označavamo trostrukom ( x, y, z), Gdje x je broj procesora y je broj jezgara u svakom procesoru, i z je broj hipernitova u svakoj jezgri. U nastavku ću se osvrnuti na ovaj trio topologija- ustaljeni termin koji nema mnogo veze sa odsjekom matematike. Posao str = xyz definira broj imenovanih entiteta logičkih procesora sistemima. Definira ukupan broj nezavisnih konteksta procesa aplikacije u sistemu dijeljene memorije koji se izvršava paralelno koje operativni sistem mora uzeti u obzir. Kažem "prisilno" jer ne može kontrolirati redoslijed izvršenja dva procesa koji su na različitim logičkim procesorima. Ovo se takođe odnosi i na hipernitove: iako se pokreću "sekvencionalno" na istoj jezgri, određeni redosled diktira hardver i nije vidljiv niti kontrolisan od strane programa.
Operativni sistem najčešće skriva od krajnjih aplikacija karakteristike fizičke topologije sistema na kojem radi. Na primjer, sljedeće tri topologije: (2, 1, 1), (1, 2, 1) i (1, 1, 2) - OS će biti predstavljen kao dva logička procesora, iako prvi od njih ima dva procesora , druga ima dvije jezgre, a treća samo dvije niti.
Windows Task Manager prikazuje 8 logičkih procesora; ali koliko je to u procesorima, jezgrima i hipernitovima?
Linux vrh prikazuje 4 logička procesora.
Ovo je prilično zgodno za kreatore primijenjenih aplikacija - ne moraju se baviti hardverskim karakteristikama koje su za njih često beznačajne.
Informacije o topologiji sistema u cjelini, kao io poziciji svakog logičkog procesora u IA-32, dostupne su korištenjem CPUID instrukcije. Od pojave prvih višeprocesorskih sistema, šema logičke identifikacije procesora je nekoliko puta proširena. Do danas su njegovi dijelovi sadržani u listovima 1, 4 i 11 CPUID-a. Koji od listova gledati može se odrediti iz sljedećeg blok dijagrama, preuzetog iz članka:
Neću ovdje dosaditi sa svim detaljima pojedinih dijelova ovog algoritma. Ako postoji interes, tome se može posvetiti sljedeći dio ovog članka. Uputiću zainteresovanog čitaoca, u kojem je ovo pitanje analizirano što je moguće detaljnije. Ovdje ću prvo ukratko opisati šta je APIC i kako je on povezan s topologijom. Zatim, razmislite o radu sa listom 0xB (jedanaest u decimali), koji je trenutno najnovija riječ u "apico-buildingu".
Trenutno je širina broja pohranjenog u APIC ID-u dostigla puna 32 bita, iako je u prošlosti bila ograničena na 16, a još ranije na samo 8 bita. Danas su ostaci starih dana raštrkani po cijelom CPUID-u, ali sva 32 bita APIC ID-a se vraćaju u CPUID.0xB.EDX. Svaki logički procesor koji nezavisno izvršava CPUID instrukciju će vratiti različitu vrijednost.
Logički procesori unutar iste jezgre će odgovarati svim bitovima APIC ID-a osim onih u SMT polju. Za logičke procesore koji su u istom procesoru, svi bitovi osim za Core i SMT polja. Pošto broj podlistova za CPUID.0xB može rasti, ova šema će podržati opis topologija sa većim brojem nivoa, ako bude potrebno u budućnosti. Štaviše, biće moguće uvesti srednje nivoe između postojećih.
Važna posledica organizacije ove šeme je da u skupu svih APIC ID-ova svih logičkih procesora sistema mogu postojati „rupe“, tj. neće ići sekvencijalno. Na primjer, u višejezgrenom procesoru s onemogućenim HT-om, svi APIC ID-ovi mogu se pokazati parnim, budući da će bit najmanjeg značaja koji je odgovoran za kodiranje hipernitnog broja uvijek biti nula.
Imajte na umu da CPUID.0xB nije jedini izvor informacija o logičkim procesorima dostupnim operativnom sistemu. Lista svih procesora koji su mu dostupni, zajedno sa njihovim APIC ID vrijednostima, je kodirana u MADT ACPI tabeli.
Na Linuxu su informacije o topologiji sadržane u /proc/cpuinfo pseudo-datoteci, kao i izlaz naredbe dmidecode. U primjeru ispod, filtriram sadržaj cpuinfo na nekom ne-HT četverojezgrenom sistemu, ostavljajući samo unose koji se odnose na topologiju:
Skriveni tekst
[email protected]:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" procesor: 0 fizički id: 0 braće i sestara: 4 core id: 0 jezgra procesora: 2 apicid: 0 početni apicid: 0 procesor: 1 fizički id: 0 braće i sestara: 4 id jezgre: 0 jezgra procesora: 2 apicid: 1 početni apicid: 1 procesor: 2 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgra procesora: 2 apicid: 2 početni apicid: 2 procesor: 3 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgra procesora: 2 apicid: 3 početni apicid: 3
U FreeBSD-u, topologija se izvještava putem sysctl mehanizma u varijabli kern.sched.topology_spec kao XML:
Skriveni tekst
[email protected]:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec:
U MS Windows 8, informacije o topologiji mogu se vidjeti u Task Manageru.
Zdravo svima! Ponekad igra ili program ne radi punim kapacitetom, jer. Nisu sve jezgre odgovorne za performanse. U ovom članku ćemo vidjeti kako koristiti sve jezgre vašeg procesora.
Ali ne očekujte čarobni štapić. ako igra ili program ne podržavaju više jezgre, onda se ništa ne može učiniti, osim ako se aplikacija ponovo napiše.
Dakle, biće nekoliko načina. Ovim pokazujem prvo.
Idite na početak - trčanje ili tipke win + r
Odaberite svoj maksimalni broj procesora.
Idite na karticu Procesi. Pronađite igru i kliknite desnim tasterom miša na proces. Usput, igra bi trebala biti pokrenuta. Možete ga skupiti ili Win + D ili alt + tab.
Odaberite da odgovara.
Odaberite sve i pritisnite ok.
Da vidimo rade li sve jezgre ili ne, onda u upravitelju zadataka idemo na karticu performansi.
U svim karticama će biti dijagram.
Ako ne, kliknite ponovo da postavite korespondenciju, ostavljajući samo CPU 0, kliknite na ok. Zatvaramo upravitelja zadataka, otvaramo ga ponovo, ponavljamo isto, biramo sve procesore i pritisnemo ok.
U prijenosnim računalima, štednja energije je ponekad konfigurirana na takav način da postavke ne dozvoljavaju korištenje svih jezgara.
Za punu upotrebu, mora biti 100%.
Počinjemo i vidimo broj aktivnih jezgara.
Nemojte brkati ovaj parametar sa brojem virtuelnih procesora, koji su prikazani desno.
Mnogi ljudi brkaju koncept broja jezgara i frekvencije procesora. Ako ovo uporedimo sa osobom, onda je mozak procesor, neuroni su jezgra. Jezgra ne rade u svim igrama i aplikacijama. Ako se, na primjer, u igrici pokreću 2 procesa, jedan crta šumu, a drugi grad i igra je višejezgarna, onda su za učitavanje ove slike potrebne samo 2 jezgre. A ako ima više procesa u igri, onda su uključena sva jezgra.
A može biti i obrnuto, igra ili aplikacija može biti napisana na način da samo jedno jezgro može izvršiti jednu radnju, a u ovoj situaciji će pobijediti procesor sa višom frekvencijom i najkombiniranijom arhitekturom (ovo obično je zašto).
Povezani članci: | |
luda umjetnost
Činjenica da su Van Gog i Kamila patili od mentalnih poremećaja... Mliječni čičak - ljekovita svojstva jedinstvene biljke i proizvodi od nje Sjemenke čička korisna svojstva i kontraindikacije
Prilično visoka biljka koja ima velike ljubičaste ili lila... Scenario za godišnjicu vaše voljene majke Pogodi melodiju njihovih filmova
Iza dugog braka, On nije šala, ni sitnica! Šezdeset godina traje, U... |