Ciclo macchina
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
modificaFase 1: Recupero dell'istruzione
modificaAll'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
modificaLa 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
modificaA questo punto, se l'istruzione decodificata è tale da portare i dati memorizzati precedentemente nell'Instruction Register all'interno dei registri della ALU, i dati possono essere manipolati da quest'ultima: in generale il dato nuovo viene scritto mediante "scrittura distruttiva" in uno dei registri stessi della 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
modifica- David Andrew Patterson e John LeRoy Hennessy, Struttura e progetto dei calcolatori, a cura di Alberto Borghese, 5ª ed., Bologna, Zanichelli, 2015, ISBN 978-88-08-35202-6.
- Andrew Stuart Tanenbaum, Architettura dei calcolatori. Un approccio strutturale, Amsterdam, Pearson, 2006, ISBN 88-7192-271-9.
Voci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file sul ciclo di fetch-execute
Collegamenti esterni
modifica- (EN) Tom Scott, The Fetch-Execute Cycle: What's Your Computer Actually Doing?, su YouTube, 19 luglio 2019. URL consultato il 22 novembre 2023.
- (EN) Denis Howe, fetch-execute cycle, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL