Forscher der Technischen UniversitĂ€t MĂŒnchen haben das TPDE-Toolkit und darauf basierend den LLVM-Compiler-Backend TPDE-LLVM veröffentlicht, der die Generierung von Maschinencode fĂŒr die Architekturen x86-64 und AArch64 auf der Grundlage der LLVM-IR-ZwischenreprĂ€sentation ermöglicht. Bei Tests erwies sich TPDE-LLVM als 10-20 Mal schneller als der LLVM -O0-Backend (Codegenerator ohne Optimierungen) bei demselben Leistungsniveau des resultierenden Maschinencodes und einer GröĂensteigerung von 10-30 %. Die Ergebnisse des Projekts wurden unter der Apache 2.0-Lizenz veröffentlicht.
TPDE-LLVM zielt ursprĂŒnglich darauf ab, eine Kompilation mit minimalen Latenzen und einem QualitĂ€tsniveau zu gewĂ€hrleisten, das dem Modus ohne Optimierungen (â-O0â) entspricht. Das Projekt stellt ein Tool fĂŒr den eigenstĂ€ndigen Betrieb tpde-llc, eine Bibliothek zur Integration in Anwendungen (z. B. zur Implementierung von JIT-Compiler-FunktionalitĂ€t) und Patches zur Integration mit Clang und Flang bereit.

Das Projekt kann als Basis-Compiler-Komponente fĂŒr JIT oder zur Erstellung nicht optimierter Builds verwendet werden. TPDE-LLVM konzentriert sich ausschlieĂlich auf die Geschwindigkeit der Kompilierung und versucht nicht, mit den optimierenden LLVM-Backends zu konkurrieren, die im Vergleich zu TPDE-LLVM deutlich langsamer arbeiten, aber schnelleren und kompakteren Maschinencode generieren können (ungefĂ€hr doppelt so schnell und halb so groĂ).
FĂŒr die Codegenerierung verwendet TPDE-LLVM drei Phasen:
- Aufbereitung und Bereinigung der LLVM-ZwischenreprÀsentation;
- Analyse von Schleifeninformationen und Variablenverwendung;
- Erstellung des Maschinencodes.

Es wird darauf hingewiesen, dass in den LLVM-Versionen 19 und 20 bereits Optimierungen hinzugefĂŒgt wurden, die die Leistung des Standard-LLVM-Backends auf der x86-64-Plattform um 18 % und auf der ARM64-Plattform um 13 % verbessern konnten. Den Autoren von TPDE zufolge könnte in Zukunft mit geringem Aufwand eine weitere Beschleunigung des LLVM-Backends um 10-20 % möglich sein, aber eine weitere Leistungssteigerung wĂŒrde erhebliche VerĂ€nderungen erfordern. Selbst bei einer umfassenden Ăberarbeitung ist es jedoch unwahrscheinlich, dass das bestehende LLVM-Backend um das 10-Fache beschleunigt werden kann.
In der aktuellen Entwicklungsphase zielt das TPDE-Projekt darauf ab, die UnterstĂŒtzung fĂŒr die von der Clang-Frontend generierte LLVM Intermediate Representation in den Optimierungsmodi «-O0» und «-O1» zu gewĂ€hrleisten. Die Verarbeitung der im Modus «-O2» erstellten ZwischenreprĂ€sentation wird bisher aufgrund fehlender UnterstĂŒtzung vektorieller Operationen im TPDE nicht garantiert. Teilweise wird Zwischenkode von Flang und dem Rust-Compiler unterstĂŒtzt.
Quelle: opennet.ru
