Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Operativni sistemi
  • Hyper-Threading: "dva u jednom" od Intela, ili skrivene karakteristike Xeona. Višejezgarni procesori: kako rade

Hyper-Threading: "dva u jednom" od Intela, ili skrivene karakteristike Xeona. Višejezgarni procesori: kako rade

ov u mašini i našao sam neke postove, ali sam zbunjen jer su neki spomenuli da dobijate logička jezgra i fizička jezgra itd.
Dakle, koja je razlika između logičke i fizičke jezgre i postoji li način da se nabave fizička jezgra? Ili ima smisla uključiti logička jezgra u naš broj?

4 Rješenja prikupljaju web formu za „Pa šta su logička jezgra procesora (za razliku od fizičkih jezgara procesora)?“

Fizička jezgra su jednostavno fizička jezgra u procesoru. Logička jezgra su sposobnosti jednog jezgra da radi dvije ili više stvari u isto vrijeme. Ovo je izraslo iz ranih Pentium 4 procesora sposobnih za ono što se zvalo Hyper Threading (HTT).

To je bila igra koja se igrala kada pomoćne komponente kernela nisu korištene za određene vrste instrukcija, dok se drugi dugi poslovi mogli obaviti. Dakle, CPU bi mogao raditi na dvije stvari u isto vrijeme.

Novija jezgra su procesori sa više funkcija, tako da rade na više stvari u isto vrijeme, ali nisu pravi procesori kao fizička jezgra. Više o ograničenjima hiperthreading funkcije i fizičkim mogućnostima jezgre možete pročitati ovdje na tomshardveru 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-režim(i): 32-bitni, 64-bitni CPU(ovi): 4 Thread(i) po jezgru: 2 Jezgra(a) po utičnici: 2 CPU utičnice: 1 NUMA čvor(i): 1 ID dobavljača: GenuineIntel familija procesora: 6 Model: 37 Korak: 5 CPU MHz: 2667.000 Virtuelizacija: VT-x L1d keš: 32K L1i keš: 32K L2 keš: 256K L3 keš: 256K L3 keš: 3072 ): 0-3

U gore navedenom, moj intel i5 laptop ima ukupno 4 "procesora".

Procesor(i): 4

od kojih postoje 2 fizička jezgra

Jezgra(e) po utičnici: 2

od kojih svaka može pokretati do 2 niti

Tema(e) po jezgru: 2

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

Fizička jezgra je broj fizičkih jezgara, stvarnih hardverskih komponenti.

Logička jezgra je broj fizičkih jezgara pomnožen sa brojem niti koje se mogu pokrenuti na svakoj jezgri koristeći hipernitiranje.

na primjer, moj 4-jezgarni procesor radi na dvije 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 jezgara: 14 Broj niti: 28 Oznaka utičnice: Proc 2 Broj jezgara: 14 Broj niti: 28

Dva gnezda. Svaki slot ima 14 fizičkih jezgara. Svako jezgro ima dva navoja (28/14). Ukupan broj logičkih "cpusa" ili logičkih procesorskih jedinica je 56 (to je ono što je "top", a neke druge komande vas prikazuju kao "cpus" broj).

Hyperthreading tehnologija omogućava da se jedno fizičko jezgro procesora ponaša kao dva logička procesora.

Dakle, jedno jezgro procesora može izvršiti dvije nezavisne niti u isto vrijeme.

Intel fizički procesor naziva utičnicom.

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

Iako hiperthreading ne udvostručuje performanse sistema, može poboljšati performanse korištenjem neaktivnih resursa, što rezultira većom propusnošću za određene kritične tipove radnog opterećenja. Aplikacija koja radi na jednom logičkom procesoru sa zauzetom jezgrom može očekivati ​​nešto više od polovine propusnog opsega koju prima kada radi u jednom modu na procesoru koji ne podržava hiper-ničenje.

Sažetak

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

Logički procesor je sličan: Fizička jezgra koja djeluje kao dvije fizičke jezgre

Na tržištu Sankt Peterburga pojavio se Intel Pentium 4 procesor sa taktom od 3,06 GHz, gdje je primijenjena Hyper-Threading (HT) tehnologija.
Ranije korišćena samo u serverskim sistemima, ova tehnologija je uvela novu klasu desktop personalnih računara visokih performansi, kažu proizvođači.
Sa HT tehnologijom, jedan fizički procesor se od strane PC operativnog sistema i aplikacija tretira kao dva logička procesora. Prema Alekseyju Navolokinu, šefu Intelovog predstavništva u Rusiji i CIS-u, preliminarni podaci pokazuju da novi procesor sa HT tehnologijom pruža prosječno povećanje performansi od 25%.

Van reda
HT tehnologija omogućava korisnicima da poboljšaju performanse računara na dva načina: kada rade sa softverom koji koristi višenitnu obradu podataka i kada rade u multitasking okruženjima. Aplikacije napisane sa sposobnošću novog procesora da pokreću više komada koda (zvanih "threads" u isto vrijeme) će "vidjeti" jedan fizički 3,06 GHz Intel Pentium 4 procesor sa HT tehnologijom kao dva logička procesora. HT tehnologija omogućava procesoru da obrađuje dva nezavisna toka podataka ne naizmjence, već u isto vrijeme.

Za posao
Uz pomoć HT tehnologije možete, na primjer, započeti puštanje muzičkog albuma i istovremeno razmjenjivati ​​poruke u chatu bez ugrožavanja kvalitete zvuka. Preuzimanjem MP3 datoteke sa interneta u svoju muzičku arhivu, istovremeno možete pokrenuti antivirusni program koji će zaštititi vaš računar od neželjenih programa izvana.
HT pruža širok raspon mogućnosti u svijetu poslovanja - čelnik poduzeća može istovremeno pregledavati izvještaje o dionicama i indekse, pratiti indikatore automatiziranog sustava upravljanja poduzećem i biti u kontaktu s izvođačima. Inženjeri i naučnici koji koriste računar baziran na Intel Pentium 4 procesoru sa Hyper-Threading tehnologijom moći će najefikasnije da rade sa izvorima informacija, istovremeno ih preuzimajući putem interneta i primajući ih od kolega u različitim formatima datoteka - od PDF do XLS.
Firme integratora iz Sankt Peterburga (Svega+, Computer Service 320-80-80, Computer Center KEY i Computer World) planiraju da prodaju najmanje 15-20 računara baziranih na Intel Pentium 4 procesoru svakog mjeseca 3,06 GHz sa HT tehnologijom.

Napisali smo da upotreba jednoprocesorskih Xeon sistema nema smisla, jer će po višoj cijeni njihove performanse biti iste kao i Pentium 4 iste frekvencije. Sada, nakon detaljnijeg ispitivanja, ova izjava će vjerovatno morati biti malo izmijenjena. Tehnologija Hyper-Threading implementirana u Intel Xeon sa Prestonia jezgrom zaista radi i daje prilično opipljiv efekat. Iako ima i mnoga pitanja kada ga koristite...

Dajte performanse

"Brže, još brže...". Trka za performansama traje godinama, a ponekad je čak i teško reći koja od komponenata računara brže ubrzava. Za to se izmišlja sve više i više novih načina, a što dalje, u ovaj lavinski proces se ulaže sve više stručnog rada i kvalitetnijeg mozga.

Naravno, potrebno je stalno povećanje performansi. U najmanju ruku, to je profitabilan posao i uvijek postoji lijep način da se ohrabre korisnici da nadograde jučerašnji "superperformansni CPU" na sutrašnji "još super...". Na primjer, simultano prepoznavanje govora i simultano prevođenje na drugi jezik - nije li to san svih? Ili neuobičajeno realistične igre gotovo "kineskog" kvaliteta (potpuno upijaju pažnju i ponekad dovode do ozbiljnih promjena u psihi) - nije li to želja mnogih gejmera, mladih i starih?

Ali izostavimo marketinške aspekte u ovom slučaju, fokusirajući se na tehničke. Štaviše, nije sve tako sumorno: postoje hitni zadaci (serverske aplikacije, naučne kalkulacije, modeliranje itd.) gde su sve veće performanse, posebno centralnih procesora, zaista neophodne.

Dakle, koji su načini za povećanje njihovog učinka?

Pojačanje sata. Moguće je dodatno „prorijediti“ tehnološki proces i povećati frekvenciju. Ali, kao što znate, to nije lako i prepuno je raznih nuspojava, kao što su problemi s rasipanjem topline.

Povećanje resursa procesora- na primjer, povećanje volumena keš memorije, dodavanje novih blokova (Izvršne jedinice). Sve to podrazumijeva povećanje broja tranzistora, složenost procesora, povećanje površine kristala i, shodno tome, cijenu.

Osim toga, prethodne dvije metode u pravilu ne daju linearno povećanje produktivnosti. Ovo je dobro poznato u primjeru Pentiuma 4: greške u predviđanju grananja i prekidima uzrokuju resetovanje dugog cjevovoda, što u velikoj mjeri utiče na ukupne performanse.

multiprocesiranje. Instaliranje više CPU-a i raspodjela posla između njih je često prilično efikasno. Ali ovaj pristup nije baš jeftin - svaki dodatni procesor povećava cijenu sistema, a dvostruka matična ploča je mnogo 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 dovoljno koristi od višeprocesiranja da opravdaju troškove.

Pored "čiste" višeprocesne obrade, postoji nekoliko "srednjih" opcija koje vam omogućavaju da ubrzate izvršavanje aplikacije:

Multiprocesiranje čipova (CMP)- dva procesorska jezgra su fizički smještena na istom čipu, koristeći zajedničku ili odvojenu keš memoriju. 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đe može raditi u višeprocesorskom sistemu.

Multithreading vremenskog preseka. Procesor se prebacuje između programskih niti u fiksnim intervalima. Režijski troškovi ponekad mogu biti prilično veliki, posebno ako proces čeka.

Višenitno uključivanje događaja. Prebacivanje zadataka kada dođe do dugih pauza, kao što su "promašaji keša" (keš promašaji), od kojih je veliki broj tipičan za serverske aplikacije. U ovom slučaju, proces koji čeka da učita podatke iz relativno spore memorije u keš je suspendovan, oslobađajući CPU resurse za druge procese. Međutim, Multithreading-on-Event Multithreading, kao i Time-Slice Multithreading, ne postiže uvijek optimalno korištenje resursa procesora, posebno zbog grešaka u predviđanju grananja, ovisnosti o instrukciji, itd.

Simultaneous Multithreading. U ovom slučaju, programske niti se izvršavaju na istom procesoru "istovremeno", tj. bez prebacivanja između njih. Resursi procesora se distribuiraju dinamički, po principu "ako ga ne koristiš, daj nekom drugom." Upravo ovaj pristup čini osnovu Intel Hyper-Threading tehnologije, koju sada razmatramo.

Kako radi Hyper-Threading

Kao što znate, trenutna "računarska paradigma" uključuje višenitno računanje. Ovo se ne odnosi samo na servere, gde takav koncept u početku postoji, već i na radne stanice i desktop sisteme. Niti mogu pripadati istoj ili različitim aplikacijama, ali gotovo uvijek postoji više aktivnih niti (da biste to vidjeli, dovoljno je otvoriti Task Manager u Windows 2000/XP i uključiti prikaz broja niti). U isto vrijeme, konvencionalni procesor može izvršiti samo jednu od niti istovremeno i prisiljen je da se stalno prebacuje između njih.

Po prvi put, Hyper-Threading tehnologija je implementirana u Intel Xeon MP (Foster MP) procesor, na kojem je "uhodana". Podsjetimo da Xeon MP, zvanično predstavljen na IDF Spring 2002, koristi Pentium 4 Willamette jezgro, sadrži 256 KB L2 keš memorije i 512 KB/1 MB L3 keš memorije i podržava konfiguracije sa 4 procesora. Hyper-Threading podrška je takođe prisutna u Intel Xeon procesoru za radne stanice (Prestonia jezgro, 512 KB L2 keš memorije), koji je ušao na tržište nešto ranije od Xeon MP-a. Naši čitaoci su već upoznati sa dual-procesorskim konfiguracijama na Intel Xeon-u, pa ćemo razmotriti mogućnosti Hyper-Threading-a koristeći ove CPU kao primjer - i teoretski i praktično. Kako god bilo, "jednostavan" Xeon je svakodnevniji i svarljiviji od Xeon MP-a u 4-procesorskim sistemima...

Princip rada Hyper-Threadinga zasniva se na činjenici da se u svakom trenutku samo dio procesorskih resursa koristi prilikom izvršavanja programskog koda. Neiskorišteni resursi se također mogu učitati radom - na primjer, još jedna aplikacija (ili druga nit iste aplikacije) može se koristiti za paralelno izvršavanje. U jednom fizičkom Intel Xeon procesoru formiraju se dva logička procesora (LP - Logical Processor) koji dijele računske resurse CPU-a. Operativni sistem i aplikacije "vide" tačno dva CPU-a i mogu rasporediti posao između njih, kao u slučaju punopravnog dvoprocesorskog sistema.

Jedan od ciljeva implementacije Hyper-Threading-a je omogućiti samo jednoj aktivnoj niti da radi istom brzinom kao na normalnom CPU-u. Da bi to učinio, procesor ima dva glavna načina rada: Single-Task (ST) i Multi-Task (MT). U ST modu, samo jedan logički procesor je aktivan i koristi dostupne resurse nepodijeljeno (ST0 i ST1 načini); drugi LP se zaustavlja naredbom HALT. Kada se pojavi druga programska nit, neaktivni logički procesor se aktivira (preko prekida) i fizički CPU se stavlja u MT mod. Zaustavljanje neiskorištenih LP-ova naredbom HALT je odgovornost operativnog sistema, 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 registara različitih tipova – opšte namjene, kontrolne, APIC i servisne. Svaki LP ima svoj APIC (kontrolor prekida) i skup registara, za ispravan rad sa kojima je uveden koncept Register Alias ​​Table (RAT) koji prati korespondenciju između osam IA-32 registara opšte namjene i 128 registara. fizički CPU registri (jedan RAT za svaki LP).

Kada se izvode dvije niti, podržana su dva odgovarajuća skupa pokazivača sljedećih instrukcija. Većina instrukcija je preuzeta iz keša praćenja (TC), gdje se pohranjuju u dekodiranom obliku, a dva aktivna LP-a pristupaju TC-u naizmjenično, svaki sat. U isto vrijeme, kada je aktivan samo jedan LP, on dobija ekskluzivni pristup TC-u bez preplitanja na taktovima. Slično, dolazi do pristupa Microcode ROM-u. ITLB blokovi (Instruction Translation Look-aside Buffer), koji se aktiviraju u nedostatku potrebnih instrukcija u kešu instrukcija, dupliraju se i isporučuju instrukcije svaki za svoju nit. IA-32 instrukcijski blok dekodiranja instrukcija je zajednički i, u slučaju kada je potrebno dekodiranje instrukcija za oba toka, on ih opslužuje jedan po jedan (opet, svaki ciklus). Blokovi Uop Queue i Allocator su podijeljeni na dva dijela, pri čemu je polovina elemenata dodijeljena za svaki LP. Planeri od 5 komada obrađuju redove dekodiranih naredbi (Uops) bez obzira na pripadnost LP0/LP1 i direktne komande koje izvršavaju potrebne Izvršne jedinice - ovisno o spremnosti za izvršenje prve i dostupnosti druge. Keš memorije svih nivoa (L1/L2 za Xeon, kao i L3 za Xeon MP) se u potpunosti dijele između dva LP-a, međutim, kako bi se osigurao integritet podataka, unosi u DTLB (Data Translation Look-aside Buffer) se isporučuju s deskriptorima 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:

  • duplirani (Duplicated);
  • potpuno podijeljeno (Fully Shared);
  • sa deskriptorima elemenata (Entry Tagged);
  • dinamički podijeljen (Particioniran) ovisno o načinu rada ST0/ST1 ili MT.

Međutim, većina aplikacija koje se ubrzavaju na višeprocesorskim sistemima mogu se ubrzati i na CPU-u sa omogućenim Hyper-Threadingom bez ikakvih modifikacija. 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 drugi LP da radi. Stoga, performanse pri korištenju Hyper-Threadinga ponekad mogu pasti (do 20%). Da bi se ovo sprečilo, Intel preporučuje korišćenje instrukcije PAUSE umesto praznih petlji čekanja (uvedeno u IA-32 počevši od Pentiuma 4). U toku je i ozbiljan rad na automatskoj i poluautomatskoj optimizaciji koda tokom kompilacije - na primjer, kompajleri serije Intel OpenMP C ++ / Fortran Compilers () su napravili značajan napredak u tom pogledu.

Drugi cilj prve implementacije Hyper-Threadinga, prema Intelu, bio je da se minimizira rast broja tranzistora, površine matrice i potrošnje energije uz značajno povećanje performansi. Prvi dio ove obaveze je već ispunjen: dodavanje Hyper-Threading podrške za Xeon/Xeon MP povećalo je površinu matrice i potrošnju energije za manje od 5%. Šta se dogodilo sa drugim dijelom (performansom), tek treba da provjerimo.

Praktični dio

Iz očiglednih razloga, nismo testirali 4-procesorske serverske sisteme na Xeon MP sa omogućenim Hyper-Threadingom. Prvo, prilično je radno intenzivan. I drugo, ako se odlučimo na takav podvig, još uvijek je, manje od mjesec dana nakon zvanične objave, apsolutno nerealno nabaviti ovu skupu opremu. Stoga je odlučeno da se ograničimo na isti sistem sa dva Intel Xeon 2.2 GHz, na kojima su obavljena prva testiranja ovih procesora (pogledajte link na početku članka). Sistem je bio baziran na Supermicro P4DC6+ matičnoj ploči (Intel i860 čipset), sadržavao je 512 MB RDRAM-a, grafičku karticu zasnovanu na GeForce3 (64 MB DDR, Detonator 21.85 drajveri), Western Digital WD300BB hard disk i 6X DVD-ROM; Windows 2000 Professional SP2 je korišten kao OS.

Prvo, nekoliko opštih utisaka. Kada instalirate jedan Xeon sa Prestonia jezgrom, BIOS prikazuje poruku o prisustvu dva CPU-a pri pokretanju sistema; ako su instalirana dva procesora, korisnik vidi poruku o četiri CPU-a. Operativni sistem normalno prepoznaje "oba procesora", ali samo ako su ispunjena dva uslova.

Prvo, u CMOS podešavanju, najnovije verzije BIOS-a Supermicro P4DCxx ploča sada imaju stavku Enable Hyper-Threading, bez koje će OS prepoznati samo fizički procesor(e). Drugo, ACPI se koristi da kaže OS-u da postoje dodatni logički procesori. Stoga, da biste omogućili Hyper-Threading, ACPI opcija mora biti omogućena u CMOS Setup-u, a HAL (Hardware Abstraction Layer) sa ACPI podrškom također mora biti instaliran za sam OS. Srećom, u Windows-u 2000 promena HAL-a sa Standard PC (ili MPS Uni-/Multiprocessor PC) na ACPI Uni-/Multiprocessor PC je laka - promenom "drajvera računara" u menadžeru uređaja. U isto vrijeme, za Windows XP, jedini legalni način za migraciju na ACPI HAL je ponovna instalacija sistema na vrhu postojeće instalacije.

Ali sada su sve pripreme obavljene, a naš Windows 2000 Pro već čvrsto vjeruje da radi na dvoprocesorskom sistemu (iako je u stvari instaliran samo jedan procesor). Sada je, kao i obično, vrijeme da odlučite o ciljevima testiranja. Dakle želimo:

  • Procijenite utjecaj Hyper-Threadinga na performanse aplikacija različitih klasa.
  • Uporedite ovaj efekat sa efektom instaliranja drugog procesora.
  • Provjerite koliko se "prilično" resursi daju aktivnom logičkom procesoru kada je drugi LP neaktivan.

Da bismo procenili performanse, uzeli smo skup aplikacija koje su već poznate čitaocima, koje su korišćene u testiranju sistema radnih stanica. Počnimo, možda, od kraja i provjerimo "jednakost" logičkih CPU-a. Sve je krajnje jednostavno: prvo pokrećemo testove na jednom procesoru sa onemogućenim Hyper-Threadingom, a zatim ponavljamo proces sa uključenim Hyper-Threadingom i koristeći samo jedan od dva logička CPU-a (pomoću Task Manager-a). Budući da nas u ovom slučaju zanimaju samo relativne vrijednosti, rezultati svih testova su svedeni u formu „više je bolje“ i normalizirani (indikatori jednoprocesorskog sistema bez Hyper-Threading-a se uzimaju kao jedinica).

Pa, kao što vidite, Intelova obećanja su ispunjena: sa samo jednom aktivnom niti, performanse svakog od dva LP-a su potpuno jednake performansama fizičkog CPU-a bez Hyper-Threading-a. Neaktivni LP (i LP0 i LP1) je zaista suspendovan, a zajednički resursi, koliko se može suditi iz dobijenih rezultata, u potpunosti su prebačeni na korištenje aktivnog LP-a.

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

rendering. Rezultati četiri testa u paketima za 3D modeliranje 3D Studio MAX 4.26, Lightwave 7b i A|W Maya 4.0.1 kombinovani su u jedan dijagram zbog njihove sličnosti.

U sva četiri slučaja (za Lightwave - dvije različite scene), opterećenje CPU-a u prisustvu jednog procesora sa onemogućenim Hyper-Threadingom se gotovo konstantno održava na 100%. Međutim, kada je Hyper-Threading omogućen, izračunavanje scena je ubrzano (kao rezultat toga, čak smo imali i šalu o korištenju CPU-a preko 100%). U tri testa možemo vidjeti povećanje performansi od Hyper-Threading-a od 14--18% - s jedne strane, ne mnogo u odnosu na drugi CPU, ali s druge strane, prilično je dobro, s obzirom na "besplatan" efekat ovog efekta. U jednom od dva testa sa Lightwaveom, dobitak u performansama je skoro nula (očigledno, utiče specifičnost ove aplikacije pune neobičnosti). No negativnog rezultata nigdje nema, a ohrabruje primjetan porast u ostala tri slučaja. I to unatoč činjenici da paralelni procesi renderiranja rade sličan posao i, sigurno, ne mogu koristiti resurse fizičkog CPU-a u isto vrijeme na najbolji način.

Photoshop i MP3 kodiranje. GOGO-no-coda 2.39c kodek je jedan od rijetkih koji podržava SMP i pokazuje povećanje performansi od 34% u odnosu na dual procesor. Istovremeno, efekat Hyper-Threading-a u ovom slučaju je nula (razliku od 3% ne smatramo značajnom). Ali u testu sa Photoshopom 6.0.1 (skriptom koja se sastoji od velikog skupa komandi i filtera), možete vidjeti usporavanje kada je Hyper-Threading omogućen, iako drugi fizički CPU dodaje 12% performansi u ovom slučaju. Evo, zapravo, prvog slučaja kada Hyper-Threading uzrokuje pad performansi...

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

OpenGL i dual procesor: zašto nisu prijatelji

Mnogo puta smo u člancima skrenuli pažnju čitaocima na činjenicu da platforme sa dva procesora retko pokazuju neku značajniju prednost u odnosu na jednoprocesorske pri izvođenju profesionalnih OpenGL testova. Štaviše, postoje slučajevi kada instalacija drugog procesora, naprotiv, degradira performanse sistema prilikom renderovanja dinamičkih 3D scena.

Naravno, ne samo da smo mi primijetili ovu neobičnost. Neki testeri su jednostavno prešutno zaobišli ovu činjenicu - na primjer, dajući SPEC ViewPerf rezultate poređenja samo za konfiguracije sa dva procesora, izbjegavajući na taj način objašnjenja "zašto je sistem sa dva procesora sporiji?". Drugi su pravili svakakve maštovite pretpostavke o koherentnosti keša, potrebi da se on održava, rezultujućim dodatnim troškovima, itd. I iz nekog razloga, niko nije bio iznenađen što su, na primjer, procesori bili nestrpljivi da prate koherentnost upravo u prozorskom OpenGL renderiranju (u svojoj "računarskoj" suštini, ne razlikuje se mnogo od bilo kojeg drugog računskog zadatka).

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

  • postoji više od dve ili više programskih niti koje se istovremeno izvršavaju (niti);
  • ove niti ne ometaju međusobno izvršavanje – na primjer, ne takmiče se za zajednički resurs kao što je eksterni disk ili mrežni interfejs.

