《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 多核DSP間基于SRIO數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)
多核DSP間基于SRIO數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)
2017年微型機(jī)與應(yīng)用第4期
魏智偉
重慶郵電大學(xué),,重慶400065
摘要: 在使用Digital Signal Processor (DSP)芯片進(jìn)行數(shù)字信號(hào)處理時(shí),由于數(shù)據(jù)量大,,線程較多,,通常采用多片DSP協(xié)同處理,。本文旨在研究DSP間數(shù)據(jù)和信息傳輸?shù)膶?shí)現(xiàn),并以三片TI的 TMS320C6474芯片為例,,基于SRIO協(xié)議,,設(shè)計(jì)一種傳輸架構(gòu),實(shí)現(xiàn)了DSP間的數(shù)據(jù)傳輸,。最終實(shí)現(xiàn)DSP間2.520 Gb/s的數(shù)據(jù)傳輸速率,,為理論值的50.40%,但如果除去線程調(diào)度和DSP間同步所用時(shí)間,,其SRIO接口的數(shù)據(jù)傳輸速率可達(dá)到3.886 Gb/s,,為理論值的77.72%。該設(shè)計(jì)具有較大的通用性,,對(duì)其他同類型的芯片間的數(shù)據(jù)傳輸設(shè)計(jì)具有極大的參考性,。
Abstract:
Key words :

  魏智偉

  (重慶郵電大學(xué),,重慶400065)

       摘要:在使用Digital Signal Processor (DSP)芯片進(jìn)行數(shù)字信號(hào)處理時(shí),,由于數(shù)據(jù)量大,線程較多,,通常采用多片DSP協(xié)同處理,。本文旨在研究DSP間數(shù)據(jù)和信息傳輸?shù)膶?shí)現(xiàn),并以三片TI的 TMS320C6474芯片為例,,基于SRIO協(xié)議,,設(shè)計(jì)一種傳輸架構(gòu),實(shí)現(xiàn)了DSP間的數(shù)據(jù)傳輸,。最終實(shí)現(xiàn)DSP間2.520 Gb/s的數(shù)據(jù)傳輸速率,,為理論值的50.40%,但如果除去線程調(diào)度和DSP間同步所用時(shí)間,,其SRIO接口的數(shù)據(jù)傳輸速率可達(dá)到3.886 Gb/s,,為理論值的77.72%。該設(shè)計(jì)具有較大的通用性,,對(duì)其他同類型的芯片間的數(shù)據(jù)傳輸設(shè)計(jì)具有極大的參考性,。

  關(guān)鍵詞多核,;DSP;SRIO,;DSP間數(shù)據(jù)傳輸

  中圖分類號(hào):TP368.2文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.011

  引用格式:魏智偉.多核DSP間基于SRIO數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2017,36(4):36-39.

0引言

  伴隨著DSP所需處理的數(shù)據(jù)量和開(kāi)發(fā)的功能模塊的增多,單片DSP運(yùn)行的進(jìn)程數(shù)增多,,負(fù)載過(guò)大,,系統(tǒng)越來(lái)越難以滿足實(shí)時(shí)處理的要求。如果選擇多片DSP協(xié)同運(yùn)行,,不僅可以減少單片DSP的負(fù)載,,提高系統(tǒng)的處理性能和響應(yīng)速度,從而達(dá)到實(shí)時(shí)處理的要求,,還能進(jìn)行更多功能模塊的開(kāi)發(fā),,對(duì)于數(shù)字信號(hào)處理系統(tǒng)來(lái)說(shuō)定是有益的。但多片DSP進(jìn)行協(xié)同運(yùn)行時(shí),,DSP間需要設(shè)計(jì)完成數(shù)據(jù)交互的功能,。本文依據(jù)Rapid IO協(xié)議的標(biāo)準(zhǔn),結(jié)合TI的TMS320C6474芯片的特點(diǎn),,在Digital Signal Processor_Basic Input Output System(DSP_BIOS)的開(kāi)發(fā)平臺(tái)上,,設(shè)計(jì)和實(shí)現(xiàn)了多核DSP間的數(shù)據(jù)傳輸。本文首先介紹了該設(shè)計(jì)所需的各個(gè)功能模塊,,然后闡述整體設(shè)計(jì)的流程和具體實(shí)現(xiàn)的方式,,最后對(duì)DSP間數(shù)據(jù)傳輸性能進(jìn)行了測(cè)試。

1DSP間通信所需功能模塊簡(jiǎn)介

  1.1Mailbox(郵箱)

  基于DSP_BIOS的開(kāi)發(fā)平臺(tái),,TI提供了一個(gè)Mailbox(MBX)模塊,,開(kāi)發(fā)者可以通過(guò)TI的用戶接口函數(shù)來(lái)進(jìn)行管理,使用該模塊,。Mailbox用來(lái)圖1用Mailbox實(shí)現(xiàn)線程間通信實(shí)現(xiàn)DSP內(nèi)部的同一個(gè)核內(nèi)的不同進(jìn)程(TSK)間的相互通信[1],。MBX_post()用于發(fā)送端,MBX_pend()用于接收端,,其實(shí)現(xiàn)示例如圖1所示,。

001.jpg

  1.2Semaphore(信號(hào)通信)

  TI提供了一個(gè)Semaphore[2]模塊,該模塊可以用于管理對(duì)共享資源的訪問(wèn),。其訪問(wèn)模式有三種:直接模式,,間接模式,綜合模式,。本文采用的是直接模式:讀取寄存器DIRECT的值,,如果DIRECT的值為1,則表明該共享資源可用,,允許訪問(wèn),,并獲得該信號(hào)量;反之如果DIRECT的值為0,,則表明該共享資源正在被其他進(jìn)程訪問(wèn),。當(dāng)對(duì)共享資源操作完成后,需要對(duì)DIRECT寫(xiě)1,,以釋放對(duì)該資源使用的權(quán)利,。

  1.3Rapid IO

  1.3.1Rapid IO簡(jiǎn)介

  Rapid IO協(xié)議是一個(gè)開(kāi)放的點(diǎn)對(duì)點(diǎn)分組交換標(biāo)準(zhǔn),是面向嵌入式系統(tǒng)開(kāi)發(fā)提出的高可靠,、高性能,、基于包交換的互聯(lián)技術(shù)[3],傳輸速率能達(dá)到1 Gb/s以上,。其最主要的特點(diǎn)包括:(1)有錯(cuò)誤檢測(cè)機(jī)制,; (2)低負(fù)載高帶寬;(3)引腳少[4],。

  1.3.2Rapid IO架構(gòu)

  SRIO總線是一種開(kāi)放式的基于包交換的高速串行標(biāo)準(zhǔn)總線[5],,Rapid IO協(xié)議采用三層分級(jí)體系結(jié)構(gòu):

  (1)邏輯層:規(guī)定了端點(diǎn)間傳輸?shù)膮f(xié)議和包格式,。

 ?。?)傳輸層:定義了在系統(tǒng)中傳輸?shù)陌璧穆酚尚畔ⅰ?/p>

  (3)物理層:包含了硬件級(jí)接口的信息,,比如電氣特性,、錯(cuò)誤數(shù)據(jù)管理、基本數(shù)據(jù)流控制,。

  1.3.3SRIO包結(jié)構(gòu)

  在SRIO的包結(jié)構(gòu)中,,包的種類有很多,主要用到的為數(shù)據(jù)包和門(mén)鈴包,。數(shù)據(jù)包用于在源地址和目的地址間進(jìn)行數(shù)據(jù)傳輸,,其結(jié)構(gòu)如圖2所示。門(mén)鈴包主要用于觸發(fā)相應(yīng)的中斷,,通知相應(yīng)DSP的某個(gè)核進(jìn)入中斷響應(yīng)函數(shù),,執(zhí)行相應(yīng)的操作,但門(mén)鈴包不攜帶數(shù)據(jù)信息,,其門(mén)鈴包的結(jié)構(gòu)如圖3所示,。

002.jpg

  其中包結(jié)構(gòu)各個(gè)段的含義是:AckID:交換結(jié)構(gòu)期間將使用控制符號(hào)來(lái)確認(rèn)是哪一個(gè)包;Prio:表明該包的優(yōu)先級(jí),;tt:指定Device ID是用8 bit或16 bit表示,;fftyp:表示包的類型;destID:包傳送的目的地址ID,;sourceID:發(fā)送包的源地址ID,;CRC:包結(jié)構(gòu)的校驗(yàn)保護(hù),;Info:門(mén)鈴中斷觸發(fā)控制。

  1.3.4Rapid IO包傳輸

  包結(jié)構(gòu)(packets)是SRIO傳輸兩個(gè)端點(diǎn)之間傳輸?shù)膯挝?,其傳輸是基于?qǐng)求包和響應(yīng)包,。圖4發(fā)送端和接收端分包交互流程

  其一次數(shù)據(jù)傳輸流程為:發(fā)送發(fā)起端產(chǎn)生一個(gè)請(qǐng)求包給接收端,接收端收到后返還一個(gè)響應(yīng)包給發(fā)送發(fā)起端[6],。圖4表明了發(fā)送端和接收端的包交互流程,。

003.jpg

2DSP間通信的設(shè)計(jì)與實(shí)現(xiàn)

  2.1資源的配置

  2.1.1SRIO端口連接

  每片TMS320C6474芯片有兩個(gè)SRIO實(shí)體端口(分別命名為Port0,Port1),,將其分別與另外兩片DSP的任意一端口相連,,如圖5所示。通過(guò)該連接,,可以保證任意一片DSP能與其他兩片DSP直接連接,。當(dāng)發(fā)送端DSP和接收端DSP都已確定時(shí),相應(yīng)SRIO端口的選擇也就確定了,。

004.jpg

  2.1.2DDR共享內(nèi)存的分配與管理

  每塊DSP上都外掛一片DDR存儲(chǔ)器,。DSP的任意一個(gè)核Core0、Core1,、Core2都能訪問(wèn)該存儲(chǔ)器(TMS320C6474 為三核處理器,,將三個(gè)核依次命名為Core0、Core1,、Core2),。在DSP0,DSP1,,DSP2的DDR存儲(chǔ)器里指定一塊內(nèi)存用于存儲(chǔ)DSP間任務(wù)調(diào)度的信息(以下稱該段內(nèi)存為共享調(diào)度內(nèi)存),,如圖5所示。每片DSP上分配的公共調(diào)度內(nèi)存的規(guī)劃與管理如圖6所示,。對(duì)每個(gè)DSP三個(gè)核的內(nèi)存分別分配一個(gè)Semaphore(信號(hào)通信)用于管理對(duì)接收端DSP的共享調(diào)度內(nèi)存的訪問(wèn),。

  2.1.3中斷的分配與運(yùn)用

  當(dāng)發(fā)送端將消息發(fā)送給接收端后,通知接收端相應(yīng)的核來(lái)處理該消息,。此次設(shè)計(jì)的方案是通過(guò)SRIO口傳輸門(mén)鈴包(DOOEBELL Packet),,門(mén)鈴包攜帶接收端相應(yīng)核的信息, 觸發(fā)接收端相應(yīng)核的中斷,。

  當(dāng)發(fā)送端發(fā)送DOORBELL包時(shí),,此包被用作初始化CPU中斷,包結(jié)構(gòu)中INFO段表明相關(guān)DOORBELL寄存器的相關(guān)中斷位被設(shè)置,,如圖3所示,。一個(gè)DSP有4個(gè)DOOEBELL寄存器,每個(gè)寄存器有16 bit,,有64個(gè)中斷源產(chǎn)生中斷,。通過(guò)ICR(Interrupt Condition Routing)寄存器,,可以將每位路由給任意核。本文將DOORBELL寄存器的最低的三位分別分配給DSP的三個(gè)核(Core0,,Core1,,Core2)。即若DOOEBELL的最低位為1,,則DSP的Coer0響應(yīng)該中斷。

005.jpg

  每個(gè)DSP都有兩個(gè)SRIO口,,如圖5所示,,前面已經(jīng)將DSP互連的SRIO口進(jìn)行了編號(hào)(0,1),按照SRIO口的編號(hào)(0,1)分別分配以DOOEBELL 0和DOOEBELL 1寄存器,,DOOEBELL 0和DOORBELL 1寄存器又分別映射到SRIO的兩個(gè)中斷通道(71~RapidIO Interrupt(2n),72~ RapidIO Interrupt(2n+1)),,將此兩個(gè)中斷分別分配給兩個(gè)SRIO口,使之分別響應(yīng)SRIO口的中斷,。該Rapid IO Interrupt主要用于判斷發(fā)送端的DSP的編號(hào),。如圖7所示,接收端為DSP0,,若中斷通道71~RIOINT被觸發(fā),,則判斷發(fā)送端為DSP1,若中斷通道72~RIOINT被觸發(fā),,則判斷發(fā)送端為DSP2,。

  通過(guò)以上中斷的配置,可以保證發(fā)送端的任意DSP都能通過(guò)DOOEBELL消息包通知到消息接收端的任意核,,同時(shí)接收端也能判斷出發(fā)送端為哪個(gè)DSP,。

  2.2設(shè)計(jì)思路與具體實(shí)現(xiàn)

  2.2.1設(shè)計(jì)思路

  實(shí)現(xiàn)多核DSP間的數(shù)據(jù)交互主要完成兩方面的工作:(1)實(shí)現(xiàn)數(shù)據(jù)的搬移;(2)通知接收端的DSP數(shù)據(jù)存儲(chǔ)的位置和長(zhǎng)度,。其實(shí)現(xiàn)流程圖如圖8所示,。

006.jpg

  2.2.2具體實(shí)現(xiàn)流程

  (1)SRIO初始化,。①SRIO電源模塊的初始化:對(duì)SRIO相關(guān)的模塊提供電源,。②SRIO的SERDES模塊初始化:配置PLL,配置RX0,、TX0和TX1,、TX1的傳輸通道,配置SRIO的端口0和1,。③檢查SRIO口是否配置完成,。

  (2)選擇SRIO端口,。根據(jù)發(fā)送端的DSP和接收端的DSP決定選擇SRIO口,,即選擇數(shù)據(jù)傳輸?shù)奈锢礞溌贰?/p>

 ?。?)獲取向接收端的共享調(diào)度內(nèi)存寫(xiě)入消息的信號(hào)量。通過(guò)Semaphore(信號(hào)通信)管理不同發(fā)送端對(duì)接收端DSP的共享調(diào)度內(nèi)存的訪問(wèn),,若該信號(hào)量被占用,,則一直等待該信號(hào)被釋放。

 ?。?)通過(guò)SRIO口傳輸數(shù)據(jù)包,。配置Load/Store Register完成消息包的組成。其關(guān)鍵配置有:配置LSUn_REG2中的DSP Address,,完成待傳輸數(shù)據(jù)(payload)的源地址和目的地址的配置,;配置LSUn_REG3中的Byte_count完成待傳輸數(shù)據(jù)的長(zhǎng)度;配置LSUn_REG5中的Packet Type完成包種類的配置,。配置完成后,,使能傳輸。其Load/Store Register相應(yīng)字段的配置會(huì)映射到數(shù)據(jù)包中,,待傳輸數(shù)據(jù)通過(guò)SRIO口存到了公共調(diào)度內(nèi)存中,。

  (5)通過(guò)SRIO口傳輸DOOEBELL包:該包用于通知接收端DSP的相應(yīng)核的共享調(diào)度內(nèi)存有消息待處理,。通過(guò)對(duì)LSUn_REG5的Drbll Info段進(jìn)行配置,,使之映射到DOORBELLn_ICRR寄存器中,本文將DOOEBELLn_ICRR的第0位,、第1位和第2位,,通過(guò)ICR(Interrupt Condition Routing)寄存器使之分別路由到核0、核1,、核2,。則通過(guò)DOOEBELL包就能在接收端DSP相應(yīng)的核上產(chǎn)生中斷。第(2)步已經(jīng)獲得了相應(yīng)的SRIO的端口號(hào),,通過(guò)SRIO端口號(hào)為0或1決定DOORBELLn_ICRR為DOORBELL0_ICRR或DOORBELL1_ICRR,。該DOORBELL0_ICRR和DOORBELL1_ICRR分別對(duì)應(yīng)著接收端DSP相應(yīng)核上的兩個(gè)SRIO_INT中斷。在2.1.3節(jié)中已經(jīng)介紹,,借此來(lái)判斷發(fā)送端的DSP的編號(hào),。由此接收端能判斷出數(shù)據(jù)在共享調(diào)度內(nèi)存中的存儲(chǔ)位置,如圖9所示,。以發(fā)送端為DSP0_Core0,、接收端為DSP1_Core1為例,其消息應(yīng)存儲(chǔ)在DSP1的共享內(nèi)存中的DSP0,、Core1段,。

007.jpg

  (6)接收端DSP相應(yīng)的核讀取共享調(diào)度內(nèi)存的數(shù)據(jù),解析收到的消息并通過(guò)Mailbox(郵箱)模塊,,在接收端DSP相應(yīng)的核內(nèi)進(jìn)行核內(nèi)線程調(diào)度,,觸發(fā)相應(yīng)的任務(wù)。

 ?。?)接收端DSP執(zhí)行完相應(yīng)的任務(wù)后,,給發(fā)送端返回相應(yīng)的數(shù)據(jù),發(fā)送端DSP和Core的編號(hào)都會(huì)在傳輸?shù)倪^(guò)程中保存,,所以接收端往發(fā)送端返回消息時(shí)按照前幾個(gè)步驟的逆過(guò)程進(jìn)行數(shù)據(jù)傳輸,。

  通過(guò)以上幾個(gè)步驟后,多核DSP間的數(shù)據(jù)傳輸已經(jīng)實(shí)現(xiàn),。

