92 | | L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un fichier '''!VciXcacheWrapperNew''', qui est une version |
93 | | modifiée, mais incomplête du contrôleur de cache L1, que vous devrez compléter. |
| 92 | Il faut commencer par analyser le code du multi_write_buffer pour répondre aux questions suivantes: |
| 93 | |
| 94 | '''Question''' : Quelle est la signification des 4 arguments du constructeur de cet objet ? |
| 95 | |
| 96 | '''Question''' : Quels sont les quatre états possibles d'une ligne du multi_write_buffer ? |
| 97 | |
| 98 | '''Question''' : Qelles sont la ou les méthodes qui peuvent être utilisées par l'automate DCACHE_FSM pour modifier l'état interne du multi_write_buffer ? |
| 99 | |
| 100 | '''Question''' : Qelles sont la ou les méthodes qui peuvent être utilisées par l'automate CMD_FSM pour modifier l'état interne du multi_write_buffer ? |
| 101 | |
| 102 | '''Question''' : Quelles sont la ou les méthodes qui peuvent être utilisées par l'automate RSP_FSM pour modifier l'état interne du multi_write_buffer ? |
| 103 | |
| 104 | '''Question''' : A quoi sert la méthode ''update()'' ? Pourquoi doit-elle être appelée à chaque cycle ? |
| 105 | |
| 106 | L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un répertoire '''vci_xcache_wrapper_new''', qui contient |
| 107 | lui_même les fichiers décrivant une version modifiée du contrôleur de cache L1. ces fichiers sont incomplets, et |
| 108 | vous devrez les compléter. |
| 109 | |
| 110 | '''Question''' : Complêtez le fichier d'interface '''vci_xcache_wrapper_new.h'''. |
| 111 | |
| 112 | '''Question''' : Complêtez le fichier d'implémentation '''vci_xcache_wrapper_new.cpp'''. |
| 113 | |
| 114 | '''Question''' : Complêtez le fichier de description '''vci_xcache_wrapper_new.sd'''. |
| 115 | |
| 116 | '''Question''' : Modifiez les fichier '''tp6_top.cpp''' et '''tp6_top.desc''' décrivant l'architecture globale, pour instancier |
| 117 | le composant !VciXcacheWrapperNew à la place du composant !VciXcacheWrapper, et renommez ces fichiers '''tp6_top_new.cpp''' et '''tp6_top_new.desc'''. |
| 118 | |
| 119 | Générez le prototype virtuel pour l'architecture ainsi modifiée avec la commande: |
| 120 | {{{ |
| 121 | $ soclib-cc -P -p tp6_top_new.cpp -o simulator_new.x -I . |
| 122 | }}} |
| 123 | |
| 124 | Lancez l'exécution, en définissant sur la ligne de commande les paramètres du tampon d'écritures. On choisira pour |
| 125 | commencer un gros tampon contenant 8 lignes de 4 mots de 32 bits, et on activera l'affichage des statistiques : |
| 126 | {{{ |
| 127 | $ ./simulator_new.x -IOCFILE path_to_images.raw -WBUFW 4 -WBUFL 8 -STATS 100000 |
| 128 | }}} |
| 129 | |
| 130 | '''Question''' : Combien faut_il de cycles pour afficher une image? Comment interprêtez-vous ce résultat ? |
| 131 | |
| 132 | '''Question''' : Est-i possible de diminuer la taille du tampon d'écriture postées sans dégrader trop fortement |
| 133 | les performances ? |
| 134 | |
| 135 | = 4 Compte-Rendu = |
| 136 | |
| 137 | Il ne vous est pas demandé de compte-rendu pour ce TP, mais on vous demandera une démonstration de votre simulateur au début du TP de la semaine suivante... |