┊文章閱讀:次
來源:內(nèi)容來自「Cadence楷登」,謝謝。
劉淼,鄧立群,辜建偉
Miao Liu, Liqun Deng, Jianwei Gu
上??请娮涌萍加邢薰?/span>
Cadence Design Systems, Inc. (Shanghai)
人工智能芯片的挑戰(zhàn)與實現(xiàn)
摘要:人工智能(ArtificialIntelligence,AI)的概念早在上個世紀五十年代已經(jīng)出現(xiàn)。但是直到二十一世紀,得益于深度學習算法的發(fā)展、硬件運算力的提升、以及越來越多可供訓練的樣本數(shù)據(jù)的獲得,人工智能才得到了真正的爆發(fā)。尤其是在圖像、視頻和語音識別方面的應用,人工智能表現(xiàn)得愈發(fā)強大。支持強大的深度學習算法的背后,所依靠的是集成電路芯片的運算能力。在性能和靈活性的取舍中,CPU、GPU、FPGA和ASIC分別有著不同的表現(xiàn)。其中定制的AI加速芯片往往能夠通過深度的軟硬件結(jié)合達到極致的能效比和吞吐量。本文分析了專用AI芯片的特點,實現(xiàn)過程中性能、功耗、面積等方面的挑戰(zhàn),以及應對這些挑戰(zhàn)的解決方案。
人工智能是一個非常廣泛的領域,也并不是一個新的概念。早在上世紀50年代,也就是計算機誕生不久,就已經(jīng)有不少學者開始了這方面的研究,發(fā)展出了非常多的分支科。近十年來,這一名詞更多地被提及則是因為深度學習領域取得的巨大進展,掀起了從算法、軟件層面一直到硬件、芯片層面的不斷創(chuàng)新。
Source:https://www.edureka.co/blog/what-is-deep-learning
圖一
圖一展示了人工智能涉及到的三個領域之間的關系:
1.人工智能(Artificial Intelligence,AI),是研究使計算機來模擬人的思維過程和智能行為的學科,是最廣義的一個概念,包括模式識別、規(guī)劃推理、復雜系統(tǒng)、專家系統(tǒng)、模糊控制、自然語言處理等非常多的研究領域。但是現(xiàn)階段能夠?qū)崿F(xiàn)的人工智能實際上并不真正擁有思維,只是表現(xiàn)起來類似人的行為,仍然屬于弱人工智能的范疇。
2.機器學習(Machine Learning,ML),是人工智能的一個分支,研究如何讓計算機不通過顯式的編程而通過數(shù)據(jù)進行自主學習的能力。人工神經(jīng)網(wǎng)絡是這一領域眾多算法的其中一個,一度并沒有得到比較大的發(fā)展,直到深度神經(jīng)網(wǎng)絡算法的出現(xiàn)。
3.深度學習(Deep Learning,DL)是機器學習的一個分支,同時也是二十一世紀人工智能爆發(fā)的最大的推手。深度學習是利用深度神經(jīng)網(wǎng)絡(DeepNeuralNetwork,DNN)來解決特征表達的一種學習過程。在圖像、視頻、語音識別領域,最新的深度學習算法已經(jīng)做到了比人類更好的表現(xiàn)。這來源于深度神經(jīng)網(wǎng)絡更多級數(shù)的隱藏層,如圖二所示:
Source:https://www.quora.com/What-is-the-difference-between-Neural-Networks-and-Deep-Learning
圖二
這些隱藏層互相連接,使得輸入信息的特征能夠被識別、提取和傳播。如圖三所示,過去幾年主流的神經(jīng)網(wǎng)絡的層數(shù)和所需參數(shù)的數(shù)量呈現(xiàn)快速增長的趨勢。比如,2015年的Residual Net可以達到152層,所有參數(shù)加起來超過1.5億個。
Source:http://speech.ee.ntu.edu.tw/~tlkagk/talk.html
圖三
這帶來的問題主要是什么呢?是計算量的激增!神經(jīng)網(wǎng)絡的訓練是通過用大量的樣本數(shù)據(jù),對每一個參數(shù)做梯度下降、反向傳播等迭代計算,從而逐步確從而逐步確定所有的參數(shù)值。對于龐大參數(shù)量的神經(jīng)網(wǎng)絡,可想而知計算量會是一個天文數(shù)字。即使是訓練完的模型想要使用,也必然躲不開大量的卷積、矩陣乘法等運算,計算量依然不小。
一、 人工智能芯片的目的
為了在可接受的功耗、成本限制下,解決深度學習巨大計算量的問題,人們開始設計研究專用的人工智能加速芯片。需要注意的是,人工智能芯片(或AI芯片)并不是芯片本身具有智能,而是用于加速深度學習算法的一種專用加速芯片。那么我們?yōu)槭裁床挥脗鹘y(tǒng)的CPU來計算呢?這就涉及到性能和靈活性之間的矛盾。
圖四列出了幾種不同類型用于計算的芯片。橫軸是性能,縱軸是靈活性。
Source: https://cloud.tencent.com/developer/article/1006018
圖四
前面我們已經(jīng)知道,深度學習巨大的運算量,大多數(shù)是乘法和加法,那么普通的CPU就足以完成任務。事實上也確實是這樣的。早期在神經(jīng)網(wǎng)規(guī)模不大的時候人們的確是用CPU進行運算的。但是CPU有一個很大問題,就是運算性能比較低。相對于動則幾百萬參數(shù)的神經(jīng)網(wǎng)絡來說,計算能力嚴重不足。這是因為CPU的強項是并不是運算,而是邏輯,比如分支預測。CPU作為通用處理器靈活性是極佳的,不考慮性能的話,理論上可以運行任意結(jié)構(gòu)的深度學習算法。
GPU大規(guī)模的并行運算使得其計算能力顯著高于CPU。并且GPU的設計也使得它可以承擔通用的科學計算,具有不錯的靈活性。但是這些通用性也使得它在功耗上的表現(xiàn)并不能令人滿意,同時成本也非常高昂。
要追求極致的功耗、性能、成本,只能為深度學習算法量身定制專用的加速芯片,即ASIC。由于是專用芯片,幾乎就沒有太多的靈活性了。AI芯片所有的軟硬件優(yōu)化都是為了某些特定的深度學習算法所定制的。但是也正是由于專用的原因,可以不用考慮那些為了通用性所作出的妥協(xié),提高性能、功耗方面的表現(xiàn)。
當然還有一種為大家所熟知的方案,就是FPGA,試圖在性能和靈活性當中找到一個新的平衡點。
所以需不需要AI芯片?其實是性能和靈活性的一種權(quán)衡。當我們需要計算更快、功耗更小、成本更低的芯片的時候,AI芯片就是我們唯一的選擇。
需要注意的是,這里所說的性能,指的并不是只我們通常所說的“主頻”。它包括兩方面的考量。
首先是能效,指的是,在一定的功耗下,單位時間能提供的運算次數(shù)。
其次是吞吐量。深度學習算法主要的計算是矩陣的乘法、加法。這種極其規(guī)律的算法本身就是高度結(jié)構(gòu)化的。所以人們充分利用這種結(jié)構(gòu)化,提高硬件的效率和并行度,使得在主頻相同的情況下,數(shù)據(jù)的吞吐量大幅提高。
二、 人工智能芯片的應用
在很多場景下,即使是終端設備,我們也是需要這樣的專用AI芯片的。比如無人駕駛汽車,并不能依賴于數(shù)據(jù)上傳服務器,計算完成后再下載結(jié)果。汽車需要實時的、極低延遲的反應。再比如終端設備,它的特性決定了我們不可能使用大功耗的GPU,同時對芯片成本也有比較嚴格的要求。
人工智能芯片的應用場景可以分為以下4種情形,如圖五所示。
圖五
縱軸分為推理(Inference)和訓練(Training)。橫軸分為終端(Device)和云端(Cloud)。其中終端推理和云端訓練是應用最為廣泛的兩個場景。不僅是傳統(tǒng)互聯(lián)網(wǎng)和半導體巨頭們,近年來涌現(xiàn)了眾多的初創(chuàng)公司在這AI芯片這個領域發(fā)力。其中包括越來越多的中國的初創(chuàng)公司正在進入這個市場。
從市場劃分來看,又可以分為下面五個方向,如圖六所示(數(shù)據(jù)來源47家AI初創(chuàng)公司)。
圖六
三、 人工智能芯片實現(xiàn)的挑戰(zhàn)
人工智能芯片在失去一些靈活性的條件下,盡可能達到更高的能效、吞吐量,更低的延遲和成本。因此從指標上來說,AI芯片實現(xiàn)過程中的挑戰(zhàn)依然來源于:
1. 性能(Performance)
2. 功耗(Power)
3. 面積(Area)
但是AI芯片的特點使得我們可以觀察到它與其他類型芯片不同的一些挑戰(zhàn)。結(jié)合這一特點,所應用的實現(xiàn)方法也更具有針對性。
1.性能的挑戰(zhàn)自然是源于對AI芯片極致指標的追求。
由于AI芯片重運算和流水線設計的特征,加上眾多的旁路設計,時序路徑上,數(shù)據(jù)通路(Datapath)的長短差異非常明顯。到達同一個寄存器的路徑有的很長但有的很短。這都導致當把時鐘頻率推到極限的情況下,時序非常難以收斂。同時,由于芯片面積的極致優(yōu)化,會導致density和congestion變得更高,使得時序優(yōu)化捉襟見肘。無論是buffer的插入、cell的upsize都受到空間的局限。對于Setup Check來說,useful skew是必不可少的優(yōu)化手段,如圖七所示。
圖七
但是useful skew的使用,在優(yōu)化了setup timing的同時,大量的時鐘偏斜也導致hold check變得更加難以修復。
在面積緊縮的條件下,工具勢必不得不通過輾轉(zhuǎn)騰挪,把繞線資源緊缺,也就是congestion嚴重的地方的standard cell推開,使其變得稀疏來緩解congestion的問題。而繞線資源不那么緊缺的地方,standard cell的密度就相應變得更高。而這些區(qū)域,hold timing的修復會變得更為困難,因為修hold 通常是通過增加delay cell來實現(xiàn)的,需要足夠的空間。
制約性能的挑戰(zhàn)還包括時鐘樹帶來的影響。AI芯片大量的寄存器堆使得它需要一個足夠大的時鐘樹來驅(qū)動這些同步電路。當芯片density比較低的時候,時鐘樹的插入不會帶來太大的影響。但是極致的面積要求導致哪怕是幾千個buffer的插入,也會對timing產(chǎn)生比較大的跳變,即Pre-CTS和Post-CTS的correlation問題。
要解決這個問題,需要工具能夠在CTS之前就做出對于真實時鐘樹的預測,在Pre-CTS優(yōu)化的時候就把時鐘樹這一重要因素考慮進去。這不僅僅可以幫助工具更早地看到時鐘樹buffer所占的空間,還可以更精準地對useful skew做出預判。
Clock Gating目前仍然是對于降低動態(tài)功耗最有效的方法之一。AI芯片自然也不會吝嗇對于Clock Gating的使用。Clock Gating Cell(通常是Integrated Clock Gate,ICG)的enable path常常是時序優(yōu)化的瓶頸。特別是高層ICG的時序,如果在Pre-CTS階段不做一些額外處理的話,是難以修復的(圖八)。這依然是要求工具能夠提前對真實時鐘樹有一個預估,對useful skew的使用有所選擇。
圖八
2.AI芯片在功耗的表現(xiàn)上有幾個特點:
1) 動態(tài)功耗占據(jù)主導(圖九)
當然,根據(jù)芯片設計、流片工藝和signoffcorner的不同,功耗也會有不同的變化。但是動態(tài)功耗相比于靜態(tài)功耗,在AI芯片中的占比是要高得多的。比如,一個典型的比例是,動態(tài)功耗要占到總功耗的80%。這就意味著我們在實現(xiàn)的過程中,可以給與動態(tài)功耗以更高的優(yōu)先級。
圖九
還有一點值得注意的是,動態(tài)功耗由兩部分組成:開關功耗(SwitchingPower)和內(nèi)部功耗(InternalPower)。開關功耗指的是net上由于高低電平翻轉(zhuǎn),對負載電容充放電所帶來的功耗。內(nèi)部功耗則是standardcell內(nèi)部翻轉(zhuǎn)過程中產(chǎn)生的功耗,包括CMOS瞬時短路電流帶來的功耗和cell內(nèi)部的電容負載的功耗。AI芯片中的開關功耗和內(nèi)部功耗更趨向于接近1:1的比例。也就意味著,除了通過對面積減少,降低transition來優(yōu)化內(nèi)部功耗之外,在開關功耗的優(yōu)化上也有大量的工作可以做。比如,可以減少繞線的長度,可以restructure、pin swapping等邏輯優(yōu)化。Innovus 18.1最新的版本有很多這些特殊處理的地方!
2) 極不平衡的翻轉(zhuǎn)率
關于功耗的另一個特點是net上的翻轉(zhuǎn)率是極不平衡的。為了盡可能接近芯片真實的工作場景,翻轉(zhuǎn)率的數(shù)值應該通過對網(wǎng)表的仿真,得到波形(VCD文件),然后折算出net的翻轉(zhuǎn)率(TCF或者SAIF文件)。對于AI芯片來說,仿真應當運行真實場景中的深度學習算法。算法通常涉及到多個步驟(讀寫、卷積、池化……),則需要對各個步驟根據(jù)所運行時間的比例,求取加權(quán)平均后的求取加權(quán)平均后的翻轉(zhuǎn)率。這樣可以比較準確地反映出芯片工作時的平均動態(tài)功耗。
通過這種方法的到的翻轉(zhuǎn)率,可以明顯觀察到,不同net直接的翻轉(zhuǎn)率有著天壤之別(圖十)。有一部分net翻轉(zhuǎn)率非常高,幾乎和時鐘頻率相近。他們幾乎一直處于翻轉(zhuǎn)的狀態(tài)。而有一部分net的翻轉(zhuǎn)率非常低,很久才翻轉(zhuǎn)一次。甚至在典型的深度學習算法運行過程中,一次也沒有翻轉(zhuǎn)過,是一些非常安靜的net。
圖十
對于如此不同的net,我們在優(yōu)化的時候自然不能一視同仁。一個很自然的想法就是,對于高翻轉(zhuǎn)率的net,希望工具能盡可能減小它的線長,從而降低負載電容。這樣它在不停地翻轉(zhuǎn)時,開關功耗可以小一些。而對于非常安靜的那些net,即使繞線長度長一些,只要并沒有帶來timing的問題,也是可以接受的。并不需要動用額外的資源去優(yōu)化這些net。因為他們的翻轉(zhuǎn)并不會花費多少功耗。
AI芯片的對于大吞吐量的追求使得它通常擁有流水線結(jié)構(gòu)和并行的總線。如果可以充分利用這種結(jié)構(gòu)也能夠進一步優(yōu)化動態(tài)功耗的表現(xiàn)。一個例子是,如果我們把版圖上位置相近并且功能相同的寄存器替換為Multi-bit Flip Flop(圖十一),動態(tài)功耗,特別是clock上的動態(tài)功耗是可以減少的。
圖十一
之所以要求位置相近是因為不希望替換對timing帶來影響。根據(jù)情況的不同,可以是2-bit、4-bit甚至8-bit的替換。這一點對于AI芯片并不難實現(xiàn)。因為總線上的寄存器在版圖上的分布,由于前后連接關系的相似性常常會聚攏成堆,甚至多個寄存器在place之后自動就形成一個陣列。那很多MBFF的替換原地就可以進行,而對timing和routing不會帶來什么影響。工具需要能夠自動完成這一替換,并且在后續(xù)的時序優(yōu)化中正確處理這些cell,在需要分拆的時候還原成單個寄存器。
3. AI芯片面積上的挑戰(zhàn)表現(xiàn)在density和congestion上。
下圖是幾種類型芯片網(wǎng)表結(jié)構(gòu)上的橫向?qū)Ρ龋?/span>
比如FlipFlop Ratio對比:
圖十二
(欲知其他特性詳情,請參加Cadence/ARM聯(lián)合研討會)。
AI芯片以上的特點,對工具應對high density、high congestion的能力提出了巨大的挑戰(zhàn)。不僅要處理局部的routingcongestion,還需要面對全局的大面積擁塞。在確保routing沒有問題的情況下,時序的功耗的目標仍然需要滿足。
不同的Floorplan會對congestion以及timing的格局帶來完全不同的變化。對極限指標的追求還需要從Floorplan上著手。需要工具提供更加自動、智能的方法,幫助Floorplan的優(yōu)化,并且這種優(yōu)化是需要全局考慮性能、功耗和面積的。
四、 人工智能芯片實現(xiàn)的解決方案
針對前一節(jié)分析得出了AI芯片的特點,以及實現(xiàn)過程中的各種挑戰(zhàn),本節(jié)介紹了基于Cadence數(shù)字后端實現(xiàn)平臺Innovus的優(yōu)化解決方案,幫助芯片設計者更快地收斂到預期的性能、功耗和面積目標。
對于AI芯片開關功耗占比較多、翻轉(zhuǎn)率差異較大的特點,基于真實仿真翻轉(zhuǎn)率文件(Activity File)的動態(tài)功耗優(yōu)化是非常重要的。在翻轉(zhuǎn)率驅(qū)動的功耗優(yōu)化方案上,最新的Innovus 18.1版本有著諸多的特性。比如:
這里展示了在某款AI芯片核心模塊上,逐步開啟幾種優(yōu)化手段所得到的最終signoff功耗結(jié)果。
圖十三
從結(jié)果可以看到,動態(tài)功耗得到了顯著的降低。特別是SPP和CPD,充分利用了翻轉(zhuǎn)率文件提供的信息,優(yōu)先考慮高翻轉(zhuǎn)率的Net,使其線長更短,降低功耗負載。而對于低翻轉(zhuǎn)率的Net,允許放松線長的約束。
因此在沒有影響timing的情況下,可以獲得明顯的開關功耗的優(yōu)化。(更多的數(shù)據(jù)分析和細節(jié)展示,請參加Cadence和ARM的聯(lián)合研討會了解詳情)
然后,讓我們看看Innovus對于Congestion的解決方案。
正如前文的分析,AI芯片中大量的FlipFlop和多管腳單元,加上極致的面積目標,所以congestion往往變成了壓死性能的最大的稻草。
圖十四顯示了版圖的大部分區(qū)域都有非常嚴重的congestion問題。這種大范圍的congestion是很難通過單純的router的優(yōu)化來解決的。更需要placer和router的相互配合,在flow的各個階段通過對congestion的評估、把high congestion的區(qū)域cell density變得稀疏,同時保證timing得以滿足。
圖十四
從圖十五可以看到,Innovus的High effort congestion repair非常好地給出了我們所期待的結(jié)果。中間congestion最嚴重的區(qū)域(紅色的congestion marker),cell被盡量推開了,density降到很低(灰色部分)。推開的cell向四周擠進了congestion并不嚴重的區(qū)域。這些區(qū)域的density變得更高(黃色、綠色的部分),但是并沒有關系,因為這些區(qū)域的繞線比較少,不會對congestion造成太大的問題。
圖十五
但是圖十五中在垂直方向的congestion依然過于嚴重了,雖然憑借Nanoroute的優(yōu)化仍然可以全部繞通,但是不可避免會產(chǎn)生routing 的detour和timing的損失。
然,何以解憂?這里會用到Innovus的一個獨門秘器,18.1亮點之一,行業(yè)唯一的解決方案。
效果如圖十六,Timing、Density和DRC都得到了明顯的提升。本來由于嚴重的congestion導致無法修復的大量Holdviolation也得以大幅改善。
圖十六
還有更多的技術(shù)細節(jié)有待揭秘,欲知詳情,請來參加Cadence和ARM的聯(lián)合研討會,我們會有更加詳細的介紹和分享:
9/18,上海,張江長榮酒店
9/20,北京,東城喜來登酒店
9/25,新竹,國賓飯店
Copyright @ 2013-2018 中國福建網(wǎng) 版權(quán)所有
聯(lián)系我們
免責聲明:本站為非營利性網(wǎng)站,部分圖片或文章來源于互聯(lián)網(wǎng)如果無意中對您的權(quán)益構(gòu)成了侵犯,我們深表歉意,請您聯(lián)系,我們立即刪除。