Qual é a diferença entre i686 e x86_64?


Respostas:


70

O i686 é a versão de 32 bits e x86_64 é a versão de 64 bits do sistema operacional.

A versão de 64 bits será melhor dimensionada com a memória, principalmente para cargas de trabalho como bancos de dados grandes, que precisam usar muita memória RAM no mesmo processo. Não considere executar um servidor de banco de dados (significativo) em uma máquina de 32 bits.

No entanto, para a maioria das outras coisas, a versão de 32 bits está ok. O código de 32 bits consome menos memória; portanto, você terá mais para outras coisas. O limite da memória que o sistema operacional pode usar não é diferente, apenas a memória por processo.

Então, realmente depende para o que você deseja usá-lo. Se você planeja desenvolver software para servidores grandes ou executar servidores grandes, use 64 bits. Caso contrário, use 32.


1
Se 4 GB de RAM ou menos, você não deve instalar sistemas operacionais de 64 bits. Se você tiver mais de 4 GB de RAM, instale um sistema operacional de 64 bits. Caso contrário, você não poderá acessar toda a RAM.
d -_- b

3
@ toor Eu discordo, 1) os SOs de 32 bits são capazes de usar mais de 4G de memória ram com o PAE etc., que agora são padrão e 2) Nem todo o espaço de endereço de um processo pode ser mapeado para RAM física (distinta), por isso pode ser útil ter um sistema operacional de 64 bits, mesmo se você tiver (ligeiramente) menos que 4G de RAM.
Mark12

3
@toor Certamente, se você deseja executar um único processo com 2-3 Gb de páginas anônimas privadas, fica difícil em um sistema operacional de 32 bits. O esgotamento do espaço de endereço é seriamente um problema nesse sistema, em vez de ficar sem memória (virtual). No entanto, a mudança para um kernel de 64 bits e o espaço do usuário provavelmente fará com que a tarefa consuma muito mais memória RAM, talvez excedendo seu objetivo. Talvez em algumas situações o kernel de 64 bits, o espaço do usuário de 32 bits seja bom.
Mark12

1
se você tiver um processador de 64 bits, execute o SO de 64 bits! duh, parece sensato
Sam Watkins

2
É estranho que todos falhem em mencionar que os binários de 64 bits normalmente são compilados com suporte para montagem de 64 bits! Em alguns casos, poder utilizar operações de 64 bits pode aumentar significativamente a velocidade de um aplicativo. Um notável que vem à mente é o Crypto (OpenSSL etc.). Se o seu processador suportar 64 bits, normalmente é melhor usar aplicativos de 64 bits!
Jduncanator

122

Resposta curta:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch

18
Esta resposta é mais útil para mim, especialmente quando eu já estou ciente do 32bit vs 64bit. A parte que me impressionou foi "i686". Normalmente, eu esperaria simplesmente x86
Antony

4
E por que x86_64 contém a parte "86"?
Mmdemirbas

3
Boa pergunta sobre o porquê "86". Tinha que procurar por mim mesmo. serverfault.com/questions/188177/…
thrag 9/08/2012

8
Para generalizar "386", "486", "586", "686" - apelidos para a arquitetura - que datam de chips como a "80386", "80486", etc.
Brad

3
@Brad acertou :) 64 bits (ou, neste caso, o _64 bit em x86_64) simplesmente se refere a uma extensão do conjunto de instruções x86. Ainda é o mesmo assembly (-ish), no entanto, adiciona novas instruções para trabalhar com números inteiros de 64 bits, etc. Por isso, o x86 ainda é relevante. Quando as pessoas dizem x86, na maioria das vezes elas realmente querem dizer 32 bits, pois x86 também é aplicável a máquinas de 64 bits.
Jduncanator

31

ix86 é uma indicação das instruções do processador definidas pela geração do processador. Por exemplo: Intel Pentium, Intel Core2Duo, AMD K6. O ix86 existe há muitos anos, se você tiver um processador fabricado após 2000, provavelmente ele terá pelo menos o conjunto de instruções do i686. A ausência de outros indicadores sugere que essa seria a versão de 32 bits.

x86_64 está indicando o uso de registradores de 64 bits e espaço de endereço. Escolha apenas se você possui um processador de 64 bits e deseja usar a versão de 64 bits do sistema operacional.

A escolha é sua. Acredito que todos os processadores AMD Turion têm suporte a 64 bits. Você só precisa decidir se deseja a versão de 64 bits ou a versão de 32 bits do Arch Linux.


0

macemoneta explica

Basicamente, as diferentes designações do kernel identificam para qual conjunto de instruções o compilador foi instruído a otimizar. Uma CPU i686 pode executar as instruções i586 e i386; portanto, como você observou, um i686 pode executar um kernel i386. No entanto, ele pode não ser executado da melhor maneira possível, como o compilado especificamente para um i686.

Estas são as designações que você normalmente encontrará:

Processadores x86_64

  • Athlon 64 da AMD, Athlon 64-FX e Opteron
  • Processadores Intel EMT64 - Nocona Xeon, Pentium 4, usando a revisão E0 do núcleo Prescott (AKA Pentium 4, modelo F)

Processadores i686 * Todos os Pentiums Intel de 32 bits (exceto Pentium 1 e Pentium MMX) * Todos os Athlons AMD de 32 bits

Processadores i586

  • Todos os AMD Ks de 32 bits
  • Pentium 1
  • Pentium MMX

Processadores i386

  • Uma designação genérica de "menor denominador comum" para CPUs compatíveis com Intel 80386 (inclui tudo isso acima, mas não tira proveito das instruções estendidas nessas CPUs posteriores).
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.