x86架构诞生
早在1981年,IBM公司推出了基于Intel 8088处理器的个人电脑;和不久后的8086处理器相比,它是一台低价格,低性能的处理器。尽管在当时Motorola MC69000处理器的性能也相当不错,但是IBM这样选择的理由是因为8088处理器已经能够对地址总线进行“复用”,并且总线宽度达到8位,和以往相 比,大大减少了整个系统的开销。由于当时没有芯片组这一概念,因此数据和指令的存储和读取都要依靠主板上的特殊门电路,这些部件也是8位的宽度。如果使用 Mortola MC69000处理器的话,那么在相同功能的情况下,主板需要更多的此类部件,因此大大增加了主板的制造成本。尽管有人建议,Mortola MC69000有助于系统性能的提高,但是IBM固守“简单就是美”的原则,毅然选择了8088处理器。
IBM的“生死抉择”却给软件开发者带来灾难性的影响(当时没有充分意识到)。由于处理器采用了808X的架构,因此数据和代码只能在64KB的范围内进 行访问。如果某一个程序需要使用超过64KB的内存,那么程序不得不使用16位的段地址和16位的偏移地址组合,来达到20位的数据访问范围。当时的程序 员就为16位到20位的地址转化伤透了脑筋。在程序的编译过程中,也引进了相应的内存使用模式(小型,中型,大型,巨型)。系统集成的汇编语言在程序编写 时,必须指明是近程调用(near call)还是远程调用(far call)。如果要把8088处理器的程序移植到如MC68000机时,就必须把地址扩展成32位,这个过程非常繁琐。
尽管64KB的限制是IBM个人电脑的一个死穴,但是当时IBM PC的市场销售额非常不错。8088处理器和DOS操作系统能够支持大部分的应用软件,因此IBM的个人电脑推出不久就受到各界的好评;而对于64KB的 限制,人们似乎没有太多的关注。随着PC的成功推出,IBM着手于X86系统架构标准的制定,并且希望成为全球最大的电脑制造商。Intel和 Microsft都参与了此标准的定制,并且携手进行个人电脑的开发。
第一个x86架构的“婴儿”便是于1985年推出的32位的80386处理器(386处理器)。当时,大部分的操作系统(或者准操作系统)还是16位模 式,因此程序员也必须进行地址的转化,这个令人厌烦的转化工作直到Microsoft公司发布了第一款32位的操作系统Windows 95时,才得以解决。Windows 95是第一款使用32位地址的操作系统,它能够对32位空间的数据进行读写操作,并且80386处理器的内部有7个通用寄存器(GPRS)。
从19世纪80年代开始,X86架构快速的发展着。同时,RISC(精简指令集)架构也受到人们的关注,并且有不少成功的产品,如SPARC ,PA-RISC,MIPS等。从价格上而言,X86架构的PC机最便宜;而那些基于RISC处理器的大型机价格昂贵。但是在架构上,PC机和大型机有非 常多的相同点,它们都有着良好的软件支持,并且集成汇编语言。
它们之间第二个相似点就是PC和大型机的档次通常用以整体的性价比来决定,而不是只决定于CPU的处理能力。可靠性,可用性,和功能性是用于衡量机器性能 的主要标准。PC机和大型机的定位也相当的明确,在1980年,一台PC机的价格只要几百美元,而大型机的架构至少要上千美元;在功能上,PC机定位于整 数的运算,而大型机却是以浮点数的运算来衡量性能的高低。
尽管PC机和RISC大型机在价格和功能上定位不同,但是在1990年初,Sun Microsystems公司推出了桌面的微型RISC系统“MicroSPARC”。为了能够稳固自身的地位,针对Sun公司这个行为,Intel公司 不久后就推出了性能和MicroSPARC相当的Pentium Pro处理器,Pentium Pro处理器是X86架构发展过程中的一个里程碑。
Pentium Pro 处理器首先在x86体系中引入了“微指令”的概念,即一条指令能够完成原先几条指令的操作。在256KB二级缓存的协助下,微指令使得系统的整体性能有了 突破性的飞跃。当时由0.35微米制成技术制造的Pentium Pro处理器可以和原先任何一款RISC处理器叫板。在当时,Pentium Pro的惊人性能在PC的制造界产生了巨大的影响,那些原先RISC的支持者不得不重新审视起x86架构来。尽管x86架构存在GPRS数量过少,串行的 通讯指令过于复杂,内存操作不便等缺点,但是RISC的开发者们不得不承认,当时的RISC架构达不到Pentium Pro的性能。
揭开X86的真像
随着经济的不断发展,x86处理器的应用范围越来越广,但是人们似乎渐渐忘却x86架构的不足。在x86架构的发展过程中,它微处理器(MPU)或多或少 的占据着领先的地位。为了保持领先,个人电脑的发展似乎脱离了IBM原先“简单就是美”的初衷。CPU的制成技术快速的发展着,集成的晶体管数量也基本按 照莫尔定律增加。当CPU集成的晶体管数量超过1百万后,“制成工艺”和“晶体管集成度”成为衡量系统性能的另一个标准。
同时,基于RISC处理器的大型机也不懈的发展着,尽管在制成技术上不及X86架构,但是它的整数和浮点数性能要高于X86架构。以下是1993年至今,x86性能和RISC的比值。
图 x86/RISC 性能比 vs制成工艺
上图分为两个部分,上半部分是x86/RISC的性能比。可以看出,在整体上,RISC的性能要高于x86(x86/RISC<1),但是它们之间 的差距正在逐渐减少。其中Pentium Pro ,P4/1.5 ,P4/3.06这几款CPU的性能已经超过了同期RISC处理器的性能。图的下半部分是x86和RISC制成工艺的对比。
Pentium Pro推出时,x86架构系统和RISC处理器系统的分工就相当的明确。RISC系统针对高端的服务器市场,CPU和所有的部件都必须确保系统的“稳定 性”,即使降低10%的性能也要尽可能的提高系统的稳定性。因此RISC 处理器必须经过详细,严谨的设计,并且需要通过一系列严格的测试。因此大型机的CPU非常昂贵,每一代的CPU一般只推出2~3种不同频率的产品,因为企 业不可能在系统升级上不断的投入昂贵的费用。相比之下x86架构系统主要针对个人用户和小型的商用系统。和RISC相比,x86的价格要低1~2个数量 级,它主要是确保系统的性能,或者尽可能的提高系统的性价比。因此针对同一代的CPU,它会推出7~8种不同频率的产品。例如Intel Northwood Pentium 4的整个推出的过程中,一共发布了7种不同频率的产品。
图 产品推出力度对比
上图清楚的表明,在同一代产品中,RISC系统一般只会推出2-3种产品,而X86架构会有7-8种的产品。因此后者的粒度要比前者细的多。这也说明 RISC系统的CPU一旦设计定型,就会进行制造和测试,在产品最后发布之前,尽可能的改正设计中的错误,因为RISC昂贵的价格决定一旦CPU的设计存 在问题,那么这就是一款失败的产品,在市场上就不会有立足之地。而x86的CPU价格较低,因此它不断推出的产品能够弥补以往设计中的不足,不同产品在于 占领不同的市场。
X86=永恒?
随着X86架构的不断成熟,人们逐步开始认识到其本身的限制和不足(例如32位的X86架构的寻址空间只有4GB),但是巨大的商业利益和强劲的软硬件的 支持,使得x86的架构难以动摇。尽管在x86的发展历程中,也有不少的体系设计用于代替x86架构,但是它们都因为得不到广泛的支持,最终以失败告终。 其中,影响较大的是以下3次“x86革命”。
第一次革命:MIPS/ACE 联盟
1991年4月,Compaq, Microsoft, DEC, MIPS和一些小型的计算机公司成立了高级计算环境(ACE)小组,他们的目的在于使用基于RISC处理器的MIPS架构来取来现有的x86/IBM个人 电脑。 但是由于MPU上市日期的延迟,ACE小组的内部竞争,以及利益分成的问题,使得ACE小组的发展举步为艰,最后以失败而告终。
第二次革命:Apple/IBM/Motorola (AIM) 联盟
同样在1994年4月底,Apple Computer, IBM 和 Motorola组成了AIM联盟,目的在于把RISC处理器用于个人电脑系统。Motorola 和IBM联手对POWER架构进行重新设计,用于取代原先Macintosh系统中逐渐衰落的680X0 CISC处理器。POWER架构给Mac系统带来了巨大的成功,它的性能要比原先的Mac大大提高。但是x86架构的发展始终要快于PowerPC ,而且PowerPC没有任何的性价比优势,因此不多久,Mac机就在x86架构面前败下阵来。在Intel和Microsoft巨大的压力下,1994 年8.3%的市场占有率也紧缩到目前的3%。
第三次革命:DEC/Samsung
1996年年底, DEC的芯片制造部门(原先的Digital Semiconductor公司)发布布了21164PC。它是原先高性能处理器 21164A (EV56)的PC版,因此价格较低,并且使用了微软的 Windows NT操作系统。由于缺少相应的软件支持,DEC开发了FX!32模拟器,它能够把原先X86的软件无缝的应用到21164PC平台。尽管CPU的价格低 廉,但是支持21164PC的主板却非常昂贵。而且在当时,人们对NT操作系统并没有表现出多大的兴趣,因此21164PC慢慢的在X86架构发展中退出 了历史舞台。
上述例子中的MPU制造商失败的主要原因就是跟不上Intel CPU的发展速度。Intel不断进行着新型的CPU设计,并且以价格来争取市场;上述的三种新型CPU架构都是被Intel强大的马力所拖垮。其中, MIPS/ACE 联盟主要是资金的问题,而AIM联盟的失败归咎于CPU的设计跟不上Intel的发展速度。
Intel的自我革命
目前的事实告诉我们,当今几乎不可能有其他的MPU制造商使用其他的系统结构,来挑战Intel 现下兼容的X86平台;其他的芯片制造商也没有雄厚的资金和实力来和Intel公司进行抗衡。人们考虑:是否Intel公司自己会提出一种全新的架构;或 者Intel是否会脱离IBM的x86标准来发展自身的Wintel体系架构(Wintel:Windows操作系统和Intel处理器)。近几年, Intel致力研究的Itanium处理器(IPF Itanium Processor Family)似乎有取代x86的趋势。Intel也宣布,Itanium会首先使用在服务器上,然后过渡到PC平台,最终在移动平台上实现。
Intel 的IPF主要针对RISC处理器原先占有的中高端服务器市场。Intel推出64位的处理器只是一个时间的问题,可能在目前而言,还为时过早;但是 Intel的竞争对手AMD公司已经在今年推出了x86架构的扩展―――64的处理器和系统平台。AMD 64位的架构并不是全新的架构,而是对原先32位的x86架构进行扩展,突破了4GB寻址空间的限制;但是64位的计算环境却在业界产生了巨大的影响,它 成为Intel IPF技术的挑战者。姑且不论AMD 64位架构推出时机是否合适,但是业界普遍认为64位的架构会在5年内成为主流的桌面PC架构,同时AMD的这一举措也加快了IPF处理器的推出。
IPF技术是由Intel和惠普联合研制,取得了一定的成绩。但是目前的IPF处理器核心尺寸,电源功耗都决定了其不能使用在桌面系统上。IPF采用 0.18微米的制成工艺,和Alpha EV( 397mm 2,125W),POWER4( 415 mm 2,115W)相比,Itanium 2处理器的尺寸为 421 mm 2,电源功耗高达130W。
在随后的,代号为Madison/Deerfield的Intanium 2处理器中,Intel使用了0.13微米的制成工艺。1.3GHz的Itanium 2处理器的最大发热量和2.66GHz Northwood Pentium 4相当。和2.66GHz Pentium 4相比,1.3GHz Itanium2的整数运算性能有了10%的提高,浮点数性能有了50%的提高。在高级的优化技术下,IPF的性能要比原先同等频率的处理器高出整整一 倍,而且随着IPF技术的成熟,这种差距会愈加扩大。
尽管在硬件的技术上,AMD和Intel都已经相当成熟;但是AMD 64位的系统和Intel的IPF都不得不面临一个相同的问题:缺少软件的支持。目前支持AMD 64位系统和IPF技术的只有Window最新的操作系统。AMD公司和Intel公司对于64位架构的研发上都或多或少面临“鸡生蛋,还是蛋生鸡”的尴 尬局面。64位的架构必须有软件的支持才能发挥应有的功效,同样软件只有凭借64位的架构才能进行开发。业界人员保守的估计,64位的软件至少要3-5年 才能普及起来。
对于IPF处理器而言,它和原先x86架构下的处理器有什么本质的不同呢?如果不考虑AMD的64位扩展x86架构,在相同的电源功耗,相同的费用,相同 的制成工艺下,IPF处理器在整数运算上的性能会高出20%-30%,浮点数和DSP的运算性能会有50%的提高。
结论:革命尚未成功,同志仍需努力
“说要比做的容易。”随着IPF技术的成熟,32位x86架构缺陷的不断出现,IPF取代x86架构势在必行。但是一旦真正的进行“改革”。IPF(或 者其他架构)必定会受到来自各方面的压力和阻碍。乐观的估计,IPF取代x86成为主流的架构至少要在2005年以后。如果考虑到来自AMD 64位的x86的架构阻挠,那么整个改革的之间会更长,甚至有失败的可能。
我们深知,每一项新技术的应用,都会伴随着出生时的阵痛;但是对于未来 却是一片光明。Intel的IPF如此,AMD的64位架构也是如此。在PC发展历程中,正是这些一次又一次的阵痛,不断推动着整个IT界发展,使IT界 保持旺盛的发展力。也许这些阵痛可能会带来难产,使得婴儿死于襁褓之中;但是每一次成功的诞生,都会给IT界带来一个全新的世界。不管X86架构未来如 何,我们都期待着会有一个崭新的明天。
我们知道,x86结构在1981年随着IBM PC-XT个人电脑的中央处理器——Intel8086 进入了人类的世界,这颗在当时拥有优秀性能和低廉价格的处理器,是一颗真正16位的微型处理器。英特尔随后发布的80286也是一颗16位的x86结构处理器,它采用16位的x86指令系统,但拥有更为先进的保护模式指令集。
很快,PC的发展就使英特尔觉得有必要推出基于32位x86指令集的CPU—— 80386。从此以后的10多年间,80486、80586(Pentium)、80686(Pentium 2)、Pentium 3直到Pentium 4,英特尔一直牢牢占据着个人电脑发展路程上的核心地位。
32位的x86架构也经历了10多年的风雨,过去20年中,x86以无可比拟的性能价格比优势成为计算平台的标准。x86系统以每年超过1亿台 的装机量和90%以上的市场占有率被用户广泛认可,同时开放平台的良性竞争环境也推动着x86派的技术发展远远超过RISC体系。
微软操作系统发展史
x86产品已经从最初的PC机走入了工作站、服务器领域,大有取RISC而代之、统一计算天下的态势。在这个过程中,惟一阻碍x86进入高端企 业市场的,就是x86仍然基于32位技术——对于高端的企业级服务器与工作站应用无能为力。伴随着企业计算应用的发展,64位应用越来越广泛,令x86向 64位扩展势在必行,也成为统一64位计算标准的希望。与此同时,在个人、商务和移动计算领域,32位计算也渐渐开始显得力不从心,不管出于技术还是竞争 需要,32位的时代已经渐渐开始过去了。
企业市场传统上一直是RISC厂商和UNIX的天下,英特尔虽然一直想打进去并获得与在个人电脑市场上同样的成功,但却迟迟未能如愿。因此,英 特尔单独发布了专为64位市场而定做的IA-64架构以及相关的64位指令规格,并发布了名为Itantium (安腾)的企业级64位处理器。安腾确实是高性能的处理器,但是它的IA-64并不兼容x86-32指令集,也就是说个人电脑的应用程序并不能在安腾上运 行,这样,大众用户实际上是被英特尔划到了64位的界外。
32位程序可在64位windows下运行
不过,这正好给了AMD一个大好的机会,使其可以自己研发处理器架构并与英特尔分庭抗礼。虽然机会的出现犹如白驹过隙,但AMD牢牢抓住了它, 研发出了自己的64位处理器架构,命名为x86-64。从这个名字我们就能看出,AMD的64位指令系统是从 x86扩充而来的,并且,AMD让新的64位处理器兼容以往的32位指令集。
也就是说,AMD的新处理器不但是一颗64位处理器,同时也是32位的。 AMD成功了,它发布的Opteron处理器迅速被市场所接受,在一年之内,AMD推出了3个系列的64位处理器:面向服务器和工作站的Opteron系 列;面向发烧友和顶级个人电脑的Athlon FX系列和面向高性能、低价格桌面电脑的Athlon 64系列。
要实现64位计算,光有硬件还是不够的。表面看来,64位操作系统似乎是刚出现不久的新事物,实际上,微软早在2001年就推出了 Windows 2000 DataCenter的64位版本,是为英特尔安腾服务器推出的IA-64架构的操作系统,不能运行在个人电脑上。
到了2003年,Windows Server 2003推出了四个版本,分别是专业版、Web服务器版、企业版和数据中心版;其中企业版和数据中心版都有32位和运行于安腾之上的64位两个版本,同时 Windows XP也有64位的安腾工作站版,应该说微软在64位的路上是先行者。但是奈何素来所向披靡的Wintel联盟这次也犯了一个不大不小的错误:不能向下兼容 32位应用。因此,在这个32位应用仍然占据主导地位的时代,这种纯64位的处理器和操作系统还难以被大众所接受。
正是因为上述原因,现在大家普遍认为64位时代是从x86领域出现64位计算才真正开始的。