0
本文作者: 包永剛 | 2019-02-01 19:03 |
雷鋒網(wǎng)按:近幾年來,不論是普通消費(fèi)者還是科研人員們都可以感受到兩種浪潮,一種是CPU速度的提升越來越不顯著了,我們說CPU制造商又在“擠牙膏”;另一方面,在深度學(xué)習(xí)的刺激下,各個半導(dǎo)體巨頭和一群 AI 初創(chuàng)企業(yè)都開始宣傳自己的 AI 芯片。我們仿佛看到一類芯片逐漸走向慢車道,另一類芯片則準(zhǔn)備搭臺唱戲、躍躍欲試。
這種柳暗花明的背后,顯示的正是計(jì)算機(jī)計(jì)算架構(gòu)的時代變革;新的方法、新的思維、新的目標(biāo)引領(lǐng)了新的浪潮。2017 年圖靈獎的兩位得主 John L. Hennessy 和 David A. Patterson 就是這個新浪潮的見證者和引領(lǐng)者。近日他們在ACM 通訊(Communications of the ACM)發(fā)表了一篇長報(bào)告《A New Golden Age for Computer Architecture》,詳細(xì)描述了引發(fā)計(jì)算機(jī)架構(gòu)新時代到來的種種變化,他們也展望未來的十年將是計(jì)算機(jī)體系架構(gòu)領(lǐng)域的“新的黃金十年”。
雷鋒網(wǎng)把這篇文章全文編譯如下,本篇為上篇,下篇參見這里。
另外二位還有過一次輕松的訪談,可以參見這里。
ISCA 2018 ,2017 圖靈獎頒獎現(xiàn)場,John L. Hennessy(左) 和 David A. Patterson(右)與 Alan Turing 的半身像合影
2018年6月4日,我們回顧了自20世紀(jì)60年代以來計(jì)算機(jī)架構(gòu)的發(fā)展,并以此開始了我們的圖靈講座。除了那個回顧,我們還在講座中介紹了當(dāng)前的難題和未來機(jī)遇。計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域?qū)⒂瓉碛忠粋€黃金十年,就像20世紀(jì)80年代我們做研究那時一樣,新的架構(gòu)設(shè)計(jì)將會帶來更低的成本,更優(yōu)的能耗、安全和性能。
“不能銘記過去的人注定要重蹈覆轍”
——George Santayana,1905
軟件與硬件的對話,是通過一種稱為指令集的體系結(jié)構(gòu)進(jìn)行來的。在20世紀(jì)60年代初,IBM擁有四條互不兼容的計(jì)算機(jī)系列,分別針對小型企業(yè),大型企業(yè),科研單位和即時運(yùn)算,每個系列都有自己的指令集、軟件棧和I/O系統(tǒng)。
IBM的工程師們,也包括ACM圖靈獎獲獎?wù)逨red Brooks在內(nèi),希望能夠創(chuàng)建一套新的ISA,將這四套指令集有效統(tǒng)一起來,為此他們需要一種可以讓低端的8位計(jì)算機(jī)和高端的64位計(jì)算機(jī)共享一套指令集的解決方案。
實(shí)際上,數(shù)據(jù)通路的加寬和縮小相對是比較容易的,當(dāng)時的工程師們面臨的最大挑戰(zhàn)是處理器中的控制器部分。受軟件編程的啟發(fā),計(jì)算機(jī)先驅(qū)人物、圖靈獎獲得者M(jìn)aurice Wilkes提出了簡化控制流程的思路,即將控制器部分定義為一個被稱為“控制存儲器”的二維數(shù)組,可通過內(nèi)存實(shí)現(xiàn),比使用邏輯門的成本要低得多。數(shù)組的每一列對應(yīng)一條控制線,每一行對應(yīng)一條微指令,寫微指令的操作稱為微編程,控制存儲器包含使用微指令編寫的指令集解釋器,因此執(zhí)行一條傳統(tǒng)指令需要多個微指令完成。
下圖列出了IBM在1964年4月7日發(fā)布的新System/360系列計(jì)算機(jī)的指令集,四種型號之間的數(shù)據(jù)通路寬度相差8倍,內(nèi)存容量相差16倍,頻率相差近4倍,最終性能相差50倍。其中M65機(jī)型的控制存儲器容量最大,成本和售價也最昂貴,而最低端M30機(jī)型的控制存儲器容量最小,因此也需要有更多的微指令來執(zhí)行System/360的指令。
IBM將公司的未來押在了這套新指令集上,寄希望其能革新計(jì)算行業(yè),贏得未來。而最終IBM也如愿以償,成功主宰了這一市場,并將其影響力延續(xù)至今,這些55年前機(jī)型的后代產(chǎn)品現(xiàn)在仍能為IBM帶來每年100億美元的收入。
現(xiàn)在看來,盡管市場對技術(shù)問題做出的評判還不夠完善,但由于硬件系統(tǒng)架構(gòu)與商用計(jì)算機(jī)之間的密切聯(lián)系,市場最終成為計(jì)算機(jī)架構(gòu)創(chuàng)新的是否成功的關(guān)鍵性因素,這些創(chuàng)新往往需要工程人員方面的大量投入。
集成電路,CISC,432,8086,IBM PC
當(dāng)計(jì)算機(jī)進(jìn)入集成電路時代,摩爾定律的力量可以使控制存儲器被設(shè)計(jì)的更大,而這反過來又催生了更復(fù)雜的指令集,如Digital Equipment公司于1977年發(fā)布的VAX-11/780機(jī)型,其控制存儲器容量就達(dá)到了5120指令字*96bit,而其前代型號僅為256指令字*56bit。
于此同時,一些制造商開始設(shè)計(jì)可記錄控制存儲器(WCS),放開微編程功能以使客戶可以自行定制功能,其中最有名的機(jī)型是圖靈獎得主Chuck Thacker和Butler Lampson 和他的同事在1973年為施樂公司Palo Alto研究中心開發(fā)的Alto計(jì)算機(jī)。這是第一臺個人計(jì)算機(jī),配備有首款點(diǎn)陣顯示器和首個以太網(wǎng)局域網(wǎng),其控制器存儲在一個容量為4096指令字*32bit的WCS中。
另一邊,20世紀(jì)70年代的微處理器仍處于8位時代(如Intel的8080處理器),主要采用匯編語言編程,各家公司的設(shè)計(jì)師會不斷加入新的指令來超越競爭對手,并通過匯編語言展示他們的優(yōu)勢。
戈登·摩爾認(rèn)為,Intel的下一代指令集將會伴隨Intel的一生,他聘請了大批聰明的計(jì)算機(jī)科學(xué)博士,并將他們送到波特蘭的一個新工廠,以打造下一個偉大的指令集架構(gòu)。這個被Intel最初命名為8800的計(jì)算機(jī)架構(gòu)項(xiàng)目雄心勃勃,它具有32位尋址能力、面向?qū)ο蟮捏w系結(jié)構(gòu),可變位長的指令以及用當(dāng)時最新編程語言Ada編寫的操作系統(tǒng),是20世紀(jì)80年代最具挑戰(zhàn)性的一個項(xiàng)目。
可惜天不遂愿,這個項(xiàng)目在幾年間再三延期,迫使Intel在圣克拉拉啟動了一項(xiàng)緊急更換計(jì)劃,要在1979年推出一款16位處理器,也就是后來的8086。Intel給了新團(tuán)隊(duì)52周時間來開發(fā)新的指令集以及設(shè)計(jì)和構(gòu)建芯片。由于時間緊迫,這個團(tuán)隊(duì)實(shí)際上是把 8080 的 8 位寄存器和指令集擴(kuò)展成了 16 位,設(shè)計(jì)ISA部分僅僅花了10個人3周時間。最終8086如期完成,但在發(fā)布時卻沒引起什么關(guān)注。
這一次Intel很走運(yùn),當(dāng)時IBM正在開發(fā)一款對位Apple II的個人計(jì)算機(jī),正需要16位處理器。IBM一度對Motorola 68000處理器很感興趣,它擁有類似于IBM 360的指令集,但性能表現(xiàn)卻無法滿足IBM激進(jìn)的需求,故轉(zhuǎn)而使用Intel 8086的8位總線版。IBM于1981年8月12日宣布推出該機(jī)型,全球銷量高達(dá)1億臺,為Intel這套指令集鋪墊了一個非常光明的未來。
Intel原本的8800項(xiàng)目更名了為iAPX-432,并最終在1981年推出,但它需要多塊芯片并且存在嚴(yán)重的性能問題,最終于1986年終止。同樣在這一年,Intel推出了80386處理器,將8086指令集的寄存器從16位擴(kuò)展到了32位。戈登?摩爾的預(yù)言成為了現(xiàn)實(shí),Intel的下一代指令集確實(shí)一直存續(xù)下來,但市場做出的選擇是臨危上馬的8086,而不是被寄予厚望的iAPX-432,這對摩托羅拉68000和iAPX-432的架構(gòu)師來講,都是個現(xiàn)實(shí)的教訓(xùn),市場永遠(yuǎn)是沒有耐心的。
從CISC到RISC
20世紀(jì)80年代初,人們開始研究CISC(復(fù)雜指令集計(jì)算機(jī))控制存儲器中的大型微程序,而Unix系統(tǒng)的誕生則證明了可以使用高級語言來編寫操作系統(tǒng),因此隨后問題的關(guān)鍵從“編程者會使用什么匯編語言”變成了“編譯器會生成什么指令”,軟硬件接口的顯著改進(jìn)為架構(gòu)創(chuàng)新帶來了機(jī)會。
圖靈獎得主John Cocke和他的同事為小型計(jì)算機(jī)開發(fā)了更簡單的指令集和編譯器,并將編譯器的目標(biāo)設(shè)定為“僅使用 IBM 360指令集中簡單的寄存器到寄存器操作,只以簡單的Load和Store操作訪問內(nèi)存”。他們發(fā)現(xiàn),這樣簡化的流程可以讓程序運(yùn)行速度快上3倍。Emer和Clark發(fā)現(xiàn),VAX指令中有20%的常用指令需要60%的微代碼(microcode),但僅占據(jù)0.2%的執(zhí)行時間。
David Patterson把在DEC一次學(xué)術(shù)休假投入到了研究減少VAX指令中的漏洞上。他認(rèn)為,如果處理器制造商想要設(shè)計(jì)更龐大的復(fù)雜指令集,就免不了需要一種修復(fù)微代碼漏洞的方法。Patterson就此問題寫了一篇論文,但《Computer》期刊卻拒絕刊登,審稿人認(rèn)為,使用如此復(fù)雜以至于需要修補(bǔ)的指令集來設(shè)計(jì)處理器是很糟糕的。
雖然現(xiàn)在來看,現(xiàn)代的CISC處理器確實(shí)包含微代碼修復(fù)機(jī)制,但當(dāng)時的這次拒稿卻讓人們懷疑復(fù)雜指令集在處理器方面的價值,這也啟發(fā)了他去開發(fā)更簡單的精簡指令集,以及RISC(精簡指令集計(jì)算機(jī))。
這些觀點(diǎn)的產(chǎn)生,以及由匯編語言向高級語言的轉(zhuǎn)變,為CISC向RISC的過渡創(chuàng)造了條件。首先,精簡指令集是經(jīng)過簡化的,其指令通常和微指令一樣簡單,硬件可以直接執(zhí)行,因此無需微代碼解釋器;第二,之前用于微代碼解釋器的快速存儲器被用作了RISC的指令緩存;第三,基于Gregory Chaitin圖染色法的寄存器分配器,使編譯器能夠更簡易、高效地使用寄存器,這指令集中那些寄存器到寄存器的操作有很大好處;最后,集成電路規(guī)模的發(fā)展,使20世紀(jì)80年代的單塊芯片足以包含完整的32位數(shù)據(jù)路徑以及相應(yīng)的指令和數(shù)據(jù)緩存。
下圖是加州大學(xué)伯克利分校1982年研發(fā)的RISC-I處理器和斯坦福大學(xué)1983年研發(fā)的MIPS處理器,兩顆芯片充分展示了RISC的優(yōu)勢,并最終發(fā)表在1984年IEEE國際固態(tài)電路會議上。加州大學(xué)和斯坦福大小的研究生研發(fā)出了比行業(yè)內(nèi)現(xiàn)有產(chǎn)品更優(yōu)秀處理器,這是非常了不起的時刻。
這些由學(xué)術(shù)機(jī)構(gòu)開發(fā)的芯片,激勵了許多企業(yè)開始發(fā)力RISC處理器,并成為此后15年中發(fā)展最快的領(lǐng)域。其原因是處理器的性能公式:
時間/程序=操作數(shù)/程序*(時鐘周期)/指令*時間/(時鐘周期)
DEC公司的工程師后來表明,CISC處理器執(zhí)行每個程序的操作數(shù)大約為RISC處理器的75%(上式第一項(xiàng)),在使用類似的技術(shù)時,CISC處理器執(zhí)行每個指令要多消耗5到6個時鐘周期(上式第二項(xiàng)),使得RISC處理器的速度大約快了3倍。
這樣的公式在20世紀(jì)80年代還沒有進(jìn)入計(jì)算機(jī)體系結(jié)構(gòu)的書中,所以我們在1989年編寫了《Computer Architecture: A Quantitative Approach》一書,使用測量和基準(zhǔn)測試來對計(jì)算機(jī)架構(gòu)進(jìn)行量化評估,而不是更多地依賴于架構(gòu)師的直覺和經(jīng)驗(yàn),使用的量化方法也受到了圖靈獎得主Donald Knuth關(guān)于算法的書的啟發(fā)。
VLIW、EPIC、Itanium
指令集架構(gòu)的下一次創(chuàng)新試圖同時惠及RISC和CISC,即超長指令字(VLIW)和顯式并行指令計(jì)算機(jī)(EPIC)的誕生。這兩項(xiàng)發(fā)明由Intel和惠普共同命名,在每條指令中使用捆綁在一起的多個獨(dú)立操作的寬指令。與RISC一樣,VLIW和EPIC的目的是將工作負(fù)載從硬件轉(zhuǎn)移到編譯器上,它們的擁護(hù)者認(rèn)為,如果用一條指令可以指定六個獨(dú)立的操作(兩次數(shù)據(jù)傳輸,兩次整數(shù)操作和兩次浮點(diǎn)操作),并且編譯器技術(shù)可以有效地將操作分配到六個指令槽,則硬件可以變得更簡單。
Intel和惠普合作設(shè)計(jì)了一款基于EPIC理念的64位處理器Itanium(安騰),想用其取代32位x86處理器。Intel和惠普對Itanium抱有很高的期望,但實(shí)際情況卻與他們的預(yù)期并不相符,EPIC雖然適用于高度結(jié)構(gòu)化的浮點(diǎn)程序,但卻很難在可預(yù)測性較低的緩存丟失或難以預(yù)測分支的整型程序上實(shí)現(xiàn)高性能。
Donald Knuth后來指出,Itanium的設(shè)想非常棒,但事實(shí)證明滿足這種設(shè)想的編譯器基本上不可能寫出來。開發(fā)人員注意到Itanium的延遲和性能表現(xiàn)不佳,并借鑒泰坦尼克號事件重新將其命名為“Itanic”。不過正如前面所提到的,市場永遠(yuǎn)是沒有耐心的,最終64位的x86-64成為了繼承者,沒有輪到Itanium。
不過一個好消息是,VLIW仍然小范圍應(yīng)用于數(shù)字信號處理等對分支預(yù)測和緩存要求不高的領(lǐng)域。
RISC vs. CISC,PC和后PC時代的宿命對決
Intel和AMD依靠500人的設(shè)計(jì)團(tuán)隊(duì)和卓越的半導(dǎo)體技術(shù)來縮小x86和RISC之間的性能差距,而受到精簡指令相對于復(fù)雜指令性能優(yōu)勢的啟發(fā),Intel和AMD將RISC微指令的執(zhí)行流程化,使指令解碼器在運(yùn)行中將復(fù)雜的x86指令轉(zhuǎn)換成類似RISC的內(nèi)部微指令,從而讓x86處理器可以吸收RISC在性能分離指令、數(shù)據(jù)緩存、芯片二級緩存、深度流水線以及同時獲取和執(zhí)行多個指令等許多優(yōu)秀的設(shè)計(jì)。在2011年P(guān)C時代的巔峰時期,Intel和AMD每年大約出貨3.5億顆x86處理器。PC行業(yè)的高產(chǎn)量和低利潤率也意味著價格低于RISC計(jì)算機(jī)。
在Unix市場中,軟件供應(yīng)商會為不同的復(fù)雜指令集(Alpha、HP-PA、MIPS、Power和SPARC)提供不同的軟件版本,而PC市場上絕對主流的指令集只有一套,軟件開發(fā)人員只需兼容x86指令集即可。全球每年出貨數(shù)億臺PC,軟件就成為了一個巨大的市場。更大的軟件基礎(chǔ)、相似的性能和更低的價格使得x86處理器在2000年之前同時統(tǒng)治了臺式機(jī)和小型服務(wù)器市場。
蘋果公司在2007年推出了iPhone,開創(chuàng)了后PC時代。智能手機(jī)公司不再購買處理器,而是使用其他公司的設(shè)計(jì)來構(gòu)建自己的SoC。移動設(shè)備設(shè)計(jì)人員需要對芯片面積和能效以及性能進(jìn)行綜合評估,CISC處理器在這一點(diǎn)上處于劣勢。此外,物聯(lián)網(wǎng)的到來需要海量的處理器,更加需要在芯片尺寸、功率、成本和性能上做權(quán)衡。這種趨勢增加了設(shè)計(jì)時間和成本的重要性,進(jìn)一步使CISC處理器處于不利地位。在今天這個“后PC時代”,x86處理器的出貨量自2011年達(dá)到峰值以來,每年下降近10%,而RISC處理器的出貨量則飆升至200億。如今,99%的32位和64位處理器都是RISC處理器。
總結(jié)這些歷史,可以說市場已經(jīng)解決了RISC和CISC宿命之爭。CISC贏得了PC時代的后期階段,但RISC正在后PC時代占據(jù)主導(dǎo)。復(fù)雜指令集領(lǐng)域已經(jīng)幾十年沒有新的指令集出現(xiàn)了,對于今天的通用處理器來說,最佳的選擇仍然是精簡指令集。
處理器架構(gòu)當(dāng)前面臨的挑戰(zhàn)
“如果一個問題無解,那它可能不是一個問題,而是一個事實(shí),我們不需要解決,而是隨著時間的推移來處理?!?/p>
——Shimon Peres
雖然前面的部分聚焦在指令集架構(gòu)的設(shè)計(jì)上,但大部分計(jì)算機(jī)架構(gòu)師并不設(shè)計(jì)新的指令集,而是利用當(dāng)前的實(shí)現(xiàn)技術(shù)來實(shí)現(xiàn)現(xiàn)有的ISA。自20世紀(jì)70年代后期以來,選擇的技術(shù)一直是基于MOS(金屬氧化物半導(dǎo)體)的集成電路,首先是 nMOS(n型金屬氧化物半導(dǎo)體),然后是CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)。
戈登·摩爾在1965年預(yù)測,集成電路的晶體管密度會每年翻一番,1975年又改為每兩年翻一番,這一預(yù)測最終被稱為摩爾定律。在這一預(yù)測中,晶體管密度呈二次增長,驚人的進(jìn)化速度使架構(gòu)師可以用更多晶體管來提高性能。
摩爾定律和登納德縮放定律的失效
如圖2所示,摩爾定律已經(jīng)持續(xù)了幾十年,但它在2000年左右開始放緩,到了 2018 年,實(shí)際結(jié)果與摩爾定律的預(yù)測相差了15倍,但摩爾在2003年做的判斷已不可避免(可參考GE Moore 的《No exponential is forever: But 'forever' can be delayed!》論文)。基于當(dāng)前的情況,這一差距還將持續(xù)增大,因?yàn)镃MOS已經(jīng)接近極限。
圖2 單個英特爾微處理器上的晶體管數(shù)量 vs. 摩爾定律
與摩爾定律相伴的是由羅伯特·登納德(Robert Dennard)預(yù)測的登納德縮放定律(Dennard scaling;又稱作MOSFET縮放定律)。Robert Dennard 在 1974 年提出,晶體管不斷變小,但芯片的功率密度不變。隨著晶體管密度的增加,每個晶體管的能耗將降低,因此硅芯片上每平方毫米上的能耗幾乎保持恒定。由于每平方毫米硅芯片的計(jì)算能力隨著技術(shù)的迭代而不斷增強(qiáng),計(jì)算機(jī)將變得更加節(jié)能。不過,登納德縮放定律從 2007 年開始大幅放緩,大概在2012 年接近失效(見圖 3)。
圖3每個芯片上的晶體管及每平方毫米的功率
1986 年至 2002 年間,利用指令級并行(ILP)是提高架構(gòu)性能的主要方法,伴隨著晶體管速度的提高,其性能每年能提高約50%。登納德縮放定律的終結(jié)意味著架構(gòu)師必須找到更有高效的方法利用并行性。
要理解增加ILP 所帶來高效率,可以看一看當(dāng)前的處理器核心比如ARM、英特爾、AMD。假設(shè)該芯片有15級流水線(管線),每個時鐘周期可以發(fā)送 4 條指令,那么它在任何時刻都有多達(dá)60條指令,包括大約15個分支,它們占執(zhí)行指令的大約25%。為了能夠充分利用流水線,需要預(yù)測分支,并根據(jù)推測將代碼放入流水線以便執(zhí)行。推測的使用同時是 ILP高性能和低能效的源頭。如果分支預(yù)測達(dá)到完美,推測就能提高 ILP 性能,但能耗會增加一些(也可能節(jié)約能耗),但如果分支預(yù)測出現(xiàn)失誤,處理器就必須放棄錯誤的推測指令,計(jì)算所耗能量就會被浪費(fèi)。處理器的內(nèi)部狀態(tài)也必須恢復(fù)到錯誤預(yù)測分支之前的狀態(tài),這將消耗額外的能量和時間。
要理解這種設(shè)計(jì)的挑戰(zhàn)性,想一想正確預(yù)測15個分支就可知道其中的難度。如果處理器架構(gòu)想把性能的浪費(fèi)控制在10%以內(nèi),那么它必須在 99.3%的時間里正確預(yù)測每個分支。很少有通用程序能夠如此準(zhǔn)確地預(yù)測。
要理解性能浪費(fèi)疊加的結(jié)果,可以參見圖4中,圖中顯示了有效執(zhí)行的指令,但由于處理器推測錯誤而被浪費(fèi)。對英特爾酷睿 i7 基準(zhǔn)測試上,19%的指令都被浪費(fèi)了,但能量的浪費(fèi)情況更加嚴(yán)重,因?yàn)樘幚砥鞅仨毷褂妙~外的能量才能恢復(fù)到推測失誤前的狀態(tài)。這樣的測試導(dǎo)致許多人得出結(jié)論,架構(gòu)師需要一種不同的方法來實(shí)現(xiàn)性能改進(jìn)。于是迎來了多核時代的誕生。
圖4 不同的SPEC整型數(shù)基準(zhǔn)測試,英特爾酷睿 i7 浪費(fèi)的指令占完成指令總數(shù)的百分比
多核將識別并行性和決定如何利用并行性的任務(wù)轉(zhuǎn)移給程序員和編程語言。多核并未解決節(jié)能的挑戰(zhàn),而這種挑戰(zhàn)因登納德縮放定律終結(jié)更加嚴(yán)峻。每個活躍的核都會消耗能量,無論其對計(jì)算是否有有效貢獻(xiàn)。一個主要的障礙可以用阿姆達(dá)爾定律(Amdahl's Law)表述,該定理認(rèn)為,在并行計(jì)算中用多處理器的應(yīng)用加速受限于程序所需的串行時間百分比。這一定律的重要性參見圖5,與單核相比,多達(dá)64個核執(zhí)行應(yīng)用程序速度的差別,假設(shè)串行執(zhí)行的不同部分只有一個處理器處于活動狀態(tài)。例如,如果只有1%的時間是串行的,那么 64核的配置可加速大約35倍,當(dāng)然能量也與64個處理器成正比,大約有45% 的能量被浪費(fèi)。
圖5 阿姆達(dá)爾定律對程序加速的影響
真實(shí)的程序當(dāng)然會更加復(fù)雜,部分組件允許在給定時刻使用不同數(shù)量的處理器。然而,需要定期性通信和同步意味著大部分應(yīng)用僅可高效使用一部分處理器。盡管阿姆達(dá)爾定律已經(jīng)出現(xiàn) 50 多年了,這仍然是一個很大的困難。
隨著登納德縮放定律的終結(jié),芯片內(nèi)核數(shù)量的增加意味著能耗也隨之增加。不幸的是,進(jìn)入處理器的電能有一部分會轉(zhuǎn)化為熱能,因此多核處理器受限于熱耗散功率(TDP),即封裝和冷卻系統(tǒng)在最大負(fù)載時的驅(qū)散熱量的最大限度。盡管一些高端數(shù)據(jù)中心可能使用更先進(jìn)的封裝和冷卻技術(shù),但沒有一個計(jì)算機(jī)用戶想要在自己桌子上放置小型熱交換器,或者為手機(jī)增加散熱器。TDP 的限制性直接導(dǎo)致了暗硅時代,也就是處理器通過降低時鐘頻率或關(guān)閉空閑內(nèi)核來防止處理器過熱。這種方法的另一種解釋是:一些芯片可將其寶貴的能量從空閑內(nèi)核轉(zhuǎn)移到活躍內(nèi)核。
登納德縮放定律的結(jié)束,摩爾定律放緩以及阿姆達(dá)爾定律正當(dāng)其時,意味著低效性將每年的性能改進(jìn)限制在幾個百分點(diǎn)(如6所示)。想獲得高的性能改進(jìn)(像 20 世紀(jì)八九十年代那樣)需要新的架構(gòu)方法,新方法應(yīng)能更加高效地利用集成電路。接下來我們將討論現(xiàn)代計(jì)算機(jī)的另一個主要缺陷——計(jì)算機(jī)安全的支持以及缺乏,之后再繼續(xù)探討有效利用集成電路的新方法。
圖6 計(jì)算機(jī)性能的提升(SPECintCPU)
被忽略的計(jì)算機(jī)安全
20 世紀(jì) 70 年代,處理器架構(gòu)師主要專注于計(jì)算機(jī)安全,涉及保護(hù)環(huán)和功能安全。架構(gòu)師們意識到,大部分漏洞都存在于軟件中,但他們認(rèn)為架構(gòu)能會有所幫助。這些功能大部分未被操作系統(tǒng)使用,這些操作系統(tǒng)有意專注于所謂的良性環(huán)境(如個人電腦),并且這些功能涉及大量消耗,因此被淘汰。在軟件社區(qū)中,很多人認(rèn)為正式驗(yàn)證技術(shù)如微內(nèi)核等技術(shù)會為構(gòu)建高度安全的軟件提供有效保障。不幸的是,我們的軟件系統(tǒng)規(guī)模和性能驅(qū)動器意味著此類技術(shù)無法跟上處理器性能。結(jié)果就是大型軟件系統(tǒng)仍然有很多安全漏洞,且由于海量在線個人信息和云計(jì)算的使用,其影響被放大。
登納德縮放定律的終結(jié)意味著架構(gòu)師必須找到利用并行化的更高效方式。
架構(gòu)師們和其他人很晚才意識到安全的重要性,但他們已經(jīng)開始對虛擬機(jī)和加密提供硬件支持。不幸的是,推測給許多處理器帶來了未知但明顯的安全缺陷。特別是,Meltdown和Spectre安全漏洞導(dǎo)致新漏洞利用位體系結(jié)構(gòu)中的漏洞,使受保護(hù)信息較快地遭到泄露,這兩種漏洞都使用了旁路攻擊。2018 年,研究者展示了在攻擊者不將代碼加載到目標(biāo)處理器的情況下,如何利用 Spectre 變體導(dǎo)致網(wǎng)絡(luò)信息泄露。盡管這次名為NetSpectre的攻擊泄露信息速度較慢,但它會使同一局域網(wǎng)(或云中同一集群)中的所有機(jī)器都受到攻擊,這會產(chǎn)生許多新的漏洞。還有兩個被報(bào)告的漏洞存在于虛擬機(jī)架構(gòu),其中一個叫Foreshadow,會影響專門保護(hù)高風(fēng)險(xiǎn)數(shù)據(jù)(如加密密鑰)的英特爾SGX 安全機(jī)制。現(xiàn)在,每個月都會發(fā)現(xiàn)新的漏洞。
旁路攻擊并非新鮮事,但在最早期的大多數(shù)情況,軟件漏洞是攻擊成功的關(guān)鍵。但在Meltdown、Spectre 等攻擊中,硬件的缺陷導(dǎo)致受保護(hù)信息泄露。處理器架構(gòu)師如何定義什么是正確的ISA是一個源頭的難題,因?yàn)闃?biāo)準(zhǔn)中并未說明執(zhí)行指令序列的性能影響,而僅僅涉及 ISA-visible 執(zhí)行架構(gòu)狀態(tài)。架構(gòu)師需要重新思考ISA正確實(shí)現(xiàn)的定義,以避免類似的安全漏洞。與此同時,他們還應(yīng)該重新思考對計(jì)算機(jī)安全關(guān)注的側(cè)重點(diǎn),以及架構(gòu)師如何與軟件設(shè)計(jì)師一起實(shí)現(xiàn)更加安全的系統(tǒng)。架構(gòu)師(以及所有人)都過于依賴信息系統(tǒng),以至于對安全的重視程度不如對一流設(shè)計(jì)的關(guān)注。
雷鋒網(wǎng)編譯,via 本文編譯自 A New Golden Age for Computer Architecture,by John L. Hennessy, David A. Patterson 雷鋒網(wǎng)
相關(guān)文章:
獨(dú)家 | 計(jì)算機(jī)體系結(jié)構(gòu)頂級會議ISCA,2017圖靈獎得主展望黃金時代
圖靈獎得主John Hennessy、David Patterson訪談:未來小學(xué)生都能做機(jī)器學(xué)習(xí)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。