Arv av tidigare konstruktioner, såsom Babbages difference engine och stordatorns stanskortssystem på 1970-talet, har en betydande inverkan på dagens datorsystem. I min första artikel i denna historiska serie, datorhistoria och moderna datorer för sysadmins diskuterade jag flera föregångare till den moderna datorn och listade egenskaper som definierar vad vi kallar en dator idag.,

i den här artikeln diskuterar jag den centrala bearbetningsenheten (CPU), inklusive dess komponenter och funktionalitet. Många av ämnena hänvisar tillbaka till den första artikeln, så var noga med att läsa den om du inte redan har.

Central processing unit (CPU)

CPU: n i moderna datorer är utförandet av ”mill” i Babbages difference engine. Termen central processing unit har sitt ursprung långt tillbaka i nävarna av datortid när ett enda massivt skåp innehöll kretsarna som krävs för att tolka maskinnivåprograminstruktioner och utföra operationer på de data som levereras., Den centrala bearbetningsenheten slutförde också all bearbetning för alla anslutna kringutrustning. Kringutrustning inkluderade skrivare, kortläsare och tidiga lagringsenheter som trumma och diskenheter. Moderna perifera enheter har en betydande mängd processorkraft själva och avlastar vissa bearbetningsuppgifter från CPU. Detta frigör CPU upp från input / output uppgifter så att dess effekt tillämpas på den primära uppgiften till hands.

tidiga datorer hade bara en CPU och kunde bara utföra en uppgift åt gången.,

vi behåller termen CPU idag, men nu hänvisar den till processorpaketet på ett typiskt moderkort. Figur 1 visar ett standard Intel-processorpaket.

bild

Figur 1: ett Intel Core i5-processorpaket (Jud McCranie via Wikimedia Commons, CC BY-SA 4.0).

det finns egentligen inget att se här annat än processorpaketet själv. Processorpaketet är ett chip som innehåller processorn(erna) förseglade inuti en metallbehållare och monterade på ett litet kretskort (PC)., Paketet släpps helt enkelt på plats i CPU-uttaget på ett moderkort och säkras med ett låsspaksarrangemang. En CPU-kylare fäster på processorpaketet. Det finns flera olika fysiska uttag med specifika antal kontakter, så att få rätt paket för att passa moderkortet uttag är viktigt om du bygger dina egna datorer.

hur CPU fungerar

låt oss titta på CPU mer detaljerat. Figur 2 är ett konceptuellt diagram över en hypotetisk CPU så att du kan visualisera komponenterna lättare., RAM och systemklockan är skuggade eftersom de inte är en del av CPU och visas bara för tydlighet. Dessutom dras inga anslutningar mellan CPU-klockan och styrenheten till CPU-komponenterna. Det räcker med att säga att signaler från klockan och styrenheten är en integrerad del av alla andra komponenter.

bild

Figur 2: ett förenklat konceptuellt diagram över en typisk CPU.

den här designen ser inte särskilt enkel ut, men verkligheten är ännu mer komplicerad., Denna siffra är tillräcklig för våra syften utan att vara alltför komplex.

aritmetisk logikenhet

den aritmetiska logikenheten (ALU) utför de aritmetiska och logiska funktioner som är datorns arbete. A-och B-registren håller indata och ackumulatorn tar emot resultatet av operationen. Instruktionsregistret innehåller den instruktion som ALU ska utföra.

När du till exempel lägger till två nummer placeras ett nummer i A-registret och det andra i b-registret. ALU utför tillägget och sätter resultatet i ackumulatorn., Om åtgärden är logisk placeras de data som ska jämföras i inmatningsregistren. Resultatet av jämförelsen, en 1 eller 0, sätts i ackumulatorn. Oavsett om det här är en logisk eller aritmetisk operation placeras ackumulatorinnehållet sedan i cacheplatsen som reserveras av programmet för resultatet.

det finns en annan typ av operation som utförs av ALU. Resultatet är en adress i minnet, och det används för att beräkna en ny plats i minnet för att börja ladda instruktioner. Resultatet placeras i instruktionspekareregistret.,

Instruktionsregister och pekare

instruktionspekaren anger platsen i minnet som innehåller nästa instruktion som ska utföras av CPU. När processorn Slutför utförandet av den aktuella instruktionen laddas nästa instruktion i instruktionsregistret från minnesplatsen som pekas på av instruktionspekaren.

Efter att instruktionen har laddats i instruktionsregistret ökas instruktionsregisterpekaren med en instruktionsadress. Inkrementering gör det möjligt att vara redo att flytta nästa instruktion till instruktionsregistret.,

Cache

CPU: n kommer aldrig direkt åt RAM. Moderna processorer har ett eller flera lager av cache. CPU: s förmåga att utföra beräkningar är mycket snabbare än den RAM förmåga att mata data till PROCESSORN. Anledningen till detta ligger utanför tillämpningsområdet för denna artikel, men jag kommer att undersöka det vidare i nästa artikel.

Cache-minne är snabbare än systemets RAM, och det är närmare CPU eftersom det är på processorchipet. Cachen ger datalagring och instruktioner för att förhindra att CPU väntar på att data ska hämtas från RAM., När CPU behöver data-och programinstruktioner anses också vara data – bestämmer cachen om data redan är bosatt och ger den till CPU.

om de begärda uppgifterna inte finns i cachen hämtas den från RAM och använder prediktiva algoritmer för att flytta mer data från RAM till cachen. Cachekontrollanten analyserar de begärda uppgifterna och försöker förutsäga vilka ytterligare data som behövs från RAM. Den laddar de förväntade data i cachen., Genom att hålla vissa data närmare CPU i en cache som är snabbare än RAM, CPU kan förbli upptagen och inte slösa cykler väntar på data.

vår enkla CPU har tre nivåer av cache. Nivåer 2 och 3 är utformade för att förutsäga vilka data och programinstruktioner som behövs nästa, flytta dessa data från RAM, och flytta den allt närmare CPU att vara redo när det behövs. Dessa cachestorlekar varierar vanligtvis från 1 MB till 32 MB, beroende på processorns hastighet och avsedda användning.

Nivå 1-cachen ligger närmast CPU: n. I vår CPU finns det två typer av L1-cache., L1I är instruktionscachen, och L1d är datacachen. Nivå 1 cachestorlek varierar vanligtvis från 64 KB 512 KB.

minneshanteringsenhet

minneshanteringsenheten (MMU) hanterar dataflödet mellan huvudminnet (RAM) och CPU. Det ger också minnesskydd krävs i multitasking miljöer och konvertering mellan virtuella minnesadresser och fysiska adresser.

CPU-klocka och styrenhet

alla CPU-komponenter måste synkroniseras för att fungera smidigt., Styrenheten utför denna funktion med en hastighet som bestäms av klockhastigheten och ansvarar för att styra de andra enheternas verksamhet med hjälp av tidssignaler som sträcker sig genom hela CPU: n.

Random access memory (RAM)

även om RAM, eller huvudlagring, visas i detta diagram och nästa, det är inte riktigt en del av CPU. Dess funktion är att lagra program och data så att de är redo att användas när CPU behöver dem.

hur det fungerar

processorer fungerar på en cykel som hanteras av styrenheten och synkroniseras av CPU-klockan., Denna cykel kallas CPU-instruktionscykeln, och den består av en serie hämta/avkoda/exekvera komponenter. Instruktionen, som kan innehålla statiska data eller pekare till variabel data, hämtas och placeras i instruktionsregistret. Instruktionen avkodas och alla data placeras i A-och B-dataregistren. Instruktionen utförs med hjälp av A-och B-registren, med resultatet i ackumulatorn. Processorn ökar sedan instruktionspekarens värde med längden på den föregående och börjar igen.

den grundläggande CPU-instruktionscykeln ser ut så här.,

bild

Figur 3: den grundläggande PROCESSORINSTRUKTIONSCYKELN.

behovet av hastighet

även om den grundläggande CPU fungerar bra, processorer som körs på denna enkla cykel kan användas ännu mer effektivt. Det finns flera strategier för att öka CPU-prestanda, och vi tittar på två av dem här.

överladda instruktionscykeln

ett problem tidiga CPU-designers stött på var bortkastad tid i de olika CPU-komponenterna., En av de första strategierna för att förbättra CPU-prestanda överlappade delarna av CPU-instruktionscykeln för att utnyttja de olika delarna av CPU: n mer fullständigt.

till exempel, när den aktuella instruktionen har avkodats, hämtas nästa och placeras i instruktionsregistret. Så snart det har inträffat uppdateras instruktionspekaren med nästa instruktions minnesadress. Användningen av överlappande instruktionscykler illustreras i Figur 4.,

bild

Figur 4: processorns instruktionscykel med överlappning.

den här designen ser snygg och smidig ut, men faktorer som att vänta på i / O kan störa flödet. Att inte ha rätt data eller instruktioner i cachen kräver MMU att hitta de rätta och flytta dem till CPU, och det kan ta lite tid. Vissa instruktioner tar också fler CPU-cykler att slutföra än andra, vilket stör smidig överlappning.

ändå är detta en kraftfull strategi för att förbättra CPU-prestanda.,

Hyperthreading

en annan strategi för att förbättra CPU-prestanda är hyperthreading. Hyperthreading gör en enda processorkärna arbete som två processorer genom att tillhandahålla två data-och instruktionsströmmar. Att lägga till en andra instruktionspekare och instruktionsregister till vår hypotetiska CPU, som visas i Figur 5, gör att den fungerar som två processorer och utför två separata instruktionsströmmar under varje instruktionscykel. När en exekveringsström stannar medan du väntar på data-igen är instruktioner också data-den andra exekveringsströmmen fortsätter behandlingen., Varje kärna som implementerar hyperthreading motsvarar två processorer i sin förmåga att bearbeta instruktioner.

