Table des matières:
- Étape 1: Spécifications
- Étape 2: Vue RTL de l'ensemble du système
- Étape 3: Résultats des tests
- Étape 4: Fichiers joints
Vidéo: Conception d'un contrôleur de cache associatif simple à quatre voies en VHDL : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Dans mon instructable précédent, 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 taux d'échec, mais au détriment des performances. Tout comme mon blog précédent, nous concevrons et émulons un environnement complet de processeur, de mémoire principale et de cache pour tester notre contrôleur de cache. J'espère que vous trouverez ceci comme une référence utile pour comprendre les concepts et concevoir vos propres contrôleurs de cache à l'avenir. Comme le modèle de processeur (banc de test) et le système de mémoire principale sont exactement les mêmes que sur mon blog précédent, je ne les expliquerai plus. Veuillez vous référer à l'instructable précédente pour plus de détails à ce sujet.
Étape 1: Spécifications
Aperçu rapide des spécifications du contrôleur de cache présentées ici:
- Contrôleur de cache associatif à quatre voies (consultez ce lien si vous recherchez un contrôleur de cache mappé direct).
- Cache bloquant à banque unique.
- Politique d'écriture directe sur les résultats d'écriture.
- Politique de contournement sur les échecs d'écriture.
- Politique de remplacement des arbres pseudo-LRU (pLRU).
- Tag Array dans le contrôleur.
- Paramètres configurables.
Les spécifications par défaut pour la mémoire cache et la mémoire principale sont les mêmes que celles de mon instructable précédent. Veuillez vous y référer.
É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: Résultats des tests
Le module supérieur a été testé à l'aide d'un banc de test, qui modélise simplement un processeur non pipeline, tout comme nous l'avons fait dans le dernier instructable. 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 des quatre manières.
- L'algorithme pLRU est vérifié avec succès pour le remplacement des lignes de cache.
- 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 = 100 MHz dans la carte Xilinx Virtex-4 ML-403 (système complet), 110 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 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 d'un contrôleur de cache simple en VHDL : 4 étapes
Conception d'un contrôleur de cache simple en VHDL : j'écris cette 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 p
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
Interrupteurs à trois et quatre voies - Comment ils fonctionnent : 6 étapes
Interrupteurs à trois voies et à quatre voies - Comment ils fonctionnent : Bien qu'un interrupteur à trois voies soit très simple pour beaucoup de ceux qui visitent Instructables.com, c'est un mystère pour beaucoup d'autres. Comprendre le fonctionnement du circuit satisfait la curiosité. Cela peut aussi aider à diagnostiquer un interrupteur à trois voies qui ne fonctionne pas parce que quelqu'un