<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式的多媒體應用的多處理器核軟件設計框架

基于嵌入式的多媒體應用的多處理器核軟件設計框架

作者: 時(shí)間:2012-05-08 來(lái)源:網(wǎng)絡(luò ) 收藏

深入理解某個(gè)應用的數據訪(fǎng)問(wèn)方式,可以充分利用處理器潛在架構中的存儲器和系統資源,從而開(kāi)發(fā)可擴展的并行應用。

本文引用地址:http://dyxdggzs.com/article/257530.htm

基于單核結構的處理器越來(lái)越不能滿(mǎn)足日益增長(cháng)的多媒體處理應用方面的要求,多核結構已成為解決這一問(wèn)題的有效途徑,同時(shí)也為如何開(kāi)發(fā)充分利用多核結構的應用軟件帶來(lái)挑戰。目前,需要將編譯技術(shù)和開(kāi)發(fā)工具更多的結合起來(lái),才能使多核結構的應用獲得成功。而大多數并行軟件都是通過(guò)手工轉換方式將順序程序轉換為并行程序來(lái)實(shí)現的。由于缺乏具有多核意識的開(kāi)發(fā)工具,使得軟件難以進(jìn)行性能評估。因此,如果沒(méi)有預先有效可靠的工程規劃,將不得不面對應用軟件的效率低下,以及延遲產(chǎn)品上市時(shí)間等問(wèn)題。

軟件框架為多核應用軟件的開(kāi)發(fā)提供了一個(gè)很好的起點(diǎn),可以幫助縮短開(kāi)發(fā)時(shí)間。本文將詳細說(shuō)明嵌入式軟件的設計框架,同時(shí),本文的數據流模型也可擴展到許多其它應用中。該框架綜合了軟件固有的數據并行結構,還說(shuō)明了如何通過(guò)有效使用潛在架構來(lái)有效管理數據流。

在設計并行軟件的過(guò)程中有兩大挑戰:一是開(kāi)發(fā)一個(gè)有效的并行算法,二是有效利用存儲器,如DMA(直接存儲訪(fǎng)問(wèn))通道和互連網(wǎng)絡(luò )等共享資源。在這過(guò)程中,順序運行的應用程序的性能可根據可用處理器核的數目進(jìn)行擴展。

通常實(shí)現應用程序的并行處理有多種方法。有些應用程序表現為固有的并行,而有的則具有相當復雜且不規則的數據存取模式。但總的來(lái)講,科學(xué)應用程序和程序的并行通常易于實(shí)現,因為它們的數據存取模式比那些控制類(lèi)應用程序相對容易預測。本文重點(diǎn)討論針對多媒體算法的并行技術(shù),這類(lèi)算法需要很高的處理開(kāi)銷(xiāo),且常用于嵌入式系統應用中。

多媒體應用程序中存在數據的并行級別。一組數據幀和數據幀中的一個(gè)宏塊之間的并行粒度有很大差別。通常來(lái)講,粒度越小,在共享單元——例如處理器核和DMA通道——之間所需的同步級別越高。粒度越小,并行程度也就越高,而網(wǎng)絡(luò )通信量也越小。相反,大的粒度則要求較低的同步性,但也使網(wǎng)絡(luò )通信量增大。因此,基于應用的不同類(lèi)型和系統需求,軟件框架也定義了不同的并行級別。

需要說(shuō)明的是,對可擴展并行軟件的開(kāi)發(fā)還依賴(lài)于對互連網(wǎng)絡(luò )、分級存儲器體系,以及外設/DMA資源的有效利用。系統嚴格的低功耗和低成本的需求對所有這些要素都會(huì )構成約束。多核環(huán)境下的設計要求改革資源的有效利用方式。本文介紹了幾種在A(yíng)DI公司的Blackfin ADSP-BF561雙核處理器上對資源進(jìn)行有效管理的方法。

多媒體數據流分析

為了實(shí)現數據并行,需要在數據流中找到這樣一個(gè)或一組數據塊:能夠獨立處理并將結果饋送給另外的處理部件。獨立的數據塊可以降低同步開(kāi)銷(xiāo)并簡(jiǎn)化并行算法。要找到這種數據塊,重要的是要清楚數據流模式,或者一個(gè)應用的數據存取模式。

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

采用片段或宏塊的數據存取模式的算法對同步性要求很高,但需要較少的網(wǎng)絡(luò )傳輸量,這是因為分級的存儲器體系只需存儲圖像數據的一部分。對于幀或圖片組類(lèi)型的數據訪(fǎng)問(wèn)模式,分級的存儲器體系則需要存儲大量數據,但對同步性的要求則相對低得多。這是因為系統的并行粒度增大了的緣故。圖1說(shuō)明了多媒體應用軟件中的并行級別,同時(shí)對四個(gè)級別中相關(guān)的同步性和網(wǎng)絡(luò )通信量做了對比。


  
圖2說(shuō)明了ADSP-BF561的結構,該結構的組成中包括獨立的指令和數據存儲器,分別屬于兩個(gè)處理器核專(zhuān)有。該結構還包括共享的L2存儲器和外部存儲器,用戶(hù)利用可配置的仲裁方案將所有的外圍設備和DMA資源連接到任一處理器核上。ADSP-BF561 有兩個(gè)DMA處理器,每個(gè)都由兩組MDMA(存儲器-DMA)通路組成。L2存儲器和每個(gè)處理器核之間都通過(guò)獨立的總線(xiàn)連接,而外部存儲器和兩個(gè)處理器核之間則由一條共享總線(xiàn)連接。

所有架構都利用DMA方式將數據流送入分級的存儲器體系。作為另外一種選擇的高速緩存并不處理任何數據。只要清楚所設計的目標應用的數據訪(fǎng)問(wèn)模式,則可以利用DMA引擎對數據進(jìn)行有效的管理。而使用高速緩存需要忍受不確定的訪(fǎng)問(wèn)時(shí)間,高速緩存失配的代價(jià),以及需要較高的外部存儲器帶寬。利用DMA引擎,可以在處理器核需要數據之前就將數據送入L1存儲器,系統在后臺執行傳輸操作,而不會(huì )因為沒(méi)有操作數據使處理器核暫停工作。

由于每個(gè)DMA控制器上都有兩組MDMA通路,系統設計時(shí),可以將MDMA通路在處理器核上平均分配,從而可以對稱(chēng)地進(jìn)行并行操作。
 
對于具有較小粒度數據訪(fǎng)問(wèn)模式的應用,可以輕松的利用對L1和L2存儲器的快速訪(fǎng)問(wèn),也可以直接將獨立的數據塊從外圍設備傳送到L1和L2存儲器,而不需要通過(guò)慢速的外部存儲器訪(fǎng)問(wèn),這樣可節省寶貴的外存儲器帶寬和MDMA資源,還可以縮短數據傳輸時(shí)間。

對于某些采用較高層級粒度的數據訪(fǎng)問(wèn)模式的應用,存儲器就可能成為訪(fǎng)問(wèn)瓶頸,因為較小的L1和L2存儲器層級不能容納大量的數據幀。然而,大量數據幀之間雖然會(huì )出現數據關(guān)聯(lián)性,但這種關(guān)聯(lián)通常也僅存在于跨數據幀的較小數據塊。如果能將所有關(guān)聯(lián)的數據幀存放在一個(gè)較大的存儲空間(外存儲器)中,就可以將每一幀中的獨立數據塊相繼送入空閑的處理器核進(jìn)行處理。如果這些獨立的數據塊比數據幀小得多,以至于符合L1和L2存儲器的容量,就可減少存儲器存取延遲從而高效地處理數據?! ?/p>

雖然L2和外存儲器都有獨立的總線(xiàn)連接,兩個(gè)處理器核仍共享這些存儲器接口總線(xiàn)。因此,應當盡量避免利用兩個(gè)處理器核同時(shí)對同一級別的存儲器進(jìn)行存取操作,以免造成因線(xiàn)路爭用引起延遲。為了減少線(xiàn)路爭用狀態(tài),程序架構應考慮目標程序代碼和數據的映射,要讓一個(gè)處理器核主要訪(fǎng)問(wèn)L2存儲器核,而另一處理器核則主要訪(fǎng)問(wèn)外部存儲器。在這種情況下,雖然處理器核完成多數外部存儲器訪(fǎng)問(wèn)會(huì )出現較大的訪(fǎng)問(wèn)延遲,但總的訪(fǎng)問(wèn)延遲仍然要比存在線(xiàn)路爭用狀態(tài)下的情況小。

該結構能將所有的輸入外設接口配置在一個(gè)處理器核上,所有的輸出外設接口分配到另一處理器核上。BF561體系結構中有兩個(gè)PPI(并行外設接口),通過(guò)PPI視頻輸入/輸出接口,可以實(shí)現輸入或輸出視頻幀的獨立操作。

如果中斷處理時(shí)間比數據流的處理時(shí)間要短,還可將所有的外設接口分配到一個(gè)處理器核上以便于編程,較短的中斷處理時(shí)間不會(huì )影響兩個(gè)處理器核的負載平衡。

建議的軟件框架模型

基于數據訪(fǎng)問(wèn)模式的粒度,您可以定義四種軟件框架:行處理(空域),宏塊處理(空域),幀處理(時(shí)域)以及GOP處理(時(shí)域)。如果某個(gè)應用程序的數據訪(fǎng)問(wèn)模式適于這四種模型中的任何一種,就可以采用相應的軟件結構,如果對同一數據流有兩種或多種處理算法,還可以將這幾種軟件結構結合起來(lái),實(shí)現非對稱(chēng)的并行處理。

在行處理模式中,只在行級有相關(guān)性——也就是說(shuō),只在兩個(gè)相鄰像素之間存在相關(guān)性。每行數據形成一個(gè)數據塊,這樣兩個(gè)處理器核都獨立處理,圖3說(shuō)明了行處理軟件架構的數據流模型。圖中,處理器核A控制視頻輸入,處理器核B控制視頻輸出。處理器核A和B之間的數據有獨立的MDMA通道進(jìn)行管理。L1存儲器使用多個(gè)緩沖器,可以避免處理器核與外設DMA數據訪(fǎng)問(wèn)之間出現的線(xiàn)路爭用狀態(tài)。兩個(gè)處理器核之間每行數據的同步,則通過(guò)一個(gè)計數信號量實(shí)現。在行處理模式中,采用單處理器核方式將數據直接存入L1存儲器也具有優(yōu)勢,可以節省外部存儲器帶寬和DMA資源。行處理軟件架構的應用實(shí)例包括色彩變換,直方圖均衡化,濾波,以及采樣。

圖4說(shuō)明了宏塊數據訪(fǎng)問(wèn)模式的數據流模型,可以將交替的宏塊在兩個(gè)處理器核之間傳送。L2存儲器保持多個(gè)數據緩沖區,宏塊從L2存儲器傳輸到每個(gè)處理器核的L1存儲器都有獨立的MDMA通道。L1存儲器也保持多個(gè)數據緩沖區,以避免在DMA和處理器核數據訪(fǎng)問(wèn)過(guò)程中產(chǎn)生線(xiàn)路爭用。與行處理結構類(lèi)似,該結構中處理器核A仍控制輸入視頻接口,處理器核B控制輸出接口,計數信號量實(shí)現兩個(gè)處理器核之間的同步。這種軟件架構的應用實(shí)例包括邊緣檢測,JPEG/MPEG的編/解碼算法,以及卷積編碼。


  
在幀級處理模式中,外部存儲器存儲相關(guān)的數據幀。根據數據幀(宏塊或行)之間相關(guān)性的粒度,系統將數據幀的子塊傳送到L1或L2存儲器。圖5說(shuō)明了幀級處理軟件架構數據流模型。在這種情況下,假定某個(gè)宏塊在不同幀間存在相關(guān)性,系統則將數據幀的宏塊傳送至L1存儲器。與其他軟件架構類(lèi)似,處理器核A仍控制輸入視頻接口,處理器核B則控制輸出接口,計數信號量實(shí)現兩個(gè)處理器核之間的同步。該軟件架構已應用于運動(dòng)檢測算法。


  
在GOP級處理架構中,每個(gè)處理器核都處理多個(gè)順序的數據幀。幀級處理結構和GOP處理結構之間的區別在于幀級處理結構是在幀間完成空域劃分,而GOP級結構則通過(guò)時(shí)域(幀序列)劃分實(shí)現并行處理。對于GOP數據訪(fǎng)問(wèn)模式,相關(guān)性存在于一組數據幀內部。在兩組數據幀之間不存在數據相關(guān)性,因此處理器核可以相互獨立地對每組數據幀進(jìn)行處理。圖6說(shuō)明了該結構的數據流模型,與幀級處理結構類(lèi)似,系統可將多幀數據塊傳送至處理器核的L1處理器。為了有效利用外部存儲器的交叉存儲組結構,系統在處理器核間均衡的劃分存儲區。ADSP-BF561的每一個(gè)外部存儲區都支持多至四個(gè)的內部SDRAM存儲器組。這一結構的應用實(shí)例有編/解碼算法,如MPEG-2/4。

