0% found this document useful (0 votes)
79 views

Lecture16 PDF

The document discusses a lecture on digital logic and computer organization. It provides announcements about homework and exams. It then discusses examples of control words for a microprocessor and how they control the data path. Finally, it describes how a programmable control unit uses a program counter and branch instructions to allow flexible sequencing rather than a hardcoded finite state machine.

Uploaded by

Timothy Eng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views

Lecture16 PDF

The document discusses a lecture on digital logic and computer organization. It provides announcements about homework and exams. It then discusses examples of control words for a microprocessor and how they control the data path. Finally, it describes how a programmable control unit uses a program counter and branch instructions to allow flexible sequencing rather than a hardcoded finite state machine.

Uploaded by

Timothy Eng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

ECE 2300

Digital Logic & Computer Organization


Spring 2018

More Single Cycle Microprocessor

Lecture 16: 1
Announcements
• HW6 due tomorrow

• Prelim 2: Tues April 17, 7:30pm, 101 Phillips Hall


– Coverage: Lectures 8~16
– Inform instructor ASAP to resolve schedule conflict
– An old exam will be released after spring break
– Review sessions
• Friday April 13, 4:30-6:00pm, PHL 219
• Monday April 16, 7:00-8:30pm, PHL 203

Lecture 16: 2
Control Word Example
Fm … F0
DR RF DataA
SA M_address
SB LD
IMM DataB ALU RAM
SA 0 Data_in 0
MB SB 1
V FS 1
DR
C MD
D_in SE VCZN
N LD MW MD
Z MW
MB
CU IMM

DR SA SB IMM MB FS MD LD MW

R2 <= R0 + R1 010 000 001 x 0 ADD 0 1 0

R1 <= M[R2] 001 010 xxx 0 1 ADD 1 1 0

M[R2] <= R0 xxx 010 000 0 1 ADD x 0 1

R3 <= R1 – 3 011 001 xxx 3 1 SUB 0 1 0

Lecture 16: 3
Unsigned Multiplication
• Form each partial product by multiplying a
single digit of the multiplier by the multiplicand
• Add shifted partial products to get result
multiplicand ( = 5) 101
multiplier ( = 3) x 011
101
partial
101
products 000
result ( = 15) 01111

Lecture 16: 4
Revisit Sequential Multiplication
• Multiply A2A1A0 by B2B1B0
A 2A 1A 0 R1 <= M[0] // load A from M[0]
B 2B 1B 0 R2 <= M[1] // load B from M[1]
(A2A1A0)ÎB0 R3 <= 0 // initialize R3 (P) = 0
(A2A1A0) ÎB1
(A2A1A0) ÎB2 (*) R4 <= R2 & 1 // R4 = lsb(B)
P4 P3 P2 P1 P0 R2 <= SRL(R2) // shift B right
if (R4) R3 <= R3+R1 // if lsb(B)=1, P=P+A
R1 <= SLL(R1) // shift A left
if (R2) goto (*) // repeat until B=0

M[2] <= R3 // store P to M[2]

Multiply A=101 by B=011: R1 R2 R3 R4


Determine the values of R1~R4
after each loop iteration

Lecture 16: 5
Instruction Sequence
R1 <= M[0] R0 <= R0-R0 S1
R1 <= M[R0] S2
R2 <= M[1] R2 <= M[R0 + 1] S3
R3 <= 0 R3 <= R3-R3 S4
R4 <= R2 & 1 R4 <= R2 & 1 S5
R2 <= SRL(R2) R2 <= SRL(R2) S6 R2 != 0
R3 <= R3 + R1 R3 <= R3 + R1 R4 = 0 S7
R1 <= SLL(R1) R1 <= SLL (R1) S8
M[2] <= R3 M[R0 + 2] <= R3 S9

Lecture 16: 6
FSM for Sequential Multiplication
DR SA SB IMM MB FS MD LD MW
S1 R0 <= R0-R0 000 000 000 x 0 SUB 0 1 0
S2 R1 <= M[R0] 001 000 xxx 0 1 ADD 1 1 0
S3 R2 <= M[R0 + 1] 010 000 xxx 1 1 ADD 1 1 0
S4 R3 <= R3-R3 011 011 011 x 0 SUB 0 1 0
S5 R4 <= R2 & 1 100 010 xxx 1 1 AND 0 1 0
S6 R2 <= SRL(R2) 010 010 xxx x x SRL 0 1 0
S7 R3 <= R3 + R1 011 011 001 x 0 ADD 0 1 0
S8 R1 <= SLL(R1) 001 001 xxx x x SLL 0 1 0
S9 M[R0 + 2] <= R3 xxx 000 011 2 1 ADD x 0 1

Start=0
R4=0
R2=0
0 1 2 3 4 5 6 7 8 9
Start=1 R4=1
R2≠0
Lecture 16: 7
Programmable Control Unit
• Datapath (RF, ALU, RAM, muxes) is flexible

• However, FSM-based multiplier control unit is


“hardwired”
– New operation sequence would require new state
machine

• Programmable Control Unit


– Control words stored in RAM
– State machine replaced by a Program Counter plus
branch operations
– Flexible: Can run different sequences of control
words (programs)
Lecture 16: 8
Program Counter (PC)
• Special register that points to the location (address) in
RAM of the next control word

• Updated every clock cycle

• Sequential execution (default behavior)


– Control words read from sequential RAM locations
– PC is increased by 1 after each control word read

• Branch operations
– Special control flow operations
– Condition code determines whether to branch or not
– If so, next RAM address is PC + branch offset

Lecture 16: 9
PC-Based Control Unit
1 Adder
Fm … F0
DR
SA
RF
DataA M_address
SB
LD ALU
IMM DataB RAM
MB SA 0 Data_in 0
SB 1
PC FS
DR
1
MD VCZN
D_in SE
LD MW MD
MW
MB
RAM IMM

PC+1 DR SA SB IMM MB FS MD LD MW
R0 <= R0 – R0 1: 000 000 000 x 0 SUB 0 1 0
R1 <= M[R0] 2: 001 000 xxx 0 1 ADD 1 1 0
R2 <= M[R0+1] 3: 010 000 xxx 1 1 ADD 1 1 0
R3 <= R3 – R3 4: 011 011 011 x 0 SUB 0 1 0

Lecture 16: 10
Instruction Sequence of Sequential Multiplication
R1 <= M[0] R0 <= R0-R0 S1
R1 <= M[R0] S2
R2 <= M[1] R2 <= M[R0 + 1] S3
R3 <= 0 R3 <= R3-R3 S4
R4 <= R2 & 1 R4 <= R2 & 1 S5
R2 <= SRL(R2) R2 <= SRL(R2) S6 R2 != 0
R3 <= R3 + R1 R3 <= R3 + R1 R4 = 0 S7
R1 <= SLL(R1) R1 <= SLL (R1) S8
M[2] <= R3 M[R0 + 2] <= R3 S9

Lecture 16: 11
Branch Operations
• Used to jump to a different part of the program

• Consists of a condition and an offset

• Condition
– Checks to see whether the result of the last
instruction met a specified criteria, such as
• Zero (Z = 1), Negative (N = 1)

• Offset
– How far ahead, or back, to jump within the program
if the condition is met

Lecture 16: 12
Branch Operations
Branch Operations
+1 0 0
0 1 1
+1 +1Adder0 1 Z
Z’
2
SE(OFF) 3 MP
N 4
1 MP
SE(OFF) Adder N’ 5
! MP
Fm … F0 C 6
DR RF V 7 BS
DataA Fm … F0
DR SA ! M_address
SA SB
RF
LD DataA ALU
SBIMM DataB M_address RAM
LD SA 0 Data_in 0
IMM MB ALU RAM
PC MB FS SA SB DataB 0 1 Data_in 0 1
SB DR 1
PC FS MD
DR D_in
1
VCZN
MD LD SE
D_in SE VCZN
MB MW MD
LDMW MW MD
ROM
MW BS IMMMB
BSOFF IMM
OFF
ROM
RAM
0 0
1 1
Z 2
Z’ 3
N 4 MP
N’ 5
C 6
V 7
BS
Lecture 16: 13
Lecture
Branch Operations 0 0
1 1
Z
+1 Z’
2
0 3 MP
1 N 4
SE(OFF) Adder N’ 5
C 6
MP V 7 BS
Fm … F0
DR
SA
RF
DataA M_address
SB
LD ALU
IMM DataB RAM
MB SA 0 Data_in 0
SB 1
PC FS
DR
1
MD VCZN
D_in SE
LD MW MD
MW
MB
BS IMM
OFF
RAM
DR SA SB IMM MB FS MD LD MW BS OFF
R2 <= SRL(R2) 5: 010 010 xxx x x SRL 0 1 0 000 x
if (R4=0) goto 8 6:
R3 <= R3 + R1 7: 011 011 001 x 0 ADD 0 1 0 000 x
R1 <= SLL(R1) 8: 001 001 xxx x x SLL 0 1 0 000 x

Lecture 16: 14
Branch Operations 0 0
1 1
Z
+1 Z’
2
0 3 MP
1 N 4
SE(OFF) Adder N’ 5
C 6
MP V 7 BS
Fm … F0
DR
SA
RF
DataA M_address
SB
LD ALU
IMM DataB RAM
MB SA 0 Data_in 0
SB 1
PC FS
DR
1
MD VCZN
D_in SE
LD MW MD
MW
MB
BS IMM
OFF
RAM
DR SA SB IMM MB FS MD LD MW BS OFF
R1 <= SLL(R1) 8: 001 001 xxx x x SLL 0 1 0 000 x
if (R2≠0) goto 4 9:
M[R0+2] <= R3 10: 010
xxx 000 011 2 1 ADD x 0 1 000 x

Lecture 16: 15
Programmable Multiplication
DR SA SB IMM MB FS MD LD MW BS OFF
0: R0 <= R0-R0 000 000 000 x 0 SUB 0 1 0 000 x
1: R1 <= M[R0] 001 000 xxx 0 1 ADD 1 1 0 000 x
2: R2 <= M[R0 + 1] 010 000 xxx 1 1 ADD 1 1 0 000 x
3: R3 <= R3-R3 011 011 011 x 0 SUB 0 1 0 000 x
4: R4 <= R2 & 1 100 010 xxx 1 1 AND 0 1 0 000 x
5: R2 <= SRL(R2) 010 010 xxx x x SRL 0 1 0 000 x
6: if (R4=0) goto 8 xxx 100 xxx 0 1 SUB x 0 0 010 2
7: R3 <= R3 + R1 011 011 001 x 0 ADD 0 1 0 000 x
8: R1 <= SLL(R1) 001 001 xxx x x SLL 0 1 0 000 x
9: if (R2≠0) goto 4 xxx 010 xxx 0 1 SUB x 0 0 011 -5
10:M[R0+2] <= R3 xxx 000 011 2 1 ADD x 0 1 000 x

Lecture 16: 16
Providing Even More Flexibility
DR
SA
SB
• Replace control words with IMM
MB
instructions PC FS
MD
– More intuitive and not specific to LD
MW
particular hardware BS
OFF
– Shorter than control words RAM
– Instruction decoder (hardwired logic)
creates the control words from the
instruction DR

Inst. RAM
SA

Decoder
SB

PC
IMM
MB
FS
MD
LD
MW
BS

Lecture 16: 17
Assembly Language
• Human readable version of instructions

ADD rd,rs,rt // R[rd] = R[rs] + R[rt]

Src Reg
Src Reg
Dest Reg Function
Operation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Lecture 16: 18
Register to Register Format (R-type)
Register to Register Format

• ALU operations with two source registers


•• Shift
ALUoperations
operations with two
(arithmetic source
and logical) registers
•• NOP
Shiftand
operations
HALT
– Logical: Shift in a 0
– Arithmetic: Shift in the sign bit Lecture 16: 19
Logical and Arithmetic Right Shift
• Logical Right Shift
– Shifts each bit right by 1 position
– 0 shifted into MSB

• Arithmetic Right Shift


– Preserves the sign bit
• Example: 11010000 SRA => 11101000
– Equivalent to division by 2 (for two’s complement)

Lecture 16: 20
Immediate Format (I-type)
Immediate Format

• ALU instructions with an immediate operand


• • ALU
Load instructions with an immediate
and Store instructions operand
• Load
– LB, and Store
SB: Load instructions
or store a byte (8 bits)
– LW, SW: Load or store a word (16 bits)
– LB, SB: Load or store a byte (8 bits)
• Branch instructions
– LW, SW: Load or store a word (16 bits) Lecture 16: 21
Memory Operations
• The smallest addressable quantity in modern memory is
typically a byte (8 bits)
– A memory address points to a particular byte location

• LB : Load a byte
– “give me the byte at this address”

• LW : Load a word, which in our case is two bytes


– “give me the byte at this address and the next one too”

Lecture 16: 22
Branch Instructions
Branch Instructions
Target address

• Condition
• Condition
– Test two registers for equality (BEQ, BNE)
– Test two registers for equality (BEQ, BNE)
– Test if a register is positive or negative (BGEZ, BLTZ)
– Test if a register is positive or negative (BGEZ, BLTZ
• !Target address
• Target
– Where to jump in the program if the condition is true
– Formed
– Where by adding
to jump theprogram
in the offset to the PC condition is true
if the
– Formed by adding the offset to the PC
Lecture 16: 23
Branch Instructions
Forming the Branch Target Address

• A memory address
• Condition
points to a byte location
+1 0
1
Adder
– Test two registers for equality SE(OFF)
(BEQ, BNE)
• If instructions are MP
– Test if a register is positive or negative (BGEZ, BLTZ
2 bytes wide
!– Instructions are located at
+2
even locations (0, 2, 4, ...)
• Target
0
1
– The PC must be incremented SE({OFF,0}) Adder
– Where to jump in the program if the conditionMPis true
by 2 (PC+2)
– Since the offset refers to the number of instructions (not bytes) to
– Formed by adding the offset to the PC
jump, we must append a 0 to it

Lecture 16: 24
Multiplication Revisited
OP RS RT RD FUNCT
L0: SUB R0,R0,R0 1111 000 000 000 001
L1: LB R1,0(R0) 0010 000 001 000000
L2: LB R2,1(R0) 0010 000 010 000001
L3: SUB R3,R3,R3 1111 011 011 011 001
L4: ANDI R4,R2,1 0110 010 100 000001
L5: SRL R2,R2 1111 010 xxx 010 011
L6: BEQ R4,R0,L8 1000 000 100 000010
L7: ADD R3,R3,R1 1111 011 001 011 000
L8: SLL R1,R1 1111 001 xxx 001 100
L9: BNE R2,R0,L4 1001 000 010 111011
L10: SW R3,2(R0) 0011 000 010 000010

Lecture 16: 25
Before Next Class
• H&H 7.5.1-7.5.2

Next Time

Pipelined Microprocessor

Lecture 16: 26

You might also like