Automatic flow analysis using symbolic execution and path enumeration

Similar documents
Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs

History-based Schemes and Implicit Path Enumeration

Handling Cyclic Execution Paths in Timing Analysis of Component-based Software

Transforming Execution-Time Boundable Code into Temporally Predictable Code

HW/SW Codesign. WCET Analysis

Classification of Code Annotations and Discussion of Compiler-Support for Worst-Case Execution Time Analysis

Parametric Timing Analysis

Data-Flow Based Detection of Loop Bounds

Dissecting Execution Traces to Understand Long Timing Effects

Evaluating Static Worst-Case Execution-Time Analysis for a Commercial Real-Time Operating System

Static WCET Analysis: Methods and Tools

Automatic Derivation of Loop Bounds and Infeasible Paths for WCET Analysis using Abstract Execution

Parametric Timing Analysis for Complex Architectures

PAPER Visualization and Formalization of User Constraints for Tight Estimation of Worst-Case Execution Time

Performance Analysis of Embedded Software Using Implicit Path Enumeration

Approximation of the Worst-Case Execution Time Using Structural Analysis. Matteo Corti and Thomas Gross Zürich

Joint Entity Resolution

Worst-Case Execution Time Analysis for Dynamic Branch Predictors

Hardware-Software Codesign. 9. Worst Case Execution Time Analysis

ait: WORST-CASE EXECUTION TIME PREDICTION BY STATIC PROGRAM ANALYSIS

COS 320. Compiling Techniques

Symbolic Execution and Proof of Properties

On the False Path Problem in Hard Real-Time Programs

PathStack : A Holistic Path Join Algorithm for Path Query with Not-predicates on XML Data

BINTEST Binary Search-based Test Case Generation

The SPL Programming Language Reference Manual

FIFO Cache Analysis for WCET Estimation: A Quantitative Approach

A Tool for the Computation of Worst Case Task Execution Times

Timing Analysis Enhancement for Synchronous Program

Static verification of program running time

Single-pass Static Semantic Check for Efficient Translation in YAPL

A Formalization of Transition P Systems

Guaranteed Loop Bound Identification from Program Traces for WCET

SOFTWARE QUALITY OBJECTIVES FOR SOURCE CODE

Cover Page. The handle holds various files of this Leiden University dissertation

The PCAT Programming Language Reference Manual

Predicting the Worst-Case Execution Time of the Concurrent Execution. of Instructions and Cycle-Stealing DMA I/O Operations

Chapter 2, Part III Arithmetic Operators and Decision Making

Test Case Generation According to the Binary Search Strategy

Timing Analysis of Parallel Software Using Abstract Execution

Incompatibility Dimensions and Integration of Atomic Commit Protocols

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006

ALGORITHMIC DECIDABILITY OF COMPUTER PROGRAM-FUNCTIONS LANGUAGE PROPERTIES. Nikolay Kosovskiy

Coding guidelines for WCET analysis using measurement-based and static analysis techniques

CSI33 Data Structures

Efficient Microarchitecture Modeling and Path Analysis for Real-Time Software. Yau-Tsun Steven Li Sharad Malik Andrew Wolfe

Approximation of the Worst-Case Execution Time Using Structural Analysis

Lecture08: Scope and Lexical Address

arxiv:cs/ v1 [cs.ds] 11 May 2005

Single-Path Code Generation and Input-Data Dependence Analysis

Lecture Notes for Chapter 2: Getting Started

Algorithm Analysis and Design

3 No-Wait Job Shops with Variable Processing Times

A Short Summary of Javali

InterprocStack analyzer for recursive programs with finite-type and numerical variables

Data Flow Analysis. Agenda CS738: Advanced Compiler Optimizations. 3-address Code Format. Assumptions

Action Language Verifier, Extended

The Encoding Complexity of Network Coding

Loop Bound Analysis based on a Combination of Program Slicing, Abstract Interpretation, and Invariant Analysis

Lecture Notes on Ints

Functional programming with Common Lisp

The Typed Racket Guide

WCET-Aware C Compiler: WCC

Machine-Independent Optimizations

Sorting. There exist sorting algorithms which have shown to be more efficient in practice.

The Worst-Case Execution-Time Problem Overview of Methods and Survey of Tools

Certification Authorities Software Team (CAST) Position Paper CAST-25

