RISC-V與DSA計算機架構
相信所有和計算機體系結構打過交道的朋友們都看過David Patterson與John Hennessy的煌煌巨作,《計算機體系架構:量化研究方法》。兩位在計算機架構領域鼎鼎大名的教授,一個來自加州大學伯克利分校,另一個來自斯坦福。
首先上場的是David Patterson,為我們帶來了關於指令集架構(ISA)的回顧以及RISC-V項目的展望。
(Patterson教授在演講中)
Patterson教授的演講主題是50年來計算機體系架構(ISA為主)的回顧以及RISC-V架構。
Patterson教授首先回顧了ISA的發展史。在計算機發展之初,ROM比起RAM來說更便宜而且更快,所以並不存在片上緩存(cache)這個東西。在那個時候,復雜指令集(CISC)是主流的指令集架構。然而,隨着RAM技術的發展,RAM速度越來越快,成本越來越低,因此在處理器上集成指令緩存成為可能。RISC的出現可謂水到渠成。研究發現計算機執行大多數程序時CISC指令集中絕大多數指令都只在極少的時間才被用到,因此專門為這些指令設計硬件並不划算。相反,使用精簡指令集(RISC)可以大大簡化硬件的設計,從而使流水線設計變得簡化,同時也讓流水線可以運行更快。
Patterson教授再次重申了評估處理器性能的指標,即程序運行時間。程序運行時間由幾個因素決定,即程序指令數,平均指令執行周期數(CPI)以及時鍾周期。程序指令數由程序代碼,編譯器以及ISA決定,CPI由ISA以及微架構決定,時鍾周期由微架構以及半導體制造工藝決定。對於RISC,程序指令數較多,但是CPI遠好於CISC,因此RISC比CISC更快。
除了CISC和RISC之外,另一種流行(過)的ISA是超長指令字(VLIW)。VLIW把多個操作放在一條指令里,因此需要一條指令中的多個操作能夠並行執行。
VLIW的代表是Intel Itanium(安騰),使用的架構代號是EPIC,開發的合作伙伴是惠普。安騰第一代Merced預期出貨日期是1997年,實際出貨時期為2001年;第二代McKinley使用180nm工藝,出貨時間為2002年;第三代Poulson,也是最近的一代,8核心使用32nm工藝,2012年出貨。
然而,VLIW架構遇到了巨大的失敗。VLIW的問題,包括分支預測困難,Cache miss無法解決,代碼爆炸以及最關鍵的,編譯器過於復雜以至於無法實現。斯坦福的Donald Knuth(計算機科學領域又一位傳奇人物)表示,“安騰看上去很棒,但是編譯器根本沒法寫!”
目前處理器的ISA,已經30多年沒有新的CISC ISA出現(Intel x86表面用的是CISC但是內部有硬件把CISC轉換成RISC再真正執行)。VLIW在一些嵌入式DSP市場獲得應用,但是在其他的市場都沒有獲得成功。考慮到處理器的數量,目前最主流的通用ISA還是RISC。
回顧完ISA的歷史,再來看看目前ISA的生態。這里把ISA和網絡,操作系統,數據庫,圖像標准庫作了比較,可以看到網絡,操作系統,編譯器等等領域都有主流的標准,基於該標准同時有開源免費的版本,以及商用的收費標准。然而,在ISA領域,之前並沒有公認的標准,也沒有開源免費的ISA,僅有商用的ISA,這讓整個ISA領域的生態顯得死氣沉沉。
於是,RISC-V應運而生。要做開源的ISA,基於x86和ARM都幾乎不可能,因為它們都太復雜,而且還存在IP的問題。在2010年夏天,Patterson教授帶領團隊開始從頭開始設計一個干凈的ISA。經歷了很多年,經過多次流片驗證,終於在2014年發布了最終版spec,就是RISC-V(V是第五代的意思)。
RISC-V作為一個開源ISA,首先要滿足對ISA的一般要求。首先,它必須與現存的主流編程語言和軟件兼容。第二,它必須有直接硬件實現,而不是一個虛擬機。第三,它必須有很好的彈性,能滿足小至微控制器(MCU)大到超級計算機的需求。第四,能與各種實現方式兼容,包括FPGA,ASIC,全定制CPU,以及未來的其他實現。第四,需要與各種微架構配適,包括有序執行,無序執行,單發射,超標量等等。最后,還需要滿足可擴展性(可以作為基礎ISA,在特殊用途中加上額外的增強ISA),以及穩定性(不會一直變化,不會突然消失等等)。
除了滿足一般的需求外,RISC-V還有自己的特色。首先,它很簡單,比其他的商用ISA規模都要小很多。第二,它很干凈,例如在用戶與特權ISA之間涇渭分明,有非常清晰的界限。另外,RISC-V中沒有與微架構或實現方式有關的特性,因此具有普適性。第三,RISC-V是模塊化的ISA,它的基礎ISA集很小,但是可以根據用戶需求去加載擴展集。最后,RISC-V特別為了可擴展性和專精化做了優化,使用了可變長度的指令編碼,並且有許多空間以供指令集擴展。
最特別的一點是,RISC-V支撐了一個開源的社區,包含了非盈利基金會以及開源代碼庫。RISC-V的願景是未來各種靈活而低價處理器芯片的基礎。RISC-V一開始的貢獻者包括伯克利和SiFive(一家初創公司),目前在征求各類設計者加入開源社區,需要代碼以及其他硬件IP(如PLL,PHY等等)。
最后,總結一下幾大使用RISC-V的理由。第一,RISC-V是免費開源架構,無須付費。第二,它的ISA比起其他ISA來說簡單許多,因此驗證起來也方便許多。第三,RISC-V很穩定,不用擔心突然發生很大變化或者直接就消失。第四,RISC-V可以在各種設計中比起其他ISA更高效,面積、功耗和性能都更好。第五,RISC-V可以作為各種SoC核的基礎ISA,而且第六,RISC-V具有很好的擴展性,可以隨意按照需求擴展。現在RISC-V的小目標,是成為一種適合各種計算設備的業界標准ISA。
John Hennessy的演講緊隨其后。Hennessy教授的演講在回顧了摩爾定律的發展之后,一針見血地指出了目前常規處理器演進遇到的瓶頸在於功耗,並且提出了目前處理器的新希望在於Domain Specific Architecture(DSA,即針對應用領域做優化的處理器架構,區別於通用架構)。
Hennessy教授首先回顧了四十年來處理器的高速發展史。四十年間,處理器性能以每年1.4倍的速度指數上升,目前性能相比於四十年前改進了約一百萬倍。在處理器架構角度,較大的進步包括位寬(由八位進化到了六十四位),指令級並行度(從最初每條指令需要4-10個時鍾周期執行到現在每周期可以同時執行超過4條指令,這是10-20倍的改善),以及多核架構(由單核演化到32核)。從性能角度,時鍾頻率從3MHz進化到4GHz。這一切都是因為集成電路生產工藝進化為基礎的。摩爾定律使得處理器晶體管數持續上升,但是因為晶體管功耗和晶體管面積縮小的速度基本相同,因此在前40年間芯片單位面積的功耗基本不變。
目前,三種技術趨勢讓傳統的通用處理器演進遇到了瓶頸。半導體工藝角度,Dennard Scaling規律結束,芯片功耗急劇上升,同時摩爾定律減緩,晶體管成本不降反升。從架構角度,指令級並行已經到達極限,單核時代已告結束;而Amadahl’s Law提示多核架構的速度提升取決於程序中有多少部分無法並行執行,多核架構目前的速度提升也變得越來越慢。從應用角度,處理器的應用場景從原來的桌面電腦變成了個人移動設備和雲端超大規模服務器,這也帶來了新的設計約束。
從單核處理器的速度進化趨勢也可以印證之前的觀點。從上世紀90年代到本世紀前五年,單核處理器的性能以每年50%以上的速度提升,而到了2005年后,但和處理器性能的提升速度降到了每年20%左右。
從單核處理器的速度進化趨勢也可以印證之前的觀點。從上世紀90年代到本世紀前五年,單核處理器的性能以每年50%以上的速度提升,而到了2005年后,但和處理器性能的提升速度降到了每年20%左右。
隨着市場份額的變化,處理器的設計需求也發生了變化。能效比正在成為目前最重要的指標。在移動領域,由於電池容量的限制,必須注重能效比。目前,處理器在移動設備中已經成為繼屏幕之后能量消耗較大的元件,因此移動設備中處理器能效比是最關鍵的問題。
在另一個未來處理器較大市場——雲端服務器市場,能效比也是最關鍵的指標。目前數據中心的成本中,散熱已經成了較大的成本之一,為了減少成本必須考慮處理器能效比。
半導體工藝進化趨勢的變化也很重要。摩爾定律遇到瓶頸是近年來半導體業最深刻的變化。DRAM密度變化在1977-1997年是每年1.46倍,1997-2017年平均密度變化是每年1.34倍,而在過去五年平均密度變化是每年1.1倍。一個更令人驚訝的事實是,DDR4標准DRAM的帶寬雖然比DDR3大很多,但是DDR4內存的內部速度實際上比DDR3慢!這在過去半導體產業按摩爾定律蒸蒸日上的時代是難以想象的。
另一個關鍵的半導體工藝趨勢變化是Dennard Scaling不再有效。Dennard Scaling是早期半導體工藝變化的規律,即將晶體管尺寸和電源電壓一起變化,單位面積晶體管的總電容上升,但是電源電壓在相應變小於是總體的單位面積能量消耗基本保持不變。Dennard Scaling規律從1977年保持到了1997年,在這之后慢慢失效,例如從2007年到2017年(晶體管特征尺寸由45nm縮小到16nm),每塊芯片的總能耗變大了3倍。
Dennard Scaling的結束對於傳統處理器設計方法來說是一個危機。能量消耗對用戶來說越來越重要(無論是對移動設備還是雲端服務器),而且處理器散熱已經接近了極限。處理器架構必須改善能效比,但是傳統通用架構設計方法的能效比已經到極限了。
Dennard Scaling的結束也意味着在能效比約束下,堆核數已經很難增加性能。再增加核數就會導致Dark Silicon,即芯片的許多核會很多時間處於待機狀態,從而導致很高的成本(編注:例如目前移動處理器流行的大小核架構,通常同時只會打開高性能大核或者低功耗小核)。所有核打開時,處理器功耗非常大,會導致散熱問題。舉例來說,目前22nm工藝制造的較大多核處理器是Intel E7-8890,有24顆核心,運行在2.2GHz,較大功耗為165W。在2021/2022年,假設可以使用11nm工藝,96核心處理器運行在4.9 GHz,那么在165W功耗的限制下,只能打開54個核心,功耗限制放松到180W可以打開59個核,限制放松到200W可以打開65個核。但是要同時打開96個核,則功耗實在太大,很難實用。
為了提高能效比,一種很有希望的架構是針對應用領域做優化的專用領域處理器架構(DSA)。DSA的優點在於,可以為特定的一類應用(注意不是一種應用,而是一類)做架構優化從而實現更好的能效比。相對於通用(general purpose)處理器,DSA需要設計時考慮專用領域的特殊需求,也需要設計者能對該領域有深入的理解。DSA的例子包括為機器學習設計的神經網絡處理器,以及為圖像和虛擬現實設計的GPU。DSA設計將會成為處理器架構的新趨勢。
Q & A
Q:請問除了之前演講中提到的以外,還有哪些處理器領域的未來趨勢是值得關注的?
A(Patterson):我認為未來之星是深度學習領域的DSA處理器。深度學習的重要性我想在座的都很清楚。另外,使用更高級的設計描述語言,例如Chisel,來加速設計,也會成為趨勢。
Q:摩爾定律的終結對於整個計算機領域的人來說,意味着什么?
A(Hennessy):The easy ride of software is over. 這意味着軟件行業的從業人員未來需要更多對硬件的理解。在之前,軟件行業可以不用太關心硬件,只要把程序功能實現,就算現在的硬件不能跑,過一陣新的更強的硬件出現了一定可以跑。現在,軟件必須認真考慮如何在硬件上高效執行的問題。會有更多domain-specific編程語言出現,例如CUDA。
Q:如何看待量子計算?
A(Hennessy):量子計算就是計算機領域的核聚變(觀眾大笑,“核聚變”的比方是指潛力無窮但是不知道哪一天真的能用上)。目前,量子計算的問題在於規模化,一方面需要制備更多的量子位,另一方面需要在質因數分解之類問題以外找到更多應用。
Q:如何看到FPGA?
A(Hennessy):FPGA是一個很好的技術。對於對成本不敏感的雲端應用,因為FPGA芯片已經規模足夠大可以裝下一些處理器,因此得到了很多關注。微軟在雲端大規模部署FPGA,顯然是在賭FPGA的可配置性在未來會有很多應用。Google則是把賭注押在了ASIC上(指TPU)。在客戶端,FPGA由於功耗過大,目前仍然很難得到大規模應用。
Q:對於學生們有沒有關於職業規划的建議?
A(Patterson):在座的學生都很優秀,我想大家除了學習以外還要關注一些其他方面的能力,比如如何影響他人,如何寫作表達自己,如何與家人朋友一起享受生活等等。這些都非常重要。如果你一定要問我技術有關的建議,我要說的是,你在這里(斯坦福)一定要上機器學習的課程。我感覺現在的人工智能就像之前的微處理器和互聯網一樣,一定會深刻地改變我們的社會。