Simulatore Mic 1
 
 



Il Simulatore

Il simulatore esegue segmanti di codice  scritti in  Micro-Assembly Language (Mic-1 mal).

In esso è possibile eseguire le microistruzioni  e visualizzare  l'intero ciclo del Data - Path.

Come avviare il simulator

Funzioni del simulatore

Menù File

 Gestione dei file

Area ditesto Microprogram

Area nella quale può essere scritto o caricato il microprogramma

Area di testo Standard Output

 Area nella quale è possibile notare le funzioni del simulatore, avviso di errori nel microprogramma,avvenuta compilazione,ecc.

Tasto Compile & Load

  Ha la funzione di controllare la correttezza del microprogramma e inserire le microistruzioni nel Controll   Store

Tasto Microstep

 Esegue una microistruzione compiendo un intero ciclo del Data-Path.

Tasto Sub Cycle

 Mostra tramite una animazione  i quattro sottocicli del Data-Path.

Tasto Refresh

  Pulisce il Frame principale dopo aver terminato l'esecuzione dei sottocicli di un ciclo di clock tramite
Sub Cycle. N.B.: Non esegue alcun passo computazionale.

Tasto Start Again

 Ha la funzione di rinizializare il simulatore lasciando inalterato il testo del microprogramma ed il Control Store.

Tasto Reset

 Dispone il simulatore per l'esecuzione di un'altro microprogramma. Prima di premere il tasto è consigliato salvare   il   microprogramma.

Tasto Write Memory

 Consente di scrivere dati nella memoria principale.

Tasto BitMicInstr

 Mostra una finestra che contiene la microistruzione nel registro MIR scritta complatamente in binario
 
 

Utilizzo del simulatore

Il simulatore possiede un area di testo nella quale e possibile scrivere il proprio programma in Mic-1 mal, oppure se si vuole , è possibile caricare (tramite il menu' File)  un programma Mic-1 mal già precedentemente scritto.

A questo punto  premere il tasto Compile & Load, che controlla la sintassi del microprogramma te traduce in Mic-1 binario e inserisce le micro instruzioni all'interno del Control Store (nel control store tali istruzioni sono ancora visualizzate in Mic-1 mal, ma concettualmente sono in binario).

 Per eseguire la microistruzione puntata dal MicroProgramCounter (MPC)  è possibile premere il tasto Micro Step, che esegue un ciclo completo del Data-Path, oppure premere il tasto Sub-Cycle , che ha la funzione di eseguire una microistruzione , mostrando, tramite un animazione, i quattro  sottocicli del Data-Path .Una volta eseguito l'ultimo sottociclo è necessario premere il tasto Refresh per poter eseguire la  microistruzione seguente, con Micro Step o Sub Cycle.

L'esecuzione del programma termina quando sono state eseguite tutte la microistruzioni.

Alcune regole di sintassi
 

  • I commenti possono essere inseriti dopo '//' quindi scrivendo:  // Commento   la riga verra' commentata
  • ogni  programma deve essere preceduto da alcune direttive al compilatore:   Ogni  LABEL (etichetta) deve essere dichiarata con la sintassi  .label nome_etichetta 0xXX  dove con 0xXX si intende un quasiasi indirizzo di memoria nel CONTROL STORE, quindi un indirizzo del tipo  0x00 oppure 0x30  (Naturalmente sono indirizzi in codifica esadecimale. Inoltre gli indirizzi a due cifre, per esempio 0x30, intendono rappresentare 9 bit: gli 8 delle due cifre esadecimali piu' uno 0 alla sinistra. 0x30 quindi rappresenta la stringa binaria 0 0011 0000, questo perche' il control store ha 2^9 celle. Indirizzi come 0x130 intendono rappresentare sempre 9 bit, con un 1 a sinistra, In questo caso 1 0011 0000).
  •    Deve essere definita inoltre una LABEL di default ,con la sintassi  .default goto def_label.
  • I salti condizionati devono soddisfare le seguenti regole:
    • la label corrispondente al ramo TRUE deve essere definita all'indirizzo else_label ORbit 0x100 ad esempio se la ELSE_LABEL e' definita all'indirizzo di memoria 0x30 allora la LABEL del ramo TRUE deve essere definita all'indirizzo 0x130.In sostanza cio` che fa il simulatore e' saltare all'indirizzo 0x130 se la condizione  e' verificata.
    Alcuni esempi di programmi possono chiarire le idee....

    // Definizioni preliminari
     

    //Definizione label di default

    .default goto def

    // codice del programma che incrementa indefinitamente il valore di PC
     
     
    PC=1
    ini PC=PC+1;goto ini
    fine nop;
     

    Adesso un esempio con salto condizionato..(Questo programma incrementa LV volte il registro PC)

    .label ini 0x01
    .label fine 0x101
    .label def 0x100

    .default goto def
        PC=0;
    ini PC=PC+1;
         LV=LV-1;
         Z=LV; if (Z) goto fine;else goto ini;
    fine   nop;



     

    Questo simulatore è stato realizzato da

    Moschetto Salvatore Dipartimento di Matematica e Informatica Università degli Studi di Catania , per il corso di Tecniche Speciali di Elaborazione dell' Informazione.

     Il file Mic1.zip contiene una cartella , Sorg , nella quale è contenuto il codice sorgente del simulatore

    Downolad