Si realizzi una unità che presenta un'interfaccia di memoria “standard” (come quella del sosttosistema di memoria verso il processore D-RISC, non utilizza il campo INDIRIZZO, ovviamente) e che implementa le seguenti operazioni esterne:
Lo stack ha capacità pari a 1024 parole da 32 bit. Eventuali errori devono essere comunicati mendiante il campo ESITO.
Va realizzata una unità firwmare “memoria” con organizzazione interna modulare (indirizzi interallacciati) dotata di due interfacce di accesso, idealmente una per il processore e una per co-processori e unità di I/O. Entrambe le interfacce sono del tipo dell’interfaccia standard vista nel corso nella parte dedicata al processore monolitico di cui abbiamo visto l’interprete monolitico. Quindi con un registro da 32 bit per i dati da scrivere e uno per i dati letti, un registro operazione da 3 bit, un registro indirizzi ancora da 32 bit, un registro per comunicare l’esito dell’operazione da almeno 3 bit, e tutti gli indicatori a transizione di livello necessari. Va implementata una politica di arbitraggio che preveda priorità all’interfaccia dal processore. Nel caso in cui il processore richieda un’operazione il cui esito potrebbe essere influenzato da un’operazione pendente sulla seconda interfaccia, occorre fare in modo che i valori resituiti siano quelli relativi al completamento dell’operazione richiesta dopo il complemetamento dell’operazione pendente. In questo caso, prima di accettare una nuova operazione dall’interfaccia verso il processore, deve essere completata l’operazione dall’altra interfaccia.
Va realizzata un’unità che implementi l’algoritmo di traduzione degli indirizzi logici in indirizzi fisici nella MMU. L’unità riceve un indirizzo logico da 32 bit con IPL da 20 bit e OFFSET da 12 bit e lo traduce nel corrispondente indirizzo fisico utilizzando una cache completamente associativa da 8 posizioni. Va gestito il meccanismo di rimpiazzamento di un’entry della cache in caso di fault, che si avverrà di un’interfaccia standard verso il sottosistema di memoria in grado di richiedere operazioni di lettura e di un registro dedicato TABRIL contenente la base della tabella di rilocazione per il processo in esecuzione. La politica di rimpiazzamento nella cache può essere implementata come politica round robin.
Va realizzata un’unità in grado di arbitrare richieste di servizio da parte di 8 altre unità. Le richieste arrivano mediante indicatori a transizione di livello e vengono servite mediante segnalazioni tramite indicatori a transizione di livello. Vanno implementate tre politiche di arbitraggio:
Va realizzata una unità che accetta tre indirizzi A, B, C, un intero N è un codice OP. Realizza l'operazione vettoriale fra i due vettori A e B di lunghezza N con l'operazione identificata dal parametro OP, ovvero calcola Ai OP Bi in Ci per tutti gli i da 0 a N. Il valore restituito è un codice che vale 0 se non ci sono stati errori e uno se invece c'è stato un tipo di errore qualunque. L'unità accede alla memoria mediante una interfaccia standard. Le operazioni da considerare per il campo OP sono le quattro operazioni aritmetiche.
La realizzazione del progetto richiede i seguenti passi:
L’orale per chi presenta il progetto si farà nelle date previste per gli orali, insieme agli altri studenti che avranno superato lo scritto e inizierà con una breve discussione del progetto Verilog e procederà quindi come un normale orale di AE.
Studente | Progetto | stato |
---|---|---|
Antonio Lepore | STACK | Assegnato |
Lorenzo Pennoni | COPROCESSORE VETTORIALE | Assegnato |
Andrea Cosci | STACK | Assegnato |
Alessandro Di Giorgio | COPROCESSORE VETTORIALE | Assegnato |
Andrea Tosti | MMU | Assegnato |