arven fra tidligere designs, som Babbage ‘ s forskel motor og mainframe punch-kort-systemer i 1970’erne, har en væsentlig indflydelse på nutidens computersystemer. I min første artikel i denne historiske serier, Computer, historie og moderne computere for systemadministratorer, jeg drøftet flere forløbere for den moderne computer, og som er opført egenskaber, der definerer, hvad vi kalder en computer i dag.,
i denne artikel diskuterer jeg central processing unit (CPU), herunder dens komponenter og funktionalitet. Mange af emnerne henviser tilbage til den første artikel, så sørg for at læse den, hvis du ikke allerede har gjort det.
den centrale behandlingsenhed (CPU)
CPU ‘ en i moderne computere er udførelsen af “møllen” i Babbages forskelmotor. Udtrykket centralbehandlingsenhed stammer helt tilbage i tågerne i computertiden, da et enkelt massivt skab indeholdt det kredsløb, der kræves for at fortolke maskinniveauprograminstruktioner og udføre operationer på de leverede data., Den centrale behandlingsenhed afsluttede også al behandling for alle vedhæftede perifere enheder. Periferiudstyr inkluderet printere, kortlæsere og tidlige lagringsenheder såsom tromme og diskdrev. Moderne perifere enheder har en betydelig mængde processorkraft selv og off-load nogle behandlingsopgaver fra CPU ‘ en. Dette frigør CPU ‘ en fra input/output opgaver, så dens magt anvendes til den primære opgave ved hånden.tidlige computere havde kun en CPU og kunne kun udføre en opgave ad gangen.,
vi bevarer udtrykket CPU i dag, men nu henviser det til processorpakken på et typisk bundkort. Figur 1 viser en standard Intel-processor pakke.
Figur 1: En Intel Core i5 processor-pakke (Retsplejelovens McCranie via Wikimedia Commons CC BY-SA-4.0).
Der er virkelig intet at se her andet end selve processorpakken. Processorpakken er en chip, der indeholder processoren(e) forseglet inde i en metalbeholder og monteret på et lille trykt kredsløbskort (PC)., Pakken er simpelthen faldet på plads i CPU-stikket på et bundkort og sikret med et låsehåndtag arrangement. En CPU-køler fastgøres til processorpakken. Der er flere forskellige fysiske stikkontakter med et bestemt antal kontakter, så det er vigtigt at få den rigtige pakke til at passe til bundkortstikket, hvis du bygger dine egne computere.
Sådan fungerer CPU ‘en
lad os se nærmere på CPU’ en. Figur 2 er et konceptuelt diagram over en hypotetisk CPU, så du lettere kan visualisere komponenterne., RAM og systemuret er skygget, fordi de ikke er en del af CPU ‘ en og kun vises for klarhed. Der trækkes heller ikke forbindelser mellem CPU-uret og styreenheden til CPU-komponenterne. Det er tilstrækkeligt at sige, at signaler fra uret og styreenheden er en integreret del af hver anden komponent.
Figur 2: En forenklet konceptuelt diagram af en typisk CPU.
dette design ser ikke særlig enkelt ud, men virkeligheden er endnu mere kompliceret., Dette tal er tilstrækkeligt til vores formål uden at være alt for kompliceret.
aritmetisk logikenhed
den aritmetiske logikenhed (ALU) udfører de aritmetiske og logiske funktioner, der er computerens arbejde. A-og B-registrene indeholder inputdataene, og akkumulatoren modtager resultatet af operationen. Instruktionsregistret indeholder den instruktion, som ALU skal udføre.
for eksempel, når du tilføjer to tal, placeres et tal i A-registret og det andet i B-registret. ALU udfører tilføjelsen og sætter resultatet i akkumulatoren., Hvis operationen er logisk, placeres de data, der skal sammenlignes, i inputregistrene. Resultatet af sammenligningen, en 1 eller 0, sættes i akkumulatoren. Uanset om dette er en logisk eller aritmetisk operation, placeres akkumulatorindholdet derefter i den cache-placering, der er reserveret af programmet til resultatet.
Der er en anden type operation udført af ALU. Resultatet er en adresse i hukommelsen, og det bruges til at beregne en ny placering i hukommelsen for at begynde indlæsningsinstruktioner. Resultatet er placeret i instruktion pointer register.,
instruktion register og pointer
instruktionspegeren angiver placeringen i hukommelsen, der indeholder den næste instruktion, der skal udføres af CPU ‘ en. Når CPU ‘ en fuldender udførelsen af den aktuelle instruktion, indlæses den næste instruktion i instruktionsregistret fra den hukommelsesplacering, som instruktionspekeren peger på.
når instruktionen er indlæst i instruktionsregisteret, øges instruktionsregisterpegeren med en instruktionsadresse. Forøgelse gør det muligt at være klar til at flytte den næste instruktion ind i instruktionsregistret.,
Cache
CPU ‘ en får aldrig direkte adgang til RAM. Moderne CPU ‘ er har et eller flere lag cache. CPU ‘ens evne til at udføre beregninger er meget hurtigere end RAM’ ens evne til at fodre data til CPU ‘ en. Årsagerne til dette er uden for rammerne af denne artikel, men jeg vil undersøge det yderligere i den næste artikel.
Cache-hukommelse er hurtigere end systemets RAM, og den er tættere på CPU ‘ en, fordi den er på processorchip. Cachen indeholder datalagring og instruktioner for at forhindre CPU ‘ en i at vente på, at data hentes fra RAM., Når CPU ‘en har brug for data—og programinstruktioner betragtes også som data—bestemmer cachen, om dataene allerede er i bopæl og giver dem til CPU’ en.
hvis de ønskede data ikke er i cachen, hentes de fra RAM og bruger forudsigelige algoritmer til at flytte flere data fra RAM til cachen. Cache-controlleren analyserer de ønskede data og forsøger at forudsige, hvilke yderligere data der skal bruges fra RAM. Det indlæser de forventede data i cachen., Ved at holde nogle data tættere på CPU ‘en i en cache, der er hurtigere end RAM, kan CPU’ en forblive optaget og ikke spilde cykler, der venter på data.
vores enkle CPU har tre niveauer af cache. Niveau 2 og 3 er designet til at forudsige, hvilke data og programinstruktioner der skal bruges næste, Flyt disse data fra RAM og flyt dem stadig tættere på CPU ‘ en for at være klar, når det er nødvendigt. Disse cache-størrelser spænder typisk fra 1 MB til 32 MB, afhængigt af processorens hastighed og tilsigtede brug.niveau 1-cachen er tættest på CPU ‘ en. I vores CPU er der to typer L1-cache., L1i er instruktionscachen, og L1d er datacachen. Niveau 1 cache størrelser spænder typisk fra 64 KB til 512 KB.
Hukommelsesstyringsenhed
hukommelsesstyringsenheden (MMU) styrer dataflo .et mellem hovedhukommelsen (RAM) og CPU ‘ en. Det giver også hukommelse beskyttelse kræves i multitasking miljøer og konvertering mellem virtuelle hukommelse adresser og fysiske adresser.
CPU-ur og kontrolenhed
alle CPU-komponenter skal synkroniseres for at arbejde sammen problemfrit., Styreenheden udfører denne funktion med en hastighed bestemt af klokhastigheden og er ansvarlig for at styre driften af de andre enheder ved hjælp af timingsignaler, der strækker sig over hele CPU ‘ en.
Random access memory (RAM)
selvom RAM, eller hovedlageret, vises i dette diagram og det næste, er det ikke rigtig en del af CPU ‘ en. Dens funktion er at gemme programmer og data, så de er klar til brug, når CPU ‘ en har brug for dem.
Sådan fungerer det
CPU ‘ er fungerer på en cyklus, der styres af kontrolenheden og synkroniseres med CPU-uret., Denne cyklus kaldes CPU instruktion cyklus, og den består af en række hente/afkode/udføre komponenter. Instruktionen, som kan indeholde statiske data eller henvisninger til variable data, hentes og placeres i instruktionsregistret. Instruktionen afkodes, og alle data placeres i A-og B-dataregistrene. Instruktionen udføres ved hjælp af A-og B-registrene, med resultatet sat i akkumulatoren. CPU ‘ en Øger derefter instruktionspekerens værdi med længden af den forrige og begynder igen.
den grundlæggende CPU-instruktionscyklus ser sådan ud.,
Figur 3: Den grundlæggende CPU instruktion cyklus.
behovet for hastighed
selvom den grundlæggende CPU fungerer godt, kan CPU ‘ er, der kører på denne enkle cyklus, bruges endnu mere effektivt. Der er flere strategier til at øge CPU-ydeevnen, og vi ser på to af dem her.
Supercharging instruktionscyklussen
et problem, som tidlige CPU-designere stødte på, var spildt tid i de forskellige CPU-komponenter., En af de første strategier til forbedring af CPU-ydeevnen overlappede dele af CPU-instruktionscyklussen for at udnytte de forskellige dele af CPU ‘ en mere fuldt ud.
for eksempel, når den aktuelle instruktion er afkodet, hentes den næste og placeres i instruktionsregistret. Så snart det er sket, opdateres instruktionspekeren med den næste instruktions hukommelsesadresse. Brugen af overlappende instruktionscyklusser er illustreret i figur 4.,
Figur 4: CPU instruktion cyklus med overlap.
dette design ser pænt og glat ud, men faktorer som at vente på I / O kan forstyrre strømmen. Hvis du ikke har de rigtige data eller instruktioner i cachen, kræver det, at MMU ‘en finder de rigtige og flytter dem til CPU’ en, og det kan tage nogen tid. Visse instruktioner tager også flere CPU-cyklusser at gennemføre end andre, hvilket forstyrrer jævn overlapning.
ikke desto mindre er dette en kraftfuld strategi til forbedring af CPU-ydeevnen.,
Hyperthreading
en anden strategi til forbedring af CPU-ydeevnen er hyperthreading. Hyperthreading gør en enkelt processor kerne arbejde som to CPU ‘ er ved at give to data og instruktion streams. Tilføjelse af en anden instruktionspeger og instruktionsregister til vores hypotetiske CPU, som vist i figur 5, får den til at fungere som to CPU ‘ er, der udfører to separate instruktionsstrømme under hver instruktionscyklus. Når en eksekveringsstrøm boder, mens man venter på data-igen er instruktioner også data-fortsætter den anden eksekveringsstrøm behandlingen., Hver kerne, der implementerer hyperthreading, svarer til to CPU ‘ er i sin evne til at behandle instruktioner.
Figur 5: Et konceptuelt diagram af en CPU med hyperthreading.
Husk at dette er et meget forenklet diagram og forklaring af vores hypotetiske CPU. Virkeligheden er langt mere kompleks.
mere terminologi
Jeg har stødt på en masse forskellige CPU terminologi., For at definere terminologien lidt mere eksplicit, lad os se på selve CPU ‘ en ved at bruge kommandoen lscpu
.
Intel-processoren vist ovenfor er en pakke, der tilsluttes en enkelt stikkontakt på bundkortet. Processorpakken indeholder seks kerner. Hver kerne er i stand til hyperthreading, så hver kan køre to samtidige tråde til i alt 12 CPU ‘ er.
mine definitioner:
- Core – en kerne er den mindste fysiske hard .areenhed, der er i stand til at udføre opgaven med behandling. Den indeholder en ALU og et eller to sæt understøttende registre., Det andet sæt registre og understøttende kredsløb muliggør hyperthreading. En eller flere kerner kan kombineres i en enkelt fysisk pakke.
- CPU-en logisk hard .areenhed, der er i stand til at behandle en enkelt udførelsestråd. Den moderne brug af udtrykket central processing unit refererer til det samlede antal tråde, som en processorpakke er i stand til at udføre samtidigt. En single-core processor, der ikke understøtter hyperthreading, svarer til en enkelt CPU. I dette tilfælde er CPU og core synonyme., En hyperthreading processor med en enkelt kerne er den funktionelle ækvivalent af to CPU ‘ er. En hyperthreading processor med otte kerner er den funktionelle ækvivalent af 16 CPU ‘ er.
- pakke-den fysiske komponent, der indeholder en eller flere kerner, såsom den vist i Figur 1 ovenfor.
- Processor-1) en enhed, der behandler programinstruktioner til at manipulere data. 2) ofte brugt som et synonym for pakke.,
- Socket-nogle gange brugt som et andet synonym for pakke, men det mere præcist refererer til den fysiske stikkontakt på bundkortet, hvor processoren pakke er indsat.
vilkårene socket, processor og pakke bruges ofte om hverandre, hvilket kan forårsage forvirring. Som vi ser fra lscpu
kommandoresultater ovenfor, giver Intel os sin egen terminologi, og jeg mener, at den autoritative kilde., I virkeligheden, vi bruger alle disse udtryk på forskellige måder, men så længe vi forstår hinanden på et givet tidspunkt, det er det, der virkelig betyder noget.
Bemærk, at processoren ovenfor har to niveau 1-cacher på 512 KiB hver, en til instruktioner (L1i) og en til data (L1d). Niveau 1-cachen er tættest på CPU ‘ en, og det fremskynder tingene for at få instruktioner og data adskilt på dette tidspunkt. Niveau 2 og niveau 3 caches er større, men instruktioner og data eksisterer i hver.
Hvad betyder alt dette?
godt spørgsmål., Tilbage i de tidlige dage af mainframes havde hver computer kun en enkelt CPU og var ude af stand til at køre mere end et program samtidigt. Mainframe kører muligvis lønningsliste, derefter lagerregnskab, derefter kundefakturering og så videre, men kun en applikation kunne køre ad gangen. Hvert program måtte afslutte, før systemoperatøren kunne starte det næste.
nogle tidlige forsøg på at køre flere programmer på oncen gang tog en simpel tilgang og var rettet mod bedre udnyttelse af en enkelt CPU., For eksempel blev program1 og program2 indlæst, og program1 løb, indtil det blev blokeret og ventede på, at I/O skulle forekomme. På det tidspunkt løb program2, indtil det blev blokeret. Denne tilgang blev kaldt multi-processing og bidrog til fuldt ud at udnytte værdifuld computer tid.tidlige forsøg på at multitasking alle involverede skifter udførelsen kontekst af en enkelt CPU meget hurtigt mellem udførelsen strømme af flere opgaver. Denne praksis er ikke sand multitasking, som vi forstår det, fordi der i virkeligheden kun behandles en enkelt udførelsestråd ad gangen. Det kaldes mere korrekt tidsdeling.,
moderne computere, fra smarte ure og tabletter til supercomputere, understøtter alle ægte multitasking med flere CPU ‘ er. Flere CPU ‘ er gør det muligt for computere at køre mange opgaver samtidigt. Hver CPU udfører sine egne funktioner på samme tid som alle de andre CPU ‘ er. En otte-core processor med hyperthreading (dvs. 16 CPU ‘ er) kan køre 16 opgaver samtidigt.
Endelige tanker
Vi kiggede på en konceptualiseret og forenklet CPU for at lære lidt om strukturer. Jeg skummet næppe overfladen af processorfunktionalitet i denne artikel., Du kan lære mere ved at tage de indlejrede links til de emner, vi udforskede.
Husk, at diagrammerne og beskrivelserne i denne artikel er rent konceptuelle og ikke repræsenterer nogen egentlig CPU.
i den næste del af denne serie vil jeg se på RAM og diskdrev som forskellige typer lagerplads, og hvorfor hver er nødvendig for moderne computere.