Ko je osvojio brzinu takta ili broj jezgara u procesoru. Koliki je broj procesorskih jezgara u telefonu, za šta je odgovoran, koju funkciju obavlja? Šta utiče na broj jezgara u pametnom telefonu? Koji je najveći broj jezgara u pametnom telefonu? O čemu

  • tutorial

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.

CPU

Naravno, najstariji, najčešće korišteni i dvosmisleni termin je "procesor".

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.


Spremni za polijetanje! Intel® ploča za desktop računare D5400XS

Core

Istorijski gledano, višejezgarni procesor u Intel IA-32 pojavio se kasnije od Intel® HyperThreadinga, ali je sledeći u logičkoj hijerarhiji.

Č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.


Mikrograf četvorojezgarnog Intelovog procesora kodnog naziva Nehalem. Naglašene su odvojene jezgre, zajednička L3 keš memorija, kao i QPI veze sa drugim procesorima i zajedničkim memorijskim kontrolerom.

hyperthread

Do otprilike 2002., jedini način da se dobije IA-32 sistem sposoban da izvodi dva ili više programa paralelno bio je korištenje višeprocesorskih sistema posebno. Intel® Pentium® 4, kao i Xeon linija, kodnog naziva Foster (Netburst), predstavili su novu tehnologiju - hyperthreading ili hyperthreading - Intel® HyperThreading (u daljem tekstu HT).

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.

Thread Limits
U kojim slučajevima je opravdana prisutnost "nepoštenih" multi-core u obliku HT-a? Ako jedna nit aplikacije nije u mogućnosti učitati sve izvršne čvorove unutar kernela, onda se oni mogu "posuditi" drugoj niti. Ovo je tipično za aplikacije koje imaju "usko grlo" ne u proračunima, već u pristupu podacima, odnosno često generišu promašaje keša i moraju čekati da se podaci isporuče iz memorije. Za to vrijeme, kernel bez HT-a će biti prisiljen na mirovanje. Prisustvo HT-a vam omogućava da brzo prebacite slobodne izvršne čvorove u drugo arhitektonsko stanje (jer je samo duplicirano) i izvršite njegove instrukcije. Ovo je poseban slučaj trika zvanog skrivanje kašnjenja, kada je jedna duga operacija, tokom koje su korisni resursi neaktivni, maskirana paralelnim izvršavanjem drugih zadataka. Ako aplikacija već ima visok stepen iskorišćenosti resursa kernela, prisustvo hiperthreadinga neće omogućiti ubrzanje - ovde su potrebna "poštena" kernela.

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.

logički procesor

Od tri opisana "nivoa" paralelizma (procesori, jezgre, hipernitovi), neki ili čak svi mogu nedostajati u određenom sistemu. Na to utiču postavke BIOS-a (višejezgarni i višenitni su onemogućeni nezavisno), mikroarhitektura (na primjer, HT je bio odsutan u Intel® Core™ Duo, ali je vraćen izdanjem Nehalema) i sistemski događaji ( višeprocesorski serveri mogu isključiti neispravne procesore u slučaju kvara i nastaviti "letjeti" na preostalim). Kako je ovaj višeslojni zoološki vrt istovremeno vidljiv za operativni sistem i, konačno, za aplikacije?

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.

Softverska definicija topologije

Naravno, apstrahovanje topologije u jedan broj logičkih procesora u nekim slučajevima stvara dovoljno osnova za zabunu i nesporazum (u žestokim internetskim sporovima). Računarske aplikacije koje žele da izvuku najviše performansi od hardvera zahtevaju finu kontrolu nad tim gde će njihove niti biti smeštene: bliže jedna drugoj na susednim hipernitovima, ili obrnuto, dalje na različitim procesorima. Brzina komunikacije između logičkih procesora unutar iste jezgre ili procesora je mnogo veća od brzine prijenosa podataka između procesora. Mogućnost heterogenosti u organizaciji RAM-a takođe komplikuje sliku.

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".

APIC ID
Lokalni APIC (napredni programabilni kontroler prekida) je uređaj (sada dio procesora) odgovoran za rad s prekidima koji dolaze do određenog logičkog procesora. Svaki logički procesor ima svoj APIC. I svaki od njih u sistemu mora imati jedinstvenu APIC ID vrijednost. Ovaj broj koriste kontroleri prekida za adresiranje prilikom isporuke poruka, a svi ostali (kao što je operativni sistem) za identifikaciju logičkih procesora. Specifikacija za ovaj kontroler prekida je evoluirala od Intel 8259 PIC preko Dual PIC, APIC i xAPIC do x2APIC.

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.

Razjašnjenje porodičnih veza
Vrijednost APIC ID-a sama po sebi ne govori ništa o topologiji. Da biste saznali koja su dva logička procesora unutar istog fizičkog (tj. oni su "braća" hiperthreads), koja su dva unutar istog procesora, a koji su potpuno različiti procesori, potrebno je uporediti njihove APIC ID vrijednosti. U zavisnosti od stepena veze, neki od njihovih bitova će se poklopiti. Ove informacije su sadržane u podlistama CPUID.0xB, koje su kodirane sa operandom u ECX. Svaki od njih opisuje poziciju bitovskog polja jednog od nivoa topologije u EAX-u (tačnije, broj bitova koji je potrebno pomaknuti u APIC ID-u udesno da bi se uklonili niži nivoi topologije), kao i kao tip ovog nivoa - hiperthread, jezgra ili procesor - u ECX-u.

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.

Operativni sistemi i topologija

Operativni sistemi pružaju logičke informacije o topologiji procesora aplikacijama preko njihovih vlastitih sučelja.

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: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 THREAD grupaSMT grupa 2, 3 THREAD grupaSMT grupa 4, 5 THREAD grupaSMT grupa 6, 7 THREAD grupaSMT grupa

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.

2 ili 4 core procesor?

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 za redove:

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!

  • tutorial

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.

CPU

Naravno, najstariji, najčešće korišteni i dvosmisleni termin je "procesor".

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.


Spremni za polijetanje! Intel® ploča za desktop računare D5400XS

Core

Istorijski gledano, višejezgarni procesor u Intel IA-32 pojavio se kasnije od Intel® HyperThreadinga, ali je sledeći u logičkoj hijerarhiji.

Č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.


Mikrograf četvorojezgarnog Intelovog procesora kodnog naziva Nehalem. Naglašene su odvojene jezgre, zajednička L3 keš memorija, kao i QPI veze sa drugim procesorima i zajedničkim memorijskim kontrolerom.

hyperthread

Do otprilike 2002., jedini način da se dobije IA-32 sistem sposoban da izvodi dva ili više programa paralelno bio je korištenje višeprocesorskih sistema posebno. Intel® Pentium® 4, kao i Xeon linija, kodnog naziva Foster (Netburst), predstavili su novu tehnologiju - hyperthreading ili hyperthreading - Intel® HyperThreading (u daljem tekstu HT).

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.

Thread Limits
U kojim slučajevima je opravdana prisutnost "nepoštenih" multi-core u obliku HT-a? Ako jedna nit aplikacije nije u mogućnosti učitati sve izvršne čvorove unutar kernela, onda se oni mogu "posuditi" drugoj niti. Ovo je tipično za aplikacije koje imaju "usko grlo" ne u proračunima, već u pristupu podacima, odnosno često generišu promašaje keša i moraju čekati da se podaci isporuče iz memorije. Za to vrijeme, kernel bez HT-a će biti prisiljen na mirovanje. Prisustvo HT-a vam omogućava da brzo prebacite slobodne izvršne čvorove u drugo arhitektonsko stanje (jer je samo duplicirano) i izvršite njegove instrukcije. Ovo je poseban slučaj trika zvanog skrivanje kašnjenja, kada je jedna duga operacija, tokom koje su korisni resursi neaktivni, maskirana paralelnim izvršavanjem drugih zadataka. Ako aplikacija već ima visok stepen iskorišćenosti resursa kernela, prisustvo hiperthreadinga neće omogućiti ubrzanje - ovde su potrebna "poštena" kernela.

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.

logički procesor

Od tri opisana "nivoa" paralelizma (procesori, jezgre, hipernitovi), neki ili čak svi mogu nedostajati u određenom sistemu. Na to utiču postavke BIOS-a (višejezgarni i višenitni su onemogućeni nezavisno), mikroarhitektura (na primjer, HT je bio odsutan u Intel® Core™ Duo, ali je vraćen izdanjem Nehalema) i sistemski događaji ( višeprocesorski serveri mogu isključiti neispravne procesore u slučaju kvara i nastaviti "letjeti" na preostalim). Kako je ovaj višeslojni zoološki vrt istovremeno vidljiv za operativni sistem i, konačno, za aplikacije?

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.

Softverska definicija topologije

Naravno, apstrahovanje topologije u jedan broj logičkih procesora u nekim slučajevima stvara dovoljno osnova za zabunu i nesporazum (u žestokim internetskim sporovima). Računarske aplikacije koje žele da izvuku najviše performansi od hardvera zahtevaju finu kontrolu nad tim gde će njihove niti biti smeštene: bliže jedna drugoj na susednim hipernitovima, ili obrnuto, dalje na različitim procesorima. Brzina komunikacije između logičkih procesora unutar iste jezgre ili procesora je mnogo veća od brzine prijenosa podataka između procesora. Mogućnost heterogenosti u organizaciji RAM-a takođe komplikuje sliku.

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".

APIC ID
Lokalni APIC (napredni programabilni kontroler prekida) je uređaj (sada dio procesora) odgovoran za rad s prekidima koji dolaze do određenog logičkog procesora. Svaki logički procesor ima svoj APIC. I svaki od njih u sistemu mora imati jedinstvenu APIC ID vrijednost. Ovaj broj koriste kontroleri prekida za adresiranje prilikom isporuke poruka, a svi ostali (kao što je operativni sistem) za identifikaciju logičkih procesora. Specifikacija za ovaj kontroler prekida je evoluirala od Intel 8259 PIC preko Dual PIC, APIC i xAPIC do x2APIC.

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.

Razjašnjenje porodičnih veza
Vrijednost APIC ID-a sama po sebi ne govori ništa o topologiji. Da biste saznali koja su dva logička procesora unutar istog fizičkog (tj. oni su "braća" hiperthreads), koja su dva unutar istog procesora, a koji su potpuno različiti procesori, potrebno je uporediti njihove APIC ID vrijednosti. U zavisnosti od stepena veze, neki od njihovih bitova će se poklopiti. Ove informacije su sadržane u podlistama CPUID.0xB, koje su kodirane sa operandom u ECX. Svaki od njih opisuje poziciju bitovskog polja jednog od nivoa topologije u EAX-u (tačnije, broj bitova koji je potrebno pomaknuti u APIC ID-u udesno da bi se uklonili niži nivoi topologije), kao i kao tip ovog nivoa - hiperthread, jezgra ili procesor - u ECX-u.

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.

Operativni sistemi i topologija

Operativni sistemi pružaju logičke informacije o topologiji procesora aplikacijama preko njihovih vlastitih sučelja.

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: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 THREAD grupaSMT grupa 2, 3 THREAD grupaSMT grupa 4, 5 THREAD grupaSMT grupa 6, 7 THREAD grupaSMT grupa

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.

Kako pokrenuti sve jezgre procesora?

Dakle, biće nekoliko načina. Ovim pokazujem prvo.

Idite na početak - trčanje ili tipke win + r

Odaberite svoj maksimalni broj procesora.

  • Idemo u upravitelj zadataka - ctrl + shift + esc.
  • Ili ctrl+alt+del i upravitelj zadataka.
  • Ili kliknite desnim tasterom miša na kontrolnu tablu i izaberite upravitelja zadataka.

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.

  • Win7 - Idite na kontrolnu tablu, idite na napajanje - Promjena postavki plana - promijenite napredne postavke napajanja - upravljanje napajanjem procesora - minimalno stanje procesora.
  • Win8, 10 - Ili: Postavke - Sistem - Napajanje i spavanje - Napredne postavke napajanja - Postavite plan napajanja - Promijenite napredne postavke napajanja - Upravljanje napajanjem procesora - Minimalno stanje procesora

Za punu upotrebu, mora biti 100%.

Kako provjeriti koliko jezgara radi?

Počinjemo i vidimo broj aktivnih jezgara.

Nemojte brkati ovaj parametar sa brojem virtuelnih procesora, koji su prikazani desno.

Šta utiče na broj procesorskih jezgara?

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).



gastroguru 2017