SIMULATORE

CPU SUPERSCALARE

(INIZIO E COMPLETAMENTO IN ORDINE)

 

( realizzato da Salvatore Maugeri )

 

Introduzione alla CPU Superscalare 

IL  simulatore

Guida al simulatore

 

 

 DownLoad Simulatore

 

 

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

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.

 

 

 

                                     

   

Guida al simulatore   

 

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.