Home > Research > Stages/emplois > [TAKEN] Simulation coopérative et parallèle : expérimentations avec le (...)

[TAKEN] Simulation coopérative et parallèle : expérimentations avec le scheduler SystemC

Proposition de stage TER

Friday 24 September 2010

Ce sujet est déjà pris, et gardé ici seulement pour archive.

laboratoire : Verimag

equipe : Équipe SYNCHRONE

encadrants : Matthieu.Moy@imag.fr, Claire.Maiza@imag.fr

Thème général

SystemC est une bibliothèque pour C++ qui permet de modéliser des systèmes matériels complexes (typiquement, les systèmes sur puces contenus dans des téléphones portables, télévision numériques, ...).

Le parallélisme du système modélisé est exprimé avec des processus SystemC, qui s'exécutent séquentiellement pendant la simulation (on parle de simulation « coopérative »). La simulation coopérative apporte un certain confort d'utilisation, puisque la plupart des accès aux variables partagées n'ont plus besoin d'être protégés par des verrous (mutex), mais c'est aussi une limitation importante de SystemC, puisqu'elle force la simulation à s'exécuter sur un seul processeur, et ne permet pas toujours de modéliser certains comportements du matériel.

Nous cherchons donc à trouver des compromis entre simulation coopérative et simulation parallèle (ou « préemptive »).

Compétences attendues

L'étudiant devra avoir de bonnes compétences en programmation parallèle.

La connaissance de C++ serait un avantage (puisque SystemC est basé sur C++), mais il est tout à fait possible d'apprendre les notions de C++ nécessaires très rapidement si on connait le langage C et la programmation orientée objet.

Contexte du travail

L'équipe SYNCHRONE du laboratoire Verimag travaille sur SystemC depuis près de 10 ans, sur des problématiques diverses. En parallèle avec ceci, nous avons développé un simulateur alternatif appelé jTLM, sur lequel nous avons déjà pu expérimenter différentes approches du parallélisme. L'idée est maintenant de s'inspirer de ces travaux, et de les mettre en oeuvre dans SystemC.

Sujet

Le stage devrait se dérouler suivant ces étapes :

  • Se familiariser avec C++ et SystemC, écrire quelques exemples de code,
  • Expérimenter les mélanges entre threads POSIX (pthreads) et les processus SystemC, et identifier les limitations pratiques et théoriques,
  • Proposer et implémenter une manière de mélanger threads POSIX et processus SystemC.

On s'interdira de modifier la bibliothèque SystemC, pour plusieurs raisons : d'une part, le code SystemC proprement dit est gros et complexe, un TER ne laissera pas le temps de s'y plonger. D'autre part, il est souhaitable que les programmes écrits utilisant l'approche proposée puissent tourner sur d'autres simulateurs que l'implémentation de référence de SystemC.

En parallèle avec ceci, un travail de bibliographie bien entendu indispensable, sur les travaux passés du laboratoire dans le domaine, et sur les approches d'autres laboratoires.

Résultats attendus

  • Une méthode pour mélanger la simulation parallèle (avec threads POSIX) et la simulation coopérative des processus SystemC.
  • Une implémentation de cette méthode, via une API définie au dessus de SystemC.
Valid XHTML 1.0 Transitional
Valid CSS!
SPIP | | Site Map | Follow site activity RSS 2.0
Graphic design (c) styleshout under License Creative Commons Attribution 2.5 License