En quad-core processor er defineret som dual-core. Hvad er bedre multi-core eller højere frekvens? Sådan øger du bærbar batterilevetid

  • Tutorial

I denne artikel vil jeg forsøge at beskrive den terminologi, der bruges til at beskrive systemer, der er i stand til at udføre flere programmer parallelt, det vil sige multi-core, multi-processor, multi-threaded. Forskellige typer parallelitet i IA-32 CPU optrådte i anden tid og i en noget inkonsekvent rækkefølge. Det er ret nemt at blive forvirret i alt dette, især i betragtning af, at operativsystemer omhyggeligt skjuler detaljer fra mindre sofistikerede applikationsprogrammer.

Formålet med artiklen er at vise, at med alle de mange mulige konfigurationer af multiprocessor, multi-core og multi-threaded systemer, skabes muligheder for programmer, der kører på dem både til abstraktion (ignorering af forskelle) og for at tage hensyn til specifikke ( evnen til programmæssigt at finde ud af konfigurationen).

Advarsel om ®, ™ tegn i artiklen

Min forklarer, hvorfor virksomhedens ansatte bør bruge copyright-meddelelser i offentlig kommunikation. I denne artikel var jeg nødt til at bruge dem ret ofte.

CPU

Selvfølgelig er det ældste, oftest brugte og kontroversielle udtryk "processor".

I moderne verden en processor er, hvad vi køber i en smuk detailkasse eller en knap så pæn OEM-pakke. En udelelig enhed indsat i en fatning på bundkortet. Selvom der ikke er et stik, og det ikke kan fjernes, det vil sige, hvis det er tæt loddet, er det én chip.

Mobilsystemer (telefoner, tablets, bærbare computere) og de fleste stationære computere har én processor. Arbejdsstationer og servere kan nogle gange prale af to eller flere processorer på et enkelt bundkort.

Understøttelse af flere CPU'er i et enkelt system kræver adskillige designændringer. Som minimum er det nødvendigt at give dem fysisk forbindelse(lever flere stik på bundkortet), løs problemer med processoridentifikation (se senere i denne artikel, samt min note), koordinering af hukommelsesadgange og afbrydelseslevering (interruptcontrolleren skal være i stand til at dirigere afbrydelser til flere processorer) og selvfølgelig understøttelse fra styresystemet. Desværre kunne jeg ikke finde en dokumentarisk omtale af skabelsen af ​​det første multiprocessorsystem på Intel-processorer, men Wikipedia hævder, at Sequent Computer Systems leverede dem allerede i 1987 ved hjælp af Intel 80386-processorer. Understøttelse af flere chips i ét system er ved at blive udbredt, starter med Intel® Pentium.

Hvis der er flere processorer, har hver af dem sit eget stik på kortet. Hver af dem har komplette uafhængige kopier af alle ressourcer, såsom registre, eksekveringsenheder, caches. De deler en fælles hukommelse - RAM. Hukommelse kan forbindes med dem på forskellige og ret ikke-trivielle måder, men dette er en separat historie uden for denne artikels rammer. Det vigtige er, at under alle omstændigheder skal illusionen om homogen delt hukommelse tilgængelig fra alle processorer inkluderet i systemet skabes til eksekverbare programmer.


Klar til at tage afsted! Intel® Desktop Board D5400XS

Kerne

Historisk set dukkede multikerner i Intel IA-32 op senere end Intel® HyperThreading, men i det logiske hierarki kommer det dernæst.

Det ser ud til, at hvis i systemet flere processorer, så er dens ydeevne højere (på opgaver, der kan bruge alle ressourcer). Men hvis omkostningerne ved kommunikation mellem dem er for høje, så bliver alle fordelene ved parallelitet dræbt af lange forsinkelser for overførslen af ​​fælles data. Det er præcis, hvad der observeres i multiprocessorsystemer - både fysisk og logisk er de meget langt fra hinanden. Til effektiv kommunikation Under sådanne forhold er det nødvendigt at komme med specialiserede busser, såsom Intel® QuickPath Interconnect. Energiforbrug, størrelse og pris på den endelige løsning reduceres naturligvis ikke af alt dette. Høj integration af komponenter bør komme til undsætning - kredsløb, der udfører dele af et parallelt program, skal bringes tættere på hinanden, helst på én chip. Med andre ord bør én processor organisere flere kerner, identiske med hinanden i alt, men arbejder selvstændigt.

De første multi-core IA-32-processorer fra Intel blev introduceret i 2005. Siden da er det gennemsnitlige antal kerner på server, desktop og nu mobile platforme vokser støt.

I modsætning til to single-core processorer på det samme system, der kun deler hukommelse, kan to kerner også dele caches og andre hukommelsesrelaterede ressourcer. Oftest forbliver cachen på første niveau private (hver kerne har sin egen), mens det andet og tredje niveau enten kan deles eller adskilles. Denne systemorganisation giver dig mulighed for at reducere dataleveringsforsinkelser mellem nabokerner, især hvis de arbejder på en fælles opgave.


Mikrografi af en quad-core Intel-processor med kodenavnet Nehalem. Separate kerner, en fælles cache på tredje niveau samt QPI-links til andre processorer og en fælles hukommelsescontroller er tildelt.

Hypertråd

Indtil omkring 2002 var den eneste måde at få et IA-32 system i stand til at køre to eller flere programmer parallelt at bruge multiprocessorsystemer. Intel® Pentium® 4, såvel som Xeon-linjen med kodenavnet Foster (Netburst), introducerede en ny teknologi - hyperthreads eller hyperthreads - Intel® HyperThreading (herefter HT).

Der er ikke noget nyt under solen. HT er særlig situation det man i litteraturen kalder simultane multithreading (SMT). I modsætning til "rigtige" kerner, som er komplette og uafhængige kopier, i tilfælde af HT, er kun en del af de interne knudepunkter, primært ansvarlige for lagring af de arkitektoniske tilstandsregistre, duplikeret i én processor. De executive noder, der er ansvarlige for at organisere og behandle data, forbliver enkeltstående, og bruges til enhver tid af højst en af ​​trådene. Ligesom kerner deler hyperthreads caches, men fra hvilket niveau afhænger af det specifikke system.

Jeg vil ikke forsøge at forklare alle fordele og ulemper ved SMT-design i almindelighed og HT-design i særdeleshed. Den interesserede læser kan finde en ganske detaljeret diskussion af teknologien i mange kilder, og selvfølgelig på Wikipedia. Jeg vil dog bemærke følgende vigtigt punkt, der forklarer de nuværende grænser for antallet af hypertråde i produktionen i den virkelige verden.

Trådbegrænsninger
I hvilke tilfælde er tilstedeværelsen af ​​"uretfærdige" multikerner i form af HT berettiget? Hvis en applikationstråd ikke er i stand til at indlæse alle udførelsesnoder inde i kernen, så kan de "lånes" til en anden tråd. Dette er typisk for applikationer, der har " flaskehals” ikke i beregninger, men i dataadgang, det vil sige ofte generere cache-misser og at skulle vente på at data bliver leveret fra hukommelsen. I løbet af denne tid vil kernen uden HT blive tvunget til tomgang. Tilstedeværelsen af ​​HT giver dig mulighed for hurtigt at skifte frie eksekverende noder til en anden arkitektonisk tilstand (da den er duplikeret) og udføre dens instruktioner. Dette er et særligt tilfælde af en teknik kaldet latency hiding, når en lang operation, hvor nyttige ressourcer er inaktive, maskeres af parallel udførelse af andre opgaver. Hvis applikationen allerede har høj grad udnyttelse af kerneressourcer, vil tilstedeværelsen af ​​hypertråde ikke tillade acceleration - "ærlige" kerner er nødvendige her.

Typiske scenarier for desktop- og serverapplikationer designet til maskinarkitekturer generelle formål, har potentialet for parallelisme aktiveret af HT. Dette potentiale bliver dog hurtigt brugt op. Måske af denne grund overstiger antallet af hardware-hyperthreads på næsten alle IA-32-processorer ikke to. I typiske scenarier ville gevinsten ved at bruge tre eller flere hyperthreads være lille, men tabet i formstørrelse, strømforbrug og omkostninger er betydeligt.

En anden situation observeres i typiske opgaver udført på videoacceleratorer. Derfor er disse arkitekturer karakteriseret ved brugen af ​​SMT-teknologi med et større antal tråde. Da Intel® Xeon Phi-coprocessorer (introduceret i 2010) ideologisk og genealogisk er ret tæt på videokort, kan de have fire hyperthreading på hver kerne - en konfiguration unik for IA-32.

Logisk processor

Af de tre beskrevne "niveauer" af parallelitet (processorer, kerner, hypertråde) kan nogle eller endda alle mangle i et bestemt system. Dette påvirkes af BIOS-indstillinger (multi-core og multithreading er deaktiveret uafhængigt), mikroarkitekturfunktioner (f.eks. var HT fraværende fra Intel® Core™ Duo, men blev bragt tilbage med udgivelsen af ​​Nehalem) og systemhændelser (multi- processorservere kan lukke fejlbehæftede processorer ned, hvis der opdages fejl og fortsætte med at "flyve" på de resterende). Hvordan er denne multi-level zoo af samtidighed synlig for operativsystemet og i sidste ende for applikationsapplikationer?

Yderligere, for nemheds skyld, angiver vi antallet af processorer, kerner og tråde i et bestemt system med tre ( x, y, z), Hvor x er antallet af processorer, y- antallet af kerner i hver processor, og z- antal hypertråde i hver kerne. Fra nu af vil jeg kalde dette tre topologi- et etableret udtryk, der ikke har meget at gøre med grenen af ​​matematik. Arbejde s = xyz definerer antallet af kaldede enheder logiske processorer systemer. Den definerer det samlede antal uafhængige ansøgningsproceskontekster i et system med delt hukommelse eksekvere parallelt, hvilket styresystemet er tvunget til at tage hensyn til. Jeg siger "tvungen", fordi den ikke kan kontrollere udførelsesrækkefølgen af ​​to processer på forskellige logiske processorer. Dette gælder også for hypertråde: Selvom de kører "sekventielt" på den samme kerne, er den specifikke rækkefølge dikteret af hardwaren og kan ikke observeres eller kontrolleres af programmer.

Oftest skjuler operativsystemet for slutapplikationer funktionerne i den fysiske topologi af det system, det kører på. For eksempel de følgende tre topologier: (2, 1, 1), (1, 2, 1) og (1, 1, 2) - OS vil repræsentere to logiske processorer, selvom den første af dem har to processorer, anden - to kerner, og den tredje - kun to tråde.


Windows Task Manager viser 8 logiske processorer; men hvor meget er det i processorer, kerner og hypertråde?


Linux toppen viser 4 logiske processorer.

Dette er ret praktisk for applikationsskabere - de behøver ikke at håndtere hardwarefunktioner, der ofte er ligegyldige for dem.

Software definition af topologi

Selvfølgelig skaber abstrahering af topologien til et enkelt antal logiske processorer i nogle tilfælde nok grund til forvirring og misforståelser (i ophedede internettvister). Computerapplikationer, der ønsker at presse maksimal ydeevne ud af hardware, kræver detaljeret kontrol over, hvor deres tråde vil blive placeret: tættere på hinanden på tilstødende hypertråde eller omvendt længere væk på forskellige processorer. Hastigheden af ​​kommunikation mellem logiske processorer inden for den samme kerne eller processor er meget højere end hastigheden af ​​dataoverførsel mellem processorer. Muligheden for heterogenitet i organiseringen af ​​arbejdshukommelsen komplicerer også billedet.

Information om topologien af ​​systemet som helhed samt positionen af ​​hver logisk processor i IA-32 er tilgængelig ved hjælp af CPUID-instruktionen. Siden fremkomsten af ​​de første multiprocessorsystemer er det logiske processoridentifikationssystem blevet udvidet flere gange. Til dato er dens dele indeholdt i ark 1, 4 og 11 af CPUID. Hvilket ark der skal ses på, kan afgøres ud fra følgende rutediagram taget fra artiklen:

Jeg vil ikke kede dig her med alle detaljerne i de enkelte dele af denne algoritme. Hvis der er interesse, kan næste del af denne artikel vies til dette. Jeg vil henvise den interesserede læser til, som undersøger dette spørgsmål så detaljeret som muligt. Her vil jeg først kort beskrive, hvad APIC er, og hvordan det forholder sig til topologi. Dernæst vil vi se på arbejdet med ark 0xB (elleve in decimal), som i øjeblikket er det sidste ord i "apico-building".

APIC ID
Local APIC (avanceret programmerbar interrupt controller) er en enhed (nu en del af processoren), der er ansvarlig for at håndtere afbrydelser, der kommer til en specifik logisk processor. Hver logisk processor har sin egen APIC. Og hver af dem i systemet skal have unik værdi APIC ID. Dette nummer bruges af interrupt-controllere til adressering ved levering af meddelelser og af alle andre (f.eks. operativsystemet) til at identificere logiske processorer. Specifikationen for denne interrupt controller har udviklet sig fra Intel 8259 PIC gennem Dual PIC, APIC og xAPIC til x2APIC.

I øjeblikket har bredden af ​​nummeret, der er gemt i APIC ID'et, nået hele 32 bit, selvom det tidligere var begrænset til 16 og endnu tidligere - kun 8 bit. I dag er rester af gamle dage spredt ud over CPUID'et, men CPUID.0xB.EDX returnerer alle 32 bits af APIC ID'et. På hver logisk processor, der uafhængigt udfører CPUID-instruktionen, vil en anden værdi blive returneret.

Afklaring af familiebånd
APIC ID-værdien i sig selv fortæller dig ikke noget om topologien. For at finde ud af, hvilke to logiske processorer der er placeret inde i en fysisk processor (dvs. de er "brødre" hypertråde), hvilke to der er inde i den samme processor, og hvilke der er helt forskellige processorer, skal du sammenligne deres APIC ID-værdier. Afhængigt af graden af ​​forholdet vil nogle af deres bits falde sammen. Disse oplysninger er indeholdt i CPUID.0xB underlister, som er operandkodet i ECX. Hver af dem beskriver positionen af ​​bitfeltet for et af topologiniveauerne i EAX (mere præcist antallet af bit, der skal flyttes til højre i APIC ID'et for at fjerne de lavere topologiniveauer), samt type af dette niveau - hypertråd, kerne eller processor - i ECX.

Logiske processorer placeret inde i den samme kerne vil have de samme alle APIC ID-bits, undtagen dem, der tilhører SMT-feltet. For logiske processorer placeret i den samme processor, alle bits undtagen Core- og SMT-felterne. Da antallet af underark til CPUID.0xB kan stige, denne ordning vil give os mulighed for at understøtte beskrivelsen af ​​topologier med et større antal niveauer, hvis behovet opstår i fremtiden. Desuden vil det være muligt at indføre mellemniveauer mellem eksisterende.

En vigtig konsekvens af tilrettelæggelsen af ​​denne ordning er, at der kan være "huller" i sættet af alle APIC ID'er for alle logiske processorer i systemet, dvs. de vil ikke gå sekventielt. For eksempel i multi-core processor med HT slået fra, kan alle APIC ID'er vise sig at være lige, da den mindst signifikante bit, der er ansvarlig for indkodning af hypertrådnummeret, altid vil være nul.

Jeg bemærker, at CPUID.0xB ikke er den eneste kilde til information om logiske processorer, der er tilgængelige for operativsystemet. En liste over alle tilgængelige processorer, sammen med deres APIC ID-værdier, er kodet i MADT ACPI-tabellen.

Operativsystemer og topologi

Operativsystemer giver information om topologien af ​​logiske processorer til applikationer, der bruger deres egne grænseflader.

I Linux information Topologiinformationen er indeholdt i /proc/cpuinfo-pseudofilen såvel som i outputtet af dmidecode-kommandoen. I eksemplet nedenfor filtrerer jeg indholdet af cpuinfo på et eller andet quad-core system uden HT, og efterlader kun poster relateret til topologien:

Skjult tekst

ggg@shadowbox:~$ kat /proc/cpuinfo |grep "processor\|fysisk\ id\|søskende\|kerne\|kerner\|apicid" processor: 0 fysisk id: 0 søskende: 4 kerne-id: 0 cpu-kerner: 2 apicid: 0 initial apicid: 0 processor: 1 fysisk id: 0 søskende: 4 core id: 0 cpu cores: 2 apicid: 1 initial apicid: 1 processor: 2 fysisk id: 0 søskende: 4 core id: 1 cpu cores: 2 apicid: 2 initial apicid: 2 processor: 3 fysisk id: 0 søskende: 4 core id: 1 cpu kerner: 2 apicid: 3 initial apicid: 3

På FreeBSD rapporteres topologien via sysctl-mekanismen i kern.sched.topology_spec-variablen som XML:

Skjult tekst

bruger@vært:~$ 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 TRÅD gruppeSMT gruppe 2, 3 TRÅD gruppeSMT gruppe 4, 5 TRÅD gruppeSMT gruppe 6, 7 TRÅD gruppeSMT gruppe

I MS Windows 8 kan topologioplysninger ses i Task Manager.

Hej alle! Nogle gange virker et spil eller program ikke på fuld kraft, fordi Ikke alle kerner er ansvarlige for ydeevne. I denne artikel vil vi se på, hvordan du bruger alle kernerne i din processor.

Men vent ikke tryllestav, fordi Hvis et spil eller program ikke understøtter multi-cores, så kan der ikke gøres noget, medmindre du omskriver applikationen igen.

Hvordan kører man alle processorkerner?

Så der vil være flere måder. Det er derfor, jeg viser først.

Gå til start - løb eller vind + r nøgler

Vælg dit maksimale antal processorer.

  • Gå til opgavehåndteringen - ctrl+shift+esc.
  • Eller ctrl+alt+del og task manager.
  • Eller højreklik på kontrolpanelet og vælg Jobliste.

Gå til fanen processer. Find spillet og højreklik på processen. Forresten, spillet skal køre. Du kan skjule den enten Win+D eller alt+tab.

Vælg sæt match.

Vælg alle og klik på OK.

For at se, om alle kerner fungerer eller ej, skal du gå til fanen ydeevne i opgavehåndteringen.

Der vil være et diagram i alle faner.

Hvis ikke, så klik igen for at indstille korrespondancen, lad kun CPU 0 stå, klik ok. Luk task manager, åbn den igen, gentag det samme, vælg alle processorer og klik på OK.

På bærbare computere er strømbesparelse nogle gange konfigureret på en sådan måde, at indstillingerne ikke tillader, at alle kerner bruges.

  • Win7 - Gå til kontrolpanelet, gå til strømindstillinger - Skift planindstillinger - skift Ekstra muligheder strømforsyning—processorstrømstyring—minimum processortilstand.
  • Win8, 10 - Eller: Indstillinger - System - Strøm og dvale - Avancerede strømindstillinger - Konfigurer strømplan - Skift avancerede strømindstillinger - Processorstrømstyring - Minimum processorstatus

For fuld brug skal det være 100 %.

Hvordan kontrollerer man, hvor mange kerner der kører?

Vi starter den og ser antallet af aktive kerner.

Forveksle ikke denne parameter med antallet af virtuelle processorer, som vises til højre.

Hvad påvirker antallet af processorkerner?

Mange mennesker forveksler begrebet antal kerner og processorfrekvens. Hvis vi sammenligner dette med en person, så er hjernen en processor, neuroner er kerner. Kerner fungerer ikke i alle spil og applikationer. Hvis et spil for eksempel kører 2 processer, den ene tegner en skov og den anden en by, og spillet er multi-core, så behøver du kun 2 kerner for at indlæse dette billede. Og hvis spillet har flere processer, så bruges alle kernerne.

Og det kan være omvendt: et spil eller en applikation kan skrives på en sådan måde, at kun én kerne kan udføre én handling, og i denne situation vil processoren med den højere frekvens og den mest velbyggede arkitektur vinde (normalt af denne grund).

Hvad er forskellene mellem quad-core og octa-core smartphone-processorer? Forklaringen er ret enkel. Otte-kerne chips har dobbelt så meget processorkerner end i quad-core. Ved første øjekast virker en otte-core processor dobbelt så kraftig, ikke? I virkeligheden sker der ikke noget lignende. For at forstå, hvorfor en processor med otte kerner ikke fordobler ydeevnen af ​​en smartphone, kræves der en forklaring. er allerede ankommet. Otte-core processorer, som man først for nylig kunne drømme om, bliver stadig mere udbredt. Men det viser sig, at deres opgave ikke er at øge enhedens ydeevne.

Quad- og otte-core processorer. Ydeevne

Udtrykkene "octa-core" og "quad-core" afspejler selv antallet af CPU-kerner.

Men den vigtigste forskel mellem disse to typer processorer er i det mindste fra 2015 - består af metoden til installation af processorkerner.

Med en quad-core processor kan alle kerner arbejde samtidigt for at muliggøre hurtig og fleksibel multitasking, jævnere 3D-spil, hurtigere kameraydeevne og meget mere.

Moderne otte-core-chips består til gengæld ganske enkelt af to quad-core-processorer, der fordeler forskellige opgaver indbyrdes afhængigt af deres type. Oftest indeholder en otte-kernet chip et sæt af fire kerner med en lavere clockhastighed end det andet sæt. Hvornår skal man optræde vanskelig opgave, er det selvfølgelig overtaget af en hurtigere processor.


Et mere præcist udtryk end "octa-core" ville være "dual quad-core." Men det lyder ikke så rart og er ikke egnet til markedsføringsformål. Det er derfor, disse processorer kaldes otte-kerne.

Hvorfor har vi brug for to sæt processorkerner?

Hvad er grunden til at kombinere to sæt processorkerner, der overfører opgaver til hinanden, i én enhed? For at sikre energieffektivitet.

En mere kraftfuld CPU bruger mere strøm, og batteriet skal oplades oftere. Og batterier er et meget svagere led i en smartphone end processorer. Som et resultat, jo mere kraftfuld smartphone-processoren er, jo mere rummeligt batteri han har brug for det.

Til de fleste smartphone-opgaver har du dog ikke brug for så høj computerydeevne, som du kan levere moderne processor. Navigering mellem startskærme, kontrol af beskeder og endda webnavigation er mindre processorkrævende opgaver.

Men HD-video, spil og arbejde med billeder er sådanne opgaver. Derfor er processorer med otte kerner ret praktiske, selvom denne løsning næppe kan kaldes elegant. Mere svag processor varetager mindre ressourcekrævende opgaver. Mere kraftfuld - mere ressourcekrævende. Som et resultat er det samlede strømforbrug reduceret i forhold til den situation, hvor kun en processor med en høj clockfrekvens ville klare alle opgaver. Således løser den dobbelte processor primært problemet med at øge energieffektiviteten frem for ydeevnen.

Teknologiske egenskaber

Alle moderne processorer med otte kerner er baseret på ARM-arkitekturen, den såkaldte big.LITTLE.

Denne otte-kerne big.LITTLE-arkitektur blev annonceret i oktober 2011 og tillod fire lavtydende Cortex-A7-kerner at arbejde sammen med fire højtydende Cortex-A15-kerner. ARM har gentaget denne tilgang hvert år siden og tilbyder mere kapable chips til begge sæt processorkerner på otte-kerne-chippen.

Nogle af de store chipproducenter til mobile enheder fokuserede deres indsats på denne "octa-core" store.LILLE prøve. En af de første og mest bemærkelsesværdige var dens egen chip Samsung, berømte Exynos. Dens otte-kerne model er blevet brugt siden Samsung Galaxy S4, i hvert fald i nogle versioner af virksomhedens enheder.

For nylig begyndte Qualcomm også at bruge big.LITTLE i sine otte-kernede Snapdragon 810 CPU-chips. Det er på denne processor, at så velkendte nye produkter på smartphone-markedet er baseret, såsom G Flex 2, der blev til LG.

I begyndelsen af ​​2015 introducerede NVIDIA Tegra X1, en ny superydelse mobil processor, som virksomheden har til hensigt til bilcomputere. X1's hovedfunktion er dens konsoludfordrende GPU, som også er baseret på den store.LILLE arkitektur. Det vil sige, at den også bliver otte-kerne.

Er der stor forskel på almindelig bruger?

Er der stor forskel på en quad-core og en otte-core smartphone-processor for den gennemsnitlige bruger? Nej, faktisk er den meget lille, siger Jon Mandi.

Udtrykket "octa-core" er noget forvirrende, men det betyder faktisk duplikering af quad-core processorer. Resultatet er to uafhængigt fungerende quad-core sæt, kombineret til én chip for at forbedre energieffektiviteten.

Er der brug for en processor med otte kerner i enhver moderne smartphone? Der er ikke noget sådant behov, mener Jon Mundy og nævner eksemplet med Apple, som sikrer en anstændig energieffektivitet af sine iPhones med kun en dual-core processor.

Således er den otte-kernede ARM big.LITTLE arkitektur en af mulige løsninger Et af de vigtigste spørgsmål vedrørende smartphones er batterilevetiden. Ifølge John Mundy, så snart en anden løsning på dette problem er fundet, vil trenden med at installere to quad-core sæt i én chip og lignende løsninger stoppe.

Kender du andre fordele ved octa-core smartphone-processorer?

Artiklen bliver løbende opdateret. Sidste ændring 10.10.2013 r.

I øjeblikket udvikler processormarkedet sig så dynamisk, at det simpelthen er umuligt at følge med i alle de nye produkter og følge med fremskridtene.
Men vi har ikke rigtig brug for dette.
For at købe en processor er det nok for os at vide, hvad computeren skal bruge til, hvilke opgaver den skal udføre, og hvor mange penge vi er villige til at bruge.

I dag er de fortjente ledere af processormarkedet to største virksomheder Intel Og AMD.
De tilbyder bredeste udvalg modeller af enhver priskategori. Og sådan et valg af processorer får mine øjne helt op.
Og vi vil forsøge at hjælpe dig med at finde ud af det, så du kan vælge og købe en produktiv processor til rimelige penge.

Lad os starte med det faktum, at de vigtigste præstationsindikatorer for processoren er:

1) Processorarkitektur. Den nye arkitektur vil trods alt altid være mere produktiv end den forrige (på trods af samme frekvens).
2) Driftsfrekvens. Jo højere processorfrekvensen er, jo mere produktiv er den.
3) størrelsen af ​​cachehukommelsen for det andet og tredje niveau (L2 og L3);

