Research indexJournal article
Generating Multi-Threaded code from Polychronous Specifications
Jose, Patel, Shukla and 1 other
Electronic Notes in Theoretical Computer Science1 Jun 2009Open access
NobleIDark:/48914/w1/20260525/DBD6211CDOI10.1016/j.entcs.2008.01.006
Generating Multi-Threaded code from Polychronous Specifications
Jose, Patel, Shukla and 1 other · Electronic Notes in Theoretical Computer Science · 2009
NobleIDark:/48914/w1/20260525/DBD6211CDOI10.1016/j.entcs.2008.01.006
Free to read at the publisher
You can read the abstract here, or the full text at the publisher.
Abstract
SIGNAL, Lustre, Esterel, and a few other synchronous programming language compilers accomplish automated sequential code generation from synchronous specifications. In generating sequential code, the concurrency expressed in the synchronous programs is sequentialized mostly because such embedded software was designed to run on single-core processors. With the widespread advent of multi-core processors, it is time for model-driven generation of efficient concurrent multi-threaded code. Synchronous programming models capture concurrency in the computation quite naturally, especially in its data-flow multi-clock (polychronous) flavor. Therefore, it seems reasonable to attempt generating multi-threaded code from polychronous data-flow models. However, multi-threaded code generation from polychronous languages aimed at multi-core processors is still in its infancy. In the recent release of the Polychrony compiler, multi-threaded code generation uses micro-level threading which creates a large number of threads and equally large number of semaphores, leading to inefficiency. We propose a process-oriented and non-invasive multi-threaded code generation using the sequential code generators. By noninvasive we mean that instead of changing the compiler, we use the existing sequential code generator and separately synthesize some programming glue to generate efficient multi-threaded code. This paper describes the problem of multi-threaded code generation in general, and elaborates on how Polychrony compiler for sequential code generation is used to accomplish multi-threaded code generation.