bild

Figur 5: ett konceptuellt diagram över en CPU med hyperthreading.

Kom ihåg att detta är ett mycket förenklat diagram och förklaring av vår hypotetiska CPU. Verkligheten är mycket mer komplex.

mer terminologi

Jag har stött på många olika CPU-terminologi., För att definiera terminologin lite mer explicit, låt oss titta på processorn själv genom att använda kommandot lscpu.

Intel-processorn som visas ovan är ett paket som ansluts till ett enda uttag på moderkortet. Processorpaketet innehåller sex kärnor. Varje kärna kan hyperthreading, så varje kan köra två samtidiga trådar för totalt 12 processorer.

mina definitioner:

  • kärna – en kärna är den minsta fysiska hårdvaruenheten som kan utföra uppgiften att bearbeta. Den innehåller en ALU och en eller två uppsättningar stödregister., Den andra uppsättningen register och stödkretsar möjliggör hyperthreading. En eller flera kärnor kan kombineras i ett enda fysiskt paket.
  • CPU – en logisk maskinvaruenhet som kan bearbeta en enda tråd av utförande. Den moderna användningen av termen centralbehandlingsenhet avser det totala antalet trådar som ett processorpaket kan utföra samtidigt. En enkärnig processor som inte stöder hyperthreading motsvarar en enda CPU. I det här fallet är CPU och core synonymt., En hyperthreading processor med en enda kärna är den funktionella motsvarigheten till två processorer. En hyperthreading processor med åtta kärnor är den funktionella motsvarigheten till 16 processorer.
  • paket – den fysiska komponenten som innehåller en eller flera kärnor, såsom den som visas i Figur 1 ovan.
  • Processor – 1) En enhet som behandlar programinstruktioner för att manipulera data. 2) används ofta som en synonym för paket.,
  • Socket-används ibland som en annan synonym för paket, men det hänvisar mer exakt till det fysiska uttaget på moderkortet där processorpaketet sätts in.

termerna uttag, processor och paket används ofta omväxlande, vilket kan orsaka viss förvirring. Som vi ser från kommandot lscpu ovan ger Intel oss sin egen terminologi, och jag anser att den auktoritativa källan., I verkligheten använder vi alla dessa termer på olika sätt, men så länge vi förstår varandra vid varje given tidpunkt är det det som verkligen betyder något.

Observera att processorn ovan har två nivå 1-cachar på 512 kB vardera, en för instruktioner (L1i) och en för data (L1D). Nivån 1 cache är närmast CPU, och det snabbar upp saker att ha instruktioner och data separata vid denna tidpunkt. Nivå 2 och nivå 3 Cachar är större, men instruktioner och data finns i varje.

vad betyder allt detta?

bra fråga., Tillbaka i de första dagarna av mainframes hade varje dator bara en enda CPU och var oförmögen att köra mer än ett program samtidigt. Huvuddatorn kan köra Lönelista, sedan lagerbokföring, sedan kundfakturering och så vidare, men endast ETT program kan köras i taget. Varje program var tvungen att avsluta innan systemoperatören kunde starta nästa.

några tidiga försök att köra flera program på en gång tog ett enkelt tillvägagångssätt och syftade till bättre utnyttjande av en enda CPU., Till exempel laddades program1 och program2, och program1 sprang tills det blockerades och väntade på att I/O skulle inträffa. Vid den tiden sprang program2 tills det blockerades. Detta tillvägagångssätt kallades multi-processing och hjälpte till att fullt ut utnyttja värdefull datortid.

tidiga försök att multitasking alla inblandade byta exekverings sammanhang av en enda CPU mycket snabbt mellan exekveringsströmmar av flera uppgifter. Denna praxis är inte sant multitasking som vi förstår det eftersom det i verkligheten bara behandlas en enda tråd av utförande åt gången. Det kallas mer korrekt tidsdelning.,

moderna datorer, från smarta klockor och surfplattor till superdatorer, alla stöder äkta multitasking med flera processorer. Flera processorer gör det möjligt för datorer att köra många uppgifter samtidigt. Varje CPU utför sina egna funktioner samtidigt som alla andra processorer. En åtta kärnprocessor med hyperthreading (dvs 16 processorer) kan köra 16 uppgifter samtidigt.

slutliga tankar

vi tittade på en konceptualiserad och förenklad CPU för att lära oss lite om strukturer. Jag skummade knappt ytan av processorns funktionalitet i den här artikeln., Du kan lära dig mer genom att ta de inbäddade länkarna för de ämnen vi utforskade.

Kom ihåg att diagrammen och beskrivningarna i den här artikeln är rent konceptuella och inte representerar någon faktisk CPU.

i nästa del av denna serie tittar jag på RAM och hårddiskar som olika typer av lagring och varför var och en är nödvändig för moderna datorer.