de legaten van eerdere ontwerpen, zoals Babbage ‘ s difference engine en de mainframe ponskaartsystemen van de jaren zeventig, hebben een aanzienlijke impact op de huidige computersystemen. In mijn eerste artikel in deze historische serie, computergeschiedenis en moderne computers voor systeembeheerders, besprak ik verschillende voorlopers van de moderne computer en gaf ik een opsomming van kenmerken die wat we tegenwoordig een computer noemen, definiëren.,

In dit artikel bespreek ik de centrale verwerkingseenheid (CPU), inclusief de componenten en functionaliteit. Veel van de onderwerpen verwijzen terug naar het eerste artikel, dus zorg ervoor om het te lezen als je nog niet hebt.

de centrale verwerkingseenheid (CPU)

de CPU in moderne computers is de belichaming van de “molen” in Babbage ‘ s difference engine. De term centrale verwerkingseenheid ontstond ver terug in de mist van de computer tijd toen een enkele massieve kast bevatte de circuits die nodig zijn om machine-niveau programma-instructies te interpreteren en bewerkingen uit te voeren op de geleverde gegevens., De centrale verwerkingseenheid voltooide ook alle verwerking voor aangesloten randapparatuur. Randapparatuur omvatte printers, kaartlezers en vroege opslagapparaten zoals drum-en diskdrives. Moderne perifere apparaten hebben een aanzienlijke hoeveelheid rekenkracht zelf en off-load sommige verwerking taken van de CPU. Dit bevrijdt de CPU van input/output taken zodat zijn macht wordt toegepast op de primaire taak bij de hand.

vroege computers hadden slechts één CPU en konden slechts één taak tegelijk uitvoeren.,

We behouden de term CPU vandaag, maar nu verwijst het naar het processorpakket op een typisch moederbord. Figuur 1 toont een standaard Intel processor pakket.

Image

figuur 1: een Intel Core i5 processorpakket (Jud McCranie via Wikimedia Commons, CC BY-SA 4.0).

Er is hier echt niets anders te zien dan het processorpakket zelf. Het processorpakket is een chip met de processor(s) die in een metalen container is verzegeld en op een klein printplaatje (PC) is gemonteerd., Het pakket wordt gewoon op zijn plaats laten vallen in de CPU-aansluiting op een moederbord en beveiligd met een vergrendelingshendel. Een CPU-koeler wordt aan het processorpakket bevestigd. Er zijn verschillende fysieke sockets met specifieke aantallen contacten, dus het is essentieel om het juiste pakket te krijgen dat op het moederbord past als u uw eigen computers bouwt.

hoe de CPU werkt

laten we eens kijken naar de CPU in meer detail. Figuur 2 is een conceptueel diagram van een hypothetische CPU zodat u de componenten gemakkelijker kunt visualiseren., Het RAM-geheugen en de systeemklok zijn gearceerd omdat ze geen deel uitmaken van de CPU en alleen voor de duidelijkheid worden weergegeven. Ook worden er geen verbindingen tussen de CPU-klok en de besturingseenheid naar de CPU-componenten getrokken. Het volstaat te zeggen dat signalen van de klok en de besturingseenheid een integraal onderdeel zijn van elk ander onderdeel.

Image

Figuur 2: een vereenvoudigd conceptueel diagram van een typische CPU.

dit ontwerp ziet er niet bijzonder eenvoudig uit, maar de realiteit is nog ingewikkelder., Dit cijfer is voldoende voor onze doeleinden zonder al te complex te zijn.

rekenkundige logische eenheid

de rekenkundige logische eenheid (ALU) voert de rekenkundige en logische functies uit die het werk van de computer zijn. De A-en B-registers bevatten de invoergegevens en de accumulator ontvangt het resultaat van de operatie. Het instructieregister bevat de instructie die de ALU moet uitvoeren.

bijvoorbeeld, wanneer twee getallen worden toegevoegd, wordt een getal in het A-register geplaatst en het andere in het B-register. De ALU voert de toevoeging uit en plaatst het resultaat in de accumulator., Als de bewerking logisch is, worden de te vergelijken gegevens in de invoerregisters geplaatst. Het resultaat van de vergelijking, een 1 of 0, wordt in de accumulator geplaatst. Of dit nu een logische of rekenkundige bewerking is, de accumulatorinhoud wordt dan in de cachelocatie geplaatst die door het programma voor het resultaat is gereserveerd.

