安 鑫,楊海嬌,李建華,任福繼
(1.合肥工業(yè)大學計算機與信息學院,合肥 230601;2.情感計算與先進智能機器安徽省重點實驗室(合肥工業(yè)大學),合肥 230601)
(*通信作者電子郵箱xin.an@hfut.edu.cn)
異構系統(tǒng)既使用簡單處理核(適合執(zhí)行存儲密集型任務的處理核)又使用復雜處理核(適合執(zhí)行計算密集型任務的處理核),使得系統(tǒng)設計時更加靈活,同時更利于功耗管理[1],不同的應用可以根據自身需求選擇系統(tǒng)中不同類型的處理核進行處理,從而實現(xiàn)應用程序的高效執(zhí)行,異構多核逐漸成為現(xiàn)代嵌入式系統(tǒng)的主要架構方式。但是隨著異構多核處理器核心類型的多樣化,任務調度在異構多核環(huán)境下也面臨更多的挑戰(zhàn)[2],需要充分考慮不同處理核間的差異性,同時針對應用的特點進行分析,優(yōu)化系統(tǒng)的資源分配。例如,復雜核心以更高的頻率運行因此能夠提供更高的性能,但這是以高功耗為代價的,相比之下,復雜核心的功耗比簡單核心高很多。因此,區(qū)別于同構系統(tǒng),異構多核系統(tǒng)需要綜合考慮不同的核心類型在性能和功耗上的不同表現(xiàn)。在異構多核系統(tǒng)中,不同類型的核在執(zhí)行不同的線程時的性能表現(xiàn)會有一定的差異性[3],此外,程序在不同的指令執(zhí)行階段也會有不同的表現(xiàn),并呈現(xiàn)出階段性變化的特點[4]。為了充分挖掘異構多核系統(tǒng)的特點和優(yōu)勢,需要尋找一種映射方法,根據線程的階段性變化以及處理核的特點進行動態(tài)映射。
隨著半導體技術的發(fā)展,單芯片上集成的核心數量隨之增加,使得現(xiàn)代多核處理器具有更高的功率密度。然而,功率密度的增加會導致片上溫度升高,高于臨界溫度會使得數字系統(tǒng)對瞬態(tài)故障的敏感性增加[5]甚至對芯片造成永久性損壞[6]。因此,在對異構多核系統(tǒng)進行在線映射時,需要進行熱管理,將溫度影響一并考慮進去,以提高系統(tǒng)的可靠性及穩(wěn)定性。溫度約束(即熱安全約束)通過功率約束來實現(xiàn),目前,主流的系統(tǒng)級功率限制有兩種,熱設計功率(Thermal Design Power,TDP)和熱安全功率(Thermal Safe Power,TSP)[5]。其中TDP是芯片級的功率限制,表示整個芯片上的功率之和,但卻并不能保證所有核心都避免熱損壞[7]。而且TDP 是一個常量值,將TDP 作為系統(tǒng)的功率限制容易造成性能損失。而TSP 根據系統(tǒng)的溫度閾值以及芯片上處理核的數量和位置為每個核心計算一個統(tǒng)一的安全功率預算,當線程到處理核的映射發(fā)生變化時,TSP 的計算結果也會隨之發(fā)生變化,并且只要每一個處理核的功耗不超過其TSP,系統(tǒng)就不會有熱損壞[8]。
然而,現(xiàn)有的多核系統(tǒng)映射方法很少考慮核心級的功率限制,相關的研究方法主要分析線程和多核平臺特性以及運行時線程的執(zhí)行特征來考慮線程到核心類型的動態(tài)映射[9]以實現(xiàn)系統(tǒng)性能優(yōu)化。有些方法中同時考慮了動態(tài)電壓和頻率調整(Dynamic Voltage and Frequency Scaling,DVFS)設置,以進一步提高性能(能量)效率[10-11];但大多數DVFS方法的目的是降低能耗,同時滿足應用程序性能要求,如參考文獻[9],而未檢查它們的DVFS 設置解決方案是否會超過峰值功率以及安全溫度限制。
TSP 除了可以作為系統(tǒng)的安全功率限制進而避免出現(xiàn)熱安全問題外,還可以用來進行處理核映射的決策[8]。實際上,芯片上不同位置的處理核具有不同的熱感受性[12],例如功耗相同的兩個處理核,位于芯片中心的處理核會比芯片邊緣的處理核溫度更高,這是因為處于芯片中心的處理核得到的來自于其他處理核傳遞的熱量更多。TSP 模型可以根據映射方案計算安全功率值,即TSP 值。不同的映射方案對應不同的TSP 值,因此可以對所有的映射方案計算TSP 值,最后選出TSP 值最大的映射方案作為最終方案。根據TSP 模型計算的TSP 值是能夠保障系統(tǒng)溫度安全的,所以最終利用TSP 決策出的映射方案是滿足熱安全前提下最大化系統(tǒng)性能的方案。
本文提出了一種基于溫度安全功率約束的動態(tài)映射方法,在滿足安全功率的前提下最大化異構多核系統(tǒng)的性能。給定若干個應用線程和一個異構多核平臺,在確保處理核運行時的溫度約束的前提下,通過動態(tài)地調整線程到處理核的映射以及處理核的功率(或頻率電壓)來達到最大化系統(tǒng)性能的目標。首先,采用基于神經網絡的預測模型得到線程到核心類型的綁定。其次,利用線程到核心類型的綁定關系以及溫度安全功率模型,對線程到處理核的具體映射位置進行映射評估和選擇,為下一階段的映射方案和每個映射核心的安全功率(或DVFS)設置作出決策。在保障溫度安全的同時盡可能使每個核心以最大的處理頻率工作,從而進一步提升系統(tǒng)性能。
本文的主要工作:
1)提出一種動態(tài)映射方法,將線程分配到異構多核平臺上確定的具體位置,而不是只考慮線程到核心類型的映射;
2)在異構多核系統(tǒng)的動態(tài)映射決策中同時考慮線程-核類型的綁定關系和溫度安全功率預算,保證溫度安全的前提下最大化系統(tǒng)性能。
目前,針對異構多核系統(tǒng)映射問題的方法和技術可以歸為三類:離線方法、在線方法以及混合(離線和在線)方法。
離線方法基于底層硬件和目標應用對設計空間進行廣泛探索[9],如文獻[13-15]。在文獻[13]中,作者針對運行在異構多核平臺的混合臨界應用提出了一種分區(qū)算法,一方面保證了應用執(zhí)行時在不同模式的時間限制,另一方面利用功率模型將應用盡量分配到使能耗最低的處理核上運行。文獻[14]中,基于遺傳算法,提出了一種雙種群且?guī)в性鰪娦统跏挤N群的任務映射算法,利用功率模型和其他靜態(tài)模型對系統(tǒng)的任務調度進行優(yōu)化。文獻[15]提出了一種靜態(tài)調度方法,這是一種新的基于種群的算法,它可以在運行時動態(tài)地在探索性和開發(fā)性搜索模式之間切換,該靜態(tài)調度器可以進行任務映射、調度和電壓縮放。以上的離線方法通常采用離線分析來確定映射方案,雖然簡單但是會產生額外的分析開銷,并且未充分考慮線程程序在執(zhí)行過程中的動態(tài)變化。
而動態(tài)調度通常在運行時進行決策或動態(tài)的調整,由于計算都是在運行時進行的,這些方法的目的是在較短時間內找到一個可行的方案,而不是花費大量的時間去尋找最優(yōu)的解決方案,因而這類方法大都采用啟發(fā)式算法來在線地快速產生解決方案[16]。例如,文獻[1]中提出了一種將線程動態(tài)分配給系統(tǒng)處理核的啟發(fā)式算法,以期達到使性能最大化的同時最小化能耗的目的,該算法采用迭代的方式,找到使系統(tǒng)吞吐量最大的線程間位置交換的方案,啟發(fā)式地計算出線程到核心的最佳映射方案,該方法可應用于異構以及具有DVFS能力的同構系統(tǒng);但是該方法具有一定的時間開銷,并且并未考慮程序的階段性變化以及溫度安全問題。文獻[17]中提出了一種動態(tài)調度方法,它使用預測方法將應用程序調度到最佳配置,以降低具有可配置緩存的系統(tǒng)的能耗,采用人工神經網絡(Artificial Neural Network,ANN)對預測模型進行訓練。訓練后的ANN 可以用來預測最佳的核心,并通過調優(yōu)啟發(fā)式方法探索設計空間。跟本文的方法比較,該方法未考慮溫度安全問題,并且需要對應用進行額外的離線分析。
離線和在線混合的方法利用離線分析的結果進行在線映射的決策,由于同時利用了離線方法和在線方法的優(yōu)勢,混合型方法通常能夠取得較好的效果。文獻[3]提出了一種基于階段感知的負載平衡方法,該方法考慮在線運行時任務的階段變化特征,對于任務的每個執(zhí)行階段,利用經驗數據模型進行下一執(zhí)行階段狀態(tài)的預測,從而將任務調度到合適的處理核上,能有效提升系統(tǒng)性能。文獻[9]提出了一種自適應的映射方法,首先是性能監(jiān)測計數器進行在線的數據收集,然后利用離線訓練的性能預測模型對應用在不同類型上的性能表現(xiàn)進行預測,最后進行資源組合(處理核數量及類型)的評估及選擇,此外,該方法還設置了資源管理器,用于監(jiān)測應用性能、工作負載,以及應用的完成及新應用的到達情況,進而對映射進行調整。文獻[2]提出了一種基于機器學習預測模型的在線映射方法:一方面通過采用機器學習技術來構造系統(tǒng)性能預測模型來對不同映射方案和每個核的頻率值進行高效的性能評估;另一方面,將其與遺傳算法進行整合構造了一個在線的映射調度方法。文獻[2]中,預測模型僅有一個預測器,且模型的構建更為簡單,預測器的輸入僅僅是處理核的映射位置及頻率,衡量映射效果的指標是任務執(zhí)行的時間;預測模型的原始數據集的獲取是通過模擬器隨機生成的。本文中的性能預測模型分別為兩類處理核訓練性能預測器,并且通過對線程及處理核的特征進行分析結合優(yōu)化目標對預測器的輸入和輸出進行了篩選;預測器原始數據集是通過在標準測試集上運行選取的應用(barnes、cholesky、fft、fmm、lu、ocean、volread、radix、raytrace、radiosity)得到的。文獻[18]提出了一種基于階段檢測的異構感知的多核調度方法,利用階段檢測技術,當線程相對于上一階段的變化大于一定的閾值時,根據性能預測器的預測結果對系統(tǒng)進行重調度。該方法只考慮一大核三小核的簡單異構多核系統(tǒng)中線程到處理核類型的映射,而本文中是在兩大核四小核的更復雜的異構多核系統(tǒng)中將線程分配到異構多核平臺上確定的具體位置。最主要的是,以上文獻所提方法中均未考慮到當前學者們普遍關注的熱安全問題,然而隨著半導體技術的發(fā)展,單芯片上集成的處理核數量逐漸增加,現(xiàn)代處理器具有更高的功率密度,熱安全問題逐漸引起相關研究者的重視。
文獻[7]中利用熱安全功率模型計算功率限制,然后利用映射算法進行映射方法的選擇,由于不用再考慮核心間的熱量傳遞進而縮小了映射空間的探索。該方法在保證系統(tǒng)溫度安全的前提下,用功率約束來減小映射方案的探索空間,最終用系統(tǒng)吞吐量來評估映射方案。文獻[6]中提出了一種運行時任務遷移算法,根據任務的階段和處理核的特點遷移任務來提高異構多核系統(tǒng)的性能。利用性能預測模型得到滿足溫度安全約束的最大化系統(tǒng)性能的映射方案,通過溫度安全功率模型計算處理核的功率預算,將功率預算加入到性能預測器的特征集中,從而使映射方案滿足溫度安全約束的同時最大化系統(tǒng)性能。文獻[6-7]方法均只考慮了線程到處理核類型的映射,而本文方法先利用性能預測模型進行線程到處理核類型的映射,接著利用溫度安全功率約束,在滿足線程到處理核類型的匹配關系的前提下,進一步將線程映射到芯片上的處理核的具體位置上。
綜上,本文在綜合考慮線程的運行特點和不同類型處理核的優(yōu)勢后,利用離線和在線混合的動態(tài)映射方法,在溫度安全功率約束下進行映射,在保證溫度安全的前提下最大化異構多核系統(tǒng)的性能。
本文中的系統(tǒng)性能通過平均每個時鐘周期內程序所執(zhí)行的指令數,即指令/周期(Instruction Per Cycle,IPC)來表征。一般情況下,多核映射問題都采用一個線程映射到一個處理核的模式[6],本文也采用這種模式。在對本文方法進行詳細描述時,為了便于對方法的理解,假設本文的異構多核平臺由大核和小核兩類處理核組成,其中大核表示適合運行計算密集型線程的處理核,小核表示適合運行存儲密集型線程的處理核,其他更加復雜的處理核類型組成可以采用類似的處理方法。圖1 給出了該方法的整體框架,主要由基于ANN 的性能預測器(詳見2.1節(jié))、用于線程到核心類型綁定的線程-核心類型匹配部件(詳見2.2 節(jié))和熱安全映射計算部件(詳見2.3節(jié))三部分構成。本文方法具體工作分為四個階段:
圖1 本文方法的整體框架Fig.1 Overall framework of proposed method
1)在每個系統(tǒng)調度周期收集異構多核平臺上所運行的各個處理核和線程的運行信息(如IPC 值與程序行為變化相關的參數等),根據相關信息判斷是否需要進行重映射。
2)性能預測器根據線程的運行信息來預測線程在不同類型處理核上的性能。
3)線程-核心類型匹配部件根據性能預測器得出的各個線程在不同核心類型上的性能預測值,來決定當前時刻最優(yōu)的匹配方案,即線程與處理核類型的最優(yōu)映射關系,完成線程到核心類型的綁定。
4)在確定線程與處理核類型的綁定后,熱安全映射計算部件對線程到處理核的具體映射位置進行映射評估和選擇。通過在映射計算中考慮線程與處理核的匹配關系以及TSP的計算,確保處理核運行時不會達到其溫度約束前提下最大化異構多核系統(tǒng)的處理性能。核心的最大電壓和頻率可根據安全功率預算進行相應的設置。
完成以上四個階段后,映射器進行映射方案的部署和電壓頻率設置。
為了找到一個最佳的映射方案以實現(xiàn)系統(tǒng)性能最大化的目標,需要對不同的資源分配方式進行評估。本文利用性能預測器對線程在不同類型處理核上的IPC 進行預測,由此得出對不同的映射方案的效果的預測,進而選出符合預期目標的方案。本文中分別為大核和小核構建性能預測器,其輸入是經過選取和處理的特征值集合,包括線程和處理核相關的信息,輸出是表征本文最大化性能目標的IPC。
為了在異構多核系統(tǒng)中合理分配資源以滿足應用程序的性能要求,需要知道應用程序在各種類型處理核上的性能表現(xiàn)[9]。通常有兩種方式:一種是將線程在所有處理核類型上運行;另一種是只在其中一種處理核類型上運行而通過利用其運行結果預測該線程在其他類型處理核上運行的性能表現(xiàn)。很顯然,第一種方式中,在切換處理核類型時需要進行線程的遷移,進而帶來遷移的時間開銷,并且隨著系統(tǒng)復雜度(處理核數量及類型)的增加,遷移代價也會隨之大幅增加,不利于在線映射方法中應用。本文中使用后一種方法,即線程在其中一種處理核類型上運行,由該運行結果獲取的相關參數作為其他類型處理核的性能預測器的輸入,預測該線程在其他類型處理核上的性能表現(xiàn)。相對于根據線程在同一種類型核上運行的參數來預測其運行效果,采用線程在另一個核上的運行參數來預測其在該核的運行效果會有更大的誤差,但是由于在運行時,想要得到某線程在另一個核上的運行參數,需要將其遷移到另一個核上運行來獲得,這會大幅度增加在線的運行開銷。而通過對不同核上的數據進行標準化處理后得到的模型誤差損失相對于這個在線遷移的開銷是可以接受的,因此,在本文的在線映射方法中選擇了后者。
構建一個性能預測模型,關鍵有三步:1)選取和性能相關的指標或參數;2)特征數據的獲取與預處理;3)預測函數的選擇。
2.1.1 參數選擇
為了提高性能預測模型的預測準確度,對于模型的輸入參數或指標的選取應當與本文的目標輸出IPC、線程的行為以及處理核密切相關?,F(xiàn)代處理器支持對各種架構事件的監(jiān)控,可用于分析性能、功率等。然而,由于平臺提供的硬件性能監(jiān)控計數器數量有限,并不是所有性能指標都可以同時監(jiān)測[9]。此外,在進行參數的選擇時還要考慮在線映射時的高效性?;谝陨系姆治鲆约皡⒖嘉墨I[19-20]中的信息,本文從18 種參數中選取了和IPC 值關系較密切的9 個指標來構建ANN 性能預測器。這9個指標包括與緩存命中率相關的三個參數:一級數據緩存(Level 1 Data Cache,L1-D Cache)命中缺失率,二級緩存(Level 2 Cache,L2 Cache)命中缺失率和三級緩存(Level 3 Cache,L3 Cache)命中缺失率,以及與程序行為變化相關的六個參數:讀內存指令、寫內存指令、浮點加法指令、浮點減法指令、浮點乘法指令和浮點除法指令。
2.1.2 數據獲取與預處理
本文使用Sniper工具來獲取用于訓練大核和小核ANN性能預測器的兩個數據集。通過執(zhí)行SPLASH-2[21]中的所有應用,收集每個周期的相關輸入參數和輸出標簽等數據,以此來獲得原始數據集。
本文中,利用線程在一種類型處理核上的運行信息作為性能預測器的輸入參數,來預測該線程在其他類型處理核上的性能表現(xiàn),線程在不同類型的處理核上執(zhí)行時,指令條數會有數量級的差別,因此,作為輸入參數的數據需要具有通用性,在大核上運行線程得到的數據需要經過處理才能作為小核性能預測器的輸入,反之亦然。此外,不同指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理,以實現(xiàn)數據指標之間的可比性。原始數據經過數據標準化處理后,各指標處于同一數量級,適合進行綜合對比評價。因此本文對收集到的原始數據作了以下處理:
1)針對上文提到的大核性能預測器和小核性能預測器指令條數的數量級差別問題,本文用比例(某類指令條數/指令總條數)來表示指令的執(zhí)行情況。
2)對所有參數進行數據歸一化,本文用Min-Max 歸一化(見式(1)),將特征縮放到最小和最大值之間的給定范圍規(guī)范化特征,保證特征之間可以比較,減少溢出錯誤的可能。
其中:a表示需要縮放的范圍的最小值;b表示需要縮放的范圍的最大值;Xmin表示樣本數據最小值;Xmax表示樣本數據的最大值。
2.1.3 預測函數
本文希望找到一個能表征輸入變量和輸出變量之間關系的預測函數,根據參考文獻[19],ANN 可以通過定期提供新的數據樣本來保持動態(tài)學習(通常稱為在線學習)。此外,ANN 具有高速尋找優(yōu)化解的能力。因此,ANN 適合應用于本文的在線的快速預測模型中。考慮到多核映射問題的復雜性較大,本文最終使用了帶有一個隱藏層的三層的神經網絡來構建ANN性能預測器。
ANN 的輸入層由9 個神經元節(jié)點組成,用來接收9 個輸入參數。隱層節(jié)點數目對神經網絡的性能有一定的影響。隱層節(jié)點數過少時,學習的容量有限,不足以存儲訓練樣本中蘊涵的所有規(guī)律;隱層節(jié)點過多不僅會增加網絡訓練時間,而且會將樣本中非規(guī)律性的內容(如干擾和噪聲)存儲進去,反而降低泛化能力,導致過擬合現(xiàn)象的出現(xiàn)。本文參考文獻[22]中所提出的經驗公式:2n+m,來確立隱藏層節(jié)點的個數,其中n為輸入節(jié)點的數量(本文中輸入節(jié)點個數為9),m為0~10的正整數,在對m的數值進一步進行實驗分析后,選擇使ANN性能預測器在訓練集上獲得最好效果的m值(即5),因此最終本文選擇的隱藏層節(jié)點個數為23。隱藏層的每個神經元節(jié)點會接收所有的輸入節(jié)點結果,在對其完成計算后通過激活函數傳遞到輸出層。輸出層利用所有隱藏神經元節(jié)點的計算結果得到最后的輸出值(IPC)。
本文使用Maxout函數作為ANN 的激活函數,Maxout的擬合能力非常強大,并且計算量較小,不含有指數等復雜的運算。因此,使用Maxout 在降低系統(tǒng)調度過程中的預測開銷具有顯著的效果,這對于在線調度方法來說是至關重要的。同時,Maxout函數在訓練過程中也可以有效避免梯度飽和問題,防止訓練失敗的情況出現(xiàn)。ANN 的結構如圖2 所示,其中:W即Weight,表示權重;b即bias,表示偏置)。
圖2 ANN的結構Fig.2 ANN structure
ANN 性能預測器屬于機器學習中的回歸模型,因此本文使用回歸模型常用的均方誤差(Mean Squared Error,MSE)損失函數來對ANN 性能預測器進行訓練。使用MSE 函數訓練ANN性能預測器時,整個ANN的梯度會隨MSE值的增大而增大,而MSE值趨于0時網絡的梯度則會減小,因此采用固定的學習率即可保證整個網絡可以有效的收斂,并在訓練結束時取得良好的預測效果。一般常用的學習率有0.000 01、0.000 1、0.001、0.003、0.01、0.03、0.1、0.3、1、3、10,本文中通過基于經驗的手動調整的方式,嘗試以上不同的固定學習率,觀察ANN 模型迭代次數和損失值的變化關系,找到損失值下降最快關系對應的學習率為0.001,所以本文將學習率設置為固定的0.001。
對于每個線程,通過性能預測器得到了在不同類型處理核上運行時的性能預測IPC 值,而本文希望得到的是線程到核心的映射關系,使得異構多核系統(tǒng)的整體性能最大化,因此本文設計了一個核類型匹配部件來找出線程與處理核類型的最優(yōu)匹配,使得總的IPC值最大化。
該部件的主要功能是利用ANN 性能預測器給出的各個線程在不同類型處理核上的性能(假設有大核和小核兩種類型處理核,則對應IPCbig、IPCsmal)l來對所有可行的匹配方案進行評估,找出使所有線程總的IPC,即IPCsum最大的匹配方案。假設異構多核平臺需要映射的線程數量為M,其中N個需要映射到大核上,其余M-N個線程映射到小核上。核類型匹配部件每次選擇N個線程的IPCbig和其余M-N個線程的IPCsmall相加得到本次匹配的IPCsum,完成對所有可行匹配方案的探索,并將值最大的匹配方案輸出給下一步的熱安全映射計算部件。
具體來說,假設有大核和小核兩種核心類型,大核數量為N,線程數為M,性能預測器給出的結果是每個線程在大核心上的值以及在小核心上的值。如此,由性能預測器便能得到所有線程在大核心上的性能表現(xiàn)集合和所有線程在小核心上的性能表現(xiàn)集合,即:
核類型匹配部件需要從IPCbig_i集合中選出N個元素;再從IPCsmall_j集合中選出M-N個元素,且j≠i;計算選出的元素的和,記為SUM,將當前最大的值記錄到SUMmax中。重復進行,直到所有組合都計算完畢,找到對應的線程到處理核類型的匹配。
一般來說,當處理核在較高的電壓-頻率(Voltage-Frequency,V-F)級執(zhí)行時,為了實現(xiàn)系統(tǒng)的高性能就要以功耗為代價[8]。因此,為了進一步提高系統(tǒng)性能,一旦處理核上運行的線程確定以后,為了進一步提高性能,需要有盡可能高的V-F 設置。然而,V-F 的升高會導致功耗問題,進而造成熱安全問題。因此,功率預算技術(如TSP),為系統(tǒng)提供一個安全的功率限制,當利用DVFS 調整V-F 來最大化性能時,確保功率與安全的功率預算接近而不超過它。
假設Q是滿足線程-核心類型綁定的映射集:對于映射集中的每個映射Qi,TSP(Q)i表示所有核心的功率預算。為了最大化性能,本文需要找到使TSP 最大的映射方案,然后V-F 級別可根據功率預算進行調整。
在本文的方法中,找到合適的功率預算是很重要的一步。如果處理核配備了功率表,則可以通過測量每個處理核的實際功率并采取相應的措施來避免熱安全問題。但是,在硬件條件不足的情況下,也可以利用離線應用程序分析或通過性能計數器進行運行時功率估計,將核心設置與功耗值關聯(lián)。本文使用參考文獻[8]中的功率預算技術,為每個處理核計算統(tǒng)一的安全功率預算。
處于芯片中不同位置的處理核具有不同的熱感受性[12]。對于同一類型的處理核,線程不同的映射位置也會帶來不同的映射效果,例如某一線程T適合的處理核類型為大核,而芯片中有兩個大核,對應兩個不同的位置,此時對于線程T來說就有兩種位置的選擇。因此,在知道線程的適配處理核類型后,還需要對線程的具體映射位置進行探索。對于不同的映射方案,同時考慮前文工作中的線程和處理核類型的綁定以及功率預算限制,最終決策出最佳的映射方案。由于本文使用的處理核數量較少,可以通過遍歷的方法對所有可行的映射方案進行探索,當處理核數量較大時,可通過啟發(fā)式的算法對探索空間進行簡化。具體偽代碼如算法1所示。
本文中利用DVFS 來對系統(tǒng)中處理核的電壓和頻率進行調節(jié),而DVFS調節(jié)時需要提前為其提供V-F等級表(由電壓-頻率對組成的表格),當系統(tǒng)需要進行電壓和頻率的調整時則根據該表進行調節(jié)。因此,本文在得到每個處理核的安全功率后,進一步探索了電壓和頻率的設置。利用文獻[23]中的功率計算模型(見式(2)),根據本文的硬件平臺的可用頻率范圍,利用文獻[24]中電壓和頻率的最佳對應表,找到可用頻率對應的電壓,根據式(2)計算每一組V-F 對的相應功率,再結合熱安全功率約束選出功率不超過熱安全功率的V-F 對構成V-F 等級表,為DVFS 提供科學的V-F 等級表,使得DVFS 在提高系統(tǒng)性能的同時避免造成熱安全問題。
其中:Ceff代表有效開關電容;Vi和fi分別代表電壓和頻率。
為了驗證本文提出的熱安全約束下異構多核感知的動態(tài)映射方法,本文基于Sniper模擬器搭建了一個異構多核平臺,通過不同的程序組合來模擬現(xiàn)實世界中不同的應用行為。此外,將本文方法與常見的輪詢調度(Round Robin Scheduler,RRS)[25]進行對比。
在本次實驗中,本文基于Sniper搭建了一個2大核-4小核的異構多核平臺。大核和小核的指令集架構均基于Intel Nehalem x86 架構,且處理核的主頻均為2.66 GHz,發(fā)射寬度均為4,兩種類型的處理核具有相同的緩存架構(其中L1 Cache 為256 KB,L2 Cache 為512 KB,共享的L3 Cache 大小設置為8 MB)。但是大核擁有128 的指令窗口大小和長度為48的讀取隊列,而小核的指令窗口大小為16,讀取隊列長度為6。頻率調節(jié)的步長為0.20 GHz,對于每個頻率,電壓的設置參照文獻[24]。
從常用的基準套件SPLASH-2 中獲得應用:barnes、cholesky、fft、fmm、lu、ocean、volread、radix、raytrace、radiosity。用不同的執(zhí)行場景如單個應用程序、多個應用程序的并發(fā)執(zhí)行,來模仿現(xiàn)實世界的各種行為。為了對本文方法進行全面的評估,本文將SPLASH-2 基準測試集進行了分組,每組包含4 種程序,分組的原則是讓每種組合里盡量同時擁有MSE 較低和MSE 值較高的程序,具體分組見表1,并通過進行多組實驗來盡可能充分地模擬真實環(huán)境下的復雜調度場景。
表1 實驗用的應用程序組合Tab.1 Combinations of programs used in experiments
本文選取RRS 作為對照組,采取實驗復雜度遞增的方式進行對照實驗,分別做了以下實驗:
實驗1 將RRS 作為對照組,將本文的性能預測模型在不考慮安全功率的情況下對線程進行映射,即核類型匹配部件計算出結果后,不考慮線程映射的具體核心位置(具體的映射位置隨機指定),并且不考慮功率限制,將實驗結果與RRS方法比較,驗證本文的性能預測模型在性能(IPC)上的優(yōu)越性。
實驗2 仍然以RRS 為對照組,比較本文提出的帶功率約束的映射方法與RRS 的性能表現(xiàn),驗證加了安全功率約束后對系統(tǒng)性能的影響。
此外,為了比較使用熱安全功率模型計算安全功率預算與使用固定功率約束值下映射方法的不同效果,本文進行了不同的功率約束設置下,關于系統(tǒng)吞吐量和資源利用率的對比實驗。對于恒定的芯片級功率約束,由于這是一個模擬平臺,缺乏帶有關于TDP 信息的數據表,因此不能簡單地考慮TDP。本次實驗考慮兩種不同芯片級功率預算,在參考文獻[5]中取m=4和m=16,得到的值分別為70 W 和140 W,這也是當前相關技術中的具有代表性TDP值[8]。
3.2.1 性能預測器評估
本文考慮的是有大小兩種處理核的2大核-4小核的異構多核平臺,需要建立兩個ANN 預測器:一個預測大核的性能,另一個預測小核的性能。兩個ANN 模型都是使用從運行SPLASH-2 中收集的數據集進行訓練和評估的。將經過預處理后的原始數據集按照機器學習模型訓練和驗證常用的劃分方法,本文將總數據集的70%用來訓練模型,剩下的30%作為測試集用來評估該模型在未知數據上的預測能力。性能預測器的MSE如圖3所示。
圖3 ANN預測器的MSEFig.3 MSE of ANN predictor
均方誤差(MSE)值越低表示ANN 性能預測器的效果越好。從圖3 可看出,小核性能預測器和大核性能預測器在barnes 上表現(xiàn)最好,MSE 值分別為0.022 和0.015;在volread上表現(xiàn)最差,MSE 值分別為0.510 和0.610。從平均值來看,小核在10 個應用程序上的平均MSE 值為0.170,大核的平均MSE 值為0.200,由實驗數據可以看出,總體上大核性能預測器和小核性能預測器均具有較好的預測效果。
3.2.2 熱安全約束下的動態(tài)映射方法實驗結果
圖4 給出了實驗1 將RRS 作為對照組,并將本文的映射方法在不考慮安全功率的情況下對線程進行映射,驗證本文的預測模型在性能(IPC)上的優(yōu)越性。其中橫坐標表示不同的程序組合編號,縱坐標是本文提出的映射方法(不考慮安全功率)與RRS 比較所實現(xiàn)的IPC 加速比。從圖4 中可以看出,本文提出的映射方法(不考慮安全功率)相較于RRS 在組合1上加速比最低,在組合4 上加速比最高,分別是1.340 和1.721,在5 種組合下平均實現(xiàn)了1.500 的加速比。這是因為組合1 含有MSE 值最高的volread 和MSE 較高的fft,因此整體的ANN 性能預測器預測效果較其他組合相比最差,所以達到的IPC 加速比最低。同理,組合4 中各程序的MSE 值整體比較接近,ANN 性能預測器的整體預測效果較好,因而達到了最高的IPC 加速比。而RRS 采用輪流將任務調度到每個處理核的方式,忽略了任務的資源需求以及處理核的特點,未能充分利用異構多核處理器的特點和優(yōu)勢。相比之下,本文所提出的方法通過感知線程行為的變化和不同時刻下線程對處理核資源的需求,將線程及時分配到最適合其運行的處理核上,從而能夠更好地發(fā)揮異構多核所帶來的優(yōu)勢,獲得更好的映射效果。
如圖5 所示,運用本文的方法在相同的實驗環(huán)境下進行調度時,6 種組合間的IPC 加速比的差異性跟圖4 中的實驗結果幾乎一致,但是,組合4 和組合6 的加速比均要比圖4 中相應組合的加速比略低,這是由于加了熱安全功率約束,核心不能在其最大功率下運行,而是在熱安全功率的約束下以其能夠達到的在保障熱安全的最大功率運行。由實驗結果可以看出雖然加速比小于前者,但是最大差距是組合6,僅為0.060,所以在性能上沒有造成巨大的損失,但后者卻保證了系統(tǒng)的熱安全。此外從平均值來看,圖4 的平均加速比為1.500,而用本文的方法跟RRS 方法比較,加速比為1.530,指令/周期(IPC)提高53%左右,總體性能得到了一定的提升。由實驗結果可以看出本文方法不僅保證了系統(tǒng)的熱安全、穩(wěn)定性和可靠性,還進一步提升了系統(tǒng)的性能。
圖4 本文方法(無TSP約束)和RRS的加速比Fig.4 Speedup ratio ofproposed method(without TSP constraint)and RRS
圖5 本文方法和RRS的加速比Fig.5 Speedup ratio of proposed method and RRS
此外,本文還考察了不同的功率約束設置對系統(tǒng)吞吐量和資源利用率的影響,對比功率約束為固定值與使用TSP 作為功率約束的不同效果。
圖6 給出了本文所使用的加入安全功率約束后與使用固定的設計功率約束值的異構感知調度方法的應用吞吐量結果。從圖6 可以看出,引入安全功率約束的動態(tài)映射方法與使用70 W 和140 W 的TDP 值相比,系統(tǒng)吞吐量分別提升了29.0%和19.8%。這是由于引入了安全功率約束,可以保證在異構多核平臺下每個處理核擁有更合理的功率閾值,和使用固定TDP相比,降低了處理核性能被限制的可能性,更多的處理核可以同時工作,減少了暗硅現(xiàn)象的出現(xiàn),因此具有更高的吞吐量。
圖6 使用不同功率預算的系統(tǒng)吞吐量對比Fig.6 Comparison of system throughput using different power budgets
圖7 給出了在三種不同的功率約束下,運行應用程序時的資源利用率情況。很顯然,引入TSP 約束的動態(tài)映射方法的資源利用率(91%)高于另外兩種功率約束情況下的資源利用率(77%和83%)。這是因為當功率預算固定時,在異構多核平臺上處理核的熱量較高會導致暗硅現(xiàn)象的出現(xiàn),為了保證處理核不被燒壞,不少處理核進入低功耗模式運行,降低了系統(tǒng)的資源利用率;而在引入TSP 約束后,暗硅現(xiàn)象得以減少,更多的處理核可以發(fā)揮作用,因此系統(tǒng)的資源利用率較高。
圖7 使用不同功率預算的資源利用率對比Fig.7 Comparison of resource utilization rate using different power budgets
本文提出了一種基于溫度安全功率約束的動態(tài)映射方法,以最大化異構多核系統(tǒng)的性能。該方法在考慮處理核的類型及線程執(zhí)行的階段性特征,以及芯片上不同位置的處理核具有不同熱感受性的基礎上,首先基于一個神經網絡性能預測器來對線程與處理核類型進行匹配,然后再利用溫度安全功率模型將經過匹配后的線程進一步映射到芯片上的具體位置上,從而達到在保證系統(tǒng)溫度安全下優(yōu)化系統(tǒng)性能的目的。
在未來的工作中,雖然一般情況下功率越大則系統(tǒng)性能越好,但是IPC 和功率間的關系還有待探究,所以本文接下來一方面是尋找IPC 和功率之間的關系,從而能夠使系統(tǒng)在滿足應用性能的情況下進一步優(yōu)化功率。另一方面,為了更好地驗證本文方法,將使用更多的處理核,并且采用實際的運行平臺來進一步進行實驗。