Was ist der Unterschied zwischen i686 und x86_64?

111

Ich habe einen AMD Turion und weiß nicht, aus welcher Version ich bei der Installation von Arch Linux auswählen soll.

Claudiu T.
quelle
1
Mögliches Duplikat des Unterschieds zwischen x86_64 und i386
Sathyajith Bhat

Antworten:

69

i686 ist die 32-Bit-Version und x86_64 ist die 64-Bit-Version des Betriebssystems.

Die 64-Bit-Version lässt sich besser mit dem Arbeitsspeicher skalieren, insbesondere für Workloads wie große Datenbanken, die im selben Prozess viel RAM benötigen. Erwägen Sie nicht, einen (signifikanten) Datenbankserver auf einem 32-Bit-Computer auszuführen.

Für die meisten anderen Dinge ist die 32-Bit-Version jedoch in Ordnung. 32-Bit-Code verbraucht weniger Speicher, sodass Sie mehr für andere Dinge haben. Die Speicherkapazität des Betriebssystems ist nicht unterschiedlich, nur die Speicherkapazität pro Prozess.

Es hängt also wirklich davon ab, wofür Sie es verwenden möchten. Wenn Sie Software für große Server entwickeln oder große Server ausführen möchten, verwenden Sie 64-Bit. Ansonsten verwende 32.

MarkR
quelle
1
Bei 4 GB RAM oder weniger sollten Sie keine 64-Bit-Betriebssysteme installieren. Wenn Sie mehr als 4 GB RAM haben, sollten Sie ein 64-Bit-Betriebssystem installieren. Andernfalls können Sie nicht auf den gesamten Arbeitsspeicher zugreifen.
d -_- b
3
@toor Ich bin anderer Meinung, 1) 32-Bit-Betriebssysteme können mehr als 4 GB RAM mit PAE usw. verwenden, die jetzt Standard sind kann nützlich sein, um ein 64-Bit-Betriebssystem zu haben, selbst wenn Sie (etwas) weniger als 4 GB RAM haben.
MarkR
3
@toor Wenn Sie einen einzelnen Prozess mit 2-3 GB privaten anonymen Seiten ausführen möchten, wird es auf einem 32-Bit-Betriebssystem sicherlich schwierig. Die Verarmung des Adressraums ist auf einem solchen System ein ernstes Problem, anstatt dass der (virtuelle) Speicher knapp wird. Wenn Sie jedoch auf einen 64-Bit-Kernel und einen User-Space wechseln, wird die Aufgabe wahrscheinlich viel mehr RAM verbrauchen und möglicherweise Ihr Ziel überschreiten. In manchen Situationen ist der 64-Bit-Kernel und der 32-Bit-Benutzerraum möglicherweise gut.
MarkR
1
Wenn Sie einen 64-Bit-Prozessor haben, führen Sie das 64-Bit-Betriebssystem aus! duh, scheint vernünftig
Sam Watkins
2
Es ist merkwürdig, dass Sie alle nicht erwähnen, dass 64-Bit-Binärdateien normalerweise mit Unterstützung für 64-Bit-Assembly kompiliert werden! In einigen Fällen kann die Verwendung von 64-Bit-Operationen die Geschwindigkeit einer Anwendung erheblich steigern. Ein bemerkenswerter Gedanke ist Crypto (OpenSSL usw.). Wenn Ihr Prozessor 64-Bit unterstützt, ist es normalerweise am besten, 64-Bit-Anwendungen zu verwenden!
jduncanator
121

Kurze Antwort:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
Brad
quelle
18
Diese Antwort ist für mich am nützlichsten, insbesondere wenn ich bereits weiß, dass es sich um 32-Bit- oder 64-Bit-Dateien handelt. Der Teil, der mich abgeworfen hat, war "i686". Normalerweise würde ich einfach x86 erwarten
Antony
4
Und warum enthält x86_64 "86" -Teil?
mmdemirbas
3
Gute Frage, warum "86". Musste das selbst nachschlagen. serverfault.com/questions/188177/...
ThrAg
8
Um "386", "486", "586", "686" - Spitznamen für die Architektur - zu verallgemeinern, die auf Chips wie "80386", "80486" usw. zurückgehen
Brad
3
@Brad hat es richtig gemacht :) 64-Bit (oder in diesem Fall das _64-Bit in x86_64) bezieht sich einfach auf eine Erweiterung des x86-Befehlssatzes. Es ist immer noch dieselbe Assembly (-ish), fügt jedoch neue Anweisungen zum Arbeiten mit 64-Bit-Ganzzahlen usw. hinzu. Daher ist x86 immer noch relevant. Wenn Leute x86 sagen, meinen sie meistens wirklich 32-Bit, da x86 auch auf 64-Bit-Maschinen anwendbar ist.
jduncanator
31

ix86 ist eine Anzeige des Prozessorbefehls, der durch Generieren des Prozessors festgelegt wird. Zum Beispiel: Intel Pentium, Intel Core2Duo, AMD K6. ix86 gibt es schon seit vielen Jahren. Wenn Sie einen Prozessor haben, der nach 2000 hergestellt wurde, verfügt er wahrscheinlich mindestens über den i686-Befehlssatz. Das Fehlen anderer Indikatoren deutet darauf hin, dass dies die 32-Bit-Version wäre.

x86_64 zeigt die Verwendung von 64-Bit-Registern und Adressraum an. Wählen Sie diese Option nur, wenn Sie über einen 64-Bit-Prozessor verfügen und die 64-Bit-Version des Betriebssystems verwenden möchten.

Es ist deine Entscheidung. Ich glaube, dass alle AMD Turion-Prozessoren 64-Bit-Unterstützung bieten. Sie müssen sich nur entscheiden, ob Sie die 64-Bit-Version oder die 32-Bit-Version von Arch Linux verwenden möchten.

Zusukar
quelle
0

macemoneta erklärt

Grundsätzlich geben die verschiedenen Kernel-Bezeichnungen an, für welchen Befehlssatz der Compiler optimiert werden soll. Auf einer i686-CPU können i586- und i386-Anweisungen ausgeführt werden. Wie Sie gesehen haben, kann auf einer i686 ein i386-Kernel ausgeführt werden. Es kann jedoch sein, dass es nicht so optimal ausgeführt wird, wie es speziell für einen i686 kompiliert wurde.

Dies sind die Bezeichnungen, denen Sie normalerweise begegnen:

x86_64-Prozessoren

  • AMDs Athlon 64, Athlon 64-FX und Opteron
  • Intel EMT64-Prozessoren - Nocona Xeon, Pentium 4 mit E0-Version des Prescott-Kerns (AKA Pentium 4, Modell F)

i686-Prozessoren * Alle Intel 32-Bit-Pentiums (außer Pentium 1 und Pentium MMX) * Alle AMD 32-Bit-Athlons

i586-Prozessoren

  • Alle 32-Bit AMD Ks
  • Pentium 1
  • Pentium MMX

i386-Prozessoren

  • Eine generische Bezeichnung "kleinster gemeinsamer Nenner" für Intel 80386-kompatible CPUs (enthält alle oben genannten, nutzt jedoch nicht die erweiterten Anweisungen für diese späteren CPUs).
Jonathan
quelle