Forscher der Technischen UniversitĂ€t MĂŒnchen haben das TPDE-Toolkit sowie den darauf basierenden Compiler-Backend fĂŒr LLVM â TPDE-LLVM â veröffentlicht. Dieser ermöglicht die Generierung von Maschinen-Code fĂŒr die x86-64 und AArch64 Architekturen basierend auf der LLVM-IR Intermediate Representation. Bei Tests erwies sich TPDE-LLVM als 10 bis 20 Mal schneller als der LLVM Backend -O0 (Code-Generator ohne Optimierungen) bei gleichem Leistungsniveau des resultierenden Maschinen-Codes, wobei die GröĂe um 10 bis 30 % zunahm. Die Ergebnisse des Projekts wurden unter der Apache 2.0 Lizenz veröffentlicht.
TPDE-LLVM zielt ursprĂŒnglich darauf ab, Kompilierungen mit minimalen Verzögerungen zu gewĂ€hrleisten, wobei die QualitĂ€t dem Modus ohne Optimierungen ('-O0') entspricht. Das Projekt stellt ein Tool fĂŒr die isolierte AusfĂŒhrung von tpde-llc, eine Bibliothek zur Integration in Anwendungen (z. B. zur Implementierung von JIT-Compiler-FunktionalitĂ€ten) und Patches fĂŒr die Integration mit Clang und Flang bereit.

Das Projekt kann als grundlegende Komponente fĂŒr JIT oder zur Erstellung von nicht optimierten Builds verwendet werden. TPDE-LLVM konzentriert sich ausschlieĂlich auf die Kompilierungsgeschwindigkeit und versucht nicht, mit den optimierenden Backends von LLVM zu konkurrieren, die im Vergleich zu TPDE-LLVM wesentlich langsamer arbeiten, aber es ermöglichen, schnelleren und kompakteren Maschinencode zu generieren (ungefĂ€hr doppelt so schnell und halb so groĂ).
TPDE-LLVM verwendet drei Phasen zur Codegenerierung:
- Reinigung und Vorbereitung der LLVM-ZwischenreprÀsentation;
- Analyse von Zyklusinformationen und Variablenverwendung;
- Generierung von Maschinencode.

Es wird angemerkt, dass mit der Teilnahme der Autoren von TPDE bereits Optimierungen in die LLVM-Versionen 19 und 20 eingefĂŒhrt wurden, die die Leistung des Standard-LLVM-Backends auf der x86-64-Plattform um 18 % und auf der ARM64-Plattform um 13 % beschleunigen konnten. Nach Ansicht der Autoren von TPDE könnte man in Zukunft mit geringem Aufwand das LLVM-Backend möglicherweise um weitere 10â20 % beschleunigen, doch eine signifikante Leistungssteigerung wĂŒrde erhebliche Ănderungen erfordern. Selbst bei umfassenden Ăberarbeitungen ist es jedoch unwahrscheinlich, dass das bestehende LLVM-Backend um das Zehnfache beschleunigt werden kann.
In der aktuellen Entwicklungsphase hat das TPDE-Projekt das Ziel, die UnterstĂŒtzung fĂŒr die ZwischenreprĂ€sentation des LLVM-Codes, die vom Clang-Frontend in den Optimierungsmodi â-O0â und â-O1â generiert wird, zu gewĂ€hrleisten. Die Verarbeitung der ZwischenreprĂ€sentation, die im Modus â-O2â erstellt wird, wird derzeit nicht unterstĂŒtzt, da TPDE keine UnterstĂŒtzung fĂŒr vektorielle Operationen bietet. Teilweise wird die ZwischenreprĂ€sentation von Flang und dem Rust-Compiler unterstĂŒtzt.
Quelle: opennet.ru
