i686 和 x86_64 有什么区别?

Cla*_* T. 125 architecture

我有一个 AMD Turion,在安装 Arch Linux 时不知道该选择哪个版本。

Bra*_*rad 132

简短的回答:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
Run Code Online (Sandbox Code Playgroud)

  • 这个答案对我最有用,尤其是当我已经知道 32 位和 64 位时。让我失望的部分是“i686”。通常,我只希望 x86 (20认同)
  • 概括“386”、“486”、“586”、“686”——架构的昵称——可以追溯到“80386”、“80486”等芯片。 (9认同)
  • 为什么 x86_64 包含“86”部分? (4认同)
  • 关于为什么“86”的好问题。不得不自己查一下。http://serverfault.com/questions/188177/why-does-x86-represent-32bit-when-x64-represents-64bit (3认同)
  • @Brad 说得对 :) 64 位(或在这种情况下 x86_64 中的 _64 位)仅指 x86 指令集的扩展。它仍然是相同的程序集(-ish),但是它添加了处理 64 位整数等的新指令。因此为什么 x86 仍然相关。当人们说 x86 时,大多数时候他们的意思是 32 位,因为 x86 也适用于 64 位机器。 (3认同)

Mar*_*rkR 81

i686 是 32 位版本,x86_64 是操作系统的 64 位版本。

64 位版本将更好地扩展内存,特别是对于需要在同一进程中使用大量内存的大型数据库等工作负载。不要考虑在 32 位机器上运行(重要的)数据库服务器。

但是,对于大多数其他事情,32 位版本是可以的。32 位代码占用的内存更少,因此您将有更多的空间用于其他事情。操作系统可以使用的内存限制没有什么不同,只是每个进程的内存。

所以这真的取决于你想用它做什么。如果您计划为大型服务器开发软件或运行大型服务器,请使用 64 位。否则使用 32。

  • @toor 当然,如果您想使用 2-3 Gb 的私有匿名页面运行单个进程,则在 32 位操作系统上会变得很困难。地址空间耗尽在这样的系统上是一个严重的问题,而不是耗尽(虚拟)内存。但是,切换到 64 位内核和用户空间可能会导致任务消耗更多内存,甚至可能超出您的目标。也许在某些情况下 64 位内核,32 位用户空间是好的。 (5认同)
  • @toor 我不同意,1) 32 位操作系统能够使用超过 4G 的带有 PAE 等的 ram,现在是标准的 2) 并非所有进程的地址空间都可以映射到(不同的)物理 RAM,所以它即使您的内存(略)少于 4G,对于 64 位操作系统也很有用。 (4认同)
  • 奇怪的是你们都没有提到 64 位二进制文​​件通常是在支持 64 位程序集的情况下编译的!在某些情况下,能够利用 64 位操作可以显着提高应用程序的速度。想到的一个值得注意的是加密(OpenSSL 等)。如果您的处理器支持 64 位,通常最好使用 64 位应用程序! (3认同)

小智 31

ix86 是处理器指令集的代号指示符。例如:Intel Pentium、Intel Core2Duo、AMD K6。ix86 已经存在很多年了,如果你有一个 2000 年以后制造的处理器,它可能至少有 i686 指令集。其他指标的缺失暗示这将是 32 位版本。

x86_64 表示使用 64 位寄存器和地址空间。仅当您拥有 64 位处理器并且想要使用 64 位版本的操作系统时才选择此选项。

这是你的选择。我相信所有 AMD Turion 处理器都支持 64 位。你只需要决定你想要 Arch Linux 的 64 位版本还是 32 位版本。


Jon*_*han 10

马塞莫内塔解释说

基本上,不同的内核名称标识了编译器被告知要优化的指令集。i686 CPU 可以运行 i586 和 i386 指令,因此,正如您所观察到的,i686 可以运行 i386 内核。然而,它的执行效果可能不如专为 i686 编译的版本。

这些是您通常会遇到的名称:

x86_64 处理器

  • AMD 的 Athlon 64、Athlon 64-FX 和 Opteron
  • Intel EMT64 处理器 - Nocona Xeon、使用 Prescott 核心​​ E0 版本的 Pentium 4(又名 Pentium 4,型号 F)

i686 处理器 * 所有 Intel 32 位 Pentium(不包括 Pentium 1 和 Pentium MMX) * 所有 AMD 32 位 Athlon

i586 处理器

  • 所有 32 位 AMD K
  • 奔腾1
  • 奔腾MMX

i386 处理器

  • Intel 80386 兼容 CPU 的通用“最低公分母”名称(包括以上所有内容,但不利用这些后续 CPU 上的扩展指令)。

  • 不必要。当尝试在 i586 上运行 i686 的应用程序时,您应该预料到会抛出 Invalid Opcode 异常。 (2认同)