INHOUDSOPGAWE:

Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL: 4 stappe
Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL: 4 stappe

Video: Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL: 4 stappe

Video: Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL: 4 stappe
Video: Het MADE TO STICK principe: zo maak je een goede video 2024, November
Anonim
Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL
Ontwerp van 'n eenvoudige vierweg-stel assosiatiewe kasbeheerder in VHDL

In my vorige instruksies het ons gesien hoe om 'n eenvoudige direkte gekarteerde kasbeheerder te ontwerp. Hierdie keer beweeg ons 'n stap vorentoe. Ons ontwerp 'n eenvoudige assosiatiewe kasbestuurder met vier rigtings. Voordeel? Minder misvermindering, maar ten koste van prestasie. Net soos my vorige blog, ontwerp en emuleer ons 'n hele verwerker, hoofgeheue en kasomgewing om ons kasbeheerder te toets. Ek hoop dat u dit as 'n nuttige verwysing vind om die konsepte te verstaan en in die toekoms u eie kasbeheerders te ontwerp. Aangesien die model vir verwerker (toetsbank) en die hoofgeheue stelsel presies dieselfde is as my vorige blog, sal ek dit nie weer verduidelik nie. Raadpleeg die vorige instruksies vir meer inligting hieroor.

Stap 1: Spesifikasies

Spesifikasies
Spesifikasies

Kyk vinnig na die spesifikasies van die Cache Controller wat hier aangebied word:

  • Assosiatiewe kasbestuurder met vier rigtings (gaan na hierdie skakel as u op soek is na Direct Mapped Cache Controller).
  • Enkelbank, blokkerende kas.
  • Deurleesbeleid oor skryf treffers.
  • Skryf-rond beleid oor skryf-missies.
  • Tree Pseudo-LRU (pLRU) vervangingsbeleid.
  • Tag Array binne die beheerder.
  • Opstelbare parameters.

Die standaard spesifikasies vir die kasgeheue en die hoofgeheue is dieselfde as my vorige instruksies. Verwys asseblief na hulle.

Stap 2: RTL -aansig van die hele stelsel

RTL -aansig van die hele stelsel
RTL -aansig van die hele stelsel

Die volledige RTL -voorstelling van die boonste module word in die figuur getoon (die verwerker uitgesluit). Die standaard spesifikasies vir die busse is:

  • Alle databusse is 32-bis-busse.
  • Adresbus = 32-bis-bus (maar slegs 10 bisse kan hier deur die geheue aangespreek word).
  • Datablok = 128 bis (Wide Bandwidth Bus for Read).
  • Alle komponente word deur dieselfde klok aangedryf.

Stap 3: Toetsresultate

Die topmodule is getoets met behulp van 'n toetsbank, wat net 'n nie-pyplynverwerker modelleer, net soos ons in die laaste instruksies gedoen het. Die toetsbank genereer gereeld lees-/skryfdata -versoeke na die geheue. Dit bespot tipiese instruksies "Laai" en "Stoor", wat algemeen voorkom in alle programme wat deur 'n verwerker uitgevoer word.

Die toetsresultate het die funksie van die kasgeheue -kontroleerder suksesvol geverifieer. Hier volg die toetsstatistieke:

  • Alle Lees/Skryf Mej en tref seine is korrek gegenereer.
  • Alle lees-/skryfdatabewerkings was op al vier maniere suksesvol.
  • pLRU -algoritme is suksesvol geverifieer vir die vervanging van kaslyne.
  • Geen probleme met onsamehangendheid/inkonsekwentheid van data bespeur nie.
  • Die ontwerp is suksesvol vir 'n maksimum tydsberekening van tydsberekening. Klok Gereedheid van werking = 100 MHz in Xilinx Virtex-4 ML-403 Board (hele stelsel), 110 MHz vir Cache Controller alleen.
  • Blok -RAM's is vir die hoofgeheue afgelei. Alle ander skikkings is op LUT's geïmplementeer.

Stap 4: aangehegte lêers

Die volgende lêers word hier by hierdie blog aangeheg:

  • . VHD -lêers van Cache Controller, Cache Data Array, Hoofgeheue -stelsel.
  • Toetsbank.
  • Dokumentasie oor kasbestuurder.

Notas:

  • Lees die dokumentasie deur vir 'n volledige begrip van die spesifikasies van die Cache Controller wat hier aangebied word.
  • Enige veranderinge in die kode is afhanklik van ander modules. Die veranderinge moet dus oordeelkundig gedoen word.
  • Gee aandag aan al die opmerkings en opskrifte wat ek gegee het.
  • As daar vir een of ander rede geen blok -RAM's vir die hoofgeheue afgelei word nie, VERMINDER die grootte van die geheue, gevolg deur veranderinge in adresbuswydtes oor die lêers, ensovoorts. Sodat dieselfde geheue op LUT's of verspreide RAM geïmplementeer kan word. Dit bespaar die routyd en hulpbronne. Of gaan na die spesifieke FPGA -dokumentasie en vind die versoenbare kode vir Block RAM en wysig die kode dienooreenkomstig, en gebruik dieselfde spesifikasies vir die adresbuswydte. Dieselfde tegniek vir Altera FPGA's.

Aanbeveel: