Exemple chargement dune instruction 3 0x00 0xXX 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ 0xXX Imaginons que linstruction que nous venons de charger est ISTORE 0x36
Exemple Istore 3 0x01 0x36 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ 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
Exemple Istore (H=LV; Goto Istore2) 3 0x01 0x36 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (H=LV; Goto Istore2) 3 0x01 0x36 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (H=LV; Goto Istore2) En résumé nous venons de faire les opérations suivantes –H=LV; Goto Istore2 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Istore x05
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2
Exemple Istore 3 0x01 0x05 0x00 0x04 0x00 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ 0x36 MBRU+H Arrivée de la donnée. (Lecture déclenché dans le Main1) Ladresse de la variable est calculée.
Exemple Istore (MAR=MBRU+H; Goto Istore3) 3 0x01 0x05 0x00 0x04 0x00 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (MAR=MBRU+H; Goto Istore3) 3 0x01 0x05 0x00 0x04 0x00 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore En résumé nous venons de faire les opérations suivantes –MAR=MBRU+H; Goto Istore3 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Istore x03
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2 F 0 F 1 ENA ENB MAR B=0x03 ISTORE2 ISTORE3
Exemple Istore 3 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ On va donc envoyer lélément de tête de pile dans la mémoire
Exemple Istore (MDR=TOS;Wr; Goto Istore4) 3 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (MDR=TOS;Wr; Goto Istore4) 3 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (MDR=TOS;Wr; Goto Istore4) En résumé nous venons de faire les opérations suivantes –MDR=TOS;Wr; Goto Istore4 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Istore x07
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2 F 0 F 1 ENA ENB MAR B=0x03 ISTORE2 ISTORE3 F 1 ENB MDR WRITE B=0x07 ISTORE4 ISTORE3
Exemple Istore 3 0x01 0x04 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ SP-1 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.
Exemple Istore (MDR=TOS;Wr; Goto Istore4) 3 0x01 0x04 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (MDR=TOS;Wr; Goto Istore4) 3 0x01 0x04 0x01 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore En résumé nous venons de faire les opérations suivantes –SP=MAR=SP-1;Rd; Goto Istore5 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Istore x04
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2 F 0 F 1 ENA ENB MAR B=0x03 ISTORE2 ISTORE3 F 1 ENB MDR WRITE B=0x07 ISTORE4 ISTORE3 F 0 F 1 ENB INVA INC SP MAR READ B=0x04 ISTORE5 ISTORE4
Exemple Istore 3 0x04 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ PC+1 On incrémente le compteur de programme car linstruction ISTORE est codée sur 2 bytes
Exemple Istore (PC=PC+1;fetch; Goto Istore6) 3 0x04 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore (PC=PC+1;fetch; Goto Istore6) 3 0x04 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore En résumé nous venons de faire les opérations suivantes –PC=PC+1;fetch; Goto Istore6 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Istore x01
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2 F 0 F 1 ENA ENB MAR B=0x03 ISTORE2 ISTORE3 F 1 ENB MDR WRITE B=0x07 ISTORE4 ISTORE3 F 0 F 1 ENB INVA INC SP MAR READ B=0x04 ISTORE5 ISTORE4 F 1 ENB TOS FETCH B=0x00 ISTORE6 ISTORE5
Exemple Istore 3 0x04 0x07 0x02 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ On met a jour la tête de la pile qui vient darriver en mémoire Arrivée de la donnée. (Lecture déclenché dans Istore4)
Exemple Istore (TOS=MDR; Goto Main1) 3 0x01 0x07 0x02 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ 0x36
Exemple Istore (TOS=MDR; Goto Main1) 3 0x01 0x07 0x02 0x01 0x04 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ
Exemple Istore En résumé nous venons de faire les opérations suivantes –TOS=MDR; Goto Main1 Next_Adress 8 bits JAM 3 bits ALU 8 bits Bus C 9 bits Mémoire 3 bits Bus B 4 bits JMPCJMPC JAMNJAMN JAMZJAMZ SLL8SLL8 SRA1SRA1 F0F0 F1F1 ENAENA ENBENB INVAINVA INCINC HOPSOPS TOSTOS CPPCPP LVLV SPSP PCPC MDRMDR MARMAR WRITEWRITE READREAD FETCHFETCH Main x00
Construisons le contrôleur JMPC F 0 F 1 ENB INC FETCH B=0x01 Main1 ISTORE F 1 ENB H B=0x05 ISTORE1 ISTORE2 F 0 F 1 ENA ENB MAR B=0x03 ISTORE2 ISTORE3 F 1 ENB MDR WRITE B=0x07 ISTORE4 ISTORE3 F 0 F 1 ENB INVA INC SP MAR READ B=0x04 ISTORE5 ISTORE4 F 1 ENB TOS FETCH B=0x00 ISTORE6 ISTORE5 F 1 ENB TOS B=0x00 ISTORE6 Main1 ISTORE4 ISTORE5
Résultat 3 0x04 0x07 0x02 0xXX 0x04 0x00 0x07 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch) N Z MIR JMPC JAMN/JAMZ Arrivée de la prochaine instruction.