开发者

Why are there so many CPU architectures: x86, x64, x87, etc...?

开发者_如何转开发Is the main different just instruction set or something more essential??


Why are there so many CPU architectures?

In the early days, just getting a CPU working at all was a major accomplishment. The early builders designed stuff with hardware as simple as possible, just to get something working -- they generally ended up with instruction sets that were very quirky.

Later builders, reluctant to force programmers to recompile all their software, added new instructions but left the old instructions alone. (This is commonly known as "compatibility barnacles").

People came up with dozens of innovations that made CPUs easier to program or faster or better in some other way -- index registers, address registers, data registers, wider address registers, wider data registers, link register, interrupts, single-instruction subroutine CALL, single-instruction effective address calculation, pipelining, single-instruction multiply, VLIW, etc. Many of these innovations required at least new instructions, if not completely updated instruction sets. (Other innovations, such as cache, made CPUs faster without changing the instruction set at all, so the new CPU still runns all the old software unchanged).

IBM's policy in 1982 was to require at least 2 sources for all parts. (Even today, many manufacturers are reluctant to buy "single-source parts"). To convince IBM to buy Intel processors, Intel licensed their designs to AMD, a licensed second-source manufacturer. The lawsuit over this license was very public.

The long legal lawsuit between Intel and AMD worried many CPU designers. When some CPU designer came up with some new innovation, rather than incrementally adding a few instructions to the x86 instruction set or some other pre-existing instruction set -- risking getting sued -- CPU designers felt more comfortable coming up with completely different instruction sets to showcase even relatively minor innovations.

In several cases, two different people come up with conflicting innovations -- each one is clearly superior to the old CPUs before either one was invented, but it doesn't seem possible to build a CPU that supports both innovations at the same time.

There are still today many different kinds of computer architectures.


x86 is actually a shortened name of the 8086 processor series. Yes, it is a specific instruction set; and usually indicates that it is a 32 bit system (bus size). x64 usually has the same instruction set but is a 64 bit system (bus size). I've never heard of the x87, but on a quick look; it appears to be a purely floating point co-processor broken out from the x86 architecture. Another architecture that you'll see is the SPARC architecture which is a completely different architecture and instruction set from the x86 series.


The instruction set may differ slightly; however, the key differences are the length of registers, and as a result the amount of addressable memory.

x86 has 32 bit registers 
x87 is a floating point extension of x86
x64 has 64 bit registers

See also:

http://en.wikipedia.org/wiki/X87

http://en.wikipedia.org/wiki/X86

http://en.wikipedia.org/wiki/X64


There are also families of CPU's so the difference can be significat. Just think of RISC computing or stack-based CPU's.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