Computerarchitectuur gaat over de opbouw van een computer: welke onderdelen er zijn, wat hun taak is en hoe ze met elkaar samenwerken. Hoewel computers sinds de eerste elektronische machines enorm zijn veranderd, werken ze nog altijd volgens dezelfde basisprincipes. Wie die kent, begrijpt beter waarom een computer snel of traag is.
De von Neumann-architectuur
De meeste computers volgen een model dat in 1945 werd beschreven door de wiskundige John von Neumann, voortbouwend op werk van anderen. Het belangrijkste idee: zowel de programma-instructies als de gegevens staan in hetzelfde geheugen. Een computer bestaat in dit model uit:
- een rekeneenheid, die bewerkingen uitvoert;
- een besturingseenheid, die bepaalt welke instructie wordt uitgevoerd;
- geheugen voor instructies en gegevens;
- invoer en uitvoer, om met de buitenwereld te communiceren.
Rekeneenheid en besturingseenheid zitten tegenwoordig samen in de processor.
De instructiecyclus
Een processor werkt in een vaste cyclus: hij haalt een instructie op uit het geheugen (fetch), bepaalt wat die instructie betekent (decode) en voert hem uit (execute). Daarna volgt de volgende instructie. Dat gebeurt miljarden keren per seconde, gestuurd door een kloksignaal. Moderne processors voeren bovendien meerdere instructies tegelijk of overlappend uit.
De geheugenhiërarchie
Een processor is veel sneller dan het geheugen waar hij zijn gegevens uit haalt. Daarom werken computers met lagen geheugen. Dicht bij de rekeneenheid zitten registers en cachegeheugen: heel snel, maar klein. Daarna volgt het werkgeheugen, groter maar trager. De opslag op een SSD of harde schijf is het grootst en het traagst, maar onthoudt gegevens ook zonder stroom. De kunst is om de gegevens die nu nodig zijn, zo dicht mogelijk bij de processor te houden.
Instructiesets
Elke processor begrijpt een eigen set basisinstructies, de instructieset. Bekende families zijn x86, dat veel in pc’s wordt gebruikt, en ARM, dat in vrijwel alle smartphones en steeds vaker in laptops zit. Software moet geschikt zijn voor de instructieset van de processor, of worden vertaald. Dat is de reden dat een programma niet zomaar op elke computer werkt.