| 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... |