Efficient Compilation of Esterel for Multi-core Execution - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Reports (Research Report) Year : 2012

Efficient Compilation of Esterel for Multi-core Execution

Abstract

Recent advances in processor technology have lead to affordable multi-core processors, which could even be used in embedded applications. However, many embedded applications are safety-critical and require suitable abstractions such as the synchronous abstraction. Esterel is one such language belonging to the synchronous family and has been used extensively in the design of safety critical systems. While several compilation techniques of Esterel have been proposed, these are unsuitable for multi-cores due to the inherently sequential approach of \emph{compiling away} the concurrency. We overcome this limitation by proposing two distinct approaches that distribute Esterel threads evenly across multi-core architectures. The first approach statically distributes threads based on the computation intensity approximated by the number of instructions generated from each thread. The second approach distributes threads dynamically using a thread queue that dispatches a thread whenever a core becomes idle. We have performed extensive benchmarking over large Esterel programs to illustrate that, using the static approach, achieving throughput with parallel execution of Esterel is benchmark dependent. However, the dynamic approach not only benefits data-dominated Esterel programs, but also large control-dominated ones. In particular, gains in performance of 36% and 93% were attained for a large control-dominated program using a dual-core and quad-core Microblaze processor, respectively.
Les récentes avancées technologiques des processeurs ont rendu abordables les processeurs multi-cœurs qui ont pu être utilisés dans les systèmes embarqués. Cependant, beaucoup de systèmes embarqués ont des contraintes de sécurité qui demandent des abstractions adaptées, comme les abstractions de synchronisation. Esterel est un langage de la famille des langages synchrones, largement utilisé dans l'élaboration de système avec des contraintes de sécurité. Plusieurs techniques de compilation ont été proposées pour Esterel, mais elles ne sont pas adaptables pour les processeurs multi-cœurs en raison du caractère séquentiel intrinsèque à la compilation, loin de la simultanéité. Cette limitation est franchie grâce à deux approches distinctes qui distribuent les threads Esterel uniformément sur l'architecture multi-cœurs. La première approche distribue statiquement les threads issues de l'intensité calculée approximée par le nombre d'instructions générées par chaque thread. La seconde approche distribue dynamiquement les threads en utilisant une file qui envoie les threads lorsqu'un c{\oe}ur est inactif. Nous avons réalisé d'importants benchmarking sur un grand nombre de programmes Esterel pour illustrer que la réalisation de débit avec l'exécution en parallèle statique de Esterel est dépendante du benchmark. En revanche, l'approche dynamique ne profite pas qu'aux programmes Esterel à dominance de donnée, mais aussi bien à ceux à large dominance de contrôle. En particulier, des gains de performance de 36% et de 93% ont été atteints pour des programmes Esterel à dominance de contrôle en utilisant respectivement un processeur dual-core et un processeur quad-core Microblaze.
Fichier principal
Vignette du fichier
RR-8056.pdf (1.43 Mo) Télécharger le fichier
Origin : Files produced by the author(s)
Loading...

Dates and versions

hal-00728149 , version 1 (05-09-2012)

Identifiers

  • HAL Id : hal-00728149 , version 1

Cite

Simon Yuan, Li Hsien Yoong, Partha S. Roop. Efficient Compilation of Esterel for Multi-core Execution. [Research Report] RR-8056, INRIA. 2012. ⟨hal-00728149⟩
119 View
111 Download

Share

Gmail Facebook X LinkedIn More