天天看點

PCIe掃盲——PCIe總線資料鍊路層入門

轉:http://blog.chinaaet.com/justlxy/p/5100053250

前面的文章介紹過,資料鍊路層(Data Link Layer)主要進行鍊路管理(Link Management)、TLP錯誤檢測,Flow Control和Link功耗管理。

資料鍊路層不僅可以轉發來自事務層的包(TLP),還可以直接向另一個相鄰裝置的資料鍊路層直接發送DLLP,比如應用于Flow Control和Ack/Nak的DLLP。如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

資料鍊路層還實作了一種自動的錯誤校正功能,即Ack/Nak機制。如下圖所示,發送方會對每一個TLP在Replay Buffer中做備份,直到其接收到來自接收方的Ack DLLP,确認該DLP已經成功的被接受,才會删除這個備份。如果接收方發現TLP存在錯誤,則會向發送發發送Nak DLLP,然後發送方會從Replay Buffer中取出資料,重新發送該TLP。

注:關于Ack/Nak機制,後面的文章會詳細的介紹。

PCIe掃盲——PCIe總線資料鍊路層入門

兩種DLLP(轉發TLP的DLLP,用于Flow Control或Ack/Nak等的DLLP)的結構圖分别如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

一個Non-Posted傳輸中,Ack/Nak的執行過程如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

注:原文最早發表于本人的ChinaAET部落格(http://blog.chinaaet.com/justlxy/)

前面的文章介紹過,資料鍊路層(Data Link Layer)主要進行鍊路管理(Link Management)、TLP錯誤檢測,Flow Control和Link功耗管理。

資料鍊路層不僅可以轉發來自事務層的包(TLP),還可以直接向另一個相鄰裝置的資料鍊路層直接發送DLLP,比如應用于Flow Control和Ack/Nak的DLLP。如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

資料鍊路層還實作了一種自動的錯誤校正功能,即Ack/Nak機制。如下圖所示,發送方會對每一個TLP在Replay Buffer中做備份,直到其接收到來自接收方的Ack DLLP,确認該DLP已經成功的被接受,才會删除這個備份。如果接收方發現TLP存在錯誤,則會向發送發發送Nak DLLP,然後發送方會從Replay Buffer中取出資料,重新發送該TLP。

注:關于Ack/Nak機制,後面的文章會詳細的介紹。

PCIe掃盲——PCIe總線資料鍊路層入門

兩種DLLP(轉發TLP的DLLP,用于Flow Control或Ack/Nak等的DLLP)的結構圖分别如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

一個Non-Posted傳輸中,Ack/Nak的執行過程如下圖所示:

PCIe掃盲——PCIe總線資料鍊路層入門

注:原文最早發表于本人的ChinaAET部落格(http://blog.chinaaet.com/justlxy/)

繼續閱讀