Difference Between x86 and x64

The most important difference between x86 and x64 is that the former is the 32 bit architecture and the latter is the 64 bit instruction set architecture. An instruction set architecture (ISA) is a very important term that applies to any CPU. Instructions, memory addressing, registers, and many other architectural sections of a CPU are specified by the ISA. x86 is a world famous ISA introduced by Intel in 1978 with the 8086 processor. Then various extensions happened and, in 2000, AMD created the specification to extend the x86 instruction set to 64bit under the name AMD64. Later other companies such as Intel also implemented that specification and this AMD64 is the one that is identified by the name x64.

What is x86?

x86 is an instruction set architecture introduced by Intel with the famous 8086 processor. In 1978, Intel introduced the 8086 processor that was a 16 bit processor. Then later they introduced various processors such as 80186, 80286, 80386 and 80486, and all were backward compatible with the original instruction set used in the 8086 processor. Since all these processors end with the number 86, the instruction set architecture was identified by the name x86. With the introduction of 80386, the x86 instruction was extended to a 32bit system. Here, 32 bit means that all registers, memory bus, and data bus are 32 bit. Then Pentium processors came as Pentium I, Pentium II, Pentium III, Pentium IV and all these followed a 32 bit architecture as well. But various other extensions happened to the x86 architecture, such as addition of instructions like MMX, SSE and SSE2. Apart from that, many other improvements were also done. Then, the x86 instruction set was extended to a 64 bit instruction set and from this point onward it was called as x64, which we are going to discuss in the next section. Anyway, in general, x86 refers to the 32bit architecture that evolved from a 16bit architecture that came up with the 8086 processor.

8086 processor

What is x64?

A 32 bit system can represent only 232 distinct values and, therefore, the memory addressing is limited to that number of addresses. 232 bytes are equal to 4 GB and, therefore, x86 had a maximum addressable memory limit of 4 GB. In order to overcome this, further extensions were done to the x86 architecture. AMD, in around year 2000, introduced such specification that extended the x86 architecture to 64 bits. This was introduced under the name AMD64. x64 is another name given to this AMD64 architecture. This AMD64 or x64 architecture is also known under the name x86_64. With the 64 bit architecture, all registers became 64 bits and the memory bus and the data bus also became 64 bit. Now 264 distinct values can be addressed and this gives a huge upper limit on the possible maximum memory. AMD K8 was the first processor that implemented this 64 bit architecture. Then Intel also adopted this architecture. With Intel Core processors that started from Intel Core 2, Intel started using this architecture in their processors. Currently, all Intel processors such as Core i3, Core i5 and Core i7 use this x64 architecture. Some important thing to emphasize is that this x64 architecture is still backward compatible with the old x86 instruction set.

64 bit processor

What is the difference between x86 and x64?

• x86 was introduced in around year 1978 while x64 came up more recently in year 2000.

• x86 emerged from the famous Intel 8086 processor and, therefore, x86 was introduced by Intel. But x64, which came as an extension to x86, was introduced by AMD.

• x86 architecture is 32bit. (First x86 processors were 16 bit but, in later processors, an extension to 32bit was done). x64 architecture is 64 bit.

• Processors with x86 instruction set architecture, therefore, has 32 bit registers, 32 bit memory bus, and 32 bit data bus. But x64 has 64 bit registers, 64 bit memory bus, and 64 bit data bus.

• x86 has a limitation on maximum addressable memory that is an upper limit of 4 GB ( 232 bytes). But, on x64 systems, this limit is huge, which is 264 bytes.

• x64 is an expansion of x86; therefore, it is much improved and powerful than the old x86.

• Values that can be stored in a register, in a x64 system, is larger than a values that can be stored in a x86 based register. Therefore, x64 can handle computation of larger integers much faster, as there is no necessity to use several registers in such case to split the value and store as in x86.

• x64 can parallel transmit larger size data along the data bus. That is, a data bus of 64 bit can parallel transmit 64 bits while the x86 architecture that has a 32 bit bus can only parallel transmit 32 bits.

Summary:

x86 vs x64

x86 instruction set architecture is 32 bit while x64 instruction set architecture is 64 bits. x64 came as an extension of the existing x86 architecture. The registers, memory bus, data bus on x86 architectures are 32 bits while this is 64 bits on x64. Therefore, the maximum amount of memory addressable is very much higher in x64 systems than in x86 systems. x86 was introduced by Intel with the 8086 processor that was a 16 bit processor and with the time this x86 was extended to 32 bit. Then later, AMD introduced the x64 architecture by extending the existing x86 architecture and this x64 is fully backward compatible with x86 instruction set.

 

Images Courtesy:

  1. Intel 8086 by Appaloosa (CC BY-SA 3.0)
  2. 64 bit processor by Appaloosa (CC BY 3.0)