2.5 Modèles de Synchronisation
2.5.3 Définition du Bus de Cosimulation
Le bus de cosimulation est le support qui va permettre à l’environnement simulé d’échanger
ses données. Le support de communication utilisé définit le moyen de transport des données,
et les modèles de synchronisation de l’environnement doivent tenir compte de son
implémenta-tion et de sa synchronisaimplémenta-tion intrinsèque. Pour réaliser les échanges de données, ce support de
communication doit être choisi ou réalisé. La plupart des systèmes d’exploitation offrent une
multitude de services au niveau de la communication. Néanmoins, ceci impose le choix d’un
compromis entre les performances de ces supports et leur flexibilité.
Modèles de Synchronisation 55
Les différents aspects qui influent sur les performances de la communication dans le bus de
cosimulation doivent tenir compte des points suivants :
– Les différents simulateurs de l’environnement de cosimulation peuvent être implantés sur
la même machine ou sur des machines distantes. La simulation distante implique des
temps de communication dépendants de l’architecture du réseau et de ses performances
intrinsèques.
– La quantification des échanges. En effet, les modules simulés peuvent avoir à échanger
une faible quantité de données ou au contraire un grand nombre. C’est pourquoi la bande
passante du support de communication doit être suffisamment grande afin d’éviter
l’en-gorgement des données dans le support de communication.
– Les niveaux de la communication utilisés. Les différents systèmes d’exploitation offrent
généralement plusieurs services à différents niveaux pour la communication. Ces services
sont directement liés aux différentes couches réseaux d’un système [Tan89] :
– A haut niveau les services sont généralement des applications comme JAVA, CORBA
[GS96],
22etc.. Ces outils apportent une facilité d’utilisation de la communication mais
ils utilisent néanmoins des services de plus bas niveau qui impliquent de ce fait un
surcoût des temps de communication. Toutefois, ils sont généralement très flexibles car
ils proposent des primitives très complètes pour l’utilisation de tout type de données et
offrent une abstraction de la communication lors de transmission distante.
– A bas niveau les services sont beaucoup plus rapides, mais moins flexibles
d’utilisa-tion. Ces services sont par exemple TCP
23et UDP.
24Ils permettent de communiquer
rapidement des données soit par flot de données, soit par trames sécurisées.
2.5.3.1 Moyens de communication utilisés par la cosimulation
Sur la plupart des systèmes d’exploitation, les moyens de communication sont les suivants
(dans un ordre croissant de rapidité de transmission) [Cur91] :
– les RPC
25– les “Sockets”
26domaine Internet
– les “Sockets” domaine local
Suivant les besoins, les “sockets” demeurent un mode de communication bas niveau qui
existe sur tous les systèmes d’exploitation et qui procure ainsi une portabilité de la
communica-tion. Le protocole de communication d’une “socket” peut être choisi. Les “sockets” de domaine
internet utilisent le protocole TCP/IP permettant ainsi la communication à travers le monde mais
peuvent s’appliquer à d’autres types de protocoles. Les “sockets” de domaine local permettent
quant à elles, une communication locale par un protocole fixé par le système d’exploitation.
Elles sont plus rapides tout en fonctionnant de façon identique.
– les IPCs
27Les IPCs sont un ensemble d’accès système utilisé pour gérer des messages entre
proces-sus, des mémoires partagées et des sémaphores. Pour communiquer entre processus il est
22
CORBA : “Common Object Request Broker Architecture”.
23
TCP : (Tranfer Communication Protocol) protocole pour les transferts de communications.
24
UDP : (User Data Protocol) : Protocole de transfert de données utilisateur.
25
RPC : abréviation de Remote Procedure Call en anglais, permet de réaliser des appels de procédures distants.
Ils concernent la couche réseaux “session” mais ont été conçus pour être rapides
26
“Socket” : nom anglais de prise, est un support de communication de la couche “transport”. C’est un point
d’accès auxquels des connections peuvent être rattachées.
Modèles de Synchronisation 56
donc possible d’utiliser :
– les messages qui proposent un ensemble de primitives pour communiquer avec la
syn-chronisation adaptée. Le système d’exploitation gère lui même le protocole de
com-munication et garantit la distribution et le stockage des messages via une pile système.
– une mémoire partagée
28avec un sémaphore de synchronisation garantissant les meilleures
performances en terme de rapidité. Le mode de communication utilise un segment de
mémoire qui est accessible en lecture/écriture par les processus connectés. Néanmoins,
cette méthode de communication nécessite à l’utilisateur d’implémenter ses propres
synchronisations en terme de lecture/écriture dans la mémoire partagée.
– Les primitives de haut niveau (e.g. JAVA). Ce sont des outils qui surchargent les
commu-nications de bas niveau en offrant des primitives très flexibles pour traiter des structures
de données allant jusqu’au transport de classes d’objets. Ces primitives gèrent
automati-quement la communication en utilisant des primitives de bas niveau de communication.
2.5.3.2 Mesures de performances des modes de communication
Un certain nombre de mesures ont été effectuées dans le but d’évaluer les performances
en vitesse des méthodes de communication sur un système Unix. Les tests réalisés couvrent
l’ensemble des méthodes de communication du système V.
29Seuls les messages appartenant à la
famille des IPCs n’ont pas été testés car leurs performances se situent entre celles de la mémoire
partagée (avec sémaphore) et de la “socket” locale. Les figures 2.13a et 2.13b représentent
respectivement les mesures de performances sur des échanges de 20 et de 160 caractères. En
abscisse on représente le nombre de cycle d’horloge effectués par le processeur. En ordonnée le
temps réel en seconde qu’il a nécessité pour réaliser l’ensemble des échanges. Ces mesures ont
été effectuées sur 3 machines différentes (Sun Server Ultra-sparc 2*250 Mhz sous Solaris 7, Sun
Ultra-sparc 10 sous Solaris 7, et Tadpole_S3GX sparc sous Solaris 5). De plus, les échanges sont
réalisés dans trois cas : mémoire partagée + sémaphore, “socket” locale, et “socket” domaine
internet.
Les Mesures effectuées ont permis certaines constatations sur les performances des
diffé-rents supports de communication disponibles sous Unix :
1. Le nombre d’octets échangés implique une très légère modification du temps de
com-munication. On peut certainement dire qu’il y a une étroite relation avec la longueur des
trames éthernet du système. Ce facteur, à priori linéaire, est valable quelque soit le
sup-port de communication. Celui-ci correspond en fait au temps de traitement CPU
30des
caractères. La différence de temps entre 20 et 160 caractères traités est la différence de
temps qui correspond à la différence du nombre d’appel de routines systèmes multiplié
par le temps de réaction du système à ces appels.
2. Les temps des appels systèmes diffèrent en fonction des supports de communication.
#(+*2c0 N d N Dd' NPl #~(@*c0 N 0 }¡ #(+*2HD¢} D£4¤48]¥¦c¤U¢
27
Les IPCs (“Inter Process Communication”) sont un moyen de communication standard sous Unix uniquement.
Néanmoins des bibliothèques de développement utilisées pour les modéliser existent aussi sur d’autres systèmes
d’exploitations.
28
Une mémoire partagée est souvent abrégée par SHM “SHared Memory”.
Modèles de Synchronisation 57
0
200 400 600 800 1000 1200 1400
0
5e+07
1e+08
1.5e+08
2e+08
2.5e+08
3e+08
3.5e+08
4e+08
4.5e+08
5e+08
5.5e+08
Tps de communication (sec)
Temps d’execution CPU (Nb clocks CPU)
1M d’exchanges de 20 caracteres
Socket locale
Socket internet
Semaphores+SHM
0
200 400 600 800 1000 1200 1400
0
1e+08
2e+08
3e+08
4e+08
5e+08
6e+08
Tps de communication (sec)
Temps d’execution CPU (Nb clock CPU)
1M d’exchanges de 160 caracteres
Socket locale
Socket internet
Semaphores+SHM
(a) : même machine
0
500
1000
1500
2000
2500
1e+08 1.5e+08 2e+08 2.5e+08 3e+08 3.5e+08 4e+08 4.5e+08 5e+08 5.5e+08
Tps de communication (sec)
Temps d’execution CPU (Nb Clock CPU)
Socket Internet
1M x 20 caractères
1M x 160 caractères
(b) : plusieurs machines
Outils de Cosimulation Existants 58
3. Les systèmes d’exploitation Solaris 2.5 et Solaris 2.7 sont différents. Solaris 2.7 a
sen-siblement diminué la différence de performance entre les “sockets” locales et les
séma-phores+SHM. Ces différences sont dues aux optimisations apportées au système
d’ex-ploitation de Solaris. L’optimisation est de l’ordre de 20% de moins en temps d’appel
système pour Solaris 2.7. De la même manière, cela diminue l’occupation du processeur.
4. Sur les “sockets” de domaine internet, le temps de communication dépend énormément
des performances de la carte réseau et essentiellement du temps de réaction de cette carte.
5. La communication par jeu de sémaphore et d’une mémoire partagée est très intéressante
car elle divise le temps CPU par 5 par rapport aux autres solutions. Elle diminue
éga-lement en moyenne par 5.5 le temps global d’une communication par rapport à celle
réalisée sur “socket” locale.
Néanmoins, ces mesures peuvent varier selon l’occupation du réseau pour la “socket”
inter-net et de la charge CPU pour l’ensemble.
2.5.3.3 Choix du support de communication pour le bus de cosimulation
La cosimulation de modules différents entre eux ne présente à priori pas de comportement
comparable à un modèle de communication client-serveur. En effet, un module, comme par
exemple le logiciel, peut aussi bien être le contrôleur du circuit (rôle de maître ou serveur)
qu’un co-processeur (rôle d’esclave ou client). La cosimulation requiert une communication
équilibrée : les échanges sont bidirectionnels et initiés par l’une ou l’autre des parties. Pour la
cosimulation, nous cherchons un modèle de communication pouvant fournir le plus large
éven-tail de mécanismes possible tout en respectant le transport des données. Il faut pouvoir choisir
un support de communication respectant les taux de transfert, la rapidité du transport, la
flexi-bilité par la communication distante et le respect des modes de synchronisation. Pour certains
modes de synchronisation, garantir la séquentialité des événements est nécessaire. Dans ces
cas, les messages IPC ou une “socket” locale pourront être utilisés. On peut utiliser la mémoire
partagée pour les cas où les données sont consommées en même temps qu’elles sont produites.
Enfin, pour la communication distante on utilisera une “socket” pour communiquer entre les
différentes machines utilisées dans l’environnement de cosimulation.
Dans le document
Cosimulation multiniveaux dans un flot de conception multilangage
(Page 56-60)