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