Ciclo di fetch-execute

Da Wikipedia, l'enciclopedia libera.

In informatica, l'espressione ciclo di fetch-execute si riferisce alla dinamica generale di funzionamento dei processori dei computer. In termini generali, un processore esegue iterativamente due operazioni: preleva (fetch) una istruzione dalla memoria, e la esegue (execute).

Funzionamento[modifica | modifica sorgente]

Il registro chiamato Program Counter (PC) contiene l'indirizzo di memoria della prossima istruzione da eseguire. Per eseguire la "fetch" (caricamento) dell'istruzione, il processore copia tale indirizzo nel registro degli indirizzi e preleva l'istruzione dal bus dati del computer. L'istruzione prelevata viene depositata in un altro registro detto Instruction Register (IR).

L'istruzione caricata viene quindi codificata ed eseguita. L'esecuzione comporta l'invio di segnali di controllo a un certo numero di unità interne del processore, a seconda del significato dell'istruzione da eseguire. Alla fine del processo il Program Counter (PC) viene cambiato per puntare all'istruzione successiva (se presente).

Funzionamento in dettaglio[modifica | modifica sorgente]

1. Caricamento dell'istruzione dalla memoria principale[modifica | modifica sorgente]

La CPU carica l'istruzione dalla memoria principale via bus dati nella memory data register (MDR). Il valore dalla MDR è poi depositato nell'Instruction Register (IR), un circuito che trattiene l'istruzione temporaneamente così che possa essere decodificata ed eseguita.

2. Caricamento dei dati dalla memoria principale[modifica | modifica sorgente]

Legge l'indirizzo dalla memoria principale se l'istruzione ha un indirizzo indiretto. Dopodiché carica i dati richiesti dalla memoria principale per poi essere processati e depositati all'interno dei registri.

3. Esecuzione dell'istruzione[modifica | modifica sorgente]

Dall'Instruction Register, l'istruzione è decodificata dall'Unità di Controllo (Control Unit). Se poi le informazioni della decodifica passano come una sequenza di segnali di controllo pertinenti alle funzioni della CPU per eseguire l'azione richiesta dall'istuzione come per esempio leggendo valori dal registro, essi passano all'ALU che li aggiunge insieme e scrive il risultato di nuovo al registro.

Esempio in pseudocodice[modifica | modifica sorgente]

I dettagli del funzionamento del ciclo dipendono, in genere, dal particolare processore e quindi dal particolare linguaggio macchina. Il seguente estratto di pseudocodice rappresenta, a titolo di esempio, un possibile algoritmo di funzionamento del ciclo di fetch-execute su un particolare computer. Nel testo si adotteranno le seguenti convenzioni:

   switch (CIR.Codice Operativo – primi 4 bit)      
{/*esecuzioneindirizzo in RI
   (passi come nel fetch)
   f.Registro B = DR      
   g.Registro B = sommatore ALU  (A, B)
   h.AR => bus indirizzi => memoria centrale
   i.DR = registro B      
   j.DR => bus dati =>memoria centrale      
   k.comando S => bus controlli => memoria centrale
   l.esecuzione S
   m.OK esecuzione => bus controlli => CPU
 case 1001(BR): PC = CIR.operando      
 .........
 }/*switch*/
}/*while*/

Bibliografia[modifica | modifica sorgente]

Andrew S. Tanenbaum, Architettura dei calcolatori. Un approccio strutturale., Amsterdam, Pearson, 2006. ISBN 8871922719

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica