Changes between Version 35 and Version 36 of SoclibCourseTp6


Ignore:
Timestamp:
Dec 28, 2013, 12:07:01 AM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp6

    v35 v36  
    117117On souhaite donc modifier le contrôleur de cache pour qu'il utilise un tampon d'écritures plus évolué, permettant de ne pas attendre la réponse à une transaction d'écriture (n) pour envoyer la commande de la transaction (n+1). On souhaite également que les transactions de lecture - qui entraînent un gel du processeur - soient prioritaires par rapport aux transactions d'écriture, quand les adresses sont différentes. 
    118118
     119== 4.1 Tampon d'écritures postées ==
     120
    119121La classe C++ [https://www.soclib.fr/trac/dev/browser/trunk/soclib/soclib/lib/multi_write_buffer/include multi_write_buffer] modélise un tampon d'écritures postées plus évolué, permettant de stocker plusieurs requêtes d'écriture indépendantes. Chacune de ces requêtes peut avoir une longueur supérieure à un flit.
    120122
    121 Il faut commencer par analyser le code du multi_write_buffer pour répondre aux questions suivantes:
     123Analysez le code du multi_write_buffer pour répondre aux questions suivantes:
    122124
    123125'''Question''' : Quelle est la signification des 4 arguments du constructeur de cet objet ?
     
    133135'''Question''' : A quoi sert la méthode ''update()'' ? Pourquoi doit-elle être appelée à chaque cycle ?
    134136
    135 L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un répertoire '''vci_xcache_wrapper_advanced''', qui contient lui_même les 3 fichiers '''vci_xcache_wrapper_advanced.cpp''', '''vci_xcache_wrapper_advanced.h''', et '''vci_xcache_wrapper_advanced.sd''', décrivant une version modifiée du contrôleur de cache L1. Le premier fichier est incomplet.
     137 
    136138
    137 '''Question''' : En comparant les fichiers d'interface '''vci_xcache_wrapper.h''' et '''vci_xcache_wrapper_advanced.h''', identifiez les modifications qui ont été introduites.
     139== 4.2 Modification du
    138140
    139 '''Question''' : Complêtez le fichier d'implémentation '''vci_xcache_wrapper_advanced.cpp''' pour que ce composant 
    140 supporte plusieurs transactions VCI simultanées, avec la priorité suivante entre les 5 types de transactions : DMISS > IMISS > WRITE > DUNC > IUNC. Attention: les requêtes DMISS et IMISS ne peuvent passer avant les requêtes de type WRITE enregistrées dans le tampon d'écritures que si elles portent sur des adresses différentes !
     141L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un répertoire '''vci_xcache_wrapper_advanced''', qui contient lui_même les 3 fichiers '''vci_xcache_wrapper_advanced.cpp''', '''vci_xcache_wrapper_advanced.h''', et '''vci_xcache_wrapper_advanced.sd''', décrivant une version modifiée du contrôleur de cache L1. Le fichier '''vci_xcache_wrapper_advanced.cpp''' est incomplet, et vous devez le compléter.
     142
     143On rappelle que l'instruction assembleur ''sync'' a pour effet de synchroniser la mémoire, ce qui signifie en pratique que cette instruction est bloquante tant que toutes les instructions d'écriture précédant l'instruction ''sync'' n'ont pas été effectuées. Cette instruction se traduit par une écriture ''externe'' dans le pseudo-registre XTN_SYNC. Dans le composant '''vci_xcache_wrapper''', où les écritures sont prioritaires sur les lectures, l'instruction ''sync'' est simplement implémentée comme une instruction ''nop''. Cette implémentation n'est
     144plus possible dans un contrôleur de cache où les lectures peuvent passer avant les écritures.
     145
     146Pour compléter le modèle du contrôleur de cache, vous respecterez les consignes suivantes:
     147 * Le composant doit supporter plusieurs transactions VCI simultanées, avec la priorité suivante entre les 5 types de transactions : DMISS > IMISS > WRITE > DUNC > IUNC.
     148 * Les requêtes DMISS et IMISS ne peuvent passer avant les requêtes de type WRITE enregistrées dans le tampon d'écritures que si elles portent sur des adresses différentes.
     149 * En cas d'écriture dans le pseudo registre XTN_SYNC, le processeur doit être bloqué tant que le tampon d'écritures postées n'est pas vide.
     150 * Les deux automates VCI_CMD et VCI_RSP doivent être totalement synchronisées, et vous utiliserez le champs VCI TRDID pour identifier les différents types de transactions VCI s'exécutant en parallèle.
     151
     152'''Question''' : Comparez les fichiers d'interface '''vci_xcache_wrapper.h''' et '''vci_xcache_wrapper_advanced.h''', et identifiez les modifications qui ont été introduites.
     153 
     154'''Question''' : Complêtez le fichier d'implémentation '''vci_xcache_wrapper_advanced.cpp'''
    141155 
    142156'''Question''' : Pourquoi les requêtes correspondant à des accès non cachés (en lecture ou en écriture) ne sont-elles