周義濤,李陽,韓超,趙玉來,汪玲,李建華,3*
(1.合肥工業(yè)大學計算機與信息學院,安徽 合肥 230601;2.安徽交通職業(yè)技術(shù)學院,安徽 合肥 230601;3.合肥工業(yè)大學情感計算與先進智能機器安徽省重點實驗室,安徽 合肥 230601)
異構(gòu)多核處理器集成了不同計算能力和微架構(gòu)的核心,相比于普通同構(gòu)多核處理器,具有高性能、低功耗、可定制化等優(yōu)點[1]。例如聯(lián)發(fā)科的天璣9000 處理器,在CPU 架構(gòu)上使用了“1+3+4”的三叢集架構(gòu),其中便包含了ARM 公司的Cortex-X2、Cortex-A710 與Cortex-A510 這3 種公版架構(gòu)。
異構(gòu)多核處理器的最后一級緩存(LLC)架構(gòu)可采用均勻緩存架構(gòu)(UCA)或非均勻緩存架構(gòu)(NUCA)[2]。與UCA 不同,在NUCA 下,基于瓦片(Tile)結(jié)構(gòu)的LLC 用片上網(wǎng)絡(luò)連接起來,這實現(xiàn)了不同核心之間的緩存訪問,擁有更低的緩存訪問延遲。因此,某個核心訪問某一片Tile 上的緩存延時與目標Tile 的位置有關(guān)。
隨著異構(gòu)多核處理器處理核數(shù)量和規(guī)模的增加,線程映射問題與處理器熱安全問題逐漸凸顯。線程任務(wù)調(diào)度問題是指在多線程系統(tǒng)中如何分配和調(diào)度多個任務(wù),使得系統(tǒng)的性能最優(yōu)化。線程任務(wù)調(diào)度是一個NP-hard 問題[3]?,F(xiàn)有的線程映射方法大多使用靜態(tài)或動態(tài)啟發(fā)式算法[4-6],在進行任務(wù)調(diào)度時,不僅需要考慮對象任務(wù)的規(guī)模(任務(wù)的時間復(fù)雜度、空間復(fù)雜度),也要考慮現(xiàn)有資源的分配情況(片上空閑處理核的數(shù)量、任務(wù)與處理核的映射關(guān)系)。熱安全問題則是由于處理器性能在不斷增長時[7]高負載、高頻率和高電壓給芯片帶來的更高的功耗和散熱壓力。以上問題對一系列同樣采用異構(gòu)多核架構(gòu)的移動設(shè)備的散熱設(shè)計和電池容量提出了更高的要求。因此,需要對異構(gòu)多核系統(tǒng)進行溫度約束,保證熱安全以提高系統(tǒng)穩(wěn)定性。
機器學習算法可以通過學習大量歷史數(shù)據(jù)來擬合數(shù)據(jù)之間的關(guān)系,人工神經(jīng)網(wǎng)絡(luò)(ANN)在計算機任務(wù)調(diào)度、資源分配等任務(wù)中逐漸發(fā)揮出巨大優(yōu)勢[8]。目前,ANN 在異構(gòu)多核系統(tǒng)中的應(yīng)用呈上升趨勢,對比深度學習網(wǎng)絡(luò)(DLN)以及Deep Q-Network(DQN)等算法,ANN 具有輕量化、模型結(jié)構(gòu)簡單、計算開銷低等優(yōu)勢,更適合應(yīng)用于實時操作系統(tǒng)以及線程調(diào)度等場景。目前,在異構(gòu)多核系統(tǒng)上應(yīng)用機器學習技術(shù)進行任務(wù)調(diào)度也有了相應(yīng)研究,如文獻[9]所提出的動態(tài)調(diào)度方法,使用機器學習來將應(yīng)用程序調(diào)度到各自最佳的核心,以減少具有可配置緩存系統(tǒng)的能耗。該文獻還提出一種動態(tài)調(diào)度方法,使用機器學習來預(yù)測最佳核心,并使用調(diào)優(yōu)啟發(fā)式算法來確定非最佳核心上的最佳配置。如果最佳核心忙碌,調(diào)度器會考慮其他空閑核心,或者根據(jù)哪個決策更節(jié)能來暫停應(yīng)用程序。
本文提出一種面向S-NUCA 異構(gòu)多核處理器且基于ANN 的任務(wù)調(diào)度和動態(tài)熱管理解決方案,簡稱為TSCDM。通過ANN 進行性能預(yù)測,利用動態(tài)調(diào)整線程與核心的綁定關(guān)系來最大化系統(tǒng)性能,同時動態(tài)調(diào)整每個核心的功率預(yù)算,減少熱余量并防止暗硅效應(yīng)產(chǎn)生[10]。本文的主要工作如下:
1)設(shè)計一種基于ANN 的性能預(yù)測器,通過預(yù)測每個線程在任意大核或小核上的每周期指令(IPC)值,在以IPC 值最大化為目標的前提下決策出任意線程與大核或小核的綁定關(guān)系。
2)提出一種線程動態(tài)映射算法,均衡活躍核心的可分配功率預(yù)算與緩存訪問延遲。根據(jù)S-NUCA架構(gòu)的緩存訪問特性,算法優(yōu)先將線程映射至靠近片上中心位置的核心,同時根據(jù)線程的算力與訪存需求動態(tài)地執(zhí)行任務(wù)遷移策略。
3)提出一種滿足熱安全功率(TSP)的核心功率動態(tài)調(diào)整機制。根據(jù)基于瞬態(tài)溫度的安全功率(T-TSP)算法[11],由線程與核心的映射關(guān)系和當前核心的初始溫度計算出每個核心的瞬時熱安全功率值,保證系統(tǒng)的熱安全同時盡可能地提高系統(tǒng)性能,減少熱余量。
本文為基于S-NUCA 架構(gòu)的異構(gòu)多核處理器設(shè)計線程調(diào)度算法,并應(yīng)用熱管理框架為核心設(shè)定熱安全功率,通過應(yīng)用DVFS(Dynamic Voltage and Frequency Scaling)設(shè)定保證芯片符合熱安全約束。
圖1 所示為一個操作系統(tǒng)內(nèi)線程調(diào)度問題示意圖,在計算機操作系統(tǒng)內(nèi),調(diào)度器負責對準備就緒且待映射的線程與所需映射的目的CPUID 進行綁定。一個高性能的S-NUCA 異構(gòu)多核系統(tǒng)集成了一定數(shù)量、不同處理性能的核心。由于不同的處理器核心具有不同的性能特點,因此如何合理地調(diào)度任務(wù)是一個關(guān)鍵問題。如果調(diào)度不當,就會導(dǎo)致性能下降,甚至會使得系統(tǒng)崩潰。
本文從線程調(diào)度的映射方法類型和決策特征兩方面對相關(guān)工作進行總結(jié),如表1 所示。
表1 現(xiàn)有映射方法總結(jié) Table 1 Summary of existing mapping methods
離線靜態(tài)調(diào)度是一種在編譯時進行調(diào)度的方法,通過對程序進行靜態(tài)分析來確定每個線程映射的最優(yōu)映射核心,從而實現(xiàn)效率最大化。文獻[12]提出一種基于種群算法的靜態(tài)調(diào)度方法,能夠在探索性和開發(fā)性搜索模式之間進行動態(tài)切換,實現(xiàn)任務(wù)調(diào)度和DVFS 決策。文獻[13]使用遺傳算法(GA)提出一種群體智能任務(wù)調(diào)度策略,以提高異構(gòu)多核處理器的性能,通過預(yù)先處理指定任務(wù)來檢測不同核心的計算能力,并引入自適應(yīng)變異策略和注入策略來避免過早收斂和陷入局部最優(yōu)解。
基于啟發(fā)式算法的在線動態(tài)調(diào)度是一種在程序運行時進行線程調(diào)度的方法,可以根據(jù)實時狀態(tài)來調(diào)整線程映射。文獻[14]提出一種動態(tài)線程映射的啟發(fā)式算法,該算法能夠根據(jù)線程的運行時行為,將其分配給最合適的核心類型。仿真結(jié)果顯示,該算法在256 核系統(tǒng)上的運行開銷不超過1 ms。文獻[15]提出一種改進的任務(wù)圖調(diào)度算法,該算法采用貪心策略,通過復(fù)制任務(wù)的前驅(qū)節(jié)點來減少調(diào)度時間和處理器空閑時間,同時提高了分布式計算的性能,且不會增加調(diào)度時間。文獻[16]設(shè)計一種并行感知調(diào)度算法,該算法計算各任務(wù)與終點之間的最長路徑值,按照該值的降序來分配任務(wù)調(diào)度的次序。采用該算法可以顯著降低任務(wù)調(diào)度的時延、減少通信量并提高處理器利用率。
離線和在線混合調(diào)度方式是一種融合離線和在線調(diào)度方式優(yōu)點的線程調(diào)度方法,該方法通過利用離線分析數(shù)據(jù)來輔助動態(tài)啟發(fā)式算法進行線程調(diào)度的決策。文獻[17]提出一種名為HTM 的混合式調(diào)度方法,基于MPSoC 的嵌入式系統(tǒng),通過捕捉應(yīng)用的動態(tài)性來提高其性能。文獻[18]提出一種改進的混合粒子群和模擬退火優(yōu)化算法iHPSA,該算法結(jié)合了改進的粒子群優(yōu)化、NoC 映射的模擬退火算法和K-means 聚類算法,根據(jù)通信帶寬執(zhí)行線程調(diào)度。
近年來,也有將機器學習引入任務(wù)調(diào)度的方法出現(xiàn),通過收集大量線程運行的歷史數(shù)據(jù)訓(xùn)練AI 模型,以輔助系統(tǒng)進行任務(wù)調(diào)度決策。這種方法的優(yōu)點在于可以根據(jù)歷史數(shù)據(jù)和當前情況自動地決策出最優(yōu)調(diào)度方案,相比傳統(tǒng)的調(diào)度算法,這種方法更加靈活和高效。文獻[19]通過引入與應(yīng)用程序相關(guān)的性能和功率V/F 敏感度以及與核心相關(guān)的溫度敏感度來訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,可以準確估計待映射線程的性能和功率V/F 敏感度。
為處理器設(shè)置熱安全功率是一種動態(tài)熱管理(DTM)策略,DTM 是指在處理器運行時調(diào)整其工作頻率和電壓,以控制處理器的溫度不超過人為設(shè)定的閾值,從而避免產(chǎn)生暗硅效應(yīng)之類的熱安全問題。熱安全問題是指處理器運行時的溫度過高,可能會使處理器出現(xiàn)停止工作、運行緩慢或故障等問題。因此,確保處理器處于安全的溫度范圍內(nèi)是異構(gòu)多核系統(tǒng)穩(wěn)定運行的必要條件。熱安全功率是指處理器在安全的溫度范圍內(nèi)可以運行的最大功率[6],如果處理器的功率超過了熱安全功率,就有可能因過熱而產(chǎn)生暗硅效應(yīng)。因此,需要通過實時調(diào)整處理器的工作頻率和電壓、優(yōu)化線程與核心的綁定關(guān)系等方式,在不影響系統(tǒng)穩(wěn)定性的前提下降低功率。監(jiān)控處理器的溫度是實現(xiàn)處理器動態(tài)熱管理的關(guān)鍵,通常通過在處理器上安裝溫度傳感器來實現(xiàn)。溫度傳感器可以定期測量處理器的溫度,并將信息發(fā)送給DTM 相應(yīng)的控制模塊,根據(jù)處理器的溫度和熱安全功率來決定是否需要調(diào)整處理器的工作頻率和電壓。
一般而言,處理器的工作頻率和電壓是相互影響的。在通常情況下,降低工作頻率和電壓會減少處理器的功率消耗,從而降低處理器的溫度。然而,降低工作頻率或電壓會對處理器的性能產(chǎn)生影響。因此,在調(diào)整工作頻率和電壓時,需要考慮性能和處理器溫度之間的平衡。此外,在實際應(yīng)用中,處理器的熱安全功率也會受到許多因素的影響,包括處理器的類型、封裝、工作頻率、電壓、環(huán)境溫度、風扇速度等。因此,為了更好地控制處理器的溫度,需要對處理器的功率進行實時監(jiān)測和調(diào)整。
隨著處理器片上功率密度的增加,限制處理器的功耗以避免暗硅效應(yīng)的方案增多。文獻[20]提出一種用于異構(gòu)平臺的能量溫度感知實時調(diào)度器,該調(diào)度器基于一個能量和溫度模型,根據(jù)任務(wù)的截止時間和功耗,動態(tài)地選擇合適的核心類型和頻率,以最大化系統(tǒng)能效。該調(diào)度器還考慮了核心之間的溫度依賴性,以避免過熱問題。文獻[21]研究使用U型并聯(lián)微通道冷卻系統(tǒng)對多核處理器進行熱管理的方法,通過數(shù)值模擬和實驗測試來分析流量、流速和熱流密度對微通道內(nèi)壓降、溫度分布和熱阻的影響。文獻[22]提出一種應(yīng)用于異構(gòu)多核平臺的半分區(qū)調(diào)度算法HEAT,通過該算法有效地管理能量和溫度。HEAT 算法分為4 個階段,分別為截止時間劃分、任務(wù)到核分配、溫度感知調(diào)度、能量感知調(diào)度。HEAT算法能夠在滿足實時任務(wù)截止時間約束的同時最小化系統(tǒng)的能量消耗和溫度峰值。文獻[23]提出一種用于異構(gòu)多核處理器的新型自適應(yīng)DTM 框架,該框架為大核和小核制定基于溫度的遷移策略,在保證溫度不超標的同時能夠防止系統(tǒng)性能下降。
本文通過分析S-NUCA 緩存特性,利用離線和在線混合調(diào)度的方式設(shè)計動態(tài)映射策略,并構(gòu)建片上熱模型,結(jié)合片上初始溫度,為每個核心實時分配精確的熱安全功率,在符合熱安全約束的前提下盡可能地提升系統(tǒng)性能和能耗比。
本文研究對象為基于S-NUCA 并具備大小核設(shè)置的異構(gòu)多核系統(tǒng)。圖2 所示為本文所提TSCDM方案的主要架構(gòu),其由基于ANN 的性能預(yù)測器、映射器、T-TSP 熱安全框架和階段檢測器構(gòu)成。
圖2 TSCDM 整體框架Fig.2 Overall framework of TSCDM
TSCDM 中設(shè)計一個階段檢測器以確定線程重映射的起始點。一個線程在其生命周期內(nèi)可能經(jīng)過很多個階段,在不同的階段所呈現(xiàn)的線程特征也不同,因此,某個核心在運行某個線程時,IPC 值也會隨著階段的改變而呈現(xiàn)明顯的變化,如圖3 所示。
圖3 線程階段變化示意圖Fig.3 Schematic diagram of thread stage changes
由于IPC 值直觀地反映了系統(tǒng)的性能表現(xiàn),因此需要對線程所處的不同生命周期階段進行檢測,若某個線程的IPC 值出現(xiàn)大幅度改變,則可以認定該線程的生命周期階段發(fā)生了變化。在這種情況下,本文系統(tǒng)會觸發(fā)一次重映射,即第2.2.4 節(jié)中的線程-核心類型匹配以及第2.3.2 節(jié)中的線程與具體核心映射。
TSCDM計算任意核心在t時刻的IPC值和(t-Δt,t)時間內(nèi)的平均IPC 值,若當前t時刻的IPC 值與平均IPC 值出現(xiàn)較大幅度的變化,即可認定該線程的階段發(fā)生了改變。參考文獻[24]對不同變化閾值下檢測效果進行的研究和總結(jié),本文所使用的幅度定義為50%,時間片Δt設(shè)定為2 ms。若滿足|IPC(t) -IPCsum(t-Δt,t)| >IPCsum(t-Δt,t) ×0.5,則說明t時刻的線程階段發(fā)生了改變,從而觸發(fā)重映射。
本文將線程調(diào)度問題定義為:將n個線程(表示為Thread=thread1,thread2,…,threadn)映 射到H×K(核心呈2D 網(wǎng)格排布,共H行、K列,其中1/2 為大核心,1/2 為小核心)的多核平臺上執(zhí)行,并使整個平臺的計算性能最大化。其中,每個核心均有可調(diào)且獨立的DVFS 策略。
在傳統(tǒng)方法中[3],無法判斷即將在處理核上處理的線程特征,因此,本文使用ANN 來預(yù)測某一個線程在大核和小核上的性能,在綁定階段使所有核心的總預(yù)測IPC 值最大化,從而獲得最優(yōu)的線程與核心類型綁定方案。
2.2.1 ANN 參數(shù)選擇
在TSCDM 中,ANN 會收集與性能相關(guān)的數(shù)據(jù)[25]以供訓(xùn)練。基于對處理平臺的所有可選監(jiān)測參數(shù)和具體參數(shù)的分析,本文選擇與IPC 相關(guān)的參數(shù),包括一級緩存命中率、二級緩存命中率、三級緩存命中率以及6 種與程序行為變化相關(guān)的參數(shù),即浮點加法、減法、乘法、除法、跳轉(zhuǎn)指令和讀寫內(nèi)存指令[26-27]。這些參數(shù)與處理器性能直接相關(guān),可以提供更準確的預(yù)測精度。
2.2.2 數(shù)據(jù)集構(gòu)建與預(yù)處理
本文使 用HotSniper 模擬器[28],通過運 行HotSniper 中自帶的SPLASH-2 基準測試程序并實時采集上文提及的參數(shù),將它們保存為原始數(shù)據(jù)集。為了量化所有獲取到的數(shù)據(jù),同時平衡各種數(shù)據(jù)在單位和數(shù)量級上的關(guān)系,本文對獲取到的數(shù)據(jù)集進行如下預(yù)處理:
1)將所有緩存命中率進行Z-Score 歸一化處理[29]。
2)將CPU 指令相關(guān)參數(shù)轉(zhuǎn)為該指令占所有指令的比值。
2.2.3 ANN 模型構(gòu)建
針對ANN 網(wǎng)絡(luò)模型參數(shù),本文選擇第2.2.1 節(jié)中的10 個與核心性能有關(guān)的參數(shù),因此,神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點個數(shù)為10,每個隱藏層節(jié)點個數(shù)為25,隱藏層個數(shù)為2,輸出節(jié)點個數(shù)為1(輸出IPC 值),并使用ReLU 函數(shù)作為ANN 的激活函數(shù),利用均方誤差(MSE)損失函數(shù)對ANN 性能預(yù)測器進行訓(xùn)練。
2.2.4 線程與核心類型匹配
通過由ANN 得到的線程性能預(yù)測數(shù)據(jù),可以得到線程與核心類型的最佳綁定方案。假設(shè)某一時刻待映射的線程數(shù)為N,通過ANN 即可得到所有線程在大核心和小核心上的性能表現(xiàn)集合,即:
由此可以得到2N個IPC 值,將這些數(shù)據(jù)進行排序,取IPC 值最大的N個結(jié)果,取每個元素的下標bigi或smallj,即可得到映射:線程X(序號為i或j的線程)→核心類型(big 或small)。
在確定了線程與核心類型的綁定關(guān)系后,TSCDM 使用一種動態(tài)調(diào)度算法,綜合考慮S-NUCA架構(gòu)下活躍核心的平均曼哈頓距離(AMD)對緩存訪問性能和功率預(yù)算的影響,得到線程對應(yīng)的最佳映射位置。同時使用任務(wù)分類器自動感知計算密集型任務(wù),使用任務(wù)遷移策略將其映射至AMD 值較大的核心。
2.3.1 核心AMD 的影響
在S-NUCA 架構(gòu)中,線程所映射的核心空間位置會影響對應(yīng)的核心緩存訪問性能。圖4 是一個S-NUCA 模型架構(gòu),每個核心都獨享最后一級緩存(LLC)。某個線程訪問所有內(nèi)核上的LLC 的可能性相同,且與線程綁定的核心位置無關(guān)。LLC 的訪問延遲與線程核心所處的位置和LLC bank 之間的跳數(shù)有關(guān),可以使用曼哈頓距離進行衡量:d(a,b)=sum(ai-bi)。與所有核心相比,AMD 值較低的核心擁有更低的LLC 訪問延遲[15]。可以發(fā)現(xiàn),越靠近中心位置的核心擁有越低的AMD 值。
圖4 S-NUCA 架構(gòu)Fig.4 S-NUCA architecture
鑒于以上特性,使用S-NUCA 架構(gòu)的片上系統(tǒng)的線程與核心綁定分布之間會影響系統(tǒng)緩存訪問性能與分配的功率預(yù)算值。如圖5 所示,在同一個系統(tǒng)測試程序時,使用相同的DVFS 策略和不同的映射方式(不同的AMD 值),2 種方案呈現(xiàn)出了不同的平均IPC 值和分配的功率預(yù)算值。
圖5 AMD 對系統(tǒng)性能與TSP 的影響Fig.5 The impact of AMD on system performance and TSP
對測試結(jié)果進行分析可以發(fā)現(xiàn),不同的測試子項(SPLASH-2 內(nèi)的測試子項)有不同的特點[30],可分為計算密集型任務(wù)與訪存密集型任務(wù)。例如fft 對于AMD 的敏感程度大于fmm 子項,因此,對于fmm來說,它是一個訪存密集型任務(wù),而對于fft 來說,它是一個計算密集型任務(wù)。在S-NUCA 多核系統(tǒng)中,當待映射的線程數(shù)一定時,較低的AMD 值會提高處理核心的IPC 值(核心之間緩存訪問性能提升),然而,較低的AMD 值會由于核心與核心之間的熱感受性以及片上系統(tǒng)的熱傳遞模型特性而導(dǎo)致核心可分配的功率預(yù)算值降低。
2.3.2 基于緩存特性的線程與核心動態(tài)映射策略
由于S-NUCA 架構(gòu)下活躍核心的AMD 值會影響緩存訪問性能與活躍核心的功率預(yù)算,因此在進行線程映射時必須考慮核心在平面上的幾何位置。如算法1 所示,在進行線程與核心的綁定時,TSCDM使用一種基于緩存特性的線程與核心動態(tài)映射策略,盡可能保證所有線程優(yōu)先綁定至AMD 值較小的核心,同時避免活躍核心出現(xiàn)相鄰的情況。
2.3.3 基于任務(wù)分類的任務(wù)遷移策略
TSCDM 應(yīng)用一種自動感知的任務(wù)遷移策略。在第2.3.2 節(jié)中,TSCDM 將待映射線程映射至AMD值較小的空閑核心上,但如第2.3.1 節(jié)中所述,某些線程呈現(xiàn)出不同的特征,即分為訪存密集型與計算密集型任務(wù)。初始的動態(tài)映射策略保證了所有的線程都擁有相對較低的緩存訪問延遲,對于計算密集型任務(wù),TSCDM 單獨識別并將其遷移至AMD 值較大的核心上,從而分配更高的熱安全功率以提升性能,降低系統(tǒng)的熱余量。
TSCDM 使用Roofline 算法為計算平臺的計算性能進行建模[31]。通過獲取計算平臺的算力上限π和帶寬上限β,從而得出計算平臺在單位內(nèi)存交換下可以進行的最多浮點計算次數(shù)以 及模型的理論性能,表示計算平臺每秒能進行的浮點計算次數(shù)。當P=β·I(I<Imax)時,可以認為此時系統(tǒng)處于內(nèi)存瓶頸。TSCDM 使用一個實時檢測任務(wù)分類的任務(wù)分類器,通過識別程序的Imax和核心的性能P,與機器的單核峰值性能進行對比,若識別到某個線程屬于計算密集型,則將其盡可能地遷移至靠近片上4 個角落的空閑核心。整個任務(wù)遷移策略流程如圖6 所示。
圖6 基于任務(wù)分類的任務(wù)遷移策略流程Fig.6 Procedure of task migration policy based on task classification
TSCDM 的目標是為異構(gòu)多核系統(tǒng)中的每一個核心尋找更加精確、動態(tài)細粒度的功率預(yù)算分配方法,以減少熱余量。處理器核心的性能與其工作頻率有關(guān),所有的處理器核心都有其內(nèi)置的工作頻率和電壓范圍,高頻率和高電壓會給芯片的散熱帶來很大壓力。傳統(tǒng)的功率預(yù)算方法直接為整個處理芯片設(shè)定整體熱設(shè)計功率(TDP),但是在異構(gòu)多核處理器下,核心數(shù)量眾多,不同的核心有著不同的處理能力,不同核心在不同時刻的工作狀態(tài)差異過大,直接使用TDP 限制功率可能導(dǎo)致過多的熱余量,使得芯片無法發(fā)揮全部性能。在一般的DTM 方案中,人為設(shè)定了一個溫度閾值TDTM,即在片上系統(tǒng)中所有核心的最高溫度不應(yīng)超過TDTM,以避免暗硅效應(yīng)的出現(xiàn)。當核心溫度接近人為設(shè)定的警戒溫度閾值時,系統(tǒng)通過降低核心電壓與頻率,以降低核心溫度。因此,在熱安全功率系統(tǒng)下,多核系統(tǒng)的性能會受到影響,且分配的功率預(yù)算越低,系統(tǒng)的性能降低也會越多。
TSCDM 使用文獻[11]中的T-TSP 功率預(yù)算分配算法,可以基于每個核心的初始溫度和處理核之間的熱量傳遞模型在每個時刻為所有核心計算精確的功率預(yù)算。文獻[32]提出處理器的RC 熱網(wǎng)絡(luò)模型架構(gòu),如式(3)所示:
其中:矩陣A表示核心的熱電容;矩陣B為熱傳導(dǎo)參數(shù);向量T為每個節(jié)點的溫度值;向量T′表示每個節(jié)點上的溫度對時間的一階導(dǎo)數(shù);向量P為各節(jié)點的功耗;Tamb為環(huán)境溫度;列向量G為各節(jié)點與環(huán)境之間的熱導(dǎo)。該公式描述了片上的RC 熱網(wǎng)絡(luò)模型,由該模型可以得出所有核心的穩(wěn)態(tài)溫度Tsteady。TSCDM 按照預(yù)設(shè)的溫度閾值TDTM為每個核心尋找最佳的DVFS 設(shè)定。核心的功率與核心的有效開關(guān)電容、電壓、頻率有關(guān),可以用式(4)進行表示[33],在得到所有核心的功率預(yù)算分配后,利用式(4)在V-F表中獲取最佳的V-F 設(shè)置,以滿足熱安全功率的約束。
其中:Ceff表示有效開關(guān)電容;Vi、fi分別代表電壓和頻率。
本文利用HotSniper 模擬器搭建一個基于S-NUCA 架構(gòu)的異構(gòu)多核實驗平臺,運行SPLASH-2測試套件,將本文方案與Linux 自帶的CFS 方案、模擬器自帶的first_unused 方案、文獻[34]提出的輪詢調(diào)度(RRS)方案、文獻[26]提出的基于機器學習的調(diào)度器(MLS)進行性能和功耗對比。RRS 是一種在每個調(diào)度周期輪流將線程分配給大核與小核的調(diào)度方式,而MLS 是一種基于機器學習預(yù)測模型的調(diào)度方案。
本文使用HotSniper 模擬器搭建一個8×16 的異構(gòu)多核平臺,運行SPLASH-2 基準測試程序,以測試在不同策略下系統(tǒng)的性能,具體的平臺參數(shù)如表2所示。
表2 實驗平臺參數(shù) Table 2 Experimental platform parameters
SPLASH-2 中包含了各種不同性能側(cè)重的測試子項,因此SPLASH-2 的不同子項也對算力和I/O 帶寬有著不同的需求。根據(jù)文獻[35],不同測試子項按照計算密集型與訪存密集型的劃分結(jié)果如表3所示。
表3 不同測試子項的特征 Table 3 Characteristics of different test sub items
TSCDM 會區(qū)分計算密集型與訪存密集型任務(wù),因此,為了方便測試和評估性能以及盡可能提升本實驗對于真實使用環(huán)境的模擬程度,將不同的子項進行組合測試,盡可能讓不同的組合呈現(xiàn)不同的特征,具體的測試子項組合如表4 所示。
表4 實驗程序組合 Table 4 Experimental program combination
3.2.1 ANN 預(yù)測性能評估
由于本文所研究的對象為基于S-NUCA 架構(gòu)的異構(gòu)多核系統(tǒng),而大核與小核的性能無法橫向?qū)Ρ?,ANN 需要預(yù)測某個線程分別在大核與小核上的性能,因此需要分開評估ANN 對于大核和小核的IPC預(yù)測準確度。
本次實驗利用第2.2.2 節(jié)中獲得的數(shù)據(jù)集,隨機選取80%作為訓(xùn)練集,20%作為測試集,測試ANN對于大核和小核的IPC 性能預(yù)測值與真實值的均方誤差,均方誤差越低,說明ANN 對于數(shù)據(jù)的擬合程度越好,對于IPC 的預(yù)測值也越準確。實驗結(jié)果如圖7 所示,橫坐標表示進行均方誤差測試時輸入ANN 的數(shù)據(jù)所屬子項,縱坐標表示在某個測試子項下ANN 預(yù)測的IPC 值與真實值之間的均方誤差。由圖7 可以得到,ANN 性能預(yù)測器在radix 上的預(yù)測性能最好,在小核與大核上的誤差分別為0.12 與0.17,在volrend 上的效果最差,誤差分別為0.72 與0.79。這是由于在運行volrend 時,線程的階段切換過于頻繁,使得預(yù)測值無法對應(yīng)下一階段的線程運行狀態(tài),且在所有的應(yīng)用中,ANN 性能預(yù)測器對于小核的IPC 預(yù)測值優(yōu)于大核。同時,對于所有的測試子項,在小核與大核上的平均誤差分別為0.28 和0.32,表明本文的ANN 性能預(yù)測器可以較精確地預(yù)測線程IPC 值。
圖7 ANN 性能預(yù)測器均方誤差Fig.7 MSE of ANN performance predictor
3.2.2 熱安全約束下動態(tài)映射算法的性能評估
為了評估TSCDM 的性能,實驗對比CFS、first_unused、RRS 以及MLS 在運行不同測試子項組合下的性能表現(xiàn),同時也對比了去除任務(wù)遷移算法對于模型性能的影響以及核心資源利用率。通過記錄運行不同程序組合所耗費的時間計算出加速比。實驗使用表2 中的參數(shù)配置,max_parallelism 參數(shù)均設(shè)置為8,并且使用相同的DVFS 策略。
圖8 給出了TSCDM 分別對比first_unused、Linux 的CFS、RRS、MLS 運 行SPLASH-2 的加速 比情況,其中橫坐標表示運行不同的SPLASH-2 程序組合(見表4),縱坐標代表TSCDM 相對上述4 種方案以及去除TSCDM 中的任務(wù)遷移策略的加速比。由圖8 數(shù)據(jù)可知,在所有的程序組合下,TSCDM 的性能均優(yōu)于其他調(diào)度方案。其中,TSCDM 在對比RRS 調(diào)度方案時獲得了最高的加速比,為1.31,這是因為RRS 輪詢算法并未考慮程序運行過程中的階段性變化,也未考慮S-NUCA 架構(gòu)的緩存特性。MLS 也是一種基于機器學習進行性能預(yù)測的調(diào)度方案,在調(diào)度階段使用一種遺傳算法(GA)進行映射方案搜索,因此也未考慮S-NUCA 架構(gòu)特征,TSCDM 對比MLS 獲得了平均1.14 的加速比。對比去除任務(wù)遷移策略后的方案,TSCDM 獲得了平均1.05 的加速比,其中在程序組合2 中加速比最大,為1.08,但在程序組合7 下僅獲得1.03 的加速比,這是因為程序組合7 中所運行的測試子項更偏向于訪存密集型任務(wù),因此在S-NUCA 架構(gòu)下,對比去除任務(wù)遷移帶來的計算密集型功率預(yù)算,TSCDM 的優(yōu)勢并不明顯。通過實驗可知,TSCDM的調(diào)度算法與任務(wù)遷移算法能有效提升S-NUCA 架構(gòu)下的系統(tǒng)性能。
圖8 TSCDM 加速比測試結(jié)果Fig.8 TSCDM acceleration ratio test results
圖9 給出了TSCDM、CFS、first_unused、RRS和MLS 在核心資源利用率方面的對比結(jié)果。為了直觀地展示不同調(diào)度算法在核心資源利用率方面的區(qū)別,本文實驗平臺核心數(shù)量為128,而max_parallelism 參數(shù)設(shè)置為8,因此在統(tǒng)計核心資源利用率時,本部分實驗匯總使用的8 個核心在運行時的平均資源利用率,而不是整個片上的資源利用率。從圖9 可以看出,TSCDM 在組合6 中得到了最高的核心資源利用率,為98.5%,且7 個程序組合的平均資源利用率為91.9%。通過實驗結(jié)果可知,TSCDM 在所有的程序組合下核心資源利用率均優(yōu)于對比方案。
圖9 核心資源利用率對比Fig.9 Core resource utilization comparison
3.2.3 T-TSP 評估
為了驗證與傳統(tǒng)TSP 方案相比,本文采用的TTSP 是否可以提供更加精確的熱安全功率,減少片上熱余量,使得處理器可以使用更高的DVFS 設(shè)定以提升性能,實驗使用表2 中的虛擬機平臺配置,分別設(shè)定DTM(即溫度閾值TDTM)為60 ℃、65 ℃、70 ℃,運行SPLASH-2 中的測試子項,max_parallelism 參數(shù)設(shè)置為8,以運行完所有測試子項所耗費的虛擬時間作為衡量,對比測試T-TSP 與傳統(tǒng)TSP 的性能,結(jié)果如圖10 所示,橫坐標代表不同的測試子項,縱坐標則是在特定子項下本文T-TSP 對比TSP 方案的加速比。由圖10 可知,T-TSP 在所有應(yīng)用上的性能均優(yōu)于TSP,且設(shè)定的溫度閾值越低,T-TSP 的加速比越高,在cholesky 中,T-TSP 對比TSP 獲得 的加速比 最大,為1.13。這是因為T-TSP 在低溫度閾值下可以充分發(fā)揮芯片的熱余量,相比TSP 可以使用更積極的DVFS 策略,而溫度閾值過高時,這一優(yōu)勢會不明顯。本實驗說明在各種溫度閾值下,T-TSP 均可以大幅減少系統(tǒng)的熱余量以提高系統(tǒng)性能。
圖10 T-TSP 與TSP 對比結(jié)果Fig.10 Comparison results between T-TSP and TSP
3.2.4 調(diào)度方案與T-TSP 能耗比評估
能耗比代表單位功率下處理平臺的性能,對于某一固定的計算平臺,CPU 的性能會隨著主頻的提高而提升,但兩者不呈線性關(guān)系。然而,過高的主頻會導(dǎo)致芯片溫度過高從而觸發(fā)動態(tài)熱管理策略,不同的調(diào)度方案和功率預(yù)算策略為系統(tǒng)運行提供了不同的DVFS 設(shè)定,因此,系統(tǒng)的能耗比也會隨著不同的調(diào)度方案和DVFS 策略而改變。
為了驗證TSCDM 相比RRS 和MLS 所帶來的能耗比提升,本文使用表2 中的平臺配置,按照表5 中的數(shù)據(jù)鎖定不同的處理器最高主頻。由于RRS 與MLS 僅為映射方案,并未考慮DVFS 設(shè)定,因此本部分實驗RRS 與MLS 均使用HotSniper 模擬器默認使用的DVFS 方案。
表5 能效測試實驗配置 Table 5 Energy efficiency testing experimental configuration
為了對比不同頻率配置下的能效,本次實驗取序號6 的實驗配置,使用TSCDM 所得到的平臺功耗和性能作為對照(100%),其余實驗組均依次按照百分數(shù)折算。按照第3.2.2 節(jié)中的性能評估方法,實驗結(jié)果如圖11 所示,其中橫、縱坐標分別表示功耗和性能,圖中同一根曲線上的不同點分別表示表5 不同配置下測試得到的性能和功耗,例如TSCDM 上的6 個點分別表示使用表5 的6 種不同最高主頻而得到的功耗與性能,使用多項式擬合繪制出3 種調(diào)度方案的能效曲線。通過分析可知,圖中的曲線整體越靠近左上角說明能耗比越高,反之,曲線越靠近右下角說明能耗比越低。由圖11 可知,TSCDM 擁有比RRS 與MLS 更高的能耗比。在任意相同的功耗下,由于T-TSP 會盡量降低熱余量而使用更加激進的DVFS 方案,因此在每個主頻組別下TSCDM 均達到了最高的功率和性能。3 種方案在大核與小核均鎖定1.0 GHz 時能效區(qū)別最小,這是因為此時3 種調(diào)度方案都可以鎖定最高頻率而不觸發(fā)DTM,而TSCDM 由于在S-NUCA 上優(yōu)化了緩存延遲,因此仍然獲得了更高的性能。此外,由于本文的調(diào)度算法和T-TSP 降低了系統(tǒng)的熱余量,因此在系統(tǒng)鎖定最高頻率時會呈現(xiàn)最高的功耗和性能。實驗結(jié)果表明,本文TSCDM 方案可以有效提升整體能耗比。
圖11 不同調(diào)度方案的能耗比對比Fig.11 Comparison of energy consumption ratios for different scheduling schemes
本文通過分析S-NUCA 架構(gòu)下異構(gòu)多核處理器的特點,提出一種基于ANN 和動態(tài)映射的調(diào)度算法TSCDM。使用ANN 來預(yù)測某一個線程在大核和小核上的IPC 值,通過使IPC 值最大化確定每個線程與大核或小核的綁定關(guān)系。利用動態(tài)映射算法優(yōu)先將線程綁定至AMD 值較小的核心,再通過任務(wù)遷移策略自動判斷計算密集型任務(wù),將其遷移至靠近片上邊緣的空閑核心,以提高功率預(yù)算結(jié)果。實驗結(jié)果表明,相比CFS、first_unused、RRS 輪詢調(diào)度與MLS調(diào)度方案,在運行不同的基準測試組合子項時,TSCDM 均能有效提升系統(tǒng)性能與能耗比,同時本文采用的T-TSP 方案相較傳統(tǒng)TSP 方案可以有效降低熱余量,提升系統(tǒng)性能。
下一步考慮將TSCDM 應(yīng)用至實機中,以評估其在真實應(yīng)用場景下的表現(xiàn)。此外,將對調(diào)度算法進行優(yōu)化,以更好地應(yīng)對多種計算密集型任務(wù)的運行情況,同時嘗試將本文所提調(diào)度算法應(yīng)用到其他架構(gòu)下的異構(gòu)多核處理器中,以評估其通用性。