320 likes | 468 Views
Exemple chargement d’une instruction. Memory control signals (rd,wr,fetch). 3. 4 to 16 Decoder. 4. MPC. 9. 0x00. 0xXX. 8. 0xXX. 8. Imaginons que l’instruction que nous venons de charger est ISTORE 0x36. 0x05. 0x00. JMPC. MIR. C. Addr. J. M. Alu. B. 0x04. JAMN/JAMZ. High
E N D
Exemple chargement d’une instruction Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC 9 0x00 0xXX 8 0xXX 8 Imaginons que l’instruction que nous venons de charger est ISTORE 0x36 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore Memory control signals (rd,wr,fetch) 3 Pour sauvegarder une variable en mémoire, il faut avant tout calculer son adresse. Cette étape prépare le calcul: Adr var =LV +num de var 4 to 16 Decoder 4 MPC 9 0x01 8 0x36 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (H=LV; Goto Istore2) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC 9 0x01 8 0x36 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (H=LV; Goto Istore2) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC 9 0x01 8 0x36 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (H=LV; Goto Istore2) • En résumé nous venons de faire les opérations suivantes • H=LV; Goto Istore2
ISTORE1 F1 ENB H B=0x05 ISTORE2 Construisons le contrôleur Main1 JMPC F0 F1 ENB INC FETCH B=0x01 ISTORE
Exemple Istore Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC L’adresse de la variable est calculée. 9 0x01 0x36 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B Arrivée de la donnée.(Lecture déclenché dans le Main1) 0x04 JAMN/JAMZ 0x00 High Bit B Bus 2 N MBRU+H 6 Z C Bus 2
Exemple Istore (MAR=MBRU+H; Goto Istore3) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ 0x00 High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (MAR=MBRU+H; Goto Istore3) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 4 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ 0x00 High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore • En résumé nous venons de faire les opérations suivantes • MAR=MBRU+H; Goto Istore3
ISTORE2 F0 F1 ENA ENB MAR B=0x03 ISTORE3 Construisons le contrôleur ISTORE1 Main1 F1 ENB H B=0x05 JMPC F0 F1 ENB INC FETCH B=0x01 ISTORE2 ISTORE
Exemple Istore Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 On va donc envoyer l’élément de tête de pile dans la mémoire MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (MDR=TOS;Wr; Goto Istore4) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (MDR=TOS;Wr; Goto Istore4) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (MDR=TOS;Wr; Goto Istore4) • En résumé nous venons de faire les opérations suivantes • MDR=TOS;Wr; Goto Istore4
ISTORE3 F1 ENB MDR WRITE B=0x07 ISTORE4 Construisons le contrôleur ISTORE1 ISTORE2 Main1 F1 ENB H B=0x05 F0 F1 ENA ENB MAR B=0x03 JMPC F0 F1 ENB INC FETCH B=0x01 ISTORE2 ISTORE3 ISTORE
Exemple Istore Il faut mettre les registres gérant la pile à jour.On commence par décrémenter le haut de la pile et on va chercher dans la mémoire le nouvelle élément qui sera la tête de la pile. Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 0x04 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N SP-1 6 Z C Bus 2
Exemple Istore (MDR=TOS;Wr; Goto Istore4) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 0x04 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (MDR=TOS;Wr; Goto Istore4) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 0x04 MPC 9 0x01 8 0x01 8 0x05 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore • En résumé nous venons de faire les opérations suivantes • SP=MAR=SP-1;Rd; Goto Istore5
ISTORE4 F0 F1 ENB INVA INC SP MAR READ B=0x04 ISTORE5 Construisons le contrôleur Main1 ISTORE1 ISTORE2 ISTORE3 JMPC F0 F1 ENB INC FETCH B=0x01 F1 ENB H B=0x05 F0 F1 ENA ENB MAR B=0x03 F1 ENB MDR WRITE B=0x07 ISTORE ISTORE2 ISTORE3 ISTORE4
Exemple Istore Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x04 4 0x04 MPC 9 0x01 8 0x01 8 On incrémente le compteur de programme car l’instruction ISTORE est codée sur 2 bytes 0x04 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N PC+1 6 Z C Bus 2
Exemple Istore (PC=PC+1;fetch; Goto Istore6) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x04 4 0x04 MPC 9 0x01 8 0x01 8 0x04 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (PC=PC+1;fetch; Goto Istore6) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x04 4 0x04 MPC 9 0x01 8 0x01 8 0x04 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore • En résumé nous venons de faire les opérations suivantes • PC=PC+1;fetch; Goto Istore6
ISTORE5 F1 ENB TOS FETCH B=0x00 ISTORE6 Construisons le contrôleur ISTORE4 Main1 ISTORE4 JMPC F0 F1 ENB INC FETCH B=0x01 F0 F1 ENB INVA INC SP MAR READ B=0x04 ISTORE2 ISTORE3 ISTORE1 F0 F1 ENA ENB MAR B=0x03 F1 ENB MDR WRITE B=0x07 F1 ENB H B=0x05 ISTORE ISTORE2 ISTORE3 ISTORE4 ISTORE5
Exemple Istore Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x04 4 0x07 MPC Arrivée de la donnée.(Lecture déclenché dans Istore4) 9 0x02 8 0x01 8 0x04 0x00 JMPC MIR C Addr J M Alu B On met a jour la tête de la pile qui vient d’arriver en mémoire 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (TOS=MDR; Goto Main1) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 0x07 MPC 9 0x02 0x36 8 0x01 8 0x04 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore (TOS=MDR; Goto Main1) Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x01 4 0x07 MPC 9 0x02 8 0x01 8 0x04 0x00 JMPC MIR C Addr J M Alu B 0x04 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2
Exemple Istore • En résumé nous venons de faire les opérations suivantes • TOS=MDR; Goto Main1
ISTORE6 F1 ENB TOS B=0x00 Construisons le contrôleur Main1 ISTORE5 ISTORE4 JMPC F0 F1 ENB INC FETCH B=0x01 F1 ENB TOS FETCH B=0x00 F0 F1 ENB INVA INC SP MAR READ B=0x04 ISTORE2 ISTORE3 ISTORE1 F0 F1 ENA ENB MAR B=0x03 F1 ENB MDR WRITE B=0x07 F1 ENB H B=0x05 ISTORE6 ISTORE ISTORE2 ISTORE3 ISTORE4 ISTORE5 Main1 ISTORE5 ISTORE4
Résultat Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder 0x04 4 0x07 MPC 9 0x02 8 0xXX 8 0x04 0x00 JMPC MIR C Addr J M Alu B Arrivée de la prochaine instruction. 0x07 JAMN/JAMZ High Bit B Bus 2 N 6 Z C Bus 2