Πίνακας περιεχομένων:

Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL: 4 βήματα
Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL: 4 βήματα

Βίντεο: Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL: 4 βήματα

Βίντεο: Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL: 4 βήματα
Βίντεο: Demystifying the AD Integrated DNS: Your Guide for IT Admins 2024, Νοέμβριος
Anonim
Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL
Σχεδιασμός ενός απλού ελεγκτή προσωρινής μνήμης σε VHDL

Γράφω αυτό με οδηγίες, γιατί μου φάνηκε λίγο δύσκολο να βρω κάποιον κώδικα αναφοράς VHDL για να μάθω και να αρχίσω να σχεδιάζω έναν ελεγκτή προσωρινής μνήμης. Έτσι σχεδίασα ένα χειριστήριο cache μόνος μου από την αρχή και το δοκίμασα με επιτυχία στο FPGA. Έχω παρουσιάσει έναν απλό άμεσο αντιστοιχισμένο ελεγκτή προσωρινής μνήμης, καθώς και ένα μοντέλο ενός ολόκληρου συστήματος επεξεργαστή-μνήμης για να δοκιμάσετε τον ελεγκτή προσωρινής μνήμης. Ελπίζω ότι θα βρείτε αυτό το διδακτικό χρήσιμο ως αναφορά στον σχεδιασμό των δικών σας ελεγκτών cache.

Βήμα 1: Προδιαγραφές

Προδιαγραφές
Προδιαγραφές

Αυτές είναι οι κύριες προδιαγραφές του Cache Controller που πρόκειται να σχεδιάσουμε:

  • Απευθείας αντιστοιχισμένη. (μεταβείτε σε αυτόν τον σύνδεσμο αν ψάχνετε για Associated Mapped Cache Controller)
  • Single-Banked, Blocking Cache.
  • Πολιτική εγγραφής για εγγραφή επισκέψεων.
  • No-Write διαθέσιμο ή Write Around Policy on Write misses.
  • Δεν υπάρχει Buffer εγγραφής ή άλλες βελτιστοποιήσεις.
  • Ο πίνακας ετικετών ενσωματώνεται.

Εκτός από αυτό, θα σχεδιάσουμε μια μνήμη Cache και ένα κύριο σύστημα μνήμης επίσης.

Οι προεπιλεγμένες (διαμορφώσιμες) προδιαγραφές της μνήμης Cache:

  • 256 Bytes Single-Banked Cache.
  • 16 γραμμές προσωρινής μνήμης, κάθε γραμμή προσωρινής μνήμης (μπλοκ) = 16 Bytes.

Οι προδιαγραφές της κύριας μνήμης:

  • Σύγχρονη μνήμη ανάγνωσης/εγγραφής.
  • Πολυτραπεζική Interleaved Memory - τέσσερις τράπεζες μνήμης.
  • Κάθε μέγεθος τράπεζας = 1 kB το καθένα. Επομένως, συνολικό μέγεθος = 4 kB.
  • Word (4 Bytes) διευθυνσιοδοτούμενη μνήμη με 10-bit Bus Bus.
  • Υψηλότερο εύρος ζώνης για ανάγνωση. Διαβάστε Πλάτος Δεδομένων = 16 Bytes σε έναν κύκλο ρολογιού.
  • Γράψτε Πλάτος Δεδομένων = 4 Bytes.

ΣΗΜΕΙΩΣΗ: Ελέγξτε το νεότερο μου εκπαιδευτικό αν ψάχνετε για σχεδιασμό συσχετιστικού ελεγκτή συσχέτισης 4 κατευθύνσεων

Βήμα 2: Προβολή RTL ολόκληρου του συστήματος

Προβολή RTL ολόκληρου του συστήματος
Προβολή RTL ολόκληρου του συστήματος

