Wat een CPU doet
Een processor van 3 GHz tikt 3 miljard keer per seconde: één tik per derde nanoseconde.
Stel je een computerles voor. (Dit is een verzonnen situatie.) Op het bord staan zestien genummerde vakken met elk acht bits. Drie leerlingen spelen de CPU. Eén houdt een kaart PC vast, één IR en één ACC. Op PC staat 0. De IR-leerling loopt naar vak 0 en schrijft de inhoud over: 0001 1110. De PC-leerling verandert de kaart naar 1. De klas zoekt de eerste vier bits op in een wandtabel: 0001 betekent LOAD. De laatste vier, 1110, zijn 14. De ACC-leerling gaat dus naar vak 14 en neemt de 7 over die ze daar vindt. Daarna begint alles opnieuw bij vak 1.
Vak 1 zegt ADD 15, dus ACC wordt 7 + 5 = 12. Vak 2 zegt STORE 13 en de ACC-leerling schrijft 12 in vak 13. Vak 3 zegt HALT en iedereen gaat zitten. Twaalf handelingen. Niemand hoefde te weten dat het programma ‘7 en 5 optelt’. Elk volgde één regel. De vakken zijn geheugen, de kaarten registers, de wandtabel de decoder. Een echte CPU doet hetzelfde miljarden keren per seconde zonder het programma te begrijpen.
Dezelfde korte lus, miljarden keren per seconde
Poorten tellen op, vergelijken en kiezen, maar iets moet bepalen wat, in welke volgorde en met welke getallen. Dat doet de centrale verwerkingseenheid, CPU, in een korte lus. De programmateller (PC) bewaart het adres van de volgende instructie. Ophalen: de CPU leest die cel in het instructieregister (IR) en verhoogt PC met één. Decoderen: besturingsschakelingen lezen de opcode en kiezen de juiste paden, zoals de opteller voor ADD. Uitvoeren: een getal wordt geladen, opgeteld of opgeslagen, of PC verandert voor een sprong. Dan begint de lus opnieuw. JZ springt alleen bij accumulator nul; zo kan een programma kiezen en herhalen.
Sleep om te draaien. Scroll of knijp om te zoomen.
De scène draait het nagespeelde programma. Druk op Stap: PC, IR en ACC veranderen als de kaarten: LOAD 14, ADD 15, STORE 13, HALT. Vier instructies van drie fasen, samen twaalf. Het vermenigvuldigingsprogramma gebruikt dezelfde instructies, maar JZ en JUMP sturen PC tweemaal terug naar 0 voordat de teller in cel 15 nul wordt. Het draait dus 24 instructies in 72 fasen: zesmaal zoveel als de optelling.
Het programma staat in hetzelfde geheugen als de getallen
Op het bord stonden instructies en de getallen 7 en 5 in dezelfde vakkenrij. Dat is bewust. In juni 1945 schreef John von Neumann First Draft of a Report on the EDVAC, over instructies en gegevens in hetzelfde geheugen. Bijna elke computer werkt sindsdien zo. Een instructie is een getal met bitvelden. Elke cel van de oefencomputer bevat 8 bits: de eerste vier noemen de bewerking, de opcode; de laatste vier de cel, het adres. 0001 is LOAD, dus 0001 1110 is ‘LOAD 14’: kopieer cel 14 naar de accumulator, het werkregister van de CPU.
Hoe snel de lus draait
De stappen volgen een kloksignaal, een spanning die regelmatig aan en uit gaat. Een klok van 3 GHz tikt 3 000 000 000 keer per seconde: één tik duurt 1 ÷ 3 000 000 000 seconde, ongeveer 0.333 nanoseconde. Licht legt dan maar ongeveer 10 centimeter af. Met één fase per tik kan het 7 + 5-programma 250 miljoen keer per seconde draaien. Echte processors maken niet zo eenvoudig één instructie per tik af. Ze overlappen fasen zoals een lopende band: pipelining. Moderne chips bevatten ook meerdere complete processors, kernen, naast elkaar. De oefencomputer heeft dat niet; daarom kun je hem met de hand volgen.
| Opcode | Naam | Werking |
|---|---|---|
| 0000 | HALT | Stoppen |
| 0001 | LOAD a | ACC = cel a |
| 0010 | ADD a | ACC = ACC + cel a |
| 0011 | SUB a | ACC = ACC − cel a |
| 0100 | STORE a | cel a = ACC |
| 0101 | JUMP a | PC = a |
| 0110 | JZ a | als ACC = 0, PC = a |
- ‘PC telt het aantal uitgevoerde instructies.’ PC bewaart het adres van de volgende instructie. In 4 × 3 gaat hij tweemaal terug naar 0 terwijl het aantal afgeronde instructies oploopt tot 24.
- ‘De CPU leest een programma zoals wij.’ Hij leest 8 bits, splitst ze in opcode en adres en volgt de vaste bedrading van de opcode. Net als de leerlingen weet hij niet dat het programma 7 en 5 optelt.
- ‘Meer GHz betekent altijd een snellere computer.’ De klok bepaalt hoe vaak een stap kan gebeuren, niet hoeveel elke tik doet. Echte chips overlappen fasen en hebben meerdere kernen. Twee chips met dezelfde GHz kunnen dus sterk verschillen in werk.
- Zet de fasen van de instructiecyclus in volgorde.
- De CPU haalt instructieadres 3 op. Wat is PC meteen daarna?
- Wat betekent 0010 1111 in de oefencomputer?
- ADD 15
- LOAD 15
- STORE 2
- ADD 7
- Schrijf LOAD 14 als 8 bits.
- Een klok draait op 3 GHz. Hoelang duurt één tik in nanoseconden? (drie decimalen)
- Hoeveel instructies draait het 7 + 5-programma, inclusief HALT?
- Elke instructie kost drie fasen. Hoeveel fasen vraagt 7 + 5?
- Wat doet STORE 13?
- De accumulator naar cel 13 kopiëren
- Cel 13 naar de accumulator kopiëren
- Naar adres 13 springen
- 13 bij de accumulator optellen
- Welke instructie laat een lus herhalen totdat een teller nul wordt?
- JZ (springen bij nul)
- STORE
- HALT
- LOAD
- In welk jaar schreef von Neumann First Draft of a Report on the EDVAC?
- Programma's staan als getallen in hetzelfde geheugen als gegevens (von Neumann, 1945).
- De CPU herhaalt ophalen, decoderen, uitvoeren; PC wijst naar de volgende instructie.
- Instructiebits splitsen in opcode en adres.
- De klok bepaalt het tempo: 3 GHz is één tik per 0.333 ns.
Bronnen van deze cursus (10)
- (checked 2026-10-17)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Teaching model: the toy computer in the network-lab scene (16 cells of 8 bits, 4-bit opcode and 4-bit address) is made for this course, not a real chip. History blocks only (the logic-gates story and the von Neumann paragraph of the-cpu): George Boole, An Investigation of the Laws of Thought (1854, Project Gutenberg 15114)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
Geraadpleegd: 2026-10-17