REDUCING CERTIFICATION GRANULARITY TO INCREASE ADAPTABILITY OF AVIONICS SOFTWARE

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

An Algorithm for Enumerating All Spanning Trees of a Directed Graph 1. S. Kapoor 2 and H. Ramesh 3

γ 2 γ 3 γ 1 R 2 (b) a bounded Yin set (a) an unbounded Yin set

An Annotated Language

A Propagation Engine for GCC

Semantic Subtyping. Alain Frisch (ENS Paris) Giuseppe Castagna (ENS Paris) Véronique Benzaken (LRI U Paris Sud)

CS4215 Programming Language Implementation. Martin Henz

IMPROVING TIMING ANALYZABILITY THROUGH SOURCE CODE ANALYSIS AND TESTABILITY TRANSFORMATIONS IN REAL-TIME SYSTEMS. David Barrientos Velasco

G Programming Languages - Fall 2012

Math 302 Introduction to Proofs via Number Theory. Robert Jewett (with small modifications by B. Ćurgus)

Fast and Precise WCET Prediction by Separated Cache and Path Analyses

Theory and Algorithms for the Generation and Validation of Speculative Loop Optimizations

Core Membership Computation for Succinct Representations of Coalitional Games

Lexical Considerations

On sufficient conditions of the injectivity : development of a numerical test algorithm via interval analysis

Programming Languages Third Edition

Embedded Systems Lecture 11: Worst-Case Execution Time. Björn Franke University of Edinburgh

TuBound A Conceptually New Tool for Worst-Case Execution Time Analysis 1

Loops / Repetition Statements

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

Lecture 1 Contracts : Principles of Imperative Computation (Fall 2018) Frank Pfenning

Dominating Set on Bipartite Graphs

Static Analysis: Overview, Syntactic Analysis and Abstract Interpretation TDDC90: Software Security

Lecture Notes on Liveness Analysis

Evaluation and Validation

The Worst-Case Execution Time Problem Overview of Methods and Survey of Tools

Designing Views to Answer Queries under Set, Bag,and BagSet Semantics

Scan Scheduling Specification and Analysis

Why AI + ILP is good for WCET, but MC is not, nor ILP alone

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

6.001 Notes: Section 4.1

Transcription:

Automatic flow analysis using symbolic execution path enumeration D. Kebbal Institut de Recherche en Informatique de Toulouse 8 route de Narbonne - F-62 Toulouse Cedex 9 France Djemai.Kebbal@iut-tarbes.fr Abstract In this paper, we propose a static worst-case execution time (WCET) analysis approach aimed to automatically extract flow information related to program semantics. This information is used to reduce the overestimation of the calculated WCET. We focus on flow information related to loop bounds infeasible paths. Indeed, these information is at the origin of important overestimation of the WCET. The approach hles loops with multiple conditions non-rectangular loops in which the number of iterations of an inner loop depends on the current iteration of an outer loop. The number of loop iterations is expressed as summations function of the loop bounds. The flow analysis approach combines symbolic execution path enumeration in order to avoid unfolding loops performed by symbolic execution-based approaches while providing tight safe WCET estimate. Keywords: hard real-time systems, static WCET analysis, automatic parametric flow analysis, block-based symbolic execution, path enumeration.. Introduction Today, real-time embedded systems occupy a dominating place in many areas of industrial economic fields (aircraft avionics, space, manufacturing process control, cars, domestic equipments field, etc.). Real-time systems require time constraints which must be met in order to avoid unpleasant consequences when they are not respected, especially in hard real-time systems. Therefore, the timing analysis of software is needed in order to verify the temporal correctness of these systems. This paper is devoted to the WCET analysis where the purpose is to find upper bounds of the execution time of systems on hardware platforms. Static WCET analysis performs a high level static analysis of the source code in order to avoid working on the input data of programs which is intractable for complex systems. The result is an upper bound estimate of the program execution time, rather than the WCET exact values. Therefore, the WCET analysis must guarantee two main properties: safeness tightness of the provided values in order to reduce the system cost. WCET analysis proceeds usually in three steps: flow analysis, low-level analysis WCET estimate computing. Flow analysis characterizes the execution sequences of the program s components, their execution frequency, etc. (execution paths). In this phase, the execution costs of basic blocks are assumed to be constant though they may differ from one execution of the basic block to another. Generally, two types of flow information may be extracted. The first category is related to the program structure may be extracted automatically. The second category is related to the program functionality semantics. This includes information about loop bounds feasible/infeasible paths especially. This type of flow information is complex to automate therefore is generally provided by the programmer as annotations [7, ]. The remainder of this paper is organized as follows: in the next section we review some related WCET analysis methods. Section presents some concepts used by the flow analysis approach. Section 4 describes the proposed blockbased symbolic execution method discusses some special cases. Finally, we conclude the paper present some perspective issues. 2. Related work Static WCET analysis approaches may be classified into three main categories: path-based, tree-based IPET approaches. Path-based approaches proceed by explicitly enumerating the set of the program execution paths [, 2, 9]. The main drawbacks of those approaches lie in the important number of the generated program paths which scales exponentially with the program size. [] uses regular expressions to express enumerate all possible execution Implicit Path Enumeration Techniques. Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

