TimeC: A Time Constraint Language for ILP Processor Compilation

Enabled by RISC technologies, low-cost commodity microprocessors are performing at ever increasing levels, significantly via instruction level parallelism (ILP). This in turn increases the opportunities for their use in a variety of day-to-day applications ranging from the simple control of appliances such as microwave ovens, to sophisticated systems for cabin control in modern aircraft. Indeed, “embedded” applications such as these represent segments in the computer industry with great potential for growth. However, this growth is currently impeded by the lack of robust optimizing compiler technologies that support the assured, rapid and inexpensive prototyping of real-time software in the context of microprocessors with ILP. In this paper we describe a novel notation, TimeC, for specifying timing constraints in programs, independent of the base language being used to develop the embedded application; TimeC specifications are language independent and can be instrumented into imperative and object-oriented languages non-intrusively. As we will show, the program synthesis problem that arise out of Time_tract specifications, a subset of TimeC, are always “tractable.” In contrast, a range of specification mechanisms proposed earlier yield substantially intractable synthesis questions, thereby limiting their potential utility. We will compare the tractability and related expressive power issues between TimeC and some of the extant mechanisms for specifying properties of timed programs.

[1]  Jonathan S. Ostroff,et al.  Temporal logic for real-time systems , 1989 .

[2]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[3]  Thomas A. Henzinger,et al.  Real-time logics: complexity and expressiveness , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[4]  Ron Koymans,et al.  Specifying real-time properties with metric temporal logic , 1990, Real-Time Systems.

[5]  Phillip A. Laplante,et al.  A description language for engineering of complex real-time systems , 2004, Real-Time Systems.

[6]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[7]  Aloysius K. Mok,et al.  Safety analysis of timing properties in real-time systems , 1986, IEEE Transactions on Software Engineering.

[8]  Al Stevens,et al.  C programming , 1990 .

[9]  A. Aiken,et al.  Loop Quantization: an Analysis and Algorithm , 1987 .

[10]  Thomas A. Henzinger,et al.  A really temporal logic , 1994, JACM.

[11]  Rajeev Alur,et al.  A Theory of Timed Automata , 1994, Theor. Comput. Sci..

[12]  Amir Pnueli,et al.  Explicit clock temporal logic , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[13]  Thomas A. Henzinger,et al.  Real-Time Logics: Complexity and Expressiveness , 1993, Inf. Comput..

[14]  Ken Kennedy,et al.  Conversion of control dependence to data dependence , 1983, POPL '83.

[15]  Marc A. de Kruijf Compiler Construction , 1996, Lecture Notes in Computer Science.

[16]  Arthur J. Bernstein,et al.  Proving real-time properties of programs with temporal logic , 1981, SOSP.

[17]  Mohamed F. Younis,et al.  A Language for Complex Real-Time Systems , 1995, Comput. J..

[18]  Aloysius K. Mok,et al.  A Graph-Theoretic Approach for Timing Analysis and its Implementation , 1987, IEEE Transactions on Computers.

[19]  Grzegorz Rozenberg,et al.  Proceedings of the Real-Time: Theory in Practice, REX Workshop , 1991 .

[20]  Scott A. Mahlke,et al.  Reverse If-Conversion , 1993, PLDI '93.

[21]  Alan C. Shaw,et al.  Reasoning About Time in Higher-Level Language Software , 1989, IEEE Trans. Software Eng..

[22]  Bjarne Stroustrup,et al.  The C++ programming language (3. ed.) , 1997 .

[23]  Thomas A. Henzinger,et al.  Logics and Models of Real Time: A Survey , 1991, REX Workshop.

[24]  Monica S. Lam,et al.  RETROSPECTIVE : Software Pipelining : An Effective Scheduling Technique for VLIW Machines , 1998 .

[25]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

[26]  Robert S. Boyer,et al.  The Correctness Problem in Computer Science , 1982 .

[27]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[28]  Richard Gerber,et al.  Compiling Real-Time Programs With Timing Constraint Refinement and Structural Code Motion , 1995, IEEE Trans. Software Eng..

[29]  Michael Rodeh,et al.  Global instruction scheduling for superscalar machines , 1991, PLDI '91.

[30]  Willem P. de Roever,et al.  Real-time programming and asynchronous message passing , 1983, PODC '83.

[31]  B. Ramakrishna Rau,et al.  Iterative modulo scheduling: an algorithm for software pipelining loops , 1994, MICRO 27.

[32]  Willem P. de Roever,et al.  Examples of a Real-Time Temporal Logic Specification , 1983, The Analysis of Concurrent Systems.

[33]  Amir Pnueli,et al.  A fast algorithm for scheduling time-constrained instructions on processors with ILP , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[34]  Zohar Manna,et al.  Verification of concurrent programs, Part I: The temporal framework , 1981 .