Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2005  »  07  »  Wettrennen  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

GNU Compiler Collection 4.0

Wettrennen

von René Rebe
Erschienen im Linux-Magazin 2005/07

Ein Jahr nach Version 3.4 erscheint GCC 4.0 mit einer neuen internen Struktur, die künftige Verbesserungen vorbereitet, aber jetzt schon Ergebnisse zeigt: Der Compiler vektorisiert C-Code automatisch und übersetzt C++-Programme schneller als sein Vorgänger.

Lange erwartet - jetzt ist es endlich so weit: Die GNU Compiler Collection [1] bricht in eine neue Ära auf und liegt nun in Version 4.0 vor. Wichtigstes neues Feature ist zweifellos die Optimierungsinfrastruktur der Static Single Assignment Trees (Tree-SSA, [2]). Dieses Modell zur internen Code-Repräsentation hat den Aufbau der GCC stark beeinflusst. Deshalb entschlossen sich die Entwickler, dies auch in der Version auszudrücken, und sprangen gleich zur 4.0, ursprünglich war die Release noch als 3.5 geplant. Eine Übersicht der Änderungen gibt das Changes-Dokument [3].

Einfachere Struktur durch Single Assignments

Frühere GCC-Versionen wandten die Optimierungsschritte hauptsächlich auf die interne Abstraktion der Maschinensprache an, also auf die RTL-Repräsentation (Register Transfer Language), eine Zwischenstufe der Kompilierung. Allerdings sind zu diesem Übersetzungszeitpunkt schon viele Informationen der Hochsprache verloren. In der aktuellen GCC-Version stehen sie durch die Tree-SSA-Darstellung für die Optimierung zur Verfügung. Dazu baut der Compiler intern einen Graphen auf, dessen Knoten nur eine einzige Zuweisung enthalten (Single Assignment). So entsteht aus »a = b + c - d« Compiler-intern:

tmp = b + c
a = tmp - d

Dadurch werden die Ausdrücke einfacher und sind algorithmisch besser zu verarbeiten. Da die Tree-SSA-Repräsentation wesentlich mehr Informationen enthält als die RTL-Variante vorheriger Versionen, können die GCC-Entwickler damit neue, moderne Optimierungstechniken implementieren.

Einige der Optimierungen in 4.0 setzen direkt auf der SSA-Ebene an. Erst dadurch wurde die Vektorisierung von Schleifen möglich (siehe Kasten "Automatische Vektorisierung"). Vor allem C++-Programmen soll der Compiler damit in Zukunft deutlich beschleunigen. GCC 4.0 bildet in erster Linie die Basis für künftige Verbesserungen, die in Version 4.1 folgen sollen.

Parallel rechnen

Unter Vektorisierung ist bei der GCC die Verwendung der SIMD-Instruktionen (Single Instruction Multiple Data) moderner CPUs zu verstehen. In der x86-Welt sind dies MMX [4], 3DNow [5] und SSE [6] mit den Revisionen 2 und 3 [7]. Jenseits des Mainstream finden sich bei PowerPC der Altivec-Mechanismus [8] und bei Sparc-Prozessoren das Sun-eigene VIS (Visual Instruction Set) [9]. Auch bei den ARM- [10] und Super-H-Prozessoren [11] sind solche Befehle zu finden, die teilweise sogar schon von der GCC-Version 4.0 genutzt werden.

Welche Arten für die jeweilige Architektur implementiert sind, zeigt Tabelle 1. Die einzelnen Spalten geben an, welche Vektoroperationen für wie viele Elemente (4 bis 16) eines Typs (Integer oder Float) realisiert sind.



Als weitere Neuerung integriert GCC 4.0 das Frontend für die Sprache Fortran 95, die das etwas angegraute Fortran 77 ablöst. Im wissenschaftlichen Bereich ist Fortran noch häufig im Einsatz, auch die Spec-Benchmarks enthalten einige Fortran-95-Tests, die GCC bisher nicht übersetzen konnte.

Nicht mehr in die neue Release 4.0 hat es der Dialekt Objective-C++ geschafft. Dabei handelt es sich um eine Mischung von C++ mit dem von Apple verwendeten Objective-C.

Für C++-Entwickler dürfte interessant sein, dass der neue Compiler ohne Optimierungen (»-O0«) deutlich schneller arbeitet als alle vorherigen Versionen. Das kann den Editier-Compile-Zyklus deutlich beschleunigen, dessen Dauer die C++-Entwicklung mit der GCC bisher eher mühsam gestaltete.

Die C++-Bibliothek bringt auch schon einige Features aus der kommenden Überarbeitung des C++-Standards mit. Der Namensbereich »TR1« enthält bereits »hashtable«, »tuple«, »type_traits«, »shared_ptr« und einiges mehr. Entwickler können sich so mit den Erweiterungen beschäftigen, bevor sie im nächsten C++-Standard erscheinen.

Das Debugging erleichtern die neuen Location Lists, die der neue GCC-Compiler in die Objektdateien einfügen kann. Diese führen über den Ort der verwendeten Variablen Buch und helfen damit dem GNU-Debugger dabei, auch bei optimiertem Code die passende Zeile im Quellcode wiederzufinden. Bisher war das nicht möglich, sodass man zum Debuggen weniger optimierten Code generieren musste,siehe [12]. Abschalten lässt sich dieses Verhalten mit dem Parameter »-no-var-tracking«.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Compiler-Rallye Intels C-Compiler 9.0
GNU-Tools mal kreuzweise Workshop: Crosscompiling für Embedded-Systeme
Ready, Set, Go! Google erfindet neue Programmiersprache
Zum Angriff auf die Bugs OpenGL-Anwendungen debuggen mit Bugle
Schneller kompilieren Mit CCache effizient C und C++ kompilieren
Sonnenstudio Suns Entwicklungsumgebung Studio unter Linux
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (0)