MIPS Architecture Instruction Set Instruction Encoding Fibonacci
LC-3 Instruction Set Architecture
description
Transcript of LC-3 Instruction Set Architecture
![Page 1: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/1.jpg)
1
LC-3LC-3 Instruction Set Instruction Set Architecture Architecture
Patt and Patel Ch. 5Patt and Patel Ch. 5
![Page 2: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/2.jpg)
2
Instruction Set ArchitectureInstruction Set ArchitectureISA is all of the ISA is all of the programmer-visibleprogrammer-visible components and operations of components and operations of the computer.the computer.
– memory organization• address space -- how may locations can be addressed?• addressibility -- how many bits per location?
– register set• how many? what size? how are they used?
– instruction set• opcodes• data types• addressing modes
The ISA provides all the information needed for someone to write a program in machine language (or translate from a high-level language to machine language).
![Page 3: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/3.jpg)
3
Memory vs. RegistersMemory vs. RegistersMemoryMemory
– address space: 216 locations (16-bit addresses)– addressability: 16 bits
RegistersRegisters– temporary storage, accessed in a single machine cycle
• accessing memory generally takes longer than a single cycle
– eight general-purpose registers: R0 - R7• each is 16 bits wide• how many bits to uniquely identify a register?
– other registers• not directly addressable, but used/effected by instructions• PC (program counter), condition codes
LC-3 Overview
![Page 4: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/4.jpg)
4
Instruction SetInstruction SetOpcodesOpcodes
– 15 opcodes– Operate (Logical or Arithmetic) 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 (< 0), Z = zero, P = positive (> 0)
Data TypesData Types– 16-bit 2’s complement integer (we’ll get to that soon)
Addressing ModesAddressing Modes– How is the location of an operand specified?– non-memory addresses: immediate, register– memory addresses: PC-relative, indirect, base+offset
LC-3 Overview
![Page 5: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/5.jpg)
5
Operate InstructionsOperate InstructionsOnly three operations: Only three operations: ADD, AND, NOTADD, AND, NOT
Source and destination operands are registersSource and destination operands are registers
– These instructions do not reference memory.– ADD and AND can use “immediate” mode,
where one operand is hard-wired into the instruction.
Will show dataflow diagram with each instruction.Will show dataflow diagram with each instruction.
– illustrates when and where data moves to accomplish the desired operation
LC-3 Overview
![Page 6: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/6.jpg)
6
NOTNOT
Note: Src and Dstcould be the same register.
Note: works only with registers.
Instructions
![Page 7: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/7.jpg)
7
ADD/ANDADD/AND
This zero means “register mode”
Instructions
![Page 8: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/8.jpg)
8
ADD/ANDADD/AND
Note: Immediate field is sign-extended.
This one means
“immediate mode”
Instructions
![Page 9: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/9.jpg)
9
Using Operate InstructionsUsing Operate Instructions
With only ADD, AND, NOT…With only ADD, AND, NOT…
– How do we subtract?
– How do we OR?
– How do we copy from one register to another?
– How do we initialize a register to zero?
![Page 10: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/10.jpg)
10
Data Movement Data Movement InstructionsInstructions
Load -- read data from memory to registerLoad -- read data from memory to register– LD: PC-relative mode– LDR: base+offset mode– LDI: indirect mode
Store -- write data from register to memoryStore -- write data from register to memory– ST: PC-relative mode– STR: base+offset mode– STI: indirect mode
Load effective address -- compute address, Load effective address -- compute address, save in registersave in register
– LEA: immediate mode– does not access memory
![Page 11: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/11.jpg)
11
Addressing ModesAddressing Modes
• How memory is addressed.How memory is addressed.
• Different instructions use different Different instructions use different addressing modes.addressing modes.
• Some instructions support more Some instructions support more than one addressing mode.than one addressing mode.
![Page 12: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/12.jpg)
12
LC-3 Addressing ModesLC-3 Addressing Modes
• PC-RelativePC-Relative
– Address is a displacement from PC
• IndirectIndirect
– Use PC-Relative to get address from memory
• Base plus OffsetBase plus Offset
– Use contents of a register as base address and add offset to find address (most common for load/store architectures)
![Page 13: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/13.jpg)
13
PC-RelativePC-Relative
The Problem:The Problem:
We want to specify address directly in the We want to specify address directly in the instructioninstruction
– But an address is 16 bits, and so is an instruction!– After subtracting 4 bits for opcode and 3 bits for
register, we have only 9 bits available for address.
Addressing Modes
![Page 14: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/14.jpg)
14
PC-Relative Addressing Mode
The Solution:Use the 9 bits as a signed offset from the current PC.
9 bits allows the offset range to be:
-256 ≤ offset ≤ +255
We can now form any address X, such that:
(PC – 256) ≤ X ≤ (PC +255)
Remember that the PC is incremented as part of the FETCH phase; This is done before the EVALUATE ADDRESS stage.
![Page 15: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/15.jpg)
15
LD (Load Data)LD (Load Data)PC-Relative Addressing Mode
![Page 16: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/16.jpg)
16
ST (Store Data)ST (Store Data)PC-Relative Addressing Mode
![Page 17: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/17.jpg)
17
IndirectIndirect
The Problem:The Problem:
With PC-relative mode, we can only address With PC-relative mode, we can only address data within 256 words of the instruction.data within 256 words of the instruction.
– What about the rest of memory?
– How do we access it?
Addressing Modes
![Page 18: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/18.jpg)
18
Solution #1:Solution #1: – Read address from memory location, then
load/store to that address.
First address is generated from PC and IR First address is generated from PC and IR (just like PC-relative addressing), then (just like PC-relative addressing), then content of that address is used as target content of that address is used as target for load/store.for load/store.
Indirect Addressing Mode
![Page 19: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/19.jpg)
19
LDILDIIndirect Addressing Mode
![Page 20: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/20.jpg)
20
STISTIIndirect Addressing Mode
![Page 21: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/21.jpg)
21
Base + OffsetBase + Offset
Remember The Problem:Remember The Problem:
With PC-relative mode, can only address With PC-relative mode, can only address data within 256 words of the instruction.data within 256 words of the instruction.
– What about the rest of memory? – How do we access it?
Addressing Modes
![Page 22: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/22.jpg)
22
Solution #2Solution #2::
– Use a register to generate a full 16-bit address.
4 bits for opcode, 3 bits for src/dest register, 3 bits 4 bits for opcode, 3 bits for src/dest register, 3 bits for for basebase register – the remaining 6 bits are used as register – the remaining 6 bits are used as a a signed offsetsigned offset..
– Offset is sign-extended before adding to base register.
Base + Offset Addressing Mode
![Page 23: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/23.jpg)
23
LDRLDRBase + Offset Addressing Mode
![Page 24: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/24.jpg)
24
STRSTRBase + Offset Addressing Mode
![Page 25: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/25.jpg)
25
Load Effective AddressLoad Effective Address
Computes address like PC-relative (PC Computes address like PC-relative (PC plus signed offset) and stores the result plus signed offset) and stores the result into a register.into a register.
Note: The Note: The addressaddress is stored in the is stored in the register, not the contents of the memory register, not the contents of the memory location.location.
Instructions
![Page 26: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/26.jpg)
26
LEA (Immediate)LEA (Immediate)
Instructions
![Page 27: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/27.jpg)
27
Example CodeExample CodeAddressAddress Instruction BitsInstruction Bits CommentsComments
x30F6x30F6 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 11 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 LEALEA R1 R1 PC – 3 = x30F4 PC – 3 = x30F4
x30F7x30F7 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 00 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 ADDADD R2 R2 R1 + 14 = x3102 R1 + 14 = x3102
x30F8x30F8 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 10 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 STST M[PC - 5] M[PC - 5] R2 R2M[x30F4] M[x30F4] x3102 x3102
x30F9x30F9 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 00 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 ANDAND R2 R2 0 0
x30FAx30FA 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 10 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 ADDADD R2 R2 R2 + 5 = 5 R2 + 5 = 5
x30FBx30FB 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 00 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 STRSTR M[R1+14] M[R1+14] R2 R2M[x3102] M[x3102] 5 5
x30FCx30FC 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 11 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 LDILDI
R3 R3 M[M[x30F4]] M[M[x30F4]]
R3 R3 M[x3102] M[x3102]
R3 R3 5 5
opcode
Instruction
![Page 28: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/28.jpg)
28
Control InstructionsControl InstructionsUsed to alter the sequence of instructions. Used to alter the sequence of instructions. This is done by changing the PC.This is done by changing the PC.
Conditional BranchConditional 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
Instructions
![Page 29: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/29.jpg)
29
Unconditional Branch (or Jump)Unconditional Branch (or Jump)
– always changes the PC
TRAPTRAP
– changes PC to the address of an OS “service routine”
– routine will return control to the next instruction (after TRAP) when finished
Control Instructions
![Page 30: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/30.jpg)
30
Condition CodesCondition CodesLC-3 has three LC-3 has three condition codecondition code bits: bits:
NN – negative – negative
ZZ – zero – zero
PP – positive (greater than zero) – positive (greater than zero)
Set by any instruction that writes a value to a Set by any instruction that writes a value to a register (ADD, AND, NOT, LD, LDR, LDI, LEA)register (ADD, AND, NOT, LD, LDR, LDI, LEA)
Exactly Exactly oneone will be set at all times will be set at all times
– Based on the last instruction that altered a register
Instructions
![Page 31: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/31.jpg)
31
Branch InstructionBranch Instruction
Instructions
• Branch specifies one or more Branch specifies one or more condition codes.condition codes.
• If the set bit is specified, the branch If the set bit is specified, the branch is taken.is taken.
• PC-relative addressing is usedPC-relative addressing is used
• target address is made by adding target address is made by adding signed offset (IR[8:0]) to current PC.signed offset (IR[8:0]) to current PC.
![Page 32: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/32.jpg)
32
If the branch is not taken, the next If the branch is not taken, the next sequential instruction is executed.sequential instruction is executed.
– Note: PC has already been incremented by FETCH stage.
– Note: Target must be within 256 words of BR instruction.
Branch Instruction
![Page 33: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/33.jpg)
33
BR (PC-Relative)BR (PC-Relative)Instructions
![Page 34: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/34.jpg)
34
Example: Using a BranchExample: Using a Branch
Compute sum of 12 integersCompute sum of 12 integersNumbers start at location x3100. Program starts Numbers start at location x3100. Program starts at location x3000.at location x3000.
R1 x3100R3 0
R2 12
R2=0?
R4 M[R1]R3 R3+R4R1 R1+1R2 R2-1
NO
YES
![Page 35: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/35.jpg)
35
AddressAddress Instruction BitsInstruction Bits InstructionInstruction CommentsComments
x3000x3000 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 11 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 LEALEA R1 R1 x3100 x3100 (PC+0xFF)(PC+0xFF)
x3001x3001 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 00 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 ANDAND R3 R3 0 0
x3002x3002 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 00 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 ANDAND R2 R2 0 0
x3003x3003 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 00 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 ADDADD R2 R2 12 12
x3004x3004 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 10 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 BRzBRz If Z, goto x300A If Z, goto x300A (PC+5)(PC+5)
x3005x3005 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 LDRLDR Load next value to R4Load next value to R4
x3006x3006 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 10 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 ADDADD Add to R3Add to R3
x3007x3007 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 10 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 ADDADD Increment R1 Increment R1 (pointer)(pointer)
X3008X3008 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 10 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 ADDADD Decrement R2 Decrement R2 (counter)(counter)
x3009x3009 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 00 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 BRnzpBRnzp Goto x3004 (PC-6)Goto x3004 (PC-6)
Example: Using a Branch
opcode
![Page 36: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/36.jpg)
36
JMPJMP
Jump is an unconditional branch -- Jump is an unconditional branch -- alwaysalways taken. taken.
– Target address is the contents of a register.– Allows any target address.
Instructions
![Page 37: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/37.jpg)
37
TRAPTRAP
When routine is done, PC is set to the instruction When routine is done, PC is set to the instruction following TRAP.following TRAP.
VectorVector RoutineRoutine
x23x23 input a character from the input a character from the keyboardkeyboard
x21x21 output a character to the monitoroutput a character to the monitor
x25x25 halt the programhalt the program
Calls a service routine, identified by 8-bit “trap vector.”
Instructions
![Page 38: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/38.jpg)
38
Another ExampleAnother Example
• Count the occurrences of a character in an arrayCount the occurrences of a character in an array– Program begins at location x3000– Read character from keyboard– Load each character from an array
• An array is a sequence of memory locationsAn array is a sequence of memory locations– Starting address of array is stored in the memory location
immediately after the program– If array character equals input character, increment
counter– End of array is indicated by a special ASCII value: EOT
(x04)• At the end, print the number of characters and haltAt the end, print the number of characters and halt
(lets assume there will be less than 10 occurrences (lets assume there will be less than 10 occurrences of the character)of the character)
![Page 39: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/39.jpg)
39
Flow ChartFlow Chart
Count = 0(R2 = 0)
Ptr = 1st character ofarray
(R3 = M[x3012])
Input charfrom keybd
(TRAP x23)
Done?(R1 ?= EOT)
Load char from array(R1 = M[R3])
Match?(R1 ?= R0)
Incr Count(R2 = R2 + 1)
Load next char from array(R3 = R3 + 1, R1 = M[R3])
Convert count toASCII character
(R0 = x30, R0 = R2 + R0)
Print count(TRAP x21)
HALT(TRAP x25)
NO
NO
YES
YES
![Page 40: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/40.jpg)
40
Program (page 1 of 2)Program (page 1 of 2)AddressAddress Instruction BitsInstruction Bits InstructionInstruction CommentsComments
x3000x3000 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 00 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 ANDAND R2 R2 0 (counter) 0 (counter)
x3001x3001 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 00 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 LDLD R3 R3 M[x3102] (ptr) M[x3102] (ptr)
x3002x3002 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 11 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 TRAPTRAP Input to R0 (TRAP Input to R0 (TRAP x23)x23)
x3003x3003 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 00 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 LDRLDR R1 R1 M[R3] M[R3]
x3004x3004 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 00 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 ADDADD R4 R4 R1 – 4 (EOT) R1 – 4 (EOT)
x3005x3005 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 00 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 BRzBRz If Z, goto x300EIf Z, goto x300E
x3006x3006 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 11 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 NOTNOT R1 R1 NOT R1 NOT R1
x3007x3007 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 10 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 ADDADD R1 R1 R1 + 1 R1 + 1
X3008X3008 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 00 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 ADDADD R1 R1 R1 + R0 R1 + R0
x3009x3009 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 10 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 BRnpBRnp If N or P, goto x300BIf N or P, goto x300B
opcode
![Page 41: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/41.jpg)
41
Program (page 2 of 2)Program (page 2 of 2)AddressAddress Instruction BitsInstruction Bits InstructionInstruction CommentsComments
x300Ax300A 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 10 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 ADDADD R2 R2 R2 + 1 R2 + 1
x300Bx300B 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 10 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 ADDADD R3 R3 R3 + 1 R3 + 1
x300Cx300C 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 00 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 LDRLDR R1 R1 M[R3] M[R3]
x300Dx300D 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 00 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 BRnzpBRnzp Goto x3004Goto x3004
x300Ex300E 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 00 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 LDLD R0 R0 M[x3013] M[x3013]
x300Fx300F 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 00 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 ADDADD R0 R0 R0 + R2 R0 + R2
x3010x3010 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 11 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 TRAPTRAP Print R0 (TRAP x21)Print R0 (TRAP x21)
x3011x3011 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 11 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 TRAPTRAP HALT (TRAP x25)HALT (TRAP x25)
X3012X3012 Starting Address of FileStarting Address of File
x3013x3013 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 DataData ASCII x30 (‘0’)ASCII x30 (‘0’)
opcode
![Page 42: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/42.jpg)
42
LC-3 LC-3 Data Data PathPath
Filled arrow = info to be processed.
Unfilled arrow= control signal.
![Page 43: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/43.jpg)
43
Data Path ComponentsData Path ComponentsGlobal busGlobal 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
MemoryMemory
– Control and data registers for memory and I/O devices– memory: MAR, MDR (also control signal for read/write)
LC-3 Data Path
![Page 44: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/44.jpg)
44
ALUALU
– 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 FileRegister 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
Data Path Components
![Page 45: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/45.jpg)
45
PC and PCMUXPC and PCMUX
– There are three inputs to PC, controlled by PCMUX1. PC+1 – FETCH stage2. Address adder – BR, JMP3. bus – TRAP (discussed later)
MAR and MARMUXMAR and MARMUX
– There are two inputs to MAR, controlled by MARMUX1. Address adder – LD/ST, LDR/STR2. Zero-extended IR[7:0] -- TRAP (discussed later)
Data Path Components
![Page 46: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/46.jpg)
46
Condition Code LogicCondition 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)
Control Unit – Finite State MachineControl Unit – Finite State Machine
– On each machine cycle, changes control signals for next phaseof instruction processing
• who drives the bus? (GatePC, GateALU, …)• which registers are write enabled? (LD.IR, LD.REG, …)• which operation should ALU perform? (ALUK)• …
– Logic includes decoder for opcode, etc.
Data Path Components
![Page 47: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/47.jpg)
47
Summary of ISASummary of ISA
• Instruction Set ArchitectureInstruction Set Architecture
• The ISA provides all the information The ISA provides all the information needed for someone to write a needed for someone to write a program in machine language (or program in machine language (or translate from a high-level translate from a high-level language to machine language).language to machine language).
![Page 48: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/48.jpg)
48
Questions?Questions?
![Page 49: LC-3 Instruction Set Architecture](https://reader033.fdocuments.in/reader033/viewer/2022061406/5681481f550346895db54a2c/html5/thumbnails/49.jpg)
49