由於愈來愈多的系統需要音訊、視訊與通訊處理功能,因此應用處理器需要更強的運算能力。而有些RISC MCU與DSP的組合為這些系統提供服務。但MCU仍以傳統的架構達成有效率的非同步控制流程,DSP的架構則在同步、固定率資料流程方面發揮所長。
業界希望將控制與運算功能整合成一種單一整合型解決方案上,已經嘗試了多種做法。舉例來說,有些MCU包括限制如指令集延伸與MAC(乘積累加)單元等信號處理功能。同樣地,有些晶片製造商已經利用多重核心的做法,結合單獨的DSP與MCU處理器到單一封裝中。
不過,這些做法缺乏對先進媒體處理應用所需基本架構基礎。針對成本、板面積與作業效率等理由,有一種很理想的解決方案就是將DSP與MCU的功能結合起來到一顆單一的「整合型(Uified)」處理器上,而不是嘗試整合兩個不同的實體到基板或系統單晶片層級上。以ADI的Blackfin媒體處理器系列為例,其基礎架構在處理對多媒體應用通用的即時資料流程,以及由一般MCU處理以控制為主的工作。
透過結合如雙MAC和視訊ALU的信號處理區塊、作業模式(Operating Modes)以及記憶體管理單元的典型MCU特性,Blackfin處理器為設計嵌入式多媒體系統提升了一種整合型的做法。本文將會聚焦在架構與功能的特性,剖析為何Blackfin能在複雜的多媒體系統中,實現DSP與MCU的雙重角色。
以先天特性而言,由於MCU是屬於系統控制器,它總是提供堅強的週邊陣容來連接其它設計中的子系統。這其中包括低速串列埠(諸如SPI與UART)、PCI、USB和其他方面。除此之外,在事件控制方面,它們通常包括可當作事件補捉裝置或PWM輸出節點的可編程計時器、即時時脈、看門狗計時器和大量協助可編程I/O旗標。
此外,媒體處理器系列不只包含這些MCU型態的週邊,也可做為收發多媒體資訊的高速介面。舉例來說(如圖1所示),同步串列埠連接到高解析度音效編解碼器與高效能電信介面,而平行周邊介面(PPI)則連接到視訊編解碼器與資料轉換器。像大部份的微控制器一樣,Blackfin內建硬體支援軟體異常、硬體中斷點、效能計時器、執行追蹤並且透過一單獨的JTAG埠支援目標硬體。
DSP應用專注於以最少的時脈週期執行最多的算術運算(如MAC運算)。為達此目的,它們時常使用VLIW(超長指令字元)指令,犧牲程式碼密度以達運算的效率。
另一方面,MCU主力的控制功能牽涉到許多條件的運算,常在程式流程中改變。這些程式一般用C或C++語言來寫,且時常應用即時作業系統(RTOS)。由於控制功能可非常廣泛,因此程式碼密度非常重要,它使一可變長度的指令集成為決定性的特性。
整合型Blackfin指令集實現了這兩種做法的好處。它的可變長度指令集包含64位元運算碼,用以支援DSP內部迴圈每週期的多重運算,不過由於它經過最佳化,16位元運算碼代表最被頻繁使用的指令。因此,Blackfin的編譯碼密度數能與那些業界最佳的MCU匹敵。
軟體開發模式能讓高效能 DSP功能在框架內與一般的RISC元件相匹配。系統層級與產品層級的應用程式碼可以用C/C++寫成,並可被置於使用者所選的標準即時作業系統的頂層。對於較低層程式碼而言,諸如原始資料移動與處理,可以用混合組合編碼與C/C++程式碼的型式達到最佳化,並利用手動調整有用的組合程式庫。Blackfin可以只用組合工具,編譯的C/C++程式碼或綜合兩者的型式簡單編程。
Blackfin既不是一顆具有強化指令集的DSP,也不是一顆具有DSP延伸功能的微控制器。對這兩個層級的開發者而言,將會體認到這顆元件是一種高效能媒體處理器與編譯器親和性兼具的處理器。處理器在一種單一且整合的平台上,利用單一種工具鏈進行程式碼的開發。因此,開發者能學習一種指令集並維持單一程式碼的基礎在單一種作業系統上執行。
此一綜效真正創造出一種新的「媒體指令集運算」領域。一個整合型核心有一套軟體應用編程介面(API)與驅動器、偵錯器(Debugger)、讀寫器(Loader)、連結器(Linker)、語言(Language)等。單一的學習曲線表示開發生產力的大幅改善。
DSP應用是以資料為主的,提供大的資料匯流排與DMA引擎使用,以降低核心處理器資料移動的負擔。另一方面,MCU通常不支援為多媒體資料流上夠快的記憶體轉換率。
嵌入式媒體處理器必須有完整的DMA功能來移動資料區塊進出晶片。由於它無法在晶片上包括足夠的記憶體來儲存多重解壓縮視訊框,因此利用DMA以一種緊密整合的方法來管理位元流資料,如此視訊處理可以有效的實現。媒體處理應用所需的已知大量資料移動,資料移動不能被允許造成處理器中斷而影響即時效能。而且,由於在資料移動中涉及核心處理器是無效率的,因此DMA引擎必須獨立且效能夠大,使核心牽涉的程度降至最低。基本上,DMA控制器能允許該核心依預測規劃操作,並從系統控制流程隔離資料的移動。
在典型應用中,原始資料首先從週邊像視訊埠或串列埠得到DMAd傳到媒體處理器中。接著,在媒體處理期間,中介資料DMAd來回在外部記憶體,最後,經處理的資料得到DMAd再傳回到週邊或系統記憶體。除了提供高速優先權的DMA通道外,也提供二維DMA功能(圖3)做為資料(例如來自影像的像素區塊)轉移任意直角區,軟體負擔相當輕微。
Blackfin架構包括一種做為資料存取與指令提取的多層記憶體階層(圖2)。這些結構是專為支援硬式即時決定性的運算與非即時大型編碼基礎的效率而設。透過結合先進資料移動功能與其多層次資料記憶體階層,這兩種以流動與控制為主的資料都有效地被處理。L2和L3記憶體都是線性的(結合指令與資料),而該處理器的可定址空間非常大,它能讓處理器存取大的程式與資料組。
最佳化的指令記憶體階層可支援來自零等待時態SRAM的硬式即時作業以及經由多路快取結構的非即時控制碼。
資料記憶體階層能讓部份快速系統記憶體被定義成快取或SRAM。這讓程式設計師能彈性地調整並取捨效能與資料組長度比。有一種專為執行時間堆疊與快速堆疊空間而設的單獨4KB「高速暫存(Scratchpad)」記憶體。這種在資料記憶體上的快取結構分為二個記憶庫(Bank),能讓系統開發者允許寫入二個記憶庫中當快取;也可以是一種當快取,另一種當SRAM,或者都當SRAM。當有了指令快取,單獨的資料快取線路就可以在它們已經被載入後加以鎖定。MMU(記憶體管理單元)能讓開發者對所選的記憶體區域加以保護,並在存取這些資源受到限制的環境中來管理系統資源(快取或其它記憶體子系統)。
由於MCU負責控制一部複雜系統的全部,它們需要一整套保全特性,像是定義單獨,自由存取應用開發空間的記憶體管理功能,並且能避免過度寫入保持明確的編碼部份的安全性。Blackfin支援這些親和的作業系統特性,具有受保護(使用者)與未受保護(監督者)作業模式。這些重要的保護特性能防止使用者不知不覺或惡意存取或破壞系統共享的部份。像許多微控制器一樣,Blackfin也允許非同步中斷與同步例外事件。兩種事件會導致管線的指令中止執行以支援服務觸發事件。映射中斷優先權為微控制器常見的一種特性,但並不常在DSP中看到,例外處理功能可保護系統避免無效或違法的編程。
為符合嵌入式媒體處理器的運算複雜度與效能的需求,快速時脈率是必需的,但這使它在運用策略節能設計電路變得困難。動態電源管理能力使特定工作的效能對功率比達到最佳化,支援一種電源管理的多階層做法,依據系統需要調整效能。如圖4所示,核心電壓可被改變成與頻率變化一致,因此,即使執行時間有被延長,當以較低的頻率與電壓來執行程式碼的區段,所消耗的功率更小。
為支援媒體處理應用的開發,軟體的開發環境必須支援開發的兩種型態為:一種是迴路為主的媒體與信號處理,以及一種以快取為主的控制處理。 CROSSCORE開發工具套件支援該系統開發。這些工具包括評估系統、線上模擬器以及一種稱為VisualDSP++的整合型開發環境,它的特色在於支援兩種型態的系統開發。
為調整位於慢速L2/L3記憶體中的控制碼與資料,系統開發者需要了解並看到系統中快取是如何執行的。周期累加模擬器收集快取的統計數據,與執行排序與快取的操作有關。統計數據諸如全部快取存取率,快取命中率與快取遺失率都已列表並看得見顯示(圖5)。此一資訊是以應用設定檔瀏覽與動態快取內容瀏覽。使用快取瀏覽器開發者就可以保證系統在所有它需要的配置是正確無誤的。
由於信號處理運算法開發最關注的在於提升內部迴路的效率,所以VisualDSP++包括一種指令管線瀏覽器,透過排序器的管線可看見顯示指令流程。單一事件流程通過管線的視覺化能讓開發者更容易瞭解延遲與停頓的地方及原因,這些都會被採用到運算法中。因此,運算法可以經最佳化使管線無效率事例數降至最低。
針對多媒體應用,使用單顆整合型媒體處理器來取代雙處理器解決方案的優點是顯而易見的。這些好處包括擁有成本的降低、加快上市時間、降低系統成本與複雜度。不過,對整合型媒體處理器的最大好處是在於能應用中達到前所未有的性價比。