how computers compute

53
How Computers Compute

Upload: miguel-serrano-milano

Post on 24-Jan-2017

242 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: How computers compute

How Computers Compute

Page 2: How computers compute

(6+2*3)/22–6/3

How we humans compute?

Page 3: How computers compute

(6+2*3)/22–6/3

How we humans compute?

Operator Precedence:

3: POW (^)

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 4: How computers compute

(6+2*3)/22–6/3

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 5: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 6: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 7: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 8: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 9: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 10: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 11: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 12: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 13: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

3–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 14: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

3–2

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 15: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

3–2

1

How we humans compute?

3: POW (̂ )

2: MUL, DIV (*, /)

1: ADD, SUB (+,-)

0: Parenthesis

Page 16: How computers compute

CPU

Memory

Program

VS

Page 17: How computers compute

CPU

Memory

Program

This is actually pretty stupid

VS

Page 18: How computers compute

● Get data from program/memory● Push data to memory

CPU

Memory

Program

What a CPU can do?

Page 19: How computers compute

● Get data from program/memory● Push data to memory● Perform operations with data from memory

AdditionSubtractionMultiplicationDivision

CPU

Memory

Program

What a CPU can do?

Page 20: How computers compute

● Get data from program/memory● Push data to memory● Perform operations with data from memory

AdditionSubtractionMultiplicationDivision

CPU

Memory

Program

What a CPU can do?

Page 21: How computers compute

● Get data from program/memory● Push data to memory● Perform operations with data from memory

AdditionSubtractionMultiplicationDivision

CPU

Memory

Program

What a CPU can do?

“Variations” of Addition (Binary format perk)

Page 22: How computers compute

● Get data from program/memory● Push data to memory● Perform operations with data from memory

AdditionSubtractionMultiplicationDivision

CPU

Memory

Program

What a CPU can do?

“Variations” of Addition (Binary format perk)

RISC Reduced Instruction Set Computing

Page 23: How computers compute

CPU

Memory

Program

(6+2*3)/22–6/3

This should go there...

Running a program

Page 24: How computers compute

CPU

Memory

Program

(6+2*3)/22–6/3

But the CPU won’t understand this program!!!

Running a program

Page 25: How computers compute

(6+2*3)/22–6/3

(6+2*3)/4–6/3

(6+6)/4–6/3

(6+6)/4–2

12/4–2

3–2

1

Let’s flip our previous pyramid

Page 26: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

Let’s flip our previous pyramid

Page 27: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

Page 28: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

Page 29: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

Page 30: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

+

Page 31: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

+/

Page 32: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

+/

*

Page 33: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

+/

* ^

Page 34: How computers compute

1

3–2

12/4–2

(6+6)/4–2

(6+6)/4–6/3

(6+2*3)/4–6/3(6+2*3)/22–6/3

And create a Graph with the steps taken

-

/

+/

* ^6

2 3 2 2

6 3

Page 35: How computers compute

Let’s apply a Post-order Traversal

-

/

+/

* ^6

2 3 2 2

6 3

Algorithm:

Resolve left subtree

Resolve right subtree

Resolve node

Page 36: How computers compute

Let’s apply a Post-order Traversal

-

/

+/

* ^6

2 3 2 2

6 3

Algorithm:

Resolve left subtree

Resolve right subtree

Resolve node

623*+22^/63/-

Page 37: How computers compute

Let’s apply an Post-order Traversal

-

/

+/

* ^6

2 3 2 2

6 3

Algorithm:

Resolve left subtree

Resolve right subtree

Resolve node

this is what compilers do!

From: (6+2*3)/22–6/3To: 623*+22^/63/-

Abstract Syntax Tree (AST)

Page 38: How computers compute

CPU -/36/^22+*32 6

Memory

623*+22^/63/-

reversed

Random Fact: HP48 calculators work with postfix notation only

Page 39: How computers compute

CPU -/36/^22+*32 6

Page 40: How computers compute

CPU -/36/^22+*3 2

6

Page 41: How computers compute

CPU -/36/^22+* 3

62

Page 42: How computers compute

CPU -/36/^22+ *

62

3

Take 2 items from memory, multiply them and leave the

result in memory

Page 43: How computers compute

CPU -/36/^22 +

6 6

Take 2 items from memory, multiply them and leave the

result in memory

Page 44: How computers compute

CPU -/36/^2 2

12

Page 45: How computers compute

CPU -/36/^ 2

12

2

Page 46: How computers compute

CPU -/36/ ^

12

22

Page 47: How computers compute

CPU -/36 /

12

4

Page 48: How computers compute

CPU -/3 6

3

Page 49: How computers compute

CPU -/ 3

36

Page 50: How computers compute

CPU- /

363

Page 51: How computers compute

CPU-

32

Page 52: How computers compute

CPU

1

Page 53: How computers compute

End!Q&A