摘 要: 提出一種基于島間隊列特征的動態(tài)電壓頻率縮放控制算法,使用島間隊列增長率和使用率來實現(xiàn)電壓島工作電壓/頻率的動態(tài)控制。該算法引入島間隊列增長率實現(xiàn)了簡單高效的負載預(yù)測,提高了片上通信穩(wěn)定性。仿真分析表明,該算法能夠更好地節(jié)能降耗。
關(guān)鍵詞: 片上網(wǎng)絡(luò); 電壓島; 動態(tài)電壓頻率縮放; 低能耗; 島間隊列
基于電壓島的動態(tài)電壓頻率縮放DVFS(Dynamic Voltage and Frequency Scaling)技術(shù)能夠大幅度地降低片上網(wǎng)絡(luò)NoC(Network on Chip)的能耗,從而受到廣泛關(guān)注[1]。在基于電壓島的NoC上,電壓和頻率的改變以整個電壓島為單位,DVFS設(shè)計需要全面考慮電壓島內(nèi)所有的IP核。與針對單個IP核的DVFS控制算法相比,基于電壓島的DVFS控制算法需要考慮的因素更多,設(shè)計也更為復(fù)雜。
目前,針對基于電壓島的DVFS控制算法的研究并不多。為了應(yīng)對工作負載的快速變化,參考文獻[2]提出一種基于全局電壓島輸入隊列使用率的反饋控制算法。該算法使用反饋控制,較好地應(yīng)對了工作負載的變化。而參考文獻[3]指出參考文獻[2]的控制算法邏輯資源消耗過高,缺乏全局控制,在參考文獻[2]的基礎(chǔ)上提出CF-g反饋控制算法,該算法利用片上的g個輸入隊列,實現(xiàn)了電壓島簡單、高效的工作電壓控制,達到了資源和效率的平衡,但是該算法并沒有大幅度降低片上邏輯資源的開銷。同時,參考文獻[2]和參考文獻[3]的算法存在的共同問題是只能控制電壓島的一個輸入隊列,導(dǎo)致整個系統(tǒng)的穩(wěn)定性較差。
針對上述問題,本文依據(jù)參考文獻[4]提出的輸入隊列包到達模型提出一種基于島間隊列特征的DVFS控制算法。該算法使用電壓島的所有輸入/輸出隊列參與電壓島的電壓/頻率控制,提高了片上通信的穩(wěn)定性,引入島間隊列使用率和增長率進行負載預(yù)測,提高了算法的效率。
1 算法設(shè)計
1.1 電壓島間隊列使用率的數(shù)學(xué)模型
在基于電壓島的NoC上,電壓島間的每個鏈路兩端各有一個緩存隊列,如圖1所示,可將這種緩存隊列簡稱為島間隊列[4]。電壓島VFI1是隊列q的輸入電壓島,電壓島VFI2是隊列q的輸出電壓島;相應(yīng)地,隊列q是電壓島VFI1的輸出隊列,也是電壓島VFI2的輸入隊列。設(shè)隊列q的平均包到達速率為f1λ,包服務(wù)速率為f2 μ,f1和f2是第k個控制周期內(nèi)(即[(k-1)T,kT))兩個電壓島的頻率,隊列q的使用率q(k)∈[0,1]可表示為:
島間隊列增長率直接指示了當(dāng)前隊列使用率的變化:當(dāng)p(k)>0時,增長率為正,這時使用率q(k)增加,即隊列中待處理的數(shù)據(jù)包增加;當(dāng)p(k)<0時,使用率負增長,此時的使用率減小,即隊列中待處理的數(shù)據(jù)包減少;當(dāng)p(k)=0時,表示當(dāng)前隊列使用率不變,該隊列處于平衡狀態(tài)。
1.2 算法思想描述
本文將電壓島的頻率和電壓劃分為幾個離散的等級,每次調(diào)整將增加或者降低一個等級。為了實現(xiàn)對工作負載的預(yù)測,引入島間隊列增長率。另外,島間隊列使用率準(zhǔn)確描述了當(dāng)前隊列的使用情況,指示了當(dāng)前的片上通信狀況。本算法綜合兩者的信息得到當(dāng)前島間隊列對電壓島的頻率需求(升頻、降頻)。
針對當(dāng)前的控制算法無法達到控制所有島間隊列的問題,通過全面考慮電壓島的輸入、輸出隊列對電壓島工作頻率的需求,綜合全局信息來配置電壓島的電壓和頻率。在保證通信穩(wěn)定的前提下盡量降低能耗,對于增頻請求和降頻請求,依據(jù)保證系統(tǒng)通信穩(wěn)定的原則,優(yōu)先處理增頻請求。
本算法采用全局控制方式,整體結(jié)構(gòu)如圖2所示。設(shè)控制周期為T,在第k個控制周期開始時,對各個電壓島的頻率和島間隊列的使用率進行采樣;然后將采樣信息輸入全局電壓/頻率控制模塊進行運算,得到當(dāng)前的島間隊列增長率;之后,由全局電壓/頻率控制模塊依據(jù)DVFS控制算法得出各個電壓島在下個周期的電壓和頻率;最后,由電壓/頻率生成模塊對電壓和頻率進行轉(zhuǎn)換,電壓和頻率轉(zhuǎn)換完成后,進入第k+1個周期。
電壓島的電壓和頻率采用離散值,算法每次將電壓島的工作頻率升高或者降低一個等級。
1.3 使用島間隊列的DVFS控制算法原理
對于由J個電壓島組成的NoC,假設(shè)電壓島i有m個輸入/輸出隊列。本算法根據(jù)電壓島的輸入/輸出隊列的使用率q(k)和增長率p(k)來控制電壓島的工作電壓,以實現(xiàn)DVFS控制??紤]到輸入/輸出隊列對電壓島工作頻率的不同需求,將兩者分開考慮,其對應(yīng)的控制請求可分為輸入隊列請求和輸出隊列請求。
本算法通過綜合q(k)和p(k)的信息控制電壓島的頻率,使p(k)在區(qū)間[0,1)之內(nèi)變化。其原理如下:
在圖 1中,對于隊列q,當(dāng)p(k)>0時,若保持電壓島VFI1的頻率f1和電壓島VFI2的頻率f2不變,則隊列的使用率q(k)會持續(xù)增加。這種情況下,當(dāng)q(k)較小時,無需考慮降低頻率f2或者增加頻率f1;當(dāng)q(k)較大時,為避免隊列擁塞(即防止q(k)=1),為其設(shè)置門限值ThH, 當(dāng)q(k)到達門限值ThH時,可以降低輸入電壓島的頻率f1或者增加輸出電壓島的頻率f2;當(dāng)使用率q(k)很小時,若降低隊列的輸出電壓島頻率f2,則增長率p(k)>0變大,加快了q(k)增加的速率。為了解決此時能否降低f2的問題,設(shè)置了q(k)的可降頻門限ThD。當(dāng)p(k)>0,q(k)<ThD時,可以降低隊列的輸出電壓島的頻率;當(dāng)增長率p(k)>0時,如果隊列的輸入電壓島的頻率f1將在下一個控制周期被提高,按照式(2)推斷增長率p(k)會變大,此時有必要降低輸出電壓島的頻率f2的門限,令這個門限值為ThI,本文稱之為輸出電壓島從動升頻門限。
當(dāng)p(k)<0時,若保持f1和f2不變,隊列的使用率q(k)會持續(xù)減小,此時不必考慮q(k)過高而導(dǎo)致隊列擁塞;當(dāng)使用率q(k)過低時,可以增加輸入電壓島的頻率f1或者降低輸出電壓島的頻率f2。為了降低能耗,本算法不主動增加輸入電壓島的頻率, 這時設(shè)置隊列使用率q(k)的門限ThL,當(dāng)q(k)到達此門限值時,降低輸出電壓島的頻率;若輸出電壓島的頻率f2降低,則增長率變大,使用率有可能會增加,此時,若q(k)∈[ThH,1],則不能降低輸出電壓島的頻率f2;若q(k)∈[ThL,ThH),則可以降低輸出電壓島頻率f2。
當(dāng)p(k)=0時,隊列的輸入輸出達到平衡,隊列對電壓島的頻率沒有升降請求。
本算法的控制方法如表1、表2所示。