1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
2Ben Bruidegom 2 Recapitulatie rekenmachines Vier hoofdcomponenten en hun samenhang
3Ben Bruidegom 3 Rekenmachine II
4Ben Bruidegom 4 Instructieset Rekenkundige en logische instructies ADD SUB AND Immediate instructies (Instructies met één constant getal) LOADI ADDI SUBI ANDI Datatransfer COPY
5Ben Bruidegom 5 Instructieset van Rekenmachine II InstructieBetekenisVoorbeeldBetekenis ADD rd, rs, rtOptellen registersADD $5, $6, $7r5 r6 + r7 SUB rd, rs, rtAftrekken registersSUB $5, $6, $7r5 r6 - r7 AND rd, rs, rtBitwise AND registersAND $5, $6, $7r5 r6 & r7 COPY rd, rtCopy registerCOPY $3, $2r3 r2 ADDI rd, rs, immOptellen register en constanteADDI $5, $6, 0x1234r5 r6 + 0x1234 SUBI rd, rs, immAftrekken register en constanteSUBI $7, $6, 0x1234r7 r6 - 0x1234 ANDI rd, rs, immBitwise AND register en const.ANDI $5, $6, 0d34r5 r6 & 0d34 LOADI rd, immLaad getal in registerLOAD $1, 0x 0020r1 0x0020
6Ben Bruidegom 6 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachine Van rekenmachine naar rekenmachine met “loopjes”
7Ben Bruidegom 7 Uitbreiding instructieset met Branch- instructies: Rekenkundige en logische instructies ADD SUB AND COPY Immediate instructies (Instucties met één constant getal) ADDI SUBI ANDI LOADI Branch instucties BZ (Branch if zero) BEQ (Branch if equal) BRA (Branch always)
8Ben Bruidegom 8 Voorwaarden Branch-instructie Een sprong in een programma wordt alleen uitgevoerd als: - er een Branch-instructie geprogrammeerd is én - de Zero-uitgang van de ALU 1 is.
9Ben Bruidegom 9 Uitbreiding hardware Componenten die de voorwaarden scheppen om een sprong mogelijk te maken. Dit zijn: een Branch-bit; een extra ALU-uitgang; (zero flag) een AND-poort; een LoadPC-ingang zodat de PC naar een andere waarde kan gaan de volgende; een extra Adder om het adres te berekenen waar de PC naar toe moet springen.
10Ben Bruidegom 10 ALU met Zero-flag A B 11 Z Y(y 15, y 14,….,y 0 )
11Ben Bruidegom 11 Wanneer wordt een branch-instructie uitgevoerd? Evaluatie conditie (zero)
12Ben Bruidegom 12 Wanneer wordt een branch-instructie uitgevoerd? Evaluatie conditie (zero) Er gelden twee voorwaarden: Branch-instructie Zero-flag is 1 (ALU-resultaat is 0) De uitgang van de AND-poort wordt dan 1 en deze stuurt LoadPC
13Ben Bruidegom 13 Naar welke instructie springt de PC? Huidige waarde PC is 5; FFFD = -3; 3 instructies terug; Nieuwe waarde PC wordt 2
14Ben Bruidegom 14 Naar welke instructie springt de PC? Syntax : BEQ rs, rt, label Voorbeeld: BEQ $7, $5, label Betekenis: if (inhoud register 7 = inhoud register 5) goto label Welke operatie moet de ALU uitvoeren?
15Ben Bruidegom 15 Waarom is er een RegWrite-lijn nodig?
16Ben Bruidegom 16 Wanneer wordt er gesprongen? Clock ALU Zero Branch LoadPC Voorwaarden sprong: Branch = 1 Zero = 1 Opgaande klokflank tijd
17Ben Bruidegom 17 Wanneer wordt er gesprongen? Clock ALU Zero Branch LoadPC Voorwaarden sprong: Branch = 1 Zero = 1 Opgaande klokflank tijd
18Ben Bruidegom 18 Spikes & glitches Clock ALU Zero Branch LoadPC spike glitch tijd
19Ben Bruidegom 19 Toelichting opdracht 8 Vermenigvuldigen op de basisschool Multiplicand a 1210 Multiplier b Product
20Ben Bruidegom 20 Vermenigvuldigen binair Multiplicand a 1010 Multiplier b Product
21Ben Bruidegom 21 Multiplicand a 1010 Multiplier b Product Vermenigvuldigen binair
22Ben Bruidegom 22 Multiplicand a 1010 Multiplier b Product Vermenigvuldigen binair
23Ben Bruidegom 23 Multiplicand a 1010 Multiplier b Product Vermenigvuldigen
24Ben Bruidegom 24 Multiplicand a 1010 Multiplier b Product Shifting & Masking b1101result0000 mask0001a1010 b AND mask0001ADD(a, result)1010
25Ben Bruidegom 25 Multiplicand a 1010 Multiplier b Product Shifting & Masking b1101result1010 mask0010a10100 b AND mask0000No ADD ADD mask, mask, mask = Shl 1, mask ADD a, a, a = Shl 1, a
26Ben Bruidegom 26 Multiplicand a 1010 Multiplier b Product Shifting & Masking b1101result1010 mask0100a b AND mask0100ADD(a, result)110010
27Ben Bruidegom 27 Multiplicand a 1010 Multiplier b Product Shifting & Masking b1101result mask1000a b AND mask1000ADD(a, result)