Optimale Codegenerierung für Explizit-Parallele Prozessoren
Optimal Code Generation for Explicitly Parallel Processors
Wissenschaftsdisziplinen
Informatik (80%); Mathematik (20%)
Keywords
-
Compiler,
Instruction Level Parallelism,
VLIW,
Integer Linear Programming,
Scheduling,
Combinatorial Optimization
Entwickler von Embedded Systems stehen heute Rechenanforderungen gegenüber, die vor nicht allzu langer Zeit noch Stand der Technik im Supercomputing-Bereich waren. Mit herkömmlichen Techniken und bei gleicher Technologie erfordert eine zwei bis dreifache Geschwindigkeitssteigerung etwa die achtzigfache Chipfläche und etwa die zwölffache Energie -- eine oftmals nicht akzeptable Größenordnung für mobile Anwendungen. Ein vielversprechender Ansatz diese Probleme zu lösen sind VLIW Architekturen mit einer großen Anzahl an parallelen Recheneinheiten und Datenpfaden sowie applikationsspezifische irreguläre Architekturerweiterungen, die für eine bestimmte Anwendung maßgeschneidert werden. Hoch optimierende Übersetzer und spekulative Transformationen sind nötig, um das hohe Maß an Parallelismus in entsprechende Rechenleistung umsetzen zu können. Diese Optimierungen müssen in der Regel unterschiedliche Aspekte sorgfältig gegeneinander abwägen. Vielfach eingesetzte heuristische Techniken sind dabei oft nicht in der Lage dies zufriedenstellend umzusetzen. Darüber hinaus ergeben sich weitere Herausforderungen durch - oftmals applikationsspezifische - irreguläre Architekturerweiterungen und Asymmetrien. Einerseits resultiert daraus ein erheblicher Wartungs- und Entwicklungsaufwand, der mit traditionellen statischen Codegeneratoren nur schwer zu bewältigen ist. Andererseits sind heuristische Übersetzungstechniken oftmals nur unzureichend geeignet um applikationsspezifische Erweiterungen effektiv auszunützen. Optimale Ansätze basierend auf ganzzahliger linearer Programmierung haben das Potential diese Problemstellungen zu bewältigen. Mathematische Formulierungen erlauben eine kombinierte Optimierung unterschiedlicher Teilprobleme und ermöglichen die Modellierung komplexer architektureller Einschränkungen. Letztere können automatisch aus einer generischen Architekturbeschreibung abgeleitet werden. Trotzdem erreichten optimale Verfahren bisher keine wesentliche praktische Bedeutung. Zahlreiche Teilprobleme wie Instruktionsauswahl, Registerallokation oder Instruktionsanordnung sind NP vollständig - naive mathematische Formulierungen führen daher unausweichlich zu inakzeptablen Übersetzungszeiten. Ziel dieses Projektes ist die Entwicklung neuartiger Algorithmen und mathematischer Formulierungen, die die wesentlichen Vorteile von integrierten Codeerzeugungstechniken bewahren und gleichzeitig praktikable Laufzeiten aufweisen. Dazu gehört sowohl die Anwendung von mathematischen Verfahren zur Verringerung der Laufzeit linearer Optimierungssysteme, wie zum Beispiel Cutting-Plane Ansätze, Column-Generation Techniken oder Lagrange Relaxierung. Aufgrund der erheblichen Komplexität einzelner Teilbereiche planen wir darüber hinaus, die entwickelten Modelle zur Identifikation von Schwachstellen existierender Heuristiken und zur Entwicklung effizienter Approximationsalgorithmen zu verwenden. Unsere Schwerpunkte sind die Entwicklung von integrierten Verfahren zur gemeinsamen Behandlung von Instruktionsanordnung und Registerallokation, integrierte Befehlsanordnung für zyklische Programmregionen (Software Pipelining) und Unterstützung von irregulären Architekturen und asymmetrischen Datenpfaden. Ein neuartiges Übersetzungsschema erlaubt uns Teilbereiche der Registerallokation zu separieren und dadurch die Komplexität integrierter Verfahren entscheidend zu verringern.
Der Fokus dieses Forschungsprojekts war optimale und beinahe optimale Maschinencodeerzeugung für Prozessoren mit explizitem Parallelismus. Prozessoren mit explizitem Parallelismus können innerhalb eines Befehlszyklus mehrere Befehle gleichzeitig ausführen, der Programmierer (oder der Übersetzer) muss allerdings explizit angeben, welche Befehle voneinander unabhängig sind und gleichzeitig ausgeführt werden können. Diese Prozessoren werden meistens in eingebetteten Systemen wie Mobiltelefonen verwendet und sie haben oft Hardwareeinschränkungen wie gruppierte Funktionseinheiten und Registersätze, bedingte Ausführung oder rotierbare Registersätze. Maschinencodeerzeugung ist der letzte maschinenabhängige Teil eines Übersetzers und besteht aus Befehlsauswahl, Registerzuteilung, Befehlsanordnung, Softwarepipelining, Bedingungskonvertierung und Gruppierung. Aufgrund der Komplexität der Probleme ist es oft nicht möglich eine optimale Lösung zu finden. Weiters werden die Teilprobleme unabhängig voneinander gelöst, was zu weiteren nicht optimalen Lösungen führt. Das Ergebnis dieses Projekts waren neue heuristische und exakte Methoden für optimale und beinahe optimale Maschinencodeerzeugung. Die heuristischen Methoden liefern fast genauso gute Ergebnisse wie die optimalen Methoden und sind schnell genug, um in Übersetzern zur täglichen Programmentwicklung eingesetzt zu werden.
- Technische Universität Wien - 100%
Research Output
- 44 Zitationen
- 14 Publikationen
-
2013
Titel IR-level versus machine-level if-conversion for predicated architectures DOI 10.1145/2443608.2443611 Typ Conference Proceeding Abstract Autor Jordan A Seiten 3-10 Link Publikation -
2012
Titel Static profiling of the worst-case in real-time programs DOI 10.1145/2392987.2393000 Typ Conference Proceeding Abstract Autor Brandner F Seiten 101-110 -
2011
Titel Register reuse scheduling. Typ Conference Proceeding Abstract Autor Barany G Konferenz 9th Workshop on Optimizations for DSP and Embedded Systems (ODES'11) -
2011
Titel Fast JIT code generation for x86-64 with LLVM. Typ Conference Proceeding Abstract Autor Krall A Konferenz ACACES 2011 Poster Abstracts, 7, Fiuggi, Italy, 2011. HiPEAC. Posterpräsentation: ACACES 2011, Fiuggi, Italien; 2011-07-10 - 2011-07-16 -
2014
Titel Integrated modulo scheduling and cluster assignment for TI TMS320C64x+ architecture DOI 10.1145/2568326.2568327 Typ Conference Proceeding Abstract Autor Kim N Seiten 25-32 Link Publikation -
2014
Titel Computation of alias sets from shape graphs for comparison of shape analysis precision DOI 10.1049/iet-sen.2012.0049 Typ Journal Article Autor Pavlu V Journal IET Software Seiten 120-133 Link Publikation -
2014
Titel Refinement of worst-case execution time bounds by graph pruning DOI 10.1016/j.cl.2014.09.001 Typ Journal Article Autor Brandner F Journal Computer Languages, Systems & Structures Seiten 155-170 -
2014
Titel Evaluating and estimating the WCET criticality metric DOI 10.1145/2568326.2568331 Typ Conference Proceeding Abstract Autor Jordan A Seiten 11-18 -
2010
Titel Graph-based cluster assignment for VLIW architectures. Typ Conference Proceeding Abstract Autor Jordan A Konferenz Posterpräsentation: 19th International Conference on Parallel Architectures and Compilation Techniques (PACT), Wien; 2010-09-11 - 2010-09-15 -
2010
Titel Optimistic integrated instruction scheduling and register allocation. Typ Conference Proceeding Abstract Autor Barany G Konferenz 15th Workshop on Compilers for Parallel Computing (CPC 2010) -
2010
Titel Optimistic integrated instruction scheduling and register allocation. Typ Conference Proceeding Abstract Autor Barany G Konferenz Proceedings of the Junior Scientist Conference 2010; Posterpräsentation: Junior Scientist Conference 2010, Vienna; 2010-04-07 - 2010-04-09 -
2010
Titel Optimal and heuristic code generation for explicitly parallel processors. Typ Conference Proceeding Abstract Autor Barany G Konferenz ACACES 2010 Poster Abstracts. HiPEAC, 2010. Posterpräsentation: ACACES 2010, Terrassa (Barcelona), Spanien; 2010-07-11 - 2010-07-17 -
2013
Titel Static analysis of worst-case stack cache behavior DOI 10.1145/2516821.2516828 Typ Conference Proceeding Abstract Autor Jordan A Seiten 55-64 -
2013
Titel Optimal and Heuristic Global Code Motion for Minimal Spilling DOI 10.1007/978-3-642-37051-9_2 Typ Book Chapter Autor Barany G Verlag Springer Nature Seiten 21-40 Link Publikation