Wikipedia · einfach zusammengefasst · Stand
64-Bit-Architektur
Unter 64-Bit-Architektur versteht man in der EDV eine Prozessorarchitektur, deren Verarbeitungsbreite 64 Bit beträgt. Durch 64 Bit große Adressregister sind …
Inhalt5 Abschnitte
Grundidee und Verbreitung
Eine 64-Bit-Architektur ist eine Prozessorarchitektur mit einer Verarbeitungsbreite von 64 Bit. 64 Bit große Adressregister erlauben einzelnen Prozessen nicht segmentierte Adressräume von mehr als 4 GiB. Die Bezeichnung 64-Bit wird auch für darauf ausgelegte Betriebssysteme und Programme verwendet.
Manche Prozessorfamilien unterstützen aus Kompatibilitätsgründen mehrere Bittigkeiten. Bei x86 gehören zur Entwicklungslinie eine 16-Bit-Architektur seit dem Intel 8086, IA-32 beziehungsweise x86-32 seit dem Intel 80386 und die 64-Bit-Erweiterung x64, x86-64 oder amd64 seit dem AMD Opteron. x64 enthält auch 32-Bit-x86 und grundsätzlich die ursprüngliche 16-Bit-x86-Architektur. Künftige x86S-Prozessoren könnten die 16- und 32-Bit-Teile vollständig weglassen.
64-Bit-Systeme wurden zunächst vor allem wegen preiswerter werdendem Hauptspeicher wichtig: Anfang der 1990er Jahre im Serverbereich, Anfang der 2000er Jahre bei PCs und Workstations mit x64 und Anfang der 2010er Jahre bei Smartphones mit ARM64. Wichtige frühe 64-Bit-Universalprozessoren waren der MIPS R4000 und DEC Alpha. x64 erschien 2003 als AMD64; Intels weitgehend kompatible Erweiterung Intel 64 folgte 2005. Die Armv8-A-Architektur wurde 2013 eingeführt.
Hardware und Architektur
Die Bitbreite einer Architektur legt nicht fest, wie jede Funktion im Chip umgesetzt wird. Einzelne Befehle können intern weiterhin als 32-Bit-Operationen arbeiten, etwa Verschiebebefehle im MIPS R4000.
64-Bit-Prozessoren sind meist durch die Entwurfszeit geprägt. Typisch sind Multicore-Systeme, mehrere 64-Bit-Busse zum Hauptspeicher, Super-Pipelined-Architekturen, oft Out-of-Order- und superskalare Ausführung sowie meist Vektorbefehle ab 128 Bit. Dazu kommen leistungsfähige Gleitkommaeinheiten, umfangreiche Cache-Hierarchien mit zwei bis vier Stufen und Möglichkeiten zur Virtualisierung von Speicher, teilweise auch von I/O-Operationen.
Die Erweiterung einer 32-Bit-Architektur auf 64 Bit verursachte etwa 10 Prozent Mehraufwand. Der 32-Bit-Intel Core Duo T2700 besaß 151 Millionen Transistoren, der weitgehend identische 64-Bit-Core2 Duo E4300 167 Millionen. Viele Teile moderner Prozessoren waren ohnehin bereits 64 Bit oder breiter. PowerPC und MIPS waren früh als 64-Bit-Architekturen entworfen, wurden anfangs jedoch als 32-Bit-Subset in Hardware umgesetzt. Grafikprozessoren entwickelten sich für 3D-Berechnungen zu 128- und 256-Bit-Prozessoren, gelten aber nicht als vollständige Architekturen, weil ihnen eigene Anwendungen und Betriebssysteme dieser Bitbreite fehlen.
Kompatibilität von Software
Ein 64-Bit-Programm verwendet 64 Bit zur Adressierung von Arbeits- oder virtuellem Speicher und ist deshalb nicht mit einer Architektur niedrigerer Bitzahl, etwa 32 Bit, kompatibel. Ein vollständiges 64-Bit-Betriebssystem kann unter einem 32-Bit-Betriebssystem nur virtualisiert laufen, wenn der Prozessor einen 64-Bit-Betriebsmodus bietet.
Viele 64-Bit-Prozessoren führen für den Übergang weiterhin 32-Bit-, teils auch 16-Bit-Code aus. Damit ältere Programme auf einem 64-Bit-Betriebssystem nativ funktionieren, müssen drei Voraussetzungen erfüllt sein: Der Prozessor braucht einen passenden Kompatibilitätsmodus innerhalb des 64-Bit-Modus, die Programmdatei muss ihre Bittigkeit markieren, und das Betriebssystem muss eine 32-Bit-API bereitstellen, meist über Wrapper. x64 besitzt einen 32-Bit-x86-Kompatibilitätsmodus; der 64-Bit-PowerPC G5 kann 32-Bit-Code bis zum PowerPC G4 nativ ausführen. Windows nutzt dafür WOW64.
64-Bit-macOS konnte bis Version 10.14 Mojave 32-Bit-Programme ausführen; macOS Catalina 10.15 stellte diese Unterstützung ein. Unter 64-Bit-Windows können 16-Bit-Programme nicht nativ laufen, weil der 64-Bit-x86-Ausführungsmodus dies nicht ermöglicht. Windows 7 bot optional den Windows-XP-Modus als emuliertes oder virtualisiertes 32-Bit-Windows XP, auch für 16-Bit-Programme; ab Windows 8 war er nicht mehr vorhanden. Virtualisierung oder meist langsamere Software-Emulation kann weiterhin ältere 32- oder 16-Bit-Betriebssysteme und deren Software nutzbar machen.
Datenmodelle beim Programmieren
In C betrifft der Wechsel zu 64 Bit besonders Zeiger wie void* und Ganzzahltypen. Beim LP64-Modell sind Zeiger und long 64 Bit breit, int bleibt 32 Bit. Alle heutigen unixartigen 64-Bit-Betriebssysteme nutzen LP64. Windows verwendet LLP64: long bleibt wie int 32 Bit, während Zeiger und long long 64 Bit breit sind. ILP32 bezeichnet das verbreitete 32-Bit-Modell.
Die Datenmodelle haben folgende Größen in Bit für short, int, long, long long und pointer: LLP64: 16, 32, 32, 64, 64; verwendet bei Microsoft Win64 (x64/IA64). LP64: 16, 32, 64, 64, 64; verwendet bei Unix und unixoiden Systemen wie Linux, macOS und Solaris. ILP64: 16, 64, 64, 64, 64; Beispiel Cray. SILP64: 64, 64, 64, 64, 64; Beispiel manche Unicos-Systeme.
ILP64 wurde für ältere Quelltexte eingeführt, die fälschlich annahmen, ein int könne einen Zeiger aufnehmen. Es kam auf frühen 64-Bit-Systemen vor, die ohne vorherige Bereinigung vorhandenen Quellcodes schnell auf den Markt kommen sollten.
Vorteile, Grenzen und typische Probleme
Der zentrale Vorteil ist die größere Speicheradressierung. Sie kann die Verarbeitung großer Datenmengen sowie anspruchsvoller Berechnungen unterstützen, etwa bei Datenanalyse, Simulationen, wissenschaftlicher Forschung, Videoverarbeitung, Streaming, Finanzanalyse, Multimedia-Verarbeitung oder Datenbankabfragen. Der größere Adressraum kann außerdem die Adressraumisolierung verbessern. ASLR (Address Space Layout Randomization) gibt es auch bei 32 Bit, ist dort wegen des kleineren Adressraums jedoch deutlich weniger wirksam. Der Artikel nennt zudem bessere Fehlererkennung und -korrektur als Beitrag zu Stabilität und Zuverlässigkeit.
Dem stehen zusätzliche Hardware- und Softwareanforderungen, Kosten, mögliche Inkompatibilität mit älterer Hard- und Software sowie Grenzen bei Anwendungen gegenüber, die die Erweiterung nicht ausnutzen. Speziell angepasste Software und eine passende Ausführungsumgebung sind nötig. Da jede 64-Bit-Speicheradresse doppelt so viel Platz wie eine 32-Bit-Adresse belegt, benötigen auch Zeiger mehr Speicher und Cache-Übertragungen können mehr Zeit beanspruchen. Programme mit geringem Speicherbedarf können auf derselben Hardware daher als 64-Bit-Programm langsamer sein. Manche Systeme nutzten deshalb weiter ein 32-Bit-Userland für Programme, die nicht von mehr als 4 GB Arbeitsspeicher profitieren.
Bei AMD64 wurde gegenüber IA-32 auch die Registerzahl verdoppelt. IA-32-Programme sind auf x86 laut Artikel stets langsamer als für x86-64 übersetzte Programme, weil sie weniger und schmalere Register haben und schnellere SSE-Befehle nicht voraussetzen können. Dennoch wird ein Windows-Programm nicht allein durch die 64-Bit-Variante automatisch schneller; Algorithmen, Hilfsbibliotheken und Speicherverwaltung müssen angepasst werden. 64- und 32-Bit-Code lassen sich grundsätzlich nicht beliebig mischen: Unter einem 64-Bit-Systemkern sind nur 64-Bit-Gerätetreiber nutzbar. Tief integrierte Programme wie Antivirenprogramme und meist auch Plug-ins benötigen dieselbe Bittigkeit wie das Betriebssystem oder die Host-Anwendung; teils helfen Wrapper oder Bridges.