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