Indholdsfortegnelse:

Design af en simpel cache -controller i VHDL: 4 trin
Design af en simpel cache -controller i VHDL: 4 trin

Video: Design af en simpel cache -controller i VHDL: 4 trin

Video: Design af en simpel cache -controller i VHDL: 4 trin
Video: Shradha didi at lpu 🤩 #apna college #viralshorts 2024, Juni
Anonim
Design af en simpel cache -controller i VHDL
Design af en simpel cache -controller i VHDL

Jeg skriver dette instruerbart, fordi jeg fandt det lidt svært at få en reference -VHDL -kode til at lære og begynde at designe en cache -controller. Så jeg designede selv en cache -controller fra bunden og testede den med succes på FPGA. Jeg har præsenteret en simpel direkte kortlagt cachecontroller her, samt modelleret et helt processor-hukommelsessystem til at teste cache-controlleren. Jeg håber, at I finder dette instruktivt nyttigt som reference til at designe jeres egne cachecontrollere.

Trin 1: Specifikationer

specifikationer
specifikationer

Disse er hovedspecifikationerne for den cache -controller, vi skal designe:

  • Direkte kortlagt. (gå til dette link, hvis du leder efter Associative Mapped Cache Controller)
  • Enkeltbanket, blokerende cache.
  • Gennemførelsespolitik for skrivehits.
  • Tildel ikke-skriv eller skriv rundt-politik om skrive-savner.
  • Ingen skrivebuffer eller andre optimeringer.
  • Tag Array er inkorporeret.

Udover det vil vi også designe en cachehukommelse og et hovedhukommelsessystem.

Standardspecifikationerne for cachehukommelsen:

  • 256 Bytes enkeltbanket cache.
  • 16 cachelinjer, hver cachelinje (blok) = 16 bytes.

Specifikationerne for hovedhukommelsen:

  • Synkron læse-/skrivehukommelse.
  • Multi -banket interleaved hukommelse - fire hukommelsesbanker.
  • Hver bankstørrelse = 1 kB hver. Derfor er den samlede størrelse = 4 kB.
  • Word (4 Bytes) adresserbar hukommelse med 10-bit adressebus.
  • Højere båndbredde til læsning. Læs databredde = 16 Bytes i en urcyklus.
  • Skriv databredde = 4 Bytes.

BEMÆRK: tjek min nyere instruerbare, hvis du leder efter 4-vejs associeret cache-controller-design

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: Testmiljø

Topmodulet blev testet ved hjælp af en testbænk, der simpelthen modellerer en ikke-pipelineret processor (fordi det slet ikke er let at designe en hel processor !!). 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 operationer med læse/skrive data lykkedes.
  • Der blev ikke fundet problemer med datainkoherens/inkonsistens.
  • Designet blev med succes verificeret for en maks. Ur Driftsfrekvens = 110 MHz i Xilinx Virtex-4 ML-403 Board (hele systemet), 195 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: