Next Previous Contents

5. Il processore: unità di elaborazione dati e unità di controllo

5.1 Introduzione

5.1.1 Quadro d'insieme dell'implementazione

La modalità di implementazione delle istruzioni MIPS base, comprese quelle logico-aritmetiche su numeri interi, quelle di accesso alla memoria e quelle di salto è in larga misura simile. Per ciascuna istruzione i primi due passi sono identici:

  • inviare l'uscita del contatore di programma (program counter, PC) all'unità di memoria che contiene il programma e prelevare l'istruzione dalla memoria stessa. Questa operazione viene indicata con il termine fetch.
  • Leggere uno o due registri, selezionati mediante i campi dell'istruzione. Per l'istruzione load word è sufficiente un solo registro, ma la maggior parte delle altre istruzioni richiede la lettura di due registri.
Compiuti questi due passi, le azioni necessarie al completamento dell'istruzione dipendono dalla sua classe; comunque all'interno della stessa classe (accesso alla memoria, logico-aritmetica, salto) le azioni sono in larga misura le stesse.
Si possono riscontrare delle somiglianze anche tra diverse classi di istruzioni; tutte le classi di istruzioni utilizzano l'unità logico-aritmetica (ALU) dopo aver letto i registri: le istruzioni di accesso alla memoria usano la ALU per il calcolo dell'indirizzo, le istruzioni logico-aritmetiche per l'esecuzione dell'operazione ed i salti per eseguire confronti.
Dopo l'utilizzo della ALU, le azioni richieste per completare le istruzioni differiscono per le diverse classi: un'istruzione di accesso alla memoria dovrà accedervi per scrivere il dato (store) o per leggerlo (load); un'istruzione logico-aritmetica dovrà scrivere il risultato calcolato dalla ALU in un registro; le istruzioni di salto potrebbero dover modificare l'indirizzo della prossima istruzione da eseguire in funzione dell'esito del confronto.

5.1.2 Convenzioni logiche e temporizzazione

Le unità funzionali nell'implementazione del MIPS consistono di due tipi diversi di elementi logici: elementi che operano sui dati ed elementi che memorizzano lo stato. Gli elementi che operano sui valori dei dati sono di tipo combinatorio, il che significa che le loro uscite dipendono solamente dagli ingressi. La ALU è un elemento combinatorio: dato un insieme di ingressi produce sempre la stessa uscita perchè non contiene alcun elemento di memoria.
Altri elementi memorizzano lo stato: un elemento può memorizzare informazioni di stato solo se contiene al suo interno degli elementi di memoria; tali elementi verranno chiamati elementi di stato. Un elemento di stato possiede almeno due ingressi ed un'uscita: gli ingressi sono il valore da scrivere nell'elemento ed il clock, che determina l'istante in cui il valore viene scritto; l'uscita fornisce il valore che era stato scritto in un ciclo di clock precedente. Uno dei più semplici elementi di stato è il flip flop di tipo D, ma dalla figura qui illustrata possiamo osservare che altri elementi di stato sono le memorie ed i registri. Il clock viene utilizzato per determinare l'istante in cui avviene l'operazione di scrittura, mentre la lettura può avvenire in ogni istante


5.1.3 Metodologia di temporizzazione

La metodologia di temporizzazione definisce quando i segnali possono essere scritti e quando possono essere letti: è importante definire la temporizzazione delle operazioni di lettura e scrittura perchè se un segnale venisse letto contemporaneamente alla sua scrittura, il valore letto potrebbe essere quello precedente, quello appena scritto, o addirittura una combinazione dei due!
La metodologia di temporizzazione che useremo sarà quella sensibile ai fronti (edge-triggered), ossia i valori memorizzati all'interno del sistema sono modificati solamente in corrispondenza di un fronte del segnale di clock. Poichè solo gli elementi di stato possono memorizzare un valore, le reti combinatorie devono ricevere i propri ingressi da un insieme di elementi di stato e scrivere il valore delle proprie uscite in un insieme di elementi di stato: gli ingressi sono i valori scritti in un ciclo di clock precedente, mentre i valori di uscita potranno essere utilizzati in un ciclo successivo. La metodologia sensibile ai fronti permette di leggere il contenuto di un registro, inviarne il valore attraverso uno o più blocchi di logica combinatoria e scrivere lo stesso registro nel medesimo ciclo di clock.


Next Previous Contents