¿Cuál es la diferencia entre i686 y x86_64?

Respuestas:

70

i686 es la versión de 32 bits y x86_64 es la versión de 64 bits del sistema operativo.

La versión de 64 bits se escalará mejor con la memoria, particularmente para cargas de trabajo como grandes bases de datos que necesitan usar mucha memoria RAM en el mismo proceso. No considere ejecutar un servidor de base de datos (significativo) en una máquina de 32 bits.

Sin embargo, para la mayoría de las otras cosas, la versión de 32 bits está bien. El código de 32 bits usa menos memoria, por lo que tendrá más para otras cosas. El límite de memoria que puede usar el sistema operativo no es diferente, solo la memoria por proceso.

Por lo tanto, realmente depende de para qué lo quieres usar. Si planea desarrollar software para servidores grandes o ejecutar servidores grandes, use 64 bits. De lo contrario, use 32.

MarkR
fuente
1
Si tiene 4 GB de RAM o menos, no debe instalar sistemas operativos de 64 bits. Si tiene más de 4 GB de RAM, debe instalar un sistema operativo de 64 bits. De lo contrario, no podrá acceder a toda la RAM.
d -_- b
3
@toor no estoy de acuerdo, 1) los sistemas operativos de 32 bits pueden usar más de 4G de RAM con PAE, etc., que ahora son estándar y 2) No todo el espacio de direcciones de un proceso puede asignarse a RAM física (distinta), por lo que Puede ser útil tener un sistema operativo de 64 bits, incluso si tiene (ligeramente) menos de 4G de RAM.
MarkR
3
@toor Ciertamente, si desea ejecutar un solo proceso con 2-3 Gb de páginas anónimas privadas, se hace difícil en un sistema operativo de 32 bits. El agotamiento del espacio de direcciones es un problema grave en un sistema de este tipo, en lugar de quedarse sin memoria (virtual). Sin embargo, cambiar a un kernel de 64 bits y espacio de usuario probablemente hará que la tarea consuma mucho más RAM, quizás excediendo su objetivo. Quizás en algunas situaciones el kernel de 64 bits, el espacio de usuario de 32 bits es bueno.
MarkR
1
Si tiene un procesador de 64 bits, ejecute el sistema operativo de 64 bits. duh, parece sensato
Sam Watkins
2
¡Es extraño que todos no mencionen que los binarios de 64 bits normalmente se compilan con soporte para el ensamblaje de 64 bits! En algunos casos, poder utilizar operaciones de 64 bits puede aumentar SIGNIFICATIVAMENTE la velocidad de una aplicación. Uno notable que viene a la mente es Crypto (OpenSSL, etc.). Si su procesador admite 64 bits, normalmente es mejor usar aplicaciones de 64 bits.
jduncanator
122

Respuesta corta:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
Puntilla
fuente
18
Esta respuesta es muy útil para mí, especialmente cuando ya conozco los 32 bits frente a los 64 bits. La parte que me arrojó fue "i686". Por lo general, esperaría simplemente x86
Antony
44
¿Y por qué x86_64 contiene la parte "86"?
mmdemirbas
3
Buena pregunta sobre por qué "86". Tuve que buscar eso yo mismo. serverfault.com/questions/188177/…
thrag
8
Para generalizar "386", "486", "586", "686" - apodos para la arquitectura - volviendo a chips como "80386", "80486", etc.
Brad
3
@Brad lo hizo bien :) 64 bits (o en este caso _64 bits en x86_64) simplemente se refiere a una extensión del conjunto de instrucciones x86. Sigue siendo el mismo ensamblado (-ish), sin embargo, agrega nuevas instrucciones para trabajar en enteros de 64 bits, etc. Por lo tanto, x86 sigue siendo relevante. Cuando la gente dice x86, la mayoría de las veces realmente significan 32 bits, ya que x86 también es aplicable a máquinas de 64 bits.
jduncanator
31

ix86 es una indicación de la instrucción del procesador establecida por la generación del procesador. Por ejemplo: Intel Pentium, Intel Core2Duo, AMD K6. ix86 ha existido durante muchos años, si tiene un procesador hecho después de 2000, probablemente al menos tenga el conjunto de instrucciones i686. La ausencia de otros indicadores sugiere que esta sería la versión de 32 bits.

x86_64 indica el uso de registros de 64 bits y espacio de direcciones. Solo elija esto si tiene un procesador de 64 bits y desea utilizar la versión de 64 bits del sistema operativo.

La decisión es tuya. Creo que todos los procesadores AMD Turion tienen soporte de 64 bits. Solo necesita decidir si desea la versión de 64 bits o la versión de 32 bits de Arch Linux.

Zusukar
fuente
0

macemoneta explica

Básicamente, las diferentes designaciones del núcleo identifican qué conjunto de instrucciones se le pidió al compilador que optimizara. Una CPU i686 puede ejecutar las instrucciones i586 e i386, por lo que, como observó, un i686 puede ejecutar un kernel i386. Sin embargo, es posible que no se ejecute de manera tan óptima como una compilada específicamente para un i686.

Estas son las designaciones con las que normalmente se encontrará:

Procesadores x86_64

  • Athlon 64, Athlon 64-FX y Opteron de AMD
  • Procesadores Intel EMT64: Nocona Xeon, Pentium 4 que utiliza la revisión E0 del núcleo Prescott (AKA Pentium 4, modelo F)

Procesadores i686 * Todos los Pentium Intel de 32 bits (excepto Pentium 1 y Pentium MMX) * Todos los Athlons AMD de 32 bits

Procesadores i586

  • Todos los AMD K de 32 bits
  • Pentium 1
  • Pentium MMX

Procesadores i386

  • Una designación genérica de "mínimo común denominador" para las CPU compatibles con Intel 80386 (incluye todo lo anterior, pero no aprovecha las instrucciones extendidas en esas CPU posteriores).
Jonathan
fuente