Umsteigen auf 64 Bit

Was es bringt und wo es hakt

Praxis & Tipps | Praxis

Moderne Multicore-Prozessoren laden dazu ein, viele Programme gleichzeitig zu öffnen. Doch ein 32-Bit-Betriebssystem kann deren Speicherhunger nicht stillen. Erst mit 64 Bit knackt man die Vier-Gigabyte-Obergrenze – und RAM ist billig.

Aufmacher

Prozessoren mit 64 Bit gibt es schon seit einigen Jahren – auf den meisten läuft allerdings bis heute ein 32-Bit-Betriebssystem, obwohl 64-bittige auch nicht erst seit gestern bereitstehen. 64-Bit-Maschinen findet man am ehesten unter den spezialisierten Profi-Rechnern, auf denen sich Datenbanken breitmachen oder aufwendige 3D-Render-Software läuft. Von einem 64-Bit-Sytem, das mehr Arbeitsspeicher verträgt als eine 32-Bit-Ausgabe, profitieren auch Web-, Mail- und Datenbankserver – sie nehmen sich so viel Speicher, wie sie kriegen können. Den Exchange Server 2007 etwa gibt es nur noch für 64-Bit-Windows.

Für den durchschnittlich anspruchsvollen Endanwender hingegen ist 64 Bit bis heute kaum ein Thema. Das könnte sich allerdings bald ändern. Denn die Grenzen der guten alten 32-Bit-Technik zeigen sich, sobald man seinem Rechner vier Gigabyte Arbeitsspeicher spendiert. Der kostet heute weit unter hundert Euro – da werden viele Computerfans kaum widerstehen können, ihren Rechner mit möglichst viel Speicher zu bestücken.

Dabei erleben sie möglicherweise eine Überraschung: Windows nimmt davon nämlich bestenfalls nur drei bis dreieinhalb GByte zur Kenntnis. Den Rest des Adressraumes reserviert es für Erweiterungskarten und Onboard-Chips [1].

Schlimmer noch: Die 32-Bit-Windows-Versionen seit Windows 95 und NT 3.1 stellen jeder Anwendung nur einen Adressraum von zwei GByte zur Verfügung. Die oberen zwei GByte bleiben exklusiv dem Windows-Kernel und Treibern vorbehalten. Aber auch über den eigenen Speicher kann selbst das speicherhungrigste Windows-Programm nicht frei verfügen, denn die Anwendung selbst und etwa System-DLLs beanspruchen ihren Anteil daran. Dadurch gehen einige Dutzend Megabyte verloren, bei Programmen, die das voluminöse .NET Framework verwenden, auch mal 200 bis 300 MByte. Anders verhält es sich bei 32-Bit-Linux, das jedem Prozess maximal 3 GByte zubilligt und dem Kernel 1 GByte vorbehält.

Wenn nur Office-Programme und der Browser zum Einsatz kommen, genügen im Regelfall rund 2 GByte RAM. Aktuelle Spiele, Bildbearbeitungsprogramme oder virtuelle Maschinen entwickeln allerdings einen Speicherhunger, bei dem der Anwender spürbar an die Leistungsgrenze seines Systems stößt. Wer deshalb mit einem Speicherausbau über drei GByte liebäugelt und auch zu einem Betriebssystemwechsel entschlossen ist, um den frischen Speicher voll auskosten zu können, erfährt auf den folgenden Seiten, was ihm der Umstieg auf 64 Bit bringt – an wachsender Leistung, aber möglicherweise auch an neuen Problemen. Denn selten läuft ein Rechner mit neuem 64-Bit-System zusammen mit den bezahlten und bewährten 32-Bit-Anwendungen und den vorhandenen Peripheriegeräten auf Anhieb rund. Welche Windows-Anwendungen unter Vista x64 welche Wehwehchen zeigen, welche zur Hochform auflaufen, wo Treiberprobleme drohen und was auf Anhieb klappt, beschreibt der Artikel auf Seite 94 in c't 08/08. Wie man Vista x64 auf Probe oder dauerhaft installiert, dem System im Betrieb unter die Haube schaut und auf welche Weise es Anwendungen mit 32 und 64 Bit unter einen Hut bringt, lesen Sie im Detail ab Seite 102 in c't 08/08. Der Leitfaden ab Seite 106 in c't 08/08 hilft bei der Auswahl passender Module für den Speicherausbau und ihrer Konfiguration. Wie sich Linux unter 64 Bit macht, erfahren Sie ab Seite 112 in c't 08/08.

