楊 陽
(西安電子科技大學(xué) 電子工程學(xué)院,陜西 西安710071)
隨著IC處理技術(shù)的不斷創(chuàng)新和數(shù)字信號(hào)算法的進(jìn)步,通過提高主頻來提升單個(gè)處理器計(jì)算能力的傳統(tǒng)方法,在提升性能的同時(shí)帶來了諸如芯片功耗、發(fā)熱量過高等問題。這種現(xiàn)象在嵌入式系統(tǒng)領(lǐng)域顯得尤為突出。因此,雙核處理器系統(tǒng)應(yīng)運(yùn)而生。由于可以滿足以上特定需求,雙核處理器尤其是異構(gòu)雙核處理器[1]已經(jīng)成為目前的主流方案。隨著雙核平臺(tái)中應(yīng)用的復(fù)雜度快速增長(zhǎng),內(nèi)核的計(jì)算資源將會(huì)被多個(gè)任務(wù)分時(shí)段共用。因此,為更好地利用異構(gòu)雙核處理器的計(jì)算能力,合理的任務(wù)管理機(jī)制必不可少。隨著嵌入式系統(tǒng)在人們?nèi)粘I钪械钠占埃悩?gòu)雙核體系結(jié)構(gòu)正在發(fā)揮其巨大的實(shí)際應(yīng)用價(jià)值,對(duì)異構(gòu)環(huán)境下的任務(wù)調(diào)度[2]方法的研究具有廣闊的應(yīng)用前景。
任務(wù)調(diào)度的本質(zhì)是資源的合理分配,盡量提高系統(tǒng)的執(zhí)行效率、穩(wěn)定性和資源的利用率,實(shí)現(xiàn)多個(gè)處理核之間的動(dòng)態(tài)負(fù)載平衡。對(duì)于異構(gòu)環(huán)境而言,任務(wù)調(diào)度首先是將應(yīng)用程序分割成若干個(gè)并行的子任務(wù),生成應(yīng)用模型。應(yīng)用模型盡可能地提高任務(wù)間的并行性,并將這些任務(wù)調(diào)度到一定的處理器結(jié)構(gòu)上并行執(zhí)行。
常見的異構(gòu)雙核處理器大多集成了通用微處理器(MPU)和數(shù)字信號(hào)處理器(DSP)。MPU由于其自身結(jié)構(gòu)特點(diǎn),適合執(zhí)行任務(wù)管理,而DSP適合計(jì)算密集型任務(wù),二者協(xié)作提高系統(tǒng)效能。因此,傳統(tǒng)上多采用MPU完成任務(wù)管理和調(diào)度[3]。然而,處理器在處理現(xiàn)行的線程或任務(wù)時(shí)會(huì)凍結(jié)其他線程,系統(tǒng)無法同時(shí)處理兩個(gè)線程。此外,MPU上的任務(wù)管理會(huì)引起MPU和DSP間的頻繁通信。由于MPU中的任務(wù)調(diào)度和任務(wù)更新等,DSP的總執(zhí)行時(shí)間中存在空閑時(shí)間。當(dāng)任務(wù)粒度減小時(shí),盡管單次任務(wù)調(diào)度和任務(wù)更新時(shí)間保持不變,但由于次數(shù)增多,任務(wù)管理的總時(shí)間變長(zhǎng),系統(tǒng)整體效能因此也受到影響。
為減小任務(wù)管理時(shí)間和處理器間通信次數(shù),部分研究者提出了利用DSP完成任務(wù)管理的雙核系統(tǒng)架構(gòu)[4]。然而,DSP上的程序控制和中斷處理的消耗較大。DSP上有大量的寄存器用來存儲(chǔ)臨時(shí)數(shù)據(jù)流,但DSP幾乎沒有緩存機(jī)制來確保執(zhí)行中的可預(yù)見性。這些結(jié)構(gòu)設(shè)計(jì)會(huì)帶來頻繁的上下文交換,包括用戶模式和內(nèi)核模式間的轉(zhuǎn)換,從而造成巨額開銷。另外,用計(jì)算能力較強(qiáng)的DSP專用模塊執(zhí)行常見的簡(jiǎn)單算術(shù)邏輯運(yùn)算則非常低效。
針對(duì)以上兩種方式的優(yōu)缺點(diǎn),提出了適用于異構(gòu)雙核系統(tǒng)上的多媒體應(yīng)用的智能任務(wù)控制器。此設(shè)計(jì)利用了多媒體應(yīng)用自身的特點(diǎn),有效解決了處理器間通信的問題。
任務(wù)模型是根據(jù)應(yīng)用程序分割之后的任務(wù)及其之間關(guān)系建立的模型,是系統(tǒng)進(jìn)行任務(wù)調(diào)度和資源分配的基礎(chǔ)。設(shè)計(jì)采用適合描述信號(hào)處理系統(tǒng)中數(shù)據(jù)樣本流的進(jìn)程網(wǎng)絡(luò)。此進(jìn)程網(wǎng)絡(luò)屬計(jì)算模型,多個(gè)并行進(jìn)程可同時(shí)在此網(wǎng)絡(luò)中運(yùn)行。此模型為直接圖表標(biāo)記法,每個(gè)節(jié)點(diǎn)代表一個(gè)進(jìn)程,每條邊代表一個(gè)單向先進(jìn)先出數(shù)據(jù)列。進(jìn)程能夠從對(duì)應(yīng)的數(shù)據(jù)列中獲取數(shù)據(jù),然后將生成的一組數(shù)據(jù)輸出到相鄰的數(shù)據(jù)列中。當(dāng)進(jìn)程或節(jié)點(diǎn)試圖從空輸入列中獲取數(shù)據(jù)時(shí),它會(huì)被阻塞。
圖1描述了JPEG編碼[5]的進(jìn)程網(wǎng)絡(luò)。如圖1所示,JPEG編碼分為4個(gè)進(jìn)程,分別為彩色空間變換(CST)、離散余弦變換(DCT)、量化(Q)和可變長(zhǎng)度編碼(VLC)等。這四個(gè)進(jìn)程兩兩連接成CST-DCTQ-VLC列。
圖1 JPEG編碼流程
集成了智能任務(wù)控制器(STC)的異構(gòu)多核處理器架構(gòu)如圖2所示。此架構(gòu)提供集成化的API,易于構(gòu)建流媒體應(yīng)用模型。程序員不用考慮內(nèi)存分配、任務(wù)調(diào)度、負(fù)載平衡、同步和資源競(jìng)爭(zhēng)等架構(gòu)細(xì)節(jié)。STC不僅負(fù)責(zé)運(yùn)行中的任務(wù)管理,而且通過并行處理MPU和DSP上的任務(wù),減小來自MPU的壓力以及系統(tǒng)開支。
圖2 異構(gòu)多核處理器架構(gòu)
智能任務(wù)控制可分為處理器間通信和任務(wù)管理等兩個(gè)基本功能。有這些功能做輔助,MPU只需利用STC提供的高階API構(gòu)建多媒體應(yīng)用模型,然后將應(yīng)用傳遞給STC執(zhí)行。應(yīng)用初始化和傳遞完成后,STC將內(nèi)核和內(nèi)存動(dòng)態(tài)分配給從應(yīng)用中提取的任務(wù)。
STC用3個(gè)表格管理任務(wù),監(jiān)視MPU狀態(tài)和控制多線程DSP處理器的計(jì)算資源,它們分別為任務(wù)控制表(TCB)、隊(duì)列表和分配表。
任務(wù)控制表的每一行對(duì)應(yīng)任務(wù)列表中每個(gè)任務(wù)以及完成該任務(wù)必不可少的信息,包括任務(wù)類型、子任務(wù)、隊(duì)列指針和程序地址等。
表1 任務(wù)控制表
本文將任務(wù)類型分為3種,輸入任務(wù)(IN)、輸出任務(wù)(OUT)和通用性任務(wù)(G)。利用輸入進(jìn)程可以從大的輸入緩存中分流多個(gè)數(shù)據(jù)到進(jìn)程的內(nèi)部隊(duì)列。相反,利用輸出進(jìn)程可以從內(nèi)部隊(duì)列中分離多個(gè)結(jié)果到輸出緩存中。借助于輸入進(jìn)程和輸出進(jìn)程,可以利用程序局部化特性降低IPC開支。與輸入進(jìn)程和輸出進(jìn)程不同,其它用于應(yīng)用的通用性進(jìn)程由特定功能的交替多線程DSP處理器處理。圖1中,CST、DCT、Q和VLC等均為通用性任務(wù)。子任務(wù)用來指示進(jìn)程在進(jìn)程網(wǎng)絡(luò)中的優(yōu)先權(quán)。例如,圖1中,CST的子進(jìn)程是DCT。當(dāng)CST從數(shù)據(jù)列中獲取一組數(shù)據(jù)后,它需要生成一組結(jié)果數(shù)據(jù)到它的子數(shù)據(jù)列中。
進(jìn)程網(wǎng)絡(luò)中每個(gè)進(jìn)程的數(shù)據(jù)列都存在頭指針(Head)和尾指針(Tail)。任務(wù)控制表利用頭指針和尾指針來表示每條數(shù)據(jù)列上輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯索引地址。對(duì)于每個(gè)任務(wù),可用的數(shù)據(jù)數(shù)量可以由頭指針和尾指針的差值來確定。
程序地址用來記錄處理器指令內(nèi)存中任務(wù)的首個(gè)指令地址。在DSP執(zhí)行任務(wù)前,應(yīng)初始化程序計(jì)數(shù)器(PC)到對(duì)應(yīng)的程序地址。
隊(duì)列表對(duì)應(yīng)數(shù)據(jù)網(wǎng)絡(luò)中每個(gè)任務(wù)數(shù)據(jù)列中數(shù)據(jù)單元的內(nèi)存分配,如表2所示。例如,VLC的數(shù)據(jù)列中的兩個(gè)數(shù)據(jù)單元分別存在于DSP處理器數(shù)據(jù)內(nèi)存的第5頁和第3頁。
分配表用來管理DSP處理器的硬件資源。如表3所示,每個(gè)DSP線程的狀態(tài)都存儲(chǔ)在分配表中。”1”表示使能線程,也就是說,硬件線程1正在被任務(wù)控制表所占用。此時(shí)共有3個(gè)可用的硬件線程。
表2 隊(duì)列表
表3 分配表
任務(wù)調(diào)度政策決定哪個(gè)任務(wù)會(huì)在DSP上運(yùn)行。本設(shè)計(jì)降序分配給進(jìn)程網(wǎng)絡(luò)中每個(gè)任務(wù)一個(gè)優(yōu)先級(jí)以確保計(jì)算流暢執(zhí)行。圖1中,優(yōu)先級(jí)從VLC到CST分配,即VLC擁有最高優(yōu)先級(jí)而CST擁有最低優(yōu)先級(jí)。所以,越接近進(jìn)程網(wǎng)絡(luò)末端的任務(wù)越早執(zhí)行,如此,進(jìn)程網(wǎng)絡(luò)的計(jì)算流將不會(huì)被阻塞。
如圖3所示,在提出的雙核系統(tǒng)中,DSP協(xié)處理器和MPU通過以下方式通信。其中,信箱用于DSP與MPU的同步。STC將從MPU獲取的特定地址視為命令,并響應(yīng)這些命令。
圖3 處理器間通信
STC作為DSP的代理,處理處理器間通信,并管理DSP資源以執(zhí)行任務(wù)。任務(wù)完成后,DSP告知STC,STC利用信箱告知MPU。最后,MPU清除DSP內(nèi)存中的結(jié)果并獲取另一待執(zhí)行的任務(wù)。通過輸入輸出雙緩存,提高了處理期間通信效率。如前所述,輸入進(jìn)程可以從輸入緩存分流數(shù)據(jù),而輸出進(jìn)程可以分離數(shù)據(jù)到輸出緩存。前者用于數(shù)據(jù)轉(zhuǎn)移,后者用于任務(wù)計(jì)算。當(dāng)MPU需要輸出數(shù)據(jù)到DSP去執(zhí)行時(shí),它只需讀取自身的狀態(tài)寄存器,無需等待DSP的響應(yīng)或者中斷DSP計(jì)算。另一方面,一旦任務(wù)完成,STC便立即通過信箱告知MPU。
利用ESL[6]設(shè)計(jì)方法構(gòu)建了一個(gè)雙核模擬平臺(tái)。此平臺(tái)包含ARM處理器模型、AMBA AHB總線模型、內(nèi)存模型以及其它相關(guān)模塊的模型。其中,兩顆ARM926處理器模型由AMBA AHB總線連接,分別作為MPU和DSP。MPU的工作頻率為250 MHz,DSP的工作頻率為500 MHz。
仿真驗(yàn)證階段,設(shè)計(jì)采用像素為256×256的JPEG圖像編碼為實(shí)際應(yīng)用模型。為證明本設(shè)計(jì)的有效性和優(yōu)越性,采用了兩組對(duì)照組,分別為MPU和DSP實(shí)現(xiàn)任務(wù)管理。MPU實(shí)現(xiàn)任務(wù)管理時(shí),操作系統(tǒng)將JPEG編碼過程分成CST、DCT、Q和VLC等4個(gè)任務(wù),然后再分配這些任務(wù)到DSP去完成計(jì)算加速。DSP管理任務(wù)時(shí),DSP上的輕量級(jí)內(nèi)核將會(huì)完成任務(wù)分割和調(diào)度,而STC則無需任何實(shí)時(shí)操作系統(tǒng)或內(nèi)核。
圖4為3種任務(wù)管理機(jī)制的執(zhí)行時(shí)間。可以看出,STC實(shí)施任務(wù)時(shí),內(nèi)核響應(yīng)和處理器間通信時(shí)間僅為1μs。且由于其專用的硬件設(shè)計(jì),任務(wù)調(diào)度和內(nèi)存管理僅需要55μs。與MPU和DSP實(shí)現(xiàn)任務(wù)管理相比,分別減少了68%和15%的執(zhí)行時(shí)間。
圖4 執(zhí)行時(shí)間
針對(duì)異構(gòu)雙核嵌入式系統(tǒng)中的任務(wù)管理問題,提出了一種適用于多媒體應(yīng)用的智能任務(wù)控制器。在利用MPU和DSP各自優(yōu)點(diǎn)的基礎(chǔ)上,動(dòng)態(tài)分配任務(wù)并消除了處理器間通信對(duì)系統(tǒng)性能造成的影響。由實(shí)驗(yàn)結(jié)果可以看出,該智能控制器與傳統(tǒng)方式相比響應(yīng)時(shí)間短,硬件利用率高,運(yùn)行時(shí)間短,實(shí)現(xiàn)了系統(tǒng)性能的提升。
[1]ZHANG Ziming.Data partitioning on heterogeneous multicore platforms[C].Austin TX:IEEE International Conference on Cluster Computing,2011.
[2]QU Gang.Power management of multicore multiple voltage embedded systems by task scheduling[C].Xi'an:International Conference on Parallel Processing Workshops,2007.
[3] 劉侃侃.異構(gòu)多核環(huán)境下的任務(wù)調(diào)度方法研究[D].杭州:杭州電子科技大學(xué),2009.
[4]Texas Instruments Inc.TMS320 DSP/BIOS User Guide[M].Texus:Texas Instruments Inc,2001.
[5]Charles Poynton.Digital video and HDTV algorithms and interfaces[M].USA:Morgan Kaufmann,2012.
[6]GRANT M,BRIAN B,ANDREW P.ESL design and verification[M].USA:Morgan Kaufmann,2007.