Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • OS
  • Hyper-Threading: Intelovo dva u jednom, ili skrivene mogućnosti Xeona. Višejezgreni procesori: kako rade

Hyper-Threading: Intelovo dva u jednom, ili skrivene mogućnosti Xeona. Višejezgreni procesori: kako rade

je u stroju i pronašao sam nekoliko postova, ali sam zbunjen jer su neki spomenuli da dobivate logičke jezgre i fizičke jezgre itd.
Dakle, koja je razlika između logičke i fizičke jezgre i postoji li način da se dobiju fizičke jezgre? Ili ima smisla uključiti logičke jezgre u naš račun?

4 Rješenja prikupljaju web obrazac za "Pa što su logičke procesorske jezgre (za razliku od fizičkih procesorskih jezgri)?"

Fizičke jezgre su jednostavno fizičke jezgre u procesoru. Logičke jezgre su sposobnost jedne jezgre da radi dvije ili više stvari u isto vrijeme. Izrastao je iz ranih Pentium 4 procesora sposobnih za ono što se zvalo Hyper Threading (HTT).

Bila je to igra kada se pomoćne komponente kernela nisu koristile za određene vrste instrukcija dok se drugi dugotrajni posao mogao obaviti. Tako bi središnja procesorska jedinica mogla raditi na dvije stvari u isto vrijeme.

Nove jezgre su više funkcionalni procesori, tako da rade na više stvari u isto vrijeme, ali nisu pravi procesori kao fizičke jezgre. Više o ograničenjima hiperthreading značajke i fizičkim mogućnostima kernela možete pročitati ovdje na tomshardwareu u ovom članku pod naslovom: Intel Core i5 i Core i7: Intel Mainstream Magnum Opus.

Možete vidjeti raščlambu vašeg prozora pomoću naredbe lscpu:

$ lscpu Arhitektura: x86_64 CPU op-mode (s): 32-bit, 64-bit CPU (s): 4 Thread (s) po jezgri: 2 Core (s) po socket: 2 CPU socket (s): 1 NUMA čvor (s): 1 ID dobavljača: GenuineIntel CPU familija: 6 Model: 37 Korak: 5 CPU MHz: 2667.000 Virtualizacija: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 307K L3 cache: 307. ): 0-3

Moj Intel i5 laptop gore ima 4 "procesora" ukupno

Procesor(i): 4

od kojih postoje 2 fizičke jezgre

Jezgra(e) po utičnici: 2

od kojih svaka može pokretati do 2 niti

Tema(e) po jezgri: 2

u isto vrijeme. Ove niti su logičke mogućnosti kernela.

Fizičke jezgre su broj fizičkih jezgri, stvarnih hardverskih komponenti.

Logičke jezgre su broj fizičkih jezgri pomnožen s brojem niti koje se mogu izvoditi na svakoj jezgri pomoću hipernitnosti.

na primjer moj 4-jezgreni procesor radi na 2 niti po jezgri, tako da imam 8 logičkih procesora.

$ sudo dmidecode | egrep "Oznaka utičnice: Proc | ((Thread | Core) Count)" Oznaka utičnice: Proc 1 Broj jezgri: 14 Broj niti: 28 Oznaka utičnice: Broj jezgri Proc 2: 14 Broj niti: 28

Dva gnijezda. Svaki konektor ima 14 fizičkih jezgri. Svaka jezgra ima dvije niti (28/14). Ukupan broj logičkih blokova "cpus" ili logičke obrade je 56 (to je ono što vam "top" i neke druge naredbe prikazuju kao broj "cpus").

Hyperthreading tehnologija omogućuje jednoj fizičkoj procesorskoj jezgri da se ponaša kao dva logička procesora.

Dakle, jedna jezgra procesora može istovremeno izvršavati dvije nezavisne niti.

Intel fizički procesor naziva utičnicom.

Hyperthreading omogućuje fizičkom procesoru da se ponaša kao da ima dva fizička procesora, koja se nazivaju logički procesori. Za što?

Iako hiperthreading ne udvostručuje performanse sustava, može poboljšati performanse korištenjem neaktivnih resursa, što rezultira većom propusnošću za određene važne vrste radnih opterećenja. Aplikacija koja radi na jednom logičkom procesoru na zauzetoj jezgri može očekivati ​​nešto više od polovice propusnosti koju dobiva kada radi u jednom načinu rada na procesoru bez hiper-nitnosti.

Sažetak

Fizički procesor je nešto što možemo vidjeti i pasti.

Logički procesor je sličan: Phsical Core, koji djeluje kao dvije fizičke jezgre

Na tržištu Sankt Peterburga pojavio se Intel Pentium 4 procesor frekvencije takta od 3,06 GHz koji koristi tehnologiju Hyper-Threading (HT).
Prethodno korištena samo u poslužiteljskim sustavima, tehnologija je lansirala novu klasu stolnih osobnih računala visokih performansi, kažu proizvođači.
Uz HT tehnologiju, jedan fizički procesor operativni sustav osobnog računala i aplikacije percipiraju kao dva logička procesora. Prema riječima voditelja Intelovog predstavništva u Rusiji i zemljama ZND-a Alekseja Navolokina, preliminarni podaci pokazuju da novi procesor s NT tehnologijom pruža prosječno povećanje performansi od 25%.

Izvan reda
HT tehnologija omogućuje korisnicima da poboljšaju performanse računala na dva načina: pri radu sa softverom koji koristi višenitnu obradu podataka i pri radu u multitasking okruženjima. Aplikacije napisane uzimajući u obzir sposobnost novog procesora da istovremeno radi s nekoliko fragmenata koda (tzv. "threads" - thread) "vidjet će" jedan fizički Intel Pentium 4 procesor s taktom od 3,06 GHz s HT tehnologijom kao dva logička procesora. HT tehnologija omogućuje procesoru da obrađuje dva nezavisna toka podataka ne naizmjence, već u isto vrijeme.

Za posao
Uz pomoć HT tehnologije možete, primjerice, započeti s reprodukcijom glazbenog albuma i istovremeno razmjenjivati ​​poruke u chatu bez narušavanja kvalitete zvuka. Preuzimanjem MP3 datoteke s interneta u svoju glazbenu arhivu možete paralelno pokrenuti antivirusni program koji će zaštititi vaše računalo od prodora neželjenih programa izvana.
HT pruža brojne mogućnosti u poslovnom svijetu - voditelj poduzeća može istovremeno pregledavati izvješća i indekse dionica, pratiti pokazatelje automatiziranog sustava upravljanja poduzećem i biti u kontaktu s izvođačima. Inženjeri i istraživači koji koriste osobno računalo bazirano na Intel Pentium 4 procesoru s Hyper-Threading tehnologijom moći će najučinkovitije raditi s izvorima informacija, preuzimajući ih s interneta i primajući ih od kolega u obliku datoteka različitih formata - od PDF u XLS.
Peterburške integratorske tvrtke ("Svega +", "Computer Service 320-80-80", "Computer-Center KEY" i "Computer World") planiraju prodati najmanje 15-20 računala baziranih na procesoru Intel Pentium 4 3,06 GHz mjesečno s HT tehnologija.

Napisali smo da korištenje jednoprocesorskih Xeon sustava nema smisla, jer će po višoj cijeni njihove performanse biti iste kao i Pentium 4 iste frekvencije. Sada, nakon pažljivijeg proučavanja, ovu će izjavu vjerojatno morati napraviti mali amandman. Tehnologija Hyper-Threading implementirana u Intel Xeon s Prestonia jezgrom stvarno radi i daje prilično zamjetan učinak. Iako se mnoga pitanja nameću kada ga koristite...

Dajte performanse

"Brže, još brže ...". Utrka za performansama traje godinama, a ponekad je čak i teško reći koja komponenta vašeg računala brže ubrzava. Za to se izmišlja sve više i više novih načina, a što dalje, to se više kvalificiranog rada i kvalitetnijeg mozga ulaže u ovaj lavinski proces.

Zasigurno je potrebno stalno povećanje performansi. Barem, ovo je profitabilan posao i uvijek će postojati lijep način da se korisnici potaknu da nadograde jučerašnji "superperformansni CPU" na sutrašnji "još više super..." Primjerice, simultano prepoznavanje govora i simultani prijevod na drugi jezik nije svačiji san? Ili neobično realistične igre gotovo "kinematografske" kvalitete (potpuno upijaju pažnju i ponekad dovode do ozbiljnih promjena u psihi) - nije li to težnja mnogih igrača, mladih i starih?

No, uzmimo marketinške aspekte iz okvira u ovom slučaju, usredotočujući se na tehničke. Štoviše, nije sve tako sumorno: postoje hitni zadaci (poslužiteljske aplikacije, znanstvene kalkulacije, modeliranje itd.), gdje su sve veće performanse, posebice središnjih procesora, doista potrebne.

Dakle, koji su načini za povećanje njihove izvedbe?

Overclocking... Moguće je dodatno „prorijediti“ tehnološki proces i povećati frekvenciju. Ali, kao što znate, to nije lako i prepuno je raznih nuspojava poput problema s rasipanjem topline.

Povećanje resursa procesora- na primjer, povećanje veličine predmemorije, dodavanje novih blokova (Izvršne jedinice). Sve to podrazumijeva povećanje broja tranzistora, povećanje složenosti procesora, povećanje površine matrice i, posljedično, cijenu.

Osim toga, prethodne dvije metode u pravilu ne daju linearno povećanje produktivnosti. To je dobro poznato u primjeru Pentiuma 4: pogreške u predviđanju grananja i prekidima uzrokuju ispuštanje dugog cjevovoda, što uvelike utječe na ukupnu izvedbu.

Višeprocesna... Instaliranje više procesora i raspodjela rada među njima često je prilično učinkovito. Ali ovaj pristup nije baš jeftin – svaki dodatni procesor povećava cijenu sustava, a dvostruka matična ploča je puno skuplja od obične (da ne spominjemo matične ploče s podrškom za četiri ili više CPU-a). Osim toga, nemaju sve aplikacije koristi od višeprocesorskih performansi dovoljno da opravdaju trošak.

Osim "čiste" višeprocesne obrade, postoji nekoliko "srednjih" opcija za ubrzanje izvršavanja aplikacija:

Višeprocesna obrada čipa (CMP)- dvije procesorske jezgre fizički su smještene na jednoj pločici koristeći zajedničku ili zasebnu predmemoriju. Naravno, veličina kristala je prilično velika, a to ne može ne utjecati na cijenu. Imajte na umu da nekoliko ovih "dvostrukih" CPU-a također može raditi na višeprocesorskom sustavu.

Višenitnost s vremenskim odsječkom... Procesor se prebacuje između programskih niti u fiksnim intervalima. Režijski troškovi ponekad mogu biti prilično impresivni, pogotovo ako je proces na čekanju.

Višenitno uključivanje događaja... Prebacivanje zadataka kada dođe do dugih pauza, kao što su "promašaji predmemorije", od kojih je velik broj tipičan za poslužiteljske aplikacije. U ovom slučaju, proces koji čeka da učita podatke iz relativno spore memorije u predmemoriju je suspendiran, oslobađajući CPU resurse za druge procese. Međutim, Multithreading-on-Event Multithreading, poput Time-Slice Multithreading, ne dopušta uvijek postizanje optimalnog korištenja resursa procesora, posebice zbog pogrešaka u predviđanju grananja, ovisnosti instrukcija itd.

Simultano multithreading... U ovom slučaju, programske niti se izvršavaju na jednom procesoru "istovremeno", odnosno bez prebacivanja između njih. Resursi CPU-a se alociraju dinamički, po principu "ako ga ne koristiš, daj nekom drugom". Upravo je ovaj pristup temelj tehnologije Intel Hyper-Threading, kojoj se sada okrećemo.

Kako radi Hyper-Threading

Kao što znate, trenutna "računalna paradigma" pretpostavlja višenitno računanje. To se ne odnosi samo na poslužitelje, gdje takav koncept u početku postoji, već i na radne stanice i stolne sustave. Niti se mogu odnositi na jednu ili različite aplikacije, ali gotovo uvijek postoji više aktivnih niti (da biste bili sigurni u to, dovoljno je otvoriti Task Manager u Windows 2000 / XP i uključiti prikaz broja niti) . Istodobno, konvencionalni procesor može izvršavati samo jednu od niti istovremeno i prisiljen je stalno se prebacivati ​​između njih.

