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 ! |
| 141 | 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 fichier '''vci_xcache_wrapper_advanced.cpp''' est incomplet, et vous devez le compléter. |
| 142 | |
| 143 | On 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 |
| 144 | plus possible dans un contrôleur de cache où les lectures peuvent passer avant les écritures. |
| 145 | |
| 146 | Pour 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''' |