Changes between Version 8 and Version 9 of SoclibCourseTp2


Ignore:
Timestamp:
Sep 6, 2009, 3:57:05 PM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp2

    v8 v9  
    3636un composant cible, qui répond à la commande en renvoyant un paquet ''réponse''.
    3737
    38 == 3.1 Sous-Système d'interconnexion VCI ==
     38== 3.1 Interconnection VCI ==
    3939
    4040Dans la spécification VCI "advanced", il y a principalement deux types de commandes :
     
    7070 * 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.
    7171 * 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).
    7574
    7675Bien 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.
     
    8079La généricité des interfaces de communication VCI est évidemment une souplesse très utile,
    8180mais 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.
     81simulation génériques, capable de s'adapter à différentes largeurs des champs adresse ou donnée.
     82On 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.
    8583
    8684On 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'')
    8886 * l'objet ''VciInitiator'' regroupe tous les ports utilisés par un initiateur VCI pour émettre une commande,
    89 et recevoir la réponse.
     87et recevoir la réponse. (voir fichier ''vci_initiator.h'')
    9088 * l'objet ''VciTarget'' regroupe tous les ports utilisés par une cible VCI pour émettre une réponsee,
    91 et recevoir une commande.
     89et recevoir une commande. (voir fichier ''vci_target.h'')
    9290Ces trois objets utilisent évidemment un paramètre template de type ''VciParams''.
    9391
    9492= 4. Segmentation de l'espace adressable =
    9593
    96 La plate-forme de
     94On 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
     96La plate-forme de prototypage SoCLib définit la classe C++ ''!IntTab'' pour représenter ces index composites. (voir fichier ''int_tab.h'').
     97
     98Dans une architecture à mémoire partagée, on assigne à tout composant ''cible'' un (ou plusieurs) segment(s) dans l'espace adressable.
     99Un 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
     100segment peut être très variable : de quelques d'octets pour un périphériques adressable, à quelques Moctets pour un contrôleur mémoire.
     101C'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,
     102et donc vers quelle cible un paquet commande doit être aiguillé. Le découpage de l'espace adressable en segments et l'assignation de ces
     103segments 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
     105La plate-forme de prototypage SoCLib définit la classe C++ ''!MappingTable'' permettant de centraliser dans un même objet toutes
     106les informations concernant la segmentation de l'espace addressable, et la correspondance entre les cible VCI (identifiées par leur index),
     107et les segments. (voir fichiers ''mapping_table.h'' et ''segment.h'').
     108
     109Pour plus de détails, vous pouvez consulter le site WEB du projet SoCLib :  [https://www.soclib.fr/trac/dev/wiki/Component/MappingTable].
     110
    97111= 5. Travail à réaliser =
    98112 
    99 L'archive attachement:soclib_tp1.tgz contient différents fichiers dont vous aurez besoin pour ce premier TP.
    100 Créez un répertoire de travail spécifique TP1 pour ce TP, recopier l'archive dans ce répertoire TP1, et décompressez-la:
     113L'archive attachement:soclib_tp2.tgz contient différents fichiers dont vous aurez besoin pour ce TP.
     114Créez un répertoire de travail spécifique TP2, recopiez l'archive dans ce répertoire TP2, et décompressez-la:
    101115{{{
    102116$ tar xzvf soclib_tp2.tgz
    103117}}}
    104118
    105 Cette archive contient les fichiers suivants :
    106  *
    107  *
    108  *
    109  *
    110  *
     119Cette 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''
    111130
    112131== 5.1 Composant ''!VciLcdCoprocessor ==