paths of a program. [2] proposes a path-based WCET analysis approach to symbolically compute the WCET of program parts as symbolic expressions. Unlike the path-based approaches, IPET methods do not enumerate all program paths, but rather consider that they implicitly belong to the problem solution. The problem of the WCET estimation may then be converted to the one of solving an ILP 2 problem [7, ]. [4] describes an approach to WCET estimate calculation, in which the scope graph model is used. Scopes correspond to complex language features (loops, if statements, etc.) allow expressing the dynamic behavior of the program by means of a flow fact language. In those approaches, the programmer is involved in the flow information determination process, especially the flow information related to program semantics (feasible/infeasible paths, loop bounds, etc.). Though the provided flow information may be highly precise, this is an error-prone problem may lead to unpleasant consequences in the case of incorrect information. Abstract interpretation symbolic execution may be used to automatically infer a subset of the flow information related to program functionality. In [5], an interval-based abstract interpretation method is proposed. The approach allows to automatically extract flow information related to program semantics by rolling out the program until it terminates. However rolling out the program, especially loops, is very costly in time memory required by the important number of generated states. [8] describes a method for automatic parametric WCET analysis. The approach is based on abstract interpretation a symbolic method to count integer points in polyhedra. A symbolic ILP technique is used to solve the WCET calculation based on IPET. The approach seems complex in practice the author uses the interval-based abstract interpretation proposed in [5]. In [6], an approach for determining loop bounds is presented. They consider loops with multiple conditions nonrectangular loops, in which the number of iterations of an inner loop depends on the current iteration of an outer loop. However, they hle only loops with the induction variable being increased by a constant amount between two successive iterations. Symbolic execution is another technique for automatically extracting the flow information related to program functionality. The program is rolled out which allows to determine the values of variables as expressions of the program inputs. Symbolic execution-based approaches are very used in the formal verification of safety critical software. However, their comply renders them less attractive for WCET analysis, especially for long complex programs. Our aim is to develop a practical approach which automatically extract flow information related to program func- 2 Integer Linear Programming. tionality compute a safe tight upper bound on the program WCET with a lower cost. We propose a hybrid approach based on symbolic execution path enumeration. Loops are not unfolded rather than a path analysis is performed on each loop block.. Flow analysis concepts In the following, we present a set of concepts used by our flow analysis approach. We use the control flow graph (CFG) formalism to express the control flow of the program to be analyzed. The source code of the program is decomposed into a set of basic blocks. A basic block is a set of instructions with a single entry point a single point []. The entry point is situated at the beginning of the block the point at its end. Describing a program using the control flow graphs formalism consists of building all possible successions of the basic blocks constituting the program. Two fictitious blocks, labeled are added. We assume that all executions of the CFG at the block end at the block. Figure -b illustrates an example of a control flow graph of a program where the C source code is shown in figure -a. Formally, the program is represented by the graph, where, the set of the graph nodes, represents the program basic blocks the set of edges ( ) the precedence constraints between the basic blocks. We use the notion of block where a set of blocks of level are grouped into a block of level. Complex blocks correspond to complex programming language features (loops, conditional statements, functions, modules, etc.). The block composition s at the lowest level may be recursively carried out until the CFG level. Figure 2 illustrates the block graphs constructed for the C example of the figure. Formally, a block of level is defined by the formula composed of: a number of sub-blocks ( ); a set of header blocks (, ); a set of edges connecting the sub-blocks; one or more edges ( ). () Each block of level is represented by a block graph describing its structure. The s blocks set is composed of blocks of higher levels. The set of edges is constructed as follows: each edge of the CFG connecting two nodes belonging to two different blocks of forms an edge of level from to. Edges to blocks not in produce edges of type. Redundant edges are eliminated. In Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

