?前言:
🌟數據鏈路層的功能
數據鏈路層將從物理層中獲得報文, 并將其傳遞給事務層; 同時接收事務層的報文, 并將其轉發到物理層; 核心的功能有以下三點
1.保證TLP在 PCIe 鏈路中的正確傳遞;
2.數據鏈路層使用了容錯和重傳機制,保證數據傳送的完整性與一致性,
3.此外數據鏈路層還需要對PCIe 鏈路進行管理與監控。
🌟什么是DLLP?
DLLP全稱是Data Link Layer Packet,是在PCI Express (PCIe) 架構中,數據鏈路層使用的一種數據包類型。在PCIe架構中,通信分為幾個層次,其中數據鏈路層位于物理層之上,負責提供可靠的點到點通信連接。本文將要介紹的DLLP指的正是這樣的數據包,其一般用于Ack/Nak機制、功耗管理、Flow Control(流量控制)和一些廠商自定義用途等。示意圖如下:
DLLP的格式是固定的,一共有8個字節,包括Framing(SDP & END)。和TLP不一樣的地方是,DLLP并未攜帶任何路由信息,原因很簡單,因為DLLP只在相鄰的兩個設備的數據鏈路層之間通信,根本不需要路由。并且DLLP一般也不需要和事務層交換信息。
?DLLP的主要功能和類型
DLLP主要用于鏈路管理和維護功能,不是用戶數據的傳輸。以下是一些DLLP的主要功能和類型:
👉ACK/NACK:這些DLLP用于確認收到的 TLP(Transaction Layer Packet),或者在檢測到錯誤時反饋否定回應。ACK 和 NACK DLLP 對于維護鏈路的流控制和可靠性至關重要。
👉Flow Control Update:這些包用于流控協議,允許終端節點通告其緩沖區的可用空間,確定發送方可以發送多少數據避免溢出接收方。
👉Power Management Event (PME):在設備需要改變電源狀態或發起電源管理事件時,使用 PME DLLP通知對方。
👉Link Management Messages:用于鏈路初始化、重置等管理任務的消息傳遞。
👉Link Bandwidth Management Messages:當鏈路的寬帶發生變化時(如由單通道變為雙通道等),這些 DLLP用于通知鏈路兩端的設備。
👉Vendor Specific Messages:這種 DLLP為硬件制造商提供了一種方法來發送其定義的特定信息。
?DLLP與TLP兩者在數據鏈路層的主要區別:
TLP(Transaction Layer Packet):負責傳輸應用數據,即最終用戶的數據負載。這些數據包通常大于DLLP,可能因數據傳輸需求而變化大小。
DLLP(Data Link Layer Packet):其結構相對固定,并且它被用于鏈接層的操作和維護,而不是用戶數據的載體。
在數據鏈路層,一個重要的特性是錯誤檢測和重傳。DLLP通常包含序列號和校驗和,用于確保鏈路層通信的完整性。例如,如果一個ACK DLLP丟失,則發送端可能會重發前一個TLP,直到收到正確的ACK為止。
這種方式為PCIe提供了高度的可靠性,使其成為連接高速I/O設備如SSD、顯卡、網絡接口卡等的首選接口。
?DLLP的一般格式如下圖所示:
?DLLP的類型與目標應用如下表所示:
🌟用于Ack/Nak的DLLP的格式如下:
🌟用于功耗管理(Power Management)的DLLP的格式如下:
🌟用于Flow Control的DLLP的格式如下: