Sommario:
- Passaggio 1: specifiche
- Passaggio 2: visualizzazione RTL dell'intero sistema
- Passaggio 3: ambiente di prova
- Passaggio 4: file allegati
Video: Progettazione di un semplice controller di cache in VHDL: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Sto scrivendo questo istruibile, perché ho trovato un po' difficile ottenere del codice VHDL di riferimento per imparare e iniziare a progettare un controller di cache. Quindi ho progettato da zero un controller della cache e l'ho testato con successo su FPGA. Ho presentato un semplice controller della cache mappato direttamente qui, oltre a modellare un intero sistema di memoria del processore per testare il controller della cache. Spero che voi ragazzi troviate questo istruibile utile come riferimento per progettare i vostri controller di cache.
Passaggio 1: specifiche
Queste le principali specifiche del Cache Controller che andremo a progettare:
- Mappato diretto. (vai a questo link se cerchi Associative Mapped Cache Controller)
- Cache bloccante a banca singola.
- Politica write-through sugli hit di scrittura.
- No-Write allocate o Write Around Policy su Write miss.
- Nessun buffer di scrittura o altre ottimizzazioni.
- L'array di tag è incorporato.
Oltre a ciò, progetteremo anche una memoria cache e un sistema di memoria principale.
Le specifiche predefinite (configurabili) della memoria cache:
- Cache a banca singola da 256 byte.
- 16 righe cache, ogni riga cache (blocco) = 16 byte.
Le specifiche della memoria principale:
- Memoria di lettura/scrittura sincrona.
- Multi-banked Interleaved Memory - quattro banchi di memoria.
- Ogni dimensione della banca = 1 kB ciascuna. Quindi, dimensione totale = 4 kB.
- Memoria indirizzabile Word (4 Byte) con Address Bus a 10 bit.
- Larghezza di banda maggiore per la lettura. Leggere la larghezza dei dati = 16 byte in un ciclo di clock.
- Larghezza dati in scrittura = 4 byte.
NOTA: controlla la mia nuova istruzione se stai cercando un design del controller della cache associativa a 4 vie
Passaggio 2: visualizzazione RTL dell'intero sistema
La rappresentazione RTL completa del modulo superiore è mostrata nella figura (escluso il processore). Le specifiche predefinite per gli autobus sono:
- Tutti i bus dati sono bus a 32 bit.
- Bus indirizzo = Bus a 32 bit (ma solo 10 bit sono indirizzabili qui dalla memoria).
- Blocco dati = 128 bit (bus a larghezza di banda larga per lettura).
- Tutti i componenti sono guidati dallo stesso orologio.
Passaggio 3: ambiente di prova
Il modulo superiore è stato testato utilizzando un banco di prova, che modella semplicemente un processore non in pipeline (perché progettare un intero processore non è affatto facile!!). Il banco prova genera frequentemente richieste di dati di lettura/scrittura alla memoria. Questo prende in giro le tipiche istruzioni "Load" e "Store", comuni in tutti i programmi eseguiti da un processore. I risultati del test hanno verificato con successo la funzionalità del controller della cache. Di seguito sono riportate le statistiche del test osservate:
- Tutti i segnali Read/Write Miss e Hit sono stati generati correttamente.
- Tutte le operazioni di lettura/scrittura dei dati hanno avuto esito positivo.
- Nessun problema di incoerenza/incoerenza dei dati rilevato.
- Il design è stato verificato con successo nei tempi per un Maxm. Frequenza di clock di funzionamento = 110 MHz nella scheda Xilinx Virtex-4 ML-403 (intero sistema), 195 MHz per il solo Cache Controller.
- Le RAM a blocchi sono state dedotte per la memoria principale. Tutti gli altri array sono stati implementati su LUT.
Passaggio 4: file allegati
I seguenti file sono allegati qui con questo blog:
- File. VHD di Cache Controller, Cache Data Array, Main Memory System.
- Banco di prova.
- Documentazione sul controller della cache.
Appunti:
- Consulta la documentazione per una comprensione completa delle specifiche del controller della cache qui presentate.
- Eventuali modifiche al codice dipendono da altri moduli. Quindi, le modifiche dovrebbero essere fatte con giudizio. Presta attenzione a tutti i commenti e le intestazioni che ho fornito.
- Se per qualsiasi motivo, le RAM dei blocchi non vengono dedotte per la memoria principale, RIDURRE la dimensione della memoria, seguita da modifiche nelle larghezze del bus di indirizzo tra i file e così via. In modo che la stessa memoria possa essere implementata sia su LUT che su RAM distribuita. Ciò farà risparmiare tempo e risorse di routing. Oppure, vai alla documentazione FPGA specifica e trova il codice compatibile per Block RAM e modifica il codice di conseguenza e utilizza le stesse specifiche di larghezza del bus dell'indirizzo. Stessa tecnica per gli FPGA Altera.
Consigliato:
Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi
Progettazione di un semplice controller di cache associativo a quattro vie in VHDL: nel mio precedente tutorial, abbiamo visto come progettare un semplice controller di cache a mappatura diretta. Questa volta facciamo un passo avanti. Progetteremo un semplice controller di cache associativo a quattro vie. vantaggio? Meno miss rate, ma a scapito delle prestazioni
Progettazione di un controller di interrupt programmabile in VHDL: 4 passaggi
Progettazione di un controller di interrupt programmabile in VHDL: sono sopraffatto dal tipo di risposte che ricevo in questo blog. Grazie ragazzi per aver visitato il mio blog e avermi motivato a condividere le mie conoscenze con voi. Questa volta presenterò il design di un altro modulo interessante che vediamo in tutti i SOC: Interrupt C
Progettazione del Master I2C in VHDL: 5 passaggi
Progettazione di I2C Master in VHDL: in questo tutorial, viene discussa la progettazione di un semplice master I2C in VHDL. NOTA: fare clic su ciascuna immagine per visualizzare l'immagine completa
Progettazione di un semplice controller VGA in VHDL e Verilog: 5 passaggi
Progettazione di un semplice controller VGA in VHDL e Verilog: in questo tutorial, progetteremo un semplice controller VGA in RTL. VGA Controller è il circuito digitale progettato per pilotare i display VGA. Legge dal Frame Buffer (VGA Memory) che rappresenta il frame da visualizzare e genera neces
Progettazione del Master SPI in VHDL: 6 passaggi
Progettazione di SPI Master in VHDL: in questo tutorial, progetteremo da zero un SPI Bus Master in VHDL