Changes between Initial Version and Version 1 of SoclibCourseTp7


Ignore:
Timestamp:
Jan 6, 2011, 11:44:24 AM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp7

    v1 v1  
     1{{{
     2#!html
     3<h1>TP7 : Modélisation TLM-DT </h1>
     4}}}
     5[[PageOutline]]
     6
     7= 1 Objectifs =
     8
     9Le principal objectif de la modélisation TLM-DT (Trasaction Level Modeling with Distributed Time)
     10est d'accélérer la vitesse de simulation du
     11prototype virtuel, au prix d'une légère perte de précision temporelle. Cette accélération est
     12particulièrement importante dans le cas d'architectures multi-processeurs comportant un
     13grand nombre de processeurs, puisque
     14le temps de simulation augmente proportionnellement au nombre de processeurs.
     15
     16Le but de ce TP est donc de modéliser, et de simuler en TLM-DT l'architecture quadri-clusters du TP5.
     17
     18= 2 Top-Cell TLM-DT =
     19
     20Pour chaque composant matériel de la bibliothèque SoCLib, il existe en principe deux modèles de simulation:
     21un modèle CABA (que vous connaissez délà), et un modèle de simulation TLM-DT.
     22
     23Comme les communications entre composants en TLM-DT utilisent des appels de fonctions et non des
     24signaux, l'écriture de la top-cell décrivant l'architecture matérielle est simplifiée. .
     25
     26Les prototypes des constructeurs TLM-DT ressemblent beaucoup aux prototypes des constructeurs CABA.
     27La principale différence est que les composants d'interconnexion ('''!VciVgmn''' et '''!VciLocalCrossbar''')
     28n'utilisent pas le paramètre template '''vci_param'''.
     29En principes les noms des ports sont identiques pour les modèles CABA et TLM-DT (même si le
     30mécanisme de communication est très différent. Prenez le temps de consulter la documentation
     31des composants [https://www.soclib.fr/trac/dev/wiki/Component/ ici]).
     32
     33La modélisation TLM-DT correspondant à une représentation plus abstraite de l'architecture, on n'a pas besoin
     34de décrire précisément les largeurs des différentes nappes de fils de l'interface VCI. On se contente de préciser le type C++ utilisé pour véhiculer les adresses et les données :
     35
     36{{{
     37     typedef VciParams<uint32_t, uint32_t> vci_param;
     38}}}
     39
     40C'est la description de la connectique qui est la plus profondément modifiée :
     41La modélisation TLM-DT ne permet que des connexions point à point entre deux ports de deux composants
     42matériels : Pour connecter le port px du composant A au port py du composant B , on ne fait plus référence à un signal intermédiaire, et on écrit directement :
     43{{{
     44     (A.px)(B.py);
     45}}}
     46ou de façon équivalente :
     47{{{
     48     (B.py)(A.px);
     49}}}
     50
     51Si un composant C possède un vecteur de ports indexés, chaque élément pz[i] est en fait un pointeur sur un port, et il faut écrire :
     52{{{
     53     (A.px)(*C.pz[i]);
     54}}}
     55
     56 * Les signaux CK et RESETN des modèles CABA sont des signaux multi-points, mais ces deux signaux ne sont plus représentés explicitement dans la modélisation TLM-DT.
     57 * Les signaux VCI sont des connexions point-à-points, qui s'expriment très simplement en TLM-DT.
     58 * Les signaux correspondant à des lignes d'interruption sont également des signaux point-à-point.
     59
     60Tous les ports d'un module doivent être explicitement connectés. En CABA, les entrées inutilisées d'un composant sont généralement connectées à un même signal possédant la valeur constante ''false''. Dans l'architecture à 4 clusters qui nous intéresse, ceci concerne par exemple les ports IRQ[1] à IRQ[5] des
     61processeurs MIPS, ou certaines entrées des composants ICU, puisque le vecteur d'interruption comporte 4 entrées (TIMER, TTY, IOC et DMA), mais les
     62clusters 2 et 3 n'utilisent que deux ligne d'interruption (TIMER et TTY).
     63clusters ne contiennent que   
     64
     65Puisqu'en TLM-DT, les connexions multi-points sont interdites, , on instancie dans chaque cluster un pseudo-composant matériel '''!VciBlackhole''' possédant le nombre de ports nécéssaires pour connecter les ports inutilisés des composants processeurs et ICU:
     66
     67{{{
     68     VciBlackhole<tlm::tlm_initiator_socket<> >*  fake[4];
     69     fake[0] = new VciBlackhole<tlm::tlm_initiator_socket<> >("fake_0", 6);
     70     fake[1] = new VciBlackhole<tlm::tlm_initiator_socket<> >("fake_1", 6);     
     71     fake[2] = new VciBlackhole<tlm::tlm_initiator_socket<> >("fake_2", 7);     
     72     fake[3] = new VciBlackhole<tlm::tlm_initiator_socket<> >("fake_3", 7);
     73}}}
     74
     75Dans l'exemple ci-dessous, la variable ''fake'' est un tableau de 4 pointeurs. Chacun de ces pointeurs fake[i] pointe  sur un module de type ''VciBlakhole'' possédant le nom ''fake_i'', et possédant soit 6 ports, soit 7 ports.
     76On connecte ensuite ces ports '''p_socket[i]''' de ces pseudo-composants aux ports inutilisés  du processeur ou de l'ICU:
     77
     78{{{
     79    for( size_t n = 0 ; n <5 ; n++) (*mips0.p_irq[n+1])(*fake0.p_socket[n]);
     80}}}
     81
     82Il ne faut pas oublier d'inclure le fichier '''vci_blackhole.h''' dans la top-cell, et de compléter le fichier de description de la top-cell en conséquence.
     83
     84Enfin le lancement de la simulation se réduit à la ligne suivante :
     85{{{
     86     sc_start();
     87}}}
     88
     89= 3 Travail à réaliser =
     90
     91Créez un répertoire TP7 pour ce TP, et placez-vous dans ce répertoire.
     92
     93Modifiez la top-cell de l'architecture quadri-clusters du TP5, que vous renommerez '''tp7_tlmdt_top.cpp''', ainsi que le fichier
     94de description utilisé par soclib-cc, que vous renommerez '''tp7_tlmdt_top.desc'''.
     95
     96Vous pouvez conserver sans modifications les différents répertoires et fichiers définissant le code binaire du logiciel embarqué utilisés
     97(et validés) dans le TP5. Recopiez donc ces répertoires dans le répertoire TP7, et regénérez le code binaire.
     98
     99Générez le simulateur TLM-DT en utilisant soclib-cc, et lancez la simulation.
     100
     101La modélisation TLMDT permet de réduire les temps de simulation, au prix d'une légère perte de précision temporelle.
     102Comparez la modélisation CABA et la modélisation TLMDT en simulant la méme application logicielle s'exécutant
     103pendant 10 millions de cycles sur la même architecture matériellemodélisée en CABA (TP5) et en TLMDT (TP6).
     104 * Quelle est le rapport des temps de simulation CABA et TLMDT (temps de simulation mesurés en secondes) ?
     105 * Quelle est la perte de précision (en pourcentage) ?
     106Pour évaluer la terte de précision, on comparera les dates des interruptions affichées par la simulation TLMDT (approximative)
     107aux dates affichées par la simulation CABA (exacte). Et on calculera l'erreur relative par rapport à la valeur de la période.
     108On pourra faire cette comparaison pour différentes valeurs de la période du timer.
     109
     110= 4 Compte-rendu =
     111
     112Il 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...