Changes between Version 1 and Version 2 of Archi3TP2
- Timestamp:
- Oct 20, 2015, 2:17:24 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi3TP2
v1 v2 6 6 L'objectif de ce TP est de comprendre l'implémentation d'un protocole de cohérence de cache de type write-back MESI. 7 7 8 Pour cela, on demande l'écriture des machines d'états d'un controlleur de cache L1 write-through et du controlleur mémoire associé, comme lors du TP1. 9 8 Pour cela, on demande l'écriture des machines d'états d'un controlleur de cache L1 write-back et du controlleur mémoire associé, comme lors du TP1. 10 9 11 10 == 1. Spécification == 12 11 13 Dessinez sur une feuille (ou sur un logiciel adapté) les machines d'état du cache L1 write-back MESI et du contrôleur mémoire associé. Comme pour le TP1, on s'intéresse pour ce TP uniquement à la partie données du cache. De plus, on ne s'intéresse pas aux requêtes à des adresses non cachées : on suppose donc que toutes les requêtes sont à des adresses cachées. 12 Dans cette première partie, il vous est demandé de dessiner sur une feuille (ou sur un logiciel adapté) les machines d'état du cache L1 write-through à invalidations et du contrôleur mémoire associé. La liste des états vous est donnée ci-dessous, il faut donc remplir chaque état avec les actions qui y sont associées et représenter les transitions entre états. Pour représenter les actions, vous pouvez utiliser du français ou du pseudo-code. 13 Liste des états du contrôleur de cache : 14 14 15 Ce dessin fera partie du rendu. 15 16 17 {{{ 18 IDLE, // Détecter les requêtes d'invalidation et du processeur, répondre aux lectures qui font hit 19 WRITE_UPDATE, // Après une écriture : mettre à jour le cache, répondre au processeur 20 MISS, // Envoyer une requête de miss (au sens large) 21 WRITE_BACK, // Envoyer une requête d'écriture pour évincer une ligne dirty 22 MISS_WAIT, // Attendre la réponse à un miss et la traiter 23 INVAL // Traiter une requête d'invalidation 24 }}} 25 26 27 Liste des états du contrôleur mémoire : 28 29 {{{ 30 IDLE, // Traiter les requêtes qui arrivent 31 READ_LINE, // Tester si l'envoi d'invalidation est requis 32 GETM, // Tester si l'envoi d'invalidation est requis 33 WRITE_LINE, // Répondre à une requête d'écriture, mettre à jour les données du cache (suite à une requête de write-back) 34 INVAL, // Initialiser l'envoi d'invlidations 35 INVAL_SEND, // Envoyer les invalidations 36 INVAL_WAIT, // Attendre les réponses aux invalidations envoyées 37 DIR_UPDATE, // Mettre à jour les meta-données du cache 38 RSP_GETM, // Répondre à une requête GETM ou GETM_LINE 39 RSP_READ // Répondre à une requête de MISS 40 }}} 41 42 Comme pour le TP1, ce schéma fera partie du rendu. 16 43 17 44 18 45 == 2. Prise en main des sources == 19 46 20 Vous pouvez réutiliser les packages importés pour le TP1. Il suffit de changer l'instance des contrôleurs de cache et mémoire dans le fichier topcells/Top2Procs.java:47 Vous pouvez réutiliser les packages importés pour le TP1. Il suffit de changer l'instance des contrôleurs de cache et mémoire dans les fichiers de topcell (par exemple, topcells/Top2Procs.java) : 21 48 * `MemController memCtrl = new MemWtiController` -> `MemController memCtrl = new MemMesiController` 22 49 * `L1Controller l1Ctrl = new L1WtiController` -> `L1Controller l1Ctrl = new L1MesiController` 23 50 24 L a figure ci-dessous présente un diagramme objet simplifié pour une architecture avec deux processeurs / caches L1 et un banc mémoire.51 Le schéma du diagramme objet donné pour le TP1 est redonné ci-dessous : 25 52 26 53 [[Image(diagramme_objet.svg)]]