Operating Systems‎ > ‎Choosing a Linux distro‎ > ‎

Architectures and performance

If you’ve never bothered to look at the hardware you're computer is made from, now might be a good time to do so. Ever since Windows XP, Microsoft offered users a 32-bit and a 64-bit version, but it wasn't until Windows 7 64-bit was getting more common. What is the difference anyway and why should you even care?

When you decide to download a Linux distro you’ll notice there are often many different versions to choose from. 32bit, i386, i686, x68_64, amd64...
If you are not the total computer nerd i won’t blame you for getting confused about this. What you need to know is these are the different architectures for all the various processors that exist in computers. The CPU is responsible for executing all the code and input you give to your computer, just as an engine in a car makes a car move.


Naturally the newer your processor the more it is capable of, thus it is important to figure out which one you are using. If you are using Windows XP or newer you can check this by right clicking your mouse on ‘Computer’ and click ‘Properties’.


Now look your processor up on cpu-world.com and check the architecture section.


At data width we can see we have a 64 bit processor and in the feature list we have AMD64, in other words this is a 64 bit processor.
A very simple rule is that all computers running Windows are using the x86 instruction set, the big difference are the amount of bits it can handle and the features (extra instruction sets) it supports.

If you are already running Linux just run 'lscpu' from a terminal window:


As you can see this processor is 64 bit but also 32 bits capable, i will explain this in the 64 bit section. For now we have established how to find out what your processor can do and it is now time to have a look at the Linux part of it.

32bit: i386, i486, i586, i686

As you can see there are also different versions within the 32bit branch, these versions represent ten years of development on the x86 instruction set. In case you are wondering, the first letter stands for Intel and the first number for the version of the x86 architecture thus giving i(version)86. The i686 architecture is available since the Intel Pentium II, so unless you got your computer from a museum you will at least be capable of running i686.

64bit: x86_64, amd64, intel64

Usually offered as 64-bit, x86_64 or AMD64 and occasionally intel64, nonetheless they are all the same. AMD designed the 64 bit architecture and called it AMD64, of course Intel didn't want to smear the letters AMD all over their own products so they just bought a license from AMD and renamed the technology Intel64.

An important note to make here is that all processors are backwards compatible but not the other way around. So a 64 bit processor can execute 386 code but a 386 processor can't execute anything more than 386 (properly).
Also x86 is a standardized instruction set, thus a processor by AMD will execute code just as well as an Intel processor.

Architecture in relation to software

Before we can get into all the technical stuff, lets start with the 'simple' matter of software and how it is able to run on your computer. I have used the term compiling a few times before, which refers to a means of converting code from one language to another, does that sound confusing?
Let me explain. A computer does not understand anything other than large series of binary bits (in 1's or 0's), so a piece of 8 bit code could be 11101011. This string is meaningless to humans but to a computer this is data or perhaps an instruction.

Naturally even the most hardcore programmer will have a hard time programming software directly in this machine language. This is exactly the reason compilers were made, they convert a language which is more readable or logical for humans to machine code. Nothing of course is for free and since such conversions can never be 100% efficient, it will degrade performance a little, however programmers also make less mistakes this way and thus in the end it is still a benefit performance wise.


A compiler is also a very clever idea when it comes to optimizing code, it is able to include optimizations for new models of processors when available. This means the programmer won't have to rewrite the entire software each time a new processor is available!
The code programmers write is called source code and whatever the compiler produces executable machine code (in binary format of 1's and 0's).

Every Linux distribution offers precompiled (binary) software that you can install and run from a DVD or USB drive. But due to the many types of processors that exist different versions are needed to make sure the user can actually run the software on his machine. This means that software was compiled multiple times from the source to the various types of processors.

If your computer is 64 bit capable you should download the appropriate install image, but if there is none available you can of course still use the 32 bit version since processors are backwards compatible.
Keep in mind however that not all distro’s optimize their precompiled code to include all the latest instructions available. For example a Pentium 4 processor has many extra instructions available compared to a Pentium II, but optimizing code for the Pentium 4 would mean older processors are unable to execute the code properly and so yet another version of the distro would be needed to keep all users up and running.
Instead many distro's decided to optimize code in the 32 bit branch up to the i686 architecture since that was well supported and include the newer instructions in the 64 bit branch since these processors included those instructions anyway.

Gentoo solved this problem by creating a package manager that builds all software directly from the source code, thus including all the optimizations available to your processor.
The Gentoo idea is very appealing, but it is also impractical. Every time an update is available your computer needs to compile the entire program again before it can be installed.
In 2002 updates were not as frequent as today, now there are so many software updates it becomes impossible to maintain your system. Not only will you use a lot of energy compiling software, but also resources and time.