64-Bit-Architektur

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Unter 64-Bit-Architektur versteht man in der EDV eine Prozessorarchitektur, deren Wortbreite 64 Bit beträgt.

Architekturen[Bearbeiten]

64-Bit Prozessor

64-Bit-Architekturen besaßen bereits frühe Vertreter unter den Supercomputern:

Diese modernen Familien von Universalprozessoren sind ebenfalls auf 64 Bit ausgerichtet:

Design[Bearbeiten]

Vereinfacht dargestellt bedeutet 64 Bit, dass die Prozessoren durch ihre ALU-Bauart so ausgelegt sind, dass 64 Bit (also 8 Byte) gleichzeitig bzw. während eines Taktes verarbeitet werden können. Das schließt die externe und interne Gestaltung von Datenbus und Adressbus, die Breite des Registersatzes mit ein. Weiterhin ist der Befehlssatz meistens durchgängig auf 64 Bit ausgelegt, sofern keine abwärtskompatiblen Altlasten (siehe X86-Architektur) vorhanden sind. Dies gilt analog für die gängigen Adressierungs-Arten, wobei die Bitbreite der Recheneinheit (ALU) sich prinzipiell von der der Adresseinheit unterscheiden kann (wie bei den meisten 64-Bit-CPUs).

In der PowerPC-Architektur wurde – im Gegensatz zu x86 – die Erweiterung auf 64 Bit von Anfang an vorgesehen, da diese CPU ursprünglich aus dem Bereich der Großrechner (IBM Power-Architektur) stammt. Auch für die MIPS-Architektur wurde frühzeitig eine 64-Bit-Erweiterung vorgesehen, in beiden Fällen erfolgte die Realisierung als Hardware erst einige Jahre später.

Vorteile[Bearbeiten]

Die Vorteile von 64-Bit-CPUs liegen in der einfacheren Berechnung größerer Integer-Werte (durch die breitere ALU), was zum Beispiel Vorteile bei Verschlüsselungsalgorithmen, grafischen Berechnungen (zum Beispiel Festkommaarithmetik für Computerspiele), 64-Bit-Dateisystemen oder Multimediaformaten (MPEG2, MP3) mit sich bringt.

Ein weiterer Vorteil gegenüber einer 32-Bit-Architektur: Es können mehr als vier Gigabyte Arbeitsspeicher direkt adressiert werden (→ 4-GB-Grenze), wovon Anwendungen mit hohem Speicherbedarf, wie Videoverarbeitung und Datenbanksysteme, profitieren. Mit 64 Bit lassen sich bis zu 16 Exbibyte adressieren, was derzeit (2014) und auf absehbare Zeit ausreichend ist, um nicht nur den verfügbaren Hauptspeicher, sondern auch den Festplattenspeicher (z. B. über mmap) zu adressieren.

Wirklich zum Tragen kommt die 64-bit-Technik erst durch ein intelligentes Management, das gezielt parallel ausführbare Befehle gruppiert, so wie sie z. B. auch von der Befehlssatzarchitektur Very Long Instruction Word gehandhabt wird und die des Weiteren auch dazu führte, dass man hierbei auch gleich auf 128-Bit- oder gar 256-Bit-Prozessoren setzen konnte, wie seinerzeit auch bei den Transmeta-Prozessoren.

Nachteile[Bearbeiten]

Was für datenintensive Programme (beispielsweise bei Datenbank- oder Datei-Servern[4]) ein Vorteil ist, kann besonders bei kleinen Programmen zu Nachteilen hinsichtlich Speicherverbrauch und Geschwindigkeit führen.[5]

Alle Adresswerte sind bei 64-Bit-Architekturen mit 64 Bit doppelt so breit (statt 32 Bit bei den 32-Bit-Architekturen). Ihre Speicherung verbraucht daher im RAM und in den Caches doppelt soviel Platz. Auch andere Datentypen (z. B. long im LP64-Modell) beanspruchen auf 64-Bit-Architekturen doppelt so viel Platz wie auf 32-Bit-Architekturen. Offensichtlich wird dieses in den erzeugten Programmdateien, die im Vergleich zum 32-Bit-Programm typischerweise etwa 25 bis 30 Prozent größer sind[5] und dadurch auch RAM und Cache („Cache miss“) stärker belasten können. Hierdurch wird im ungünstigsten Fall die Ausführungsgeschwindigkeit der Programme um etwa den gleichen Faktor herabgesetzt. Dem wirkt zum Beispiel bei AMD64 (und Intel 64) eine im Vergleich zu IA-32 stark erhöhte Registeranzahl entgegen, sodass auch ungünstige 64-Bit-Programme in der Praxis nicht wesentlich langsamer sind. Auch beherrschen viele 64-Bit-Architekturen eine IP-relative Adressierung mit vorzeichenbehafteten 32-Bit-Offsets, womit eine Zunahme der Befehlslänge verhindert werden kann.

Probleme[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 wie AMD Athlon 64 X2, AMD Phenom X3/X4, Intel Pentium D, Intel Pentium Extreme Edition, Intel Core 2 Duo, Intel Core 2 Quad, Intel Core i7 oder den 64-Bit-PowerPC-CPUs deutlich. Dies betrifft nicht nur die Betriebssysteme mit 64-Bit-Systemkern zur Paging-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 der Workstations wurden 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. Bei Mac OS X ist 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 bei SIMD oder AltiVec-Erweiterungen ist also auch für 64-Bit-Systeme in der Regel speziell angepasste Software nötig.

Jedoch verfügt nicht jedes System mit 64-Bit-Datenpfaden auch über 64-Bit-Adresspfade. Diese können im Extremfall weiterhin 32 Bit bleiben (Speicherausbau max. 4 GB).

Programmiermodell[Bearbeiten]

Unter der Programmiersprache C schlägt sich die Anzahl der Bits sowohl bei der Größe der Zeiger-Typen (z. B. void *) als auch Integer-Typen (insbesondere int und long) nieder. Beim Übergang von einer 32-Bit-Architektur verbreitert man in der Regel Zeiger und long auf 64 bit, während der int auf 32 bit verbleibt. Dieses nennt man dann abgekürzt LP64. Zur Rückwärtskompatibilität mit der 32-Bit-Architektur, die meist als ILP32 ausgeführt wurde, hatte man teils auch long identisch mit int gelassen, was als LLP64 bezeichnet 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 ein int 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.

64-bit Datenmodelle[6]
Datenmodell short (integer) int long (integer) long long pointer Beispiel Betriebssystem
LLP64 16 32 32 64 64 Microsoft Win64 (X64/IA64)
LP64 16 32 64 64 64 Unix-Systeme (zum Beispiel Solaris) und Unixoide Systeme (zum Beispiel Linux und Mac OS X)
ILP64 16 64 64 64 64 Cray, DEC/Alpha mit Tru64 UNIX, DEC/Alpha mit Linux
SILP64 64 64 64 64 64 ?

Für einige Plattformen besteht außerdem die Möglichkeit, Programme von 32-Bit-Vorgängersystemen ohne Überarbeitung direkt auf einer 64-Bit-Plattform kompilieren bzw. ablaufen zu lassen. Die AMD64-Prozessoren (einschließlich Intel 64) etwa bieten hierfür einen 32-Bit-x86-Kompatibilitätsmodus. Um dies zu realisieren, enthalten die Prozessoren zusätzliche Komponenten für die Interpretation des 32-Bit-Befehlssatzes. Moderne Betriebssysteme aktivieren diesen Modus für die jeweiligen Prozesse – eine Markierung an der Programmdatei besagt, ob sie im erweiterten 64-Bit-Modus oder im kompatiblen 32-Bit-Modus auszuführen sind. Wo die Hardware keine Rückwärtskompatibilität anbietet, besteht auch die Möglichkeit, das Ziel der Ausführung von 32-Bit-Programmen über eine vergleichsweise langsame, softwarebasierte Emulation zu realisieren.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. ftp.parisc-linux.org: PA-RISC 2.0 Architecture Specifications, Englisch, PDF-Datei
  2. AMD Releases x86-64 Architectural Specification, AMD spezifiziert seine 64-Bit-Architektur
  3. Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott, The Inquirer Ankündigung der Intel 64 Architektur
  4. Mehr Performance: Linux mit 64-Bit-Programmen. Detaillierter Vergleich von 32-Bit- und 64-Bit-Anwendungsbenchmarks unter Linux.
  5. a b Are 64-bit Binaries Really Slower than 32-bit Binaries?, Englisch, Vergleich von 32-Bit- und 64-Bit-Programmen auf Solaris/SPARC.
  6. http://www.unix.org/version2/whatsnew/lp64_wp.html