Inhaltsverzeichnis:

Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL - Gunook
Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL - Gunook

Video: Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL - Gunook

Video: Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL - Gunook
Video: CS50 2013 - Week 9 2024, November
Anonim
Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL
Entwurf eines einfachen 4-Wege-Set-assoziativen Cache-Controllers in VHDL

In meinem vorherigen anweisbaren haben wir gesehen, wie man einen einfachen direkt zugeordneten Cache-Controller entwirft. Diesmal gehen wir einen Schritt weiter. Wir werden einen einfachen 4-Wege-Set-assoziativen Cache-Controller entwerfen. Vorteil ? Weniger Fehler, aber auf Kosten der Leistung. Genau wie in meinem vorherigen Blog würden wir eine komplette Prozessor-, Hauptspeicher- und Cache-Umgebung entwerfen und emulieren, um unseren Cache-Controller zu testen. Ich hoffe, Sie finden dies als nützliche Referenz, um die Konzepte zu verstehen und in Zukunft Ihre eigenen Cache-Controller zu entwickeln. Da das Modell für Prozessor (Prüfstand) und das Hauptspeichersystem exakt identisch mit meinem vorherigen Blog sind, werde ich sie nicht noch einmal erklären. Einzelheiten dazu finden Sie in der vorherigen Anleitung.

Schritt 1: Spezifikationen

Spezifikationen
Spezifikationen

Ein kurzer Blick durch die Spezifikationen des hier vorgestellten Cache-Controllers:

  • Vier-Wege-Set Assoziativer Cache-Controller (gehen Sie zu diesem Link, wenn Sie nach Direct Mapped Cache Controller suchen).
  • Single-Banked, blockierender Cache.
  • Write-Through-Richtlinie für Schreibtreffer.
  • Write-Around-Richtlinie bei Schreibfehlern.
  • Richtlinie zum Ersetzen von Baum-Pseudo-LRU (pLRU).
  • Tag-Array innerhalb des Controllers.
  • Konfigurierbare Parameter.

Die Standardspezifikationen für Cache-Speicher und Hauptspeicher sind die gleichen wie von meinem vorherigen instructable. Bitte beziehen Sie sich auf sie.

Schritt 2: RTL-Ansicht des gesamten Systems

RTL-Ansicht des gesamten Systems
RTL-Ansicht des gesamten Systems

Die vollständige RTL-Darstellung des Top-Moduls ist in der Abbildung dargestellt (ohne Prozessor). Die Standardspezifikationen für die Busse sind:

  • Alle Datenbusse sind 32-Bit-Busse.
  • Adressbus = 32-Bit-Bus (aber hier sind nur 10 Bits vom Speicher adressierbar).
  • Datenblock = 128 Bit (Bus mit breiter Bandbreite zum Lesen).
  • Alle Komponenten werden von derselben Uhr angetrieben.

Schritt 3: Testergebnisse

Das Top-Modul wurde mit einem Prüfstand getestet, der einfach einen nicht Pipeline-Prozessor modelliert, genau wie wir es im letzten instructable getan haben. Der Prüfstand generiert häufig Lese-/Schreibdatenanforderungen an den Speicher. Dies verspottet typische "Load"- und "Store"-Befehle, die in allen von einem Prozessor ausgeführten Programmen gemeinsam sind.

Die Testergebnisse haben die Funktionalität des Cache Controllers erfolgreich verifiziert. Im Folgenden sind die beobachteten Teststatistiken aufgeführt:

  • Alle Read/Write Miss- und Hit-Signale wurden korrekt generiert.
  • Alle Operationen zum Lesen/Schreiben von Daten waren auf alle vier Arten erfolgreich.
  • Der pLRU-Algorithmus wird erfolgreich auf das Ersetzen von Cache-Zeilen verifiziert.
  • Keine Dateninkhärenz-/Inkonsistenzprobleme festgestellt.
  • Das Design wurde erfolgreich für ein Maxm-Timing verifiziert. Taktfrequenz des Betriebs = 100 MHz in Xilinx Virtex-4 ML-403 Board (gesamtes System), 110 MHz für Cache Controller allein.
  • Für den Hauptspeicher wurden Block-RAMs abgeleitet. Alle anderen Arrays wurden auf LUTs implementiert.

Schritt 4: Angehängte Dateien

Folgende Dateien sind hier mit diesem Blog angehängt:

  • . VHD-Dateien von Cache Controller, Cache Data Array, Hauptspeichersystem.
  • Prüfstand.
  • Dokumentation zum Cache-Controller.

Anmerkungen:

  • Gehen Sie die Dokumentation durch, um die Spezifikationen des hier vorgestellten Cache-Controllers vollständig zu verstehen.
  • Alle Änderungen im Code sind von anderen Modulen abhängig. Die Änderungen sollten also mit Bedacht vorgenommen werden.
  • Beachten Sie alle Kommentare und Überschriften, die ich gegeben habe.
  • Wenn aus irgendeinem Grund Block-RAMs für den Hauptspeicher nicht abgeleitet werden, REDUZIEREN Sie die Größe des Speichers, gefolgt von Änderungen der Adressbusbreiten über die Dateien hinweg und so weiter. Damit der gleiche Speicher entweder auf LUTs oder Distributed RAM implementiert werden kann. Dies spart Zeit und Ressourcen für das Routing. Oder gehen Sie zur spezifischen FPGA-Dokumentation und suchen Sie den kompatiblen Code für Block-RAM und bearbeiten Sie den Code entsprechend und verwenden Sie die gleichen Adressbusbreitenspezifikationen. Gleiche Technik für Altera FPGAs.

Empfohlen: