Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

49
Rekenen en Rekenen en rekenschakelingen rekenschakelingen Ben Bruidegom Ben Bruidegom AMSTEL Instituut AMSTEL Instituut FNWI UvA FNWI UvA

Transcript of Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Page 1: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Rekenen en Rekenen en rekenschakelingenrekenschakelingen

Ben BruidegomBen Bruidegom

AMSTEL Instituut FNWI AMSTEL Instituut FNWI UvAUvA

Page 2: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Rekenen en Rekenen en rekenschakelingenrekenschakelingen

Binaire codeBinaire code Hexadecimale codeHexadecimale code OptellenOptellen Two’s complement codeTwo’s complement code AftrekkenAftrekken Arithmetic Logic UnitArithmetic Logic Unit Sign extensionSign extension Look Ahead Carry GenerationLook Ahead Carry Generation VermenigvuldigenVermenigvuldigen

Page 3: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Decimale codeDecimale code

235 = 2* 10235 = 2* 1022 + 3* 10 + 3* 101 1 + 5 * 10+ 5 * 1000

Grondtal is 10Grondtal is 10

Binaire codeBinaire code 101 = 1* 2101 = 1* 222 + 0* 2 + 0* 21 1 + 1 * 2+ 1 * 200

Grondtal is 2Grondtal is 2

Page 4: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Binary codeBinary code

Binary code Decimal 23 22 21 20

0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 9 1 0 0 1

15 1 1 1 1

Page 5: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Binary code (Unsigned Binary code (Unsigned Integer)Integer)

1 of 0met

2222

...222

00

11

22

33

22

11

1

0

i

nn

nn

n

ii

iDecimal

a

aaaa

aaaA

Page 6: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = ….

1000 0111 = ….

Range: 0 ..

n = 8 Range 0 …

n = 16 Range 0 …

2 = 32 Range 0 ..

Unsigned IntegerUnsigned Integer

12 n

Page 7: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 =

Range: 0 ..

n = 8 Range 0 ..

n = 16 Range 0 ..

n = 32 Range 0 ..

Unsigned IntegerUnsigned Integer

12 n

Page 8: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 = 135

Range: 0 ..

n = 8 Range 0 ..

n = 16 Range 0 ..

n = 32 Range 0 ..

Unsigned IntegerUnsigned Integer

12 n

Page 9: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 = 135

Range: 0 ..

n = 8 Range 0 .. 255 (256 –1)

n = 16 Range 0 ..

n = 32 Range 0 ..

Unsigned IntegerUnsigned Integer

12 n

1248163264128255

Page 10: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 = 135

Range: 0 ..

n = 8 Range 0 .. 255

n = 16 Range 0 .. 65.536

n = 32 Range 0 ..

Unsigned IntegerUnsigned Integer

12 n

Page 11: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 = 135

Range: 0 ..

n = 8 Range 0 .. 255

n = 16 Range 0 .. 65.535

n = 32 Range 0 .. 4.294.967.295

Unsigned IntegerUnsigned Integer

12 n

Page 12: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hexadecimale codeHexadecimale code

Verkorte schrijfwijze binaire codeVerkorte schrijfwijze binaire code Grondtal 16Grondtal 16

Page 13: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hex. Binary Decimal 7 0111 7 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 0001 0000 16 11 .… …. .. .. .… …. 30 30 .… …. .. FE .… …. ..

Page 14: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hex. Binary Decimal 7 0111 7 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 0001 0000 16 11 0001 0001 17 .. .… …. 30 30 .… …. .. FE .… …. ..

Page 15: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hex. Binary Decimal 7 0111 7 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 0001 0000 16 11 0001 0001 17 1E 0001 1110 30 30 …. …. .. FE …. …. ..

Page 16: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hex. Binary Decimal 7 0111 7 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 0001 0000 16 11 0001 0001 17 1E 0001 1110 30 30 0011 0000 48 FE …. …. ..

Page 17: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Hex. Binary Decimal 7 0111 7 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 0001 0000 16 11 0001 0001 17 1E 0001 1110 30 30 0011 0000 48 FE 1111 1110 254

Page 18: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

OptellenOptellen

GetalGetal DecimaDecimaalal

BinairBinair

AA 2525 1 1 0 0 11 1 0 0 1

BB 2929 1 1 1 0 11 1 1 0 1

A + BA + B 5454 1 1 0 1 1 01 1 0 1 1 0

Page 19: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

OptellenOptellen

GetalGetal DecimaalDecimaal BinairBinair

transportransportt

1 1 11001 11001

AA 2525 1100111001

BB 2929 1110111101

A + BA + B 5454 1101101101101 onthouden

Page 20: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

OptelschakelingOptelschakeling

GetalGetal DecimaalDecimaal BinairBinair

transportransportt

1 1 111100001 1

AA 2525 11110000

11BB 2929

1111110011

A + BA + B 5454 110110111100

Half adder

Full adder

Sum bit

Carry bit

Page 21: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

PauzePauze

PIDAC-practicum opgaven 2.3.1 PIDAC-practicum opgaven 2.3.1 t/m 2.3.6t/m 2.3.6

Page 22: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Negatieve getallenNegatieve getallenOne’s complement codeOne’s complement code

11

00

00

00

....

....

....

....

11

11

00

00

11

11

00

11

11

11

11

00

11

11

11

11

00

00

00

00

00

00

00

11

00

00

11

00

00

00

11

11

....

....

....

....

00

11

11

11

--77

.... --33

--22

--11

--00

00 11 22 33 .... 77

Page 23: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Negatieve getallenNegatieve getallenTwo’s complement codeTwo’s complement code

11

00

00

00

....

....

....

....

11

11

00

00

11

11

00

11

11

11

11

00

11

11

11

11

00

00

00

00

00

00

00

11

00

00

11

00

00

00

11

11

....

....

....

....

00

11

11

11

--88

.... --44

--33

--22

--11

00 11 22 33 .... 77

Page 24: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Negatieve getallenNegatieve getallenHoe genereer ik een negatief Hoe genereer ik een negatief getal?getal?

Page 25: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Negatieve getallenNegatieve getallenHoe genereer ik een negatief Hoe genereer ik een negatief getal?getal?

getalgetal 0001 10010001 1001 2525

complementcomplement 1110 01101110 0110

11

Two’s Two’s complementcomplement

1110 01111110 0111 -25-25

Controle: -128 + 64 + 32 + 4 + 2 + 1 = -25

Page 26: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Negatieve getallenNegatieve getallen

2

0

11

00

11

22

22

11

22

222...22n

ii

inn

nn

nn

aaA

aaaaaA

Page 27: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

8 bit

0100 0000 = 64

1000 0111 = -121

Range: 0 ..

n = 8 Range –128 .. 127

n = 16 Range -32768 .. 32767

n = 32 Range –2147483648 .. 2147483647

Signed IntegerSigned Integer

12 n

Page 28: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Overflow in 4 bit systeemOverflow in 4 bit systeem

10111011

10101010-5-5

-6-6

1101001011

++55

antwoord 1001 + overflow

antwoord –7 + 16 = +9

00100111

01101100

33

66

10010011

-7-7

+ +

Negeren

4 bit systeem

antwoord 0101 + overflow

antwoord 5 - 16 = -11

Page 29: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Two’s complement codeTwo’s complement code

Page 30: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

AftrekkenAftrekken

