I have an AMD Turion and do not know which version to choose from when installing Arch Linux.
4 Answers
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.
-
-
1If 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-_-bOct 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.– MarkROct 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.– MarkROct 6, 2012 at 21:07
-
3Its 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! Aug 11, 2014 at 9:48
Short answer:
i686 = 32-bit Intel x86 arch
x86_64 = 64-bit Intel x86 arch (Also called "AMD64", because AMD actually invented it)
-
22This 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– AntonyMay 29, 2012 at 18:23
-
4
-
3Good question about why "86". Had to look that up my self. serverfault.com/questions/188177/…– thragAug 9, 2012 at 4:09
-
12To generalize "386", "486", "586", "686" - nicknames for the architecture - going back to chips like the "80386", "80486", etc.– BradAug 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. Aug 11, 2014 at 10:09
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.
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).
-
If you compile software targeting i686, will it run on i586 etc? Jan 19, 2022 at 4:58
-
2Not necessarily. You should expect the Invalid Opcode exception to be thrown when attempting to run applications for the i686 on an i586.– RobiduOct 7, 2022 at 16:12