Thèse soutenue

Génération automatique d'implémentations optimisées de protocoles

FR  |  
EN
Auteur / Autrice : Claude Castelluccia
Direction : Walid Dabbous
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 1996
Etablissement(s) : Nice
Partenaire(s) de recherche : Autre partenaire : Université de Nice-Sophia Antipolis. Faculté des sciences
Jury : Président / Présidente : Jean-Paul Rigault
Examinateurs / Examinatrices : Christian Huitema, Aruna Seneviratne
Rapporteurs / Rapporteuses : Jon Crowcroft, Sacha Krakowiak

Résumé

FR  |  
EN

Un compilateur de protocoles est un outil qui génère à partir d'une spécification formelle d'un protocole une implémentation. Les compilateurs de protocoles produisent généralement du code de qualité médiocre en terme de vitesse d'exécution et de taille du code et sont, pour cette raison, peu utilisés. Dans cette thèse, nous montrons qu'en utilisant une approche synchrone et en optimisant le code généré, il est possible de compiler des spécifications formelles en des implémentations très performantes. Nous avons développé un compilateur de protocoles qui utilise ces deux techniques. Ce compilateur prend en entrée une spécification modulaire du protocole écrite dans le langage synchrone Esterel. La spécification est compilée en un automate séquentiel par le compilateur Esterel dans un format intermédiaire (le format Oc). L'automate est alors optimisé et transformé en une implémentation C par notre optimisateur de protocoles, appelé HIPPCO. HIPPCO améliore les performances du code et réduit sa taille en optimisant simultanément la vitesse d'exécution du chemin commun et la taille du chemin rare. Nous évaluons les performances des implémentations de notre compilateur en spécifiant le protocole TCP et en comparant les performances de l'implémentation automatiquement générée avec celle d'une version manuelle dérivée de l'implémentation standard BSD. Les résultats sont très encourageants. Le code généré par HIPPCO exécute moins d'instructions et utilise le cache d'instructions et le pipelining plus efficacement que le code BSD tout en ayant une taille de code raisonnable.