Bitte umsteigen
Als Intel mit dem i386-Prozessor vor rund 20 Jahren die 32-Bit-Ära einläutete, erschloss das dem PC den seiner-zeit unvorstellbar riesigen Adressraum von 4 GByte. Heute indes ist von der 4-GByte-Grenze die Rede, die die Serverwelt längst zum Umstieg auf 64-Bit-Technik zwang. Nun steht das Hinausschieben dieser Grenze von 4 GByte auf das Viermilliardenfache auch auf dem Desktop-PC bevor.
Auf der einen Seite ist es nur eine harmlos anmutende Verdopplung der Bus- und Registerbreite in den Prozessorchips, auf der anderen Seite wächst der darstellbare Werte- und Adressbereich in atemberaubender Weise auf das Viermilliardenfache von immerhin bereits vier Milliarden. 16 Exabyte Adressraum - 16 x 1018, also sechs Nullen mehr als bei Tera und drei mehr als bei Peta -, in diesen Bereich werden nicht mal die Kapazitäten großer Festplatten-Arrays in naher Zukunft vorstoßen.
Solche Zahlenspielereien sagen allerdings herzlich wenig darüber aus, was man in der Praxis davon hat. Wer die 32-Bit-Revolution live erlebt hat, weiß überdies, dass allein die Schaffung eines neuen Prozessors wie AMDs Athlon 64 noch nicht mal die halbe Miete ist, bis man alle Vorzüge der 64-Bit-Technik ausschöpfen kann. Sogar der Prozessor selbst zeigt sich beim physischen Adressraum erst 56-bittig, und außer dem Betriebssystem müssen nicht nur Applikationen und Treiber, sondern auch Chipsätze und PC-Steckkarten auf volle 64-Bit-Tauglichkeit gebracht werden. Aber 64-Bit-Prozessoren und das nahende 64-Bit-Windows markieren einen Riesenschritt vorwärts. Dieser und die folgenden Beiträge klären, welche Bereiche welchen Status erreicht haben und wovon der Anwender bereits profitieren kann.
Die ersten Schritte
Die preiswerten x86-64-Prozessoren von AMD sollen den 64-Bit-Raum für jedermann öffnen. Doch bisher fehlte das passende Betriebssystem - Linux ist zwar seit dem Hardware-Startschuss vor zwei Jahren dabei [1], doch auf über 90 Prozent aller x86-Rechner läuft nun einmal Windows. Anfang Februar ließ Microsoft die 64-Bit-Version von Windows XP Professional, „x64-Edition“ getauft, als zweiten Release Candidate vom Stapel. Die Fertigstellung der endgültigen Version im Laufe dieses Halbjahres dürfte der eigentliche Beginn der 64-Bit-Desktop-Ära werden.
Ein großer Vorteil der von AMD initiierten x86-64-Technik ist die Rückwärtskompatibilität zu vorhandener 32-Bit-Software. Die um 64-Bit-Fähigkeiten erweiterten Prozessoren verhalten sich unter einem 32-Bit-Betriebssystem nicht anders als ihre Vorgänger. Da sie in allen Belangen die obere Leistungsklasse der x86-Prozessoren repräsentieren, warten sie auch mit sehr leistungsfähigen 32-Bit-Einheiten auf. Das ist bei reinrassigen 64-Bit-Serverprozessoren wie Intels Itanium anders - er verdaut 32-Bit-Software nur im Schleichgang.
Ihre ganze Kraft entfalten die x64-Prozessoren aber erst unter einem 64-Bit-Betriebssystem und mit 64-Bit-Software. Auch wenn die Möglichkeiten von x64-Windows noch einige 10er-Potenzen unterhalb 16 Exabyte enden, so kann es doch einzelnen Anwendungen nun statt bisher 2 Gigabyte satte 8 Terabyte virtuellen Speicher zuteilen.
Zusätzlich verarbeiten x64-Prozessoren 64-Bit-Datenwörter in einem Zyklus und bieten wesentlich mehr interne Register als ihre Vorgänger. Gut programmierte Software kann das zur Leistungssteigerung nutzen. Was unter den 64-Bit-Versionen von Windows XP und Linux möglich ist, zeigen die Artikel auf den Seiten 118 und 124. Das kommende Windows XP Professional x64 stellen wir auf den folgenden Seiten vor - in RC1-Version, weil RC2 leider zu spät erschien.
Zwei Jahre nach AMD hat sich auch Intel dazu durchgerungen, mit der kompatiblen EM64T-Technik auf den x64-Zug aufzuspringen. Welche Prozessoren und Chipsätze zurzeit x64 unterstützen und welche Leistungen sie bringen, wird ab Seite 106 erläutert. Anschließend stellen wir die Planungen von AMD und Intel für die nächsten Jahre vor - dabei spielt die x64-Technik inzwischen die tragende Rolle.
Unter der Haube
Die AMD64- und EM64T-CPUs nennt man auch 64-Bit-erweiterte Prozessoren - kurz x64 -, denn sie sind anders aufgebaut als reinrassige 64-Bitter für Server. Die x64-Modelle enthalten einen modernen x86-Kern und eine 64-Bit-Befehlssatzerweiterung. In diesem Sinne besteht eine Ähnlichkeit zu anderen x86-Funktionszusätzen wie MMX, 3D Now!, SSE, SSE2 oder SSE3. Doch greift die 64-Bit-Erweiterung viel tiefer in die Architektur des Prozessors und der gesamten PC-Plattform ein.
Die x86-64-Prozessoren kennen drei Betriebsarten. Im Legacy Mode sind die 64-Bit-Erweiterungen nicht nutzbar: Der Prozessor arbeitet genau wie eine herkömmliche 32-Bit-CPU. Erst ein 64-Bit-Betriebssystem erlaubt es, den 64-Bit-Modus zu aktivieren. Dieser erschließt alle neuen Möglichkeiten, die sich jedoch nur mit 64-Bit-Software ausschöpfen lassen. Schließlich steht unter 64-Bit-Betriebssystemen noch der Compatibility Mode zur Auswahl: Dann verarbeitet der Prozessor gleichzeitig 64-Bit- und 32-Bit-Code. Auch dabei bleiben den 32-Bit-Programmen die 64-Bit-Vorteile verwehrt.
Ihre Vorzüge können die x64-Prozessoren folglich nur in Szene setzen, wenn 64-Bit-Software unter einem 64-Bit-Betriebssystem läuft. Das Betriebssystem wiederum entscheidet über die tatsächlich gebotene Kompatibilität: So unterstützt Windows XP x64 zwar 32-Bit-Programm, nicht aber 16-Bit-Software wie DOS-Anwendungen (siehe folgender Artikel). Außerdem müssen die Hardware-Treiber für das x64-Windows 64-bittig sein. Das schränkt die Auswahl passender Komponenten zunächst deutlich ein.
32-Bit-Programme können unter Windows für gewöhnlich höchstens 2 GByte Speicher für sich beanspruchen. Lädt ein 32-Bit-Programm eine große Datei von der Festplatte, geht das nur in 2-GByte-Happen. Bei der sequenziellen Verarbeitung etwa von Videodaten spielt das keine wesentliche Rolle. Das Durchsuchen einer großen Datenbank (wahlfreier Zugriff auf einzelne Adressen) kostet auf diese Art aber viel Zeit. Der 64-Bit-Modus überwindet solche Einschränkungen: Wegen des erheblich erweiterten virtuellen Adressraums profitiert beispielsweise auch ein System mit weniger als 4 GByte physischem RAM noch davon.
Als angenehmen Nebeneffekt, der nichts mit der Ăśberlegenheit von 64 ĂĽber 32 Bit zu tun hat, bringen die AMD64- und EM64T-Prozessoren nicht nur doppelt breite, sondern auch mehr der so genannten internen Register mit, was eine Reihe von Operationen erheblich beschleunigen kann.
Doch der Einsatz von 64-Bit-Programmen kann gelegentlich auch Nachteile bringen. Längere Datenwörter benötigen auch mehr Speicherplatz und verstopfen die Caches in den Prozessoren schneller. Auch schlecht programierter 64-Bit-Code kann zur argen Systembremse werden (dazu mehr in den Compiler-Artikeln dieser c't-Ausgabe).
32-Bit-Tricks
Die hohe Leistungsfähigkeit der x86-Prozessoren, der zugehörigen Chipsätze und Speichermodule machen diese preiswerte Technik auch für den Servereinsatz attraktiv. So konnte sich auch das 32-bittige Windows als Serverbetriebssystem etablieren. Dabei haben sich die Grenzen der 32-Bit-Technik allerdings schon länger störend bemerkbar gemacht.
Microsoft hat daher Tricks in die 32-Bit-Windows-Versionen eingebaut, die einige ihrer Limitierungen mildern sollen. Die meisten davon funktionieren prinzipiell auch unter Windows 2000 und XP, sind aber erst bei den Windows-Server-Editionen wirklich nĂĽtzlich.
Einer dieser Kniffe heißt Physical Address Extension (PAE). Er erlaubt den Zugriff auf den Adressraum jenseits der 32 Bit, sofern Prozessor und Chipsatz mitspielen. PAE lässt sich durch einen Eingriff in die Boot.ini aktivieren (falls Windows es nicht sogar automatisch tut bei NX-CPUs. Hinter den Aufruf des Betriebssystems schreibt man die Option /PAE und startet Windows neu. Anschließend ist in der Systemsteuerung unter System der Hinweis „Physikalische Adresserweiterung“ zu lesen.
Leider hilft das bei den Desktop-Versionen nicht weiter, denn hier begrenzt Microsoft die maximale Größe des physischen Speichers auf 4 GByte, was den wichtigsten Nutzen von PAE wieder aufhebt. Erst Windows Server 2003 profitiert wirklich von PAE, allerdings auch nur bis zu den jeweils von Microsoft sowie der Hardware gesetzten Limits. So kann die 32-Bit-Standard-Edition ebenfalls nur mit 4 GByte RAM umgehen, erst die Enterprise- (32 GByte) und die Datacenter-Edition (64 GByte) schaffen mehr.
Dass unter Windows der Adressbereich pro Prozess auf 2 GByte beschränkt ist, liegt daran, dass ein 32-Bit-Windows die Hälfte des verfügbaren Adressbereiches für den eigenen Kernel reserviert. Startet man Windows mit dem Schalter „/3GB“, beschränkt es den eigenen Speicherbedarf auf 1 GByte. Nur mit echten 64 Bit unter der Haube verwaltet Windows bis zu 16 Terabyte - die Hälfte davon reserviert sich wiederum das System (siehe Online-Artikel 294418 der Microsoft Knowledge-Base).
Das Adressloch
Wer einen 32-Bit-PC tatsächlich mit 4 GByte RAM ausrüstet wird feststellen, dass diese Architektur gar nicht für diese Vollausstattung konzipiert ist - ein Teil ist nämlich nicht nutzbar. Die so genannten I/O-Komponenten, also sämtliche PCI- und AGP-Karten, aber auch etwa Soundchips, FireWire- und IDE-Hostadapter, können üblicherweise nur Speicher-Adressen unterhalb der 32-Bit-Grenze ansprechen. Das BIOS reserviert die nötigen Adressbereiche, und zwar unmittelbar unterhalb der 4-GByte-Grenze.
Je nach Hardware-Ausstattung und BIOS(-Bugs) kostet das heute einige hundert MByte Adressraum: Größter Verbraucher ist meistens die von AGP-Karten okkupierte Graphics Address Remapping Table (GART), die auf über 256 MByte anschwellen kann. Alles physisch vorhandene RAM, das tatsächlich in diesen reservierten Bereich hineinreicht, ist dann nicht ansprechbar.
Auch gegen diesen misslichen Umstand hilft ein Trick: Genau der RAM-Bereich, der durch reservierte I/O-Adressen verloren geht, wird oberhalb der 4-GByte-Linie virtuell wieder „angeklebt“ (Memory Remapping). Auf den wenigen Mainboards, die diesen Trick beherrschen, kann man ihn üblicherweise über eine Option im BIOS-Setup aktivieren.
Memory Remapping bringt allerdings nur dann einen wirklichen Nutzen, wenn das Betriebssystem die jenseits der 32-Bit-Grenze liegenden Adressen ansprechen kann. Prinzipiell kann das mit der erwähnten PAE-Technik auch ein 32-Bit-Windows. Doch bei XP hat Microsoft eine Schranke eingebaut: Auch mit eingeschaltetem PAE ist bei 232 Byte Schluss. Erst die 32-Bit-Server-Versionen von Windows kommen per PAE an die hochgelegten Speicherbereiche heran. Windows Server 2003 Standard Edition nutzt allerdings auch dann in der Summe höchstens 4 GByte - die aber wirklich.
Das Adressloch ist auch bei x64-Hardware vorhanden, denn auch dort sind noch bestimmte I/O-Komponenten auf 32-Bit-Adressen angewiesen. Auch bei x64-Computern mit mehr als 4 GByte Speicher funktioniert Memory Remapping - der nicht direkt ansprechbare Speicherbereich liegt dann eben oberhalb der höchsten Adresse des physischen RAM. Mit x64-Windows ist der Zugriff hier kein Problem.
Fallstricke
Mittlerweile gibt es DRAM-Bausteine mit 1 GBit Kapazität, aus denen sich Speichermodule mit 2, 4 und sogar 8 GByte Kapazität fertigen lassen. Solche Server-DIMMs laufen allerdings noch mit deutlich niedrigeren Frequenzen als aktuelle PC-Speichermodule. Außerdem sind die Riesen-DRAMs sündhaft teuer. Die Maximalkapazität bezahlbarer und schneller Chips liegt bei 512 MBit.
Für Server gibt es 2-GByte-DIMMs aus solchen Chips, aber nur in „Registered“-Ausführungen, die in gewöhnlichen Mainboards nicht funktionieren. Fürs erste muss man sich deshalb mit 1-GByte-Riegeln begnügen. Und weil PC-Hauptplatinen maximal vier davon vertragen, ist derzeit in erschwinglichen x64-Maschinen noch bei 4 GByte RAM Schluss.
Der Athlon 64 im Sockel-754-Gehäuse steuert ohnehin nur einen Speicherkanal an und bietet deshalb auch in Zukunft keine Chance auf mehr als 4 GByte RAM. Auch die aktuellen Intel-Chipsätze i915/i925 können nur 4 GByte adressieren - nicht einmal Memory Remapping ist möglich.
Wer schon jetzt sehr viel Speicher braucht, muss auf Dual-Opteron- oder Dual-Xeon-Boards mit bis zu acht RAM-Steckplätzen für die etwas teureren Registered-ECC-DIMMs ausweichen - also quasi in die Serverwelt.
Bei einem Speicherausbau über 4 GByte hinaus drohen mit manchen PCI-Karten und Chipsätzen aber Probleme, auch in Systemen mit 64-Bit-Prozessoren. Viele Erweiterungskarten und Adapterchips können nämlich von sich aus keine 64-Bit-Adressen für Speicherzugriffe generieren (64-Bit-DMA). Das gilt auch dann, wenn sie mit einem passenden Treiber für ein 64-Bit-Betriebssystem laufen.
Viele der für den Profi-Einsatz entwickelten PCI-X-Chips unterstützen 64-Bit-DMA schon jetzt, also etwa GBit-LAN-, U320-SCSI- oder FibreChannel-Hostadapter. Auch viele SATA-Adapter sollen das Verfahren beherrschen. Prinzipiell kann sogar der 32-Bit-PCI-Bus 64-Bit-Adressen per Dual Address Cycles (DAC) übertragen. Doch welche 32-Bit-PCI-Chips DAC-tauglich sind, lässt sich kaum herausfinden - sofern sich überhaupt Datenblätter finden, sind darin 64-Bit-DMA und DAC meistens kein Thema. Ein Register, aus dem sich die 64-Bit-Fähigkeiten per Software auslesen lassen, sehen leider erst neuere Standards wie PCI Express, Serial ATA und HD Audio vor. Intels Dokumentation verrät, dass die ICH6-Southbridges DAC von PCI-Karten durchleiten und dass die integrierten Controller für USB 2.0 (EHCI), SATA sowie HD Audio mit 64-Bit-Adressen hantieren können. Auch der PCI-Express-Anschluss hat damit kein Problem - anders als beispielsweise der AC-97-Controller. Die Datenblätter zur AMD-Southbridge AMD-8111 zeigen, dass deren EHCI-Controller nur 32-bittig denkt.
Bei I/O-Geräten mit geringer Transferleistung sollten 32-Bit-Zugriffe auf den Speicher kein Problem sein, denn ein x64-Windows greift dann helfend unter die Arme. Ein spezieller Mechanismus, genannt Address Windowing Extensions (AWE), bildet die 32-Bit-Adressen auf den 64-Bit-Adressraum ab. Ein solches Double-Buffering ist allerdings eine Notlösung, die viel Zeit und Prozessorleistung kostet und alle Geschwindigkeitsvorteile der DMA-Idee zunichte macht.
Je mehr RAM das System ansteuert, umso mehr Probleme drohen, wenn die I/O-Bauteile 64-Bit-DMA nicht beherrschen und Adressbereiche oberhalb 4 GByte angesprochen werden, was schon bei Remapping der Fall ist. Der Athlon 64 enthält deshalb einen speziellen Memory Controller (IOMMU), der Hardware-Beschleunigung für 64-Bit- und 32-Bit-DMA bietet.
Startklar?
Die Fundamente der x86-64-Desktop-Architektur, nämlich Prozessoren, Chipsätze und Betriebssysteme, sind bald verfügbar. Jetzt können die Programmierer loslegen und uns mit schnellem Code versorgen. Wie bei jedem Fortschritt lauern noch einige Fallstricke. Probleme mit der Peripherie sind jedoch erst bei RAM-Bestückungen oberhalb 4 GByte zu befürchten, die auf Desktop-PCs noch nicht in Massen bevorstehen. Bis dahin wird der Wechsel von PCI auf PCI Express, von IDE auf SATA oder von AC-97 auf HD Audio diesen Tücken einiges von ihrem Schrecken genommen haben.
Literatur
[1] Peter Siering, Oliver Diedrich, 18 Milliarden Gigabyte ..., ... oder: Wer braucht 64 Bit?, c't 13/01, S. 142
[2] Andreas Stiller, Hacker-Blocker, Das No-Execute-Feature - und wie Windows XP SP2 damit umgeht, c't 16/04, S. 106
[3] Axel Vahldiek, Da gibt’s doch was von Microsoft!, Das zweite Service Pack für Windows XP, c't 16/04, S. 92
Speicherschutz
Eine Schwachstelle (nicht nur) der x86-Architektur in Bezug auf die Systemsicherheit und Stabilität ist die Mischbarkeit von Programmanweisungen (Code) und Daten. Diese Schwäche lässt sich für Angriffe auf das System nutzen, indem man schädlichen Code, etwa als Text-Daten getarnt, einschleust und vom Prozessor ausführen lässt. Ein typischer Angriffspunkt sind so genannte Buffer- oder Heap-Overflows [2].
64-Bit-Serverprozessoren beherrschen seit Jahren Verfahren zur Kennzeichnung beliebiger Speicheradressen als „nicht ausführbar“. Wenn der Prozessor zu Code in solchen No-Execute-(NX-)Bereichen dirigiert wird, verweigert er dessen Ausführung.
Unter dem Namen Enhanced Virus Protection (EVP) hat AMD die NX-Technik mit den AMD64-Prozessoren erstmals für x86 eingeführt. Doch längst nicht alle Viren werden über Overflow-Fehler eingeschleust, weshalb die Namensgebung etwas übers Ziel hinausschießt. Dennoch ist die von Microsoft DEP (Data Execution Prevention) und von Intel xD (Execute Disable) getaufte Technik ein Schritt zu mehr Systemsicherheit.
Weil bei der herkömmlichen Art der Darstellung von 32-Bit-Speicheradressen kein Raum für eine NX-Markierung mehr blieb, bediente sich AMD kurzerhand des PAE-Adressformats: Diese Physical Address Extension aktiviert deshalb Microsoft Windows XP ab SP2 [3], sofern es bei der Installation einen NX-tauglichen Prozessor erkennt und die NX-Funktion im BIOS-Setup des Mainboards auch eingeschaltet wurde. Zu den NX-tauglichen Prozessoren gehören außer den AMD64-Typen auch Intels neuester Pentium M, die Celeron-D- und Pentium-4-Typen mit dem Buchstaben „J“ in der Typenbezeichnung und deren EM64T-Versionen.
Und Itanium?
Den 64-Bit-Prozessor Itanium hat Intel gemeinsam mit HP vor allem für große Server entwickelt. Die IA-64-Architektur hat wenig mit x86 zu tun, kann aber notfalls auch 32-Bit-x86-Code verarbeiten - allerdings nicht sonderlich schnell. Die enorme Leistung der Itaniums lässt sich nur mit IA-64-Software abrufen.
Microsoft liefert zwei spezielle IA-64-Versionen des Windows Server 2003 als Enterprise- und Datacenter-Edition. Letztere unterstĂĽtzt bis zu 64 Prozessoren und 512 GByte RAM. HP liefert nach eigenen Angaben mehr als ein Drittel seiner Itanium-Server mit diesen Windows-Versionen aus. Andere IA-64-Betriebssysteme sind Linux, HP-UX oder OpenVMS 8.2.
Bis zum Herbst letzten Jahres hatte HP auch einige IA-64-Workstations mit einem oder zwei Prozessoren im Angebot. Für diese lieferte Microsoft seit März 2003 auch ein Windows XP als IA-64-Version. Es war die erste Serienversion eines 64-Bit-XP, allerdings nur als englischsprachiges OEM-Produkt bei HP zu haben. Microsoft hat dem Itanium keine größeren Anstrengungen gewidmet - so fehlten dem IA-64-XP für den Desktop-Einsatz wichtige Komponenten, etwa die Unterstützung für DirectAudio und andere Multimedia-Anwendungen. Damit stand es eher in der Nachfolge des Mitte der 90er-Jahre erschienenen Windows NT für Alpha-Prozessoren, auch der von Intel nachgereichte IA-32 Execution Layer zur Beschleunigung von x86-Software erinnerte an die einstmals von DEC programmierte FX32!-Emulation für Alphas.
Nachdem HP als bisher einziger IA-64-Workstation-Hersteller diese Produkte eingestellt hatte, kĂĽndigte Microsoft Anfang 2005 auch sein IA-64-Windows-XP ab - die Server-2003-Versionen fĂĽr den Itanium laufen aber weiter.
| "Windows mit 64 Bit" | |
| Weitere Artikel zum Thema "Windows mit 64 Bit" finden Sie in der c't 5/2005: | |
| Das bringt die x64-Technik | S. 96 |
| Ein Blick auf Windows XP Professional x64 Edition | S. 100 |
| Leistungsvergleich der aktuellen x86-Prozessoren | S. 106 |
| Zukunftspläne: AMD und Intel setzen auf x86-64 | S. 112 |
| Software-Entwicklung und SPEC CPU2000 | S. 118 |
| GNU Compiler Collection: Performance unter Linux | S. 124 |
(ciw)