INHOUDSOPGAWE:

Ontwerp van 'n eenvoudige kasbeheerder in VHDL: 4 stappe
Ontwerp van 'n eenvoudige kasbeheerder in VHDL: 4 stappe

Video: Ontwerp van 'n eenvoudige kasbeheerder in VHDL: 4 stappe

Video: Ontwerp van 'n eenvoudige kasbeheerder in VHDL: 4 stappe
Video: GCT - MasterClass - Hoe schrijf je een Bedrijfsplan - Afl. 2. De Marketing en Fin. overwegingen. 2024, November
Anonim
Ontwerp van 'n eenvoudige kasbestuurder in VHDL
Ontwerp van 'n eenvoudige kasbestuurder in VHDL

Ek skryf hierdie instruksies, want ek het dit moeilik gevind om 'n verwysing -VHDL -kode te kry om te leer en 'n kasbestuurder te begin ontwerp. Ek het dus self 'n kasbeheerder ontwerp en dit met sukses op FPGA getoets. Ek het 'n eenvoudige direkte gekarteerde kasbestuurder hier aangebied, sowel as 'n volledige verwerker-geheuestelsel gemodelleer om die kasbestuurder te toets. Ek hoop dat u hierdie instruksies nuttig vind as 'n verwysing na die ontwerp van u eie kasbeheerders.

Stap 1: Spesifikasies

Spesifikasies
Spesifikasies

Dit is die belangrikste spesifikasies van die Cache Controller wat ons gaan ontwerp:

  • Direk gekarteer. (gaan na hierdie skakel as u op soek is na 'n Associated Mapped Cache Controller)
  • Enkelbank, blokkerende kas.
  • Deurskrywingsbeleid oor skryf treffers.
  • Geen-skryf-toewysings- of skryf-om-beleid oor skryf-missies.
  • Geen skryfbuffer of ander optimalisering nie.
  • Tag Array is opgeneem.

Boonop sal ons ook 'n kasgeheue en 'n hoofgeheue -stelsel ontwerp.

Die standaard (konfigureerbare) spesifikasies van die kasgeheue:

  • 256 Bytes kas met enkelbank.
  • 16 kaslyne, elke kaslyn (blok) = 16 grepe.

Die spesifikasies van die hoofgeheue:

  • Sinchroniese lees-/skryfgeheue.
  • Multi -bank interleaved geheue - vier geheue banke.
  • Elke bankgrootte = 1 kB elk. Daarom is die totale grootte = 4 kB.
  • Word (4 Bytes) adresbare geheue met 10-bis adresbus.
  • Hoër bandwydte vir lees. Lees data breedte = 16 Bytes in een klok siklus.
  • Skryf data breedte = 4 grepe.

LET WEL: kyk na my nuwer instruksies as u op soek is na 'n 4-rigting ontwerp van 'n assosiatiewe kasbeheerder

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

Die boonste module is getoets met 'n toetsbank, wat eenvoudig 'n nie-pyplynverwerker modelleer (want dit is glad nie maklik om 'n hele verwerker te ontwerp nie!). 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 suksesvol.
  • Geen probleme met onsamehangendheid/inkonsekwentheid van data bespeur nie.
  • Die ontwerp is suksesvol vir 'n maksimum tydsberekening van tydsberekening. Klok Gereedheid van werking = 110 MHz in Xilinx Virtex-4 ML-403 Board (hele stelsel), 195 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: