田春生 陳 雷 王 源 王 碩 周 婧 龐永江 杜 忠
①(北京大學集成電路學院 北京 100871)
②(北京微電子技術(shù)研究所 北京 100076)
隨著硅工藝發(fā)展接近物理極限,用來刻畫工藝演進速度的摩爾定律也開始被打破,半導體行業(yè)迎來了后摩爾時代[1,2]。然而集成電路芯片產(chǎn)業(yè)并沒有因此而停滯發(fā)展,現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA)由于所具有的高度靈活、可定制以及支持高并發(fā)等特性[3],被廣泛應用于后摩爾時代的各個領(lǐng)域[4-8]。與此同時,為了能夠適應更加復雜的電路系統(tǒng),F(xiàn)PGA芯片的集成度也在不斷增大,從最初只包含有幾千個邏輯門的單功能芯片發(fā)展到了現(xiàn)今集成了數(shù)據(jù)信號處理(Digital Signal Processing, DSP)單元、塊隨機存取存儲器(Block Random Access Memory,BRAM)以及多核微處理器的片上系統(tǒng),F(xiàn)PGA芯片的集成度增加了數(shù)萬倍。如此高的芯片集成度使得手動進行電路設計已經(jīng)不現(xiàn)實,開發(fā)設計人員更加依賴于電子設計自動化(Electronic Design Automation, EDA)工具對FPGA數(shù)字集成電路進行設計[9,10]。但隨著FPGA芯片規(guī)模的不斷增大以及片上設計復雜度的不斷提升,例如,AMD Xilinx發(fā)布的Virtex UltraScale+VU19P FPGA,其包含900萬個邏輯單元以及近350億個晶體管,而Intel發(fā)布的Stratix 10 GX 10M FPGA,更是包含了1020萬個邏輯單元以及近430億個晶體管,對FPGA EDA工具的可擴展性和工作效率提出了嚴峻的挑戰(zhàn)[11,12],即便FPGA的可重復編程特性允許硬件設計的快速實現(xiàn)以及系統(tǒng)內(nèi)調(diào)試,從而能夠提高工作設計人員的工作效率,但如果EDA工具的運行時間過長或結(jié)果質(zhì)量(Quality of Result, QoR)很差,這一優(yōu)勢就會被明顯削弱。因此,F(xiàn)PGA EDA算法和軟件工具亟需朝著更加高效、智能的方向進行演進[13]。
如今,機器學習在我們的生活中發(fā)揮著越來越重要的作用,已經(jīng)在許多場景中得到了廣泛的應用。機器學習方法在解決分類、檢測和設計空間探索問題等方面展現(xiàn)了令人驚嘆的性能[14]。此外,機器學習方法也顯現(xiàn)出為許多非確定性多項式(Nondeterministic Polynomial, NP)完全問題生成高質(zhì)量解決方案的巨大潛力,這些NP完全問題在FPGA EDA領(lǐng)域是非常常見的,而傳統(tǒng)的解決方案常常由于缺乏知識積累,需要耗費大量的時間和資源從頭解決所有問題[15]。相對應地,機器學習方法專注于提取可以在其他相關(guān)和類似情況下重用的高級特征或模型,避免重復的復雜分析。因此,應用機器學習方法是加速解決FPGA EDA問題的一個重要研究方向[13,16]。
可喜的是,國內(nèi)外學者針對基于機器學習方法的FPGA EDA技術(shù)的研究已經(jīng)取得了具有前瞻性的研究成果和進展。本文分析梳理了近年來應用機器學習解決FPGA EDA中一些關(guān)鍵問題的研究成果,對FPGA EDA和機器學習的背景知識進行了簡要概述,調(diào)研了機器學習在FPGA EDA流程不同階段應用的研究現(xiàn)狀,即HLS、邏輯綜合、布局以及布線,在此基礎(chǔ)上對機器學習未來在FPGA EDA技術(shù)中的應用進行了展望。
作為FPGA芯片設計、應用過程中不可或缺的重要組成部分,在過去的30余年中,F(xiàn)PGA EDA的設計流程變得越來越規(guī)范且復雜,具體包括高層次綜合(High Level Synthesis, HLS)、邏輯綜合、布局、布線以及碼流生成[17,18],如圖1所示。
圖1 FPGA EDA基本流程
HLS是指將高層次語言描述的邏輯結(jié)構(gòu)自動轉(zhuǎn)換成低抽象級語言描述的電路模型的過程,即HLS能夠?qū), C++, SystemC等具有較高的抽象度且不具備時鐘或時序概念的高層次語言自動轉(zhuǎn)化為Verilog, VHDL, SystemVerilog等低層次語言[19,20]。由于Verilog, VHDL, SystemVerilog能夠用來描述時鐘周期精確的寄存器傳輸級(Register Transfer Level, RTL)電路模型,是當前FPGA設計中最為普遍適用的電路建模與描述方式。HLS技術(shù)的應用可以提高設計速度、縮短設計周期,方便設計者在系統(tǒng)級進行設計方案的探索、在算法級對設計進行優(yōu)化。
邏輯綜合能夠?qū)DL文件轉(zhuǎn)換為描述指定FPGA器件上不同邏輯單元連接關(guān)系的網(wǎng)表文件,需要指出的是,網(wǎng)表中的連接關(guān)系只是邏輯連接,即邏輯綜合工具只是給出了所需實現(xiàn)的設計的一個“草圖”,這個“草圖”最終需要由FPGA芯片中可用的邏輯資源來實現(xiàn)[21]。邏輯綜合是一個非常復雜的過程,通常情形下只能通過啟發(fā)式方法來得到一個次優(yōu)的解決方案。
布局是指在一定的約束條件下(例如,線長、時延、功耗以及面積等),將邏輯綜合過程得到的電路網(wǎng)表中的邏輯單元與實際FPGA芯片中的物理位置建立一對一映射的過程[22]。布局作為FPGA EDA流程中的關(guān)鍵環(huán)節(jié),同時也是FPGA編譯過程中最耗時的步驟之一。由于FPGA中的布線資源都是預置的且容量有限,一旦布局算法的解需要過多的布線資源,后續(xù)的布線過程將會失敗或是需要很長的時間才會得到一個可行的布線解決方案,因此,一個好的布局解決方案對于FPGA EDA的工作流程至關(guān)重要。
布線能夠在保證資源合法使用的前提下,通過配置FPGA芯片中的可編程開關(guān),從而通過利用硬連線資源連通電路線網(wǎng)中所有的邏輯連接。與此同時,為了保證最終在FPGA芯片實現(xiàn)后的電路設計中的邏輯信號的正常傳輸,不同線網(wǎng)間的邏輯連接不能夠共享相同的硬連線資源[23]。
執(zhí)行完布線操作后,便可以生成二進制的碼流文件,將其下載到芯片內(nèi)部,最終完成FPGA的配置流程。
得益于學術(shù)界和工業(yè)界30余年的努力,F(xiàn)PGA芯片的設計流程得到了很好的發(fā)展。然而,隨著FPGA芯片規(guī)模的不斷增長,亟需引入更加高效的設計方法來降低設計成本、提升設計效率以及QoR。近年來,機器學習技術(shù)的飛速發(fā)展為解決上述問題提供了一個全新的視角。本文綜述了機器學習技術(shù)在FPGA EDA HLS、邏輯綜合、布局、布線等流程中的應用情況,并對發(fā)展趨勢進行了總結(jié),希冀為未來FPGA EDA技術(shù)的發(fā)展起到一定促進作用。
機器學習技術(shù)是一種能夠自動從數(shù)據(jù)集或是先驗知識中提取有用信息的技術(shù),通常情形下,基于機器學習技術(shù)的解決方案按照學習范式的不同可以分為監(jiān)督學習、無監(jiān)督學習、主動學習以及強化學習等幾種類型[24,25]。監(jiān)督學習與無監(jiān)督學習的區(qū)別在于機器學習模型的輸入數(shù)據(jù)事先是否被標記,通過監(jiān)督學習或無監(jiān)督學習,機器學習模型首先通過離線的方式在靜態(tài)的數(shù)據(jù)集上進行訓練,在模型的訓練誤差滿足要求后,便可以用于在線部署。在利用一些傳統(tǒng)的監(jiān)督學習方法進行分類訓練時,數(shù)據(jù)樣本的規(guī)模越大,分類的效果便越好。但在實際的應用場景中,標記樣本的獲取往往是十分困難的,大多數(shù)情況下需要各領(lǐng)域的專家通過手工的方式進行標注,所耗費的時間成本和經(jīng)濟成本是無法負擔的。為了降低數(shù)據(jù)標記過程所耗費的成本,進而能夠使用較少的訓練樣本來獲得性能較好的機器學習模型,主動學習的概念應運而生。主動學習是指機器學習模型能夠從輸入空間中查詢得到最有用的未標記的樣本,并交由專家進行標記,隨后再利用上述已標記的樣本來訓練機器學習模型以提高模型的精確度,這樣便能夠降低海量數(shù)據(jù)標記所帶來的成本浪費的問題。最后便是強化學習,強化學習事先不要求給定任何數(shù)據(jù),強調(diào)決策體(Agent)如何通過采取行動(Action)-獲取獎勵(Award)的方式與環(huán)境(Environment)進行交互,以期獲得最大的預期利益。上述方法均已被證明適用于FPGA EDA問題的求解過程。
機器學習模型是機器學習方法產(chǎn)出的結(jié)果,可以將其視為在給定輸入情形下、輸出一定結(jié)果的函數(shù)。機器學習模型并不是一個事先定義好的函數(shù),而是利用歷史數(shù)據(jù)歸納、推導出來的,即當輸入不同的數(shù)據(jù)時,機器學習模型的輸出會根據(jù)輸入的不同而產(chǎn)生相應的變化,但機器學習模型本身并不會發(fā)生改變。傳統(tǒng)的被應用于解決FPGA EDA問題的機器學習模型包括線性回歸、隨機森林(Random Forest, RF)以及人工神經(jīng)網(wǎng)絡(Artificial Neural Network, ANN)等。近年來,隨著一些大型公共benchmark的公開、算法的突破以及硬件平臺計算能力的提升,研究人員開始不斷嘗試將深度學習模型應用于FPGA EDA問題的求解當中,例如,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)、遞歸神經(jīng)網(wǎng)絡(Recursive Neural Network,RNN)、生成對抗網(wǎng)絡(Generative Adversarial Network, GAN)、深度強化學習(Deep Reinforcement Learning, DRL)以及圖神經(jīng)網(wǎng)絡(Graph Neural Network, GNN)等,并取得了令人欣喜的研究成果[26,27]。
為了提高設計效率并向更廣泛的用戶群體推廣FPGA,高層次綜合工具應運而生。高層次綜合工具接受高級語言(例如C, C++以及SystemC)作為輸入,能夠?qū)⑵渥詣愚D(zhuǎn)換為Verilog或VHDL等形式的硬件描述語言。但隨著片上設計復雜度的不斷提升,如何在保證HLS工具輸出結(jié)果質(zhì)量的同時減少HLS所需花費的時間、提升設計空間的探索效率是現(xiàn)階段迫切需解決的關(guān)鍵問題。機器學習技術(shù)的引入為解決上述問題提供了一種新的思路。機器學習技術(shù)在HLS中的應用主要包括性能評估以及設計空間的探索等兩方面,接下來本文對兩方面內(nèi)容分別進行闡述。
3.1.1 高層次綜合的性能評估
為了能夠更好地評估利用HLS工具生成的寄存器傳輸級模型的性能,HLS工具會提供一組性能評估報告,用來定量的評估寄存器傳輸模型的時序以及資源使用情況等信息。上述信息可以用于指導后續(xù)流程的迭代優(yōu)化,以獲得所期望的結(jié)果質(zhì)量。但評估報告中的許多參數(shù)往往是不正確的,特別是最終的資源占用以及時序信息往往取決于HLS的后續(xù)流程,例如邏輯綜合、布局和布線等,因此即便是使用當前最先進的HLS工具也難以提供準確的性能評估報告。以AMD Xilinx商用Vivado HLS工具為例,它對查找表(Look-Up Table, LUT)使用數(shù)量評估的相對誤差為125%,觸發(fā)器評估的相對誤差為98%[28]。這種對結(jié)果質(zhì)量的不準確評估會阻止設計人員甚至工具本身應用合適的優(yōu)化策略。為了獲取更加準確的結(jié)果質(zhì)量評估,設計人員需要在每一個設計點都花費大量的時間來迭代后續(xù)的操作流程(邏輯綜合、布局和布線),但由于上述操作會抵消HLS所帶來的設計效率上的優(yōu)勢,顯然是不符合實際的。而機器學習技術(shù)可以通過學習真實的設計基準來提升HLS性能評估的準確性,因此,越來越多的研究學者開始關(guān)注于將機器學習應用到HLS的性能評估與預測中,主要可以劃分為資源占用與時序信息評估以及跨平臺的性能預測兩大類。
(1) 資源占用與時序性能評估。資源占用與時序性能評估的整體工作流程如圖2所示,該流程在文獻[28]中被首先提出,流程的主要工作在于訓練一個機器學習的模型,該模型會將HLS的評估報告作為輸入,在無需執(zhí)行后續(xù)邏輯綜合、布局和布線等流程的條件下,輸出一個關(guān)于資源占用與時序性能更加精準的評估結(jié)果。上述工作流程主要包括數(shù)據(jù)處理與模型訓練兩個步驟[28]。在數(shù)據(jù)處理階段,首先需要針對不同的FPGA設備,在不同的時鐘周期運行完整的C-to-Bitstream流程,以獲取完整的數(shù)據(jù)集合。在此基礎(chǔ)上,作者通過特征選擇技術(shù)來系統(tǒng)地消除一些不重要的特征,以克服共線性的影響并降低數(shù)據(jù)維數(shù)。隨后便可以將所選的特征應用到模型訓練階段。在模型訓練階段,通常使用相對絕對誤差(Relative Absolute Error, RAE)與相對均方根誤差(Relative Root Mean Squared Error, RRMSE)來評價性能評估的誤差值。RAE可以表示為
其中,y︿ 表示模型預測值的向量集合,y表示數(shù)據(jù)集中真實值的向量集合,y?表示向量y的所有元素的均值。RRMSE可以表示為
其中,N表示采樣點的個數(shù),y︿i與yi分別表示預測值與實際值的采樣值。
Makrani等人[29]同樣基于如圖2所示工作流程,將時序性能評估問題建模為回歸問題,并利用深度學習訓練平臺[30]獲得了由HLS工具生成的RTL代碼的最大時鐘頻率等結(jié)果。隨后,為了進一步提升評估的準確率,Makrani等人提出了一種結(jié)合了線性回歸、支持向量機(Support Vector Machines, SVM)以及隨機森林的訓練模型,最終性能評估的準確率高達95%以上。此外,也有研究學者利用機器學習技術(shù)來減少HLS工具對操作延遲預測的誤差,現(xiàn)有的HLS工具大多采用基于單個操作的預先表征的延遲的簡單相加來執(zhí)行延遲評估,但得到的結(jié)果可能并不準確。為此,Ustun等人[31]建立了一個定制的圖神經(jīng)網(wǎng)絡(Graph Neural Network, GNN)模型以從數(shù)據(jù)流圖中捕獲各操作間的關(guān)聯(lián),并完成了模型的訓練,最終的試驗結(jié)果表明,該方法能夠?qū)ivado HLS操作延遲預測的RRMSE降低72%。
圖2 高層次綜合資源占用與時序性能評估工作流程
(2) 跨平臺性能預測。軟硬件協(xié)同設計的出現(xiàn)使得開發(fā)人員能夠利用一些新的混合平臺,例如Zynq。然而,將應用程序分為兩部分,一部分在CPU上運行,另一部分轉(zhuǎn)換為在FPGA上實現(xiàn)的硬件加速器。但由于在不同的平臺上實現(xiàn)的應用程序的性能存在顯著的差異,使得開發(fā)設計人員在處理平臺的選擇上往往難以抉擇,即哪部分要用可編程邏輯FPGA實現(xiàn),哪部分要用微處理器實現(xiàn)。開發(fā)設計人員往往需要在不同的平臺上完全實現(xiàn)設計方案,以此來評估最終的性能。當可用處理平臺的數(shù)量較多時,上述過程是非常繁瑣的。為了應對上述挑戰(zhàn),Makrani等人[32]設計了一種跨平臺的性能評估系統(tǒng)XPPE,其具體工作流程如圖3所示。
圖3 XPPE工作流程
XPPE使用神經(jīng)網(wǎng)絡(Neural Network, NN)模型來預測ARM處理器上目標FPGA的應用程序的加速比。XPPE的輸入包括目標FPGA上的可用資源、Vivado HLS工具生成的資源利用率報告以及提取到的應用程序的一系列特征。輸出是ARM A9處理器上應用程序在目標FPGA上的加速比的估計結(jié)果。在此基礎(chǔ)上,作者提出使用RRMSE來評估預測結(jié)果的準確性。最終的實驗結(jié)果表明,所設計的體系架構(gòu)的相對均方誤差為5.1%。O’Neal等人[33]提出了一種與XPPE相類似的基于機器學習的跨平臺的性能評估器HLSPredict。但與XPPE的不同之處在于HLSPredict僅將工作負載即應用程序作為輸入,而不是HLS的報告、應用程序特性以及目標FPGA設備規(guī)格的組合。其次,HLSPredict所預測的目標平臺必須與訓練階段的硬件平臺保持一致。實驗結(jié)果表明,對于一個應用程序,HLSPredict實現(xiàn)了9.08%的相對絕對百分比誤差和43.78倍的運行時加速。
3.1.2 高層次綜合的設計空間探索
本文3.1.1節(jié)綜述了如何使用機器學習模型來預測HLS最終的QoR,機器學習方法在HLS中的另一個應用便是輔助進行設計空間的探索。在HLS中,可調(diào)整的綜合選項跨越了非常大設計空間,在大多數(shù)情形下,設計空間探索的任務是找到帕累托前沿曲線,在該曲線上,每個點都不完全被其他點所支配。
經(jīng)典的應用于HLS設計空間探索的算法包括模擬退火(Simulated Annealing, SA)以及遺傳算法(Genetic Algorithm, GA)等,但上述方法的缺陷在于無法從已探索的設計數(shù)據(jù)庫中學習到相關(guān)的經(jīng)驗信息。為此,許多研究學者探索了如何使用機器學習的預測模型來指導設計空間的探索過程。這些模型會根據(jù)已探索設計點的綜合結(jié)果進行訓練,并用于預測新設計的質(zhì)量。例如,Liu等人[34]提出了一種專用的探索器來搜索針對于FPGA的帕累托最優(yōu)的HLS設計。探索器會迭代地選擇潛在的帕累托最優(yōu)設計進行綜合和驗證,最優(yōu)設計的選擇是基于一組特征變量進行的,并且這些特征變量會在設計空間探索的過程中不斷進行調(diào)整。最終實驗結(jié)論表明,上述方法的搜索速度是窮舉法的6.5倍、受限搜索方法的3倍,且最終的QoR也得到了明顯的提升。文獻[35]提出了一種基于轉(zhuǎn)導實驗設計(Transductive Experimental Design, TED)的方法,TED側(cè)重于尋找能夠準確描述設計空間的樣本,其基本思想在于從設計空間中選擇具有代表性的且難以推測的樣本,而不是使用隨機樣本。TED的目標是使用最少的訓練樣本來最大化預測模型的準確性。為了達到上述目標,TED將尋找最佳策略的問題表述如下:假設旋鈕設置(Knob Settings,KS)的總數(shù)為n,即|κ|=n,隨后從中選取一個訓練集κ? ,即κ??κ,使得|κ?|=m。因此,預測誤差的最小化問題H(k)-H?(k),?k ∈κ便可以等效為如式(3)的問題進行求解
其中,H代表高層次綜合工具,H? 表示高層次綜合工具的學習模型, T [·]表示矩陣跡的算子操作符,μ表示一個大于零的常量,I表示單位矩陣。與上述工作不同,為了進一步完善HLS中設計空間的探索過程,Meng等人[36]設計了一種自適應閾值的非帕累托消元法(Adaptive Threshold Non-Pareto Elimination, ATNE)來關(guān)注學習器的不準確度,而不是像上述工作那樣主要關(guān)注模型如何對設計空間進行準確的描述。ATNE使用基于RF的方法來輔助HLS的設計空間的探索過程,在該文獻中,Meng等人設計了一個帕累托識別閾值,并將其應用于RF回歸器的誤差估計,以此來逐步消除非帕累托最優(yōu)設計。ATNE的重點不是提升學習器的準確度,而是評估并最小化因?qū)W習器不準確而導致失去“好”設計的風險,最終的實驗結(jié)果也表明,ATNE能夠獲得比TED更好的性能。
最后,本文對上述工作進行了總結(jié),具體如表1所示。
表1 機器學習在FPGA EDA高層次綜合技術(shù)中的應用
邏輯綜合是一個具有復雜約束條件的優(yōu)化問題,需要精確的求解才能夠保證后續(xù)設計流程的準確性。使用機器學習算法來直接生成邏輯綜合的解決方案是非常困難的,現(xiàn)階段機器學習算法的主要應用是用來調(diào)度一些已有的優(yōu)化策略。例如,Neto等人[37]提出了一種人工智能驅(qū)動的邏輯綜合架構(gòu):LSOracle, LSOracle中集成了與非圖(And-Inverter Graph, AIG)和表決器非圖(Major-Inverter Graph,MIG)兩種優(yōu)化器,首先使用k劃分的方法將電路的有向無環(huán)圖(Directed Acyclic Graph, DAG)劃分為k個部分,在此基礎(chǔ)上,依靠深度神經(jīng)網(wǎng)絡(Deep Neural Network, DNN)來動態(tài)決定將哪個優(yōu)化器應用于電路的不同部分。最終實驗結(jié)果表明,與單獨使用AIG優(yōu)化器和DAG優(yōu)化器相比較,LSOracle在面積-時延方面的性能平均提升了6.87%和2.70%。
當前的綜合工具(例如,加州大學伯克利分校開發(fā)的ABC工具)中包含有許多邏輯轉(zhuǎn)換的流程[38],為了選擇一個合適的流程,Yu等人[39]提出了一種完全自動化的邏輯綜合架構(gòu),該架構(gòu)以待綜合的HDL代碼作為輸入,輸出為兩組不同的邏輯綜合流程:即“天使流程”(Angel-flows)和“魔鬼流程”(Devil-flows),它們分別對應了設計目標的最佳和最差的結(jié)果質(zhì)量(QoR)。該問題被建模為一個多分類問題并使用基于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)的分類器進行求解。其主要思想是用一小組經(jīng)過標記的隨機的邏輯綜合的流程來訓練一個CNN的分類器,此處所提到的不同的邏輯綜合流程的標簽是通過一個或多個不同QoR的指標進行標記的,例如時延、面積以及功率等。經(jīng)過訓練后的分類器便可以用來預測未被標記的邏輯綜合的流程。最后,通過對預測置信度(即屬于某個類別的概率)進行排序來生成“天使流”與“魔鬼流”。整個架構(gòu)的具體流程如圖4所示。Wu等人[40]提出了一種基于混合圖神經(jīng)網(wǎng)絡的優(yōu)化方法,針對邏輯綜合的流程進行優(yōu)化,以提升結(jié)果質(zhì)量的評估以及優(yōu)化方法的泛化能力。其關(guān)鍵思想在于同時利用來自硬件設計和邏輯綜合流程的時空信息來預測不同設計上各種不同綜合流程的性能指標,最終的實驗結(jié)果也表明利用混合圖神經(jīng)網(wǎng)絡的優(yōu)化方法在誤差精度是現(xiàn)有方法的7~15倍。
圖4 自動化邏輯綜合架構(gòu)
除了上述工作外,也有研究學者提出使用強化學習(Reinforcement Learning, RL)方法來優(yōu)化邏輯綜合的流程,即具有相同I/O行為的兩個DAG之間的轉(zhuǎn)換被建模為一個動作,隨后通過設計不同的學習方式來完成動作的選擇過程[41]。例如,在文獻[42]中圖卷積網(wǎng)絡(Graph Convolutional Network,GCN)被用作策略函數(shù)來獲取每個動作的概率。文獻[43]則采用無監(jiān)督的優(yōu)勢演員-評論家(Advantage Actor Critic, A2C)機制來搜索最佳的解決方案。寧波大學儲著飛老師團隊提出了一種基于強化學習的近端策略優(yōu)化方法來訓練調(diào)整優(yōu)化序列[44],具體地,使用具有邊緣特征聚合能力的圖同構(gòu)網(wǎng)絡來學習電路表示,并將電路表示作為強化學習的智能體的狀態(tài),在此基礎(chǔ)上,為了使智能體能夠從歷史的經(jīng)驗中學習到相關(guān)的知識,長短期記憶網(wǎng)絡(Long Short-Term Memory, LSTM)被進一步嵌入到強化學習的模型中,與文獻[43]相比較,面積指標優(yōu)化了21.21%。
基于機器學習的邏輯綜合技術(shù)雖然得到了大范圍的研究,但上述方法要么需要大量標記數(shù)據(jù)進行訓練,要么由于計算開銷,在實際EDA工程的應用中受到了極大的限制。為了克服上述問題,Yu等人[45]提出了一種全新的適用于布爾邏輯優(yōu)化的端到端的、高性能的、針對特定領(lǐng)域的Bandit計算架構(gòu),該架構(gòu)能夠同時對AIG、布爾可滿足性的連接范式、標準單元技術(shù)映射后的靜態(tài)時序分析以及6輸入查找表(Look Up Table, LUT)架構(gòu)的FPGA技術(shù)映射問題進行優(yōu)化,最終的實驗結(jié)果也表明,該方法的運算速度要優(yōu)于文獻[39]與文獻[43]中所提出的方法。Grosnit等人[46]則是提出了一種基于貝葉斯理論的方法來解決樣本復雜度過高的問題,實現(xiàn)了高效且可擴展的基于機器學習的邏輯綜合的解決方案。
布局作為FPGA EDA工作流程中的核心步驟之一,是典型的超大規(guī)模非確定性多項式(Non-deterministic Polynomial, NP)困難組合優(yōu)化問題,對時延、線網(wǎng)可布通性、功耗等功能指標影響巨大。由于過去30余年FPGA架構(gòu)的不斷演進,現(xiàn)代FPGA擁有數(shù)以千計的DSP, RAM以及數(shù)百萬個查找表(Look-Up Table, LUT)和觸發(fā)器(Flip-Flop,FF)實例,這些異構(gòu)資源通常完全分散在FPGA架構(gòu)的離散位置,這種復雜性和異構(gòu)性對現(xiàn)代FPGA布局器的運行效率和結(jié)果質(zhì)量提出了嚴峻的挑戰(zhàn),將機器學習與傳統(tǒng)布局方法相結(jié)合是解決上述問題的有效途徑。
傳統(tǒng)的布局方法大體上可以分為3類,基于啟發(fā)式的布局方法、基于劃分的布局方法以及基于解析式的布局方法?;趩l(fā)式的布局方法一般基于模擬退火技術(shù)[47,48],其本質(zhì)上是一種基于概率的方法,能夠在一個很大的空間內(nèi)尋找全局最優(yōu)解,在時間允許的情形下,能夠得到全局最優(yōu)解,并能夠避免陷入局部最優(yōu)解的陷阱,但其缺陷也同樣明顯,即算法的復雜度高且收斂效率低,對大規(guī)模電路的可擴展性極差。為了提高模擬退火算法的求解效率,有研究學者在模擬退火算法中引入了強化學習策略,以加快算法的收斂速度。2019年,Murray等人[49]使用單狀態(tài)強化學習策略提出了一種自適應的FPGA布局方法,如圖5所示,在每一次迭代的過程中,布局器agent能夠自動地選取不同類型的邏輯單元執(zhí)行邏輯單元的交換操作,節(jié)省了布局所需要的時間,與VPR工具相比較,能夠獲得2倍以上的加速比。在此項工作的基礎(chǔ)上,2021年,Elgamma等人[50,51]做了進一步探索,使用多狀態(tài)強化學習策略來優(yōu)化模擬退火算法中直接過程的選取過程,使得基于模擬退火的FPGA布局器的性能得到了進一步的優(yōu)化提升,運行效率以及結(jié)果質(zhì)量都要優(yōu)于已發(fā)布的VTR 8布局器,能夠在更短的運行時間內(nèi)得到更好的QoR布局解決方案。
圖5 基于強化學習的模擬退火FPGA布局算法
基于劃分的布局方法能夠通過遞歸的方法對布局實例進行劃分,直至所有布局實例均小于事先設定的閾值。但由于布局過程是遞歸求解,不恰當?shù)膭澐謺罄m(xù)的過程產(chǎn)生不可逆的傷害,導致回溯的最終解的質(zhì)量產(chǎn)生較為嚴重的損失。因此,現(xiàn)階段沒有將機器學習技術(shù)應用于基于劃分的布局方法的研究。
基于解析式的布局方法可將布局問題描述為更加復雜的優(yōu)化問題,并基于豐富的梯度下降方法進行求解。根據(jù)目標函數(shù)的不同,可以將解析式方法分為二次方布局技術(shù)[42-55]以及非線性布局技術(shù)[56,57]。二次方布局技術(shù)的求解效率較高,但通常情形下,二次函數(shù)無法較為嚴格地逼近實際問題,且魯棒性較差。非線性布局技術(shù)的目標函數(shù)基于高階非線性方程組成,相比于二次函數(shù)更具有表現(xiàn)力,通過非線性布局技術(shù)得到的布局解的質(zhì)量也要由于二次方布局技術(shù)。因此,現(xiàn)階段較為優(yōu)秀的FPGA布局器均采用了非線性布局技術(shù),例如Meng等人[58]將基于靜電場的布局方法ePlace[59]遷移至FPGA設計了一種全新的布局器elfplace,并實現(xiàn)了GPU加速,與UTPlaceF[60], RippleFPGA[61]以及Gplace3.0[62]等二次方或非線性布局器相比較,能夠在運行時間大致相當?shù)那闆r下,將線長指標分別減少13.5%、10.2%以及8.8%。隨后,Rajarathnam等人[63]在此項工作的基礎(chǔ)上,提出了一種基于開源深度學習工具的加速布局架構(gòu)DreamPlaceFPGA,能夠適應于大規(guī)模異構(gòu)FPGA的布局工作,相比于elf-Place布局器[59],DreamPlaceFPGA能夠在獲得相同QoR的前提下,得到5.4倍的加速比。
機器學習在布局技術(shù)中的另一類應用便是在布局階段進行布線擁塞的預測。布局的結(jié)果將直接決定物理實現(xiàn)后的線長、面積以及功耗等QoR指標,對于在FPGA芯片上實現(xiàn)的設計的性能具有很大的影響,不合理的布局將會使布線資源緊張,進而產(chǎn)生布線擁塞,導致布線迂回和較低的邏輯單元的利用效率,甚至在極端情況下的某些問題經(jīng)過布線后仍無法修正,這樣就會迫使設計人員重新調(diào)整布局,重復進行布局和布線的迭代,耗費大量的時間和資源。因此,在布局階段進行布線擁塞的預測是極其重要的。正是認識到了上述問題,F(xiàn)PGA布線擁塞預測的研究成為近年來的研究熱點,并且基于機器學習的布線擁塞預測方法也開始紛紛涌現(xiàn)。Pui等人[64]基于布局和全局布線的結(jié)果,通過提取的特征來實現(xiàn)布線擁塞的預測,該項工作提取了3類特征參數(shù),并基于線性回歸以及SVM模型對收集到的數(shù)據(jù)樣本進行了訓練。此項工作的缺點在于仍然需要執(zhí)行全局布線操作才能夠完成布線擁塞信息的預測,并且該方法的結(jié)果一致性仍需進一步考量。為了進一步提升預測的準確程度,Maarouf等人[65]在上述工作的基礎(chǔ)上,提出了一種高效的機器學習模型來完成布線擁塞信息的精準預測,最終的實驗結(jié)果表明,與文獻[64]相比較布線擁塞信息預測的準確程度提升了25%。Yu等人[66]設計了一種基于條件生成對抗網(wǎng)絡(Conditional Generative Adversarial Nets, CGAN)的布線擁塞預測方法,將布線擁塞預測問題建模為圖像轉(zhuǎn)換問題,僅利用布局階段所提取的特征信息便能夠進行布線擁塞信息的預測。但該方法卻無法應用于大規(guī)模設計,其原因在于:首先,該方法對圖像的處理能力被限制為256×256,無法對大規(guī)模的FPGA設計進行求解;其次,該方法在布局階段所提取出的特征也無法應用于大規(guī)模的FPGA設計,尤其是該方法使用兩個引腳間的飛線作為連接的特征信息,這只適合于小規(guī)模的電路,無法描述大規(guī)模的FPGA設計。為了克服上述問題,Alawieh等人[67]將布線擁塞預測問題轉(zhuǎn)換為高清圖像識別問題,能夠面向大規(guī)模的FPGA設計進行求解。
除學術(shù)界外,工業(yè)界也在積極探索將機器學習應用到FPGA布局工作的流程當中,例如,AMD Xilinx在2021年最新發(fā)布的Vivado ML版本中便加入了基于機器學習的布線擁塞預測機制,據(jù)公開資料顯示,其布線擁塞預測的準確率能夠達到90%以上[68]。北京微電子技術(shù)研究所自研的國產(chǎn)FPGA EDA工具BFDS(BMTI FPGA Design Suit, BFDS)的布局流程中集成了強化學習模型,能夠?qū)Σ季值慕Y(jié)果進行優(yōu)化,現(xiàn)階段能夠支持7000萬門級國產(chǎn)FPGA的應用開發(fā)。上述工作也是為數(shù)不多的將機器學習模型應用于FPGA布局實際工程應用中的嘗試。表2是本文對上述工作的總結(jié)。
表2 機器學習在FPGA EDA布局技術(shù)中的應用
作為FPGA EDA設計流程中的重要一環(huán),布線直接決定了所設計的電路最終在FPGA芯片上實現(xiàn)后的性能。在布線時,EDA工具會首先將FPGA芯片內(nèi)的硬件資源建模為一個有向的布線資源圖(Routing Resource Graph, RRG)。RRG是布線方法與FPGA硬件間的紐帶,通過RRG能夠?qū)PGA布線問題轉(zhuǎn)化為圖論中的最短路徑的求解問題,布線方法在RRG上直接對線網(wǎng)執(zhí)行布線操作即可[69]。McMurchie等人[70]首次將擁塞協(xié)商的思想引入到FPGA的方案中,該方案允許FPGA中的布線資源在重復使用的情形下,對線網(wǎng)執(zhí)行迭代布線操作,在每次迭代的過程中,會逐步增加對重復使用的布線資源的懲罰力度,直至將所有的擁塞全部消除?;趽砣麉f(xié)商的FPGA布線方案的提出具有跨時代的意義,目前幾乎所有的商業(yè)界或是學術(shù)界所使用的布線器,其基本思想都是基于擁塞協(xié)商的布線方案的改進。但隨著FPGA電路規(guī)模的不斷增大,布線所需花費的時間也越來越長,亟需探索新的解決方案以提升FPGA布線方法的運行效率和QoR。
機器學習技術(shù)的出現(xiàn)為人們指明了方向,例如,F(xiàn)arooq等人[71]提出了一種基于強化學習的FPGA布線解決方案,將FPGA的布線迭代流程轉(zhuǎn)化為強化學習的訓練過程,此項工作也是強化學習技術(shù)首次在FPGA布線任務中的嘗試,最終的實驗結(jié)果表明,在達到同等QoR指標的情形下,能夠節(jié)約30%的系統(tǒng)運行時間。
基于機器學習的FPGA EDA技術(shù)雖然有了一定的發(fā)展,但仍存在一定的局限性,相關(guān)研究尚處于起步階段。接下來將從這些局限性的角度出發(fā),對基于機器學習的FPGA EDA技術(shù)進行展望。
(1)基于機器學習的FPGA EDA技術(shù)的基礎(chǔ)是大型的數(shù)據(jù)集,但隨著在FPGA EDA技術(shù)中所應用的機器學習模型的復雜度的不斷攀升,現(xiàn)有的數(shù)據(jù)集已無法滿足基于機器學習的FPGA EDA技術(shù)的發(fā)展需求。因此,構(gòu)建數(shù)據(jù)量豐富、全面且通用的面向FPGA EDA技術(shù)的數(shù)據(jù)集對基于機器學習的FPGA EDA技術(shù)的發(fā)展至關(guān)重要。與此同時,弱監(jiān)督與無監(jiān)督方法可以在僅需要少量的標注數(shù)據(jù)和不需要標注數(shù)據(jù)的情況下完成機器學習模型的訓練過程,可以顯著地減少標注數(shù)據(jù)的時間成本,現(xiàn)階段已在許多領(lǐng)域得到了廣泛的應用[72]。隨著基于機器學習的FPGA EDA技術(shù)研究的不斷深入,數(shù)據(jù)的需求量在不斷增大,數(shù)據(jù)的標注成為難題,弱監(jiān)督或無監(jiān)督的技術(shù)不僅能夠解決基于機器學習的FPGA EDA的數(shù)據(jù)標注的難題,而且有望提升應用于FPGA EDA技術(shù)中的機器學習模型的精度與訓練速度,是未來的研究方向之一。
(2)現(xiàn)有的機器學習在FPGA EDA領(lǐng)域的應用研究大多仍然是在效仿ASIC,例如,針對邏輯綜合技術(shù),最近的研究主要是通過預測傳統(tǒng)尚需要進一步模擬的相關(guān)信息來提高下利率和準確性,具體而言,在機器學習模型的訓練過程中,主要是通過調(diào)用abc工具,將布爾電路映射到工藝庫,隨后適用工藝庫返回的信息(Area, Delay等)來設計相關(guān)的獎懲函數(shù),最終得到一個相對最優(yōu)的綜合流程。但上述過程并沒有考慮到FPGA自身的應用特性,對于綜合過程而言,ASIC同F(xiàn)PGA最大的區(qū)別在于前者映射到了標準單元庫,而后者卻是查找表等FPGA上可用的邏輯資源,但已有的開源邏輯綜合工具,例如前文所提到的學術(shù)界廣泛適用的abc,現(xiàn)階段只能簡單地反饋出在綜合的流程中所適用的查找表的數(shù)量以及相關(guān)層級關(guān)系等簡單信息,缺少對FPGA異構(gòu)邏輯單元庫的支持,這就使得在機器學習模型的訓練階段得不到有用反饋的信息,這也正是阻礙機器學習模型在FPGA邏輯綜合領(lǐng)域發(fā)展的一個至關(guān)重要的因素。因此,如何在現(xiàn)有研究的基礎(chǔ)上使得邏輯綜合工具能夠支持詳細的FPGA異構(gòu)邏輯單元庫,以便在邏輯綜合的流程過后反饋出更加詳盡的信息以供機器學習模型進行訓練是未來機器學習技術(shù)在FPGA EDA領(lǐng)域研究的一個重要的研究方向。類似地,針對FPGA布局、布線技術(shù),F(xiàn)PGA中包含有數(shù)量眾多的異構(gòu)邏輯單元,并且異構(gòu)邏輯單元的擺放位置相對于ASIC而言要更加的整齊,但這卻使得實際的布局、布線問題的約束條件變得更加的復雜多變,機器學習模型在訓練的過程中越來越難以收斂到一個最優(yōu)的解。因此,如何在考慮多種約束的條件下,實現(xiàn)基于機器學習技術(shù)的FPGA布局、布線問題的快速求解是未來需要重點關(guān)注的一個發(fā)展方向。
(3)目前,已有一些新興的機器學習模型或方法(點云或圖神經(jīng)網(wǎng)絡)被應用于專用集成電路(Application Specific Integrated Circuit, ASIC)EDA工具的設計與優(yōu)化流程中,相關(guān)EDA工具的性能得到了大幅度的提升,但現(xiàn)階段尚無將上述方法應用于FPGA EDA技術(shù)中的研究[13]。因此,將一些在ASIC EDA領(lǐng)域已被證明能夠提升EDA工具性能的新興的機器學習技術(shù)應用于FPGA EDA領(lǐng)域?qū)⑹俏磥砘跈C器學習的FPGA EDA技術(shù)的研究方向之一。
FPGA憑借其靈活的動態(tài)可重構(gòu)功能,在工業(yè)界和學術(shù)界得到了越來越多的關(guān)注,現(xiàn)已成為后摩爾時代各應用領(lǐng)域的首選研究對象,F(xiàn)PGA EDA技術(shù)在FPGA的應用開發(fā)過程中扮演著不可或缺的角色。機器學習技術(shù)被證明能夠顯著提升EDA工具的性能,并且在ASIC電子設計自動化領(lǐng)域得到了廣泛的應用。但機器學習技術(shù)在FPGA EDA領(lǐng)域的研究尚處于發(fā)展的初期,相關(guān)研究成果的數(shù)量也要明顯少于ASIC。為了機器學習技術(shù)能夠在FPGA EDA領(lǐng)域得到更好的應用,本文圍繞基于機器學習的FPGA EDA技術(shù),從機器學習在FPGA EDA流程中各不同階段的應用情況對相關(guān)的研究進展進行了分析與總結(jié)。在此基礎(chǔ)上,針對現(xiàn)有研究所存在的一些局限性,對未來發(fā)展趨勢進行了展望,以期對未來基于機器學習的FPGA EDA技術(shù)的發(fā)展具有一定的啟發(fā)意義。跟蹤并研究基于機器學習的FPGA EDA技術(shù)是后摩爾時代我國芯片行業(yè)實現(xiàn)自主可控的重大機遇。