石輝,黃朝兵
(武漢理工大學(xué)信息工程學(xué)院,武漢430070)
隨著晶體管的技術(shù)的不斷發(fā)展,它的尺寸和提供的電壓都越來越小,這使得漏電的現(xiàn)象越來越嚴重,在所有種類的漏電中,靜態(tài)能量的損耗占了漏電中的大部分。例如,當65 納米工藝中片上網(wǎng)絡(luò)的功耗在整個系統(tǒng)能量損耗中占到了11.2%,到了32 納米時片上網(wǎng)絡(luò)占到的功耗已經(jīng)達到了33.5%,在22 納米技術(shù)時,在靜態(tài)功耗在片上網(wǎng)絡(luò)所有的損耗中更是占到了高達74%[1]。為了提高多處理器芯片的運行能力,讓多核芯片運行時有更多的功率分配到計算資源節(jié)點中,減少片上網(wǎng)絡(luò)的功率損耗已經(jīng)變成了不容忽視的研究方向。
本文注意到在實際應(yīng)用中,路由器中經(jīng)過的報文在時間上的分布是不規(guī)則的。路由器在這時間分散的流量下會出現(xiàn)次數(shù)極多的通電和斷電的過程,這樣在功耗以及延遲當面都會對系統(tǒng)造成不小的影響,如果這種通電過程的次數(shù)出現(xiàn)的過多,電源門控技術(shù)就會起到反面的效果,不僅會損耗更多的能量,也會帶來嚴重的延遲。
鑒于上述問題,本文提出了基于片上網(wǎng)絡(luò)功率控制的流量管理,對片上網(wǎng)絡(luò)中的流量進行管理。
電源門控技術(shù)能夠緩解漏電現(xiàn)象,但是電源門控技術(shù)在電路中起到作用有一個前提:電路中有足夠長的空閑時間以至于彌補斷電和通電過程產(chǎn)生的損耗。盡管片上網(wǎng)絡(luò)被設(shè)計為在很高的節(jié)點之間流量傳輸運行,在實際的應(yīng)用中節(jié)點之間的流量傳輸其實很小,這就造成了大量的資源浪費。其結(jié)構(gòu)圖如圖1 所示[2-4]。
圖1 片上網(wǎng)絡(luò)路由器的電源門控結(jié)構(gòu)圖
電源門控技術(shù)的實現(xiàn)是在電路和電源之間放置一個交換開關(guān),這個交換開關(guān)可以是高閾值晶體管。對于芯片上的路由器來說,當所有的數(shù)據(jù)路徑(輸入緩存和輸出緩存)處于閑置狀態(tài)時,交換開關(guān)就會處于斷電狀態(tài),它僅僅需要一個簡單的控制器就可以實現(xiàn)。這時相鄰的路由器必須被告知這個路由器已經(jīng)處于斷電狀態(tài),不然傳輸?shù)膱笪臅诰W(wǎng)絡(luò)中丟失,因此使用握手信號告知相鄰路由器此路由器已經(jīng)處于斷電狀態(tài)很重要。當路由器處于斷電狀態(tài)時,它相鄰的路由器會把相連的輸出口關(guān)閉并把它標記為禁用狀態(tài)。片右邊的路由器處于斷電狀態(tài),通過向左側(cè)的路由器發(fā)送PG(Power-Gated)信號來告知左側(cè)的路由器,隨后左側(cè)的路由器把與之相連的輸出緩存標記為斷電。在需要從斷電狀態(tài)恢復(fù)為通電狀態(tài)時只需要相連的路由器發(fā)送WU(Wake-Up)信號。
整體控制設(shè)計流程圖如圖2 所示,局部控制器緩存數(shù)據(jù)包,當片上網(wǎng)絡(luò)中所有的局部控中緩存的包的數(shù)量到達設(shè)定的閾值或者時間達到設(shè)置的閾值,把緩存的包注入到網(wǎng)絡(luò)中。
圖2 流量控制設(shè)計流程圖
(1)局部控制器開始緩存從資源節(jié)點發(fā)來的包,對緩存的包的數(shù)量進行統(tǒng)計,每個局部控制器都把自己統(tǒng)計的數(shù)據(jù)傳到局部控制器。
(2)全局控制器對所有局部控制器中的報文數(shù)量進行統(tǒng)計,當在閾值間隔時間內(nèi)所有的報文的總量達到設(shè)定的閾值或者所有的報文的總量沒有到設(shè)定的閾值但是間隔時間達到了設(shè)置間隔閾值時,全局控制器就會給局部控制器發(fā)送注入信號。
(3)局部控制器接收到全局控制器發(fā)來的控制信號后,開始把報文注入到網(wǎng)絡(luò)中。
這樣就實現(xiàn)了對流量在時間上的控制,在片上網(wǎng)絡(luò)中使用電源門控技術(shù)之后,通過這種控制方式能夠使得流量能夠扎堆進入網(wǎng)絡(luò)中,實現(xiàn)讓路由器出現(xiàn)長時間的斷電過程,彌補電源門控通電帶來的損耗,降低整個片上網(wǎng)絡(luò)產(chǎn)生的功率損耗。
為了不讓報文在網(wǎng)絡(luò)接口處立即進入網(wǎng)絡(luò),每個網(wǎng)絡(luò)接口與路由器之間都會設(shè)置一個局部控制器,其結(jié)構(gòu)如圖3 所示。為了暫時緩存從網(wǎng)絡(luò)接口發(fā)來的報文,局部控制器中包含一個緩存器,實現(xiàn)緩存報文的功能。局部控制器通過接受全局控制器發(fā)來的注入信號之后,會把緩存的報文注入到網(wǎng)絡(luò)中。路由器發(fā)往網(wǎng)絡(luò)接口的報文不會受到影響,在報文到達目標路由器之后,資源節(jié)點會直接接收到報文。
圖3 局部控制器運行過程圖
在結(jié)合局部控制器以及全局控制器之后就能夠?qū)崿F(xiàn)對流量在時間上進行控制。在資源節(jié)點產(chǎn)生數(shù)據(jù)包后,局部控制器開始緩存這些資源節(jié)點產(chǎn)出的數(shù)據(jù)包,全局控制器發(fā)出釋放信號之后才讓這些緩存的數(shù)據(jù)包注入到網(wǎng)絡(luò)中,實現(xiàn)對流量在時間上進行控制。這種控制技術(shù)只需要很小的局部緩存器以及簡單的控制電路就可以實現(xiàn),在面積開銷以及功耗開銷上都比較小,對比片上網(wǎng)絡(luò)運行時產(chǎn)生的開銷可以忽略不計。
全局控制器的作用是進行決策以及對每個周期的閾值進行更新。這里定義兩個參數(shù):最大容量C 以及最大間隔時間T。這里的最大容量C 指的是所有局部控制器中所允許最大報文的總數(shù),最大間隔時間T 指的是從上個周期結(jié)束的時間到本周期結(jié)束的時間。
這里對幾個符號進行介紹:當前周期中允許的最大容量用Cm表示,在當前周期中所有局部控制器中的容量總數(shù)用Cc來表示。要對當前周期中最大報文容量的大小進行控制,需要一個容量的參考值來實現(xiàn)當前周期允許的最大容量Cm進行更新,這里的容量參考值用Cr表示。在實際應(yīng)用中,用不同的最大容量來設(shè)置滑動窗口,來計算出現(xiàn)的最大注入率。這里存在的注入率表示在一定報文數(shù)量時存在的最大注入率,當注入率變小時可以知道這時網(wǎng)絡(luò)中的包的總量變大但是注入率反而變小,也就說明報文容量變得更加大時在時間上的分散程度會更高,這里可以把注入率由大變小時的容量最為參考容量,以此來對當前允許最大容量Cm進行更新。
不同的最大容量閾值會對提出的基于時間集中的流量控制技術(shù)造成不同功率損耗以及時間延遲的影響,本文選取的容量閾值如圖4 所示。
圖4 不同報文容量下的最大注入率
間隔時間指的是從上一周期結(jié)束時刻到當前時間的差值,這里對幾個符號進行介紹:當前周期中允許的最大間隔時間用Tm表示,當前間隔時間用Tc來表示。這里對當前周期中最大間隔的大小進行控制,需要一個間隔時間的參考值來實現(xiàn)當前周期允許的最大間隔時間Tm進行更新,間隔時間參考值用Tr表示。在實際應(yīng)用中,用不同的間隔時間來設(shè)置滑動窗口,來計算出現(xiàn)的最大注入率。
不同的最大時間閾值會對提出的基于時間集中的流量控制技術(shù)造成不同功率損耗以及時間延遲的影響,本文選取的時間閾值如圖5 所示。
這里的注入率表示在一定間隔時間時存在的最大注入率,當注入率變小時可以知道這時網(wǎng)絡(luò)中的包的總量變大但是注入率反而變小,也就說明報文容量變得更加大時在時間上的分散程度會更高,所以這里可以把注入率由大變小時的容量最為參考容量。
圖5 不同間隔時間下的最大注入率
全局控制器的實現(xiàn)過程如圖6 所示。首先統(tǒng)計每個局部控制器中數(shù)據(jù)包的數(shù)量,然后分別把容量數(shù)據(jù)以及當前時間和閾值進行比較,當其中的一項高于閾值時,向所有的局部控制器發(fā)送釋放信號,之后等待局部控制器釋放數(shù)據(jù)包之后,接受所有局部控制器釋放完畢的信號,當所有的都釋放完畢之后釋放緩存信號,隨后統(tǒng)計局部控制器數(shù)據(jù)。
通過監(jiān)控所有局部控制器中的容量以及當前的間隔時間,當其中一個值達到閾值時就向所有的局部控制器發(fā)送注入信號,當所有的局部控制器包都注入到網(wǎng)絡(luò)中之后開始進入下一個周期。更新每個周期的閾值參數(shù)是為了適應(yīng)網(wǎng)絡(luò)中的流量,在流量較小時,報文在時間上的跨度就會變大,這時就會讓閾值參數(shù)變小,從而盡可能減少這種控制對整個系統(tǒng)的延遲,來提高系統(tǒng)的運行性能。
控制實現(xiàn)時對網(wǎng)絡(luò)中的流量進行實時監(jiān)控,具體的實現(xiàn)過程偽代碼如下:
1:Initialize C;
2:Initialize T;
3:Initialize Cmto C;
4:Initialize Tmto T;
5:For each checking period
6:Initialize Cc,Tcas 0;
7:if Cc 8:if Tc 9:buffer packets; 10:else 11:ejecting packets 12:update Cm,Tmaccording to Cc 13:end 14: else 15:ejecting packets 16:update Cm,Tmaccording to Cc 17: end 18:end 在初始階段,分別設(shè)置容量閾值和間隔時間閾值為前兩節(jié)所說的容量參考值Cr以及間隔時間參考值用Tr。隨后通過用全局控制器來對所有局部控制器中的流量以及當當前的時間間隔,當其中一個數(shù)值達到設(shè)置的閾值之后,向局部控制器發(fā)送信號,局部控制器接收到信號,開始把所有的報文注入到網(wǎng)絡(luò)中,注入后向全局控制器發(fā)送信號,開始進入下一個周期。下一個周期開始時進行對最大容量以及最大間隔時間進行更新,設(shè)置新的閾值,使算法能夠適應(yīng)網(wǎng)絡(luò)中的流量,隨后進入下一個周期,其過程和上面相同。當其中一個值達到閾值就會向網(wǎng)絡(luò)中注入報文,進而進入下一個周期。 在應(yīng)用運行時,在路由器上使用傳統(tǒng)中的電源門控技術(shù),這里和傳統(tǒng)電源門控技術(shù)的區(qū)別在于在沒有報文之后不會立即進入斷電狀態(tài),而是經(jīng)過幾個機器周期的檢測之后,沒有報文之后才會進入斷電狀態(tài)。這樣的好處是不會因報文在網(wǎng)絡(luò)中傳輸時出現(xiàn)延遲,從而使得路由器出現(xiàn)過多的頻繁的不必要的通電斷電過程。 本文中用到的仿真器是一個事件驅(qū)動的C++多處理器仿真器[5],本文使用11 個來自PARSEC[6]的基準檢測程序進行驗證,和電源門控技術(shù)的性能進行對比: (1)No-PG:不使用電源門控技術(shù)。 (2)Conv-PG:傳統(tǒng)的電源門控技術(shù)(路由器在沒有報文經(jīng)過時立即斷電)。 (3)ConvOpt-PG:在電源門控技術(shù)的基礎(chǔ)上使用提前通電技術(shù)以及等幾個機器周期進行空閑檢測技術(shù)來確定是否進入斷電狀態(tài)[7]。 里的功耗包括路由器的動態(tài)功耗以及靜態(tài)功耗,在使用電源門控技術(shù)之后產(chǎn)生的通電過程的損耗以及使用本章提出方法的局部控制器的功耗。幾種方法在仿真結(jié)果上運行功耗的對比如圖7 所示。 在圖7 中可以看到本章提出的方法能夠有效的大幅度減少能量的損耗,原因就在于通過控制報文注入網(wǎng)絡(luò)中的時間,使得所有的路由器會通電一段時間斷電一段時間,使得大幅度降低靜態(tài)功耗。相對比與No-PG、Conv-PG 和ConvOpt-PG 分別能夠平均減少18%以及22%的功率損耗,本章提出的方法能夠平均減少47%的能量損耗,可以看到能夠極大降低功率的損耗。 這里的運行時間主要包括資源節(jié)點的運算時間以及報文在網(wǎng)絡(luò)中的傳輸時間,在使用電源門控技術(shù)之后產(chǎn)生的通電過程的時間以及使用本章提出方法的局部控制器中報文的注入時間。在圖中可以看到本章提出的方法對時間有一部分影響,原因在于報文從局部控制器注入到網(wǎng)絡(luò)中需要一定的時間,以及由于網(wǎng)絡(luò)中流量很大,報文在網(wǎng)絡(luò)中傳輸時產(chǎn)生的延遲。從圖中可以看出本文提出的方法相較于No-PG 平均多用了7%的運行時間,相較于其他兩種方法分別消耗的運行時間5.6%以及3%,可以忽略。從這里可以看到提出的方法會對時間造成輕微的影響。運行時間的對比如圖8 所示。 圖7 幾種方法下片上網(wǎng)絡(luò)的功率損耗對比圖 圖8 幾種方法運行時間的對比圖 本文研究了片上網(wǎng)絡(luò)中使用電源門控技術(shù)對片上網(wǎng)絡(luò)損耗的功率的影響。提出并驗證了基于時間的流量管理方法。通過使用局部控制器以及全局控制器來對流量進行管理,使報文以抱團的形式進入網(wǎng)絡(luò)中,結(jié)合電源門控技術(shù)能夠大幅度減少路由器斷電的次數(shù)和延長路由器的斷電時間。通過仿真驗證可以得到和理論的一致性,能夠在很少影響運行時間的情況下大幅度降低片上網(wǎng)絡(luò)的功率損耗。3 實驗結(jié)果及分析
4 結(jié)語