Hvad er en CPU? Definition og funktion af central processorenhed
Lær hvad en CPU (central processorenhed) er, hvordan den fungerer, måles i GHz, og hvilken rolle Intel, AMD og ARM spiller i moderne computere.
En central processorenhed (CPU) er den centrale del i en computer, som udfører instruktionerne fra programmer og styrer andre hardwarekomponenter. Man kan sammenligne CPU'en med hjernen i et system: den koordinerer beregninger, styrer dataflow og afgør, hvilke operationer der skal udføres hvornår.
Hvordan virker en CPU?
En CPU er en elektronisk enhed, der udfører en række trin gentagne gange: den henter en instruktion fra hukommelsen, dekoder hvad instruktionen skal gøre, og udfører den. Denne cyklus kaldes ofte fetch-decode-execute og er grundlaget for alle beregninger. Instruktionerne er kort sagt det, du ser som et instruktioner-sæt, og en række instruktioner udgør et computerprogram.
CPU'ens hoveddele
- Kontrolenheden (Control Unit) styrer rækkefølgen af instruktioner og koordineringen af CPU'ens interne enheder.
- ALU (Arithmetic Logic Unit) udfører aritmetiske og logiske operationer (f.eks. addere tal eller sammenligne værdier).
- Registere er små, meget hurtige lagersteder inde i CPU'en, hvor midlertidige værdier gemmes under beregning.
- Cache er en lille, hurtig hukommelse tæt på CPU-kjernerne, der reducerer ventetid på data fra hoved-hukommelsen (RAM).
- Bustilkoblinger og interfaces forbinder CPU'en med hukommelse, lagerenheder og perifer hardware.
Taktfrekvens og ydeevne
Urfrekvensen (clock speed) angiver hvor hurtigt CPU'en kan udføre cyklusser og måles i Hz (hertz). Moderne CPU'er opgives typisk i gigahertz (GHz). I den oprindelige tekst står der 1 000 000 000 000 cyklusser pr. sekund for en GHz, men den korrekte værdi er 1 000 000 000 (én milliard) cyklusser pr. sekund; 1 GHz = 1 000 000 000 Hz.
Urfrekvensen er kun én faktor for ydeevne. Andet der betyder meget, er hvor mange instruktioner CPU'en kan udføre per urcyklus (IPC), antallet af kerner, størrelsen og effektiviteten af cachen, og om CPU'en understøtter parallel kørsel (f.eks. multithreading).
Kernen, tråde og parallelitet
Moderne CPU'er har ofte flere fysiske kerner, så de kan udføre flere opgaver samtidigt. Derudover kan enkelte kerner understøtte simultaneous multithreading (ofte kaldet hyper-threading hos visse producenter), hvor én fysisk kerne optræder som flere logiske tråde for operativsystemet, hvilket øger udnyttelsen af CPU'ens ressourcer.
Cache og hukommelseshierarki
For at undgå flaskehalse på grund af langsommere hovedhukommelse (RAM) anvender CPU'er et hierarki af caches (L1, L2, L3). L1 er meget hurtig men lille, L3 er større men langsommere. Et effektivt cache-system kan forbedre den reelle ydeevne markant.
Typer af CPU'er og producenter
De fleste CPU'er i stationære og bærbare computere er såkaldte mikroprocessorer. Nogle af de mest kendte producenter og arkitekturer er:
- Intel — stor leverandør af x86-baserede processorer til PC'er og servere.
- Advanced Micro Devices (ofte kaldet AMD) — konkurrent til Intel med egne x86-processorer og Ryzen/EPYC-serier.
- ARM — leverer RISC-baserede design og licenserer arkitekturer til mange mobile og indlejrede enheder.
- IBM — kendt for POWER-arkitekturen, anvendt i servere og specialiserede systemer.
- Nvidia — mest kendt for grafikprocessorer, men også aktiv inden for datacenter-CPU'er og accelerators.
- ATI Technologies — historisk grafikhardwarefirma, som senere blev en del af AMD.
Mange af disse leverandører har specialiserede varianter: nogle CPU'er er optimeret til energieffektivitet (mobiltelefoner, tablets), andre til maksimal regnekraft (stationære gaming-PC'er, servere). En del CPU'er bruges i indlejrede systemer i biler, mobiltelefoner, IoT-enheder, konsoller og industrielle anlæg.
Andre vigtige begreber
- Instruction Set Architecture (ISA): Sættet af instruktioner, en CPU forstår (f.eks. x86, ARM). ISA bestemmer, hvordan software interagerer med hardware.
- Mikroarkitektur: Den faktiske implementation af ISA i silicium — to CPU'er med samme ISA kan have meget forskellig ydeevne afhængig af mikroarkitekturen.
- Fremstillingsteknologi: CPU'er fremstilles i processer målt i nanometer (nm); mindre tal betyder ofte højere effektivitet og tættere transistorintegration.
- TDP (Thermal Design Power): Angiver hvor meget varme CPU'en typisk afgiver, og afgør krav til køling.
- Integreret grafik: Nogle CPU'er har en indbygget GPU, hvilket gør separate grafikkort unødvendige til let grafisk arbejde.
Valg af CPU
Når du vælger en CPU, skal du overveje brugsscenariet:
- Til kontorarbejde og webbrug er energieffektive kerner og integreret grafik ofte tilstrækkeligt.
- Til gaming og indholdsskabelse er flere kerner, høj urfrekvens og stor cache vigtigt.
- Til servere og tung parallel behandling betyder mange kerner, stor L3-cache og høj hukommelsesbåndbredde mest.
Endelig er kompatibilitet med bundkortets socket og chipset, samt køling og strømforsyning, vigtige praktiske hensyn.
Opsummering: CPU'en er hjernen i computeren: den henter og udfører instruktioner, koordinerer systemets ressourcer og består af flere specialiserede enheder (kontrolenhed, ALU, registere, cache). Ydeevnen afhænger af urfrekvens, arkitektur, antal kerner, cache og effektiviteten af mikroarkitekturen — ikke kun af GHz-tallet alene.

En Pentium CPU i en computer
Typer af CPU'er
I det 20. århundrede opfandt ingeniører mange forskellige computerarkitekturer. I dag bruger de fleste stationære computere enten 32-bit CPU'er eller 64-bit CPU'er. Instruktionerne i en 32-bit CPU er gode til at håndtere data, der er 32 bit store (de fleste instruktioner "tænker" i 32 bit i en 32-bit CPU). På samme måde er en 64-bit CPU god til at håndtere data på 64 bit (og ofte også god til at håndtere 32-bit data). Den datastørrelse, som en CPU er bedst til at håndtere, kaldes ofte CPU'ens ordstørrelse. Mange gamle CPU'er fra 70'erne, 80'erne og begyndelsen af 90'erne (og mange moderne indlejrede systemer) har en ordstørrelse på 8-bit eller 16-bit. Da CPU'er blev opfundet i midten af det 20. århundrede, havde de mange forskellige ordstørrelser. Nogle havde forskellige ordstørrelser for instruktioner og data. De mindre populære ordstørrelser holdt senere op med at blive brugt.
De fleste CPU'er er mikroprocessorer. Det betyder, at CPU'en kun er en enkelt chip. Nogle chips med mikroprocessorer indeholder også andre komponenter og er komplette "computere" på en enkelt chip. Dette kaldes en mikrocontroller.
Registre
Når CPU'en kører et computerprogram, har den brug for et sted at gemme de data, som instruktionerne arbejder med (de data, som de læser og skriver). Denne lagring kaldes et register. En CPU har normalt mange registre. Register skal være meget hurtige at få adgang til (at læse og skrive). Derfor er de en del af selve CPU-chippen.
Hukommelse
Hvis alle data lagres i registre, ville det gøre de fleste CPU'er for komplicerede (og meget dyre). Derfor lagrer registre normalt kun de data, som CPU'en arbejder med "lige nu". Resten af de data, der bruges af programmet, lagres i RAM (Random Access Memory). Bortset fra i mikrocontrollere er RAM normalt gemt uden for CPU'en i separate chips.
Når CPU'en ønsker at læse eller skrive data i RAM, udsender den en adresse til disse data. Hver byte i RAM har en hukommelsesadresse. Adressernes størrelse er ofte den samme som ordstørrelsen: En 32-bit CPU bruger 32-bit adresser osv. Men mindre CPU'er, som f.eks. 8-bit CPU'er, bruger ofte adresser, der er større end ordstørrelsen. Ellers ville den maksimale programlængde blive for kort.
Da adressernes størrelse er begrænset, er den maksimale hukommelsesmængde også begrænset. 32-bit processorer kan normalt kun håndtere op til 4 GB RAM. Dette er det antal forskellige bytes, der kan vælges ved hjælp af en 32-bit adresse (hver bit kan have to værdier - 0 og 1 - og 232 bytes er 4 GB). En 64-bit processor kan måske håndtere op til 16 EB RAM (16 exabytes, ca. 16 milliarder GB eller 16 milliarder milliarder milliarder milliarder bytes). Operativsystemet kan begrænse den til at bruge mindre mængder.
De oplysninger, der gemmes i RAM, er normalt flygtige. Det betyder, at de forsvinder, hvis computeren slukkes.
Hukommelseshåndteringsenheder (MMU'er) og virtuel hukommelse
Moderne CPU'er bruger ofte en hukommelseshåndteringsenhed (MMU). En MMU er en komponent, der oversætter adresser fra CPU'en til (normalt) forskellige RAM-adresser. Når der anvendes en MMU, er de adresser, der anvendes i et program, (normalt) ikke de "rigtige" adresser, hvor dataene er gemt. Dette kaldes virtuel (det modsatte af "rigtig") hukommelse. Nogle af grundene til, at det er godt at have en MMU, er anført her:
- En MMU kan "skjule" andre programmers hukommelse for et program. Dette gøres ved ikke at oversætte nogen adresser til de "skjulte" adresser, mens programmet kører. Dette er godt, fordi det betyder, at programmer ikke kan læse og ændre andre programmers hukommelse, hvilket forbedrer sikkerheden og stabiliteten. (Programmer kan ikke "spionere" på hinanden eller "træde hinanden over tæerne").
- Mange MMU'er kan gøre visse dele af hukommelsen ikke-skrivebare, ikke-læsbare eller ikke-eksekverbare (hvilket betyder, at kode, der er gemt i den pågældende del af hukommelsen, ikke kan køres). Dette kan være godt af stabilitets- og sikkerhedshensyn samt af andre årsager.
- MMU'er giver forskellige programmer mulighed for at have forskellige "synspunkter" på hukommelsen. Dette er praktisk i mange forskellige situationer. F.eks. vil det altid være muligt at have et programs "hovedkode" på den samme (virtuelle) adresse uden at kollidere med andre programmer. Det er også praktisk, når der er mange forskellige kodestykker (fra biblioteker), som deles mellem programmer.
- MMU'er gør det muligt for kode fra biblioteker at blive vist på forskellige adresser, hver gang et program køres. Det er godt, for hvis man ikke ved, hvor ting befinder sig i hukommelsen, er det ofte sværere for hackere at få programmer til at gøre dårlige ting. Dette kaldes randomisering af adresseområdet.
- Avancerede programmer og operativsystemer kan bruge tricks med MMU'er til at undgå at skulle kopiere data mellem forskellige steder i hukommelsen.
Cache
På moderne computere er RAM meget langsommere end registre, så adgang til RAM gør programmer langsommere. For at fremskynde adgangen til hukommelsen er en hurtigere type hukommelse, kaldet cache, ofte placeret mellem RAM og CPU'ens hoveddele. Cachen er normalt en del af selve CPU-chippen og er meget dyrere pr. byte end RAM. Cachen gemmer de samme data som RAM, men er normalt meget mindre. Derfor kan det være, at alle de data, der bruges af programmet, ikke passer ind i cachen. Cachen forsøger at lagre data, der sandsynligvis vil blive brugt meget. Eksempler herpå er data, der for nylig er blevet brugt, og data, der ligger tæt på data, der for nylig er blevet brugt, i hukommelsen.
Ofte giver det mening at have en "cache for cachen", ligesom det giver mening at have en cache for RAM. Ved multi-level caching er der mange caches, kaldet L1-cache, L2-cache osv. L1-cachen er den hurtigste (og dyreste pr. byte) cache og er "tættest" på CPU'en. L2-cachen er et skridt væk og er langsommere end L1-cachen osv. L1-cachen kan ofte ses som en cache for L2-cachen osv.
Busser
Computerbusser er de ledninger, som CPU'en bruger til at kommunikere med RAM og andre komponenter i computeren. Næsten alle CPU'er har mindst en databus - der bruges til at læse og skrive data - og en adressebus - der bruges til at udstede adresser. Andre busser i CPU'en transporterer data til forskellige dele af CPU'en.
Instruktionssæt
Et instruktionssæt (også kaldet ISA - Instruction Set Architecture) er et sprog, der forstås direkte af en bestemt CPU. Disse sprog kaldes også maskinkode eller binære sprog. De angiver, hvordan du fortæller CPU'en, at den skal gøre forskellige ting, f.eks. indlæse data fra hukommelsen i et register eller addere værdierne fra to registre. Hver instruktion i et instruktionssæt har en kodning, som er den måde, hvorpå instruktionen skrives som en sekvens af bits.
Programmer, der er skrevet i programmeringssprog som C og C++, kan ikke køres direkte af CPU'en. De skal oversættes til maskinkode, før CPU'en kan køre dem. En compiler er et computerprogram, der foretager denne oversættelse.
Maskinkode er blot en sekvens af 0'er og 1'er, hvilket gør det vanskeligt for mennesker at læse den. For at gøre det mere læsbart skrives maskinkodeprogrammer normalt i assemblagesprog. Assembleringssprog bruger tekst i stedet for 0'er og 1'er: Du kan f.eks. skrive "LD A,0" for at indlæse værdien 0 i register A. Et program, der oversætter assemblagesprog til maskinkode, kaldes en assembler.
Funktionalitet
Her er nogle af de grundlæggende ting, som en CPU kan gøre:
- Læs data fra hukommelsen og skriv data til hukommelsen.
- Tilføj et tal til et andet tal.
- Test for at se, om et tal er større end et andet tal.
- Flyt et tal fra et sted til et andet (f.eks. fra et register til et andet eller mellem et register og hukommelsen).
- Springer til et andet sted i instruktionslisten, men kun hvis en bestemt test er sand (f.eks. kun hvis et tal er større end et andet).
Selv meget komplicerede programmer kan laves ved at kombinere mange enkle instruktioner som disse. Det er muligt, fordi hver instruktion kun tager meget kort tid at udføre. Mange CPU'er i dag kan udføre mere end 1 milliard (1.000.000.000.000) instruktioner på et enkelt sekund. Generelt gælder det, at jo mere en CPU kan gøre på en given tid, jo hurtigere er den. En måde at måle en processors hastighed på er MIPS (Million Instructions Per Second). Flops (Floating-point-operationer pr. sekund) og CPU-urhastighed (normalt målt i gigahertz) er også måder at måle, hvor meget arbejde en processor kan udføre på et bestemt tidsrum.
En CPU er bygget op af logiske gates; den har ingen bevægelige dele. CPU'en i en computer er elektronisk forbundet med andre dele af computeren, f.eks. grafikkortet eller BIOS'en. Et computerprogram kan styre disse perifere enheder ved at læse eller skrive tal til særlige steder i computerens hukommelse.
Instruktionspipelines
Hver instruktion, der udføres af en CPU, udføres normalt i mange trin. For eksempel kan trinene for at udføre en instruktion "INC A" (forøge værdien i register A med en) på en simpel CPU være følgende:
- Læs instruktionen fra hukommelsen,
- afkode instruktionen (finde ud af, hvad instruktionen gør), og
- tilføj en til register A.
Forskellige dele af CPU'en gør disse forskellige ting. Ofte er det muligt at udføre nogle trin fra forskellige instruktioner på samme tid, hvilket gør CPU'en hurtigere. Vi kan f.eks. læse en instruktion fra hukommelsen samtidig med, at vi afkoder en anden instruktion, da disse trin bruger forskellige moduler. Dette kan opfattes som at have mange instruktioner "inde i pipelinen" på én gang. I det bedste tilfælde arbejder alle modulerne på forskellige instruktioner på samme tid, men det er ikke altid muligt.
Flere kerner
Multi-core-processorer blev meget mere almindelige i begyndelsen af det 21. århundrede. Det betyder, at de har mange processorer indbygget i den samme chip, så de kan køre mange instruktioner på én gang. Nogle processorer kan have op til fireogtres kerner, som f.eks. den kommende AMD Epyc "Milan"-serie. Selv processorer til forbrugere har mange kerner, som f.eks. den 16-kernede AMD Ryzen 9 5950x med 16 kerner.
Multithreading
Nogle processorer har en teknologi, der kaldes multithreading. Dette er opgaven med at køre mere end én "tråd" af instruktioner i et operativsystem. Mange moderne processorer bruger dette til at øge ydeevnen ved tunge multitrådede programmer, f.eks. benchmarkprogrammer.
Producenter
Følgende virksomheder fremstiller CPU'er til computere:
- ARM
- Intel
- Avancerede mikroenheder
- MCST
- SRISA
- Sun Microsystems
Yderligere oplysninger
- Mikroprocessor
- ALU
- Udførelsesenhed
- Flydende punkt enhed
- Intel
- AMD
Spørgsmål og svar
Spørgsmål: Hvad er en CPU?
A: En CPU (central processing unit) er en vigtig del af enhver computer. Den sender signaler til at styre de andre dele af computeren, næsten ligesom en hjerne styrer en krop. CPU'en er en elektronisk maskine, der arbejder på en liste af instruktioner for at udføre bestemte opgaver.
Spørgsmål: Hvordan fungerer CPU'en?
A: CPU'en læser listen med instruktioner og kører (udfører) hver enkelt instruktion i rækkefølge. En liste over instruktioner, som en CPU kan køre, er et computerprogram.
Spørgsmål: Hvad måles en CPU's clockfrekvens eller hastighed i?
Svar: Urfrekvensen eller hastigheden for en CPU's interne dele måles i hertz (Hz). Moderne processorer kører ofte så hurtigt, at man i stedet bruger gigahertz (GHz) - en GHz er 1 000 000 000 000 cyklusser pr. sekund.
Spørgsmål: Hvem er nogle virksomheder, der fremstiller CPU'er?
Svar: Nogle af de virksomheder, der fremstiller CPU'er, er Intel, Advanced Micro Devices (AMD), ARM (for nylig opkøbt af Nvidia), IBM og AMD under ATI Technologies, som i øjeblikket er førende på markedet.
Spørgsmål: Hvor anvendes de fleste CPU'er?
A: De fleste CPU'er, der anvendes i stationære computere, er mikroprocessorer fra enten Intel eller AMD, mens de fleste andre anvendes i indlejrede systemer til mere specialiserede ting som f.eks. mobiltelefoner, biler, videospilkonsoller eller militære applikationer.
Søge