解析:?jiǎn)蝺群伺c雙內核的EMP
針對嵌入式多媒體應用選擇一個(gè)處理器是一項復雜的工作,涉及到對處理器內核架構以及外設的全面分析,需要完全掌握視頻、音頻數據在系統中傳輸方式,以及正確評價(jià)在一個(gè)可接受的功耗水平下可達到什么樣的處理能力。
到最近為止,解決這個(gè)問(wèn)題的標準方法是將其劃分成由微控制器(MCU)芯片處理的“控制域”,以及由數字信號處理器(DSP)處理的“計算域”。RISC MCU和DSP傳統上適合于媒體豐富的嵌入式應用,然而,它們的用途不可互相替代,更確切地說(shuō),它們要協(xié)調一致地工作。MCU架構非常適合于高效率的異步控制流,而DSP架構的“生存之道”是同步恒定速度數據流(例如,濾波和變換操作)。
因為在當今的媒體處理應用中,兩種功能集都是必需的,工程師通常使用獨立的MCU和DSP芯片。這種組合為廣泛的多媒體應用提供了很好的處理引擎,但是增加了多媒體處理設計、多種開(kāi)發(fā)工具組以及有待學(xué)習和調試的不同種類(lèi)架構的復雜性。
為減輕這些問(wèn)題,芯片廠(chǎng)商嘗試過(guò)不同的解決方案。不同的MCU廠(chǎng)商都集成了某些信號處理功能,例如指令集擴展以及乘法累加(MAC)單元,但是這種努力通常缺乏針對先進(jìn)信號處理應用所要求的基本架構基礎。類(lèi)似地,DSP生產(chǎn)商已經(jīng)包含了有限的MCU功能,但是不可避免地在系統控制方面有所妥協(xié)。
最近,出現了另外的選擇――單內核以及雙內核的嵌入式媒體處理器(EMP)架構,這種架構在一個(gè)統一的設計中提供了MCU和DSP功能,允許在控制和信號處理需求方面進(jìn)行靈活地劃分。如果應用需要的話(huà),EMP可以作為100%的MCU(代碼密度與行業(yè)標準一致)、100%的DSP(時(shí)鐘速度達到DSP技術(shù)的前沿)、或兩者之間的某種組合。
單內核EMP架構評估
圖1顯示了一個(gè)單內核EMP架構,這個(gè)架構融合了一個(gè)32位RISC指令集、雙16位MAC單元和一個(gè)8位視頻處理引擎。其可變長(cháng)指令集擴展到DSP內部環(huán)路所使用的64位操作碼,但是經(jīng)過(guò)了最優(yōu)化以便16位的操作碼代表最常用的指令。因此,編譯后的代碼密度可以與行業(yè)領(lǐng)先的MCU競爭,而其互鎖流水線(xiàn)和代數指令語(yǔ)法能促進(jìn)在C/C++和匯編兩種環(huán)境中的開(kāi)發(fā)。
像MCU一樣,EMP具有受保護和未受保護的兩種操作模式,防止用戶(hù)訪(fǎng)問(wèn)或影響系統的共享部分。此外,它們提供定義不同應用開(kāi)發(fā)空間的存儲器管理功能,同時(shí)防止截然不同的代碼部分被覆蓋。它們還允許異步中斷以及同步異常兩種功能,以及可編程的中斷優(yōu)先級。因此,EMP非常適合于嵌入式操作系統(此前是MCU的天下)。
在DSP方面,EMP結構使數據的流動(dòng)有效率且性能非常高,所配備的外設支持高速串行和并行數據搬移。此外,EMP包含先進(jìn)的電源管理功能,允許系統設計工程師、架構師以最低的動(dòng)態(tài)功耗曲線(xiàn)精心設計。
圖1:?jiǎn)蝺群饲度胧矫襟w處理器BF533的框圖
單內核開(kāi)發(fā)方法
在當今的設計范例中,MCU和DSP程序員通常被分成兩個(gè)完全獨立的組,兩方面的交互工作只發(fā)生在他們的功能范圍相交的“系統邊界”層面。這具有一定意義,因為兩個(gè)開(kāi)發(fā)組都形成了他們自己的設計習慣。例如,信號處理開(kāi)發(fā)工程師可能熟知處理器架構的細節本質(zhì),能通過(guò)一些實(shí)現技巧來(lái)提高設計性能。
另一方面,MCU程序員可能更愿意采用這樣的模式:只須啟動(dòng)器件,它就能完成所有的工作。這就是為什么EMP支持DMA和緩存存儲器控制器來(lái)在系統中搬移數據的原因。多個(gè)高速DMA通道在外設和存儲器系統中往返搬移數據,允許在不耗盡寶貴的內核處理器時(shí)鐘周期的條件下,對控制進(jìn)行精細地調整,這正是DSP設計工程師所追求的。相反地,片上可編程指令和數據緩存允許對管理代碼和數據采用一種傳遞方法,這種方式類(lèi)似于MCU程序員的做法。通常,在系統集成層面,兩種方法的組合是最理想的。
一直以來(lái),MCU和DSP開(kāi)發(fā)團隊劃分的另一個(gè)原因是兩個(gè)處理器具有兩套不同的設計規則。從技術(shù)的角度來(lái)看,負責構建系統的工程師某些時(shí)候不愿意在同一個(gè)處理器上將“控制”應用與信號處理應用混在一起。他們通常擔心非實(shí)時(shí)的任務(wù)將影響到硬實(shí)時(shí)任務(wù)。例如,負責處理圖形用戶(hù)界面(GUI)或聯(lián)網(wǎng)堆棧的程序員不應該擔心妨礙系統的實(shí)時(shí)信號處理。當然,“實(shí)時(shí)”的定義會(huì )根據特定應用而變化。在某種嵌入式應用中,關(guān)鍵是在于服務(wù)一個(gè)中斷需要的時(shí)間。為此,我們假定在服務(wù)程序開(kāi)始時(shí),在發(fā)生中斷和系統環(huán)境被保存之間的時(shí)間幀小于十毫秒。
盡管MCU控制代碼通常用C語(yǔ)言編寫(xiě)并且以為庫基礎,而實(shí)時(shí)DSP代碼通常采用匯編語(yǔ)言編寫(xiě),并由手動(dòng)設計為給定應用提取最可能的性能。不幸的是,這種最優(yōu)化也限制了應用程序的可移植性,并因此也限制了在未來(lái)項目上兩個(gè)編程團隊之間對不同技巧和工具集的傳播。
然而,在引入EMP后,可以實(shí)現以C/C++為中心的統一代碼。這允許開(kāi)發(fā)者利用以前開(kāi)發(fā)的現成的大量應用程序代碼。因為EMP同時(shí)針對控制和信號處理操作兩種功能進(jìn)行了最優(yōu)化,編譯器可以產(chǎn)生同時(shí)滿(mǎn)足“緊湊”(從代碼密度來(lái)看)和高效率的代碼(對于計算密集的信號處理應用)。EMP高的工作頻率(超過(guò)750MHz)可以彌合編譯器之間的性能差距,這個(gè)頻率位于當前主流DSP的前沿。此外,針對目標應用匯編代碼依然是最優(yōu)化關(guān)鍵處理環(huán)的一個(gè)選項。
盡管轉向采用EMP可以大大地降低用匯編寫(xiě)代碼的需求,但僅僅這一點(diǎn)還不足以證明轉換到這種統一平臺就是正確的,支持操作系統(OS)也很關(guān)鍵。通過(guò)OS或實(shí)時(shí)內核,可以實(shí)現幾層任務(wù)。為確保依然能達到目標性能,有必要采用支持多個(gè)優(yōu)先級的中斷控制器。環(huán)境切換必須通過(guò)基于硬件的堆棧和對幀指針的支持來(lái)實(shí)現。這就允許開(kāi)發(fā)者在同一個(gè)器件中創(chuàng )建包含控制和實(shí)時(shí)信號處理的系統。
此外,EMP的存儲器管理工具允許OS支持存儲器保護。這允許一個(gè)任務(wù)通過(guò)存儲器分頁(yè)機制,被另外一個(gè)任務(wù)屏蔽存儲器或指令訪(fǎng)問(wèn)。當對一個(gè)受保護的存儲器區域被未授權訪(fǎng)問(wèn)時(shí),將產(chǎn)生一個(gè)異常。
EMP能獲得的高處理速度可以轉換成幾種實(shí)實(shí)在在的好處。首先是上市時(shí)間-如果存在大量的剩余處理能力,在降低或免除代碼最優(yōu)化上可以節省大量的時(shí)間。第二個(gè)關(guān)鍵的好處是減少軟件維護,否則的話(huà)這種維護要支配產(chǎn)品生命周期的成本。最后一點(diǎn),對于可擴展的EMP架構,可能在最具處理能力的系列器件上設計一個(gè)系統,然后針對最終應用的計算規模設定“合理大小”的處理器。
當單內核EMP不足時(shí)
隨著(zhù)處理需求的不斷增加,出現了這樣的觀(guān)點(diǎn):即使一個(gè)600MHz的EMP對于某些應用來(lái)說(shuō)都是不夠的。這就是考慮采用雙內核EMP的一個(gè)原因,例如ADSP-BF561(見(jiàn)圖2)。
圖2:雙內核嵌入式媒體處理器ADSP-BF561的框圖
增加另外一個(gè)處理器內核,不僅僅能將處理能力相對于單處理器的能力倍增,而且還有某些令人吃驚的結構好處,這種好處并不是立竿見(jiàn)影的。
傳統的雙內核處理器的應用采用了離散的且通常在每個(gè)內核上運行不同的任務(wù)。例如,一個(gè)內核可能執行所有的與控制相關(guān)的任務(wù),例如圖形和覆蓋功能、網(wǎng)絡(luò )連接、與大存儲器的接口以及整體流控制。該內核還是操作系統或核(kernel)很可能駐留的地方。與此同時(shí),第二個(gè)內核可能專(zhuān)門(mén)用于應用中的高密度處理功能。例如,壓縮數據包可能通過(guò)網(wǎng)絡(luò )接口傳輸到第一個(gè)內核,該內核對其進(jìn)行預處理,并遞交到第二個(gè)內核進(jìn)行音頻和視頻解碼。
這種模式受到采用分開(kāi)的軟件開(kāi)發(fā)團隊的開(kāi)發(fā)商青睞。將這些功能類(lèi)型進(jìn)行劃分的能力允許并行設計處理,消除項目中對關(guān)鍵路徑依賴(lài)性。這種編程模式還對項目中的測試和驗證階段有所幫助。例如,如果一個(gè)內核上的代碼發(fā)生變化,不一定會(huì )使另外一個(gè)內核上已經(jīng)完成的測試工作付之東流。
對稱(chēng)的與非對稱(chēng)的多內核處理
為理解是什么讓這種雙內核方法令人興奮,我們需要首先討論“對稱(chēng)多處理(SMP)”。這是指一種通過(guò)高速路經(jīng)相連接的兩個(gè)相似(或相同)的處理器,并共享一組外設和存儲器空間。它與“非對稱(chēng)多處理(AMP)”方法形成對比,其中結合了兩顆不同的處理器,通常是在一個(gè)混合的架構中集成一個(gè)MCU和一個(gè)DSP。AMP方法的一種局限性在于,設計工程師必須對控制和DSP功能的共享部分進(jìn)行“50/50”劃分;例如一旦DSP“勝出”,MCU將不能進(jìn)行計算處理。SMP架構沒(méi)有這種局限性,因為兩個(gè)處理器內核是相同的,可以按照應用要求進(jìn)行劃分,甚至劃分為100%的DSP或100%的MCU工作。此外,對稱(chēng)處理器還具有提供一種普通的集成設計環(huán)境的優(yōu)點(diǎn)。只需要一組開(kāi)發(fā)工具,而且針對單一開(kāi)發(fā)平臺培訓開(kāi)發(fā)團隊的負擔較小。
圖3: BF5601就是對稱(chēng)多處理的很好體現
作為一種SMP友好的器件,BF561(圖3)包含屬于每個(gè)內核的高速L1指令和數據存儲器,以及在兩個(gè)內核之間的一種共享128KB L2存儲器。每個(gè)內核都能同等地訪(fǎng)問(wèn)范圍廣闊的外設-視頻端口、串行口、定時(shí)器等等。這樣的安排擴展了器件的可配置性,允許其工作在幾種相同的有效架構下。這些模式(見(jiàn)圖4)可以總結性地稱(chēng)為“MCU/DSP分離”、“串行處理”和“分離處理”。
圖4:雙內核編程模式舉例
選擇合適的數據模式
“MCU/DSP分離”模式涉及到分離的以及通常運行在每個(gè)內核上的不同任務(wù)。一個(gè)內核被分配給所有的“MCU類(lèi)”行為,例如圖形覆蓋、聯(lián)網(wǎng)管理以及流控制。此外,如果是用了操作系統的話(huà),該內核還支持操作系統。與此同時(shí),第二個(gè)內核專(zhuān)門(mén)用于應用的高密度DSP功能。例如,壓縮數據通過(guò)第一個(gè)內核從網(wǎng)絡(luò )傳遞。接收到的數據包然后提供給第二個(gè)內核,該內核再進(jìn)行音頻和視頻的處理(圖4)。
這種模式非常適合那些采用分離的基于任務(wù)的團隊進(jìn)行軟件開(kāi)發(fā)的公司。擁有“控制團隊”和“DSP團隊”可以使開(kāi)發(fā)并行實(shí)施,減少項目對關(guān)鍵路徑的依賴(lài)性。這種編程模式還能促進(jìn)設計的測試和驗證階段。例如,在一個(gè)內核上的代碼改變未必使另一個(gè)內核上已經(jīng)完成的測試工作變得無(wú)效。此外,擁有兩個(gè)相同的內核還允許重新分配在任何內核上任何“未用”的處理帶寬,以在不同的功能和任務(wù)上再分配。
在“串行處理”使用模式中,第一個(gè)內核在輸入數據組上執行若干中間級控制和計算,然后傳第一個(gè)中間數據流到第二個(gè)內核進(jìn)行最后的處理。這種方法的一個(gè)變化方法是:將任務(wù)在每個(gè)內核上進(jìn)行劃分,在這種方式中,中間數據實(shí)際上在內核之間搬移幾次,直到獲得最后的結果。非常適合這種使用模式的算法是MPEG編碼或解碼。
“分離處理”模式為每個(gè)內核提供了更均衡的使用。因為在對稱(chēng)處理器中有兩個(gè)相同的內核,傳統的計算密集應用可以在每個(gè)內核之間平均劃分。架構功能,像豐富的片上存儲器、很寬的內部數據路徑和高帶寬DMA控制器都有助于基于“分離處理”的系統設計的成功。在這種模式中,運行在每個(gè)內核上的代碼是相同的;只有被處理的數據不同。在一個(gè)通道流應用中,這意味著(zhù)一半的通道由第一個(gè)內核處理,而另外一半由第二個(gè)內核處理。作為另外一個(gè)實(shí)例,在視頻或成像應用中,可能由每個(gè)內核處理交替幀。
即使當某個(gè)應用適合某個(gè)單內核處理器,也可以利用雙內核系統來(lái)降低整體的能耗。例如,如果一個(gè)應用需要600MHz的時(shí)鐘速度以在一個(gè)單內核處理器(如ADSP-BF533)上運行,它還必須工作在更高的電壓下(1.2V)以達到這個(gè)速度。然而,如果相同的應用在一個(gè)雙內核器件(BF561)上進(jìn)行劃分,每個(gè)內核可以運行在大約300MHz的速度下,每個(gè)內核的電壓可以極大地降低到0.8V。因為功耗與頻率呈正比并與工作電壓的平方成正比,電壓從1.2V降低到0.8V(同時(shí)頻率從600MHz降低到300MHz)能對功耗產(chǎn)生顯著(zhù)的影響,與單內核解決方案相比實(shí)際上節省了能耗。
評論