Er is een ander type operatie uitgevoerd door de ALU. Het resultaat is een adres in het geheugen, en het wordt gebruikt om een nieuwe locatie in het geheugen te berekenen om te beginnen met het laden van instructies. Het resultaat wordt in het instructiepointer register geplaatst.,

Instructieregister en aanwijzer

de aanwijzer geeft de locatie in het geheugen aan die de volgende instructie bevat die door de CPU moet worden uitgevoerd. Wanneer de CPU de uitvoering van de huidige instructie voltooit, wordt de volgende instructie in het instructieregister geladen vanaf de geheugenlocatie waarnaar door de instructiewijzer wordt verwezen.

nadat de instructie in het instructieregister is geladen, wordt de aanwijzer van het instructieregister verhoogd met één instructieadres. Verhogen maakt het mogelijk om klaar te zijn om de volgende instructie naar het instructieregister te verplaatsen.,

Cache

de CPU heeft nooit direct toegang tot RAM. Moderne CPU ‘ s hebben een of meer lagen van cache. De capaciteit van de CPU om berekeningen uit te voeren is veel sneller dan de capaciteit van het RAM om gegevens aan de CPU te voeden. De redenen hiervoor vallen buiten het toepassingsgebied van dit artikel, maar Ik zal het verder onderzoeken in het volgende artikel.

cachegeheugen is sneller dan het RAM-geheugen van het systeem, en het is dichter bij de CPU omdat het zich op de processorchip bevindt. De cache biedt gegevensopslag en instructies om te voorkomen dat de CPU wacht tot gegevens uit het RAM-geheugen worden opgehaald., Wanneer de CPU gegevens nodig heeft—en programma-instructies worden ook beschouwd als gegevens-bepaalt de cache of de gegevens al in residence zijn en geeft het aan de CPU.

als de gevraagde gegevens niet in de cache zitten, wordt deze opgehaald uit het RAM-geheugen en gebruikt voorspellende algoritmen om meer gegevens van het RAM-geheugen naar de cache te verplaatsen. De Cache controller analyseert de gevraagde gegevens en probeert te voorspellen welke extra gegevens nodig zullen zijn van RAM. Het laadt de verwachte gegevens in de cache., Door sommige gegevens dichter bij de CPU te houden in een cache die sneller is dan RAM, kan de CPU bezig blijven en geen afvalcycli wachten op gegevens.

onze eenvoudige CPU heeft drie niveaus van cache. Levels 2 en 3 zijn ontworpen om te voorspellen welke gegevens en programma-instructies nodig zullen zijn, verplaatsen die gegevens van RAM, en steeds dichter bij de CPU om klaar te zijn wanneer dat nodig is. Deze cachegroottes variëren doorgaans van 1 MB tot 32 MB, afhankelijk van de snelheid en het beoogde gebruik van de processor.

De cache van Niveau 1 ligt het dichtst bij de CPU. In onze CPU zijn er twee soorten L1 cache., L1i is de instructie cache, en L1d is de data cache. Niveau 1 cachegroottes variëren meestal van 64 KB tot 512 KB.

Geheugenbeheereenheid

De geheugenbeheereenheid (MMU) beheert de gegevensstroom tussen het hoofdgeheugen (RAM) en de CPU. Het biedt ook geheugenbescherming die nodig is in multitasking-omgevingen en conversie tussen virtuele geheugenadressen en fysieke adressen.

CPU klok en besturingseenheid

alle CPU-componenten moeten worden gesynchroniseerd om soepel samen te werken., De besturingseenheid vervult deze functie met een snelheid die wordt bepaald door de kloksnelheid en is verantwoordelijk voor het sturen van de activiteiten van de andere eenheden door gebruik te maken van timing signalen die zich uitstrekken over de hele CPU.

Random access memory (RAM)

hoewel het RAM, of de hoofdopslag, in dit diagram en het volgende wordt getoond, is het niet echt een deel van de CPU. De functie is om programma ‘ s en gegevens op te slaan, zodat ze klaar zijn voor gebruik wanneer de CPU ze nodig heeft.

hoe het werkt

