唐 旭, 張多利, 王 杰, 宋宇鯤
(合肥工業(yè)大學(xué) 微電子學(xué)院,安徽 合肥 230601)
自第一款多核處理器誕生以來(lái),關(guān)于多核處理器和計算并行化的研究從未停止[1-2]。其中多核調度問(wèn)題是核心問(wèn)題[3],調度方法的優(yōu)劣直接決定了系統的性能高低。任務(wù)調度分為靜態(tài)調度和動(dòng)態(tài)調度[4],靜態(tài)調度側重于任務(wù)執行之前,對所有任務(wù)的計算時(shí)間和任務(wù)間通信量進(jìn)行整體分析[5-6],從而決定相對較優(yōu)的任務(wù)發(fā)射執行順序[7];但是靜態(tài)任務(wù)調度通常是基于任務(wù)間通信無(wú)擁塞等多種理想化假設[8-9],且對于任務(wù)各項參數的預估往往不準確,因此在實(shí)際應用中,更多的是使用動(dòng)態(tài)任務(wù)調度。動(dòng)態(tài)任務(wù)調度的核心思想是實(shí)時(shí)監測計算資源的空閑情況等系統狀態(tài)[10],實(shí)時(shí)調整調度方案[4],發(fā)射滿(mǎn)足發(fā)射條件的任務(wù),將空閑的計算資源利用起來(lái)。
此外,隨著(zhù)處理器和外部存儲器間性能增速差的擴大,外部存儲器的讀寫(xiě)延遲和帶寬成為限制系統性能的關(guān)鍵瓶頸[11-12]。由于任務(wù)級的計算數據粒度大,外部存儲器的讀寫(xiě)延遲高,因此,減少非必須的外部存儲器讀寫(xiě)次數,進(jìn)而減少在外部存儲器讀寫(xiě)上的時(shí)間消耗,是提升系統性能的關(guān)鍵問(wèn)題之一[13]。
文獻[14]研究了一種多級計算體系結構的控制器設計,該控制器可自動(dòng)提取粗粒度計算任務(wù)之間的并行性,并將這些任務(wù)分配到同構處理器上執行??刂茩C制與超標量處理器類(lèi)似,使用寄存器重命名、亂序執行和動(dòng)態(tài)調度等技術(shù)實(shí)現調度任務(wù)執行的目標。文獻[14]的研究結果對粗粒度任務(wù)調度控制器的設計具有重要的參考價(jià)值,但未涉及對異構系統調度技術(shù)的研究。
文獻[15]指出顯式并行編程的復雜性極大地限制了編程人員從多處理器芯片上獲得更高性能的可能性。為簡(jiǎn)化軟件編程,文獻[15]提出了一種任務(wù)級超標量微體系結構,作為多級計算體系結構的控制器,完成了調度控制器模型的計算機仿真和功能測試。
上述文獻未考慮系統的異構特性、核間通信方式和存儲器的讀寫(xiě)延遲等實(shí)際約束。本文在任務(wù)級并行自動(dòng)提取技術(shù)、動(dòng)態(tài)調度技術(shù)和亂序發(fā)射技術(shù)的基礎上,充分考慮系統的異構特性、存儲器約束和核間通訊約束完成設計實(shí)現,研究一種減少外部存儲器訪(fǎng)問(wèn)開(kāi)銷(xiāo)的方法,顯著(zhù)提升了系統的性能。
本文面向的異構多核計算系統整體結構如圖1所示,系統主要包括主控制器、計算單元、通信網(wǎng)絡(luò )和功能單元。計算單元包括可重構計算單元(reconfigurable computing unit,RCU)、通用浮點(diǎn)計算單元(general float processor,GFP)、快速傅里葉變換(fast Fourier transform,FFT)硬件加速器3類(lèi)。功能單元包括雙倍數據速率(double data rate,DDR)存儲器等。通信網(wǎng)絡(luò )包括狀態(tài)網(wǎng)(status network,STAT-NET)、配置網(wǎng)(configure network,CFG-NET)、數據網(wǎng)(data network,DATA-NET)。
圖1 異構多核計算系統整體結構
目標異構多核計算系統使用多層編程的方式完成預期的計算目標。程序中的配置指令按照程序中確定的坐標發(fā)送給對應坐標的計算單元,用于控制計算單元的計算方式,任務(wù)的發(fā)射過(guò)程嚴格遵從程序的預期設計,主控制器負責執行控制指令,計算單元負責執行計算指令進(jìn)行計算,由此實(shí)現多層編程。由于計算單元掛載在通信網(wǎng)絡(luò )上,也將計算單元稱(chēng)為“計算節點(diǎn)”,下同。
三層網(wǎng)絡(luò )組成整個(gè)系統的控制、狀態(tài)、數據的交互通道。狀態(tài)網(wǎng)的作用是收集片上網(wǎng)絡(luò )中各個(gè)部件的工作狀態(tài),并反饋給主控制器。配置網(wǎng)的主要作用是負責傳送主控制器下發(fā)的各條配置信息給各個(gè)單元。數據網(wǎng)是片上各個(gè)單元之間大批量數據傳輸的載體。數據網(wǎng)使用2D MESH的片上網(wǎng)絡(luò )(net on chip,NoC)作為拓撲結構。
本文面向的目標多核計算系統中,任務(wù)定義為一次計算過(guò)程,數據的起點(diǎn)是DDR存儲器,經(jīng)過(guò)運算單元運算,終點(diǎn)是DDR存儲器。本文將任務(wù)按照是否寫(xiě)回DDR存儲器分為強寫(xiě)回任務(wù)和弱寫(xiě)回任務(wù)。
(1) 強寫(xiě)回任務(wù)指必須將結果數據寫(xiě)回DDR存儲器的任務(wù)。
(2) 弱寫(xiě)回任務(wù)指結果數據可由調度器決策寫(xiě)回DDR存儲器或者發(fā)射給下一個(gè)計算節點(diǎn)。
在編程階段,編程者需要根據實(shí)際的算法指定任務(wù)的不同類(lèi)型。
任務(wù)的編程規范舉例如下:
Task1
Configure FU cfg_info
Configure DDR.read address
Configure DDR dst=FU
Configure DDR.write address
Configure FU dst=DDR
Configure START
其中:Configure表示配置指令,配置指令經(jīng)系統主控制器譯碼后通過(guò)配置網(wǎng)發(fā)送給各個(gè)單元,這些單元包括計算單元、DDR存儲器和數據網(wǎng)節點(diǎn)等;FU表示三類(lèi)計算單元。上述任務(wù)5條配置信息的含義如下:
(1) 配置計算單元的計算信息。
(2) 配置DDR存儲器的讀地址和數據量。
(3) 配置DDR存儲器的目的節點(diǎn)坐標。
(4) 配置DDR存儲器的寫(xiě)地址和數據量。
(5) 配置DDR存儲器的寫(xiě)節點(diǎn)坐標。
(6) 主控制器發(fā)出命令,啟動(dòng)DDR存儲器,建立數據網(wǎng)傳輸鏈路,完成計算過(guò)程。
上述6條配置指令構成了一個(gè)完整的從DDR存儲器取數、執行、結果數據寫(xiě)回DDR的運行流程。
為了使調度控制器能夠準確追蹤任務(wù)的數據相關(guān)性,以及在正確的時(shí)刻觸發(fā)任務(wù)的可執行條件,需要在編程階段,預先記錄任務(wù)的數據相關(guān)性。同時(shí)為了讓調度控制器具有調度的基本依據,需要新增任務(wù)依賴(lài)關(guān)系表,在任務(wù)依賴(lài)關(guān)系表中記錄任務(wù)的基本信息,并將任務(wù)依賴(lài)關(guān)系表中的內容稱(chēng)為任務(wù)標簽。
實(shí)現方案是在系統原主控制器的基礎上新增調度控制器,控制任務(wù)調度和發(fā)射過(guò)程;狀態(tài)網(wǎng)負責檢測系統的狀態(tài),配置網(wǎng)負責下發(fā)配置信息。
(1) 狀態(tài)網(wǎng)監測系統狀態(tài)。因為任意時(shí)刻計算單元只會(huì )被某一個(gè)任務(wù)唯一占用,所以通過(guò)監控計算單元的狀態(tài)就可以得到相應任務(wù)的狀態(tài),從而實(shí)現對任務(wù)完整流程的監控。同時(shí),使用狀態(tài)網(wǎng)可以統計得出空閑的與繁忙的計算單元個(gè)數。
(2) 調度控制器亂序多發(fā)射任務(wù)。通過(guò)監測任務(wù)的執行狀態(tài)和當前時(shí)刻空閑的計算單元數量,再結合任務(wù)本身所需的計算單元的數量信息,可以判斷任務(wù)是否滿(mǎn)足可發(fā)射的條件:① 任務(wù)的所有前驅相關(guān)任務(wù)全部計算完成,結果數據已經(jīng)產(chǎn)生或者結果數據寫(xiě)回DDR存儲器完成;② 當前時(shí)刻系統上有足夠的計算資源。
滿(mǎn)足這2個(gè)條件的任務(wù)可以發(fā)射。調度控制器對每個(gè)任務(wù)的發(fā)射條件進(jìn)行嚴格檢查,保證了任務(wù)之間數據傳遞的安全性,為任務(wù)的亂序發(fā)射提供技術(shù)支撐。
(3) 配置網(wǎng)下發(fā)配置指令。在某一個(gè)任務(wù)滿(mǎn)足發(fā)射條件后,調度控制器將主程序中該任務(wù)的計算配置信息通過(guò)配置網(wǎng)傳遞給選中的計算單元,從而完成一次完整的任務(wù)喚醒、調度、發(fā)射的控制流程。
最簡(jiǎn)單的調度優(yōu)先級策略是使用任務(wù)的初始編程次序作為任務(wù)發(fā)射次序。一方面,由于程序中前面的任務(wù)與后面的任務(wù)相比,往往具有更多的與其他任務(wù)之間的間接相關(guān)性[14],優(yōu)先發(fā)射程序中前面的任務(wù),原則上能夠使得更多存在相關(guān)性的任務(wù)達成發(fā)射條件而發(fā)射;另一方面,由于動(dòng)態(tài)任務(wù)調度缺少程序的全局信息,不具備使用靜態(tài)調度算法找出關(guān)鍵路徑,實(shí)現較優(yōu)的任務(wù)優(yōu)先級排序的能力[7]。因此,本文在粗粒度上使用任務(wù)的初始編程次序作為調度優(yōu)先級次序;在細粒度上分析任務(wù)的可發(fā)射條件,對任務(wù)的發(fā)射次序進(jìn)行精細調整,實(shí)現亂序發(fā)射。
對于強寫(xiě)回類(lèi)型的任務(wù),因為其計算結果數據必定寫(xiě)回DDR存儲器,所以需要監控其結果數據是否完成寫(xiě)回DDR存儲器。
弱寫(xiě)回任務(wù)不寫(xiě)回DDR存儲器如圖2所示。
圖2 弱寫(xiě)回任務(wù)不寫(xiě)回DDR存儲器
對于弱寫(xiě)回的任務(wù),對它的監測分為如下2個(gè)階段:
(1) 第1階段。計算完成時(shí)刻調度控制器實(shí)時(shí)決策任務(wù)的結果數據是否寫(xiě)回DDR存儲器,如果后繼任務(wù)滿(mǎn)足發(fā)射的條件,或者片上有足夠的暫存節點(diǎn),那么結果數據不必寫(xiě)回DDR存儲器;同時(shí),將所有后繼任務(wù)的狀態(tài)刷新成可發(fā)射的,并指示其源數據的位置位于片上計算單元中或者暫存節點(diǎn)之中。
(2) 第2階段。如果第1階段的決策是寫(xiě)回DDR存儲器,那么需要采取與強寫(xiě)回類(lèi)型的任務(wù)相同的方法,監控任務(wù)的結果數據是否寫(xiě)回DDR存儲器完成,在寫(xiě)回完成后,刷新所有后繼任務(wù)的狀態(tài)成可發(fā)射狀態(tài),且標識其源數據位于DDR存儲器。
弱寫(xiě)回任務(wù)組成動(dòng)態(tài)任務(wù)鏈如圖3所示,將實(shí)際運行時(shí)不寫(xiě)回DDR存儲器的弱寫(xiě)回任務(wù)按照任務(wù)之間的數據相關(guān)性串聯(lián),組成動(dòng)態(tài)任務(wù)鏈。
圖3 弱寫(xiě)回任務(wù)組成動(dòng)態(tài)任務(wù)鏈
4個(gè)弱寫(xiě)回任務(wù)不寫(xiě)回DDR存儲器將減少總共6次DDR存儲器的讀寫(xiě),只需保留頭任務(wù)讀DDR存儲器和尾任務(wù)寫(xiě)DDR存儲器,該方法明顯減少了DDR存儲器的讀寫(xiě)次數,節省了DDR存儲器的讀寫(xiě)時(shí)間消耗。
除了使用動(dòng)態(tài)任務(wù)鏈條減少任務(wù)的結果數據寫(xiě)回DDR存儲器以外,還可以使用片上空閑計算單元的本地隨機存取存儲器(random access memory,RAM)作為暫存區,片上計算單元及其暫存區的數據進(jìn)入等待狀態(tài),待后繼任務(wù)的發(fā)射條件滿(mǎn)足時(shí),再將數據發(fā)送給后繼任務(wù)所映射的計算單元,減少數據寫(xiě)回。
完整的任務(wù)數據傳遞關(guān)系如圖4所示。
圖4 完整的任務(wù)數據傳遞關(guān)系
2條舊路徑分別是計算完成的任務(wù)節點(diǎn)將結果數據寫(xiě)回DDR存儲器和后繼任務(wù)節點(diǎn)讀DDR存儲器獲得計算所需的源數據。新路徑1是多核計算系統運行的當前時(shí)刻,系統上有足夠的空閑計算節點(diǎn),因此直接發(fā)射后繼任務(wù),數據直接在數據網(wǎng)上從計算完成節點(diǎn)傳輸到后繼任務(wù)節點(diǎn)。新路徑2是在系統的計算資源不夠充足時(shí),后繼任務(wù)未能獲得發(fā)射,因此將數據寫(xiě)入到片上暫存節點(diǎn)。新路徑3是在系統的計算資源充足時(shí),發(fā)射后繼任務(wù),將計算源數據通過(guò)數據網(wǎng)從片上暫存節點(diǎn)發(fā)送到后繼任務(wù)計算節點(diǎn)。
使用上述任務(wù)結果數據重新定向的方法,減少了用戶(hù)對任務(wù)結果數據流向的人工干預。調度控制器將弱寫(xiě)回任務(wù)自動(dòng)組成任務(wù)鏈條以及自動(dòng)亂序發(fā)射任務(wù),在保證數據安全性的前提下,實(shí)現了對任務(wù)計算過(guò)程的硬件自動(dòng)化控制,編程友好度顯著(zhù)提高。
動(dòng)態(tài)調度控制器整體結構如圖5所示,控制器由取指仲裁模塊、任務(wù)標簽緩存、任務(wù)標簽隊列、配置信息緩存、任務(wù)配置信息隊列、控制單元、發(fā)射單元、狀態(tài)監測單元組成,外圍集成到DDR存儲器的讀寫(xiě)控制器、配置網(wǎng)和狀態(tài)網(wǎng)。
圖5 動(dòng)態(tài)調度控制器整體結構
3.1.1 狀態(tài)監測單元
狀態(tài)監測單元負責對任務(wù)的計算節點(diǎn)狀態(tài)和DDR存儲器的狀態(tài)進(jìn)行監控,當任務(wù)計算完成但數據未從節點(diǎn)發(fā)出,以及任務(wù)寫(xiě)回DDR存儲器寫(xiě)回完成時(shí),任務(wù)狀態(tài)監測單元能夠識別這2種狀態(tài),并將這2種狀態(tài)信息記錄在FIFO存儲器中,供控制單元讀取。
3.1.2 控制單元
控制單元負責動(dòng)態(tài)調度控制器主狀態(tài)機的控制,同時(shí)通過(guò)任務(wù)標簽信息、任務(wù)計算節點(diǎn)狀態(tài)信息以及DDR存儲器的狀態(tài)信息,對任務(wù)的喚醒、發(fā)射和寫(xiě)回過(guò)程進(jìn)行決策,在確定待發(fā)射任務(wù)的編號后,向發(fā)射單元發(fā)送任務(wù)的基本信息和任務(wù)發(fā)射的啟動(dòng)命令。
在異構多核計算系統中,任務(wù)計算完成、DDR存儲器的寫(xiě)完成以及任務(wù)節點(diǎn)間數據傳輸完成,分別對應著(zhù)任務(wù)的寫(xiě)回、DDR的釋放和計算單元的釋放。它們觸發(fā)了任務(wù)的可發(fā)射條件,因此,任務(wù)喚醒的時(shí)機是任務(wù)計算完成、空閑計算單元數量的增加和DDR存儲器寫(xiě)回完成。
調度器的控制單元根據狀態(tài)監測單元輸出的信息和空閑的計算資源數量,確定計算完成或者結果數據寫(xiě)回DDR存儲器完成的任務(wù)編號,然后訪(fǎng)問(wèn)任務(wù)標簽隊列RAM,獲取任務(wù)的后繼輸出任務(wù)ID,將任務(wù)列表中后繼任務(wù)的狀態(tài)刷新成可發(fā)射。
發(fā)射單元具有如下2類(lèi)功能:① 按照控制單元的命令發(fā)射任務(wù)的計算配置信息;② 按照控制單元的命令發(fā)射任務(wù)的寫(xiě)回配置信息,實(shí)現任務(wù)寫(xiě)回。
發(fā)射單元的發(fā)射工作大體分為如下3個(gè)步驟:
(1) 讀取原始配置信息。
(2) 按照控制單元的調度決策對原始配置信息進(jìn)行相應修改,或者生成新的配置信息。
(3) 將修改后的配置信息或者新生成的配置信息傳輸到配置網(wǎng)上。
本文設計的動(dòng)態(tài)任務(wù)調度控制器在完成Verilog RTL級設計后,在Xilinx公司的XCVU440-FLGA2892-1-C型號的現場(chǎng)可編程門(mén)陣列(field programmable gate array,FPGA)芯片上綜合和實(shí)現,使用Xilinx公司的Vivado EDA工具鏈,對設計的Verilog RTL級電路進(jìn)行綜合、映射和布局布線(xiàn)。
實(shí)現后最高電路主頻為166.058 MHz,動(dòng)態(tài)調度器對FPGA的資源消耗見(jiàn)表1所列。
表1 FPGA資源消耗
本文從并行任務(wù)路徑數量、系統布局、任務(wù)的粒度、在計算資源發(fā)生競爭時(shí)的處理方法等維度,制定實(shí)驗方案,對調度控制器的功能和性能進(jìn)行測試。
在測試中,對比的對象是現有的異構多核計算系統,系統上不啟用新設計的調度控制器,但系統上仍然可使用手動(dòng)并行編程的技術(shù)。在控制層,僅有系統主控制器順序發(fā)射配置指令。NoC網(wǎng)絡(luò )上掛載了3類(lèi)計算單元,每個(gè)計算單元各有8個(gè),總共24個(gè)計算核。
本文參考文獻[14]選用下述參數反映計算系統運行的不同特征和任務(wù)調度控制器的性能指標。設任務(wù)的總數為N。
(1) 任務(wù)調度時(shí)間,指從前驅任務(wù)計算完成或者寫(xiě)回DDR完成,到后繼任務(wù)發(fā)射所消耗的周期數。
(2) 整體運行時(shí)間(whole run time,WRT),是從第1個(gè)任務(wù)發(fā)射到最后1個(gè)任務(wù)寫(xiě)回DDR存儲器寫(xiě)回完成,消耗的周期數。
(3) 執行時(shí)間(execute time,ET),是配置信息發(fā)射到任務(wù)寫(xiě)回完成消耗的周期數。
(4) 執行時(shí)間總和(sum of execute time, SET),是所有任務(wù)的執行時(shí)間之和。
(5) 平均并行度(average of parallelism, AP),是同時(shí)運行任務(wù)的數量。
(6) 平均執行時(shí)間(average of execute time, AET),是執行時(shí)間總和除以任務(wù)的個(gè)數,即
(1)
(7) 整體運行時(shí)間加速比(speedup of whole run time,SPWRT)。計算公式為:
(2)
其中:new表示系統啟用調度控制器;old表示系統不啟用調度控制器。
任務(wù)平均調度時(shí)間見(jiàn)表2所列,任務(wù)的平均調度時(shí)間隨著(zhù)任務(wù)的個(gè)數逐漸上升,但是逐漸趨向于一個(gè)穩定的值,即26個(gè)周期,相比于任務(wù)級計算102~104數量級的執行周期,調度控制器花費的時(shí)間代價(jià)較小。
表2 任務(wù)平均調度時(shí)間
現有的異構多核計算系統控制器無(wú)調度功能,為了提升效率,在控制過(guò)程上使用類(lèi)似單指令多數據流的方法,將一個(gè)粒度較大的任務(wù)展開(kāi)到若干個(gè)相同類(lèi)型的計算單元上執行,現有系統能實(shí)現編程者手動(dòng)的并行編程,并行展開(kāi)任務(wù)。但是,這種方法局限性較大,無(wú)法充分發(fā)掘客觀(guān)存在卻又不易被編程者察覺(jué)的任務(wù)并行性[15]。
4.4.1 并行任務(wù)路徑數量實(shí)驗
1條任務(wù)路徑是指數據從DDR存儲器出發(fā),經(jīng)過(guò)若干個(gè)任務(wù)計算單元,最后回到DDR存儲器。計算單元之間的相關(guān)性數據是否寫(xiě)回DDR存儲器取決于控制器的控制。1個(gè)計算單元上運行1個(gè)任務(wù)。兩路并行任務(wù)路徑如圖6所示,圖6中有2條并行的任務(wù)路徑,總共有6個(gè)任務(wù)。
圖6 兩路并行任務(wù)路徑示意
此外,對目標異構多核計算系統采用2種布局方式:一種是規整布局,同類(lèi)的計算單元位置處于一條直線(xiàn)上;另一種是分散布局,不同種類(lèi)的計算單元混合零散排布在NoC網(wǎng)絡(luò )上,每個(gè)計算單元周?chē)挤植贾?zhù)不同種類(lèi)的計算單元。
不同并行任務(wù)路徑數量下的整體運行時(shí)間見(jiàn)表3所列,其中,所有任務(wù)數據粒度均為256,每條任務(wù)路徑上有3個(gè)任務(wù)。
表3 不同并行任務(wù)路徑數量下的整體運行時(shí)間(周期)
整體運行時(shí)間加速比如圖7所示,相較于不啟用調度控制器,啟用調度器的計算系統整體運行時(shí)間加速比在1.310~1.900之間,且隨著(zhù)并行任務(wù)路徑數量的增加,加速比呈現上升趨勢。動(dòng)態(tài)調度控制器減少了任務(wù)數據讀寫(xiě)DDR的時(shí)間消耗,因而獲得運行時(shí)間的加速。使用調度器后,規整布局與分散布局下的運行時(shí)間相差不大,原因是調度器設計時(shí)考慮到了布局的變化,設定了調整系統布局后調度器性能基本穩定的目標。
圖7 整體運行時(shí)間加速比
平均并行度如圖8所示,平均并行度與理論并行度有一定的差距。
圖8 平均并行度-任務(wù)路徑數量實(shí)驗結果
未能達到理論并行度的原因如下:
(1) 動(dòng)態(tài)任務(wù)調度器需要花費額外的調度時(shí)間,調度控制器一次僅能調度發(fā)射一個(gè)任務(wù),因此總共的調度時(shí)間是每個(gè)任務(wù)的調度時(shí)間的總和。
(2) 從任務(wù)計算完成到調度器響應,期間有額外的延遲,這包括任務(wù)狀態(tài)監測模塊內部的延遲和調度器響應任務(wù)狀態(tài)監測模塊的延遲。
(3) 在異構多核計算系統上,隨著(zhù)任務(wù)數量增多,計算資源的利用率提升,導致數據網(wǎng)負載加大,任務(wù)間數據傳輸延遲增大。
4.4.2 任務(wù)粒度實(shí)驗
任務(wù)運行時(shí)間見(jiàn)表4所列,其中,任務(wù)路徑數量為8,每條路徑上有3個(gè)任務(wù),共24個(gè)任務(wù),均采用規整布局。
表4 任務(wù)運行時(shí)間(周期)
整體運行時(shí)間加速比如圖9所示,有調度器的目標計算系統能夠維持至少為1.000的整體運行時(shí)間加速比,這表明調度器不會(huì )造成系統性能的損失,且在任務(wù)粒度小于等于4×103時(shí),展現出較高的加速比。
圖9 整體運行時(shí)間加速比-任務(wù)粒度實(shí)驗結果
在任務(wù)粒度為8×103、16×103的情況下,加速比降低是由于任務(wù)結果數據不寫(xiě)回DDR存儲器,數據網(wǎng)上存在大規模的數據搬運行為,產(chǎn)生了鏈路擁塞,造成額外的鏈路延遲。相對應地,用戶(hù)在系統不啟用動(dòng)態(tài)調度器的情況下手動(dòng)映射計算單元位置,規避了鏈路擁塞問(wèn)題,因此,在任務(wù)粒度為8×103、16×103的情況下,有調度器的計算系統加速比下降。任務(wù)粒度超過(guò)16×103的情形下,因為計算單元本地的緩存只有16×103,所以任務(wù)節點(diǎn)之間傳遞的數據被強制寫(xiě)回DDR存儲器,在數據流動(dòng)過(guò)程與無(wú)調度器的計算系統保持一致,任務(wù)的整體運行時(shí)間非常接近,因而整體運行時(shí)間加速比接近于1.000。
平均并行度-任務(wù)粒度實(shí)驗結果如圖10所示,在任務(wù)粒度從0.256×103增加到4×103過(guò)程中,平均并行度逐漸逼近理論并行度,這是由于隨著(zhù)任務(wù)粒度的增加,任務(wù)的調度時(shí)間和發(fā)射時(shí)間占任務(wù)執行時(shí)間的比例降低。任務(wù)粒度為8×103、16×103的情況下,產(chǎn)生了鏈路的擁塞,存在鏈路擁塞的任務(wù)路徑執行時(shí)間增加,但是其余無(wú)擁塞的路徑?jīng)]有額外延遲,因此,系統的平均并行度下降。
圖10 平均并行度-任務(wù)粒度實(shí)驗結果
DDR存儲器讀寫(xiě)延遲見(jiàn)表5所列,數據網(wǎng)延遲見(jiàn)表6所列。DDR存儲器的讀寫(xiě)延遲被調度控制器節省,數據網(wǎng)上數據的傳輸延遲是調度器所增加的時(shí)間消耗。結果表明,在無(wú)擁塞的情況下,數據網(wǎng)上數據傳輸的時(shí)間與一次DDR存儲器的讀或者寫(xiě)的延遲接近,而存在擁塞的情況下,數據網(wǎng)擁塞的時(shí)間與一次DDR存儲器的讀或者寫(xiě)的延遲接近。從整體運行時(shí)間加速比和平均并行度的實(shí)驗中分析得到,發(fā)生鏈路擁塞時(shí),系統的整體性能會(huì )發(fā)生明顯下降,無(wú)法達到預期的性能,因此,減少數據網(wǎng)的擁塞將是下一步優(yōu)化性能的關(guān)鍵。
表5 DDR存儲器讀寫(xiě)延遲
為了檢測調度控制器在發(fā)生計算資源競爭導致后繼任務(wù)無(wú)法發(fā)射時(shí),是否啟用片上暫存節點(diǎn)作為結果數據的暫存,設計如下實(shí)驗。任務(wù)流圖如圖11所示,圖中計算單元左上角的標號表示任務(wù)的ID編號。
圖11 任務(wù)流圖-發(fā)生計算資源競爭
任務(wù)1~任務(wù)8將8個(gè)RCU計算資源全部占用,且這8個(gè)任務(wù)的粒度均為2×103,任務(wù)9的粒度為0.256×103,因此任務(wù)9計算完成時(shí),任務(wù)1~任務(wù)8還未結束,RCU單元仍被占用,其后繼任務(wù)(任務(wù)18,粒度0.256×103)將無(wú)法獲得足夠的計算資源,發(fā)生計算資源競爭。
片上暫存的實(shí)驗結果見(jiàn)表7所列,調度控制器按照預期的設想將任務(wù)9的結果數據寫(xiě)入到暫存節點(diǎn)之中,且大幅節省了整體運行時(shí)間,這表明使用暫存節點(diǎn)技術(shù)能夠明顯提升系統整體性能。
表7 片上暫存實(shí)驗結果
本文從優(yōu)化目標系統性能的角度出發(fā),設計了一種面向異構多核處理器的多發(fā)射動(dòng)態(tài)調度控制器。實(shí)驗測試結果表明,調度控制器在提升計算系統的整體性能、降低存儲器延遲等方面展現了良好的效果,并且調度控制器的功能正確,達到了預期動(dòng)態(tài)任務(wù)調度和任務(wù)亂序多發(fā)射的目標。在任務(wù)粒度實(shí)驗中,結果表明數據網(wǎng)的擁塞是限制系統性能的關(guān)鍵要素,因此,在任務(wù)調度和任務(wù)的計算單元映射環(huán)節新增數據網(wǎng)擁塞的約束,并研究減少擁塞的方法,是下一步需要研究的重點(diǎn)。
猜你喜歡任務(wù)調度存儲器粒度粉末粒度對純Re坯顯微組織與力學(xué)性能的影響粉末冶金技術(shù)(2021年3期)2021-07-28靜態(tài)隨機存儲器在軌自檢算法北京航空航天大學(xué)學(xué)報(2021年6期)2021-07-20基于矩陣的多粒度粗糙集粒度約簡(jiǎn)方法南京大學(xué)學(xué)報(自然科學(xué)版)(2021年1期)2021-01-30基于改進(jìn)NSGA-Ⅱ算法的協(xié)同制造任務(wù)調度研究制造技術(shù)與機床(2019年4期)2019-04-04基于時(shí)間負載均衡蟻群算法的云任務(wù)調度優(yōu)化測控技術(shù)(2018年7期)2018-12-09基于粒度矩陣的程度多粒度粗糙集粒度約簡(jiǎn)系統工程與電子技術(shù)(2016年12期)2016-12-24云計算環(huán)境中任務(wù)調度策略信息通信技術(shù)(2015年6期)2015-12-26云計算中基于進(jìn)化算法的任務(wù)調度策略華東理工大學(xué)學(xué)報(自然科學(xué)版)(2015年4期)2015-12-01存儲器——安格爾(墨西哥)▲環(huán)球時(shí)報(2014-06-18)2014-06-18基于Nand Flash的高速存儲器結構設計電子設計工程(2014年23期)2014-02-27