趙 暉
(1.中國科學(xué)院上海微系統(tǒng)與信息技術(shù)研究所,上海200050;2.中國科學(xué)院大學(xué)北京100049;3.上??萍即髮W(xué)信息科學(xué)與技術(shù)學(xué)院,上海201210)
現(xiàn)場可編程門陣列,(Field-Programmable Gate Array,F(xiàn)PGA),作為芯片開發(fā)流程中的原型設(shè)計(jì),近幾年憑借靈活的可編程特性,在加速器、移動設(shè)備接口等直接應(yīng)用上也日益受到關(guān)注[1-3]。隨著芯片集成度的提高,以及移動應(yīng)用等平臺的特殊限制,F(xiàn)PGA應(yīng)用在功耗控制和功耗安全上的設(shè)計(jì)要求也越來越高,其中尤以動態(tài)功耗最為顯著[4,5,9]。在應(yīng)用設(shè)計(jì)階段,如何準(zhǔn)確又快速地滿足器件的功耗要求,成為設(shè)計(jì)人員需要面對的難題。
文獻(xiàn)[7]中提出了在傳統(tǒng)電路設(shè)計(jì)過程中,基于電路底層的信號仿真進(jìn)行動態(tài)功耗預(yù)測的方法。然而,目前的FPGA平臺仍然缺乏對應(yīng)的自動化功耗采樣框架以提高預(yù)測效率。由于仿真預(yù)測需要對電路信號進(jìn)行實(shí)時(shí)記錄、文件生成和功耗映射,在面對規(guī)模較大的應(yīng)用以及長時(shí)間功耗預(yù)測的需求時(shí),時(shí)間成本和文件存儲成本都過于高昂[9]。
為了改善這一問題,本研究根據(jù)文獻(xiàn)[7],首先提出了面向FPGA應(yīng)用設(shè)計(jì)的動態(tài)功耗自動化采樣框架,并在此基礎(chǔ)上提出了基于ARIMA的預(yù)測模型的建模方法。
FPGA的功耗主要分為靜態(tài)功耗和動態(tài)功耗兩部分。其中靜態(tài)功耗主要指的是邏輯門在未發(fā)生翻轉(zhuǎn)的情況下,晶體管漏電流引起的功耗消耗,與特定型號的FPGA產(chǎn)品有關(guān),在功耗仿真中一般作為常數(shù)。動態(tài)功耗指的是邏輯門在發(fā)生翻轉(zhuǎn)的過程中晶體管電容充放電引起的瞬時(shí)功耗[7-8,10]。在電路運(yùn)行的過程中,由于邏輯門翻轉(zhuǎn)的概率和數(shù)量存在較大的波動,因此不同時(shí)期的動態(tài)功耗存在較大的變化。隨著電路設(shè)計(jì)規(guī)模的增大和集成度的提高,動態(tài)功耗在總功耗所占的比重不斷上升,其不穩(wěn)定性對功耗設(shè)計(jì)安全的挑戰(zhàn)也愈發(fā)嚴(yán)峻。
文獻(xiàn)[10]提出了FPGA的功耗構(gòu)成模型以及動態(tài)功耗的門級模型:
式中Ptotal代表總功耗,Pstatic和Pdynamic分別為靜態(tài)功耗和動態(tài)功耗。C為晶體管電容,V為供電電壓,f為時(shí)鐘頻率,α為信號翻轉(zhuǎn)率(Toggle Rate)。
在傳統(tǒng)基于仿真的動態(tài)功耗預(yù)測方法中,功耗庫文件包含了寄存器級(Transistor Level)的動態(tài)功耗模型,包括C、V,f在內(nèi)的電路參數(shù)都映射在庫文件中[10-11]。由于α與電路內(nèi)部的眾多信號相關(guān),同時(shí)受電路控制信號、電路狀態(tài)、輸入數(shù)據(jù)、電路運(yùn)行時(shí)間等多方面因素的影響,為了得到精確的動態(tài)功耗數(shù)據(jù),電路需要通過冗長的功能仿真,才能得到特定時(shí)間段內(nèi)的信號翻轉(zhuǎn)情況。
仿真預(yù)測方法雖然同樣適用于目前的FPGA設(shè)計(jì),但是缺乏自動化功耗采樣的框架。由美國賽靈思(Xilinx)公司開發(fā)的FPGA仿真平臺——Vivado,支持旗下絕大多數(shù)FPGA產(chǎn)品的編碼、仿真、綜合和實(shí)現(xiàn)等一些列設(shè)計(jì)環(huán)節(jié)。在具體的設(shè)計(jì)流程中,Vivado支持以精確的FPGA功能仿真結(jié)果得到信號活動信息格式(Signal Activity Information Format,SAIF)文件,記錄下特定時(shí)間段內(nèi)內(nèi)部各個(gè)信號的翻轉(zhuǎn)率,再以SAIF文件映射到動態(tài)功耗庫,得到精確動態(tài)功耗數(shù)值的仿真預(yù)測法[7,12]。
其具體操作流程如下:
1)完成FPGA應(yīng)用的功能設(shè)計(jì),綜合和實(shí)現(xiàn);
2)創(chuàng)建SAIF文件記錄信號,信號數(shù)量越多,功耗值越準(zhǔn)確,相應(yīng)的SAIF文件存儲空間也越大;
3)設(shè)定仿真時(shí)間窗口(Time Window)并進(jìn)行后實(shí)現(xiàn)功能仿真(Post-implementation Functional Simulation);
4)將產(chǎn)生的SAIF文件映射到系統(tǒng)功耗庫,計(jì)算動態(tài)功耗。
雖然Vivado本身支持動態(tài)功耗的仿真預(yù)測,但是由于缺乏參數(shù)化、接口化、自動化的架構(gòu)特質(zhì),因而并不支持針對連續(xù)功耗變化的功耗采樣操作。為了進(jìn)一步提高動態(tài)功耗仿真預(yù)測的效率,本研究基于Tcl語言,結(jié)合MATLAB平臺的數(shù)據(jù)處理能力,搭建了FPGA動態(tài)功耗預(yù)測的跨平臺自動化框架,如圖1所示。在該框架內(nèi),功耗采樣的參數(shù)設(shè)置在Tcl文件內(nèi)完成,進(jìn)而控制Vivado執(zhí)行的,通過反復(fù)執(zhí)行一步功耗預(yù)測得到功耗報(bào)告文件,最后經(jīng)由鏈接的MATLAB程序處理得到整體的功耗采樣曲線。
圖1 跨平臺FPGA動態(tài)功耗自動化預(yù)測框架
在實(shí)際的動態(tài)功耗預(yù)測中,為了得到符合要求的動態(tài)功耗預(yù)測曲線,上訴的功耗采樣過程需要設(shè)置適宜的采樣周期,也就是采樣窗口。由于SAIF文件統(tǒng)計(jì)的是特定時(shí)間段內(nèi)的信號翻轉(zhuǎn)數(shù),根據(jù)定義,翻轉(zhuǎn)率可表示為:
式中N為目標(biāo)信號在時(shí)間窗口tw內(nèi)的翻轉(zhuǎn)數(shù),clk為時(shí)鐘周期。公式(4)說明,任一信號在采樣周期內(nèi)的翻轉(zhuǎn)次數(shù)不能超過時(shí)鐘翻轉(zhuǎn)的次數(shù)[7-8,11]。
在不同采樣周期下的動態(tài)功耗采樣曲線如圖2所示。從圖中可以發(fā)現(xiàn),當(dāng)采樣周期較小時(shí),雖然曲線的瞬時(shí)變化趨勢豐富,但是由于翻轉(zhuǎn)數(shù)偏小,導(dǎo)致曲線偏向離散化,功耗均值偏低;而當(dāng)采樣周期較大時(shí),動態(tài)功耗容易偏向平均功耗,導(dǎo)致曲線的瞬時(shí)變化趨勢丟失,觀察不到瞬時(shí)變化。因此,根據(jù)時(shí)鐘周期選擇合適的采樣周期,才能得到具有參考意義的動態(tài)功耗信息,通過實(shí)驗(yàn)論證,一般建議采樣窗口為時(shí)鐘周期clk的20~40倍。
圖2 不同采樣周期下的FPGA動態(tài)功耗變化曲線,時(shí)鐘周期為10 ns
基于仿真的動態(tài)功耗預(yù)測方法雖然能夠提供精確的動態(tài)功耗變化曲線,但是緩慢的采樣過程帶來的時(shí)間成本,以及較大的文件尺寸帶來的存儲壓力在大規(guī)模應(yīng)用和長時(shí)間預(yù)測面前都是不適宜的。針對這個(gè)問題,求和自回歸移動平均(Autoregressive integrated moving average,ARIMA)模型,能夠利用時(shí)間序列的連續(xù)性和相關(guān)性,建立短期預(yù)測模型,從而快速地對時(shí)間序列進(jìn)行預(yù)測[17]。
對于一隨機(jī)不平穩(wěn)時(shí)間序列X(t),其ARIMA(p,d,q)模型[13-14,16]如下:
式中,d代表序列差分后平穩(wěn)的差分次數(shù);B為延遲算子,Bxt=xt-1;p為自回歸延遲階數(shù);φi為第i階自回歸系數(shù);q為移動平均階數(shù);θj為第j階移動平均系數(shù);εt指白噪聲。
由于動態(tài)功耗本身即是時(shí)間序列,本研究根據(jù)FPGA應(yīng)用在上訴自動化跨平臺框架下得到的歷史動態(tài)功耗數(shù)據(jù),構(gòu)建了對應(yīng)的ARIMA模型。該模型不涉及底層電路,因而屬于抽象層次(Abstract Level)的模型,同時(shí)是對整個(gè)應(yīng)用系統(tǒng)的動態(tài)功耗建模,因此是一個(gè)系統(tǒng)級(System Level)的模型。該模型能夠跳過底層仿真,從而更加快速地對整個(gè)FPGA應(yīng)用系統(tǒng)的動態(tài)功耗做出預(yù)測。
文獻(xiàn)[14]給出了ARIMA建模的大致流程,如圖3所示。其中,為了避免p,q階數(shù)的定階操作受主觀人為影響,文中采用了基于最小信息量(An information criterion,AIC)準(zhǔn)則,在多個(gè)ARIMA模型選取合適模型的方法[14-15]。其中AIC在ARIMA模型中的計(jì)算方法如下:
式中n為序列大小,為模型極大似然函數(shù)值。選取的主要操作步驟如下:
1)選取p∈[1,P],q∈[1,Q];
2)構(gòu)建ARMA(p,q);
3)計(jì)算各個(gè)ARIMA模型的AIC;
4)篩選出AIC最小的模型。
當(dāng)篩選模型的擬合殘差通過白噪聲檢驗(yàn),ARIMA模型即構(gòu)建完成。在本研究中,對應(yīng)的ARIMA建模流程均通過MATLAB完成。
圖3 ARIMA建模流程
本研究基于如下硬件平臺和軟件平臺進(jìn)行實(shí)驗(yàn):Intel@Core(TM)i7-4790CPU3.60 GHz×8處理器;32 GB(31.3 GB可用)內(nèi)存;Ubuntu Kylin 16.04 LTS操作系統(tǒng);Vivado 2014.04;MATLAB R2016b。實(shí)驗(yàn)采用的FPGA應(yīng)用設(shè)計(jì)為Vivado自帶的小型CPU[12],對應(yīng)的FPGA硬件平臺為xc7k70tfbg676-2。
在時(shí)鐘周期為10 ns的情況下,采樣周期設(shè)為300 ns進(jìn)行動態(tài)功耗采樣,得到采樣數(shù)為1000的動態(tài)功耗數(shù)據(jù)集。選取其中的前70%的數(shù)據(jù)點(diǎn)作為ARIMA建模的訓(xùn)練集,后30%的數(shù)據(jù)點(diǎn)作為測試集,如圖4所示。
圖4 CPU設(shè)計(jì)動態(tài)功耗采樣曲線
構(gòu)建得到的ARIMA模型為ARIMA(9,1,11),其進(jìn)行1步預(yù)測的擬合曲線如圖5所示。為檢測預(yù)測精確度,本研究采用平均誤差進(jìn)行誤差分析,如式(9)所示。
圖5 ARIMA模型1步仿真預(yù)測結(jié)果對比
本研究將通過精確仿真得到的功耗采樣值作為標(biāo)準(zhǔn)值,通過計(jì)算,平均誤差僅為0.032,預(yù)測精度達(dá)到了96%。同時(shí),表1詳細(xì)對比了ARIMA模型預(yù)測和仿真預(yù)測對于動態(tài)功耗進(jìn)行1步預(yù)測的性能參數(shù)指標(biāo)。表中數(shù)據(jù)表明,ARIMA模型進(jìn)行1步預(yù)測的速度是仿真預(yù)測的279倍,存儲成本降低了263倍。通過分析,其根本原因在于ARIMA模型是經(jīng)驗(yàn)?zāi)P?,跳過了冗長的電路仿真和功耗映射階段。
表1 動態(tài)功耗1步預(yù)測參數(shù)對比
本研究針對FPGA應(yīng)用在設(shè)計(jì)過程中的動態(tài)功耗仿真需求和預(yù)測需求,提出并實(shí)現(xiàn)了一種基于ARIMA模型的系統(tǒng)級功耗預(yù)測建??蚣?。該框架實(shí)現(xiàn)了跨平臺的自動化動態(tài)功耗采樣,并在采樣數(shù)據(jù)的基礎(chǔ)上建立了系統(tǒng)級、抽象層次的快速預(yù)測模型。該模型能在保證足夠預(yù)測精度的前提下,極大地降低短期動態(tài)功耗預(yù)測所需的時(shí)間成本和存儲成本,從而在大規(guī)模FPGA應(yīng)用設(shè)計(jì)和長時(shí)間功耗仿真的情況下,提高功耗預(yù)測效率,進(jìn)一步縮短應(yīng)用開發(fā)周期。