Sommario:

Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi
Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi

Video: Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi

Video: Progettazione di un semplice controller di cache associativa a quattro vie in VHDL: 4 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Dicembre
Anonim
Progettazione di un semplice controller di cache associativa a quattro vie in VHDL
Progettazione di un semplice controller di cache associativa a quattro vie in VHDL

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

Specifiche
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

Vista RTL dell'intero sistema
Vista 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: