John Hennessy 和 David Patterson 是 2017 年圖靈獎獲得者,目前這兩位學者都供職于谷歌,前者是谷歌母公司 Alphabet 的董事會主席,后者任谷歌杰出工程師,致力于研究機器學習和人工智能。他們更為人所知的就是共同完成的計算機系統(tǒng)結(jié)構(gòu)學科「圣經(jīng)」《計算機體系結(jié)構(gòu):量化研究方法》了。
本文《計算機架構(gòu)的新黃金時代》是兩人在 2019 年新發(fā)表的文章,完整介紹了計算機芯片的發(fā)展歷程,以及所有架構(gòu)的未來趨勢,值得所有希望了解硬件架構(gòu)的人閱讀。
圖注:2019 年 2 月刊發(fā)
2018 年 6 月 4 日,我們回顧了自 20 世紀 60 年代以來計算機架構(gòu)的發(fā)展,并以此開始了我們的圖靈講座(Turing Lecture)。除了那個回顧,我們還在講座中介紹了當前的難題和未來機遇。我們還預(yù)測未來十年計算機架構(gòu)領(lǐng)域?qū)⒂瓉硐乱粋€黃金時代,就像 20 世紀 80 年代那樣——我們做的研究能為我們帶來回報,能改善成本、能源、安全以及性能。
「不能銘記過去的人注定要重蹈覆轍?!?/p>
——George Santayana,1905
軟件與硬件的通信是通過指令集架構(gòu)(ISA)進行的。在 1960 年代早期,IBM 有四個互不兼容的計算機產(chǎn)品線,每個都有自己的 ISA、軟件堆棧、I/O 系統(tǒng)和利基市場(分別針對的是小型企業(yè)、大型企業(yè)、科研和實時應(yīng)用)。包括 ACM 圖靈獎獲得者 Fred Brooks, Jr. 在內(nèi)的 IBM 工程師都認為他們可以創(chuàng)造一種能有效統(tǒng)一所有這四種 ISA 基礎(chǔ)的單個 ISA。
他們需要一種技術(shù)解決方案,讓便宜的 8 位數(shù)據(jù)路徑計算機與高速的 64 位數(shù)據(jù)路徑計算機都能共用一個 ISA。這些數(shù)據(jù)路徑是處理器的「身體」,它們在其中執(zhí)行算術(shù)運算但相對而言較容易「變寬」或「變窄」。對于那時以及現(xiàn)在的計算機設(shè)計者來說,最大的難題是處理器的「大腦」——控制硬件。受軟件編程的啟發(fā),計算先驅(qū)和圖靈獎獲得者 Maurice Wilkes 提出了簡化控制的方法。控制可被描述為一個二維數(shù)組,他稱之為「控制存儲器(control store)」。這個數(shù)組的每一列都對應(yīng)于一條控制線,每一行都是一個微指令(microinstruction),而編寫微指令則被稱為微編程(microprogramming)。一個控制存儲器包含一個用微指令編寫的 ISA 解釋器,所以執(zhí)行一個常規(guī)指令需要多個微指令。這種控制存儲器是通過內(nèi)存實現(xiàn)的,成本比邏輯門要低得多。
表 1 列出了 IBM 在 1964 年 4 月 7 日宣布的新 System/360 ISA 的 4 種型號。數(shù)據(jù)路徑的變化范圍有 8 倍,內(nèi)存容量的變化范圍有 16 倍,時鐘頻率是 4 倍,性能是 50 倍,成本接近 6 倍。成本最高的計算機的控制存儲器最寬,因為更復(fù)雜的數(shù)據(jù)路徑使用更多控制線。成本最低的計算機因為硬件更簡單而有更窄的控制存儲器,但因為它們需要更多時鐘周期來執(zhí)行一個 System/360 指令,所以需要更多微指令。
表 1:IBM System/360 系列四個型號的特性;IPS 表示每秒執(zhí)行指令數(shù)。
在微編程的推動下,IBM 將公司的未來押在了這款新 ISA 上,寄希望其能革新計算行業(yè),為 IBM 贏得回報。IBM 成功主宰了這一市場,IBM 計算機家族的大型機后裔在推出 55 年后仍然每年創(chuàng)造著 100 億美元的收入。
正如我們反復(fù)看到的那樣,盡管市場并不能完美地判定各種技術(shù)問題,但鑒于架構(gòu)和商業(yè)計算機之間聯(lián)系緊密,市場才能最終決定架構(gòu)創(chuàng)新是否成功,而這往往需要大量的工程開發(fā)投入。
集成電路,CISC,432,8086,IBM PC
當計算機開始使用集成電路時,摩爾定律意味著控制存儲器可以變大很多。更大的內(nèi)存反過來又意味著允許使用更復(fù)雜的 ISA。要知道,數(shù)字設(shè)備公司(Digital Equipment Corp.)在 1977 年推出的 VAX-11/780 的控制存儲器為 5120 字×96 位,而其前一代僅有 256 字× 56 位。
某些制造商選擇開放微編程功能,讓選定的客戶能添加定制功能,他們稱之為「可寫控制存儲器(WCS)」。最有名的 WCS 計算機是 Alto,這是圖靈獎得主 Chuck Thacker 和 Butler Lampson 及其同事于 1973 年一起為施樂(Xerox)帕洛阿托研究中心開發(fā)的。這實際上是第一款個人計算機(PC),配備有首款位映像顯示器(bit-mapped display)和首個以太網(wǎng)局域網(wǎng)。用于這種全新顯示器和網(wǎng)絡(luò)的設(shè)備控制器是存儲在一個 4096 字×32 位 WCS 中的微程序。
1970 年代的微處理器(比如英特爾的 8080)仍處于 8 位時代,主要依靠匯編語言編寫程序?;ハ喔偁幍脑O(shè)計者會通過添加新的指令來趕超彼此,他們會通過匯編語言示例來展示自己的優(yōu)勢。
戈登·摩爾(Gordon Moore)相信英特爾的下一代 ISA 將會伴隨英特爾的一生,因此他聘用了很多聰明的計算機科學博士,并將他們送到波特蘭去發(fā)明出色的下一代 ISA。英特爾最早命名為 8800 的計算機架構(gòu)項目雄心勃勃——對任何時代而言都是如此,顯然也是 1980 年代最有野心的。它有基于 32 位的尋址能力、面向?qū)ο蟮募軜?gòu)、位長可變的指令以及用時新的編程語言 Ada 編寫的自己的操作傳統(tǒng)。
可惜這個雄心勃勃的項目晚了幾年,迫使英特爾在圣克拉拉開始了一項緊急替換工作,在 1979 年推出了一款 16 位微處理器。英特爾給了新團隊 52 周時間來開發(fā)新的「8086」ISA 以及設(shè)計和構(gòu)建芯片。鑒于日程緊迫,這個團隊實際上是把 8080 的 8 位寄存器和指令集擴展成了 16 位,最后只用 10 人次的 3 個常規(guī)工作周完成了這款 ISA 的設(shè)計。這個團隊按時完成了 8086 的開發(fā),但在發(fā)布時卻沒引起什么關(guān)注。
英特爾非常幸運,IBM 當時正在開發(fā)一款個人計算機來與 Apple II 競爭,并需要一款 16 位微處理器。IBM 之前感興趣的是 Motorola 68000,其 ISA 與 IBM 360 類似,但卻落后于 IBM 激進的計劃。IBM 轉(zhuǎn)而使用 8086 的 8 位總線版本。IBM 在 1981 年 8 月 12 日推出了這款 PC,希望到 1986 年時能售出 25 萬臺。而實際上該公司在全球售出了 1 億臺,為這款緊急代換的英特爾 ISA 鋪墊了一個非常光明的未來。
英特爾原本的 8800 項目更名了為 iAPX-432,并最終在 1981 年推出,但它需要多塊芯片并且存在嚴重的性能問題。該項目在 1986 年終止,這一年,英特爾在 80386 中對 16 位 8086 ISA 進行了擴展,將其寄存器從 16 位擴展到了 32 位。因此,摩爾的預(yù)測就是正確的了——下一代 ISA 確實會和英特爾一樣長壽,但市場選擇了緊急代換的 8086,而不是專門精心開發(fā)的 432。正如 Motorola 68000 和 iAPX-432 兩者的設(shè)計師都學到的那樣:市場往往缺乏耐心。
從復(fù)雜指令集到精簡指令集計算機
1980 年代早期,人們對更大型控制存儲器中大型微程序使用的復(fù)雜指令集計算機(CISC)進行了一些研究。Unix 表明即使操作系統(tǒng)也可以使用高級語言編寫,關(guān)鍵問題隨之變成了「編譯器會生成什么指令?」,而不是「編程者會使用什么匯編語言?」。硬件/軟件接口的顯著改進為架構(gòu)創(chuàng)新帶來了機會。
圖靈獎得主 John Cocke 與其同事為小型計算機開發(fā)了更簡單的 ISA 和編譯器。作為實驗,他們將自己研究的編譯器的目標重新設(shè)定為:僅使用 IBM 360 ISA 中簡單的 register-register 操作和 load-store 數(shù)據(jù)傳輸,避免更復(fù)雜的指令。他們發(fā)現(xiàn)使用這個簡單的子集時,程序運行速度可快達三倍。Emer 和 Clark 發(fā)現(xiàn) VAX 指令中 20% 的指令需要 60% 的微代碼(microcode),但僅占據(jù) 0.2% 的執(zhí)行時間。
David Patterson 把在 DEC 的一次學術(shù)休假投入到了研究減少 VAX 指令中的漏洞上。他認為,如果微處理器制造商遵循更大型計算機的 CISC ISA 設(shè)計,則它們需要一種修復(fù)微代碼漏洞的方法。他為此寫了一篇論文,但期刊《Computer》卻拒絕接收。審稿人認為,使用如此復(fù)雜以至于需要修補的 ISA 開發(fā)微處理器是很糟糕的。這次拒稿讓人們質(zhì)疑 CISC ISA 在微處理器方面的價值。諷刺的是,現(xiàn)代 CISC 微處理器確實需要包含微代碼修復(fù)機制,但他被拒稿的主要結(jié)果是啟發(fā)他為微處理器開發(fā)更簡單的 ISA——精簡指令集計算機(RISC)。
這些觀察和向高級語言的轉(zhuǎn)移為 CISC 向 RISC 的過渡帶來了機會。首先,RISC 指令是經(jīng)過簡化的,因此無需微代碼解釋器。RISC 指令通常和微指令一樣簡單,硬件可以直接執(zhí)行。第二,之前用于 CISC ISA 的微代碼解釋器的快速內(nèi)存被用作了 RISC 指令的緩存。(緩存是小而快的內(nèi)存,臨時緩沖近期執(zhí)行過的指令,因為這樣的指令很可能很快就要重新使用。)第三,基于 Gregory Chaitin 圖著色方案的寄存器分配器使編譯器可以更加容易地有效使用寄存器,這對這些 register-register ISA 是有利的。最后,摩爾定律意味著 1980 年代單塊芯片中已有足以包含完整 32 位數(shù)據(jù)路徑的晶體管以及相應(yīng)的指令和數(shù)據(jù)緩存。
在今天的后 PC 時代,x86 的出貨量從 2011 年的頂峰每年都會下降約 10%,而 RISC 處理器芯片出貨量已經(jīng)激增到了 200 億。
例如圖 1 展示了 RISC-I 和 MIPS 微處理器,它們分別由 UC 伯克利和斯坦福在 1982 與 1983 年開發(fā),它們展示了 RISC 的優(yōu)勢。這些芯片最終都展示在了頂尖電路會議上,即 1984 年的 IEEE 國際固態(tài)電路會議。當時是非常矚目的成果,因為伯克利和斯坦福的一些研究生能構(gòu)建超越工業(yè)上能構(gòu)建的微處理器。
圖 1:加州大學伯克利分校 RISC-1 和斯坦福大學 MIPS 微處理器。
這些學術(shù)界做出的芯片激勵了許多公司構(gòu)建 RISC 微處理器,也是那之后 15 年內(nèi)最快的芯片。下面的公式解釋了處理器的性能:
Time/Program = Instructions / Program x (Clock cycles) / Instruction x Time / (Clock cycle)
DEC 工程師后來表明,更復(fù)雜的 CISC ISA 每個程序執(zhí)行的指令數(shù)是 RISC 每個程序的 75%(上式第一項),在使用類似的技術(shù)時,CISC 執(zhí)行每個指令要多消耗 5 到 6 個時鐘周期(第二項),使得 RISC 微處理器的速度大約快了 3 倍。
這樣的公式在上世紀 80 年代的計算機架構(gòu)書中還沒有,后來我們在 1989 年發(fā)表了《計算機體系架構(gòu):量化研究方法》一書。子標題表明了該書的主題:使用測量方法和基準進行量化評估,而不是像從前那樣依靠架構(gòu)師的直覺與經(jīng)驗。我們使用的量化方法也受到了圖靈獎得主 Donald Knuth 關(guān)于算法的書的啟發(fā)。
VLIW、EPIC、Itanium
下一個 ISA 創(chuàng)新應(yīng)該是對 RISC 和 CISC 的繼承。超長指令字(VLIW)及其「表親」顯式并行指令計算機(EPIC)使用了寬指令,其中在每條指令中捆綁了多個獨立操作。VLIW 和 EPIC 的擁護者當時認為,單個指令如果可以指定六個獨立的操作(兩個數(shù)據(jù)傳輸、兩個整型操作和兩個浮點操作),并且編譯器技術(shù)可以有效地將操作分配到六個指令槽,則硬件可以變得更簡單。與 RISC 方法一樣,VLIW 和 EPIC 將工作從硬件轉(zhuǎn)移到編譯器。
通過合作,英特爾和惠普公司設(shè)計了一款基于 EPIC 理念的 64 位處理器來取代 32 位 x86。英特爾和惠普公司對第一款 EPIC 處理器(Itanium)的期望很高,但實際情況與開發(fā)商的早期聲明并不相符。雖然 EPIC 方法適用于高度結(jié)構(gòu)化的浮點程序,但它很難實現(xiàn)具有較少可預(yù)測的緩存丟失或較不可預(yù)測分支的整型程序的高性能。正如 Donald Knuth 后來指出:「Itanium 方法...... 原被認為非常贊,直到事實證明所希望的編譯器基本上不可能寫出來?!箤<覀冏⒁獾?Itanium 的延遲和表現(xiàn)不佳,并借鑒泰坦尼克號事件重新將其命名為「Itanic」。市場再次失去了耐心,導致 64 位版本的 x86 成為 32 位 x86 的繼承者,而不是 Itanium。
好消息是 VLIW 仍然適用于較窄范圍的應(yīng)用程序、小程序、更簡單的分支和省略緩存,包括數(shù)字信號處理。
PC 和后 PC 時代的 RISC vs. CISC
AMD 和英特爾使用了 500 人的設(shè)計團隊和頂尖半導體技術(shù)來減少 x86 和 RISC 的性能差距。再次受到簡單流水線 vs 復(fù)雜指令性能優(yōu)勢的啟發(fā),指令解碼器在運行中將復(fù)雜的 x86 指令轉(zhuǎn)換為類似 RSIC 的內(nèi)部微指令。然后 AMD 和英特爾將 RISC 微指令的執(zhí)行流水線化。RISC 設(shè)計師關(guān)于性能分離指令、數(shù)據(jù)緩存、芯片二級緩存、深度流水線,以及同時獲取和執(zhí)行多個指令的任何想法,都可以用在 x86 的設(shè)計上。AMD 和英特爾在 2011 年 PC 時代的巔峰期出了大約 3 億 5 千萬個微處理器。PC 行業(yè)的高產(chǎn)量和低利潤同樣意味著比 RISC 計算機更低的價格。
鑒于每年全球銷售的數(shù)億臺 PC,PC 軟件成為一個巨大的市場。雖然 Unix 市場的軟件提供商會為不同的商業(yè) RISC ISA-Alpha、HP-PA、MIPS、Power 和 SPARC 提供不同的軟件版本,但 PC 市場卻享有單一的 ISA,因此軟件開發(fā)商提供了「收縮包裝」軟件,只與 x86 ISA 二進制兼容。2000 年,更大的軟件基礎(chǔ)、類似的性能和更低的價格使 x86 在臺式機和小型服務(wù)器市場中占據(jù)主導地位。
蘋果公司在 2007 年幫助推動了后 PC 時代。智能手機公司不再購買微處理器,而是采用其他公司的設(shè)計(包括 ARM 的 RISC 處理器)構(gòu)建自己的芯片系統(tǒng)(SoC)。移動設(shè)備設(shè)計人員對芯片面積和能效以及性能進行評估,表明 CISC ISA 設(shè)計的不足之處。此外,物聯(lián)網(wǎng)的到來大大促進了處理器的數(shù)量以及芯片尺寸、功率、成本和性能所需的權(quán)衡。這種趨勢增加了設(shè)計時間和成本的重要性,進一步使 CISC 處理器處于不利地位。在今天的后 PC 時代,x86 出貨量自 2011 年達到峰值以來每年下降近 10%,而采用 RISC 處理器的芯片則飆升至 200 億。如今,99%的 32 位和 64 位處理器都是 RISC。
結(jié)束這一歷史回顧,我們可以說市場已經(jīng)解決了 RISC-CISC 的爭論。CISC 贏得了 PC 時代的后期階段,但 RISC 正在后 PC 時代占據(jù)主導。幾十年來,都沒有出現(xiàn)新的 CISC ISA。令我們驚訝的是,在推出 35 年后,今天對于通用處理器來說,最佳的 ISA 仍然是 RISC。
處理器架構(gòu)的當前挑戰(zhàn)
「如果一個問題無解,那它可能都不成問題,而是一個事實;我們不需要解決,而是隨著時間的推移來處理?!埂猄himon Peres
雖然前面的部分聚焦在指令集架構(gòu)(ISA)設(shè)計上,大部分計算機架構(gòu)師并不設(shè)計新的 ISA,而是在現(xiàn)有的實現(xiàn)技術(shù)中實現(xiàn)現(xiàn)有的 ISA。自 20 世紀 70 年代后期以來,選擇的技術(shù)一直是基于金屬氧化物半導體(MOS)的集成電路,首先是 n 型金屬氧化物半導體(nMOS),然后是互補金屬氧化物半導體(CMOS)。摩爾的預(yù)測中捕捉到的 MOS 技術(shù)驚人的進步率一直促使架構(gòu)師設(shè)計更積極的方法來為給定的 ISP 實現(xiàn)更好的性能。在 1965 年的最初預(yù)測中,摩爾稱晶體管密度會每年翻一番;1975 年,他又預(yù)計每兩年翻一番。該預(yù)測最終被稱為摩爾定律。因為晶體管密度呈二次增長,而增長率呈線性增長,架構(gòu)師使用更多晶體管來提高性能。
摩爾定律和登納德縮放定律的終結(jié)
盡管摩爾定律已經(jīng)持續(xù)了幾十年(見圖 2),但在 2000 年左右開始放緩。到了 2018 年,根據(jù)摩爾定律得出的預(yù)測與當下實際能力差了 15 倍。根據(jù)當前預(yù)測,這一差距將持續(xù)拉大,因為 CMOS 技術(shù)方法已經(jīng)接近極限。
圖 2. 每個英特爾微處理器上的晶體管數(shù)量 vs. 摩爾定律
伴隨摩爾定律是由羅伯特·登納德(Robert Dennard)預(yù)測的登納德縮放定律(Dennard scaling)。他指出,隨著晶體管密度的增加,每個晶體管的能耗將降低,因此硅芯片上每平方毫米上的能耗幾乎保持恒定。由于每平方毫米硅芯片的計算能力隨著技術(shù)的迭代而不斷增強,計算機將變得更加節(jié)能。登納德縮放定律從 2007 年開始大幅放緩,2012 年左右接近失效(見圖 3)。
圖 3. 每個芯片上的晶體管及每平方毫米的能耗。
1986 年至 2002 年間,指令級并行(ILP)是提高性能的主要架構(gòu)方法。而且隨著晶體管速度的提高,其性能每年能提高 50% 左右。登納德縮放定律的終結(jié)意味著工程師必須找到更加高效的并行化利用方法。
要理解為什么 ILP 的增加會導致芯片能效大大降低,可以看一看 ARM、英特爾、AMD 當前推出的處理器核。假設(shè)該芯片有一個 15 步的工作流程,每個時鐘周期可以發(fā)送 4 條指令。那么在任意一個時刻,整個工作流程中至多有 60 條指令,包括大約 15 個分支,因為它們代表了大約 25% 的執(zhí)行指令。為了保持工作流程完整,需要預(yù)測分支,并根據(jù)推測將代碼放入工作流程中以便執(zhí)行。推測的使用是 ILP 高性能和芯片低能效的源頭所在。如果分支預(yù)測完美,推測就能提高 ILP 性能,但能耗會增加一些——甚至可能節(jié)約能耗——但如果分支預(yù)測出現(xiàn)失誤,處理器就必須拋棄錯誤的推測指令,其計算工作及所耗能量就會付之東流。處理器的內(nèi)部狀態(tài)也必須恢復(fù)到錯誤預(yù)測分支之前的狀態(tài),這將花費額外的時間和能量。
要理解這種設(shè)計的挑戰(zhàn)性有多高,可以考慮一下正確預(yù)測 15 個分支結(jié)果的難度。如果處理器要將做無用功的時間限制在 10%,那么它必須在 99.3% 的時間里正確預(yù)測每個分支。很少有通用程序能夠如此準確地預(yù)測分支。
要理解這些無用功疊加起來是什么結(jié)果,可以參見圖 4 中的數(shù)據(jù)。圖 4 顯示了有效執(zhí)行的部分指令,這部分指令由于處理器推測錯誤而變得無用。在英特爾酷睿 i7 基準測試上,19% 的指令都被浪費了,但能耗的浪費情況更加嚴重,因為處理器必須利用額外的能量才能在推測失誤時恢復(fù)原來的狀態(tài)。這樣的度量導致許多人得出結(jié)論,架構(gòu)師需要一種不同的方法來實現(xiàn)性能改進。于是多核時代就這樣誕生了。
圖 4. 在各種 SPEC 整型數(shù)基準上,英特爾酷睿 i7 浪費的指令占完成指令總數(shù)的百分比。
多核將識別并行性和決定如何利用并行性的責任轉(zhuǎn)移給程序員和語言系統(tǒng)。多核并不能解決由登納德縮放定律終結(jié)帶來的能效計算挑戰(zhàn)。每個活躍的核都會消耗能量,無論其對計算是否具有有效貢獻。一個主要的障礙可以用阿姆達爾定律(Amdahl's Law)表述,該定理認為,并行計算機的加速受限于序列計算的部分。這一定律的重要性參見圖 5。圖中顯示,假設(shè)串行執(zhí)行的不同部分只有一個處理器處于活躍狀態(tài),那么與單個內(nèi)核相比,最多 64 個內(nèi)核的應(yīng)用程序運行速度要快得多。例如,如果只有 1% 的時間是串行的,那么 64 核配置可加速大約 35 倍,所需能量與 64 個處理器成正比,因此大約有 45% 的能量被浪費了。
圖 5. 部分時鐘周期時間為串行模式時,阿姆達爾定律對加速的影響。
真實的程序結(jié)構(gòu)當然會更加復(fù)雜,部分組件允許在給定時刻使用不同數(shù)量的處理器。然而,周期性通信和同步的需求意味著大部分應(yīng)用具備僅可高效使用一部分處理器的組件。盡管阿姆達爾定律已經(jīng)出現(xiàn) 50 多年了,它仍然是一個很大的障礙。
隨著登納德縮放定律的終結(jié),芯片內(nèi)核數(shù)量的增加意味著能耗也隨之增加。然而,進入處理器的電能肯定有一部分會轉(zhuǎn)化為熱能。因此多核處理器受限于熱耗散功率(TDP),即封裝和冷卻系統(tǒng)可以移除的平均功率。盡管一些高端數(shù)據(jù)中心可能使用更先進的封裝和冷卻技術(shù),但沒有一個計算機用戶想要在自己桌子上放置小型熱交換器,或者背著散熱器來冷卻手機。TDP 的局限性直接導致了「暗硅」(dark silicon)時代,處理器降低時鐘速率、關(guān)閉空閑內(nèi)核來防止過熱。這種方法的另一種解釋是:一些芯片可以重新分配其珍貴功耗,將其從空閑內(nèi)核轉(zhuǎn)移到活躍內(nèi)核。
登納德縮放定律結(jié)束、摩爾定律衰退,而阿姆達爾定律正當其時,這意味著低效性將每年的性能改進限制在幾個百分點(見圖 6)。獲得更高的性能改進(像 20 世紀八九十年代那樣)需要新的架構(gòu)方法,新方法應(yīng)能更加高效地利用集成電路。接下來我們將討論現(xiàn)代計算機的另一個主要缺陷——計算機安全問題,之后我們會回來探討有效的新方法。
圖 6:使用整型程序得到的計算機性能提升(SPECintCPU)。
被忽略的計算機安全
20 世紀 70 年代,處理器架構(gòu)師主要專注于計算機安全,涉及保護環(huán)、容量等概念。這些架構(gòu)師深刻了解到,大部分 bug 存在于軟件中,但他們認為架構(gòu)支持會有所幫助。操作系統(tǒng)大部分未使用這些功能,操作系統(tǒng)專注于良性環(huán)境(如個人電腦),因此具備較大開銷的功能未被使用。在軟件社區(qū)中,很多人認為微內(nèi)核(microkernel)等正式驗證技術(shù)會為構(gòu)建高度安全的軟件提供有效保障。但不幸的是,我們的軟件系統(tǒng)規(guī)模和性能驅(qū)動器意味著此類技術(shù)無法跟上處理器性能。結(jié)果就是大型軟件系統(tǒng)仍然有很多安全漏洞,且由于海量在線個人信息和云計算的使用,其影響被放大。
登納德縮放定律的終結(jié)意味著架構(gòu)師必須找到利用并行化的更高效方式。
盡管計算機架構(gòu)師等很晚才意識到安全的重要性,但他們已經(jīng)開始對虛擬機和加密提供硬件支持。不幸的是,推測給許多處理器帶來了一個未知但重要的安全缺陷。具體來看,Meltdown 和 Spectre 安全漏洞給微架構(gòu)帶來了新的缺陷,使受保護信息遭到泄露。這兩種漏洞都使用了旁路攻擊。2018 年,研究者展示了在攻擊者不將代碼加載到目標處理器的情況下,如何利用 Spectre 變體導致網(wǎng)絡(luò)信息泄露。盡管這次名為 NetSpectre 的攻擊泄露信息速度較慢,但它使同一局域網(wǎng)中的所有機器都受到攻擊,這造成了很多新的難題。虛擬機架構(gòu)還有兩個漏洞。一個是 Foreshadow,會影響專門保護高風險數(shù)據(jù)(如加密密鑰)的英特爾 SGX 安全機制。每個月都會發(fā)現(xiàn)新的漏洞。
旁路攻擊并非新鮮事,但是在最早期的案例中,促使旁路攻擊成功的是軟件缺陷。而在 Meltdown、Spectre 等攻擊中,硬件實現(xiàn)中的缺陷導致受保護信息泄露。這是處理器架構(gòu)師定義什么是 ISA 正確實現(xiàn)的一個基本難題,因為標準定義中并未提及執(zhí)行指令序列的性能影響,而僅僅涉及 ISA-visible 執(zhí)行架構(gòu)狀態(tài)。架構(gòu)師需要重新思考對 ISA 正確實現(xiàn)的定義,以避免此類安全漏洞。同時,他們還應(yīng)該重新思考對計算機安全的側(cè)重點,以及架構(gòu)師如何與軟件設(shè)計師一道實現(xiàn)更加安全的系統(tǒng)。架構(gòu)師(以及每個人)都過于依賴信息系統(tǒng),以至于對安全的重視程度不如對一流設(shè)計的關(guān)注。
計算機架構(gòu)的未來機遇
「我們的機遇就在那些『無解問題』之中。」——John Gardner, 1965
通用處理器固有的低效性,以及登納德縮放定律和摩爾定律的終結(jié),使得處理器架構(gòu)師和設(shè)計師很可能無法維持通用處理器中的顯著性能改進。鑒于改進性能對新的軟件能力的重要性,我們必須問:有沒有其他的有效方法?
現(xiàn)在有兩個很明確的機會,把二者結(jié)合起來則是第三個機會。首先,現(xiàn)有的軟件構(gòu)建技術(shù)廣泛使用具備動態(tài)類型和存儲管理的高級語言。但是,此類語言的解釋和執(zhí)行通常非常低效。Leiserson 等人使用一個小例子(執(zhí)行矩陣相乘)說明了這種低效性。如圖 7 所示,簡單地將 Python 語言代碼重寫為 C 代碼就可以將性能提升 46 倍(Python 是典型的高級、動態(tài)類型語言)。
在多核上運行并行循環(huán)(parallel loops)又將性能提升接近 7 倍。優(yōu)化內(nèi)存配置又將性能提升了近 19 倍,而通過單指令多數(shù)據(jù)(SIMD)并行化操作(一個指令執(zhí)行 16 個 32-bit 運算)的硬件擴展,性能又提升了 8 倍多。也就是說,最終的高度優(yōu)化版本在多核英特爾處理器上的運行速度是初始 Python 版本的 62,000 多倍。這當然只是一個很小的例子,但我們會期望程序員使用優(yōu)化庫。盡管這夸大了常見的性能差距,但很多程序的性能差距可能達到 100 到 1000 倍。
圖 7. Python 四次優(yōu)化中矩陣乘法的潛在加速能力。
一個有趣的研究方向有關(guān)是否可以使用新的編譯器技術(shù)來縮短性能差距(可以輔以體系架構(gòu)增強)。盡管高效編譯和實現(xiàn) Python 這樣的高級腳本語言比較困難,但潛在的收益是巨大的。即使實現(xiàn) 25% 的提升潛力,也能讓 Python 程序的運行速度提升百倍。這個簡單的例子展示了現(xiàn)代語言中,程序員強調(diào)生產(chǎn)力和傳統(tǒng)方法強調(diào)性能之間的巨大差距。
特定領(lǐng)域的體系結(jié)構(gòu)。一種更加以硬件為中心的設(shè)計思路是設(shè)計針對特定問題和領(lǐng)域的架構(gòu),并給與它們強大(且高效)的性能,因此它們是「特定領(lǐng)域的體系結(jié)構(gòu)(DSA)」,這是一種特定領(lǐng)域的可編程處理器,通常是圖靈完備的,但針對特定類別的應(yīng)用進行了定制。從這個意義上來說,它們與專用集成電路(ASIC)不同,后者僅適用于單一功能,代碼很少有變化。DSA 通常被稱為加速器,因為與在通用 CPU 上執(zhí)行整個應(yīng)用程序相比,它們可以加速某些應(yīng)用程序。此外,DSA 可以實現(xiàn)更好的性能,因為它們更貼近應(yīng)用的實際需求;DSA 的例子包括圖形加速單元(即 GPU),用于深度學習的神經(jīng)網(wǎng)絡(luò)處理器,以及軟件定義處理器(SDN)。DSA 效率更高,能耗更低是因為以下四個原因:
首先最重要的是,DSA 為特定領(lǐng)域的計算使用了更加有效的并行形式。例如單指令多數(shù)據(jù)并行(SIMD)比多指令多數(shù)據(jù)(MIMD)更有效,因為它在一個時鐘步長內(nèi)只需處理一個指令流和處理單元。盡管 SIMD 相比 MIMD 沒那么靈活,但前者適用于很多 DSA。DSA 也可以使用 VLIW 方法來實現(xiàn) ILP,而不是推測性的無序機制。如前文所述,VLIW 處理器與通用性代碼不匹配,但對于有限領(lǐng)域更加有效,因為它的控制機制更加簡單。特別是大多數(shù)高端通用處理器都是超標量的,需要復(fù)雜的控制邏輯來啟動和完成指令。與之相對的是,VLIW 在編譯時執(zhí)行必要的分析和調(diào)度,這對于顯式并行程序來說可以很好地工作。
第二,DSA 可以更有效地利用內(nèi)存層次結(jié)構(gòu)。如 Horowitz 所述,內(nèi)存訪問要比算數(shù)計算的成本高出很多。例如,訪問 32 千字節(jié)緩存需要的能量相當于做 32 位加法的大約 200 倍。這種巨大的差異使得優(yōu)化存儲器訪問對于實現(xiàn)高能效來說至關(guān)重要。通用處理器的運行代碼,其中的存儲器訪問通常表現(xiàn)出空間和時間局部性,但在編譯時不是非??深A(yù)測的。因此,CPU 使用多級高速緩存來增加帶寬,并隱藏相對較慢的芯片外 DRAM 延遲。這些多級高速緩存通常消耗大約一半的處理器能量,但幾乎忽略了所有片外 DRAM 訪問,這些訪問需要大約 10 倍于最后一級高速緩存訪問的能量。
緩存有兩大缺點:
當數(shù)據(jù)集非常大的時候,時間空間位置較低時緩存的工作效率很低;
當緩存工作效率高的時候,位置非常高,這意味著同時根據(jù)定義,大多數(shù)緩存在大多數(shù)時間都處于空閑狀態(tài)。
在那些編譯時可以很好地定義和發(fā)現(xiàn)內(nèi)存訪問模式的應(yīng)用程序中——這對于典型的 DSL 來說是常見的——程序員和編譯器可以比動態(tài)分配的緩存更好地優(yōu)化內(nèi)存的使用。因此,DSA 通常使用由軟件明確控制運動的存儲器層次,類似于矢量處理器的操作。對于合適的應(yīng)用,用戶控制的存儲器可以比高速緩存使用更少的能量。
第三,DSA 在可接受時可以使用較低的精度。適用于通用任務(wù)的 CPU 通常支持 32 和 64 位整型數(shù)和浮點數(shù)數(shù)據(jù)。對于很多機器學習和圖像應(yīng)用來說,這種準確率有點浪費了。例如在深度神經(jīng)網(wǎng)絡(luò)中(DNN),推理通常使用 4、8 或 16 位整型數(shù),從而提高數(shù)據(jù)和計算吞吐量。同樣,對于 DNN 訓練程序,浮點數(shù)很有意義,但 32 位就夠了,16 為經(jīng)常也能用。
最后,DSA 受益于以特定領(lǐng)域語言(DSL)編寫的目標程序,這些程序可以實現(xiàn)更高的并行性,更好的內(nèi)存結(jié)構(gòu)訪問和表示,并使應(yīng)用程序更有效地映射到特定域的處理器。
特定領(lǐng)域的語言
DSA 要求將高級運算定位到體系架構(gòu)中,但一般嘗試從 Python、Java、C 或 Fortran 等通用語言抽取結(jié)構(gòu)和信息實在太難了。因此特定領(lǐng)域的語言(DSL)特別支持這一過程,并盡可能高效地編程 DSA。例如 DSL 可以令向量、密集型矩陣和稀疏性矩陣運算變得顯式化,并允許 DSL 編譯器高效地將運算映射到處理器中。DSL 有很多常見的例子,例如專注矩陣運算的語言 Matlab、專注 DNN 編程的數(shù)據(jù)流語言 TensorFlow,以及專注編程 SDN 的語言 P4 和專注圖像處理中高級轉(zhuǎn)換的 Halide 等。
使用 DSL 的挑戰(zhàn)是如何保證足夠的架構(gòu)獨立性,使得 DSL 中編寫的的軟件可以移植到不同的架構(gòu),同時軟件映射到底層 DSA 的效率還要非常高。例如 XLA 系統(tǒng)將 TensorFLow 代碼轉(zhuǎn)化為能使用 GPU 或 TPU 等異構(gòu)處理器的計算圖。DSA 之間的平衡可移植性以及效率是編程語言設(shè)計者、編譯器設(shè)計者和 DSA 架構(gòu)師都感興趣的研究領(lǐng)域。
以 TPU 為例
作為 DSA 的示例,我們可以考慮谷歌 TPU 1 的設(shè)計,它旨在加速神經(jīng)網(wǎng)絡(luò)的推斷過程。TPU 自 2015 年投入生產(chǎn),它從搜索引擎到語言翻譯和圖像識別支持著谷歌各種各樣的業(yè)務(wù),同時也支持著 AlphaGo 和 AlphaZero 等 DeepMind 前沿研究。TPU 的目標是提升深度神經(jīng)網(wǎng)絡(luò)推斷過程的性能與能源效率 10 倍。
如下圖 8 所示,TPU 的組織架構(gòu)與通用處理器完全不同。它的主計算單元是矩陣單元,即每個時鐘周期提供提供 256×256 乘加運算的脈動陣列(systolic array)。TPU 還結(jié)合了 8-bit 精度、高效脈動架構(gòu)(systolic structure)和 SIMD 控制特性,這意味著每個時鐘周期所能執(zhí)行的乘加(multiply-accumulates)數(shù)是一般通用單核 CPU 的 100 倍。
TPU 使用 24MB 的本地內(nèi)存以代替高速緩存,大約是 2015 年相同功耗 CPU 的兩倍。最后,激活值內(nèi)存和權(quán)重內(nèi)存(包括儲存權(quán)重的 FIFO 結(jié)構(gòu))可以通過用戶控制的高帶寬內(nèi)存通道連接。使用谷歌數(shù)據(jù)中心常見的 6 個推斷問題的加權(quán)算術(shù)均值作為度量,TPU 比一般 CPU 要快 29 倍。因為 TPU 要求的能源少了一半,它的能源效率在這樣的工作負載中是一般 CPU 的 80 倍。
圖 8:谷歌張量處理單元(TPU v1)的功能性組織架構(gòu)圖。
小結(jié)
我們考慮了兩種不同的通過提升硬件技術(shù)效率來提升編程性能的方法:首先,通過提升現(xiàn)代高級語言的性能;其次,通過構(gòu)建領(lǐng)域特定的相比通用 CPU 能顯著提升性能和效率的架構(gòu)。DSL 是另一個如何改進支持 DSA 等架構(gòu)創(chuàng)新的硬件/軟件接口的例子。要通過這些方法獲得顯著收益將需要一個垂直集成的設(shè)計團隊,該團隊了解應(yīng)用程序、領(lǐng)域特定的語言和相關(guān)的編譯器技術(shù)、計算機體系結(jié)構(gòu)、組織以及底層實現(xiàn)技術(shù)。在行業(yè)橫向結(jié)構(gòu)化之前,需要在跨抽象層次上垂直集成并做出設(shè)計決策,這是計算機技術(shù)研發(fā)早期的主要特征。在這個新時代,垂直整合變得更加重要,能夠檢查和進行復(fù)雜權(quán)衡以及優(yōu)化的團隊將會受益。
這個機會已經(jīng)帶來了大量的架構(gòu)創(chuàng)新,吸引了很多有競爭力的架構(gòu)設(shè)計思想:
GPU:英偉達 GPU 使用了很多核心,每個核心都有大型寄存器文件、很多硬件線程和緩存;
TPU:谷歌 TPU 依賴于大型二維收縮乘法器和板載內(nèi)存的硬件控制;
FPGA:微軟在其數(shù)據(jù)中心里部署了現(xiàn)場可編程門陣列器件(FPGA),專用于神經(jīng)網(wǎng)絡(luò)應(yīng)用;
CPU:英特爾提供通過大型高級緩存和一維 SIMD 指令增強的帶有很多核心的 CPU,微軟使用的 FPGA,以及一種新型的神經(jīng)網(wǎng)絡(luò)處理器,這種處理器相比 CPU 更加接近 TPU。
除了這些大企業(yè)外,還有數(shù)十家創(chuàng)業(yè)公司正在推行自己的方案。為了滿足不斷增長的需求,架構(gòu)工程師正在將數(shù)百到數(shù)千個此類芯片互連以形成神經(jīng)網(wǎng)絡(luò)超級計算機。
DNN 架構(gòu)的雪崩式涌現(xiàn)使計算機架構(gòu)領(lǐng)域進入了一個有趣的時代。在 2019 年很難預(yù)測這些方向中哪些(或者即使有)會贏,但市場肯定會像在解決過去的架構(gòu)爭論一樣解決競爭問題。
開放式架構(gòu)
受開源軟件成功的啟發(fā),計算機架構(gòu)的第二個機會是開放的 ISA。要創(chuàng)建處理器中的「Linux」,該領(lǐng)域需要行業(yè)標準的開放式 ISA,除了擁有專利技術(shù)的個別公司以外,社區(qū)可以創(chuàng)建開源核心。如果許多組織使用相同的 ISA 設(shè)計處理器,那么更大的競爭可能會推動更快的創(chuàng)新。目標是為芯片提供處理器,成本從幾美分到 100 美元不等。
第一個例子是 RISC-V(稱為「RISC Five」),這是加州大學伯克利分校開發(fā)的第五個 RISC 架構(gòu)。RISC-V 有一個社區(qū),在 RISC-V 基金會的管理下維護架構(gòu)。開放性允許 ISA 在公開環(huán)境中演變,硬件和軟件專家在決策最終確定之前進行協(xié)作。開放式基金的另一個好處是 ISA 不太可能主要出于營銷原因而擴展,這有時是專有指令集擴展的唯一原因。
RISC-V 是一個模塊化指令集。一小部分指令運行完整的開源軟件堆棧,然后是可選的標準擴展,設(shè)計人員可以根據(jù)需要包含或省略。該基礎(chǔ)包括 32 位地址和 64 位地址版本。RISC-V 只能通過可選擴展來增長;即使架構(gòu)師不接受新的擴展,軟件堆棧仍然運行良好。專有架構(gòu)通常需要向上的二進制兼容性,這意味著當處理器公司添加新功能時,所有未來的處理器也必須包含它。對于 RISC-V,情況并非如此,所有增強功能都是可選的,如果應(yīng)用程序不需要,可以刪除。以下是目前為止的標準擴展,使用代表其全名的縮寫:
M. 整型數(shù)乘法/除法;
A. 原子內(nèi)存操作;
F/D. 單/雙精度浮點數(shù);
C. 壓縮指令。
更少指令。RISC-V 的指令少得多。base 中有 50 個指令,與原始 RISC-I 相近。剩余的標準擴展(M、A、F 和 D)增加了 53 條指令,再加上 C 又增加了 34 條,共計 137 條。ARMv8 有超過 500 條指令。
更少的指令格式。RISC-V 的指令格式非常少,只有六種,而 ARMv8 至少有 14 種。
簡單性減少了設(shè)計處理器和驗證硬件正確性的工作量。由于 RISC-V 的目標范圍覆蓋了數(shù)據(jù)中心芯片到物聯(lián)網(wǎng)設(shè)備,因此設(shè)計驗證可能是開發(fā)成本的重要組成部分。
RISC-V 是一種簡潔的設(shè)計,誕生 25 年后,它的設(shè)計師從其前輩的錯誤中吸取了教訓。與第一代 RISC 架構(gòu)不同,它避免了微架構(gòu)或技術(shù)依賴的功能(例如延遲分支和延遲加載)或創(chuàng)新(例如寄存器窗口),這些功能被編譯器技術(shù)的進步所取代。
最后,RISC-V 通過為自定義加速器保留大量操作碼空間來支持 DSA。
安全專家不相信不可見的安全性,因此開放式實現(xiàn)很有吸引力,開放式實現(xiàn)需要開放式架構(gòu)。
除 RISC-V 外,英偉達 2017 年還宣布一個免費開放的架構(gòu),稱之為英偉達深度學習加速器(NVDLA),這是一種可擴展的可配置 DSA,用于機器學習推理。配置選項包括數(shù)據(jù)類型(int8、int16 或 fp16)和二維乘法矩陣的大小。模具尺寸從 0.5 mm^2 到 3 mm^2,功率從 20 毫瓦到 300 毫瓦。ISA、軟件堆棧和實現(xiàn)都是開放的。
開放的簡單架構(gòu)與安全性具有協(xié)同作用。首先,安全專家不相信安全性,因此開放式實現(xiàn)很有吸引力,而開放式實現(xiàn)需要開放式架構(gòu)。同樣重要的是增加可以圍繞安全架構(gòu)進行創(chuàng)新的人員和組織的數(shù)量。專有架構(gòu)限制了員工的參與,但開放式架構(gòu)允許學術(shù)界和工業(yè)界的所有最佳人才幫助提高安全性。最后,RISC-V 的簡單性使其實現(xiàn)更容易檢查。此外,開放式架構(gòu)、實現(xiàn)、軟件堆棧以及 FPGA 的可塑性意味著架構(gòu)師可以在線部署和評估新穎的解決方案,并每周而不是每年迭代它們。雖然 FPGA 比定制芯片慢 10 倍,但這種性能仍然足以支持在線用戶,同時帶來安全創(chuàng)新,解決真正的攻擊。我們希望開放式架構(gòu)成為架構(gòu)師和安全專家進行硬件/軟件協(xié)同設(shè)計的典范。
敏捷硬件開發(fā)
Beck 等人 2001 年提出的《敏捷軟件開發(fā)宣言》(The Manifesto for Agile Software Development)徹底改變了軟件開發(fā)方式,克服了瀑布式開發(fā)中傳統(tǒng)精細規(guī)劃和文檔的頻繁失敗。小型編程團隊很快開發(fā)了有用但不完整的原型,并在進行下一次迭代之前獲得了顧客的反饋。敏捷開發(fā)的 scrum 版本集合了 5 到 10 名程序員組成的團隊,每次迭代進行 2 到 4 周的沖刺。
再次受到軟件開發(fā)成功的啟發(fā),第三次機會是敏捷硬件開發(fā)。對架構(gòu)師來說的一個好消息是,當代電子計算機輔助設(shè)計(ECAD)工具提高了抽象水平,使得敏捷開發(fā)成為可能,而且這種更高水平的抽象增加了設(shè)計的重用性。
考慮到從設(shè)計交付到返回芯片所需的幾個月時間,稱硬件只需四周的沖刺時間似乎有些不太可信。圖 9 概述了敏捷開發(fā)方法是如何通過在適當?shù)膶由细淖冊推鹱饔玫?。最?nèi)層是軟件模擬器,如果模擬器能夠滿足迭代需求,這是進行更改的最方便快捷的地方。第二層是 FPGA,其運行速度是具體軟件模擬器的數(shù)百倍。FPGA 可以運行操作系統(tǒng)和完整的基準測試(像那些來自標準性能評估公司的測試),允許對原型進行更精確的評估。亞馬遜在云端提供了 FPGA,所以架構(gòu)師們可以使用 FPGA,而無需購買硬件和建立實驗室。為了記錄芯片面積和功率的數(shù)字,第三層使用 ECAD 工具生成芯片布局。即使在工具運行之后,在準備制造新的處理器之前,也需要進行一些手動步驟來完善結(jié)果。處理器設(shè)計者將第四層稱為「tape in」。前四個層都支持四周沖刺。
圖 9:敏捷硬件開發(fā)方法。
出于研究目的,我們可以在 tape in 上停下來,因為面積、能量和性能估計非常準確。但這就像是在長跑比賽中在離終點約 100 米的地方停下來一樣,因為跑步者可以準確預(yù)測最后時間。雖然在準備比賽方面下足了功夫,跑步者仍會錯過穿過終點線的興奮和滿足感。硬件工程師相較于軟件工程師的一個優(yōu)勢是,他們搭建的是實物。測量芯片,運行真正的程序,然后向朋友家人展示,這是硬件設(shè)計的一大樂趣。
很多研究者覺得必須停下來,因為制造芯片的成本太過高昂。當設(shè)計作品很小時,它們出奇地便宜。架構(gòu)師只要花 14,000 美元就可以訂購 100 個大小為 1 平方毫米的芯片。在 28 納米制程上,1 平方毫米的芯片可以容納數(shù)百萬晶體管,這對 RISC-V 處理器和 NVLDA 處理器來說足夠大了。如果設(shè)計者的目標是設(shè)計一個較大的芯片,那最外層的成本將非常高,體系架構(gòu)設(shè)計者可以用很多小芯片來闡述很多新想法。
總結(jié)
「最黑暗的時刻,是黎明來臨之前?!埂猅homas Fuller, 1650
要從歷史教訓中獲益,架構(gòu)設(shè)計者們必須意識到軟件創(chuàng)新也能激勵架構(gòu)發(fā)展,而提高硬件/軟件界面的抽象水平會帶來創(chuàng)新的機會,市場最終會解決計算機架構(gòu)的爭論。iAPX-432 和 Itanium 說明了架構(gòu)投入如何超過回報,而 S/360、8086 和 ARM 則連續(xù)數(shù)十年帶來很高的回報,而且將繼續(xù)下去。
登納德縮放定律和摩爾定律的終結(jié),以及標準微處理器性能提升的減速并非必須解決的問題,而是公認的事實。這一事實也提供了驚人的機會。高級、特定領(lǐng)域的語言和架構(gòu)將架構(gòu)師從專有指令集的鏈條中釋放出來,公眾也提高了對安全性的需求,所有這些將為計算機架構(gòu)師帶來一個新的黃金時代。借助開源生態(tài)系統(tǒng),敏捷開發(fā)的芯片將展示其進步,從而加速商業(yè)應(yīng)用。這些芯片中通用處理器的 ISA 理念很可能是 RISC,后者經(jīng)受住了時間的考驗。我們期待著這次能與上一個黃金時代一樣快速改善,不過這次是在成本、能源、安全以及性能方面的改善。
未來十年,將會有一場新計算機架構(gòu)的寒武紀爆炸,這對業(yè)界和學界的架構(gòu)師們來說將是激動人心的時刻。
-
存儲器
+關(guān)注
關(guān)注
38文章
7528瀏覽量
164222 -
機器學習
+關(guān)注
關(guān)注
66文章
8438瀏覽量
132969 -
計算機架構(gòu)
+關(guān)注
關(guān)注
1文章
8瀏覽量
6173
原文標題:計算機架構(gòu)的新黃金時代,兩位圖靈獎得主最新力作
文章出處:【微信號:gh_ecbcc3b6eabf,微信公眾號:人工智能和機器人研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論