李 康 師瑞之 陳嘉偉 史江義 潘偉濤 王 杰
(西安電子科技大學 西安 710000)
數字集成電路的集成密度和計算復雜性遵循摩爾定律的不斷發展。隨著工藝的不斷進步,由于晶體管電壓閾值限制電源電壓無法繼續降低,同時短溝道效應導致亞閾值特性退化、泄漏電流增大兩個主要原因,功耗已成為電路設計的關鍵性能目標之一[1,2]。對于數字電路設計的功耗分析,目前最主流解決方案是使用PTPX (synopsys PrimeTime PX)工具,在邏輯綜合或者物理實現環節,其將網表和網表的仿真波形作為輸入工具,基于標準單元工藝庫中的參數進行計算得到高精度的功耗分析結果。PTPX工具的功耗預估有著高精確度,但是,運行時間長,且僅面向已經生成網表的邏輯綜合或者物理實現階段。當前,數字芯片對早期設計規劃(Early Design Planning, EDP)有迫切需求,若在寄存器傳輸級(Register Transfer Level, RTL)設計階段就可準確預測芯片的功耗,則可在芯片設計早期調整和修復設計中不合理的架構,降低芯片功耗。因此,面向RTL階段的功耗預估方法緊迫且重要[3]。
針對上述問題,目前,學術界嘗試利用機器學習技術來提高功耗預測的準確性和降低流程的復雜性。Dhotre等人[4]使用多層感知機(Multi-Layer Perceptron, MLP)實現了針對電路模塊的功耗預測。Nasser等人[5]使用了活動因子和靜態概率作為功耗特征,實現了電路工作頻率對功耗的影響的評估。文獻[4,5]雖實現了功耗的準確預估,但由于MLP僅處理向量特征,面對大規模電路的大特征量時計算成本過高,僅針對小規模電路模塊進行原理性驗證。Zhou等人[6]提出將寄存器信號進行3通道翻轉作為特征,并通過使用卷積神經網絡(Convolutional Neural Network, CNN)構建功耗模型得精確的功耗預估結果,但由于并未對電路的信號特征進行篩選,面對大規模電路時,模型需要較長運行時間。Kim等人[7]針對開源處理器Rocket提出了利用基于Lasso懲罰項的正則化方法實現信號特征篩選,較好地提升了針對RTL級電路功耗預測性能。Xie等人[8]針對Arm Cortex-A77微處理器提出了基于極小化極大凸懲罰(Minimax Concave Penalty,MCP)的信號選擇方法,實現了更加精確的功耗預估。但文獻[7,8]都是針對處理器的指令進行功耗預估,且并未考慮工業級芯片的布局布線對于功耗的影響,與芯片的實際功耗值存在一定誤差。
為了彌補上述缺陷,本文提出一種面向千萬門級ASIC電路的RTL級功耗預估方法,基于機器學習方法建立了其功耗分析模型,利用信號篩選策略解決了大信號特征輸入數量對功耗預測模型的性能影響,并通過對sign-off級功耗數據的時序預處理技術得到功耗模型的標簽數據,有效提升了模型預測的精度。本文的主要貢獻如下:
(1) 通過時序對準方法對仿真波形數據進行校正,解決了sign-off級功耗與RTL級仿真波形之間的時序偏差問題,從而可以利用物理設計反標的功耗結果作為RTL級電路功耗模型的標簽數據,得到更準確后仿功耗預測結果。
(2) 利用正則化方法進行功耗相關性評價的特征信號篩選,使用基于平滑剪切絕對偏差懲罰函數(Smoothly Clipped Absolute Deviation, SCAD)懲罰項的正則化方法對輸入特征信號進行篩選處理,最終得到與功耗相關度更大的關鍵特征信號,顯著提升了功耗預測的效率。
(3) 提出一個僅擁有兩個卷積層和1個全連接層的淺層卷積神經網絡模型,本模型在進行功耗訓練與推理時,可以學習相鄰位置和相鄰時間上的信號活動與功耗的相關性信息,在實現高精度預測的同時,降低部署開銷,使訓練速度得到顯著提高。
(4) 上述方法在開源數據集、28 nm工藝節點的3×107門級工業級網絡處理器芯片電路上進行了測試,最終實現了誤差小于4.5%的跨場景功耗波形預測,驗證了所提出方法的有效性。
圖1給出了功耗預估方法流程,主要包括訓練數據獲取、功耗建模、功耗預測3個部分。

圖1 功耗預估方法示意圖
首先通過電路仿真獲取訓練數據,包括RTL電路仿真生成信號波形文件(.vcd/.fsdb文件),從中提取特征數據,即神經網絡模型的輸入數據;以及對于RTL電路邏輯綜合、布局布線后生成版圖級網表,仿真生成VCD文件與PTPX的功耗曲線文件(.out文件),從中獲取標簽數據,即用于校正模型的功耗數據。
在獲得仿真的信號活動數據以及功耗數據后,需要對數據進行處理。首先對信號的仿真波形進行特征提取;獲得信號特征后,進行特征與標簽的匹配對齊;之后進行特征篩選,減少負樣本數量,篩選出關鍵信號,增強特征與標簽的關系;再對最終的數據集進行模型構建,實現多周期的輸入數據合并等。
獲得處理后的特征與標簽數據后,建立卷積神經網絡模型,包括兩層卷積層以及1層全連接層,進行訓練,獲得功耗模型。
最后,在功耗預測階段,對RTL電路提取關鍵信號的仿真波形,通過功耗模型快速地得到高精度功耗預估結果。
2.2.1 數據集特征構建
功耗建模的特征數據來自VCD文件[9]。在特征采樣過程中,信號的仿真結果將按照仿真時間順序被分割成多個時間窗口。本文采取漢明距離作為信號數據的特征,其計算公式為
其中,Xi與Yi為信號值,N為信號位寬。漢明距離是功耗建模中最常用的特征[10],計算簡單,僅需異或操作,也可以較好表征信號的翻轉次數。
2.2.2 基于懲罰項的特征選擇方法
本文使用機器學習中的特征選擇方法處理數據集,實現基于電路仿真的信號值的信號篩選。去除負樣本,即部分干擾信號,如無翻轉信號,或是活動較少的信號;同時篩選出對于功耗的關鍵信號,增強特征與標簽之間的關系。
采取基于SCAD懲罰項的特征選擇法,SCAD懲罰項[11]即平滑截斷絕對偏差懲罰項。在回歸模型的損失函數中加入懲罰項,使得函數權重在訓練過程中具有偏向0的趨勢。模型訓練完成后,保留權重不為0的特征作為特征選擇結果。其計算為
其中,θ是需要迭代的參數向量,t代表迭代次數,η代表學習率,J(θ)為損失誤差。
在回歸模型的原有優化器中加入懲罰項后的損失函數計算為
其中,P(θ)為 懲罰項,P(θ)的計算為
其中,參數向量θ的 大小為n×1,λ表示正則化系數。
同時,基于相同方法有其他不同的懲罰項,包括L1懲罰項[7]、L2懲罰項[12]、MCP懲罰項[8]等。L1, MCP, SCAD 3個懲罰項的對比如圖2所示,其中γ=3,λ=1。L1懲罰項對任何情況下的參數都進行恒定量的懲罰,因此為了實現信號的有效篩選,需要設定非常大的λ,而其余的信號的權重也會受到過多的懲罰[8];MCP與SCAD懲罰項在保持了對較小的權重信號的懲罰力度的同時,對于權重大的信號影響較小,其中,SCAD懲罰項保留了區間λ ≤x ≤λr內的懲罰率的1階微分,保證了對于對小權重信號足夠的懲罰力度。

圖2 Lasso, MCP和SCAD的懲罰項示意圖
2.3.1 信號特征與后仿功耗標簽的對齊方法
使用物理設計反提后的PTPX分析結果可以得到更加精確的功耗波形。該信號仿真和功耗波形的仿真時間是一致的。但是,由于缺失連線延時等信息,RTL級的仿真時間無法與后仿的功耗波形保持一致[13]。如果不進行數據對齊,用于訓練功耗模型的數據集將是錯誤的。這種錯誤的數據集將無法訓練出正確的功耗模型。
首先對兩組數據進行最大最小歸一化處理,計算方法為
本文中,使用一種常見的信號處理方法——最小均方匹配方法[14]對信號翻轉特征進行處理,使信號特征和功耗在均方根誤差意義下最接近。最小均方匹配方法通常用于預處理步驟,以提高信號的質量和準確性。通過平移波形,同時計算其與目標波形的均方根誤差,尋找最小誤差最小值,得到最佳匹配結果。左移(或右移)的最大限度為3個樣本數,在單周期采樣的情況下,為3周期。均方誤差(Mean Squared Error, MSE)的計算公式為
其中,MSE表示均方誤差,N表示樣本數量,Xi,Yi分別表示原始信號(即信號特征)與目標信號(即功耗標簽)的第i個樣本值。
圖3為網絡處理器中的分組處理與調度模塊的漢明距離與功耗標簽在最小均方匹配前后的對比,通過對比漢明距離和功耗波形的方法進行數據對齊,保證了數據的正確性和有效性。

圖3 數據對齊前后漢明距離與功耗值局部放大圖
2.3.2 數據集基于時間相關性的特征構建
完成特征選擇后,構建功耗模型所需要的數據集,圖4給出了數據集構建示意。每列代表著按照仿真時間排序的時間窗口,共有T個時間窗口;S1,S2,...,Sn代表著電路中的信號;表中的數值代表則對應時間窗口下各個信號的特征值,即漢明距離;P指對應時間窗口下電路的實際功耗。

圖4 數據集構建示意圖
該數據集的每列都包含著一組信號特征和相對應的功耗標簽。在正常的監督式神經網絡模型中,可以對訓練樣本進行隨機采樣,使用該數據集的每行作為一個訓練樣本對模型進行訓練。但是這種訓練樣本丟失了時間關系,模型的功耗預測每次只根據1個時間窗口下的信號情況。而在實際功耗分析中,電路在1個時間窗口內的功耗波動與上個時間段的活動是存在相關性的。
為保留時間上的相關性,采用多輸入單輸出的神經網絡形式,即使用多組特征數據預測1個功耗標簽。如圖4(b)展示了3輸入單輸出的數據集。以T1, T2, T33個時間窗口為例,前3個時間窗口的特征數據被當作一組輸入數據,用來預測第2時間窗口的功耗值,功耗模型可以觀測到第2時間窗口的前后時間窗口的特征情況,保留樣本的時間相關性。
多輸入單輸出的數據使得模型的輸入從原本的1維變成了2維。便于卷積神經網絡的使用。本文構建了一種基于卷積神經網絡的功耗模型,圖5給出了網絡具體結構,模型由兩層卷積層和1層全連接層構成。

圖5 卷積神經網絡模型示意圖
模型輸入層為n×m的 2維矩陣,其中n是信號特征的數量,m是時間窗口的數量。數據進入第1個卷積層 C1后會被縱向卷積。再經過ReLU激活函數,進入第2個卷積層 C2。 會對數據進行橫向的卷積。然后,數據會再次經過ReLU激活函數,并且會被展平成1維數據。最后,數據通過全連接層,得到輸出P′,即預測的功耗值。
在該模型中,第1個卷積層 C1只進行縱向卷積,這是因為特征提取過程是順序執行的,相鄰的信號特征大概率是在一個電路模塊中,即特征與特征之間存在著一定相關性。因此,使用縱向的卷積核對數據進行處理,學習信號間的部分結構關系。第2個卷積層 C2只進行橫向卷積。該卷積層學習信號特征時間上的相關性。由于功耗預測是一種回歸問題,所以全連接層不設置激活函數,避免激活函數對預測值的約束。
本實驗構建了兩組電路規模不同的數據集,其中之一按照目前其他功耗預估方法的實驗,選用功能相同或是規模相似的電路,如表1所示,包括浮點加法器,高級加密標準(Advanced Encryption Standard, AES)算法電路,以太網媒體訪問控制(Media Access Control, MAC)器,簡單的第5代精簡指令集(Reduced Instruction Set Computer Version 5, RISC-V)電路等構建數據集,避免電路結構化對于模型的功耗預估結果的誤差影響。另外一組使用工業級的28 nm網絡處理器芯片的各個模塊以及整體電路系統構建,進行方法在更大規模電路的有效性驗證。

表1 神經網絡模型的測試用例
網絡處理器芯片采用了聯電28 nm工藝,設計規模約3×107門。包括幀處理模塊、調度模塊、crossbar總線模塊、插入捕獲指令模塊、配置模塊等。使用電路的物理設計反提后的PTPX分析結果作為功耗標簽。
對于模型對電路測試集的功耗預估結果,本文選取平均絕對百分比誤差(Mean Absolute Percentage Error, MAPE)以及標準化均方根誤差(Normalized Root-Mean-Squared-Error, NRMSE)作為評估指標。MAPE的計算公式為
其中,n為樣本數,At為實際值,Ft為預測值。NRMSE的計算公式為
其中,n為樣本數,At為實際值,Ft為預測值,為實際值平均值。
本實驗的模型算法由tensorflow框架以及scikitlearn庫搭建,其中scikit-learn庫提供了模型中的特征篩選方法和結果評估方法。實驗運行的硬件為Intel(R) i5-12600F @4.20 GHz, Intel UHD Graphics 770和32 GB運行內存。
針對常見的小規模電路測試集,除了本文所提出的卷積神經網絡(Convolutional Neural Network,CNN)模型外,還構建了其他多個神經網絡功耗模型作為對比,包括逆傳播(Back Propagation, BP)神經網絡模型[15]、ResNet18模型[16],以及長短時記憶網絡(Long Short Term Memory, LSTM)模型[17]。
針對工業級的網絡處理器芯片,除了本文所提出的基于SCAD懲罰項的特征篩選方案外,還實現了其他多個特征篩選方案,包括線性相關性F檢測(Corr.)[18]、遞歸特征消除法(Recursive Feature Elimination, RFE)[19]、隨機森林法(Random Forst, RF)[20]等。對各個信號篩選方法對模型精確度的影響進行對比后,再將信號篩選后的各個機器學習模型的功耗預估結果進行對比。
實驗采用5折交叉驗證的方法,將數據集劃分為5份后,每份輪流作為測試集,對模型進行驗證。
表2給出了不同模型對于電路的預估誤差結果MAPE,表3給出了不同模型對電路的訓練耗時。本文提出的CNN模型的預估結果的平均誤差為1.79%,僅次于LSTM模型的1.69%。但CNN模型對所有電路的訓練總耗時為6.03 s,訓練速度是LSTM的80倍,在面對大規模電路的功耗預估場景時,這一優勢更加明顯。

表2 不同模型的預測誤差(MAPE)(%)

表3 不同模型訓練耗時(s)
同類型的文獻[6] PRIMAL (PoweR Inference using MAchine Learning)所提出的CNN模型的規模更大。其實驗環境與實驗對象與本文不同,本文將PRIMAL的特征構建方法與CNN模型應用在了測試集上,以各自環境下的線性回歸模型訓練耗時為基準進行對比。預估結果的誤差方面,本文的CNN模型與PRIMAL的模型的預測結果大致相當,均維持在5%以內;但本文的CNN模型的訓練速度明顯優于PRIMAL模型,建模速度快約10倍。
3.5.1 時序對齊結果對比
對于NP各模塊進行時序對齊方法的功耗模型預估結果如圖6所示,對于所有模塊的預估誤差均有一定程度的下降,這說明功耗標簽與信號特征之間的時序誤差對模型的準確度的影響較大,驗證了時序對齊方法的必要性。

圖6 數據對齊前后CNN模型預估誤差對比
3.5.2 信號篩選結果對比
圖7給出了對于網絡處理器電路各個模塊,使用線性回歸、隨機森林、支持向量機、懲罰項添加等特征篩選方法后,進行BP神經網絡模型建模的功耗預估誤差結果。RFE的分類器模型選用的是回歸模型;L1的正則化系數為0.05;L2的正則化系數為7;MCP與SCAD的懲罰系數分別設置為γ=3,λ=1;將重要性評分最大值的0.1倍作為篩選目標,對重要性評分較大的特征進行篩選。

圖7 不同特征篩選方法后BP模型的預估誤差對比
各個篩選方法對于網絡處理器電路所有模塊的運行時間對比如圖8所示。RFE方法所篩選的特征構建的模型雖然具有最小的誤差結果,然而,RFE和RF方法的耗時情況非常嚴重,以inst_fp_and_sch_top模塊的特征選擇為例,RFE和RF特征選擇的耗時分別為156 min和8 min,這說明在功耗預估角度,RFE與RF方法無法處理大規模電路的大量信號特征。

圖8 特征篩選方法速度對比
SCAD懲罰項與MCP懲罰項的運行時間基本相同,與線性相關性檢測、Lasso懲罰項相比,這兩種方法的運行時間都較長,但是均可以在160 s內對4個模塊完成特征篩選。使用SCAD懲罰項方法篩選結果構建的神經網絡模型的預估誤差結果與其他方法相比,誤差較小,并且保證了有效的運行時間。
3.5.3 功耗預估結果對比
圖9(a)給出了對于網絡處理器電路,采用SCAD懲罰項特征篩選方法,構建不同模型的功耗預估誤差。圖9(b)則給出了電路整體的預估誤差。對于系統的功耗預測誤差均保持在3%以內,這證明了線性功耗疊加方案的可行性。對比各模塊的預估誤差與電路整體系統誤差,可以看出電路整體的電路功耗預估誤差較低,這是因為不同功能模塊在電路整體系統的占比不同,對大功耗占比的模塊實現高精度的功耗預估,可以保證電路整體系統功耗預估的高預測精度。

圖9 網絡處理器不同模型預估誤差對比
3.5.4 模型遷移結果對比
使用網絡處理器的5個場景進行場景交叉驗證本文的功耗預估方法的場景遷移能力。表4給出了不同場景的驗證結果。其中,動作測試的場景系統誤差最大,為4.41%。這是由于動作測試場景下,測試了所有的微碼處理器模塊。但在其他場景下,部分微碼處理器模塊的功耗波動較小。

表4 場景交叉驗證結果
實驗結果表明在場景的交叉驗證下的系統誤差仍然可用維持在4.5%以內。說明這種功耗預估方法是可行的。另一方面,建模耗時加上預測耗時的總體時間,都被控制在13 min(780 s)以內,這遠遠快于動則數個小時或者數天的傳統功耗分析流程。
本文提出了針對RTL級電路的功耗預估方法,包括一個2層卷積神經網絡功耗模型,本模型具有快速建模、快速預測和高精度的優點;以及采用SCAD懲罰項特征選擇方法對RTL級電路的功耗建模進行了特征篩選;并使用該方法對ASIC芯片網絡處理器的各個模塊進行了功耗建模。實現了平均誤差為1.71%的RTL級周期精確的功耗預測。在網絡處理器的11k時鐘周期中,本文提出的功耗預測方法僅需要1.2 s,而Synopsys PTPX工具需要4 h以上。今后的工作將圍繞著CNN模型在電路功能仿真級模型的應用,以及CNN模型的跨電路遷移能力展開。