### MSP430 Microarchitecture - BYU Computer Science Students

```S04: MSP430 Microarchitecture
Required:
Recommended:
Lab:
PM: Ch 8.1-3, pgs 109-114
Code: Ch 17, pgs 206-237
Wiki: Microarchitecture
Wiki: Three-state logic
Microarch
CS 224
Chapter
Project
Homework
L01: Warm-up
L02: FSM
HW01
HW02
L04: Microarch
L05b: Traffic Light
L06a: Morse Code
HW03
HW04
HW05
HW06
L07b: Morse II
L08a: Life
L09b: Snake
HW07
HW08
HW09
HW10
S00: Introduction
Unit 1: Digital Logic
S01: Data Types
S02: Digital Logic
Unit 2: ISA
S03: ISA
S04: Microarchitecture
S05: Stacks / Interrupts
S06: Assembly
Unit 3: C
S07: C Language
S08: Pointers
S09: Structs
S10: I/O
BYU CS 224
MSP430 Microarchitecture
2
Learning Outcomes…
After discussing microarchitecture and studying the reading
assignments, you should be able to:









Explain what is a computer microarchitecture.
Describe how memory-mapped I/O is implemented.
Program digital I/O using computer ports.
List the addressing modes of the MSP430.
Identify MSP430 microarchitecture components.
Explain how a microarchitecture executes computer instructions.
Identify multiplexor, decoder, driver, ALU, and register circuitry.
Explain program counter, stack pointer, and condition code registers.
Explain the difference between clock cycles and instruction steps.
BYU CS 224
MSP430 Microarchitecture
3
Terms…












Arithmetic Logic Unit (ALU) – combinational logic that performs
arithmetic and logical operations.
Bus – physical connection shared by multiple hardware components.
Finite State Machine – finite set of states than transition from a
current to next state by some triggering condition.
Instruction Phases – steps used by a FSM to execute an instruction.
Memory Mapped I/O – memory locations used to input/output.
Microarchitecture – physical implementation of an ISA.
Read-Before-Write – access memory before changing with write.
BYU CS 224
MSP430 Microarchitecture
4
Memory Mapped I/O
Memory Mapped I/O
Memory Mapped I/O
15
14
13
12
1
0
1
0
0
0
11
10
9
8
7
6
5
4
3
2
1
Memory
1 0 0 1 1 1 1 1 1 1 1
0
0
0
Bits A[8:0]
High (1) if and only if
bits 9-15 are low (0).
9 to 512 Decoder
Bits A[15:9]
Memory CS
BYU CS 224
MSP430 Microarchitecture
Device 0x0000
...
...
512 Peripherals
Device 0x01fe
Device 0x01ff
High (1) if any of bits
9-15 are high (1).
6
Memory Mapped I/O
MSP430 P1/P2 Port Registers
0xFFFF

Memory Mapped I/O




Ports connect CPU to
external world
Ports are 8 bit memory
locations (R/W enabled)
Each bit independently
programmable for Input or
Output (I/O)
Edge-selectable input
interrupt capability (P1/P2)
O
I
I
I
I
I
0xF800
I
O
0x0A00
bis.b #0x21,&P1DIR
bis.b #0x01,&P1OUT
xor.b #0x01,&P1OUT
0x0200
P1DIR
0x0022
P1OUT
0x0021
P1IN
0x0020
0000 0001
0000
0010
0010
0000 0000
0001
0000 0000
0x0000
MSPG2553
BYU CS 224
MSP430 Microarchitecture
7
Memory Mapped I/O
Digital Port Input/Output

Direction Register (PxDIR):



Input Register (PxIN):



Bit = 0: the individual port pin is set as an input (default)
Bit = 1: the individual port pin is set as an output
Bit = 1: The input port pin is high
Bit = 0: The input port pin is low
Output Register (PxOUT):



Bit = 1: The output port pin is set high;
Bit = 0: The output port pin is set low.
Note: the PxOUT is a read-write register which means
previously written values can be read, modified, and
written back
BYU CS 224
MSP430 Microarchitecture
8
Quiz 4.1
1. mov.b
#0x0f,&P4DIR
2. and.b
#0xf0,&P4OUT
3. bis.b
#0x09,&P4OUT
4. xor.b
#0x0f,&P4OUT
5. bic.b
#0x06,&P4OUT
#0x03,&P4OUT
BYU CS 224
MSP430 Microarchitecture
P4.0
P4.1
P4.2
P4.3
Four LEDs are attached to Port 4, bits 0 thru 3.
Indicate which LEDs are ON/OFF/Undefined after
each instruction to the left
is executed.
9
Microarchitecture
Microarchitecture
Microarchitecture Journey
ISA
a1 a0
d
q
d
we
Register
we
Register
we
Register
we
Register
4-to 1
Multiplexor
2-to-4
Decoder
we
Finite State Machine
q
Storage Devices
we
q
A
A
B
B
S
W
Sequential Logic
Microarchitecture
X
Y
Z
a
C
Combinational Logic
b
NOR
Complementary Logic
Transistor
BYU CS 224
MSP430 Microarchitecture
11
Microarchitecture
Microarchitecture

The Instruction Set Architecture (ISA) defines the
processor instruction set, processor registers, address
and data formats


The microarchitecture implements the ISA.



The processor as seen by an assembly language programmer.
Gates, registers, ALUs, clocks
Data and control paths
Microarchitectures differentiate themselves by:






Chip area/cost
Power consumption
Logic complexity
Manufacturability
Ease of debugging
Testability
BYU CS 224
MSP430 Microarchitecture
12
MSP430 Microarchitecture
Lab 4: MSP430 Microarchitecture

MSP430 Microarchitecture Simulator:




Use the MSP430 Microarchitecture Simulator to create a machine that
implements the Texas Instruments MSP430 ISA.
Generate a Finite State Machine (FSM) for fetch, decode, evaluate
source, evaluate destination, execute, and store cycles of MSP430
instructions.
Execute a program that displays an incrementing counter in the simulator
LEDs.
Learning Objectives:




Learn how a microarchitecture executes computer instructions.
Learn about multiplexor, decoder, driver, ALU, and register circuitry.
Learn about program counter, stack pointer, and condition code registers.
Understand better the difference between clock cycles and instruction
steps.
BYU CS 224
MSP430 Microarchitecture
13
MSP430 Microarchitecture
MSP430 Machine Code
8000:
8004:
800a:
8010:
;**************************************************************
;
MSP430 Micro-Architecture Simulator Code
;
;
Description: Display an incrementing counter in LEDs.
;**************************************************************
.cdecls C,"msp430.h"
.text
4031 0600
RESET: mov.w
#0x0600,SP
; Init stack pointer
40b2 5a80 0120
mov.w
#WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
d0f2 000f 0022
bis.b
#0x0f,&P1DIR
; Set P1.0-3 output
430e
mov.w
#0,r14
8012:
8016:
8018:
801c:
8020:
4ec2 0021
531e
f03e 000f
401f 0003
120f
loop:
8022:
8026:
8028:
802a:
8391 0000
23fd
41ef
3ff3
wait:
802c: 0002
mov.b
and.w
mov.w
push
r14,&P1OUT
#1,r14
#0x000f,r14
delay,r15
r15
; output P1.0-3
sub.w
jnz
mov.w
jmp
#1,0(sp)
wait
@sp+,r15
loop
;
;
;
;
delay: .word
.sect
.word
.end
BYU CS 224
; Delay to R15
decrement delay count
delay over?
y
repeat
2
".reset"
RESET
MSP430 Microarchitecture
; MSP430 RESET Vector
; NMI
14
MSP430 Microarchitecture
MSP430 Microarchitecture Simulator
BYU CS 224
MSP430 Microarchitecture
15
MSP430 Instruction Cycles
MSP430 Clock Cycles
MSP430 Instruction Cycles

Data being sent/received on the data bus is
called a cycle.



1 cycle to fetch instruction word
+1 cycle if source is @Rn, @Rn+, or #Imm
+2 cycles if source uses indexed mode






2nd to fetch source
Includes absolute and symbolic modes
+2 cycles if destination uses indexed mode
+1 cycle if writing destination back to memory


+1 cycle if writing to PC (R0)
Jump instructions are always 2 cycles
BYU CS 224
MSP430 Microarchitecture
17
Quiz 4.2

Given a 1.2 MHz processor, what value for
DELAY would result in a 1/4 second delay?
DELAY
.equ
?
mov.w
#DELAY,r12
; 2 cycles
delay1:
mov.w
#1000,r15
; 2 cycles
delay2:
sub.w
jne
sub.w
jne
#1,r15
delay2
#1,r12
delay1
;
;
;
;
BYU CS 224
1
2
1
2
cycle
cycles
cycle
cycles
MSP430 Microarchitecture
18
MSP430 Microarchitecture
MSP430 Microarchitecture
MSP430 Microarchitecture
Clocks
Control Logic
(Finite State Machine)
ALU
MSP430 MPU
BYU CS 224
Memory
Input/Output
16 16-bit Registers
MSP430 Microarchitecture
20
Quiz 4.3

Match the following terms:
1.
2.
3.
4.
5.
6.
7.
ALU
Clocks
Control
I/O
Memory
Peripherals
Registers
BYU CS 224
a.
b.
c.
d.
e.
f.
g.
Execution speed
External devices
Fast memory
Finite State Machine
Memory mapped
Word length
MSP430 Microarchitecture
21
Instruction Cycle
The Instruction Cycle

INSTRUCTION FETCH


DECODE


EXECUTE


DESTINATION OPERAND FETCH


Examine the instruction, and determine how to execute it
SOURCE OPERAND FETCH


Obtain the next instruction from memory
Not all instructions
require all six phases
Carry out the execution of the instruction
STORE RESULT

Store the result in the designated destination
BYU CS 224
MSP430 Microarchitecture
22
Fetch Cycle
Fetching an Instruction
PC can be
incremented
anytime during
the Fetch phase
PC


BYU CS 224
MSP430 Microarchitecture
23

The MSP430 has four basic addressing modes:





00 = Rs - Register
01 = x(Rs) - Indexed Register
10 = @Rs - Register Indirect (source only)
11 = @Rs+ - Indirect Auto-increment (source only)
When used in combination with registers R0-R3,
available:



label - PC Relative, x(PC)
&label – Absolute, x(SR)
#n – Immediate, @PC+ (source only)
BYU CS 224
MSP430 Microarchitecture
24
Quiz 4.4

Match the following source operand modes:
1.
2.
3.
4.
5.
6.
7.
8.
bis.b #0x08,r6
mov.b cnt,r11
mov.w r4,r5
mov.w #100,r14
sub.w @r4+,r5
xor.b @r8,r15
BYU CS 224
a.
b.
c.
d.
e.
f.
g.
h.
Absolute
Constant
Immediate
Indexed register
Indirect auto-increment
Indirect register
Register
Symbolic
MSP430 Microarchitecture
25
8000:
8002:
8006:
8008:
800a:
800e:
8012:
8016:
8018:
801c:
BYU CS 224
540A
541A
542A
543A
501A
521A
503A
531A
1210
3ff1
0006
81f4
0200
0064
0004
.text
start:
push
jmp
r4,r10
6(r4),r10
@r4,r10
@r4+,r10
cnt,r10
&cnt,r10
#100,r10
#1,r10
cnt
start
;
;
;
;
;
;
;
;
;
MSP430 Microarchitecture
r4 += r10;
r10 += M[r4+6];
r10 += M[r4];
r10 += M[r4++];
r10 += cnt;
r10 += cnt;
r10 += 100;
r10++;
M[--r1] = cnt;
26
00 = Register Mode
; r10 += r4
Memory
PC
PC
0x540a
CPU
Registers
0x540a IR
PC
+2
R4
R10
ALU
BYU CS 224
MSP430 Microarchitecture
27
Evaluate Source Operand
Source: Register Mode – Rs
Select the
source register
Rs

BYU CS 224
MSP430 Microarchitecture
28
01 = Indexed Mode
add.w 6(r4),r10 ; r10 += M[r4+6]
Memory
PC
PC
PC
0x541a
0x0006
CPU
Registers
0x541a IR
PC
+2
R4
R10
ALU
BYU CS 224
MSP430 Microarchitecture
29
Evaluate Source Operand
Source: Indexed Mode – x(Rs)
PC incremented
at end of phase

PC
PC
Rs
Use PC to obtain
index, use Rs for
base register



BYU CS 224
MSP430 Microarchitecture
30
10 = Indirect Register Mode
; r10 = M[r4]
Memory
PC
PC
0x542a
CPU
Registers
0x542a IR
PC
+2
R4
R10
ALU
BYU CS 224
MSP430 Microarchitecture
31
Evaluate Source Operand
Source: Indirect Mode – @Rs

Rs

BYU CS 224
MSP430 Microarchitecture
32
11 = Indirect Auto-increment Mode
; r10 += M[r4++]
Memory
PC
PC
0x543a
CPU
Registers
0x543a IR
PC
+2
0002
R4
R10
ALU
BYU CS 224
MSP430 Microarchitecture
33
Evaluate Source Operand
Source: Indirect Auto Mode – @Rs+

Rs
Increment by 1
(.b) or 2 (.w)

BYU CS 224
MSP430 Microarchitecture
34
01 w/R0 = Symbolic Mode
; r10 += M[cnt]
Memory
PC
PC
PC
0x501a
0x000c
CPU
Registers
0x501a IR
PC
+2
cnt
R10
ALU
*Also called PC Relative address mode
BYU CS 224
MSP430 Microarchitecture
35
Evaluate Source Operand
Source: Symbolic Mode – label
PC incremented
at end of phase

PC
PC
PC
Use PC to obtain
relative index and
for base register



BYU CS 224
MSP430 Microarchitecture
36
Quiz 4.5
Present the destination operand of the following
instruction to the ALU:
; M[cnt] += r4
Memory
CPU
Registers
0x5480 IR
PC
PC
PC
PC
0x5480
0x0218
R4
cnt
BYU CS 224
ALU
MSP430 Microarchitecture
37
01 w/R2 = Absolute Mode
; r10 += M[cnt]
Memory
PC
PC
PC
0x521a
0xc018
CPU
Registers
0x521a IR
PC
+2
0000
cnt
R10
ALU
BYU CS 224
MSP430 Microarchitecture
38
Evaluate Source Operand
PC can be
incremented
anytime during
the phase

PC
#0
Use PC to obtain
#0 for base register


BYU CS 224
MSP430 Microarchitecture
39
11 w/R0 = Immediate Mode
; r10 += 0x0064
Memory
PC
PC
PC
0x503a
0x0064
CPU
Registers
0x503a IR
PC
+2
R10
ALU
BYU CS 224
MSP430 Microarchitecture
40
Evaluate Source Operand
Source: Immediate Mode – #n
PC can be
incremented
anytime during
the phase

PC

BYU CS 224
MSP430 Microarchitecture
41
Evaluate Source Operand
MSP430 Source Constants

To improve code efficiency, the MSP430
combinations to commonly used source values:







#0 - R3 in register mode (00)
#1 - R3 in indexed mode (01)
#2 - R3 in indirect mode (10)
#-1 - R3 in indirect auto-increment mode (11)
#4 - R2 in indirect mode (10)
#8 - R2 in indirect auto-increment mode (11)
Eliminates the need to use a memory location for
the immediate value - commonly reduces code
size by 30%.
BYU CS 224
MSP430 Microarchitecture
42
Constant Generator
; r10 += 1
Memory
PC
PC
0x531a
CPU
Registers
0x531a IR
0000
0001
0002
0004
0008
ffff
PC
+2
R10
ALU
BYU CS 224
MSP430 Microarchitecture
43
Evaluate Source Operand
Constant Mode – #{-1,0,1,2,4,8}
R3

BYU CS 224
MSP430 Microarchitecture
44
3 Word Instruction
; M[var] += M[cnt]
Memory
PC
PC
PC
0x5090
0x000c
0x0218
PC
CPU
Registers
0x5090 IR
PC
Data Bus (+1 cycle)
+2
Data Bus (+1 cycle)
cnt
var
BYU CS 224
Data Bus (+1 cycle)
ALU
MSP430 Microarchitecture
45
Quiz 4.6
Show how to retrieve a PC-relative destination
operand from memory and present to the ALU:
BYU CS 224
MSP430 Microarchitecture
46
Final Instruction Phases

Execute

PUSH



JUMP



Decrement stack pointer (R1)
Compute 10-bit, 2’s complement, sign extended
Store

Move data from ALU to register, memory, or
I/O port
BYU CS 224
MSP430 Microarchitecture
47
Execute Phase
Push Instruction
push.w cnt
;
M[--sp] = M[cnt]
Memory
PC
PC
PC
cnt
SP
SP
0x1210
0x000c
0xa5a5
0xa5a5
BYU CS 224
CPU
Registers
0x1210 IR
Data Bus (+1 cycle)
PC
SP
fffe
+2
ALU
MSP430 Microarchitecture
48
Execute Cycle
Execute Phase: PUSH.W
SP = SP - 2
SP

Use Store Phase
to push on stack
BYU CS 224
MSP430 Microarchitecture
49
Execute Phase: jne func
jne func
; pc += sext(IR[9:0]) << 1
Memory
PC
PC
0x3c21
CPU
Registers
0x3c2a IR
PC
SEXT[9:0]<<1
+2
R2
Jump Next
func
COND
ALU
BYU CS 224
MSP430 Microarchitecture
50
Execute Cycle
Execute Phase: Jump
PC
2’s complement,
sign-extended
Select “COND” to
conditionally change PC

BYU CS 224
MSP430 Microarchitecture
51
Store Cycle
Store Phase: Rd

BYU CS 224
MSP430 Microarchitecture
52
Store Cycle
Store Phase: Other…

BYU CS 224
MSP430 Microarchitecture
53
BYU CS 224
MSP430 Microarchitecture
54
```