Sisukord:

Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is: 4 sammu
Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is: 4 sammu

Video: Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is: 4 sammu

Video: Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is: 4 sammu
Video: FeiyuTech G6 Plus universaalne videostabilisaator! 2024, Juuni
Anonim
Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is
Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is

Minu eelmises juhendis nägime, kuidas kujundada lihtne otsene kaardistatud vahemälu kontroller. Seekord liigume sammu edasi. Kavandame lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri. Eelis? Vähem vahelejäämissagedust, kuid jõudluse hinnaga. Nii nagu minu eelmine ajaveeb, kujundaksime ja jäljendaksime kogu vahemälu kontrolleri testimiseks kogu protsessorit, põhimälu ja vahemälu keskkonda. Loodan, et te leiate, et see on kasulik viide mõistete mõistmiseks ja tulevikus oma vahemälu kontrollerite kujundamiseks. Kuna protsessori (katsestendi) mudel ja põhimälusüsteem on täpselt samad, mis mu eelmisel blogil, ei hakka ma neid uuesti selgitama. Palun vaadake selle kohta üksikasju eelmisest juhendist.

Samm: spetsifikatsioonid

Tehnilised andmed
Tehnilised andmed

Kiire ülevaade siin esitatud vahemälu kontrolleri spetsifikatsioonidest:

  • Neljasuunaline seostuv vahemälu kontroller (minge sellele lingile, kui otsite otsest kaardistatud vahemälu kontrollerit).
  • Ühe pangaga blokeeriv vahemälu.
  • Kirjutamispoliitika kirjutamishittide kohta.
  • Ümbritseva ümberkirjutamise eeskirjad kirjutamisvigu.
  • Pseudo-LRU (pLRU) asenduspoliitika.
  • Tag Array kontrolleris.
  • Konfigureeritavad parameetrid.

Vahemälu ja põhimälu vaikespetsifikatsioonid on samad, mis minu eelmisel juhendil. Palun viidake neile.

2. samm: kogu süsteemi RTL -vaade

RTL vaade kogu süsteemile
RTL vaade kogu süsteemile

Ülemise mooduli täielik RTL -esitus on näidatud joonisel (välja arvatud protsessor). Busside vaikespetsifikatsioonid on järgmised:

  • Kõik andmebussid on 32-bitised.
  • Aadressibuss = 32-bitine siin (kuid mälu abil saab siin adresseerida ainult 10 bitti).
  • Andmeplokk = 128 bitti (laia ribalaiusega siin lugemiseks).
  • Kõiki komponente juhib sama kell.

3. samm: testitulemused

Ülemoodulit testiti testpingi abil, mis lihtsalt modelleerib torustikuta protsessorit, nagu me tegime viimases juhendis. Testpink genereerib mälule sageli lugemis-/kirjutamisandmeid. See pilkab tüüpilisi "Laadi" ja "Salvesta" juhiseid, mis on levinud kõikides protsessori poolt käivitatud programmides.

Katsetulemused kinnitasid edukalt vahemälu kontrolleri funktsionaalsuse. Järgnevalt on täheldatud testistatistikat:

  • Kõik lugemis-/kirjutamis- ja vastamata signaalid genereeriti õigesti.
  • Kõik andmete lugemise/kirjutamise toimingud olid edukad kõigil neljal viisil.
  • pLRU algoritm on vahemälu ridade asendamiseks edukalt kontrollitud.
  • Andmete ebajärjekindluse/vastuolu probleeme ei tuvastatud.
  • Kujundus oli Maxmi jaoks edukalt ajastatud. Kell Töösagedus = 100 MHz Xilinx Virtex-4 ML-403 pardal (kogu süsteem), 110 MHz ainult vahemälu kontrolleri jaoks.
  • Põhimälu jaoks järeldati plokk -RAM -id. Kõik muud massiivid rakendati LUT -idel.

Samm: manustatud failid

Selle ajaveebi juurde on lisatud järgmised failid:

  • Vahemälu kontrolleri, vahemäluandmete massiivi, põhimälusüsteemi. VHD -failid.
  • Testpink.
  • Vahemälu kontrolleri dokumentatsioon.

Märkused:

  • Siin esitatud vahemälu kontrolleri spetsifikatsioonide täielikuks mõistmiseks lugege dokumentatsiooni.
  • Kõik koodi muudatused sõltuvad teistest moodulitest. Seetõttu tuleks muudatusi teha mõistlikult.
  • Pöörake tähelepanu kõikidele kommentaaridele ja päistele, mille olen andnud.
  • Kui mingil põhjusel ei järeldata plokk -RAM -e põhimälu kohta, VÄHENDA mälu suurust, millele järgneb failide aadressibussi laiuse muutmine jne. Nii et sama mälu saab rakendada kas LUT -idel või hajutatud RAM -il. See säästab marsruutimise aega ja ressursse. Või minge konkreetse FPGA dokumentatsiooni juurde ja leidke ühilduv kood Block RAM -i jaoks ning muutke koodi vastavalt ja kasutage samu aadressibussi spetsifikatsioone. Sama tehnika Altera FPGA -de puhul.

Soovitan: