3.指令集之爭(zhēng)
英特爾在微軟的幫助下,在商業(yè)上打贏了對(duì)摩托羅拉一戰(zhàn)。在接下來(lái)的十年里,它在技術(shù)上又和全世界打了一戰(zhàn)。
當(dāng)今的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)可以根據(jù)指令集合分成復(fù)雜指令(cisc)和簡(jiǎn)單指令(risc)兩種。一個(gè)計(jì)算機(jī)的程序最終要變成一系列指令才能在處理器上運(yùn)行。每個(gè)處理器的指令集不相同。有些處理器在設(shè)計(jì)時(shí)候,盡可能地實(shí)現(xiàn)各種各樣、功能齊全的指令,這包皮括早期ibm和dec的全部計(jì)算機(jī),今天的英特爾和amd的處理器等等。采用復(fù)雜指令系統(tǒng)的處理器芯片的好處是它可以實(shí)現(xiàn)很復(fù)雜的指令,但是它存在主要問(wèn)題有兩個(gè),第一,設(shè)計(jì)復(fù)雜,實(shí)現(xiàn)同樣的性能需要的集成度高;第二,由于每個(gè)指令執(zhí)行時(shí)間不一樣長(zhǎng),處理器內(nèi)部各個(gè)部分很難流水作業(yè),處理器會(huì)出現(xiàn)不必要的等待。除此之外,還有一個(gè)過(guò)去不是問(wèn)題現(xiàn)在是問(wèn)題的缺陷,就是復(fù)雜指令芯片高集成度帶來(lái)的高功耗。
針對(duì)復(fù)雜指令的處理器的上述兩個(gè)不足之處,八十年代,計(jì)算機(jī)科學(xué)家們提出了基于精簡(jiǎn)指令集的處理器設(shè)計(jì)思想,其代表人物是現(xiàn)任斯坦福大學(xué)校長(zhǎng)、美國(guó)科學(xué)院、工程學(xué)院和文理學(xué)院三院院士軒尼詩(shī)(johnhennessy)教授和加大伯克利分校著名的計(jì)算機(jī)教授派特森(davidpatterson)院士。精簡(jiǎn)指令系統(tǒng)只保留很少的常用指令并將一條復(fù)雜的指令用幾條簡(jiǎn)單的指令代替?;诰?jiǎn)指令集的設(shè)計(jì)思想是計(jì)算機(jī)發(fā)展史上的一次革命,它使得計(jì)算機(jī)處理器的設(shè)計(jì)得到很大簡(jiǎn)化,同時(shí)由于精簡(jiǎn)指令集的處理器可以保證每條指令執(zhí)行時(shí)間相同,處理器內(nèi)各部分可以很好地流水作業(yè),處理器速度可以比同時(shí)期的基于復(fù)雜指令的處理器要來(lái)得快。精簡(jiǎn)指令集的處理器包皮括很多工作站的處理器和現(xiàn)在最快的sonyps/3游戲機(jī)的微處理器ps/3-cell。
雖然復(fù)雜指令和精簡(jiǎn)指令的處理器各有千秋,但是在學(xué)術(shù)界幾乎一邊倒地認(rèn)為復(fù)雜指令集的設(shè)計(jì)過(guò)時(shí)了,精簡(jiǎn)指令集是先進(jìn)的。尤其是美國(guó)所有大學(xué)計(jì)算機(jī)原理和計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)兩門(mén)課全是用軒尼詩(shī)和派特森合寫(xiě)的教科書(shū)。在很長(zhǎng)時(shí)間里,書(shū)中以介紹軒尼詩(shī)自己設(shè)計(jì)的mips精簡(jiǎn)指令芯片為主。同時(shí),ieee和acm系統(tǒng)結(jié)構(gòu)的論文也以精簡(jiǎn)指令為主。英特爾設(shè)計(jì)8086時(shí)還沒(méi)有精簡(jiǎn)指令的芯片,否則我想,英特爾很可能會(huì)采用這種技術(shù),而不是復(fù)雜指令系統(tǒng)。而一旦走上了復(fù)雜指令這條不歸路,英特爾為了和8086完全兼容,在以后的80286和80386中必須繼續(xù)使用復(fù)雜指令系統(tǒng)。在八十年代中后期,不少精簡(jiǎn)指令的處理器做出來(lái)了,包皮括軒尼詩(shī)設(shè)計(jì)的mips,后來(lái)用于sgi工作站,以及派特森設(shè)計(jì)的risc,后來(lái)用于ibm的工作站。精簡(jiǎn)指令芯片的速度當(dāng)時(shí)比的復(fù)雜指令的要快得多。
到了八十年代末,英特爾面臨一個(gè)選擇,是繼續(xù)設(shè)計(jì)和以前x86兼容的芯片還是轉(zhuǎn)到精簡(jiǎn)指令的道路上去。如果轉(zhuǎn)到精簡(jiǎn)指令的道路上,英特爾的市場(chǎng)優(yōu)勢(shì)會(huì)蕩然無(wú)存;如果堅(jiān)持走復(fù)雜指令的道路,它就必須逆著全世界處理器發(fā)展潮流前進(jìn)。在這個(gè)問(wèn)題上,英特爾處理的很理智。首先,英特爾必須維護(hù)它通過(guò)x86系列芯片在微處理器市場(chǎng)上確立的領(lǐng)先地位;但是,萬(wàn)一復(fù)雜指令的處理器發(fā)展到頭了,而精簡(jiǎn)指令代表了未來(lái)的發(fā)展方向,它也不能坐以待斃。英特爾在推出過(guò)渡型復(fù)雜指令集的處理器80486的同時(shí),推出了基于精簡(jiǎn)指令集的80860。這個(gè)產(chǎn)品事實(shí)證明不很成功,顯然,市場(chǎng)的傾向說(shuō)明了用戶對(duì)兼容性的要求比性能更重要。因此,英特爾在精簡(jiǎn)指令上推出80960后,就停止了這方面的工作,而專心做"技術(shù)落后"的復(fù)雜指令系列。在整個(gè)九十年代,工業(yè)界只有英特爾一家堅(jiān)持開(kāi)發(fā)復(fù)雜指令集的處理器,對(duì)抗著整個(gè)處理器工業(yè)。
應(yīng)該講英特爾在精簡(jiǎn)指令處理器的工作沒(méi)有白花,它在奔騰及以后的處理器設(shè)計(jì)上吸取了risc的長(zhǎng)處,使得處理器內(nèi)部流水線的效率提高很多。由于英特爾每一種pc機(jī)處理器的銷量都超過(guò)同時(shí)代所有的工作站處理器銷量的總和,它可以在每個(gè)處理器的開(kāi)發(fā)上投入比任何一種精簡(jiǎn)指令處理器多的多的研發(fā)經(jīng)費(fèi)和人力,這樣,英特爾通過(guò)高強(qiáng)度的投入,保證了它處理器性能提升得比精簡(jiǎn)指令還要快。而在精簡(jiǎn)指令陣營(yíng),九十年代五大工作站廠家太陽(yáng)、sgi、ibm、dec和hp各自為戰(zhàn),每家都生產(chǎn)自己的精簡(jiǎn)指令處理器,加上摩托羅拉為蘋(píng)果生產(chǎn)的powerpc,六家瓜分一個(gè)市場(chǎng),最后誰(shuí)也做不大、做不好。到了2000年前后,各家的處理器都做不下去了,或者全部或者部分地開(kāi)始采用英特爾的產(chǎn)品了。而最早的精簡(jiǎn)指令的mips處理器現(xiàn)在幾乎沒(méi)有人用了。軒尼詩(shī)和派特森作為兩個(gè)負(fù)責(zé)任的科學(xué)家,將英特爾處理器加入到自己編的教科書(shū)中,以免大學(xué)生們?cè)偃W(xué)習(xí) mips這樣的恐龍。
英特爾經(jīng)過(guò)十年努力終于打贏了對(duì)精簡(jiǎn)指令集的處理器之戰(zhàn)。需要強(qiáng)調(diào)的是,英特爾不是靠技術(shù),而是靠市場(chǎng)打贏的此戰(zhàn)。英特爾的表現(xiàn)在很多地方很值得圈點(diǎn)。首先,英特爾堅(jiān)持自己系列產(chǎn)品的兼容性,即保證以往的軟件程序肯定能在新的處理器上運(yùn)行。這樣時(shí)間一長(zhǎng),用戶便積累了很多在英特爾處理器上運(yùn)行的軟件。每次處理器升級(jí),用戶原來(lái)的軟件都能使,非常方便。因此大家就不愿意輕易更換其它廠家的處理器,即使那些處理器更快。而其它處理器生產(chǎn)廠家這點(diǎn)做的都沒(méi)有英特爾好,它們常常每過(guò)幾年就重起爐灶,害得用戶以前很多軟件不能用了,必須花錢(qián)買(mǎi)新的。時(shí)間一長(zhǎng),用戶就換煩了。第二,英特爾利用規(guī)模經(jīng)濟(jì)的優(yōu)勢(shì),大強(qiáng)度投入研發(fā),讓業(yè)界普遍看衰的復(fù)雜指令集處理器一代代更新。在九十年代初,英特爾的x86系列和精簡(jiǎn)指令集的處理器相比在實(shí)數(shù)運(yùn)算上要略遜一籌。但是,英特爾十幾年來(lái)堅(jiān)持不懈地努力,后來(lái)居上,而其它廠商因?yàn)楦髯允袌?chǎng)不夠大,每一個(gè)單獨(dú)的處理器芯片的投入遠(yuǎn)遠(yuǎn)不如英特爾,因此反倒落在了后面。與其說(shuō)英特爾戰(zhàn)勝其它廠商,不如說(shuō)它把競(jìng)爭(zhēng)對(duì)手熬死了。第三,英特爾并沒(méi)有拒絕新技術(shù),它也曾經(jīng)研制出兩個(gè)不錯(cuò)的精簡(jiǎn)指令的處理器,只是看到它們前途不好時(shí),立即停掉了它們。第四,英特爾運(yùn)氣很好,在精簡(jiǎn)指令處理器陣營(yíng)中,群龍無(wú)首。這一戰(zhàn),看似英特爾單挑諸多處理器領(lǐng)域的老大。但是,這幾家做精簡(jiǎn)指令處理器的公司因?yàn)楸舜嗽诠ぷ髡痉矫媸歉?jìng)爭(zhēng)對(duì)手,自然不會(huì)用對(duì)手的產(chǎn)品,而且各自為戰(zhàn),互相拆臺(tái)打價(jià)格戰(zhàn),最后,太陽(yáng)公司和ibm倒是把其他幾家工作站公司全收拾了,但自己也無(wú)力和英特爾競(jìng)爭(zhēng)了,現(xiàn)在這兩家自己也用上了英特爾的芯片。本來(lái),摩托羅拉最有可能一統(tǒng)精簡(jiǎn)指令處理器的天下和英特爾分庭抗禮,因?yàn)樗旧聿蛔龉ぷ髡?,而各個(gè)工作站廠商原本都是用它的68000系列處理器,但是摩托羅拉自己不爭(zhēng)氣。原因我們前面已經(jīng)分析過(guò)了。