64 Bit

Aus wiki.archlinux.de
Version vom 5. November 2012, 02:25 Uhr von Dirk (Diskussion | Beiträge) (Dirk Sohler verschob Seite Arch64 FAQ nach 64 Bit: Ich sehe nicht, wo das eine FAQ ist.)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Da im Forum in letzter Zeit wiederholt die Frage auf kam, ob die 32- oder 64-Bit-Version von Arch installiert werden sollte, sind hier alle Hinweise und Erläuterungen festgehalten:

Übersicht

x86_64 (im Folgenden der Bequemlichkeit halber als x64 abgekürzt) ist eine Erweiterung der alten IA32 (x86) von Intel. Die Hauptunterschiede sind:

  • Durchgehend 64 Bit breite Register und 64-Bit-Adressen: Das ist die grundlegende Eigenschaft von 64-Bit-Architekturen und ermöglicht die (einfache) Verwendung von 64-Bit-Variablen und Speicheradressen, was u.A. erlaubt, mehr als 4 GiB RAM zu verwenden.
  • Doppelt so viele allgemeine (general purpose) und Gleitkommazahl-Register: x86 hatte ein wesentliches Problem – sehr, sehr wenige Register, was Programme dazu gezwungen hat, Variablen im Speicher (Stack) zu deponieren. Dadurch wurden sehr viele Speicherzugriffe nötig, die entsprechend langsam sind (und natürlich zusätzlichen Speicher benötigen). x64 minimiert dieses Problem durch die neuen Register.
  • SSE 1 und 2 (verbesserte Gleitkomma-Befehle) sind standardmäßig im Instruktionssatz enthalten. Dadurch werden, auch ohne manuelle Anpassung, diese standardmäßig vom Compiler benutzt und die Programme zusätzlich beschleunigt (man kann dies auch unter x86 erreichen, sofern die CPU es unterstützt, unter Arch ist dafür aber eine manuelle Neukompilierung aller betroffenen Programme notwendig).
  • Relative Zeiger: Relative Zeiger erlauben es, extern eingebundenen Programmcode (beispielsweise Bibliotheken) effizienter zu programmieren, da diese nicht bei jedem Aufruf ihre Zeiger anpassen müssen.

CPUs mit 64-Bit-Unterstützung

Fast alle modernen CPUs (mit der unrühmlichen Ausnahme etlicher Intel-Atom-Modelle) unterstützen x64. Unter Linux kann das mit grep "^flags.*lm" /proc/cpuinfo überprüft werden, zur Not helfen die CPU-Listen in Wikipedia.

Vor- und Nachteile von x64

Die einzigen relevanten Nachteile von x64 sind:

  • Höherer Speicherverbrauch: 64-Bit-Variablen wollen auch irgendwo gespeichert werden. Entsprechend ist der Speicherverbrauch im 64-Bit-Modus höher, unter Umständen sogar mehr als doppelt so hoch[1], typischerweise aber bei 30-70% Mehrverbrauch liegend. Angesichts des eher sparsamen Speicherverbrauchs der meisten Desktopumgebungen ist das bei Systemen mit mehr als 512 MiB RAM zu vernachlässigen.
  • Geringere Kompatibilität mit proprietärer Software: Da neue Technologien in der freien Wirtschaft immer etwas länger brauchen, sind viele Closed-Source-Programme nur als 32-Bit-Version verfügbar. x64 ist zwar abwärtskompatibel, erfordert aber einige Anpassungen (siehe unten).

Die Vorteile sind:

  • Größerer Adressraum: x64 erweitert den theoretischen Adressraum auf 16 EiB, was für die nächsten Jahrzehnte durchaus ausreichend sein dürfte. Es gibt mit PAE auch unter x86 die Möglichkeit, mehr als 4 GiB RAM zu benutzen, allerdings ist dafür ein eigener Kernel nötig, und einzelne Prozesse können weiterhin nur 4 GiB Speicher verwenden.
  • Bessere Performance: Durch die oben erwähnten Features abseits von 64-Bit-Breite erhöht sich die Performance im Schnitt um 5-10%. Bei Datenbank- und Multimedia-Anwendungen, die von den zusätzlichen Registern respektive SSE-Befehlen profitieren, entsprechend mehr.

Proprietäre Anwendungen unter x64

Native Linux-Anwendungen

Etliche proprietäre Programme, darunter fast alle Treiber, sind mittlerweile als 64-Bit-Version entweder direkt oder über das AUR erhältlich. Für den Rest gibt es eine Kompatibilitätsschicht, die die nötigen 32-Bit-Bibliotheken zur Verfügung stellt. Seit August wurde dazu das [multilib]-Repositorium in die Standard-Quellen übernommen:

[multilib]
Include = /etc/pacman.d/mirrorlist

Flash und andere (noch) 32-Bit-Anwendungen sind darüber auch für 64-Bit-Betriebssystemen erhältlich.

Hinweis: Bei Programmen, die Grafikbeschleunigung benötigen, ist zu beachten, dass einige Treiberkomponenten ebenfalls in 32-Bit-Form vorliegen müssen, die in den Paketen lib32-ati-dri, lib32-intel-dri, lib32-nvidia-utils u.Ä. vorliegen.

32-Bit-Programme unter 64 Bit kompilieren

Multilib enthält neben den wichtigsten Bibliotheken auch einen 32-Bit-Compiler (gcc-multilib), mit dem (mit passender march-Einstellung) auch 32-Bit-Programme kompiliert werden können.

Wine

Die 64-Bit-Version von Wine ist standardmäßig so konfiguriert, dass es 64-Bit-Windows-Applikationen ausführt, daher ist es empfehlenswert, vor der ersten Benutzung WINEARCH=win32 winecfg auszuführen, um es wieder auf 32-Bit umzustellen. Ansonsten gelten die gleichen Hinweise wie bei nativen Anwendungen.