Hvad er en multicore-processor?

click fraud protection

Siden midten af ​​1900'erne har desktop-CPU'er tilbudt flere CPU-kerner i en enkelt pakke. Dette er en multicore processor. Mens tidlige designs var begrænset til to eller fire CPU-kerner, tilbyder moderne CPU'er op til 64 fysiske kerner på en enkelt CPU. Så høje kernetal er ikke standard for desktop-CPU'er og er generelt forbeholdt avancerede arbejdsstationer eller servere. Typiske kernetal i moderne desktop-CPU'er er mellem 4 og 16. Men hvad er det ved multicore CPU'er, der gør dem dominerende i moderne computere?

Enkelt kerne

Historisk set var en enkelt kerne-CPU begrænset til kun at udføre en enkelt opgave på én gang. Dette kommer med en lang række problemer. For eksempel på en moderne computer er der en enorm mængde af baggrundsprocesser, der kører. Hvis en CPU kun kan behandle én ting ad gangen, betyder det, at disse baggrundsprocesser skal tage behandlingstiden væk fra forgrundsprocessen. Derudover betyder cache-misser, at data skal hentes fra - forholdsvis - langsom RAM. I det tidsrum, hvor data bliver hentet fra RAM, sidder processoren simpelthen inaktiv, da den ikke kan gøre noget, før den får dataene. Dette holder den kørende proces såvel som alle andre processer, der venter på, at den er færdig.

Mens moderne single-core processorer ikke rigtig er en ting takket være stigningen i budget multicore CPU'er, ville de være i stand til at bruge andre moderne tricks for at fungere hurtigere. En pipeline ville gøre det muligt at bruge hver enkelt del af håndteringen af ​​en instruktion samtidigt, giver et markant ydelsesboost i forhold til at bruge kun ét trin i pipelinen pr. ur cyklus. En bred pipeline ville se, at flere instruktioner kunne håndteres i hvert pipelinetrin pr. clock-cyklus. Out Of Order-behandling ville gøre det muligt at planlægge instruktioner på en mere tidseffektiv måde. En forgreningsprædiktor ville være i stand til at forudsige resultatet af en forgreningsinstruktion og præventivt køre det formodede svar.

Alle disse faktorer ville fungere godt og give en vis ydeevne. Tilføjelse af en eller flere kerner tillader dog alt dette, og på et slag muliggør behandlingen af ​​to gange data på én gang.

Multicore

Tilføjelse af en anden kerne lyder som om det burde fordoble den rå ydeevne. Tingene er desværre mere komplicerede end som så. Programlogik er ofte enkelttrådet, hvilket betyder, at der kun er én ting, som et program forsøger at gøre ad gangen. Det, der dog kan ske, er, at andre processer kan bruge den anden kerne på samme tid. Selvom der ikke er noget iboende præstationsboost til de fleste individuelle programmer, er leveringen af ​​en ekstra behandlingsressource, reducerer effektivt konkurrencen om en begrænset ressource, hvilket giver en præstationsløft. Dette ydelsesboost, simpelthen fra at reducere konkurrencen om CPU-tid, er mest mærkbar, når du hopper fra en enkelt til en dual-core CPU er der faldende afkast fra at øge antallet af kerne yderligere, selvom mere generelt er bedre.

For at drage den rette fordel af multicore-systemer og faktisk se et solidt ydelsesboost, skal programmer programmeres til at bruge flere behandlingstråde. Multithreaded logik er notorisk svært at udføre pålideligt, da det ofte er svært at lære, og der er mange potentielle faldgruber. Et eksempel på en faldgrube er kendt som en racetilstand. I en løbstilstand antager én proces, at en anden proces, som den starter, vil forløbe glat, den forsøger derefter at gøre noget, der er afhængig af, at den anden proces har kørt glat. Forestil dig for eksempel, at en proces starter en anden proces for at lukke et dokument og åbne et andet. Hvis den oprindelige proces ikke kontrollerer korrekt, om den anden proces er afsluttet, kan dette resultere i uventede resultater. Hvis der var et problem med at lukke det første dokument, for eksempel, kan det stadig være åbent, når den oprindelige proces bare skriver flere data til det.

I denne race-tilstand læses værdien af ​​en variabel endnu en gang, før den nye værdi skrives til den, hvilket fører til det forkerte overordnede svar.

Termiske problemer

Et af de største problemer, multicore-processorer ender med at kæmpe med, er varme. Mens en CPU-kerne ikke udsender så meget varme, afgiver to mere. I CPU'er med højt antal kerner kan denne koncentration af varme resultere i et lavere boost-ur, da CPU'en styrer sin temperatur. Et lavere boost-ur vil forårsage lavere ydeevne i enkelttrådede applikationer. Dette kan ofte ses i benchmarks for spilydelse. Videospil er ofte meget afhængige af en enkelt tråd. Som sådan er enkelttrådet ydeevne ofte afgørende for spil. High-core count CPU'er som 16-core count modeller er ofte fra højtydende bins. På trods af dette kan de jævnligt konstateres at blive bedre end "mindre" CPU'er med et lavere antal kerner i enkelttrådede benchmarks. Dette problem er endnu mere indlysende i CPU'er med ultrahøjt antal kerner som 64-kerne AMD Threadripper, hvor clockhastigheden er mærkbart lavere end avancerede desktop-CPU'er.

Succeser

Mange applikationer er i stand til at gøre korrekt brug af flere CPU-kerner. For eksempel er CPU-gengivelse en forholdsvis nem opgave at parallelisere. Ydeevneforbedringer kan ses helt op til 64 kerner og højere, selvom ingen enkelt CPU tilbyder mere end 64 kerner i øjeblikket. Mange applikationer kan simpelthen ikke multitrådes, da de er afhængige af sekventiel logik. Selvom disse ikke ser i nærheden af ​​hastigheden af ​​et multithreaded-program, er det faktum, at multithreaded-programmer og andre enkelt-trådede programmer kan bruge andre CPU-kerner frigør processortid, hvilket giver mulighed for bedre ydeevne.

Arkitektoniske muligheder

I desktop-processorer har hver CPU-kerne i en multicore-CPU generelt været identisk. Denne homogenitet gør planlægningsarbejdet på kernerne enkelt. Brug af det samme gentagne design hjælper også med at holde udviklingsomkostningerne nede. Mobile processorer har dog længe brugt heterogene kernearkitekturer. I dette design er der to eller endda tre lag af CPU-kerne. Hvert niveau kan køre de samme processer, men nogle er designet til strømeffektivitet, og andre er tunet til ydeevne. Dette har vist sig at være en succesopskrift for batteridrevne enheder, da mange opgaver kan bruge den langsommere mere strømbesparende kerner, hvilket øger batterilevetiden, mens højprioriterede processer stadig kan køres med høj hastighed når det er nødvendigt.

Desktop CPU-arkitektur bevæger sig også i retning af et heterogent kernedesign. Intels Alder Lake 12th generation Core CPU-linjen er den første desktop-CPU, der gør dette. I dette tilfælde er den vigtigste drivfaktor for de mindre kerner ikke nødvendigvis strømeffektivitet, men termisk effektivitet, selvom det er to sider af samme sag. At have flere kraftfulde kerner giver høj ydeevne, mens mange effektive kerner kan håndtere baggrundsopgaver uden at påvirke hovedkernerne for meget.

Konklusion

En multicore CPU er en CPU, der har flere behandlingskerner i en enkelt pakke, ofte, men ikke udelukkende på den samme matrice. Multicore CPU'er tilbyder ikke meget af et direkte ydelsesboost til mange programmer, men ved at øge antallet af kerner behøver enkelttrådede programmer ikke at konkurrere så meget om CPU-tid. Nogle programmer kan drage fuld fordel af flere kerner, der gør direkte brug af så mange, som er tilgængelige. Dette giver et stort ydelsesboost, selvom dette løft på grund af termiske og strømbegrænsninger ikke nødvendigvis er en lige ydelsesfordobling med en fordobling af kerner.