Nå, og de sekundære indikatorer:
4) ;
5) teknologisk proces;
6) et sæt instruktioner;
og osv.

Selvom nu ressourcestærke konsulenter i butikkerne forsøger at fokusere mere på antallet af kerner, forbinder antallet af kerner direkte med databehandlingshastigheden og selve computerens ydeevne.

Antal kerner?

I dag er otte-, seks-, fire-, dual- og single-core processorer fra AMD, samt seks-, fire-, to-, single-core fra INTEL.
Men til nutidens programmer og hjemmegamerens behov er en dual- eller quad-core processor, der opererer ved en høj frekvens, tilstrækkelig.
En processor med et stort antal kerner (6-8) vil kun være nødvendig for programmer til kodning af video- og lydindhold, billedgengivelse og arkivering.

I øjeblikket er optimering i spilindustrien hovedsageligt fokuseret på dual-core processorer; kun den nyeste software og spil vil blive udviklet til multi-threaded computing. Så hvis du køber en processor til gaming, vil en højfrekvent dual-core processor være hurtigere end en lavfrekvent, tre- eller fire-core processor.

Opmærksomhed! Du har ikke tilladelse til at se skjult tekst.


Og det viste sig, at spillere indtil videre kan vælge en moderne dual-core processor og vælge en løsning med et passende forhold mellem ydeevne og pris.
Det er værd at overveje, at Intel-chips også har HyperThreading-teknologi, som gør det muligt at udføre to parallelle opgaver på hver kerne. operativ system ser 2-core processorer som quad-core og 4-core som otte-core.
Processorer med et stort antal kerner kan være efterspurgt hovedsageligt i professionelle applikationer og videokodning.
Otte/seks kerner er endnu ikke fuldt ud i stand til at indlæse noget spil.

Lad os opsummere lidt om kernerne.

For en kontorcomputer vil en dual-core processor i den lavere prisklasse være nok.
Som Pentium, Celeron fra Intel eller A4, AthlonII X2 fra AMD.

Til en hjemmegamingcomputer kan du købe en dual-core Intel-processor øget frekvens eller quad-core processor fra AMD.
Type Core i3, Core i5 med en frekvens på 3 GHz Intel eller A8, A10, Phenom™ II X4 med en frekvens på 3 GHz AMD.

Nå, for de "ladede" arbejdsstation eller et hi-end gaming system har brug for en god ny generation af quad-core processor.
Ligesom Core i5, Core i7 fra Intel, da AMD-processorer meget sjældent bruges i højtydende maskiner.

Vi læser om Core i3, Core i5 og Core i7 processorer i artiklen:

CPU ydeevne?

Som nævnt ovenfor er det vigtigt parameteren er arkitekturen, som processoren er baseret/implementeret på. Hvordan nyere arkitektur, jo hurtigere viser processoren sig selv i applikationer og spil. Da enhver efterfølgende arkitektur, uanset om det er Intel eller AMD, altid vil være mere produktiv end den forrige.
I øjeblikket er processorer af familien relevante Haswell(4. generation) og Ivy Bridge(3. generation), samt processorarkitekturer Rambuk Richland familie, Trinity fra AMD.

Også CPU-ydelse afhænger af dens driftsfrekvens. Jo højere driftsfrekvens, jo mere produktiv er processoren. Den aktuelle driftsfrekvens for kernerne er i øjeblikket fra 3 GHz og højere.
Men når man sammenligner AMD- og INTEL-processorer med det samme ur frekvens, betyder ikke, at de er ens i ydeevne.
Arkitektoniske funktioner gør det muligt for INTEL-processorer at vise højere produktivitet selv ved lavere frekvenser end deres konkurrenter.

Bemærk: du kan ikke blot tilføje frekvensen af ​​to kerner. Defineret som to kerner ved XX GHz.

Endnu en parameter ydeevne er størrelsen, volumen, ultrahurtig cachehukommelse på andet og tredje niveau L2 og L3.
Dette er hukommelse med høj adgang designet til at fremskynde adgangen til data, der behandles af processoren.
Jo større cachehukommelse, jo højere ydeevne.

Bemærk: Core 2 Duo, Core 2 Quad har kun L2, Core i5, Core i7 har L2+L3-processorer AMD Athlon™ II X2 har kun L2, Phenom™ II X4 har L2+L3.

For tidligere Core 2'ere var indikatoren processorens FSB-frekvens. Busfrekvensen, hvorigennem processoren kommunikerer med RAM.
Jo højere FSB-frekvens, jo højere processorydelse.

Bemærk: Kerneprocessorer i3, Core i5 og Core i7 fra Intel har ikke systembus FSB, som i de nyeste AMD-processorer, overfører data mellem hukommelse og processor direkte.
Denne metode til dataoverførsel øgede produktiviteten markant.
Processorer i Core i7 LGA1366-familien har heller ikke en FSB-bus, men har en højhastigheds-QPI-bus.

Teknologisk proces(processordesignstandard) bestemmer primært den strukturelle størrelse af de elementer, der udgør processoren.
Især varmeafgivelsen og strømforbruget af moderne processorer afhænger af fremstillingsprocessen.
Jo mindre denne værdi (teknologisk proces), jo mindre varme genererer processoren og jo mindre energi forbruger den.
Tidligere Core 2-processorer blev lavet ved hjælp af 45-65 nm teknologier. Nyere Haswell og Ivy Bridge Corei3, Corei5, Core i7 fjerde og tredje generation 22 nm, Sandy Bridge® Corei3, Corei5, anden generation Core i7 fra Intel og Bulldozer fra AMD er lavet ved hjælp af 32 nm teknologi.

Sæt med instruktioner- dette er et sæt kontrolkoder og dataadresseringsmetoder, der er acceptable for processoren. Systemet med sådanne kommandoer er strengt forbundet med en bestemt type processor.
Jo bredere processorens instruktionssæt er, jo bedre og hurtigere behandles dataene.

Bokskonfiguration (BOX) eller bakke (bakke/OEM)?

Box (BOX) udstyr er et sæt:
- selve processoren;
- køler med påført termisk pasta (radiator + ventilator);
- instruktioner og dokumentation.

Et karakteristisk træk ved BOX-pakken er den udvidede garanti på processoren - 3 år.
Det er bedre at købe BOX-processorer til kontor- og hjemme-multimediesystemer, hvor der ikke er planer om at ændre kølingen til en mere effektiv.
Men BOX-processorer er lidt dyrere end de samme TRAY.

Bakkeprocessor (bakke/OEM) repræsenterer kun processoren. Ingen køler eller dokumenter.

I modsætning til BOX er garantien for Tray-processoren kun 1 år.
Bakke/OEM-processorer bruges af virksomheder, der samler færdige mærkecomputere. Og også entusiastiske gamere-overclockere, for hvem garantien (efter overclocking fjernes garantien fra produktet) og native køling er ikke vigtige. En mere effektiv installeres straks på processoren.
Bakkeprocessorer er lidt billigere.

Intel eller AMD?

Der har altid været heftig debat om dette emne på fora og konferencer. Generelt er dette emne evigt. Intel-tilhængere vil hævde, at disse processorer er bedre end konkurrenterne på alle måder. Og omvendt. Jeg er selv tilhænger af Intel.

Hvis vi sammenligner processorer fra disse to virksomheder med samme frekvens og antal kerner, så vil Intel-processorer være mere produktive. I prisklassen har AMD dog fordelen.

Hvis du samler et budgetsystem til dig selv med minimal økonomi, så er AMD-processorer dit valg. Hvis du har en gaming eller produktivitet computersystem, så bør valget tages til fordel for Intel.

Der er en pointe mere: Bundkort til Intel-processorer er også dyrere, og AMD-platformen er tilsvarende billigere. Når du vælger en processor til din pc, skal du beslutte dig for de indledende prioriteter, samle billigt system på AMD eller mere produktiv, men dyrere baseret på Intel.

Hver virksomhed har mange processormodeller i sit sortiment, lige fra budgetmodeller, for eksempel Celeron fra Intel og Sempron/Duron fra AMD, til top-end Core i7 fra Intel, A10 fra AMD.

I forskellige applikationer Resultaterne er ret forskellige, så i nogle AMD-processorer vinder, i andre - Intel, så valget er altid op til brugeren.

AMD har kun én ting ubestridelig fordel- dette er prisen. Og en ulempe er, at AMD-processorer ikke er så strukturelt pålidelige og er lidt varmere.

Intel har også en fordel - processorer er mere strukturelt pålidelige og stabile, og også mindre varme. Ulempe: prisen er højere end en konkurrents.

At dømme efter aktuelle tests spilydelse processorer mellem INTEL og AMD ser sådan ud:




Lad os opsummere:

Dette betyder, at for at købe den mest produktive gaming processor til en computer skal du vælge en processor med:
1) den nyeste arkitektur;
2) maksimal frekvens kerner (helst 3 GHz og højere);
3) maksimal L2/L3-cachestørrelse;
4) et stort sæt tilgængelige instruktioner;
5) minimal fremstillingsproces.

Efter at have læst denne artikel, tror jeg, at alle vil være i stand til at bestemme, hvilken processor de skal købe til deres computer.
Man kan altid købe processorer for mange penge, men hvis der kun udføres hverdagsopgaver, der ikke kræver meget regnekraft, på computeren, er pengene spildt.

