Vad betyder dual-core? Dual-core eller quad-core processor - vad är skillnaden?

I verkligheten händer inget sådant. För att förstå varför en åttakärnig processor inte fördubblar prestandan hos en smartphone krävs en viss förklaring. Framtiden för smartphone-processorer är nu. Åttakärniga processorer, som man bara nyligen kunde drömma om, blir allt mer utbredda. Men det visar sig att deras uppgift inte är att öka enhetens prestanda.

Dessa förklaringar publicerades i artikeln "Octa-core vs Quad-core: Gör det någon skillnad?" på resurssidor Pålitliga recensioner.

Termerna "octa-core" och "quad-core" speglar själva antalet CPU-kärnor.

Men den viktigaste skillnaden mellan dessa två typer av processorer är hur processorkärnorna är installerade.

Med en fyrkärnig processor kan alla kärnor arbeta samtidigt för att möjliggöra snabb och flexibel multitasking, smidigare 3D-spel, snabbare kameraprestanda och mer.

Moderna åttakärniga chips består i sin tur helt enkelt av två fyrkärniga processorer som fördelar olika uppgifter sinsemellan beroende på typ. Oftast innehåller ett åttakärnigt chip en uppsättning av fyra kärnor med lägre klockhastighet än den andra uppsättningen. När en komplex uppgift måste slutföras tar den snabbare processorn självklart på sig den.

En mer exakt term än "octa-core" skulle vara "dual quad-core". Men det låter inte så trevligt och lämpar sig inte för marknadsföringsändamål. Det är därför dessa processorer kallas åttakärniga.

Varför behöver vi två uppsättningar processorkärnor?

Vad är anledningen till att kombinera två uppsättningar processorkärnor, som överför uppgifter till varandra, i en enhet? För att säkerställa energieffektivitet! Denna lösning är nödvändig för en batteridriven smartphone, men inte för en huvudenhet som ständigt drivs av bilens inbyggda strömförsörjning.

En mer kraftfull CPU förbrukar mer ström och batteriet behöver laddas oftare. Och batterier är en mycket svagare länk i en smartphone än processorer. Som ett resultat, ju kraftfullare smartphone-processorn är, desto mer rymlig batteri behöver den.

Men för de flesta smartphoneuppgifter behöver du inte så hög datorprestanda som en modern processor kan ge. Att navigera mellan hemskärmar, kontrollera meddelanden och till och med webbnavigering är mindre processorintensiva uppgifter.

Men HD-video, spel och att arbeta med foton är sådana uppgifter. Därför är åttakärniga processorer ganska praktiska, även om denna lösning knappast kan kallas elegant. En svagare processor klarar mindre resurskrävande uppgifter. Kraftfullare – mer resurskrävande. Som ett resultat minskar den totala strömförbrukningen jämfört med situationen då endast en processor med hög klockfrekvens skulle klara alla uppgifter. En dubbel processor löser alltså i första hand problemet med att öka energieffektiviteten, inte prestanda.

Tekniska egenskaper

Alla moderna åttakärniga processorer är baserade på ARM-arkitekturen, den så kallade big.LITTLE.

Denna åttakärniga big.LITTLE-arkitektur tillkännagavs i oktober 2011 och tillät fyra lågpresterande Cortex-A7-kärnor att fungera tillsammans med fyra högpresterande Cortex-A15-kärnor. ARM har upprepat detta tillvägagångssätt varje år sedan dess, och erbjuder mer kapabla kretsar för båda uppsättningarna av processorkärnor på det åttakärniga chippet.

Några av de stora tillverkarna av mobila enheter fokuserar sina ansträngningar på detta stora. LILLA "oktakärniga" exempel. En av de första och mest anmärkningsvärda var Samsungs eget chip, den berömda Exynos. Dess åttakärniga modell har använts sedan Samsung Galaxy S4, i åtminstone vissa versioner av företagets enheter.

På senare tid började Qualcomm också använda big.LITTLE i sina åttakärniga Snapdragon 810 CPU-chips. Det är på denna processor som så välkända nya produkter på smartphonemarknaden som HTC One M9 och G Flex 2, som har blivit en stor bedrift för LG, är baserade.

I början av 2015 introducerade NVIDIA Tegra X1, en ny superkraftig mobil processor som företaget avser för fordonsdatorer. X1:s huvudfunktion är dess konsolutmanande GPU, som också är baserad på arkitekturen big.LITTLE. Det vill säga att det också blir åttakärnigt.

Är det stor skillnad för den genomsnittliga användaren?

Är det stor skillnad mellan en fyrkärnig och en åttakärnig smartphoneprocessor för den genomsnittliga användaren? Nej, den är faktiskt väldigt liten, säger Trusted Reviews.

Termen "oktakärniga" är något förvirrande, men det betyder faktiskt dubblering av fyrkärniga processorer. Resultatet är två oberoende fungerande fyrkärniga set, kombinerade till ett chip för att förbättra energieffektiviteten.

Behöver alla moderna enheter en åttakärnig processor? Det finns inget sådant behov, till exempel säkerställer Apple en anständig energieffektivitet för sina iPhones med endast en dubbelkärnig processor.

Således är den åtta-kärniga ARM big.LITTLE-arkitekturen en av de möjliga lösningarna på en av de viktigaste frågorna gällande smartphones – batteritiden. Så snart en annan lösning på detta problem hittas, kommer trenden att installera två fyrkärniga uppsättningar i ett chip att sluta, och sådana lösningar kommer att gå ur mode.

  • Handledning

I den här artikeln kommer jag att försöka beskriva den terminologi som används för att beskriva system som kan köra flera program parallellt, det vill säga multi-core, multi-processor, multi-threaded. Olika typer av parallellism dök upp i IA-32-processorn vid olika tidpunkter och i något inkonsekvent ordning. Det är ganska lätt att bli förvirrad i allt detta, särskilt med tanke på att operativsystem noggrant döljer detaljer från mindre sofistikerade applikationsprogram.

Syftet med artikeln är att visa att med alla möjliga konfigurationer av multiprocessor, multi-core och multi-threaded system, skapas möjligheter för program som körs på dem både för abstraktion (ignorering av skillnader) och för att ta hänsyn till specifika ( möjligheten att programmatiskt ta reda på konfigurationen).

Varning om ®, ™ tecken i artikeln

Min kommentar förklarar varför företagsanställda bör använda upphovsrättsmeddelanden i offentlig kommunikation. I den här artikeln var jag tvungen att använda dem ganska ofta.

CPU

Naturligtvis är den äldsta, mest använda och kontroversiella termen "processor".

I den moderna världen är en processor något som vi köper i en vacker Retailbox eller ett inte så trevligt OEM-paket. En odelbar enhet insatt i ett uttag på moderkortet. Även om det inte finns någon kontakt och den inte kan tas bort, det vill säga om den är tätt lödd, är det ett chip.

Mobilsystem (telefoner, surfplattor, bärbara datorer) och de flesta stationära datorer har en processor. Arbetsstationer och servrar har ibland två eller flera processorer på ett enda moderkort.

Att stödja flera processorer i ett enda system kräver många designändringar. Åtminstone är det nödvändigt att säkerställa deras fysiska anslutning (tillhandahålla flera uttag på moderkortet), lösa problem med processoridentifiering (se längre fram i den här artikeln, såväl som min tidigare anteckning), samordning av minnesåtkomster och avbrottsleverans (den avbrottskontrollern måste kunna dirigera avbrott för flera processorer) och naturligtvis stöd från operativsystemet. Tyvärr kunde jag inte hitta ett dokumentärt omnämnande av skapandet av det första multiprocessorsystemet på Intel-processorer, men Wikipedia hävdar att Sequent Computer Systems levererade dem redan 1987, med hjälp av Intel 80386-processorer. Stöd för flera kretsar i ett system börjar bli utbrett , börjar med Intel® Pentium.

Om det finns flera processorer har var och en av dem sin egen kontakt på kortet. Var och en av dem har fullständiga oberoende kopior av alla resurser, såsom register, exekveringsenheter, cacher. De delar ett gemensamt minne - RAM. Minnet kan kopplas till dem på olika och ganska icke-triviala sätt, men det här är en separat historia utanför denna artikels räckvidd. Det viktiga är att i vilket fall som helst bör illusionen av homogent delat minne tillgängligt från alla processorer som ingår i systemet skapas för körbara program.


Redo för avgång! Intel® Desktop Board D5400XS

Kärna

Historiskt sett dök flera kärnor i Intel IA-32 upp senare än Intel® HyperThreading, men i den logiska hierarkin kommer det härnäst.

Det verkar som om ett system har fler processorer så är dess prestanda högre (på uppgifter som kan använda alla resurser). Men om kostnaden för kommunikationen mellan dem är för hög, dödas alla vinster från parallellitet av långa förseningar för överföringen av gemensamma data. Det är precis vad som observeras i multiprocessorsystem - både fysiskt och logiskt ligger de väldigt långt ifrån varandra. För effektiv kommunikation under sådana förhållanden är det nödvändigt att komma med specialiserade bussar, såsom Intel® QuickPath Interconnect. Energiförbrukningen, storleken och priset på den slutliga lösningen minskar naturligtvis inte av allt detta. Hög integration av komponenter bör komma till undsättning - kretsar som kör delar av ett parallellt program måste föras närmare varandra, helst på ett chip. Med andra ord bör en processor organisera flera kärnor, identiska med varandra i allt, men arbetar självständigt.

De första flerkärniga IA-32-processorerna från Intel introducerades 2005. Sedan dess har det genomsnittliga antalet kärnor i server-, stationära och nu mobila plattformar växt stadigt.

Till skillnad från två enkärniga processorer på samma system som bara delar minne, kan två kärnor också dela cachar och andra minnesrelaterade resurser. Oftast förblir cacharna på första nivån privata (varje kärna har sin egen), medan den andra och tredje nivån antingen kan delas eller vara separata. Denna systemorganisation gör att du kan minska dataleveransförseningar mellan närliggande kärnor, särskilt om de arbetar med en gemensam uppgift.


Mikrofotografi av en fyrkärnig Intel-processor med kodnamnet Nehalem. Separata kärnor, en gemensam tredje-nivå cache, samt QPI-länkar till andra processorer och en gemensam minneskontroller tilldelas.

Hypertråd

Fram till omkring 2002 var det enda sättet att få ett IA-32-system som kunde köra två eller flera program parallellt att använda multiprocessorsystem. Intel® Pentium® 4, liksom Xeon-linjen med kodnamnet Foster (Netburst), introducerade en ny teknik - hypertrådar eller hypertrådar - Intel® HyperThreading (nedan kallat HT).

Det finns inget nytt under solen. HT är ett specialfall av vad som i litteraturen kallas simultaneous multithreading (SMT). Till skillnad från "riktiga" kärnor, som är kompletta och oberoende kopior, i fallet med HT, dupliceras endast en del av de interna noderna, primärt ansvariga för lagring av de arkitektoniska tillståndsregistren, i en processor. De verkställande noderna som ansvarar för att organisera och bearbeta data förblir singulära och används vid varje given tidpunkt av högst en av trådarna. Liksom kärnor delar hypertrådar cacher, men från vilken nivå beror det på det specifika systemet.

Jag kommer inte att försöka förklara alla för- och nackdelar med SMT-design i allmänhet och HT-design i synnerhet. Den intresserade läsaren kan hitta en ganska detaljerad diskussion om tekniken i många källor, och naturligtvis på Wikipedia. Jag kommer dock att notera följande viktiga punkt, som förklarar de nuvarande begränsningarna för antalet hypertrådar i riktiga produkter.

Trådbegränsningar
I vilka fall är förekomsten av "orättvisa" multi-cores i form av HT motiverad? Om en applikationstråd inte kan ladda alla exekveringsnoder inuti kärnan, kan de "lånas ut" till en annan tråd. Detta är typiskt för applikationer som inte har en flaskhals i beräkningen, utan i dataåtkomst, det vill säga ofta genererar cachemissar och måste vänta på att data ska levereras från minnet. Under denna tid kommer kärnan utan HT att tvingas gå på tomgång. Närvaron av HT gör att du snabbt kan byta fria exekverande noder till ett annat arkitektoniskt tillstånd (eftersom det är duplicerat) och exekvera dess instruktioner. Detta är ett specialfall av en teknik som kallas latensdöljning, när en lång operation, under vilken användbara resurser är inaktiva, maskeras av parallellt exekvering av andra uppgifter. Om applikationen redan har en hög grad av utnyttjande av kärnresurser, kommer närvaron av hypertrådar inte att tillåta acceleration - "ärliga" kärnor behövs här.

Typiska scenarier för skrivbords- och serverapplikationer utformade för maskinarkitekturer för generella ändamål har potential för parallellism implementerad med HT. Denna potential förbrukas dock snabbt. Kanske av denna anledning, på nästan alla IA-32-processorer överstiger inte antalet hårdvaruhypertrådar två. I typiska scenarier skulle vinsten från att använda tre eller fler hypertrådar vara liten, men förlusten i formstorlek, dess strömförbrukning och kostnad är betydande.

En annan situation observeras i typiska uppgifter som utförs på videoacceleratorer. Därför kännetecknas dessa arkitekturer av användningen av SMT-teknik med ett större antal trådar. Eftersom Intel® Xeon Phi-samprocessorer (introducerades 2010) ideologiskt och genealogiskt är ganska nära grafikkort, kan de ha fyra hyperthreading på varje kärna - en konfiguration unik för IA-32.

Logisk processor

Av de tre beskrivna "nivåerna" av parallellitet (processorer, kärnor, hypertrådar) kan några eller till och med alla saknas i ett visst system. Detta påverkas av BIOS-inställningar (multi-core och multithreading är inaktiverade oberoende), mikroarkitekturfunktioner (till exempel saknades HT från Intel® Core™ Duo, men återkom med lanseringen av Nehalem) och systemhändelser (multi- processorservrar kan stänga av misslyckade processorer om fel upptäcks och fortsätter att "flyga" på de återstående). Hur är denna flernivåzoo av samtidighet synlig för operativsystemet och, i slutändan, för applikationsapplikationer?

För enkelhetens skull betecknar vi dessutom antalet processorer, kärnor och trådar i ett visst system med tre ( x, y, z), Var xär antalet processorer, y- antalet kärnor i varje processor, och z- antal hypertrådar i varje kärna. Från och med nu kommer jag att kalla detta tre topologi- en etablerad term som inte har mycket att göra med grenen matematik. Arbete sid = xyz definierar antalet anropade enheter logiska processorer system. Den definierar det totala antalet oberoende sammanhang för applikationsprocesser på ett delat minnessystem, som körs parallellt, som operativsystemet tvingas ta hänsyn till. Jag säger "tvingad" eftersom den inte kan styra exekveringsordningen för två processer på olika logiska processorer. Detta gäller även hypertrådar: även om de körs "sekventiellt" på samma kärna, dikteras den specifika ordningen av hårdvaran och kan inte observeras eller kontrolleras av program.

Oftast döljer operativsystemet för slutapplikationer funktionerna i den fysiska topologin för systemet som det körs på. Till exempel, följande tre topologier: (2, 1, 1), (1, 2, 1) och (1, 1, 2) - OS kommer att representera två logiska processorer, även om den första av dem har två processorer, andra - två kärnor, och den tredje - bara två trådar.


Windows Task Manager visar 8 logiska processorer; men hur mycket kostar det i processorer, kärnor och hypertrådar?


Linux toppen visar 4 logiska processorer.

Detta är ganska bekvämt för programskapare - de behöver inte ta itu med hårdvarufunktioner som ofta är oviktiga för dem.

Programvara definition av topologi

Att abstrahera topologin till ett enda antal logiska processorer skapar naturligtvis i vissa fall tillräckligt med skäl för förvirring och missförstånd (i heta internettvister). Datorapplikationer som vill pressa ut maximal prestanda ur hårdvara kräver detaljerad kontroll över var deras trådar ska placeras: närmare varandra på intilliggande hypertrådar eller omvänt längre bort på olika processorer. Hastigheten för kommunikation mellan logiska processorer inom samma kärna eller processor är mycket högre än hastigheten för dataöverföring mellan processorer. Möjligheten till heterogenitet i organisationen av arbetsminnet komplicerar också bilden.

Information om topologin för systemet som helhet, såväl som positionen för varje logisk processor i IA-32, är tillgänglig med hjälp av CPUID-instruktionen. Sedan tillkomsten av de första multiprocessorsystemen har det logiska processoridentifieringsschemat utökats flera gånger. Hittills finns dess delar i ark 1, 4 och 11 i CPUID. Vilket blad man ska titta på kan avgöras från följande flödesschema hämtat från artikeln:

Jag kommer inte att tråka ut dig här med alla detaljer om de enskilda delarna av denna algoritm. Om det finns intresse kan nästa del av denna artikel ägnas åt detta. Jag kommer att hänvisa den intresserade läsaren till, som undersöker denna fråga så utförligt som möjligt. Här ska jag först kort beskriva vad APIC är och hur det relaterar till topologi. Därefter ska vi titta på att arbeta med arket 0xB (elva i decimaler), som för närvarande är det sista ordet i "apico-byggnad".

APIC ID
Local APIC (avancerad programmerbar avbrottskontroller) är en enhet (nu en del av processorn) som ansvarar för att hantera avbrott som kommer till en specifik logisk processor. Varje logisk processor har sin egen APIC. Och var och en av dem i systemet måste ha ett unikt APIC ID-värde. Detta nummer används av avbrottskontrollanter för adressering vid leverans av meddelanden och av alla andra (till exempel operativsystemet) för att identifiera logiska processorer. Specifikationen för denna avbrottskontroller har utvecklats från Intel 8259 PIC genom Dual PIC, APIC och xAPIC till x2APIC.

För närvarande har bredden på numret som lagras i APIC-ID:t nått hela 32 bitar, även om det tidigare var begränsat till 16, och ännu tidigare - bara 8 bitar. Idag är rester av gamla dagar utspridda över CPUID, men CPUID.0xB.EDX returnerar alla 32 bitar av APIC ID. På varje logisk processor som självständigt exekverar CPUID-instruktionen kommer ett annat värde att returneras.

Förtydligande av familjeband
APIC ID-värdet i sig säger ingenting om topologin. För att ta reda på vilka två logiska processorer som finns inuti en fysisk processor (dvs. de är "bröder" hypertrådar), vilka två som finns i samma processor och vilka som är helt olika processorer, måste du jämföra deras APIC ID-värden. Beroende på graden av relation kommer vissa av deras bitar att sammanfalla. Denna information finns i CPUID.0xB-underlistor, som är operandkodade i ECX. Var och en av dem beskriver positionen för bitfältet för en av topologinivåerna i EAX (mer exakt, antalet bitar som måste flyttas åt höger i APIC ID för att ta bort de lägre topologinivåerna), samt typ av denna nivå - hypertråd, kärna eller processor - i ECX.

Logiska processorer placerade inuti samma kärna kommer att ha samma alla APIC ID-bitar, förutom de som hör till SMT-fältet. För logiska processorer placerade i samma processor, alla bitar utom Core- och SMT-fälten. Eftersom antalet underark för CPUID.0xB kan växa, kommer detta schema att tillåta oss att stödja beskrivningen av topologier med ett större antal nivåer, om behovet uppstår i framtiden. Dessutom kommer det att vara möjligt att införa mellannivåer mellan befintliga.

En viktig konsekvens av organisationen av detta schema är att det kan finnas "hål" i uppsättningen av alla APIC-ID:n för alla logiska processorer i systemet, dvs. de kommer inte att gå sekventiellt. Till exempel, i en flerkärnig processor med HT avstängd, kan alla APIC-ID:n visa sig vara jämna, eftersom den minst signifikanta biten som ansvarar för kodningen av hypertrådnumret alltid kommer att vara noll.

