新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式多媒體多核應用軟件設計框架

        嵌入式多媒體多核應用軟件設計框架

        作者: 時間:2013-10-21 來源:網絡 收藏
        基于單核結構的嵌入式處理器越來越難以滿足日益增長的嵌入式多媒體應用的處理需求,多核已成為解決這一問題的有效途徑,同時也為如何充分開發利用的應用軟件帶來挑戰。目前的編譯技術和開發工具需要更精密,才能使的應用獲得成功。大多數并行軟件都是通過手工轉換方式將順序程序轉換為并行程序來實現的,由于缺乏具有多核意識的開發工具,使得軟件難以進行性能評估。因此,如果沒有預先有效可靠的工程規劃,將不得不面對應用軟件效率低下以及延遲產品上市時間等問題。

        軟件框架為多核應用軟件的開發提供了一個更好的起點,可以幫助縮短開發時間。本文將詳細說明嵌入式多媒體應用軟件的設計框架,同時,本文的也可擴展到許多其它應用中。該框架綜合了多媒體應用軟件固有的數據并行結構,并說明了如何通過使用底層架構來有效管理數據流。

        在設計并行軟件的過程中有兩大挑戰:一是開發有效的并行算法,二是有效地利用存儲器、DMA(直接存儲器訪問)通道和互連網絡等共享資源。在該過程中,順序運行的應用程序的性能可根據可用處理器核的數目進行擴展。

        實現應用程序的并行處理常常有多種方法。有些應用程序表現出固有的并行特性,而其它的則具有極其復雜且不規則的數據存取模式。但總的來講,科學計算類的應用程序和多媒體應用程序的并行化通常易于實現,因為它們的數據存取模式比那些控制類應用程序相對容易預測。本文重點討論針對多媒體算法的并行技術,這類算法需要很高的處理能力,并且更適合嵌入式系統應用。

        多媒體應用程序中存在數據的并行級別。一組數據幀與數據幀中的一個宏塊之間的并行粒度有很大差別。通常來講,粒度越小,共享單元(如處理器核和DMA通道等)之間所需的同步級別越高。粒度越小,并行程度就越高,網絡通信量越小;粒度越大,同步要求就越低,但網絡通信量會增大。因此,基于應用的不同類型和系統需求,軟件框架也定義了不同的并行級別。

        需要說明的是,可擴展并行軟件的開發還依賴于對互連網絡、分級存儲器體系以及外設/DMA資源的有效利用。系統嚴格的低功耗和低成本要求對所有這些要素都會構成限制。在多核環境下編程時,有效利用這些資源需要進行創新。本文提出了一些在ADI公司的Blackfin ADSP-BF561雙核處理器上有效管理資源的構想。

        多媒體數據流分析

        為了實現數據并行,需要在數據流中找到這樣一個或一組數據塊:可以獨立處理并將其“喂”給一個處理元件。獨立的數據塊可以降低同步開銷并簡化并行算法。要找到這種數據,必須弄清應用的,或者說“數據存取模式”。

        對于大多數多媒體應用,可以將數據存取模式看成是2D(空間域)和3D(時間域)操作模式。在2D模式中,獨立的數據塊被限制在單個數據幀內,而在3D模式中,獨立數據塊可以橫跨多幀。在空間域中,可以將幀劃分為由N個連續行和視頻幀宏塊組成的片段,而在時間域中,可以對數據流進一步細分到幀級或圖片組(GOP)級。

        采用片段或宏塊數據存取模式的算法對同步性要求較高,但網絡傳輸量較少,這是因為分級存儲器體系只需存儲圖像數據的一部分。對于幀或圖片組類型的數據存取模式,分級存儲器體系則需要存儲大量數據,但對同步性的要求則相對低得多,這是因為系統的并行粒度更大。圖1說明了多媒體應用軟件中的并行級別,同時顯示了四個級別的相對同步要求和網絡通信量。

        圖1 多媒體應用展示了不同的數據并行級別,這些級別對應不同的同步要求和網絡通信量。

        分析

        圖2顯示了ADSP-BF561的結構,它包括獨立的指令和數據存儲器,分別屬于兩個處理器核專有,此外還包括共享的L2存儲器和外部存儲器。用戶可以利用可配置的仲裁方案將所有外圍設備和DMA資源連接到任一處理器核。該處理器有兩個DMA控制器,每個DMA控制器由兩組MDMA(存儲器DMA)通道組成。L2存儲器與每個處理器核之間通過獨立的總線連接,外部存儲器與兩個處理器核之間則由一條共享總線連接。

        圖2 ADSP-BF561的結構包括獨立的指令和數據存儲器,分別屬于兩個處理器核專有,此外還包括共享的L2存儲器和外部存儲器。

        所有框架都利用DMA方式將數據流送入分級存儲器體系。另一種選擇是高速緩存,它不管理任何數據。如果清楚目標應用的數據存取模式,就可以利用DMA引擎對數據進行有效的管理。而使用高速緩存需要忍受不確定的訪問時間、高速緩存未命中的代價,以及需要較高的外部存儲器帶寬。利用DMA引擎,可以在處理器核請求數據之前就將數據送入L1存儲器,系統在后臺執行傳輸操作,而不會因為數據項請求使處理器核暫停工作。
        由于每個DMA控制器上都有兩組MDMA通道,因此系統可以將MDMA通道在處理器核上均勻分配,從而可以對稱地進行并行處理。

        對于數據存取模式粒度較小的應用,可以輕松地利用對L1和L2存儲器的快速訪問。也可以直接將獨立的數據塊從外設接口傳送到L1或L2存儲器,而不需要訪問慢速的外部存儲器,這樣可以節省寶貴的外存儲器帶寬和MDMA資源,并縮短數據傳輸時間。

        對于數據存取模式粒度較大的應用,存儲器可能成為瓶頸,因為較小的L1和L2存儲器級不足以容納大量的數據幀。然而,大量數據幀之間雖然存在數據關聯性,但這種關聯通常也僅存在于跨數據幀的較小數據塊上。如果能將所有關聯的數據幀存放在一個較大的存儲空間(外部存儲器)中,就可以將每一幀中的獨立數據塊相繼送入空閑的處理器核進行處理。如果這些獨立的數據塊比數據幀小得多,符合L1或L2存儲器的容量,就可以減少存儲器存取延遲,高效地處理數據。

        雖然L2和外部存儲器都有獨立的總線連接,但兩個處理器核仍共享這些存儲器接口總線。因此,應當盡量避免兩個處理器核同時對同一級別的存儲器進行存取操作,以免因總線沖突而停止工作。為了減少總線沖突狀況,框架應考慮代碼和數據對象的映射,讓一個處理器核主要訪問L2存儲器核,而另一處理器核則主要訪問外部存儲器。在這種情況下,雖然處理器核完成多數外部存儲器訪問會出現較大的訪問延遲,但總的訪問延遲仍然小于總線沖突的代價。

        框架把所有輸入外設接口分配給一個處理器核,把所有輸出外設接口分配給另一處理器核??蚣芾靡曨l輸入/輸出接口,例如PPI(并行外設接口)來輸入和輸出視頻幀。BF561架構有兩個PPI接口。

        如果中斷處理時間比數據流的處理時間要短,則可將所有的外設接口分配給一個處理器核以便于編程,較短的中斷處理時間不會影響兩個處理器核的負荷平衡。

        軟件框架的建議模型

        基于數據存取模式的粒度,可以定義四種軟件框架:行處理(空間域)、宏塊處理(空間域)、幀處理(時間域)以及GOP處理(時間域)。如果某個應用程序的數據存取模式適于這四種模型中的任何一種,就可以采用相應的框架。如果一個數據流有兩種或更多的處理算法,還可以將多種框架結合起來,實現非對稱的并行處理。

        在行處理模式中,關聯性只存在于行級,也就是說,只存在于相鄰像素之間。每行數據形成一個數據塊,各處理器核都可以獨立處理。

        圖3顯示了行處理框架的。處理器核A處理視頻輸入,處理器核B處理視頻輸出。核A和B之間的數據由獨立的MDMA通道組進行管理。L1存儲器使用多個緩神器,可以避免處理器核與外設DMA訪問總線的沖突。兩個處理器核之間每行數據的同步通過計數信號量實現。在這種框架中,采用單處理器核方式將數據直接存入L1存儲器也具有優勢,可以節省外部存儲器帶寬和DMA資源。這種框架的應用實例包括色彩變換、直方圖均衡化、濾波和采樣。

        圖3 行處理框架的數據流模型。處理器核A處理視頻輸入,處理器核B處理視頻輸出。

        存儲器相關文章:存儲器原理



        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 枣强县| 迁安市| 土默特右旗| 罗江县| 大姚县| 昆山市| 安西县| 广饶县| 嘉义市| 安平县| 惠来县| 沙田区| 图片| 嘉定区| 宿迁市| 鄂州市| 安仁县| 民丰县| 合作市| 乳源| 阜康市| 福海县| 砚山县| 荔浦县| 柳林县| 五家渠市| 永兴县| 沈阳市| 台中市| 微山县| 滦南县| 沾化县| 兴义市| 泰和县| 广南县| 清水县| 涞源县| 隆化县| 孙吴县| 朝阳市| 郧西县|