HotChips 2020觀後感_風聞
半导体行业观察-半导体行业观察官方账号-专注观察全球半导体最新资讯、技术前沿、发展趋势。2020-09-03 15:10
來源:本文由半導體行業觀察轉載自知乎非典型程序員,謝謝。
HotChips全稱為A Symposium on High Performance Chips,每年8月份舉行。不同於其他會議以學術研究前沿為主,HotChips是一場產業界的盛會,以各大處理器設計公司的最新產品或在研產品為主。IBM、Intel、AMD、ARM等都是HotChip會議的常客。HotChips能夠讓從業者瞭解產業發展趨勢。
由於疫情的影響,HotChips2020改為在線進行。原本昂貴的參會成本降低到了100美元。組織者還貼心地提供了回放功能,不需要熬夜就可以觀看。除了不能與業界大佬們面對面交流之外,參會效果還是很不錯的。目前,HotChip的回放通道仍然開啓。
HotChips2020一共規劃了8個Section,覆蓋了服務器處理器、移動處理器、邊緣計算和傳感、GPU和遊戲架構、FPGA和可配置架構、網絡和分佈式系統、機器學習訓練以及機器學習推斷。Section的規劃還是比較傳統的。
HotChips沒有論文集,只提供幻燈片。兩天的會議一共進行25篇演講,其中有23篇來自產業界,只有2篇來自學術界(分別來自哈佛大學和蘇黎世理工大學),而且都與AI加速器有關。另外會議還接受了11篇Poster,以學術界成果為主。會議還安排了2個主題演講,分別由Intel架構師Raja M. Koduri帶來的《No Transistor Left Behind》和DeepMind傑出工程師Dan Belov帶來的《AI Research at Scale-Opportunities on the Road Ahead》。
個人比較關注於處理器相關的三個Session:服務器處理器、移動處理器以及邊緣計算和傳感。
服務器處理器
Section1有4篇演講,分別涉及Intel的IceLake-SP架構、IBM的POWER10處理器和z15處理器以及Marvell的ThunderX3處理器。
Icelake-SP架構使用10nm+工藝,採用Sunny Cove大核。相對於Cascake Lake,Ice Lake的IPC提高了18%,主要原因是大比例增加的各種資源,比如亂序執行窗口、物理寄存器、L1 Cache等。演講的主要內容集中於IceLake-SP的系統架構,主要改進包括:可擴展的功耗控制、系統管理機制,可以減少SoC管理的複雜度,改進響應時間;對Cache機制的調整,縮短Cache的響應時間,提高通信帶寬;從電路、算法和架構層面改進DVFS的效果。Intel將處理器核的電壓頻率調整時間縮短到0,體現了Intel的電路優化的根基。
Power10是IBM的下一代架構,預計年底正式發佈,採用7nm工藝。每塊芯片可以集成16個核心,每個核心提供支持8線程。相對於前代產品,仍然是通過資源擴展來獲得性能提升,有些模塊的資源甚至被擴大了4倍(TLB、L2cache等)。IBM用了將近一半的篇幅介紹其PowerAXON接口和Open Memory Interface接口,這個接口的最大特點是高帶寬和兼容性。兩個接口都可以達到1TB/s的帶寬。PowerAXON接口可以和其他芯片組成16塊芯片的集羣,可以連接到ASIC加速芯片集羣,還可以連接到刀片服務器集羣;OMI接口可以連接到SCM、DRAM以及GDDR DIMM。互聯總線的兼容性為Power10構成的系統提供了強悍的可擴展性。
ThunderX3是Marvell的下一代ARM服務器處理器,預計60到96個core,每個core支持4SMT。處理器核採用Arm v8.3核芯,並支持部分v8.4/v8.5的特性。相對於ThunderX2,ThunderX3在資源和算法方面都進行了改進。在演講中展示了各方面優化對於性能的貢獻,其中比較重要的優化包括執行能力、ROB資源、分支預測算法、Cache容量等方面。ThunderX3的片上互聯採用三環結構,每一個半環上連接5個節點,每個節點連接4個核心。
Z15則是當前最新的服務器整機架構,詳細技術細節可以參見IBM在ISSCC2020上的論文和介紹,也可以參見本人年初撰寫的ISSCC2020處理器巡禮。
面向服務器的處理器,設計目標就是提高性能。為了實現高性能,必須要提高處理器流水線的吞吐率以及提高訪存和互聯吞吐率。為了達到這個目的,最有效的實現方法就是在製造工藝的推動下,集成更多的資源,將處理器做得越來越大、越來越多。
移動處理器
Section2有兩篇演講,分別是AMD的RyzenTM 4000和Intel的Tiger Lake。這兩款處理器都是面向桌面機和筆記本的。與服務器處理器相比,移動處理器需要集成圖形處理能力和更多的外設接口。
兩個演講更像是產品發佈會,介紹的技術細節不多。演講中都只用了很小的篇幅介紹處理器核的微架構。演講中介紹的大部分特性都是SoC系統架構層面的,比如互聯結構、支持的外圍接口、功耗管理方法等。
邊緣計算
Section3有三篇演講,分別是平頭哥的玄鐵910,ARM的Cortex-M55和Ethos-U55,以及哈佛大學設計的一款貝葉斯推斷加速器。
玄鐵910是國內唯一入選HotChips的處理器,推薦各位看平頭哥在ISCA2020上發表的論文《Xuantie-910: A Commercial Multi-Core 12-Stage Pipeline Out-of-Order 64-bit High Performance RISC-V Processor with Vector Extension》。
ARM的Cortex-M55和Ethos-U55是面向AI終端市場的處理器核以及AI加速器。ARM希望由這兩個IP的組合能夠加速面向AI特定應用場景的SoC的開發。演講的主要內容偏重於Ethos-U55以及系統集成。
貝葉斯推斷加速器的演講則完全與加速器設計為主。不在本文的討論範圍之內。
主題演講
會議第一天的主題演講由Intel的首席架構師Raja M. Koduri帶來的《Left No Transistor Behind》。
演講首先展望了未來,指出智能互聯的設備數量會達到100B,數據會達到175ZB,需要超極智能來應對海量的數據和業務。
隨後,演講指出處理器的設計仍然可以為業務提供巨大的空間。一方面是優化軟件充分挖掘硬件的能力;另一方面是製造工藝(比如3D堆疊等)仍然可以給硬件設計提供巨大的空間,提高芯片集成度,降低功耗等。
接下來的演講介紹了Intel對於未來的願景規劃。Intel認為。在未來,通用處理器不會一統天下,多種計算資源(CPU、GPU、AI加速器、FPGA等)需要協同使用,有必要通過分層抽象統一調用接口。硬件的範疇將不僅僅包括處理器或專用芯片的設計,而是包括了驅動、OS、虛擬機以及中間件。軟件的範圍則是豐富多彩的業務軟件和應用軟件。Intel將構建包含了工藝封裝、計算單元架構、存儲、互聯、安全和軟件的完整體系。如果這套願景規劃成功,那麼Intel將從一個芯片製造商轉換為計算基礎設施提供商(這就是新基建啊)。
主題演講給出的最重要的啓示在於,處理器和軟件的開發都是由實際業務驅動的,而處理器的設計又應該是由軟件驅動的。當處理器設計已經確定的時候,軟件可以作為粘合劑來適配處理器和業務。但是在處理器設計流程中,軟件和硬件的關係是不應該顛倒的。
今年有機會連續關注了ISSCC、ISCA以及HotChips三個會議中產業界介紹的處理器設計,有一些個人的片面間接。
系統架構vs微架構
對於處理器領域來説,很多概念需要正本清源。第一個需要着重説明的就是微架構和系統架構。雖然都是架構設計,但是差別很大。微架構指的是處理器內部流水線的架構設計,也就是“取指-執行-發射-執行-回寫-退休”這一個過程。系統架構的範圍比微架構大得多。系統架構原本指的是整個計算機系統的架構,包括了CPU、總線、外設等構成完整系統。隨着芯片集成度的提高,單個芯片也能實現一個完整系統,也就是片上系統(SoC)。SoC的系統架構包括內存系統、互聯結構、加速器以及系統管理等等。所以,系統架構和微架構的側重點和覆蓋範圍的區別還是很大的。
2010年之前,是微架構的黃金時代,各種微架構的概念層出不窮。不過最近10年,處理器微結構的設計逐漸趨同,已經形成了以超標量、亂序執行等為主要特徵的CPU微架構,還有多核緩存、分支預測、同時多進程等典型特性。不僅僅是高性能CPU,甚至嵌入式和邊緣計算場景的處理器也開始具備這些特徵。此次HotChips2020中介紹的處理器微架構都符合這一特徵。各家處理器的微架構非常相似,甚至關鍵的調度和預測算法都是相同的,相互對標的產品的架構參數也很接近的。
這種情況是處理器追求通用性的必然結果。如果按照集成電路的通用性和專用性做一個座標軸的話,那麼現在討論的這種處理器就是各種集成電路中最為通用的一種。通過軟件的參與,處理器可以完成世界上絕大部分的工作。對於通用性的要求,使得處理器的微架構需要滿足對各種類型程序的支持,同時也失去了對特性應用優化的動力。正如Intel在演講中提到,IceLake是對於所有類型的服務和應用都很平衡的處理器。
2010年之後,在“多核、眾核”以及“異構”兩大概念的推動下,系統架構的研究成為熱點。各類處理器的系統架構的區別還是很明顯的。
對於服務器處理器,設計目標主要是衝刺高性能。在微架構優化空間縮小的情況下,需要通過充分挖掘線程級並行(TLP)來獲得更高的性能。所以,服務器處理器以眾核同構集成為主,並通過環形或者Mesh互聯結構來提高互聯帶寬,再通過優化cache協議來提高有效的訪存帶寬。在服務器處理器中集成一些特定業務場景的加速器也是一個明顯的潮流。
對於移動端處理器,設計目標是為多功能場景提供能效最高的解決方案。常見的架構是4到8個不同規格的處理器(大-小核或大-中-小核)通過共享內存集成。同時集成在芯片中還有圖形處理器、視頻處理器、音頻處理器、以及AI處理器等。這些加速器的存在保證了芯片在多媒體、AI等場景的用户體驗。
對於邊緣計算處理器,處理器已經完全不是重點了。設計重點完全轉換到加速器電路上。處理器是用來處理不適合加速器電路完成的工作,比如控制類和交互類的事務。邊緣計算場景處理器的微架構有可能不會遵循目前流行的處理器微架構,因為在有些特定場景,處理器的功耗比性能更加重要。單一邊緣計算處理器的應用場景比服務器或移動端處理器要狹小很多,從而可以針對業務需求進行優化和調整。
隨着IOT和AI的蓬勃發展,面向不同場景的SoC的系統架構會有明顯的不同。系統架構師的主要工作就是,針對產品的應用場景,選擇最合適的IP並將其集成為SoC。這也就是大神為什麼稱“未來的十年(應該還剩八年)是體系架構的黃金十年的原因”。
工藝、電路、架構、功能
私以為,支撐處理器指標(性能、功耗、面積)的主要因素包括四個方面, 分別是製造工藝、電路設計、系統架構和功能實現。
製造工藝是決定芯片的規模、功耗和頻率的關鍵。集成電路設計領域有一個顯著的特點,其能力邊界並不是由設計師本身決定的,而是由半導體領域決定的。設計師只能做到最大程度地挖掘製造工藝給集成電路設計劃定的邊界。在處理器行業,鮮有通過架構設計來彌補工藝代差的例子。更多的例子都是通過搶佔工藝制高點來提高芯片的各種指標,尤其在國內廠商更加常見。目前,性能最好的處理器都儘可能使用最先進的工藝,比如TSMC的7nm或5nm。在工藝方面的失守會給處理器設計帶來很大的壓力。
在本文中,電路設計特指的是在標準單元甚至以下層面進行的電路設計,比如定製SRAM和計算電路等。對於處理器來説,提供更多的資源(分支預測表容量、ROB隊列深度、Load/StoreQ深度以及Cache容量等)對於提升處理器性能的作用遠遠大於處理器微架構的改進。可以看到,Intel每一代處理器的Cache容量都有至少50%以上的提升。資源的提升除了藉助於工藝之外,還要藉助於電路設計。在今年的ISSCC上,AMD和IBM都提到了他們與製造商合作,在SRAM上所做的優化。國內廠商即便使用了相同的工藝,也很難做到相同的資源容量和頻率,這其中的差距就在於電路設計。
製造工藝和電路設計限定了處理器設計的邊界,系統架構和微架構的目的就是挖掘這些邊界,在性能、功耗和頻率中某方面做到極致,或者在各個方面之間平衡。處理器的微架構已經基本穩定,國內處理器公司要做的是補課,做到不缺重要特性。系統架構還有很多的探索空間。架構設計可以利用的IP和參考的資料也很多。而且現在已經出現了系統級設計(ESL)的工具平台,比如Synopsys的Platform Architecture,以及強大的emulation工具,比如Zebu和Haps。搭配出一種系統架構的難度正在降低。近兩年,國內廠商對於系統架構工程師的需要有所增加,但是對於微架構工程師的需求依然很小。
功能實現不僅僅包括通過加速器給片上系統添加功能,也包括實現各種調度和預測算法等。功能實現和電路設計的區別在於,功能實現利用標準單元實現邏輯,屬於設計流程中的前端設計範疇,而電路設計則需要從晶體管級別重新設計電路,屬於設計流程中的物理設計範疇。功能實現有完善的設計流程和設計工具可用。功能實現對於產品來説很重要。通過實現某一種加速器,可能會使得產品在某一個領域獲得很好的市場佔有率。
打破軟件和硬件的邊界
每到9月份,大家都會討論人才培養和校招的問題。最近的一個熱點新聞是集成電路成為一級學科,而且將集成電路認定為交叉學科。這是非常合理的。在前面提到的製造工藝、電路設計、系統架構和功能實現四個方面,我們都面臨着產業鏈不完整,骨幹人才缺乏,後備人才薄弱的問題。傳統人才培養方法的主要缺陷在於將產業鏈上各個環節需要的人才放到了不同的專業培養。交叉學科有助於打破這種的局面,集合多學科優勢力量發展集成電路。不過,集成電路學科更要打破狹義的硬件思維。
狹隘的硬件定義認為芯片設計流程中的步驟才算是做集成電路。形象地説,只有用EDA工具和HDL打交道的,才算是集成電路。而且芯片工程師很多時候會排斥軟件開發手段的學習。但是集成電路專業引入一些軟件方面的教育是很重要的,尤其是處理器設計領域。
第一,面向所有設計領域,硬件工程師都需要掌握一定的敏捷開發手段。具體來説,集成電路專業的學生需要具備編程思維並掌握一種腳本語言,比如Perl或Python。這些技能可以在實際工作中顯著提高開發效率。
集成電路設計軟件化的趨勢還在逐步增強。從用HDL替代版圖,到電子系統級設計,再到近兩年很熱門的HDL語言(Chisel、SpineHDL等)。其實在Chisel之前,軟件思維已經在產業界得到了應用。Python、Perl等腳本語言已經在工業界大量用於實現重複代碼生成、自動端口連接等功能,提高設計效率。Tcl腳本就是EDA工具的專用腳本語言,並於編寫自動的設計流程。此外,自動化驗證也大量使用敏捷開發手段,比如自動生成測試向量、自動分析測試結果或者測試日誌等。近來,各種軟硬件聯合驗證手段的廣泛應用也要求了硬件工程師不能僅僅聚焦於HDL。不過,集成電路設計專業對於這一方面能力的培養還是很薄弱的。新的設計方法學很難進入大學的課堂,學生更難有實際觀摩和操作的機會。
第二,針對處理器設計領域,計算機系統和軟件的背景知識更加重要。處理器與其他集成電路的最大區別就是處理器需要執行軟件的。處理器的優化原動力不是硬件,而是軟件程序。
邊緣計算處理器的設計與其應用場景綁定關係很強,設計重點已經轉移到了面向應用場景而增加的特定加速器。服務器處理器雖然是通用性最強的處理器,但是應用場景的影響也是很明顯。為了應對大量事務響應類的應用(比如數據庫查詢、網絡響應),IBM支持了8SMT(IBM的處理器分為資源相同的兩個子部分,每個子部分支持4SMT)。為了應對安全應用等場景,IBM在芯片中集成一些加解密和加解壓的加速器。處理器設計工程師還是需要對其應用場景有一定的理解才能走得更遠。
説遠一點,各類集成電路的設計都與其應用場景有關係。給集成電路設計專業的學生培養所有應用領域的知識是不現實的。那麼吸引其他領域的學生進入集成電路領域,針對特性領域設計集成電路,也是非常重要的。
集成電路學科的設置,要避免強化狹隘的硬件思維。集成電路設計專業的學生也要培養一定的軟件思維和敏捷開發能力,同時還需要吸引各領域背景的人才進入集成電路領域。
以上是我根據有限信息的自我觀察,難免有不全面不成熟之處,請指正。