Sommario:

Progettazione di un semplice controller di cache in VHDL: 4 passaggi
Progettazione di un semplice controller di cache in VHDL: 4 passaggi

Video: Progettazione di un semplice controller di cache in VHDL: 4 passaggi

Video: Progettazione di un semplice controller di cache in VHDL: 4 passaggi
Video: 5 Easy Steps to Building an Embedded Processor System Inside an FPGA 2024, Novembre
Anonim
Progettazione di un semplice controller di cache in VHDL
Progettazione di un semplice controller di cache 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 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

Specifiche
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

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: 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: