7.3 Compiler für eingebettete Systeme
393
• Prozessorarchitekturen eingebetteter Systeme verfügen über besondere Eigenschaften (siehe Seite 158). Diese Eigenschaften sollten ausgenutzt werden, um
effizienten Code zu erzeugen. Übersetzungstechniken müssen dabei möglicherweise auch die auf den Seiten 163 bis 165 beschriebenen Kompressionstechniken
unterstützen.
• Eine hohe Codeeffizienz ist wichtiger als eine hohe Übersetzungsgeschwindigkeit.
• Compiler könnten dabei helfen, Echtzeitbedingungen einzuhalten und zu beweisen. Zunächst wäre es schön, wenn Compiler explizite Zeitmodelle enthielten.
Diese könnten für Optimierungen genutzt werden, die das Zeitverhalten wirklich
verbessern. Beispielsweise kann es von Vorteil sein, bestimmte Cachezeilen einzufrieren, um zu verhindern, dass häufig ausgeführter Code mehrmals aus dem
Cache verdrängt und wieder hineingeladen wird.
• Compiler können dabei helfen, den Energieverbrauch eingebetteter Systeme zu
senken. Compiler, die Energieoptimierungen durchführen, sollten verfügbar sein.
• Eingebettete Systeme verfügen über eine größere Vielfalt von Befehlssätzen.
Daher gibt es mehr Prozessoren, für die Compiler verfügbar sein sollten. In
einigen Fällen gibt es auch die Anforderung, die Optimierung von Befehlssätzen
mit retargierbaren Compilern zu unterstützen. Bei solchen Compilern kann der
Befehlssatz als Eingabe für ein Compiler-Erzeugungssystem spezifiziert werden.
Solche Systeme können verwendet werden, um einen Befehlssatz experimentell
zu verändern und dann die daraus folgenden Änderungen des resultierenden
Maschinencodes zu analysieren. Dies ist ein Sonderfall der Erkundung des
Entwurfsraumes und wird beispielsweise von Werkzeugen der Firma Tensilica
unterstützt [82].
Einige frühe Ansätze für retargierbare Compiler werden im ersten Buch über dieses
Thema beschrieben [378]. Optimierungen finden sich in Büchern von Leupers et al.
[338, 339]. In diesem Abschnitt stellen wir Beispiele von Übersetzungstechniken für
eingebettete Prozessoren vor.
7.3.2 Energiegewahre Übersetzung
Viele eingebettete Systeme sind batteriebetriebene Mobilgeräte. Wahrend die Anforderungen an die Rechenleistung von mobilen Systemen steigen, geht die Suche
nach geeigneten künftigen Batterietechnologien weiter [415]. Daher stellt die Verfügbarkeit von Energie einen Flaschenhals für neue Anwendungen dar.
Energieeinsparungen können auf verschiedenen Ebenen stattfinden, wie bei der
Technologie des Herstellungsprozesses, der Gerätetechnologie, dem Schaltkreisentwurf, dem Betriebssystem und den Anwendungsalgorithmen. Geeignete Übersetzungen von Algorithmen in Maschinencode können ebenfalls nützlich sein. Optimierungen auf hoher Ebene, wie auf den Seiten 380 bis 387 vorgestellt, können auch
zur Verringerung des Energieverbrauchs beitragen. In diesem Abschnitt betrachten
wir Compileroptimierungen, die den Energieverbrauch verringern können (oft auch
low power-Optimierungen genannt). Energiemodelle sind wesentliche Bestandteile
Précédent

- 411/485

Suivant