Elementi base per la realizzazione dell unità di calcolo Memoria istruzioni elemento di stato dove le istruzioni vengono memorizzate e recuperate tramite un indirizzo. ind. istruzione Memoria istruzioni istruzione Contatore di programma (program counter) PC elemento di stato dove viene memorizzato l indirizzo dell istruzione corrente. PC segnale di controllo per la scrittura ALU la rete combinatoria per le operazioni aritmetico-logiche
Addizionatore (ALU semplificata) rete combinatoria per incrementare il program counter (di 4 byte ogni volta). Add 4 Banco di registri (register file) elemento di stato, contiene tutti i registri. registro lettura #1 numero registro dato #1 registro lettura #2 registro scrittura dati dato dato in dato #2 scrittura segnale di controllo scrittura
Lettura da un registro Per leggere il contenuto di un registro deve essere dato in input il numero del registro (che sara' codificato con 5 bit per identificare uno dei 32 registri: 25 = 32), l output sarà il dato contenuto nel registro. # reg1 Registro 0 Registro 1. Registro n M u x dato1 # reg2 M u x dato2
Scrittura in un registro Per la scrittura viene utilizzato un decodificatore che trasforma il segnale in ingresso (5 bit che rappresentano il numero del registro) in 25 segnali d uscita, uno solo dei quali è asserito per ogni configurazione in input. write C # registro dato d e c o d e r D C D C D
Nucleo istruzioni MIPS - istruzioni di riferimento a memoria: lw, sw - istruzioni aritmetico logiche: add, sub, and, or, slt - istruzioni di salto: condizionato beq ed incondizionato j (jump). Il primo passo per la realizzare una di queste istruzioni consiste - nell inviare il contenuto del PC alla memoria istruzioni per leggere l istruzione corrente; ed aggiornare il PC sulla successiva istruzione da eseguire (il cui indirizzo di norma si ottiene sommando 4 (byte) all indirizzo dell istruzione corrente). 4 PC Memoria istruzioni I passi successivi dipendono dalla classe di istruzioni che si considera.
Consideriamo prima le istruzioni aritmetico logiche: add, sub, and, or, slt la cui forma generale è codice-istruzione n-reg1, n-reg2, n-reg3 0 rs rt rd funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit Per queste istruzioni i passi successivi consistono nel - leggere dai registri n-reg2 e n-reg3 i dati su cui operare; - inviare i dati all ALU - scrivere nel registro di scrittura (n-reg1) il dato calcolato dall ALU. 5 Registro lettura 1 controllo ALU 5 Lettura Registro dati 1 lettura 2 5 Zero Registro scrittura Lettura Scrittura dati 2 dati write Il segnale di write deve essere opportunamente sincronizzato per abilitare la scrittura al momento giusto: non deve essere permessa la scrittura finchè tutti i dati non sono stati letti. Ammettendo la transizione solo durante i fronti attivi del clock verrà sempre letto il dato scritto durante il precedente fronte attivo.
Istruzioni di riferimento a memoria: lw, sw La forma generale per le istruzioni load-word e store-word è: codice-istruzione n-reg1, offset (n-reg2) op rs rt ind 6 bit 5 bit 5 bit 16 bit Per realizzare queste istruzioni si deve - calcolare l indirizzo di memoria sommando l offset al contenuto del registro base. Poiché l offset è contenuto in 16 bit serve un ulteriore componente: unità di estensione del segno. 16 32 - leggere il dato in memoria e caricarlo sul registro indicato oppure scrivere in memoria il dato registrato nel registro indicato. write Indirizzo Dato (scrittura) Memoria read dato (lettura)
La forma dell istruzione è: Istruzione di salto condizionato: beq beq n-reg1, n-reg2, label 4 rs rt offset 6 bit 5 bit 5 bit 16 bit La realizzazione di questa istruzione richiede una modifica all aggiornamento del PC sviluppato per le istruzioni nelle altre due classi. Ricordiamo che se i registri rs ed rt contengono lo stesso dato l istruzione che deve seguire quella corrente si trova calcolando PC + 4 (= istruzione successiva a quella attuale) + offset 4. offset 4 PC + 4 si calcola applicando uno shift di due bit a sinistra è il valore già calcolato per le altre istruzioni Per verificare se i registri rs ed rt contengono lo stesso dato si inviano all ALU i due dati con la richiesta dell operazione di sottrazione e si utilizza poi l uscita Zero. Istruzione di salto incondizionato: j La forma dell istruzione è: j indirizzo 2 ind 6 bit 26 bit Come per il salto condizionato l indirizzo deve essere moltiplicato per 4.
Composizione delle diverse parti dell unità di calcolo Alcune delle unità sviluppate per le varie classi di istruzioni possono essere condivise da piu classi anche se ci sono delle differenze sulla provenienza degli input. Per dirottare i segnali in modo opportuno si utilizzano i selettori (multiplexor). Esempio. L ALU viene utilizzata sia dalle istruzioni di tipo R (add, sub, etc.) che dalle istruzioni di riferimento a memoria. Le prime passano all ALU i contenuti di due registri; le seconde il contenuto di un registro ed il dato ottenuto estendendo a 32 bit l offset. Registri 16 32 M u x