Changes between Version 8 and Version 9 of SoclibCourseTp2
- Timestamp:
- Sep 6, 2009, 3:57:05 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp2
v8 v9 36 36 un composant cible, qui répond à la commande en renvoyant un paquet ''réponse''. 37 37 38 == 3.1 Sous-Système d'interconnexion VCI ==38 == 3.1 Interconnection VCI == 39 39 40 40 Dans la spécification VCI "advanced", il y a principalement deux types de commandes : … … 70 70 * le paramètre '''K''' définit le nombres de bits termettant de coder la longueur PLEN d'un paquet (en nombre d'octets). La valeur PLEN doit également être un multiple du paramètre B. 71 71 * le paramètre '''S''' définit le nombre de bits du champs SRCID, qui permet de coder le numéro de l'initiateur VCI qui a démarré la transaction. Ce paramètre définit donc le nombre maximum d'initiateurs dans le système. 72 * Le paramètre '''E''' définit le nombre de bits permettant de coder le type d'erreur dans le champs RERROR 73 du paquet commande. La valeur 0 signifie "pas d'erreur". 74 * Les deux paramètres '''T''' et '''P''' définissent le nombre de bits des deux champs TRDID et PKTID. Ces deux champs permettent d'étiqueter une commande VCI par une numéro de thread et/ou par un numéro de transaction. Ils peuvent ëtre utilisés par un initiateur pour envoyer une commande ''n+1'' sans attendre d'avoir reçu la réponse à la commande ''n''. 72 * Le paramètre '''E''' définit le nombre de bits permettant de coder le type d'erreur dans le champs RERROR du paquet commande. La valeur 0 signifie "pas d'erreur". 73 * Les deux paramètres '''T''' et '''P''' définissent le nombre de bits des deux champs TRDID et PKTID. Ces deux champs permettent d'étiqueter une commande VCI par une numéro de thread et/ou par un numéro de transaction. Ils peuvent être utilisés par un initiateur pour envoyer une commande (n+1) sans attendre d'avoir reçu la réponse à la commande (n). 75 74 76 75 Bien sûr les valeurs de ces paramètres VCI doivent être les mêmes pour tous les composants matériels d'une même architecture, et doivent être définis dans la ''top-cell'' décrivant l'architecture générale du système. … … 80 79 La généricité des interfaces de communication VCI est évidemment une souplesse très utile, 81 80 mais elle crée une difficulté pour la modélisation des composants matériels, puisqu'ilfaut écrire des modèles de 82 simulation génériques, capable de s'adapter à différentes largeurs d'adresse ou de donnée. 83 On utilise pour cela la techique des ''templates'' du langage C++ : on regroupe toutes les valeurs de ces paramêtres dans un oblet C++ de type ''VciParams'', qui est utilisé comme paramètre ''template'' par tous les composants matériels 84 qui possèdent des ports de communication VCI. 81 simulation génériques, capable de s'adapter à différentes largeurs des champs adresse ou donnée. 82 On utilise pour cela la techique des ''templates'' du langage C++ : on regroupe toutes les valeurs de ces paramêtres dans un oblet C++ de type ''VciParams'', qui est utilisé comme paramètre ''template'' par tous les composants matériels qui possèdent des ports de communication VCI. 85 83 86 84 On définit également trois autres objets, qui facilitent l'écriture des modèles de simulation CABA : 87 * l'objet ''VciSignals'' regroupe tous les signaux (commande et réponse) d'un canal VCI. 85 * l'objet ''VciSignals'' regroupe tous les signaux (commande et réponse) d'un canal VCI. (voir fichier ''vci_signals.h'') 88 86 * l'objet ''VciInitiator'' regroupe tous les ports utilisés par un initiateur VCI pour émettre une commande, 89 et recevoir la réponse. 87 et recevoir la réponse. (voir fichier ''vci_initiator.h'') 90 88 * l'objet ''VciTarget'' regroupe tous les ports utilisés par une cible VCI pour émettre une réponsee, 91 et recevoir une commande. 89 et recevoir une commande. (voir fichier ''vci_target.h'') 92 90 Ces trois objets utilisent évidemment un paramètre template de type ''VciParams''. 93 91 94 92 = 4. Segmentation de l'espace adressable = 95 93 96 La plate-forme de 94 On assigne à tout composant matérielpossédant un port VCI (composant ''cible ou composant ''initiateur'') un index permettant de l'identifier de façon unique. Cet index peut être éventuellement structuré (on parle d'index composite) si l'architecture est structurée ''clusters'. Un index composite est la concaténation d'un index global (le numéro de cluster) et d'un index local (à l'intérieur d'un cluster). 95 96 La plate-forme de prototypage SoCLib définit la classe C++ ''!IntTab'' pour représenter ces index composites. (voir fichier ''int_tab.h''). 97 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é par une adresse de base, et une taille (en nombre d'octets). La taille d'un 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 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, 102 et donc vers quelle cible un paquet commande doit être aiguillé. Le découpage de l'espace adressable en segments et l'assignation de ces 103 segments aux différentes cibles est donc un caractéristique globale de l'architecture, et doit donc être définie dans la ''top-cell'' décrivant l'architecture générale du système. 104 105 La plate-forme de prototypage SoCLib définit la classe C++ ''!MappingTable'' permettant de centraliser dans un même objet toutes 106 les informations concernant la segmentation de l'espace addressable, et la correspondance entre les cible VCI (identifiées par leur index), 107 et les segments. (voir fichiers ''mapping_table.h'' et ''segment.h''). 108 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 97 111 = 5. Travail à réaliser = 98 112 99 L'archive attachement:soclib_tp 1.tgz contient différents fichiers dont vous aurez besoin pour ce premierTP.100 Créez un répertoire de travail spécifique TP 1 pour ce TP, recopier l'archive dans ce répertoire TP1, et décompressez-la:113 L'archive attachement:soclib_tp2.tgz contient différents fichiers dont vous aurez besoin pour ce TP. 114 Créez un répertoire de travail spécifique TP2, recopiez l'archive dans ce répertoire TP2, et décompressez-la: 101 115 {{{ 102 116 $ tar xzvf soclib_tp2.tgz 103 117 }}} 104 118 105 Cette archive contient les fichiers suivants : 106 * 107 * 108 * 109 * 110 * 119 Cette archive contient les fichiers généraux suivants : 120 * ''vci_param.h'' : definition des paramètres VCI 121 * ''vci_signals.h'' : definition d'un canal VCI 122 * ''vci_target.h'' : définition d'un port VCI initiateur 123 * ''vci_initiator.h'' : définition d'un port VCI cible 124 * ''int_tab.h'' : définition des index composites 125 * ''segment.h'' : définition d'un segment de l'espace adressable 126 * ''segment.cpp'' : implémentation des méthodes du segment 127 * ''mapping_table.h'' : définition de la mapping table 128 * ''mapping_table.cpp'' : implémentation des méthodes de la mapping table 129 * ''address_decoding_table.h'' 111 130 112 131 == 5.1 Composant ''!VciLcdCoprocessor ==