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