7.3 Compiler für eingebettete Systeme
403
Die Zielfunktion ist eine weitere Dimension in der Zuordnung von SPM-Speicher.
Bislang haben wir die Minimierung der Laufzeit und des durchschnittlichen Energieverbrauchs betrachtet. Es kann auch andere Optimierungsziele geben. Wir könnten
auch den maximal möglichen Energieverbrauch (engl. Worst Case Energy Consumption (WCEC)) minimieren wollen. Die WCEC ist eine Zielfunktion in der Arbeit von
Liu [350]. Für den Entwurf von zuverlässigen Systemen sind Zuverlässigkeit und
Lebensdauer wichtige Zielfunktionen, insbesondere bei Systemen mit relevanter Alterung (engl. aging) [565]. Auch kann es notwendig sein, das thermische Verhalten
zu betrachten.
7.3.4 Zusammenführung von Compilern und Zeitanalyse
Fast keiner der heute verfügbaren Compiler beinhaltet ein Zeitmodell. Daher muss
die Entwicklung von Echtzeitsoftware normalerweise einem iterativen Ansatz folgen: Software wird vom einem Compiler übersetzt, der über keinerlei Zeitinformationen verfügt. Der resultierende Code wird dann mit einem Timing-Analysator
wie aiT [4] analysiert. Wenn die Zeitbedingungen nicht eingehalten werden, müssen
einige der Eingabedaten für den Compiler geändert und der Vorgang wiederholt
werden. Wie nennen dies den „Versuch-und-Irrtum-basierten Ansatz der Echtzeitsoftware”. Dieser Ansatz bringt mehrere Probleme mit sich. Zunächst ist die
Anzahl der notwendigen Entwurfsiterationen anfänglich unbekannt. Weiterhin verwendet der eingesetzte Compiler „Optimierungen”, aber eine präzise Auswertung
der Zielkriterien mit Ausnahme der Codegröße ist unmöglich. Daher können Compilerentwickler nur hoffen, dass ihre „Optimierungen” einen positiven Einfluss auf die
Codequalität für die relevanten Ziele hat. Aufgrund des komplexen Zeitverhaltens
moderner Prozessoren wird diese Hoffnung allerdings kaum belegt. Schließlich erfordert die „Versuch-und-Irrtum”-basierte Entwicklung von Echtzeitsoftware, dass
der Entwickler passende Änderungen der Eingabedaten für den Compiler findet,
damit die Echtzeitbedingungen vielleicht irgendwann eingehalten werden.
Diese Probleme können vermieden werden, wenn die Zeitanalyse in den Compiler
integriert wird. Dies war das Ziel der Entwicklung des WCET-gewahren Compilers
WCC an der TU Dortmund. Dabei wurde der existierende Zeitanalysator aiT in den
experimentellen WCC-Compiler für die TriCore-Architektur integriert. Abb. 7.16
zeigt die sich ergebende Gesamtstruktur des WCC.
WCC verwendet die ICD-C Compiler-Infrastruktur [231] zum Lesen und Schreiben von C-Quellcode. Der Quellcode wird dann in eine Zwischendarstellung auf
hoher Ebene (engl. High-Level Intermediate Representation (HL-IR)) umgewandelt.
Die HL-IR ist eine abstrakte Darstellung des Quellcodes, auf die verschiedene Optimierungen angewendet werden können. Die optimierte HL-IR wird dann an den
Code-Selector übergeben. Der Code-Selector bildet Quellcodeoperationen auf Maschinenbefehle ab. Maschinenbefehle werden in der Low-Level Intermediate Representation (LLIR) dargestellt. Um die WCET EST zu bestimmen, wird die LLIR in die
von aiT verwendete CRL2-Darstellung konvertiert (durch den Konverter LLIR2CRL).
403
Die Zielfunktion ist eine weitere Dimension in der Zuordnung von SPM-Speicher.
Bislang haben wir die Minimierung der Laufzeit und des durchschnittlichen Energieverbrauchs betrachtet. Es kann auch andere Optimierungsziele geben. Wir könnten
auch den maximal möglichen Energieverbrauch (engl. Worst Case Energy Consumption (WCEC)) minimieren wollen. Die WCEC ist eine Zielfunktion in der Arbeit von
Liu [350]. Für den Entwurf von zuverlässigen Systemen sind Zuverlässigkeit und
Lebensdauer wichtige Zielfunktionen, insbesondere bei Systemen mit relevanter Alterung (engl. aging) [565]. Auch kann es notwendig sein, das thermische Verhalten
zu betrachten.
7.3.4 Zusammenführung von Compilern und Zeitanalyse
Fast keiner der heute verfügbaren Compiler beinhaltet ein Zeitmodell. Daher muss
die Entwicklung von Echtzeitsoftware normalerweise einem iterativen Ansatz folgen: Software wird vom einem Compiler übersetzt, der über keinerlei Zeitinformationen verfügt. Der resultierende Code wird dann mit einem Timing-Analysator
wie aiT [4] analysiert. Wenn die Zeitbedingungen nicht eingehalten werden, müssen
einige der Eingabedaten für den Compiler geändert und der Vorgang wiederholt
werden. Wie nennen dies den „Versuch-und-Irrtum-basierten Ansatz der Echtzeitsoftware”. Dieser Ansatz bringt mehrere Probleme mit sich. Zunächst ist die
Anzahl der notwendigen Entwurfsiterationen anfänglich unbekannt. Weiterhin verwendet der eingesetzte Compiler „Optimierungen”, aber eine präzise Auswertung
der Zielkriterien mit Ausnahme der Codegröße ist unmöglich. Daher können Compilerentwickler nur hoffen, dass ihre „Optimierungen” einen positiven Einfluss auf die
Codequalität für die relevanten Ziele hat. Aufgrund des komplexen Zeitverhaltens
moderner Prozessoren wird diese Hoffnung allerdings kaum belegt. Schließlich erfordert die „Versuch-und-Irrtum”-basierte Entwicklung von Echtzeitsoftware, dass
der Entwickler passende Änderungen der Eingabedaten für den Compiler findet,
damit die Echtzeitbedingungen vielleicht irgendwann eingehalten werden.
Diese Probleme können vermieden werden, wenn die Zeitanalyse in den Compiler
integriert wird. Dies war das Ziel der Entwicklung des WCET-gewahren Compilers
WCC an der TU Dortmund. Dabei wurde der existierende Zeitanalysator aiT in den
experimentellen WCC-Compiler für die TriCore-Architektur integriert. Abb. 7.16
zeigt die sich ergebende Gesamtstruktur des WCC.
WCC verwendet die ICD-C Compiler-Infrastruktur [231] zum Lesen und Schreiben von C-Quellcode. Der Quellcode wird dann in eine Zwischendarstellung auf
hoher Ebene (engl. High-Level Intermediate Representation (HL-IR)) umgewandelt.
Die HL-IR ist eine abstrakte Darstellung des Quellcodes, auf die verschiedene Optimierungen angewendet werden können. Die optimierte HL-IR wird dann an den
Code-Selector übergeben. Der Code-Selector bildet Quellcodeoperationen auf Maschinenbefehle ab. Maschinenbefehle werden in der Low-Level Intermediate Representation (LLIR) dargestellt. Um die WCET EST zu bestimmen, wird die LLIR in die
von aiT verwendete CRL2-Darstellung konvertiert (durch den Konverter LLIR2CRL).