Sada, pogledajmo pojednostavljeno kako izgleda OpenGL renderiranje, koje izvode dvije niti. Ako aplikacija, "videći" dva procesora, kreira dvije OpenGL-rendering niti, 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 prikazuje slika, samo jedan gl-kontekst može biti aktuelan u svakom trenutku. Shodno tome, niti u ovom slučaju jednostavno "jedan po jedan" izlaze generisanu sliku u prozor, čineći njihov kontekst naizmjenično aktuelnim. Nepotrebno je reći da ovo "preplitanje konteksta" može biti veoma skupo u smislu dodatnih troškova?

Također, kao primjer daćemo grafikone upotrebe dva CPU-a u nekoliko aplikacija koje prikazuju OpenGL scene. Sva mjerenja su obavljena na platformi sa sljedećom konfiguracijom:

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

Plava i crvena su grafikoni opterećenja CPU 0 i CPU 1. Linija u sredini je konačni grafikon upotrebe CPU-a. Tri grafikona odgovaraju dvije scene iz 3D Studio MAX 4.26 i dio SPEC ViewPerf testa (AWadvs-04).


Upotreba CPU-a: Animation 3D Studio MAX 4.26 - Anibal (sa 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 nizu drugih aplikacija koje koriste OpenGL. Dva procesora se nimalo ne opterećuju radom, a ukupna potrošnja CPU-a je na nivou od 50-60%. Istovremeno, za jednoprocesorski sistem, u svim ovim slučajevima, iskorištenost CPU-a se pouzdano održava na nivou od 100%.

Stoga nije iznenađujuće da mnoge OpenGL aplikacije ne postaju mnogo brže na dualnim sistemima. Pa, činjenica da ponekad čak i usporavaju ima, po našem mišljenju, sasvim logično objašnjenje.

Možemo reći 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. Ali njihove ukupne performanse se, naravno, u ovom slučaju ispostavljaju niže, tako da kada je Hyper-Threading omogućen, one se smanjuju čak i više nego samo kada rade dva fizička CPU-a. Rezultat je predvidljiv, a zaključak je jednostavan: Hyper-Threading, kao i "pravi" SMP, ponekad je kontraindiciran za OpenGL.

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

Ali na kraju dana, Intel iskreno priznaje potencijal za degradaciju performansi sa Hyper-Threadingom u nekim slučajevima - na primjer, kada se koriste prazne petlje čekanja. Možemo samo pretpostaviti da je to razlog (detaljno ispitivanje koda SolidEdge i SolidWorks je izvan okvira ovog članka). Uostalom, svi znaju konzervativizam programera CAD aplikacija, koji preferiraju dokazanu pouzdanost i ne žure se prepisivati ​​kod uzimajući u obzir nove trendove u programiranju.

Sumiranje, ili "Pažnja, pravo pitanje"

Hyper-Threading radi, nema sumnje u to. Naravno, tehnologija nije univerzalna: postoje aplikacije za koje Hyper-Threading "postaje loš", a u slučaju širenja ove tehnologije poželjno bi ih modificirati. Ali zar se ista stvar nije desila MMX-u i SSE-u i nastavlja se dešavati sa SSE2?..

Međutim, ovo postavlja pitanje primjenjivosti ove tehnologije na našu stvarnost. Odmah ćemo odbaciti opciju jednoprocesorskog sistema na Xeonu sa Hyper-Threadingom (ili ga smatrati samo privremenim, u iščekivanju kupovine drugog procesora): čak ni povećanje performansi od 30% ne opravdava cijenu ni u jednom način - onda je bolje kupiti običan Pentium 4. Broj preostalih CPU-a je od dva ili više.

Sada zamislimo da kupujemo dvoprocesorski Xeon sistem (recimo, sa Windows 2000/XP Professional). Dva CPU-a su instalirana, Hyper-Threading je omogućen, BIOS pronalazi čak četiri logička procesora, sad ajde da skinemo... Stani. Ali koliko će procesora vidjeti naš operativni sistem? Tako je, dva. Samo dva, jer jednostavno nije predviđena za veći broj. To će biti dva fizička procesora, tj. sve će raditi potpuno isto kao i sa onemogućenim Hyper-Threadingom - ne sporije (dva "dodatna" logička CPU-a će jednostavno stati), ali ni brže (provjereno dodatnim testovima, rezultati se ne navode za njihova očiglednost). Hmmm, nije baš zabavno...

Šta ostaje? Pa, nemojte instalirati Advanced Server ili .NET Server na našu radnu stanicu, zar ne? Ne, sistem će se instalirati, prepoznati sva četiri logička procesora i funkcionisati. Samo što OS servera gleda na radnu stanicu, blago rečeno, malo čudno (da ne spominjemo finansijske aspekte). Jedini razuman slučaj je kada će naš dvoprocesorski Xeon sistem djelovati kao server (barem neki graditelji nemaju oklijevanja u oslobađanju servera na Xeon procesorima radnih stanica). Ali za dualne radne stanice sa odgovarajućim operativnim sistemima, primenljivost Hyper-Threadinga ostaje pod znakom pitanja. Intel sada aktivno zagovara OS licenciranje na osnovu broja ne logičkih, već fizičkih CPU-a. Diskusije su još uvijek u toku i, općenito, mnogo ovisi o tome hoćemo li vidjeti OS radne stanice s podrškom za četiri procesora.

Pa, sa serverima sve ispada sasvim jednostavno. Na primjer, Windows 2000 Advanced Server instaliran na Xeon sistemu sa dva socketa sa omogućenim Hyper-Threadingom će vidjeti četiri logička procesora i neometano će raditi na njemu. Da bismo procenili šta Hyper-Threading donosi serverskim sistemima, predstavljamo rezultate Intel Microprocessor Software Labs za dvoprocesorske sisteme na Xeon MP i nekoliko Microsoft serverskih aplikacija.

Povećanje performansi od 20-30% za dvoprocesorski server "besplatno" je više nego primamljivo (posebno u poređenju sa kupovinom "pravog" 4-procesorskog sistema).

Tako se ispostavilo da je u ovom trenutku praktična primjena Hyper-Threadinga moguća samo na serverima. Problem sa radnim stanicama zavisi od rešenja sa OS licenciranjem. Iako je još jedna primena Hyper-Threading-a sasvim realna - ako desktop procesori dobiju podršku za ovu tehnologiju. Na primjer (zamislimo) šta nije u redu sa Pentium 4 sistemom sa podrškom za Hyper-Threading, na kojem je instaliran Windows 2000/XP Professional sa SMP podrškom? - od servera do desktop i mobilnih sistema.

  • 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 u pomalo nedosljednom redoslijedu. 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šćeni i višeznačni 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 obezbijediti njihovu fizičku vezu (predvidjeti nekoliko utičnica na matičnoj ploči), riješiti probleme identifikacije procesora (vidi dalje u ovom članku, kao i moju prethodnu bilješku), 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 uspio pronaći dokumentirano pominjanje trenutka kada je prvi višeprocesorski sistem kreiran na Intelovim procesorima, međutim 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 od početka sa Intel® Pentiumom.

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 ima više procesora u sistemu, 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 u jednom procesoru je dupliciran samo dio internih čvorova, prvenstveno zaduženih 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 zavisi od specifičnog sistema.

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 koprocesori Intel® Xeon Phi (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), karakteristike mikroarhitekture (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đer odnosi i na hipernitove: iako se pokreću "sekvencionalno" na istoj jezgri, određeni redoslijed diktira hardver i nije vidljiv niti kontroliran 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 predstavljena 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 internet 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 dosaditi ovdje 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 kome 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 evoluirala je 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 se dva logička procesora nalaze unutar istog fizičkog (tj. oni su “braća” hipernitovima), 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 procesoru s više jezgara sa 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, informacije o topologiji sadržane su 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 siblings: 4 core id: 0 cpu cores: 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.

Top Related Articles