當前位置:
首頁 > 新聞 > 圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

雷鋒網按:近幾年來,不論是普通消費者還是科研人員們都可以感受到兩種浪潮,一種是CPU速度的提升越來越不顯著了,我們說CPU製造商又在「擠牙膏」;另一方面,在深度學習的刺激下,各個半導體巨頭和一群 AI 初創企業都開始宣傳自己的 AI 晶元。我們彷彿看到一類晶元逐漸走向慢車道,另一類晶元則準備搭台唱戲、躍躍欲試。

這種柳暗花明的背後,顯示的正是計算機計算架構的時代變革;新的方法、新的思維、新的目標引領了新的浪潮。2017 年圖靈獎的兩位得主 John L. Hennessy 和 David A. Patterson 就是這個新浪潮的見證者和引領者。近日他們在ACM 通訊(Communications of the ACM)發表了一篇長報告《A New Golden Age for Computer Architecture》,詳細描述了引發計算機架構新時代到來的種種變化,他們也展望未來的十年將是計算機體系架構領域的「新的黃金十年」。

雷鋒網把這篇文章全文編譯如下,本篇為上篇,下篇參見這裡。

另外二位還有過一次輕鬆的訪談,可以參見這裡。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

打開今日頭條,查看更多圖片

ISCA 2018 ,2017 圖靈獎頒獎現場,John L. Hennessy(左) 和 David A. Patterson(右)與 Alan Turing 的半身像合影

2018年6月4日,我們回顧了自20世紀60年代以來計算機架構的發展,並以此開始了我們的圖靈講座。除了那個回顧,我們還在講座中介紹了當前的難題和未來機遇。計算機體系結構領域將迎來又一個黃金十年,就像20世紀80年代我們做研究那時一樣,新的架構設計將會帶來更低的成本,更優的能耗、安全和性能。


「不能銘記過去的人註定要重蹈覆轍」

——George Santayana,1905

軟體與硬體的對話,是通過一種稱為指令集的體系結構進行來的。在20世紀60年代初,IBM擁有四條互不兼容的計算機系列,分別針對小型企業,大型企業,科研單位和即時運算,每個系列都有自己的指令集、軟體棧和I/O系統。

IBM的工程師們,也包括ACM圖靈獎獲獎者Fred Brooks在內,希望能夠創建一套新的ISA,將這四套指令集有效統一起來,為此他們需要一種可以讓低端的8位計算機和高端的64位計算機共享一套指令集的解決方案。

實際上,數據通路的加寬和縮小相對是比較容易的,當時的工程師們面臨的最大挑戰是處理器中的控制器部分。受軟體編程的啟發,計算機先驅人物、圖靈獎獲得者Maurice Wilkes提出了簡化控制流程的思路,即將控制器部分定義為一個被稱為「控制存儲器」的二維數組,可通過內存實現,比使用邏輯門的成本要低得多。數組的每一列對應一條控制線,每一行對應一條微指令,寫微指令的操作稱為微編程,控制存儲器包含使用微指令編寫的指令集解釋器,因此執行一條傳統指令需要多個微指令完成。

下圖列出了IBM在1964年4月7日發布的新System/360系列計算機的指令集,四種型號之間的數據通路寬度相差8倍,內存容量相差16倍,頻率相差近4倍,最終性能相差50倍。其中M65機型的控制存儲器容量最大,成本和售價也最昂貴,而最低端M30機型的控制存儲器容量最小,因此也需要有更多的微指令來執行System/360的指令。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

IBM將公司的未來押在了這套新指令集上,寄希望其能革新計算行業,贏得未來。而最終IBM也如願以償,成功主宰了這一市場,並將其影響力延續至今,這些55年前機型的後代產品現在仍能為IBM帶來每年100億美元的收入。

現在看來,儘管市場對技術問題做出的評判還不夠完善,但由於硬體系統架構與商用計算機之間的密切聯繫,市場最終成為計算機架構創新的是否成功的關鍵性因素,這些創新往往需要工程人員方面的大量投入。

集成電路,CISC,432,8086,IBM PC

當計算機進入集成電路時代,摩爾定律的力量可以使控制存儲器被設計的更大,而這反過來又催生了更複雜的指令集,如Digital Equipment公司於1977年發布的VAX-11/780機型,其控制存儲器容量就達到了5120指令字*96bit,而其前代型號僅為256指令字*56bit。

於此同時,一些製造商開始設計可記錄控制存儲器(WCS),放開微編程功能以使客戶可以自行定製功能,其中最有名的機型是圖靈獎得主Chuck Thacker和Butler Lampson 和他的同事在1973年為施樂公司Palo Alto研究中心開發的Alto計算機。這是第一台個人計算機,配備有首款點陣顯示器和首個乙太網區域網,其控制器存儲在一個容量為4096指令字*32bit的WCS中。

另一邊,20世紀70年代的微處理器仍處於8位時代(如Intel的8080處理器),主要採用彙編語言編程,各家公司的設計師會不斷加入新的指令來超越競爭對手,並通過彙編語言展示他們的優勢。

戈登·摩爾認為,Intel的下一代指令集將會伴隨Intel的一生,他聘請了大批聰明的計算機科學博士,並將他們送到波特蘭的一個新工廠,以打造下一個偉大的指令集架構。這個被Intel最初命名為8800的計算機架構項目雄心勃勃,它具有32位定址能力、面向對象的體系結構,可變位長的指令以及用當時最新編程語言Ada編寫的操作系統,是20世紀80年代最具挑戰性的一個項目。

可惜天不遂願,這個項目在幾年間再三延期,迫使Intel在聖克拉拉啟動了一項緊急更換計劃,要在1979年推出一款16位處理器,也就是後來的8086。Intel給了新團隊52周時間來開發新的指令集以及設計和構建晶元。由於時間緊迫,這個團隊實際上是把 8080 的 8 位寄存器和指令集擴展成了 16 位,設計ISA部分僅僅花了10個人3周時間。最終8086如期完成,但在發布時卻沒引起什麼關注。

這一次Intel很走運,當時IBM正在開發一款對位Apple II的個人計算機,正需要16位處理器。IBM一度對Motorola 68000處理器很感興趣,它擁有類似於IBM 360的指令集,但性能表現卻無法滿足IBM激進的需求,故轉而使用Intel 8086的8位匯流排版。IBM於1981年8月12日宣布推出該機型,全球銷量高達1億台,為Intel這套指令集鋪墊了一個非常光明的未來。

Intel原本的8800項目更名了為iAPX-432,並最終在1981年推出,但它需要多塊晶元並且存在嚴重的性能問題,最終於1986年終止。同樣在這一年,Intel推出了80386處理器,將8086指令集的寄存器從16位擴展到了32位。戈登?摩爾的預言成為了現實,Intel的下一代指令集確實一直存續下來,但市場做出的選擇是臨危上馬的8086,而不是被寄予厚望的iAPX-432,這對摩托羅拉68000和iAPX-432的架構師來講,都是個現實的教訓,市場永遠是沒有耐心的。

從CISC到RISC

20世紀80年代初,人們開始研究CISC(複雜指令集計算機)控制存儲器中的大型微程序,而Unix系統的誕生則證明了可以使用高級語言來編寫操作系統,因此隨後問題的關鍵從「編程者會使用什麼彙編語言」變成了「編譯器會生成什麼指令」,軟硬體介面的顯著改進為架構創新帶來了機會。

圖靈獎得主John Cocke和他的同事為小型計算機開發了更簡單的指令集和編譯器,並將編譯器的目標設定為「僅使用 IBM 360指令集中簡單的寄存器到寄存器操作,只以簡單的Load和Store操作訪問內存」。他們發現,這樣簡化的流程可以讓程序運行速度快上3倍。Emer和Clark發現,VAX指令中有20%的常用指令需要60%的微代碼(microcode),但僅佔據0.2%的執行時間。

David Patterson把在DEC一次學術休假投入到了研究減少VAX指令中的漏洞上。他認為,如果處理器製造商想要設計更龐大的複雜指令集,就免不了需要一種修復微代碼漏洞的方法。Patterson就此問題寫了一篇論文,但《Computer》期刊卻拒絕刊登,審稿人認為,使用如此複雜以至於需要修補的指令集來設計處理器是很糟糕的。

雖然現在來看,現代的CISC處理器確實包含微代碼修復機制,但當時的這次拒稿卻讓人們懷疑複雜指令集在處理器方面的價值,這也啟發了他去開發更簡單的精簡指令集,以及RISC(精簡指令集計算機)。

這些觀點的產生,以及由彙編語言向高級語言的轉變,為CISC向RISC的過渡創造了條件。首先,精簡指令集是經過簡化的,其指令通常和微指令一樣簡單,硬體可以直接執行,因此無需微代碼解釋器;第二,之前用於微代碼解釋器的快速存儲器被用作了RISC的指令緩存;第三,基於Gregory Chaitin圖染色法的寄存器分配器,使編譯器能夠更簡易、高效地使用寄存器,這指令集中那些寄存器到寄存器的操作有很大好處;最後,集成電路規模的發展,使20世紀80年代的單塊晶元足以包含完整的32位數據路徑以及相應的指令和數據緩存。

下圖是加州大學伯克利分校1982年研發的RISC-I處理器和斯坦福大學1983年研發的MIPS處理器,兩顆晶元充分展示了RISC的優勢,並最終發表在1984年IEEE國際固態電路會議上。加州大學和斯坦福大小的研究生研發出了比行業內現有產品更優秀處理器,這是非常了不起的時刻。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

這些由學術機構開發的晶元,激勵了許多企業開始發力RISC處理器,並成為此後15年中發展最快的領域。其原因是處理器的性能公式:

時間/程序=操作數/程序*(時鐘周期)/指令*時間/(時鐘周期)

DEC公司的工程師後來表明,CISC處理器執行每個程序的操作數大約為RISC處理器的75%(上式第一項),在使用類似的技術時,CISC處理器執行每個指令要多消耗5到6個時鐘周期(上式第二項),使得RISC處理器的速度大約快了3倍。

這樣的公式在20世紀80年代還沒有進入計算機體系結構的書中,所以我們在1989年編寫了《Computer Architecture: A Quantitative Approach》一書,使用測量和基準測試來對計算機架構進行量化評估,而不是更多地依賴於架構師的直覺和經驗,使用的量化方法也受到了圖靈獎得主Donald Knuth關於演算法的書的啟發。

VLIW、EPIC、Itanium

指令集架構的下一次創新試圖同時惠及RISC和CISC,即超長指令字(VLIW)和顯式並行指令計算機(EPIC)的誕生。這兩項發明由Intel和惠普共同命名,在每條指令中使用捆綁在一起的多個獨立操作的寬指令。與RISC一樣,VLIW和EPIC的目的是將工作負載從硬體轉移到編譯器上,它們的擁護者認為,如果用一條指令可以指定六個獨立的操作(兩次數據傳輸,兩次整數操作和兩次浮點操作),並且編譯器技術可以有效地將操作分配到六個指令槽,則硬體可以變得更簡單。

Intel和惠普合作設計了一款基於EPIC理念的64位處理器Itanium(安騰),想用其取代32位x86處理器。Intel和惠普對Itanium抱有很高的期望,但實際情況卻與他們的預期並不相符,EPIC雖然適用於高度結構化的浮點程序,但卻很難在可預測性較低的緩存丟失或難以預測分支的整型程序上實現高性能。

Donald Knuth後來指出,Itanium的設想非常棒,但事實證明滿足這種設想的編譯器基本上不可能寫出來。開發人員注意到Itanium的延遲和性能表現不佳,並借鑒泰坦尼克號事件重新將其命名為「Itanic」。不過正如前面所提到的,市場永遠是沒有耐心的,最終64位的x86-64成為了繼承者,沒有輪到Itanium。

不過一個好消息是,VLIW仍然小範圍應用於數字信號處理等對分支預測和緩存要求不高的領域。

RISC vs. CISC,PC和後PC時代的宿命對決

Intel和AMD依靠500人的設計團隊和卓越的半導體技術來縮小x86和RISC之間的性能差距,而受到精簡指令相對於複雜指令性能優勢的啟發,Intel和AMD將RISC微指令的執行流程化,使指令解碼器在運行中將複雜的x86指令轉換成類似RISC的內部微指令,從而讓x86處理器可以吸收RISC在性能分離指令、數據緩存、晶元二級緩存、深度流水線以及同時獲取和執行多個指令等許多優秀的設計。在2011年PC時代的巔峰時期,Intel和AMD每年大約出貨3.5億顆x86處理器。PC行業的高產量和低利潤率也意味著價格低於RISC計算機。

在Unix市場中,軟體供應商會為不同的複雜指令集(Alpha、HP-PA、MIPS、Power和SPARC)提供不同的軟體版本,而PC市場上絕對主流的指令集只有一套,軟體開發人員只需兼容x86指令集即可。全球每年出貨數億台PC,軟體就成為了一個巨大的市場。更大的軟體基礎、相似的性能和更低的價格使得x86處理器在2000年之前同時統治了台式機和小型伺服器市場。

蘋果公司在2007年推出了iPhone,開創了後PC時代。智能手機公司不再購買處理器,而是使用其他公司的設計來構建自己的SoC。移動設備設計人員需要對晶元面積和能效以及性能進行綜合評估,CISC處理器在這一點上處於劣勢。此外,物聯網的到來需要海量的處理器,更加需要在晶元尺寸、功率、成本和性能上做權衡。這種趨勢增加了設計時間和成本的重要性,進一步使CISC處理器處於不利地位。在今天這個「後PC時代」,x86處理器的出貨量自2011年達到峰值以來,每年下降近10%,而RISC處理器的出貨量則飆升至200億。如今,99%的32位和64位處理器都是RISC處理器。

總結這些歷史,可以說市場已經解決了RISC和CISC宿命之爭。CISC贏得了PC時代的後期階段,但RISC正在後PC時代佔據主導。複雜指令集領域已經幾十年沒有新的指令集出現了,對於今天的通用處理器來說,最佳的選擇仍然是精簡指令集。

處理器架構當前面臨的挑戰


「如果一個問題無解,那它可能不是一個問題,而是一個事實,我們不需要解決,而是隨著時間的推移來處理。」

——Shimon Peres

雖然前面的部分聚焦在指令集架構的設計上,但大部分計算機架構師並不設計新的指令集,而是利用當前的實現技術來實現現有的ISA。自20世紀70年代後期以來,選擇的技術一直是基於MOS(金屬氧化物半導體)的集成電路,首先是 nMOS(n型金屬氧化物半導體),然後是CMOS(互補金屬氧化物半導體)。

戈登·摩爾在1965年預測,集成電路的晶體管密度會每年翻一番,1975年又改為每兩年翻一番,這一預測最終被稱為摩爾定律。在這一預測中,晶體管密度呈二次增長,驚人的進化速度使架構師可以用更多晶體管來提高性能。

摩爾定律和登納德縮放定律的失效

如圖2所示,摩爾定律已經持續了幾十年,但它在2000年左右開始放緩,到了 2018 年,實際結果與摩爾定律的預測相差了15倍,但摩爾在2003年做的判斷已不可避免(可參考GE Moore 的《No exponential is forever: But "forever" can be delayed!》論文)。基於當前的情況,這一差距還將持續增大,因為CMOS已經接近極限。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖2 單個英特爾微處理器上的晶體管數量 vs. 摩爾定律

