Section: New Results
From Concurrent Multiclock Programs to Deterministic Asynchronous Implementations
Participants : Dumitru Potop-Butucaru, Robert de Simone, Yves Sorel, Jean-Pierre Talpin (EPI ESPRESSO).
Current techniques for the compilation of multi-clock synchronous programs often produce implementations that are over-synchronized. In such implementations, all the clocks (activation conditions) are forced to derive from a single base clock to allow a simple, hierarchical code generation. This approach is well-suited when the target is a sequential processor. For distributed implementations, however, it results in unnecessary inter-processor synchronizations with may result in important performance losses.
We proposed this year a general method to characterize and synthesize correctness-preserving, asynchronous wrappers for synchronous processes on a globally asynchronous locally synchronous (GALS) architecture. Our technique is mathematically founded on the theory of weakly endochronous systems, due to Potop, Caillaud, and Benveniste. Weak endochrony gives a compositional sufficient condition establishing that a concurrent synchronous specification exhibits no behavior where information on the absence of an event is needed. Thus, the synchronous specification can safely be executed with identical results in any asynchronous environment (where absence cannot be sensed). Weak endochrony thus gives a latency-insensitivity and scheduling-independence criterion.
We defined the first general method to check weak endochrony on multi-clock synchronous programs. The method is based on the construction of so-called generator sets. Generator sets contain minimal synchronization patterns that characterize all possible reactions of a multi-clocked program. These sets are used to check that a specification is indeed weakly endochronous, in which case they can be used to generate the GALS wrapper. In case the specification is not weakly endochronous, the generators can be used to generate intuitive error messages. Thus, we provide an alternative to classical compilation schemes for multi-clock programs, such as the clock hierarchization techniques used in Signal/Polychrony.
We are currently working on the application of our technique in the compilation of the Signal language, and on the generation of simpler communication protocols in the SynDEx tool.