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