在實(shí)際的應用中,系統可能運用多種算法來(lái)處理數據流,而每種算法都可能用到不同的數據訪(fǎng)問(wèn)模式。這種情況下,則可以將這幾種軟件結構結合起來(lái)完成一個(gè)特殊的應用。為利用多核結構,可采用流水處理來(lái)實(shí)現算法的并行操作,但這種并行操作是不對稱(chēng)的,因為不同處理器核上可能執行的計算是不同的。然而,系統可以分配一些其它的任務(wù)到處理器核的空閑指令上,在保持靈活性的同時(shí)也達到了處理器核的工作量平衡。圖7說(shuō)明了行級處理和宏塊處理相結合的處理結構中的數據流模型。

在某些其他應用中,多個(gè)數據塊之間也會(huì )存在數據相關(guān)性,數據訪(fǎng)問(wèn)模式仍然是可預測的,但它擴展到了一個(gè)宏塊或一個(gè)行的粒度之外。例如,運動(dòng)窗口搜尋就可能使用幾個(gè)相鄰的宏塊。雖然數據訪(fǎng)問(wèn)模式仍然是可預測的,但系統在算法迭代過(guò)程中要訪(fǎng)問(wèn)多個(gè)數據塊。在這種情況下,您可以對軟件框架進(jìn)行修正,以實(shí)現有效的并行操作。例如,如果多行間存在相關(guān)性,可以通過(guò)調整行處理結構將N個(gè)連續行的幀單元傳送到每個(gè)處理器核的L1存儲器中。利用類(lèi)似的方法,還可以對宏塊處理結構進(jìn)行擴展,從L2存儲器中將不止一個(gè)宏塊送入內部L1存儲器。

軟件框架分析

為了對雙核處理的軟件框架進(jìn)行評估,AD公司利用數據流模型率先開(kāi)發(fā)了一款單核應用軟件,并與雙核實(shí)現進(jìn)行了對比。參考文獻【1】討論了單核模型的更多細節。Blackfin獨有的系統優(yōu)化技術(shù)完全可以有效的使用可用帶寬(參考文獻【2】)。 為了分析簡(jiǎn)單,公司只對基本軟件架構的處理速度做了對比,而沒(méi)有考慮幾種組合的軟件架構。

所謂周期是指為了滿(mǎn)足NTSC(國家電視系統委員會(huì ))視頻輸入的實(shí)時(shí)需要,用于處理數據流的處理器核計算周期。對于一個(gè)以600MHz運行的處理器核,為了滿(mǎn)足實(shí)時(shí)約束條件,處理每一像素可用的周期數為44核周期/像素。任何處理器核訪(fǎng)問(wèn)流數據都只需一個(gè)單內核周期,因為所有的數據訪(fǎng)問(wèn)都是對L1存儲器的訪(fǎng)問(wèn)。該周期數沒(méi)有包括中斷引起的延遲。

如表1所示,雙核處理結構將所有軟件結構的處理速度都有效提高了兩倍。表中還說(shuō)明了L1存儲器對于每個(gè)處理器核的可用容量,以及每種軟件架構所需的共享存儲空間。這些軟件架構應用ADi公司的DD/SSL(設備驅動(dòng)程序/系統服務(wù)庫)實(shí)現對外設和數據的管理(參考文獻【3】)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>