Πλήρης αναπαράσταση RTL της Κορυφαίας μονάδας εμφανίζεται στο σχήμα (εξαιρουμένου του επεξεργαστή). Οι προεπιλεγμένες προδιαγραφές για τα λεωφορεία είναι:

  • Όλα τα λεωφορεία δεδομένων είναι λεωφορεία 32 bit.
  • Διεύθυνση διαύλου = Λεωφορείο 32-bit (Αλλά μόνο 10 bits μπορούν να διευθυνσιοδοτηθούν εδώ από τη μνήμη).
  • Αποκλεισμός δεδομένων = 128 bits (Δίαυλος ευρείας ζώνης για ανάγνωση).
  • Όλα τα εξαρτήματα κινούνται από το ίδιο ρολόι.

Βήμα 3: Δοκιμή περιβάλλοντος

Το Top Module δοκιμάστηκε χρησιμοποιώντας ένα Test Bench, το οποίο απλώς μοντελοποιεί έναν επεξεργαστή χωρίς αγωγούς (Γιατί ο σχεδιασμός ενός ολόκληρου επεξεργαστή δεν είναι καθόλου εύκολος !!). Ο πάγκος δοκιμής δημιουργεί συχνά αιτήματα ανάγνωσης/εγγραφής δεδομένων στη μνήμη. Αυτό χλευάζει τις τυπικές οδηγίες "Φόρτωση" και "Αποθήκευση", κοινές σε όλα τα προγράμματα που εκτελούνται από έναν επεξεργαστή. Τα αποτελέσματα των δοκιμών επαλήθευσαν με επιτυχία τη λειτουργικότητα του Cache Controller. Ακολουθούν τα στατιστικά στοιχεία των δοκιμών που τηρούνται:

  • Όλα τα σήματα ανάγνωσης/εγγραφής Miss και Hit δημιουργήθηκαν σωστά.
  • Όλες οι λειτουργίες ανάγνωσης/εγγραφής δεδομένων ήταν επιτυχημένες.
  • Δεν εντοπίστηκαν προβλήματα ασυνέπειας/ασυνέπειας δεδομένων.
  • Ο Σχεδιασμός επαληθεύτηκε επιτυχώς ως χρονικός έλεγχος για Maxm. Ρολόι Συχνότητα λειτουργίας = 110 MHz στον πίνακα Xilinx Virtex-4 ML-403 (ολόκληρο το σύστημα), 195 MHz μόνο για τον ελεγκτή Cache.
  • Οι μνήμες RAM μπλοκ συνήχθησαν για την κύρια μνήμη. Όλες οι άλλες συστοιχίες εφαρμόστηκαν σε LUT.

Βήμα 4: Συνημμένα αρχεία

Τα ακόλουθα αρχεία επισυνάπτονται εδώ με αυτό το ιστολόγιο:

  • . VHD αρχεία Cache Controller, Cache Data Array, Main Memory System.
  • Πάγκος δοκιμής.
  • Τεκμηρίωση στο Cache Controller.

Σημειώσεις:

  • Περιηγηθείτε στην τεκμηρίωση για πλήρη κατανόηση των προδιαγραφών του Cache Controller που παρουσιάζονται εδώ.
  • Οποιεσδήποτε αλλαγές στον κώδικα εξαρτώνται από άλλες ενότητες. Επομένως, οι αλλαγές πρέπει να γίνουν με σύνεση. Δώστε προσοχή σε όλα τα σχόλια και τις επικεφαλίδες που έχω δώσει.
  • Εάν για οποιονδήποτε λόγο, τα Block RAM δεν συνάγονται για την κύρια μνήμη, ΜΕΙΩΤΕ το μέγεθος της μνήμης, ακολουθούμενη από αλλαγές στο πλάτος του διαύλου διευθύνσεων στα αρχεία και ούτω καθεξής. Έτσι ώστε η ίδια μνήμη να μπορεί να εφαρμοστεί είτε σε LUT είτε σε Distributed RAM. Αυτό θα εξοικονομήσει χρόνο και πόρους δρομολόγησης. Or, Μεταβείτε στη συγκεκριμένη τεκμηρίωση FPGA και βρείτε τον συμβατό κωδικό για Block RAM και επεξεργαστείτε τον κώδικα ανάλογα, και χρησιμοποιήστε τις ίδιες προδιαγραφές πλάτους διαύλου διευθύνσεων. Sδια τεχνική για τα Altera FPGA.

Συνιστάται: