SIMULATORE
CPU SUPERSCALARE
(INIZIO E COMPLETAMENTO IN ORDINE)
( realizzato da Salvatore Maugeri )
Introduzione alla CPU Superscalare
Introduzione alla CPU Superscalare
Gran parte delle CPU moderne sono sia in pipeline che superscalari. Questo significa che c'è un'unità di fetch che estrae le istruzioni dalla memoria prima che servono, in modo da alimentare l'unità di decodifica. L'unità di decodifica invia le istruzioni decodificate alle unità funzionali appropriate per l'esecuzione. Naturalmente la progettazione di una macchina è più semplice se tutte le istruzioni vengono eseguite in ordine. L'esecuzione in ordine, però, non sempre porta a prestazioni ottimali per via delle dipendenze fra istruzioni. Esistono tre tipi di dipendenze:
1. dipendenza
RAW che si verifica quando un'istruzione deve usare come input il risultato che
un'istruzione precedente non ha ancora
prodotto.
2. dipendenza WAR che si verifica quando un'istruzione cerca di scrivere su un
registro che un'istruzione precedente non ha ancora finito di leggere.
3. dipendenza WAW che si verifica quando un'istruzione cerca di scrivere su un
registro che un'istruzione precedente non ha ancora finito di scrivere.
Il simulatore è stato realizzato esclusivamente a scopo didattico per favorire altri studenti che come me si sono imbattuti nello studio della CPU Superscalare. Ricordo inoltre, che non si tratta di un vero e proprio simulatore, dove l'utente può eseguire tutti i programmi che vuole, ma solo un'animazione dell' esempio di CPU Superscalare con inizio e completamento in ordine del TANENBAUNM paragrafo 4.5.3. fig. 4-43.
La macchina nel nostro esempio ha otto registri visibili al programmatore, da R0 a R7. Tutte le istruzioni aritmetiche usano tre registri: due per gli operandi e uno per il risultato. Assumiamo inoltre che se un' istruzione semplice, come una somma oppure una sottrazione, inizia nel ciclo n, il risultato verrà scritto nel registro di destinazione al termine nel ciclo n+2 . Nel caso di un' istruzione più complicata, come una moltiplicazione o divisione, il risultato viene scritto al termine del ciclo n+3. E' possibile studiare il comportamento della CPU Superscalare usando i tre pseudo programmi proposti.
Le dipendenze fra le istruzioni sono state cosi rappresentate:
Per avere maggiori informazioni o per comunicarmi eventuali errori, nuovi consigli per migliorare aspetti grafici e quant'altro, contattatemi al mio indirizzo e-mail: salvatoremaug@tiscali.it, oppure contattate il prof. F. Barbanera all'indirizzo: barba@dipmat.unict.it.
Dopo aver eseguito il DownLoad, sistemate tutto il contenuto del file zip all'interno di una directory. Per far partire l'applicazione, basta aprire una finestra di shell, posizionarsi all'interno della directory dove si sono sistemati i file e digitare:
java Superscalare
Fatto questo, partirà il programma che visualizzerà una finestra, CPU Superscalare, con una breve presentazione. Premere inizia e si aprirà il frame Simulatore. Per prima cosa bisogna premere il tasto SCEGLI, che darà la possibilità di scegliere uno dei tre pseudo programmi presentati. Fatta la scelta si torna al frame Simulatore, dove:
- premendo il tasto CLOCK si passa al ciclo successivo.
- premendo il tasto FINE si chiude il frame.
-
premendo il tasto
si torna indietro di un ciclo alla volta.
-
premendo il tasto
verrà mostrata una finestra con le informazioni
sulle dipendenze.
Il frame Simulatore contiene inoltre una TextArea, dove viene riportato tutto ciò che succede e i suggerimenti per iniziare, proseguire o terminare la simulazione.
REQUISITI MINIMI per l'esecuzione e l'utilizzo dell'applicazione :
- risoluzione dello schermo 1024*768;
- kit di sviluppo software di Java non inferiore alla versione 1.2.