113

My question is why is the shorthand for 32-bit x86 when the shorthand for 64-bit is x64?

I'm guessing it has something to do with the days of 386s and 486s, when the 32-bit processors all ended in 86, but surely there were processors that didn't end in 86 and were still 32-bit?

Does anyone know the history of this or can direct me to a good source of info?

RBT
  • 223
  • 2
  • 10
Simon Foster
  • 2,572
  • 6
  • 36
  • 54
  • 9
    always wanted to know this +1 for unconcious curiosity! – Gabriel Guimarães Oct 06 '10 at 15:17
  • I just asked myself this this-morning! – Sean Howat Oct 06 '10 at 16:55
  • 12
    I think the full term is not x64 but x86_64 – Kedare Oct 06 '10 at 18:17
  • 4
    IMHO, "x86" does not mean (and never has meant) just any generic 32-bit architecture. Daniel's answer below gives the history. There are lots of other 32-bit processors that are both contemporaneous to (or older than) the 80386, and quite a few are still alive and well in the market today. The 68000 family (used in the original Macintosh) is much older than the 8086, for instance. The PowerPC's claim to fame when new was strong emulation support for both x86 and 68K. The ARM is 32-bit, more modern, and quite common as well. – RBerteig Oct 06 '10 at 20:45
  • I don't see it as x64, at least I don't writ it that way. I write it as 32b and 64b, respectively. – vol7ron Oct 07 '10 at 02:16
  • Children, children. Please read you history books. – John Gardeniers Oct 07 '10 at 11:16
  • On the business side, there is strong market demands for 86-bit computers. http://answers.yahoo.com/question/index?qid=20080726234552AAtTqDU – rwong Oct 07 '10 at 13:26
  • This is not really a technical question. – Sven Feb 09 '15 at 15:47
  • A very good piece of information [here](http://superuser.com/a/179921/374397). – RBT Oct 29 '16 at 04:17
  • It pains me to upvote this question and move it past 86 upvotes. – Pat Nov 16 '18 at 17:27

6 Answers6

204

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.

Daniel C. Sobral
  • 5,563
  • 5
  • 32
  • 48
  • 11
    Not to nit pick but to be compltely exact, AMD never marketed a 64 bit chip. x64 or x86_64 that AMD came out with were 64 bit extensions added to the x86 instruction set Intel created - hence x86_64 as opposed to Intel's Itanium (IA_64) which was a true 64 bit chip not compatable with x86 instruction set. – Jeremy Hajek Oct 06 '10 at 15:47
  • 7
    Additionally, I believe Intel faced trademark issues because they were just using numbers and you can't trademark a sequence of numbers, that is why what would have been the 80586 became the Pentium, a made-up name that they could continue to trademark. – cdkMoose Oct 06 '10 at 16:47
  • 3
    To clarify: AMD called their extensions AMD64, and Intel calls theirs (that they licensed from AMD) Intel64. There are a few subtle differences (they are not 100% compatible), so most OS Vendors usually use the common Subset. On a Windows 2008 DVD, the install folder is actually called AMD64 (as opposed to I386 on 32-Bit). I don't know where x86_64 comes from: From AMD since it's an extension to x86 or from Unix-Vendors that wanted a neutral term. – Michael Stum Oct 06 '10 at 19:39
  • 20
    @Jeremy Hajek: AMD64/x86_64 is a true 64-bit chip design, its 64-bit mode is not an emulation and has no performance impact (and in fact, its 32-bit mode is also not an emulation). The chip has 64-bit instruction set and 64-bit registers, that makes it 64-bit chip. I don't know where you get the impression that AMD never marketed a 64-bit chip from. It's true though, that AMD never marketed a 64-bit that breaks compatibility with 32-bit chip, like Intel did with its IA64. – Lie Ryan Oct 06 '10 at 21:10
  • perfect explanation. – Vishwadeep Singh Aug 10 '15 at 05:23
  • I want to vote this up, but the current vote count (86) is too perfect. I think I'll check your profile and find another deserving answer instead. – Joel Coel Aug 10 '15 at 13:48
  • @JoelCoel I have to agree with you. :) – Daniel C. Sobral Aug 10 '15 at 21:46
  • 2
    x64 is only used in Windows / Microsoft terminology. GNU/Linux calls the architecture x86-64, or amd64. (And calls 32-bit x86 `i386`). It's only (or at least mostly) in the Windows world that x86 specifically means 32-bit x86. Most hardware people talking about CPUs understand x86 to mean any CPU that's backwards-compat with 8086, regardless of what mode its operating in (normally 64-bit long mode, or sometimes 32-bit compat mode under a 64-bit kernel.) If I say that "x86 has efficient release/acquire lock-free atomics", I'm not excluding 64-bit. – Peter Cordes Sep 04 '18 at 19:54
  • 1
    Intel may have marketed 80486 as just "486DX", but the actual part number still included 80486 (http://www.cpu-world.com/sspec/80486.html). This changed with Pentium: the model numbers (http://www.cpu-world.com/sspec/Pentium.html) were things like BP80502200. (Still a leading `80`, which identifies it as an Intel chip among semiconductor part numbers). 586 and 686 were used unofficially by programmers, but apparently not Intel. But even Skylake CPUs still report themselves as "family 6" with the CPUID instruction. (http://www.cpu-world.com/CPUs/Core_i7/Intel-Core%20i7-6700K.html). – Peter Cordes Sep 04 '18 at 20:06
  • How come this is not the accepted answer?!! – pedram bashiri Dec 11 '19 at 16:29
39

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.

Bart Silverstrim
  • 31,092
  • 9
  • 65
  • 87
  • 26
    x86 comes from the 8086, 286, 386, 486, 586, etc. It could have as easily been "*86" – gWaldo Oct 06 '10 at 20:10
  • 6
    And because x86 originated with the 8086 I've never been able to work out why it's always associated with 32 bits. As I recall, the 8086 was a 16 bit processor, which used double registers to enable 32 bit memory addressing. Intel was far from being a leader in the field in those days. BTW @gWaldo, you left out the 80186. – John Gardeniers Oct 07 '10 at 11:09
  • Coincidence. From Wikipedia, "Both the architecture and the physical chip were therefore developed rather quickly by a small group of people, and using the same basic microarchitecture elements and physical implementation techniques as employed for the slightly older 8085 (and for which the 8086 also would function as a continuation)." There was also an 8087 and 8089. – Bart Silverstrim Oct 07 '10 at 11:54
  • Yea, I left out the 80186 because I honestly couldn't remember if it had been a released product (and was feeling too lazy to look it up...) – gWaldo Oct 07 '10 at 12:23
  • 2
    This answer has nothing wrong, but I honestly think Daniel's should be the accepted one, as it's much more detailed. – Massimo Jul 03 '15 at 00:34
  • @gWaldo The [80186](https://en.wikipedia.org/wiki/Intel_80186) was never marketed as a primary CPU, but instead was packaged as a microcontroller. It was also cloned in the form of the [NEC V-20](https://en.wikipedia.org/wiki/NEC_V20) which was pretty successful in its era. Intel manufactured 80186 until 2007, so that's quite a run. – tadman Nov 06 '17 at 16:52
18

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

bindbn
  • 5,153
  • 2
  • 26
  • 23
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.

Joel Coel
  • 12,910
  • 13
  • 61
  • 99
3

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:

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...

ircmaxell
  • 1,201
  • 8
  • 20
3

Technically x86 simply refers to a family of processors and the instruction set they all use. It doesn't actually say anything specific about data sizes.

x86 started out as a 16-bit instruction set for 16-bit processors (the 8086 and 8088 processors), then was extended to a 32-bit instruction set for 32-bit processors (80386 and 80486), and now has been extended to a 64-bit instruction set for 64-bit processors. It used to be written as 80x86 to reflect the changing value in the middle of the chip model numbers, but somewhere along the line the 80 in the front was dropped, leaving just x86.

Blame the Pentium and it's offspring for changing the way in which processors were named and marketed, although all newer processors using Intel's x86 instruction set are still referred to as x86, i386, or i686 compatible (which means they all use extensions of the original 8086 instruction set).

x64 is really the odd man out here. The first name for the 64-bit extension to the x86 set was called x86-64. It was later named to AMD64 (because AMD were the ones to come up with the 64-bit extension originally). Intel licensed the 64-bit instruction set and named their version EM64T. Both instruction sets and the processors that use them are all still considered x86.

ScoRpion
  • 141
  • 3
  • 1
    x86-64 is back to being a vendor-neutral term that includes AMD64 and EM64T. The leading 80 was always there in the part number, but after 80186 it became easier just say 186 vs. 8086 vs. 386. Pentium was never officially called 586 or 80586 in its part numbers (http://www.cpu-world.com/sspec/Pentium.html); the i586 and i686 terms were just based on the CPUID "family" field of how CPUs reported themselves. – Peter Cordes Sep 04 '18 at 20:11