Analizziamo un'implementazione semplificata del processore RISC-V, a cui è associato il corrispondente set di istruzioni.
L'architettura RISC-V utilizza l'architettura pipeline, una tecnica per migliorare le prestazioni basata sulla sovrapposizione dell'esecuzione di più istruzioni appartenenti ad un flusso di esecuzione sequenziale.
L'insieme ridotto di istruzioni contiene le categorie R
, I
, S
e B
, non considera le istruzioni nei formati U
e J
.
Il formato di istruzioni completo si compone di:
funct3
e funct7
: estensioni del codice operativo per gestire le operazione dell'ALUUn'istruzione aritmetico logica viene eseguita in 4 passi:
pc
.funct3
e funct7
per realizzare la funzione aritmetico-logica.11
-7
dell'istruzione per selezionare il registro di destinazione.load
Un'istruzione di load
viene eseguita in 5 passi:
pc
.store
Un'istruzione di store
viene eseguita in 4 passi:
pc
.Un'istruzione di salto condizionato viene eseguita in 4 passi:
pc
.pc
viene sommato all'immediato a pc
.Per ogni tipo di istruzione i primi due passi da eseguire sono identici:
pc
ad una memoria che contiene il codice per prelevare l'istruzione.Dopo questi passi, le azioni necessarie per concludere l'esecuzione dell'istruzione dipendono dal tipo di istruzione.
Per quanto riguarda il tempo di esecuzione delle istruzioni si ha che:
ld
dura sd
dura beq
dura Di seguito la struttura base del processore RISC-V.
Si ha che la memoria istruzioni è separata dalla memoria dati. Poi i
Il risultato dell'ALU è utilizzato per:
Per temporizzare gli elementi di stato si utilizza un clock con fronte attivo di salita, e quindi le operazioni sono efficaci solo in corrispondenza del segnale di controllo dell'operazione asserito e del fronte attivo del segnale di clock.
Per convenzione non si riporta esplicitamente il segnale di controllo dell'operazione se questa avviene ad ogni fronte attivo del segnale di clock.
Le istruzioni dell'architettura di riferimento hanno tutte immediati a
Per ld
e sd
l'offset è un valore a byte, mentre per beq
l'offset è un valore a mezza parola e per essere sommato al pc
per calcolare l'indirizzo destinazione deve essere riportato a offset a byte.
La costruzione dell'immediato a ld
, sd
e beq
, e l'estensione viene effettuata in parallelo nei 3 formati. I due bit di codice operativo
Nel caso di ld
e sd
l'estensione ottenuta è completa e può essere utilizzata, mentre nel caso di beq
, bisogna riportare l'offset a byte, e quindi si esegue uno shift a sinistra di
La base per il calcolo dell'indirizzo di destinazione di un salto è il pc
. L'operazione di salto condizionato è costituita da due operazioni:
pc
e il valore dell'offset esteso e fatto scorrere a sinistra di rf
. Se il segnale di uscita zero
è asserito la condizione di salto è verificata e l'indirizzo di destinazione del salto diventa il nuovo pc
.Per poter caricare nel pc
l'indirizzo corretto della prossima istruzione da eseguire è necessario aggiungere un multiplexer a due vie in ingresso al pc
stesso.
Combiniamo questi elementi in un'unica unità di elaborazione. Assumiamo che tutte le istruzioni siano eseguite in un solo ciclo di clock:
Alcune unità funzionali possono essere condivise da differenti flussi di istruzioni, per condividere un elemento tra due diversi tipi di istruzione si deve introdurre un muxer.
Si ha quindi che la struttura della CPU completa è la seguente.
Aggiungendo un unità di controllo per generare i segnali di controllo alla ALU in funzione agli ingressi.