Cuprins:

Proiectarea unui controler asociat asociat de cache simplu în patru direcții în VHDL: 4 pași
Proiectarea unui controler asociat asociat de cache simplu în patru direcții în VHDL: 4 pași

Video: Proiectarea unui controler asociat asociat de cache simplu în patru direcții în VHDL: 4 pași

Video: Proiectarea unui controler asociat asociat de cache simplu în patru direcții în VHDL: 4 pași
Video: Citroen DS 1973 - Cea mai Complexă Mașină din Toate Timpurile 2024, Noiembrie
Anonim
Proiectarea unui controler cache asociativ simplu cu patru căi în VHDL
Proiectarea unui controler cache asociativ simplu cu patru căi în VHDL

În instrucțiunile mele anterioare, am văzut cum să proiectăm un controler de cache direct mapat simplu. De data aceasta, mergem cu un pas înainte. Vom proiecta un controler cache asociativ simplu cu patru căi. Avantaj? Mai puțin rate de rate, dar cu prețul performanței. La fel ca blogul meu anterior, am fi proiectat și emulat un întreg procesor, memorie principală și mediu cache pentru a testa controlerul nostru cache. Sper că veți găsi acest lucru ca o referință utilă pentru a înțelege conceptele și a vă proiecta propriile controlere cache în viitor. Deoarece modelul procesorului (test bench) și sistemul de memorie principal sunt exact aceleași cu blogul meu anterior, nu le voi explica din nou. Vă rugăm să consultați instrucțiunile anterioare pentru detalii referitoare la aceasta.

Pasul 1: Specificații

Specificații
Specificații

Privire rapidă prin specificațiile controlerului cache prezentate aici:

  • Setare în patru direcții Asociative Cache Controller (accesați acest link dacă căutați un controler de cache direct mapat).
  • Memorie cache unică, blocată.
  • Politica de scriere prin intermediul hiturilor de scriere.
  • Politica de scriere în jurul valorii de scriere.
  • Tree Pseudo-LRU (pLRU) Politica de înlocuire.
  • Tag Array în cadrul controlerului.
  • Parametri configurabili.

Specificațiile prestabilite pentru memoria cache și memoria principală sunt aceleași ca și pentru instructiunile mele anterioare. Vă rugăm să vă referiți la ele.

Pasul 2: Vizualizare RTL a întregului sistem

Vizualizare RTL a întregului sistem
Vizualizare RTL a întregului sistem

Reprezentarea completă RTL a modulului superior este prezentată în figură (cu excepția procesorului). Specificațiile implicite pentru autobuze sunt:

  • Toate magistralele de date sunt magistrale pe 32 de biți.
  • Address Bus = 32-bit Bus (Dar doar 10 biți sunt adresabili aici de memorie).
  • Bloc de date = 128 biți (magistrală cu lățime de bandă largă pentru citire).
  • Toate componentele sunt acționate de același ceas.

Pasul 3: Rezultatele testelor

Modulul superior a fost testat folosind un banc de testare, care modelează pur și simplu un procesor fără conductă, așa cum am făcut în ultimul instructable. Test Bank generează frecvent cereri de citire / scriere în memorie. Acest lucru bate în joc instrucțiunile tipice „Încărcare” și „Stocare”, obișnuite în toate programele executate de un procesor.

Rezultatele testului au verificat cu succes funcționalitatea controlerului cache. Următoarele sunt statisticile de testare observate:

  • Toate semnalele de citire / scriere Miss și Hit au fost generate corect.
  • Toate operațiile de citire / scriere a datelor au avut succes în toate cele patru moduri.
  • Algoritmul pLRU este verificat cu succes pentru înlocuirea liniilor cache.
  • Nu s-au detectat probleme de incoerență / inconsecvență a datelor.
  • Proiectarea a fost verificată cu succes pentru un Maxm. Frecvența de funcționare a ceasului = 100 MHz în placa Xilinx Virtex-4 ML-403 (întreg sistem), 110 MHz numai pentru Cache Controller.
  • Au fost deduse blocuri RAM pentru memoria principală. Toate celelalte matrice au fost implementate pe LUT-uri.

Pasul 4: Fișiere atașate

Următoarele fișiere sunt atașate aici cu acest blog:

  • Fișiere. VHD ale Cache Controller, Cache Data Array, Main Memory System.
  • Test Bank.
  • Documentație despre controlerul cache.

Note:

  • Consultați documentația pentru înțelegerea completă a specificațiilor controlerului cache prezentate aici.
  • Orice modificare a codului depinde de alte module. Deci, schimbările ar trebui făcute judicios.
  • Acordați atenție tuturor comentariilor și antetelor pe care le-am dat.
  • Dacă, din orice motiv, blocurile RAM nu sunt deduse pentru memoria principală, REDUȚI dimensiunea memoriei, urmată de modificări ale lățimilor magistralei de adresă din fișiere și așa mai departe. Astfel, aceeași memorie poate fi implementată fie pe LUT-uri, fie pe RAM distribuită. Acest lucru va economisi timpul și resursele de rutare. Sau accesați documentația specifică FPGA și găsiți codul compatibil pentru Block RAM și editați codul în consecință și utilizați aceleași specificații ale lățimii magistralei de adrese. Aceeași tehnică pentru Altera FPGA.

Recomandat: