PCIe總線錯誤檢測囊括了鏈路(Link)上的錯誤以及包傳遞過程中的錯誤,如下圖所示。用戶設(shè)計的應(yīng)用程序?qū)又械腻e誤不屬于鏈路傳輸中的錯誤,不應(yīng)當(dāng)通過PCIe的錯誤檢測與處理機(jī)制處理,一般可借助設(shè)備特殊中斷(Device Specific Interrupt)等合適的方式進(jìn)行報告與處理。
包傳遞過程的錯誤主要通過CRC編碼來檢測。PCIe定義了兩種CRC——LCRC和ECRC。其中LCRC(Link CRC)由數(shù)據(jù)鏈路層產(chǎn)生和校檢,用于檢測從一端的數(shù)據(jù)鏈路層發(fā)送到另一端的數(shù)據(jù)鏈路層的TLP是否發(fā)生的錯誤。而ECRC(End-to-end CRC)由事務(wù)層產(chǎn)生和校檢,且ECRC是可選的。
有人可能會質(zhì)疑ECRC存在的必要性,因為LCRC已經(jīng)對TLP進(jìn)行了CRC校檢,在此基礎(chǔ)上多加一層ECRC可能是沒有必要的。這里來簡單地說明一下,一般情況下(尤其是沒有Switch的簡單PCIe總線系統(tǒng)中),ECRC的確是沒有必要存在的。ECRC主要為解決Switch中傳輸?shù)目赡苠e在的傳輸錯誤問題的,換句話說,如果用戶的設(shè)計中并沒有Switch(只是簡單的Root與Endpoint的端對端直連),完全可以不使用ECRC。
如下圖所示,假設(shè)來自Endpoint的TLP被正確地傳輸?shù)絊witch的Downstream輸入端口(Ingress Port),Downstream輸入端口中的數(shù)據(jù)鏈路層也完成了對其的LCRC校檢,且未發(fā)現(xiàn)錯誤。然后Switch會將該LCRC移除,并添加新的序列號(Sequence Number),隨后重新計算LCRC,再將該TLP發(fā)送至Switch的Upstream輸出端口(Egress Port)。顯然,在此過程中TLP是不受保護(hù)的,一旦期間數(shù)據(jù)傳輸遇到錯誤等異常,可能會導(dǎo)致重新計算LCRC前的數(shù)據(jù)已經(jīng)受到了破壞,且僅僅使用LCRC是無法發(fā)現(xiàn)這樣的錯誤的。
注:關(guān)于序列號(Sequence Number),可以參考前面的關(guān)于Ack/Nak的相關(guān)文章。
需要注意的是,ECRC是AER中的一部分,要想使用ECRC,該P(yáng)CIe設(shè)備必須是支持AER的。
如果按照錯誤產(chǎn)生的層(Layer)來分,則可以分為物理層錯誤,數(shù)據(jù)鏈路層錯誤和事務(wù)層錯誤。
物理層錯誤(Physical Layer Errors)主要有:
· 8b/10b編解碼異常
· Framing異常(8b/10b編碼中是可選的,128b/130b中是必選的)
· Elastic Buffer錯誤(可選的)
· 起始字符失鎖(Loss of Symbol Lock)或者通道對齊失鎖(Lane Deskew)(可選的)
數(shù)據(jù)鏈路層錯誤(Data Link Layer Errors)主要有:
· LCRC校檢失敗
· 序列號(Sequence Number)異常
· DLLP中的16-bit CRC校檢失敗
· 鏈路層協(xié)議錯誤(Link Layer Protocol Errors)
事務(wù)層錯誤(Transaction Layer Errors)主要有:
· ERCR校檢失敗(可選的)
· 異常的TLP(Malformed TLP)(即TLP的格式異常)
· 流量控制協(xié)議異常(Flow Control Protocol Violation)
· 不支持的請求
· 數(shù)據(jù)損壞(Data Corruption,又稱為Poisoned Packet)
· Completer Abort(可選的)
· 接收端溢出(Receiver Overflow)(可選的)
· 返回包超時(Completion Timeout)
· 不對應(yīng)的返回包(Unexpected Completion,即Completion與發(fā)出的Request不一致)
當(dāng)接收端的物理層檢測到TLP存在錯誤時,如果再將該TLP繼續(xù)傳送至數(shù)據(jù)鏈路層和事務(wù)層必然也會發(fā)現(xiàn)錯誤。而過多的錯誤會讓錯誤分析與處理變得困難。因此,沒有必要在向上傳遞該TLP,而是將其直接扔掉,并報告相應(yīng)的錯誤。
然而,即使這樣,PCIe總線的錯誤報告中也有很多錯誤源自同一個錯誤源。因此需要對錯誤進(jìn)行優(yōu)先級排序,使得錯誤源(最底層的錯誤)的優(yōu)先級更高,能夠最先得到處理。PCIe總線中的錯誤優(yōu)先級排序如下(優(yōu)先級從高到低):
· 不可更正的內(nèi)部錯誤(Uncorrectable Internal Error)
· 接收端Buffer溢出
· 流量控制協(xié)議錯誤
· ECRC校檢失敗
· 異常的TLP(Malformed TLP)
· AtomicOp Egress Blocked
· TLP包頭異常(TLP Prefix Blocked)
· 訪問控制服務(wù)(Access Control Services,ACS)異常
· MC(Multi-cast) Blocked TLP
· 不支持的請求(Unsupported Request,UR),Completer Abort(CA)或者不對應(yīng)的返回包(Unexpected Completion)
· 接收到損壞的數(shù)據(jù)包(Poisoned Packet)
-
crc
+關(guān)注
關(guān)注
0文章
204瀏覽量
29970 -
Link
+關(guān)注
關(guān)注
0文章
103瀏覽量
27449 -
PCIe
+關(guān)注
關(guān)注
16文章
1322瀏覽量
84661
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe錯誤檢測機(jī)制
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PCIe簡介及引腳定義

PCIe插槽秒變M.2存儲倉!免拆機(jī)維護(hù)神器M.2 NVMe轉(zhuǎn)PCIe 4.0 x4 硬盤抽取盒!#pcie
基于12槽PCIE擴(kuò)展塢知識資料
PCIe的技術(shù)原理詳細(xì)說明
體驗紫光PCIE之使用WinDriver驅(qū)動紫光PCIE
PCIe至USB的TMS320DM816xTMS320C6A816x和AM389x評估板詳細(xì)資料概述

KeyStone中使用PCIE的應(yīng)用案例和PCIE特征的詳細(xì)描述

PHP出現(xiàn)502錯誤的問題如何解決詳細(xì)資料說明

python的內(nèi)置函數(shù)詳細(xì)資料概述
CAN總線基礎(chǔ)的詳細(xì)資料概述

PCIe錯誤報告的兩種機(jī)制詳解

評論