Ciclo di fetch-execute

Da Wikipedia, l'enciclopedia libera.

In informatica ed elettronica, l'espressione ciclo di fetch-execute si riferisce alla dinamica generale di funzionamento dei processori dei computer. In termini generali, un processore esegue iterativamente tre operazioni: preleva (fetch) un'istruzione dalla memoria primaria, in seguito avviene la decodifica (decode) con cui interpreta l'istruzione, infine la esegue (execute) combinandola coi dati relativi all'istruzione stessa. In questo modo il processore esegue sequenzialmente istruzioni che danno vita a thread e processi, sotto la supervisione del sistema operativo attraverso lo scheduler.

Funzionamento[modifica | modifica wikitesto]

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 wikitesto]

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

Per prima cosa il Sistema Operativo, dopo aver ricevuto comando dall'esterno (come un click su un'icona, o Enter, ecc.), avvia l'eseguibile che inserisce all'interno del PC (Program Counter) l'indirizzo associato alla prima cella di memoria contenente l'istruzione desiderata per l'esecuzione delle fasi successive del programma. La CPU carica l'istruzione dalla memoria principale mediante Data Bus 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 wikitesto]

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 wikitesto]

Dall'Instruction Register, l'istruzione è decodificata dall'Unità di Controllo (Control Unit). Eventuali indirizzi di memoria in cui leggere o scrivere dati sono contenuti nel MEM reg., un ulteriore registro oltre l'Instruction Register. A questo punto, se l'istruzione decodificata è tale da portare i dati memorizzati precedentemente in IR all'interno dei registri ALU, i dati possono essere manipolati da quest'ultima: in generale il dato nuovo viene scritto mediante "scrittura distruttiva" in uno dei registri stessi dell'ALU, il che comporta la perdita eventuale di dati precedentemente memorizzati nello stesso registro. Nel caso invece l'istruzione non prevedesse la manipolazione, ma solo la scrittura di una cella o la sua lettura, l'ALU non viene interpellata. Se l'azione è terminata con successo, il Program Counter aumenta di 1 l'indirizzo contenuto in memoria (ad esempio da 1000 passa a 1001), per indicare che la prossima istruzione sarà contenuta all'interno di questa nuova cella di memoria. Il ciclo può allora ricominciare.

Esempio in pseudocodice[modifica | modifica wikitesto]

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 un nome 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 wikitesto]

Andrew S. Tanenbaum, Architettura dei calcolatori. Un approccio strutturale., Amsterdam, Pearson, 2006, ISBN 88-7192-271-9.

Voci correlate[modifica | modifica wikitesto]

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