Sie sind auf Seite 1von 21

M1 INF IND: Conception darchitectures

Conception du Processeur cycle unique


Meguellati S.

Introduction
Notre systme supportera lexcution de:
instructions dacces la mmoire : lw & sw, instructions arithmetique-logique : add, sub, and, or, slt & nor, instructions de controle de flot : beq & j, Prise en charge dexception : illegal instruction & overflow. Cette conception nous fournira les principes de base; plusieurs autres instructions peuvent etre facilement ajoutes telles que: addu, lb, lbu, lui, addi, adiu, sltu, slti, andi, ori, xor, xori, jal, jr, jalr, bne, beqz, bgtz, bltz, nop, mfhi, mflo, mfepc, mfco, lwc1, swc1, etc.

Conception cycle unique


Nous commencerons par la conception dun processeur qui excute chaque instruction en un seul cycle dhorloge. Du point de vue performance, ceci nest pas efficace car: Un cycle dhorloge (i.e. taux dhorloge) doit etre choisi tel que linstruction la plus longue sera excut en un seule cycle seulement Ceci fait que les instructions plus courtes seront excutes en un long cycle. De plus, les ressources ne seront utilises quune fois par instruction; qlqs resources seront dupliques. Pour cela, la conception en cycle unique aura besoins de: deux memories (instruction et donne), Deux additionneurs supplimentaires.

Briques de construction du chemin de donnes


4
A L U c o n tr o l M e m W rit e 32 A d d re s s 32 32 W r i te d a ta R e ad d a ta 16 Sign extend 32

32 32 PC 32

32 ALU 32 Z e ro ALU r e s u lt

D a ta m e m ory

M e m R ea d a . P ro g ra m c o u n te r c. ALU e . D a ta m e m o r y u n i t

g. Sign-extension unit

MemRead=1 MemWrite =0 5 R e ad r e g i st e r 1 R e ad r e g i st e r 2 R e g is t e r s W r it e r e g i st e r W r it e d a ta 32 32 32 D ata R e ad d at a 2 32 32 In s t r u c ti o n m em ory A dd S um I n s t r u c t io n 32 I n s t r u c t io n ad dres s 32

R e g is t e r nu m b e rs

R e ad d at a 1

32

Shift Left 2

32

32
D ata

R e g W r i te

d. A d d e r

f . In s t r u c t i o n m e m o r y

h. Shift left 2
b . R e g i s t e r File

Vue simplifie (1st look)

Data Register # PC Address Instruction memory Instruction Registers Register # Register # Data Data memory ALU Address

implementation generique : Utiliser le compteur de programme (PC) pour fournir ladresse de linstruction, Extraire linstruction partir de la mmoire, Lire les registres, Utiliser linstruction pour decider exactement que faire.

Vue simplifie (2nd look)

PC est incrment par 4, par la plupart des instructions, et par 4 + 4offset pour les instructions de branchement. instructions de saut change le PC diffrement (pas montr).

Notre Implementation
Mthodologie dexcution par front Execution typique: Lire le contenu de qlqs elements dtat au dbut du cycle dhorloge, Envoyer les valeurs travers une logique combinatoire, crire le rsultat dans un/plusieurs elements dtat la fin du cycle dhorloge.
State element 1 State element 2

Combinational logic

Clock cycle

Un lment dtat pourrait etre lu et crit dans un meme cycle dhorloge

Incrmenter PC & Chercher Linstruction

A d d

R e a d P C a d d re s s

I n s tr u c t io n

I n s t r u c t io n m e m o r y

Clock

Datapath pour Instructions de type-R


Clock
R e g W r ite

ALU control I25-21


R e a d
re g is te r 1 R e a d d a ta R e a d re g is te r 2 R e g is te r s A L U Z e ro 1

I20-16
I n s t r u c t io n

A L U r e s u lt

I15-11

W r it e re g is te r R e a d d a ta W r it e d a ta 2

31

26 25

21 20

16 15

11 10

6 5

R-type

000000

rs

rt
rs,rt,rd

rd

00000

funct

Add/sub/and/or/slt

# rt<=rs op rt

Datapath Complet pour Instructions de type-R


Selon le contenu des champs op-code et funct, Lunit de controle gnre les commandes appropries pour lALU Et met RegWrite = 1.
A dd

Clock
4

R e g W r ite

PC

R ea d ad dr e ss

rs
rt
I ns tru ctio n

I25-21 I20-16

R e a d re g is te r 1 R e a d d a ta 1

ALU control

R e a d re g is te r 2 R e g is te r s

Z e ro
A L U A L U r e s u lt R e a d

Instru c tio n

rd

I15-11

W r it e re g is te r d a ta 2

clock

m e m or y

W r it e
d a ta

Datapath pour les Instructions de type I


31 26 25 21 20 16 15 0

sw ou lw opcode

rs

rt

offset

lw rt,immediate(rs) # rt<=mmoire(rs+offset) sw rt,immediate(rs) # mmoire(rs+offset)<= rt


Clock
M e m W r it e

rs rt
In s tr u c tio n

I25-21 I20-16 I20-16

R ead r e g is t e r 1 R ead r e g is t e r 2 R e g is t e r s W r ite r e g is t e r W r ite d a ta R e g W r it e 16

4 R ead d a ta 1

A L U control
M e m W r it e

Zero ALU R ead d a ta 2 D a ta m e m ory W rite d a ta 32 S ig n e x te n d M em R e ad ALU re s u lt R ea d d a ta

A d d re s s

I15-0

offset

Unit de controle met: ALU control = 0010 (add) pour le calcul daddresse pour lw et sw MemRead=0, MemWrite=1 et RegWrite=0 pour sw MemRead=1, MemWrite=0 et RegWrite=1 pour lw

Datapath pour Instructions type-R, type-I

R e g W r it e

Clock
A dd

M e m W r it e
4

RegDst
R e g is te r s

Clock

rs
PC R e ad a d d re s s In s t r u c ti o n

R ead re g is te r 1

4
R e ad d a ta 1 R e ad d a ta 2 A L U S rc

A L U control

rt

R ead
re g is te r 2

M e m to R e g Z e ro ALU A LU re s u lt

rd
I n s tr u c t io n

0 1

W r ite re g is te r W r ite d a ta

A d d res s

R ea d d a ta D a ta

0 1

1 0

Clock

m e m o ry

W r ite

m e m o ry

MemRead =1 MemWrite =0
16

d a ta S ig n e xte n d 32

offset

M e m R ea d

Maintenant, dterminant la configuration des lignes de controle pour les instructions R-type, lw & sw.

Datapath pour Instruction BEQ


31 26 25 21 20 16 15 0

beq

rs

rt

offset
#if rs=rt then PC <=PC+4+4*offset

Branch target = [PC] + 4 + 4offset

Beq rs,rt,target

P C + 4 fr o m in s t r u c tio n d a ta p a t h

Add S h if t l e ft 2

Sum

B r a n c h ta r g e t

rs
I n s t r u c t io n

R e ad re g is te r 1 R e ad re g is te r 2 R e g is te r s W r it e re g is te r W r it e d ata R e g W r it e

4
R ead d a ta 1 ALU R ead d a ta 2

A L U control

rt

Z e ro

T o b ran c h c o n t r o l lo g ic

offset

16 S ig n e x te n d

32

Datapath pour type-R, type-I : LW, SW & BEQ

P C S rc 0 Add M u x A dd S h ift le ft 2 In s t r u c tio n [2 5 2 1 ] PC R ead a dd res s In s tr u c tio n [3 1 0 ] I n s t r u c t io n m e m o ry ALU r e s u lt 1

Clock
4

R e g W r it e

Clock

M e m W r it e

rs

R ead r e g is te r 1 R ead r e g is te r 2

In s t r u c tio n [2 0 1 6 ]

R e ad d a ta 1 A L U S rc R e ad d a ta 2 0 M u x 1 W rite d a ta S ig n 32 ALU M e m to R e g Z ero ALU re s u lt A d d re s s R ead d a ta 1 M u x 0

rt

0 W r it e r e g is te r W r it e d a ta

M u In s t r u c tio n [1 5 1 1 ] x

clock
MemRead=1 MemWrite=0

rd
In s t r u c tio n [1 5 0 ]

1 R eg D st

R e g is te rs

D a ta m e m o ry

16

4
M em R ead

offset

e x te n d

ALU control

Unit de Controle et Datapath

0 M u x Add A dd R eg D st 4 B ra n c h S h ift l e ft 2 ALU r e s u lt 1

P C S rc

opcode
I n s tru c t io n [ 3 1 2 6] C o n t ro l

M e m R e ad M e m to R e g A LU O p M e m W r it e A L U S rc

Clock
I n s tru c t io n [ 2 5 PC R ead a d dres s I n s tru c t io n [ 2 0 I n s t r u c t io n [3 1 0 ] In s tr u c tio n m e m o ry 1 6] 2 1]

R e g W r it e

rs rt
0

Clock anded
R ead r e g is te r 1 R ead d a ta 1 R ead r e g is te r 2 R e g is te r s R e a d W r it e d a ta 2 r e g is te r W r it e d a ta

Z ero ALU 0 M u x 1 W r i te d a ta ALU re s u lt R e ad d a ta

rd
I n s tru c t io n [ 1 5 1 1]

M u x 1

A d d re s s

1 M u x 0

D a ta m e m ory

MemRead=1 MemWrite=0

I n s tru c t io n [ 1 5

0]

16 S ig n e x te n d

32 A LU c o n tr o l

offset
I n s t r u c t io n [ 5 0]

Clock anded

funct

Table de vrit pour lUnit de Controle


ALUOp[1-0] = 00 indique lunit de Control ALU que l ALU doit raliser la
fonction add , i.e. mettre Ainvert = 0, Binvert=0 et Operation=10 ALUOp[1-0] = 01 indique lunit de Control ALU que l ALU doit raliser la fonction sub i.e. mettre Ainvert = 0, Binvert=1 et Operation=10 ALUOp[1-0] = 10 indique lunit de Control ALU de vrifier les bits I[5-0] et selon leur valeur, donner Ainvert, Binvert et Operation les valeurs permettant ALU de raliser la fonction, i.e. add, sub, slt, and, or & nor
Input Output

MemtoOp-code RegDst ALUSrc 1 0 d d 0 1 1 0 Reg 0 1 d d

Reg

Mem Mem

Write Read Write Branch ALUOp1 ALUp0 1 1 0 0 d 1 0 d 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1

R-type lw

000000 100011 101011 000100

sw
beq

Table de vrit pour lUnit de Controle ALU

Input

Output

ALUOp ALUOp1 ALUOp0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0

F5 d d 1 1 1 1 1 1

Funct field F4 F3 F2 F1 d d d d d d d d 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0

F0 d d 0 0 0 1 0 1

ALU Control 0 0 10 0 1 10 0 0 10 0 1 10 0 0 00 0 0 01 0 1 11 1 1 00

add sub add sub and or slt nor

Ainvert Bivert Operation

Conception de lunit de controle principale


Op-code Memto- Reg Mem Mem bits 5 4 3 2 1 0 RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0 000000 100011 1 0 d 0 d 0 0 0 1 1 0 0 0 1 d d 1 1 0 0
In p u t s Op5 Op4 Op3 Op2 Op1 Op0

d 1 0 d

0 0 1 0

0 0 0 1

1 0 0 0

0 0 0 1

101011
000100

RegDst =Op5Op4Op3Op2Op1Op0 ALUSrc= Op5Op4Op3Op2Op1Op0 +Op5Op4Op3Op2Op1Op0

O u tp u t s R -fo r m a t Iw sw be q R e gD st A LU S rc M e m to R e g R e g W r ite M emRead M e m W r ite B ra n c h A LU O p 1 A LU O p O

Datapath for R-type, LW, SW, BEQ & J


31 26 25 0

jump_target
PC<= jump_target *4
Add 2 zeros

PC PC31-28 || jump_target || 00

Instruction [25 0] 26

Shift left 2

Jump address [31 0] 28 0 M u x L Add reAulU s t 1 1 M u x 0

PC[31-28]
PC+4 [31 28]

Add 4 Instruction [31 26] Control

RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1

shift left 2

Instruction [25 21] PC Read address Instruction [31 0] Instruction memor y Instruction [15 11] Instruction [20 16] 0 M u x 1

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instructi on [5 0]

Design de lUnit de Controle (J inclu)


Op-code Memto- Reg Mem Mem bits 5 4 3 2 1 0 RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0 Jump 000000 100011 1 0 d d d 0 1 1 0 d 0 1 d d d 1 1 0 0 0
In p u t s Op5 Op4 Op3 Op2

d 1 0 d d

0 0 1 0 0

0 0 0 1 d

1 0 0 0 d

0 0 0 1 d

0 0 0 0 1 0

101011
J 000100 000010

Jump =Op5Op4Op3Op2Op1Op0

Op1 Op0

R -fo r m a t

Iw

sw

be q

R egD st A LU S rc M e m toR e g

Jump

No changes in ALU Control unit

R e g W r ite M emRead M e m W r i te B ra n c h A LU O p 1 A LU O p O

Design dune Unit de Controle ALU


Input Output

ALUOp ALUOp1 ALUOp0 0 0 0 1 1 0 1 0 1 0 1 0 1 0


ALUO P1 ALUO P0

F5 d d 1 1 1 1 1

Funct field F4 F3 F2 F1 d d d d d d d d 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1

F0 d d 0 0 0 1 0

ALU Control 010 110 010 110 000 001 111

add sub add sub and or slt

Bivert Operation
F5

F4
F3 F2

Lignes de controle ALU (Binvert & Operation)

F1 F0

Das könnte Ihnen auch gefallen