CPU ‘ s werken aan een cyclus die wordt beheerd door de besturingseenheid en gesynchroniseerd door de CPU-klok., Deze cyclus wordt de CPU instructiecyclus genoemd en bestaat uit een reeks fetch/decode/execute componenten. De instructie, die statische gegevens of verwijzingen naar variabele gegevens kan bevatten, wordt opgehaald en in het instructieregister geplaatst. De instructie wordt gedecodeerd en alle gegevens worden in de A-en B-registers geplaatst. De instructie wordt uitgevoerd met behulp van de A en B registers, met het resultaat in de accumulator. De CPU verhoogt dan de waarde van de instructie pointer met de lengte van de vorige en begint opnieuw.

de basis CPU instructiecyclus ziet er zo uit.,

Image

Figuur 3: de basis-CPU-instructiecyclus.

de behoefte aan snelheid

hoewel de basis CPU goed werkt, kunnen CPU ‘ s die op deze eenvoudige cyclus draaien nog efficiënter worden gebruikt. Er zijn meerdere strategieën voor het stimuleren van CPU-prestaties, en we kijken naar twee van hen hier.

druk opladen van de instructiecyclus

Eén probleem dat vroege CPU-ontwerpers tegenkwamen was verspilde tijd in de verschillende CPU-componenten., Een van de eerste strategieën voor het verbeteren van de CPU-prestaties overlapte de delen van de CPU-instructiecyclus om de verschillende delen van de CPU vollediger te gebruiken.

bijvoorbeeld, wanneer de huidige instructie is gedecodeerd, wordt de volgende opgehaald en in het instructieregister geplaatst. Zodra dat is gebeurd, wordt de instructiewijzer bijgewerkt met het geheugenadres van de volgende instructie. Het gebruik van overlappende instructiecycli wordt geïllustreerd in Figuur 4.,

Image

Figuur 4: de CPU-instructiecyclus met overlap.

Dit ontwerp ziet er mooi en soepel uit, maar factoren zoals het wachten op I/O kunnen de stroom verstoren. Het niet hebben van de juiste gegevens of instructies in de cache vereist dat de MMU om de juiste te lokaliseren en te verplaatsen naar de CPU, en dat kan enige tijd duren. Bepaalde instructies nemen ook meer CPU cycli te voltooien dan anderen, interfereren met soepele overlapping.

niettemin is dit een krachtige strategie om de prestaties van de CPU te verbeteren.,

Hyperthreading

een andere strategie om CPU-prestaties te verbeteren is hyperthreading. Hyperthreading maakt een enkele processor core werken als twee CPU ‘ s door het verstrekken van twee gegevens en instructie streams. Het toevoegen van een tweede instructiewijzer en instructieregister aan onze hypothetische CPU, zoals weergegeven in Figuur 5, zorgt ervoor dat het functioneert als twee CPU ‘ s, waarbij twee afzonderlijke instructiestreams worden uitgevoerd tijdens elke instructiecyclus. Ook, wanneer een uitvoering stream kraamt tijdens het wachten op gegevens-nogmaals, instructies zijn ook gegevens-de tweede uitvoering stream blijft verwerken., Elke kern die hyperthreading implementeert is het equivalent van twee CPU ‘ s in zijn vermogen om instructies te verwerken.

Image

Figuur 5: een conceptueel diagram van een CPU met hyperthreading.

onthoud dat dit een zeer vereenvoudigd diagram en uitleg is van onze hypothetische CPU. De realiteit is veel complexer.

meer terminologie

Ik ben veel verschillende CPU-terminologie tegengekomen., Om de terminologie wat explicieter te definiëren, laten we eens kijken naar de CPU zelf door het lscpu commando te gebruiken.

De Intel processor hierboven is een pakket dat wordt aangesloten op een enkele socket op het moederbord. Het processorpakket bevat zes kernen. Elke kern is in staat om hyperthreading, zodat elk kan draaien twee gelijktijdige threads voor een totaal van 12 CPU ‘ s.

mijn definities:

  • Core-een core is de kleinste fysieke hardwareeenheid die de verwerkingstaak kan uitvoeren. Het bevat één ALU en één of twee sets ondersteunende registers., De tweede reeks registers en ondersteunende schakelingen maakt hyperthreading mogelijk. Een of meer kernen kunnen worden gecombineerd in één fysieke verpakking.
  • CPU-een logische hardwareeenheid die in staat is om een enkele uitvoer thread te verwerken. Het moderne gebruik van de term centrale verwerkingseenheid verwijst naar het totale aantal threads dat een processorpakket gelijktijdig kan uitvoeren. Een single-core processor die geen hyperthreading ondersteunt is het equivalent van een enkele CPU. In dit geval zijn CPU en core synoniem., Een hyperthreading processor met een enkele kern is het functionele equivalent van twee CPU ‘ s. Een hyperthreading processor met acht kernen is het functionele equivalent van 16 CPU ‘ s.
  • pakket – de fysieke component die een of meer kernen bevat, zoals die in Figuur 1 hierboven.
  • Processor – 1) Een apparaat dat programma-instructies verwerkt om gegevens te manipuleren. 2) vaak gebruikt als synoniem voor pakket.,
  • Socket-soms gebruikt als een ander synoniem voor pakket, maar het verwijst nauwkeuriger naar de fysieke socket op het moederbord waarin het processorpakket is geplaatst.

De termen socket, processor en package worden vaak door elkaar gebruikt, wat verwarring kan veroorzaken. Zoals we zien uit de resultaten van het lscpu commando hierboven, geeft Intel ons zijn eigen terminologie, en ik beschouw dat als de gezaghebbende bron., In werkelijkheid gebruiken we die termen allemaal op verschillende manieren, maar zolang we elkaar op een bepaald punt begrijpen, is dat wat er echt toe doet.

merk op dat de processor hierboven twee niveau 1 caches van elk 512 KiB heeft, één voor instructies (L1i) en één voor data (L1d). De level 1 cache is het dichtst bij de CPU, en het versnelt dingen om instructies en gegevens te scheiden op dit punt. Niveau 2 en niveau 3 caches zijn groter, maar instructies en gegevens co-bestaan in elk.

wat betekent dit allemaal?

goede vraag., Terug in de vroege dagen van mainframes, elke computer had slechts een enkele CPU en was niet in staat om meer dan één programma tegelijk draaien. De mainframe zou kunnen draaien payroll, dan inventaris boekhouding, dan klant facturering, en ga zo maar door, maar slechts één applicatie kan draaien op een moment. Elk programma moest worden voltooid voordat de systeembeheerder het volgende programma kon starten.

sommige vroege pogingen om meerdere programma ‘ s tegelijk te draaien namen een eenvoudige aanpak en waren gericht op een beter gebruik van een enkele CPU., Bijvoorbeeld, program1 en program2 werden geladen, en program1 liep totdat het werd geblokkeerd wachtend op I/O optreden. Op dat moment liep program2 totdat het Geblokkeerd was. Deze aanpak werd multi-processing genoemd en hielp om waardevolle computertijd volledig te benutten.

vroege pogingen tot multitasking betroffen allemaal het zeer snel wisselen van de uitvoeringscontext van een enkele CPU tussen de uitvoerings-streams van meerdere taken. Deze praktijk is geen echte multitasking zoals we het begrijpen, omdat in werkelijkheid slechts een enkele draadje van uitvoering wordt verwerkt op een moment. Het wordt beter time-sharing genoemd.,

moderne computers, van slimme horloges en tablets tot supercomputers, ondersteunen echte multitasking met meerdere CPU ‘ s. Met meerdere CPU ‘ s kunnen computers veel taken tegelijkertijd uitvoeren. Elke CPU voert zijn eigen functies op hetzelfde moment als alle andere CPU ‘ s. Een acht-core processor met hyperthreading (d.w.z. 16 CPU ‘ s) kan 16 taken tegelijkertijd uitvoeren.

Final thoughts

we hebben gekeken naar een conceptuele en vereenvoudigde CPU om iets te leren over structuren. Ik schampte nauwelijks het oppervlak van de processor functionaliteit in dit artikel., U kunt meer te weten komen door de embedded links te nemen voor de onderwerpen die we verkenden.

onthoud dat de diagrammen en beschrijvingen in dit artikel zuiver conceptueel zijn en geen werkelijke CPU vertegenwoordigen.

In het volgende deel van deze serie zal ik naar RAM en disk drives kijken als verschillende soorten opslag en waarom elk nodig is voor moderne computers.

0