馮超,張濤
(天津大學(xué) 電子信息工程學(xué)院,天津300072)
馮超(碩士),研究方向?yàn)槎嗪薉SP應(yīng)用;張濤(副教授),研究方向?yàn)榍度胧较到y(tǒng)研究與DSP應(yīng)用。
引 言
本文以TMS320C6678EVM 板上三種高速串行接口的傳輸性能為切入點(diǎn),研究其傳輸原理,以及造成理論帶寬與實(shí)測帶寬不一致的原因,分析了影響其傳輸帶寬的因素,客觀地對多種高速串行接口進(jìn)行更為系統(tǒng)的研究。
PCI Express是繼ISA、PCI之后的第三代I/O 總線互聯(lián)技術(shù),其接口已經(jīng)成為時(shí)下主流的高速串行接口。TI是最早將該技術(shù)引入自身產(chǎn)品中的公司之一,在TI的技術(shù)文檔中一般將該接口稱為PCIe。PCIe具有低引腳數(shù)、高穩(wěn)定性、高傳輸速率的特點(diǎn)。在最新的PCIe GEN 3標(biāo)準(zhǔn)中,每個(gè)通道單向理論數(shù)據(jù)傳輸速率可達(dá)8.0Gbps[4]。
SRIO 支持在Direct I/O 模式和Message Passing模式下的數(shù)據(jù)傳輸。Direct I/O 模式的數(shù)據(jù)包必須包含向目標(biāo)設(shè)備進(jìn)行讀寫操作時(shí)對應(yīng)的確切地址,而且此模式需要源設(shè)備保留目的設(shè)備的內(nèi)存地址表。這些表建立后,RapidIO 的源控制器將會根據(jù)表中的數(shù)據(jù)計(jì)算目的地址,并將其插入到數(shù)據(jù)包格式頭當(dāng)中。RapidIO 的目的設(shè)備會在接收到包頭后,將其中的目的地址提取出來,并將有效負(fù)載通過DMA 傳輸給內(nèi)存。
HyperLink提供了一個(gè)高速、低延遲、低引腳數(shù)的通信接口,其擴(kuò)展CBA 3.x(Common Bus Architecture 3.x)的傳輸協(xié)議,是TI KeyStone架構(gòu)設(shè)備獨(dú)有的高速接口,不具有工業(yè)規(guī)范,這也在很大程度上增強(qiáng)了該接口的靈活性,能夠仿真當(dāng)下所有外圍接口的機(jī)制。
1.3.1 HyperLink傳輸原理
HyperLink在功能上可以分為兩部分:一部分負(fù)責(zé)傳輸基于串/并行轉(zhuǎn)換器SerDes(Serializer/Deserializer)的數(shù)字信號;另一部分負(fù)責(zé)傳輸基于LVMOS(Low Voltage Complementary Metal Oxide Semiconductor)的邊帶控制信號(sideband control signals)[8]。
在向外發(fā)送端,VBUSM 的從接口將地址和多種CBA事物進(jìn)行打包,通過FIFO 的緩存buffer發(fā)送給發(fā)狀態(tài)機(jī)(TxSM)模塊。發(fā)狀態(tài)機(jī)負(fù)責(zé)將256位的CBA 總線轉(zhuǎn)換給外部串行接口,在這個(gè)過程中,需要通過PLS 模塊對MAC傳輸數(shù)據(jù)進(jìn)行編碼。在向內(nèi)接收端,PLS模塊將收到的串口比特流進(jìn)行同步、解碼,然后交給收狀態(tài)機(jī)(Rx-SM),完成與發(fā)送端相反的過程。
另外,HyperLink的邊帶信號提供了流控制和電源管理控制信息。HyperLink內(nèi)部的狀態(tài)機(jī)會自動管理流控制,減少電源功耗,這些操作不需要進(jìn)行任何軟件干預(yù)。流控制信號是通過RX 向TX 反饋,而電源管理是在TX端進(jìn)行控制。
1.3.2 HyperLink編碼機(jī)制
HyperLink的傳輸協(xié)議是基于packet,并支持多重讀寫和中斷處理。協(xié)議支持1-lane和4-lanes模式,每一lane可以達(dá)到12.5Gbaud的速率。此外,相對于傳統(tǒng)的8b10b接口傳輸編碼機(jī)制,HyperLink在物理層使用了更為有效的編碼機(jī)制,減少了編碼的冗余。編碼過程是在PLS模塊中實(shí)現(xiàn),使用GFP32/33編碼標(biāo)準(zhǔn),編碼流程如圖1所示。
圖1 HyperLink數(shù)據(jù)流編碼流程
第1步:在FIFO 中取128位的數(shù)據(jù)與相應(yīng)的使能位16位,拆分組合,每32 位數(shù)據(jù)與4 位使能位組合,總共144位的信息。
第2步:使用GFP規(guī)范將上一步中組合的36位編碼為33位,生成總共132位信息。
第3 步:將上步中生成的4 部分?jǐn)?shù)據(jù)附加上相關(guān)MAC的最后標(biāo)志位、1 位同步位和9 位ECC,最后生成144位的信息。
第4步:將上一步中144位的信息拆分為4路36位的數(shù)據(jù)單元。
第5步:規(guī)整每一路的數(shù)據(jù),刪除重復(fù)數(shù)據(jù)模式以避免接收出錯(cuò)。
TI C66x系列多核DSP結(jié)合了之前C64x+與C67x+的優(yōu)點(diǎn),同時(shí)支持定點(diǎn)與浮點(diǎn)操作。單核最高主頻可達(dá)1.4GHz[9]。本文以TMS320C6678為代表,該芯片具有8個(gè)核,每個(gè)核內(nèi)包括32KB L1P(Level-1program memory)、32 KB L1D(Level-1data memory)和512KB LL2(Local level-2 memory)存儲區(qū),這些存儲區(qū)支持RAM 或被使能為Cache。核外有4 096KB MSM(multicore shared memory),該存儲空間可被每個(gè)核訪問,MSM 通常情況下被配置為全部SRAM,也可配置成為SL2(shared L2)。C6678片外接有64位1333MHz DDR3,最大支持?jǐn)U展到8GB。
HyperLink速率配置為10Gbps,DDR3配置為64位位寬,1333MHz讀寫速率。傳輸塊大小為64KB,傳輸帶寬的計(jì)算是由傳輸總的字節(jié)數(shù)除以傳輸所用時(shí)間獲得。由表1可知,Cache被使能后,DSP 核通過HyperLink進(jìn)行讀操作的性能大為提升。對于讀操作時(shí)間的計(jì)算,本地的DSP核必須等到對端將信息反饋過來才認(rèn)為結(jié)束。
從圖2中可以看出,在使能不同Cache的情況下,DSP 核通過HyperLink 傳輸數(shù)據(jù)的帶寬與所傳輸數(shù)據(jù)塊大小的關(guān)系。圖中數(shù)據(jù)為本地LL2 訪問遠(yuǎn)端DDR3所得。傳輸?shù)臄?shù)據(jù)塊較大時(shí),三種情況的傳輸性能均下降。
在使能L1D Cache后,HyperLink的傳輸性能有很大的提升,當(dāng)L1DCache、L2Cache全部使能后反而遏制了HyperLink的傳輸性能。這是因?yàn)長2 是write-allocate Cache,使能L2Cache后每次進(jìn)行寫操作,HyperLink都會先從將要寫入的存儲區(qū)域讀取128字節(jié)的數(shù)據(jù)到L2Cache,然后在L2Cache中修改數(shù)據(jù),最后在Cache沖突時(shí)寫回到原來的存儲區(qū)域,或在使用EDMA的情況下人為地寫回原存儲區(qū)域。此過程在一定程度上降低了HyperLink的傳輸性能。
圖2 HyperLink在使能不同Cache情況下的傳輸帶寬
表1 DSP核通過HyperLink實(shí)現(xiàn)數(shù)據(jù)傳輸帶寬(MB/s)
在PCIe速率配置為5Gbps、DDR3配置為64bit位寬、讀寫速率為1333 MHz的情況下,進(jìn)行傳輸帶寬的實(shí)測。傳輸?shù)臄?shù)據(jù)塊大小為64KB,傳輸帶寬的計(jì)算是通過總的傳輸字節(jié)數(shù)除以傳輸所用時(shí)間獲得。由于在映射為遠(yuǎn)端的PCIe空間在僅使能L1DCache的情況下,連續(xù)的多個(gè)寫操作可能被合并成一個(gè)操作,所以表2僅對普通情況下和L1D、L2Cache全部被使能情況下PCIe在不同類型存儲空間上的傳輸帶寬進(jìn)行了統(tǒng)計(jì)。
表2 DSP核通過PCIe實(shí)現(xiàn)數(shù)據(jù)傳輸帶寬(MB/s)
上述實(shí)驗(yàn)對PCIe傳輸較大數(shù)據(jù)塊的性能進(jìn)行了測試。表2中數(shù)據(jù)為DSP核通過PCIe在本地LL2分別與遠(yuǎn)端LL2、SL2和DDR3建立映射的實(shí)測帶寬。由數(shù)據(jù)可知,在普通情況下,PCIe傳輸在訪問遠(yuǎn)端LL2、SL2 和DDR3的傳輸性能沒有明顯差異,在使能Cache 后,對DDR3的訪問速度會稍慢一些。
圖3 是在L1D Cache、L2Cache全被使能和不使能Cache的情況下分別測得的PCIe傳輸數(shù)據(jù)帶寬與所傳輸數(shù)據(jù)塊大小的關(guān)系。可以看出,Cache被使能后反而在一定程度上遏制了PCIe的傳輸性能,此現(xiàn)象同HyperLink一致。在64字節(jié)時(shí)傳輸速率達(dá)到峰值,超過128KB后不能保證數(shù)據(jù)的正確傳輸,這與電氣特性有關(guān)。另外,在傳輸數(shù)據(jù)塊為128字節(jié)時(shí),兩種情況的傳輸性能有明顯的差異,這與C66x系列DSP本身的Cache結(jié)構(gòu)有關(guān)。
圖3 本地LL2訪問遠(yuǎn)端DDR3帶寬
在SRIO速率配置為5Gbps時(shí),DDR3配置為64bit寬,讀寫速率為1 333MHz的情況下,進(jìn)行傳輸帶寬的實(shí)測。傳輸?shù)臄?shù)據(jù)塊大小為32KB,圖4分別描述了Direct I/O模式下SWRITE、NWRITE、NWRITE_R和NREAD四種傳輸方式下的傳輸帶寬。圖中9組數(shù)據(jù)分別是單端口模式下配置為4路時(shí),DSP核通過SRIO從本地LL2、SL2和DDR3分別訪問遠(yuǎn)端LL2、SL2和DDR3所得的傳輸帶寬。
由圖4可知,在Direct I/O 模式下,寫操作的傳輸速率要高于讀操作的傳輸速率,但是有反饋的寫操作耗時(shí)最長,且本地LL2與SL2要比DDR3訪問遠(yuǎn)端存儲設(shè)備的速率高。
表3中數(shù)據(jù)為在SRIO 在多端口模式下,配置為不同方式下實(shí)測的傳輸帶寬。
由于SRIO 本身具備硬件糾錯(cuò)功能,當(dāng)檢測到數(shù)據(jù)傳輸錯(cuò)誤后會自動重傳,造成帶寬的損耗,另外,背板的硬件電氣特性也會直接影響到實(shí)測的帶寬,這些因素均會造成實(shí)測帶寬與理論帶寬的差距。
表3 多端口不同配置方式實(shí)測帶寬(MB/s)
上文對TI KeyStone架構(gòu)設(shè)備中主要的三種高速串行接口分別進(jìn)行實(shí)際測試,并分析了影響其傳輸性能的因素,下面將對三種接口進(jìn)行對比。三種接口的各種參數(shù)表中數(shù)據(jù)略——編者注。
HyperLink可以配置為1路或4路,但是僅適用于設(shè)備點(diǎn)對點(diǎn)的拓?fù)浣Y(jié)構(gòu)。PCIe雖然可配置為1路或2路,但其單端口的特性以及PCIe協(xié)議規(guī)定其樹狀拓?fù)浣Y(jié)構(gòu),需要SW 才能擴(kuò)展RC,這對于搭建多核多芯片的系統(tǒng)增加了軟件調(diào)度的復(fù)雜程度,也在一定程度上限制其系統(tǒng)擴(kuò)展中的應(yīng)用。相對于以上SRIO 比較靈活,既可以配置為單端口,又可以配置為多端口。
圖4 SRIO 在不同類型存儲空間傳輸帶寬
DSP核通過三種高速串行接口在不同數(shù)據(jù)塊大小情況下,在本地LL2與遠(yuǎn)端DDR3實(shí)現(xiàn)數(shù)據(jù)傳輸所得出的實(shí)測帶寬趨勢曲線圖略——編者注。
SRIO 的傳輸速率隨著數(shù)據(jù)塊的增大,一直呈現(xiàn)上升趨勢。在較高帶寬的情況下,硬件自身硬件電氣特性導(dǎo)致的誤碼成為限制帶寬的瓶頸,HyperLink和PCIe接口的帶寬變化趨勢基本保持一致。在傳輸?shù)臄?shù)據(jù)塊較小時(shí),傳輸開銷成為限制傳輸帶寬的主要因素。HyperLink 和PCIe兩接口在傳輸?shù)臄?shù)據(jù)塊大小為128字節(jié)時(shí)均達(dá)到較高的傳輸速率,這與C66x系列DSP本身的Cache結(jié)構(gòu)有關(guān)。C66x系列DSP 的L2Cache line為128 字節(jié),Cache控制器每次都是以Cache line為單位操作[10],因此在數(shù)據(jù)128字節(jié)對齊的情況下Cache的讀寫能夠達(dá)到較好的效果,而Cache Misses造成曲線在達(dá)到較高值后迅速降低。
HyperLink與PCIe相比,在傳輸速率上具有一定優(yōu)勢,但是在系統(tǒng)的擴(kuò)展方面,PCIe更為適合。這兩種高速串行接口在傳輸較小數(shù)據(jù)塊時(shí)都具有較高的帶寬,相對而言,SRIO 以其靈活的端口特性和拓?fù)浣Y(jié)構(gòu),在系統(tǒng)的擴(kuò)展方面具有優(yōu)勢,并適合對較大的數(shù)據(jù)塊進(jìn)行搬移。
結(jié) 語
本文研究了TMS320C6678EVM 板上三種高速串行接口的傳輸性能,對影響其帶寬的因素進(jìn)行了分析,并結(jié)合三種接口的傳輸特性,討論了其在高性能系統(tǒng)擴(kuò)展中的優(yōu)缺點(diǎn),為高速串行接口的研究和應(yīng)用提供一定的參考。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]劉德保,汪安民,韓道文.八核浮點(diǎn)型DSP 的雙千兆網(wǎng)接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014,14(1):54-56.
[2]樂亮,胡善清,龍騰.新一代多核DSP-TMS320C6678 的PCIE 接口驅(qū)動設(shè)計(jì)[C]//第六屆全國信號和智能信息處理與應(yīng)用學(xué)術(shù)會議論文集,張家界,2012.
[3]周佩,周維超,王凱凱.TMS320C6678多核DSP 并行訪問存儲器性能的研究[J].微型機(jī)與應(yīng)用,2014,33(13):20-24.
[4]PCI-SIG PCI.Express Base Specification Revision 3.0,2010.
[5]Texas Instruments.Peripheral Component Interconnect Express(PCIe)for KeyStone Devices User Guide,2013.
[6]Texas Instruments.Serial RapidIO(SRIO)for KeyStone Devices User Guide,2012.
[7]RapidIO.RapidIO Interconnect Specification Revision 3.1,2014.
[8]Texas Instruments.HyperLink for KeyStone Devices User Guide,2013.
[9]Texas Instruments.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual,2014.
[10]TI.TMS320C66xDSP.Cache User Guide,2010.
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2015年11期