首先來分析一個例子,如下圖所示:
當包(Packet)到達Switch的輸入端口(Ingress Port)時,端口首先會檢查包是否有錯誤,然后根據包的路由(Routing)信息,來做出以下三種處理方式之一:
1、 接受這個包,并自己(Switch)使用它(Internal Use);
2、 將其通過響應的輸出端口(Egress Port)轉發到下一級Endpoint(或者下一級Switch);
3、 拒絕接受這個包。
在前面的文章中多次介紹過,PCIe總線中一共有三種類型的包:Ordered Sets(命令集包,只在相鄰的設備的物理層之間進行傳遞,不會被轉發到其他的設備中)、DLLPs(數據鏈路層包,只在相鄰的設備的數據鏈路層之間進行傳遞,不會被轉發到其他設備中)和TLPs(事務層包,可以根據包中的路由信息被轉發到其他的設備中)。
注:實際上不論是TLPs還是DLLPs都會經過物理層,這里說的TLP和DLLP指的是包的最初來源分別是事務層和數據鏈路層,即DLLP和上一層的事務層沒有什么關系,其內容和作用完全是由數據鏈路層自己決定的。
注:Endpoint不僅可以發送TLP給其上層的設備(如Root),也可以發送TLP給其他的Endpoint,當然這需要借助Switch來實現。這種傳輸方式叫做Peer-to-Peer。
TLP一共有三種路由方式,分別是ID路由(ID Routing,即BDF Routing)、地址路由(Address Routing,包括Memory和IO)以及模糊路由(Implicitly Routing)。本文將簡單介紹一些關于TLP路由的基礎知識,具體的路由方式將會在接下來的三篇文章中依次進行介紹。
具體采用哪一種路由方式是由TLP的類型所決定的,如下表所示:
注:AtomicOp是PCIe Spec V2.1新增的內容,有興趣的可以自行閱讀V2.1的相關內容。
注:一般情況下,Message都是使用模糊路由(Implicitly Routing)的,但是也有PCIe設備廠商自定義的Message會使用地址路由或者ID路由。
可能有的人要有疑惑了,既然Message可以使用地址路由或者ID路由,為什么還要單獨搞出來一個模糊路由呢?原因很簡單,使用模糊路由可以廣播Message到每一個設備,采用其他的路由方式必須明確指定是哪一個設備。
那么PCIe中是如何來判斷TLP的類型的呢?又是如何判斷其為Request還是Completion的呢?實際上是通過TLP Header的Format和Type部分來確定的,如下圖所示:
-
總線
+關注
關注
10文章
2878瀏覽量
88056 -
PCIe
+關注
關注
15文章
1235瀏覽量
82597 -
TLP
+關注
關注
0文章
32瀏覽量
15625
原文標題:【博文連載】PCIe掃盲——TLP路由(Routing)基礎
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論