Mac-User müssen – und dürfen – übrigens keine Entscheidung über die Bittigkeit ihres Betriebssystems oder ihrer Anwendungen fällen: Bereits Mac OS X 10.4 (Tiger) unterstützte 64-Bit-Programme, wenn auch noch ohne grafische Bedienoberfläche (GUI). Seit Version 10.5 (Leopard) ist auch das GUI 64-bittig. Software-Hersteller können ihre Produkte als sogenannte Universal Binaries ausliefern, die Code für x86- und Power-PC-Prozessoren (jeweils in 32- und 64-Bit-Ausprägung) enthalten. Das System wählt automatisch die optimale Code-Version aus.

PC-Prozessoren können schon seit dem 80386 von 1986 bis zu vier GByte (232 Byte) Speicher adressieren. Trotzdem werben auch 2008 Lebensmittel-Discounter in ihren Anzeigen damit, dass die von ihnen verkauften PCs über „riesige zwei GByte Arbeitsspeicher“ verfügen. Das verblüfft einerseits, da die inzwischen verbauten Ur-Ur-Ur-Enkel des 80386 über 40 Adressleitungen bei Nutzung eines 64-Bit-Betriebssystems bis zu einem Terabyte physikalischen Speicher (240 Byte) ansprechen können. Trotzdem werden die meisten PCs nach wie vor mit 32-Bit-Betriebssystemen ausgeliefert – und die beschränken den Adressraum eben auf 32 Bit, wenn man mal vom Sonderweg PAE (siehe Kasten auf S. 92 in c't 08/08) absieht.

Ein Aufruf des „System“-Kontrollfeldes zeigt an, wie viel Speicher Windows tatsächlich zur Verfügung steht; unter Linux liefert der Aufruf des Programms free in einem Terminal die gleiche Information. Für die 32-Bit-Betriebssysteme hat Microsoft aus Kompatibilitätsgründen den verfügbaren Arbeitsspeicher explizit auf 3,12 GByte begrenzt, auch wenn 4 GByte installiert sind [2]. Mehr als 3 GByte zu verbauen, lohnt sich also nicht.

Während auf Servern 64-Bit-Programme mittlerweile die Norm sind, spielen sie in der Desktop-Welt eine Nebenrolle. Die meisten 64-Bit-Anwendungen findet man im Grafik-Bereich: Programme zum technischen Zeich-nen, 3D-Design, -Rendering und -Animieren profitieren von der Fähigkeit eines 64-Bit-Betriebssystems, 4 GByte und mehr an Hauptspeicher zu verwalten. Ein 3D-Paket wie Cinema 4D, Lightwave oder Maya nutzt unter 64-Bit-Vista den Platz, um Objektinstanzen zu verwalten und große Texturen auf einen Rutsch in den Speicher zu laden.

Für die reibungslose Arbeit auf einem 64-Bit-Rechner braucht man aber bei Weitem nicht von jeder Anwendung eine 64-Bit-Version – auch die meisten für 32 Bit kompilierten Programme laufen problemlos. Der Prozessor schaltet für jene Takte, die dem Prozess zugewiesen werden, in einen speziellen 32-Bit-Modus um. Ist auf einem Rechner mit 64-Bit-fähiger CPU ein 32-Bit-Betriebssystem installiert, läuft der Prozessor die ganze Zeit in diesem Kompatibilitätsmodus. Belegt ein Programm ohnehin deutlich weniger als die theoretisch pro Prozess verfügbaren knapp 2 GByte (Windows) beziehungsweise 3 GByte Speicher (Linux), bringt eine eigene 64-Bit-Version nur in Ausnahmefällen Vorteile.

Hauptgrund für die geringe Zahl von 64-Bit-Anwendungen ist die nach wie vor geringe Nutzung von 64-Bit-Windows auf PCs im Allgemeinen und Notebooks im Besonderen. So hat Intel erst Mitte 2006 Notebook-CPUs veröffentlicht, die 64-Bit-Befehle unterstützen. AMD war mit dem Turion 64 nur ein Jahr früher dran. Wie ein Entwickler von Adobe schreibt, ist die Unterstützung der 32-Bit-Versionen von Windows daher Pflicht und die parallele Wartung von 32- und 64-Bit-Versionen der Software zu aufwendig, sprich teuer [3]. Adobe ist sich des Speicherhungers seiner Anwendungen aber bewusst – ihr Trick, diesem zu begegnen, erläutert der Artikel ab Seite 94 in c't 08/08 genauer.

Darüber hinaus sind 64-Bit-Anwendungen aber auch nicht grundsätzlich schneller als ihre 32-Bit-Gegenstücke. Das 64-Bit-Programm belegt mehr Speicher, da Zeiger darin immer 64 Bit groß sind. Dadurch kann der Prozessor weniger Daten und Instruktionen im schnellen Cache halten und muss häufiger auf den langsameren Hauptspeicher zugreifen, was Leistung kostet. Vorteilhaft ist, dass 64-Bit-Prozessoren doppelt so viele und doppelt so breite Register bieten, was Compilern zumindest theoretisch mehr Möglichkeiten der Code-Optimierung gibt.

Außerdem unterstützen 64-Bit-CPUs generell die schnellen SSEx-Instruktionen. Daher kann der Compiler Code erzeugen, der diese sehr leistungsfähigen Befehle nutzt. Ein 32-Bit-Programm muss hingegen in der Regel auch auf Prozessoren laufen, die nur die älteren und weniger effizienten Architekturen x87 sowie MMX und 3DNow! unterstützen. Dadurch werden Berechnungen deutlich ausgebremst.

Die SSEx-Instruktionen der neueren Prozessoren stehen auch 32-Bit-Anwendungen zur Verfügung, wenn Rückwärtskompatibilität keine Pflicht ist. Daher setzt Adobe für den Photoshop CS3 eine Pentium-4- oder Pentium-M-CPU voraus, die SSE2-Instruktionen versteht. Die Intel-Konkurrenz wird in Photoshops Systemvoraussetzungen nur mit einem „oder kompatibel“ bedacht, ist aber ab Athlon 64 und VIA C7 auch dabei.

Auch ohne SSEx profitiert die Ganzzahlarithmetik mit großen Zahlen von 64 Bit, weil sie nicht mehr mit 2 x 32 Bit nachgebildet werden muss. Probleme machen in dieser Disziplin gegebenenfalls die Unterschiede zwischen Betriebssystemen, falls ein Programm plattformübergreifend funktionieren soll: Während der Datentyp long zum Beispiel unter Linux mitwächst (32 Bit auf 32-Bit-Linux und 64 Bit auf 64-Bit-Linux), tut er das bei Windows nicht (dort ist er immer 32 Bit groß). Auch die Datentypen clock_t und time_t wachsen mit. Variablen dieser Typen beherbergen einen Zeitstempel, der die verstrichenen Sekunden seit dem 1. Januar 1970 (0:00 Uhr UTC) anzeigt. Auf 32-Bit-Systemen läuft dieser Sekundenzähler bereits im Jahr 2038 über (Y2K38-Problem), auf 64-Bit-Systemen weniger problematische 292 Millionen Jahre später. (ola)

[1] 4 GByte wirklich nutzen, c't 4/07, S. 176

[2] Der im Dialogfeld „Systeminformationen“ in Windows Vista gemeldete Arbeitsspeicher ist kleiner als erwartet, wenn vier GByte RAM installiert sind

[3] Adobe Photoshop, 64 bits: When?

"Umsteigen auf 64 Bit"
Artikel zum Thema "Umsteigen auf 64 Bit" finden Sie in der c't 08/2008:
Wie 64 Bit dem Rechner Beine machen S. 90
Das bringt Vista x64 S. 94
Erste Schritte mit dem 64-Bit-Windows S. 102
Speicher-Ausbau auf 4 GByte und mehr S. 106
Linux mit 64 Bit S. 112

Kommentare

Kommentare lesen (71 Beiträge)

Anzeige