We recently tested a system with two different processors, a PowerPC and a TriCore. For anyone concerned with variability, the results make for interesting reading.
Last month Zoe explained how getting timing analysis into the development process early in a project can be useful for all sorts of reasons: [read more...].
This month I visited a customer where this was nicely illustrated. They have a system with two different processors, a PowerPC and a TriCore. Both will run the same software and there will be some crosschecking in a standard way for a safety critical application.
The customer added RapiTime to their development process well ahead of their delivery date, before the units of their system have been fully integrated. This is definitely recommended by us as good practice – finding potential timing problems early in development is going to make it cheaper to solve those problems than if issues are discovered when the deadline is approaching.
In testing one of the software units it was revealed that the PowerPC has a lot more variability in execution times than the TriCore. Looking at the graphs below (which are for a single function) you can see there is potentially another factor affecting the execution time of the PPC. Both graphs represent over 1000 executions of the function root. Finding this early means our customer has time to investigate the cause and find a solution.
It’s worth noting that although the TriCore was about half the average speed of the PPC (as measured by RapiTime) its worst case execution time was significantly better – because it doesn’t have this variability.
|Compilers||Green Hills 5.2.4 (PPC) and Green Hills 5.1.3 (TriCore)|
[update]: Updated to clarify that the same function on Power PC and Tricore was executed the same number of times - which isn't immediately clear from the graphs.