與摩爾定律相伴的是由羅伯特·登納德(Robert Dennard)預測的登納德縮放定律(Dennard scaling;又稱作MOSFET縮放定律)。Robert Dennard 在 1974 年提出,晶體管不斷變小,但晶元的功率密度不變。隨著晶體管密度的增加,每個晶體管的能耗將降低,因此硅晶元上每平方毫米上的能耗幾乎保持恆定。由於每平方毫米硅晶元的計算能力隨著技術的迭代而不斷增強,計算機將變得更加節能。不過,登納德縮放定律從 2007 年開始大幅放緩,大概在2012 年接近失效(見圖 3)。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖3每個晶元上的晶體管及每平方毫米的功率

1986 年至 2002 年間,利用指令級並行(ILP)是提高架構性能的主要方法,伴隨著晶體管速度的提高,其性能每年能提高約50%。登納德縮放定律的終結意味著架構師必須找到更有高效的方法利用並行性。

要理解增加ILP 所帶來高效率,可以看一看當前的處理器核心比如ARM、英特爾、AMD。假設該晶元有15級流水線(管線),每個時鐘周期可以發送 4 條指令,那麼它在任何時刻都有多達60條指令,包括大約15個分支,它們占執行指令的大約25%。為了能夠充分利用流水線,需要預測分支,並根據推測將代碼放入流水線以便執行。推測的使用同時是 ILP高性能和低能效的源頭。如果分支預測達到完美,推測就能提高 ILP 性能,但能耗會增加一些(也可能節約能耗),但如果分支預測出現失誤,處理器就必須放棄錯誤的推測指令,計算所耗能量就會被浪費。處理器的內部狀態也必須恢復到錯誤預測分支之前的狀態,這將消耗額外的能量和時間。

要理解這種設計的挑戰性,想一想正確預測15個分支就可知道其中的難度。如果處理器架構想把性能的浪費控制在10%以內,那麼它必須在 99.3%的時間裡正確預測每個分支。很少有通用程序能夠如此準確地預測。

要理解性能浪費疊加的結果,可以參見圖4中,圖中顯示了有效執行的指令,但由於處理器推測錯誤而被浪費。對英特爾酷睿 i7 基準測試上,19%的指令都被浪費了,但能量的浪費情況更加嚴重,因為處理器必須使用額外的能量才能恢復到推測失誤前的狀態。這樣的測試導致許多人得出結論,架構師需要一種不同的方法來實現性能改進。於是迎來了多核時代的誕生。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖4 不同的SPEC整型數基準測試,英特爾酷睿 i7 浪費的指令占完成指令總數的百分比

多核將識別並行性和決定如何利用並行性的任務轉移給程序員和編程語言。多核並未解決節能的挑戰,而這種挑戰因登納德縮放定律終結更加嚴峻。每個活躍的核都會消耗能量,無論其對計算是否有有效貢獻。一個主要的障礙可以用阿姆達爾定律(Amdahl"s Law)表述,該定理認為,在並行計算中用多處理器的應用加速受限於程序所需的串列時間百分比。這一定律的重要性參見圖5,與單核相比,多達64個核執行應用程序速度的差別,假設串列執行的不同部分只有一個處理器處於活動狀態。例如,如果只有1%的時間是串列的,那麼 64核的配置可加速大約35倍,當然能量也與64個處理器成正比,大約有45% 的能量被浪費。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖5 阿姆達爾定律對程序加速的影響

真實的程序當然會更加複雜,部分組件允許在給定時刻使用不同數量的處理器。然而,需要定期性通信和同步意味著大部分應用僅可高效使用一部分處理器。儘管阿姆達爾定律已經出現 50 多年了,這仍然是一個很大的困難。

隨著登納德縮放定律的終結,晶元內核數量的增加意味著能耗也隨之增加。不幸的是,進入處理器的電能有一部分會轉化為熱能,因此多核處理器受限於熱耗散功率(TDP),即封裝和冷卻系統在最大負載時的驅散熱量的最大限度。儘管一些高端數據中心可能使用更先進的封裝和冷卻技術,但沒有一個計算機用戶想要在自己桌子上放置小型熱交換器,或者為手機增加散熱器。TDP 的限制性直接導致了暗硅時代,也就是處理器通過降低時鐘頻率或關閉空閑內核來防止處理器過熱。這種方法的另一種解釋是:一些晶元可將其寶貴的能量從空閑內核轉移到活躍內核。

登納德縮放定律的結束,摩爾定律放緩以及阿姆達爾定律正當其時,意味著低效性將每年的性能改進限制在幾個百分點(如6所示)。想獲得高的性能改進(像 20 世紀八九十年代那樣)需要新的架構方法,新方法應能更加高效地利用集成電路。接下來我們將討論現代計算機的另一個主要缺陷——計算機安全的支持以及缺乏,之後再繼續探討有效利用集成電路的新方法。

圖靈獎得主長文報告:是什麼開啟了計算機架構的新黃金十年?(上)

圖6 計算機性能的提升(SPECintCPU)

被忽略的計算機安全

20 世紀 70 年代,處理器架構師主要專註於計算機安全,涉及保護環和功能安全。架構師們意識到,大部分漏洞都存在於軟體中,但他們認為架構能會有所幫助。這些功能大部分未被操作系統使用,這些操作系統有意專註於所謂的良性環境(如個人電腦),並且這些功能涉及大量消耗,因此被淘汰。在軟體社區中,很多人認為正式驗證技術如微內核等技術會為構建高度安全的軟體提供有效保障。不幸的是,我們的軟體系統規模和性能驅動器意味著此類技術無法跟上處理器性能。結果就是大型軟體系統仍然有很多安全漏洞,且由於海量在線個人信息和雲計算的使用,其影響被放大。


登納德縮放定律的終結意味著架構師必須找到利用並行化的更高效方式。

架構師們和其他人很晚才意識到安全的重要性,但他們已經開始對虛擬機和加密提供硬體支持。不幸的是,推測給許多處理器帶來了未知但明顯的安全缺陷。特別是,Meltdown和Spectre安全漏洞導致新漏洞利用位體系結構中的漏洞,使受保護信息較快地遭到泄露,這兩種漏洞都使用了旁路攻擊。2018 年,研究者展示了在攻擊者不將代碼載入到目標處理器的情況下,如何利用 Spectre 變體導致網路信息泄露。儘管這次名為NetSpectre的攻擊泄露信息速度較慢,但它會使同一區域網(或雲中同一集群)中的所有機器都受到攻擊,這會產生許多新的漏洞。還有兩個被報告的漏洞存在於虛擬機架構,其中一個叫Foreshadow,會影響專門保護高風險數據(如加密密鑰)的英特爾SGX 安全機制。現在,每個月都會發現新的漏洞。

旁路攻擊並非新鮮事,但在最早期的大多數情況,軟體漏洞是攻擊成功的關鍵。但在Meltdown、Spectre 等攻擊中,硬體的缺陷導致受保護信息泄露。處理器架構師如何定義什麼是正確的ISA是一個源頭的難題,因為標準中並未說明執行指令序列的性能影響,而僅僅涉及 ISA-visible 執行架構狀態。架構師需要重新思考ISA正確實現的定義,以避免類似的安全漏洞。與此同時,他們還應該重新思考對計算機安全關注的側重點,以及架構師如何與軟體設計師一起實現更加安全的系統。架構師(以及所有人)都過於依賴信息系統,以至於對安全的重視程度不如對一流設計的關注。

雷鋒網編譯,via 本文編譯自 A New Golden Age for Computer Architecture,by John L. Hennessy, David A. Patterson 雷鋒網

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

新智駕會員升級:我們用更有效的方式幫你擴展自動駕駛世界
疲軟無力的雙十二

TAG:雷鋒網 |