ISSN: 2165- 7866
Jonice Oliveira
In den letzten drei Jahrzehnten wurden zahlreiche Compilertransformationen zur Optimierung von Programmen implementiert. Die meisten Optimierungen für Uniprozessoren reduzieren die Anzahl der vom Programm ausgeführten Anweisungen mithilfe von Transformationen, die auf der Analyse von Skalarmengen und Datenflusstechniken basieren. Im Gegensatz dazu maximieren Optimierungen für Hochleistungs-Superskalar-, Vektor- und Parallelprozessoren Parallelität und Speicherlokalität mithilfe von Transformationen, die auf der Verfolgung der Eigenschaften von Arrays mithilfe der Schleifenabhängigkeitsanalyse basieren. Diese Übersicht bietet einen umfassenden Überblick über die wichtigen Techniken zur Umstrukturierung von Programmen auf höherer Ebene für imperative Sprachen wie C und Fortran. Transformationen sowohl für sequentielle als auch für verschiedene Arten paralleler Architekturen werden ausführlich behandelt. Wir beschreiben den Zweck jeder Transformation, erklären, wie man feststellt, ob sie zulässig ist, und geben ein Anwendungsbeispiel.