L’esecuzione di un’istruzione in un processore RISC-V avviene in un ciclo di 6 fasi principali. Ognuna di queste fasi è associata a una o più unità specifiche della CPU che svolgono un ruolo essenziale nel completamento dell’operazione. Le fasi sono:
1. (IF) FETCH
Caricamento dell’istruzione:
L’istruzione da eseguire viene prelevata dalla memoria (nella sezione testo della RAM) all’indirizzo indicato dal program counter (PC), attraverso l’IFU.
2. (ID) DECODE
Riconoscimento dell’istruzione:
Una volta che l’istruzione è stata caricata, viene decodificata dalla IDU. La Control Unit interpreta quindi la decodifica fatta dall’IDU e decide quali parti del processore (come l’ALU, i registri, la memoria, ecc.) devono essere attivate per eseguire l’istruzione.
La codifica della istruzione deve indicare:
- Quale operazione va svolta (Opcode).
- Quali argomenti sono necessari.
- Dove mettere il risultato.
In questa fase si raccolgono i dati per l’indirizzamento: L’indirizzamento dei dati può avvenire in diversi modi in base al formato dell’istruzione. A seconda del tipo di indirizzamento, si leggono registri sorgente e/o valori immediati (come l’offset), che serviranno nella fase successiva.
3. (EX) EXECUTE
Esecuzione dell’istruzione/indirizzamento:
L’ALU, insieme eventualmente alla FPU o alla BU, esegue il calcolo o l’operazione logica indicata dall’istruzione.
- Per operazioni aritmetiche o logiche (
add,sub,and,orecc.), l’ALU esegue direttamente il calcolo. - Per istruzioni di trasferimento dati (
lw,sw), l’ALU calcola l’indirizzo di memoria usando i dati raccolti in Decode.
In questa fase avviene l’indirizzamento vero e proprio: Viene calcolato l’indirizzo effettivo (es. rs1 + offset) a cui accedere in memoria.
4. (MEM) MEMORY
Accesso alla memoria RAM:
Solo per istruzioni che coinvolgono la memoria dati (sw, lw ecc.):
- Se è una
load, la LSU legge dalla RAM all’indirizzo calcolato. - Se è una
store, la LSU scrive nella RAM il valore di un registro.
5. (WB) WRITE BACK
Scrittura nei registri della CPU:
Questa fase si applica solo alle istruzioni che producono un valore da salvare in un registro (add, sub, lw, andi, mul, ecc.). Il valore può provenire dall’ALU (aritmetica) o dalla RAM (load).
6. AGGIORNAMENTO DEL PC
Aggiornamento del Program Counter:
Il program counter viene aggiornato dalla CU al termine di ogni ciclo di esecuzione per puntare all’indirizzo dell’istruzione successiva. Se l’istruzione è un salto o un branch, il PC potrebbe essere aggiornato con un nuovo indirizzo dalla BU, cambiando il flusso di esecuzione del programma.