Salta al contenuto
Note per Studenti Ciclo fetch-execute

Ciclo fetch-execute

In questa pagina 5

Registri coinvolti

Registro Contenuto
PC (Program Counter) indirizzo della prossima istruzione
IR (Instruction Register) istruzione in esecuzione
MAR (Memory Address Register) indirizzo da mandare alla memoria sul bus indirizzi
MBR (Memory Buffer Register, o MDR) dato letto dalla memoria o da scrivere
AC (accumulatore) operando e risultato nelle macchine ad accumulatore

Le due fasi

  1. Fetch (prelievo): MAR←PC\text{MAR} \leftarrow \text{PC}; la memoria legge; MBR←M[MAR]\text{MBR} \leftarrow M[\text{MAR}]; IR←MBR\text{IR} \leftarrow \text{MBR}; PC←PC+\text{PC} \leftarrow \text{PC} + lunghezza dell'istruzione (in ARM e MIPS: +4+4 byte).
  2. Execute (esecuzione): l'unità di controllo decodifica l'IR e svolge l'azione.

Le azioni possibili sono di quattro tipi:

Tipo Esempio
processore ↔ memoria caricare un dato dalla memoria in un registro
processore ↔ I/O leggere da una periferica
elaborazione dati somma, AND, confronto nell'ALU
controllo salto: scrive un nuovo valore nel PC

Un'istruzione può combinarne più d'uno.

Diagramma degli stati

Un ciclo completo, nel caso generale, attraversa:

  1. calcolo dell'indirizzo dell'istruzione;
  2. prelievo dell'istruzione;
  3. decodifica dell'operazione;
  4. calcolo dell'indirizzo dell'operando (se l'operando è in memoria o in I/O);
  5. prelievo dell'operando (eventualmente ripetuto per più operandi);
  6. esecuzione dell'operazione;
  7. calcolo dell'indirizzo e scrittura del risultato;
  8. controllo delle interruzioni: se c'è una richiesta pendente si salva lo stato e si salta alla routine di servizio (vedi InterruptClassi di interruzioni; I/O guidato da interrupt; sequenza hardware e software di gestione con salvataggio del contesto sullo stack; identificazione della sorgente (linee multiple, polling, daisy chain, vettore); priorità e interruzioni annidate; eccezioni e modi in ARM.Interrupt →), altrimenti si torna al punto 1.

Quando l'operando è dato con indirizzamento indiretto (vedi Formato delle istruzioni e modalità di indirizzamentoModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento →) si aggiunge un ciclo di prelievo dell'indirizzo effettivo.

Esempio su una macchina ad accumulatore

Istruzioni di 16 bit (4 bit di codice operativo, 12 di indirizzo), codici 1 = carica AC dalla memoria, 5 = somma la memoria ad AC, 2 = salva AC in memoria. Programma che somma le celle 940 e 941 e mette il risultato in 941 (indirizzi in esadecimale):

Indirizzo Contenuto Significato
300 1940 AC ← M[940]
301 5941 AC ← AC + M[941]
302 2941 M[941] ← AC
940 0003 dato
941 0002 dato

Evoluzione: PC = 300 → IR = 1940, AC = 3, PC = 301 → IR = 5941, AC = 3 + 2 = 5, PC = 302 → IR = 2941, M[941] = 5, PC = 303. Tre cicli di istruzione, sei accessi alla memoria (tre prelievi di istruzioni e tre accessi ai dati).

Errori tipici

  • Incrementare il PC solo alla fine dell'esecuzione: si incrementa già nel fetch, per questo in un salto relativo l'offset si somma al PC già avanzato.
  • Dimenticare che il controllo delle interruzioni avviene tra due istruzioni, non durante.

Versione ripasso

Registri: PC (prossima istruzione), IR, MAR (indirizzo verso la memoria), MBR o MDR (dato), AC.

Fasi

  1. Fetch: MAR←PC\text{MAR} \leftarrow \text{PC}; MBR←M[MAR]\text{MBR} \leftarrow M[\text{MAR}]; IR←MBR\text{IR} \leftarrow \text{MBR}; PC←PC+4\text{PC} \leftarrow \text{PC} + 4 (ARM, MIPS).
  2. Execute: decodifica dell'IR; quattro tipi di azione: processore-memoria, processore-I/O, elaborazione dati, controllo (salto: scrive il PC).

Passi completi: calcolo e prelievo dell'istruzione, decodifica, calcolo e prelievo dell'operando, esecuzione, scrittura; poi controllo delle interruzioni: se c'è una richiesta si salva lo stato e si salta alla routine (InterruptClassi di interruzioni; I/O guidato da interrupt; sequenza hardware e software di gestione con salvataggio del contesto sullo stack; identificazione della sorgente (linee multiple, polling, daisy chain, vettore); priorità e interruzioni annidate; eccezioni e modi in ARM.Interrupt →). L'indirizzamento indiretto (Formato delle istruzioni e modalità di indirizzamentoModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento →) aggiunge un prelievo.

Esempio ad accumulatore

Istruzioni da 16 bit (4 di codice operativo, 12 di indirizzo): 1 carica AC, 5 somma, 2 salva. 300 1940, 301 5941, 302 2941; M[940] = 3, M[941] = 2.

  1. PC = 300: AC = 3.
  2. PC = 301: AC = 3 + 2 = 5.
  3. PC = 302: M[941] = 5, PC = 303.

Tre cicli, sei accessi alla memoria.

Errori tipici: il PC si incrementa già nel fetch (un salto relativo parte dal PC avanzato); le interruzioni si controllano tra due istruzioni.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata