Indholdsfortegnelse:

Design af en simpel 4-vejs sæt associeret cache-controller i VHDL: 4 trin
Design af en simpel 4-vejs sæt associeret cache-controller i VHDL: 4 trin

Video: Design af en simpel 4-vejs sæt associeret cache-controller i VHDL: 4 trin

Video: Design af en simpel 4-vejs sæt associeret cache-controller i VHDL: 4 trin
Video: NEMMESTE HÆKLET BABYTÆPPE NOENSINDE!! 👼 Det ædru bedstemor babytæppe 🌸 The Secret Yarnery 2024, Juni
Anonim
Design af en simpel 4-vejs sæt associeret cache-controller i VHDL
Design af en simpel 4-vejs sæt associeret cache-controller i VHDL

I min tidligere instruerbare så vi, hvordan vi designede en simpel direkte kortlagt cache -controller. Denne gang går vi et skridt foran. Vi vil designe en simpel associeret cache-controller med fire veje. Fordel? Mindre fejlrate, men på bekostning af ydeevne. Ligesom min tidligere blog, ville vi designe og efterligne en hel processor, hovedhukommelse og cachemiljø for at teste vores cachecontroller. Jeg håber, at I finder dette som en nyttig reference til at forstå begreberne og designe jeres egne cachecontrollere i fremtiden. Da modellen til processor (testbænk) og hovedhukommelsessystemet er nøjagtig det samme som min tidligere blog, vil jeg ikke forklare dem igen. Se venligst den tidligere instruerbare for detaljer om det.

Trin 1: Specifikationer

specifikationer
specifikationer

Hurtigt kig gennem specifikationerne for Cache Controller præsenteret her:

  • Four-way Set Associative Cache Controller (gå til dette link, hvis du leder efter Direct Mapped Cache Controller).
  • Enkeltbanket, blokerende cache.
  • Gennemførelsespolitik for skrivehits.
  • Skriv-rundt-politik om skrivefejl.
  • Tree Pseudo-LRU (pLRU) udskiftningspolitik.
  • Tag Array i controlleren.
  • Konfigurerbare parametre.

Standardspecifikationer for cachehukommelse og hovedhukommelse er de samme som fra min tidligere instruerbare. Henvis venligst til dem.

Trin 2: RTL -visning af hele systemet

RTL -visning af hele systemet
RTL -visning af hele systemet

Komplet RTL -repræsentation af topmodulet er vist i figuren (undtagen processoren). Standardspecifikationer for busserne er:

  • Alle databusser er 32-bit busser.
  • Adressebus = 32-bit bus (men kun 10 bit kan adresseres her af hukommelsen).
  • Datablok = 128 bits (Wide Bandwidth Bus for Read).
  • Alle komponenter drives af det samme ur.

Trin 3: Testresultater

Topmodulet blev testet ved hjælp af en testbænk, der simpelthen modellerer en ikke-pipelineret processor, ligesom vi gjorde i den sidste instruerbare. Testbænken genererer ofte læse/skrive dataanmodninger til hukommelsen. Dette håner typiske "Load" og "Store" instruktioner, der er almindelige i alle programmer, der udføres af en processor.

Testresultaterne bekræftede succesfuldt cachecontrollerens funktionalitet. Følgende er teststatistikken observeret:

  • Alle Læs/skriv miss- og hit -signaler blev genereret korrekt.
  • Alle læse-/skrivedataoperationer var vellykkede på alle fire måder.
  • pLRU -algoritmen er med succes verificeret til udskiftning af cachelinjer.
  • Der blev ikke fundet problemer med datainkoherens/inkonsistens.
  • Designet blev med succes verificeret for en maks. Ur Driftsfrekvens = 100 MHz i Xilinx Virtex-4 ML-403 Board (hele systemet), 110 MHz til Cache Controller alene.
  • Blok -RAM'er blev udledt for hovedhukommelsen. Alle andre arrays blev implementeret på LUT'er.

Trin 4: Vedhæftede filer

Følgende filer er vedhæftet her med denne blog:

  • . VHD -filer fra Cache Controller, Cache Data Array, Main Memory System.
  • Testbænk.
  • Dokumentation om Cache Controller.

Bemærkninger:

  • Gennemgå dokumentationen for fuld forståelse af specifikationerne for cache -controlleren, der præsenteres her.
  • Eventuelle ændringer i koden afhænger af andre moduler. Så ændringerne bør gøres omhyggeligt.
  • Vær opmærksom på alle de kommentarer og overskrifter, jeg har givet.
  • Hvis der af en eller anden grund ikke udledes Block RAM'er for hovedhukommelsen, reducer hukommelsens størrelse efterfulgt af ændringer i adressebussbredder på tværs af filerne og så videre. Så den samme hukommelse kan implementeres enten på LUT'er eller distribueret RAM. Dette vil spare routing tid og ressourcer. Eller gå til den specifikke FPGA -dokumentation, og find den kompatible kode til Block RAM, og rediger koden i overensstemmelse hermed, og brug de samme adressebusbreddespecifikationer. Samme teknik for Altera FPGA'er.

Anbefalede: