Table des matières:
- Étape 1: Spécifications
- Étape 2: Vue RTL de l'ensemble du système
- Étape 3: Tester l'environnement
- Étape 4: Fichiers joints
Vidéo: Conception d'un contrôleur de cache simple en VHDL : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
J'écris ce instructable, car j'ai trouvé un peu difficile d'obtenir du code VHDL de référence pour apprendre et commencer à concevoir un contrôleur de cache. J'ai donc conçu moi-même un contrôleur de cache à partir de zéro et l'ai testé avec succès sur FPGA. J'ai présenté ici un simple contrôleur de cache mappé directement, ainsi que modélisé un système processeur-mémoire entier pour tester le contrôleur de cache. J'espère que vous trouverez cette instructable utile comme référence pour concevoir vos propres contrôleurs de cache.
Étape 1: Spécifications
Voici les principales spécifications du contrôleur de cache que nous allons concevoir:
- Cartographie directe. (allez à ce lien si vous recherchez un contrôleur de cache mappé associatif)
- Cache bloquant à banque unique.
- Politique d'écriture directe sur les hits d'écriture.
- Politique d'allocation sans écriture ou de contournement en cas d'échec d'écriture.
- Pas de tampon d'écriture ou d'autres optimisations.
- Tag Array est incorporé.
En plus de cela, nous allons également concevoir une mémoire cache et un système de mémoire principale.
Les spécifications par défaut (configurables) de la mémoire cache:
- Cache à banque unique de 256 octets.
- 16 lignes de cache, chaque ligne de cache (bloc) = 16 octets.
Les spécifications de la mémoire principale:
- Mémoire de lecture/écriture synchrone.
- Mémoire entrelacée multi-banques - quatre banques de mémoire.
- Chaque taille de banque = 1 Ko chacune. Par conséquent, taille totale = 4 ko.
- Mémoire adressable de mots (4 octets) avec bus d'adresse 10 bits.
- Bande passante plus élevée pour la lecture. Lire la largeur des données = 16 octets en un cycle d'horloge.
- Largeur des données d'écriture = 4 octets.
REMARQUE: consultez mon plus récent instructable si vous recherchez une conception de contrôleur de cache associatif à 4 voies
Étape 2: Vue RTL de l'ensemble du système
La représentation RTL complète du module supérieur est illustrée sur la figure (à l'exception du processeur). Les spécifications par défaut des bus sont:
- Tous les bus de données sont des bus 32 bits.
- Bus d'adresse = Bus 32 bits (Mais seulement 10 bits sont adressables ici par la Mémoire).
- Bloc de données = 128 bits (bus à large bande passante pour la lecture).
- Tous les composants sont pilotés par la même horloge.
Étape 3: Tester l'environnement
Le Top Module a été testé à l'aide d'un banc de test, qui modélise simplement un processeur non pipeline (car concevoir un processeur entier n'est pas du tout facile !!). Le banc de test génère fréquemment des requêtes de lecture/écriture de données dans la mémoire. Cela se moque des instructions "Load" et "Store" typiques, communes à tous les programmes exécutés par un processeur. Les résultats du test ont vérifié avec succès la fonctionnalité du contrôleur de cache. Voici les statistiques de test observées:
- Tous les signaux Read/Write Miss et Hit ont été générés correctement.
- Toutes les opérations de lecture/écriture de données ont réussi.
- Aucun problème d'incohérence/incohérence des données détecté.
- La conception a été vérifiée avec succès pour un Maxm. Fréquence de fonctionnement de l'horloge = 110 MHz dans la carte Xilinx Virtex-4 ML-403 (système complet), 195 MHz pour le contrôleur de cache seul.
- Des RAM de bloc ont été déduites pour la mémoire principale. Tous les autres tableaux ont été implémentés sur des LUT.
Étape 4: Fichiers joints
Les fichiers suivants sont joints ici avec ce blog:
- Fichiers. VHD de Cache Controller, Cache Data Array, Main Memory System.
- Banc d'essai.
- Documentation sur le contrôleur de cache.
Remarques:
- Parcourez la documentation pour bien comprendre les spécifications du contrôleur de cache présentées ici.
- Toute modification du code dépend d'autres modules. Donc, les changements doivent être faits judicieusement. Faites attention à tous les commentaires et en-têtes que j'ai donnés.
- Si, pour une raison quelconque, les RAM de bloc ne sont pas déduites pour la mémoire principale, RÉDUISEZ la taille de la mémoire, puis modifiez la largeur du bus d'adresses dans les fichiers, etc. Ainsi, la même mémoire peut être implémentée sur des LUT ou sur une RAM distribuée. Cela permettra d'économiser le temps de routage et les ressources. Ou, accédez à la documentation FPGA spécifique et recherchez le code compatible pour Block RAM et modifiez le code en conséquence, et utilisez les mêmes spécifications de largeur de bus d'adresse. Même technique pour les FPGA Altera.
Conseillé:
Jeu de cache-cache virtuel : 3 étapes
Jeu de cache-cache virtuel : Nos petits-enfants adorent jouer à cache-cache, mais ils n'ont pas vraiment beaucoup de bons endroits à l'intérieur. J'ai décidé de faire un jeu de cache-cache virtuel pour qu'ils puissent encore s'amuser de la chasse. Dans ma version, on va cacher un élément avec un récepteur RF et
Conception d'un contrôleur de cache associatif simple à quatre voies en VHDL : 4 étapes
Conception d'un contrôleur de cache associatif simple à quatre voies en VHDL : dans mon précédent instructable, nous avons vu comment concevoir un contrôleur de cache mappé direct simple. Cette fois, nous avançons d'un pas. Nous allons concevoir un simple contrôleur de cache associatif à quatre voies. Avantage ? Moins de ratés, mais au prix de perfo
Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes
Conception d'un contrôleur d'interruption programmable en VHDL : je suis submergé par le type de réponses que je reçois dans ce blog. Merci les gars de visiter mon blog et de me motiver à partager mes connaissances avec vous. Cette fois, je vais présenter la conception d'un autre module intéressant que nous voyons dans tous les SOC -- Interrupt C
Conception du Master I2C en VHDL : 5 étapes
Conception du maître I2C en VHDL : dans cette instructable, la conception d'un simple maître I2C en VHDL est discutée. REMARQUE : cliquez sur chaque image pour voir l'image complète
Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes
Conception d'un contrôleur VGA simple en VHDL et Verilog : dans cette instructable, nous allons concevoir un contrôleur VGA simple en RTL. Le contrôleur VGA est le circuit numérique conçu pour piloter les écrans VGA. Il lit à partir de Frame Buffer (VGA Memory) qui représente la trame à afficher, et génère nece