Innehållsförteckning:

Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg

Video: Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg

Video: Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg
Video: Grafing enkel oppskrift AB design 2024, November
Anonim
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL

I min tidigare instruerbara, såg vi hur man utformar en enkel direkt mappad cache -kontroller. Den här gången går vi ett steg framåt. Vi kommer att utforma en enkel fyrvägsuppsättning associerad cache-kontroller. Fördel? Mindre missfrekvens, men på bekostnad av prestanda. Precis som min tidigare blogg skulle vi designa och efterlikna en hel processor, huvudminne och cachemiljö för att testa vår cachekontroller. Jag hoppas att ni tycker att detta är en användbar referens för att förstå begreppen och designa era egna cachekontroller i framtiden. Eftersom modellen för processor (testbänk) och huvudminnessystemet är exakt samma som min tidigare blogg kommer jag inte att förklara dem igen. Vänligen se den föregående instruktionsboken för detaljer om den.

Steg 1: Specifikationer

Specifikationer
Specifikationer

Snabb titt genom specifikationerna för Cache Controller som presenteras här:

  • Four-way Set Associative Cache Controller (gå till den här länken om du letar efter Direct Mapped Cache Controller).
  • Enbankad, blockerande cache.
  • Genomskrivningspolicy för skrivträffar.
  • Skriv-runt-policy för skrivmissar.
  • Tree Pseudo-LRU (pLRU) ersättningspolicy.
  • Tag Array inom handkontrollen.
  • Konfigurerbara parametrar.

Standardspecifikationer för cacheminne och huvudminne är desamma som från min tidigare instruerbara. Vänligen hänvisa till dem.

Steg 2: RTL -vy av hela systemet

RTL -vy över hela systemet
RTL -vy över hela systemet

Komplett RTL -representation av toppmodulen visas i figuren (exklusive processorn). Standardspecifikationer för bussarna är:

  • Alla databussar är 32-bitars bussar.
  • Adressbuss = 32-bitars buss (men endast 10 bitar kan adresseras här av minnet).
  • Datablock = 128 bitar (Wide Bandwidth Bus for Read).
  • Alla komponenter drivs av samma klocka.

Steg 3: Testresultat

Toppmodulen testades med en testbänk, som helt enkelt modellerar en icke-pipelinerad processor, precis som vi gjorde i den senaste instruktionen. Testbänken genererar ofta läs-/skrivdataförfrågningar till minnet. Detta hånar typiska "Load" och "Store" instruktioner, vanliga i alla program som körs av en processor.

Testresultaten har verifierat funktionen hos cachekontrollern. Följande är teststatistiken som observerats:

  • Alla läs/skriv miss- och träffsignaler genererades korrekt.
  • Alla läs-/skrivdataoperationer lyckades på alla fyra sätten.
  • pLRU -algoritmen har verifierats för ersättning av cachelinjer.
  • Inga datainkoherens/inkonsekvensproblem upptäcktes.
  • Designen lyckades tajma verifieras för en Maxm. Klocka Driftsfrekvens = 100 MHz i Xilinx Virtex-4 ML-403 Board (hela systemet), 110 MHz för Cache Controller ensam.
  • Block RAM -minnen utlästes för huvudminnet. Alla andra matriser implementerades på LUT.

Steg 4: Bifogade filer

Följande filer bifogas här med denna blogg:

  • . VHD -filer från Cache Controller, Cache Data Array, Main Memory System.
  • Testbänk.
  • Dokumentation om Cache Controller.

Anmärkningar:

  • Gå igenom dokumentationen för fullständig förståelse av specifikationerna för Cache Controller som presenteras här.
  • Eventuella ändringar i koden är beroende av andra moduler. Så, ändringarna bör göras på ett klokt sätt.
  • Var uppmärksam på alla kommentarer och rubriker som jag har gett.
  • Om det av någon anledning inte utläses block -RAM för huvudminnet, MINSKA storleken på minnet, följt av ändringar i adressbussbredder över filerna och så vidare. Så att samma minne kan implementeras antingen på LUT eller distribuerat RAM. Detta sparar tid och resurser. Eller, gå till den specifika FPGA -dokumentationen och hitta den kompatibla koden för Block RAM och redigera koden i enlighet därmed och använd samma adressbussbreddsspecifikationer. Samma teknik för Altera FPGA.

Rekommenderad: