Abstract
Caches impose a major problem for predicting execution times of real-time systems since the cache behavior depends on the history of previous memory references. Too pessimistic assumptions on cache hits can obtain worst-case execution time estimates that are prohibitive for real-time systems. This paper presents a novel approach for deriving a highly accurate analytical cache hit function for C-programs at compile-time based on the assumption that no external cache interference (e.g. process dispatching or DMA activity) occurs. First, a symbolic tracefile of an instrumented C-program is generated based on symbolic evaluation, which is a static technique to determine the dynamic behavior of programs. All memory references of a program are described by symbolic expressions and recurrences and stored in chronological order in the symbolic tracefile. Second, a cache hit function for several cache architectures is computed based on a cache evaluation technique. Our approach goes beyond previous work by precisely modelling program control flow and program unknowns, modelling large classes of cache architectures, and providing very accurate cache hit predictions. Examples for the SPARC architecture are used to illustrate the accuracy and effectiveness of our symbolic cache prediction.
Similar content being viewed by others
References
Alt, M., Ferdinand, C., Martin, F., and Wilhelm, R. 1996. Cache behaviour prediction by abstract interpretation. Proc. of Static Analysis Symposium, pp. 52–66.
Altenbernd, P. 1996. On the false path problem in hard real-time programs. Proc. Euromicro Workshop on Real-Time Systems.
Arnold, R., Mueller, F., Whalley, D., and Harmon, M. 1994. Bounding worst-case instruction cache performance. Proc. of the IEEE Real-Time Systems Symposium, pp. 172–181.
Blieberger, J. 1994. Discrete loops and worst case performance. Computer Languages 20(3): 193–212.
Blieberger, J. 1997. Data-flow frameworks for worst-case execution time analysis. To appear in Real-Time Systems.
Blieberger, J., and Burgstaller, B. 1998. Symbolic reaching definitions analysis of Ada programs. Proc. of the Ada-Europe International Conference on Reliable Software Technologies, pp. 238–250.
Blieberger, J., Burgstaller, B., and Scholz, B. 1999. Interprocedural symbolic analysis of Ada programs with aliases. Proc. of the Ada-Europe International Conference on Reliable Software Technologies. pp. 136–145.
Blieberger, J., and Lieger, R. 1996. Worst-case space and time complexity of recursive procedures. Real-Time Systems 11(2): 115–144.
Callahan, D., Kennedy, K., and Portfield, A. 1990. Analyzing and Visualizing Performance of Memory Hierachies, Instrumentation for Visualization. ACM Press.
Chapman, R., Burns, A., and Wellings, A. 1996. Combining static worst-case timing analysis and program proof. The Journal of Real-Time Systems 11(2): 145–171.
Cheatham, T., Holloway, H., and Townley, J. 1979. Symbolic evaluation and the analysis of programs. IEEE Trans. Software Eng. 5(4): 403–417.
Dijkstra, E. 1976. A Discipline of Programming. New Jersey: Prentice Hall.
Engblom, J., Altenbernd, P., and Ermedahl, A. 1998. Facilitating worst-case execution times analysis for optimized code. Proc. Euromicro Workshop on Real-Time Systems.
Fahringer, T. 1996. Automatic Performance Prediction of Parallel Programs. Boston: Kluwer Academic Publishers.
Fahringer, T. 1997. Estimating cache performance for sequential and data parallel programs. Proc. of the International Conference and Exhibition on High-Performance Computing and Networking.
Fahringer, T. 1998a. Efficient symbolic analysis for parallelizing compilers and performance estimators. Journal of Supercomputing, Kluwer Academic Publishers 12(3).
Fahringer, T. 1998b. Symbolic analysis techniques for program parallelization. Journal of Future Generation Computer Systems, Elsevier Science, North-Holland 13(1997/98): 385–396.
Fahringer, T., and Scholz, B. 1997. Symbolic evaluation for parallelizing compilers. Proc. of the ACM International Conference on Supercomputing.
Fahringer, T., and Scholz, B. 1999. Aunified symbolic evaluation framework for parallelizing compilers. Technical Report AURORA TR1999-15 (http://www.vcpc.univie.ac.at/aurora/), University of Vienna, Austria.
Ferrante, J., Sarkar, V., and Trash, W. 1991. On estimating and enhancing cache effectiveness. Proc. of the Workshop on Languages and Compilers for Parallel Computing.
Gerlek, M. P., Stoltz, E., and Wolfe, M. 1995. Beyond induction variables: Detecting and classifying sequences using a demand-driven SSA form. ACM Transactions on Programming Languages and Systems (TOPLAS) 17(1): 85–122.
Ghosh, S., Martonosi, M., and Malik, S. 1997. Cache miss equations: an analytical representation of cache misses. International Conference on Supercomputing.
Goldberg, A., and Hennessy, J. 1991. Performance debugging shared memory multiprocessor programs with MTOOL. Proc. of the Supercomputing Conference.
Haghighat, M., and Polychronopoulos, C. 1996. Symbolic analysis for parallelizing compilers. ACMTransactions on Programming Languages and Systems 18(4): 477–518.
Healy, C., Whalley, D., and Harmon, M. 1995. Integrating the timing analysis of pipelining and instruction caching. Proc. of the IEEE Real-Time Systems Symposium, pp. 288–297.
Healy, C. A., Arnold, R. D., Mueller, F., Whalley, D., and Harmon, M. G. 1999. Bounding pipeline and instruction cache performance. IEEE Transactions on Computers 48(1).
Hennessy, J., and Patterson, D. 1990. Computer Architecture-A Quantitative Approach. San Mateo, CA: Morgan Kaufmann.
Hunt, B. 1997. Acme Cache Simulator. Parallel Architecture Research Laboratory (PARL), Klipsch School of Electrical and Computer Engineering, New Mexico. URL http://tracebase.nmsu.edu/»acme/acs.html.
Johnson, E., and Ha, J. 1994. PDATS lossless address trace compression for reducing file size and access time. Proc. of the IEEE International Phoenix Conference on omputers and Communication.
King, J. 1976. Symbolic execution and program testing. Commun. ACM 19(7): 385–394.
Lam, M., Rothberg, E., and Wolf, M. 1991. The cache performance and optimization of blocked algorithms. Proc. of the Int. Conference on Architectural Support for Prog. Languages Operating Systems.
Lebeck, A., and Wood, D. 1994. Cache profiling and the SPEC benchmarks: A case study. IEEE Computer 27(10).
Li, Y., Malik, S., and Wolfe, A. 1995. Performance estimation of embedded software with instruction cache modeling. Proc. of the ACM/IEEE International Conference on Computer-Aided Design.
Li, Y., Malik, S., and Wolfe, A. 1996. Cache modeling for real-time software: Beyond direct mapped instruction caches. Proc. of the IEEE Real-Time Systems Symposium.
Lim, S., Bae, Y., Jang, G., Rhee, B., Min, S., Park, C., Shin, H., Park, K., and Kim, C. 1994. An accurate worst case timing analysis technique for RISC processors. Proc. of the IEEE Real-Time Systems Symposium, pp. 97–108.
Liu, J., and Lee, H. 1994. Deterministic upperbounds of the worst-case execution times of cached programs. Proc. of the IEEE Real-Time Systems Symposium, pp. 182–191.
Lueker, G. S. 1980. Some techniques for solving recurrences. ACM Computing Surveys 12(4): 419–435.
Mueller, F. 1997. Generalizing timing predictions to set-associative caches. Proc. of the EuroMicro, Workshop on Real Time Systems.
Nilsen, K., and Rygg, B. 1995. Worst-case execution time analysis on modern processors. Proc. of ACMSIGPLAN, Workshop on Languages, Computer and Tool Support for Real-Time Systems, pp. 20–30.
Ottosson, G., and Sjoedin, M. 1997. Worst case execution time analysis for modern hardware architectures. Proc. of ACM SIGPLAN, Workshop on Languages, Compilers and Tools for Real-Time Systems.
Park, C. 1993. Predicting program execution times by analyzing static and dynamic program paths. The Journal of Real-Time Systems 5: 31–62.
Ploedereder, E. 1980. A semantic model for the analysis and verification of programs in general, higher-level languages. Ph.D. thesis, Harvard University.
Puschner, P., and Koza, C. 1989. Calculating the maximum execution time of real-time programs. The Journal of Real-Time Systems 1: 159–176.
Rawat, J. 1993. Static analysis of cache performance for real-time programming. Master's thesis, Iowa State University of Science and Technology, Dept. of Computer Science.
Scheibl, M., Celic, A., and Fahringer, T. 1996. Interfacing Mathematica from the Vienna Fortran compilation system. Technical Report, Institute for Software Technology and Parallel Systems, Univ. of Vienna.
Smith, A. 1982. Cache memories. Computing Surveys 14(3).
Temam, O., Fricker, C., and Jalby, W. 1994. Cache interference phenomena. Proc. of the ACM SIGMETRICS Conference.
Theiling, H., and Ferdinand, C. 1998. Combining abstract interpretation and ILP for microarchitecture modelling and program path analysis. Proc. of the IEEE Real-Time Systems Symposium.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Blieberger, J., Fahringer, T. & Scholz, B. Symbolic Cache Analysis for Real-Time Systems. Real-Time Systems 18, 181–215 (2000). https://doi.org/10.1023/A:1008193114940
Issue Date:
DOI: https://doi.org/10.1023/A:1008193114940