64-Bit-Architektur
Unter64-Bit-Architekturversteht man in derEDVeineProzessorarchitektur,derenVerarbeitungsbreite64Bitbeträgt. Durch 64 Bit großeAdressregistersind solcheProzessorenin der Lage, einzelnenProzessengrößere (nicht segmentierte) Adressräume als 4 GiB zur Verfügung zu stellen.
Einige Prozessoren unterstützen (aus Kompatibilitätsgründen) mehrere Architekturen, beispielsweisePowerPC,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, meistretronym:„ppc32 “), oder auch diex86-Prozessorender meisten (geschichtlich betrachtetIBM-kompatiblen)PCs.Diex86-Architekturwird maßgeblich von Intel und AMD entwickelt und beinhaltet sowohl eine 16-Bit-Architektur (seit demIntel 8086,dessen Weiterentwicklungen „80x86 “wie 80186, 80286, 80386 usw. der Architektur den Namen geben), eine 32-Architektur (seit demIntel 80386) als auch eine 64-Architektur (seit demAMD 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 auchBetriebssystemeundComputerprogramme,die auf eine solche Architektur ausgelegt sind, mit dem Attribut64-Bitversehen (z. B. „64-Bit-Betriebssystem “oder „Windows64-Bit “).[1]
Entwicklung
[Bearbeiten|Quelltext bearbeiten]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 zu zunehmen. Die Implementierung von 64-Bit-Computing-Prozessoren wie dem DEC Alpha und dem MIPS R4000 war ein bedeutender Fortschritt.[2]
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 vonSupercomputernmit Busbreiten ab 64 Bit:
- 1961: dieIBM 7030 Stretchmit 18-Bit-Adress- und 64-Bit-Datenbus und Unterstützung von Worten variabler Bitbreite[3]
- 1974: der CDC STAR-100 (Nachfolger der 60-Bit-Rechner derControl Data Corporation), einVektorrechnerin Harvard-Architektur. Mittels 16-Bit-Adressbus können bis zu 65536 Superworte zu je 512 Bit über einem 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 derCraySupercomputerlinie: 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, aber32-Bit-Adressraum, Unterstützung von Clustern von bis zu 12 CPUs.
64-Bit-Architekturen für Server in Universalprozessoren:
- 1991: vonMIPS(späterSGI) ab dem MIPS R4000 eine 64-Bit-MIPS-Architektur(32- und 64‑Bit)
- 1992: vonDECdieAlpha-Prozessor-Serie
- 1995: vonSun MicrosystemsdieSPARC-Architektur(„UltraSPARC, “32- und 64‑Bit)
- 1995: vonHewlett-PackarddiePA‑RISC-Serie (32- und 64‑Bit[4])
- 1997: vonIBMdiePower-Serie (32- und 64‑Bit)
- 1998: vonApple/IBM/Motorola(bzw. ab 2005Freescaleund ab 2015NXP) diePowerPC-Serie (32- und 64‑Bit)
- 2000: von IBM dieSystem‑z-Serie (vormalsS/390)
- 2001: vonIntelundHewlett-PackarddieItanium-Architektur„IA‑64 “
- 2005: vonFujitsudieSPARC64‑V-Architektur
64-Bit-Architekturen für Server, PCs, Tablets und Smartphones in Universalprozessoren:
- 2003: vonApple/IBM/Motorola(bzw. ab 2005Freescaleund ab 2015NXP) diePowerPC-Serie (32- und 64‑Bit)
- 2003: von AMD/Intelx64,eine Befehlssatzerweiterung für die Familie derx86-Prozessoren(16- und 32‑Bit, mit x64 erweitert um 64‑Bit)
- 2013: vonARM LimiteddieArmv8-A-Architektur
Die Koprozessoren sind in ihrer Entwicklung jeweils durch die Datenpfade des Hauptprozessors beschränkt gewesen. Dabei hatte derIntel 8087als erster mathematischer Koprozessor (FPU) des 16-BitIntel 8086sogar schon 80-Bit Register zur Verfügung. Die späterenGrafikprozessoren(GPU) optimierten für 3D-Berechnungen auf eine vierfach gepackte Darstellung derMatrizen,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
[Bearbeiten|Quelltext bearbeiten]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[5]kam mit 151 Millionen Transistoren aus, der ansonsten weitgehend identische 64-Bit-Prozessor Intel Core2 Duo Processor E4300[5]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.
DiePowerPC-Architektur wurde von Anfang an als 64-Bit-Architektur entworfen, da sie von der ursprünglich aus dem Bereich der Großrechner stammendenPower-Architekturabgeleitet 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
[Bearbeiten|Quelltext bearbeiten]Kompatibilität
[Bearbeiten|Quelltext bearbeiten]Computerprogramme,die auf eine 64-Bit-Architektur ausgelegt sind, verwenden 64 Bits für dieAdressierungdesArbeitsspeichers(bzw. ihresvirtuellen Speichers) und sind daher nichtkompatibelzu 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 bietenx64-Prozessoren einen 32-Bit-x86-Kompatibilitätsmodus innerhalb des 64-Bit-Betriebsmodus. Auch der 64-Bit-PowerPC-ProzessorG5kann weiterhin nativ 32-Bit-Code ausführen und ist somit zu den früheren 32-Bit-Prozessoren bis zumPowerPC G4kompatibel. 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-Kompatibilitsmodus für die jeweiligen Prozesse unterstützten. Eine Markierung an der Programmdatei zeigt dem Betriebssystem an, ob sie im erweiterten 64-Bit-Modus oder im kompatiblen 32-Bit-Modus auszuführen sind. Vom Betriebssystem muss dann auch die Programmierschnittstelle (API,kurz fürenglischApplication Programming Interface) als 32-Bit-Version zur Verfügung gestellt werden. BeiWindowswird dies durch dasWOW64-Subsystem realisiert.[6]Auch 64-Bit-macOSkann bis Version 10.14Mojave32-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 anbietet, besteht auch die Möglichkeit, das Ziel der Ausführung von 32-Bit- oder 16-Bit-Programmen über eine Hardware-unterstützte Virtualisierung oder über eine vergleichsweise langsame, softwarebasierteEmulationzu realisieren. So ist z. B. der x64-Version vonWindows 7optional 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 mitmacOSCatalina(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 abWindows 8der „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
[Bearbeiten|Quelltext bearbeiten]Unter der ProgrammierspracheCschlägt sich die Ausrichtung auf eine 64-Bit-Architektur sowohl bei der Größe derZeiger-Typen (z. B.void*
) als auch derInteger-Typen (insbesondereint
undlong
) nieder. Beim Übergang von einer 32-Bit-Architektur verbreitert man in der Regel Zeiger und den Datentyplong
auf 64 Bit, wogegen der Datentypint
bei 32 Bit verbleibt. Dieses nennt man dann abgekürztLP64.Zur Rückwärtskompatibilität mit der 32-Bit-Architektur, die meist als ILP32 ausgeführt wurde, hatte man teils auchlong
identisch mitint
gelassen, was alsLLP64bezeichnet wird. Alle heutigen unixartigen 64-Bit-Betriebssysteme drücken die 64-Bit-Architektur in einem LP64-Typenmodell aus, Windows verwendet das LLP64-Modell.
Das ILP64-Datenmodell wurde eingeführt, da Quellcode von alter Software häufig unter der unzulässigen Annahme entwickelt wurde, dass einint
einen Zeiger halten kann. Es wird auf frühen 64-Bit-Systemen vorgefunden, die schnell auf den Markt wollten, ohne vorher vorhandenen Quellcode bereinigen zu müssen.
Daten- modell |
short (integer) |
int |
long (integer) |
long long |
pointer |
Beispiel Betriebssystem/Compiler[8] |
---|---|---|---|---|---|---|
LLP64 | 16 | 32 | 32 | 64 | 64 | MicrosoftWin64(x64/IA64) |
LP64 | 16 | 32 | 64 | 64 | 64 | UnixundUnixoide Systeme,z. B.Linux,macOS,Solaris |
ILP64 | 16 | 64 | 64 | 64 | 64 | Cray |
SILP64 | 64 | 64 | 64 | 64 | 64 | MancheUnicos-Systeme[9] |
Vorteile
[Bearbeiten|Quelltext bearbeiten]Im Vergleich zu ihren Vorgängern bringt die 64-Bit-Architektur zahlreiche Vorteile mit sich, vor allem in Bezug auf Leistung, Datensupport, Sicherheit und Zukunftssicherheit.
Die verschiedenen Vorteile der 64-Bit-Architektur und ihre Auswirkungen auf die moderne Computertechnologie:
A. Steigerung der Speicherkapazität
Durch die erweiterte Wortbreite von 64 Bit kann die Rechenleistung deutlich gesteigert und die Speicheradressierung verbessert werden. Darüber hinaus kann die 64-Bit-Architektur die Verarbeitungsgeschwindigkeit von Anwendungen steigern, vor allem bei anspruchsvollen Tätigkeiten wie der Multimedia-Verarbeitung und der Abfrage von Datenbanken.[10]
B. Unterstützung großer Datenmengen
Die 64-Bit-Architektur unterstützt umfangreiche Datenmengen und anspruchsvolle Berechnungen besser, was insbesondere in Feldern wie Datenanalyse, Simulationen und wissenschaftlicher Forschung von Nutzen ist.
1.Die 64-Bit-Architektur verfügt über eine gesteigerte Speicheradressierungsfähigkeit, wodurch eine reibungslose Verarbeitung umfangreicher Datenmengen in Echtzeit möglich ist. Dies spielt in Bereichen wie der Videoverarbeitung, dem Streaming und der Finanzanalyse eine besondere Rolle.[11]
2. Komplexe Berechnungen und Simulationen sind auf 64-Bit-Systemen aufgrund der größeren Datenpfadbreite und der gesteigerten Rechenleistung effizienter durchzuführen. Es wurde deutlich, dass dies in verschiedenen wissenschaftlichen und technischen Bereichen zu genaueren Resultaten und einer erhöhten Innovationsrate führt.[12]
C. Sicherheit
Im Gegensatz zu 32-Bit-Systemen verfügt die 64-Bit-Architektur auch über verbesserte Sicherheitsfunktionen sowie eine bessere Fehlererkennung und Fehlerbehebung.
1. Erweiterte Adressraumisolierung: Durch den Einsatz von 64-Bit-Adressen wird eine widerstandsfähigere Adressraumisolierung möglich, was zu einer Verringerung der Speicherfehler- und Sicherheitsverletzungsmöglichkeiten führt. Dies leistet einen Beitrag zu einer generell sichereren Systemumgebung.[13]
2. Die verbesserten Fehlererkennungs- und Fehlerkorrekturfunktionen von 64-Bit-Systemen helfen dabei, die Stabilität und Verlässlichkeit des Systems zu steigern. Dadurch können mögliche Sicherheitslücken und Systemausfälle frühzeitig identifiziert und behoben werden.[14]
Nachteile
[Bearbeiten|Quelltext bearbeiten]1. Komplexität und Kosten
Da 64-Bit-Systeme eine spezielle Hardware und Software benötigen, um die Vorteile der erweiterten Architektur voll auszuschöpfen, führt ihre Einführung zu zusätzlicher Komplexität und zusätzlichen Kosten.[15]
2. Kompatibilitätsprobleme mit älterer Hardware und Software
Kompatibilitätsprobleme mit älterer Hardware und Software, die möglicherweise nicht mit den neuen Architekturen kompatibel sind, können durch die Implementierung und Verwendung von 64-Bit-Systemen entstehen.[16]
3.Einschränkungen bei der Leistungsoptimierung
Trotz der Tatsache, dass die 64-Bit-Architektur eine gesteigerte Rechenleistung bereitstellt, können bei der Leistungsoptimierung gewisse Beschränkungen auftreten, vor allem bei Anwendungen, die die Vorteile der erweiterten Architektur nicht voll ausschöpfen können.[17]
Probleme
[Bearbeiten|Quelltext bearbeiten]Ohne speziell angepasste Ausführungsumgebung kann allerdings kein Vorteil durch den Wechsel von 32-Bit- auf 64-Bit-CPUs gezogen werden. Dies wird insbesondere bei abwärtskompatiblen CPUs wieAMD Athlon 64 X2,AMD PhenomX3/X4,Intel Pentium D,Intel Pentium Extreme Edition,Intel Core 2 Duo,Intel Core 2 Quad,Intel Core i7oder den 64-Bit-PowerPC-CPUs deutlich. Dies betrifft nicht nur die Betriebssysteme mit 64-Bit-Systemkern zurPaging-Verwaltung mit großen Adressen, sondern auch die Hilfsbibliotheken der Programme mit den darin eingesetzten Algorithmen: Viele alte Systeme verwenden 32-Bit-optimierte Algorithmen, die erst nach Anpassung durch Programmierer von der 64-Bit-Erweiterung profitieren.
Die Notwendigkeit der Anpassung betrifft im Anwendungsbereich besonders mathematische Hilfsfunktionen (auch Multimedia und Spiele), aber auch die Speicherverwaltung. Viele Programme aus dem Unix-Bereich haben hierbei einen Vorsprung, da dort 64-Bit-Architekturen schon lange üblich sind. Über die Entwicklung derWorkstationswurden im Unixbereich (einschließlich Linux) auch Desktopprogramme schon langjährig auf 64 Bit angepasst, bevor die Windowsprogramme auf die 64-Bit-Editionen von Windows angepasst wurden. BeimacOSist die Entwicklung gemischt, da der Unix-basierte Kern und die Desktopoberfläche aus verschiedenen Entwicklungszweigen stammen. Gerade letztere Systeme machen dabei Gebrauch von der Möglichkeit der abwärtskompatiblen CPUs, auf einem 64-Bit-Betriebssystemkern sowohl 32- als auch 64-Bit-Programme parallel auszuführen – diese haben jedoch das Problem, dass die Wechselwirkung der Programme auf dem Desktop gehemmt sein kann (bekannt etwa für Browser-Plugins).
Ähnlich wie beiSIMDoderAltiVec-Erweiterungen ist also auch für 64-Bit-Systeme in der Regel speziell angepasste Software nötig.
Weblinks
[Bearbeiten|Quelltext bearbeiten]- Andrew Josey:Data Size Neutrality and 64-bit Support.USENIX,4. Dezember 1997 (englisch; 32-/64-Bit-Programmierersicht).
- M. Jungowski:WoW64 Microsofts Starthilfe für 64-Bit Windows.Online-Magazin Planet 3DNow!, 14. Juli 2004 (32-/64-Bit-Mischbetrieb).
Einzelnachweise
[Bearbeiten|Quelltext bearbeiten]- ↑Harry Phillips:New Perspectives on Microsoft Windows Vista for Power Users.Cengage Learning, 2008,ISBN 978-1-4239-0603-2,S.16(eingeschränkte Vorschauin der Google-Buchsuche).
- ↑Hennessy, John L., and Patterson, David A. "Computer Architecture: A Quantitative Approach." Morgan Kaufmann, 2011.
- ↑Index of /pdf/ibm/7030.Abgerufen am 4. April 2024.
- ↑PA-RISC 2.0 Architecture Specifications,ftp.parisc-linux.org (englisch, PDF-Datei)
- ↑abProduct Specifications.Abgerufen am 5. November 2021(englisch).
- ↑Jorge Orchilles:Microsoft Windows 7 Administrator’s Reference: Upgrading, Deploying, Managing, and Securing Windows 7.Syngress, 2010,ISBN 978-1-59749-562-2,S.9(eingeschränkte Vorschauin der Google-Buchsuche).
- ↑64-Bit Programming Models: Why LP64?The Open Group,1998,abgerufen am 1. Januar 2016(englisch).
- ↑Das Datenmodell ist eine Eigenschaft des Compilers unter dem entsprechenden Target-Betriebssystems, nicht des Betriebssystems allein.
- ↑Cray C/C++ Reference Manual.(PDF; 1,9 MB) In:audentia-gestion.fr.Cray Inc,S. 131,abgerufen am 5. September 2023(englisch).
- ↑Smith, J. E., & Wang, C. (2002). Architectural innovations in 64-bit processors. IEEE Micro, 22(2), 22-29.
- ↑Hennessy, J. L., & Patterson, D. A. (2018). Computer architecture: A quantitative approach (6th ed.). Morgan Kaufmann.
- ↑Smith, J. E., & Ravi, S. S. (2019). The impact of 64-bit computing on scientific research. Communications of the ACM, 62(1), 68-75.
- ↑Stallings, W. (2016). Computer organization and architecture: Designing for performance (10th ed.). Pearson.
- ↑Tanenbaum, A. S., & van Steen, M. (2018). Distributed systems: Principles and paradigms (3rd ed.). Pearson.
- ↑Flynn, M. J., & Harris, D. (2019). Computer architecture: Pipelined and parallel processor design. Jones & Bartlett Learning.
- ↑Tanenbaum, A. S., & Austin, T. (2019). Structured computer organization (7th ed.). Pearson.
- ↑Patterson, D. A., & Hennessy, J. L. (2018). Computer organization and design: The hardware/software interface (5th ed.). Morgan Kaufmann.