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.

Ciclo non incrementale[modifica | modifica wikitesto]

Se nella fase di [FDE = Fetch,Decode & Execute ] il puntamento di ogni fase di lettura e scrittura non è incrementale,il PC non avrà un puntamento del tipo : (PC = PC + 1 ),ma nel caso di un tipo LOOP,ci sarà un tipo "JUMP",ovvero non andrà all'istruzione successiva ma farà un "JUMP"(salto) all'inizio del ciclo di Fetch,fino ad arrivare alla fine del nLoop richiesto dall'esecuzione del programma.

Fase R/W[modifica | modifica wikitesto]

Nelle tre fasi del FDE, è noto sapere i passaggi che vengono eseguiti per la lettura nel MAR e la scrittura nel MDR:

Lettura

- Abilitare il bit CS [Chip select] (Se CS = 1 verrà scelto quello, mentre tutti gli altri saranno a 0 )

- Abilitare OE [Output Enable]

- R/W = 0 [0 sta per read,1 per Write]

--Scrittura abilitata --

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