ALU - Arithmetic logic unit
We hebben nu gezien dat we schakelingen kunnen maken om:
AND, OR, NOT, XOR etc mee te doen op 1 of meer bits
Optellen en aftrekken (negatief optellen) van twee woorden (getallen) van 1 of meer bits
Twee binaire woorden controleren op gelijkheid
Een CPU kan echter veel meer. Je kunt bijvoorbeeld denken aan vermenigvuldigen en delen van getallen, bits in een woord opschuiven (SHIFT), getallen van en naar het geheugen verplaatsen, conditioneel code uitvoeren en nog veel meer, bijvoorbeeld met decimale getallen werken (floating point) en een woord met 1 ophogen.
SHIFT
Shift betekent verschuiven en in de informatica betekent dit het verschuiven van bits in een (binair) woord. Dit is een belangrijke operatie en we kunnen laten zien waarom. Bekijk het volgende binaire 8-bits woord:
00011001
Welk decimale getal is hier weergegeven?
Stel nu dat we de bits 1 naar links opschuiven en aanvullen met een 0 (shift left):
00110010
Welk decimale getal is hier weergegeven?
Je ziet dat het getal twee keer zo groot is geworden omdat alle 1-en in het woord een twee keer zo hoge macht van twee aanwijzen. Dus shift left zorgt voor vermenigvuldiging met 2.
Vermenigvudigen
Vermenigvuldigen is herhaald optellen. Met behulp van de SHIFT operatie kan een processor sneller herhaald optellen maar je hebt dus niet een aparte logische schakeling nodig in de ALU om te vermenigvuldigen. Klinkt gek dus laten we kijken hoe dat bijvoorbeeld kan werken.
Stel we willen 3 * 10 uitrekenen.
We kunnen 0000 0011 (dec 3) drie keer naar links shiften tot 0001 1000 om 3 * 8 te krijgen. Vervolgens shiften we 0000 0011 nog een keer om 3 * 2 te krijgen.
3 * 8 en 3 * 2 tellen we bij elkaar op en dan krijgen we 3 * 10!
ALU
Een ALU is het rekenkundige hart van een CPU. De basisbewerkingen zijn:
SHIFT bits in een woord naar links of naar rechts
Eenvoudige rekenkundige bewerkingen op twee woorden als optellen, ophogen met 1 en alle bits omdraaien
Logische bewerkingen als AND, OR, NOT, XOR etc op 1 of meer bits
Per processor kan de ALU heel erg verschillen. Je kunt ook complexere ALUs maken die meer bewerkingen kunnen uitvoeren. Je hebt net gezien dat je bijvoorbeeld vermenigvuldiging kunt doen door te schuiven en herhaald op te tellen.
De basisbewerkingen geven je in principe genoeg mogelijkheden om alle bewerkingen op (gehele) getallen uit te voeren. Voor decimale getallen (floating point numbers) worden vaak aparte circuits in een processor gemaakt. We gaan daar niet verder op in in dit boek.
Last updated
Was this helpful?