1)( BABABA

Page 31: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Aftrekken : -3 – (+6) = -3 Aftrekken : -3 – (+6) = -3 +(-6)+(-6)

11011011

01101100

-3-3

66 - +

Negeren

4 bit systeem

antwoord 0111 + overflow

antwoord 7 - 16 = -9

11011101

10101010-3-3

-6-6

1101101111

77

0110

bits inverteren 1001

1 bij optellen 1

1010

Page 32: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Arithmetic-Logic UnitArithmetic-Logic Unit

Carry ini

Carry outi

Page 33: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

4 bits ALU4 bits ALU

Page 34: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Overflow condities:Overflow condities:

Boek bladz. Boek bladz. 172172

8 bit 8 bit systeemsysteem

Overflow = Overflow =

........ 7777 outout cbacba

Page 35: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Bitwise operatorenBitwise operatoren

1010110010101100

0011101000111010

0010100000101000

Bitwise AND-operator (&)

Page 36: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Bitwise operatoren: bittestBitwise operatoren: bittest

1010110010101100

0000100000001000

0000100000001000

Bitwise AND-operator (&)

1010010010100100

0000100000001000

0000000000000000

Page 37: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Bitwise operatoren: bit-Bitwise operatoren: bit-resetreset

1010110010101100

1111011111110111

1010010010100100

Bitwise AND-operator (&)

Page 38: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

OpgavenOpgaven

Opgaven: 2.4.1 tot en met 2.7.2Opgaven: 2.4.1 tot en met 2.7.2

Vervolg college: 13.30 uurVervolg college: 13.30 uur

De hierna behandelde sheets De hierna behandelde sheets behoren niet tot de stof die voor behoren niet tot de stof die voor AI-studenten is bestemd.AI-studenten is bestemd.

Page 39: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Arithmetic Logic UnitArithmetic Logic Unit

32

32

32

operation

result

a

b

ALU

Page 40: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Bits are just bits (no inherent meaning)Bits are just bits (no inherent meaning)— conventions define relationship between bits — conventions define relationship between bits

and numbersand numbers Binary numbers (base 2)Binary numbers (base 2)

0000 0001 0010 0011 0100 0101 0110 0111 1000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001...1001...

decimal: 0...2decimal: 0...2nn-1-1 Of course it gets more complicated:Of course it gets more complicated:

numbers are finite (overflow)numbers are finite (overflow)fractions and real numbersfractions and real numbersnegative numbersnegative numbersHow do we represent negative numbers?How do we represent negative numbers?i.e., which bit patterns will represent which i.e., which bit patterns will represent which

numbers?numbers?

NumbersNumbers

Page 41: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

32 bit signed numbers:32 bit signed numbers:

0000 0000 0000 0000 0000 0000 0000 00000000 0000 0000 0000 0000 0000 0000 0000twotwo = 0 = 0tenten

0000 0000 0000 0000 0000 0000 0000 00010000 0000 0000 0000 0000 0000 0000 0001twotwo = + 1 = + 1tenten

0000 0000 0000 0000 0000 0000 0000 00100000 0000 0000 0000 0000 0000 0000 0010twotwo = + 2 = + 2tenten

......0111 1111 1111 1111 1111 1111 1111 11100111 1111 1111 1111 1111 1111 1111 1110twotwo = + 2,147,483,646 = + 2,147,483,646tenten

0111 1111 1111 1111 1111 1111 1111 11110111 1111 1111 1111 1111 1111 1111 1111twotwo = + 2,147,483,647 = + 2,147,483,647tenten

1000 0000 0000 0000 0000 0000 0000 00001000 0000 0000 0000 0000 0000 0000 0000twotwo = – 2,147,483,648 = – 2,147,483,648tenten

1000 0000 0000 0000 0000 0000 0000 00011000 0000 0000 0000 0000 0000 0000 0001twotwo = – 2,147,483,647 = – 2,147,483,647tenten

1000 0000 0000 0000 0000 0000 0000 00101000 0000 0000 0000 0000 0000 0000 0010twotwo = – 2,147,483,646 = – 2,147,483,646tenten

......1111 1111 1111 1111 1111 1111 1111 11011111 1111 1111 1111 1111 1111 1111 1101twotwo = – 3 = – 3tenten

1111 1111 1111 1111 1111 1111 1111 11101111 1111 1111 1111 1111 1111 1111 1110twotwo = – 2 = – 2tenten

1111 1111 1111 1111 1111 1111 1111 11111111 1111 1111 1111 1111 1111 1111 1111twotwo = – 1 = – 1tenten

maxint

minint

MIPSMIPS

Page 42: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Converting n bit numbers into numbers Converting n bit numbers into numbers

with more than n bits:with more than n bits:

• MIPS 16 bit immediate gets converted to 32 MIPS 16 bit immediate gets converted to 32

bits for arithmeticbits for arithmetic

• copy the most significant bit (the sign bit) into copy the most significant bit (the sign bit) into

the other bitsthe other bits

0011 0010 -> 0000 0000 0011 00100011 0010 -> 0000 0000 0011 0010

1001 1010 -> 1111 1111 1001 10101001 1010 -> 1111 1111 1001 1010

"sign extension""sign extension"

Page 43: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

ConclusionConclusion

We can build an ALU to support the MIPS instruction setWe can build an ALU to support the MIPS instruction set• key idea: use multiplexor to select the output we want key idea: use multiplexor to select the output we want (fig. 2.7.1)(fig. 2.7.1)

• we can efficiently perform subtraction using two’s complementwe can efficiently perform subtraction using two’s complement

• we can replicate a 1-bit ALU to produce a 32-bit ALUwe can replicate a 1-bit ALU to produce a 32-bit ALU

Important points about hardwareImportant points about hardware• all of the gates are always workingall of the gates are always working

• the speed of a gate is affected by the number of inputs to the gatethe speed of a gate is affected by the number of inputs to the gate??????

• the speed of a circuit is affected by the number of gates in seriesthe speed of a circuit is affected by the number of gates in series(on the “critical path” or the “deepest level of logic”)(on the “critical path” or the “deepest level of logic”)

Our primary focus: comprehension, however,Our primary focus: comprehension, however,• Clever changes to organization can improve performanceClever changes to organization can improve performance

(similar to using better algorithms in software)(similar to using better algorithms in software)• we’ll look at two examples for addition and multiplicationwe’ll look at two examples for addition and multiplication

Page 44: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Is there more than one way to do addition?Is there more than one way to do addition? Is a 32-bit ALU as fast as a 1-bit ALU?Is a 32-bit ALU as fast as a 1-bit ALU?

• two extremes: ripple carry and sum-of-productstwo extremes: ripple carry and sum-of-products

cc11 = b = b00cc00 + a + a00cc0 0 ++ aa00bb00

cc22 = b = b11cc11 + a + a11cc1 1 ++ aa11bb11 = =

= b= b11(b(b00cc00 + a + a00cc0 0 ++ aa00bb00)+ a)+ a11(b(b00cc00 + a + a00cc0 0 ++ aa00bb00)+ )+ aa11bb11

cc33 = b = b22cc22 + a + a22cc2 2 ++ aa22bb2 2 cc33 = =

cc44 = b = b33cc33 + a + a33cc3 3 ++ aa33bb3 3 cc44 = =

Not feasible! Why?Not feasible! Why?

Problem: ripple carry adder Problem: ripple carry adder is slowis slow

Page 45: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Can you see the ripple? Can you see the ripple? How could you get rid of it?How could you get rid of it?

Result31a31

b31

Result0

CarryIn

a0

b0

Result1a1

b1

Result2a2

b2

Operation

ALU0

CarryIn

CarryOut

ALU1

CarryIn

CarryOut

ALU2

CarryIn

CarryOut

ALU31

CarryIn

Page 46: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

An approach in-between our two extremesAn approach in-between our two extremes Motivation: Motivation:

• If we didn't know the value of carry-in, what could we do?If we didn't know the value of carry-in, what could we do?• When would we always generate a carry? When would we always generate a carry? ggii = a = ai .i .bbi i

• When would we propagate the carry? When would we propagate the carry? ppii = a = ai i + b+ bii

Did we get rid of the ripple?Did we get rid of the ripple?

cc11 = a = a00.b.b00 + b + b00cc00 + a + a00cc0 0 = a= a00.b.b00 + c + c00(b(b00+a+a00))

cc11 = g = g00 + p + p00cc0 0

cc22 = g = g11 + p + p11cc1 1 cc22 = g = g11 + p + p11(g(g00 + p + p00cc00) )

cc33 = g = g22 + p + p22cc2 2 cc33 = =

cc44 = g = g33 + p + p33cc3 3 cc44 = =

Feasible! Why?Feasible! Why?

Carry-lookahead adderCarry-lookahead adder

Page 47: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

Can’t build a 16 bit adder this way... (too Can’t build a 16 bit adder this way... (too big)big)

Could use ripple carry of 4-bit CLA addersCould use ripple carry of 4-bit CLA adders Better: use the CLA principle again! Better: use the CLA principle again!

Use principle to Use principle to build bigger build bigger addersadders

CarryIn

Result0--3

ALU0

CarryIn

Result4--7

ALU1

CarryIn

Result8--11

ALU2

CarryIn

CarryOut

Result12--15

ALU3

CarryIn

C1

C2

C3

C4

P0G0

P1G1

P2G2

P3G3

pigi

pi + 1gi + 1

ci + 1

ci + 2

ci + 3

ci + 4

pi + 2gi + 2

pi + 3gi + 3

a0b0a1b1a2b2a3b3

a4b4a5b5a6b6a7b7

a8b8a9b9

a10b10a11b11

a12b12a13b13a14b14a15b15

Carry-lookahead unit

Page 48: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

More complicated than additionMore complicated than addition• accomplished via shifting and additionaccomplished via shifting and addition

More time and more areaMore time and more area Let's look at 3 versions based on gradeschool Let's look at 3 versions based on gradeschool

algorithmalgorithm

0010 0010 (multiplicand) (multiplicand)

____xx__10111011 (multiplier) (multiplier)

Negative numbers: convert and multiplyNegative numbers: convert and multiply• there are better techniques, we won’t look at themthere are better techniques, we won’t look at them

MultiplicationMultiplication

Page 49: Rekenen en rekenschakelingen Ben Bruidegom AMSTEL Instituut FNWI UvA.

MultiplicationMultiplication

ControltestWrite

32 bits

64 bits

Shift rightProduct

Multiplicand

32-bit ALU

Done

1. TestProduct0

1a. Add multiplicand to the left half ofthe product and place the result inthe left half of the Product register

2. Shift the Product register right 1 bit

32nd repetition?

Start

Product0 = 0Product0 = 1

No: < 32 repetitions

Yes: 32 repetitions

Multiplier