Ciclo di istruzioni nella CPU: come funzionano Fetch, Decode ed Execute

Ciclo di istruzioni nella CPU
Che CPU non fa altro che eseguire le istruzioni di un programma che si trova in memoria. Ma lo sapevi che seguono tutte le stesse regole generali? Seguono tutti lo stesso ciclo di istruzioni, che è diviso in tre fasi distinte chiamate Fetch, Decode ed Execute, che vengono tradotte come fetch, decode ed execute. Spieghiamo come funzionano queste fasi e come sono organizzate.

Al fine di semplificare e rendere più comprensibili i concetti spiegati in questo articolo, abbiamo deciso di descrivere un processore estremamente semplice per i tempi attuali, quindi in questo articolo vedrai una spiegazione di quali sono i cicli di istruzione in modo generalizzato che possono essere applicati dai primi processori a 8 bit a quelli più complessi oggi disponibili

Visualizzazione del ciclo di istruzione

Ciclo Istruzione Unidad Control

I processori non sono diversi da un certo punto di vista da un motore a combustione, che esegue sempre un processo continuo di esplosione di carburante in diversi stadi, siano essi 2 tempi o 4 tempi. La ragione di ciò è che i processori lavorano in tre diverse fasi nella loro versione più semplice, che sono le seguenti:

  • Recupera o acquisisci: In cui l'istruzione viene catturata dalla RAM e copiata all'interno del processore.
  • Decodifica o decodifica: In cui l'istruzione precedentemente acquisita viene decodificata e inviata alle unità di esecuzione
  • Esegui: Dove l'istruzione viene risolta e il risultato scritto nei registri interni del processore o in un indirizzo di memoria della RAM

Queste tre fasi sono soddisfatte in ogni processore. C'è una quarta fase, che è Write-Back, ovvero quando le unità di esecuzione scrivono il risultato, ma questo di solito viene conteggiato all'interno della fase di esecuzione del ciclo di istruzione.

Prima fase del ciclo di istruzione: Fetch

Processo di recupero

La prima fase del ciclo di istruzione è responsabile dell'acquisizione delle istruzioni nel file RAM memoria assegnata al processore attraverso una serie di unità e registri che sono i seguenti:

  1. Contatore di programma o contatore di programma: Che punta alla riga di memoria successiva in cui si trova l'istruzione del processore successivo. Il suo valore viene incrementato di 1 ogni volta che viene completato un ciclo completo di istruzioni o quando un'istruzione di salto modifica il valore del contatore del programma.
  2. Registro degli indirizzi di memoria: Il MAR copia il contenuto del PC e lo invia alla RAM tramite i pin di indirizzamento della CPU, che sono cablati con i pin di indirizzamento della RAM stessa.
  3. Registro dati memoria o registro dati memoria : Nel caso in cui la CPU debba eseguire una lettura della memoria, ciò che fa l'MDR è copiare il contenuto di quell'indirizzo di memoria in un registro interno della CPU, che è un registro di passaggio temporaneo prima che il suo contenuto venga copiato nel registro delle istruzioni. L'MDR, a differenza del MAR, è collegato ai pin dati della RAM e non ai pin di indirizzamento e nel caso di un'istruzione di scrittura nell'MDR viene scritto anche il contenuto di ciò che si vuole scrivere nella RAM
  4. Registro delle istruzioni: La parte finale della fase di fetch è la scrittura dell'istruzione nel registro delle istruzioni, da cui l'unità di controllo del processore ne copia il contenuto per la seconda fase del ciclo di istruzione.

Questi 4 sottofasi si verificano in tutti i processori indipendentemente dalla loro utilità, architettura e compatibilità binaria o da ciò che chiamiamo ISA.

Unità di controllo

Unità di controllo

L'unità di controllo è la parte più complessa che esiste in un processore e le sue funzioni sono le seguenti:

  • Sono incaricati di coordinare il movimento e l'ordine in cui dei dati si muovono all'interno e all'esterno del processore, nonché le diverse subunità che ne sono responsabili.
  • In generale, si considera che le unità della fase di cattura o Fetch fanno parte dell'hardware che chiamiamo unità di controllo e questo hardware è anche chiamato Front-End di un processore.
  • Interpreta le istruzioni e le invia alle diverse unità di esecuzione a cui è collegato.
  • Viene comunicato alle diverse ALU e unità di esecuzione del processore che agiscono
  • È responsabile dell'acquisizione e della decodifica delle istruzioni, ma anche della scrittura dei risultati nei registri, nelle cache o nell'indirizzo corrispondente della RAM.

Opcode-Modalità-Indirizzo

Ciò che fa l'unità di controllo è decodificare le istruzioni e lo fa perché ogni istruzione è in realtà una sorta di frase in cui il verbo va prima e poi l'oggetto diretto o l'oggetto su cui viene eseguita l'azione. Il soggetto finisce per essere eliminato in questo linguaggio interno dei computer dal fatto che si capisce che è il computer stesso che lo esegue, quindi ogni numero di bit è una frase in cui il primo 1 e lo 0 corrispondono all'azione e agli uno quello che viene dopo sono i dati o la posizione dei dati da manipolare.

La seconda fase: decodifica

Istruzioni per la decodifica

Esistono diversi tipi di istruzioni e non tutte fanno lo stesso, quindi a seconda del tipo di istruzione dobbiamo sapere a quali unità di esecuzione verranno inviate e il modo più classico per farlo è attraverso quello che chiamiamo decoder , che prende ogni istruzione, la divide internamente in base al codice operativo o istruzione e ai dati o all'indirizzo di memoria in cui si trova.

Ad esempio nel diagramma sopra abbiamo il diagramma di un processore con solo 8 istruzioni, che possono essere codificate in soli 3 bit. Ciascuna delle istruzioni, una volta decodificata, viene inviata alle diverse unità di esecuzione che le risolveranno.

Questo ciclo di istruzioni è il più complesso di tutti e quello che definisce il tipo di architettura. A seconda che si disponga di un insieme ridotto o complesso di istruzioni, questo influenzerà la natura della centralina, a seconda del formato dell'istruzione o di quante vengono elaborate contemporaneamente la fase di decodifica e quindi la centralina avrà un natura diversa. altro.

Il modo più semplice per visualizzare ciò che accade è pensare alle istruzioni come treni che circolano attraverso una complessa rete ferroviaria e l'unità di controllo che le indirizza verso una stazione terminale, che è l'unità esecutiva che avrà il compito di risolvere l'istruzione.

Terza fase: esecuzione

1 bit ALU

L'ultima fase è l'esecuzione delle istruzioni, in questa fase le istruzioni vengono risolte, ma non tutti i tipi di istruzione vengono risolti allo stesso modo, poiché il modo di utilizzare l'hardware dipenderà dalla funzione di ciascuna di esse. loro, in generale abbiamo quattro tipi di istruzioni:

  • Istruzioni movimento bit: In cui viene manipolato l'ordine dei bit che contengono i dati.
  • Istruzioni aritmetiche: Dove vengono eseguite operazioni matematiche e logiche, queste vengono risolte nelle cosiddette ALU o unità logico-aritmetiche
  • Istruzioni di salto: In cui viene modificato il valore successivo del contatore del programma, che consente di utilizzare il codice in modo ricorsivo.
  • Istruzioni per la memoria: Sono con cui il processore legge e scrive le informazioni dalla memoria di sistema.

L'altro punto sono i formati delle istruzioni, poiché un'istruzione può essere applicata a un dato, scalare o più dati contemporaneamente, che conosciamo come SIMD. Per finire, a seconda del formato dei dati, ci sono diversi tipi di ALU per l'esecuzione di istruzioni aritmetiche, ad esempio abbiamo unità intere e in virgola mobile come unità differenziate oggi.

Una volta completata l'istruzione, il risultato viene scritto in uno specifico indirizzo di memoria e viene eseguita quella successiva. Alcune istruzioni non manipolano i valori della memoria ma piuttosto determinati registri. Pertanto, il registro del contatore di programma viene modificato dalle istruzioni di salto, se si desidera leggere o scrivere dati, vengono manipolati i registri MAR e MDR.