CPU | en vigtig del af enhver computer

En central processorenhed (CPU) er en vigtig del af enhver computer. CPU'en 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 over computeropgaver, der kaldes instruktioner. Den læser listen over 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.

Urfrekvensen, eller hastigheden af en CPU's interne dele, måles i Hz (hertz). Moderne processorer kører ofte så hurtigt, at der i stedet anvendes gigahertz (GHz). En GHz svarer til 1 000 000 000 000 cyklusser pr. sekund.

De fleste CPU'er, der anvendes i stationære computere (hjemmecomputere), er mikroprocessorer fra enten Intel eller Advanced Micro Devices (normalt forkortet til AMD). Nogle andre virksomheder, der fremstiller CPU'er, er ARM (for nylig opkøbt af Nvidia), IBM og AMD under ATI Technologies, som er førende lige nu. De fleste af deres CPU'er anvendes i indlejrede systemer til mere specialiserede ting, f.eks. i mobiltelefoner, biler, videospilkonsoller eller i militæret.




  En Pentium CPU i en computer  Zoom
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



 

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.

AlegsaOnline.com - 2020 / 2023 - License CC3