Een CPU maken

Zoals in het begin van deze lessenreeks reeds vermeld, is het uiteindelijke doel het maken van een processor. In de voorbije labo’s is hiervoor de basis gelegd.

Een processor kan, met een beetje fantasie, gezien worden als een chef-kok die een recept maakt. De chef volgt het recept stap voor stap.

  1. Schuif een latje of blaadje naar onder voor de volgende regel van het recept te bepalen,
  2. lees de volgende regel in het recept,
  3. probeer te ontcijferen wat deze instructie wilt zeggen,
  4. en voer de instructie uit.

Een processor doet hetzelfde rondje als de chef:

  1. Verhoog de program counter,
  2. haal de volgende instructie van het programma op uit geheugen,
  3. decodeer de instructie,
  4. en voer de instructie uit.
Image courtesy: Microsoft Copilot - Untitled

De figuur hieronder geeft het blokschema weer van processor die er gemaakt dient te worden. De groene blokken in het blokschema zijn componenten die gemaakt zijn in voorgaande hoofdstukken. De rode blokken in het blokschema zijn componenten die voor jullie gemaakt zijn. Wat er nog rest is de (blauwe blok): de program counter.

Programmeren is de kunst om goede recepten op te stellen. Deze zullen aan de hand van tools vertaald worden naar recepten die de processor kan uitvoeren.

Hoge(-re) programmeertaal

Software wordt geschreven in een hoge(-re) programmeertaal. Denk bijvoorbeel aan Python, Java, C, Rust, of GO.

Assembly

De software wordt aan de hand van een aantal tussenstappen (afhankelijk van het abstractieniveau van de taal) omgezet naar assembly code. Dit wordt gedaan door een interpreter of een compiler .

Machinetaal

De assembler zet tenslotte de gegeneerde assembly om naar machine code

De uiteindelijke machinetaal zal uiteraard afhangen van de processor die deze instructies moet uitvoeren. ISA staat voor Instruction set architecture en beschrijft hoe instructies opgebouwd moeten worden zodat de CPU deze kan uitvoeren.