392
7 Optimierung
ein gemeinsamer Adressraum für alle Tasks vorliegt). Der verbleibende Aufwand
für das Betriebssystem wäre dadurch sehr klein, wenn ein Betriebssystem überhaupt
notwendig wäre.
Der in Abb. 7.11 gezeigte Code für die Task tau_in wurde durch die Petrinetzbasierte, taskübergreifende Optimierung der Task-Strukturen erzeugt. Dieser sollte
durch Optimierungen innerhalb der Tasks weiter verbessert werden. Eine optimierte
Version von tau_in sieht wie folgt aus:
tau_in () {
READ(IN,samppe,1);
sum+=samppe; i++;
DATA=samppe; d=DATA;
/* Zusammenfassen von DATA & d möggich */
L0: if (i DATA=sum/N; d=DATA;
d=d*c; WRITE(OUT,d,1);
sum=0; i=0;
return;
}
Die Gründe für diese Vereinfachung sind: im originalen Code ergibt der Test, der
durch die erste if-Anweisung durchgeführt wird, immer „falsch” (j ist in diesem Fall
gleich i-1 und i und j werden auf 0 zurückgesetzt, sobald i den Wert N annimmt).
In der dritten if-Anweisung ergibt der Test stets „wahr”, da diese Anweisung nur
erreicht wird, wenn i gleich N ist und i gleich j ist, sobald das Label L0 erreicht
wird. Zudem kann die Anzahl der Variablen verringert werden.
Die optimierte Version von tau_in könnte von einem sehr geschickten Compiler erzeugt werden. Allerdings kann kaum einer der heute verfügbaren Compiler
eine solche Optimierung vornehmen. Dennoch zeigt dieses Beispiel die Art von
Transformationen, die zur Erzeugung „guter” Task-Strukturen notwendig sind. ∇
Mehr Details zur Task-Erzeugung finden sich in Cortadella et al. [111] und in einer
Publikation von Meijer et al. [390].
7.3 Compiler für eingebettete Systeme
7.3.1 Einleitung
Für Prozessoren von PCs und Servern sind Optimierungen und Compiler verfügbar.
Die Erzeugung von Compilern für häufig verwendete Prozessoren ist ein hinlänglich
bekanntes Gebiet. In vielen Fällen werden Standard-Compiler auch für eingebettete
Systeme verwendet, da sie üblicherweise kostengünstig oder gar kostenfrei erhältlich
sind.
Es gibt jedoch eine Reihe besonderer Gründe, spezielle Optimierungen und Compiler für eingebettete Systeme zu entwerfen:
Précédent

- 410/485

Suivant