0
雷鋒網(wǎng)按:近幾年來,不論是普通消費者還是科研人員們都可以感受到兩種浪潮,一種是 CPU 速度的提升越來越不顯著了,我們說 CPU 制造商又在「擠牙膏」;另一方面,在深度學(xué)習(xí)的刺激下,各個半導(dǎo)體巨頭和一群 AI 初創(chuàng)企業(yè)都開始宣傳自己的 AI 芯片。我們仿佛看到一類芯片逐漸走向慢車道,另一類芯片則準(zhǔn)備搭臺唱戲、躍躍欲試。
這種柳暗花明的背后,顯示的正是計算機計算架構(gòu)的時代變革;新的方法、新的思維、新的目標(biāo)引領(lǐng)了新的浪潮。2017 年圖靈獎的兩位得主 John L. Hennessy 和 David A. Patterson 就是這個新浪潮的見證者和引領(lǐng)者。近日他們在 ACM 通訊(Communications of the ACM)發(fā)表了一篇長報告,詳細(xì)描述了引發(fā)計算機架構(gòu)新時代到來的種種變化,他們也展望未來的十年將是計算機體系架構(gòu)領(lǐng)域的「新的黃金十年」。
雷鋒網(wǎng)把這篇文章全文編譯如下。本篇為下篇,上篇見這里。
另外二位還有過一次輕松的訪談,可以點擊這里。
「我們面前有一些令人目瞪口呆的機會,不過它們把自己偽裝成了看似無法解決的困難」。 -John Gardner
不論是對于 ILP 的技術(shù)或者多核心處理器,由于為通用計算設(shè)計的微處理器注定了效率較低,再加上Dennard Scaling定律和摩爾定律走向終結(jié),所以在我們看來,處理器架構(gòu)師和設(shè)計師們很有可能再也無法讓通用處理器的性能以之前那樣的速度繼續(xù)大幅提高。但是我們?nèi)匀恍枰朕k法繼續(xù)提升硬件性能、為未來的新的軟件功能留下發(fā)展空間,我們就必須仔細(xì)思考這個問題:有沒有其他的有潛力的方案?
比較明顯的方案有兩種,以及把這兩種方案合并在一起的話我們還可以得到第三種方案。
執(zhí)行性能優(yōu)化
第一種方案是,現(xiàn)代軟件的編寫中大量使用了高級語言,其中有動態(tài)類型和動態(tài)存儲管理。然而不幸的是,這些語言的編譯和執(zhí)行是非常低效的。Leiserson 等人用矩陣乘法的小例子說明了這種低效性。
Python 是一種當(dāng)前火熱的編程語言,也是一種典型的高級、動態(tài)類型語言。如下面圖 7,僅僅是把本來用 Python 編寫的程序用 C 語言重新寫一遍,就可以把程序的性能提高 47 倍。在多核心處理器上并行運行多個循環(huán)可以繼續(xù)得到大約 7 倍的性能提升。優(yōu)化程序的存儲布局,讓程序使用處理器中的緩存(而不是外部安裝的內(nèi)存)可以提升 20 倍性能,最后,如果加入拓展的計算硬件,用能夠在每個指令周期內(nèi)計算 16 次 32 位運算的單指令多數(shù)據(jù)并行(SIMD)計算單元進(jìn)行運算的話,我們還可以再把性能提高9倍。把以上這些改進(jìn)全部用起來的話,
一個運行在英特爾多核處理器上的、經(jīng)過高度優(yōu)化過的程序可以比最初的 Python 版本快超過 6 萬倍。
這當(dāng)然只是一個很小的例子,一般的程序員可能自己就會使用一個有優(yōu)化作用的庫來享受這種提升。雖然這個例子把性能的變化展現(xiàn)得很夸張,但是在許許多多的程序中,提升 100 倍或者 1000 倍的性能還是完全可以實現(xiàn)的。
有一個有趣的研究方向是,考慮其中的一些性能差距是否可以用更好的編譯器技術(shù)來補上,當(dāng)然了也可以同時搭配一些計算架構(gòu)的改進(jìn)。雖然高效的語言翻譯、以及高效實現(xiàn) Python 這類的高級腳本語言確實有很大困難,但潛在的性能收益也是巨大的。即便我們只實現(xiàn)了這些潛力中的 25% 就已經(jīng)可以讓 Python 程序的運行速度提高數(shù)十倍甚至一百倍。這個簡單的例子就清晰地展示了關(guān)注軟件工程師的生產(chǎn)力的現(xiàn)代編程語言和關(guān)注程序性能表現(xiàn)的傳統(tǒng)方法之間的巨大鴻溝。
設(shè)計專用硬件
領(lǐng)域?qū)S玫挠嬎慵軜?gòu)。除了改進(jìn)軟件執(zhí)行效率的第一種方案之外,第二種方案更加以硬件為中心,那就是為某個特定的領(lǐng)域問題設(shè)計專用的計算架構(gòu),從而為這些問題帶來顯著的性能(和效率)提升。這種方案的名字,DSA,「domain-specific architectures」,描述的就是這種為特定的領(lǐng)域問題而專門定制設(shè)計的處理器,它們可編程,同樣也是圖靈完備的,但只適用于特定的某一類問題。從這個角度來講,它們和專用集成電路 ASIC 之間也有所不同,ASIC 只執(zhí)行單一的功能,對應(yīng)的程序代碼幾乎從不變化。DSA 則常被稱為加速器,相比于把程序的所有功能都在為通用計算的 CPU 上執(zhí)行,DSA 可以讓程序中的一部分計算運行得更快。更重要的是,DSA 可以讓一些程序得到明顯更高的性能,因為它們就是為了貼近這些程序的計算需求而設(shè)計的。圖像處理單元 GPU、深度學(xué)習(xí)中使用的神經(jīng)網(wǎng)絡(luò)芯片、軟件定義網(wǎng)絡(luò)處理器 SDN 都是典型的例子。DSA 可以達(dá)到高得多的性能表現(xiàn)和高得多的能量效率,是由于以下四個原因:
第一點,也是最重要的一點,DSA 可以為具體的領(lǐng)域問題采用更為高效的并行計算設(shè)計。比如,單指令多數(shù)據(jù)并行(SIMD)就比多指令多數(shù)據(jù)并行(MIMD)的效率高得多,因為它只需要獲取一條指令流就可以讓處理單元在鎖定步驟內(nèi)執(zhí)行運算。SIMD 的靈活性固然不如 MIMD 高,但是它很符合許多 DSA 的需求。DSA 中還有可能使用 VLIW 方案來實現(xiàn) ILP,而不是使用更復(fù)雜的亂序執(zhí)行機制。正如前面提到的,VLIW 無力與通用計算代碼競爭,但是在有限制條件的領(lǐng)域中它就可以高效得多,因為它的控制機制簡單得多。尤其是,多數(shù)的高端通用計算處理器都是亂序執(zhí)行的超標(biāo)量處理器,對于指令初始化和指令完成都需要復(fù)雜的控制邏輯。相比之下,VLIW 在編譯的時候就已經(jīng)執(zhí)行好了必需的分析和流程規(guī)劃,在顯示并行的程序中就可以起到很好的效果。
第二,DSA 可以更高效地利用不同層次的存儲器。Horowitz 指出,讀寫存儲器的成本已經(jīng)變得高于數(shù)學(xué)運算的成本了。比如,從一個 32KB 容量的緩存里讀取一個塊需要消耗的能量差不多要比執(zhí)行一次 32 位整型加法高 200 倍。正因為這種差別的存在,想要達(dá)到高的能源效率,優(yōu)化存儲器的讀寫就至關(guān)重要。通用計算處理器執(zhí)行代碼的方式是,一般來說存儲器的讀寫都具有時間和空間上的局部性,但是其他狀況是在程序編譯時很難預(yù)測的。所以 CPU 會配合使用多級緩存,以便增加存儲器帶寬,同時緩解相對較慢的片外存儲(內(nèi)存,DRAM)的高延遲問題。CPU 消耗的電能里,常常有一半都是花在了這些多級緩存上面,不過它們的作用也就是避免了大多數(shù)對片外 DRAM 的訪問,要知道,讀寫 DRAM 消耗的能源要比讀寫最后一級緩存還要高差不多 10 倍。
緩存的缺點會在這兩種情況下暴露出來:
當(dāng)數(shù)據(jù)集非常大的時候,緩存的時間和空間局部性都很差;
當(dāng)緩存表現(xiàn)得非常好的時候,也就是說局部性非常高的時候,這其實說明大多數(shù)緩存都是空閑的。
在那些存儲器的讀寫模式有良好定義、在編譯時就可以發(fā)現(xiàn)的應(yīng)用中(典型的 DSL 都符合),程序員和程序的編譯器都可以優(yōu)化存儲器的使用,效果要比動態(tài)分配緩存更好。所以 DSA 通常會使用一個層次式的存儲器,它的操作也是由軟件明確定義的,這和向量處理器的運行方式很類似。對于適合的應(yīng)用,用戶控制的存儲器消耗的能源要比緩存低多了。
第三,在適當(dāng)?shù)臅r候,DSA 可以用更低的精度做運算。通用計算 CPU 一般支持 32 位和 64 位整型以及浮點數(shù)據(jù)運算。不過對于機器學(xué)習(xí)和圖形領(lǐng)域的許多應(yīng)用來說,這樣的精度都高于實際需求了。比如在深度神經(jīng)網(wǎng)絡(luò)中,推理任務(wù)經(jīng)常使用 4 位、8 位或者 16 位的整型,以獲取更高的數(shù)據(jù)吞吐量、更高的計算吞吐量。類似地,在深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中需要使用浮點類型,32 位就已經(jīng)夠用了,16 位很多時候都可以。
第四,如果程序是用領(lǐng)域?qū)S谜Z言(DSL)編寫的,由于語言本身對并行化有更好的支持,DSA 也就可以從中受益。這改進(jìn)了存儲器讀取的結(jié)構(gòu)和表示,也可以更容易地把應(yīng)用程序映射到一個領(lǐng)域?qū)S玫奶幚砥魃先ァ?/p>
領(lǐng)域?qū)S谜Z言
DSA 需要把編程語言中的高級操作對應(yīng)到硬件架構(gòu)上去,但是想要從 Python、Java、C、Fortan 這樣的為通用型計算設(shè)計的語言中提取這樣的結(jié)構(gòu)和信息實在是太難了。領(lǐng)域?qū)S谜Z言(DSL)讓這個過程變得可以實現(xiàn),而且也讓我們有機會高效地為 DSA 編程。比如,DSL 中可以定義顯式的向量、稠密矩陣、稀疏矩陣操作,這樣 DSL 的編譯器就可以高效地把這些操作映射到處理器中。許多語言屬于 DSL,比如矩陣運算語言 Matlab,深度神經(jīng)網(wǎng)絡(luò)編程用的數(shù)據(jù)流語言 TensorFlow,DSN 編程語言 P4,以及描述圖像處理中高級變換操作的 Halide。
使用 DSL 的時候也有一個挑戰(zhàn),就是如何讓硬件架構(gòu)設(shè)計保持足夠的獨立性,這樣在一種 DSL 中編寫的軟件可以遷移到不同的硬件架構(gòu),同時在把軟件映射到下方的 DSA 的時候還能過保持足夠高的效率。比如,TensorFlow 中的 XLA 系統(tǒng)可以把編寫的程序翻譯成使用不同處理器的版本,在英偉達(dá) GPU 和谷歌 TPU 上都可以運行。在 DSA 之間平衡可遷移性的同時還要保持足夠高的效率,這對語言設(shè)計師、編譯器設(shè)計師、DSA 架構(gòu)師們來說都是一個有意思的科研挑戰(zhàn)。
下面用 TPUv1 這款 DSA 芯片舉例做詳細(xì)的解釋。谷歌 TPUv1 的設(shè)計目標(biāo)是加速神經(jīng)網(wǎng)絡(luò)的推理過程。這款 TPU 從 2015 年就投入了生產(chǎn)環(huán)境開始使用,它支持著谷歌的各種應(yīng)用計算需求,包括搜索查詢、語言翻譯、圖像識別,一直到 DeepMind 的圍棋/象棋 AI AlphaGo/AlphaZero。這個芯片的設(shè)計目標(biāo)就是把深度神經(jīng)網(wǎng)絡(luò)推理時的性能表現(xiàn)和能量效率提升 10 倍。
如下方圖 8 所示,TPU 的內(nèi)核結(jié)構(gòu)設(shè)計和通用計算處理器完全不同。其中的主計算單元是一個矩陣計算單元,這是一個脈動列表結(jié)構(gòu),它可以在每個時鐘周期進(jìn)行一次 256x256 矩陣的乘法加法運算。在這項功能上聯(lián)合使用的 8 位精度、高效率的脈動架構(gòu)、SIMD 控制、專門劃分出的一大片芯片面積,最終讓這個乘法累加器的每時鐘周期性能比一般的單核心通用計算 CPU 提升了大約 100 倍。而且,TPU 中并沒有使用緩存,它使用的是大小為 24MB 的本地存儲器,這相當(dāng)于是 2015 年時期的相同功耗的 CPU 上帶有的緩存空間的 2 倍。最后,激活值存儲器和權(quán)重存儲器(以及保留權(quán)重的 FIFO 架構(gòu))都通過一個用戶控制的高帶寬存儲通道連接在一起。在基于谷歌數(shù)據(jù)中心的六種常見推理問題的加權(quán)性能統(tǒng)計中,TPU 要比通用計算 CPU 快 29 倍。由于 TPU 消耗的電能還不到 CPU 的一半,在處理這些負(fù)載時 TPU 的能量效率要比通用計算 CPU 高 80 倍還不止。
總結(jié)
我們分析了通過提高硬件效率來提升程序運行性能的兩種不同的方案。方案一,改進(jìn)通常是解釋執(zhí)行的現(xiàn)代高級編程語言的性能;方案二,設(shè)計領(lǐng)域?qū)S玫挠嬎慵軜?gòu),相比于通用計算 CPU 的表現(xiàn),這樣可以極大改進(jìn)運行速度和能源效率。DSL 也是改進(jìn)硬件/軟件接口,從而讓計算架構(gòu)設(shè)計師們可以做出 DSA 這樣的創(chuàng)新的另一個重要例子。
想要通過這些方式取得程序性能的顯著提高,需要一支垂直集成的設(shè)計團(tuán)隊,他們需要了解應(yīng)用、了解領(lǐng)域?qū)S谜Z言以及對應(yīng)的編譯器技術(shù)、了解計算機架構(gòu)和組件,并且了解其中蘊含的實現(xiàn)技術(shù)。在整個計算機產(chǎn)業(yè)鏈變得水平整合之前,計算領(lǐng)域的許多早期工作都表現(xiàn)出了強烈的「垂直集成、可以跨越多個不同的抽象層次」的特點。而在現(xiàn)在這個新時代中,垂直整合能力變得更為重要,能夠做出重要的權(quán)衡并進(jìn)行檢驗和優(yōu)化的團(tuán)隊將會占有先機。
這些改進(jìn)機會已經(jīng)引發(fā)了計算架構(gòu)創(chuàng)新的新浪潮,吸引了許多來自不同計算架構(gòu)設(shè)計邏輯的競爭者:
GPU - 英偉達(dá) GPU 有許多核心,每個都有很大的寄存器,有許多硬件線程,也有緩存
TPU - 谷歌 TPU 主要依賴其中的大規(guī)模二維脈動乘法累加器,以及依靠軟件控制片上存儲
FPGA - 微軟在數(shù)據(jù)中心中部署了現(xiàn)場可編程邏輯陣列(FPGA),這些數(shù)據(jù)中心是專為神經(jīng)網(wǎng)絡(luò)應(yīng)用優(yōu)化的
CPU - 英特爾提供的 CPU 帶有許多核心,然后用大容量的多級別緩存和一維 SIMD 指令增強 CPU 的性能;英特爾也提供微軟使用的 FPGA,以及另一種更接近 TPU 的新型神經(jīng)網(wǎng)絡(luò)處理器。
除了這些大體量的競爭者之外,也有好幾十家初創(chuàng)企業(yè)提出了自己的想法。為了滿足不斷增長的計算需求,計算架構(gòu)設(shè)計師們把這樣的芯片成百上千地互相連接起來,形成了為神經(jīng)網(wǎng)絡(luò)計算服務(wù)的超級計算機。
深度神經(jīng)網(wǎng)絡(luò)的瀑布式結(jié)構(gòu)也為計算機架構(gòu)設(shè)計帶來一段有趣的時光。很難預(yù)測 2019 年中這些不同的方向中是否會出現(xiàn)勝利者,但是市場最終一定會為這場競爭分出勝負(fù),就像它過去也曾分出了一場計算機架構(gòu)之爭的勝負(fù)一樣。
受到開源軟件的成功的啟發(fā),計算機架構(gòu)的第二個發(fā)展機遇在于開放 ISA。為了創(chuàng)建一個「處理器的 Linux」,這個領(lǐng)域需要工業(yè)標(biāo)準(zhǔn)級別的開放 ISA,這樣整個生態(tài)中才可以創(chuàng)建開源的核心,在不同公司持有各自的專有核心架構(gòu)的環(huán)境中形成補充。如果許多組織結(jié)構(gòu)都使用同樣的 ISA 設(shè)計處理器,更激烈的競爭可能會帶來的更快的創(chuàng)新和發(fā)展。這里的發(fā)展目標(biāo)是為不同的使用用途提供不同規(guī)模的處理器設(shè)計,可以有 100 美元一個的處理器,也可以有幾美分一個的處理器。
這里的第一個例子就是 RISC-V,UC 伯克利大學(xué)開發(fā)的第五代 RISC 架構(gòu)。在 RISC-V 基金會的管理之下,RISC-V 有一整個生態(tài)維護(hù)著這個架構(gòu)。選擇了開放,也就讓這個 ISA 也可以在公眾中露面,軟件和硬件專家們也可以在做出最終決定之前就展開合作。開放體系還會帶來一個好處,就是 ISA 很少會出于純市場營銷的原因而擴大,相比之下專有指令集就經(jīng)常會為了市場營銷而增擴充指令集。
首先,RISC-V 是一個模塊化的指令集。一小組基礎(chǔ)指令首先支持整個開源軟件框架的運行,然后有一些標(biāo)準(zhǔn)的拓展指令,設(shè)計師們可以根據(jù)自己的需求添加或者刪除?;A(chǔ)指令含有 32 位和 64 位地址的版本。RISC-V 指令集的增長完全可以只依靠可選的拓展指令的增加,支持軟件框架運行的基礎(chǔ)指令不增加任何新的拓展也不會有任何問題。專有指令集的處理器架構(gòu)一般都會需要向前的二進(jìn)制兼容性,這意味著如果一家處理器制造商決定在某一代處理器中增加一個新的功能,那么這家制造商未來的所有處理器都需要保留對這個功能的支持。但 RISC-V 就不需要這樣,所有的功能增強都是可選的,而且如果沒有應(yīng)用需要的話就可以隨時刪除。目前 RISC-V 中有如下幾個標(biāo)準(zhǔn)的拓展指令集,用首字母作為它們的簡稱
M. 整型乘法/除法
A. 原子內(nèi)存操作
F/D. 單精度/雙精度浮點運算
C. 壓縮指令
其次,RISC-V 有一個特色是 ISA 的簡潔性。下面提供了一組 RISC-V 與 ARM 公司在近似時間開發(fā)的 ARMv8 架構(gòu)的對比,雖然對比的內(nèi)容不是完全可以量化的。
指令更少。RISC-V 的指令更少,基礎(chǔ)指令只有 50 條,這個數(shù)量和這些指令的性質(zhì)和最初的 RISC-I 驚人地相似。其它的幾個標(biāo)準(zhǔn)拓展指令集,M、A、F 和 D,一共增加 53 條指令,再加上 C 的另外 34 條,一共也只有 137 條。ARMv8 則有超過 500 條。
指令格式更少。RISC-V 的指令格式更少,只有 6 種,而 ARMv8 至少有 14 種。
第三,RISC-V 的簡潔性不僅降低了設(shè)計處理器的復(fù)雜度,也減小了驗證硬件正確性的難度。由于 RISC-V 的目標(biāo)就是要應(yīng)用在包括數(shù)據(jù)庫的高性能計算芯片到 IoT 設(shè)備上的低功耗芯片上,設(shè)計驗證也可以在開發(fā)成本中占據(jù)不小的比例。
第四,RISC-V 是一個完全從頭開始的設(shè)計,它是在初始設(shè)計的 25 年后開始的。它的設(shè)計師們從前幾代的設(shè)計中吸取了許多錯誤經(jīng)驗。與第一代的 RISC 架構(gòu)不同,RISC-V 避開了依賴微架構(gòu)和依賴技術(shù)的特征(比如延遲分支和延遲載入)以及很新的創(chuàng)新(比如寄存器窗口),實際上這些功能都隨著編譯器技術(shù)的發(fā)展而被替代了。
最后,RISC-V 還可以為定制化設(shè)計的加速器提供很大的操作指令設(shè)計空間,這為 DSA 提供了良好的支持。
除了 RISC-V 之外,英偉達(dá)也在 2017 年發(fā)布了一個免費開放的架構(gòu),名為英偉達(dá)深度學(xué)習(xí)加速器(NVDLA),這是一個用于深度學(xué)習(xí)推理的標(biāo)量、可配置的 DSA。它的可選配置包括數(shù)據(jù)類型(8 位整型、16 位整型、16 位浮點)以及其中的二維乘法矩陣的大小。根據(jù)不同的配置,芯片面積可以有 0.5mm2 到 3mm2 的不同大小,功耗也有 20mW 到 200mW 不同。這個架構(gòu)的 ISA、軟件架構(gòu)、實現(xiàn)方案也都是全部開放的。
開放的簡單架構(gòu)實際上會帶來安全方面的好處。首先,安全專家們并不相信模糊不清就可以帶來安全,所以開放的技術(shù)實現(xiàn)方案對他們更有吸引力;開放的技術(shù)實現(xiàn)也就需要開放的架構(gòu)。同等重要的是,有越來越多的人和組織機構(gòu)參與,也就可以圍繞安全的架構(gòu)設(shè)計做出更多改進(jìn)。專用的架構(gòu)把參與者局限為企業(yè)的員工,而開放的架構(gòu)允許全世界學(xué)術(shù)和工業(yè)界的人參與提高安全性。更重要的是,這樣開放的架構(gòu)、技術(shù)實現(xiàn)、軟件架構(gòu),再加上 FPGA 的高可塑性,都意味著架構(gòu)設(shè)計師們可以在線部署并評價新的解決方案,而且這個周期不再是以年計,而是以周計。雖然 FPGA 比定制化芯片慢大約 10 倍,但這樣的性能表現(xiàn)也已經(jīng)足以支持用戶的在線使用,也就可以針對真正的攻擊者更及時地做出安全改進(jìn)。我們期待開放的計算架構(gòu)未來成為架構(gòu)設(shè)計師和安全專家們進(jìn)行軟硬件聯(lián)合設(shè)計的典型范例。
Beck 等人撰寫的《軟件敏捷開發(fā)手冊》為軟件開發(fā)領(lǐng)域帶來了一場革命,它克服了傳統(tǒng)瀑布式開發(fā)中精心設(shè)計的開發(fā)計劃和文檔經(jīng)常失效的問題。小的編程團(tuán)隊得以快速開發(fā)出包含了核心功能但并不完善的軟件原型,然后在下一次迭代開始前就獲得用戶反饋。競爭性的敏捷開發(fā)可以讓 5 到 10 人的開發(fā)團(tuán)隊以 2 到 4 周一次迭代的速度快速前進(jìn)。
再一次,受到軟件開發(fā)領(lǐng)域成功經(jīng)驗的啟發(fā),硬件領(lǐng)域的第三個機遇就是敏捷硬件開發(fā)。對架構(gòu)設(shè)計師們來說也有一個好消息,現(xiàn)代電子計算機輔助設(shè)計(ECAD)工具提高了抽象級別,可以讓敏捷開發(fā)以及對應(yīng)的更高級別的抽象在不同的設(shè)計之間重復(fù)使用。
如果說要把軟件開發(fā)中的每四周一次迭代的快速前進(jìn)方式照搬到硬件開發(fā),一聽之下會覺得難以置信,畢竟從硬件設(shè)計定版到得到芯片成品就有好幾個月的時間。而下面的圖 9 就展示了敏捷開發(fā)過程中可以在適當(dāng)?shù)某橄蠹墑e上更改原型。最中央的抽象級別是軟件模擬器,也是在迭代中做改動最簡單、最快的部分。下一層是可以比細(xì)致的軟件模擬器運行快數(shù)百倍的 FPGA。在 FPGA 上可以運行操作系統(tǒng),也可以進(jìn)行全功能的性能評測,比如 SPEC 中的測試項目;這讓原型的評價更加準(zhǔn)確。亞馬遜云服務(wù)就提供了 FPGA,架構(gòu)設(shè)計師們無需購買 FPGA 硬件并建立實驗室就可以使用 FPGA 做自己的驗證。為了獲得芯片面積和功耗的具體數(shù)值,下一層的 ECAD 工具可以生成芯片的布局圖。在工具運行完畢之后還需要人工進(jìn)行一些步驟,對結(jié)果進(jìn)行微調(diào),確保新的處理器已經(jīng)準(zhǔn)備好投入生產(chǎn)了。處理器設(shè)計師們把這下一層稱作「tape in」。前面的這四個級別都可以使用每四周一次的迭代速度。
如果是出于科研目的,我們在 tape in 這一步就可以停下來了,因為這時就已經(jīng)可以獲得非常準(zhǔn)確的面積、能耗、性能的估計數(shù)據(jù)了。不過如果真的停下來的話,那就像參加長跑比賽,最后在重點線前 50 米停了下來,「因為可以準(zhǔn)確地預(yù)測出最終要花多少時間了」。既然已經(jīng)在比賽的準(zhǔn)備以及前面的大部分賽程中投入了許多精力,但只要不沖過終點線,那就沒辦法享受到真正的興奮和滿足。所以其實,硬件工程師在有個方面比軟件工程師強,就是因為他們最終會生產(chǎn)出切實可感的物品。把芯片成品拿回來測量、運行真正的程序、把芯片展示給他們的朋友和家人們看,這都是硬件設(shè)計工作中非常幸福的時刻。
許多研究人員會認(rèn)為他們需要在芯片試產(chǎn)之前停下來,因為芯片的制造實在是太貴了。實際上,當(dāng)芯片很小的時候,它的制造價格就非常便宜。架構(gòu)設(shè)計師們委托半導(dǎo)體廠商制造 100 個 1mm2 面積的芯片只需要花 1.4 萬美元。如果是以 28nm 工藝制作,1mm2 的面積上就可以放下數(shù)百萬個晶體管,足以容納一個 RISC-V 處理器再加一個英偉達(dá)加速器。如果要制造一個很大的芯片,那么最外面這一步可能就會花很多錢,但是如果是為了展現(xiàn)新的想法的話,小的芯片就可以做到。
「黎明之前正是最灰暗的時刻」-Thomas Fuller
要從歷史經(jīng)驗中學(xué)習(xí),有幾件事架構(gòu)師們必須知道:軟件開發(fā)領(lǐng)域的創(chuàng)新點子同樣可以啟發(fā)硬件架構(gòu)設(shè)計師們,提升硬件/軟件接口設(shè)計的抽象級別可以為創(chuàng)新帶來機會,以及市場最終會為計算機架構(gòu)之爭畫上句號。iAPX-432 和 Itanium 的故事說明了硬件架構(gòu)方面的投資可能無法帶來對等的回報,而 S/360、8086、ARM 架構(gòu)則能夠年復(fù)一年地帶來充沛的盈利。
Dennard Scaling 定律和摩爾定律走向終結(jié),以及標(biāo)準(zhǔn)微處理器的性能提升越來越慢并不是什么必須解決不可的問題,而實際上,它們完全可以看作是令人激動的新機遇。高級別、領(lǐng)域?qū)S玫恼Z言和架構(gòu)把架構(gòu)設(shè)計師們從專用指令集不斷擴充的鏈條中解放出來,同樣也釋放了公眾對于更高的安全性的需求,這都會帶來計算機架構(gòu)的新的黃金時代。另外依靠開源生態(tài)的幫助,敏捷開發(fā)的芯片也會越來越令人信服地展現(xiàn)出它的優(yōu)勢,并逐步越來越快地取得商業(yè)上的成功。對于通用處理器的設(shè)計理念,ISA 未來也將隨著時間的流逝而越發(fā)顯得熠熠生輝,就像 RISC 一樣。在新的黃金時代中我們可以期待繼續(xù)看到上個黃金時代那樣的高速發(fā)展,只不過這次首當(dāng)其沖的是價格、能耗以及安全,性能當(dāng)然也會有繼續(xù)的提高。
在未來 10 年中,我們可以期待在計算機架構(gòu)領(lǐng)域也看到寒武紀(jì)生物大爆炸那樣地充滿新鮮創(chuàng)意,這對于學(xué)術(shù)界和工業(yè)界的計算機架構(gòu)設(shè)計師們來說會是一段充滿激情的時光。
via acm.org,雷鋒網(wǎng) AI 科技評論編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。