許 威,張 霞
(1.北京城建設計發(fā)展集團股份有限公司,北京 100037; 2.北京理工大學 信息與電子學院,北京 100081)
鏈路管理是現(xiàn)代片上互連的關鍵要素,片上網(wǎng)絡(NoC)中的功耗問題一直是研究人員關注的問題之一[1],最耗電的NoC組件之一是連接路由器之間的鏈路以及片上互連網(wǎng)絡的處理元件[2]。這些鏈路可以用差分信號和低電壓擺幅硬件設計,利用電平轉換器作為低功耗的電路優(yōu)化,即使在沒有發(fā)送有用數(shù)據(jù)時,這些鏈路也幾乎一直處于活動狀態(tài),因此在沒有路由器間通信出口時,也會消耗能量。即使傳統(tǒng)的硬件設計技術有助于降低鏈路的功耗,但隨著NoC規(guī)模的擴大,系統(tǒng)級技術對于更有效地降低功耗變得必不可少。例如,相關研究集中在關閉和打開鏈路以降低功耗[3-4],因為系統(tǒng)中的某些鏈路在特定的運行時間框架內未得到充分利用。這些開/關動態(tài)電源管理工作大多數(shù)采用傳統(tǒng)的鏈路利用率靜態(tài)閾值計算,并基于該閾值,鏈路關閉一段時間,然后在算法決定時重新打開。文獻[5]提出了使用控制理論來管理關閉候選鏈路的方法,與基于靜態(tài)閾值的方法相比,取得了良好的效果。
在文獻[5]研究成果的基礎上,本文提出了利用應用流量的信息,將人工神經(jīng)網(wǎng)絡(ANN,artificial neutral network)作為動態(tài)鏈路功耗管理的機制。基于其動態(tài)接受可變場景訓練的能力,ANN可以提供靈活性和高預測能力。ANN以離散時間間隔接收鏈路利用率數(shù)據(jù),并根據(jù)計算出的閾值預測應該關閉或打開的鏈路;同時,ANN可以動態(tài)地訓練到新的應用程序信息,并且已經(jīng)證明可以在類似的場景中提供準確的預測結果[6]。此外,通過對NoC進行分區(qū),可以分配單個小的ANN來獨立監(jiān)控每個分區(qū),并行地監(jiān)控整個網(wǎng)絡[7]。以期為解決鏈路管理NoC中的功耗問題提供新思路。
實現(xiàn)所提出的ANN方法的第一步是算法建立,用于比較智能管理與非智能管理是否具有可比性,不僅在節(jié)能方面,而且在吞吐量和硬件開支方面。因此,使用NoC仿真算法測試了一個案例,其中通過靜態(tài)閾值機制來確定鏈路是關閉還是重新打開。該算法以實驗NoC系統(tǒng)中所有鏈路的利用率為輸入,根據(jù)靜態(tài)閾值輸出控制信號;對于閾值,該算法決定哪些鏈路被關閉。靜態(tài)定義的閾值是基于不同合成流量模型的仿真觀察以及與沒有該機制的系統(tǒng)相比所觀察到的功耗節(jié)省和吞吐量減少來計算的[8]。圖1所示為在4×4 NoC上觀察到的4種合成流量模型的實時節(jié)能效果。
圖1 4種合成流量模型的實時節(jié)能效果
基于ANN的機制可以集成為NoC中的獨立處理元件,每個基本ANN機制可以被分配來監(jiān)控NoC分區(qū),如圖2所示。每個基本ANN機制監(jiān)控其區(qū)域內的所有平均鏈路利用率,在每個間隔期間計算其區(qū)域內每個鏈路的閾值利用率值;然后使用該閾值來關閉該區(qū)域中表現(xiàn)出較低利用率的任何鏈路,已關閉的鏈路在一段時間內保持關閉狀態(tài)。
圖2 ANN預測器及結構
提出的ANN機制使用100個周期間隔,在此期間接收所有新的利用率,這100個周期的時間間隔具有更好的節(jié)能性能。在間隔期間,ANN計算并輸出新的閾值,然后由每個路由器中的鏈路控制機制使用該閾值來關閉未充分利用的鏈路。在100周期間隔期間,關閉的鏈路不參與下一閾值的計算;相反,用一個sentinel值進行編碼,該值表示充分利用,因此該鏈路不會在隨后的兩個時間間隔中被關閉,這將在網(wǎng)絡中保留公平的路徑分配。每個基于ANN的機制遵循一個完全連接的多層感知器模型[9],由一個內部神經(jīng)元節(jié)點的隱藏層和一個輸出層神經(jīng)元組成。在這項工作中,使用的激活函數(shù)是雙曲正切函數(shù),它是對稱和漸近的,因此很容易在硬件中作為LUT實現(xiàn)[10]。此外,該函數(shù)已在多個人工神經(jīng)網(wǎng)絡中得到廣泛應用,其精度非常高[11-13]。輸入神經(jīng)元的數(shù)目取決于系統(tǒng)接收到的反饋鏈路的數(shù)目,因此,ANN的大小取決于系統(tǒng)輸入的數(shù)量。輸出神經(jīng)元選擇與通過隱藏層神經(jīng)元觀察到的模式最匹配的閾值,并將閾值輸出給鏈路控制器。
神經(jīng)元計算主要為鏈路利用率輸入加權和的計算[14],然后將激活函數(shù)應用于神經(jīng)元輸入的加權和,以產(chǎn)生神經(jīng)元輸出(即激活神經(jīng)元)。式(1)表示神經(jīng)元輸出計算:
(1)
其中:K表示雙曲正切的激活函數(shù),wi表示應用于gi(x)輸入函數(shù)表示的鏈路利用率輸入的權值。整個過程如圖3所示。
圖3 神經(jīng)元計算
訓練階段可以離線執(zhí)行,即在不使用NoC的情況下,并且訓練權重可以存儲在基于SRAM的LUT中,用于快速和在線地重新配置網(wǎng)絡。網(wǎng)絡是使用應用流量模式進行訓練的,離線時,使用反向傳播ANN訓練算法[15]。在實驗中,使用了綜合流量模式和Matlab神經(jīng)網(wǎng)絡工具箱;然后將權重值作為輸入輸入到模擬器中,在模擬器中執(zhí)行和模擬實際預測。通過對系統(tǒng)實際運行的應用程序進行分類,可以潛在地改進ANN操作。因此,對于每個應用類別,可以使用相應的權重來訓練ANN[16]。然后,可以在長操作間隔期間動態(tài)加載每個訓練集,系統(tǒng)將遷移到新的應用程序。
雖然ANN在基于學習算法的場景預測方面非常有效,但需要仔細考慮硬件設計,因為ANN的大小和復雜性取決于接收到的輸入數(shù)量以及必須執(zhí)行的不同輸出預測的數(shù)量。NoC由大量的鏈路組成,這些鏈路隨著NoC規(guī)模的增長呈指數(shù)級增長[17]。因此,接收鏈路利用率并確定控制哪些鏈路可關閉和打開的閾值需要指數(shù)級可伸縮的ANN。本研究設計了一種預處理技術,該技術基于模擬和觀察來識別用于關閉和打開的候選鏈路集,消除幾乎總是使用的鏈路。通過各種合成流量模擬,對于每個給定的NoC拓撲,計算出每個鏈路在模擬中各個階段的平均利用率值[18],并且并始假設利用率最高的鏈路將處于開啟狀態(tài)。顯然,這一步驟會降低神經(jīng)網(wǎng)絡的有效性,但有必要在性能和硬件資源方面使神經(jīng)網(wǎng)絡的規(guī)模和支出最小化。然而,確定ANN使用的鏈路以及ANN訓練兩個步驟都可以在NoC設計階段離線完成。當新的應用知識可用時,神經(jīng)網(wǎng)絡訓練也可以重復進行,這可能會改變片上網(wǎng)絡流量行為[19]。ANN的這一特殊特性相對于靜態(tài)計算閾值提供了一個比較優(yōu)勢,使NoC具有靈活性。
此外,可以將大型NoC劃分為更小的區(qū)域。因此,可以分配一個基礎ANN體系結構來監(jiān)視每個區(qū)域,NoC分區(qū)路由器的所有鏈路利用率到達負責該區(qū)域的ANN[20]。然而,NoC區(qū)域的大小取決于兩個主要因素:基礎ANN提供的節(jié)能效果以及由此產(chǎn)生的ANN規(guī)模和硬件支出,這些支出隨著NoC區(qū)域的增長呈指數(shù)級增長。
ANN機制負責計算每個時間間隔內所有鏈路利用率的最小值?;谧钚≈?,神經(jīng)網(wǎng)絡計算出一個最佳閾值。圖5所示為4×4 NoC分區(qū)ANN機制的主要過程。ANN機制接收來自4×4 NoC分區(qū)的所有鏈路的平均鏈路利用率。這些值被輸入到ANN中,以計算最佳閾值。每個路由器包含一個控制硬件監(jiān)視器,用于測量每個路由器的4個鏈路中每個鏈路的平均鏈路利用率,并且該值每n個周期發(fā)送到ANN。如果一個路由器不能在一個單一的時間間隔內傳輸這些值,則它的值被設置為sentinel值,這表明它的緩沖區(qū)被充分利用。該機制也可以作為擁塞信息機制,因為高度活躍的鏈路不是要關閉的候選鏈路。ANN使用利用率值來尋找閾值,該閾值將確定在下一個n周期間隔內鏈路是關閉還是打開。如前所述,在模擬中使用了100個周期間隔(n=100)。
ANN的主要優(yōu)點之一是當神經(jīng)元數(shù)量很少且激活函數(shù)比較簡單時,其硬件實現(xiàn)相對簡單。由于可以將神經(jīng)元運算建模為乘法累加運算,因此可以在硬件中有效地設計神經(jīng)元運算。神經(jīng)網(wǎng)絡硬件實現(xiàn)依賴于隱藏層神經(jīng)元的數(shù)量,每個神經(jīng)元都被實現(xiàn)為乘法累加器(MAC)單元,每個神經(jīng)元的累加器被復用,從而使乘法器的數(shù)量最小化。基本的ANN硬件架構如圖4所示。每個鏈路的利用率值都會通過輸入?yún)f(xié)調單元來到達并排序,該單元將值分配給每個適當?shù)某朔ㄆ鳌3朔ㄆ鹘邮者@些值并通過共享權重存儲器獲得相應的權重。然后,將權值和輸入乘積累積到相應的累加器中,整個過程由有限狀態(tài)機控制器控制。每個神經(jīng)元都有一個指定的存儲寄存器,以實現(xiàn)數(shù)據(jù)重用;當計算一層神經(jīng)元時,它們的輸出被存儲在相應的寄存器中。因此,相同的硬件被重用,可用于計算下一層(即從輸入層到隱藏層,從隱藏層到輸出層)。當每個神經(jīng)元完成MAC計算后,通過激活函數(shù)LUT計算結果并傳輸?shù)捷敵錾窠?jīng)元。
圖4 4×4神經(jīng)網(wǎng)絡預測器的主要步驟
例如,在環(huán)面拓撲中監(jiān)控4×4區(qū)域的ANN接收64個不同的輸入,如果每個路由器在每個時間間隔內發(fā)送一個具有自己鏈路利用率的數(shù)據(jù)包,那么在每個周期內,ANN最多會收到4個輸入值。因此,如果使用流水線乘法器,則每個人工神經(jīng)網(wǎng)絡只需要4個乘法器就可以實現(xiàn)最大吞吐量。無論監(jiān)控的網(wǎng)絡大小如何,ANN仍然是小的和靈活的。此外,監(jiān)控4×4 NoC分區(qū)的ANN接收16個數(shù)據(jù)包(每個路由器一個),因此,需要16m個周期(其中m為每個乘法器的周期延遲),加上每個累加器的16個周期以及激活函數(shù)的一個周期、輸出神經(jīng)元的一個周期,輸出新的閾值,總共16m+18個周期。
為了使神經(jīng)網(wǎng)絡結構更簡單、更小,研究了隱藏層神經(jīng)元的數(shù)量對系統(tǒng)總功耗的影響。鑒于4×4 ANN監(jiān)控16個路由器,因此至少需要8個輸入神經(jīng)元。在神經(jīng)網(wǎng)絡的輸入層有8個神經(jīng)元意味著隱藏層應該有5個神經(jīng)元。3個不同的人工神經(jīng)網(wǎng)絡分別在隱藏層有5個、4個和3個神經(jīng)元。圖5所示為在4種不同流量模式(Random,Tornado,Transpose,Neighbor)下,ANN的節(jié)能效果。由該圖可知,在隱藏層中使用4個神經(jīng)元可以為所有的流量模式提供最佳的功耗節(jié)省。此外,本文研究了訓練權重的比特表示對閾值計算以及總功耗節(jié)省效果的影響,如圖6所示。由該圖可知,24 bits、16 bits、8 bits和6 bits顯示出類似的功耗節(jié)省,但是當使用4 bits時,由于降低了訓練精度,因此功耗節(jié)省效果顯著降低?;谝陨戏治?,從6 bits中選擇權重位表示,使得乘法累加器硬件非常小,每一個權重需要6位端口,利用率值需要5位端口。
圖5 人工神經(jīng)網(wǎng)絡隱藏層中5個、4個和3個神經(jīng)元的功耗節(jié)省
圖6 不同訓練權重位表示的功耗節(jié)省
為了評估基于鏈路預測機制的神經(jīng)網(wǎng)絡模型,開發(fā)了一個基于Java的通用片上網(wǎng)絡結構模擬器仿真框架。該框架利用XY維序路由算法,支持虛擬信道和4級流水線路由器操作,實現(xiàn)了多拓撲的仿真。模擬路由器支持64位移動寬度,每個鏈路支持2個虛擬通道,每個虛擬通道支持2個緩沖區(qū),該框架支持各種合成和用戶定義的流量模型。
本研究實驗了4×4網(wǎng)狀拓撲以及8×8網(wǎng)狀和環(huán)面拓撲。在8×8拓撲中,將NoC劃分為4×4路由器鏈路的4個區(qū)域,其中每個基于ANN的模型負責監(jiān)控。基于神經(jīng)網(wǎng)絡的模型監(jiān)控了對應分區(qū)中的所有鏈路,所有的鏈路都是off/on的候選鏈路,并基于這些體系結構細節(jié)給出了與神經(jīng)網(wǎng)絡的規(guī)模和操作相關的所有神經(jīng)網(wǎng)絡結果。
首先,將時間劃分為100個周期間隔,在每個間隔結束時,NoC分區(qū)中的所有路由器都傳輸該范圍內的平均利用率數(shù)據(jù)。為了保持合理的時延,使用了一種與每個路由器對神經(jīng)網(wǎng)絡機制的期望延遲相等的超時機制。ANN從每個路由器接收一個包,其中每個端口有4個利用率值。然后,神經(jīng)網(wǎng)絡繼續(xù)計算通過控制分組傳輸?shù)矫總€路由器的新閾值。每個路由器關閉每個鏈路,具體取決于其利用率值是否高于或低于新閾值。路由器繼續(xù)運行,直到新的時間間隔結束。當鏈路關閉或打開時,將額外的100個周期懲罰插入模擬中,以表明對網(wǎng)絡吞吐量的影響。
本文使用具有不同注入速率的合成流量模式(Random、Tornado、Transpose和Neighbor),首先評估了與沒有任何開/關鏈路能力的相同系統(tǒng)和采用靜態(tài)確定閾值的系統(tǒng)相比,基于ANN機制的功耗節(jié)省。然而,為了計算環(huán)面網(wǎng)絡中的功耗節(jié)省,還測量了環(huán)面網(wǎng)絡所有可能分區(qū)中的鏈路利用率,以補償環(huán)面鏈路,具有最小值的鏈路利用率通過ANN傳遞。
圖7所示為基于ANN技術、靜態(tài)閾值技術的8×8網(wǎng)狀和8×8環(huán)面拓撲的節(jié)能效果。由該圖可知,基于ANN機制比傳統(tǒng)的靜態(tài)閾值機制節(jié)省了更多的流量?;贏NN機制可以在流量模式中識別出大量的未來行為,因此,它可以智能地選擇下一個定時間隔所需的閾值。為了得到所提出方案的節(jié)能效果,針對商用65 nm CMOS技術合成并實現(xiàn)了一個8×8 NoC區(qū)域的基于人工神經(jīng)網(wǎng)絡的機制。在每個路由器中,基于ANN的控制器和相關的硬件開銷消耗了大約4 k個邏輯門,從而將8×8網(wǎng)狀的估計硬件開銷提高到NoC硬件的4%左右。
圖7 8×8網(wǎng)狀和環(huán)面拓撲的節(jié)能效果
圖8所示為8×8網(wǎng)狀和環(huán)面拓撲的吞吐量比較。由該圖可知,雖然沒有開/關機制的吞吐量高,但與靜態(tài)確定閾值技術相比,基于ANN的技術顯示出更好的吞吐量結果。這取決于所選擇的網(wǎng)絡拓撲(例如,在2D網(wǎng)格拓撲中,可能不繁忙的鏈路包括位于網(wǎng)格邊緣的鏈路,而中心鏈路通常更活躍并且可以一直保持打開),因此ANN機制可以以更易于管理的方式處理輸出決策,這可以通過智能器件的規(guī)劃和NoC內部處理元件的放置來實現(xiàn)。
圖8 8×8網(wǎng)狀和環(huán)面拓撲的歸一化吞吐量比較
圖9所示為8×8網(wǎng)狀網(wǎng)絡的歸一化能耗??梢杂^察到,使用ANN機制的功耗比靜態(tài)計算閾值和不使用開關鏈路管理算法的情況要少。與沒有開/關鏈路或與靜態(tài)閾值相比,ANN表現(xiàn)出整體功耗的降低。這是因為基于人工神經(jīng)網(wǎng)絡閾值計算方案具有動態(tài)、智能、靈活的特點,可以隨時確定哪些鏈路可以關閉或打開。
圖9 8×8網(wǎng)狀網(wǎng)絡的能量消耗
本文提出了一種基于人工神經(jīng)網(wǎng)絡機制來動態(tài)計算鏈路利用率閾值,進而使用利用率閾值來選擇開啟或關閉候選鏈路,以達到節(jié)省NoC功耗的目的。基于人工神經(jīng)網(wǎng)絡的模型利用了非常低的硬件資源,并且可以集成在大型網(wǎng)狀和環(huán)面NoC中,顯示出顯著的功耗節(jié)省效果。仿真結果表明,在綜合流量模型下,與靜態(tài)閾值方法相比,可節(jié)省功耗。在未來的研究中,還需進一步探索利用人工神經(jīng)網(wǎng)絡等智能方法動態(tài)降低NoC功耗的方法。