Quelle est la différence entre i686 et x86_64?

Réponses:

70

i686 est la version 32 bits et x86_64 est la version 64 bits du système d'exploitation.

La version 64 bits évoluera mieux avec la mémoire, en particulier pour les charges de travail telles que les bases de données volumineuses, qui doivent utiliser beaucoup de RAM dans le même processus. Ne considérez pas l'exécution d'un serveur de base de données (significatif) sur un ordinateur 32 bits.

Cependant, pour la plupart des autres choses, la version 32 bits est ok. Le code 32 bits utilise moins de mémoire, vous en aurez donc plus pour d'autres choses. La limite de mémoire que le système d'exploitation peut utiliser n'est pas différente, mais uniquement la mémoire par processus.

Donc, cela dépend vraiment de ce que vous voulez utiliser. Si vous envisagez de développer des logiciels pour des serveurs de grande taille ou de les exécuter, utilisez 64 bits. Sinon, utilisez 32.

MarkR
la source
1
Si 4 Go de RAM ou moins, vous ne devez pas installer de système d'exploitation 64 bits. Si vous avez plus de 4 Go de RAM, vous devez installer un système d’exploitation 64 bits. Sinon, vous ne pourrez pas accéder à toute la RAM.
d -_ b
3
@toor Je ne suis pas d'accord, 1) Les systèmes d'exploitation 32 bits sont capables d'utiliser plus de 4 Go de RAM avec PAE, etc., qui sont désormais standard et 2) Tous les espaces adresse d'un processus ne peuvent pas être mappés sur de la RAM physique (distincte). Il peut être utile d’avoir un système d’exploitation 64 bits même si vous avez (légèrement) moins de 4 Go de RAM.
MarkR
3
@toor Certainement, si vous souhaitez exécuter un processus unique avec 2 à 3 Go de pages anonymes privées, cela devient difficile sous un système d'exploitation 32 bits. L'épuisement de l'espace d'adressage pose un sérieux problème sur un tel système, plutôt que de manquer de mémoire (virtuelle). Cependant, le passage à un noyau 64 bits et à un espace utilisateur entraînera probablement une consommation de mémoire de travail beaucoup plus importante, dépassant peut-être votre cible. Peut-être que dans certaines situations, un noyau 64 bits, un espace utilisateur 32 bits est bon.
MarkR
1
Si vous avez un processeur 64 bits, lancez le système d'exploitation 64 bits! duh, semble raisonnable
Sam Watkins
2
Il est étrange que vous omettiez tous de mentionner que les fichiers binaires 64 bits sont normalement compilés avec le support de l'assemblage 64 bits! Dans certains cas, le fait de pouvoir utiliser des opérations 64 bits peut considérablement augmenter la vitesse d'une application. On pense notamment à Crypto (OpenSSL, etc.). Si votre processeur prend en charge 64 bits, il est généralement préférable d'utiliser des applications 64 bits!
jduncanator
122

Réponse courte:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
Brad
la source
18
Cette réponse m’est plus utile, surtout quand je connais déjà le 32 bits par rapport au 64 bits. La partie qui m'a jeté était "i686". Typiquement, j'attendrais simplement simplement x86
Antony
4
Et pourquoi x86_64 contient la partie "86"?
mmdemirbas
3
Bonne question sur pourquoi "86". J'ai dû chercher ça moi-même. serverfault.com/questions/188177/...
thrag
8
Pour généraliser "386", "486", "586", "686" - surnoms pour l'architecture - revenir à des puces comme le "80386", "80486", etc.
Brad
3
@Brad l'a bien compris :) 64 bits (ou dans ce cas le bit _64 dans x86_64) fait simplement référence à une extension du jeu d'instructions x86. C'est toujours le même assemblage (-ish) mais il ajoute de nouvelles instructions pour travailler sur des entiers 64 bits, etc. D'où la raison pour laquelle le x86 est toujours pertinent. Quand les gens disent x86, ils veulent souvent dire 32 bits, car x86 est également applicable aux machines 64 bits.
jduncanator
31

ix86 est une indication de l’instruction de processeur définie par la génération du processeur. Par exemple: Intel Pentium, Intel Core2Duo, AMD K6. ix86 existe depuis de nombreuses années, si vous avez un processeur fabriqué après 2000, il a probablement au moins le jeu d'instructions i686. L'absence d'autres indicateurs laisse à penser qu'il s'agirait de la version 32 bits.

x86_64 indique l'utilisation de registres 64 bits et d'un espace d'adressage. Ne choisissez cette option que si vous avez un processeur 64 bits et que vous souhaitez utiliser la version 64 bits du système d'exploitation.

Le choix t'appartient. Je crois que tous les processeurs AMD Turion ont un support 64 bits. Vous devez juste décider si vous voulez la version 64 bits ou la version 32 bits d’Arch Linux.

Zusukar
la source
0

macemoneta explique

Fondamentalement, les différentes désignations de noyau identifient le jeu d'instructions pour lequel le compilateur a été optimisé. Un processeur i686 peut exécuter des instructions i586 et i386. Par conséquent, comme vous l'avez fait remarquer, un i686 peut exécuter un noyau i386. Cependant, son exécution ne sera peut-être pas aussi optimale que celle spécifiquement compilée pour un i686.

Ce sont les désignations que vous rencontrerez généralement:

Processeurs x86_64

  • Athlon 64, Athlon 64-FX et Opteron d'AMD
  • Processeurs Intel EMT64 - Nocona Xeon, Pentium 4 utilisant la révision E0 du noyau Prescott (AKA Pentium 4, modèle F)

Processeurs i686 * Tous les processeurs Intel 32 bits (à l'exception des Pentium 1 et Pentium MMX) * Tous les Athlons AMD 32 bits

Processeurs i586

  • Tous les Kits AMD 32 bits
  • Pentium 1
  • Pentium MMX

Processeurs i386

  • Désignation générique "plus petit dénominateur commun" pour les processeurs compatibles Intel 80386 (inclut tout ce qui précède, mais ne tire pas parti des instructions étendues sur ces processeurs ultérieurs).
Jonathan
la source