《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于DSP/BIOS 的TI DSP 應(yīng)用程序框架設(shè)計(jì)
基于DSP/BIOS 的TI DSP 應(yīng)用程序框架設(shè)計(jì)
維庫(kù)
摘要: 本文介紹了基于DSP/BIOS實(shí)時(shí)內(nèi)核的TIDSP應(yīng)用程序參考框架RF5。另外,面對(duì)目前越來(lái)越多的多處理器系統(tǒng)設(shè)計(jì)以及典型的GPP-DSP架構(gòu),本文提出了一種改進(jìn)的DSP應(yīng)用程序框架ERF5以最大化地支持這種架構(gòu)。E
Abstract:
Key words :

  摘要:本文介紹了基于title="DSP">DSP/BIOS 實(shí)時(shí)內(nèi)核的TI DSP 應(yīng)用程序參考框架RF5。另外,面對(duì)目前越來(lái)越多的多處理器系統(tǒng)設(shè)計(jì)以及典型的GPP-DSP 架構(gòu),本文提出了一種改進(jìn)的DSP應(yīng)用程序框架ERF5 以最大化地支持這種架構(gòu)。ERF5 主要從GPP-DSP 有效通信、任務(wù)線程的高效執(zhí)行與調(diào)度以及任務(wù)線程顆粒度的合理化三個(gè)方面對(duì)RF5 進(jìn)行了改進(jìn),并已成功應(yīng)用于實(shí)際項(xiàng)目。

  1 引言

  隨著通信與信息技術(shù)的發(fā)展以及數(shù)字產(chǎn)品的普及,DSP 被越來(lái)越多地應(yīng)用于各種數(shù)字系統(tǒng)中。作為業(yè)界領(lǐng)先的數(shù)字信號(hào)處理器供應(yīng)商的美國(guó)德州儀器(TI)公司于上世紀(jì)90 年代開(kāi)發(fā)了能在其DSP 產(chǎn)品上運(yùn)行的實(shí)時(shí)內(nèi)核DSP/BIOS,并提出一系列DSP 軟件參考框架(Reference Framework, RF)來(lái)幫助DSP 應(yīng)用開(kāi)發(fā)人員加速軟件的開(kāi)發(fā)進(jìn)程。然而,國(guó)內(nèi)針對(duì)DSP 應(yīng)用程序框架設(shè)計(jì)的研究還并不多且研究工作大多圍繞在如何使用現(xiàn)有的TI 參考框架上,鮮有對(duì)其使用局限性的討論與改進(jìn)方案。

  本文首先簡(jiǎn)單介紹了由 TI 所提出的DSP 應(yīng)用程序參考設(shè)計(jì)框架RF5 及其適用領(lǐng)域,然后在它的基礎(chǔ)上針對(duì)目前使用越來(lái)越多的多處理器系統(tǒng)提出了一個(gè)對(duì)RF5 改進(jìn)后的DSP 應(yīng)用程序框架ERF5(Enhanced Referenced Framework Level 5),并在其中定義了一套DSP 與系統(tǒng)中作為核心控制單元的外部通用處理器GPP 進(jìn)行通信的良好機(jī)制,從而能夠?qū)崿F(xiàn)DSP的任務(wù)調(diào)度與執(zhí)行過(guò)程受控于GPP,使DSP 的運(yùn)行狀態(tài)能夠高效地切換于多套功能獨(dú)立的數(shù)字信號(hào)處理算法。

  2 RF5 應(yīng)用程序框架

  TI 在eXpressDSP 概念中提出了一系列DSP 應(yīng)用程序參考框架以滿足不同應(yīng)用場(chǎng)合的需要,其中包括RF1(Reference Framework Level 1)、RF3(Reference Framework Level 3)和RF5[1][2]。與RF1 和RF3 相比,RF5 是功能最強(qiáng)大的DSP 應(yīng)用程序參考框架,它適用于多通道、多算法的高密集型DSP 應(yīng)用系統(tǒng),RF5 同時(shí)支持了靜態(tài)和動(dòng)態(tài)DSP/BIOS 模塊對(duì)象的創(chuàng)建,支持1-100 個(gè)數(shù)據(jù)處理通道和XDAIS 算法,支持由DSP/BIOS 任務(wù)對(duì)象TSK實(shí)現(xiàn)的線程調(diào)度機(jī)制,支持線程阻塞,因此被廣泛應(yīng)用于音視頻信號(hào)處理等復(fù)雜數(shù)字信號(hào)處理系統(tǒng)當(dāng)中。圖1 給出了基于RF5 的DSP 應(yīng)用程序框架。

  圖1 RF5 應(yīng)用程序框架

  TI 為RF5 應(yīng)用程序參考框架定義了4 種數(shù)據(jù)處理基本元素,分別是任務(wù)(Task)、通道(Channel)、算法單元(Cell)和XDAIS 算法。RF5 框架的最高層次是任務(wù),任務(wù)可以由單個(gè)或多個(gè)通道構(gòu)成,它通過(guò)與設(shè)備驅(qū)動(dòng)程序或其它任務(wù)通信來(lái)在較高的層次控制數(shù)據(jù)的流向,每個(gè)任務(wù)體都可以歸結(jié)為“獲取數(shù)據(jù)-處理各通道中的信號(hào)-發(fā)送結(jié)果數(shù)據(jù)”的迭代過(guò)程。每個(gè)通道元素由一系列順序執(zhí)行的信號(hào)處理算法單元構(gòu)成,算法單元是一個(gè)XDAIS 算法的封裝,其作用是為XDAIS 算法與外部應(yīng)用程序提供一套標(biāo)準(zhǔn)的接口,它必須實(shí)現(xiàn)ICELL接口模塊。

  RF5 除了定義以上4 種數(shù)據(jù)處理元素之外,還提出了數(shù)據(jù)通信元素的概念以保證能在任務(wù)與DSP 外設(shè)之間、任務(wù)與任務(wù)之間和算法單元之間進(jìn)行高效數(shù)據(jù)通信?;贒SP/BIOS開(kāi)發(fā)的DSP 應(yīng)用程序中的數(shù)據(jù)通信方式可分為任務(wù)級(jí)數(shù)據(jù)通信和算法單元級(jí)數(shù)據(jù)通信。對(duì)于任務(wù)級(jí)數(shù)據(jù)通信方式,在RF5 中采用SIO(STream IO)對(duì)象和SCOM(SynchronizedCommunication)消息來(lái)實(shí)現(xiàn)。對(duì)于算法單元級(jí)數(shù)據(jù)通信,RF5 使用ICC(Inter-CellCommunication)對(duì)象和ICC 對(duì)象列表來(lái)實(shí)現(xiàn)。

  3 改進(jìn)的DSP 應(yīng)用程序框架ERF5

  隨著嵌入式系統(tǒng)復(fù)雜度的不斷提高,又限于DSP 不適合進(jìn)行復(fù)雜系統(tǒng)的流程控制,所以近年來(lái)在系統(tǒng)設(shè)計(jì)中往往更多地讓DSP 扮演著協(xié)處理器的角色,將其從繁重復(fù)雜的系統(tǒng)控制任務(wù)中解放出來(lái),而整個(gè)系統(tǒng)的流程控制則交由一個(gè)通用處理器GPP 來(lái)完成,這使得DSP 和GPP 能夠優(yōu)勢(shì)互補(bǔ)。然而RF5 在多機(jī)通信方面存在很大缺陷,它不適用于多處理器系統(tǒng),尤其是DSP 作為多處理器系統(tǒng)中從設(shè)備的應(yīng)用環(huán)境。另外,RF5 所實(shí)現(xiàn)的是單一功能的多任務(wù)系統(tǒng),其多任務(wù)特性僅僅表現(xiàn)在將一個(gè)功能單一的任務(wù)拆分成輸入-處理-輸出三個(gè)分任務(wù)而已,并沒(méi)有實(shí)現(xiàn)真正的多功能多任務(wù)系統(tǒng),即一個(gè)任務(wù)就是一個(gè)獨(dú)立的信號(hào)處理功能。

  基于上述兩個(gè)方面的分析,我們完全有必要改進(jìn) RF5 以滿足基于多處理器的復(fù)雜信號(hào)處理系統(tǒng)的要求。本文所提出的ERF5 的系統(tǒng)框圖如圖2 所示,任務(wù)1、任務(wù)2、任務(wù)3 是系統(tǒng)中定義的三個(gè)任務(wù),它們以同等的優(yōu)先級(jí)被DSP/BIOS 任務(wù)調(diào)度器輪流調(diào)度。每個(gè)任務(wù)皆包含了輸入預(yù)處理、核心信號(hào)處理以及輸出后處理三個(gè)模塊,構(gòu)成功能完整且獨(dú)立的信號(hào)處理任務(wù),每個(gè)任務(wù)由單個(gè)或多個(gè)數(shù)據(jù)處理通道(Channel)組成,而每個(gè)通道又由一系列算法單元(Cell)構(gòu)成。多處理器系統(tǒng)中的GPP 通過(guò)DSP 運(yùn)行控制寄存器DSP_CNTL 來(lái)控制DSP 的任務(wù)執(zhí)行過(guò)程,而DSP 作為響應(yīng)會(huì)將其運(yùn)行狀態(tài)反應(yīng)在DSP 運(yùn)行狀態(tài)寄存器DSP_STAT 中??偟膩?lái)說(shuō),ERF5 從以下三個(gè)方面對(duì)RF5 進(jìn)行了改進(jìn):

  定義并實(shí)現(xiàn)了 DSP 與GPP 之間進(jìn)行通信的有效方式;給出了當(dāng) DSP 需要實(shí)現(xiàn)多套信號(hào)處理功能并且某一套信號(hào)處理任務(wù)的執(zhí)行完全受控于GPP 時(shí)的任務(wù)實(shí)現(xiàn)框架;對(duì) RF5 中不合理的任務(wù)拆分進(jìn)行了合并,減輕了由于DSP/BIOS 任務(wù)調(diào)度對(duì)系統(tǒng)性能的影響。

 

  圖 2 ERF5 應(yīng)用程序框架

  3.1 主從通信方式

  我們?cè)贒SP 的存儲(chǔ)空間中定義了兩個(gè)寄存器:DSP 運(yùn)行控制寄存器(DSP_CNTL)和DSP 運(yùn)行狀態(tài)寄存器(DSP_STAT)。在DSP_CNTL 中可以定義一系列控制字段用來(lái)表示外部主機(jī)對(duì)DSP 的各種控制操作,而在DSP_STAT 中可以定義一些與DSP_CNTL 相對(duì)應(yīng)的描述DSP 當(dāng)前運(yùn)行狀態(tài)的字段信息。GPP 通過(guò)合理地設(shè)置DSP_CNTL 以命令DSP 執(zhí)行相應(yīng)的操作,而DSP 在響應(yīng)了CPU 的命令后會(huì)設(shè)置好DSP_STAT 以告知CPU 目前DSP 的運(yùn)行情況。

  另外,為了便于 DSP 與主機(jī)進(jìn)行數(shù)據(jù)交換,ERF5 在DSP 的存儲(chǔ)空間中開(kāi)辟了兩塊專用于在DSP 與GPP 之間進(jìn)行數(shù)據(jù)交換的緩沖區(qū),并在DSP 運(yùn)行狀態(tài)寄存器DSP_STAT 中定義一個(gè)緩沖區(qū)標(biāo)志位PPFLG 以告知主機(jī)當(dāng)前它所能訪問(wèn)的乒乓緩沖區(qū)是“乒”或是“乓”,使得主機(jī)和DSP 之間的數(shù)據(jù)交互能夠彼此相對(duì)獨(dú)立地進(jìn)行。

  3.2 任務(wù)實(shí)現(xiàn)模型

  在明確了主機(jī)與DSP 的通信方式以后,下面需要解決的就是如何在應(yīng)用程序框架中給出合理的任務(wù)實(shí)現(xiàn)模型使它既能支持主機(jī)對(duì)DSP 的有效控制又能盡可能地減小DSP/BIOS的任務(wù)調(diào)度開(kāi)銷。這里以我們的實(shí)際項(xiàng)目為例來(lái)闡述任務(wù)的實(shí)現(xiàn)模型。在我們的H.264 混合編解碼系統(tǒng)中,DM642 需要運(yùn)行三個(gè)相互獨(dú)立的任務(wù):視頻編碼任務(wù)、視頻解碼任務(wù)和視頻直通任務(wù),在任意時(shí)刻,這三個(gè)任務(wù)線程的核心處理過(guò)程運(yùn)行與否完全受GPP 控制。首先,出于對(duì)系統(tǒng)性能的考慮,我們都以靜態(tài)配置的方式在DSP/BIOS 中定義這3 個(gè)任務(wù),這樣在系統(tǒng)運(yùn)行時(shí)不需要花費(fèi)由于任務(wù)動(dòng)態(tài)創(chuàng)建所帶來(lái)的不可避免的性能開(kāi)銷。顯然這3 個(gè)任務(wù)應(yīng)該具有同等優(yōu)先級(jí),否則,由于DSP/BIOS 實(shí)時(shí)內(nèi)核的搶占性特征將使得某些高優(yōu)先級(jí)的任務(wù)始終搶占那些低優(yōu)先級(jí)任務(wù)的執(zhí)行權(quán)即使GPP 在某些時(shí)刻并沒(méi)有啟動(dòng)那些高優(yōu)先級(jí)的任務(wù)。此外,由于DSP/BIOS 周期性地調(diào)度系統(tǒng)中所有處于就緒狀態(tài)下的任務(wù),所以必須使每個(gè)任務(wù)中判斷其主體處理過(guò)程是否執(zhí)行的邏輯和任務(wù)切換邏輯盡可能短小,因?yàn)檫@段代碼在系統(tǒng)執(zhí)行時(shí)將被頻繁地調(diào)用。另外需要注意的是應(yīng)該使用TSK_sleep(…)函數(shù)來(lái)實(shí)現(xiàn)任務(wù)切換邏輯以使當(dāng)前沒(méi)有被GPP 命令執(zhí)行的任務(wù)被阻塞一段時(shí)間(該時(shí)間間隔應(yīng)該至少是系統(tǒng)中各個(gè)周期性任務(wù)的最大執(zhí)行周期),否則DSP/BIOS 任務(wù)調(diào)度器會(huì)頻繁調(diào)度該任務(wù)以至于影響到其它任務(wù)的正常執(zhí)行。下面以視頻直通任務(wù)為例給出其任務(wù)執(zhí)行流程圖如圖3所示。

  圖3 視頻直通任務(wù)的執(zhí)行流程圖

  3.3 任務(wù)拆分與合并

  DSP/BIOS 實(shí)時(shí)內(nèi)核能保證運(yùn)行在它之上的所有任務(wù)在適當(dāng)?shù)臅r(shí)刻被正確地調(diào)度。在通常情況下,系統(tǒng)中運(yùn)行的任務(wù)越多,花費(fèi)在DSP/BIOS 任務(wù)調(diào)度上的時(shí)間也就越多,單任務(wù)系統(tǒng)花費(fèi)最少的任務(wù)調(diào)度時(shí)間,因此在一個(gè)應(yīng)用框架中應(yīng)該合理地規(guī)定任務(wù)的規(guī)模,過(guò)細(xì)或過(guò)粗地劃分任務(wù)都將為系統(tǒng)性能帶來(lái)負(fù)面影響。在ERF5 中,每個(gè)功能獨(dú)立的信號(hào)處理模塊分別定義成一個(gè)任務(wù)線程,其中包含了與當(dāng)前信號(hào)處理功能相對(duì)應(yīng)的數(shù)據(jù)輸入預(yù)處理和數(shù)據(jù)輸出后處理部分,在一個(gè)獨(dú)立的任務(wù)線程中將可以使用EDMA 等外設(shè)模塊實(shí)現(xiàn)的處理算法與必須由CPU 參與運(yùn)算的算法獨(dú)立開(kāi)來(lái),并在它們之間引入雙緩沖以模擬流水線機(jī)理,這樣就把原先的任務(wù)線程之間的通信變換為在單個(gè)任務(wù)線程內(nèi)的算法單元之間的通信,使得任務(wù)線程之間的通信和數(shù)據(jù)交換由于線程的獨(dú)立性而被最小化,從而有效避免了由于線程通信造成系統(tǒng)死鎖情況的發(fā)生。

  4 性能分析

  本節(jié)以 CPU 負(fù)載為指標(biāo)在本文所提出的應(yīng)用程序框架和RF5 之間進(jìn)行性能比較與分析。為了使實(shí)驗(yàn)結(jié)果更具有說(shuō)服力,我們使用TMS320DM642 *估板中的MPEG2 編解碼例程作為RF5 框架的一個(gè)實(shí)現(xiàn)范例,另外,我們又采用本文所提出的ERF5 實(shí)現(xiàn)了MPEG2 編解碼系統(tǒng),兩者使用同樣的符合XDAIS 算法標(biāo)準(zhǔn)的MPEG2 編解碼算法庫(kù)。這里我們將CPU負(fù)載定義為:

  對(duì)于一個(gè)視頻信號(hào)處理系統(tǒng)來(lái)說(shuō),一般要求系統(tǒng)能在 1 秒內(nèi)處理25-30 幀圖像數(shù)據(jù),因此不妨將其作為上述視頻編解碼系統(tǒng)的實(shí)時(shí)性指標(biāo),即系統(tǒng)對(duì)一幀圖像進(jìn)行編碼或解碼的最大周期為33-40 毫秒。根據(jù)以上計(jì)算公式作出RF5 和改進(jìn)的應(yīng)用程序框架的CPU 負(fù)載圖如圖4 所示。從圖中可以看出ERF5 的CPU 占用率與RF5 基本相近,甚至要稍好于RF5,若將它應(yīng)用在視頻信號(hào)處理領(lǐng)域,其CPU 占用率只有7.92%-9.50%,完全滿足實(shí)際應(yīng)用的需要。

  圖 4 MPEG2 編解碼系統(tǒng)中ERF5 與RF5 的CPU 負(fù)載比較圖

  5 總結(jié)

  本文簡(jiǎn)單介紹了 TI DSP 參考框架RF5,并提出ERF5 應(yīng)用程序框架,它解決了RF5 不能被有效地應(yīng)用于以DSP 作為協(xié)處理器的多處理器復(fù)雜數(shù)字信號(hào)處理系統(tǒng)當(dāng)中的問(wèn)題,且CPU 占用率與RF5 相當(dāng)。從我們的實(shí)際項(xiàng)目經(jīng)驗(yàn)證明,RF5 適用于以TI DSP 作為主控和主處理單元的單處理器信號(hào)處理系統(tǒng),并能得到良好的性能;ERF5 能對(duì)多處理器系統(tǒng)給予最大化的支持,并已成功應(yīng)用于一個(gè)復(fù)雜的H.264 混合編解碼系統(tǒng)當(dāng)中。


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。