COA Unit 3
COA Unit 3
Architecture
4
MAJOR COMPONENTS OF CPU
Performs the bulk of data-processing
operations is called the central processing
unit and is referred to as the CPU.
Storage Components: The register set
stores intermediate data used during the
execution of the instructions.
Registers
Flip-flops
Control Components:
Control Unit
The control unit supervises the transfer of Control Unit
information among the registers and 5
instructs the ALU as to which operation to
perform.
GENERAL REGISTER ORGANIZATION
Clock Input
R1
R2
R3
R4
R5
R6
R7
Load
(7 lines) SELA { MUX MUX } SELB
3x8 A bus B bus
decoder
SELD
OPR ALU
Output
3 3 3 5
Control Word SELA SELB SELD OPR 6
OPERATION OF CONTROL UNIT
The control unit directs the information flow through ALU by:
- Selecting various Components in the system
- Selecting the Function of ALU
Example: R1 <- R2 + R3
[1] MUX A selector (SELA): BUS A R2 to place the content of R2 into bus A .
[2] MUX B selector (SELB): BUS B R3 to place the content o f R 3 into bus B .
[3] ALU operation selector (OPR): ALU to ADDto provide the arithmetic addition A + B .
[4] Decoder destination selector (SELD): R1 Out Bus to transfer the content
o f the output bus into
3 3 3 5 R1.
Control Word SELA SELB SELD OPR
ALU CONTROL
OPR
Encoding of ALU operations Select Operation Symbol
00000 Transfer A TSFA
00001 Increment A INCA
00010 ADD A + B ADD
00101 Subtract A - B SUB
00110 Decrement A DECA
01000 AND A and B AND
01010 OR A and B OR
01100 XOR A and B XOR
01110 Complement A COMA
10000 Shift right A SHRA
11000 Shift left A SHLA
9
REGISTER STACK ORGANIZATION
Stack
- Very useful feature for nested subroutines, nested loops control
- Also efficient for arithmetic expression evaluation
- Storage which can be accessed in LIFO
- Pointer: SP
- Only PUSH and POP operations are applicable
stack Address
FULL EMPTY
Stack pointer 4
SP C 3
B 2
A 1
Push, Pop operations 0
DR
/* Initially, SP = 0, EMPTY = 1, FULL = 0 */
PUSH POP
SP SP + 1 DR M[SP]
M[SP] DR SP SP - 1
If (SP = 0) then (FULL 1) If (SP = 0) then (EMPTY 1)
EMPTY 0 FULL 0 10
MEMORY STACK ORGANIZATION
1000
Program
Memory with Program, Data, PC (instructions)
and Stack Segments
Data
AR (operands)
SP 3000
stack
3997
3998
3999
4000
- A portion of memory is used as a stack with a 4001
processor register as a stack pointer DR
- PUSH: SP SP - 1
M[SP] DR
- POP: DR M[SP]
SP SP + 1
(3 * 4) + (5 * 6) 34*56*+
6
4 5 5 30
3 3 12 12 12 12 42
3 4 * 5 6 * +
12
Worksheet-1
1.
2.
3.
13
Worksheet-1-Answers
1.
2.
3.
14
Worksheet-2
15
1.
2.
3.
4.
16
Instruction Format
INSTRUCTION FORMAT
Instruction Fields
OP-code field - specifies the operation to be performed
Address field - designates memory address(s) or a processor register(s)
Mode field - specifies the way the operand or the
effective address is determined 1. ZERO-ADDRESS INSTRUCTIONS
2. ONE-ADDRESS INSTRUCTIONS
The number of address fields in the instruction format 3. TWO-ADDRESS INSTRUCTIONS
4. THREE-ADDRESS INSTRUCTIONS
depends on the internal organization of CPU
Program to evaluate X = (A + B) * (C + D) :
ADD R1, A, B /* R1 M[A] + M[B]*/
ADD R2, C, D /* R2 M[C] + M[D] */
MUL X, R1, R2 /* M[X] R1 * R2 */
Two-Address Instructions:
Program to evaluate X = (A + B) * (C + D) :
2.
20
Given:
256–250=6 two Address instructions are free which can be used indicate the
given instruction is a 1 Address instruction.
Examples :
CMA ( A A’ )
RAL
2. Immediate Addressing
• Operand is part of instruction
• Operand = address field, No need to specify address in the
instruction
• e.g. ADD 5
– Add 5 to contents of accumulator
– 5 is operand
• No memory reference to fetch data
• Fast to acquire an operand
• Limited range
The instruction having ‘I’
(Immediate) letter fall under this
category
Examples :
MVI C,25H
MVI M,7CH
LXI D,245EH
3. Register Addressing
Address specified in the instruction is the register address
• Data transfer between -Designated operand need to be in a register
- Shorter address than the memory address
Registers - Saving address field in the instruction
• Operand is held in register - Faster to acquire an operand than the memory addressing
- EA = IR(R) (IR(R): Register field of IR)
named in address filed
• EA = R
• Limited number of registers
• Very small address field needed
– Shorter instructions
– Faster instruction fetch
• No memory access
• Very fast execution
• Very limited address space
• Multiple registers helps
performance
– Requires good assembly
programming or compiler
writing
– N.B. C programming Examples :
• register int a; MOV A, R1
ADD A
4.Register Indirect Addressing
• Instruction specifies a register which contains the memory address of the operand
– Saving instruction bits since register address is shorter than the memory address
– Slower to acquire an operand than both the register addressing or memory
addressing
– EA = [IR(R)] ([x]: Content of x)
• EA = (R)
• Operand is in memory cell pointed to by contents of register R
• Large address space (2n)
• One fewer memory access than indirect addressing
5. Auto-increment or Auto-decrement
• A special case of indirect register mode
• The register whose number is included in the instruction code, contains
the address of the operand.
• When the address in the register is used to access memory, the value
in the register is incremented or decremented by 1 (after or before the
execution of the instruction), PC
• Autoincrement Mode = after operand addressing , the contents of
the register is incremented.
• Example : The register R4, the autoincrement mode is written as
(R4)+.
• Decrement Mode = before operand addressing, the contents of the
register is decrement.
• Example : The register R4, the autodecrement mode is written as
30
-
(R4).
6. Direct Address Mode
Memory cell pointed to by address field contains the address of (pointer to) the
operand
The address field of an instruction specifies the address of a memory location
that contains the address of the operand
When the abbreviated address is used, large physical memory can be addressed
with a relatively small number of bits
Slow to acquire an operand because of an additional memory access
EA = M[IR(address)]
Large address space
2n where n = word length
May be nested, multilevel, cascaded
e.g. EA = (((A)))
Draw the diagram yourself
Multiple memory accesses to find operand 32
Hence slower
EA = Displacement + CPU
Register
33
8. Relative Addressing Modes
A version of displacement addressing
EA = A + (R), R = Program counter, PC, A = base value
EA = A + (PC), i.e. get operand from A cells from current location
pointed to by PC c.f locality of reference & cache usage
The Address fields of an instruction specifies the part of the address
PC Relative Addressing Mode (R = PC)
- EA = PC + IR (address)
- Address field of the instruction is short.
- Large physical memory can be accessed with a small number of
address bits.
- Advantage
- The relative addressing mode doesn’t require memory references.
- Disadvantage
34
- The relative addressing mode doesn’t have any disadvantages as
9. Indexed Addressing Mode
• The index addressing mode is pretty helpful whenever the instructions in a
program access an array or large ranges of memory addresses.
• The effective address, in such a mode, is generated when we add a constant
to the content of the register. The register content does not ever change.
• Example:
XR: Index Register:
EA = XR + IR(address)
- Advantage
- Using the index addressing mode, we get flexibility for specifying
several locations of the memory.
- Disadvantage
- It is very complex to implement the index addressing mode.
35
10. Base Register Addressing Mode
A holds displacement
R holds pointer to base address
R may be explicit or implicit
e.g. segment registers in 80x86
BAR: Base Address Register:
- EA = BAR + IR(address)
36
11. Stack Addressing
Operand is (implicitly) on top of stack
e.g.
ADD Pop top two items from stack and add
37
Worksheet-4
Address Memory
200 Load to AC Mode
LOAD A PC = 200 201 Address = 500
What is the content of A and 202 Next instruction
R1 = 400
EA of the following addressing
modes XR = 100
399 450
400 700
AC
500 800
600 900
399 450
XR = 100
400 700
AC
500 800
600 900
Addressing Effective Content
Mode Address of AC
Direct address 500 /* AC (500) */ 800 702 325
Immediate operand - /* AC 500 */ 500
Indirect address 800 /* AC ((500)) */ 300
Register - /* AC R1 */ 400 800 300
Register indirect 400 /* AC (R1) */ 700
Autoincrement 400 /* AC (R1)+ */ 700
Autodecrement 399 /* AC -(R) */ 450
Relative address 702 /* AC (PC+500) */ 325
Indexed address 600 /* AC (XR+500) */ 900
39
Instructions Set
Data Transfer Instructions
Data Manipulation Instructions
Arithmetic Instructions
Logical and Bit Manipulation Instructions
Shift Instructions
Program Control Instructions
DATA TRANSFER INSTRUCTIONS
Typical Data Transfer Instructions
Name Mnemonic
Load LD
Store ST
Move MOV
Exchange XCH
Input IN
Output OUT
Push PUSH
Pop POP
Data Transfer Instructions with Different Addressing Modes
Assembly
Mode Convention Register Transfer
Direct address LD ADR AC M[ADR]
Indirect address LD @ADR AC M[M[ADR]]
Relative address LD $ADR AC M[PC + ADR]
Immediate operand LD #NBR AC NBR
Index addressing LD ADR(X) AC M[ADR + XR]
Register LD R1 AC R1
Register indirect LD (R1) AC M[R1]
Autoincrement LD (R1)+ AC M[R1], R1 R1 + 1
Autodecrement LD -(R1) R1 R1 - 1, AC M[R1]
41
DATA MANIPULATION INSTRUCTIONS
Three Basic Types: Arithmetic instructions
Logical and bit manipulation instructions
Shift instructions
Arithmetic Instructions
Name Mnemonic
Increment INC
Decrement DEC
Add ADD
Subtract SUB
Multiply MUL
Divide DIV
Add with Carry ADDC
Subtract with Borrow SUBB
Negate(2’s Complement) NEG
44
SUBROUTINE CALL AND RETURN
SUBROUTINE CALL Call subroutine
Jump to subroutine
Branch to subroutine
Branch and save return address
Two Most Important Operations are Implied;
Software Interrupts
Both External and Internal Interrupts are initiated by the computer Hardware.
Software Interrupts are initiated by texecuting an instruction.
- Supervisor Call -> Switching from a user mode to the supervisor mode
-> Allows to execute a certain class of operations
which are not allowed in the user mode
46
INTERRUPT PROCEDURE
Interrupt Procedure and Subroutine Call
- The interrupt is usually initiated by an internal or
an external signal rather than from the execution of
an instruction (except for the software interrupt)
47