Ciclo macchina

Schema architetturale a blocchi di un generico processore

In informatica ed elettronica, il ciclo macchina o ciclo fetch-decode-execute è un algoritmo che descrive in via generale e semplificata il funzionamento dei processori. Viene utilizzato in modo particolare come riferimento iniziale nella progettazione di CPU.

In termini generali un processore è una macchina a stati finiti che esegue a ciclo continuo la stessa sequenza di tre operazioni:

  • recupero di un'istruzione (instruction fetch) dalla memoria programma;
  • decodifica (decode) ovvero "interpretazione" dell'istruzione ed attivazione delle funzioni associate;
  • esecuzione (execute) dell'istruzione e memorizzazione del risultato.

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


Descrizione

Diagramma di flusso del ciclo macchina

Fase 1: Recupero dell'istruzione

All'inizio di ogni ciclo la CPU carica l'istruzione da eseguire facendo riferimento al Program Counter (PC), ovvero il registro che tiene traccia dell'istruzione da eseguire. Il codice dell'istruzione viene così trasferito dalla memoria programma mediante Data Bus nel 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.

Fase 2: Decodifica

La CPU 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. 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 register, un ulteriore registro oltre l'Instruction Register. Al termine della fase di Decode, 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.

Fase 3: Esecuzione

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 ciclo può allora ricominciare.

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni

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