Innholdsfortegnelse:

Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL: 4 trinn
Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL: 4 trinn

Video: Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL: 4 trinn

Video: Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL: 4 trinn
Video: 100+ Icarus Tips & Tricks to SURVIVE! Icarus Beginners Guide! Icarus First Cohort & Styx 2024, Juni
Anonim
Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL
Design av en enkel fire-veis sett assosiert cache-kontroller i VHDL

I min forrige instruktive så vi hvordan vi designer en enkel direkte kartlagt cachekontroller. Denne gangen går vi et skritt videre. Vi skal designe en enkel assosiativ cache-kontroller med fire veier. Fordel? Mindre glipprate, men på bekostning av ytelse. På samme måte som min forrige blogg, skulle vi designe og etterligne en hel prosessor, hovedminne og hurtigbuffermiljø for å teste hurtigbufferkontrolleren vår. Jeg håper dere finner dette som en nyttig referanse for å forstå konseptene og designe dine egne cachekontrollere i fremtiden. Siden modellen for prosessor (testbenk) og hovedminnesystemet er nøyaktig det samme som min forrige blogg, vil jeg ikke forklare dem igjen. Se den forrige instruksjonsboken for detaljer om den.

Trinn 1: Spesifikasjoner

Spesifikasjoner
Spesifikasjoner

Rask titt gjennom spesifikasjonene til Cache Controller presentert her:

  • Fire-veis sett assosiert cache-kontroller (gå til denne lenken hvis du ser etter Direct Mapped Cache Controller).
  • Enbanket, blokkerende hurtigbuffer.
  • Gjennomgående retningslinjer for skrivehit.
  • Skriv-rundt-retningslinjer for skrivefeil.
  • Retningslinjer for utskifting av Tree Pseudo-LRU (pLRU).
  • Tag Array i kontrolleren.
  • Konfigurerbare parametere.

Standardspesifikasjonene for hurtigbufferminne og hovedminne er de samme som fra min tidligere instruerbare. Vennligst referer til dem.

Trinn 2: RTL -visning av hele systemet

RTL -visning av hele systemet
RTL -visning av hele systemet

Komplett RTL -representasjon av toppmodulen er vist på figuren (unntatt prosessoren). Standard spesifikasjoner for bussene er:

  • Alle databusser er 32-biters busser.
  • Adressebuss = 32-biters buss (men bare 10 bits kan adresseres her av minnet).
  • Datablokk = 128 bits (Wide Bandwidth Bus for Read).
  • Alle komponenter drives av samme klokke.

Trinn 3: Testresultater

Toppmodulen ble testet ved hjelp av en testbenk, som ganske enkelt modellerer en prosessor uten rør, akkurat som vi gjorde i den siste instruksjonen. Testbenken genererer ofte forespørsler om lese/skrive data til minnet. Dette håner typiske "Last" og "Lagre" instruksjoner, vanlig i alle programmer som utføres av en prosessor.

Testresultatene bekreftet funksjonaliteten til hurtigbufferkontrolleren. Følgende er teststatistikken observert:

  • Alle Les/skriv miss og treffsignaler ble generert riktig.
  • Alle lese/skrive data operasjoner var vellykket på alle fire måter.
  • pLRU -algoritmen er vellykket bekreftet for erstatning av hurtigbufferlinjer.
  • Det er ikke oppdaget problemer med datainkoherens/inkonsekvens.
  • Designet ble vellykket timingbekreftet for en maks. Klokke Driftsfrekvens = 100 MHz i Xilinx Virtex-4 ML-403 Board (hele systemet), 110 MHz for Cache Controller alene.
  • Blokk -RAM ble utledet for hovedminnet. Alle andre matriser ble implementert på LUT.

Trinn 4: Vedlagte filer

Følgende filer er vedlagt her med denne bloggen:

  • . VHD -filer med Cache Controller, Cache Data Array, Main Memory System.
  • Test benk.
  • Dokumentasjon på Cache Controller.

Merknader:

  • Gå gjennom dokumentasjonen for full forståelse av spesifikasjonene til hurtigbufferkontrolleren som presenteres her.
  • Eventuelle endringer i koden er avhengige av andre moduler. Så endringene bør gjøres på en fornuftig måte.
  • Vær oppmerksom på alle kommentarene og overskriftene jeg har gitt.
  • Hvis det av en eller annen grunn ikke blir utledet Block RAM -er for hovedminnet, REDUSER størrelsen på minnet, etterfulgt av endringer i adressebussbredder på tvers av filene og så videre. Slik at det samme minnet kan implementeres enten på LUT eller distribuert RAM. Dette vil spare routing tid og ressurser. Eller gå til den spesifikke FPGA -dokumentasjonen og finn den kompatible koden for Block RAM og rediger koden deretter, og bruk de samme adressebussbreddespesifikasjonene. Samme teknikk for Altera FPGA.

Anbefalt: