151

I have an AMD Turion and do not know which version to choose from when installing Arch Linux.

1

4 Answers 4

104

i686 is the 32-bit version, and x86_64 is the 64-bit version of the OS.

The 64-bit version will scale with memory better, particularly for workloads like large databases which need to use lots of ram in the same process. Do not consider running a (significant) database server on a 32-bit machine.

However, for most other things the 32-bit version is ok. 32-bit code uses up less memory, so you'll have more for other things. The limit on the memory the OS can use is not different, just the memory per process.

So it really depends what you want to use it for. If you're planning on developing software for large servers, or running large servers, use 64-bit. Otherwise use 32.

6
  • All clear now. So 32bit should do quite well for me.
    – Claudiu T.
    Commented Jan 27, 2011 at 11:25
  • 1
    If 4GB of RAM or less, you should not install 64-bit OSes. If you have more than 4GB of RAM, you should install a 64-bit OS. Otherwise you will not be able to access all the RAM.
    – d-_-b
    Commented Oct 5, 2012 at 3:28
  • 4
    @toor I disagree, 1) 32-bit OSs are able to use more than 4G of ram with PAE etc, which are now standard and 2) Not all of a process's address space may be mapped to (distinct) physical RAM, so it can be useful to have a 64-bit OS even if you have (slightly) less than 4G of ram.
    – MarkR
    Commented Oct 5, 2012 at 15:01
  • 5
    @toor Certainly if you want to run a single process with 2-3 Gb of private anonymous pages, it gets difficult on a 32-bit OS. Address-space depletion is seriously a problem on such a system, rather than running out of (virtual) memory. However, switching to a 64-bit kernel and userspace is likely to cause the task to consume a lot more ram, perhaps exceeding your target. Maybe in some situations 64-bit kernel, 32-bit userspace is good.
    – MarkR
    Commented Oct 6, 2012 at 21:07
  • 3
    Its odd that you all fail to mention that 64-bit binaries are normally compiled with support for 64-bit assembly! In some cases, being able to utilize 64-bit operations can SIGNIFICANTLY increase the speed of an application. A notable one that comes to mind is Crypto (OpenSSL etc.). If your processor supports 64-bit its normally best to use 64-bit applications! Commented Aug 11, 2014 at 9:48
142

Short answer:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch (Also called "AMD64", because AMD actually invented it)
8
  • 23
    This answer is most useful to me, especially when I am already aware the 32bit vs 64bit. The part that threw me off was "i686". Typically, I would expect just simply x86
    – Antony
    Commented May 29, 2012 at 18:23
  • 4
    And why x86_64 contains "86" part?
    – mmdemirbas
    Commented Jun 20, 2012 at 15:21
  • 4
    Good question about why "86". Had to look that up my self. serverfault.com/questions/188177/…
    – thrag
    Commented Aug 9, 2012 at 4:09
  • 13
    To generalize "386", "486", "586", "686" - nicknames for the architecture - going back to chips like the "80386", "80486", etc.
    – Brad
    Commented Aug 9, 2012 at 13:10
  • 4
    @Brad got it right :) 64-bit (or in this case the _64 bit in x86_64) simply refers to an extension of the x86 instruction set. Its still the same assembly(-ish) however it adds new instructions for working on 64-bit integers etc. Hence why the x86 is still relevant. When people say x86, most of the time they really mean 32-bit as x86 is also applicable to 64-bit machines. Commented Aug 11, 2014 at 10:09
34

ix86 is an indication of the processor instruction set by generation of processor. For example: Intel Pentium, Intel Core2Duo, AMD K6. ix86 has been around for many years, if you have a processor made after 2000, it probably at least has the i686 instruction set. The absence of other indicators hints that this would be the 32 bit version.

x86_64 is indicating use of 64 bit registers and address space. Only choose this if you have a 64 bit processor and you want to use the 64 bit version of the operating system.

The choice is yours. I believe all AMD Turion processors have 64 bit support. You just need to decide if you want the 64 bit version or the 32 bit version of Arch Linux.

10

macemoneta explains

Basically, the different kernel designations identify which instruction set the compiler was told to optimize for. An i686 CPU can run i586 and i386 instructions, so, as you observed, an i686 can run an i386 kernel. However, it may not execute as optimally as one specifically compiled for an i686.

These are the designations you will typically run into:

x86_64 Processors

  • AMD's Athlon 64, Athlon 64-FX, and Opteron
  • Intel EMT64 processors - Nocona Xeon, Pentium 4's using the E0 revision of the Prescott core (AKA Pentium 4, model F)

i686 Processors * All Intel 32-bit Pentiums (excluding Pentium 1 and Pentium MMX) * All AMD 32-bit Athlons

i586 Processors

  • All 32-bit AMD Ks
  • Pentium 1
  • Pentium MMX

i386 Processors

  • A generic "lowest common denominator" designation for Intel 80386 compatible CPUs (includes all of the above, but does not take advantage of extended instructions on those later CPUs).
2
  • 1
    If you compile software targeting i686, will it run on i586 etc? Commented Jan 19, 2022 at 4:58
  • 3
    Not necessarily. You should expect the Invalid Opcode exception to be thrown when attempting to run applications for the i686 on an i586.
    – Robidu
    Commented Oct 7, 2022 at 16:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .