Unter 64-Bit-Architektur versteht man in der EDV eine Prozessorarchitektur, deren Verarbeitungsbreite 64 Bit beträgt. Durch 64 Bit große Adressregister sind solche Prozessoren in der Lage, einzelnen Prozessen größere (nicht segmentierte) Adressräume als 4 GiB zur Verfügung zu stellen.

Einige Prozessoren unterstützen (aus Kompatibilitätsgründen) mehrere Architekturen, beispielsweise PowerPC, wo die Architektur selbst zwar auf 64-Bit basiert („ppc64“), Prozessoren der 1990er und frühen 2000er Jahre jedoch fast immer nur ein 32-Bit-Subset unterstützten („ppc“ oder, meist retronym: „ppc32“), oder auch die x86-Prozessoren der meisten (geschichtlich betrachtet IBM-kompatiblen) PCs. Die x86-Architektur wird maßgeblich von Intel und AMD entwickelt und beinhaltet sowohl eine 16-Bit-Architektur (seit dem Intel 8086, dessen Weiterentwicklungen „80x86“ wie 80186, 80286, 80386 usw. der Architektur den Namen geben), eine 32-Bit-Architektur (seit dem Intel 80386) als auch eine 64-Bit-Architektur (seit dem AMD Opteron). Die 64-Bit-x86-Architektur heißt „x64“ oder „x86-64“ (teils auch „amd64“), beinhaltet jedoch auch die 32-Bit-x86-Architektur „IA-32“ (retronym auch „x86-32“) und sogar die ursprüngliche 16-Bit-x86-Architektur, obwohl diese so gut wie keine Verwendung mehr findet. Als „x86S“ könnten zukünftige x86-Prozessoren jedoch komplett auf die 16- und 32-Bit-Architekturteile verzichten.

Analog dazu werden auch Betriebssysteme und Computerprogramme, die auf eine solche Architektur ausgelegt sind, mit dem Attribut 64-Bit versehen (z. B. „64-Bit-Betriebssystem“ oder „Windows 64-Bit“).

Entwicklung mini|64-Bit-Prozessor AMD Athlon 64

Als IBM Ende der 60er Jahre den IBM System/360 Mainframe-Computer vorstellte, der eine 32-Bit-Architektur benutzte, begann die Entwicklung der 64-Bit-Architektur. Verschiedene 64-Bit-Systeme wurden in den kommenden Jahrzehnten entwickelt, doch erst in den 1990er Jahren begann die 64-Bit-Architektur tatsächlich an Relevanz zuzunehmen. Die Implementierung von 64-Bit-Computing-Prozessoren wie dem DEC Alpha und dem MIPS R4000 war ein bedeutender Fortschritt.John L. Hennessy, David A. Patterson: Computer Architecture: A Quantitative Approach. Morgan Kaufmann, 2011.

Die weitere Entwicklung von 64-Bit-Architekturen wurde durch immer preiswerter herstellbaren Hauptspeicher vorangetrieben. Dies führte Anfang der 1990er Jahre zu 64-Bit-Architekturen im Serverbereich (MIPS 4000, DEC Alpha, SPARC64, HP PA-RISC, IBM Power 3, Intel Itanium bzw. IA-64), Anfang der 2000er Jahre im PC-/Workstation-Bereich (x64) und Anfang der 2010er Jahre selbst im Bereich von Smartphones (ARM64). Einige der älteren Architekturen hatten dabei schon vor der Entwicklung zur vollen 64-Bit-Architektur die Datenpfade immer weiter verbreitert, etwa der Pentium P5 (64-Bit-Datenbus, Befehle 8 bis 120 Bit lang) oder gar der Pentium 4 (hier sogar zwei 64-Bit-Datenbusse, über die im Allgemeinen 512-Bit-Worte transferiert werden).

Frühe Spezial-Architekturen von Supercomputern mit Busbreiten ab 64 Bit:

1961: die IBM 7030 Stretch mit 18-Bit-Adress- und 64-Bit-Datenbus und Unterstützung von Worten variabler Bitbreite 1974: der CDC STAR-100 (Nachfolger der 60-Bit-Rechner der Control Data Corporation), ein Vektorrechner in Harvard-Architektur. Mittels 16-Bit-Adressbus können bis zu 65536 Superworte zu je 512 Bit über einen 512-Bit-Datenbus übertragen werden. Für Befehle gab es einen separaten 128-Bit-Bus. 1976: Cray-1, der erste 64-Bit-Vektorrechner, Vorläufer der Cray Supercomputerlinie: 24-Bit-Adressraum, 16 oder 32 Bit lange Befehle, 16 Datenbusse mit je 64 Bit 1983: Elxsi 6400 sogenannter „Minisupercomputer“ mit 64-Bit-Datenpfaden, 64-Bit-Ganzzahlregistern, aber 32-Bit-Adressraum, Unterstützung von Clustern von bis zu 12 CPUs.

64-Bit-Architekturen für Server in Universalprozessoren:

1991: von MIPS (später SGI) ab dem MIPS R4000 eine 64-Bit-MIPS-Architektur (32- und 64‑Bit) 1992: von DEC die Alpha-Prozessor-Serie 1995: von Sun Microsystems die SPARC-Architektur („UltraSPARC,“ 32 und 64 Bit) 1995: von Hewlett-Packard die PA‑RISC-Serie (32 und 64 BitPA-RISC 2.0 Architecture Specifications, ftp.parisc-linux.org (englisch, PDF-Datei)) 1997: von IBM die Power-Serie (32 und 64 Bit) 1998: von Apple/​IBM/​Motorola (bzw. ab 2005 Freescale und ab 2015 NXP) die PowerPC-Serie (32 und 64 Bit) 2000: von IBM die System‑z-Serie (vormals S/390) 2001: von Intel und Hewlett-Packard die Itanium-Architektur „IA‑64“ 2005: von Fujitsu die SPARC64‑V-Architektur

64-Bit-Architekturen für Server, PCs, Tablets und Smartphones in Universalprozessoren:

2003: von Apple/​IBM/​Motorola (bzw. ab 2005 Freescale und ab 2015 NXP) die PowerPC-Serie (32 und 64 Bit) 2003: von AMD/​Intel x64, eine Befehlssatzerweiterung für die Familie der x86-Prozessoren (16 und 32 Bit, mit x64 erweitert um 64‑Bit) von AMD die AMD64-Erweiterung der IA‑32-Architektur (ab 2003) von Intel die zu AMD64 weitestgehend kompatible Erweiterung Intel 64 (ab 2005) 2013: von ARM Limited die Armv8-A-Architektur

Die Koprozessoren sind in ihrer Entwicklung jeweils durch die Datenpfade des Hauptprozessors beschränkt gewesen. Dabei hatte der Intel 8087 als erster mathematischer Koprozessor (FPU) des 16-Bit-Intel-8086 sogar schon 80-Bit-Register zur Verfügung. Die späteren Grafikprozessoren (GPU) optimierten für 3D-Berechnungen auf eine vierfach gepackte Darstellung der Matrizen, sodass sich diese zu 128-Bit- und 256-Bit-Prozessoren entwickelten. Da sie keine eigenen Applikationen und Betriebssysteme mit dieser Bitbreite haben, handelt es sich nicht um volle Architekturen.

Hardware Die Architektur eines Prozessors sagt nichts darüber aus, wie einzelne Funktionen konkret im Chipdesign implementiert sind. So können einzelne Befehle im Innern weiterhin als 32-Bit-Operationen ausgeführt sein (so wie z. B. Verschiebebefehle in MIPS-R4000-Prozessoren).

Die konkrete Hardware von 64-Bit-Prozessoren ist wesentlich mehr durch das Prozessordesign der Jahre bestimmt, in denen sie eingeführt wurden. Dazu zählen meist Multicore-Systeme meist mehrere 64-Bit-Busse zum Hauptspeicher immer Super-Pipelined-Architektur meist Out-Of-Order-Ausführung, superskalare Ausführung meist Vektorbefehle ab 128 Bit Breite Gleitkommaeinheit, die zum Teil mehrere Dutzend Gleitkomma-Befehle pro Core gleichzeitig ausführen können umfangreiche Cache-Architekturen mit 2 bis 3, teilweise 4 Hierarchien Virtualisierungsmöglichkeiten für Speicher und teilweise I/O-Operationen Der Mehraufwand für die Erweiterung einer 32-Bit-Architektur auf 64 Bit lag bei etwa 10 Prozent. Der 32-Bit-Prozessor Intel Core Duo Processor T2700 kam mit 151 Millionen Transistoren aus, der ansonsten weitgehend identische 64-Bit-Prozessor Intel Core2 Duo Processor E4300 benötigte 167 Millionen. Der Hintergrund ist, dass in den Prozessoren ohnehin schon fast alles 64 Bit oder breiter war und nur die allerletzten Komponenten auf 64 Bit erweitert werden mussten.

Die PowerPC-Architektur wurde von Anfang an als 64-Bit-Architektur entworfen, da sie von der ursprünglich aus dem Bereich der Großrechner stammenden Power-Architektur abgeleitet ist. Auch für die MIPS-Architektur wurde frühzeitig als 64-Bit-Architektur entworfen. In beiden Fällen erfolgte die Realisierung in Hardware allerdings erst einige Jahre später und anfangs wurde ein 32-Bit-Subset verwendet.

Software

