演算法標準實現高效 DSP 系統開發
作者:Steve Blonstein,技術主任--軟體開發系統
隨著數位訊號處理器 (DSP) 的應用範圍不斷擴大,對面向組件的軟體模組的需求不斷增長。第三方提供的現成演算法在基本層面上能夠響應上述需求。第三方演算法使系統開放商不必再費力重新設計主要的軟體功能,從而能夠更快、更廉價地將系統與更多功能整合。因此,第三方演算法在 DSP 系統開發中發揮著非常重要的作用。
為了使組件軟體方法順利工作,必須具備保證組件代碼互用性、一致性和便攜性的標準。DSP廠商認識到了上述需求,建立了管理不同演算法與應用之間介面的演算法標準。上述標準不是為了保證高效實施。針對代碼大小、特性及效能而選擇最佳演算法的工作是由系統整合商進行的。而標準所作的,則是提供確保演算法之間相互協作的一套規則,使他們更輕鬆地進行評估,然後在系統內容中進行整合。
演算法標準的起源
20世紀90年代中期,演算法標準的需求逐漸顯現出來,此時更為強大的 DSP 出現了,其可支援一個演算法的多通道,或者同一 DSP 上的多個演算法。儘管早期的 DSP 可能僅用作語音編碼器等,但像來自 TI TMS320C5000 平台中 DSP 則能夠處理蜂窩電話所需的整個數文書處理鏈,包括聲碼、音頻校正、回波消除等。諸如來自 TMS320C6000平台的其他 DSP,則能夠開發 DSL 線卡、視頻伺服器及其他在單個裝置上要求具有極高多通道效能的系統。
利用現有更高層次的效能,許多新興訊號處理標準不斷湧現,包括 JPEG、MPEG、電視會議、無線電話以及數據機與傳真改進等。開發商開始建立互動改變任務的動態系統,而不是一般基於 DSP 的具有固定功能的靜態系統。而且系統代碼規模也開始劇增,常常為了適應新型多功能系統的複雜性而大幅度增加。
DSP 系統開發商始終缺少經驗豐富且掌握深入訊號處理知識的 DSP 程式員。目前,這些開發商們開始整合更為複雜的系統,一些剛剛進入 DSP 領域的其他開發商則已開始進行最初的 DSP 設計。不斷增長的業界系統整合商尋找各種方法來將日益複雜化的裝置整合起來,而不必從頭設計所有軟體。幸運的是,一些具備業經驗證軟體技術的開發商認識到新的市場商機,並開始作為第三方出售其智慧財產權,包括演算法。系統整合商將從第三方購買"黑盒子"目標代碼,並將其載入至系統中,以節省寶貴的開發時間。至少這就是假設的工作流程了。
然而,在實踐中事情並非如此直接。第三方開發商常常假定DSP用法,以便使其演算法儘可能精簡,並獲得最佳效能效果。因此,一個演算法可能需要佔用所有記憶體,在很長的時間中禁用出現中斷,並完全控制核心。此外,系統整合商可能無法瞭解開發商的事先假定是什麼,因為不存在統一的方法指定演算法的資源要求與效能效果。
顯然,如果有了上述假定的話,那麼兩種或多種演算法就不能在多功能系統中和平共處。這樣的問題在利用原始碼進行再設計時可能相當困難,但力圖整合目標代碼的系統開發商對改變演算法無能為力。而且,如果演算法來自不同的第三方(事實常常如此),整合商將面臨不相容性難題以及不可避免的相互指摘。
到20世紀90年代末為止,很明顯如果不就演算法建立行為規則,那麼 DSP 開發將停滯不前。因此,DSP 廠商開始發布這種規則,將其編寫為第三方軟體開發商必須遵循的標準代碼,以便保證演算法的相容性。儘管這些標準是具有所有權的,但它們都具有相同的目標,並且許多規則都是一樣的。由於某些規則反映了硬體實施,並且僅針對某些個體廠商,因此對所有權而不是業界標準進行保留。此外,當標準出現時,廠商為了跟上 DSP 的開發步伐被迫響應當時的需求,而不是將問題交給漫長的業界標準化進程來解決。
示範標準
最初建立的標準之一是 TI 的 TMS320 DSP Algorithm Standard,也稱作XDAIS。TI 推出了該標準作為其 eXpressDSP 軟體戰略的基本元素,並同時推出了實施核心、整合式開發環境 (IDE) 及第三方網路,這表明演算法標準化將在 DSP 軟體開發中發揮關鍵性作用。TMS320 Algorithm Standard 是各種 DSP 演算法標準的一個示範,事實上它成了隨後推出的某些標準的一個模型。
XDAIS 是在 TMS320 DSP 底層軟體架構基礎之上建立起來的。圖1顯示了 DSP 系統的組織方式,這樣簡單資料感應器演算法從 I/O 功能以及底層核心運行時環境中分離出來。圖2顯示了 XpressDSP 環境中演算法正常啟動並執行必備系列事件。
XDAIS 演算法規則
XDAIS 規則分外四組,具備基本的校正機制以保證符合標準。
常識性編程規則。本組規則的作用在於加強演算法的便攜性、可預測性及易用性。由於大多數 DSP 系統運行於 C 環境中,因此頂層的演算法必須能在C中調用。演算法不得幹擾應用程式的運行時狀態,並且代碼必須在搶佔式環境中進行重入以支援多個通道。必須對多執行個體共用的儲存空間與全域變數進行保護。所有代碼引用必須完全可再定位,不得採用寫入程式碼儲存空間定址,否則將幹擾其他代碼。由於資源可能因系統而異,因此演算法不得直接存取外設。
取消任意選擇。如果需要以單一強制方法進行某項工作的話,該標準指定了應在各種不同方法中採用何種方法(就好像交通法規指定了在路上應左行還是右行)。為避免命名衝突,訊號命名必須遵循 DSP/BIOS 規則,這是 TMS320 DSP 採用的即時核心。為避免將代碼移植到不同作業系統環境中時發生衝突,演算法必須封裝到遵循統一命名規則的檔案檔案中。必須使外部參考符合來源,如C運行支援庫函數或其他符合 eXpressDSP 的模組。演算法執行個體必鬚根據指定的程式調用並刪除,並且它們必須能夠獨立地進行再定位。對 C6000 平台而言,演算法必須至少支援由小到大的位元組順序,或最好兩個都支援,以便為系統開發商提供選擇。
資源管理。由於演算法一般比較貪婪,並且必須使其可以共用,因此本組位於該標準的核心。現在每個演算法都有了強制的儲存空間管理介面,而且所有演算法都必須在設計時一次協調或在運行時互動協調使用儲存空間。本規則適用於外部及內部儲存空間,以及 DMA 通道等外設。本應用同控制架構一樣收集所有儲存空間請求,隨後向演算法分配儲存空間。演算法可能不能獲得其全部請求,但應用程式框架能夠在競爭請求間進行很好的判斷,並最佳化地劃分系統資源。
統一規範。本組規則有助於系統整合商衡量演算法並評估其在系統中的相容性。所有的相容性演算法必須表現最壞情況的中斷傳輸時間、典型與最壞情況的執行,以及程式、堆陣、靜態和堆棧儲存空間要求等方面的特點。例如,演算法供應商可能不再隱瞞會讓演算法獨佔核心幾秒鐘的中斷傳輸時間。現在,必鬚根據已確定的方式在演算法技術描述中指定並包含傳輸時間要求。
校正與 eXpressDSP 一致性。演算法開發商不能簡單地說它滿足了 TMS320 Algorithm Standard 的要求。開發商必須通過 TI 的 XDAIS 一致性測試載入器加以證明,該工具可校正代碼是否符合規則。此外,第三方必須書面同意在開發演算法時遵循了標準規定。當滿足了這些要求時,第三方可以聲明其演算法符合 eXpressDSP,並在廣告宣傳中使用圖3所示的標誌。一致性工具可適用於第三方及 DSP 客戶,以便使他們在開發自身軟體時對這些軟體進行檢查。系統整合商還可以利用該工具保證他們購買的代碼在獲得eXpressDSP一致性稱號後沒有經過修改。
XDAIS 的發展
XDAIS 在5年前推出時,其規則還不到30條。現在它已有了46條規則,這反映出對標準的需求不斷髮展,但其發展是以認真、受控的方式進行的。新規則的添加(以及一些改動)出於以下幾點原因:
新硬體功能。添加某些規則是為了涵蓋矽技術的開發。例如,隨著將進階 DMA 功能整合到晶片中,XDAIS 也添加了新的規則以涵蓋 DMA 通道的分配。未來,XDAIS還可能包括有關硬體加速器作為共用資源使用的規則。
效能最佳化。為最佳化效能,DMA規則已進行了修訂,在此,這些規則也展示了XDAIS 標準中的另一個變化領域。由於早期規則解決了重大衝突,因此一些較新的指導方針傾向於協助開發商更好地發揮系統優勢。
新應用領域。XDAIS的最初指導方針主要是為了處理帶有資料流應用的單功能DSP,如語音及音視頻等。但今天的多功能系統常常必須處理突發資料,如 IP 資料包或更複雜的數據機標準中類似架構的編碼。這些應用的核心和系統要求有時與流應用的不同,而XDAIS 規則必須包括兩種類型的資料輸送量。
有一個沒有改變的特性,即需要將開銷保持在較低水平。經驗顯示,DSP 客戶與第三方將接受不超過一至兩個百分點的效能及儲存空間幹擾。這對於通用微處理器而言是一個較小的開銷百分比,該微處理器可通過中斷來驅動控制任務,並不十分受限於記憶體的高效利用。但是,通常每個效能MIP對DSP都是非常關鍵的,因此 TI 已努力將 XDAIS 開銷保持在限定範圍內。
演算法標準的接受
儘管一直就軟體規則向第三方進行諮詢,但有些第三方最初對他們能否從演算法標準中獲益是抱有懷疑態度的。許多第三方將演算法的開發看作完全是其自身的業務,不歡迎 DSP 廠商參與,認為這是一種幹擾。此外,為了使演算法符合新的標準,一些重複工作是不可避免的,而第三方則反對承擔他們認為是不必要負擔的工作。而且,對與標準相關的開銷懲罰也有反對的聲音。
與第三方形成對比的是,DSP 系統整合商幾乎立即對標準表示歡迎。一些較大型DSP 開發商已經在努力建立其自身規則,而 DSP 標準的到來節省了他們的工作。系統整合商還認識到,與演算法標準相關的少量開銷能協助他們避免大量時間耗費與麻煩,這種節約的價值大大超過了他們所必須接受的儲存空間與效能權衡。
一旦他們熟悉了這些標準,DSP 系統整合商就開始要求演算法一致性,這樣即便是最不情願的第三方也不得不遵照行事。為了應付對額外開發工作的反對意見,出現了協助第三方開發一致性演算法的工具,圖4所示的 Hyperception Component Wizard 便是其中一個執行個體,它可協助建立 XDAIS 演算法。
今天,標準已得到普遍接受,即便最不情願的演算法開發商也認同標準化使得出售軟體的商機大大增加。根據標準進行設計還意味著能夠最小化支援需求,從而節省第三方的開支。TMS320 Algorithm Standard 就是體現標準有多麼成功的一個代表:目前,符合 eXpressDSP 演算法的第三方開發商達110個,且數量還在不斷增加。其他 DSP 廠商也認識到演算法標準的需求,並為其各自的平台和第三方演算法提供了相似的產品。由於標準涵蓋了可互通性編程的基本問題,因此其規則在許多方面都與最初推出的標準 TMS320 Algorithm Standard 相似。
新興產業
事實上,DSP 演算法標準帶來了一種前所未有的國際產業。今天,某個地區的系統整合商可以通過網站從另一個地區的第三方處購買 DSP 演算法,只要該演算法通過認證,符合演算法標準,那麼該系統開發商就知道此代碼在應用程式框架中可正常發揮作用。對 DSP 系統整合商而言,一致性演算法已簡化了對第三方目標代碼進行評估並整合的工作,從而簡化了開發進程並縮短了產品上市時間 。
由於我們最終控制了演算法,現在業界中存在的問題就在於對其他軟體組件(如庫、驅動程式、核心以及通訊棧等)進行標準化會帶來什麼優勢。DSP 廠商甚至在改進現有演算法標準的同時,就已經在考慮有關對上述組件的標準化工作進行擴充的問題了。
隨著 DSP 產業繼續圍繞著組件軟體模型進行開發,演算法標準的價值正變得越來越明顯。標準提供了一系列規則,根據設計,實際上這些規則能夠保證組件在任何應用中與來自不同廠商的演算法實現進行互操作。因此,代碼的便攜性與可重複使用性得到加強,而演算法的衡量與評估更為直接,並且演算法也更易於整合到系統之中。總體系統開發變得更快、更靈活,從而為市場中的終端使用者帶來了更健碩、更廉價的產品。