李亞光
(1.中國科學(xué)院上海微系統(tǒng)與信息技術(shù)研究所,上海200050;2.上??萍即髮W(xué)信息與技術(shù)學(xué)院,上海201210;3.中國科學(xué)院大學(xué)北京100049)
隨著現(xiàn)代CPU和SOC的集成度的增長,功耗密度已經(jīng)成為了一個(gè)主要問題[1]。另一方面,為了降低功耗密度過大的問題,降低CPU供電電壓已經(jīng)成為了不可避免的趨勢[2-3]。但是同時(shí),由于低電壓的趨勢,晶體管安全工作的閾值電壓范圍開始變小[4]。這將導(dǎo)致潛在的電壓噪聲很有可能使晶體管工作在安全工作的閾值電壓以下,從而引起CPU/功能模塊的異常工作,這種情況被稱為電壓緊急情況(Voltage Emergency)[5-7]。因此,低電壓的趨勢使得,CPU電壓噪聲預(yù)測變的尤為重要。
傳統(tǒng)的電壓噪聲預(yù)測,首先需要建立精細(xì)的CPU供電網(wǎng)絡(luò)物理模型,然后進(jìn)行RTL層面仿真。但是整個(gè)過程不僅涉及到復(fù)雜的物理建模,RTL層面仿真時(shí)計(jì)算復(fù)雜度也大[8]。另外,最近有一些基于片上電壓傳感器的電壓噪聲預(yù)測方法[9]:利用訓(xùn)練數(shù)據(jù)中體現(xiàn)出來的數(shù)據(jù)相關(guān)性的特性,提出了一種基于貝葉斯方法進(jìn)行片上電壓噪聲預(yù)測的方法[5]。利用了CPU供電網(wǎng)絡(luò)物理相關(guān)性的特性,提出了一種基于Group-lasso和SVM的機(jī)器學(xué)習(xí)式的電壓噪聲預(yù)測方法。這兩種方法都基于片上電壓傳感器和電壓噪聲數(shù)據(jù)的相關(guān)性進(jìn)行了CPU電壓噪聲的電壓預(yù)測。
與此同時(shí),神經(jīng)網(wǎng)絡(luò)近些年來在各個(gè)領(lǐng)域發(fā)揮著巨大的作用[10],例如在模式識(shí)別[11],自然語言處理[12-13]等領(lǐng)域。通過采集一定量的訓(xùn)練集和調(diào)節(jié)網(wǎng)絡(luò)的參數(shù)結(jié)構(gòu),神經(jīng)網(wǎng)絡(luò),如BP神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)等,就能夠有效的學(xué)習(xí)到數(shù)據(jù)中潛在的模型,從而進(jìn)行相應(yīng)功能的預(yù)測。本文探討了利用神經(jīng)網(wǎng)絡(luò)進(jìn)行CPU電壓噪聲預(yù)測的潛在可能性。區(qū)別于傳統(tǒng)的方法,該方法一方面避免了CPU供電網(wǎng)絡(luò)精細(xì)的物理建模過程,另一方面也減少傳統(tǒng)RTL仿真的復(fù)雜度。區(qū)別于[5,9]本文使用的方法,并不需要利用片上電壓傳感器和電壓噪聲數(shù)據(jù)的相關(guān)性,而是利用神經(jīng)網(wǎng)絡(luò)的方式探討了CPU功能模塊功耗和CPU電壓噪聲預(yù)測之間的潛在可能性。
CPU的供電網(wǎng)絡(luò)可以被建模成由RCL(電阻電容電阻)組成的網(wǎng)絡(luò)[8],通常分為片下供電網(wǎng)絡(luò)和片上供電網(wǎng)絡(luò),如圖1所示。其中片下供電網(wǎng)絡(luò)包括由PC板和封裝引入的RCL成分。片上供電網(wǎng)絡(luò)包括由封裝與芯片互連和芯片供電網(wǎng)格引入的RCL成分。完成片上和片下的供電網(wǎng)絡(luò)建模和調(diào)參之后,傳統(tǒng)的電壓噪聲分析通過RTL層面仿真得到實(shí)際的電壓噪聲。但是事實(shí)上,在構(gòu)建CPU的供電網(wǎng)絡(luò)時(shí),不僅需要構(gòu)建相應(yīng)的RCL結(jié)構(gòu)(見圖1),也需要反復(fù)調(diào)節(jié)參數(shù),其模型才足夠精確。另外在進(jìn)行RTL層面仿真時(shí),由于需要進(jìn)行精細(xì)的仿真,因此其耗時(shí)也較大。
但是事實(shí)上,對于給定的CPU供電網(wǎng)絡(luò),其RCL參數(shù)都是特定的,事實(shí)上我們可以嘗試?yán)蒙窠?jīng)網(wǎng)絡(luò)來學(xué)習(xí)給定的CPU供電網(wǎng)絡(luò)的RCL特性,從而避免CPU供電網(wǎng)路的復(fù)雜的物理建模過程。另一方面,如果神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)習(xí)到了給CPU供電網(wǎng)絡(luò)的RCL特性,那么我們就可以通過給定一定的輸入向量,讓其進(jìn)行CPU電壓噪聲的預(yù)測。具體來講,我們可以通過合理地構(gòu)建訓(xùn)練集(訓(xùn)練特征集和訓(xùn)練目標(biāo)集),讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)CPU供電網(wǎng)絡(luò)的特性,從而進(jìn)行CPU供電網(wǎng)絡(luò)的電壓噪聲預(yù)測。
圖1 CPU的供電網(wǎng)絡(luò)
通過對CPU由于CPU的供電網(wǎng)絡(luò)只包含RCL成分,因此CPU/功能模塊的瞬時(shí)功耗對CPU的供電網(wǎng)絡(luò)的影響應(yīng)有如下兩個(gè)特點(diǎn):
1)持續(xù)性:由于CPU供電網(wǎng)路中容性和感性器件(電容和電感)的存在,瞬時(shí)功耗引起的電壓噪聲不僅不會(huì)隨著瞬時(shí)功耗的消失而立即消失,反而會(huì)持續(xù)一段時(shí)間。所以過去的瞬時(shí)功耗對當(dāng)前的電壓噪聲有影響。
2)有限性:過去某個(gè)瞬時(shí)功耗對電壓噪聲的影響不會(huì)影響未來所有的電壓噪聲,如果時(shí)間間隔足夠久,那么其影響應(yīng)當(dāng)降為零。所以雖然過去的瞬時(shí)功耗對當(dāng)前的電壓噪聲有影響,但是并不是所有的過去瞬時(shí)功耗都對當(dāng)前的電壓噪聲有影響。所以可以利用有限個(gè)過去和當(dāng)前的瞬時(shí)功耗去預(yù)測當(dāng)前的電壓噪聲。
基于對CPU電壓傳遞網(wǎng)絡(luò)特性的分析,即瞬時(shí)功耗對于電壓噪聲影響的持續(xù)性和有限性,我們可以將有限個(gè)過去和當(dāng)前的瞬時(shí)功耗作為一個(gè)訓(xùn)練特征樣本,將當(dāng)前的電壓噪聲作為相應(yīng)的訓(xùn)練目標(biāo)樣本,同時(shí)采集多組訓(xùn)練數(shù)據(jù),以便于神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)CPU供電網(wǎng)絡(luò)的特性,從而進(jìn)行電壓噪聲預(yù)測。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)一般包含輸入層,隱含層和輸出層,如圖2所示。本文根據(jù)部分1的分析,構(gòu)建了用于適合電壓噪聲預(yù)測的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):由于當(dāng)前的電壓噪聲不僅與當(dāng)前的負(fù)載有關(guān),還有過去的負(fù)載有關(guān),所以本文嘗試了4層的BP神經(jīng)網(wǎng)絡(luò):輸入層為N個(gè)節(jié)點(diǎn),表示過去和當(dāng)前的N個(gè)功耗;第一層隱含層為2N個(gè)節(jié)點(diǎn);第二層隱含層為N個(gè)節(jié)點(diǎn);輸出層為1個(gè)節(jié)點(diǎn),表示需要預(yù)測的當(dāng)前電壓噪聲。顯然模型的精度會(huì)受到N的影響,關(guān)于N的取值將在實(shí)驗(yàn)部分討論。
圖2 BP神經(jīng)網(wǎng)絡(luò)
本文首先通過軟件仿真獲得原始的電壓噪聲數(shù)據(jù),然后將原始數(shù)據(jù)轉(zhuǎn)換成用于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的訓(xùn)練集。
圖3 設(shè)計(jì)的芯片和片上供電網(wǎng)絡(luò)
原始數(shù)據(jù)獲取包括系統(tǒng)層面的仿真,CPU/功能模塊的功耗仿真和RTL級Spice電壓噪聲仿真。第一步:本文通過系統(tǒng)級Gem5[14]仿真軟件,以CPU2006[15]中部分程序作為測試程序,獲得了程序運(yùn)行時(shí)在X86架構(gòu)下CPU的系統(tǒng)層面參數(shù)。Gem5詳細(xì)配置如表1所示。第二步,將系統(tǒng)運(yùn)行時(shí)的系統(tǒng)層面參數(shù)作為輸入,利用McPAT[16]軟件仿真,獲得了CPU/功能模塊的實(shí)際功耗。第三步,根據(jù)得到的實(shí)際功耗,利用由[17]中修改的電壓供電網(wǎng)絡(luò),通過Spice仿真獲得了CPU電壓供電網(wǎng)絡(luò)的實(shí)際電壓噪聲,仿真間隔為10 ns。軟件平臺(tái)基于Ubuntu,i7-4790U,32G。本文仿真的CPU共包含24個(gè)功能模塊,總面積為17.91 mm2,如圖3中左圖所示。片上的供電網(wǎng)絡(luò)為32 nm工藝下的5層供電網(wǎng)格,如圖3中右圖所示。實(shí)驗(yàn)中選取了部分具有代表性的供電網(wǎng)格點(diǎn)的功耗值作為訓(xùn)練特征集和Spice仿真電壓作為訓(xùn)練目標(biāo)集,并以此來完成BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和預(yù)測。
表1 Gem5配置文件
本文將原始數(shù)據(jù)獲取部分第二步中獲得的CPU/功能模塊的過去和當(dāng)前的N個(gè)功耗數(shù)據(jù)作為一個(gè)訓(xùn)練特征樣本,并且取M個(gè)樣本數(shù)據(jù)作為一個(gè)訓(xùn)練特征集,如公式(1)中X矩陣,其中每一行代表一個(gè)訓(xùn)練樣本,共M行。為了加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度,我們將第三步中獲得電壓噪聲,以1 μs為一個(gè)時(shí)間間隔(即Spice中仿真數(shù)據(jù)每100個(gè)點(diǎn)為一個(gè)時(shí)間間隔),取該時(shí)間間隔中,電壓噪聲最大點(diǎn)作為一個(gè)電壓噪聲的訓(xùn)練目標(biāo),即該時(shí)間間隔中最壞情況的電壓噪聲作為訓(xùn)練目標(biāo),如圖4所示。并取M個(gè)與相應(yīng)訓(xùn)練特征對應(yīng)的訓(xùn)練目標(biāo),如公式(2)所示,其中電壓噪聲定義為供電電壓與實(shí)際電壓的差值。本文在Matlab中實(shí)現(xiàn)了用于電壓噪聲預(yù)測的BP神經(jīng)網(wǎng)絡(luò)。為了避免過擬合,本文用在實(shí)驗(yàn)時(shí),采用了5-fold交叉驗(yàn)證。
圖4 電壓噪聲與訓(xùn)練特征的產(chǎn)生
圖5 訓(xùn)練結(jié)果樣本
圖5顯示了神經(jīng)網(wǎng)絡(luò)預(yù)測所得的部分預(yù)測結(jié)果樣本。從圖片中可以發(fā)現(xiàn),隨著N的增加預(yù)測電壓曲線與實(shí)際電壓曲線越來越接近。
圖6展示了基于神經(jīng)網(wǎng)絡(luò)模型電壓噪聲預(yù)測的準(zhǔn)確度。當(dāng)N=1時(shí),電壓噪聲預(yù)測的絕對誤差為16.9 mV,相對誤差為10.3%。隨著N的逐漸增加,模型的準(zhǔn)確度有所增加,但是當(dāng)N大于10之后,模型的準(zhǔn)確度的增加程度變得平緩。當(dāng)N=15時(shí),電壓噪聲預(yù)測的絕對誤差(見公式(3),其中k表示用于驗(yàn)證的數(shù)據(jù)集的樣本數(shù)目)為3.9 mV,相對誤差(見公式(4))為5.5%。可見,增加N的數(shù)量確實(shí)對于CPU的電壓噪聲預(yù)測有幫助,并且利用BP神經(jīng)網(wǎng)絡(luò)能夠準(zhǔn)確的完成CPU的電壓噪聲預(yù)測。
圖6 模型準(zhǔn)確度
低電壓趨勢,使得由電壓噪聲可能造成的電壓緊急情況變的尤為突出,因此CPU電壓噪聲預(yù)測很重要。與傳統(tǒng)的方法相比,本文中提到的基于BP神經(jīng)網(wǎng)絡(luò)的電壓噪聲預(yù)測方法,一方面不僅可以避免精細(xì)的物理建模過程,另一方面還可以減少RTL層面仿真的復(fù)雜度。數(shù)據(jù)實(shí)驗(yàn)結(jié)果表明,BP神經(jīng)網(wǎng)絡(luò)完成的電壓噪聲預(yù)測能夠達(dá)到絕對誤差為3.9 mV,相對誤差為5.5%的準(zhǔn)確預(yù)測。