Kompatibilität Computerprogramme, die auf eine 64-Bit-Architektur ausgelegt sind, verwenden 64 Bits für die Adressierung des Arbeitsspeichers (bzw. ihres virtuellen Speichers) und sind daher nicht kompatibel zu einer Prozessorarchitektur mit einer niedrigeren Bitzahl (z. B. 32-Bit-Architektur). Nur mit Virtualisierungssoftware ist es unter 32-Bit-Betriebssystemen möglich, ganze 64-Bit-Betriebssysteme (virtualisiert) laufen zu lassen – vorausgesetzt der Prozessor bietet einen 64-Bit-Betriebsmodus.

Für einen sanften Übergang von 32- auf 64-Bit können einige 64-Bit-Prozessoren weiterhin auch 32-Bit-Code ausführen, teilweise (für den Übergang von 16- auf 32-Bit) sogar weiterhin 16-Bit-Code. Wird diese Fähigkeit auch durch ein 64-Bit-Betriebssystem (das prinzipiell zur Ausführung von 64-Bit-Programmen notwendig ist) unterstützt, so ist auch dieser ältere Code unter diesen Betriebssystemen (nativ) ausführbar. Dazu muss der Prozessor einen Modus für 32-Bit-Programme bieten, der innerhalb des 64-Bit-Ausführungsmodus funktioniert, und das Betriebssystem muss eine 32-Bit-Programmierschnittstelle enthalten (API; meist als Wrapper). Beispielsweise bieten x64-Prozessoren einen 32-Bit-x86-Kompatibilitätsmodus innerhalb des 64-Bit-Betriebsmodus. Auch der 64-Bit-PowerPC-Prozessor G5 kann weiterhin nativ 32-Bit-Code ausführen und ist somit zu den früheren 32-Bit-Prozessoren bis zum PowerPC G4 kompatibel. So können weiterhin 32-Bit-Programme ausgeführt werden, was die Nutzung älterer 32-Bit-Programme ermöglicht – weil in einer Übergangszeit jedoch weiterhin viele 32-Bit-Prozessoren verwendet wurden, waren auch einige zu dieser Zeit aktuellen Programme weiterhin in 32-Bit ausgeführt.

Neben der Fähigkeit zur Interpretation des 32-Bit-Befehlssatzes im Prozessor müssen jedoch auch die Betriebssysteme den 32-Bit-Kompatibilitätsmodus für die jeweiligen Prozesse unterstützen. Eine Markierung an der Programmdatei zeigt dem Betriebssystem an, ob sie im erweiterten 64-Bit-Modus oder im kompatiblen 32-Bit-Modus auszuführen ist. Vom Betriebssystem muss dann auch die Programmierschnittstelle (, kurz für ) als 32-Bit-Version zur Verfügung gestellt werden. Bei Windows wird dies durch das WOW64-Subsystem realisiert. Auch 64-Bit-macOS kann bis Version 10.14 Mojave 32-Bit-Programme ausführen. Unter 32-Bit-Windows war es auch noch möglich, 16-Bit-Programme zu nutzen, doch mit dem Schritt auf 64-Bit musste die 16-Bit-Kompatibilität fallen gelassen werden, weil es im 64-Bit-Ausführungsmodus eines x86-Prozessors keine Möglichkeit mehr gibt, 16-Bit-Programme nativ ablaufen zu lassen. Auf Prozessoren, die keine Rückwärtskompatibilität in Hardware anbieten, besteht auch die Möglichkeit, das Ziel der Ausführung von 32-Bit- oder 16-Bit-Programmen über eine hardwareunterstützte Virtualisierung oder über eine vergleichsweise langsame, softwarebasierte Emulation zu realisieren. So ist z. B. in der x64-Version von Windows 7 optional 16-Bit-Kompatibilität in Form von Software-Emulation vorhanden – der „Windows-XP-Modus“ ist ein emuliertes oder virtualisiertes 32-Bit-Windows-XP, mit dessen Hilfe unter 64-Bit-Windows-7 weiterhin 16-Bit-Programme ausgeführt werden können (nebst 32-Bit-Programmen, die nur unter Windows XP richtig funktionierten).

Manchmal wird jedoch nach der Übergangszeit die Unterstützung dafür seitens des Betriebssystems eingestellt, was beispielsweise Apple mit macOS Catalina (Version 10.15) gemacht hat, obwohl die in Macs verwendeten 64-Bit-Intel-Prozessoren zu dieser Zeit weiterhin einen 32-Bit-Kompatibilitätsmodus bieten. Auch bei Windows war ab Windows 8 der „Windows-XP-Modus“ (u. a. für 16-Bit-Programme) nicht mehr vorhanden.

Mit Virtualisierungssoftware oder Emulatoren ist es auf so gut wie jedem Betriebssystem jedoch weiterhin möglich, ganze (ältere) 32-Bit- oder sogar 16-Bit-Betriebssysteme auszuführen. Dadurch besteht immer die Möglichkeit, alte Software auf modernen Systemen zu nutzen, wenn auch eingeschränkt.

Programmiermodell