
At the Friday seminar of the MIPT-Intel laboratory's educational project, one of the students asked me something like this: why is the 64-bit version of the Intel processor architecture called x64, and the 32-bit version of x86? I began to explain that not everything is so simple. I wanted to draw a more complete picture. After all, in fact it is not x64, and not even x86.
386th, Pentiums and Crust
In fact, there are several names for this phenomenon, which has been present on the stage of processor technology for about forty years. Even more than we would like. They originated from different sources and are used in different contexts, by different companies and different communities. Of course, this brings some confusion.
I tried here to collect all the names known to me. I do not want to try to prove that one group of names is better than another - they will not use them less.
8086 and family
In 1978, a 16-bit Intel processor was released, which had a “name” 8086. It was followed by 8088, 80186, 80286, 80386 (plus variations), 80486 (plus variations). It is easy to see that (almost) all these numeric names end in two numbers 86, which gave the name of the entire
x86 series. It strengthened, it continued to be used after the processors stopped giving digital names, and Intel Pentium, Celeron, Xeon, Core, Atom, etc. appeared. Compatible products from other vendors such as IBM, AMD, Cyrix, VIA, etc., are also described as x86.
According to my observations, x86 is the most popular option for the name of this architecture on the Internet, articles and other literature, especially when it’s not worth the task to specify the exact digit of the architecture or we are talking about an explicit 32-bit version.
Variations of this name are also used for 32-bit variants, which make it possible to more precisely indicate the minimum set of supported instructions:
i386 ,
i486 ,
i586 ,
i686 , for example, to distinguish between variants of binary distribution packages of Linux distributions.
')
Coming 64 bit
Through its efforts, Intel expanded the computer word in a series of processors described earlier from 16 to 32 bits. AMD achieved this 64-bit architecture, introducing a processor in 2003 that supports new instructions and registers and implements
AMD64 .
In order to explicitly indicate the increased bitness of the processor / code / package, the name x86 began to receive a new suffix "64". That's just through what sign it is not agreed to attribute it, and sometimes you see
x86_64 , and sometimes
x86-64 . For example, the output of the
uname
command in Linux uses an underscore. Finally, packages can also see the
amd64 suffix in lower case letters.
Intel also designated this expansion of the architecture first
IA-32e , then
EM64T . Currently, you can find both options in different package names, documentation, and so on. However, there is a third name Intel introduced ...
What Intel calls it
In the
official documentation, the 32-bit architecture is named
IA-32 ; its 64-bit version got the rather strange from my point of view name
Intel 64 . Why is strange - it creates the potential for confusion, as we will see closer to the end of the article.
Software Providers
If it seemed to someone that this unfortunate architecture somehow had few names and suffixes, now I will mark one more thing known to me. It comes from software vendors, who somehow need to distinguish between the variants of the supplied packages for 32 and 64 bits. Here their opinions were divided approximately in this way (for more details see
Wikipedia ).
- Linux distributives: x86 and x86_64, sometimes x86 and amd64.
- Apple: x86 and x86_64.
- Microsoft and Oracle: x86 and x64 .
So, another name is x64.
Together
I will summarize the designations of the Intel architecture variants mentioned in my note.
- For the 32-bit version: IA-32, x86, i386, i486, i586, i686.
- For the 64-bit version: Intel 64, AMD64, amd64, EM64T, IA-32e, x86_64, x86-64, x64.
A total of fourteen. If we discard the i386 - i686 as insignificant variations, then ten.
False names
As you know, for its forty-year history, Intel has released (and is now releasing) not only IA-32 processors. There have been and still are products of other architectures. They also have their own names, sometimes somewhat consonant. In this case there is confusion, from which I would like to warn.
Intel IA-64 . It is a complete synonym for the term
"Intel Itanium .
" It is used to designate a 64-bit architecture that is
incompatible with either IA-32 or its 64-bit version, neither by recruitment of commands, nor by principles of operation. Yes, there are hardware and software layers for launching IA-32 applications on Itanium, but this is a topic for a separate and interesting story. By the way, for Itanium there is another designation -
IPF , used occasionally as a suffix.
Unfortunately, the line of such families of Intel processors as i432, i860, i960 either did not live up to our days, or they have a very narrow niche of application. And then you look - I would have to remember for each of them another ten names.