wiki:Archi3TP2

M2 SESI - Archi 3

TP2 : Machine d'états d'un cache L1 Write-Back MESI

L'objectif de ce TP est de comprendre l'implémentation d'un protocole de cohérence de cache de type write-back MESI.

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.

1. Spécification

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-back à 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. Liste des états du contrôleur de cache :

IDLE,         // Détecter les requêtes d'invalidation et du processeur, répondre aux lectures qui font hit
WRITE_UPDATE, // Après une écriture : mettre à jour le cache, répondre au processeur
MISS,         // Envoyer une requête de miss (au sens large)
WRITE_BACK,   // Envoyer une requête d'écriture pour évincer une ligne dirty
MISS_WAIT,    // Attendre la réponse à un miss et la traiter
INVAL         // Traiter une requête d'invalidation

Liste des états du contrôleur mémoire :

IDLE,       // Traiter les requêtes qui arrivent
READ_LINE,  // Tester si l'envoi d'invalidation est requis
GETM,       // Tester si l'envoi d'invalidation est requis
WRITE_LINE, // Répondre à une requête d'écriture, mettre à jour les données du cache (suite à une requête de write-back)
INVAL,      // Initialiser l'envoi d'invlidations
INVAL_SEND, // Envoyer les invalidations
INVAL_WAIT, // Attendre les réponses aux invalidations envoyées
DIR_UPDATE, // Mettre à jour les meta-données du cache
RSP_GETM,   // Répondre à une requête GETM ou GETM_LINE
RSP_READ    // Répondre à une requête de MISS

Comme pour le TP1, ce schéma fera partie du rendu.

2. Prise en main des sources

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) :

  • MemController memCtrl = new MemWtiController -> MemController memCtrl = new MemMesiController
  • L1Controller l1Ctrl = new L1WtiController -> L1Controller l1Ctrl = new L1MesiController

Le schéma du diagramme objet donné pour le TP1 est redonné ci-dessous :

3. Écriture des machines d'état

Il faut compléter les classes L1MesiController et MemMesiController à partir des machines d'état dessinées dans la partie 1.

Il faudra bien sûr tester votre code au travers d'entrelacements de requêtes bien choisis. Vous pouvez soit créer ces requêtes dans la classe de la Topcell (conseillé), soit dynamiquement depuis l'interface en cours de simulation.

4. Rendu

Vous devrez rendre un compte-rendu sommaire (électronique) comprenant le schéma, ainsi que les tests que vous avez effectués et leur justification (ce que vous avez voulu tester pour chaque test). De plus, si votre code n'est pas fonctionnel au moment du rendu, il faudra expliquer les fonctionnalités manquantes ou les tests qui ne marchent pas.

Le code à rendre l'est sous la forme d'une archive comprenant les 2 fichiers écrits, à envoyer à l'adresse [MailAsim:quentin.meunier Quentin Meunier] au plus tard la veille de l'examen réparti 1.

Last modified 7 years ago Last modified on Oct 23, 2017, 2:32:15 PM

Attachments (1)

Download all attachments as: .zip