0% found this document useful (0 votes)
73 views

W9 Config

This document discusses topics related to computer architecture including processor design, data representation, digital logic, machine representation language, and instruction sets. It provides examples of how common instructions like add, mov, pop, call, ret, and jumps are encoded and executed in a simple 5-stage pipeline processor. The stages are fetch, decode, execute, memory, and writeback. It describes how the instruction format is decoded and how the data path and control logic work together to perform the operation specified by the instruction and update the program counter.

Uploaded by

ahsanliaqat426
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views

W9 Config

This document discusses topics related to computer architecture including processor design, data representation, digital logic, machine representation language, and instruction sets. It provides examples of how common instructions like add, mov, pop, call, ret, and jumps are encoded and executed in a simple 5-stage pipeline processor. The stages are fetch, decode, execute, memory, and writeback. It describes how the instruction format is decoded and how the data path and control logic work together to perform the operation specified by the instruction and update the program counter.

Uploaded by

ahsanliaqat426
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

198:211

Computer Architecture

Topics:
l

Processor Design

Where are we now?


l

C-Programming
l

Data Representation
l

Very limited programming model

Digital Logic
l
l

Everything goes down to bits and bytes

Machine representation Language


l

A real computer language

Transistors g Gates g Circuits


Circuits g { Memory, Registers, and
Components}

What are we going to do now.

Processor Design
Figure out how a small subset of the
instruction set works in hardware
l Use Hardware blocks to describe data path
l Use control logic to ensure steps of the
instruction flows smoothly
l

Add instruction
l

Type of add depends on where operands are


located
l

add reg1, reg2


l

add $constant, reg2


l

Add contents of reg1 to reg2 and store result in reg2


Add contents of memory immediately following the
instruction to reg 2 and store result in reg2

add (effective-address), reg2


l

Add contents of effective address to reg2 and store


result in reg2
Effective address could be relative; relative + offset;
relative + offset, index; relative + offset, index*scaled

Instruction Example
l

Generic Form!
Addition Instruction
Encoded Representation!
addl %edx, %eax!

Add value in register %edx to that in register %eax


l

0 3 rA! rB!

Store result in register %eax

Two-byte encoding
l
l

First indicates instruction type


Second gives source and destination registers

ADD-Add : note src, dst are


reversed in the intel manual

In assembly language add src, dst means src + dst dst


Instruction Example in x86


l

Generic Form!
Addition Instruction
Encoded Representation!
addl %edx, %eax!

Opcode is 03 and src, dst are %edx, %eax


l

l
l
l
l
l

0 3 C! 2!

from previous table (Table 2.2) code is C2

8(%ebp),
%eax!
So, 03 C2 means add addl
%edx,
%eax
03 45
means add 8(%ebp), %eax
addl $4, %eax!
05
add $cons, %eax

0 3 4 5

0 5 000

Arithmetic and Logical


Operations
l
Function Code!

Instruction Code!
Subtract (rA from rB)!
subl rA, rB!

2 B rA! rB!

And!
andl rA, rB!

2 3 rA! rB!

Exclusive-Or!
xorl rA, rB!

The second byte will


vary based on type of
operands
Set condition codes
as side effect

3 3 rA! rB!

Lower 4 bits can vary depending upon the type



Of operand

20 means 8 byte register transfer,

Lower 4 bits can vary



30 means 8 byte register transfer,

Subtract operationInstruction Set Reference

Single cycle stages


Fetch Instruction (IF)
l Decode Instruction (ID)
l Execute Instruction (EX)
l Memory access (MEM)
l Write back (WB)
l Update Program Counter (PC)
l

Building Blocks
l

fun"
A"

Combinational Logic
l

Compute Boolean
functions of inputs
Continuously respond to
input changes
Operate on data and
implement control

A"
L"
U"

B"

A"
MUX"
B"

="

S

B

valA"
srcA"

Storage Elements
l
l

valW"

Register"
file"

valB"
srcB"

A"

Store bits
Addressable memories
Non-addressable registers

B"

W"

dstW"

Clock"

Clock!

Fetch Instruction
+"

+4"

PC

IR

Fetch Instruction and increment Program counter


A"
L"
U"

Add instruction (add %edx,


%eax)
+"

IR

%edx

Register file

%eax

Op code determines type of operation


l

l
l
l
l

A"
L"
U"

03 C2

Operands are in registers


They are fed to the adder (ALU)
Result stored back in register
Based On Instruction the signal to ALU can be +, -, * or /

Add instruction (add $4,


%eax)
+!

IR

%eax

Register file

l
l
l
l
l
l

A"
L"
U"

Op code is determines type of operation


03 05
One Operand is a register, the other is part of the instruction
%eax, immediate value
They are fed to the adder (ALU)
Result stored back in register

mov instruction (mov 8(%ebp),


%eax)
Data

mem

+"

IR

%ebp

Register file

A"
L"
U"

address

%eax

data

l
l
l
l

Op code is determines type of operation


8b 45
Load word from memory onto register %eax
Address is 8 + (%ebp)

R/W

mov instruction (mov %eax,


8(%ebp))
Data

mem

+"

IR

%ebp

Register file

A"
L"
U"

address

%eax

data

l
l
l
l

Op code determines type of operation


89 45
Store word from register %eax onto memory
Address is 8 + (%ebp)

R/W

SEQ Hardware
Structure
l

State
l
l
l
l

Program counter register (PC)


Condition code register (CC)
Register File
Memories
l
l

Access same memory space


Data: for reading/writing program
data
Instruction: for reading instructions

Instruction Flow
l

l
l

Read instruction at address


specified by PC
Process through stages
Update program counter

newPC

PC!

!! !

valE , valM

Write back!

valM

!
!

Data
Data
memory
memory

Memory!

! !

Addr, Data

valE

CC!
! CC
aluA!, a!luB!

Execute!

ALU
ALU

Bch

!! !

valA , valB

!! !
!! !

! ! !!
! !

srcA , srcB
dstA , dstB

Decode!

Register
RegisterM
file
file
E

, !! !!

icode! ifun
rA! , rB
valC

Fetch!

valP

!
!
!

Instruction
Instruction
memory
memory

PC

!
!

PC
PC
increment
increment

newPC

SEQ Stages
l

Fetch
l

valM

!
!

Data
Data
memory
memory

Memory!

! !

Addr, Data

valE

CC!
! CC
aluA!, a!luB!

Execute!

Read or write data

!! !

valA , valB

! ! !!
! !

Register
RegisterM
file
file
E

Write program registers


Update program counter

!! !
!! !

srcA , srcB
dstA , dstB

Decode!
, !! !!

icode!ifun
rA! , rB
valC

PC
l

ALU
ALU

Bch

Compute value or address

Write Back
l

Write back!

Memory
l

Read program registers

Execute
l

!! !

valE , valM

Decode
l

Read instruction from instruction


memory

PC!

Fetch!

valP

!
!
!

Instruction
Instruction
memory
memory

PC

!
!

PC
PC
increment
increment

Instruction Decoding
Optional!
5

0 rA" rB"

Optional!
D"

icode!
ifun!
rA!
rB!
valC!

Instruction Format
l Instruction

byte
icode:ifun
l Optional register byte
rA:rB
l Optional constant word
valC

Executing Arith./Logical
OperationOPl rA, rB! 6 rA! rB!
fn"

Fetch
l

Read 2 bytes

Decode
l

Perform operation
Set condition codes

Memory
l

Read operand registers

Execute
l

Write back
l

Do nothing
Update register

PC Update
l

Increment PC by 2

Stage Computation: Arith/


Log. Ops
OPl rA, rB!

Fetch!

Decode!
Execute!
Memory!
Write!

icode:ifun M1[PC]!

Read instruction byte!

rA:rB M1[PC+1]!

Read register byte!

valP PC+2!

Compute next PC!

valA R[rA]!

Read operand A!

valB R[rB]!

Read operand B!

valE valB OP valA!

Perform ALU operation!

Set CC!

Set condition code register!

R[rB] valE!
!
back!
PC update! PC valP!

!
Write back result!
!
Update PC!

Formulate instruction execution as sequence of


simple steps
Use same general form for all instructions

Executing popl
l

Fetch
l

8 F rA! 8
l

Read 2 bytes

Decode
l

popl rA!

Read stack pointer


Increment stack pointer by 4

Read from old stack pointer

Write back
l

Execute
l

Memory

Update stack pointer


Write result to register

PC Update
l

Increment PC by 2

POP Instruction

Stage Computation: popl


popl rA!

Fetch!

Decode!
Execute!
Memory!

icode:ifun M1[PC]!

Read instruction byte!

rA:rB M1[PC+1]!

Read register byte!

valP PC+2!

Compute next PC!

valA %esp!

Read stack pointer!

valB %esp!

Read stack pointer!

valE valB + 4!

Increment stack pointer!

valM M4[valA]!

Read from stack !

Write!

R[%esp] valE!
R[rA] valM!
back!
PC update! PC valP!
l
l

Use ALU to increment stack pointer


Must update two registers
l
l

Popped value
New stack pointer

Update stack pointer!


Write back result!
Update PC!

Executing Jumps

fall thru:!

XX XX

Not taken!

target:!

XX XX

Taken!

Read 5 bytes
Increment PC by 5

Decode
l

7 fn"

Fetch
l

jXX Dest!

Do nothing

Execute
l

Determine whether to take


branch based on jump
condition and condition codes

Dest"

Memory
l

Write back
l

Do nothing
Do nothing

PC Update
l

Set PC to Dest if branch


taken or to incremented PC if
not branch

Stage Computation: Jumps


jXX Dest!

Fetch!

icode:ifun M1[PC]!

Read instruction byte!

valC M4[PC+1]!

Read destination address!

valP PC+5!

Fall through address!

Bch Cond(CC,ifun)!

Take branch?!

Decode!
Execute!
Memory!
Write!

!
back!
PC update! PC Bch ? valC : valP!

l
l

!
!
Update PC!

Compute both addresses


Choose based on setting of condition codes and
branch condition

Executing call
call Dest!

XX XX

target:!

XX XX

Decrement stack pointer by 4

Dest"

Memory
l

Read stack pointer

Execute
l

Read 5 bytes
Increment PC by 5

Decode
l

return:!

Fetch
l

E 8

Write back
l

Write incremented PC to new


value of stack pointer
Update stack pointer

PC Update
l

Set PC to Dest

Stage Computation: call


call Dest!

Fetch!

Decode!
Execute!
Memory!
Write!

icode:ifun M1[PC]!

Read instruction byte!

valC M4[PC+1]!

Read destination address !

valP PC+5!

Compute return point!

valB R[%esp]!

Read stack pointer!

valE valB + 4!

Decrement stack pointer!

M4[valE] valP !

Write return value on stack !

R[%esp] valE!
!
back!
PC update! PC valC!

l
l

Update stack pointer!


!
Set PC to destination!

Use ALU to decrement stack pointer


Store incremented PC

Call Opcodes in X86

Executing ret
C 3

ret!
return:!
l

Fetch
l

Read 1 byte
Read stack pointer

Execute
l

Increment stack pointer by 4

Memory
l

Decode
l

XX XX

Write back
l

Read return address from old


stack pointer
Update stack pointer

PC Update
l

Set PC to return address

Stage Computation: ret


ret

Fetch!

Decode!
Execute!
Memory!
Write!

icode:ifun M1[PC]!

Read instruction byte!

valA R[%esp]!

Read operand stack pointer!

valB R[%esp]!

Read operand stack pointer!

valE valB + 4!

Increment stack pointer!

valM M4[valA] !

Read return address!

R[%esp] valE!
!
back!
PC update! PC valM!

l
l

Update stack pointer!


!
Set PC to return address!

Use ALU to increment stack pointer


Read return address from memory

You might also like