Sommario:
- Passaggio 1: specifiche
- Passaggio 2: visualizzazione RTL dell'intero sistema
- Passaggio 3: risultati del test
- Passaggio 4: file allegati
Video: Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Nella mia precedente istruzione, abbiamo visto come progettare un semplice controller di cache mappato direttamente. 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. Proprio come il mio blog precedente, progettavamo ed emulavamo un intero processore, memoria principale e ambiente cache per testare il nostro controller cache. Spero che lo troviate come un riferimento utile per comprendere i concetti e progettare i vostri controller di cache in futuro. Poiché il modello per il processore (banco di prova) e il sistema di memoria principale sono esattamente gli stessi del mio blog precedente, non li spiegherò di nuovo. Si prega di fare riferimento alla precedente istruzione per i dettagli al riguardo.
Passaggio 1: specifiche
Un rapido sguardo alle specifiche del Cache Controller presentato qui:
- Controller della cache associativa a quattro vie (vai a questo link se cerchi un controller della cache a mappatura diretta).
- Cache bloccante a banca singola.
- Policy Write-Through sugli hit di scrittura.
- Politica di write-around sugli errori di scrittura.
- Politica di sostituzione degli alberi pseudo-LRU (pLRU).
- Array di tag all'interno del controller.
- Parametri configurabili.
Le specifiche predefinite per la memoria cache e la memoria principale sono le stesse della mia precedente istruzione. Si prega di fare riferimento a loro.
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: risultati del test
Il modulo superiore è stato testato utilizzando un banco di prova, che modella semplicemente un processore non in pipeline, proprio come abbiamo fatto nell'ultima istruzione. 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 successo in tutti e quattro i modi.
- L'algoritmo pLRU è stato verificato con successo per la sostituzione delle linee della cache.
- Nessun problema di incoerenza/incoerenza dei dati rilevato.
- Il design è stato verificato con successo nei tempi per un Maxm. Frequenza di clock di funzionamento = 100 MHz nella scheda Xilinx Virtex-4 ML-403 (intero sistema), 110 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 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 di un semplice controller di cache in VHDL: 4 passaggi
Progettazione di un controller di cache semplice in VHDL: 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 p
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
Interruttori a tre e quattro vie: come funzionano: 6 passaggi
Interruttori a tre e quattro vie: come funzionano: mentre un interruttore a tre vie è molto semplice per molti che visitano Instructables.com, è un mistero per molti altri. Capire come funziona il circuito soddisfa la curiosità. Può anche aiutare a diagnosticare un interruttore a tre vie che non funziona perché qualcuno
Semplice controllo motore a 2 vie per Arduino: 4 passaggi
Semplice controllo motore a 2 vie per Arduino: ATTENZIONE: questo non è un modo sicuro per controllare un motore. Ciascun pin I/O può gestire solo 40 mA di corrente. Consiglierei di usare un H-Bridge o qualcosa del genere. Quando dico semplice, non intendo usare un controllo della velocità. Ma controlla direttamente il motore