Jag noterar att CPUID.0xB inte är den enda informationskällan om logiska processorer som är tillgängliga för operativsystemet. En lista över alla tillgängliga processorer, tillsammans med deras APIC ID-värden, är kodad i MADT ACPI-tabellen.

Operativsystem och topologi

Operativsystem ger information om topologin hos logiska processorer till applikationer som använder sina egna gränssnitt.

På Linux finns topologiinformation i /proc/cpuinfo-pseudofilen såväl som utdata från kommandot dmidecode. I exemplet nedan filtrerar jag innehållet i cpuinfo på något fyrkärnigt system utan HT, och lämnar bara poster relaterade till topologin:

Dold text

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "processor\|fysiskt\ id\|syskon\|kärna\|kärnor\|apicid"-processor: 0 fysiskt id: 0 syskon: 4 kärn-id: 0 cpu-kärnor: 2 apicid: 0 initial apicid: 0 processor: 1 fysisk id: 0 syskon: 4 core id: 0 cpu kärnor: 2 apicid: 1 initial apicid: 1 processor: 2 fysisk id: 0 syskon: 4 core id: 1 cpu kärnor: 2 apicid: 2 initial apicid: 2 processor: 3 fysisk id: 0 syskon: 4 core id: 1 cpu-kärnor: 2 apicid: 3 initial apicid: 3

På FreeBSD rapporteras topologin via sysctl-mekanismen i variabeln kern.sched.topology_spec som XML:

Dold text

användare@värd:~$ 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-gruppSMT-grupp 2, 3 TRÅD-gruppSMT-grupp 4, 5 TRÅD-gruppSMT-grupp 6, 7 TRÅD-gruppSMT-grupp

I MS Windows 8 kan topologiinformation ses i Aktivitetshanteraren.

När jag svarar på frågan om vad antalet kärnor i en processor påverkar, skulle jag vilja säga direkt - datorns prestanda. Men det här är en så stark förenkling att det till och med blir ett misstag någon gång.

Det skulle vara trevligt om användarna helt enkelt hade fel och inte förlorade något. Problemet är att missförstånd av essensen av multi-core leder till ekonomiska förluster. För att försöka öka prestanda spenderar en person pengar på en processor med fler kärnor, men märker inte skillnaden.

Multi-core och multi-threading

När vi studerade problemet märkte vi en funktion hos Intel-processorer - standardverktyg för Windows visar ett annat antal kärnor. Detta beror på arbetet med Hyper-Threading-tekniken, som ger multi-threading.

Så att du inte längre blir förvirrad i begrepp, låt oss reda ut det en gång för alla:

  • Multi-core – chippet är utrustat med flera fysiska arkitektoniska kärnor. Du kan se dem och röra dem med händerna.
  • Multithreading – flera samtidigt bearbetade informationsströmmar.
    Kärnan kan fysiskt vara en, men mjukvarutekniker baserade på den skapar två trådar av uppgiftsexekvering; två kärnor – fyra trådar osv.

Effekten av antalet kärnor på prestanda

Ökad prestanda på en flerkärnig processor uppnås genom att bryta upp uppgiftskörning. Alla moderna system delar upp processen i flera trådar, även på en enkärnig processor - det är så multitasking uppnås, där du till exempel kan lyssna på musik, skriva ett dokument och arbeta med en webbläsare. Följande applikationer älskar och använder ständigt multithreading:

  • arkiverare;
  • mediaspelare;
  • videokodare;
  • defragmenterare;
  • antivirus;
  • grafisk redaktör.

Principen för strömseparering är viktig. Om datorn körs på en enkärnig processor utan Hyper-Threading-teknik, växlar operativsystemet omedelbart mellan trådar, så att för användaren körs processer visuellt samtidigt. Allt händer inom millisekunder, så du ser inte mycket latens om du inte pressar processorn hårt.

Om processorn är multi-core (eller stöder multi-threading), så blir det idealiskt sett ingen omkoppling. Systemet skickar en separat tråd till varje kärna. Resultatet är ökad produktivitet eftersom det inte finns något behov av att byta till en annan uppgift.

Men det finns en annan viktig faktor - stödjer den sig själv? program göra flera saker samtidigt? Systemet kan dela upp processer i olika trådar. Men om du kör ett mycket krävande spel, men det inte är optimerat för att köras på fyra kärnor, blir det ingen prestandavinst jämfört med en dual-core processor.

Spel- och programutvecklare är medvetna om denna funktion, så de optimerar ständigt sin kod för att utföra uppgifter på flerkärniga processorer. Men denna optimering håller inte alltid jämna steg med ökningen av antalet kärnor, så du bör inte spendera mycket pengar på de senaste kraftfulla processorerna med maximalt antal trådar som stöds - chipets potential kommer inte att avslöjas om 9 av av 10 program.

Så hur många kärnor ska du välja?

Innan du köper en processor med 16 kärnor, överväg om det antalet trådar kommer att krävas för att utföra de uppgifter du kommer att tilldela datorn.

  • Om en dator köps för att arbeta med dokument, surfa på Internet, lyssna på musik, titta på film, räcker det med två kärnor. Om du tar en processor med två kärnor från det övre prissegmentet med bra frekvens och stöd för multi-threading, så blir det inga problem när du arbetar med grafiska editorer.
  • Om du köper en maskin med förväntan på kraftfull spelprestanda, installera omedelbart ett filter för minst 4 kärnor. 8 kärnor med stöd för flertråd – den allra översta med en marginal på flera år. 16 kärnor är lovande, men det finns en stor sannolikhet att när du låser upp potentialen för ett sådant chip kommer det att bli föråldrat.

Som jag redan har sagt försöker spel- och programutvecklare hålla jämna steg med processorernas framsteg, men för närvarande behövs helt enkelt ingen enorm kraft. 16 kärnor är lämpliga för användare som gör videorendering eller serverdatorer. Ja, i butiker kallas sådana processorer för spelprocessorer, men detta är bara för att de ska kunna säljas - det finns definitivt fler spelare än de som renderar videor.

Fördelarna med flera kärnor kan bara ses med mycket seriöst datorarbete som involverar flera trådar. Om, relativt sett, ett spel eller program är optimerat för endast fyra trådar, så kommer även dina åtta kärnor att vara meningslös kraft som inte kommer att påverka prestandan på något sätt.

Det är som att transportera en stol på en enorm lastbil – det gör inte uppgiften snabbare. Men om du använder de tillgängliga möjligheterna korrekt (till exempel laddar kroppen med helt andra möbler), kommer arbetsproduktiviteten att öka. Ha detta i åtanke och låt dig inte luras av marknadsföringsknep som lägger till ordet "spel" till processorer som inte kommer att nå sin fulla potential även med de senaste spelen.

Även på sajten:

Vad påverkas av antalet processorkärnor? uppdaterad: 31 januari 2018 av: administration

Kapplöpet om ytterligare prestanda på processormarknaden kan bara vinnas av de tillverkare som, baserat på nuvarande produktionsteknologier, kan ge en rimlig balans mellan klockhastighet och antalet bearbetningskärnor. Tack vare övergången till 90- och 65-nm tekniska processer har det blivit möjligt att skapa processorer med ett stort antal kärnor. Till stor del berodde detta på nya möjligheter för att justera värmeavledning och kärnstorlekar, varför vi idag ser framväxten av ett ökande antal fyrkärniga processorer. Men hur är det med mjukvaran? Hur bra skalar den från en till två eller fyra kärnor?

I en idealisk värld tillåter program som är optimerade för multithreading operativsystemet att fördela flera trådar över de tillgängliga bearbetningskärnorna, vare sig det är en enda processor eller flera processorer, enstaka kärnor eller flera. Att lägga till nya kärnor möjliggör större prestandavinster än någon ökning av klockhastigheten. Detta är faktiskt vettigt: fler arbetare kommer nästan alltid att slutföra en uppgift snabbare än färre, snabbare arbetare.

Men är det vettigt att utrusta processorer med fyra eller till och med fler kärnor? Finns det tillräckligt med arbete för att ladda fyra kärnor eller fler? Glöm inte att det är väldigt svårt att fördela arbete mellan kärnorna så att fysiska gränssnitt som HyperTransport (AMD) eller Front Side Bus (Intel) inte blir en flaskhals. Det finns ett tredje alternativ: mekanismen som fördelar belastningen mellan kärnorna, nämligen OS-hanteraren, kan också bli en flaskhals.

AMD:s övergång från singel- till dubbla kärnor var nästan felfri, eftersom företaget inte ökade värmeskalet till extrema nivåer, som det gjorde med Intel Pentium 4-processorer. Därför var Athlon 64 X2-processorerna dyra, men ganska rimliga, och Pentium D 800-linjen var känd för sitt heta arbete. Men Intels 65nm-processorer och i synnerhet Core 2-linjen har förändrat bilden. Intel kunde kombinera två Core 2 Duo-processorer i ett paket, till skillnad från AMD, vilket resulterade i den moderna Core 2 Quad. AMD lovar att släppa sina egna fyrkärniga Phenom X4-processorer i slutet av detta år.

I vår artikel kommer vi att titta på Core 2 Duo-konfigurationen med fyra kärnor, två kärnor och en kärna. Och låt oss se hur väl prestandan skalar. Är det värt att byta till fyra kärnor idag?

Enkel kärna

Termen "single-core" syftar på en processor som har en datorkärna. Detta inkluderar nästan alla processorer från början av 8086-arkitekturen upp till Athlon 64 och Intel Pentium 4. Tills tillverkningsprocessen blev tillräckligt tunn för att skapa två datorkärnor på ett enda chip, användes övergången till en mindre processteknik för att minska driftspänning, öka klockhastigheten eller lägga till funktionsblock och cacheminne.

Att köra en enkärnig processor vid höga klockhastigheter kan ge bättre prestanda för en enskild applikation, men en sådan processor kan bara köra ett program (tråd) åt gången. Intel har implementerat Hyper-Threading-principen, som emulerar närvaron av flera kärnor för operativsystemet. HT-tekniken gjorde det möjligt att bättre ladda de långa pipelines av processorerna Pentium 4 och Pentium D. Prestandaökningen var förstås liten, men systemets lyhördhet var definitivt bättre. Och i en multitasking-miljö kan detta vara ännu viktigare, eftersom du kan göra en del arbete medan din dator arbetar med en specifik uppgift.

Eftersom processorer med dubbla kärnor är så billiga nuförtiden, rekommenderar vi inte att du väljer enkärniga processorer om du inte vill spara varenda krona.


Core 2 Extreme X6800-processorn var den snabbaste i Intel Core 2-serien när den släpptes, med 2,93 GHz. Idag har dual-core processorer nått 3,0 GHz, om än på en högre FSB1333-bussfrekvens.

Att uppgradera till två processorkärnor innebär dubbelt så mycket processorkraft, men bara på applikationer som är optimerade för multi-threading. Vanligtvis inkluderar sådana applikationer professionella program som kräver hög processorkraft. Men en dubbelkärnig processor är fortfarande vettig, även om du bara använder din dator för e-post, webbsurfning och arbete med kontorsdokument. Å ena sidan förbrukar moderna modeller av dual-core-processorer inte mycket mer energi än single-core-modeller. Å andra sidan lägger den andra datorkärnan inte bara till prestanda, utan förbättrar också systemets lyhördhet.

Har du någonsin väntat på att WinRAR eller WinZIP ska slutföra komprimeringen av filer? På en enkärnig maskin är det osannolikt att du snabbt kan växla mellan fönster. Även DVD-uppspelning kan belasta en enskild kärna lika mycket som en komplex uppgift. Dual-core-processorn gör det lättare att köra flera applikationer samtidigt.

AMD dual-core processorer innehåller två hela kärnor med cache, en integrerad minneskontroller och en korskoppling som ger delad åtkomst till minne och HyperTransport-gränssnittet. Intel tog en väg liknande den första Pentium D och installerade två Pentium 4-kärnor i den fysiska processorn. Eftersom minneskontrollern är en del av styrkretsen måste systembussen användas både för kommunikation mellan kärnorna och för att komma åt minne, vilket medför vissa begränsningar för prestanda. Core 2 Duo-processorn har mer avancerade kärnor som ger bättre prestanda per klocka och bättre prestanda per watt. De två kärnorna delar en gemensam L2-cache, som möjliggör datautbyte utan att använda systembussen.

Core 2 Quad Q6700-processorn körs på 2,66 GHz, med två Core 2 Duo-kärnor inuti.

Om det idag finns många skäl att byta till dual-core processorer, så ser fyra kärnor ännu inte så övertygande ut. En anledning är begränsad optimering av program för flera trådar, men det finns också vissa arkitektoniska problem. Även om AMD idag kritiserar Intel för att ha packat två dual-core dies i en enda processor, och anser att det inte är en "äkta" quad-core CPU, så fungerar Intels tillvägagångssätt bra eftersom processorerna faktiskt levererar quad-core prestanda. Ur tillverkningssynpunkt är det lättare att få höga stansutbyten och producera fler produkter med små kärnor som sedan kan skarvas ihop för att göra en ny, kraftfullare produkt i en ny process. När det gäller prestanda finns det flaskhalsar - två kristaller kommunicerar med varandra genom systembussen, så det är mycket svårt att hantera flera kärnor fördelade över flera kristaller. Även om flera stansar ger bättre energibesparingar och justering av frekvenserna för individuella kärnor för att passa applikationens behov.

Äkta fyrkärniga processorer använder fyra kärnor, som tillsammans med cacheminne är placerade på ett enda chip. Vad som är viktigt här är närvaron av en gemensam enhetlig cache. AMD kommer att implementera detta tillvägagångssätt genom att utrusta 512 KB L2-cache på varje kärna och lägga till L3-cache till alla kärnor. AMD:s fördel är att det kommer att vara möjligt att stänga av vissa kärnor och snabba upp andra för att få bättre prestanda för entrådade applikationer. Intel kommer att följa samma väg, men inte innan Nehalem-arkitekturen introducerades 2008.

Verktyg för visning av systeminformation, som CPU-Z, låter dig ta reda på antalet kärnor och cachestorlekar, men inte processorlayouten. Du kommer inte att veta att Core 2 Quad (eller quad-core Extreme Edition som visas på skärmdumpen) består av två kärnor.


Men med erövringen av nya toppar i frekvensindikatorer blev det svårare att öka det, eftersom detta påverkade ökningen av TDP för processorer. Därför började utvecklare öka bredden på processorer, nämligen att lägga till kärnor, och konceptet med flera kärnor uppstod.

För bara 6-7 år sedan var flerkärniga processorer praktiskt taget oerhörda. Nej, flerkärniga processorer från samma IBM-företag fanns tidigare, men utseendet på den första dual-core processorn för stationära datorer, ägde rum först 2005, och denna processor kallades Pentium D. Under 2005 släpptes också en dubbelkärnig Opteron från AMD, men för serversystem.

I den här artikeln kommer vi inte att fördjupa oss i historiska fakta i detalj, utan kommer att diskutera moderna flerkärniga processorer som en av CPU:ns egenskaper. Och viktigast av allt, vi måste ta reda på vad denna multi-core ger i form av prestanda för processorn och för dig och mig.

Ökad prestanda på grund av multi-core

Principen för att öka processorprestanda genom att använda flera kärnor är att dela upp exekveringen av trådar (olika uppgifter) i flera kärnor. För att sammanfatta kan vi säga att nästan varje process som körs på ditt system har flera trådar.

Låt mig omedelbart göra en reservation för att operativsystemet praktiskt taget kan skapa många trådar åt sig själv och utföra allt samtidigt, även om processorn fysiskt är enkärnig. Denna princip implementerar samma Windows-multitasking (till exempel att lyssna på musik och skriva samtidigt).


Låt oss ta ett antivirusprogram som exempel. En tråd kommer att skanna datorn, den andra kommer att uppdatera antivirusdatabasen (vi har förenklat allting väldigt mycket för att förstå det allmänna konceptet).

Och låt oss titta på vad som kommer att hända i två olika fall:

a) Enkärnig processor. Eftersom vi har två trådar som körs samtidigt, måste vi skapa för användaren (visuellt) samma samtidiga exekvering. Operativsystemet gör något smart:det finns en växling mellan exekveringen av dessa två trådar (dessa växlar är momentana och tiden är i millisekunder). Det vill säga, systemet "utförde" uppdateringen lite, bytte sedan plötsligt till skanning och sedan tillbaka till uppdatering. För dig och mig verkar det alltså som att vi utför dessa två uppgifter samtidigt. Men vad är förlorat? Självklart prestation. Så låt oss titta på det andra alternativet.

b) Flerkärnig processor. I det här fallet kommer denna omkoppling inte att ske. Systemet kommer tydligt att skicka varje tråd till en separat kärna, vilket som ett resultat gör att vi kan bli av med att byta från tråd till tråd som är skadlig för prestanda (låt oss idealisera situationen). Två trådar exekveras samtidigt, detta är principen för multi-core och multi-threading. I slutändan kommer vi att skanna och uppdatera mycket snabbare på en flerkärnig processor än på en enkärnig processor. Men det finns en hake - inte alla program stöder flera kärnor. Inte alla program kan optimeras på detta sätt. Och allt händer långt ifrån att vara så idealiskt som vi beskrev. Men varje dag skapar utvecklare fler och fler program vars kod är perfekt optimerad för exekvering på flerkärniga processorer.

Behöver du flerkärniga processorer? Vardaglig anledning

att välja en processor för en dator (nämligen när du tänker på antalet kärnor) bör du bestämma huvudtyperna av uppgifter som den kommer att utföra.

För att förbättra dina kunskaper inom området datorhårdvara kan du läsa materialet om processorsocklar .

Dual-core-processorer kan kallas utgångspunkten, eftersom det inte är någon idé att återgå till enkärniga lösningar. Men dual-core processorer är annorlunda. Detta kanske inte är den "senaste" Celeron, men det kan vara en Core i3 på Ivy Bridge, precis som AMDs Sempron eller Phenom II. Naturligtvis, på grund av andra indikatorer, kommer deras prestanda att vara väldigt olika, så du måste titta på allt uttömmande och jämföra multi-core med andra processoregenskaper.

Till exempel har Core i3 på Ivy Bridge Hyper-Treading-teknik, som gör att du kan bearbeta 4 trådar samtidigt (operativsystemet ser 4 logiska kärnor, istället för 2 fysiska). Men samma Celeron skryter inte med detta.

Men låt oss återvända direkt till tankarna angående de uppgifter som krävs. Om en dator behövs för kontorsarbete och surfning på Internet räcker det med en dubbelkärnig processor.

När det kommer till spelprestanda kräver de flesta spel 4 kärnor eller fler för att vara bekväma. Men här kommer samma hake upp: inte alla spel har optimerad kod för 4-kärniga processorer, och om de är optimerade är de inte så effektiva som vi skulle vilja. Men i princip är den optimala lösningen för spel nu en 4-kärnig processor.


Idag är samma 8-kärniga AMD-processorer redundanta för spel, det är antalet kärnor som är redundant, men prestandan är inte i nivå utan de har andra fördelar. Samma 8 kärnor kommer till stor hjälp i uppgifter där kraftfullt arbete med högkvalitativ flertrådad arbetsbelastning krävs. Detta inkluderar till exempel videorendering (beräkning) eller serverberäkning. Därför kräver sådana uppgifter 6, 8 eller fler kärnor. Och snart kommer spel effektivt att kunna ladda 8 eller fler kärnor, så i framtiden är allt väldigt rosa.

Glöm inte att det fortfarande finns många uppgifter som skapar en entrådig belastning. Och det är värt att ställa sig frågan: behöver jag denna 8-kärnkraftsenhet eller inte?

Sammanfattningsvis vill jag återigen notera att fördelarna med multi-cores visar sig under "tungt" beräkningsmässigt flertrådigt arbete. Och om du inte spelar spel med skyhöga krav och inte gör specifika typer av arbete som kräver bra datorkraft, så är det helt enkelt ingen idé att lägga pengar på dyra flerkärniga processorer (