Jeg fortalte dig, hvorfor væksten i processorfrekvenser er gået i stå med adskillige gigahertz. Lad os nu tale om, hvorfor udviklingen af ​​antallet af kerner i forbrugerprocessorer også er ekstremt langsom: for eksempel dukkede den første ærlige dual-core processor (hvor begge kerner var i én chip), bygget på x86-arkitekturen, allerede i 2006 , 12 år siden - dette var der en lineal Intel Core Duo. Og siden da har 2-core processorer ikke forladt arenaen, desuden udvikler de sig aktivt: for eksempel bare den anden dag Lenovo bærbar med en processor bygget på den nyeste (til x86-arkitektur) 10 nm procesteknologi. Og ja, som du måske har gættet, har denne processor præcis 2 kerner.

For forbrugerprocessorer har antallet af kerner ligget fast på 6 siden 2010 med udgivelsen af ​​linjen AMD Phenom X6 - ja, AMD FX var ikke ærlige 8-core processorer (der var 4 APU'er), ligesom Ryzen 7 er to blokke med 4 kerner placeret side om side på matricen. Og her opstår selvfølgelig spørgsmålet - hvorfor er det sådan? Når alt kommer til alt, har de samme videokort, der i det væsentlige er "enkelthovede" (det vil sige at have 1 skygge) i 1995-6 formået at øge deres antal til flere tusinde nu - for eksempel i Nvidia Titan V er der som mange som 5120 af dem! Samtidig, over en meget længere periode med udvikling af x86-arkitekturen, slog brugerprocessorerne sig på ærlige 6 kerner pr. chip og CPU'er til højtydende pc'er - på 18, det vil sige et par størrelsesordener mindre end dem af videokort. Hvorfor? Vi vil tale om dette nedenfor.

CPU arkitektur

Oprindeligt blev alle Intel x86-processorer bygget på CISC-arkitekturen (Complex Instruction Set Computing, processorer med et komplet sæt instruktioner) - det vil sige, de implementerede det maksimale antal instruktioner "til alle lejligheder". På den ene side er dette fantastisk: for eksempel var CPU'en i 90'erne ansvarlig for både billedgengivelse og endda lyd (der var et life hack - hvis spillet er langsomt, kan det hjælpe at slukke for lyden i det). Og allerede nu er processoren en slags mejetærsker, der kan alt - og det er også et problem: at parallelisere en tilfældig opgave på tværs af flere kerner er ikke en triviel opgave. Lad os sige, at med to kerner kan du gøre det ganske enkelt: vi "hænger" systemet på en kerne, og det er det baggrundsopgaver, på den anden side - kun ansøgningen. Dette vil altid fungere, men ydelsesforøgelsen vil langt fra være det dobbelte, som normalt baggrundsprocesser kræver væsentligt færre ressourcer end den nuværende tunge opgave.

Venstre - GPU diagram Nvidia GTX 980 Ti, hvor du kan se 2816 CUDA-kerner kombineret i klynger. Til højre er et foto af krystallen. AMD processor Ryzen, hvor 4 store kerner er synlige.

Lad os nu forestille os, at vi ikke har to, men 4 eller endda 8 kerner. Ja, i arkivering og andre beregningsopgaver fungerer parallelisering godt (og det er derfor, de samme serverprocessorer kan have flere dusin kerner). Men hvad nu hvis vi har en opgave med et tilfældigt udfald (som desværre er flertallet) - f.eks. et spil? Når alt kommer til alt, afhænger hver ny handling helt af spilleren, så at "sprede" en sådan belastning over flere kerner er ikke en nem opgave, hvorfor udviklere ofte "håndskriver", hvad kernerne gør: for eksempel kan man kun være optaget af behandlingshandlinger kunstig intelligens, en anden kun at være ansvarlig for surround sound, og så videre. Det er næsten umuligt at indlæse selv en 8-core processor på denne måde, hvilket er hvad vi ser i praksis.

Med videokort er alt enklere: GPU'en beskæftiger sig faktisk med beregninger og kun dem, og antallet af typer beregninger er begrænset og lille. Derfor er det for det første muligt at optimere selve computerkernerne (Nvidia kalder dem CUDA) specifikt til de påkrævede opgaver, og for det andet en gang alt mulige opgaver er kendt, så forårsager processen med at parallelisere dem ikke vanskeligheder. Og for det tredje udføres kontrol ikke af individuelle shaders, men af ​​computermoduler, som omfatter 64-192 shaders, derfor stort antal shaders er ikke et problem.

Energiforbrug

En af grundene til at opgive yderligere frekvenskapløb er den kraftige stigning i energiforbruget. Som jeg allerede har forklaret i artiklen om afvækst CPU frekvenser, er processorens varmeafledning proportional med terningen af ​​frekvensen. Med andre ord, hvis med en frekvens på 2 GHz processor afgiver 100 W varme, som i princippet kan fjernes uden problemer luftkøler, så får du ved 4 GHz 800 W, som i bedste fald kan fjernes med et fordampningskammer med flydende nitrogen (selvom man skal huske på, at formlen stadig er omtrentlig, og processoren har ikke kun computerkerner, men du kan få rækkefølgen af ​​numre ved at bruge det meget muligt).

Derfor var det en glimrende løsning at øge bredden: så groft sagt vil en dual-core 2 GHz processor forbruge 200 W, men en single-core 3 GHz processor vil forbruge næsten 340 W, det vil sige, at gevinsten i varmeafledning er mere end 50 %, mens en lavfrekvent dual-core CPU i opgaver med god optimering til multi-threading stadig vil være hurtigere end en højfrekvent single-core.


Et eksempel på et fordampningskammer med flydende nitrogen til køling af ekstremt overclockede CPU'er.

Det ser ud til, at dette er en bonanza, vi laver hurtigt en 10-core processor med en frekvens på 1 GHz, som kun vil generere 25% mere varme end en single-core CPU med 2 GHz (hvis en 2 GHz processor genererer 100 W varme, derefter 1 GHz - kun 12,5 W, 10 kerner - omkring 125 W). Men her løber vi hurtigt ind i, at ikke alle opgaver er godt paralleliseret, så i praksis vil det ofte vise sig, at en meget billigere single-core CPU med 2 GHz vil være væsentlig hurtigere end en meget dyrere 10-core CPU med 1 GHz. Men der er stadig sådanne processorer - i serversegmentet, hvor der ikke er problemer med parallelisering af opgaver, og en 40-60 core CPU med frekvenser på 1,5 GHz viser sig ofte at være mange gange hurtigere end 8-10 core processorer med frekvenser på 4 GHz, mens den tildeler en sammenlignelig mængde varme.

Derfor er CPU-producenter nødt til at sikre, at enkelt-trådet ydeevne ikke lider, når kerner vokser, og under hensyntagen til det faktum, at varmespredningsgrænsen i en typisk hjemme-pc er blevet "fundet" for ret lang tid siden (dette er omkring 60 -100 W), der er måder at øge antallet af kerner på med den samme single-core ydeevne og den samme varmeafledning, der er kun to muligheder: dette er enten for at optimere selve processorarkitekturen, øge dens ydeevne pr. clock-cyklus, eller for at reducere den tekniske proces. Men ak, begge går langsommere og langsommere frem: over mere end 30 års eksistens af x86-processorer, er næsten alt, hvad der er muligt, allerede blevet "poleret", så stigningen er i bedste fald 5% pr. generation, og reducerer det tekniske processen bliver stadig sværere på grund af grundlæggende problemer med at skabe korrekt fungerende transistorer (med dimensioner på ti nanometer, kvanteeffekter begynder allerede at påvirke, det er vanskeligt at producere en passende laser osv.) - derfor, desværre, øge antallet af kerner er stadig sværere.

Krystal størrelse

Hvis vi ser på området for processorchips for 15 år siden, vil vi se, at det kun var omkring 100-150 kvadratmillimeter. For omkring 5-7 år siden "voksede" spåner til 300-400 sq mm og ... processen stoppede praktisk talt. Hvorfor? Alt er enkelt - for det første er det meget vanskeligt at producere gigantiske krystaller, hvorfor antallet af defekter stiger kraftigt, og derfor de endelige omkostninger ved CPU'en.

For det andet øges skrøbeligheden: En stor krystal kan meget let spalte, og dens forskellige kanter kan opvarmes forskelligt, hvilket igen kan forårsage fysisk skade.


Sammenligning af Intel Pentium 3 og Core i9 krystaller.

Og for det tredje introducerer lysets hastighed også sin egen begrænsning: ja, selvom den er høj, er den ikke uendelig, og med store krystaller kan dette introducere en forsinkelse eller endda gøre processorens drift umulig.

Til sidst maksimal størrelse Krystallen er stoppet ved omkring 500 sq mm, og det er usandsynligt, at den vokser længere - derfor, for at øge antallet af kerner, skal du reducere deres størrelser. Det ser ud til, at Nvidia eller AMD var i stand til at gøre dette, og deres GPU'er har tusindvis af shaders. Men her skal det forstås, at shaders ikke er fuldgyldige kerner - for eksempel har de ikke deres egen cache, men kun en fælles, plus "skærpning" til visse opgaver gjorde det muligt at "smide ud" alt unødvendigt fra dem, hvilket igen påvirkede deres størrelse. Og CPU'en har ikke kun fuldgyldige kerner med sin egen cache, men ofte er grafik og forskellige controllere placeret på den samme krystal - så i sidste ende, igen, næsten den eneste måde at øge antallet af kerner med samme krystalstørrelse er den samme optimering og den samme reduktion af den tekniske proces, og de, som jeg allerede skrev, går langsomt.

Driftsoptimering

Lad os forestille os, at vi har et team af mennesker, der udfører forskellige opgaver, hvoraf nogle kræver arbejde af flere personer på samme tid. Hvis der er to personer i det, vil de være i stand til at blive enige og arbejde effektivt. Fire er sværere, men arbejdet vil også være ret effektivt. Hvad hvis der er 10 eller endda 20 personer? Her har vi allerede brug for nogle kommunikationsmidler mellem dem, ellers vil der være "forvridninger" i arbejdet, når nogen ikke har travlt med noget. I Intel-processorer er dette kommunikationsmiddel en ringbus, som forbinder alle kerner og giver dem mulighed for at udveksle information med hinanden.

Men selv dette hjælper ikke: for eksempel ved de samme frekvenser, 10-core og 18-core processorer fra Intel generation Skylake-X adskiller sig kun i ydeevne med 25-30%, selvom de i teorien burde være så meget som 80%. Årsagen er netop bussen – uanset hvor god den er, vil der stadig være forsinkelser og nedetid, og jo flere kerner, jo værre bliver situationen. Men hvorfor er der så ingen sådanne problemer i videokort? Det er enkelt - hvis processorkernerne kan opfattes som mennesker, der kan udføre forskellige opgaver, så er computerenhederne på videokort mere som robotter på et samlebånd, der kun kan udføre bestemte instruktioner. De behøver i det væsentlige ikke at "enes" - derfor falder effektiviteten langsommere efterhånden som deres antal stiger: for eksempel er forskellen i CUDA mellem 1080 (2560 enheder) og 1080 Ti (3584 enheder) 40% i praksis det er omkring 25-35 %, så er der væsentligt færre tab.


Jo flere kerner, jo dårligere arbejder de sammen, op til nul ydelsesforøgelse, når antallet af kerner stiger.

Derfor er der ikke noget særligt formål med at øge antallet af kerner – stigningen fra hver ny kerne bliver lavere og lavere. Desuden er det ret svært at løse dette problem - du skal udvikle en bus, der gør det muligt at overføre data mellem to vilkårlige kerner med samme forsinkelse. Stjernetopologien er bedst egnet i dette tilfælde - når alle kerner skal forbindes til en hub, men i virkeligheden har ingen endnu lavet en sådan implementering.

Så i sidste ende, som vi ser, er det en ret vanskelig opgave at øge frekvensen og øge antallet af kerner, og spillet er ofte ikke lyset værd. Og i den nærmeste fremtid er det usandsynligt, at noget vil ændre sig alvorligt, da intet bedre end siliciumkrystaller endnu er blevet opfundet.