1PCIe雙播產(chǎn)生背景
關(guān)于PCIe的發(fā)展歷史我們可以知道,PCIe發(fā)家于計算機領(lǐng)域,起源于PCI總線,隨著計算機產(chǎn)業(yè)的發(fā)展而壯大,其行業(yè)生態(tài)慢慢擴展到了嵌入式領(lǐng)域及通信領(lǐng)域等。但因為其樹狀結(jié)構(gòu)導(dǎo)致其系統(tǒng)中通常僅有一個RC,大多數(shù)通信都以RC為主(RC能夠與所有的EP通信,且EP與EP之間的通信也要經(jīng)過RC路由(我們常用的PLX交換機支持P-P模式,可以不經(jīng)過RC)),這樣的樹形架構(gòu)與嵌入式系統(tǒng)的靈活互連帶來了一些沖突和不便的地方。
PCIe的規(guī)范制定者們努力的通過一些改進來升級PCIe,通過在向前兼容的情況下進行了多種功能的擴展,像NT、多主等功能都是后續(xù)擴展出來的,這些功能的優(yōu)化升級為PCIe的生態(tài)發(fā)展提供了更廣闊的空間,今天我們要介紹的DualCast功能也正是在這樣的背景下產(chǎn)生的。
如上圖所示,2008年5月,PCIe基本規(guī)范2.0增加了關(guān)于Multicast(多播)的ECN,這個新增的功能為嵌入式系統(tǒng)各節(jié)點之間的數(shù)據(jù)移動和共享提供了強大的技術(shù)支撐。今天我們主要介紹下Dual-Cast(雙播,以下簡稱DC),Dual-Cast從名稱上看就可以知道是Multicast的功能簡化版本(需要說明的是在具體技術(shù)實現(xiàn)上Dual-Cast沒有使用PCIe規(guī)范中的Multicast的技術(shù)架構(gòu),僅僅功能上類似,是PLX公司率先推出的)。
2 PCIe雙播基本介紹
傳統(tǒng)的PCIe系統(tǒng)通常局限于單目標的通信傳輸,這種傳輸模式使得在給定的某一時刻某個特定的節(jié)點只能與一個另外的節(jié)點進行通信傳輸,如果需要將同樣的數(shù)據(jù)發(fā)送給多個節(jié)點,則需要發(fā)起多次傳輸事務(wù),分別進行傳輸。而雙播DC的應(yīng)用則能夠?qū)崿F(xiàn)將相同的數(shù)據(jù)在同一時刻發(fā)送給兩個不同的設(shè)備。
主要的應(yīng)用場景比如:通信導(dǎo)航領(lǐng)域,同樣的數(shù)據(jù)需要同時發(fā)送給兩個節(jié)點分別進行信號的處理;比如顯控領(lǐng)域,接收到的視頻數(shù)據(jù)同時送給兩個大屏,或者接收到的視頻數(shù)據(jù)一邊送顯示一邊送存儲;比如存儲領(lǐng)域,為了提高可靠性,數(shù)據(jù)需要同時存儲到兩個不同的存儲區(qū)域等。
這樣將相同的數(shù)據(jù)傳輸給兩個(或者多個)接收設(shè)備的好處也比較明顯,主要有:
1)能夠降低開銷,實現(xiàn)處理資源的優(yōu)化。這個比較好理解,本來發(fā)送處理器需要發(fā)起兩個發(fā)送事務(wù),但是利用了DC功能,則只需要發(fā)起一個發(fā)送事務(wù),則節(jié)省下來的時間就可以進行其他額外的任務(wù),這相當(dāng)于降低了開銷或者優(yōu)化了處理資源。
- 能夠縮短傳輸時延,提高設(shè)備之間的一致性。這個也比較好理解,比如說原本是分兩次順序發(fā)送,那勢必會導(dǎo)致第二個接收設(shè)備收到數(shù)據(jù)的時間晚了。
- 能夠提升鏈路資源的利用率。因為通過多播方式傳輸,則發(fā)送設(shè)備與交換機之間的鏈路被少利用了一次,這樣對鏈路的需求也降低了。
3 PLX86XX中的雙播方案
3.1 PLX86XX的雙播模型和基本概念
如上圖所示,雙播的概念基本都在上圖有表示,分別進行介紹:
- DC BAR(Dual Cast Low BAR[0:7] / Dual Cast High BAR[0:7]):DC
BAR表示DC功能的基地址,只有進入該BAR窗口的TLP事務(wù)才有可能產(chǎn)生DC事務(wù),PEX86XX共有8個這樣的BAR地址。該BAR一共為64bit寬度,由Dual
Cast Low BAR[0:7]和Dual Cast High BAR[0:7]組成,其中對于地址范圍小于4GB或者32bit的系統(tǒng)來說,Dual Cast
High BAR[0:7]內(nèi)部全為0;對于Dual Cast LowBAR,只有高12Bit有效,低20bit被硬連接設(shè)置為0x0_000C;因為只能設(shè)置高12Bit,則DC BAR的最小對齊邊界為1MB,即只能設(shè)置為1MB的整數(shù)倍。 - DC BAR Setup(Dual Cast Low BAR[0:7] Setup/Dual Cast High BAR[0:7]Setup):DC BAR Setup表示DC功能的BAR的窗口大小,DC BAR Setup與DCBAR一起相當(dāng)于形成了一個完整的地址空間窗口,當(dāng)進入到使能了DC功能的端口時,如果TLP的目的地址≮DC BAR且
- DC BAR Translation(Dual Cast Low BAR[0:7] Translation/Dual Cast High
BAR[0:7]Translation): DC BAR Translation表示DC功能產(chǎn)生的復(fù)制TLP的新的目的地址,用于替換原有的目的地址。 - DC Source Destination Port(Dual Cast Source Port/Dual Cast Destination
Port):用于指定DC功能的源端口和目的端口。
- OriginalTLP:用于表示雙播TLP中的原始TLP。
- DC Copy TLP:用于表示雙播TLP中被復(fù)制轉(zhuǎn)發(fā)的TLP。
注意事項:
- NT端口也可以作為Dual Cast Destination Port;
- 只有Memory Write TLP才能夠被用于作為DC TLP,這個也比較好理解,Memory Write
TLP是Posted事務(wù),不需要接收端進行回復(fù),詳見(PCIe中TLP報文的分類)。 - 關(guān)于地址空間,不能夠互相重疊和沖突,比如說DC BARx之間不能重疊,比如說DC BAR ~ DC BAR+ DC BAR Setup需要在Original TLP的目的端口的地址空間,比如說DC BAR Translation~DC BAR Translation +DC BAR Setup需要在DC Copy TLP的目的端口的地址空間范圍等等。
總結(jié)DC的使能條件:
- TLP事務(wù)是Memory Write TLP;
- TLP事務(wù)的目的地址≮DC BAR,且
- TLP事務(wù)的入端口是Dual Cast Source Port,表明入端口使能了DC功能;
PLX86XX的雙播舉例(參見PEX8624 DataBook)
背景:
- PEX8624,配置為x8,x8,x8,其中Port0為上游端口,Port5和Port8為下游端口;Port5端口的地址空間基址為0XAAA0_0000;Port8端口的地址空間基址為0xBBB0_0000。
- 希望能夠?qū)崿F(xiàn)Memory Write TLP從Port0往Port5的地址空間0XAAA0_0000~0XAAAF_FFFF發(fā)送時,能夠觸發(fā)DC功能,自動同時往Port8端口發(fā)送,對應(yīng)基址為0XBBB0_0000。
分析:
- 因為是“Port0往Port5發(fā)送時,希望能夠觸發(fā)同時往Port8發(fā)送”,可以知道Dual Cast Source Port=0、Dual Cast Destination Port=8;
- “往Port5的地址空間0XAAA0_0000~0XAAAF_FFFF發(fā)送時,能夠觸發(fā)DC功能”,可以知道DC BAR=0XAAA0_0000、DC BAR Setup=0XF_FFFF(0XAAAF_FFFF-0XAAA0_0000)=1MB;
- “自動同時往Port8端口發(fā)送,對應(yīng)基址為0XBBB0_0000”,可以知道DC BAR
Translation=0XBBB0_0000; - 且相關(guān)的地址之間不重疊、不沖突。
具體步驟:
- 設(shè)置DC BAR0,DC BAR=0XAAA0_0000,則DC Low BAR0[31:0]=0XAAA0_0000、DC High BAR0[31:0]=0x0。
- 設(shè)置DC BAR0 Setup,DC BAR Setup=1MB,參照對應(yīng)的空間映射關(guān)系,則DC Low BAR0[31:0]Setup=0XFFF0_0000、DC High BAR0[31:0] Setup=0XFFFF_FFFF。
- 設(shè)置DC BAR Translation,DC BAR Translation=0xBBB0_0000,則DC Low
BAR0[31:0]Translation =0XBBB0_0000、DC High BAR0[31:0] Translation=0x0。 - 設(shè)置DC Source Destination Port,Dual Cast Source Port=0x0、Dual Cast Destination Port=0x8,
DC Source Destination Port[3:0]=0x0;(Dual Cast Source Station/Port=0);
DC Source Destination Port[7:4]=0x8;(Dual Cast Destination Port =0x8);
DC Source Destination Port[8]=1;(Dual Cast on Station 0, Port0 ony);
or DC Source Destination Port[8]=0;(Dual Cast on Station 0, Port 0 and Port1)。
以上即是關(guān)于PCIe交換機雙播(DualCast、DC)功能的簡單介紹,PEX86XX交換機具備DC功能,關(guān)于MultiCast的更多介紹請見后續(xù)文章。
-
交換機
+關(guān)注
關(guān)注
21文章
2624瀏覽量
99273 -
總線
+關(guān)注
關(guān)注
10文章
2868瀏覽量
87994 -
PCIe
+關(guān)注
關(guān)注
15文章
1224瀏覽量
82447 -
云計算機
+關(guān)注
關(guān)注
0文章
7瀏覽量
2619
發(fā)布評論請先 登錄
相關(guān)推薦
評論