void fft(unsigned int n, double f[max][2], double t[max][2]) { unsigned int ne, n, ns, n2, i, j; ne = ; n = 2; ns = n; n2 = ns/2; for (i=; i<=n-n; i+=n) { for (j=i; j<=i+ne-; j++) { update t[j] from f ne = n; n = 2*ne; ns = n2; n2 = ns/2; e (true) 7 2 j = i; e 2 (i<=n m) n=2;ne=; ns=n; n2=ns/2; i=; e (true) i <=n n e (true) e (true) j <= i+ne e e 4 5 ( j>=i+ne) (j <=i+ne ) ne=n;n=2*ne; b 5 ns=n2;n2=ns/2; i+=n; (i>=n m+) e (true) 6 j++; 4 a) C source code b) Control flow graph Figure. Example of a C program. level level level 2 level e e e 2 e b b for i 2 e 2 e e fft Block graph of b (fft) b 2 e 2 2 5 for j e 2 b e e 2 Block graph of b (for i) 4 Block graph of b 2 (for j) Figure 2. The block graphs of the example. figure 2, in the graph of block (for loop), the edge connecting the basic blocks in the CFG yields the edge. Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

A path in a block graph is a sequence of edges in where the end-node of each edge is the ing-node of the next edge in the path. A path can be decomposed into a sequence of sub-paths such that. Each complex block is characterized by the set of its block-paths. A block-path of is a one-iteration-path in. We distinguish two types of block-paths: -paths loop-paths. An -path in is a block-path ing at the header block of ending by an -edge of. Likewise, a loop-path in is a block-path ing at the header block of ending by a back-edge of. In figure 2 table, the block has one path composed of the only edge one loop-path composed of edges,,. Each block is executed a number of times ( or more). We use the notion of iteration to denote an execution of a block. An iteration of a block is defined as an execution of a block path of. 4. Flow analysis approach In this section, we describe our method aimed to automatically extract the flow information related to program functionality. We use a data flow analysis approach in order to derive values of variables at different points in the program. The approach combines symbolic execution with path enumeration. The flow analysis is performed for each block without unfolding iterative blocks. Rather than, the number of times the blocks are executed is analytically computed which reduces the comply of the approach. In our approach, only a subset of the symbolic states set of the program are computed. Exit points of a block are the ing points of its edges. Each elementary edge in the CFG is associated a path condition which is a Boolean predicate conditioning the execution of that edge with respect to the program state at the source node of the edge. Likewise, each basic block applies a block action which represents the effect of the execution of all statements of the block on the program state (symbolic execution rules). The path action of a path denoted is the sequence of the block action of all blocks constituting. Likewise, the path condition of a path is the logical of the path condition of all edges forming that path ( ). These properties may Symbolic states at the entry point at each point of the blocks. be applied on sub-paths as well. Let be a path composed of a sequence of sub-paths ( ), then. In order to compute the path action of a path, we consider the set of program variables assigned in different blocks of the path. Let be the function applied by the basic block on the variable which represents the effect of the execution of all statements of the block on. The action applied on by ( ) is the sequence of block action applied by all blocks forming in the order they appear in. may be represented by an expression of the form such that are integer constants ( ). That means that the loop induction variable (ex. ) update statement is of the form. The evaluation of a path involves the path condition expression the path action. is decomposed into elementary Boolean expressions related by logical operators. Each elementary expression is of the form, where is a relational operator is an integer valued expression. Hence, each elementary expression defines a bound of an integer interval. The other bound is determined by the initial value of (ex., the interval is ). Then, the following parameters are evaluated for each expression: Interval type: the interval is qualified as raised if is or, constant if is undervalued if is or. Direction: if the variable in increased in, the direction is positive negative if is decreased in.if is never updated along with the path, the direction is null. A preliminary step consists of checking for empty unbounded loop paths using the defined interval type the direction. Then, the loop parameters ( ) are determined passed to the algebraic module in order to compute the number of iterations the resulting symbolic state (formula 2). In order to compute the number of iterations of a loop path, we define the following suite ( ), the suite of the values taken by the loop induction variable: The number of iterations is defined by the formula. is the initial value of the loop Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

induction variable, is the loop limit. The right-h side of the inequality would be the greatest integer less than or equal the expression. c- Path evaluation Evaluating a block-path takes a symbolic state the path action performs an algebraic evaluation of the path using the formula 2 in the case of loop paths. The evaluation operation produces the number of iterations of that path the resulting symbolic states. (2) The number of iterations is then given by the formula 2. When, the induction variable would have the same value during the different iterations. Therefore, the number of iterations is infinite ( ). The final number of iterations of is determined from the number of iterations of all elementary expressions of as follows:. The block-based symbolic execution algorithm is performed in a post-order manner i.e. the blocks of level are evaluated before the blocks of level, ing by the top level blocks (most inner blocks). Evaluating a block is achieved in three steps: a- Path information In this step, the information characterizing the block paths is determined. The block is characterized by the set of its block paths ( _ ). For each path, the following informations are determined: path type (loop path or path); the set of edges forming the path; path condition; path action; finally for paths, the edge of the enclosing block graph on which the flow will go after taking that path. The ing point of that edge constitutes an point of the block. Table summarizes the parameters calculated for the program of the figure where the block graphs are shown in figure 2. b- Block evaluation The symbolic execution of a block is performed by computing the number of times each blockpath _ is executed, ing by a symbolic state in which all variables used in are assigned symbols. For evaluating each path, a symbolic state in which the path condition corresponds to is generated. Each state is evaluated i.e. by applying a path on that state, as indicated in the step one or more new states are generated. The symbolic execution of the block is completed when all non-terminal states are evaluated. This step yields the number of iterations of the block the set of the block ing symbolic states. Figure. Block-based symbolic execution of the block Figure shows the block-based symbolic execution of the block. Edges are annotated by the path applied on the symbolic state of the ing node the resulting number of iterations. The block paths set is. Only is a loop path.. There is one expression in, in which is non-constant. Our algebraic tool must reevaluate in order to obtain a constant right-h expression in order to apply the formula 2. is then reevaluated to to. The evaluation of the path in relation to yields the new state. The formula 2 is used for this purpose (,, ).. The number of iterations of is updated as well, which evaluates to. The suite defined in subsection 4.2 is again used to compute the values of the program variables in the new state ( ). Hence gets the new value Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

Table. Path definition parameters of the program. PC Nb. Iter Table 2. Block-based symbolic execution of the example.. The values of the other variables are deduced at the same manner denoted by asterisks in the figure table 2. The resulting symbolic states are the terminal nodes (figure ). It is possible to keep only the resulting states maximizing the WCET of the block. Merging of states is also performed which allows to reduce the number of states. Two states with the same instruction pointer can be merged into one state. Hence, states in the figure may be merged into one state in which When the execution reaches the block (level ), the variables are initialized respectively to 2. The number of iterations of is updated which evaluates to. Furthermore, the flow analysis approach allows to express WCET as symbolic expressions function of the program parts input parameters (loop limits, function parameters, etc.). Thus, is expressed in terms of the function input parameters ( in this case). This is likely to improve the tightness of the WCET values to reduce the comply of the WCET analysis approach.. State merging may cause some information loss therefore incurs some pessimism in the WCET estimate. Therefore, a trade-off between the WCET precision the number of generated states must be done. These states constitute the block ing symbolic states. Table 2 summarizes the results of the block-based symbolic execution of the example of figures 2 ( means undefined value). In the case of nested loops, the number of iterations of an inner loop may depend on the control variables of outer loops thus varies following those dependencies. The worst-case number of iterations for such a block may be considered always its limit. This may result in an important WCET over-estimation. Therefore, the number of iterations Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

if (s > ) { c = ; x += s; else { c = ; x -= s; if (c) res = x/n; else res = x/(2*n); e (s>) c=; x+=s; e (s<=) 2 e (true) 2 e (true) c e (c) e (!c) 5 4 res=x/n; res=x/(2*n); 4 5 e 6(true) s > e 7(true) c=; x =s; a) C source code b) Control flow graph Figure 4. Example of false paths. Table. Path definition parameters of the false paths example. PC Nb. Iter Table 4. Block-based symbolic execution of the false paths program. of an inner loop must be expressed in terms of control variables of outer loops values. The block-based symbolic execution approach is able to estimate a worst-case number of iterations of such blocks without overestimation. A naive manner to compute the number of iterations of the block is to multiply the WCET of by the WCET of, which gives, for, this gives. Our approach provides the value. Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26

References WCET analysis consists of finding the longest structural path in the program. However, some structural paths may be non-executed due to mutual exclusion control flow branches. Those paths are referred as infeasible paths. The block based symbolic execution eliminates implicitly most of the program infeasible paths. Figure 4a presents the C source code of a false path example where the CFG is shown in figure 4b. The set of block graphs of the program is composed of the blocks corresponding to the two blocks respectively, the block enclosing. Table summarizes the path parameters table 4 the block-based symbolic execution of the example. As we can see, the two infeasible paths going through the blocks are implicitly excluded from the evaluation by the flow analysis approach. 5. Conclusion Real-time systems must be predictable in time memory because errors may lead to unpleasant consequences. Determining the execution time of programs is in the general case undecidable. Fortunately, given certain restrictions are met, bounds of the program execution time (BCET, WCET, etc.) may be estimated. static WCET analysis avoids dealing with the program input data execution platforms, but results in overestimated values. Therefore, techniques allowing to tighten the WCET estimates are needed. However, these techniques are complex to automate because they deal with program semantics. We proposed a practical approach aimed to automatically extract flow information related to program semantics. The method has two main advantages. It allows to tighten the WCET estimate values through the provided flow information related to program functionality. The approach hles iterative blocks with variant number of iterations (nonrectangular loops) eliminates implicitly most of the infeasible paths. Moreover, the WCET estimate values are given as symbolic expressions function of the program input variables (function parameters, etc.). The second advantage concerns the enhanced comply of the approach in terms of time memory, through the block-based symbolic execution which avoids unfolding iterative blocks. Furthermore, the approach may be used to enhance the comply of the symbolic execution. We are implementing a prototype which integrates the flow information method with a WCET estimate calculation module in order to evaluate the performance of the approach. We plan also to extend the expressions used to evaluate loops to Presburger formulas exploit the results obtained on those formulas. [] A. V. Aho, R. Sethi, J. D. Ullman. Compilers Principles, Techniques, Tools. Addison-Wesley, Reading, March 986. [2] G. Bernat A. Burns. An approach to symbolic worstcase execution time analysis. In 25th IFAC Workshop on Real-Time Programming, Palma, Spain, May 2. [] R. Chapman, A. Burns, A. Wellings. Combining static worst-case timing analysis program proof. Real-Time Systems, :45 7, 996. [4] A. Ermedahl. A modular Tool Architecture for Worst-Case Execution Time Analysis. PhD thesis, Uppsala University, 2. [5] J. Gustafsson A. Ermedahl. Automatic derivation of path loop annotations in object-oriented real-time programs. Journal of Parallel Distributed Computing Practices, (2):6 74, 998. [6] C. Healy, M. Sjodin, V. Rustagi, D. Whalley,, R. van Engelen. Supporting timing analysis by automatic bounding of loop iterations. Journal of Real-Time Systems, 8(2- ):29 56, May 2. [7] Y.-T. S. Li S. Malik. Performance analysis of embedded software using implicit path enumeration. In ACM SIG- PLAN Workshop on Languages, Compilers Tools for Real-time Systems, La Jolla, California, June 995. [8] B. Lisper. Fully automatic, parametric worst-case execution time analysis. In rd International Workshop on Worst-Case Execution Time Analysis, WCET 2, pages 99 2, Polytechnic Institute of Porto, Portugal, 2. [9] T. Lundqvist P. Stenström. An integrated path timing analysis method based on cycle-level symbolic execution. Real-Time Systems, 7(2-):8 27, 999. [] C. Y. Park A. C. Shaw. Experiments with a program timing tool based on source-level timing schema. Journal of Real-Time Systems, (2):6 76, September 989. [] P. Puschner A. V. Schedl. Computing maximum task execution- a graph-based approach. Real-Time Systems, ():67 9, July 997. Proceedings of the 26 International Conference on Parallel Processing Workshops (ICPPW'6) -7695-267-/6 $2. 26