een processor is opgebouwd uit verschillende logische componenten.
je hebt allereerst een aantal registers. dat zijn zeg maar geheugenadressen waarin één woord kan worden opgeslagen.
Wat een woord precies is, hangt hel erg van de processor af, maar meestal zijn dit 32 of 64 bits. Het voordeel van een register is dat de data die erin staat heel snel is op te vragen (sneller dan de data in het cache-geheugen en veel sneller dan uit het gewone geheugen). In die registers (zijn er meestal niet zo erg veel, in de orde van 16-64 stuks) worden allerlei gegevens opgeslagen.
Zo heb je het "PC"-register, daarin wordt de programm-counter opgeslagen (dus een aanwijzing, waar de CPU is met de uitvoer van de instructies).
Verder heb je een ALU (arithmetische logische unit), hierin worden de berekeningen uitgevoerd, zoals optellen en aftrekken, vermenigvuldigen etc. Wat de Alu allemaal kan is per processor verschillend (een ALU van een PIII kan bijv meer dan die van een pentium-II)
Om een berekening te kunnen doen, moet de CPU eerst de data klaar zetten in registers en de uitkomst komt ook in een register te staan.
Vaak moeten de instructies in delen worden opgehaald en gedecodeerd worden. Bijvoorbeeld een 32-bits machine die 2 64-bits getallen moet optellen. Dat kost meerdere stappen om alle data voor deze instructie binnen te halen.
Voor dergelijke "ingewikkelde" instructies zijn dus meerdere stappen nodig. Deze stappen worden gestuurd door een klein programma-tje in de CPU (soort ROM dus) deze software heet de microcode.
Er wordt ook gebruik gemaakt van dergelijke micro-code in sommige ALU's, voor de wat ingewikkelder berekeningen. In het begin van de Pentium's zat er bijvoorbeeld een fout in die micro-code (eigenlijk in een tabel) waardoor deze fouten maakte met een aantal delingen.
In de CPU zitten nog enkele bijzondere registers, zoals schuif- en adress-registers. Een schuifregister kan de inhoud één bitje naar links danwel naar rechts schuiven. Hiermee kun je allerlei nuttige dingen doen, zoals bijvoorbeeld 2x of delen door 2.
In het adressregister kan een nieuw adres neer gezet worden waar de volgende opdracht uitgevoerd kan worden.
Dit kun je zien als een "goto" uit het aloude basic tijdperk. Vaak gebruik je dat om een bepaalde lus uit te voeren of om een procedure aan te roepen, maar je wilt wel weer terug kunnen, wanneer die lus afgelopen is.
Hiervoor heb je in de CPU een stack zitten.
Voordat er een jump gemaakt wordt, worden een aantal registerwaarden op de stack gezet (en wordt de stack-pointer, die naar de top van de stack wijst, verhoogd).
Als er later weer terug gegaan moet worden, worden deze registers (in omgekeerde volgorde) van de stack gehaald en kun je weer verder (of nog weer verder terug).
De stack wordt tegenwoordig vaak op de CPU bijgehouden, in de cache.
Verder wordt er in de cache ook nog data vast gehouden waarvan de CPU vermoed dat deze nog weer nodig is, zodat deze data niet steeds weer uit het geheugen gehaald moet worden (wat vele malen trager is).
Op de CPU wordt ook nog (vaak) bijgehouden wat er wel in de cache zit en wat niet. Dit wordt (vaak) gedaan door de MMU (memory manager unit) op de CPU. Dit is een vrij ingewikkelde taak en de MMU beslaat dan ook vaak een groot gedeelte van het chip-oppervlak. (niet zo veel als de cache natuurlijk)
Verder zit er natuurlijk nog een hele boel meer op /in een CPU, maar ik denk dat je hier al wel een hoop aan hebt.
Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)