Computerdenken
Getallen en Logica
Computer: Logische opbouw (von Neumann)
CPU: Central Processing Unit
● Één voor één instructies uitvoeren dmv klok
- Rekenen: add, subtract, …
- Logische instructies: and, or, …
- Data instructies: load, store, …
- ‘Program Flow’ instructies: jump, call, …
Geheugen: Random Access Memory (RAM)
● Binaire getalrepresentatie
● 8 bits = adres
Binaire getalrepresentatie
● machten van 2 (2 symbolen: 1 en 0)
● 110110
● bit: 1 symbool, nibble: 4 bits, byte: 8 bits, 16-bit word: 2 bytes, 32-bit word: 4 bytes…
● Decimaal naar binair:
- 98 → grootste macht van 2 die er in past is 64 → 98 - 64 = 34,
begint met 1 → daarna alle machten van 2 die kleiner zijn afgaan →
past het er in? zet een 1 neer → past het niet? zet een 0 neer
● Binair naar decimaal
- 1101 → voor elke 1 geldt er zit een macht van 2 in → 1 (2^3) + 1
(2^2) + 0 (0^1) + 1 (2^0) = 8 + 4 + 0 + 1 = 13
Hexadecimale getalrepresentatie
● Machten van 16 (16 symbolen: 0123456789ABCDEF)
● Zelfde doen als binaire getalrepresentatie, maar dan met machten van 16
Digitale Logica
● and = beide moeten gelden
● or = a, b of allebei moeten gelden
● xor = a óf b moet gelden, niet allebei
● nand/nor/xnor = omgekeerde van and, or en xor
, CPU, representaties
Geklokte logica
● Inputs worden enkel ‘gezien’ tijdens een opgaande klokpuls. Rest klokperiode is
beschikbaar om de input te verwerken en de juiste waarde op de uitgang te krijgen.
CPU, toycomputer
● CPU: uitvoeren instructies
● Geheugen: instructies en gegevens
● Assembler: representatie naar geheugen door elk commando een waarde te geven
● Accumulator: geheugentje voor 1 getal in de CPU voor een ‘tussenresultaat’
● Program Counter (PC): geheugenadres volgende instructie
- get: get a number from the keyboard into the accumulator
- print: print the contents of the accumulator
- load Val: load accumulator with Val
- store M: store contents of accumulator in memory location M
- add Val: add Val to the contents of the accumulator
- sub Val: subtract Val to the contents of the accumulator
- goto L: go to instruction labeled L
- ifpos L: go to instruction labeled L, if accumulator >= zero
- ifzero L: go to instruction labeled L, if accumulator = 0
- stop: stop running
- M: Num: label for memory location. Initialize to value Num.
Microcode
● Uitvoering instructies:
1. ophalen instructies uit geheugen
2. decoderen instructies
3. uitvoeren instructie (microcode: 1 per klokpuls)
4. resultaat ophalen
Optimalisaties
● Cache
- Lokale kopie van gedeelte van het geheugen in een klein, snel geheugen
(caches), dichtbij de CPU
● Pipeline
- Uitvoering van één instructie gaat in meerdere stappen
● Parallellisatie
- Meerdere CPU-Cores die elk één of meerdere instructie reeksen (threads)
kunnen uitvoeren
Digitale representatie
● Tekst
- Letter representeren als getal
- Sleutel is belangrijk: ASCII, Unicode
● Graaf
- Datastructuur bestaande uit knopen (vertex) en zijden (edge)
- Zijde als set van 3 getallen representeren (van, naar, gewicht)
- Problemen: aantal knopen? - eerst het aantal of stopteken als einde
- Connectiematrix lost dit ook op
● Afbeelding