Abstract

Worst-case execution time (WCET) analysis of systems with data caches is one of the key challenges in real-time systems. Caches exploit the inherent reuse properties of programs, temporarily storing certain memory contents near the processor, in order that further accesses to such contents do not require costly memory transfers. Current worst-case data cache analysis methods focus on specific cache organizations (LRU, locked, ACDC, etc.). In this article, we analyze data reuse (in the worst case) as a property of the program, and thus independent of the data cache. Our analysis method uses Abstract Interpretation on the compiled program to extract, for each static load/store instruction, a linear expression for the address pattern of its data accesses, according to the Loop Nest Data Reuse Theory. Each data access expression is compared to that of prior (dominant) memory instructions to verify whether it presents a guaranteed reuse. Our proposal manages references to scalars, arrays, and non-linear accesses, provides both temporal and spatial reuse information, and does not require the exploration of explicit data access sequences. As a proof of concept we analyze the TACLeBench benchmark suite, showing that most loads/stores present data reuse, and how compiler optimizations affect it. Using a simple hit/miss estimation on our reuse results, the time devoted to data accesses in the worst case is reduced to 27% compared to an always-miss system, equivalent to a data hit ratio of 81%. With compiler optimization, such time is reduced to 6.5%.

Highlights

  • Real-time systems are increasingly present in industry and daily life

  • To the best of our knowledge, all worst-case execution time (WCET) analyses of systems with data caches have focused on locality analysis for specific cache organizations [20], but not on the data reuse of the program

  • RELATED WORK To the best of our knowledge, all WCET analyses of systems with data caches have focused on locality analysis for specific cache organizations [20], but not on the data reuse of the program

Read more

Summary

INTRODUCTION

Real-time systems are increasingly present in industry and daily life. We can find examples in many sectors including avionics, robotics, automotive processes, manufacturing, and air-traffic control. A memory instruction may access a data-dependent memory address unknown at compilation/static analysis time With such added complexity, calculating data hits and misses in the worst case analysis is much harder than calculating instruction hits and misses. We use polyhedra to obtain linear access patterns of data accesses, suitable to be analyzed by means of the well known Loop Nest Data Reuse Theory [33] This theory provides the mathematical procedures to extract (safe) reuse information between memory instructions. The reuse properties of each static load/store instruction in the program are detected, independently of the data cache This means that each load/store is linked to the previous load/store accessing the same data (if any), and the reuse type they present.

RELATED WORK
ABSTRACT INTERPRETATION
An Abstract
The Abstract
INTUITIVE EXAMPLE
DATA REUSE
DATA REUSE FOR PRECISE LINEAR ACCESS PATTERNS
REUSE FOR NON-LINEAR OR IMPRECISE LINEAR ACCESS PATTERNS
RESULTS
INTEGRATION IN THE WCET ANALYSIS
CONCLUSIONS
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call