這篇文章主要介紹事務(wù)(Transaction)錯(cuò)誤、鏈路流量控制(Link Flow Control)相關(guān)的錯(cuò)誤、異常的TLP(Malformed TLP)以及內(nèi)部錯(cuò)誤(Internal Errors)等。
事務(wù)(Transaction )錯(cuò)誤
事務(wù)錯(cuò)誤主要包括不支持的請(qǐng)求(Unsupported Request)、Completer Abort、非預(yù)期的Completion和Completion超時(shí)。該錯(cuò)誤類(lèi)型主要通過(guò)返回的Completion TLP包頭中的Compl. Status告知Requester,如下圖所示。
不支持的請(qǐng)求(Unsupported Request)主要包括:
1. 請(qǐng)求類(lèi)型不被當(dāng)前PCIe設(shè)備支持
2. 消息中使用了不支持或者未定義的消息編碼
3. 請(qǐng)求的地址空間超出(或者不在)設(shè)備的地址空間中
4. 針對(duì)Completer的IO或者存儲(chǔ)映射控制空間(Memory-mapped Control Space)進(jìn)行的Poisoned寫(xiě)操作(EP=1)
5. Root或者Switch的Downstream端口接收到針對(duì)其二級(jí)總線(Secondary Bus)上的不存在的設(shè)備的配置請(qǐng)求(Configuration Request)
6. Endpoint接收到Type1型的配置請(qǐng)求
7. Completion中使用了保留的Completion狀態(tài)編碼(參考上面的表格)
8. 設(shè)備(的某個(gè)功能,F(xiàn)unction)處于D1、D2或者D3hot電源管理狀態(tài)時(shí),卻接收到了除了配置請(qǐng)求和消息之外的內(nèi)容
Completer Abort(CA)主要包括:
1. Completer接收的特殊請(qǐng)求,只有在違背其規(guī)則的情況下才能對(duì)該請(qǐng)求進(jìn)行響應(yīng)(返回Completion)
2. 因?yàn)槟承┖愣ǖ腻e(cuò)誤狀態(tài)(Permanent Error Condition),導(dǎo)致Completer無(wú)法響應(yīng)接收到的請(qǐng)求
3. Completer接收到存在訪問(wèn)控制服務(wù)錯(cuò)誤(Access Control Services Error,ACS Error)的請(qǐng)求
4. PCIe-to-PCI橋接收到針對(duì)其連接的PCI設(shè)備的請(qǐng)求,但是該P(yáng)CI設(shè)備無(wú)法處理該請(qǐng)求
非預(yù)期的Completion主要包括:
1. Requester接收到的Completion和其發(fā)出的Request不一致
Completion超時(shí):
所有的PCIe設(shè)備都必須支持Completion超時(shí)定時(shí)器,除非該設(shè)備只是用于初始化配置事務(wù)的。需要注意的是,PCIe設(shè)備必須能夠針對(duì)多個(gè)事務(wù)(Transaction)分別計(jì)時(shí)。PCIe 1.x和2.0的Spec建議超時(shí)時(shí)間最好設(shè)置為10ms至50ms之間,對(duì)于一些特殊情況,超時(shí)時(shí)間最低可設(shè)置為30us。PCIe 2.1 Spec開(kāi)始,增加了第二設(shè)備控制寄存器(Device Control Register 2)用于查看和控制超時(shí)時(shí)間的值。如下圖所示:
如果,某個(gè)請(qǐng)求對(duì)應(yīng)多個(gè)Completion,那么除了最后一個(gè)Completion,其他的Completion不會(huì)造成該請(qǐng)求的定時(shí)器停止計(jì)時(shí)。
鏈路流量控制(Link Flow Control)相關(guān)的錯(cuò)誤
鏈路流量控制相關(guān)的錯(cuò)誤主要有:
1. 在FC初始化時(shí),鏈路相鄰設(shè)備無(wú)法完成針對(duì)任何一個(gè)VC的,最小的FC Credits的交換更新(Advertises)
2. 鏈路相鄰設(shè)備交換更新(Advertises)的FC Credits超過(guò)了最大值(Data Payload最大為2047,Header最大為127)
3. 鏈路相鄰設(shè)備交換更新時(shí),F(xiàn)C Credits為非零值,且該鏈路的FC Credits之前已經(jīng)被初始化為無(wú)限值了
4. 接收端Buffer溢出,導(dǎo)致數(shù)據(jù)丟失(可選的,但是如果使能,則認(rèn)為是Fatal Error)
關(guān)于Flow Control可以參考之前的文章:http://blog.chinaaet.com/justlxy/p/5100053464
和http://blog.chinaaet.com/justlxy/p/5100053465
異常的TLP(MalformedTLP)
異常的TLP(Malformed TLP)錯(cuò)誤主要有:
1. Data Payload超過(guò)了最大值(Max Payload Size)
2. 數(shù)據(jù)長(zhǎng)度(Data Length)與包頭中的長(zhǎng)度值不一致
3. 存儲(chǔ)地址起始位置跨越了4KB邊界(Naturally-aligned 4KB Boundary)
4. TD(TLP Digest)的值與ECRC是否使用不一致
5. 字節(jié)使能沖突(Byte Enable Violation)
6. 未定義的類(lèi)型值(Type Field Values)
7. Completion違反了RCB(Read Completion Boundary)值
8. 針對(duì)非配置請(qǐng)求返回的Completion中的狀態(tài)為配置請(qǐng)求重試狀態(tài)(Configuration Request Retry Status)
9. TC域包含了一個(gè)未被分配到當(dāng)前使能的VC的值(也被稱(chēng)為T(mén)C Filtering)
10. IO或者配置請(qǐng)求沖突(可選的)
11. 中斷Emulation消息向下發(fā)送(可選的)
12. TLP前綴錯(cuò)誤(具體請(qǐng)參考PCIe Spec V2.0的2.2~2.6相關(guān)章節(jié))
內(nèi)部錯(cuò)誤(Internal Errors)
一般指的是Switch等橋設(shè)備內(nèi)部產(chǎn)生的錯(cuò)誤
-
PCIe
+關(guān)注
關(guān)注
15文章
1241瀏覽量
82708 -
配置
+關(guān)注
關(guān)注
1文章
188瀏覽量
18396
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe錯(cuò)誤源詳解(二)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論