Changes between Version 10 and Version 11 of SoclibCourseTp2
- Timestamp:
- Sep 6, 2009, 10:26:57 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp2
v10 v11 97 97 98 98 Dans une architecture à mémoire partagée, on assigne à tout composant ''cible'' un (ou plusieurs) segment(s) dans l'espace adressable. 99 Un segment est une ''tranche" de l'espace adressable , cractérisé parune adresse de base, et une taille (en nombre d'octets). La taille d'un99 Un segment est une ''tranche" de l'espace adressable. Il possède donc une adresse de base, et une taille (en nombre d'octets). La taille d'un 100 100 segment peut être très variable : de quelques d'octets pour un périphériques adressable, à quelques Moctets pour un contrôleur mémoire. 101 101 C'est en analysant les bits de poids fort de l'adresse que le sous-système d'interconnexion détermine à quel segment appartient l'adresse, … … 109 109 Pour plus de détails, vous pouvez consulter le site WEB du projet SoCLib : [https://www.soclib.fr/trac/dev/wiki/Component/MappingTable]. 110 110 111 Dans une architecture à mémoire partagée, l'adresse contenue dans la commande VCI est donc décodée à différents endroits : 112 les bits de poids faibles sont décodés par les périphériques adressables pour déterminer l'action à réaliser, et les bits de poids fort sont décodés par le sous-système d'interconnexion pour déterminer l'index de la cible concernée. Pour faciliter ce décodage, la plate-forme de prototypage SoCLib définit la classe C++ ''!AddressDecodingTable'' (fichier ''address_decoding_table.h''). 113 111 114 = 5. Travail à réaliser = 112 115 … … 127 130 * ''mapping_table.h'' : définition de la mapping table 128 131 * ''mapping_table.cpp'' : implémentation des méthodes de la mapping table 129 * ''address_decoding_table.h'' 130 * ''address_decoding_table.cpp'' 132 * ''address_decoding_table.h'' : Table indexée par une partie de l'adresse 133 * ''address_decoding_table.cpp'' : implémentation des méthodes de la table indexée 134 L'archive contient également les fichiers suivants : 135 * ''vci_lcd_master.h'' : définition du composant ''!VciLcdMaster''. 136 * ''vci_lcd_master.cpp'' : méthodes associées (fichier incomplet). 137 * ''vci_lcd_coprocessor.h'' : définition du composant ''!VciLcdCoprocessor''. 138 * ''vci_lcd_coprocessor.cpp'' : méthodes associées (fichier incomplet). 139 * ''vci_gsb.h'' : définition du composant ''!VciGsb''. 140 * ''vci_gsb.cpp'' : méthodes associées (fichier complet). 141 * ''tp2_simple_top.cpp'' : top-cell d'une architecture ne contenant que deux composants. 131 142 132 143 == 5.1 Composant ''!VciLcdCoprocessor == … … 182 193 segment de l'espace adressable aui a été assigné au coprocesseur LCD. 183 194 Le composant ''!VciLcdMaster étant un automate cablé (non programmable), on considère 184 que cette adresse est également "cablée" , et elle est donc définie comme un paramètre du constructeur.195 que cette adresse est également "cablée". Elle est donc définie comme un paramètre du constructeur. 185 196 186 197 La figure ci-dessous décrit la structure de l'automate de contrôle du composant ''!VciLcdMaster''. … … 200 211 201 212 Pour valider les modèles de simulation des composants ''!VciLcdMaster'' et ''!VciLcdCoprocessor'', 202 il faut décrire une architecture minimale ne contenant que deux composants matériels, conformément au schéma 203 ci-dessous : 213 on construit une architecture minimale ne contenant que deux composants matériels, conformément au schéma ci-dessous : 204 214 205 215 [[Image(soclib_tp2_simple_archi.png)]] … … 213 223 == 5.4 Compilation et génération du simulateur == 214 224 215 Il faut ensuite compiler pour générer les fichiers225 Il faut ensuite compiler les différents fichiers pour générer le simulateur. 216 226 217 227 == 5.5 Architecture multi-maitres == 218 228 229 En vous inspirant du fichier ''tp2_simple_top.cpp'' de la question précédente, écrivez le fichier ""tp2_multi_top.cpp'', 230 qui décrit l'architecture à 7 composants décrite au début de ce TP. Vous ferez en sorte que le maitre (i) communique 231 avec le coprocesseur (i). N'oubliez pas de définir 3 segments différents pour les trois coprocesseurs. 232 219 233 = 6. Compte-rendu = 220 234