Po prvi put tehnologija Hyper-Threading implementirana je u procesor Intel Xeon MP (Foster MP) na kojem je testirana. Podsjetimo da Xeon MP, službeno predstavljen na IDF Spring 2002, koristi Pentium 4 Willamette jezgru, sadrži 256 KB L2 predmemorije i 512 KB / 1 MB L3 predmemorije te podržava konfiguracije s 4 procesora. Također, podrška za Hyper-Threading prisutna je i u procesoru za radne stanice – Intel Xeon (Prestonia jezgra, 512 KB L2 cache), koji je na tržište došao nešto ranije od Xeon MP-a. Naši čitatelji već su upoznati s konfiguracijama s dva procesora na Intel Xeonu, pa ćemo kao primjer razmotriti mogućnosti Hyper-Threadinga koristeći te CPU - i teoretski i praktično. U svakom slučaju, "jednostavan" Xeon je svakodnevnija i probavljivija stvar od Xeon MP-a u 4-procesorskim sustavima...

Princip Hyper-Threadinga temelji se na činjenici da se u bilo kojem trenutku samo dio procesorskih resursa koristi tijekom izvršavanja programskog koda. Neiskorišteni resursi također se mogu učitati radom - na primjer, mogu se koristiti za paralelno izvršavanje druge aplikacije (ili druge niti iste aplikacije). U jednom fizičkom Intel Xeon procesoru formiraju se dva logička procesora (LP – Logical Processor) koji dijele računalne resurse CPU-a. Operativni sustav i aplikacije "vide" točno dva CPU-a i mogu rasporediti rad između njih, kao u slučaju punopravnog sustava s dva procesora.

Jedan od ciljeva implementacije Hyper-Threadinga je omogućiti mu da radi istom brzinom kao na običnom CPU-u ako postoji samo jedna aktivna nit. Za to, procesor ima dva glavna načina rada: Single-Task (ST) i Multi-Task (MT). U ST načinu rada aktivan je samo jedan logički procesor koji u potpunosti iskorištava dostupne resurse (ST0 i ST1 načini); drugi LP je zaustavljen naredbom HALT. Kada se pojavi druga programska nit, neaktivni logički procesor se aktivira (putem prekida) i fizički CPU se stavlja u MT način rada. Zaustavljanje neiskorištenih LP-ova naredbom HALT odgovornost je operativnog sustava, koji je u konačnici odgovoran za isto brzo izvršavanje jedne niti kao u slučaju bez Hyper-Threadinga.

Za svaki od dva LP-a pohranjuje se takozvano stanje arhitekture (AS) koje uključuje stanje različitih vrsta registara – opće namjene, upravljanja, APIC-a i servisa. Svaki LP ima svoj APIC (kontrolor prekida) i skup registara, za ispravan rad s kojim je uveden koncept Register Alias ​​Table (RAT) koji prati korespondenciju između osam IA-32 registara opće namjene i 128 registara. fizički CPU registri (jedan RAT za svaki LP).

Kada se radi s dva toka, podržana su dva odgovarajuća skupa pokazivača sljedećih uputa. Većina instrukcija preuzeta je iz predmemorije praćenja (TC), gdje se pohranjuju u dekodiranom obliku, a dva aktivna LP-a dobivaju pristup TC-u naizmjenično, kroz ciklus takta. U isto vrijeme, kada je aktivan samo jedan LP, on dobiva ekskluzivni pristup TC-u bez preplitanja po taktu. Microcode ROM-u se pristupa na isti način. ITLB (Instruction Translation Look-aside Buffer) blokovi, koji se koriste u nedostatku potrebnih instrukcija u predmemoriji instrukcija, dupliciraju se i svaki isporučuje upute za svoj vlastiti tok. IA-32 jedinica dekodiranja instrukcija za dekodiranje je zajednička i, kada je potrebno dekodirati instrukcije za oba toka, poslužuje ih jednu po jednu (opet, svaki ciklus takta). Blokovi Uop Queue i Allocator podijeljeni su na dva dijela, alocirajući polovicu elemenata za svaki LP. Planeri, njih 5, obrađuju redove dekodiranih naredbi (Uops), unatoč pripadnosti LP0/LP1, te šalju naredbe za izvršavanje potrebnih izvršnih jedinica, ovisno o spremnosti za izvršenje prvih i dostupnosti potonjih. Predmemorije svih razina (L1 / L2 za Xeon, kao i L3 za Xeon MP) u potpunosti se dijele između dva LP-a, međutim, kako bi se osigurao integritet podataka, zapisi u DTLB-u (Data Translation Look-aside Buffer) imaju deskriptore u oblik ID-ova logičkih procesora.

Dakle, instrukcije oba logička CPU-a mogu se izvršavati istovremeno na resursima jednog fizičkog procesora, koji su podijeljeni u četiri klase:

  • duplicirano (Duplicated);
  • potpuno podijeljeno (Fully Shared);
  • s deskriptorima elemenata (Entry Tagged);
  • dinamički particioniran ovisno o načinu rada ST0 / ST1 ili MT.

Istodobno, većina aplikacija ubrzanih u višeprocesorskim sustavima također se može ubrzati na CPU-u s omogućenim Hyper-Threadingom bez ikakvih izmjena. Ali postoje i problemi: na primjer, ako je jedan proces u petlji čekanja, može zauzeti sve resurse fizičkog CPU-a, sprječavajući rad drugog LP-a. Dakle, performanse tijekom korištenja Hyper-Threadinga ponekad mogu pasti (do 20%). Kako bi se to spriječilo, Intel preporučuje korištenje instrukcije PAUSE (uvedene u IA-32 od Pentiuma 4) umjesto praznih petlji čekanja. U tijeku je i prilično ozbiljan rad na automatskoj i poluautomatskoj optimizaciji koda tijekom kompilacije - na primjer, kompajleri serije Intel OpenMP C ++ / Fortran Compilers () napravili su značajan napredak u tom pogledu.

Drugi cilj prve implementacije Hyper-Threadinga, prema Intelu, bio je minimizirati povećanje broja tranzistora, površine matice i potrošnje energije uz primjetno povećanje performansi. Prvi dio ove obveze već je ispunjen: dodavanje Hyper-Threading podrške za Xeon / Xeon MP povećalo je površinu matrice i potrošnju energije za manje od 5%. Što se dogodilo s drugim dijelom (izvedbom), tek moramo provjeriti.

Praktični dio

Iz očitih razloga nismo testirali 4-procesorske poslužiteljske sustave na Xeon MP-u s omogućenim Hyper-Threadingom. Prvo, to je prilično dugotrajno. I drugo, ako se odlučimo na takav podvig – ionako sada, manje od mjesec dana nakon službene objave, apsolutno je nerealno nabaviti ovu skupu opremu. Stoga je odlučeno da se ograničimo na isti sustav s dva Intel Xeon 2,2 GHz, na kojima je obavljeno prvo testiranje ovih procesora (vidi poveznicu na početku članka). Sustav se temeljio na Supermicro P4DC6 + matičnoj ploči (Intel i860 čipset), sadržavao je 512 MB RDRAM-a, video karticu baziranu na GeForce3 čipu (64 MB DDR, Detonator 21.85 upravljački programi), Western Digital WD300BB tvrdi disk i 6X DVD- ROM; Windows 2000 Professional SP2 je korišten kao OS.

Prvo, nekoliko općih dojmova. Kada instalirate jedan Xeon s Prestonia kernelom, na početku sustava, BIOS prikazuje poruku o prisutnosti dva CPU-a; ako su instalirana dva procesora, korisnik vidi poruku o četiri CPU-a. Operativni sustav će normalno prepoznati "oba procesora", ali samo ako su ispunjena dva uvjeta.

Prvo, u CMOS postavci najnovijih verzija BIOS-a Supermicro P4DCxx ploča, pojavila se stavka Enable Hyper-Threading, bez koje OS prepoznaje samo fizički procesor(e). Drugo, ACPI mogućnosti se koriste za informiranje OS-a o prisutnosti dodatnih logičkih procesora. Stoga, da biste omogućili Hyper-Threading, opcija ACPI mora biti omogućena u CMOS Setup-u, a HAL (Hardware Abstraction Layer) s ACPI podrškom također mora biti instaliran za sam OS. Srećom, u sustavu Windows 2000, promjena HAL-a iz Standardnog PC-a (ili MPS Uni-/Višeprocesorskog PC-a) u ACPI Uni-/Višeprocesorsko računalo je jednostavna - zamjenom "upravljača računala" u upravitelju uređaja. Istodobno, za Windows XP, jedini legalni način za migraciju na ACPI HAL je ponovna instalacija sustava preko postojeće instalacije.

Ali sada su sve pripreme obavljene, a naš Windows 2000 Pro već čvrsto vjeruje da radi na sustavu s dva procesora (iako je zapravo instaliran samo jedan procesor). Sada je, tradicionalno, vrijeme da se odluči o ciljevima testiranja. Dakle želimo:

  • Procijenite utjecaj Hyper-Threadinga na performanse aplikacija različitih klasa.
  • Usporedite ovaj učinak s učinkom instaliranja drugog procesora.
  • Provjerite kako se "fer" resursi daju aktivnom logičkom procesoru kada je drugi LP u stanju mirovanja.

Za procjenu izvedbe uzeli smo skup aplikacija koje su već poznate našim čitateljima i korištene u testiranju sustava radnih stanica. Krenimo od kraja i provjerimo "poštenost" logičkih CPU-a. Sve je vrlo jednostavno: prvo izvodimo testove na jednom procesoru s onemogućenim Hyper-Threadingom, a zatim ponavljamo proces, omogućavajući Hyper-Threading i koristeći samo jedan od dva logička CPU-a (pomoću Task Managera). Budući da nas u ovom slučaju zanimaju samo relativne vrijednosti, rezultati svih testova su svedeni na "veće je bolje" i normalizirani (pokazatelji jednoprocesorskog sustava bez Hyper-Threadinga uzimaju se kao jedinica).

Pa, kao što vidite, Intelova obećanja su ovdje ispunjena: sa samo jednom aktivnom niti, performanse svakog od dva LP-a točno su jednake brzini fizičkog CPU-a bez Hyper-Threadinga. Neaktivni LP (i LP0 i LP1) je zapravo suspendiran, a dijeljeni resursi, koliko možemo suditi iz dobivenih rezultata, u potpunosti se prenose na aktivni LP za korištenje.

Stoga izvlačimo prvi zaključak: dva logička procesora su zapravo jednaka, a omogućavanje Hyper-Threadinga ne "ometa" rad jedne niti (što samo po sebi nije loše). Sad da vidimo hoće li ovo uključivanje "pomagati", i ako da, gdje i kako?

Renderiranje... Rezultati četiri testa u paketima 3D-modeliranja 3D Studio MAX 4.26, Lightwave 7b i A | W Maya 4.0.1 spojeni su u jedan dijagram zbog njihove sličnosti.

U sva četiri slučaja (za Lightwave - dvije različite scene), opterećenje CPU-a s jednim procesorom s onemogućenim Hyper-Threadingom gotovo se uvijek održava na 100%. Ipak, kada je omogućen Hyper-Threading, izračun scene je ubrzan (zbog čega smo čak imali i šalu o opterećenju CPU-a preko 100%). U tri testa možemo vidjeti povećanje performansi od 14-18% od Hyper-Threadinga - s jedne strane, ne mnogo u odnosu na drugi CPU, ali s druge strane, prilično je dobar, s obzirom na "besplatan" efekt ovog učinka. U jednom od dva testa sa Lightwaveom, dobitak performansi je praktički nula (očito je to zbog specifičnosti ove aplikacije koja je puna čudnosti). No negativnog rezultata nigdje nema, a ohrabruje primjetan porast u ostala tri slučaja. I to unatoč činjenici da procesi paralelnog renderiranja rade sličan posao i najvjerojatnije možda neće biti najbolji način za istovremenu upotrebu resursa fizičkog CPU-a.

Photoshop i MP3 kodiranje... Kodek GOGO-no-coda 2.39c jedan je od rijetkih koji podržava SMP i pokazuje 34% povećanje performansi od tehnologije s dva procesora. U isto vrijeme, učinak Hyper-Threadinga u ovom slučaju je nula (razliku od 3% ne smatramo značajnom). No, u testu s Photoshopom 6.0.1 (skripta koja se sastoji od velikog skupa naredbi i filtara) možete vidjeti usporavanje kada je Hyper-Threading omogućen, iako drugi fizički CPU dodaje 12% performansi u ovom slučaju. Ovo je, zapravo, prvi slučaj kada Hyper-Threading uzrokuje pad performansi...

Profesionalni OpenGL... Odavno je poznato da SPEC ViewPerf i mnoge druge OpenGL aplikacije često usporavaju na SMP sustavima.

OpenGL i dvostruki procesor: zašto nisu prijatelji

Mnogo smo puta u našim člancima skrenuli pozornost čitateljima na činjenicu da dvoprocesorske platforme pri obavljanju profesionalnih OpenGL testova vrlo rijetko pokazuju neku značajniju prednost u odnosu na jednoprocesorske. Štoviše, često postoje slučajevi kada instalacija drugog procesora, naprotiv, pogoršava performanse sustava pri renderiranju dinamičkih trodimenzionalnih scena.

Naravno, nismo samo mi primijetili ovu neobičnost. Neki su testeri jednostavno tiho zaobišli ovu činjenicu - na primjer, navodeći rezultate SPEC ViewPerf benchmarka samo za konfiguracije s dva procesora, izbjegavajući tako objašnjenje "zašto je sustav s dva procesora sporiji?" Drugi su napravili sve moguće fantastične pretpostavke o koherentnosti predmemorije, potrebi da se ona održava, rezultirajućim dodatnim troškovima itd. I iz nekog razloga nitko nije bio iznenađen što su, na primjer, procesori bili nestrpljivi da prate koherentnost procesora upravo tijekom prozorskog OpenGL renderiranja (u smislu svoje "računske" suštine, ne razlikuje se puno od bilo kojeg drugog računskog problema) .

Zapravo, objašnjenje je, po našem mišljenju, puno jednostavnije. Kao što znate, aplikacija može raditi na dva procesora brže nego na jednom ako:

  • postoji više od dvije ili više niti koje se pokreću u isto vrijeme;
  • te niti ne ometaju izvršavanje jedne druge — na primjer, ne natječu se za zajednički resurs kao što je vanjski uređaj za pohranu ili mrežno sučelje.

Sada pogledajmo pojednostavljeno kako izgleda OpenGL renderiranje kada ga izvode dvije niti. Ako aplikacija, "videći" dva procesora, stvori dvije niti OpenGL renderiranja, tada se za svaku od njih, prema pravilima OpenGL-a, kreira vlastiti gl-kontekst. U skladu s tim, svaka nit prikazuje svoj vlastiti gl-kontekst. Ali problem je u tome što za prozor u kojem se slika prikazuje samo jedan gl-kontekst može biti aktualan istovremeno. Sukladno tome, niti u ovom slučaju jednostavno "zauzvrat" izlaze generiranu sliku u prozor, naizmjenično čineći njihov kontekst tekućim. Nepotrebno je reći da ova "izmjena konteksta" može biti vrlo skupa u smislu režijskih troškova?

Također, na primjer, dat ćemo grafove korištenja dvaju CPU-a u nekoliko aplikacija koje prikazuju OpenGL scene. Sva mjerenja su napravljena na platformi sa sljedećom konfiguracijom:

  • jedan ili dva Intel Xeon 2,2 GHz (Hyper-Threading onemogućen);
  • 512 MB RDRAM memorije;
  • Supermicro P4DC6 + matična ploča;
  • ASUS V8200 Deluxe video kartica (NVidia GeForce3, 64 MB DDR SDRAM, upravljački programi Detonator 21.85);
  • Windows 2000 Professional SP2
  • video način rada 1280x1024x32 bpp, 85 Hz, Vsync onemogućen.

Plava i crvena pokazuju grafikone iskorištenosti CPU-a 0 i CPU-a 1. Linija u sredini je konačni grafikon korištenja CPU-a. Tri grafikona odgovaraju dvije scene iz 3D Studio MAX 4.26 i dijelu SPEC ViewPerf mjerila (AWadvs-04).


Upotreba CPU-a: Animation 3D Studio MAX 4.26 - Anibal (s manipulatorima) .max


Upotreba CPU-a: Animacija 3D Studio MAX 4.26 - Rabbit.max


Upotreba CPU-a: SPEC ViewPerf 6.1.2 - AWadvs-04

Isti obrazac se ponavlja u mnogim drugim aplikacijama koje koriste OpenGL. Dva procesora se uopće ne opterećuju radom, a ukupna iskorištenost CPU-a ispada na razini od 50-60%. Istodobno, za jednoprocesorski sustav, u svim tim slučajevima, korištenje CPU-a pouzdano se drži na 100%.

Stoga ne čudi da toliki broj OpenGL aplikacija ne ubrzava previše na dualnim sustavima. Pa to što ponekad i usporavaju ima, po našem mišljenju, sasvim logično objašnjenje.

Možemo ustvrditi da je kod dva logička CPU-a pad performansi još značajniji, što je sasvim razumljivo: dva logička procesora interferiraju jedan s drugim na isti način kao i dva fizička. No njihova ukupna izvedba, naravno, ispada niža, pa kada je Hyper-Threading omogućen, ona se smanjuje čak i više nego kada su dva fizička CPU-a pokrenuta. Rezultat je predvidljiv, a zaključak je jednostavan: Hyper-Threading, poput "pravog" SMP-a, ponekad je kontraindiciran za OpenGL.

CAD aplikacije... Prethodni zaključak potvrđuju rezultati dvaju CAD testova - SPECapc za SolidEdge V10 i SPECapc za SolidWorks. Grafičke performanse ovih testova za Hyper-Threading su slične (iako je u slučaju SMP sustava za SolidEdge V10 rezultat nešto veći). Ali rezultati CPU_Score testova koji učitavaju procesor navode vas na razmišljanje: 5-10% dobitka od SMP-a i 14-19% usporavanja od Hyper-Threadinga.

No, na kraju, Intel iskreno priznaje u nekim slučajevima mogućnost degradacije performansi tijekom Hyper-Threadinga - na primjer, kada se koristi prazna petlja čekanja. Možemo samo pretpostaviti da je to razlog (detaljno proučavanje koda SolidEdge i SolidWorks je izvan dosega ovog članka). Uostalom, svi znaju konzervativizam CAD programera koji preferiraju dokazanu pouzdanost i ne žure se osobito prepisivati ​​kod uzimajući u obzir nove trendove u programiranju.

Sumiranje, ili "Pažnja, pravo pitanje"

Hyper-Threading radi, u to nema sumnje. Naravno, tehnologija nije univerzalna: postoje aplikacije koje su "lošije" od Hyper-Threadinga, a ako se ta tehnologija proširi, bilo bi ih poželjno modificirati. Ali nije li se ista stvar svojevremeno dogodila s MMX-om i SSE-om i nastavlja se događati sa SSE2? ..

Međutim, to postavlja pitanje primjenjivosti ove tehnologije na našu stvarnost. Odmah ćemo odbaciti varijantu jednoprocesorskog sustava baziranu na Xeonu s Hyper-Threadingom (ili neka bude samo privremena, do kupnje drugog procesora): čak ni povećanje performansi od 30% ne opravdava cijenu u na bilo koji način - onda je bolje kupiti obični Pentium 4. Broj CPU-a ostaje od dva ili više.

Sada zamislimo da kupujemo Xeon sustav s dva procesora (recimo, sa sustavom Windows 2000 / XP Professional). Dva CPU-a su instalirana, Hyper-Threading je uključen, BIOS pronalazi čak četiri logička procesora, sad, kako da skinemo... Stani. Ali koliko će procesora vidjeti naš operativni sustav? Tako je, dva. Samo dva, jer jednostavno nije predviđena za veći broj. To će biti dva fizička procesora, odnosno sve će raditi potpuno isto kao i s onemogućenim Hyper-Threadingom - ne sporije (dva "dodatna" logička CPU-a će jednostavno stati), ali ni brže (provjereno dodatnim testovima, rezultati nisu daju se zbog njihovih potpunih dokaza). Hmmm, malo ugodno...

Sto je ostalo? Pa, nemojte stavljati Advanced Server ili .NET Server na našu radnu stanicu? Ne, sustav će se sam instalirati, prepoznati sva četiri logička procesora i funkcionirat će. Ali poslužiteljski OS izgleda malo čudno na radnoj stanici, blago rečeno (da ne spominjemo financijske aspekte). Jedini razuman slučaj je kada će naš dual-procesor Xeon-sustav djelovati kao poslužitelj (barem su neki kolekcionari bez oklijevanja već pokrenuli proizvodnju poslužitelja na radnim stanicama-procesorima Xeon). Ali za dualne radne stanice s odgovarajućim operativnim sustavima, primjenjivost Hyper-Threadinga ostaje upitna. Intel sada aktivno zagovara licenciranje OS-a na temelju broja ne logičkih, već fizičkih CPU-a. Rasprave su još uvijek u tijeku, a općenito, puno ovisi o tome hoćemo li vidjeti OS za radne stanice s podrškom za četiri procesora.

Pa, s poslužiteljima sve ispada sasvim jednostavno. Na primjer, Windows 2000 Advanced Server instaliran na dual-procesorskom Xeon sustavu s omogućenim Hyper-Threadingom će "vidjeti" četiri logička procesora i raditi glatko na njemu. Kako bismo procijenili prednosti Hyper-Threadinga u poslužiteljskim sustavima, predstavljamo rezultate Intel Microprocessor Software Labs za dual-procesor Xeon MP sustave i nekoliko Microsoftovih poslužiteljskih aplikacija.

Povećanje performansi od 20-30% za dvoprocesorski poslužitelj "besplatno" je više nego primamljivo (osobito u usporedbi s kupnjom "pravog" 4-procesorskog sustava).

Dakle, ispada da je u ovom trenutku praktična primjenjivost Hyper-Threadinga moguća samo na poslužiteljima. Problem s radnim stanicama ovisi o rješenju za licenciranje OS-a. Ipak, još jedna primjena Hyper-Threadinga sasvim je realna - ako i stolni procesori dobiju podršku za ovu tehnologiju. Na primjer (maštajmo), zašto je instaliran sustav s Pentiumom 4 s podrškom za Hyper-Threading i Windows 2000 / XP Professional s podrškom za SMP? - od poslužitelja do stolnih i mobilnih sustava.

  • Vodič

U ovom članku pokušat ću opisati terminologiju koja se koristi za opisivanje sustava sposobnih za paralelno izvršavanje više programa, odnosno višejezgreni, višeprocesorski, višenitni. Različite vrste paralelizma u IA-32 CPU-ima pojavile su se u različito vrijeme i na pomalo nedosljedan način. Prilično se lako zbuniti u svemu tome, pogotovo ako se uzme u obzir da operativni sustavi pažljivo skrivaju detalje od ne previše sofisticiranih aplikacija.

Svrha je članka pokazati da se uz svu raznolikost mogućih konfiguracija višeprocesorskih, višejezgrenih i višenitnih sustava za programe koji se na njima izvode stvaraju mogućnosti kako za apstrakciju (zanemarivanje razlika) tako i za uzimanje u obzir specifičnosti (sposobnost programski saznati konfiguraciju).

Upozorenje o oznakama ®, ™ u članku

Moj komentar objašnjava zašto bi zaposlenici tvrtke trebali koristiti oznake autorskih prava u javnim komunikacijama. U ovom članku morao sam ih često koristiti.

CPU

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

U suvremenom svijetu procesor je ono što kupujemo u lijepoj maloprodajnoj kutiji ili ne baš lijepom OEM pakiranju. Nedjeljiv entitet koji se uključuje u utičnicu na matičnoj ploči. Čak i ako nema konektora i ne može se ukloniti, odnosno ako je čvrsto zalemljen, to je jedan čip.

Mobilni sustavi (telefoni, tableti, prijenosna računala) i većina stolnih računala imaju jedan procesor. Radne stanice i poslužitelji ponekad imaju dva ili više procesora na jednoj matičnoj ploči.

Podrška za više CPU-a u jednom sustavu zahtijeva brojne promjene dizajna. U najmanju ruku, potrebno je osigurati njihovu fizičku vezu (omogućiti nekoliko utičnica na matičnoj ploči), riješiti probleme identifikacije procesora (vidi kasnije u ovom članku, kao i moju prethodnu bilješku), dogovaranja pristupa memoriji i isporuke prekida ( kontroler prekida mora biti sposoban usmjeriti prekide za više procesora) i, naravno, podršku operativnog sustava. Nažalost, nisam uspio pronaći dokumentarni spomen o stvaranju prvog višeprocesorskog sustava na Intelovim procesorima, međutim Wikipedia tvrdi da ih je Sequent Computer Systems isporučio već 1987. koristeći procesore Intel 80386. Postaje dostupna široko rasprostranjena podrška za više čipova u jednom sustavu 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 neovisne kopije svih resursa, kao što su registri, izvršitelji, predmemorije. Dijele zajedničku memoriju – RAM. S njima se pamćenje može povezati na razne i prilično netrivijalne načine, ali to je posebna priča izvan okvira ovog članka. Važno je da se u bilo kojem scenariju za izvršne programe stvori iluzija jedinstvene dijeljene memorije koja je dostupna svim procesorima uključenim u sustav.


Spremni za polijetanje! Intel® stolna ploča D5400XS

Jezgra

Povijesno gledano, višejezgrena u Intelu IA-32 pojavila se kasnije od Intel® HyperThreadinga, ali u logičkoj hijerarhiji dolazi na red.

Čini se da ako sustav ima više procesora, onda je njegova izvedba veća (na zadacima koji mogu koristiti sve resurse). Međutim, ako je trošak komunikacije između njih previsok, onda se sav dobitak od paralelizma ubija dugim kašnjenjima u prijenosu zajedničkih podataka. Upravo se to opaža u višeprocesorskim sustavima – i fizički i logički, jako su udaljeni jedan od drugog. Za učinkovitu komunikaciju u takvom okruženju, moraju se izumiti specijalizirane sabirnice kao što je Intel® QuickPath Interconnect. Potrošnja energije, veličina i cijena konačnog rješenja, naravno, ne smanjuju se od svega toga. Visoka integracija komponenti trebala bi priskočiti u pomoć - sklopovi koji izvode dijelove paralelnog programa trebali bi biti povučeni bliže jedan drugome, po mogućnosti na jednom kristalu. Drugim riječima, jedan procesor bi trebao organizirati nekoliko jezgre, u svemu identični jedni drugima, ali rade samostalno.

Prvi Intelovi višejezgreni IA-32 procesori predstavljeni su 2005. godine. Od tada, prosječan broj jezgri na poslužiteljskim, stolnim, a sada i mobilnim platformama stalno raste.

Za razliku od dva jednojezgrena procesora na istom sustavu, koji dijele samo memoriju, dvije jezgre također mogu dijeliti predmemoriju i druge resurse koji su odgovorni za interakciju s memorijom. Najčešće predmemorije prve razine ostaju privatne (svaka jezgra ima svoju), dok druga i treća razina mogu biti dijeljene ili odvojene. Ovakva organizacija sustava omogućuje smanjenje kašnjenja u isporuci podataka između susjednih jezgri, osobito ako rade na zajedničkom zadatku.


Mikrograf Intelovog četverojezgrenog procesora, kodnog naziva Nehalem. Dodijeljene su zasebne jezgre, zajednička L3 cache, kao i QPI veze s drugim procesorima i zajednički memorijski kontroler.

Hyperthreading

Otprilike do 2002., jedini način da se IA-32 sustav dobije sposoban za paralelno izvršavanje dva ili više programa bio je korištenje višeprocesorskih sustava. Intel® Pentium® 4, kao i linija Xeon, kodnog naziva Foster (Netburst), predstavili su novu tehnologiju - hyperthreading ili hyperthreading - Intel® HyperThreading (u daljnjem tekstu HT).

Nema ničeg novog pod suncem. HT je poseban slučaj onoga što se u literaturi naziva simultane multithreading (SMT). Za razliku od "pravih" jezgri, koje su pune i neovisne 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 bilo kojem trenutku ih koristi najviše jedna od niti. Kao i kerneli, hipernitovi dijele predmemoriju među sobom, ali s koje razine to ovisi o specifičnom sustavu.

Neću pokušavati objasniti sve prednosti i nedostatke dizajna sa SMT općenito i s HT-om posebno. Zainteresirani čitatelj može pronaći prilično detaljnu raspravu o tehnologiji u mnogim izvorima, a naravno i na Wikipediji. Međutim, primijetit ću sljedeću važnu točku, koja objašnjava trenutna ograničenja broja hipernitova u stvarnim proizvodima.

Ograničenja strujanja
Kada je opravdana prisutnost "nepoštene" višejezgre u obliku HT-a? Ako jedna nit aplikacije ne može učitati sve izvršne čvorove unutar kernela, tada se mogu "posuditi" drugoj niti. To je tipično za aplikacije koje imaju "usko grlo" ne u izračunima, već u pristupu podacima, odnosno često generiraju propuste u predmemoriji i moraju čekati da se podaci isporuče iz memorije. U ovom trenutku, kernel bez HT-a će biti prisiljen na mirovanje. Prisutnost HT-a omogućuje vam da brzo prebacite slobodne izvršne čvorove u drugo arhitektonsko stanje (budući da je samo dupliciran) i izvršite njegove upute. Ovo je poseban slučaj tehnike zvane skrivanje latencije, kada je jedna duga operacija, tijekom koje su korisni resursi neaktivni, maskirana paralelnim izvršavanjem drugih zadataka. Ako aplikacija već ima visoku iskorištenost resursa kernela, prisutnost hipernitova neće joj omogućiti da se ubrza - ovdje su potrebne "poštene" kernele.

Tipični scenariji aplikacija za stolna računala i poslužitelja za arhitekture strojeva opće namjene imaju potencijal za istodobnost koju omogućuje HT. Međutim, taj se potencijal 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 hiperniti bi bio mali, ali gubitak u veličini kristala, potrošnji energije i cijeni je značajan.

Drugačija je situacija u tipičnim zadacima koji se izvode na video akceleratorima. Stoga ove arhitekture karakterizira korištenje SMT tehnika s velikim brojem niti. Budući da su koprocesori Intel® Xeon Phi (uvedeni 2010.) ideološki i genealoški prilično bliski video karticama, mogu se četiri hiperthreading na svakoj jezgri - konfiguracija jedinstvena za IA-32.

Logički procesor

Od tri opisane "razine" paralelizma (procesori, jezgre, hipernitovi), neke ili sve od njih mogu nedostajati u određenom sustavu. Na to utječu postavke BIOS-a (višejezgreni i višenitni su onemogućeni neovisno), mikroarhitektonske značajke (na primjer, HT je nedostajao u Intel® Core™ Duo, ali je vraćen s izdavanjem Nehalema) i sustavni događaji (višeprocesorski poslužitelji se mogu uključiti isključite neuspjele procesore u slučaju kvara i nastavite "letjeti" na ostatku). Kako je ovaj višeslojni zoološki vrt istodobnosti vidljiv operativnom sustavu i, u konačnici, aplikaciji?

Nadalje, radi praktičnosti, broj procesora, jezgri i niti u nekom sustavu označavamo trostrukom ( x, y, z), gdje x je broj procesora y je broj jezgri u svakom procesoru, i z- broj hipernitova u svakoj jezgri. U nastavku ću ovo zvati trostruko topologija- uhodan pojam koji nema mnogo veze s odsjekom matematike. Raditi str = xyz definira broj imenovanih entiteta logičkih procesora sustava. Definira ukupan broj neovisnih istodobnih konteksta procesa aplikacije u sustavu dijeljene memorije koje je operativni sustav prisiljen uzeti u obzir. Kažem "prisilno" jer ne može kontrolirati redoslijed izvršenja dva procesa na različitim logičkim procesorima. To se također odnosi i na hiper-niti: iako rade "uzastopno" na istoj jezgri, određeni redoslijed diktira hardver i nije dostupan za praćenje ili kontrolu programa.

Operativni sustav najčešće skriva značajke fizičke topologije sustava na kojem se izvodi od krajnjih aplikacija. Na primjer, sljedeće tri topologije: (2, 1, 1), (1, 2, 1) i (1, 1, 2) - OS će predstavljati u obliku dva logička procesora, iako prvi od njih ima dva procesora, drugi - dvije jezgre, a treći ima samo dvije niti.


Windows Task Manager prikazuje 8 logičkih procesora; ali koliko je to u procesorima, jezgri i hipernitovima?


Vrh Linuxa prikazuje 4 logička procesora.

To je prilično zgodno za programere aplikacija - ne moraju se baviti hardverskim značajkama koje su im često irelevantne.

Programska definicija topologije

Naravno, apstrakcija topologije u jedan broj logičkih procesora u nekim slučajevima stvara dovoljno osnova za zbrku i nesporazume (u žestokim internetskim sporovima). Računalne aplikacije koje žele iscijediti maksimalnu izvedbu iz hardvera zahtijevaju detaljnu kontrolu nad time gdje će njihove niti biti smještene: bliže jedna drugoj na susjednim hipernitovima ili, obrnuto, dalje na različitim procesorima. Brzina komunikacije između logičkih procesora u jednoj jezgri ili procesoru puno je veća od brzine prijenosa podataka između procesora. Mogućnost heterogenosti u organizaciji RAM-a također komplicira sliku.

Informacije o topologiji sustava u cjelini, kao io poziciji svakog logičkog procesora u IA-32, dostupne su pomoću CPUID instrukcije. Od pojave prvih višeprocesorskih sustava, shema 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 list gledati može se odrediti iz sljedećeg dijagrama toka preuzetog iz članka:

Ovdje vas neću zamarati svim detaljima pojedinih dijelova ovog algoritma. Ako se pojavi interes, tome se može posvetiti sljedeći dio ovog članka. Uputit ću zainteresiranog čitatelja na što je moguće detaljnije obrađeno ovo pitanje. Ovdje ću prvo ukratko opisati što je APIC i kako je povezan s topologijom. Zatim ćemo razmotriti rad s listom 0xB (jedanaest u decimali), koji je trenutno posljednja riječ u "apicostroenie".

APIC ID
Lokalni APIC (napredni programirljivi 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 sustavu mora imati jedinstvenu vrijednost APIC ID-a. Ovaj broj koriste kontroleri prekida za adresiranje prilikom dostave poruka, a svi ostali (na primjer, operativni sustav) za identifikaciju logičkih procesora. Specifikacija za ovaj kontroler prekida evoluirala je od Intel 8259 PIC preko Dual PIC, APIC i xAPIC do x2APIC.

Trenutno je širina broja pohranjenog u APIC ID-u dosegnula puna 32 bita, iako je u prošlosti bila ograničena na 16, a još ranije - samo 8 bita. Danas su ostaci starih dana razasuti po cijelom CPUID-u, ali sva 32 bita APIC ID-a se vraćaju u CPUID.0xB.EDX. Svaki logički procesor, neovisno izvršavajući CPUID instrukciju, vratit će vlastitu vrijednost.

Razjašnjenje obiteljskih veza
Vrijednost APIC ID-a sama po sebi ne govori ništa o topologiji. Da biste saznali koja se dva logička procesora nalaze unutar jednog fizičkog procesora (tj. oni su “braća” hipernitovima), koja su dva unutar istog procesora, a koja u potpuno različitim procesorima, trebate usporediti njihove APIC ID vrijednosti. Ovisno o stupnju veze, neki od njihovih bitova bit će isti. Ove informacije sadržane su u podlistama CPUID.0xB, koji su kodirani pomoću ECX operanda. Svaki od njih opisuje položaj bitovskog polja jedne od topoloških razina u EAX-u (točnije, broj bitova koji je potrebno pomaknuti u APIC ID-u udesno da bi se uklonile niže razine topologije), kao i tip ove razine - hipernit, jezgra ili procesor - u ECX-u.

Logički procesori smješteni unutar iste jezgre imat će iste APIC ID bitove, osim onih koji pripadaju polju SMT. Za logičke procesore u istom procesoru, svi bitovi osim polja Core i SMT. Budući da broj podlista za CPUID.0xB može rasti, ova shema će omogućiti podršku opisu topologija s više razina, ako se u budućnosti pojavi potreba. Štoviše, bit će moguće ući u srednje razine između postojećih.

Važna posljedica organizacije ove sheme je da mogu postojati "rupe" u skupu svih APIC ID-ova svih logičkih procesora u sustavu; neće ići uzastopno. Na primjer, u višejezgrenom procesoru s isključenim HT-om, svi APIC ID-ovi mogu se pokazati parnim, budući da će najmanji bitni bit odgovoran za kodiranje hiperstream broja uvijek biti nula.

Imajte na umu da CPUID.0xB nije jedini izvor informacija o logičkim procesorima dostupnim operativnom sustavu. Popis svih procesora koji su mu dostupni, zajedno s njihovim APIC ID vrijednostima, kodiran je u MADT ACPI tablici.

Operacijski sustavi i topologija

Operativni sustavi pružaju logičke informacije o topologiji procesora aplikacijama putem vlastitih sučelja.

Na Linuxu su informacije o topologiji sadržane u pseudo datoteci / proc / cpuinfo i izlazu naredbe dmidecode. U donjem primjeru filtriram cpuinfo sadržaj na nekom četverojezgrenom sustavu bez HT-a, ostavljajući samo unose koji se odnose na topologiju:

Skriveni tekst

[e-mail zaštićen]: ~ $ cat / proc / cpuinfo | grep "procesor \ | fizički \ id \ | siblings \ | jezgra \ | jezgre \ | apicid" procesor: 0 fizički id: 0 braće i sestara: 4 id jezgre: 0 jezgri procesora: 2 apicid: 0 početni apicid: 0 procesor: 1 fizički id: 0 braće i sestara: 4 id jezgre: 0 jezgri procesora: 2 apicid: 1 početni apicid: 1 procesor: 2 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgre procesora: 2 apicid: 2 početni apicid: 2 procesor: 3 fizički id: 0 braće i sestara: 4 id jezgre: 1 jezgre 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

[e-mail zaštićen]: ~ $ 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 NITI grupaSMT grupa 2, 3 NITI grupaSMT grupa 4, 5 NITI grupaSMT grupa 6, 7 NITI grupaSMT grupa

U MS Windows 8, informacije o topologiji mogu se vidjeti u Task Manageru.

Vrhunski povezani članci