28
1 Review Chpt 2 and 3 Five components of a computer Input Output Memory Arithmetic & Logic Unit (ALU) Control Two types of information Data and instruction

Review Chpt 2 and 3

  • Upload
    basil

  • View
    44

  • Download
    1

Embed Size (px)

DESCRIPTION

Review Chpt 2 and 3. Five components of a computer Input Output Memory Arithmetic & Logic Unit (ALU) Control Two types of information Data and instruction. Think of a Calculator . Components in a calculator Input Output Memory ALU One type of information Data. Memory in Calculator. - PowerPoint PPT Presentation

Citation preview

Page 1: Review Chpt 2 and 3

1

Review Chpt 2 and 3 Five components of a computer

Input Output Memory Arithmetic & Logic Unit (ALU) Control

Two types of information Data and instruction

Page 2: Review Chpt 2 and 3

2

Think of a Calculator Components in a calculator

Input Output Memory ALU

One type of information Data

Page 3: Review Chpt 2 and 3

3

Memory in Calculator One register R, which is implicit

Its content is shown at the LCD panel Arithmetic operations are performed on R

One memory M, which is explicit Its content is not shown. Arithmetic operation on M is limited M is additional storage in case R is not enough

Copy data from R to M is done by MS Copy data from M to R is done by MR

Page 4: Review Chpt 2 and 3

4

Memory in Computer (MIPS) More registers

32 integer registers: $0 to $31 32 floating-point registers: $f0 to $f31

More memory 4 Giga Byte (GB) memory, organized as 1 Gita

Word A word is 32 bits (b), a Byte (B) is 8 bits A unique address is designated for each

memory byte 1K=1024=210, 1M=1024K=220, 1G=1024M=230

Page 5: Review Chpt 2 and 3

5

Examples Which one can store more

information: a 128MB memory card or a half Gb memory chip?

How many times more data can a 40GB hard disk store than a 256KB memory?

Page 6: Review Chpt 2 and 3

6

Memory Address

00000004

FFFFFFFC

00000000

00000008

FFFFFFF8

0123

...

Page 7: Review Chpt 2 and 3

7

Example: Memory contentchara: .word 0x00000061 # assume starting mem 0msg1: .asciiz “ab01cd”msg2: .ascii “ab”value: .word 15

00 00 00 6131 30 62 6161 00 64 63?? ?? ?? 6200 00 00 0F

0000000400000000

00000008

0123

0000000C00000010

...

Page 8: Review Chpt 2 and 3

8

Data and Instruction Memory contains data and

instruction The content itself does not tell if it

is data or instruction Each instruction takes one word,

and instruction address must be a word address

Page 9: Review Chpt 2 and 3

9

Data Encoding ASCII code (American Standard

Code for Information Interchange) Total 128 characters, including

digits (0-9) alphabets (a-z, A-Z) math (+, -, *, /, >, <, =, (, ), {, }, [, ], %) punctuations (!, ,, ., ?, :, ;, ‘, “, `, ,) special (@, #, $, ^, &, ~, _, |, \) control (back space, tab, line return, null)

Page 10: Review Chpt 2 and 3

10

Data Encoding Unicode (universal encoding) Capable of expressing most

languages in the worldText ASCII UTF-8 UTF-16

big 62 69 67 62 69 67 0062 0069 0067

gro 67 72 6f ??

67 72 6f c3 9f

0067 0072 006f 00df

Page 11: Review Chpt 2 and 3

11

Data Encoding Fixed point integer Single precision floating point Double precision floating point Question: Which format is most efficient

in expressing a number, say 12345678? How about 1234.5678? ASCII character string Fixed point Floating point

Page 12: Review Chpt 2 and 3

12

Example on Numbers What is the following hexadecimal?

8D280000 as binary: 1000 1101 0010 1000 0000 0000 0000 0000

8D280000 as integer (in decimal): -(2^27+2^26+2^24+2^21)

8D280000 as floating-point (in decimal): 1000 1101 0010 1000 0000 0000 0000 0000 (-1) 2^{26-127}*(1+0.025+0.0625)=

8D280000 as instruction: 1000 1101 0010 1000 0000 0000 0000 0000 lw $8 0($9)

Page 13: Review Chpt 2 and 3

13

Word v.s. Byte Memory can be addressed either as words,

each 32 bits, or as bytes, each 8 bits Whether an address is word address or

byte address depends on the instructionlw $a1, 0($zero) # $a1 = 00 00 00 61lw $a1, 2($a2) # assume $a2=6# $a1 = 61 00 64 63lbu $a1, -7($a2) # assume $a2=12# $a1 = 00 00 00 62

Page 14: Review Chpt 2 and 3

14

ALU In a calculator, ALU performs

operation between R and the new number typed on key pad12+ enter 12 into R and operation is +3= enter 3, and perform addition with

R In a computer, ALU performs more

complex operations between registers

Page 15: Review Chpt 2 and 3

15

Example Convert temperature from Fahrenheit in

$f0 to Celsius: C=(5/9)*(F-32) Assume 5.0 is in $f16, 9.0 is in $f17, and 32.0

is in $f18 div.s $f16, $f16, $f17 # .s is single precision sub.s $f0, $f0, $f18 mul.s $f0, $f0, $f16

Puzzle: How to swap values in $a1 and $a2 without using additional register?

Page 16: Review Chpt 2 and 3

16

Fixed Point Mult/Div Assume F temperature is in $a0, store C

temperature result in $a1addi $a1, $a0, -32 # $a1 = F-32addi $t0, $zero, 5 # $t0 = 5mult $a1, $t0 # mult first reduces errormflo $a1 # $a1 = (F-32)*5addi $t0, $zero, 9 # $t0 = 9div $a1, $t0mflo $a1

Page 17: Review Chpt 2 and 3

17

IEEE 754 Standard Exception Normal case

e=1 to 254: (-1)S * 2e-127 * 1.M Special cases:

Exponent=0, mantissa=0: 0 Exponent=0, mantissa0: denormalized

(-1)S * 2-127 * 0.M Exponent=255, mantissa=0: Infty Exponent=255, mantissa 0: NaN

Page 18: Review Chpt 2 and 3

18

Control In a calculator, human controls the

operation at each step In a computer, control follows from the

instruction 1. Program Counter (PC) points to the first

instruction to be executed 2. Execute the instruction pointed by PC 3. PC=PC+4, go to 2

If there is branch instruction, PC is modified

Page 19: Review Chpt 2 and 3

19

Exercise Count the number of 1’s in $a0 and store

result in $s0or $s0, $zero, $zero # $s0=0addi $t0, $zero, 1 # $t0=00000001

loop: beq $t0, $zero, exit # if $t0=0, exitand $t1, $a0, $t0 # check one bitsll $t0, $t0, 1 # shift $t0 left 1 bitbeq $t1, $zero, loopaddi $s0, $s0, 1 # found a 1j loop

exit:

Page 20: Review Chpt 2 and 3

20

Five Address Modes (p. 101) Address Mode tells where to find the

data or branch address Immediate addressing

It is rather “immediate” than “addressing” since the data is included in the instruction

For example, addi $a1, $a1, 100 Register addressing

Data address is register number For example, add $a1, $a1, $a0

Page 21: Review Chpt 2 and 3

21

Five Addressing Mode (cont’d) Base (or displacement) addressing

Data address is base (register content) plus displacement

For example, lw $a1, 12($a0)

Page 22: Review Chpt 2 and 3

22

Five Addressing Mode (cont’d) The last two modes are for branch only.

Address is instruction address. PC-relative addressing

Branch address is PC+4+offset*4 For example, beq $a1, $zero, 100

Pseudo-direct addressing Branch address is 26 bits in instruction

concatenated with top 4 bits of PC For example, j 10000

Page 23: Review Chpt 2 and 3

23

Addressing Mode Example C program, assume i and k correspond to $s3

and $s5, and base address of array a is in $s6:while (a[i] == k)i = i + 1;

MIPS assembly codeloop: sll $t1, $s3, 2 # $t1 = i*4add $t1, $t1, $s6 # $t1 = addr of a[i]lw $t0, 0($t1) # $t0 = a[i]bne $t0, $s5, exit # if a[i] != k, exitaddi $s3, $s3, 1 # i = i+1j loop # go to loop

Page 24: Review Chpt 2 and 3

24

Addressing Mode Exampleloop: sll $t1, $s3, 2 # $t1 = i*4

add $t1, $t1, $s6 # $t1 = addr of a[i]lw $t0, 0($t1) # $t0 = a[i]bne $t0, $s5, exit # if a[i] != k, exitaddi $s3, $s3, 1 # i = i+1j loop # go to loop

exit0 0 19 9 2 00 9 22 9 0 3235 9 8 05 8 21 28 19 19 12 1111 1111 1111 0000 0000 0000 01

FFFF0004FFFF0008FFFF000CFFFF0010FFFF0014FFFF0018

Page 25: Review Chpt 2 and 3

25

Homework 2, due Friday 2.21, 2.36 3.27, 3.42

Page 26: Review Chpt 2 and 3

26

Exercise 2.21 Write a subroutine convert to convert an ASCII

decimal string to an integer. You can expect register $a0 to hold the address of a null-terminated string containing some combination of the digits 0 through 9. Your program should compute the integer value equivalent to this string of digits, then place the number in register $v0. If a non-digit character, including “-” or “.”, appears anywhere in the string, your program should stop with the value –1 in register $v0 .

For example, if register $a0 points to a sequence of three character 50ten , 52ten , 0ten (the null-terminated string “24”), then when the program stops, register $v0 should contain the value 24ten .

Page 27: Review Chpt 2 and 3

27

Exercise 2.36 Consider the following fragment of C code:

for (i=0; i<=100; i=i+1)a[i] = b[i] +c;

Assume that a and b are arrays of words and the base address of a is in $a0 and the base address of b is in $a1 . Register $t0 is associated with variable i and register $s0 with c.

Write the code for MIPS. How many instructions are executed during the running of this code? How many memory data references will be made during execution?

Page 28: Review Chpt 2 and 3

28

Chapter 4 Performance What is performance?

Response time: The time between start and completion of the task. (unit is time, say sec)

Throughput: the total amount of work done at a given time. (unit is jobs/sec)

Do the following changes to a computer system increase/decrease performance? Replacing the processor by a faster one Adding additional processors to a multi-

processor system, such as google search engine