當前位置:
首頁 > 新聞 > 兩點陣圖靈獎獲得者同發文:計算機構架群雄逐鹿,新黃金十年將開啟

兩點陣圖靈獎獲得者同發文:計算機構架群雄逐鹿,新黃金十年將開啟

「計算機架構將迎來新黃金時代,所有計算機架構師都應該感到興奮!」

在最新一期的 ACM 通訊上(2019 年 2 月刊),2017 年圖靈獎獲得者 John L. Hennessy 和 David A. Patterson 共同發表了一篇名為《計算機架構的新黃金時代》的文章,這是兩人對圖靈獎演講的總結歸納和升華。

他們在文中引用了大量詳實數據和資料,梳理出一條計算機架構歷史的發展脈絡,由此引出目前各種架構群雄逐鹿的盛況。輔以獨到和深刻的視角,他們拋出了多個當下值得深思的重要問題和未來可能出現的潛在機遇,最後給出了「計算機架構領域將迎來新的黃金十年」的結論。

圖 | 文章截圖(來源:ACM通訊)

鑒於原文篇幅較長,我們對其中精化部分進行了編譯,整理和概括。全文圍繞 3 個核心觀點展開:

- 軟體的進步會啟發架構的創新;

- 硬體 / 軟體介面的改進會為架構創新創造更多機遇;

- 市場最終會解決架構之爭。

回顧歷史:「那些拒絕學習歷史的人,將會被迫重蹈歷史的覆轍。」 —— George Santayana, 1905 年

指令集架構和儲存控制器

如今主流計算機由軟體和硬體兩部分構成,由於編寫軟硬體所用的語言有本質上的不同,它們之間的交互必須依賴於指令集架構(ISA),例如大家熟知的 x86 和 ARM。簡單來說,指令集規定了軟硬體之間的溝通規範(語言),依照相同指令集編寫的軟體,可以在任何支持該指令集的硬體上工作。這大大提升了計算機軟硬體之間的兼容性,降低了整體成本。

在 20 世紀 60 年代早期,IBM 擁有四組用途不同的計算機系列,分別面向小企業、大企業、科研機構和實時計算,它們支持的指令集架構各不相同。IBM的工程師認為,有必要將四種指令集統一起來,有效支持所有計算機系列。

受到軟體編程的啟發,計算機先驅者和圖靈獎獲得者 Maurice Wilkes 提出了簡化控制的想法。他將控制的實現過程視為一個二維數組,並稱之為「控制儲存器」。二維數組的每一列對應一條控制線,每一行對應一個微指令,編寫微指令的過程被稱為「微編程」。一個控制儲存器包含一個用微指令寫成的指令集翻譯器,在執行一條傳統指令時,只需要將一系列微指令組合起來。相比使用邏輯門,這種方法直接通過內存實現了控制,成本更低。

圖 | IBM System/360 系列的四個型號

IBM 看到了微編程的強大之處,相信這種新型指令集將會在計算領域掀起一場革命,最終選擇將未來壓注其中。事實證明 IBM 不僅主宰了彼時的計算市場,而且在 55 年後的今天,這些大型機的後代,每年仍然可以創造 100 億美元的營收。

我們不止一次地發現,市場最終成為了判斷計算機架構創新成功與否的關鍵因素,而這些創新通常需要巨大的工程研發投資。

集成電路和 8086

隨著時間的推移,越來越多的計算機開始使用集成電路,摩爾定律讓內存和控制儲存器變得更大,這也意味著更複雜的指令集。

不過在 20 世紀 70 年代,包括英特爾 8080 在內的主流微處理器仍然處於 8 位時代,主要依靠編匯語言編寫程序,通過添加新的指令互相競爭。英特爾聯合創始人戈登·摩爾(Gordon Moore)相信,英特爾的下一代指令集架構將會一直伴隨公司,因此他聘請了大批頂尖計算機科學博士,來研發下一代指令集和處理器——英特爾 8800。

在計劃中,新的 8800 處理器將擁有面向對象的架構,支持 32 位定址,支持可變的指令長度,而且還擁有一套基於最新編程語言 Ada 的操作系統。對於任何一個時代而言,這都是一個野心勃勃的項目,因此它也一再難產。

迫不得已,英特爾只能先組織新的團隊,緊急開發名為 8086 的指令集和基於此的 16 位微處理器,以順應市場。由於時間緊迫,他們只是選擇將 8080 處理器的指令集擴展到了16 位,而非重新設計架構。

圖 | 英特爾 8086 處理器(來源:Thomas Nguyen/Wiki)

不過造化弄人,8086 發布之時正趕上 IBM 推出個人計算機,為其尋求 16 位處理器之際。IBM 原本相中了摩托羅拉尚未完成的 68000,但是與蘋果 Apple II 計算機的競爭迫在眉睫,只能轉而與英特爾聯手。最終IBM 在 1981 年 8 月 12 日推出了旗下首款個人計算機,風靡全球,出貨量高達 1 億台,為英特爾臨危上陣的 8086 鋪墊了一個光明的未來。

雖然英特爾的 8800 項目沒有因此擱置,而是改名 iAPX-432 繼續研發並在 1981 年正式發布,但是由於自身性能問題,8800 處理器亮相 5 年後就匆匆謝幕。相比之下,8086 所用的指令集卻沿用到了之後的 32 位 80386 處理器中。

歷史用另一種方式證實了摩爾的想法,只不過它選擇了 8086,而非 iAPX-432(8800)。這也告訴我們,市場往往缺乏耐心。

從複雜指令集到精簡指令集

時間來到了 20 世紀 80 年代初,軟硬體交互的巨大進步為架構創新創造了機會。人們發現,連 Unix 這樣的操作系統都可以使用高級語言編寫,那麼當時複雜的編譯器是不是可以變得更加簡單?

遵循這一思路,圖靈獎獲得者 John Cocke 為小型計算機發明了更簡單的指令架構集和編譯器。他和同事發現,如果避開複雜指令,僅使用IBM 360 指令集中的簡單指令,比如「寄存器到寄存器」操作和「載入與儲存」數據傳輸,就可以將程序的運行速度提升三倍。

圖 | RISC-I 和 MIPS

此後,本文的作者之一 Patterson 受到了激勵,開始研發精簡指令集架構,以及使用精簡指令集的計算機(RISC)。相比使用複雜指令集的計算機(CISC),RISC 的指令通常和微指令一樣簡單,因此不再需要微代碼解釋器,而這些解釋器佔用的內存可以被 RISC 當成高速緩存使用。

在 RISC 誕生之後,還有一些針對指令集的創新誕生,包括超長指令字(VLIW)和顯式並行指令計算機(EPIC)。它們都有各自的優點,英特爾與惠普還合作開發了一款基於 EPIC 的 64 位處理器 Itanium,但卻受困於較窄的應用範圍,比如處理數字信號,無法徹底撼動 x86 的地位。

最終市場再一次失去了耐心,讓 x86 的 64 位版本取代了 32 位版本。在 PC 時代,x86 晶元出貨量於 2011 年達到頂峰,英特爾和 AMD 共出貨 3.5 億台 x86 微處理器。

不過隨著 iPhone 在 2007 年發布,以智能手機廠商為主的後 PC 時代逐漸開始形成。他們重視性能,晶格面積和成本之間的平衡,不再直接購買微處理器,而是在其他公司的晶元上構建自己的SoC 系統,比如使用ARM 的 RISC 處理器。近年來,移動設備出現了爆髮式增長,再加上物聯網逐漸興起,RISC的出貨量已經飆升至200 億台。

時至今日,99% 的 32 位和 64 位處理器都是 RISC 架構。可以說,市場解決了 RISC 和 CISC 的競爭。幾十年來,新的 CISC 指令集都沒有出現,而 RISC 已經成為了通用處理器的最佳指令集架構。

聚焦現在

過去的創新大多集中在指令集架構的設計上,不過大部分架構師並不會設計新的指令集,而是研究如何利用現有技術實現已有的指令集。

自 20 世紀 70 年代末以來,主流技術一直是基於金屬氧化物半導體(MOS)的集成電路,包括 n 型金屬氧化物半導體 (nMOS) 和互補金屬氧化物半導體 (CMOS)。MOS 技術的驚人進步速度,提升了晶體管密度,讓架構師能夠更好地為特定指令集提升性能。這種規律被摩爾所捕捉,他的摩爾定律預測:晶體管密度將會每兩年翻一倍。

摩爾定律和登納德縮放定律的終結

幾十年來,摩爾定律總體來說仍然準確,但其翻倍速度已經在 2000 年左右放緩。隨著 CMOS 技術接近極限,預測結果和實際情況之間的差距將繼續擴大。

圖 | 現實情況與摩爾定律的預測差距越來越大

另一方面,登納德縮放定律也已經接近失效。該定律指出,隨著晶體管密度增加,每個晶體管的功耗會下降,而每平方毫米硅晶元的能耗幾乎保持不變。登納德縮放定律的終結代表,能耗會隨著晶元內核數量的增加而上升,這也是當下多核時代帶來的能效挑戰——每一顆活躍的內核都會消耗能量,無論其是否參與計算,因此大量的能量被浪費了。

這些低效模型限制了性能的提升,想要獲得更大的性能提升,我們需要新的架構方法,更有效地使用集成電路。

被忽視的安全問題

在 20 世紀 70 年代,計算機架構師對安全問題十分重視。雖然他們知道是軟體引發了大多數錯誤,但他們相信架構支持可以提供幫助,不過這些想法並未被操作系統採用。軟體社區也提出了形式化驗證和微內核這樣的技術,來構建非常安全的軟體,但它們無法跟上處理器的性能發展。

結果就是,大型軟體系統不可避免地存在許多安全缺陷。隨著雲計算大規模應用,安全缺陷的影響被進一步放大了,例如 Meltdown 和 Spectre 這樣的安全漏洞帶來了新的缺陷,暴露了原本受保護的數據和信息。它們利用的旁路攻擊手段最早應用於軟體缺陷,並不是新技術。

面對這些,處理器架構師需要重視計算機安全問題,與軟體設計者共同合作,重新思考如何正確實現指令集架構,打造更安全的系統,杜絕此類安全漏洞的出現。

展望未來

通用處理器效率不高,摩爾定律和登納德縮放定律即將終結,處理器架構師似乎失去了性能改進的思路,還有沒有其他有效方法?

我們認為,目前有兩個很明顯的機會,如果把兩者結合起來,還能創造出第三個機會。

第一個機會是提升程序的運行性能,有兩種潛在的實現方法。

首先,目前軟體普遍由具有動態類型和存儲管理的高級語言編寫,它們的可解釋性和執行效率十分低下。例如用 C 語言重寫 Python 代碼,就可以將矩陣相乘運算的性能提升 47 倍,如果再引入並行循環處理,內存優化以及單指令多數據並行化操作,那麼運算執行速度可達 Python 版本的 62000 多倍。這說明,高級語言與傳統語言存在巨大差距,前者注重程序員的編程效率,後者更注重程序性能。

圖 | Python 和四種優化方式的對比

因此一個有趣的研究方向是,在架構增強的幫助下,探索新的編譯器技術來減少兩者的性能差距。雖然實現高效編譯的難度不低,但收益巨大——只要 25% 的效率提升,就可以讓 Python 程序的運行速度提升數百倍。

第二種思路更加以硬體為中心,是設計針對特定領域的架構(DSA)。DSA 是一種專為特定用途定製的可編程處理器,通常是圖靈完備的,也被稱作加速器,比如針對圖像處理的GPU 和針對深度學習的神經網路處理器。

DSA 之所以具備更高的性能,主要有以下四個原因:

1. 利用了特定領域中更高效的並行方式;

2. 更有效地利用了內存層次結構;

3. 在不需要時降低運算精度,提高數據和計算吞吐量;

4. 與領域特定語言(DSL)相結合,編寫出的程序運行效率更高。

事實上,DSL 就是我們開頭所說的「硬體/軟體介面的改進」,是通過架構創新提升性能的優秀範例。我們目前已經擁有很多架構創新,都很有競爭力:

- 英偉達開發的 GPU

- 谷歌開發的 TPU

- 微軟開發的,專門用於神經網路的 FPGA

- 英特爾開發的增強版 CPU

在這個時代,我們需要一個懂得垂直整合的團隊,從軟體程序、DSL 和編譯器、計算機架構和底層實現技術等各個方面權衡,最終提供整體優化方案。

圖 | TPU 的組織架構組圖

受到開源軟體的啟發,我們認為第二個機會是開放式指令集架構。想要創造處理器領域的 Linux 系統,整個行業需要開放式的指令集架構,這樣社區就可以打造開源內核。如果有很多人開始使用相同的開源指令集架構開發處理器,那麼這種競爭就會進一步推動創新。

最有名的開源例子是 RISC-V,由加州大學伯克利分校開發。它是一個支持 32 位和 64 位的模塊化指令集,開發者可以根據需求選擇擴展包,增加或刪減增強功能。在 RISC-V 基金會的維護下,整個社區正在不斷改進架構。

除此以外,英偉達也在 2017 年宣布了一個免費的開源架構,名為英偉達深度學習加速器(NVDLA)。它是一種可擴展的 DSA,支持機器學習推理。

如果我們結合以上兩種思路,再參考敏捷軟體的開發原則,就會發現第三個機會——敏捷硬體開發。由於現代電子計算機輔助設計 (ECAD) 工具提高了抽象等級,使得敏捷開發成為可能,而且增加了設計的重複利用性。雖然硬體不能像軟體開發那樣迅速,但是在特定步驟上,仍然可以實現四周衝刺的高速迭代。

圖 | 敏捷硬體開發流程

結語:「黎明前總是最黑暗的。」 —— Thomas Fuller, 1650 年

要從歷史教訓中吸取經驗,架構師們必須牢記三個要點:軟體創新可以啟發架構發展;提升軟硬體介面會帶來創新機會;市場最終會解決架構之爭。

我們相信,標準微處理器性能增幅下降,摩爾定律和登納德縮放定律的終結,都不是必須解決的問題,它們只是公認的事實,同時帶來了驚人的機遇。目前我們擁有的高級語言和 DSA,打破了指令集的枷鎖,隨著安全問題越來越得到重視,計算機架構師將迎來新的黃金時代。

下一個十年,我們將迎來新計算機架構的「寒武紀」大爆發,對於學術界和工業界的計算機架構師來說,這將是一個激動人心的時代。

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

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


請您繼續閱讀更多來自 DeepTech深科技 的精彩文章:

植入大腦的晶元助癱瘓者用「意念」操控平板電腦
加密貨幣的敦刻爾克時刻:華爾街投行正在撤退,看多者布局未來

TAG:DeepTech深科技 |