3數(shù)據(jù)傳輸測(cè)試

  本文對(duì)多核DSP間的數(shù)據(jù)傳輸進(jìn)行測(cè)試[7],,SRIO口的工作速率設(shè)置為3.125 Gb/s,經(jīng)過(guò)物理層8B/10B編碼,,數(shù)據(jù)包實(shí)際傳輸速率為2.5 Gb/s,使用兩個(gè)1x通道,,理論傳輸數(shù)據(jù)為5 Gb/s,。

  數(shù)據(jù)傳輸正確性的測(cè)試:從DSP0Core0發(fā)送2k次的數(shù)據(jù)給DSP1Core2,DSP1Core2收到數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)發(fā)給DSP2Core1,,DSP2Core1收到數(shù)據(jù)后再發(fā)送回DSP0Core0,,DSP0Core0最后將收到的數(shù)據(jù)與最初發(fā)送的數(shù)據(jù)進(jìn)行對(duì)比,檢測(cè)數(shù)據(jù)有無(wú)錯(cuò)誤,。本文采用每隔1 s發(fā)送一次數(shù)據(jù),,測(cè)試一星期未發(fā)現(xiàn)出錯(cuò)。

  傳輸性能的測(cè)試:任意選取兩片DSP的任意核進(jìn)行不同數(shù)據(jù)長(zhǎng)度的回環(huán)測(cè)試,。例如數(shù)據(jù)從DSP1發(fā)送至DSP2,,DSP2收到數(shù)據(jù)后將數(shù)據(jù)返回給DSP1。從DSP1剛開(kāi)始發(fā)送數(shù)據(jù)和剛接收完數(shù)據(jù)后分別利用_itoll(TSCH,TSCL)函數(shù)獲取CPU的Cycle值,,計(jì)算兩次值之差,,即可測(cè)出速率[8]。

008.jpg

  通過(guò)數(shù)據(jù)分析可以得出,,數(shù)據(jù)的傳輸速率為2.520 Gb/s左右,,為理論值的50.4%。但傳輸長(zhǎng)度為64 B時(shí),,傳輸?shù)臄?shù)據(jù)較少,,可近似為線程調(diào)度和DSP間同步所需的時(shí)間,若將傳輸32 000 B的時(shí)間減去傳輸64 B時(shí)間(線程調(diào)度和DSP間同步所需時(shí)間),,再計(jì)算傳輸速率的值為3.886 Gb/s,,為理論值的77.72%。由于數(shù)據(jù)包的組包和解包,以及DDR上讀取數(shù)據(jù)的開(kāi)銷等,,實(shí)際數(shù)據(jù)會(huì)小于理論值,。

4結(jié)束語(yǔ)

  本文在DSP_BIOS操作平臺(tái)上,基于Rapid IO協(xié)議,,實(shí)現(xiàn)了多核DSP間的數(shù)據(jù)傳輸,。此次設(shè)計(jì)不僅適用于2個(gè)多核DSP間的數(shù)據(jù)傳輸,同時(shí)也適用于3個(gè)甚至3個(gè)以上多核DSP間的數(shù)據(jù)傳輸,。該架構(gòu)能協(xié)同多個(gè)DSP進(jìn)行大量的數(shù)據(jù)處理,,相對(duì)減少了單個(gè)DSP處理的時(shí)延和負(fù)擔(dān),提高了系統(tǒng)的處理能力和響應(yīng)速度,,對(duì)數(shù)字信號(hào)處理系統(tǒng)的發(fā)展具有一定的推動(dòng)作用,。

參考文獻(xiàn)

  [1] Texas Instruments Group. TMS320 DSP/BIOS v5.42 User’s Guide (SPRU4231) [EB/OL].(2013-08-xx)[2016-09-20]http://www.ti.com.

 ?。?] Texas Instruments Group. TMS320C6474 DSP Semaphore User’s Guide (SPRUG14)[EB/OL].(2016-09-20)[200810xx]http://www.ti.com.

 ?。?] 陳婷,岳強(qiáng),,汪洋.FPGA和DSP間基于SRIO的高速通信系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,,2016(3):37-40.

  [4] Texas Instruments Group. TMS320C6474 DSP Serial Rapid IO(SRIO) User’s Guide (SPRUG230) [EB/OL].(2011-10-xx)[20160920]http://www.ti.com.

 ?。?] 王磊,,王輝球.基于高速串行總線SRIO的數(shù)據(jù)傳輸[J].電子制作,2015(5):16-18.

 ?。?] 黃克武,,吳海洲.基于TMS320C6455的高速SRIO接口設(shè)計(jì)[J].電子測(cè)量技術(shù),2008,,31(9) :143147.

 ?。?] 馮超,張濤.TMS320C6678高速串行接口的傳輸性能研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,,2015,,15(11):52-55.

  [8] 侯普.基于TI KeyStoneⅡ多核DSP技術(shù)的研究與運(yùn)用LTEA基帶板處理板設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),,2015.


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