The LC-3
The LC-3
The LC-3
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell
Instruction Set Architecture
ISA = All of the programmer-visible components
and operations of the computer
memory organization
address space -- how may locations can be addressed?
addressability -- how many bits per location?
register set
how many? what size? how are they used?
instruction set
opcodes
data types
addressing modes
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 2
LC-3 Overview: Memory and Registers
Memory
address space: 216 locations (16-bit addresses)
addressability: 16 bits
Registers
temporary storage, accessed in a single machine cycle
accessing memory generally takes longer than a single cycle
eight general-purpose registers: R0 - R7
each 16 bits wide
how many bits to uniquely identify a register?
other registers
not directly addressable, but used by (and affected by) instructions
PC (program counter), condition codes
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 3
LC-3 Overview: Instruction Set
Opcodes
15 opcodes
Operate instructions: ADD, AND, NOT
Data movement instructions: LD, LDI, LDR, LEA, ST, STR, STI
Control instructions: BR, JSR/JSRR, JMP, RTI, TRAP
some opcodes set/clear condition codes, based on result:
N = negative, Z = zero, P = positive (> 0)
Data Types
16-bit 2’s complement integer
Addressing Modes
How is the location of an operand specified?
non-memory addresses: immediate, register
memory addresses: PC-relative, indirect, base+offset
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 4
Operate Instructions
Only three operations: ADD, AND, NOT
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 5
NOT (Register)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 7
ADD/AND (Immediate)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 8
Using Operate Instructions
With only ADD, AND, NOT…
How do we subtract?
How do we OR?
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 9
Data Movement Instructions
Load -- read data from memory to register
LD: PC-relative mode
LDR: base+offset mode
LDI: indirect mode
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 10
PC-Relative Addressing Mode
Want to specify address directly in the instruction
But an address is 16 bits, and so is an instruction!
After subtracting 4 bits for opcode
and 3 bits for register, we have 9 bits available for address.
Solution:
Use the 9 bits as a signed offset from the current PC.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 12
ST (PC-Relative)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 13
Indirect Addressing Mode
With PC-relative mode, can only address data
within 256 words of the instruction.
What about the rest of memory?
Solution #1:
Read address from memory location,
then load/store to that address.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 14
LDI (Indirect)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 15
STI (Indirect)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 16
Base + Offset Addressing Mode
With PC-relative mode, can only address data
within 256 words of the instruction.
What about the rest of memory?
Solution #2:
Use a register to generate a full 16-bit address.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 17
LDR (Base+Offset)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 18
STR (Base+Offset)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 19
Load Effective Address
Computes address like PC-relative (PC plus
signed offset) and stores the result into a
register.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 20
LEA (Immediate)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 21
Example
Address Instruction Comments
M[PC - 5] ← R2
x30F8 0011010111111011 M[x30F4] ← x3102
x30F9 0101010010100000 R2 ← 0
x30FA 0001010010100101 R2 ← R2 + 5 = 5
M[R1+14] ← R2
x30FB 0111010001001110 M[x3102] ← 5
R3 ← M[M[x30F4]]
x30FC 1010011111110111 R3 ← M[x3102]
R3 ← 5
opcode
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 22
Control Instructions
Used to alter the sequence of instructions
(by changing the Program Counter)
Conditional Branch
branch is taken if a specified condition is true
signed offset is added to PC to yield new PC
else, the branch is not taken
PC is not changed, points to the next sequential instruction
TRAP
changes PC to the address of an OS “service routine”
routine will return control to the next instruction (after TRAP)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 23
Condition Codes
LC-3 has three condition code registers:
N -- negative
Z -- zero
P -- positive (greater than zero)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 24
Branch Instruction
Branch specifies one or more condition codes.
If the set bit is specified, the branch is taken.
PC-relative addressing:
target address is made by adding signed offset (IR[8:0])
to current PC.
Note: PC has already been incremented by FETCH stage.
Note: Target must be within 256 words of BR instruction.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 25
BR (PC-Relative)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 26
Using Branch Instructions
Compute sum of 12 integers.
Numbers start at location x3100. Program starts at location x3000.
R1 ← x3100
R3 ← 0
R2 ← 12
R4 ← M[R1]
R3 ← R3+R4
R2=0?
NO R1 ← R1+1
R2 ← R2-1
YES
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 27
Sample Program
Address Instruction Comments
x3001 0101011011100000 R3 ← 0
x3002 0101010010100000 R2 ← 0
x3003 0001010010101100 R2 ← 12
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 28
JMP (Register)
Jump is an unconditional branch -- always taken.
Target address is the contents of a register.
Allows any target address.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 29
TRAP
vector routine
x23 input a character from the keyboard
x21 output a character to the monitor
x25 halt the program
When routine is done,
PC is set to the instruction following TRAP.
(We’ll talk about how this works later.)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 30
Another Example
Count the occurrences of a character in a file
Program begins at location x3000
Read character from keyboard
Load each character from a “file”
File is a sequence of memory locations
Starting address of file is stored in the memory location
immediately after the program
If file character equals input character, increment counter
End of file is indicated by a special ASCII value: EOT (x04)
At the end, print the number of characters and halt
(assume there will be less than 10 occurrences of the character)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 31
Flow Chart
Count = 0
(R2 = 0) YES
Convert count to
Done?
(R1 ?= EOT)
ASCII character
(R0 = x30, R0 = R2 + R0)
HALT
Incr Count (TRAP x25)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 32
Program (1 of 2)
Address Instruction Comments
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 33
Program (2 of 2)
Address Instruction Comments
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 34
LC-3 Data Path
Revisited
Filled arrow
= info to be processed.
Unfilled arrow
= control signal.
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 35
Data Path Components
Global bus
special set of wires that carry a 16-bit signal
to many components
inputs to the bus are “tri-state devices,”
that only place a signal on the bus when they are enabled
only one (16-bit) signal should be enabled at any time
control unit decides which signal “drives” the bus
any number of components can read the bus
register only captures bus data if it is write-enabled by the control unit
Memory
Control and data registers for memory and I/O devices
memory: MAR, MDR (also control signal for read/write)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 36
Data Path Components
ALU
Accepts inputs from register file
and from sign-extended bits from IR (immediate field).
Output goes to bus.
used by condition code logic, register file, memory
Register File
Two read addresses (SR1, SR2), one write address (DR)
Input from bus
result of ALU operation or memory read
Two 16-bit outputs
used by ALU, PC, memory address
data for store instructions passes through ALU
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 37
Data Path Components
PC and PCMUX
Three inputs to PC, controlled by PCMUX
PC+1 – FETCH stage
Address adder – BR, JMP
bus – TRAP (discussed later)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 38
Data Path Components
Condition Code Logic
Looks at value on bus and generates N, Z, P signals
Registers set only when control unit enables them (LD.CC)
only certain instructions set the codes
(ADD, AND, NOT, LD, LDI, LDR, LEA)
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 39
Register Transfer
Language (RTL)
ADD:
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 40
Register Transfer
Language (RTL)
LD:
MAR <- PC, PC <- PC + 1
MDR <- MEM[MAR]
IR <- MDR
DECODE
MAR <- PC + sext(IR[8:0])
MDR <- MEM[MAR]
GPR[IR[11:9]] <- MDR, setCC()
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 41
Register Transfer
Language (RTL)
STR:
MAR <- PC, PC <- PC + 1
MDR <- MEM[MAR]
IR <- MDR
DECODE
MAR <- GPR[IR[8:6]] + sext(IR[5:0])
MDR <- GPR[IR[11:9]]
MEM[MAR] <- MDR
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 42
Register Transfer
Language (RTL)
JSR:
MAR <- PC, PC <- PC + 1
MDR <- MEM[MAR]
IR <- MDR
DECODE
R7 <- PC
PC <- PC + sext(IR[10:0])
University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell 43