Chapter1 - Basic Structure of Computers
Chapter1 - Basic Structure of Computers
Basic
Structure of Computers
Functional Units
Functional Units
Arithmetic
and
logic
Input
Memory
Output
Control
I/O
Figure1.1.Basicfunctionalunitsofacomputer.
Processor
Information Handled by a
Computer
Instructions/machine
instructions
Data
Encoded
Memory Unit
Store
Primary storage
Fast
Programs must be stored in memory while they are being executed
Large number of semiconductor storage cells
Processed in words
Address
RAM and memory access time
Memory hierarchy cache, main memory
Control Unit
Action for
branches
Instruction fetch
IR = MEM[PC]
PC = PC + 4
A = Reg[IR[25-21]]
B = Reg[IR[20-16]]
ALUOut = PC + (sign extend (IR[15-0])<<2)
Execution, address
computation, branch/jump
completion
ALUOut = A op B
ALUOut = A+sign
extend(IR[15-0])
Reg[IR[15-11]] =
ALUOut
Load:MDR =Mem[ALUOut]
or
Store:Mem[ALUOut] = B
Load: Reg[IR[20-16]] =
MDR
IF(A==B) Then
PC=ALUOut
Action for
jumps
PC=PC[3128]||(IR[250]<<2)
Basic Operational
Concepts
Review
A Typical Instruction
Add LOCA, R0
Add the operand at memory location LOCA to the
operand in a register R0 in the processor.
Place the sum into register R0.
The original contents of LOCA are preserved.
The original contents of R0 is overwritten.
Instruction is fetched from the memory into the
processor the operand at LOCA is fetched and
added to the contents of R0 the resulting sum is
stored in register R0.
LOCA, R1
Add R1, R0
Whose contents will be overwritten?
MAR
MDR
Control
PC
R0
R1
Processor
IR
ALU
Rn
ngeneralpurpose
registers
Figure1.2.Connectionsbetweentheprocessorandthememory.
Registers
Instruction
register (IR)
Program counter (PC)
General-purpose register (R0 Rn-1)
Memory
devices
PC is set to point to the first instruction
The contents of PC are transferred to MAR
A Read signal is sent to the memory
The first instruction is read out and loaded
into MDR
The contents of MDR are transferred to IR
Decode and execute the instruction
General-purpose register
Memory (address to MAR Read MDR to ALU)
Perform
operation in ALU
Store the result back
To general-purpose register
To memory (address to MAR, result to MDR Write)
During
Interrupt
Bus Structures
There
Bus Structure
Single-bus
Input
Output
Memory
Figure1.3.Singlebusstructure.
Processor
Speed Issue
Different
Performance
Performance
The
Hardware design
Instruction set
Compiler
Performance
Cache
memory
Bus
Figure1.5.
Theprocessorcache.
Processor
Performance
The
Processor Clock
Clock,
N S
T
R
How to improve T?
Clock Rate
Increase
clock rate
Increases
between N and S
A key consideration is the use of pipelining
Reduced
Compiler
Performance Measurement
T is difficult to compute.
Measure computer performance using benchmark programs.
System Performance Evaluation Corporation (SPEC) selects and
publishes representative application programs for different application
domains, together with test results for many commercially available
computers.
Compile and run (no simulation)
Reference computer
1
n
Multiprocessors and
Multicomputers
Multiprocessor computer
Multicomputers
Chapter 2. Machine
Instructions and
Programs
Objectives
Number, Arithmetic
Operations, and
Characters
Signed Integer
3
major representations:
Sign and magnitude
Ones complement
Twos complement
Assumptions:
1111
1110
+0
+1
0000
0001
1101
0010
+2
-4
1100
0011
+3
0 100 = + 4
-3
1011
0100
+4
1 100 = - 4
-2
1010
0101
1001
-1
0110
1000
-0
0111
+5
+6
+7
Ones Complement
Representation
-0
-1
-2
1111
1110
+0
0000
0001
1101
+1
0010
+2
-3
1100
0011
+3
0 100 = + 4
-4
1011
0100
+4
1 011 = - 4
-5
1010
0101
1001
-6
0110
1000
-7
0111
+5
+6
+7
Twos Complement
Representation
-1
-2
-3
like 1's comp
except shifted
one position
clockwise
1111
1110
+0
0000
0001
1101
+1
0010
+2
-4
1100
0011
+3
0 100 = + 4
-5
1011
0100
+4
1 100 = - 4
-6
1010
0101
1001
-7
0110
1000
-8
0111
+5
+6
+7
Binary, Signed-Integer
Representations
B
Page 28
Valuesrepresented
b3 b2b1b0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
1
0
1
0
1
0
1
0
0
1
0
1
0
1
0
1
Signand
magnitude
+7
+6
+5
+4
+3
+2
+1
+0
0
1
2
3
4
5
6
7
1' scomplement
+7
+6
+5
+4
+3
+2
+1
+0
7
6
5
4
3
2
1
0
2' scomplement
+
+
+
+
+
+
+
+
Figure2.1.Binary,signedintegerrepresentations.
7
6
5
4
3
2
1
0
8
7
6
5
4
3
2
1
0100
-4
1100
+3
0011
+ (-3)
1101
0111
-7
11001
0100
-4
1100
-3
1101
+3
0011
10001
-1
1111
0010
+ 0011
( + 2)
( + 3)
0101
( + 5)
(c)
1011
+ 1110
1001
5
2
7
(e)
1101
1001
3
7
Page 31
(f)
(g)
(h)
(i)
(j)
0010
0100
0110
0011
1001
1011
1001
0001
0010
1101
( + 2)
( + 4)
( + 6)
( + 3)
7
5
7
( + 1)
( + 2)
3
(b)
0111
+ 1101
0100
( + 4)
6
2
( + 7)
3
( + 4)
1101
+ 0111
0100
( + 4)
0100
+ 1010
1110
(d)
0010
+ 1100
1110
0110
+ 1101
0011
1001
+ 0101
1110
( + 3)
1001
+ 1111
1000
0010
+ 0011
0101
( + 5)
Figure2.4.2'scomplementAddandSubtractoperations.
0000
0010
1100
0100
1010
0101
1001
-7
0110
1000
-8
0111
+6
+7
5 + 3 = -8
+3
+4
+5
1111
0000
+1
0001
1101
-4
-5
+0
1110
-3
+2
0011
1011
-6
-2
+1
0001
1101
-4
-5
1111
1110
-3
-1
+0
0010
1100
1011
1010
-6
0110
1000
-8
-7 - 2 = +7
0011
+3
0100
+4
0101
1001
-7
+2
0111
+7
+6
+5
Overflow Conditions
5
0111
0101
-7
1000
1001
0011
-2
1100
-8
1000
10111
Overflow
Overflow
5
0000
0101
-3
1111
1101
0010
-5
1011
0111
-8
11000
No overflow
No overflow
Overflow when carry-in to the high-order bit does not equal carry out
Sign Extension
Task:
Given w-bit signed integer x
Convert it to w+k-bit integer with same value
Rule:
Make k copies of sign bit:
X = xw1 ,, xw1 , xw1 , xw2 ,, x0
X
k copies of MSB
Decimal
Hex
Binary
3B6D
0011101101101101
15213
15213 0000C492 00000000000000000011101101101101
C493
1100010010010011
-15213
-15213 FFFFC493 11111111111111111100010010010011
Memory Locations,
Addresses, and
Operations
Memory consists
of many millions of
storage cells,
each of which can
store 1 bit.
Data is usually
accessed in n-bit
groups. n is called
word length.
firstword
secondword
ithword
lastword
Figure2.5.Memorywords.
b 31 b 30
b1
8bits
8bits
8bits
8bits
ASCII
character
ASCII
character
ASCII
character
ASCII
character
(b)Fourcharacters
b0
Big-Endian: lower byte addresses are used for the most significant bytes of the word
Little-Endian: opposite ordering. lower byte addresses are used for the less significant
bytes of the word
Word
address
Byteaddress
Byteaddress
2 4
2 4
2 3
2 2
2 1
(a)Bigendianassignment
2 4
2 1
2 2
2 3
2 4
(b)Littleendianassignment
Figure2.7.Byteandwordaddressing.
ordering of bytes
Word alignment
Access
strings
Memory Operation
Load
Store
(or Write)
Instruction and
Instruction
Sequencing
Must-Perform Operations
Data
programs.
Move LOC, R1 = R1[LOC]
Add R1, R2, R3 = R3 [R1]+[R2]
CPU Organization
Single
Accumulator
General
Register
Stack
Instruction Formats
Three-Address Instructions
ADD
R1, R2
R1 R1 + R2
ADD
AC AC + M[AR]
Zero-Address Instructions
R1 R2 + R3
One-Address Instructions
R1, R2, R3
Two-Address Instructions
ADD
ADD
RISC Instructions
Instruction Formats
Example: Evaluate (A+B) (C+D)
Three-Address
1.
2.
3.
ADD
ADD
MUL
R1, A, B
R2, C, D
X, R1, R2
; R1 M[A] + M[B]
; R2 M[C] + M[D]
; M[X] R1 R2
Instruction Formats
Example: Evaluate (A+B) (C+D)
Two-Address
1.
2.
3.
4.
5.
6.
MOV
ADD
MOV
ADD
MUL
MOV
R1, A
R1, B
R2, C
R2, D
R1, R2
X, R1
; R1 M[A]
; R1 R1 + M[B]
; R2 M[C]
; R2 R2 + M[D]
; R1 R1 R2
; M[X] R1
Instruction Formats
Example: Evaluate (A+B) (C+D)
One-Address
1.
2.
3.
4.
5.
6.
7.
LOAD A
ADD B
STORET
LOAD C
ADD D
MUL T
STOREX
; AC M[A]
; AC AC + M[B]
; M[T] AC
; AC M[C]
; AC AC + M[D]
; AC AC M[T]
; M[X] AC
Instruction Formats
Example: Evaluate (A+B) (C+D)
Zero-Address
1.
2.
3.
4.
5.
6.
7.
8.
PUSH A
PUSH B
ADD
PUSH C
PUSH D
ADD
MUL
(C+D)(A+B)
POP X
; TOS A
; TOS B
; TOS (A + B)
; TOS C
; TOS D
; TOS (C + D)
; TOS
; M[X] TOS
Instruction Formats
Example: Evaluate (A+B) (C+D)
RISC
1.
2.
3.
4.
5.
6.
7.
8.
LOAD R1, A
LOAD R2, B
LOAD R3, C
LOAD R4, D
ADD R1, R1, R2
ADD R3, R3, R4
MUL R1, R1, R3
STOREX, R1
; R1 M[A]
; R2 M[B]
; R3 M[C]
; R4 M[D]
; R1 R1 + R2
; R3 R3 + R4
; R1 R1 R3
; M[X] R1
Using Registers
Registers
are faster
Shorter instructions
Potential
speedup
Minimize the frequency with which data is
moved back and forth between the memory
and processor registers.
Contents
Move A,R0
i+4
Add
i+8
Move R0,C
B,R0
3instruction
program
segment
Datafor
theprogram
Assumptions:
- One memory operand
per instruction
- 32-bit word length
- Memory is byte
addressable
- Full memory address
can be directly specified
in a single-word instruction
Two-phase procedure
-Instruction fetch
-Instruction execute
Page 43
Figure2.8.AprogramforC+
Branching
Move
NUM1,R0
i+4
Add
NUM2,R0
i+8
Add
NUM3,R0
i + 4n 4
Add
NUMn,R0
i + 4n
Move
R0,SUM
SUM
NUM1
NUM2
NUMn
Figure2.9.Astraightlineprogramforaddingnnumbers.
Branching
LOOP
Program
loop
Branch target
Move
N,R1
Clear
R0
Determineaddressof
"Next"numberandadd
"Next"numbertoR0
Decrement
R1
Branch>0
LOOP
Move
R0,SUM
Conditional branch
SUM
N
NUM1
Figure2.10.Usingalooptoaddnnumbers.
NUM2
NUMn
Condition Codes
Condition
code flags
Condition code register / status register
N (negative)
Z (zero)
V (overflow)
C (carry)
Different instructions affect different flags
Conditional Branch
Instructions
Example:
A: 1 1 1 1 0 0 0 0
B: 0 0 0 1 0 1 0 0
A:
11110000
+(B): 1 1 1 0 1 1 0 0
11011100
C=1
S=1
V=0
Z=0
Status Bits
Cn-1
ALU
Cn
C
Fn-1
Zero Check
Addressing
Modes
Addressing Modes
Implied
Opcode Mode
...
Immediate
Register
Addressing Modes
Register
Indirect
MOV
R1, (R2)
Autoincrement
Direct
/ Autodecrement
R2 = 3
R3 = 5
Address
Addressing Modes
Indirect
Address
0 1 0 4
1 1 0 A
Addressing Modes
Relative
Address
EA = PC + Relative Addr
PC = 2
0
1
2
AR = 100
Could be Positive
or Negative
(2s Complement)
100
101
102
103
104
1 1 0 A
Addressing Modes
Indexed
XR = 2
+
AR = 100
Could be Positive
or Negative
(2s Complement)
100
101
102
103
104
1 1 0 A
Addressing Modes
Base
Register
AR = 2
+
BR = 100
Usually points
to the beginning
of an array
100
101
102
103
104
0
0
0
0
0
0
0
0
1
0
0
1
0
0
5
5
2
A
7
9
Addressing Modes
Name
The different
ways in which
the location of
an operand is
specified in
an instruction
are referred to
as addressing
modes.
Assembler syntax
Addressing
function
Immediate
#Value
Operand=Value
Register
Ri
EA = Ri
Absolute(Direct)
LOC
EA = LOC
Indirect
(Ri )
(LOC)
EA = [Ri ]
EA = [LOC]
Index
X(Ri)
EA = [Ri ] + X
Basewithindex
(Ri ,Rj )
EA = [Ri ] + [Rj ]
Basewithindex
andoffset
X(Ri,Rj )
EA = [Ri ] + [Rj ] + X
Relative
X(PC)
EA = [PC] + X
(Ri )+
EA = [Ri ] ;
Incremen
t Ri
(Ri )
Decremen
t Ri ;
EA = [Ri]
Autoincremen
t
Autodecrement
Relative Addressing
Additional Modes
LOOP
Move
Move
Clear
Add
Decrement
Branch>0
Move
N,R1
#NUM1,R2
R0
(R2)+,R0
R1
LOOP
R0,SUM
Initialization
Figure2.16.TheAutoincrementaddressingmodeusedintheprogramofFigure2.12.
Assembly
Language
Types of Instructions
Data
Transfer Instructions
Name Mnemonic
Load
LD
Store
ST
Move
MOV
Exchange
XCH
Input
IN
Output
OUT
Push
PUSH
Pop
POP
Data value is
not modified
Assembly
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
Name
Mnemonic
Increment
INC
Logical & Bit Manipulation
Decrement
DEC
Add
ADD
Shift
Subtract
SUB
Multiply
MUL
Divide
DIV
Add with carry
ADDC
Name
Mnemonic
Subtract with borrow SUBB
Clear
CLR
Complement
COM
Name Negate MnemonicNEG
AND
AND
Logical shift right
SHR
OR
OR
Logical shift left
SHL
Exclusive-OR
XOR
Arithmetic shift right
SHRA
Clear carry
CLRC
Arithmetic shift left
SHLA
Set carry
SETC
Rotate right
ROR
Complement
Rotate left
ROL
COMC
carry
Rotate right through
RORC
Enable interrupt
EI
carry
Mnemonic
Branch
BR
Jump
JMP
Skip
SKP
Call
CALL
Return
RET
Compare
(Subtract)
CMP
Test (AND)
TST
Subtract A B but
dont store the result
10110001
00001000
Mask
00000000
Conditional Branch
Instructions
Mnemonic Branch Condition Tested Condition
BZ
Branch if zero
Z=1
BNZ
Branch if not zero
Z=0
BC
Branch if carry
C=1
BNC
Branch if no carry
C=0
BP
Branch if plus
S=0
BM
Branch if minus
S=1
BV
Branch if overflow
V=1
Branch if no
BNV
V=0
overflow
Basic
Input/Output
Operations
I/O
The
Program-Controlled I/O
Example
Read
Program-Controlled I/O
Example
Bus
Processor
DATAIN
SIN
- Registers
- Flags
- Device interface
Keyboard
DATAOUT
SOUT
Display
Figure2.19 Busconnectionforprocessor,keyboard,anddisplay.
Program-Controlled I/O
Example
Machine
Program-Controlled I/O
Example
Memory-Mapped
Program-Controlled I/O
Example
Assumption
Alternate
Interrupt
solution?
Stacks
Home Work
For
Stack Organization
LIFO
Current
Top of Stack
TOS
SP
FULL
EMPTY
Stack Bottom
0
1
2
3
4
5
6
7
8
9
10
0
0
0
0
0
1
0
0
0
0
2
5
0
2
1
3
5
8
5
5
Stack
Stack Organization
Current
Top of Stack
TOS
PUSH
SP SP 1
M[SP] DR
If (SP = 0) then (FULL 1)
EMPTY 0
SP
FULL
EMPTY
Stack Bottom
1 6 9 0
0
1
2
3
4
5
6
7
8
9
10
1
0
0
0
0
0
6
1
0
0
0
0
9
2
5
0
2
1
0
3
5
8
5
5
Stack
Stack Organization
Current
Top of Stack
TOS
POP
DR M[SP]
SP SP + 1
If (SP = 11) then (EMPTY 1)
FULL 0
SP
FULL
EMPTY
Stack Bottom
0
1
2
3
4
5
6
7
8
9
10
1
0
0
0
0
0
6
1
0
0
0
0
9
2
5
0
2
1
0
3
5
8
5
5
Stack
Stack Organization
Memory
Stack
PUSH
PC
0
1
2
AR
100
101
102
SP SP 1
M[SP] DR
POP
DR M[SP]
SP SP + 1
SP
200
201
202
Notation
A+B
Prefix
or Polish Notation
+AB
Postfix
AB+
(2) (4) (3) (3) +
AB+CD
RPN
ABCD+
(A + B) [C (D + E) + F]
(A B +) (D E +) C F +
Operation
PUSH
MULT
PUSH
30
4
5
PUSH
3
42
12
MULT
ADD
Additional
Instructions
There are many applications that require bits of an operand to be shifted right or left.
The details of how the shifts are performed depends on operand.
For general operands
For numbers
We use arithmetic shift.
Logical Shifts
R0
. . .
before:
after:
. .
(a)Logicalshiftleft
LShiftL#2,R0
R0
before:
. .
after:
. . .
(b)Logicalshiftright
LShiftR#2,R0
Arithmetic Shifts
R0
before:
. . .
after:
(c)Arithmeticshiftright
. .
AShiftR#2,R0
Rotate Shifts
Rotate
R0
0
. . .
before:
after:
. . .
(a)Rotateleftwithoutcarr
y
RotateL#2,R0
R0
0
. . .
before:
after:
. . .
(b)Rotateleftwithcarr
y
RotateLC#2,R0
R0
before:
. . .
after:
. . .
(c)Rotaterightwithoutcarry
RotateR#2,R0
R0
before:
. . .
after:
(d)Rotaterightwithcarry
. . .
RotateRC#2,R0
Figure2.32.Rotateinstructions.
Encoding of
Machine
Instructions
Encoding of Machine
Instructions
Encoding of Machine
Instructions
Source
Dest
Otherinfo
Memoryaddress/Immediateoperand
(b)Twowordinstruction
Encoding of Machine
Instructions
Encoding of Machine
Instructions
SUBROUTINES
Memory
Location
200
204
Calling Program
.
.
Call SUB
Next instruction
.
Memory Location
1000
SUB
first ins
Return