Beruflich Dokumente
Kultur Dokumente
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.
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
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
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.
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
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
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
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
sw ou lw opcode
rs
rt
offset
rs rt
In s tr u c tio n
4 R ead d a ta 1
A L U control
M e m W r it e
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
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.
beq
rs
rt
offset
#if rs=rt then PC <=PC+4+4*offset
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
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 ]
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
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
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
Reg
Mem Mem
R-type lw
sw
beq
Input
Output
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
d 1 0 d
0 0 1 0
0 0 0 1
1 0 0 0
0 0 0 1
101011
000100
jump_target
PC<= jump_target *4
Add 2 zeros
PC PC31-28 || jump_target || 00
Instruction [25 0] 26
Shift left 2
PC[31-28]
PC+4 [31 28]
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
Address
1 M u x 0
Instructi on [5 0]
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
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
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
Bivert Operation
F5
F4
F3 F2
F1 F0