Compiling synchronous languages to optimal move code for exposed datapath architectures

Conventional processor architectures are limited in exploiting instruction level parallelism (ILP). One of the reasons for this limitation is their relatively low number of registers. Thus, recent processor architectures expose their datapaths so that the compiler can take care of directly transporting results from processing units to other processing units. Among these architectures, the Synchronous Control Asynchronous Dataflow (SCAD) architecture is a recently proposed exposed datapath architecture whose goal is to completely bypass the use of registers. Processor architectures with a high degree of ILP like SCAD are particularly useful for executing synchronous programs: The execution of a synchronous program is a sequence of reaction steps that consist of atomic actions that have to be executed in dataflow order. Synchronous programs typically provide a lot of ILP so that exposed datapath architectures may execute these programs efficiently. However, optimal code generation for SCAD is a big challenge: Previous work already showed how one can compile basic blocks to optimal move code for SCAD by means of answer set programming (ASP). This paper extends this approach in order to compile complete synchronous programs instead of only basic blocks to optimal move code. As a result, an ASP-based compiler was developed to translate Quartz programs to move code for the SCAD architecture by maximizing the use of the available ILP in the program while respecting the available resource limitations of the available processor.

[1]  Xin Li,et al.  A concurrent reactive Esterel processor based on multi-threading , 2006, SAC.

[2]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[3]  Sandeep K. Shukla,et al.  Integrating system descriptions by clocked guarded actions , 2011, FDL 2011 Proceedings.

[4]  Klaus Schneider,et al.  Towards Code Generation for the Synchronous Control Asynchronous Dataflow (SCAD) Architectures , 2016, MBMV.

[5]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[6]  Lizy Kurian John,et al.  Scaling to the end of silicon with EDGE architectures , 2004, Computer.

[7]  Tobias Schüle,et al.  Causality analysis of synchronous programs with delayed actions , 2004, CASES '04.

[8]  Stephen A. Edwards,et al.  The Synchronous Languages Twelve Years Later , 1997 .

[9]  Klaus Schneider,et al.  Separate Translation of Synchronous Programs to Guarded Actions , 2011 .

[10]  Michael Harder,et al.  An Esterel processor with full preemption support and its worst case reaction time analysis , 2005, CASES '05.

[11]  Thomas Eiter,et al.  Answer Set Programming: A Primer , 2009, Reasoning Web.

[12]  Zoran A. Salcic,et al.  Towards direct execution of esterel programs on reactive processors , 2004, EMSOFT '04.

[13]  Klaus Schneider,et al.  Are Synchronous Programs Logic Programs? , 2018, Principled Software Development.

[14]  Philippe Roussel,et al.  The birth of Prolog , 1993, HOPL-II.

[15]  Michael Mendler,et al.  SCEst: Sequentially constructive esterel , 2015, 2015 ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE).

[16]  Miroslaw Truszczynski,et al.  Answer Set Optimization , 2003, IJCAI.

[17]  Fangzhen Lin,et al.  ASSAT: computing answer sets of a logic program by SAT solvers , 2002, Artif. Intell..

[18]  Yongwang Zhao,et al.  Towards a verified compiler prototype for the synchronous language SIGNAL , 2015, Frontiers of Computer Science.

[19]  François Fages,et al.  Consistency of Clark's completion and existence of stable models , 1992, Methods Log. Comput. Sci..

[20]  Steven Swanson,et al.  The WaveScalar architecture , 2007, TOCS.

[21]  Herman Schmit,et al.  Queue machines: hardware compilation in hardware , 2002, Proceedings. 10th Annual IEEE Symposium on Field-Programmable Custom Computing Machines.

[22]  Frédéric Boussinot,et al.  The ESTEREL language , 1991, Proc. IEEE.

[23]  Henk Corporaal,et al.  Computation in the Context of Transport Triggered Architectures , 2000, International Journal of Parallel Programming.

[24]  Klaus Schneider,et al.  The Synchronous Programming Language Quartz , 2009 .

[25]  Melvin Fitting,et al.  A Kripke-Kleene Semantics for Logic Programs , 1985, J. Log. Program..

[26]  Klaus Schneider,et al.  Exploring different execution paradigms in exposed datapath architectures with buffered processing units , 2017, 2017 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS).

[27]  Milos D. Ercegovac,et al.  Queue machines: an organization for parallel computation , 1981, CONPAR.

[28]  Dong Hui,et al.  REMIC - design of a reactive embedded microprocessor core , 2005, Proceedings of the ASP-DAC 2005. Asia and South Pacific Design Automation Conference, 2005..

[29]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[30]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

[31]  Zoran A. Salcic,et al.  REFLIX: A Processor Core for Reactive Embedded Applications , 2002, FPL.

[32]  Zoran A. Salcic,et al.  REFLIX: a processor core with native support for control-dominated embedded applications , 2004, Microprocess. Microsystems.

[33]  Henry Hoffmann,et al.  The Raw Microprocessor: A Computational Fabric for Software Circuits and General-Purpose Programs , 2002, IEEE Micro.

[34]  Kenneth A. Ross,et al.  The well-founded semantics for general logic programs , 1991, JACM.

[35]  Xin Li,et al.  Multithreaded Reactive Programming—the Kiel Esterel Processor , 2012, IEEE Transactions on Computers.

[36]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[37]  Joaquín Aguado,et al.  Sequentially constructive concurrency A conservative extension of the synchronous model of computation , 2014, 2013 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[38]  Nicolas Halbwachs,et al.  A synchronous language at work: the story of Lustre , 2005, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2005. MEMOCODE '05..

[39]  Klaus Schneider,et al.  Optimal Scheduling for Exposed Datapath Architectures with Buffered Processing Units by ASP , 2018 .

[40]  Sandeep K. Shukla,et al.  Representation of synchronous, asynchronous, and polychronous components by clocked guarded actions , 2014, Des. Autom. Embed. Syst..

[41]  Klaus Schneider,et al.  Optimal Scheduling for Exposed Datapath Architectures with Buffered Processing Units by ASP , 2018, Theory Pract. Log. Program..

[42]  LiXin,et al.  Mapping esterel onto a multi-threaded embedded processor , 2006 .

[43]  Klaus Schneider,et al.  Exploring the Potential of Instruction-Level Parallelism of Exposed Datapath Architectures with Buffered Processing Units , 2017, 2017 17th International Conference on Application of Concurrency to System Design (ACSD).

[44]  Klaus Schneider,et al.  Optimal compilation for exposed datapath architectures with buffered processing units by SAT solvers , 2016, 2016 ACM/IEEE International Conference on Formal Methods and Models for System Design (MEMOCODE).

[45]  Thierry Gautier,et al.  Programming real-time applications with SIGNAL , 1991, Proc. IEEE.