Note di rilascio del simulatore JCacheSimulator, versione 1.0 Il minimo contenuto di questo file sarà uno schema dell'architettura del software, e l'indicazione che note dettagliate sono reperibili nei commenti al codice. Architettura del software Il progetto consta di due classi, una contenente le funzioni principali del progetto (Frame_iniziale.java) ed una per l'avvio del progetto (Progetto.java). Nella classe Frame_iniziale creiamo JPanel per la gestione grafica dei contenuti(JLabel, JTextArea, JTextField e JButton), inizializziamo la struttura grafica nel metodo costruttore che si occuperà della creazione di pannelli con vari layout, usati per una più accattivante struttura grafica, e che avrà inoltre in compito di inizializzare le JLabel situate nel pannello della memoria principale con valori binari generati in maniera casuale. Nella medesima classe sono definiti due bottoni che richiamano il metodo ActionPerformed il quale, sia nel caso di Write che di Read controlla che il valore inserito nella JTextField sia in formato binario (metodo isBinary() ) e che esso sia lungo 7 caratteri,ovvero un indirizzo computabile dal simulatore. Nel caso di un CacheHit,CacheMiss o WriteBack la JTextArea viene colorata rispettivamente di verde,rosso o blu dai metodi PaintCache() ed un messaggio viene visualizzato su di essa. Il metodo binrand() serve a generare valori binari casuali a 8 cifre per riempire la memoria principale. CacheHitMiss controlla se il byte richiesto risiede o meno nella Cache,controllando inizialmente il Bit Valid per constatare se quel blocco di Cache è abilitato,successivamente confronta i bit Tag dell'indirizzo richiesto con quello risiedente nella Cache. Il metodo writeBack trasferisce e sovrascrive un blocco di cache nella memoria principale nel caso esso debba essere sostituito da un altro e se il Dirty Bit era posto a 1. Il metodo copy() serve a caricare sulla Cache un blocco della memoria principale a seguito di un Cache Miss. Tecniche di programmazione Programmazione a oggetti in linguaggio Java con creazione di metodi e opportune chiamate a essi per scopi strutturali. Collaudi Il progetto è stato collaudato su MS Windows 7 e Mac OSxLion 10.7.2 con IDE Eclipse e NetBeans e su Ubuntu 12.0.4 da linea di comando. Idee per ulteriori sviluppi - Cache con altri tipi di corrispondenza, ovvero associativa (in tal caso con algoritmi di sostituzione diversi: LRU, FIFO ecc.) e associativa a gruppi (idem). - Opzioni di utente per vari parametri, fissi in questa versione del simulatore: per esempio, dimensione della cache, dei blocchi, dei gruppi, algoritmo di sostituzione. Tali opzioni possono essere utili al confronto degli effetti di tali scelte sulla prestazione. - Funzionalità di raccolta di statistiche (tasso di hit, tasso di miss ecc.) relative a varie iterazioni della simulazione, eventualmente con opzioni diverse. - Cache con ulteriori livelli per rendere il simulatore il quanto più realistico possibile.