Sisällysluettelo:

Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta

Video: Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta

Video: Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Video: Näin tyhjennät tietokoneen ja poistat valmistajan asentamat ylimääräiset ohjelmat 2024, Marraskuu
Anonim
Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä
Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä

Kirjoitan tämän ohjeellisen, koska minusta oli hieman vaikeaa saada viite -VHDL -koodi oppia ja aloittaa välimuistiohjaimen suunnittelu. Joten suunnittelin välimuistiohjaimen itse tyhjästä ja testasin sen onnistuneesti FPGA: lla. Olen esittänyt täällä yksinkertaisen suoran kartoitetun välimuistiohjaimen sekä mallinnanut koko prosessorimuistijärjestelmän välimuistiohjaimen testaamiseksi. Toivon, että pidätte tätä opettavaista hyödyllisenä viitteenä oman välimuistiohjaimen suunnittelussa.

Vaihe 1: Tekniset tiedot

Tekniset tiedot
Tekniset tiedot

Nämä ovat suunnittelemamme välimuistiohjaimen tärkeimmät tiedot:

  • Suora kartoitettu. (siirry tästä linkistä, jos etsit Associative Mapped Cache Controller)
  • Yhden pankin estovälimuisti.
  • Kirjoituskäytäntö kirjoitusosumissa.
  • Ei kirjoitusvarausta tai kirjoituspolitiikka kirjoitusvirheille.
  • Ei kirjoituspuskuria tai muita optimointeja.
  • Tag Array on sisällytetty.

Tämän lisäksi suunnittelemme myös välimuistin ja päämuistijärjestelmän.

Välimuistin oletusarvot (konfiguroitavat):

  • 256 tavun yhden pankin välimuisti.
  • 16 välimuistiriviä, jokainen välimuistirivi (lohko) = 16 tavua.

Päämuistin tekniset tiedot:

  • Synkroninen luku-/kirjoitusmuisti.
  • Monipankkinen lomitettu muisti - neljä muistipankkia.
  • Kunkin pankin koko = 1 kB. Kokonaiskoko = 4 kt.
  • Word (4 tavua) osoitettava muisti ja 10-bittinen osoiteväylä.
  • Suurempi kaistanleveys lukemista varten. Datan leveys = 16 tavua yhden kellosyklin aikana.
  • Kirjoita datan leveys = 4 tavua.

HUOMAUTUS: tarkista uudemmat ohjeet, jos etsit 4-suuntaista assosiatiivista välimuistiohjainta

Vaihe 2: RTL -näkymä koko järjestelmästä

RTL -näkymä koko järjestelmästä
RTL -näkymä koko järjestelmästä

Kuvassa on esitetty ylämoduulin täydellinen RTL -esitys (lukuun ottamatta prosessoria). Bussien oletusasetukset ovat:

  • Kaikki tietoväylät ovat 32-bittisiä.
  • Osoiteväylä = 32-bittinen väylä (mutta vain 10 bittiä voidaan käsitellä täällä muistilla).
  • Datalohko = 128 bittiä (laajakaistainen väylä lukemista varten).
  • Kaikkia komponentteja ohjaa sama kello.

Vaihe 3: Testaa ympäristö

Ylämoduulia testattiin käyttämällä testipenkkiä, joka yksinkertaisesti mallintaa ei-putkiprosessoria (koska koko prosessorin suunnittelu ei ole ollenkaan helppoa !!). Testipenkki luo luku-/kirjoitusdatapyyntöjä muistiin usein. Tämä pilkkaa tyypillisiä "Lataa" ja "Tallenna" -ohjeita, jotka ovat yleisiä kaikissa suorittimen suorittamissa ohjelmissa. Testitulokset varmistivat välimuistiohjaimen toimivuuden. Seuraavat testitilastot ovat havaittuja:

  • Kaikki luku-/kirjoitushäiriö- ja osuma -signaalit luotiin oikein.
  • Kaikki luku-/kirjoitusdatan toiminnot onnistuivat.
  • Tietojen epäjohdonmukaisuus-/epäjohdonmukaisuusongelmia ei havaittu.
  • Suunnittelun ajoitus vahvistettiin onnistuneesti Maxm: lle. Kello Toimintataajuus = 110 MHz Xilinx Virtex-4 ML-403 -kortilla (koko järjestelmä), 195 MHz pelkällä välimuistiohjaimella.
  • Lohkomuistit pääteltiin päämuistia varten. Kaikki muut taulukot toteutettiin LUT -laitteilla.

Vaihe 4: Liitetyt tiedostot

Seuraavat tiedostot on liitetty tähän blogiin:

  • . HDHD -tiedostot välimuistiohjaimesta, välimuistitiedostoista, päämuistijärjestelmästä.
  • Testipenkki.
  • Välimuistiohjaimen dokumentaatio.

Huomautuksia:

  • Käy läpi asiakirjat, jotta ymmärrät täydellisesti tässä esitetyt välimuistiohjaimen tekniset tiedot.
  • Kaikki koodin muutokset ovat riippuvaisia muista moduuleista. Muutokset on siis tehtävä harkiten. Kiinnitä huomiota kaikkiin antamiisi kommentteihin ja otsikoihin.
  • Jos jostain syystä Estä RAM -muistia ei päätellä päämuistia varten, PIENENNÄ muistin kokoa, minkä jälkeen muuttuvat osoiteväylän leveydet tiedostoissa ja niin edelleen. Jotta sama muisti voidaan toteuttaa joko LUT -laitteissa tai hajautetussa RAM -muistissa. Tämä säästää reititysaikaa ja resursseja. Tai, siirry tiettyyn FPGA -dokumentaatioon ja etsi yhteensopiva koodi Block RAM -muistiin ja muokkaa koodia vastaavasti ja käytä samoja osoiteväyläleveyksiä. Sama tekniikka Altera FPGA -laitteille.

Suositeltava: