<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 異質(zhì)多處理器芯片中的數據流核心設計

異質(zhì)多處理器芯片中的數據流核心設計

——
作者:西北工業(yè)大學(xué) 詹承華 楊志義 楊柳 時(shí)間:2007-04-18 來(lái)源:電子技術(shù)應用 收藏
異質(zhì)系統(Heterogeneous Multiprocessor)是將兩種以上不同工作性質(zhì)的處理器核心整合為一的處理器系統。它通常包含了一般用途處理器(General Purpose Processor)和特殊用途處理器(Specific Purpose Processor)。隨著(zhù)片上系統SoC(System on Chip)及相關(guān)技術(shù)的成熟,已經(jīng)可以將不同的處理器整合到一個(gè)芯片里,成為芯片。以多媒體應用為例,比較著(zhù)名的異質(zhì)多處理芯片有德州儀器公司的TMS320DSC25、TMS320DM270和TMS320DM320。這些芯片都是由微核心和DSP微核心組成。傳統的系統架構(如Intel SMP架構)是由多個(gè)處理芯片通過(guò)外部總線(xiàn)匯接而成,而多處理器片上系統架構是在單一芯片上包含了多個(gè)處理器核心。它能減少系統的功耗并使整個(gè)系統發(fā)揮最大的運算效能。

1 硬件平臺

本設計采用的硬件平臺是德州儀器公司的TMS320DM270,它由兩個(gè)微處理器核心7TDMI和TMS320C5409組成。采用主從式架構,前者為主動(dòng)端,后者為被動(dòng)端。7T

DMI是32位的一般用途處理器,負責DM270系統的整體運作和所有周邊設備的控制。TMS320C5409為16位的數字信號處理器,主要負責多媒體信號處理.如音視頻的編解碼運算等。ARM可以經(jīng)由DSP控制器重置或喚醒,還可對DSP發(fā)出不可屏蔽式的中斷(Non-Masked Interrupt)。

雙處理器之間必須有良好的通信和數據交換機制.才能使系統在多進(jìn)程環(huán)境下有效合作。在DM270中,ARM端的DSP控制器控制數據傳輸,DSP端通過(guò)HPI[3](Host Post Interface)與ARM處理器溝通。兩個(gè)微處理器使用HPIB(Host Port Interfaee Bridge)相互連接。ARM和DSP可向對方發(fā)出硬件中斷,同時(shí)它們之間存在一段共享存儲區。通過(guò)共享存儲區映射機制和中斷的搭配,雙方可以傳輸信息和數據,并且可以在共享存儲區存取雙方共同定義的指令,使兩端根據指令進(jìn)行對應的動(dòng)作。

2 ARM端的DSP管理者

為配合DSP的工作,在A(yíng)RM端微核心(Micro Kernel)中設計了一個(gè)伺服進(jìn)程,它負責ARM與DSP的溝通及協(xié)調運行。該進(jìn)程稱(chēng)為DSP管理者(DSP Manager),如圖1所示。

DSP管理者的架構圖

ARM端的進(jìn)程并不知道DSP處理器的存在,只知道DSP管理者在運行。當ARM端的進(jìn)程需要使用DSP進(jìn)程所提供的數據處理服務(wù)時(shí),只需向DSP管理者提出請求。DSP端的進(jìn)程也不知道ARM處理器的存在,DSP管理者把ARM端的請求存放在共享存儲區,由DSP的核心讀取這些請求,并交給相應的DSP進(jìn)程。當請求被DSP進(jìn)程接收后,DSP管理者還要負責把提出請求的ARM端進(jìn)程的數據存放在共享存儲區,以便DSP端進(jìn)程的讀取和處理。因此ARM與DSP溝通的效能取決于DSP管理者的執行效能。

DSP管理者接收ARM端進(jìn)程的數據處理請求。請求信息應該包括提出請求的ARM端進(jìn)程的ID、DSP端服務(wù)進(jìn)程的ID、數據處理服務(wù)類(lèi)型的lD以及相關(guān)參數。同時(shí)DSP管理者把這些請求信息打包封裝為DSP端系統能識別的內容格式,再通過(guò)共享存儲區交給DSP端的核心。

由于真正維持系統運作的是ARM端系統,DSP只是附屬的處理系統,所以ARM端的DSP管理者可以在系統正常工作的情況下更換DSP系統,以支持不同的DSP應用。

3 DSP端的核心

DSP端的系統采用數據流核心(Dataflow Kernel)架構。傳統系統核心架構中的進(jìn)程切換由Timer Tick決定,但數據流核心中的進(jìn)程卻不受Timer Tick的影響,它們以數據驅動(dòng)(Data Driven)的方式工作。

在DSP端的核心運行著(zhù)多個(gè)不同類(lèi)型的數據處理服務(wù)進(jìn)程,這些進(jìn)程在DSP啟動(dòng)時(shí)都被設為阻塞態(tài)(Sleep)。因為此時(shí)沒(méi)有任何數據可以用來(lái)驅動(dòng)DSP服務(wù)進(jìn)程的執行。當ARM端開(kāi)始傳送數據處理請求到DSP端時(shí),數據流核心會(huì )根據這些請求找到對應的DSP服務(wù)進(jìn)程,并使其進(jìn)入執行態(tài)(Busy)。當該服務(wù)進(jìn)程的數據處理任務(wù)完成后,其返回結果可能是新的數據處理請求,該請求同樣也可以進(jìn)入數據流核心。驅動(dòng)其他服務(wù)進(jìn)程的執行。所以整個(gè)核心的運行是根據數據流(ARM端的數據和DSP進(jìn)程自己產(chǎn)生的數據)的動(dòng)向決定的。與基于Timer Tick的傳統系統核心相比,只要某一服務(wù)進(jìn)程不斷地接收數據處理請求,并且所需的數據不斷到達,該進(jìn)程就可以一直擁有CPU的使用權,而無(wú)須進(jìn)行時(shí)間片方式的進(jìn)程切換,從而減少了系統資源的浪費,提高了DSP的處理效能。

DSP端的進(jìn)程有執行和阻塞兩種狀態(tài)。進(jìn)程的狀態(tài)轉移如圖2所示。當CPU使用權切換給某個(gè)進(jìn)程時(shí),該進(jìn)程的狀態(tài)將被核心設定為Busy并開(kāi)始處理數據。當數據處理完后,數據流核心從數據請求隊列DRQ(Data Request Queue)中取出下一個(gè)請求。如果請求信息中指定的DSP服務(wù)進(jìn)程與目前進(jìn)程相同,則該進(jìn)程的狀態(tài)依舊為Busy.否則核心便將目前進(jìn)程的狀態(tài)設定為Sleep,同時(shí)開(kāi)始進(jìn)程切換,將請求信息中所指定的服務(wù)進(jìn)程設定為Busy。

進(jìn)程的狀態(tài)轉移圖 

3.1 進(jìn)程隊列狀態(tài)寄存器

ARM端系統和DSP端系統在共享存儲區共同定義了16位的進(jìn)程隊列狀態(tài)寄存器(Process Oueue Status Register),每一位代表DSP端一個(gè)進(jìn)程的狀態(tài),所以DSP端最多有16個(gè)數據處理服務(wù)進(jìn)程。若DSP端的數據流核心將寄存器的某一位設為O,則表示與該位對應的DSP進(jìn)程有能力處理新的數據處理請求;若設為1,則表示與該位對應的DSP進(jìn)程沒(méi)有能力處理新的請求。

DSP管理者通過(guò)查看該寄存器,可以知道DSP端的某些進(jìn)程已不能接收新的數據處理請求,它就會(huì )使ARM端的相關(guān)進(jìn)程停止向這些DSP進(jìn)程發(fā)出請求。這樣可以充

分利用DSP的資源,降低DSP端的系統負擔。

3.2 數據流核心的進(jìn)程調度策略

核心中的進(jìn)程調度策略是根據數據流架構上進(jìn)程運行狀態(tài)變化的規律設計的。其工作方式是將ARM端對DSP端的數據處理請求利用環(huán)行隊列(Circular Queue)的架構以FIFO的方式排序,并存入DRQ中。該策略的特點(diǎn)是DSP端的每一個(gè)進(jìn)程都預先指定最多可以擁有DRQ空間的數目,等級越高的進(jìn)程擁有DRQ使用空間就越多,證明其可以處理更多的數據請求。該策略將傳統系統核心中進(jìn)程優(yōu)先級(Priority)的概念轉化為進(jìn)程可以處理數據請求的多少。進(jìn)程等級越高,能處理的數據請求也越多,同時(shí)占用CPU的執行時(shí)間也較長(cháng)。LDE(Local Data Element)是DSP端每一個(gè)進(jìn)程都有的參數,它表示DSP進(jìn)程在執行過(guò)程中還可以接收多少個(gè)數據處理請求。LDE的初始值由系統定義。整個(gè)DRQ空問(wèn)的大小由所有DSP進(jìn)程的LDE預設最大值的總和決定。

當DSP端的數據流核心取得ARM端的數據處理請求時(shí),根據請求我到指定的DSP端進(jìn)程,把該進(jìn)程的LDE減1,然后進(jìn)行相應的數據處理。如果LDE被減至0,則DSP端數據流核心把該DSP進(jìn)程在進(jìn)程隊列狀態(tài)寄存器中所對應的狀態(tài)位設為1.以通知DSP管理者該進(jìn)程不能再接收新的請求,分配給該進(jìn)程的所有DRQ空間都已被使用。此后,隨著(zhù)DRQ中的數據請求逐漸被處理,使得該進(jìn)程的DRQ空問(wèn)再出現剩余時(shí),數據流核心會(huì )把進(jìn)程隊列狀態(tài)寄存器中所對應的狀態(tài)位設為0,通知DSP管理者可以再次向該DSP進(jìn)程發(fā)送數據處理請求。

如圖3所示,DRQ是環(huán)行隊列結構,存儲所有的請求信息。DRQ有兩個(gè)指針:Tail指向DRQ沒(méi)有被使用的空間;Head指向DRQ中將被處理的請求。LDE有三個(gè)元素EA、EB、EC,代表DSP的進(jìn)程A、B、C分別可使用的DRQ個(gè)數。數據流核心接收請求RB后,調度算法將EB減1,并且通過(guò)Tail指針將請求RB加入DRQ中。當系統需要處理請求時(shí),調度算法由Head指針取出請求并交由適當的DSP進(jìn)程處理。

進(jìn)程調度策略架構 

4 共享存儲區管理

本設計將DM270系統平臺中的一段32KB大小的存儲區作為ARM和DSP的共享存儲區。該存儲區由DSP管理者負責管理。由于TMS320C5409的存儲單位是字節,所以規定它所訪(fǎng)問(wèn)的共享存儲區地址為OxS000~0xBFFF;而ARM7TDMI的存儲單位是字,所以規定它能訪(fǎng)問(wèn)的共享存儲區地址為0x50000~0x57FFF,共享存儲區分配如圖4所示。共享存儲區分為32個(gè)存儲塊,每塊大小為1024B。前兩個(gè)字節為共享存儲塊的狀態(tài)標志位,其值為0代表此存儲塊閑置,1代表此存儲塊已被使用。存儲塊中剩下的1022B用來(lái)存放數據。DSP管理者將所有ARM端需要DSP處理的數據都存儲到這32個(gè)存儲塊上。

共享存儲區分配

當32個(gè)存儲塊全部被使用或者數據處理請求中所指定的DSP進(jìn)程的LDE為0時(shí),DSP管理者向ARM端提出該請求的進(jìn)程阻塞,防止因不斷地提出請求而造成系統資源的浪費。當所指定的DSP進(jìn)程數據處理結束后,DSP端的數據流核心將該進(jìn)程阻塞,并對DRQ空間和進(jìn)程隊列狀態(tài)寄存器作相應調整,然后主動(dòng)釋放該DSP進(jìn)程使用的共享存儲塊,同時(shí)向ARM端發(fā)出中斷信號。DSP管理者接收到此中斷信號后,根據進(jìn)程隊列狀態(tài)寄存器判斷出請求所指定的DSP進(jìn)程已經(jīng)可以開(kāi)始處理數據了,讓剛才在A(yíng)RM端被阻塞的進(jìn)程繼續運行.并把數據寫(xiě)入共享存儲塊,以便DSP進(jìn)程讀取和處理。當存在閑置的存儲塊并且數據處理請求所指定的DSP進(jìn)程的LDE不為0時(shí),DSP管理者可直接將ARM端進(jìn)程的數據寫(xiě)到共享存儲塊,以便相應的DSP進(jìn)程讀取和處理。

5 DSP端系統的熱抽換

DSP系統的更換技術(shù)對多媒體應用而言非常重要。如果DSP端需要播放不同格式的影片,則必須把整個(gè)DSP端系統更換以支持不同格式的解碼器。因此在系統設計中使用了熱抽換技術(shù)。傳統熱抽換技術(shù)的定義是動(dòng)態(tài)地把系統中的核心層部分更換,在不重新開(kāi)機的情況下,進(jìn)程還可以正常工作。而本設計的熱抽換是更換整個(gè)DSP端的系統,同時(shí)維持ARM端進(jìn)程的正常工作。為了實(shí)現熱抽換,必須在某段靜態(tài)存儲區存放多個(gè)版本的DSP系統程序。本設計中,這些程序被存放到DM270的Flash Memory中,ARM端的檔案系統負責維護和管理這部分內容。

DSP系統的熱抽換過(guò)程如下:①DSP端要把那些由于沒(méi)有進(jìn)行數據處理而陷入阻塞的DSP進(jìn)程全部釋放,否則當DSP端系統更新后,這些進(jìn)程會(huì )因為永遠不能再得到相應的數據,而造成永久阻塞,形成系統資源浪費;②A(yíng)RM端的DSP管理者會(huì )清空所有的共享存儲區,同時(shí)阻塞ARM端的所有用戶(hù)進(jìn)程;③ARM端的檔案系統將從Flash Memory中讀取所需的DS

P系統檔案并將它加載到DSP的內存;④DSP端系統啟動(dòng),DSP管理者喚醒ARM端所有被阻塞的進(jìn)程,為更新后的DSP系統服務(wù)。

ARM端的系統負責整個(gè)系統的正常運行,同時(shí)將數據處理請求和相關(guān)數據傳送給DSP,而不管這些數據如何被DSP使用;DSP端只負責數據的處理,而不管數據的來(lái)源和用途。這種架構關(guān)系保證了DSP系統的熱抽換是安全可靠的,不會(huì )破壞系統的正常運行。

本文以DM270平臺為基礎,設計了DSP端的數據流核心和ARM端的DSP管理者。與傳統的、基于時(shí)間片的多進(jìn)程系統核心相比,數據流核心的進(jìn)程是靠數據驅動(dòng)的方式工作的。它能有效地減少進(jìn)程的切換.節約系統資源,使DSP可以更加專(zhuān)注于多媒體數據的處理。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>