異質(zhì)多處理器芯片中的數(shù)據(jù)流核心設(shè)計
異質(zhì)多處理器系統(tǒng)(Heterogeneous Multiprocessor)是將兩種以上不同工作性質(zhì)的處理器核心整合為一的處理器系統(tǒng)。它通常包含了一般用途處理器(General Purpose Processor)和特殊用途處理器(Specific Purpose Processor)。隨著片上系統(tǒng)SoC(System on Chip)及相關(guān)技術(shù)的成熟,已經(jīng)可以將不同的處理器整合到一個芯片里,成為多處理器芯片。以多媒體應(yīng)用為例,比較著名的異質(zhì)多處理芯片有德州儀器公司的 TMS320DSC25、TMS320DM270和TMS320DM320。這些芯片都是由ARM微核心和DSP微核心組成。傳統(tǒng)的多處理器系統(tǒng)架構(gòu)(如Intel SMP架構(gòu))是由多個處理芯片通過外部總線匯接而成,而多處理器片上系統(tǒng)架構(gòu)是在單一芯片上包含了多個處理器核心。它能減少系統(tǒng)的功耗并使整個系統(tǒng)發(fā)揮最大的運算效能。
本文引用地址:http://2s4d.com/article/78048.htm1 硬件平臺
本設(shè)計采用的硬件平臺是德州儀器公司的TMS320DM270,它由兩個微處理器核心ARM7TDMI和TMS320C5409組成。采用主從式架構(gòu),前者為主動端,后者為被動端。ARM7TDMI是32位的一般用途處理器,負(fù)責(zé)DM270系統(tǒng)的整體運作和所有周邊設(shè)備的控制。TMS320C5409為16位的數(shù)字信號處理器,主要負(fù)責(zé)多媒體信號處理.如音視頻的編解碼運算等。ARM可以經(jīng)由DSP控制器重置或喚醒,還可對DSP發(fā)出不可屏蔽式的中斷(Non-Masked Interrupt)。
雙處理器之間必須有良好的通信和數(shù)據(jù)交換機制.才能使系統(tǒng)在多進(jìn)程環(huán)境下有效合作。在DM270中,ARM端的DSP控制器控制數(shù)據(jù)傳輸,DSP端通過 HPI[3](Host Post Interface)與ARM處理器溝通。兩個微處理器使用HPIB(Host Port Interfaee Bridge)相互連接。ARM和DSP可向?qū)Ψ桨l(fā)出硬件中斷,同時它們之間存在一段共享存儲區(qū)。通過共享存儲區(qū)映射機制和中斷的搭配,雙方可以傳輸信息和數(shù)據(jù),并且可以在共享存儲區(qū)存取雙方共同定義的指令,使兩端根據(jù)指令進(jìn)行對應(yīng)的動作。
2 ARM端的DSP管理者
為配合DSP的工作,在ARM端微核心(Micro Kernel)中設(shè)計了一個伺服進(jìn)程,它負(fù)責(zé)ARM與DSP的溝通及協(xié)調(diào)運行。該進(jìn)程稱為DSP管理者(DSP Manager),如圖1所示。
ARM 端的進(jìn)程并不知道DSP處理器的存在,只知道DSP管理者在運行。當(dāng)ARM端的進(jìn)程需要使用DSP進(jìn)程所提供的數(shù)據(jù)處理服務(wù)時,只需向DSP管理者提出請求。DSP端的進(jìn)程也不知道ARM處理器的存在,DSP管理者把ARM端的請求存放在共享存儲區(qū),由DSP的數(shù)據(jù)流核心讀取這些請求,并交給相應(yīng)的DSP 進(jìn)程。當(dāng)請求被DSP進(jìn)程接收后,DSP管理者還要負(fù)責(zé)把提出請求的ARM端進(jìn)程的數(shù)據(jù)存放在共享存儲區(qū),以便DSP端進(jìn)程的讀取和處理。因此ARM與 DSP溝通的效能取決于DSP管理者的執(zhí)行效能。
DSP管理者接收ARM端進(jìn)程的數(shù)據(jù)處理請求。請求信息應(yīng)該包括提出請求的ARM端進(jìn)程的ID、DSP端服務(wù)進(jìn)程的ID、數(shù)據(jù)處理服務(wù)類型的lD以及相關(guān)參數(shù)。同時DSP管理者把這些請求信息打包封裝為DSP端系統(tǒng)能識別的內(nèi)容格式,再通過共享存儲區(qū)交給DSP端的數(shù)據(jù)流核心。
3 DSP端的數(shù)據(jù)流核心
DSP端的系統(tǒng)采用數(shù)據(jù)流核心(Dataflow Kernel)架構(gòu)。傳統(tǒng)系統(tǒng)核心架構(gòu)中的進(jìn)程切換由Timer Tick決定,但數(shù)據(jù)流核心中的進(jìn)程卻不受Timer Tick的影響,它們以數(shù)據(jù)驅(qū)動(Data Driven)的方式工作。
在DSP 端的核心運行著多個不同類型的數(shù)據(jù)處理服務(wù)進(jìn)程,這些進(jìn)程在DSP啟動時都被設(shè)為阻塞態(tài)(Sleep)。因為此時沒有任何數(shù)據(jù)可以用來驅(qū)動DSP服務(wù)進(jìn)程的執(zhí)行。當(dāng)ARM端開始傳送數(shù)據(jù)處理請求到DSP端時,數(shù)據(jù)流核心會根據(jù)這些請求找到對應(yīng)的DSP服務(wù)進(jìn)程,并使其進(jìn)入執(zhí)行態(tài)(Busy)。當(dāng)該服務(wù)進(jìn)程的數(shù)據(jù)處理任務(wù)完成后,其返回結(jié)果可能是新的數(shù)據(jù)處理請求,該請求同樣也可以進(jìn)入數(shù)據(jù)流核心。驅(qū)動其他服務(wù)進(jìn)程的執(zhí)行。所以整個核心的運行是根據(jù)數(shù)據(jù)流 (ARM端的數(shù)據(jù)和DSP進(jìn)程自己產(chǎn)生的數(shù)據(jù))的動向決定的。與基于Timer Tick的傳統(tǒng)系統(tǒng)核心相比,只要某一服務(wù)進(jìn)程不斷地接收數(shù)據(jù)處理請求,并且所需的數(shù)據(jù)不斷到達(dá),該進(jìn)程就可以一直擁有CPU的使用權(quán),而無須進(jìn)行時間片方式的進(jìn)程切換,從而減少了系統(tǒng)資源的浪費,提高了DSP的處理效能。
DSP端的進(jìn)程有執(zhí)行和阻塞兩種狀態(tài)。進(jìn)程的狀態(tài)轉(zhuǎn)移如圖2所示。當(dāng)CPU使用權(quán)切換給某個進(jìn)程時,該進(jìn)程的狀態(tài)將被核心設(shè)定為Busy并開始處理數(shù)據(jù)。當(dāng)數(shù)據(jù)處理完后,數(shù)據(jù)流核心從數(shù)據(jù)請求隊列DRQ(Data Request Queue)中取出下一個請求。如果請求信息中指定的DSP服務(wù)進(jìn)程與目前進(jìn)程相同,則該進(jìn)程的狀態(tài)依舊為Busy.否則核心便將目前進(jìn)程的狀態(tài)設(shè)定為 Sleep,同時開始進(jìn)程切換,將請求信息中所指定的服務(wù)進(jìn)程設(shè)定為Busy。
3.1 進(jìn)程隊列狀態(tài)寄存器
ARM 端系統(tǒng)和DSP端系統(tǒng)在共享存儲區(qū)共同定義了16位的進(jìn)程隊列狀態(tài)寄存器(Process Oueue Status Register),每一位代表DSP端一個進(jìn)程的狀態(tài),所以DSP端最多有16個數(shù)據(jù)處理服務(wù)進(jìn)程。若DSP端的數(shù)據(jù)流核心將寄存器的某一位設(shè)為O,則表示與該位對應(yīng)的DSP進(jìn)程有能力處理新的數(shù)據(jù)處理請求;若設(shè)為1,則表示與該位對應(yīng)的DSP進(jìn)程沒有能力處理新的請求。
DSP管理者通過查看該寄存器,可以知道DSP端的某些進(jìn)程已不能接收新的數(shù)據(jù)處理請求,它就會使ARM端的相關(guān)進(jìn)程停止向這些DSP進(jìn)程發(fā)出請求。這樣可以充分利用DSP的資源,降低DSP端的系統(tǒng)負(fù)擔(dān)。
3.2 數(shù)據(jù)流核心的進(jìn)程調(diào)度策略
核心中的進(jìn)程調(diào)度策略是根據(jù)數(shù)據(jù)流架構(gòu)上進(jìn)程運行狀態(tài)變化的規(guī)律設(shè)計的。其工作方式是將ARM端對DSP端的數(shù)據(jù)處理請求利用環(huán)行隊列(Circular Queue)的架構(gòu)以FIFO的方式排序,并存入DRQ中。該策略的特點是DSP端的每一個進(jìn)程都預(yù)先指定最多可以擁有DRQ空間的數(shù)目,等級越高的進(jìn)程擁有DRQ使用空間就越多,證明其可以處理更多的數(shù)據(jù)請求。該策略將傳統(tǒng)系統(tǒng)核心中進(jìn)程優(yōu)先級(Priority)的概念轉(zhuǎn)化為進(jìn)程可以處理數(shù)據(jù)請求的多少。進(jìn)程等級越高,能處理的數(shù)據(jù)請求也越多,同時占用CPU的執(zhí)行時間也較長。LDE(Local Data Element)是DSP端每一個進(jìn)程都有的參數(shù),它表示DSP進(jìn)程在執(zhí)行過程中還可以接收多少個數(shù)據(jù)處理請求。LDE的初始值由系統(tǒng)定義。整個DRQ空問的大小由所有DSP進(jìn)程的LDE預(yù)設(shè)最大值的總和決定。
當(dāng)DSP端的數(shù)據(jù)流核心取得ARM端的數(shù)據(jù)處理請求時,根據(jù)請求我到指定的 DSP端進(jìn)程,把該進(jìn)程的LDE減1,然后進(jìn)行相應(yīng)的數(shù)據(jù)處理。如果LDE被減至0,則DSP端數(shù)據(jù)流核心把該DSP進(jìn)程在進(jìn)程隊列狀態(tài)寄存器中所對應(yīng)的狀態(tài)位設(shè)為1.以通知DSP管理者該進(jìn)程不能再接收新的請求,分配給該進(jìn)程的所有DRQ空間都已被使用。此后,隨著DRQ中的數(shù)據(jù)請求逐漸被處理,使得該進(jìn)程的DRQ空問再出現(xiàn)剩余時,數(shù)據(jù)流核心會把進(jìn)程隊列狀態(tài)寄存器中所對應(yīng)的狀態(tài)位設(shè)為0,通知DSP管理者可以再次向該DSP進(jìn)程發(fā)送數(shù)據(jù)處理請求。
4 共享存儲區(qū)管理
本設(shè)計將DM270系統(tǒng)平臺中的一段32KB大小的存儲區(qū)作為ARM和DSP的共享存儲區(qū)。該存儲區(qū)由DSP管理者負(fù)責(zé)管理。由于TMS320C5409的存儲單位是字節(jié),所以規(guī)定它所訪問的共享存儲區(qū)地址為OxS000~0xBFFF;而ARM7TDMI的存儲單位是字,所以規(guī)定它能訪問的共享存儲區(qū)地址為0x50000~0x57FFF,共享存儲區(qū)分配如圖3所示。共享存儲區(qū)分為32個存儲塊,每塊大小為 1024B。前兩個字節(jié)為共享存儲塊的狀態(tài)標(biāo)志位,其值為0代表此存儲塊閑置,1代表此存儲塊已被使用。存儲塊中剩下的1022B用來存放數(shù)據(jù)。DSP管理者將所有ARM端需要DSP處理的數(shù)據(jù)都存儲到這32個存儲塊上。
當(dāng)32 個存儲塊全部被使用或者數(shù)據(jù)處理請求中所指定的DSP進(jìn)程的LDE為0時,DSP管理者向ARM端提出該請求的進(jìn)程阻塞,防止因不斷地提出請求而造成系統(tǒng)資源的浪費。當(dāng)所指定的DSP進(jìn)程數(shù)據(jù)處理結(jié)束后,DSP端的數(shù)據(jù)流核心將該進(jìn)程阻塞,并對DRQ空間和進(jìn)程隊列狀態(tài)寄存器作相應(yīng)調(diào)整,然后主動釋放該 DSP進(jìn)程使用的共享存儲塊,同時向ARM端發(fā)出中斷信號。DSP管理者接收到此中斷信號后,根據(jù)進(jìn)程隊列狀態(tài)寄存器判斷出請求所指定的DSP進(jìn)程已經(jīng)可以開始處理數(shù)據(jù)了,讓剛才在ARM端被阻塞的進(jìn)程繼續(xù)運行.并把數(shù)據(jù)寫入共享存儲塊,以便DSP進(jìn)程讀取和處理。當(dāng)存在閑置的存儲塊并且數(shù)據(jù)處理請求所指定的DSP進(jìn)程的LDE不為0時,DSP管理者可直接將ARM端進(jìn)程的數(shù)據(jù)寫到共享存儲塊,以便相應(yīng)的DSP進(jìn)程讀取和處理。
5 DSP端系統(tǒng)的熱抽換
DSP 系統(tǒng)的更換技術(shù)對多媒體應(yīng)用而言非常重要。如果DSP端需要播放不同格式的影片,則必須把整個DSP端系統(tǒng)更換以支持不同格式的解碼器。因此在系統(tǒng)設(shè)計中使用了熱抽換技術(shù)。傳統(tǒng)熱抽換技術(shù)的定義是動態(tài)地把系統(tǒng)中的核心層部分更換,在不重新開機的情況下,進(jìn)程還可以正常工作。而本設(shè)計的熱抽換是更換整個 DSP端的系統(tǒng),同時維持ARM端進(jìn)程的正常工作。為了實現(xiàn)熱抽換,必須在某段靜態(tài)存儲區(qū)存放多個版本的DSP系統(tǒng)程序。本設(shè)計中,這些程序被存放到 DM270的Flash Memory中,ARM端的檔案系統(tǒng)負(fù)責(zé)維護(hù)和管理這部分內(nèi)容。
DSP 系統(tǒng)的熱抽換過程如下:①DSP端要把那些由于沒有進(jìn)行數(shù)據(jù)處理而陷入阻塞的DSP進(jìn)程全部釋放,否則當(dāng)DSP端系統(tǒng)更新后,這些進(jìn)程會因為永遠(yuǎn)不能再得到相應(yīng)的數(shù)據(jù),而造成永久阻塞,形成系統(tǒng)資源浪費;②ARM端的DSP管理者會清空所有的共享存儲區(qū),同時阻塞ARM端的所有用戶進(jìn)程;③ARM端的檔案系統(tǒng)將從Flash Memory中讀取所需的DSP系統(tǒng)檔案并將它加載到DSP的內(nèi)存;④DSP端系統(tǒng)啟動,DSP管理者喚醒ARM端所有被阻塞的進(jìn)程,為更新后的DSP系統(tǒng)服務(wù)。
本文以DM270平臺為基礎(chǔ),設(shè)計了DSP端的數(shù)據(jù)流核心和ARM端的DSP管理者。與傳統(tǒng)的、基于時間片的多進(jìn)程系統(tǒng)核心相比,數(shù)據(jù)流核心的進(jìn)程是靠數(shù)據(jù)驅(qū)動的方式工作的。它能有效地減少進(jìn)程的切換.節(jié)約系統(tǒng)資源,使DSP可以更加專注于多媒體數(shù)據(jù)的處理。
評論