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
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
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