7.1 High-Level-Optimierungen
387
Eine klassische Speicherzuteilung für Felder ist auf der linken Seite von Abb. 7.7
dargestellt. Jedem Feld wird das Maximum an Platz zugewiesen, den es während der
gesamten Ausführungszeit benötigt (wenn globale Felder betrachtet werden).
Speichergröße
Adressen
t
t
Adressen
Speichergröße
Speichergröße
Adressen
t
Abb. 7.7 Ungefaltete (links), inter-array gefaltete (Mitte) und intra-array gefaltete (rechts) Felder
Eine mögliche Verbesserung, inter-array folding wird in der Mitte von Abb. 7.7
dargestellt. Felder, die nicht in überlappenden Zeitintervallen gleichzeitig benötigt
werden, können sich denselben Speicherplatz teilen. Eine weitere Verbesserung,
intra-array folding [122], ist auf der rechten Seite von Abb. 7.7 zu sehen. Diese
nutzt die Eigenschaft aus, dass innerhalb eines Feldes nur eine begrenzte Anzahl
von Komponenten benötigt wird. Hier kann Speicher auf Kosten von aufwändigeren
Adressberechnungen eingespart werden. Diese beiden Arten von Faltungen können
zudem auch kombiniert werden.
Andere Arten von Transformationen auf hoher Ebene wurden von Chung, Benini
und De Micheli untersucht [103, 524]. Viele weitere verwandte Optimierungen
wurden im Bereich des Compilerentwurfs vorgeschlagen.
7.1.5 Wandlung von Gleitkomma- in Festkommadarstellung
Eine oft angewendete Methode der Optimierung ist die Umwandlung von Gleitkommain Festkommaberechnungen. Diese Umwandlung wird dadurch motiviert, dass viele
Standards für die Signalverarbeitung (wie z.B. MPEG-2 oder MPEG-4) in Form
von C-Programmen spezifiziert sind, die Gleitkomma-Datentypen verwenden. Es ist
dem Entwickler überlassen, eine effiziente Implementierung für diese Standards zu
finden.
In vielen Signalverarbeitungsanwendungen ist es möglich, Gleitkommazahlen
durch Festkommazahlen zu ersetzen (siehe Seite 169). Dies kann beträchtliche Vorteile mit sich bringen. So wurde beispielsweise für einen MPEG-2 Videokompressionsalgorithmus eine Verringerung der benötigten Prozessorzyklen um 75% und
Précédent

- 405/485

Suivant