Inhoudsopgave:

Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL - Ajarnpa
Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL - Ajarnpa

Video: Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL - Ajarnpa

Video: Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL - Ajarnpa
Video: De boodschappenlijsthack in Excel verandert alles + GRATIS DOWNLOAD 2024, December
Anonim
Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL
Ontwerp van een eenvoudige vierweg-set associatieve cachecontroller in VHDL

In mijn vorige instructable zagen we hoe we een eenvoudige direct toegewezen cachecontroller kunnen ontwerpen. Deze keer gaan we een stap verder. We gaan een eenvoudige associatieve cachecontroller met vier standen ontwerpen. Voordeel ? Minder fouten, maar ten koste van de prestaties. Net als mijn vorige blog, zouden we een volledige processor, hoofdgeheugen en cache-omgeving ontwerpen en emuleren om onze cachecontroller te testen. Ik hoop dat jullie dit een nuttige referentie vinden om de concepten te begrijpen en in de toekomst je eigen cachecontrollers te ontwerpen. Aangezien het model voor de processor (testbank) en het hoofdgeheugensysteem exact hetzelfde zijn als mijn vorige blog, zal ik ze niet nogmaals uitleggen. Raadpleeg de vorige instructable voor meer informatie hierover.

Stap 1: Specificaties:

Specificaties
Specificaties

Bekijk snel de specificaties van de Cache Controller die hier wordt gepresenteerd:

  • Four-way Set Associative Cache Controller (ga naar deze link als u op zoek bent naar Direct Mapped Cache Controller).
  • Single-Banked, blokkerende cache.
  • Doorschrijfbeleid voor schrijfhits.
  • Write-Around-beleid voor schrijffouten.
  • Tree Pseudo-LRU (pLRU) Vervangingsbeleid.
  • Tag Array binnen de controller.
  • Configureerbare parameters.

Standaardspecificaties voor cachegeheugen en hoofdgeheugen zijn hetzelfde als in mijn vorige instructable. Raadpleeg ze.

Stap 2: RTL-weergave van het hele systeem

RTL-weergave van het hele systeem
RTL-weergave van het hele systeem

De volledige RTL-weergave van de Top Module is weergegeven in de afbeelding (exclusief de processor). Standaardspecificaties voor de bussen zijn:

  • Alle databussen zijn 32-bits bussen.
  • Adresbus = 32-bits bus (maar slechts 10 bits zijn hier adresseerbaar door het geheugen).
  • Datablok = 128 bits (Wide Bandwidth Bus for Read).
  • Alle componenten worden aangedreven door dezelfde klok.

Stap 3: Testresultaten

De Top Module is getest met behulp van een testbank, die eenvoudig een niet-gepipelinede processor modelleert, net zoals we deden in de laatste instructable. De testbank genereert regelmatig lees-/schrijfgegevensverzoeken naar het geheugen. Dit bespot typische "Load" en "Store" instructies, gebruikelijk in alle programma's die door een processor worden uitgevoerd.

De testresultaten hebben de functionaliteit van de Cache Controller met succes geverifieerd. Hieronder volgen de waargenomen teststatistieken:

  • Alle Read/Write Miss- en Hit-signalen zijn correct gegenereerd.
  • Alle bewerkingen voor het lezen/schrijven van gegevens waren op alle vier de manieren succesvol.
  • pLRU-algoritme is met succes geverifieerd voor de vervanging van cacheregels.
  • Geen problemen met incoherentie/inconsistentie van gegevens gedetecteerd.
  • Het ontwerp is met succes gecontroleerd op timing voor een Maxm. Klokfrequentie van werking = 100 MHz in Xilinx Virtex-4 ML-403 Board (hele systeem), 110 MHz voor alleen cachecontroller.
  • Blok-RAM's werden afgeleid voor het hoofdgeheugen. Alle andere arrays zijn geïmplementeerd op LUT's.

Stap 4: Bijgevoegde bestanden

De volgende bestanden zijn hier bij deze blog bijgevoegd:

  • . VHD-bestanden van Cache Controller, Cache Data Array, Main Memory System.
  • Testbank.
  • Documentatie op Cache Controller.

Opmerkingen:

  • Ga door de documentatie voor een volledig begrip van de specificaties van de Cache Controller die hier wordt gepresenteerd.
  • Alle wijzigingen in de code zijn afhankelijk van andere modules. De veranderingen moeten dus oordeelkundig worden gedaan.
  • Besteed aandacht aan alle opmerkingen en headers die ik heb gegeven.
  • Als om welke reden dan ook blok-RAM's niet worden afgeleid voor het hoofdgeheugen, VERMINDER dan de grootte van het geheugen, gevolgd door wijzigingen in de adresbusbreedtes over de bestanden, enzovoort. Zodat hetzelfde geheugen kan worden geïmplementeerd op LUT's of gedistribueerd RAM. Dit bespaart de routeringstijd en middelen. Of ga naar de specifieke FPGA-documentatie en zoek de compatibele code voor Block RAM en bewerk de code dienovereenkomstig, en gebruik dezelfde adresbusbreedtespecificaties. Dezelfde techniek voor Altera FPGA's.

Aanbevolen: