ETUDE ET REALISATION D’UN 
MICROPROCESSEURS RISC
Vicheka PHOR
Master 2 Professionnel
INFORMATIQUE
CAMSI
Conception d’Archi...
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 Trav...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
II 1 Chemin de données pipeline (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation ...
II 1 Chemin de données pipeline (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation ...
II 2 Unité de contrôle (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simula...
II 2 Unité de contrôle (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simula...
II 2 Unité de contrôle (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simula...
II 3 Aléas dans les pipelines
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et sim...
II 3 1 Aléas de données (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (4)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (5)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 2 Aléas de branchement (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et s...
II 3 2 Aléas de branchement (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et s...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simulation IV. Synthèse V. Conclu...
REFERENCES BIBLIOGRAPHIQUES
[1] Computer Organization & Design. David A. Patterson and John L. Hennessy, ISBN 1-[ ] p g g ...
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 ...
II 2 Unité de contrôle (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simula...
II 3 1 Aléas de données (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (4)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (5)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 2 Aléas de branchement (2)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et s...
II 3 2 Aléas de branchement (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et s...
II 3 1 Aléas de données (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 1 Aléas de données (3)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et simul...
II 3 2 Aléas de branchement (1)
I. Introduction au sujet de projet II. Conception de processeur RISC
III. Réalisation et s...
Prochain SlideShare
Chargement dans…5
×

ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC

419 vues

Publié le

Publié dans : Périphériques & matériel
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
419
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

ETUDE ET REALISATION D’UN MICROPROCESSEURS RISC

  1. 1. 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
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 24. Merci pour votre attention.
  25. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×