ARM處理器就是典型的RISC架構(gòu)
RISC(精簡指令集計(jì)算機(jī))與CISC(復(fù)雜指令集計(jì)算機(jī))兩大架構(gòu)設(shè)計(jì)哲學(xué)的爭斗已經(jīng)成為大家耳熟能詳?shù)臍v史,但是RISC的由來,在學(xué)術(shù)界和工業(yè)界以外卻很少見到有人提及。本文基于伯克利RISC項(xiàng)目領(lǐng)導(dǎo)者之一David Patterson的口述自傳,以及ACM數(shù)據(jù)庫的公開文獻(xiàn)整理,向大家介紹RISC從發(fā)明到廣為流傳的那段故事。
三十年前的論戰(zhàn) “我們認(rèn)為,基于RISC理念設(shè)計(jì)的處理器只有在極少數(shù)情況下慢于CISC處理器……過多的指令使得CISC處理器的控制邏輯復(fù)雜……研發(fā)成本上升……編譯器也不知道該如何利用這么復(fù)雜的指令集……CISC的設(shè)計(jì)思路應(yīng)當(dāng)反思?!薄?RISC的早期倡導(dǎo)者之一,David Patterson
“RISC與CISC的區(qū)別缺乏明確定義,而且RISC缺乏有力實(shí)驗(yàn)證明其宣稱的優(yōu)勢,僅停留在紙面的設(shè)計(jì)是不夠的,我們在VAX架構(gòu)的設(shè)計(jì)中發(fā)現(xiàn)很多與RISC理念相反的地方……實(shí)驗(yàn)數(shù)據(jù)證明RISC的出發(fā)點(diǎn)有誤……”—— VAX CISC架構(gòu)的設(shè)計(jì)者代表,Douglas W. Clark和William D. Strecker.
很難相信,觀點(diǎn)如此背道而馳的兩篇文章,竟然同時(shí)刊登在美國計(jì)算機(jī)學(xué)會(huì)旗下的同一期《計(jì)算機(jī)體系結(jié)構(gòu)通訊》雜志上。但事實(shí)上,正是論戰(zhàn)雙方的私下聯(lián)絡(luò)以及雜志編輯的有意安排,使得這場1980年的論戰(zhàn)得以見報(bào),于是留下了可供后人追溯的足夠史料。 ACM數(shù)據(jù)庫收錄的影印文檔中保留下的點(diǎn)點(diǎn)墨跡,似乎象征著這場論戰(zhàn)中四濺的火星。在1980年前后,幾乎所有的新處理器設(shè)計(jì)都在按照CISC的路線發(fā)展,不斷加入新的指令,使用微碼控制,試圖在指令集架構(gòu)層面對高層編程語言提供更直接的支持,這種發(fā)展路線使得硬件研發(fā)成本提高,研發(fā)周期變長,編譯器也不知道該如何利用越來越復(fù)雜的指令集。 來自IBM研究院的John Cocke首先意識到,更加精簡清爽的指令集設(shè)計(jì)將有助于減少硬件開發(fā)難度和成本,同時(shí)也有利于編譯器進(jìn)行代碼優(yōu)化工作,于是在他領(lǐng)導(dǎo)下的IBM 801項(xiàng)目第一次對RISC的概念進(jìn)行了實(shí)踐。隨后加州大學(xué)伯克利分校,斯坦福大學(xué)的幾位科學(xué)家也逐漸認(rèn)清CISC的弱點(diǎn),開始反其道而行之,著手進(jìn)行新的設(shè)計(jì)。那時(shí)剛剛博士畢業(yè)四年,在伯克利任教的年輕老師David Patterson就是其中一員,他決定在研究生課程中檢驗(yàn)自己的想法,讓學(xué)生們試著構(gòu)建一個(gè)指令精簡化的微處理器作為大作業(yè)。在微處理器流片成功之前,David就撰寫了文章發(fā)表,描述自己構(gòu)建處理器的新方法,認(rèn)為這種精簡設(shè)計(jì)將降低了硬件設(shè)計(jì)成本,縮短了開發(fā)周期,且方便編譯器進(jìn)行代碼生成,達(dá)到了更高的性能,結(jié)果引起爭論和質(zhì)疑,于是有了這場載入體系結(jié)構(gòu)發(fā)展史的論戰(zhàn)。
David Patterson,已從當(dāng)年不敢向伯克利申請職位的小老師,變成計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域的宗師級人物
反敗為勝
當(dāng)時(shí)站在David對立面的人包括當(dāng)時(shí)深受尊敬的VAX CISC架構(gòu)設(shè)計(jì)者Douglas W. Clark和William D. Strecker,David在文章中多次轉(zhuǎn)述VAX的工程經(jīng)驗(yàn),試圖證明RISC的優(yōu)勢,但VAX架構(gòu)設(shè)計(jì)者們的現(xiàn)身說法使得局面對David非常不利,他們以自己的第一手?jǐn)?shù)據(jù)將David文章中宣稱的RISC優(yōu)勢逐一駁倒,更加雪上加霜的是,第一組學(xué)生們流片回來的處理器,并未能體現(xiàn)出具備說服力的速度優(yōu)勢,于是進(jìn)一步引發(fā)了嘲笑。所幸第二組學(xué)生進(jìn)行的設(shè)計(jì)較為成功,于是David和學(xué)生們的成果得以登陸1983年國際固態(tài)電子電路大會(huì)(ISSCC)進(jìn)行展示,這個(gè)會(huì)議只接受流片成功的芯片設(shè)計(jì)投稿,因此門檻較高,同時(shí)也因?yàn)槌晒吭?,受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,是集成電路領(lǐng)域的頂級學(xué)術(shù)會(huì)議。 David在這里打了一個(gè)漂亮的翻身仗,盡管制造工藝是老舊的MOSIS,主頻比Intel同期制造的處理器80286慢上幾乎一半,晶體管數(shù)量也只有其三分之一,但是更加清爽的新式設(shè)計(jì)在編譯器等其他工具的輔助下竟然成功將Intel踩在腳下!ISSCC大會(huì)現(xiàn)場所有的大牌人物都目睹了這一歷史性時(shí)刻,業(yè)界嘩然。RISC提倡簡化指令集設(shè)計(jì),固定指令長度,統(tǒng)一指令編碼格式,加速常用指令,在當(dāng)時(shí)來看與當(dāng)時(shí)占據(jù)主流的CISC哲學(xué)頗有些背道而馳的意味,RISC和David Patterson早年受到質(zhì)疑和攻擊也就不難理解。但有了流片成功的芯片與性能測試結(jié)果在手,加之1983年的ISSCC大會(huì)上聚集了幾位與David Patterson觀點(diǎn)相同的支持者,RISC流派已經(jīng)開始占據(jù)上風(fēng)。
當(dāng)時(shí)流行的VAX計(jì)算機(jī)
風(fēng)靡業(yè)界 出于兼容性的考慮,David和學(xué)生們設(shè)計(jì)的芯片從未流入商業(yè)市場售賣,但是在David等人的推動(dòng)和宣傳下,這一設(shè)計(jì)理念隨后如星火燎原般擴(kuò)散,一大批公司開始采用這種理念設(shè)計(jì)新處理器,包括后來幾近統(tǒng)一武林的Intel。而當(dāng)初提倡RISC的先行者們也紛紛功成名就,John Cocke在1987年將計(jì)算機(jī)科學(xué)領(lǐng)域的最高獎(jiǎng)項(xiàng)“圖靈獎(jiǎng)”收入囊中,而David Patterson在芯片設(shè)計(jì)與計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域也已經(jīng)與“泰山北斗”劃上等號。 RISC的設(shè)計(jì)理念催生的一系列新架構(gòu)中包含了許多我們耳熟能詳?shù)拿郑▽W(xué)術(shù)上認(rèn)為比較成功的DEC Alpha,后來寫入經(jīng)典教科書的MIPS,以線程級并行度繞過指令級并行度障礙的SUN SPARC,以及現(xiàn)在統(tǒng)治嵌入式市場的ARM。這些雨后春筍般涌現(xiàn)的RISC處理器將CISC vs RISC的世紀(jì)之戰(zhàn)推向更高潮,精簡指令集和復(fù)雜指令級劃分為兩個(gè)陣營,爭論不斷。以x86為代表的復(fù)雜指令集,其指令編碼格式混亂,導(dǎo)致編碼器復(fù)雜,流水線設(shè)計(jì)較為困難,指令不定長也帶來指令對齊方面的額外挑戰(zhàn)。而RISC指令集的編碼格式相對整潔,流水線設(shè)計(jì)容易,但是由于指令定長,導(dǎo)致一些比較大的常數(shù)\地址必須拆散才能加載,代碼密度不夠高,某些情況下會(huì)浪費(fèi)指令緩存的容量和帶寬,因此兩種指令集都不是不敗金身,本質(zhì)上都屬于雙刃劍。 在計(jì)算機(jī)體系結(jié)構(gòu)還不是完全成熟的時(shí)候,RISC的速度優(yōu)勢看上去更加具有吸引力,連Intel都舉棋不定,只得兩條腿走路,在繼續(xù)更新CISC產(chǎn)品線的同時(shí),也推出了i860系列RISC處理器,安迪·格魯夫當(dāng)時(shí)表示,CISC處理器是Intel一直在做的產(chǎn)品線,兼容所有軟件,而RISC處理器速度更快,但沒有什么軟件能在它上面運(yùn)行。連Intel都不知道未來發(fā)展方向會(huì)是在RISC還是CISC,只好兩頭下注。在風(fēng)頭最勁的時(shí)候,RISC處理器一度占據(jù)在服務(wù)器市場占據(jù)統(tǒng)治地位。當(dāng)時(shí)的爭論與工業(yè)實(shí)踐中提煉出的RISC優(yōu)勢,直到現(xiàn)在仍被許多人談?wù)?,但是,歷史的進(jìn)步無情地碾碎了這一切。
融為一爐 強(qiáng)大的Intel在90年代中期的P6架構(gòu)里開始引入亂序多發(fā)射技術(shù),這幫助Intel第一次在服務(wù)器市場上拿出了性能上可以與RISC比肩的處理器,并且第一次實(shí)現(xiàn)了CISC指令集在解碼階段上向RISC類指令的轉(zhuǎn)化,將后端流水線轉(zhuǎn)換成類RISC的形式,彌補(bǔ)了CISC流水線實(shí)現(xiàn)上的劣勢。許多人認(rèn)為這是Intel在向RISC指令集學(xué)習(xí),是在事實(shí)上宣布了RISC的勝利,可是ARM也于同期引入了代碼密度更高的Thumb新指令集,力圖提高指令緩存等劣勢項(xiàng)目上的效率,這表明RISC也在向CISC取經(jīng),雙方都在相互取長補(bǔ)短。而RISC風(fēng)格的設(shè)計(jì)的確能輸出速度優(yōu)勢,這在一部分人心目中催生了錯(cuò)誤的RISC優(yōu)越論。實(shí)質(zhì)上隨著體系結(jié)構(gòu)和微電子技術(shù)的進(jìn)步,CISC在架構(gòu)上的所謂劣勢逐漸縮小,乃至消失,而RISC陣營卻在Intel的猛攻下節(jié)節(jié)敗退,時(shí)至今日,Intel的服務(wù)器CPU占據(jù)了95%的市場份額,RISC的優(yōu)越論也逐漸偃旗息鼓。
P6架構(gòu)中,Intel第一次引入RISC風(fēng)格的流水線
今年的國際高性能計(jì)算機(jī)體系結(jié)構(gòu)大會(huì)上,來自美國威斯康辛大學(xué)的一個(gè)研究小組做了一個(gè)測量分析報(bào)告,根據(jù)他們披露的測試數(shù)據(jù),CISC與RISC在指令集架構(gòu)層面上的差異已經(jīng)較小,由先進(jìn)的微架構(gòu)和物理設(shè)計(jì)、工藝實(shí)現(xiàn)帶來的改進(jìn)足以掩蓋指令集架構(gòu)層面的劣勢,CISC vs RISC的世紀(jì)之戰(zhàn)實(shí)際上沒有勝負(fù),雙方的精華已經(jīng)融為一爐。結(jié)果這個(gè)報(bào)告受到一些學(xué)者的批評,有意思的是,批評的原因并不是在于報(bào)告本身結(jié)論錯(cuò)誤,而是因?yàn)檫@個(gè)報(bào)告所得出的結(jié)論,其實(shí)是大家早都已經(jīng)認(rèn)可的共識,沒有必要再在大會(huì)上宣讀! 如何評價(jià)一個(gè)架構(gòu)設(shè)計(jì)理念是好是壞呢?筆者認(rèn)為,應(yīng)當(dāng)是后人們看來理所當(dāng)然的 —— “為什么不這樣做呢?還好當(dāng)初沒有放棄這條路!”今天我們談到RISC留下的遺產(chǎn)時(shí),已經(jīng)很難找到負(fù)面評價(jià)的理由,RISC不再是缺乏支持的異類,而是現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)的基本組成部分之一,沒有人再對RISC存在的必要性提出懷疑,這大概就是對它最好的認(rèn)可。
|