3.指令集之争
英特尔在微软的帮助下,在商业上打赢了对摩托罗拉一战。在接下来的十年里,它在技术上又和全世界打了一战。
当今的计算机系统结构可以根据指令集合分成复杂指令(cisc)和简单指令(risc)两种。一个计算机的程序最终要变成一系列指令才能在处理器上运行。每个处理器的指令集不相同。有些处理器在设计时候,尽可能地实现各种各样、功能齐全的指令,这包皮括早期ibm和dec的全部计算机,今天的英特尔和amd的处理器等等。采用复杂指令系统的处理器芯片的好处是它可以实现很复杂的指令,但是它存在主要问题有两个,第一,设计复杂,实现同样的性能需要的集成度高;第二,由于每个指令执行时间不一样长,处理器内部各个部分很难流水作业,处理器会出现不必要的等待。除此之外,还有一个过去不是问题现在是问题的缺陷,就是复杂指令芯片高集成度带来的高功耗。
针对复杂指令的处理器的上述两个不足之处,八十年代,计算机科学家们提出了基于精简指令集的处理器设计思想,其代表人物是现任斯坦福大学校长、美国科学院、工程学院和文理学院三院院士轩尼诗(johnhennessy)教授和加大伯克利分校著名的计算机教授派特森(davidpatterson)院士。精简指令系统只保留很少的常用指令并将一条复杂的指令用几条简单的指令代替。基于精简指令集的设计思想是计算机发展史上的一次革命,它使得计算机处理器的设计得到很大简化,同时由于精简指令集的处理器可以保证每条指令执行时间相同,处理器内各部分可以很好地流水作业,处理器速度可以比同时期的基于复杂指令的处理器要来得快。精简指令集的处理器包皮括很多工作站的处理器和现在最快的sonyps/3游戏机的微处理器ps/3-cell。
虽然复杂指令和精简指令的处理器各有千秋,但是在学术界几乎一边倒地认为复杂指令集的设计过时了,精简指令集是先进的。尤其是美国所有大学计算机原理和计算机系统结构两门课全是用轩尼诗和派特森合写的教科书。在很长时间里,书中以介绍轩尼诗自己设计的mips精简指令芯片为主。同时,ieee和acm系统结构的论文也以精简指令为主。英特尔设计8086时还没有精简指令的芯片,否则我想,英特尔很可能会采用这种技术,而不是复杂指令系统。而一旦走上了复杂指令这条不归路,英特尔为了和8086完全兼容,在以后的80286和80386中必须继续使用复杂指令系统。在八十年代中后期,不少精简指令的处理器做出来了,包皮括轩尼诗设计的mips,后来用于sgi工作站,以及派特森设计的risc,后来用于ibm的工作站。精简指令芯片的速度当时比的复杂指令的要快得多。
到了八十年代末,英特尔面临一个选择,是继续设计和以前x86兼容的芯片还是转到精简指令的道路上去。如果转到精简指令的道路上,英特尔的市场优势会荡然无存;如果坚持走复杂指令的道路,它就必须逆着全世界处理器发展潮流前进。在这个问题上,英特尔处理的很理智。首先,英特尔必须维护它通过x86系列芯片在微处理器市场上确立的领先地位;但是,万一复杂指令的处理器发展到头了,而精简指令代表了未来的发展方向,它也不能坐以待毙。英特尔在推出过渡型复杂指令集的处理器80486的同时,推出了基于精简指令集的80860。这个产品事实证明不很成功,显然,市场的倾向说明了用户对兼容性的要求比性能更重要。因此,英特尔在精简指令上推出80960后,就停止了这方面的工作,而专心做"技术落后"的复杂指令系列。在整个九十年代,工业界只有英特尔一家坚持开发复杂指令集的处理器,对抗着整个处理器工业。
应该讲英特尔在精简指令处理器的工作没有白花,它在奔腾及以后的处理器设计上吸取了risc的长处,使得处理器内部流水线的效率提高很多。由于英特尔每一种pc机处理器的销量都超过同时代所有的工作站处理器销量的总和,它可以在每个处理器的开发上投入比任何一种精简指令处理器多的多的研发经费和人力,这样,英特尔通过高强度的投入,保证了它处理器性能提升得比精简指令还要快。而在精简指令阵营,九十年代五大工作站厂家太陽、sgi、ibm、dec和hp各自为战,每家都生产自己的精简指令处理器,加上摩托罗拉为苹果生产的powerpc,六家瓜分一个市场,最后谁也做不大、做不好。到了2000年前后,各家的处理器都做不下去了,或者全部或者部分地开始采用英特尔的产品了。而最早的精简指令的mips处理器现在几乎没有人用了。轩尼诗和派特森作为两个负责任的科学家,将英特尔处理器加入到自己编的教科书中,以免大学生们再去学习 mips这样的恐龙。
英特尔经过十年努力终于打赢了对精简指令集的处理器之战。需要强调的是,英特尔不是靠技术,而是靠市场打赢的此战。英特尔的表现在很多地方很值得圈点。首先,英特尔坚持自己系列产品的兼容性,即保证以往的软件程序肯定能在新的处理器上运行。这样时间一长,用户便积累了很多在英特尔处理器上运行的软件。每次处理器升级,用户原来的软件都能使,非常方便。因此大家就不愿意轻易更换其它厂家的处理器,即使那些处理器更快。而其它处理器生产厂家这点做的都没有英特尔好,它们常常每过几年就重起炉灶,害得用户以前很多软件不能用了,必须花钱买新的。时间一长,用户就换烦了。第二,英特尔利用规模经济的优势,大强度投入研发,让业界普遍看衰的复杂指令集处理器一代代更新。在九十年代初,英特尔的x86系列和精简指令集的处理器相比在实数运算上要略逊一筹。但是,英特尔十几年来坚持不懈地努力,后来居上,而其它厂商因为各自市场不够大,每一个单独的处理器芯片的投入远远不如英特尔,因此反倒落在了后面。与其说英特尔战胜其它厂商,不如说它把竞争对手熬死了。第三,英特尔并没有拒绝新技术,它也曾经研制出两个不错的精简指令的处理器,只是看到它们前途不好时,立即停掉了它们。第四,英特尔运气很好,在精简指令处理器阵营中,群龙无首。这一战,看似英特尔单挑诸多处理器领域的老大。但是,这几家做精简指令处理器的公司因为彼此在工作站方面是竞争对手,自然不会用对手的产品,而且各自为战,互相拆台打价格战,最后,太陽公司和ibm倒是把其他几家工作站公司全收拾了,但自己也无力和英特尔竞争了,现在这两家自己也用上了英特尔的芯片。本来,摩托罗拉最有可能一统精简指令处理器的天下和英特尔分庭抗礼,因为它本身不做工作站,而各个工作站厂商原本都是用它的68000系列处理器,但是摩托罗拉自己不争气。原因我们前面已经分析过了。