Formalisme de synchronisation de modele
FORMALISME DE SYNCHRONISATION DE MODELESย
Les prototypes et les rรฉflexions sur la simulation de la compรฉtition pour les ressources nous ont fait rรฉaliser la nรฉcessitรฉ de nous pencher sur une architecture de simulation gรฉnรฉrique capable de simuler des systรจmes complexes formรฉs par le couplage de modรจles, et de synchroniser les calculs pour rester aussi cohรฉrent que possible. Cette architecture et le formalisme de modรฉlisation associรฉ sont exposรฉs dans ce chapitre
Briques de base
Le formalisme de synchronisation utilise principalement deux sortes dโobjets : les Modรจles et les Caches. Les Modรจles sont des composants de calcul, et les Caches sont des abstractions des donnรฉes servant dโentrรฉes et de sorties `a ces calculs. Les Modรจles lisent donc leurs entrรฉes dans des Caches, puis รฉcrivent leurs sorties dans dโautres Caches. Les Caches mettent alors `a jour les donnรฉes rรฉelles de maniรจre synchrone. Cette architecture basique est illustrรฉe sur la figure 3.1. Nous utilisons dans toute la suite la convention dโรฉcriture suivante : le terme Modรจle employรฉ avec une majuscule a le sens particulier qui est dรฉcrit dans ce chapitre, employรฉ avec une minuscule il dรฉsigne le modรจle au sens de reprรฉsentation de la rรฉalitรฉ, comme employรฉ plus couramment par les scientifiques. Une de ses propriรฉtรฉs les plus remarquable et utile est que les donnรฉes de la simulation sont stockรฉes dans une structure totalement sรฉparรฉe des composants de calcul, qui est toujours maintenue dans un รฉtat cohรฉrent (en admettant que la mise `a jour soit instantanรฉe). Cette structure de donnรฉes reprรฉsente lโรฉtat de la simulation, et suffit `a dรฉmarrer ou `a reprendre une simulation. Non seulement cela permet des simulations plus stables, puisque les Modรจles lisent toujours des donnรฉes cohรฉrentes, mais cela rรฉsoud aussi รฉlรฉgamment, en thรฉorie, le problรจme de lโarrหet et et de la reprise des simulations, ainsi que celui de la sauvegarde indispensable des rรฉsultats. Dรฉcrivons maintenant plus prรฉcisรฉment les objets de base.
La structure des donnรฉes de la simulation est dupliquรฉe au sein des Caches, qui lโisolent des Modรจles, ce qui assure une รฉvolution synchrone. Les Modรจles lisent leurs entrรฉes dans les Caches, รฉcrivent leurs sorties dans la structure dupliquรฉe stockรฉe dans les Caches. Ils transmettent aussi une information temporelle au Manager qui permet de fixer dynamiquement le pas de temps de la simulation. Lโopรฉration de mise `a jour recopie les donnรฉes locales des Caches vers les donnรฉes de simulation. Cโest cette opรฉration qui est rรฉalisรฉe de maniรจre synchrone.
Caches
Les Caches servent dโinterface vers les donnรฉes rรฉelles, et font รฉvoluer ces donnรฉes rรฉelles en les mettant `a jour sur demande. Ils ont un lien vers les donnรฉes rรฉelles et une copie interne de ces donnรฉes dans laquelle ils stockent temporairement les nouvelles valeurs, dโo`u la dรฉnomination choisie. Liens avec les Modรจles Les Caches communiquent avec les Modรจles `a travers deux interfaces spรฉcifiques aux comportements diffรฉrents, qui prรฉservent la synchronisation des donnรฉes de simulation. Ces deux interfaces permettent aux Modรจles de collecter dans la liste des donnรฉes externes les valeurs des variables dโentrรฉe et de transmettre leurs variables de sortie. La premiรจre interface est le Getter. Un Modรจle peut, `a partir dโun lien vers un Getter, lire une valeur. Dans ce cas le Cache renvoie la valeur stockรฉe dans la structure de donnรฉes externe. La seconde interface est le Setter. Un Modรจle peut utiliser cette interface pour spรฉcifier la future valeur `a affecter `a la donnรฉe externe. Le Cache copie cette valeur et la conserve jusquโ`a la prochaine mise `a jour. Comme le Getter est liรฉ `a la structure de donnรฉes externes directement alors que.
Briques de base 45
le Setter agit sur la copie interne situรฉe dans le Cache, il nโy a aucun risque que la valeur renvoyรฉe par le Getter soit modifiรฉe par un Modรจle interagissant avec le Setter. En revanche, il est souhaitable quโun seul Modรจle puisse interagir avec un Setter donnรฉ, sans quoi la valeur en cache risque dโหetre รฉcrasรฉe. Lโinterface Getter nโimpliquant aucune modification, plusieurs Modรจles peuvent sans problรจme lire la valeur dโun mหeme Getter. Mise `a jour La valeur associรฉe au Cache peut หetre mise `a jour de plusieurs faยธcons, suivant le type de la valeur et le systรจme simulรฉ. La faยธcon รฉvidente de mettre `a jour est de copier la nouvelle valeur dans la structure de donnรฉes externe. Cependant, dans certains cas, conserver deux exemplaire dโune donnรฉe peut หetre un gaspillage de mรฉmoire. En particulier, quand la donnรฉe contient une grande quantitรฉ dโinformation (une image par exemple) mais nโest modifiรฉe que sur une petite partie de ces informations, une autre stratรฉgie peut หetre choisie : on peut crรฉer le Cache comme un Getter du ยซ gros ยป type de donnรฉe, et comme un Setter du type de donnรฉe ยซ variation ยป, qui contient juste les informations nรฉcessaires `a la mise `a jour.
En plus dโapporter des bรฉnรฉfices en terme dโoccupation mรฉmoire et de vitesse dโexรฉcution (car les opรฉrations de copie sont dโautant plus coหuteuses que les informations `a copier sont nombreuses), ce choix peut หetre naturel pour certains modรจles, qui par dรฉfinition calculent la variation dโune donnรฉe et pas une valeur. Cohรฉrence Un Cache est dit dans un รฉtat cohรฉrent lorsque la mise `a jour ne causerait pas de changement significatif dans la valeur de la donnรฉe externe. Significatif peut ici prendre plusieurs sens, selon les intentions et le choix de modรฉlisation pour le couplage des Modรจles. On peut หetre trรจs strict et poser que tout changement de valeur est significatif, ou encore poser un seuil en deยธc`a duquel on considรจre la variation comme nรฉgligeable. Cette dรฉfinition est importante pour assurer la convergence du systรจme dans certains
cas, en particulier ceux comportant des boucles de rรฉtroaction.
Modeles
Les Modรจles sont responsables de tous les calculs de simulation. Ils peuvent หetre pourvus dโun รฉtat interne quโils doivent faire รฉvoluer. Entrรฉes, Sorties, Etat ยด Un Modรจle possรจde une liste dโentrรฉes I, qui sont autant de liens vers des interfaces Getters. 46 3. Formalisme de synchronisation de modรจles Lโรฉtat dโun Modรจle est un ensemble de donnรฉes qui lui sont propres, et ne sont accessibles en รฉcriture que depuis lโintรฉrieur du Modรจle. Ces donnรฉes sont accessibles par des Caches, comme les entrรฉes et les sorties, sauf que dans le cas de lโรฉtat le Modรจle possรจde le Cache et pas juste des liens vers des Getters et des Setters. Ainsi, on respecte le principe de sรฉparation des donnรฉes et des calculs, lโรฉtat des Modรจles รฉtant stockรฉ dans la structure de donnรฉes externe. Cela est nรฉcessaire car un Modรจle pourrait รฉventuellement ne pas หetre persistant en mรฉmoire, alors que son รฉtat devrait lโหetre. Un exemple de ce type sera dรฉtaillรฉ dans la partie Certains Modรจles nโont pas besoin dโรฉtat, et dans ce cas lโarchitecture de simulation prรฉsentรฉe ne leur impose rien de particulier. La prรฉsence ou non dโun รฉtat pour un Modรจle nโaffecte en rien les fonctions de calculs prรฉsentรฉes ci-aprรจs. Calculs Un Modรจle doit dรฉfinir trois fonctions qui seront utilisรฉes dans lโalgorithme de simulation. La premiรจre est la fonction cumul :
o`u OT est une liste des sorties ยซ transitoires ยป. Cette fonction permet au Modรจle de rรฉagir instantanรฉment aux changements de ses entrรฉes. Un exemple de Modรจle purement transitoire serait un additionneur qui se contente de faire la somme de ses entrรฉes. Un tel Modรจle nโa pas de mรฉmoire du passรฉ, pas de notion dโรฉcoulement du temps. Il existe bien sหur des cas de Modรจles utilisant les deux fonctions, comme on le verra dans les exemples aux chapitres 4 et 5. A part ces fonctions de calcul, les Modรจles dรฉfinissent une ` troisiรจme fonction time, utilisรฉe pour la synchronisation : Ici tn est la date la plus lointaine `a laquelle un appel `a la fonction cumul du Modรจle doit avoir lieu. Ceci permet en particulier, pour les modรจles faisant une intรฉgration temporelle, de fixer une borne supรฉrieure au pas de temps. Mais les Modรจles peuvent aussi sโen servir pour gรฉnรฉrer des รฉvรจnements, par exemple.
Hierarchiesย
Exemple simple Nous allons donner ici un exemple simple de Modรจle utilisant les trois fonctions vues prรฉcรฉdement. Le but du Modรจle est, `a partir de deux entrรฉes A(t) et B(t), de fournir la valeur S = A On peut mหeme imposer une borne sur la variation de e, par exemple si elle ne doit pas dรฉpasser la valeur K on peut choisir plutหot : Reste `a voir comment lโappel des fonctions des Modรจles et des Caches est organisรฉ pour aboutir `a une simulation du comportement du systรจme. Ceci fait appel au concept de hiรฉrarchie et est dรฉtaillรฉ dans la section suivante.
Hiรฉrarchies
La spรฉcification des Modรจles et des Caches donne la capacitรฉ de construire des Modรจles hiรฉrarchiques, cโest-`a-dire contenant un graphe de Modรจles et de Caches.
Hierarchie generique
La structure dโun Modรจle hiรฉrarchique est assez simple `a comprendre. Un exemple est dรฉtaillรฉ sur la figure 3.2. On a besoin de dรฉfinir des Getters et Setters particuliers, quโon appelle des Buffers, pour transmettre les entrรฉes du Modรจle aux sous-Modรจles et pour recopier les sorties des sous-Modรจles dans celle du Modรจle. Ces objets ne sont Chacun des Modรจles a aussi un รฉtat, S1 et S2 respectivement. Des buffers I1 et I2 permettent de lire les entrรฉes, dโautres O1 et O2 permettent dโรฉcrire des sorties. Des lignes pointillรฉes relient les Caches vers les donnรฉes de simulation, dont la structure est `a lโimage de celle du Modรจle. Anisi, Data0 est la donnรฉe dโรฉtat de Model0, et est composรฉe de Data1 et Data2, les donnรฉes dโรฉtat des sous-Modรจles, et de V1 et V2, les valeurs associรฉes aux Caches couplant les sous-Modรจles. pas des Caches, en ce sens quโils ne sont pas liรฉs `a une structure de donnรฉes externe. Ils servent purement dโintermรฉdiaires de calcul et nโont pas `a หetre synchronisรฉs. Cโest le Modรจle qui est responsable de leur gestion et de leur utilisation. Un Modรจle hiรฉrarchique a un รฉtat qui est reprรฉsentatif de la structure interne,
cโest-`a-dire des Modรจles et Caches quโil possรจde. Il est entiรจrement responsable de la synchronisation de tous ces objets ; le Manager global de la simulation nโy a pas accรจs. Le comportement dโun Modรจle hiรฉrarchique varie suivant la modรฉlisation souhaitรฉe. Il peut หetre un vรฉritable sous-simulateur qui isole temporellement ses sous-Modรจles du reste de la simulation (ce qui est une faยธcon possible dโobtenir un effet de multi-รฉchelle temporel). Il peut au contraire หetre simplement une ยซ coquille ยป isolant des blocs logiques, mais nโajoutant pas lui-mหeme de comportements. Deux exemples dโutilisation de hiรฉrarchies sont dรฉtaillรฉs dans la suite, pour le management de la simulation dโabord, puis pour certaines variantes de spatialisation.
|
Table des matiรจres
TABLE DES MATIERES
Remerciements
1. Contexte, enjeux et problematiquesย
1.1 Contexte
2. Prototypes de simulateurย
2.1 Premier prototype de ยซ paysage fonctionnel ยป
3. Formalisme de synchronisation de modele
4. Modรจles pour les ressourcesย
5. GreenLab continuย
6. Illustrations et exemples
7. Conclusion et perspectivesย
Calibration
Fonctionnement
Visualisation
Annexe 113
A. Programmation littรฉraire
A.1 Blocs et fragments
A.2 Fichier gรฉnรฉrรฉ
A.3 Rรฉfรฉrences croisรฉes
B. Pseudocode complet de la fonction de synchronisation
Liste des figures
Bibliographie
Tรฉlรฉcharger le rapport complet