A Real-Time Profiler/Analyser for XOberon/PowerPC Matteo Corti Introduction The most significant difference distinguishing real-time systems from other computer systems is the importance of correct timing behaviour. Each hard real-time task has a computation deadline associated with it; the deadline has to be met, otherwise the real-time system fails. It is therefore obvious that the maximum execution time, or the maximum duration of a task is of great importance for the construction and validation of real-time systems. Objectives The goal of this work, is to empower the user with an automatic tool that computes a good approximation of the maximum execution time of a given task. The profiler/analyser should automatize and speed-up one of the most error-prone developing phase of a real-time application, thus reducing the probability of faults. The tool has to be able to analyse the task's source code, retrieve its structure and determine, when possible, the number of simple loop iterations. Once the structure of the program is known and all the loops are bounded (automatically or by the user), the tool should compute the longest path in the program's data flow graph, representing the maximum duration. To approximate the different instruction length the tool should use the static processor characteristic described by its architecture, in conjunction with statistical data about the task's behaviour gathered with a run-time performance monitor. Results This works shows the feasibility of a source code timing prediction tool for real-time tasks and its limits. The simplicity of the programs allows for an automated analysis, but the modern hardware hinders a precise prediction. The run-time monitoring approach is very helpful when the tasks are simple and relatively homogeneous, but shows its limits when the application complexity grows. The obtained results encourage the use of the tool in the real world, avoiding the guessing of the maximal duration guessing by the programmer. The clean integration of the performance monitoring tool in the XOberon system provides the user with a transparent infrastructure with a low overhead, making it practical for continuous profiling. A wealth of additional information was also collected, providing interesting data about the interactions between instructions, including concurrency levels, and pipeline utilization, in either the XOberon system or user applications.