A timing tool has been implemented for a subset of C as an initial experiment in validating a methodology for predicting the deterministic execution times of programs. The tool is based on formal timing schema that are defined for each source level construct (procedures, statements, expressions). The tool accepts a program and bounds for each loop, and produces predictions for best and worst case execution times. Two versions of the tool were written, using two extremes of granularity for the atomic elements of the timing schema. Within the constraints of the target architecture and compiler, measured execution times for a variety of simple constructs and programs agree with times predicted by the tool. The implementation decomposes naturally into a system-independent part, which is believed to be determined by the 'timing semantics' of the language, and a lower-level system-dependent portion. The experiments validate the general timing schema approach but also point out a number of problems and possible refinements.<<ETX>>
[1]
Richard N. Taylor,et al.
Combining Static Concurrency Analysis with Symbolic Execution
,
1988,
IEEE Trans. Software Eng..
[2]
Alan C. Shaw,et al.
Reasoning About Time in Higher-Level Language Software
,
1989,
IEEE Trans. Software Eng..
[3]
Niklaus Wirth,et al.
A fast and compact compiler for Modula-2
,
1985
.
[4]
Aloysius K. Mok,et al.
Evaluating tight execution time bounds of programs by annotations
,
1989
.
[5]
Richard A. Volz,et al.
Toward real-time performance benchmarks for Ada
,
1986,
CACM.
[6]
Alan C. Shaw.
Deterministic timing schema for parallel programs
,
1991,
[1991] Proceedings. The Fifth International Parallel Processing Symposium.
[7]
Alan C. Shaw,et al.
Building a real‐time kernel: First steps in validating a pure process/ADT model
,
1991,
Softw. Pract. Exp..