PCIeの數據鏈路層與物理層詳解


        數據鏈路層(DLL,Data Link Layer)的主要作用是進行鏈路管理(Link Management)、TLP錯誤校驗、Flow Control(流控制)和Link功耗管理。不僅可以接收發送來自事務層的TLP,還可以直接向另一個相鄰的數據鏈路層直接發送DLLP,比如Flow Control和Ack/Nak的DLLP。

        數據鏈路層還可以進行數據備份,即Ack/Nack機制,發送方會在對發送方會對每一個TLP在Replay Buffer中做備份,直到其接收到來自接收方的Ack DLLP,確認該DLP已經成功的被接受,才會刪除這個備份。如果接收方發現TLP存在錯誤,則會向發送發發送Nak DLLP,然后發送方會從Replay Buffer中取出數據,重新發送該TLP。

 

 

PCIe物理層

        在PCIe spec(標准)中,物理層被分為兩個部分單獨介紹,分別為物理層邏輯子層和電氣子層,無論是事務層還是數據鏈路層的Packet都會被臨時放入物理層的buffer中,並加上起始、結束字符(Start&End),起始字符有時也被稱為幀字符(這里所說的TLP和DLLP指的是包的原始發送者發的包,即TLP表示這個包的原始發送者為事務層,而DLLP則為數據鏈路層。但是TLP仍然會被數據鏈路層轉發,並添加Sequence和LCRC)。

        物理層完成的一個重要的功能就是8b/10b編碼和解碼(Gen1 & Gen2),Gen3及之后的PCIe則采用了128b/130b的編碼和解碼機制。

 

       物理層的電氣子層主要實現了差分收發對 

        PCIe物理層處理可以轉發TLP和DLLP之外,還可以直接發送命令集(Ordered Sets)。之所以稱其為命令集,是因為它並不是真正意義上的包(Packet),因為物理層不會為其添加起始字符(Start & End Characters)。並且命令集始於發送端的物理層,結束語接收端的物理層。雖然命令集沒有起始字符,但是對於Gen1&Gen2版本的PCIe物理層來說,會為其添加一個叫做COM的字符作為開始字符,隨后跟着三個或者更多的信息字符。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM