當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]利用MSGQ模塊簡(jiǎn)化復(fù)雜DSP的應(yīng)用

 電信基礎(chǔ)設(shè)備、視頻基礎(chǔ)設(shè)備以及影像應(yīng)用等對(duì)于帶寬的要求迅速提升,這些系統(tǒng)需要支持具有更高分辨率、更快幀速率以及更出色音質(zhì)的音視頻流。同時(shí),上述系統(tǒng)還要提高信道密度,降低每信道的功耗。此外,該市場(chǎng)不僅要求提高外設(shè)與存儲(chǔ)器的集成度,而且還要進(jìn)一步縮減電路板面積,從而節(jié)約系統(tǒng)成本。開(kāi)發(fā)人員需要高度可擴(kuò)展的靈活硅芯片器件和工具來(lái)幫助他們跟上市場(chǎng)發(fā)展趨勢(shì)的要求。

 用于數(shù)字信號(hào)處理器(DSP)的一些傳統(tǒng)高性能I/O在可靠性、帶寬充足性以及可擴(kuò)展性等方面都存在一定的局限性。串行RapidIO(sRIO) 能夠通過(guò)提供一種高性能的分組交換式互連技術(shù)解決這種局限性問(wèn)題,這對(duì)復(fù)雜的DSP拓?fù)涠苑浅S杏谩Ec其前代技術(shù)不同,sRIO不需要與存儲(chǔ)器共享接口,而且既能作為主系統(tǒng)又能作為從系統(tǒng)運(yùn)行。此外,其還可支持較長(zhǎng)的物理連接距離以及硬件級(jí)故障檢測(cè)/糾錯(cuò)、狀態(tài)/確認(rèn)反饋以及帶內(nèi)中斷/信號(hào)發(fā)送等。

 德州儀器(TI)推出的TMS320C6?55等高級(jí)DSP現(xiàn)已集成了sRIO接口。這種接口具有極高的效率,能直接連接至DSP的DMA引擎,通過(guò)事務(wù)處理代理寄存器來(lái)降低控制開(kāi)銷。為了提高DMA系統(tǒng)數(shù)據(jù)處理的效率,可對(duì)數(shù)據(jù)設(shè)定優(yōu)先級(jí),而且該接口還支持多個(gè)事務(wù)處理的排隊(duì)。

復(fù)雜系統(tǒng)拓?fù)渲械膕RIO

首先,我們必須了解sRIO在復(fù)雜系統(tǒng)拓?fù)渲邪l(fā)揮的作用,明確它在物理系統(tǒng)的實(shí)施過(guò)程中如何提高靈活性。sRIO可支持芯片之間的通信,速度高達(dá) 20Gbps乃至更高。sRIO提供1X和4X寬度的1.25、2.5或3.125GHz雙向鏈接,每向吞吐速率高達(dá)10Gbps。

 利用sRIO,設(shè)計(jì)人員能夠確定如何實(shí)現(xiàn)多個(gè)器件的最佳連接。DSP可直接進(jìn)行網(wǎng)形、環(huán)形以及星形拓?fù)涞倪B接,也可通過(guò)交換機(jī)進(jìn)行多個(gè)DSP的連接,彼此之間有無(wú)本地連接均可。此外,我們還可采用sRIO一并連接DSP、FPGA和ASIC。這種高度的靈活性使設(shè)計(jì)人員能根據(jù)應(yīng)用數(shù)據(jù)流的需要任意安排組件,而不會(huì)因?yàn)榻涌诨騾f(xié)議的限制影響系統(tǒng)設(shè)計(jì)。

 例如,一個(gè)簡(jiǎn)單的系統(tǒng)可以具備兩個(gè)通過(guò)4倍速鏈接相連的DSP。另一個(gè)系統(tǒng)則要求更高的計(jì)算能力,不過(guò)不需要更多I/O。這種系統(tǒng)可以由5個(gè)DSP組成,每個(gè)DSP都直接通過(guò)1倍速鏈接彼此相連。第三個(gè)系統(tǒng)也包含5個(gè)DSP,它們均采用4倍速鏈接連接至中央交換機(jī),以實(shí)現(xiàn)更佳的I/O性能(圖1)。第四個(gè)系統(tǒng)則有更繁重的計(jì)算要求,其中可能包含12個(gè)乃至更多的DSP,它們均通過(guò)4倍速鏈接連接至一個(gè)或多個(gè)交換機(jī)的系統(tǒng)架構(gòu),從而實(shí)現(xiàn)最高的計(jì)算能力和I/O帶寬。


