在計算機發(fā)展的整個(gè)70年期間,曾經(jīng)出現了各種各樣的分立 和嵌入式處理器種群,它們已經(jīng)進(jìn)化,并且有些種群已經(jīng)逐漸消失。從這一進(jìn)化中產(chǎn)生了許多新奇的設計。有些新奇的概念繼續生存,有些幾乎立即消亡,而一些概 念僅僅存活了短暫的時(shí)間就銷(xiāo)聲匿跡了,但是,繼承他們基因的技術(shù)在后續的種群中再次出現。 本系列深度分析文章將調查13種不成功的處理器種群。這些文章探索了造成每一個(gè)處理器種群死亡的主要設計錯誤。每一個(gè)主要設計錯誤還用一個(gè)或幾 個(gè)例子來(lái)闡述。然而,隨著(zhù)技術(shù)使得許多老的概念煥發(fā)新生、重塑輝煌并再次成為新概念而獲得無(wú)止境的重復利用,也許不知什么時(shí)候,勇猛的探索者/設計師將接 下來(lái)遇見(jiàn)這些處理器種群當中的哪一個(gè)呢?這些種群可能被當成是恐龍:許多基于這些概念的處理器曾經(jīng)就是它們那個(gè)時(shí)代的優(yōu)勢種群,或者,已經(jīng)曾經(jīng)大放光芒并 極其繁榮而引起了大量的關(guān)注。正是因為不斷進(jìn)化的世界造成了我們的處理器種群的必然演化甚至滅絕,但這并不意味著(zhù)一個(gè)處理器種群在它存在的鼎盛時(shí)期不能合 理地適應世界。 錯誤1:設計高水平的計算機指令集架構以支持特殊的語(yǔ)言或語(yǔ)言域(Myopisaur)。 從最早的計算時(shí)代起,人們不斷推動(dòng)在抽象級解決編程問(wèn)題,從接線(xiàn)板編程、撥動(dòng)開(kāi)關(guān)輸入、機器語(yǔ)言輸入、匯編語(yǔ)言到整個(gè)一大群“高級”編程語(yǔ)言(HLL),從上世紀50年代的Fortran和Cobol,乃至上下半葉研究出來(lái)的幾百或上千種編程語(yǔ)言。 HLL一被開(kāi)發(fā)出來(lái),人們就開(kāi)始擔心用于捕獲編程問(wèn)題的答案HLL描述與被在目標機上執行的由HLL編譯器產(chǎn)生的實(shí)際指令之間的語(yǔ)義差異。每一 種編譯器常常產(chǎn)生不好的結果—有時(shí)候非常糟糕。即使現在,盡管編譯器的開(kāi)發(fā)經(jīng)歷了50多年,但是,對于許多算法來(lái)說(shuō),最高技能的人類(lèi)匯編語(yǔ)言編碼員所獲得 的編譯結果的質(zhì)量,要比由最佳的HLL編程器與最佳的可用最優(yōu)化編譯器所產(chǎn)生的代碼高一個(gè)數量級(或一個(gè)數量級以上)。 計算機研究人員和商用計算機供應商不可避免地開(kāi)始研究根據特殊的HLL或語(yǔ)言種群調節一種特殊處理器的可行性,以期把處理器的指令集與語(yǔ)言的要求更為緊密地匹配起來(lái),并縮小語(yǔ)義差異。其理論就是以那些目標HLL編寫(xiě)的程序應該在這些經(jīng)調整的機器上更為高效地執行。 一系列不合適的努力 為了實(shí)現這一方法—出現在從主機、微型機、分立微處理器IC到嵌入式處理器內核—的幾十年經(jīng)驗以及努力,已經(jīng)再三地確定這種方法是一個(gè)重大架構 錯誤。的確,在Hennessy和Patterson關(guān)于計算機架構的開(kāi)創(chuàng )性圖書(shū)中可以發(fā)現這是典型的“謬誤和缺陷”之一[HEN, p. 142]。 這一方法存在的基本問(wèn)題是多方面的:盡管已經(jīng)被調整為一種語(yǔ)言,但是,處理器可能(而且非?赡軐)被用于運行于其它語(yǔ)言編寫(xiě)的程序。經(jīng)調整的處理器將—因其針對特定語(yǔ)言的調整—在運行采用這些其它HLL編寫(xiě)的程序時(shí)效率比較低。 在較早時(shí)代,硬件資源很少被花費在極少被采用的指令的有效執行上—這是對昂貴的架構資本的一種劣質(zhì)應用。 因一種HLL構造的一些非常特殊的應用,針對特定語(yǔ)言的指令可能終止執行,并且對于典型和最常見(jiàn)的應用是沒(méi)有用的。因此,對這種指令的硬件本質(zhì)上是一種浪費。 語(yǔ)言演化;诠潭、針對特殊HLL硬件的計算機架構較之于語(yǔ)言本身趨向于在非常長(cháng)的時(shí)間內維持不變,因為軟件比硬件更加易于變化。 針對特殊HLL的處理器的流行被目標HLL的普及而被無(wú)情地終結。在各種語(yǔ)言中的少數體驗造成一種處理器具有最少的市場(chǎng)訴求。 因此,這種架構方法的缺陷花了很長(cháng)時(shí)間才顯現出來(lái)。從上世紀60年代至80年代中期,在RISC架構方法發(fā)源以前,基于復雜指令集計算機 (CISC)、針對特殊HLL的計算機架構激起了巨大的興趣。研究人員撰寫(xiě)了幾百或上千的論文,關(guān)于這個(gè)課題的專(zhuān)題研討會(huì )和座談會(huì )相當流行,而各個(gè)公司根 據這一設計哲學(xué)向市場(chǎng)推出各種真實(shí)的機器。 E-mode意味著(zhù)緩慢的模式 Burroughs公司的"E-mode"機可能是被設計為支持特殊語(yǔ)言的最著(zhù)名的機器系列。這個(gè)系列包括從上世紀60年代初至90年代的 B5000/6000/7000 和A-series機(一些兼容的處理器仍然在供貨)1。這些機器被設計為直接執行Algol 60。這種計算機家族還具有許多其它重要的功能,包括基于堆棧的架構、非平存儲器的利用、無(wú)匯編語(yǔ)言、操作系統和專(zhuān)用的管理子系統采用與Algol 60的直接對話(huà)編寫(xiě)、并且采用的是48比特的存儲字(加上標簽比特)。的確,在上世紀60年代和70年代期間,Burroughs幾乎成為了針對特殊 HLL的計算機設計方法的偶像。 在這個(gè)時(shí)期,這家公司生產(chǎn)了中等規模和小型的針對Cobol的主機(B2000/3000/4000),以及一種被用于B1700/1800機 的有趣的微碼架構,其中,包括一組可以被進(jìn)出交換以匹配不同語(yǔ)言的解釋指令集組。正如關(guān)于B5000的最熱心評論所說(shuō),Burroughs“專(zhuān)注于采用較 高級的編程注釋以實(shí)際地排斥機器或匯編語(yǔ)言”[EAR]。 遺憾的是,Burroughs E-mode機因HLL機的若干缺點(diǎn)而受損。它們在標準科學(xué)和商務(wù)處理語(yǔ)言—FORTRAN和COBOL—上的表現肯定是缺乏活力的。后來(lái),為這些機器構 建C編譯器以及把Unix引入它們的根本架構上的嘗試被證明是困難的,因架構的分層存儲結構沒(méi)有小的部分。要嘗試把針對特定HLL的指令集擴展至較低端的 機器(包括由Burroughs的接任者Unisys在1989年推出的一種單芯片實(shí)現—稱(chēng)為單芯片A系列主機處理器(SCAMP) [UNI])需要大量的微碼。遺憾的是,Algol 60從未真正以流行的編程語(yǔ)言起飛。這毫無(wú)疑問(wèn)減少了Burroughs機的普及程度。 注釋?zhuān)宏P(guān)于E-mode機—[ORG73]、[CHU-CAR]和[CHU-DOR]—有幾篇參考文選可用,這里僅僅給出了其中幾篇。 如上所述,Burroughs以面向B2000/3000/ 4000計算機的COBOL語(yǔ)言繼續它的針對特殊HLL的設計哲學(xué),它至少具有針對更為流行、鎖定商務(wù)的HLL的有點(diǎn)。 許多語(yǔ)言,同樣差的結果 針對特定HLL的處理器設計的 吸引力,還導致人們開(kāi)發(fā)直接運行用APL [HAS]、Lisp [WHO]、Prolog [FAG]以及其它直接針對Basic、Fortran、Pascal、PL/I和Snobol [DIT80]編寫(xiě)的程序的機器。的確,針對特定HLL的計算機架構設計方法所存在的問(wèn)題導致人們在1980年[DIT80]對它們進(jìn)行了深刻的反思,只 是在CISC工作站出現之前、以及后來(lái)在上世紀80年代中期RISC處理器和工作站出現之時(shí)。 從主機時(shí)代向著(zhù)小型和微型計算機時(shí)代的遷移,見(jiàn)證了上述針對特定HLL的計算機架構設計方法以Burroughs B1700/1800獲得重復使用,它為若干語(yǔ)言提供了微碼指令集(COBOL、RPG以及其中的Fortran) [ORG77]和許多專(zhuān)用的工作站級機器。被設計來(lái)直接執行LISP的機器就是一個(gè)特別著(zhù)名的例子(LISP機、Symbolics)。 分立微處理器時(shí)代也看到了若干針對特定HLL的微處理器架構,包括:被設計來(lái)運行Occam的Inmos Transputer;由貝爾實(shí)驗室設計的用于直接執行C程序的CRISP處理器[DIT87a, DIT87b];在所有這類(lèi)微處理器當中,也許最為著(zhù)名(或聲名狼藉)的就是英特爾公司的432,它被設計為運行以Ada語(yǔ)言編寫(xiě)的程序[GEH]。 Transputer及其Occam描述了一種針對特定HLL的處理器的功能之一,有時(shí)候,它的開(kāi)發(fā)者對于特殊的計算理論以信奉宗教般或準宗教般的熱愛(ài)投 入,從而以奴性的方式證明它自己對于一種編程語(yǔ)言的奉獻,并盡力進(jìn)行實(shí)質(zhì)努力以開(kāi)發(fā)一種支持它的機器。 盡管Transputer編譯器后來(lái)形成為更加傳統的HLL,但是,Transputer是以Occam推出的,這是一種基于Tony Hoare的計算序列處理概念。Transputer就是特定為Occam構建的。Inmos的領(lǐng)導人Iann Barron是Occam的最高牧師。Transputer的歷史描述了前面所列出的針對HLL的架構所存在的問(wèn)題之一。它的成功高度依賴(lài)于找到一個(gè)對 Occam有足夠興趣的市場(chǎng),以購買(mǎi)為它而設計的處理器,或者,對Transputer有足夠的興趣以采納它作為與眾不同的語(yǔ)言。這聽(tīng)起來(lái)很像一次宗教對 話(huà)。 英特爾公司的432被設計為執行Ada,Ada在更為一般的意義上說(shuō)是面向對象的語(yǔ)言。英特爾公司的432可能代表針對特定HLL處理器的極端 情況,它對任何語(yǔ)言均無(wú)法實(shí)現足夠的性能,包括用來(lái)設計它的Ada語(yǔ)言。實(shí)際上,英特爾公司的432微處理器整個(gè)冗長(cháng)的故事一直遭受設計錯誤的折磨。在 [GEH]中引證了一些設計錯誤,我們發(fā)現它們分別是: —Ada編譯器產(chǎn)生謬誤的指令; 因此,英特爾的432執行通用的基準比Vax 11/780要慢10~26倍,而比8MHz 8086要慢2~23倍。對于英特爾來(lái)說(shuō),幸運的是,x86處理器以及用于IBM PC的接任者的演化取得了成功,從而讓英特爾的432完全消失,它已經(jīng)被當今大多數的計算從業(yè)者所遺忘。 Java: 最新注定要失敗的努力 針對特定處理器的最后劫掠一直就在當今的嵌入式時(shí)代,利用由Sun、ARM以及其它供應商設計的特殊硬件來(lái)執行Java(Sun公司的 picoJava處理器以及ARM公司的Jazelle處理器等等)。這些針對Java的處理器鼓動(dòng)起一些興趣,但是,并未激發(fā)狂熱。在當代的嵌入式世界 中,設計工程師為了陳述Java應用,在傳統的高性能處理器以及即時(shí)(JIT)編譯上解釋Java已經(jīng)被證明是更加引人興趣的路線(xiàn)。此外,在嵌入式處理器 性能上的持續改善常常證明對于在嵌入式產(chǎn)品中的許多Java應用來(lái)說(shuō)是相當足夠的,這些應用主要是面向控制和用戶(hù)界面。如果針對特定語(yǔ)言的處理器路線(xiàn)通過(guò) 四個(gè)計算時(shí)代已經(jīng)證明它自身就是最令人誤導的方法的話(huà),對于那些希望利用硬件以超越通用目的處理器的方式加速語(yǔ)言、以及用那些語(yǔ)言編寫(xiě)的應用程序的人來(lái) 說(shuō),有什么其它的選項是不受限制的? 要拋棄的第一個(gè)概念一定是“一切關(guān)于語(yǔ)言”這個(gè)概念。的確,對于數據處理加強的應用來(lái)說(shuō),它更多的“一切關(guān)于”計算以及通信內核和嵌入在程序中 的算法。如果一個(gè)應用程序涉及重復地執行大矢量的標量積,那么,對于不采用具有規模適當的硬件乘法器或者更好的乘法-累加器(MAC)單元的處理器來(lái)說(shuō), 不論采用Fortran、Ada、C、Java、Basic或是COBOL編寫(xiě)的程序來(lái)執行這一應用,其速度均會(huì )很慢。如果對于所采用的語(yǔ)言來(lái)說(shuō),處理器 具有合適功能的單元和良好HLL編譯器(或解釋器),那么,以這些語(yǔ)言當中的任何一種表達的算法應該執行得相當快速,不論采用什么語(yǔ)言。 正是算法的特征—而不是語(yǔ)言的特征—被用于設計、修改或選擇正確的處理器。對于這一應用,你或者可以搜尋一種具有乘法器或MAC單元的處理器 (和或零開(kāi)銷(xiāo)的循環(huán))—DSP可能是良好的選擇,或者—甚至更好的—你可以采用指令集擴展以裁剪一個(gè)可配置的處理器內核,使之更為精確地滿(mǎn)足應用的性能和 通信要求。在這種意義上說(shuō),搜尋一種針對特定HLL的計算機架構現在可以由搜尋一種面向特定應用的指令集處理器(ASIP)來(lái)取代。 注釋*:本系列文章以“Processor Design: System-On-Chip Computing for ASICs and FPGAs, Jari Nurmi (editor), Springer, June 2007. ”一書(shū)的其中一章為基礎。 注釋1:作者之一Grant Martin為Burroughs工作。在這篇系列文章中一再采用E-mode機作為例子,可以被視為對令人感興趣的那個(gè)時(shí)代的有點(diǎn)懷舊和充滿(mǎn)深情的回憶。 參考文獻: [CHU] Yaohan Chu 編,High-Level Language Computer Architecture,Academic Press, 紐約, 1975 |