# CS计算机代考程序代写 mips computer architecture 2:

2:

Ziad Matni, Ph.D.

Dept. of Computer Science, UCSB

CPU

Single Cycle

Datapaths

CS 154: Computer Architecture Lecture #12

Winter 2020

Administrative

• Talk next week – must attend • Details to follow

2/24/2020 Matni, CS154, Wi20 2

Reviewing Your Midterm Exams

• You can review your midterm with a TA during office hours

• Last name: A thru L George T. Tu 10:30 am – 12:30 pm

• Lastname: MthruZ SidS. Mo3:00pm–5:00pm

• If you can’t go to these o/hs, you can see me instead, but let me know

many days ahead of time first so I can get your exam from the TA…

• When reviewing your exams:

• Do not take pictures, do not copy the questions

• TA cannot change your grade

• If you have a legitimate case for grade change, the prof. will decide • Legitimate = When we graded, we added the total points wrong

• Not legitimate = Why did you take off N points on this question????

2/24/2020 Matni, CS154, Wi20 3

2/24/2020 Matni, CS154, Wi20 4

Lecture Outline

• A Simplified Datapath for all Instructions • Single Cycle

• ALU Design and Control

• FYI: Read the appendix section B.5 (pp. B-26 thru B-38) for review / reference

2/24/2020

Matni, CS154, Wi20 5

Load/Store Instructions

• Read register operands

• Calculate address using 16-bit offset (immediate) • First take the offset and sign-extend it to 32-bits

• Then use ALU

• Load: Read memory and update register • Store: Write register value to memory

We’ll also need…

2/24/2020

Matni, CS154, Wi20 6

includes lw, sw

e.g.: lw $t0, 4($sp)

Branch Instructions

• Read register operands • Compare operands

• Use ALU, subtract

and check Zero output

• Calculate target address

• Sign-extend displacement

• Shift left 2 places

• AddtoPC+4 (already calculated by instruction fetch)

2/24/2020

includes beq, bne

e.g.: beq $t1, $t2, Label

Matni, CS154, Wi20 7

Putting the Elements Together

• These ”simple” data paths perform

one instruction in one clock cycle

• Each datapath element can only do one function at a time

• Hence, we need separate instruction and data memories

• In the next lesson(s), we will see how we can perform parallel-like processing, i.e. pipelining

• Use multiplexers where alternate data sources are used for different instructions

2/24/2020 Matni, CS154, Wi20 8

R-Type / Load/Store Datapath

EXAMPLE:

sub $t0, $t1, $t2

R[rd] = R[rs] – R[rt]

rs = $t1 code rt = $t2 code

rd = $t0 code

rs – rt

“sub”

0

rt

rt

X

rs

rs – rt

X 0 rs – rt

0

1

2/24/2020

Matni, CS154, Wi20

9

rs – rt

R-Type / Load/Store Datapath

EXAMPLE:

sw $t0, 0($t1)

R[rs]+SignExtImm = R[rt]

rs = $t1 code rt = $t0 code

“add”

1

rt

0 0

Immed (0)

in 32 b

rs

Immed (0) in 16 b

1

0

rt

rs + 0

Value @

(rs + 0) = rt X

2/24/2020

Matni, CS154, Wi20

10

R-Type / Load/Store Datapath

EXAMPLE:

lw $t0, 0($t1)

R[rt] = R[rs]+SignExtImm

rs = $t1 code rt = $t0 code

Value at (rs + 0) from mem.

1

“add”

1

X

0

0

Immed (0)

in 32 b

Value at (rs + 0)

rs

rs + 0

Value @ (rs + 0)

1

Immed (0) in 16 b

0

2/24/2020

from memory

Matni, CS154, Wi20

11

Full Datapath (add Jump)

PCold

PCnew

1

EXAMPLE:

j label

PC = JumpAddr

PCnew = (PCold + 4)

+ label * 4

PCold

PCold + 4

PCold + 4

label label * 4

2/24/2020

Matni, CS154, Wi20

12

label

PCnew

What Does This Logic Block Do?

AB

OP

S

0 1

Y OUT

2/24/2020

Matni, CS154, Wi20

13

What Does This Logic Block Do?

Ainv Binv OP[1:0] Result

0

0

00

AND

1

1

00

NOR

0

1

00

A.!B^

1

0

00

!A.B^

0

0

01

OR

1

1

01

NAND

0

0

10

add

0

1

10

subtract*

^ Unpopular combo – not used much * To do this, Cin has to be 1

2/24/2020 Matni, CS154, Wi20 15

What Does This Logic Block Do?

Ainv Binv OP[1:0] Result

0

0

00

AND

1

1

00

NOR

0

0

01

OR

1

1

01

NAND

0

0

10

add

0

1

10

subtract

X

1

11

less*

* less: as in a flag for “set-if-less-than”. Note that Binv has to be 1 when using this

2/24/2020 Matni, CS154, Wi20 16

What Does This Logic Block Do?

Same as previous block, but now with

“overflow detection”

and with another output, set, used only with slt

2/24/2020

Matni, CS154, Wi20 17

A 32-bit ALU Using 1-bit ALUs as building blocks

Important Notes/Observations:

1. slt and overflow are decisions made in bit 31 (MSB)

2. Bits CarryIn and Binvert work the same way (redundant) and so can be combined into one bit called Bnegate

3. To support branching ops, we need an “equality” function. This can be done by doing subtraction and seeing if the result is zero(i.e. a=ba–b=0)

So, we need an output that says “the answer at the Result is Zero”.

Best done as:

Zero = (Result1 + Result2 + … + Result31)

2/24/2020 Matni, CS154, Wi20 18

MIPS ALU Control

ALU when used for

• Load/Store:

• Branch:

• R-type:

ALU_CONTROL[3:0] is Ainv, Bnegate, OP1, OP0 (in that order)

F = add

F = subtract

F depends on funct field

ALU_CONTROL[3:0]

FUNCTION

0000

AND

0001

OR

0010

add

0110

subtract

0111

set-on-less-than

1100

NOR

2/24/2020 Matni, CS154, Wi20 19

Generating the ALU_Control

• We get ALUOp from a decode of the opcode field of the instruction

• We can further refine choices by looking at funct field

2/24/2020 Matni, CS154, Wi20 20

The Main Control Unit

• Control signals derived (i.e. decoded) from instruction

opcode

always read

write

2/24/2020 Op[5:0] Matni, CS154, Wi20 21

write

sign extend and add

Full Datapath showing 7 Control Signals

See Fig. 4.16 in book (p.264) for a description of each signal

2/24/2020 Matni, CS154, Wi20 22

YOUR TO-DOs for the Week

•Lab 6 due soon…

2/24/2020 Matni, CS154, Wi20 23

2/24/2020 Matni, CS154, Wi20 24