圖1:在本例中,sRIO能靈活地連接所有五個(gè)DSP。

 支持sRIO的系統(tǒng)能夠通過(guò)充分利用上述特性顯著提高整體性能。例如,在無(wú)線基礎(chǔ)設(shè)施系統(tǒng)中,總共三到六個(gè)速度達(dá)Gbps的天線數(shù)據(jù)通常由可處理24到48 個(gè)天線流(antenna stream)的ASIC或FPGA支持,這時(shí)每個(gè)基站的速率約為123Mbps。另一方面,用戶數(shù)據(jù)通常在DSP上處理,每個(gè)用戶通道速度約 19Mbps,統(tǒng)一采用共享的EMIF通道。采用鏈接sRIO通道的DSP使用戶數(shù)據(jù)和天線數(shù)據(jù)能獨(dú)立得到處理。采用DSP所需的成本不僅大大低于 FPGA或ASIC,而且在24到48個(gè)天線流的系統(tǒng)中能處理相同的數(shù)據(jù)速率,每個(gè)通道速度約為123Mbps,因此天線數(shù)據(jù)速度總共能到每秒3到 6Gb。對(duì)于用戶數(shù)據(jù)而言,諸如最新DSP系列的較高核心速度、較快的sRIO I/O速度,以及能釋放外部存儲(chǔ)器帶寬等優(yōu)異特性,使通道密度能夠提高到每DSP達(dá)128個(gè)用戶通道,每通道速度為19Mbps,這樣整體而言每個(gè)DSP 的用戶數(shù)據(jù)總速度達(dá)2.5Gbps。[!--empirenews.page--]

消息傳遞

軟件開(kāi)發(fā)人員不僅能夠受益于 sRIO接口具有的更高性能和更高靈活性,而且他們無(wú)論采用低級(jí)編程技術(shù)還是高級(jí)編程技術(shù)均可進(jìn)行應(yīng)用開(kāi)發(fā)。如果使用低級(jí)直接I/O方案,編程人員必須指定目標(biāo)和地址,這種方案在能夠?qū)崿F(xiàn)最佳性能的同時(shí),還非常適用于在設(shè)計(jì)時(shí)就已知目標(biāo)緩沖方案的應(yīng)用,并且應(yīng)用的分組是固定的。但是,這種方法的缺點(diǎn)是開(kāi)發(fā)人員必須了解遠(yuǎn)程處理器的物理存儲(chǔ)器映射,這使第三方集成非常困難。

高級(jí)消息傳遞方案能夠在無(wú)需進(jìn)行大量低級(jí)器件編程的情況下就能提供一種更抽象的通信方法。這種方法對(duì)目標(biāo)緩沖方案未知的應(yīng)用最為適用,而且對(duì)于應(yīng)用分組未知或者比較靈活的情況也很適用。此外,消息傳遞接口能夠顯著縮短用于增加或減少應(yīng)用處理器所需的時(shí)間。

數(shù)家嵌入式處理器廠商為sRIO提供內(nèi)核級(jí)軟件層支持。例如,在TI DSP中,消息傳遞由DSP/BIOS軟件內(nèi)核基礎(chǔ)消息隊(duì)列(MSGQ)模塊提供支持,這使應(yīng)用程序開(kāi)發(fā)人員能在更高級(jí)的抽象水平上設(shè)計(jì)軟件。

消息傳遞使應(yīng)用程序能夠通過(guò)sRIO互連更高效地與其它DSP通信。通過(guò)這種方法發(fā)送的消息,其優(yōu)先級(jí)高于數(shù)據(jù)緩沖,這一點(diǎn)非常有用,因?yàn)橐愿叩膬?yōu)先級(jí)控制數(shù)據(jù)通常來(lái)說(shuō)是更好的做法。MSGQ能在無(wú)需修改源代碼的情況下在處理器中移動(dòng)讀取器和寫入器,因此我們能在單個(gè)處理器上進(jìn)行開(kāi)發(fā),而且能方便地針對(duì)多處理器系統(tǒng)進(jìn)行縮放。也就是說(shuō),寫入器不用了解讀取器駐留在哪個(gè)處理器上,這不僅能簡(jiǎn)化集成,而且還能簡(jiǎn)化客戶端/服務(wù)器應(yīng)用等的開(kāi)發(fā)工作。

此外,MSGQ還可支持消息的零拷貝傳輸,假定底層物理介質(zhì)支持處理器間零拷貝。零拷貝基本說(shuō)來(lái)就是指針傳遞(pointer passing),而不是將消息內(nèi)容拷貝到其它消息中。我們可在單個(gè)的處理器上完成上述操作,也可在共享存儲(chǔ)器的多部處理器完成。由于能從特定集 (pool)分配消息,因而我們能輕松地實(shí)現(xiàn)服務(wù)質(zhì)量(QoS)特性,如針對(duì)關(guān)鍵資源提高性能、加快速度等。

MSGQ模塊

MSGQ模塊包括API接口、分配器以及傳輸程序等(圖2)。API接口將應(yīng)用程序與傳輸程序和分配器相隔離。分配器為消息分配提供接口,而傳輸程序則為處理器間的消息傳輸提供接口。

圖2.MSGQ模塊

必須首先對(duì)在MSGQ模塊中發(fā)送的所有消息進(jìn)行分配。我們能用多個(gè)分配器從一個(gè)集分配關(guān)鍵信息,再?gòu)牧硪粋€(gè)集分配非關(guān)鍵信息。我們可以舉一個(gè)簡(jiǎn)單的分配器的實(shí)例,即所謂STATICPOOL的靜態(tài)分配機(jī)制,由應(yīng)用程序提供的靜態(tài)緩沖器負(fù)責(zé)管理。在初始化階段,STATICPOOL分配器會(huì)接收地址、緩沖器長(zhǎng)度以及請(qǐng)求消息的大小??蓪⒕彌_器分為指定的消息大小塊,并放置在鏈接列表中,這有助于簡(jiǎn)化消息定位。[!--empirenews.page--]

接下來(lái),傳輸程序在物理鏈接上將消息發(fā)送給另一處理器上的目標(biāo)消息隊(duì)列(圖3)。通過(guò)傳輸接口,應(yīng)用程序能在不改變自身的情況下改變底層通信機(jī)制,不過(guò)需要配置傳輸程序。這種方案將物理鏈接的具體技術(shù)問(wèn)題隱藏起來(lái),提高了應(yīng)用的可移植性。

圖3:傳輸功能

消息隊(duì)列具有整個(gè)系統(tǒng)內(nèi)唯一的名稱,發(fā)送器能通過(guò)其名稱來(lái)定位消息隊(duì)列。所有通過(guò)MSGQ模塊發(fā)送的消息都必須在第一字段編碼MSGQ_Msg Header,之所以必須是因?yàn)閮?nèi)部指令就保存在報(bào)頭中,報(bào)頭由傳輸程序和MSGQ模塊內(nèi)部使用。消息發(fā)送到不同的處理器時(shí),傳輸程序?qū)ο?bào)頭部分的任何字大小和字節(jié)序(endian)差異進(jìn)行處理。應(yīng)用程序負(fù)責(zé)消息專用部分所需的轉(zhuǎn)換。

由于不同的處理器可能采用不同的調(diào)用模塊(系統(tǒng)中的消息隊(duì)列),因此MSGQ模塊允許應(yīng)用程序?qū)懭肫髦付ㄍㄖ獧C(jī)制的類型,這非常有用,因?yàn)橛脩裟苤付ㄍㄖ獧C(jī)制,并相應(yīng)地調(diào)節(jié)MSGQ。不過(guò),一旦將消息發(fā)送給讀取器,寫入器就會(huì)丟掉消息的擁有權(quán),并且不能再修改或釋放消息,因此在發(fā)送之前確保消息的正確性至關(guān)重要。當(dāng)讀取器接收消息后,必須釋放消息或重復(fù)使用消息。

消息隊(duì)列的定位

MSGQ為每個(gè)打開(kāi)的消息隊(duì)列保留一個(gè)消息存儲(chǔ)庫(kù),消息隊(duì)列的讀取器從消息隊(duì)列的存儲(chǔ)庫(kù)中獲取消息。如果需要將讀取器或?qū)懭肫骶€程移至另一個(gè)處理器,就無(wú)需更改讀取器或?qū)懭肫鞔a。

定位消息隊(duì)列有兩種辦法:同步定位和異步定位。采用同步定位法情況下(可能采取阻塞方法),消息管理每個(gè)傳輸程序的查詢,以查找所需消息隊(duì)列的位置。采用異步定位法情況下,將消息隊(duì)列定位后會(huì)發(fā)送異步定位消息給指定的消息隊(duì)列。

同步法的實(shí)施更為簡(jiǎn)便,但要求用于阻塞隊(duì)列的一些參數(shù),如定位線程等。雖然異步法無(wú)需進(jìn)行阻塞,但實(shí)際操作更為困難,難以使用。

我們可通過(guò)應(yīng)用程序指定的通知機(jī)制來(lái)支持同步或異步操作。用戶可指定通知機(jī)制,如信號(hào)量和中斷記入等,這樣就不用再遵循特定的調(diào)用模式。消息發(fā)送器能嵌入消息隊(duì)列,消息讀取器則能提取消息隊(duì)列并做出回答。

數(shù)據(jù)流示例

   以下我們給出來(lái)自某個(gè)應(yīng)用程序的基本數(shù)據(jù)流程。根據(jù)設(shè)計(jì),該應(yīng)用可在兩個(gè)DSP之間移動(dòng)數(shù)據(jù)。在本例中,我們用多個(gè)集來(lái)管理不同類型的消息,其中包括應(yīng)用程序、傳輸程序內(nèi)部控制消息以及錯(cuò)誤消息等。采用不同的集并不是必需的,但這樣做有助于簡(jiǎn)化應(yīng)用程序的維護(hù)。例如,管理若干個(gè)小集有時(shí)要比管理單個(gè)大集要簡(jiǎn)單。此外,如果消息大小有所不同,那么采用單個(gè)大集的話就會(huì)浪費(fèi)大量存儲(chǔ)器空間,因?yàn)檫@時(shí)必須支持最差情況下的空間要求。
[!--empirenews.page--]
 本例中的流程可運(yùn)行在TI的TMS320C6?55 EVM等評(píng)估板上,這款評(píng)估板采用兩個(gè)通過(guò)sRIO實(shí)現(xiàn)互連的1GHz TMS320C6?55 DSP。該評(píng)估板提供了完整的代碼以供參考:

main()

if processor 0: 打開(kāi)雇主消息隊(duì)列并

創(chuàng)建雇主線程。

if processor 1: 打開(kāi)雇員消息隊(duì)列并

創(chuàng)建雇員線程。

打開(kāi)錯(cuò)誤消息隊(duì)列并創(chuàng)建錯(cuò)誤線程。

srio_init to initialize peripheral

workerThread()

Loop

MSGQ_get message from the worker queue

確定發(fā)送器

向發(fā)送器發(fā)送特定數(shù)量的消息

bossThread()

MSGQ_locate to locate worker queue

Loop

MSGQ_alloc message

使用要接收的多個(gè)消息來(lái)填充消息。

MSGQ_setSrcQueue to embedded boss’s message queue

MSGQ_put message to reader

Loop

MSGQ_get message from the boss queue

errorThread()

Loop

MSGQ_get message from the error queue

Log MQT error via LOG_printf

在單個(gè)處理器上發(fā)送消息

下面將介紹在單個(gè)處理器上發(fā)送和接收消息的幕后情況,這個(gè)過(guò)程分為任務(wù)一和任務(wù)二。任務(wù)二由操作系統(tǒng)進(jìn)行調(diào)用,打開(kāi)MSGQ隊(duì)列,并為該消息隊(duì)列指定 “pend”與“post”函數(shù)。如果沒(méi)有消息,則使用“pend”函數(shù),在而向消息隊(duì)列發(fā)送消息時(shí)則調(diào)用“post”函數(shù)。

如果MSGQ模塊獲得了沒(méi)有待決消息的信息,那么就可運(yùn)行任務(wù)一,但必須讀取隊(duì)列標(biāo)識(shí)符,并定位適當(dāng)?shù)年?duì)列,以免其位于不同的處理器上。通常在啟動(dòng)時(shí)定位隊(duì)列對(duì)性能幾乎沒(méi)有什么影響。此外,任務(wù)一在向任務(wù)二發(fā)送消息之前還必須為消息傳輸分配存儲(chǔ)器。

一旦任務(wù)一發(fā)送消息,就不能再對(duì)消息進(jìn)行處理,因?yàn)檫@時(shí)MSGQ已擁有該消息,MSGQ會(huì)將該消息分配給適當(dāng)?shù)年?duì)列。任務(wù)二獲得了有消息的信息,并準(zhǔn)備接收消息。一旦任務(wù)二獲得消息,就能夠?qū)ο⑦M(jìn)行重復(fù)使用,并將其發(fā)送回任務(wù)一。例如,如果兩個(gè)任務(wù)要將消息來(lái)回傳輸,那么就僅需分配開(kāi)始的消息。若讀取器接收到消息,就能相應(yīng)地更新內(nèi)容,然后將其發(fā)回。這樣,任務(wù)二就能夠處理消息,一旦處理完成,消息就返回到存儲(chǔ)器管理,任務(wù)二也就不能再對(duì)該消息進(jìn)行處理。消息傳輸至此完成。消息傳遞可通過(guò)為數(shù)據(jù)移動(dòng)提供虛擬接口來(lái)顯著簡(jiǎn)化復(fù)雜處理器通信的開(kāi)發(fā)與維護(hù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