SlideShare une entreprise Scribd logo
1  sur  34
ETUDE ET REALISATION D’UN 
MICROPROCESSEURS RISC
Vicheka PHOR
Master 2 Professionnel
INFORMATIQUE
CAMSI
Conception d’Architecture de Machine et Systèmes Informatiques
25-02-13
PLAN DE LA PRESENTATION
I I d i j d jI. Introduction au sujet de projet
I.1 Objectif du projet
I 2 Travail demandéI.2 Travail demandé
II. Conception de processeur RISC
II.1 Chemin de données pipeline
II.2 Unité de contrôle
II.3 Aléas dans les pipelines
III. Réalisation et simulation
III.1 Mise en œuvre de processeur RISC en VHDL
III 2 CompilateurIII.2 Compilateur
III.3 Résultats de simulation
IV. Synthèsey
V. Conclusion
2
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
I. Introduction au sujet de projet
I.1 Objectif du projetI.1 Objectif du projet
- Mise en ouvre d’une architecture de processeur RISCp
I.2 Travail demandé
- Conception
- Simulation
- Synthèse
3
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II. Conception de processeur RISC
II.1 Chemins de données pipelineII.1 Chemins de données pipeline
II.2 Unité de contrôle
II.3 Aléas dans le pipelinep p
4
II 1 Chemin de données pipeline (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.1 Chemin de données pipeline (1)
Ordre
d'exécution
des instructions
(a)
40 ns 80 nsTemps
Extraction
Instruction
regUAL
Extraction
Donnée
40 ns
reg
10 ns 5 ns
Extraction
Instruction
regUAL
Extraction
Donnée
reg
Extraction
lw R1, 100(R0)
lw R2, 200(R0)
lw R2 300(R0) Extraction
Instruction
UALreg
40 ns
lw R2, 300(R0)
40 ns
Ordre
d'exécution
(b)
40 ns 80 nsTemps 10 ns 20 ns 30 ns 50 ns 70 ns60 ns
Extraction
Instruction
UAL
Extraction
Donnée
reg
des instructions
lw R1, 100(R0)
lw R2, 200(R0)
reg
Extraction
UAL
Extraction
reg reglw R2, 200(R0)
lw R2, 300(R0)
Instruction
UAL
Donnée
reg reg
Extraction
Instruction
UAL
Extraction
Donnée
reg reg
5
II 1 Chemin de données pipeline (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
di_ctrl_di.J_j
di_ctrl_di.J_jal
b h
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
reg DI EX.ex ctrl.J jr
reg_DI_EX.ex_ctrl.J_jalr
II.1 Chemin de données pipeline (2)
mem_branch
DI/EX
EX/MEM
MEM/ERmxER
mxER
mxMEM
g_ _ _ _j
d
PC_SRPC_SRC
IMMD [15..0]
reg_EI_DI.pc_next
di_imm_ext reg_EX_MEM.imm_ext
reg_EX_MEM.pc_next
Branch
reg_DI_EX.imm_ext
reg_DI_EX.pc_next1 ei_pc_next +
+
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
BRANCH
B TYPE
RC
ex_pc_branch
RS [25..21]
ValDec [10..6]
JADR [25..0]
di_qa reg_MEM_ER.mem_Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.rs_read
reg_DI_EX.val_dec
A
AL
NVZC
ALU_SRCA
@A QAInst
inst@CP
Signed
DS
Q
MEM_mem_Q
MUX
MUX_REGS
NVZC
B_TYPE
RT [20..16]
di_qb
reg_EX_MEM.ual_S
reg_DI_EX.rt_read
ex_ALU_A
ex ALU B
ALU_OP
LU_Signed
ALU_SRCB
@
@B
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
DS
D
R/W*
Data
Cache
X_ALU_SRCAM
AS
@
S_SRCD
er_regd
RT [20..16]
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
reg DI EX.rt
REG_DST
W*
REGS_W
MUX_ALU_SRCB
16
0
AS
reg_DI_EX.rt_read
[ ]
RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
g_ _
reg_DI_EX.rd ex_reg_dst
MUX_REG_DST
31
EI DI EX MEM ER
6
II 2 Unité de contrôle (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.2 Unité de contrôle (1)
di ctrl di J j
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
Unité
de contrôle
reg_EI_DI.flush
F [5..0]
B [20..16]
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
DI/EX
EX/MEMmxER
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PPC_SRC
IMMD [15..0]
reg_EI_DI.pc_next
di_imm_ext reg_EX_MEM.imm_ext
reg EX MEM.pc next
Branch
REGS_W
reg_DI_EX.imm_ext
reg DI EX.pc next1 ei pc next +
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
g_ _ p _
di qa
g_ _ p _
reg MEM ER mem Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
g_ _ p _
inst@CP
_p _
+
Signed MEM mem Q
MUX_
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ALU_OP
ALU_Signed
ALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
g
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
@
REGS_SRCD
er_regd
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_D
D QB
W*
REGS_W
R/W
MUX_ALU_SRCB
16
0
AS
reg_DI_EX.rt_read
RT [20..16]
RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
STMUX_REG_DST
31
7
II 2 Unité de contrôle (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.2 Unité de contrôle (2)
Étage DI
Lignes de contrôle
Lignes de contrôle
Étage EX
SIGNED_EXT
J_j
J_jal
ADD 0
rt / BFCODEOPCODE
ALU_OP
ALU_SIGNED
ALU_SRCA
ALU_SRCB
REG_DST
J_jr
J_jalr
ALU ADD 1 REGS QA REGS QB REG RD
MUXMUX MUX
ADD 0 - -
ADDU 0 - -
SUB 0 - -
SUBU 0 - -
iAND 0 - -
iOR 0 - -
iNOR 0 - -TYPE_R
ALU_ADD 1 REGS_QA REGS_QB REG_RD - -
ALU_ADD 0 REGS_QA REGS_QB REG_RD - -
ALU_SUB 1 REGS_QA REGS_QB REG_RD - -
ALU_SUB 0 REGS_QA REGS_QB REG_RD - -
ALU_AND 0 REGS_QA REGS_QB REG_RD - -
ALU_OR 0 REGS_QA REGS_QB REG_RD - -
ALU_NOR 0 REGS_QA REGS_QB REG_RD - -
iXOR 0 - -
SLT 0 - -
SLTU 0 - -
LSL 0 - -
LSR 0 - -
JR 0 - -
JALR 0 - -
"000000" ALU_XOR 0 REGS_QA REGS_QB REG_RD - -
ALU_SLT 1 REGS_QA REGS_QB REG_RD - -
ALU_SLT 0 REGS_QA REGS_QB REG_RD - -
ALU_LSL 0 REGS_QB VAL_DEC REG_RD - -
ALU_LSR 0 REGS_QB VAL_DEC REG_RD - -
- - REGS_QA REGS_QB REG_RD 1 -
- - REGS QA REGS QB REG RD - 1
BLTZ 1 - -
BGEZ 1 - -
BLTZAL 1 - -
BGEZAL 1 - -
J 0 1 -
JAL 0 - 1
ADDI 1
TYPE_J
TYPE_B
"000001"
_ _ _
ALU_SUB 1 REGS_QA VAL_0 - - -
ALU_SUB 1 REGS_QA VAL_0 - - -
L ALU_SUB 1 REGS_QA VAL_0 R31 - -
L ALU_SUB 1 REGS_QA VAL_0 R31 - -
- - - - - - -
- - - - R31 - -
ALU ADD 1 REGS QA IMMD REG RTADDI 1 - -
ADDIU 1 - -
SLTI 1 - -
SLTIU 1 - -
ANDI 0 - -
ORI 0 - -
XORI 0 - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU_ADD 0 REGS_QA IMMD REG_RT - -
ALU_SLT 1 REGS_QA IMMD REG_RT - -
ALU_SLT 0 REGS_QA IMMD REG_RT - -
ALU_AND 0 REGS_QA IMMD REG_RT - -
ALU_OR 0 REGS_QA IMMD REG_RT - -
ALU_XOR 0 REGS_QA IMMD REG_RT - -
LUI 0 - -
LB 1 - -
LH 1 - -
LW 1 - -
LBU 1 - -
LHU 1 - -
SB 1 - -
TYPE_I
ALU_LSL 1 IMMD VAL_16 REG_RT - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU_ADD 1 REGS_QA IMMD REG_RT - -
ALU ADD 1 REGS QA IMMD - - -SB 1
SH 1 - -
SW 1 - -
BEQ 1 - -
BNE 1 - -
BLEZ 1 - -
BGTZ 1 - -
ALU_ADD 1 REGS_QA IMMD
ALU_ADD 1 REGS_QA IMMD - - -
ALU_ADD 1 REGS_QA IMMD - - -
ALU_SUB 1 REGS_QA REGS_QB - - -
ALU_SUB 1 REGS_QA REGS_QB - - -
ALU_SUB 1 REGS_QA REGS_QB - - -
ALU_SUB 1 REGS_QA REGS_QB - - - 8
II 2 Unité de contrôle (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.2 Unité de contrôle (3)
Étage MEM
Lignes de contrôle
MUX
Étage ER
Lignes de contrôle
DC_AS
DC_SIGNED
DC_DS
DC_RW
BRANCH
B_type
ADD 0 - - - 0 -
rt / BFCODEOPCODE
MUX
REGS_W*
REGS_SRCD
0 ALU S
MUX
ADD 0 0
ADDU 0 - - - 0 -
SUB 0 - - - 0 -
SUBU 0 - - - 0 -
iAND 0 - - - 0 -
iOR 0 - - - 0 -
iNOR 0 - - - 0 -
iXOR 0 0
TYPE_R
"000000"
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU SiXOR 0 - - - 0 -
SLT 0 - - - 0 -
SLTU 0 - - - 0 -
LSL 0 - - - 0 -
LSR 0 - - - 0 -
JR 0 - - - 0 -
JALR 0 - - - 0 -
000000 0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
1 -
0 NextPC
BLTZ 0 - - - 1 B_bltz
BGEZ 0 - - - 1 B_bgez
BLTZAL 0 - - - 1 B_bltz
BGEZAL 0 - - - 1 B_bgez
J 0 - - - 0 -
JAL 0 - - - 0 -
ADDI 0 0
TYPE_J
TYPE_B
"000001"
1 -
1 -
0 NextPC
0 NextPC
1 -
0 NextPC
0 ALU SADDI 0 - - - 0 -
ADDIU 0 - - - 0 -
SLTI 0 - - - 0 -
SLTIU 0 - - - 0 -
ANDI 0 - - - 0 -
ORI 0 - - - 0 -
XORI 0 - - - 0 -
LUI 0 0
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU_S
0 ALU SLUI 0 - - - 0 -
LB 1 1 MEM_8 1 0 -
LH 1 1 MEM_16 1 0 -
LW 1 1 MEM_32 1 0 -
LBU 1 0 MEM_8 1 0 -
LHU 1 0 MEM_16 1 0 -
SB 1 1 MEM_8 0 0 -
TYPE_I
0 ALU_S
0 MEM_Q
0 MEM_Q
0 MEM_Q
0 MEM_Q
0 MEM_Q
1 -
SH 1 1 MEM_16 0 0 -
SW 1 1 MEM_32 0 0 -
BEQ 0 - - - 1 B_beq
BNE 0 - - - 1 B_bne
BLEZ 0 - - - 1 B_blez
BGTZ 0 - - - 1 B_bgtz
1 -
1 -
1 -
1 -
1 -
1 - 9
II 3 Aléas dans les pipelines
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3 Aléas dans les pipelines
II.3.1 Aléas de donnéesII.3.1 Aléas de données
II.3.2 Aléas de branchement
10
II 3 1 Aléas de données (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (1)
1. Aléas de données à l'étage EX
Temps (en cycles d'horloge)
Reg
A
S
UAL
MI MD Reg
Ordre
d'exécution
des instructions
ADDI R1 R0 1
C1 C2 C3 C4 C5
Ecriture dans R1
C6
Résultat à écrire
dans R1
C7
Reg
B
SMI MD Reg
Reg
A
S
UAL
MI MD Reg
ADDI R1,R0,1
ADD R2,R1,R0
Lecture de R1
2 Aléas de données à l'étage MEM
g
B
g
2. Aléas de données à l étage MEM
Temps (en cycles d'horloge)
Ordre
d'exécution
C1 C2 C3 C4 C5 C6 C7
Ecriture dans R1
Reg
A
B
S
UAL
MI Reg
d exécution
des instructions
LW R1,4(R0) MD
Résultat à écrire
dans R1
Lecture de R1
Reg
A
B
S
UAL
MI MD RegADDI R2,R0,1
Lecture de R1
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
11
II 3 1 Aléas de données (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (2)
di ctrl di J j
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
Unité
de contrôle
reg_EI_DI.flush
F [5..0]
B [20..16]
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
DI/EX
EX/MEMmxER
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PPC_SRC
IMMD [15..0]
reg EI DI.pc next
di_imm_ext reg_EX_MEM.imm_ext
reg EX MEM.pc next
Branch
REGS_W
reg_DI_EX.imm_ext
reg DI EX.pc next1 ei pc next +
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
g_ _ p _
di qa
eg_ _ pc_ e t
MEM ER Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
eg_ _ pc_ e t
inst@CP
e _pc_ e t
+
Signed MEM mem Q
MUX_
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
ALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
_REGS_SRCD
er_regd
RS [25..21] reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_D
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
R/W*
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_dat
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
DST
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
a
12
reg_EX_MEM.reg_dst
reg_MEM_ER.reg_dst
reg_DI_EX.rs
d'envoi
II 3 1 Aléas de données (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (3)
Temps (en cycles d'horloge)
C1 C2 C3 C4 C5
3. Aléas de données lorsqu'une instruction tente de lire un registre à la suite d'une instruction de chargement écrivant dans le même registre
C6 C7 C8
(a)
Reg
A
B
S
UAL
MI Reg
Ordre
d'exécution
des instructions
LW R1,4(R0)
C1 C2 C3 C4 C5
MD
Résultat à écrire
dans R1 Ecriture dans R1
C6 C7 C8
B
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
Lecture de R1
Reg
Lecture de R1
S d
ADDI R2,R0,1 Reg
A
B
S
UAL
MI MD RegMI
Suspendre
(b)
Temps (en cycles d'horloge)
C1 C2 C3 C4 C5 C6 C7
Reg
A
B
S
UAL
MI Reg
Ordre
d'exécution
des instructions
LW R1,4(R0)
C1 C2 C3 C4 C5
MD
Résultat à écrire
dans R1 Ecriture dans R1
C6 C7
B
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
Lecture de R1
ADDI R2,R0,1 Reg
A
B
S
UAL
MI MD Reg
13
II 3 1 Aléas de données (4)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (4)
di_ctrl_d
di_ctrl_di.
mem_br
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_DI_EX.mem_ctrl.DC_AS
reg_DI_EX.er_ctrl.Regs_W
reg_DI_EX.mem_ctrl.DC_RW
ex_halt
ex_reg_dst
reg_EI_DI.inst(RS'range)
reg_EI_DI.inst(RT'range)
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
di.J_j
.J_jal
anch
DI/EX
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
[ ]
B [20..16]
IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext
REGS_W
reg_DI_EX.imm_ext
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
ex_halt
mem_branch
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SR
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
M
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
ex_ALU_A
ex ALU XB
ex_ALU_XA
ALU_OP
ALU_Signed
RCAALU_SRCB
@A
@B
QA
@W
Banc de
Registres
Inst
Cache
inst@CP
A
S
ALU
Signed
DS
Q
D
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMU
@
MUX_REGS_SRCD
er_regd
RS [25..21]
di_qb
MEM ER l S
reg_EX_MEM.rt_read
reg_DI_EX.rt_read
ex_ALU_B
ex_ALU_XB
REG
reg DI EX rs
ex_mem_data
D QB
W*
REGS_W
B
D
R/W*
MUX_ALU_SRCB
UX_ALU_XB
16
0
AS
MUX_mem_d
[ ]
RT [20..16]
RD [15..11]
OP [31..26]
reg_MEM_ER.ual_S
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
G_DST
reg_DI_EX.rs
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
data
14
reg_EX_MEM.reg_dst
reg_MEM_ER.reg_dst
reg_DI_EX.rs
Unité
d'envoi
II 3 1 Aléas de données (5)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (5)
di_ctrl_di
di_ctrl_di.J_
mem_bran
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_EX_MEM.mem_ctrl.DC_AS
reg_EX_MEM.er_ctrl.Regs_W
reg_DI_EX.rt
reg_EX_MEM.mem_ctrl.DC_RW
reg_EX_MEM.reg_dst
reg_DI_EX.rs
mem_halt
P.V
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
.J_j
_jal
nch
DI/EX
EX/MEM
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
B [20..16]
IMMD [15..0]
EI DI t
di_imm_ext reg_EX_MEM.imm_ext
Branch
REGS_W
reg_DI_EX.imm_ext
1 i t +
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex.flush
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next
di
reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
Signed
MUX
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
AALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
X_REGS_SRCD
er_regd
RS [25..21]
RT [20 16]
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_DST
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
R/W
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_data
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_EX_MEM.code_op
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
T
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_W
reg_EX_MEM.reg_dst
reg_DI_EX.rt
reg_DI_EX.rs
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
d'envoi
15
reg_MEM_ER.reg_dstmem_halt
d envoi
II 3 2 Aléas de branchement (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.2 Aléas de branchement (1)
Temps (en cycles d'horloge)
Ordre
d'exécution
des instructions
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
Branchement
Reg
A
B
S
UAL
MI Reg
Reg
A
S
UAL
MI MD Reg
des instructions
40 BEQ R1,R3,28
44 ADD R12,R4,R5
MD
effectué
B
Reg
A
B
S
UAL
MI MD Reg
48 OR R13,R6,R4
A
Reg
A
B
S
UAL
MI MD Reg
Reg
A
B
S
UAL
MI MD Reg
52 ADD R14,R4,R4
72 LW R2,50(R7)
Branchement
effectué
Temps (en cycles d'horloge)
Ordre
d'exécution
des instructions
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
Reg
A
B
S
UAL
MI Reg
MI
40 BEQ R1,R3,28 MD
Reg
A
B
S
UAL
MI RegMD
Résultat à écrire
dans R1 Ecriture dans R1
44 LW R1,4(R0)
48 ADD R2,R1,R0
Reg
A
B
S
UAL
MI MD Reg
R
A
UAL
R
Lecture de R1
Reg
Lecture de R1
Suspendre
52 ADDI R2,R0,1
Reg
A
B
S
UAL
MI MD Reg72 LW R2,50(R7)
Reg
B
S
UAL
MI MD RegMI
52 ADDI R2,R0,1
16
II 3 2 Aléas de branchement (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.2 Aléas de branchement (2)di_ctrl_d
di_ctrl_di.J
mem_bra
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_EX_MEM.mem_ctrl.DC_AS
reg_EX_MEM.er_ctrl.Regs_W
reg_DI_EX.rt
reg_EX_MEM.mem_ctrl.DC_RW
reg_EX_MEM.reg_dst
reg_DI_EX.rs
mem_halt
P.V
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
di.J_j
J_jal
anch
DI/EX
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
B [20..16]
di_flush
ex_flush
mem_flush
IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext
Branch
mem.flush
REGS_W
reg_DI_EX.imm_ext
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_flush ex.flush
ex_pc_branch
mem_flush
ex_flush
mem_flush
di_flush
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
Signed
MUX
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
AALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
X_REGS_SRCD
er_regd
RS [25..21] reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_DS
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
B
R/W*
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_data
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_EX_MEM.code_op
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
ST
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_W
reg_EX_MEM.reg_dst
reg_DI_EX.rt
reg_DI_EX.rs
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
d'envoi
17
g_ _ g_
reg_MEM_ER.reg_dstmem_halt
d envoi
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
III. Réalisation et simulation
III.1 Mise en œuvre de processeur RISC en VHDLIII.1 Mise en œuvre de processeur RISC en VHDL
III.2 Compilateur
III.3 Résultats de simulation
18
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
III 1 Mise en œuvre de processeur RISC en VHDL
• registres.1.vhd
III.1 Mise en œuvre de processeur RISC en VHDL
• memory.1.correction.vhd
• cpu_package.2_1.vhd
• V5cpu_package.2.vhd et V5risc.0.vhd
• V6cpu_package.2.vhd et V6risc.0.vhd
• logique.i.0.txt
• logique.d.0.txt
III.2 Compilateur
• r3kasm2.c et r3kasm2.h 
19
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
III 3 Résultats de simulation // Bench 1.txtIII.3 Résultats de simulation
a. Les résultats de simulation des fichiers V6cpu_package.2.vhd et V6risc.0.vhd
Avec fichier testadd.txt :
// Bench_1.txt
addi R1,R0,1 // R1 1
sw R1,2(R0) // M[2+R0] 1
addi R1,R0,1 // R1 1
R1 4(R0) // M[4 R0] 1sw R1,4(R0) // M[4+R0] 1
lw R1,4(R0) // R1 M[4+R0] (R1 = 1)
addi R2,R1,2 // R2 R1 + 2 (R2 = 3)
add R10,R2,R1 // R10 R1 + R2 (R10 = 4)
Avec fichier bench_1.txt :
sans suspension du pipeline
, , // ( )
Avec fichier test_aleas_plus.asm :
sans suspension du pipeline
b. Les résultats de simulation des fichiers V5cpu package.2.vhd et V5risc.0.vhd
branchement effectué
p _p g
Avec fichier testadd.txt :
avec suspension du pipeline
Avec fichier bench_1.txt :
A fi hi t t l l
avec suspension du pipeline
avec suspension du pipeline
20
Avec fichier test_aleas_plus.asm :
p p p
branchement effectué
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
IV. Synthèse
Fichier de
synthèse
Période
d'horloge
Fréquence
de l’horloge
Chemin
critique
Voltage
[V]
Puissance
dynamique
Puissance
statique
Nombre
desynthèse d horloge
TCLK [ns]
de l horloge
[MHz]
critique
[ns]
[V] dynamique
[mW]
statique
[uW]
de
cellules
V5risc.0.vhd 10 100 9,85 3,30 54,5345 1,4224 14185V5risc.0.vhd 10 100 9,85 3,30 54,5345 1,4224 14185
9 111,11 8,85 3,30 60,7387 1,4325 14322
8 125 7,85 3,30 68,3236 1,4376 14383
7 142,86 7,68 3,30 78,2718 1,4425 14415
V6risc.0.vhd 8 125 7,96 3,30 68,7665 1,4603 14583
7 142,86 7,79 3,30 78,4423 1,4596 14603
21
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
V. Conclusion
ImportantImportant
- Aider à comprendre les concepts abordés dans le cours
- Maitriser les logiciels: ModelSim, Cadence, AutoCAD, Synopsisg , , , y p
Difficultés
- Prendre beaucoup de temps
- Bloqué parfois
- Sans logiciel Synopsis sur mon PC pour faire la synthèse
22
REFERENCES BIBLIOGRAPHIQUES
[1] Computer Organization & Design. David A. Patterson and John L. Hennessy, ISBN 1-[ ] p g g y,
55860-428-6, p 476-501, 525-256.
[2] University of California at Davis Computer Science Museum,
http://wwwcsif.cs.ucdavis.edu/~csclub/museum/cpu.html, October 1999.
[3] Advanced Microprocessors, Daniel Tabak, ISBN 0-07-062843-2, p 79-99.
[4] The Practical XILINX Designer Lab Book, Dave Van den Bout, ISBN 0-13-095502-7, p
30-31.
[5] XILINX datasheet library http://www xilinx com/partinfo/4000 pdf November 1999[5] XILINX datasheet library, http://www.xilinx.com/partinfo/4000.pdf, November 1999.
[6] Evaluation of a reconfigurable computing engine for digital communication applications,
Jonas Thor, ISSN 1402-1617, p 12-17., , p
[7] « Architecture des ordinateurs : une approche quantitative » John L. Hennessy, David A.
Patterson – Vuibert (3ème édition)
[8] « Conception des circuits en VHDL » Dominique Houzet –Cepadues
23
Merci pour votre attention.
II 1 Chemin de données pipeline (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
di_ctrl_di.J_j
di_ctrl_di.J_jal
b h
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
reg DI EX.ex ctrl.J jr
reg_DI_EX.ex_ctrl.J_jalr
II.1 Chemin de données pipeline (2)
mem_branch
DI/EX
EX/MEM
MEM/ERmxER
mxER
mxMEM
g_ _ _ _j
d
PC_SRPC_SRC
IMMD [15..0]
reg_EI_DI.pc_next
di_imm_ext reg_EX_MEM.imm_ext
reg_EX_MEM.pc_next
Branch
reg_DI_EX.imm_ext
reg_DI_EX.pc_next1 ei_pc_next +
+
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
BRANCH
B TYPE
RC
ex_pc_branch
RS [25..21]
ValDec [10..6]
JADR [25..0]
di_qa reg_MEM_ER.mem_Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.rs_read
reg_DI_EX.val_dec
A
AL
NVZC
ALU_SRCA
@A QAInst
inst@CP
Signed
DS
Q
MEM_mem_Q
MUX
MUX_REGS
NVZC
B_TYPE
RT [20..16]
di_qb
reg_EX_MEM.ual_S
reg_DI_EX.rt_read
ex_ALU_A
ex ALU B
ALU_OP
LU_Signed
ALU_SRCB
@
@B
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
DS
D
R/W*
Data
Cache
X_ALU_SRCAM
AS
@
S_SRCD
er_regd
RT [20..16]
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
reg DI EX.rt
REG_DST
W*
REGS_W
MUX_ALU_SRCB
16
0
AS
reg_DI_EX.rt_read
[ ]
RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
g_ _
reg_DI_EX.rd ex_reg_dst
MUX_REG_DST
31
EI DI EX MEM ER
6
II 2 Unité de contrôle (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.2 Unité de contrôle (1)
di ctrl di J j
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
Unité
de contrôle
reg_EI_DI.flush
F [5..0]
B [20..16]
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
DI/EX
EX/MEMmxER
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PPC_SRC
IMMD [15..0]
reg_EI_DI.pc_next
di_imm_ext reg_EX_MEM.imm_ext
reg EX MEM.pc next
Branch
REGS_W
reg_DI_EX.imm_ext
reg DI EX.pc next1 ei pc next +
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
g_ _ p _
di qa
g_ _ p _
reg MEM ER mem Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
g_ _ p _
inst@CP
_p _
+
Signed MEM mem Q
MUX_
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ALU_OP
ALU_Signed
ALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
g
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
@
REGS_SRCD
er_regd
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_D
D QB
W*
REGS_W
R/W
MUX_ALU_SRCB
16
0
AS
reg_DI_EX.rt_read
RT [20..16]
RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
STMUX_REG_DST
31
7
II 3 1 Aléas de données (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (2)
di ctrl di J j
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
Unité
de contrôle
reg_EI_DI.flush
F [5..0]
B [20..16]
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
DI/EX
EX/MEMmxER
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PPC_SRC
IMMD [15..0]
reg EI DI.pc next
di_imm_ext reg_EX_MEM.imm_ext
reg EX MEM.pc next
Branch
REGS_W
reg_DI_EX.imm_ext
reg DI EX.pc next1 ei pc next +
EI/DI
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
g_ _ p _
di qa
eg_ _ pc_ e t
MEM ER Q
reg_EX_MEM.pc_next reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
eg_ _ pc_ e t
inst@CP
e _pc_ e t
+
Signed MEM mem Q
MUX_
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
ALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
_REGS_SRCD
er_regd
RS [25..21] reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_D
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
R/W*
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_dat
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
DST
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
a
12
reg_EX_MEM.reg_dst
reg_MEM_ER.reg_dst
reg_DI_EX.rs
d'envoi
II 3 1 Aléas de données (4)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (4)
di_ctrl_d
di_ctrl_di.
mem_br
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_DI_EX.mem_ctrl.DC_AS
reg_DI_EX.er_ctrl.Regs_W
reg_DI_EX.mem_ctrl.DC_RW
ex_halt
ex_reg_dst
reg_EI_DI.inst(RS'range)
reg_EI_DI.inst(RT'range)
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
di.J_j
.J_jal
anch
DI/EX
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
[ ]
B [20..16]
IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext
REGS_W
reg_DI_EX.imm_ext
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_pc_branch
ex_halt
mem_branch
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SR
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
M
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
ex_ALU_A
ex ALU XB
ex_ALU_XA
ALU_OP
ALU_Signed
RCAALU_SRCB
@A
@B
QA
@W
Banc de
Registres
Inst
Cache
inst@CP
A
S
ALU
Signed
DS
Q
D
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMU
@
MUX_REGS_SRCD
er_regd
RS [25..21]
di_qb
MEM ER l S
reg_EX_MEM.rt_read
reg_DI_EX.rt_read
ex_ALU_B
ex_ALU_XB
REG
reg DI EX rs
ex_mem_data
D QB
W*
REGS_W
B
D
R/W*
MUX_ALU_SRCB
UX_ALU_XB
16
0
AS
MUX_mem_d
[ ]
RT [20..16]
RD [15..11]
OP [31..26]
reg_MEM_ER.ual_S
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
G_DST
reg_DI_EX.rs
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
data
14
reg_EX_MEM.reg_dst
reg_MEM_ER.reg_dst
reg_DI_EX.rs
Unité
d'envoi
II 3 1 Aléas de données (5)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (5)
di_ctrl_di
di_ctrl_di.J_
mem_bran
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_EX_MEM.mem_ctrl.DC_AS
reg_EX_MEM.er_ctrl.Regs_W
reg_DI_EX.rt
reg_EX_MEM.mem_ctrl.DC_RW
reg_EX_MEM.reg_dst
reg_DI_EX.rs
mem_halt
P.V
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
.J_j
_jal
nch
DI/EX
EX/MEM
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
B [20..16]
IMMD [15..0]
EI DI t
di_imm_ext reg_EX_MEM.imm_ext
Branch
REGS_W
reg_DI_EX.imm_ext
1 i t +
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex.flush
ex_pc_branch
RS [25 21]
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next
di
reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
Signed
MUX
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
AALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
X_REGS_SRCD
er_regd
RS [25..21]
RT [20 16]
reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_DST
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
R/W
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_data
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_EX_MEM.code_op
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
T
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_W
reg_EX_MEM.reg_dst
reg_DI_EX.rt
reg_DI_EX.rs
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
d'envoi
15
reg_MEM_ER.reg_dstmem_halt
d envoi
II 3 2 Aléas de branchement (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.2 Aléas de branchement (2)di_ctrl_d
di_ctrl_di.J
mem_bra
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_EX_MEM.mem_ctrl.DC_AS
reg_EX_MEM.er_ctrl.Regs_W
reg_DI_EX.rt
reg_EX_MEM.mem_ctrl.DC_RW
reg_EX_MEM.reg_dst
reg_DI_EX.rs
mem_halt
P.V
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
di.J_j
J_jal
anch
DI/EX
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
PC_SRC
B [20..16]
di_flush
ex_flush
mem_flush
IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext
Branch
mem.flush
REGS_W
reg_DI_EX.imm_ext
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_flush ex.flush
ex_pc_branch
mem_flush
ex_flush
mem_flush
di_flush
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRCA
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
Signed
MUX
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di_qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
reg_DI_EX.rt_read
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
AALU_SRCB
@A
@B
QA
@W
D QB
Banc de
Registres
Inst
Cache
A
B
S
ALU
Signed
DS
Q
D
R/W*
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX_A
@
X_REGS_SRCD
er_regd
RS [25..21] reg_MEM_ER.ual_S
reg_EX_MEM.rt_read
ex_ALU_B
REG_DS
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
B
R/W*
MUX_ALU_SRCB
ALU_XB
16
0
AS
MUX_mem_data
RT [20..16]
RD [15..11]
OP [31..26]
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_EX_MEM.code_op
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
ST
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_W
reg_EX_MEM.reg_dst
reg_DI_EX.rt
reg_DI_EX.rs
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
d'envoi
17
g_ _ g_
reg_MEM_ER.reg_dstmem_halt
d envoi
II 3 2 Aléas de branchement (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.2 Aléas de branchement (3)
di_ctrl_di
di_ctrl_di.J_
mem_bran
Unité
de contrôle
Unité de
détection
d'aléas reg_EI_DI.flush
F [5..0]
reg_DI_EX.mem_ctrl.DC_AS
reg_DI_EX.er_ctrl.Regs_W
reg_DI_EX.mem_ctrl.DC_RW
ex_halt
ex_reg_dst
reg_EI_DI.inst(RS'range)
reg_EI_DI.inst(RT'range)
OP [31..26]
di_ctrl_di.J_j
di_ctrl_di.J_jal
mem_branch
.J_j
_jal
nch
DI/EX
reg_DI_EX.ex_ctrl.J_jr
reg_DI_EX.ex_ctrl.J_jalr
di_flush
ex_flush
mem_flush
PC_SRC
B [20..16]
IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext
Branch
mem.flush
REGS_W
reg_DI_EX.imm_ext
EI/DI
EX/MEM
MEM/ER
reg_DI_EX.rs_read (PC'range)
reg_EI_DI.inst(JADR'range)
reg_PC(PC'range) +'1'
mxER
mxER
mxER
mxMEM
mxMEM
mxEX
MUX_PC_SRC
di_ctrl_di.signed_ext
PC_SRC
ex_flush ex.flush
ex_pc_branch
mem_flush
ex_flush
mem_flush
di_flush
ex_halt
mem_branch
ValDec [10..6]
JADR [25..0]
reg_EI_DI.pc_next reg_EX_MEM.pc_next
reg_EX_MEM.pc_next
Branch
reg_MEM_ER.pc_next
REGS_SRCD
reg_DI_EX.val_dec
NVZC
ALU_SRC
reg_DI_EX.pc_next
inst@CP
1 ei_pc_next +
+
MU
BRANCH
NVZC
B_TYPE
RS [25..21]
RT [20..16]
di_qa
di qb
reg_EX_MEM.ual_S
reg_MEM_ER.mem_Qreg_DI_EX.rs_read
DI EX t d
ex_ALU_A
ex_ALU_XB
ex_ALU_XA
ALU_OP
ALU_Signed
CAALU_SRCB
@A
@B
QA
@W
Banc de
Registres
Inst
Cache
inst@CP
A
B
S
ALU
Signed
DS
Q
D
Data
Cache
MEM_mem_Q
MUX_ALU_SRCA
MUX_ALU_XAMUX
@
UX_REGS_SRCD
er_regd
RS [25..21]
di_qb
reg MEM ER.ual S
reg_EX_MEM.rt_read
reg_DI_EX.rt_read
ex_ALU_B
REG_
reg_DI_EX.rs
ex_mem_data
D QB
W*
REGS_W
B
R/W*
MUX_ALU_SRCB
X_ALU_XB
16
0
AS
MUX_mem_da
RT [20..16]
RD [15..11]
OP [31..26]
reg_MEM_ER.ual_S
reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst
reg_DI_EX.rt
reg_DI_EX.rd ex_reg_dst
_DST
reg_EX_MEM.er_ctrl.regs_W
reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt
reg_DI_EX.code_op
MUX_REG_DST
31
Unité
ata
reg_EX_MEM.reg_dst
reg_MEM_ER.reg_dst
reg_DI_EX.rs
d'envoi
II 3 1 Aléas de données (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (1)
1. Aléas de données à l'étage EX
Temps (en cycles d'horloge)
Reg
A
S
UAL
MI MD Reg
Ordre
d'exécution
des instructions
ADDI R1 R0 1
C1 C2 C3 C4 C5
Ecriture dans R1
C6
Résultat à écrire
dans R1
C7
Reg
B
SMI MD Reg
Reg
A
S
UAL
MI MD Reg
ADDI R1,R0,1
ADD R2,R1,R0
Lecture de R1
2 Aléas de données à l'étage MEM
g
B
g
2. Aléas de données à l étage MEM
Temps (en cycles d'horloge)
Ordre
d'exécution
C1 C2 C3 C4 C5 C6 C7
Ecriture dans R1
Reg
A
B
S
UAL
MI Reg
d exécution
des instructions
LW R1,4(R0) MD
Résultat à écrire
dans R1
Lecture de R1
Reg
A
B
S
UAL
MI MD RegADDI R2,R0,1
Lecture de R1
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
11
II 3 1 Aléas de données (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.1 Aléas de données (3)
Temps (en cycles d'horloge)
C1 C2 C3 C4 C5
3. Aléas de données lorsqu'une instruction tente de lire un registre à la suite d'une instruction de chargement écrivant dans le même registre
C6 C7 C8
(a)
Reg
A
B
S
UAL
MI Reg
Ordre
d'exécution
des instructions
LW R1,4(R0)
C1 C2 C3 C4 C5
MD
Résultat à écrire
dans R1 Ecriture dans R1
C6 C7 C8
B
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
Lecture de R1
Reg
Lecture de R1
S d
ADDI R2,R0,1 Reg
A
B
S
UAL
MI MD RegMI
Suspendre
(b)
Temps (en cycles d'horloge)
C1 C2 C3 C4 C5 C6 C7
Reg
A
B
S
UAL
MI Reg
Ordre
d'exécution
des instructions
LW R1,4(R0)
C1 C2 C3 C4 C5
MD
Résultat à écrire
dans R1 Ecriture dans R1
C6 C7
B
Reg
A
B
S
UAL
MI MD RegADD R2,R1,R0
Lecture de R1
ADDI R2,R0,1 Reg
A
B
S
UAL
MI MD Reg
13
II 3 2 Aléas de branchement (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclusion
II.3.2 Aléas de branchement (1)
Temps (en cycles d'horloge)
Ordre
d'exécution
des instructions
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
Branchement
Reg
A
B
S
UAL
MI Reg
Reg
A
S
UAL
MI MD Reg
des instructions
40 BEQ R1,R3,28
44 ADD R12,R4,R5
MD
effectué
B
Reg
A
B
S
UAL
MI MD Reg
48 OR R13,R6,R4
A
Reg
A
B
S
UAL
MI MD Reg
Reg
A
B
S
UAL
MI MD Reg
52 ADD R14,R4,R4
72 LW R2,50(R7)
Branchement
effectué
Temps (en cycles d'horloge)
Ordre
d'exécution
des instructions
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
Reg
A
B
S
UAL
MI Reg
MI
40 BEQ R1,R3,28 MD
Reg
A
B
S
UAL
MI RegMD
Résultat à écrire
dans R1 Ecriture dans R1
44 LW R1,4(R0)
48 ADD R2,R1,R0
Reg
A
B
S
UAL
MI MD Reg
R
A
UAL
R
Lecture de R1
Reg
Lecture de R1
Suspendre
52 ADDI R2,R0,1
Reg
A
B
S
UAL
MI MD Reg72 LW R2,50(R7)
Reg
B
S
UAL
MI MD RegMI
52 ADDI R2,R0,1
16

Contenu connexe

En vedette

Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurISIG
 
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020Pôle Aménagement de la Maison
 
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGE
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGEWebinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGE
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGEAssociation Transition Numérique +
 
Aula Viajera: Socialización Rica
Aula Viajera: Socialización RicaAula Viajera: Socialización Rica
Aula Viajera: Socialización Ricamarisoleconomia
 
Juan luisrecioforomarketingdelvino2006
Juan luisrecioforomarketingdelvino2006Juan luisrecioforomarketingdelvino2006
Juan luisrecioforomarketingdelvino2006Juan Recio
 
Yummy magazine N°14
Yummy magazine N°14Yummy magazine N°14
Yummy magazine N°14YummyMagazine
 
Technologies du logiciel 1-One
Technologies du logiciel 1-OneTechnologies du logiciel 1-One
Technologies du logiciel 1-OneYann Lucas
 
Présentation de BioFIT 2015 et retour sur BioFIT 2014
Présentation de BioFIT 2015 et retour sur BioFIT 2014Présentation de BioFIT 2015 et retour sur BioFIT 2014
Présentation de BioFIT 2015 et retour sur BioFIT 2014Alsace BioValley
 
Anuncio de Regatas XIX Regata Costa Azahar
Anuncio de Regatas XIX Regata Costa AzaharAnuncio de Regatas XIX Regata Costa Azahar
Anuncio de Regatas XIX Regata Costa AzaharMAR DE NOTICIAS
 
Don quixote - strauss
Don quixote - straussDon quixote - strauss
Don quixote - straussSam Moraes
 
Apprendre a jouer de la guitare
Apprendre a jouer de la guitareApprendre a jouer de la guitare
Apprendre a jouer de la guitare지운 박
 
Media evaluation question 5
Media evaluation question 5Media evaluation question 5
Media evaluation question 5katieogrady9
 

En vedette (19)

Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
Desarrollo sistemas web
Desarrollo sistemas webDesarrollo sistemas web
Desarrollo sistemas web
 
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020
Rapport d'activité 2014 - 2015 - Vision PAMA 2017 - 2020
 
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGE
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGEWebinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGE
Webinar ATN+ - Optimale Pro Office - La téléphonie Pro par ORANGE
 
Outfit para media semana
Outfit para media semanaOutfit para media semana
Outfit para media semana
 
Aula Viajera: Socialización Rica
Aula Viajera: Socialización RicaAula Viajera: Socialización Rica
Aula Viajera: Socialización Rica
 
Juan luisrecioforomarketingdelvino2006
Juan luisrecioforomarketingdelvino2006Juan luisrecioforomarketingdelvino2006
Juan luisrecioforomarketingdelvino2006
 
Yummy magazine N°14
Yummy magazine N°14Yummy magazine N°14
Yummy magazine N°14
 
Technologies du logiciel 1-One
Technologies du logiciel 1-OneTechnologies du logiciel 1-One
Technologies du logiciel 1-One
 
Mantenimiento del horno microondas
Mantenimiento del horno microondasMantenimiento del horno microondas
Mantenimiento del horno microondas
 
Yummy magazine N°7
Yummy magazine N°7Yummy magazine N°7
Yummy magazine N°7
 
Présentation de BioFIT 2015 et retour sur BioFIT 2014
Présentation de BioFIT 2015 et retour sur BioFIT 2014Présentation de BioFIT 2015 et retour sur BioFIT 2014
Présentation de BioFIT 2015 et retour sur BioFIT 2014
 
Anuncio de Regatas XIX Regata Costa Azahar
Anuncio de Regatas XIX Regata Costa AzaharAnuncio de Regatas XIX Regata Costa Azahar
Anuncio de Regatas XIX Regata Costa Azahar
 
Don quixote - strauss
Don quixote - straussDon quixote - strauss
Don quixote - strauss
 
Apprendre a jouer de la guitare
Apprendre a jouer de la guitareApprendre a jouer de la guitare
Apprendre a jouer de la guitare
 
Fêtes et légendes à Kyoto
Fêtes et légendes à KyotoFêtes et légendes à Kyoto
Fêtes et légendes à Kyoto
 
C 485 de 2000
C 485 de 2000C 485 de 2000
C 485 de 2000
 
Media evaluation question 5
Media evaluation question 5Media evaluation question 5
Media evaluation question 5
 
La enfermeria
La enfermeriaLa enfermeria
La enfermeria
 

Similaire à ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC

MODULE_18_Configuration_dun_Routeur.pdf
MODULE_18_Configuration_dun_Routeur.pdfMODULE_18_Configuration_dun_Routeur.pdf
MODULE_18_Configuration_dun_Routeur.pdfharizi riadh
 
PFE PSA Peugeot Citroen - Prototypage rapide
PFE PSA Peugeot Citroen - Prototypage rapide PFE PSA Peugeot Citroen - Prototypage rapide
PFE PSA Peugeot Citroen - Prototypage rapide Régis Castéran
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Moha Belkaid
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industrielAdnane Ahmidani
 
Correction des exercices du thème 6 du manuel du cours 3ème année
Correction des exercices du thème 6 du manuel du cours 3ème annéeCorrection des exercices du thème 6 du manuel du cours 3ème année
Correction des exercices du thème 6 du manuel du cours 3ème annéeRimAskri
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Moha Belkaid
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfDAPcreat
 
Projet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_pptProjet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_pptMouhcine Nid Belkacem
 
Chapitre ii étude technique.docx
Chapitre ii  étude technique.docxChapitre ii  étude technique.docx
Chapitre ii étude technique.docxZouaouine Mahfoud
 
Présentation_ACFT_BE_2019_16_9.pdf
Présentation_ACFT_BE_2019_16_9.pdfPrésentation_ACFT_BE_2019_16_9.pdf
Présentation_ACFT_BE_2019_16_9.pdfReneDzotagne
 
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxWIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxtheprofessional6
 
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxWIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxtheprofessional6
 
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...RidhaChayeh1
 

Similaire à ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC (20)

MODULE_18_Configuration_dun_Routeur.pdf
MODULE_18_Configuration_dun_Routeur.pdfMODULE_18_Configuration_dun_Routeur.pdf
MODULE_18_Configuration_dun_Routeur.pdf
 
PFE PSA Peugeot Citroen - Prototypage rapide
PFE PSA Peugeot Citroen - Prototypage rapide PFE PSA Peugeot Citroen - Prototypage rapide
PFE PSA Peugeot Citroen - Prototypage rapide
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
 
Correction des exercices du thème 6 du manuel du cours 3ème année
Correction des exercices du thème 6 du manuel du cours 3ème annéeCorrection des exercices du thème 6 du manuel du cours 3ème année
Correction des exercices du thème 6 du manuel du cours 3ème année
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
 
Projet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_pptProjet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_ppt
 
Chapitre ii étude technique.docx
Chapitre ii  étude technique.docxChapitre ii  étude technique.docx
Chapitre ii étude technique.docx
 
Présentation_ACFT_BE_2019_16_9.pdf
Présentation_ACFT_BE_2019_16_9.pdfPrésentation_ACFT_BE_2019_16_9.pdf
Présentation_ACFT_BE_2019_16_9.pdf
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxWIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
 
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docxWIFAK NOTE DE CALCUL DEC 2021 (2).docx
WIFAK NOTE DE CALCUL DEC 2021 (2).docx
 
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
 
these_sample
these_samplethese_sample
these_sample
 

ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC

  • 2. PLAN DE LA PRESENTATION I I d i j d jI. Introduction au sujet de projet I.1 Objectif du projet I 2 Travail demandéI.2 Travail demandé II. Conception de processeur RISC II.1 Chemin de données pipeline II.2 Unité de contrôle II.3 Aléas dans les pipelines III. Réalisation et simulation III.1 Mise en œuvre de processeur RISC en VHDL III 2 CompilateurIII.2 Compilateur III.3 Résultats de simulation IV. Synthèsey V. Conclusion 2
  • 3. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion I. Introduction au sujet de projet I.1 Objectif du projetI.1 Objectif du projet - Mise en ouvre d’une architecture de processeur RISCp I.2 Travail demandé - Conception - Simulation - Synthèse 3
  • 4. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II. Conception de processeur RISC II.1 Chemins de données pipelineII.1 Chemins de données pipeline II.2 Unité de contrôle II.3 Aléas dans le pipelinep p 4
  • 5. II 1 Chemin de données pipeline (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.1 Chemin de données pipeline (1) Ordre d'exécution des instructions (a) 40 ns 80 nsTemps Extraction Instruction regUAL Extraction Donnée 40 ns reg 10 ns 5 ns Extraction Instruction regUAL Extraction Donnée reg Extraction lw R1, 100(R0) lw R2, 200(R0) lw R2 300(R0) Extraction Instruction UALreg 40 ns lw R2, 300(R0) 40 ns Ordre d'exécution (b) 40 ns 80 nsTemps 10 ns 20 ns 30 ns 50 ns 70 ns60 ns Extraction Instruction UAL Extraction Donnée reg des instructions lw R1, 100(R0) lw R2, 200(R0) reg Extraction UAL Extraction reg reglw R2, 200(R0) lw R2, 300(R0) Instruction UAL Donnée reg reg Extraction Instruction UAL Extraction Donnée reg reg 5
  • 6. II 1 Chemin de données pipeline (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion di_ctrl_di.J_j di_ctrl_di.J_jal b h di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch reg DI EX.ex ctrl.J jr reg_DI_EX.ex_ctrl.J_jalr II.1 Chemin de données pipeline (2) mem_branch DI/EX EX/MEM MEM/ERmxER mxER mxMEM g_ _ _ _j d PC_SRPC_SRC IMMD [15..0] reg_EI_DI.pc_next di_imm_ext reg_EX_MEM.imm_ext reg_EX_MEM.pc_next Branch reg_DI_EX.imm_ext reg_DI_EX.pc_next1 ei_pc_next + + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext BRANCH B TYPE RC ex_pc_branch RS [25..21] ValDec [10..6] JADR [25..0] di_qa reg_MEM_ER.mem_Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.rs_read reg_DI_EX.val_dec A AL NVZC ALU_SRCA @A QAInst inst@CP Signed DS Q MEM_mem_Q MUX MUX_REGS NVZC B_TYPE RT [20..16] di_qb reg_EX_MEM.ual_S reg_DI_EX.rt_read ex_ALU_A ex ALU B ALU_OP LU_Signed ALU_SRCB @ @B @W D QB Banc de Registres Inst Cache A B S ALU DS D R/W* Data Cache X_ALU_SRCAM AS @ S_SRCD er_regd RT [20..16] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B reg DI EX.rt REG_DST W* REGS_W MUX_ALU_SRCB 16 0 AS reg_DI_EX.rt_read [ ] RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst g_ _ reg_DI_EX.rd ex_reg_dst MUX_REG_DST 31 EI DI EX MEM ER 6
  • 7. II 2 Unité de contrôle (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.2 Unité de contrôle (1) di ctrl di J j di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch Unité de contrôle reg_EI_DI.flush F [5..0] B [20..16] OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch DI/EX EX/MEMmxER reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PPC_SRC IMMD [15..0] reg_EI_DI.pc_next di_imm_ext reg_EX_MEM.imm_ext reg EX MEM.pc next Branch REGS_W reg_DI_EX.imm_ext reg DI EX.pc next1 ei pc next + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] g_ _ p _ di qa g_ _ p _ reg MEM ER mem Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA g_ _ p _ inst@CP _p _ + Signed MEM mem Q MUX_ BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ALU_OP ALU_Signed ALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU g DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA @ REGS_SRCD er_regd reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_D D QB W* REGS_W R/W MUX_ALU_SRCB 16 0 AS reg_DI_EX.rt_read RT [20..16] RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst STMUX_REG_DST 31 7
  • 8. II 2 Unité de contrôle (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.2 Unité de contrôle (2) Étage DI Lignes de contrôle Lignes de contrôle Étage EX SIGNED_EXT J_j J_jal ADD 0 rt / BFCODEOPCODE ALU_OP ALU_SIGNED ALU_SRCA ALU_SRCB REG_DST J_jr J_jalr ALU ADD 1 REGS QA REGS QB REG RD MUXMUX MUX ADD 0 - - ADDU 0 - - SUB 0 - - SUBU 0 - - iAND 0 - - iOR 0 - - iNOR 0 - -TYPE_R ALU_ADD 1 REGS_QA REGS_QB REG_RD - - ALU_ADD 0 REGS_QA REGS_QB REG_RD - - ALU_SUB 1 REGS_QA REGS_QB REG_RD - - ALU_SUB 0 REGS_QA REGS_QB REG_RD - - ALU_AND 0 REGS_QA REGS_QB REG_RD - - ALU_OR 0 REGS_QA REGS_QB REG_RD - - ALU_NOR 0 REGS_QA REGS_QB REG_RD - - iXOR 0 - - SLT 0 - - SLTU 0 - - LSL 0 - - LSR 0 - - JR 0 - - JALR 0 - - "000000" ALU_XOR 0 REGS_QA REGS_QB REG_RD - - ALU_SLT 1 REGS_QA REGS_QB REG_RD - - ALU_SLT 0 REGS_QA REGS_QB REG_RD - - ALU_LSL 0 REGS_QB VAL_DEC REG_RD - - ALU_LSR 0 REGS_QB VAL_DEC REG_RD - - - - REGS_QA REGS_QB REG_RD 1 - - - REGS QA REGS QB REG RD - 1 BLTZ 1 - - BGEZ 1 - - BLTZAL 1 - - BGEZAL 1 - - J 0 1 - JAL 0 - 1 ADDI 1 TYPE_J TYPE_B "000001" _ _ _ ALU_SUB 1 REGS_QA VAL_0 - - - ALU_SUB 1 REGS_QA VAL_0 - - - L ALU_SUB 1 REGS_QA VAL_0 R31 - - L ALU_SUB 1 REGS_QA VAL_0 R31 - - - - - - - - - - - - - R31 - - ALU ADD 1 REGS QA IMMD REG RTADDI 1 - - ADDIU 1 - - SLTI 1 - - SLTIU 1 - - ANDI 0 - - ORI 0 - - XORI 0 - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU_ADD 0 REGS_QA IMMD REG_RT - - ALU_SLT 1 REGS_QA IMMD REG_RT - - ALU_SLT 0 REGS_QA IMMD REG_RT - - ALU_AND 0 REGS_QA IMMD REG_RT - - ALU_OR 0 REGS_QA IMMD REG_RT - - ALU_XOR 0 REGS_QA IMMD REG_RT - - LUI 0 - - LB 1 - - LH 1 - - LW 1 - - LBU 1 - - LHU 1 - - SB 1 - - TYPE_I ALU_LSL 1 IMMD VAL_16 REG_RT - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU_ADD 1 REGS_QA IMMD REG_RT - - ALU ADD 1 REGS QA IMMD - - -SB 1 SH 1 - - SW 1 - - BEQ 1 - - BNE 1 - - BLEZ 1 - - BGTZ 1 - - ALU_ADD 1 REGS_QA IMMD ALU_ADD 1 REGS_QA IMMD - - - ALU_ADD 1 REGS_QA IMMD - - - ALU_SUB 1 REGS_QA REGS_QB - - - ALU_SUB 1 REGS_QA REGS_QB - - - ALU_SUB 1 REGS_QA REGS_QB - - - ALU_SUB 1 REGS_QA REGS_QB - - - 8
  • 9. II 2 Unité de contrôle (3) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.2 Unité de contrôle (3) Étage MEM Lignes de contrôle MUX Étage ER Lignes de contrôle DC_AS DC_SIGNED DC_DS DC_RW BRANCH B_type ADD 0 - - - 0 - rt / BFCODEOPCODE MUX REGS_W* REGS_SRCD 0 ALU S MUX ADD 0 0 ADDU 0 - - - 0 - SUB 0 - - - 0 - SUBU 0 - - - 0 - iAND 0 - - - 0 - iOR 0 - - - 0 - iNOR 0 - - - 0 - iXOR 0 0 TYPE_R "000000" 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU SiXOR 0 - - - 0 - SLT 0 - - - 0 - SLTU 0 - - - 0 - LSL 0 - - - 0 - LSR 0 - - - 0 - JR 0 - - - 0 - JALR 0 - - - 0 - 000000 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 1 - 0 NextPC BLTZ 0 - - - 1 B_bltz BGEZ 0 - - - 1 B_bgez BLTZAL 0 - - - 1 B_bltz BGEZAL 0 - - - 1 B_bgez J 0 - - - 0 - JAL 0 - - - 0 - ADDI 0 0 TYPE_J TYPE_B "000001" 1 - 1 - 0 NextPC 0 NextPC 1 - 0 NextPC 0 ALU SADDI 0 - - - 0 - ADDIU 0 - - - 0 - SLTI 0 - - - 0 - SLTIU 0 - - - 0 - ANDI 0 - - - 0 - ORI 0 - - - 0 - XORI 0 - - - 0 - LUI 0 0 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU_S 0 ALU SLUI 0 - - - 0 - LB 1 1 MEM_8 1 0 - LH 1 1 MEM_16 1 0 - LW 1 1 MEM_32 1 0 - LBU 1 0 MEM_8 1 0 - LHU 1 0 MEM_16 1 0 - SB 1 1 MEM_8 0 0 - TYPE_I 0 ALU_S 0 MEM_Q 0 MEM_Q 0 MEM_Q 0 MEM_Q 0 MEM_Q 1 - SH 1 1 MEM_16 0 0 - SW 1 1 MEM_32 0 0 - BEQ 0 - - - 1 B_beq BNE 0 - - - 1 B_bne BLEZ 0 - - - 1 B_blez BGTZ 0 - - - 1 B_bgtz 1 - 1 - 1 - 1 - 1 - 1 - 9
  • 10. II 3 Aléas dans les pipelines I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3 Aléas dans les pipelines II.3.1 Aléas de donnéesII.3.1 Aléas de données II.3.2 Aléas de branchement 10
  • 11. II 3 1 Aléas de données (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (1) 1. Aléas de données à l'étage EX Temps (en cycles d'horloge) Reg A S UAL MI MD Reg Ordre d'exécution des instructions ADDI R1 R0 1 C1 C2 C3 C4 C5 Ecriture dans R1 C6 Résultat à écrire dans R1 C7 Reg B SMI MD Reg Reg A S UAL MI MD Reg ADDI R1,R0,1 ADD R2,R1,R0 Lecture de R1 2 Aléas de données à l'étage MEM g B g 2. Aléas de données à l étage MEM Temps (en cycles d'horloge) Ordre d'exécution C1 C2 C3 C4 C5 C6 C7 Ecriture dans R1 Reg A B S UAL MI Reg d exécution des instructions LW R1,4(R0) MD Résultat à écrire dans R1 Lecture de R1 Reg A B S UAL MI MD RegADDI R2,R0,1 Lecture de R1 Reg A B S UAL MI MD RegADD R2,R1,R0 11
  • 12. II 3 1 Aléas de données (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (2) di ctrl di J j di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch Unité de contrôle reg_EI_DI.flush F [5..0] B [20..16] OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch DI/EX EX/MEMmxER reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PPC_SRC IMMD [15..0] reg EI DI.pc next di_imm_ext reg_EX_MEM.imm_ext reg EX MEM.pc next Branch REGS_W reg_DI_EX.imm_ext reg DI EX.pc next1 ei pc next + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] g_ _ p _ di qa eg_ _ pc_ e t MEM ER Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA eg_ _ pc_ e t inst@CP e _pc_ e t + Signed MEM mem Q MUX_ BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed ALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ _REGS_SRCD er_regd RS [25..21] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_D reg_DI_EX.rs ex_mem_data D QB W* REGS_W R/W* MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_dat RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst DST reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt reg_DI_EX.code_op MUX_REG_DST 31 Unité a 12 reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rs d'envoi
  • 13. II 3 1 Aléas de données (3) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (3) Temps (en cycles d'horloge) C1 C2 C3 C4 C5 3. Aléas de données lorsqu'une instruction tente de lire un registre à la suite d'une instruction de chargement écrivant dans le même registre C6 C7 C8 (a) Reg A B S UAL MI Reg Ordre d'exécution des instructions LW R1,4(R0) C1 C2 C3 C4 C5 MD Résultat à écrire dans R1 Ecriture dans R1 C6 C7 C8 B Reg A B S UAL MI MD RegADD R2,R1,R0 Lecture de R1 Reg Lecture de R1 S d ADDI R2,R0,1 Reg A B S UAL MI MD RegMI Suspendre (b) Temps (en cycles d'horloge) C1 C2 C3 C4 C5 C6 C7 Reg A B S UAL MI Reg Ordre d'exécution des instructions LW R1,4(R0) C1 C2 C3 C4 C5 MD Résultat à écrire dans R1 Ecriture dans R1 C6 C7 B Reg A B S UAL MI MD RegADD R2,R1,R0 Lecture de R1 ADDI R2,R0,1 Reg A B S UAL MI MD Reg 13
  • 14. II 3 1 Aléas de données (4) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (4) di_ctrl_d di_ctrl_di. mem_br Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_DI_EX.mem_ctrl.DC_AS reg_DI_EX.er_ctrl.Regs_W reg_DI_EX.mem_ctrl.DC_RW ex_halt ex_reg_dst reg_EI_DI.inst(RS'range) reg_EI_DI.inst(RT'range) OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch di.J_j .J_jal anch DI/EX reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC [ ] B [20..16] IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext REGS_W reg_DI_EX.imm_ext EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch ex_halt mem_branch ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SR reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + M BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read ex_ALU_A ex ALU XB ex_ALU_XA ALU_OP ALU_Signed RCAALU_SRCB @A @B QA @W Banc de Registres Inst Cache inst@CP A S ALU Signed DS Q D Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMU @ MUX_REGS_SRCD er_regd RS [25..21] di_qb MEM ER l S reg_EX_MEM.rt_read reg_DI_EX.rt_read ex_ALU_B ex_ALU_XB REG reg DI EX rs ex_mem_data D QB W* REGS_W B D R/W* MUX_ALU_SRCB UX_ALU_XB 16 0 AS MUX_mem_d [ ] RT [20..16] RD [15..11] OP [31..26] reg_MEM_ER.ual_S reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst G_DST reg_DI_EX.rs reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt reg_DI_EX.code_op MUX_REG_DST 31 Unité data 14 reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rs Unité d'envoi
  • 15. II 3 1 Aléas de données (5) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (5) di_ctrl_di di_ctrl_di.J_ mem_bran Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_EX_MEM.mem_ctrl.DC_AS reg_EX_MEM.er_ctrl.Regs_W reg_DI_EX.rt reg_EX_MEM.mem_ctrl.DC_RW reg_EX_MEM.reg_dst reg_DI_EX.rs mem_halt P.V OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch .J_j _jal nch DI/EX EX/MEM reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC B [20..16] IMMD [15..0] EI DI t di_imm_ext reg_EX_MEM.imm_ext Branch REGS_W reg_DI_EX.imm_ext 1 i t + EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex.flush ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next di reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + Signed MUX BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed AALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ X_REGS_SRCD er_regd RS [25..21] RT [20 16] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_DST reg_DI_EX.rs ex_mem_data D QB W* REGS_W R/W MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_data RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_EX_MEM.code_op reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst T reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_W reg_EX_MEM.reg_dst reg_DI_EX.rt reg_DI_EX.rs reg_DI_EX.code_op MUX_REG_DST 31 Unité d'envoi 15 reg_MEM_ER.reg_dstmem_halt d envoi
  • 16. II 3 2 Aléas de branchement (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.2 Aléas de branchement (1) Temps (en cycles d'horloge) Ordre d'exécution des instructions C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 Branchement Reg A B S UAL MI Reg Reg A S UAL MI MD Reg des instructions 40 BEQ R1,R3,28 44 ADD R12,R4,R5 MD effectué B Reg A B S UAL MI MD Reg 48 OR R13,R6,R4 A Reg A B S UAL MI MD Reg Reg A B S UAL MI MD Reg 52 ADD R14,R4,R4 72 LW R2,50(R7) Branchement effectué Temps (en cycles d'horloge) Ordre d'exécution des instructions C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 Reg A B S UAL MI Reg MI 40 BEQ R1,R3,28 MD Reg A B S UAL MI RegMD Résultat à écrire dans R1 Ecriture dans R1 44 LW R1,4(R0) 48 ADD R2,R1,R0 Reg A B S UAL MI MD Reg R A UAL R Lecture de R1 Reg Lecture de R1 Suspendre 52 ADDI R2,R0,1 Reg A B S UAL MI MD Reg72 LW R2,50(R7) Reg B S UAL MI MD RegMI 52 ADDI R2,R0,1 16
  • 17. II 3 2 Aléas de branchement (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.2 Aléas de branchement (2)di_ctrl_d di_ctrl_di.J mem_bra Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_EX_MEM.mem_ctrl.DC_AS reg_EX_MEM.er_ctrl.Regs_W reg_DI_EX.rt reg_EX_MEM.mem_ctrl.DC_RW reg_EX_MEM.reg_dst reg_DI_EX.rs mem_halt P.V OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch di.J_j J_jal anch DI/EX reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC B [20..16] di_flush ex_flush mem_flush IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext Branch mem.flush REGS_W reg_DI_EX.imm_ext EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_flush ex.flush ex_pc_branch mem_flush ex_flush mem_flush di_flush ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + Signed MUX BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed AALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ X_REGS_SRCD er_regd RS [25..21] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_DS reg_DI_EX.rs ex_mem_data D QB W* REGS_W B R/W* MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_data RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_EX_MEM.code_op reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst ST reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_W reg_EX_MEM.reg_dst reg_DI_EX.rt reg_DI_EX.rs reg_DI_EX.code_op MUX_REG_DST 31 Unité d'envoi 17 g_ _ g_ reg_MEM_ER.reg_dstmem_halt d envoi
  • 18. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion III. Réalisation et simulation III.1 Mise en œuvre de processeur RISC en VHDLIII.1 Mise en œuvre de processeur RISC en VHDL III.2 Compilateur III.3 Résultats de simulation 18
  • 19. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion III 1 Mise en œuvre de processeur RISC en VHDL • registres.1.vhd III.1 Mise en œuvre de processeur RISC en VHDL • memory.1.correction.vhd • cpu_package.2_1.vhd • V5cpu_package.2.vhd et V5risc.0.vhd • V6cpu_package.2.vhd et V6risc.0.vhd • logique.i.0.txt • logique.d.0.txt III.2 Compilateur • r3kasm2.c et r3kasm2.h  19
  • 20. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion III 3 Résultats de simulation // Bench 1.txtIII.3 Résultats de simulation a. Les résultats de simulation des fichiers V6cpu_package.2.vhd et V6risc.0.vhd Avec fichier testadd.txt : // Bench_1.txt addi R1,R0,1 // R1 1 sw R1,2(R0) // M[2+R0] 1 addi R1,R0,1 // R1 1 R1 4(R0) // M[4 R0] 1sw R1,4(R0) // M[4+R0] 1 lw R1,4(R0) // R1 M[4+R0] (R1 = 1) addi R2,R1,2 // R2 R1 + 2 (R2 = 3) add R10,R2,R1 // R10 R1 + R2 (R10 = 4) Avec fichier bench_1.txt : sans suspension du pipeline , , // ( ) Avec fichier test_aleas_plus.asm : sans suspension du pipeline b. Les résultats de simulation des fichiers V5cpu package.2.vhd et V5risc.0.vhd branchement effectué p _p g Avec fichier testadd.txt : avec suspension du pipeline Avec fichier bench_1.txt : A fi hi t t l l avec suspension du pipeline avec suspension du pipeline 20 Avec fichier test_aleas_plus.asm : p p p branchement effectué
  • 21. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion IV. Synthèse Fichier de synthèse Période d'horloge Fréquence de l’horloge Chemin critique Voltage [V] Puissance dynamique Puissance statique Nombre desynthèse d horloge TCLK [ns] de l horloge [MHz] critique [ns] [V] dynamique [mW] statique [uW] de cellules V5risc.0.vhd 10 100 9,85 3,30 54,5345 1,4224 14185V5risc.0.vhd 10 100 9,85 3,30 54,5345 1,4224 14185 9 111,11 8,85 3,30 60,7387 1,4325 14322 8 125 7,85 3,30 68,3236 1,4376 14383 7 142,86 7,68 3,30 78,2718 1,4425 14415 V6risc.0.vhd 8 125 7,96 3,30 68,7665 1,4603 14583 7 142,86 7,79 3,30 78,4423 1,4596 14603 21
  • 22. I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion V. Conclusion ImportantImportant - Aider à comprendre les concepts abordés dans le cours - Maitriser les logiciels: ModelSim, Cadence, AutoCAD, Synopsisg , , , y p Difficultés - Prendre beaucoup de temps - Bloqué parfois - Sans logiciel Synopsis sur mon PC pour faire la synthèse 22
  • 23. REFERENCES BIBLIOGRAPHIQUES [1] Computer Organization & Design. David A. Patterson and John L. Hennessy, ISBN 1-[ ] p g g y, 55860-428-6, p 476-501, 525-256. [2] University of California at Davis Computer Science Museum, http://wwwcsif.cs.ucdavis.edu/~csclub/museum/cpu.html, October 1999. [3] Advanced Microprocessors, Daniel Tabak, ISBN 0-07-062843-2, p 79-99. [4] The Practical XILINX Designer Lab Book, Dave Van den Bout, ISBN 0-13-095502-7, p 30-31. [5] XILINX datasheet library http://www xilinx com/partinfo/4000 pdf November 1999[5] XILINX datasheet library, http://www.xilinx.com/partinfo/4000.pdf, November 1999. [6] Evaluation of a reconfigurable computing engine for digital communication applications, Jonas Thor, ISSN 1402-1617, p 12-17., , p [7] « Architecture des ordinateurs : une approche quantitative » John L. Hennessy, David A. Patterson – Vuibert (3ème édition) [8] « Conception des circuits en VHDL » Dominique Houzet –Cepadues 23
  • 24. Merci pour votre attention.
  • 25. II 1 Chemin de données pipeline (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion di_ctrl_di.J_j di_ctrl_di.J_jal b h di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch reg DI EX.ex ctrl.J jr reg_DI_EX.ex_ctrl.J_jalr II.1 Chemin de données pipeline (2) mem_branch DI/EX EX/MEM MEM/ERmxER mxER mxMEM g_ _ _ _j d PC_SRPC_SRC IMMD [15..0] reg_EI_DI.pc_next di_imm_ext reg_EX_MEM.imm_ext reg_EX_MEM.pc_next Branch reg_DI_EX.imm_ext reg_DI_EX.pc_next1 ei_pc_next + + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext BRANCH B TYPE RC ex_pc_branch RS [25..21] ValDec [10..6] JADR [25..0] di_qa reg_MEM_ER.mem_Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.rs_read reg_DI_EX.val_dec A AL NVZC ALU_SRCA @A QAInst inst@CP Signed DS Q MEM_mem_Q MUX MUX_REGS NVZC B_TYPE RT [20..16] di_qb reg_EX_MEM.ual_S reg_DI_EX.rt_read ex_ALU_A ex ALU B ALU_OP LU_Signed ALU_SRCB @ @B @W D QB Banc de Registres Inst Cache A B S ALU DS D R/W* Data Cache X_ALU_SRCAM AS @ S_SRCD er_regd RT [20..16] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B reg DI EX.rt REG_DST W* REGS_W MUX_ALU_SRCB 16 0 AS reg_DI_EX.rt_read [ ] RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst g_ _ reg_DI_EX.rd ex_reg_dst MUX_REG_DST 31 EI DI EX MEM ER 6
  • 26. II 2 Unité de contrôle (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.2 Unité de contrôle (1) di ctrl di J j di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch Unité de contrôle reg_EI_DI.flush F [5..0] B [20..16] OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch DI/EX EX/MEMmxER reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PPC_SRC IMMD [15..0] reg_EI_DI.pc_next di_imm_ext reg_EX_MEM.imm_ext reg EX MEM.pc next Branch REGS_W reg_DI_EX.imm_ext reg DI EX.pc next1 ei pc next + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] g_ _ p _ di qa g_ _ p _ reg MEM ER mem Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA g_ _ p _ inst@CP _p _ + Signed MEM mem Q MUX_ BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ALU_OP ALU_Signed ALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU g DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA @ REGS_SRCD er_regd reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_D D QB W* REGS_W R/W MUX_ALU_SRCB 16 0 AS reg_DI_EX.rt_read RT [20..16] RD [15..11] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst STMUX_REG_DST 31 7
  • 27. II 3 1 Aléas de données (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (2) di ctrl di J j di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch Unité de contrôle reg_EI_DI.flush F [5..0] B [20..16] OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch DI/EX EX/MEMmxER reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PPC_SRC IMMD [15..0] reg EI DI.pc next di_imm_ext reg_EX_MEM.imm_ext reg EX MEM.pc next Branch REGS_W reg_DI_EX.imm_ext reg DI EX.pc next1 ei pc next + EI/DI MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] g_ _ p _ di qa eg_ _ pc_ e t MEM ER Q reg_EX_MEM.pc_next reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA eg_ _ pc_ e t inst@CP e _pc_ e t + Signed MEM mem Q MUX_ BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed ALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ _REGS_SRCD er_regd RS [25..21] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_D reg_DI_EX.rs ex_mem_data D QB W* REGS_W R/W* MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_dat RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst DST reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt reg_DI_EX.code_op MUX_REG_DST 31 Unité a 12 reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rs d'envoi
  • 28. II 3 1 Aléas de données (4) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (4) di_ctrl_d di_ctrl_di. mem_br Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_DI_EX.mem_ctrl.DC_AS reg_DI_EX.er_ctrl.Regs_W reg_DI_EX.mem_ctrl.DC_RW ex_halt ex_reg_dst reg_EI_DI.inst(RS'range) reg_EI_DI.inst(RT'range) OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch di.J_j .J_jal anch DI/EX reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC [ ] B [20..16] IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext REGS_W reg_DI_EX.imm_ext EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_pc_branch ex_halt mem_branch ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SR reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + M BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read ex_ALU_A ex ALU XB ex_ALU_XA ALU_OP ALU_Signed RCAALU_SRCB @A @B QA @W Banc de Registres Inst Cache inst@CP A S ALU Signed DS Q D Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMU @ MUX_REGS_SRCD er_regd RS [25..21] di_qb MEM ER l S reg_EX_MEM.rt_read reg_DI_EX.rt_read ex_ALU_B ex_ALU_XB REG reg DI EX rs ex_mem_data D QB W* REGS_W B D R/W* MUX_ALU_SRCB UX_ALU_XB 16 0 AS MUX_mem_d [ ] RT [20..16] RD [15..11] OP [31..26] reg_MEM_ER.ual_S reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst G_DST reg_DI_EX.rs reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt reg_DI_EX.code_op MUX_REG_DST 31 Unité data 14 reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rs Unité d'envoi
  • 29. II 3 1 Aléas de données (5) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (5) di_ctrl_di di_ctrl_di.J_ mem_bran Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_EX_MEM.mem_ctrl.DC_AS reg_EX_MEM.er_ctrl.Regs_W reg_DI_EX.rt reg_EX_MEM.mem_ctrl.DC_RW reg_EX_MEM.reg_dst reg_DI_EX.rs mem_halt P.V OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch .J_j _jal nch DI/EX EX/MEM reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC B [20..16] IMMD [15..0] EI DI t di_imm_ext reg_EX_MEM.imm_ext Branch REGS_W reg_DI_EX.imm_ext 1 i t + EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex.flush ex_pc_branch RS [25 21] ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next di reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + Signed MUX BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed AALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ X_REGS_SRCD er_regd RS [25..21] RT [20 16] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_DST reg_DI_EX.rs ex_mem_data D QB W* REGS_W R/W MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_data RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_EX_MEM.code_op reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst T reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_W reg_EX_MEM.reg_dst reg_DI_EX.rt reg_DI_EX.rs reg_DI_EX.code_op MUX_REG_DST 31 Unité d'envoi 15 reg_MEM_ER.reg_dstmem_halt d envoi
  • 30. II 3 2 Aléas de branchement (2) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.2 Aléas de branchement (2)di_ctrl_d di_ctrl_di.J mem_bra Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_EX_MEM.mem_ctrl.DC_AS reg_EX_MEM.er_ctrl.Regs_W reg_DI_EX.rt reg_EX_MEM.mem_ctrl.DC_RW reg_EX_MEM.reg_dst reg_DI_EX.rs mem_halt P.V OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch di.J_j J_jal anch DI/EX reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr PC_SRC B [20..16] di_flush ex_flush mem_flush IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext Branch mem.flush REGS_W reg_DI_EX.imm_ext EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_flush ex.flush ex_pc_branch mem_flush ex_flush mem_flush di_flush ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRCA reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + Signed MUX BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di_qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read reg_DI_EX.rt_read ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed AALU_SRCB @A @B QA @W D QB Banc de Registres Inst Cache A B S ALU Signed DS Q D R/W* Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX_A @ X_REGS_SRCD er_regd RS [25..21] reg_MEM_ER.ual_S reg_EX_MEM.rt_read ex_ALU_B REG_DS reg_DI_EX.rs ex_mem_data D QB W* REGS_W B R/W* MUX_ALU_SRCB ALU_XB 16 0 AS MUX_mem_data RT [20..16] RD [15..11] OP [31..26] reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_EX_MEM.code_op reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst ST reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_W reg_EX_MEM.reg_dst reg_DI_EX.rt reg_DI_EX.rs reg_DI_EX.code_op MUX_REG_DST 31 Unité d'envoi 17 g_ _ g_ reg_MEM_ER.reg_dstmem_halt d envoi
  • 31. II 3 2 Aléas de branchement (3) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.2 Aléas de branchement (3) di_ctrl_di di_ctrl_di.J_ mem_bran Unité de contrôle Unité de détection d'aléas reg_EI_DI.flush F [5..0] reg_DI_EX.mem_ctrl.DC_AS reg_DI_EX.er_ctrl.Regs_W reg_DI_EX.mem_ctrl.DC_RW ex_halt ex_reg_dst reg_EI_DI.inst(RS'range) reg_EI_DI.inst(RT'range) OP [31..26] di_ctrl_di.J_j di_ctrl_di.J_jal mem_branch .J_j _jal nch DI/EX reg_DI_EX.ex_ctrl.J_jr reg_DI_EX.ex_ctrl.J_jalr di_flush ex_flush mem_flush PC_SRC B [20..16] IMMD [15..0] di_imm_ext reg_EX_MEM.imm_ext Branch mem.flush REGS_W reg_DI_EX.imm_ext EI/DI EX/MEM MEM/ER reg_DI_EX.rs_read (PC'range) reg_EI_DI.inst(JADR'range) reg_PC(PC'range) +'1' mxER mxER mxER mxMEM mxMEM mxEX MUX_PC_SRC di_ctrl_di.signed_ext PC_SRC ex_flush ex.flush ex_pc_branch mem_flush ex_flush mem_flush di_flush ex_halt mem_branch ValDec [10..6] JADR [25..0] reg_EI_DI.pc_next reg_EX_MEM.pc_next reg_EX_MEM.pc_next Branch reg_MEM_ER.pc_next REGS_SRCD reg_DI_EX.val_dec NVZC ALU_SRC reg_DI_EX.pc_next inst@CP 1 ei_pc_next + + MU BRANCH NVZC B_TYPE RS [25..21] RT [20..16] di_qa di qb reg_EX_MEM.ual_S reg_MEM_ER.mem_Qreg_DI_EX.rs_read DI EX t d ex_ALU_A ex_ALU_XB ex_ALU_XA ALU_OP ALU_Signed CAALU_SRCB @A @B QA @W Banc de Registres Inst Cache inst@CP A B S ALU Signed DS Q D Data Cache MEM_mem_Q MUX_ALU_SRCA MUX_ALU_XAMUX @ UX_REGS_SRCD er_regd RS [25..21] di_qb reg MEM ER.ual S reg_EX_MEM.rt_read reg_DI_EX.rt_read ex_ALU_B REG_ reg_DI_EX.rs ex_mem_data D QB W* REGS_W B R/W* MUX_ALU_SRCB X_ALU_XB 16 0 AS MUX_mem_da RT [20..16] RD [15..11] OP [31..26] reg_MEM_ER.ual_S reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rt reg_DI_EX.rd ex_reg_dst _DST reg_EX_MEM.er_ctrl.regs_W reg_MEM_ER.er_ctrl.regs_Wreg_DI_EX.rt reg_DI_EX.code_op MUX_REG_DST 31 Unité ata reg_EX_MEM.reg_dst reg_MEM_ER.reg_dst reg_DI_EX.rs d'envoi
  • 32. II 3 1 Aléas de données (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (1) 1. Aléas de données à l'étage EX Temps (en cycles d'horloge) Reg A S UAL MI MD Reg Ordre d'exécution des instructions ADDI R1 R0 1 C1 C2 C3 C4 C5 Ecriture dans R1 C6 Résultat à écrire dans R1 C7 Reg B SMI MD Reg Reg A S UAL MI MD Reg ADDI R1,R0,1 ADD R2,R1,R0 Lecture de R1 2 Aléas de données à l'étage MEM g B g 2. Aléas de données à l étage MEM Temps (en cycles d'horloge) Ordre d'exécution C1 C2 C3 C4 C5 C6 C7 Ecriture dans R1 Reg A B S UAL MI Reg d exécution des instructions LW R1,4(R0) MD Résultat à écrire dans R1 Lecture de R1 Reg A B S UAL MI MD RegADDI R2,R0,1 Lecture de R1 Reg A B S UAL MI MD RegADD R2,R1,R0 11
  • 33. II 3 1 Aléas de données (3) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.1 Aléas de données (3) Temps (en cycles d'horloge) C1 C2 C3 C4 C5 3. Aléas de données lorsqu'une instruction tente de lire un registre à la suite d'une instruction de chargement écrivant dans le même registre C6 C7 C8 (a) Reg A B S UAL MI Reg Ordre d'exécution des instructions LW R1,4(R0) C1 C2 C3 C4 C5 MD Résultat à écrire dans R1 Ecriture dans R1 C6 C7 C8 B Reg A B S UAL MI MD RegADD R2,R1,R0 Lecture de R1 Reg Lecture de R1 S d ADDI R2,R0,1 Reg A B S UAL MI MD RegMI Suspendre (b) Temps (en cycles d'horloge) C1 C2 C3 C4 C5 C6 C7 Reg A B S UAL MI Reg Ordre d'exécution des instructions LW R1,4(R0) C1 C2 C3 C4 C5 MD Résultat à écrire dans R1 Ecriture dans R1 C6 C7 B Reg A B S UAL MI MD RegADD R2,R1,R0 Lecture de R1 ADDI R2,R0,1 Reg A B S UAL MI MD Reg 13
  • 34. II 3 2 Aléas de branchement (1) I. Introduction au sujet de projet II. Conception de processeur RISC III. Réalisation et simulation IV. Synthèse V. Conclusion II.3.2 Aléas de branchement (1) Temps (en cycles d'horloge) Ordre d'exécution des instructions C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 Branchement Reg A B S UAL MI Reg Reg A S UAL MI MD Reg des instructions 40 BEQ R1,R3,28 44 ADD R12,R4,R5 MD effectué B Reg A B S UAL MI MD Reg 48 OR R13,R6,R4 A Reg A B S UAL MI MD Reg Reg A B S UAL MI MD Reg 52 ADD R14,R4,R4 72 LW R2,50(R7) Branchement effectué Temps (en cycles d'horloge) Ordre d'exécution des instructions C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 Reg A B S UAL MI Reg MI 40 BEQ R1,R3,28 MD Reg A B S UAL MI RegMD Résultat à écrire dans R1 Ecriture dans R1 44 LW R1,4(R0) 48 ADD R2,R1,R0 Reg A B S UAL MI MD Reg R A UAL R Lecture de R1 Reg Lecture de R1 Suspendre 52 ADDI R2,R0,1 Reg A B S UAL MI MD Reg72 LW R2,50(R7) Reg B S UAL MI MD RegMI 52 ADDI R2,R0,1 16