Why does x86 represent 32bit when x64 represents 64bit?

Solution 1:

Well, there once was a chip called 8086, with a cheaper version called 8088 that was used in a personal computer called IBM PC. An improved version of that chip was made and called 80186, though that wasn't a very popular version. However, an improved improved version was then made, and called 80286. Now, that was a very popular chip, in particular because it was used in a computer called IBM PC AT.

Later, Intel, which created and sold the 8086, 8088, 80186 and 80286 chips, all of which had a 16 bits architecture, saw the need to create a 32 bits chip to compete with similar offerings by others. To take advantage of its incumbent position, it made the new chip capable of running software made for the previously mentioned chips. Naturally, Intel called this new chip the 80386.

By then there were lots of computers using various versions of the Intel chips, and there were also non-Intel chips that were compatible with the Intel ones. So people started referring to them as 80x86.

After a while, Intel launched a new chip, but it decided to drop the 80, so it became the 486 instead of 80486. Likewise, people were dropping the "80" from the front of "80x86", and calling this stuff just x86.

Now, I'm pretty sure some will come and say Intel branded their chips x86 at such and such time, which they did, but I don't care.

The fact is that the ever-increasing middle digit gave rise to 80x86, and x86 came from that -- even if 80186 and 80286 were not 32 bits.

So, once Intel finally went 64 bits, what did it call its new architecture? Right! IA64! :-) It also retroactively renamed the x86 to IA32, so to speak. Only IA64 was not compatible with x86, I mean, IA32, so everyone ignored it.

And then came AMD, which decided the market wanted a 64 bits CPU that was compatible, to the extent possible, with the x86 family. As a marketing appeal, they called it the "x86-64" family, and they were hugely succesful. So much so that Intel ended up grudgingly following with their own 64 bits CPU based on x86.

Later, because people are lazy, the x86-64 became known simply as the x64.

So, in answer to your question, because x64 is shorter than x86-64.

Solution 2:

Probably because the x86 line became synonymous with 32 bit processors for quite some time, while x64 was specifically a designation for 64 bit as applications and operating systems were transitioned over, and now there are software applications that require the 64 bit designation in order to run (like some VM software).

In other words, it's more marketing than technology for the reason.

Solution 3:

From Wikipedia: The term x86 refers to a family of instruction set architectures based on the Intel 8086 CPU.

Solution 4:

x86 and x64 are the names of the cpu architectures. There is more to a cpu architecture than just the number of bits per register.

x64 takes is name because the jump to 64 bits is the biggest change in the architecture from x86, but that jump is far from the only change.

x86 gets it's name from the venerable 8086 processor and family, which included 80286, 80368, 486, etc. At the time that x86 became established as a name for the architecture, 32 bits per register was not considered an important enough feature to justify building it into the name.

Solution 5:

Well, x64 never really came from an instruction set or chip manufacturer. It originally came from Windows XP. The first 64 bit edition of Windows was given the title Windows XP x64. And I guess the term x64 stuck from there.

The x86 moniker comes from the 32bit instruction set. So all x86 processors (without a leading 80) run the same 32 bit instruction set (and hence are all compatible). So x86 has become a defacto name for that set (and hence 32 bit).

AMD's original 64 bit extension on the x86 set was called AMD64. Intel later licensed it, but even still the name for the 64 bit x86 instruction set is typically AMD64.

But mostly it's brand distinction. Here's what a few different major Operating System distributions call each 64 bit flavor:

  • Ubuntu - amd64
  • Centos - x86_64
  • OpenSUSE - x86_64
  • FreeBSD - amd64
  • OpenBSD - amd64
  • NetBSD - amd64
  • Solaris - x64
  • Windows Server - x64

So basically, it seems that Linux prefers x86_64, BSD prefers amd64 and the others x64...

But the big thing to note is that they all mean the same thing for marketing purposes. In subtlety they do mean different things (well, amd64 means something different from x86_64 (the former being a vendor specific architecture, and the latter the subset of two vendors architectures), but x86_64 === x64), but for anyone except programmers writing in assembly or machine code it really doesn't make a different...