一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCIe錯(cuò)誤報(bào)告的兩種機(jī)制詳解

VIBT_dputech ? 來(lái)源:CSDN博客 ? 作者:CSDN博客 ? 2020-10-23 11:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.PCIe錯(cuò)誤報(bào)告的兩種機(jī)制

1. Baseline Error Reporting:該機(jī)制是PCIe設(shè)備必需支持的一種錯(cuò)誤報(bào)告機(jī)制,同時(shí)設(shè)備會(huì)定義最小的錯(cuò)誤報(bào)告請(qǐng)求。應(yīng)該是通過(guò)配置Device Control和Command寄存器做到通知其他設(shè)備產(chǎn)生了錯(cuò)誤的一種機(jī)制。

2. Advanced Error Reporting(AER):該機(jī)制是PCIe設(shè)備用來(lái)獲取更健壯的錯(cuò)誤報(bào)告信息的一種特殊機(jī)制。該機(jī)制的相關(guān)寄存器會(huì)在PCIe擴(kuò)展配置空間中上報(bào)。

2.PCIe錯(cuò)誤的分類(lèi)

由上圖可以看出PCIe將各個(gè)層產(chǎn)生的錯(cuò)誤大致分為兩類(lèi):Correctable和Uncorrectable。

其中又將Uncorrectable分為Fatal和Nonfatal兩種。通過(guò)分類(lèi)平臺(tái)可以對(duì)Correctable甚至Uncorrectable-Nonfatal的錯(cuò)誤分配低優(yōu)先級(jí)的處理,或者檢測(cè)錯(cuò)誤頻率等處理;對(duì)于Uncorrectable-Fatal的錯(cuò)誤可能直接對(duì)系統(tǒng)復(fù)位處理。

CorrectableErrors:是指可糾正的錯(cuò)誤,在硬件不經(jīng)過(guò)軟件的干預(yù)可以通過(guò)自身的邏輯糾正的錯(cuò)誤。對(duì)于一些可糾正的錯(cuò)誤如果處理校正的設(shè)備不處理的話需要將錯(cuò)誤報(bào)告成Uncorrectable Errors。

UncorrectableErrors:不可糾正的錯(cuò)誤,這類(lèi)錯(cuò)誤會(huì)影響接口的功能,這類(lèi)錯(cuò)誤在協(xié)議中沒(méi)有明確的機(jī)制可以糾正。對(duì)于PCIe具備更健壯的錯(cuò)誤處理機(jī)制的設(shè)備來(lái)說(shuō),會(huì)進(jìn)一步區(qū)分該錯(cuò)誤為:Fatal和Non-Fatal。

FatalError:這類(lèi)錯(cuò)誤導(dǎo)致鏈路和硬件異常只有通過(guò)復(fù)位操作實(shí)現(xiàn)恢復(fù)。

Non-Fatal:這類(lèi)錯(cuò)誤可能會(huì)導(dǎo)致特定的傳輸變得不可靠,但是鏈路和硬件的其他功能不受影響。設(shè)備驅(qū)動(dòng)軟件提供恢復(fù)機(jī)制,并不會(huì)影響到鏈路和其他設(shè)備的運(yùn)行。

3.錯(cuò)誤信號(hào)轉(zhuǎn)發(fā)和通知

PCIe提供了三種方式轉(zhuǎn)發(fā)通知錯(cuò)誤:

1.通過(guò)回復(fù)完成狀態(tài)CompletionStatus

2. 通過(guò)錯(cuò)誤消息 errorMessages

3.通過(guò)錯(cuò)誤轉(zhuǎn)發(fā)機(jī)制ErrorForwarding

3.1 Completion Status:

針對(duì)Non-Posted請(qǐng)求,一些錯(cuò)誤可以通過(guò)completion status的方式通知系統(tǒng)或其他設(shè)備,這種方式的通知,使上層協(xié)議或者軟件有機(jī)會(huì)可以判斷狀態(tài)做相應(yīng)的補(bǔ)救處理。

3.2 Error Message:

根據(jù)錯(cuò)誤的嚴(yán)重程度,不同類(lèi)型的Error Message會(huì)被發(fā)送給RC。

對(duì)于PCIe1.0和1.0a之前的協(xié)議一般規(guī)定:correctable error發(fā)送ERR_COR,non-fatal errors發(fā)送ERR_NONFATAL,fatal error發(fā)送ERR_FATAL。

隨后版本的協(xié)議支持Role-Based Error Reporting,可以進(jìn)一步通過(guò)檢測(cè)設(shè)備的身份和AER相關(guān)配置將non-fatal error以ERR_NONFATAL或ERR_COR的方式發(fā)出去,甚至不發(fā)通知。因?yàn)樵谝恍┢脚_(tái)下發(fā)送ERR_NONFATAL可能會(huì)阻止其他設(shè)備的恢復(fù)操作或者決定錯(cuò)誤的最終處理,由于不是最合適決定錯(cuò)誤最終處理的設(shè)備,該設(shè)備可以通過(guò)配置AER來(lái)將錯(cuò)誤已ERR_COR的形式通知其他設(shè)備,如果是最合適的設(shè)備則會(huì)以ERR_NONFATAL消息的方式通知其他設(shè)備。

對(duì)于ERR_NONFATAL,如果軟件想避免后續(xù)接受設(shè)備的錯(cuò)誤檢測(cè),可以直接配置AER將該錯(cuò)誤升級(jí)為ERR_FATAL,后續(xù)的設(shè)備總是會(huì)以ERR_FATAL的方式轉(zhuǎn)發(fā)下去,無(wú)論后續(xù)設(shè)備是哪種身份。

3.2.1錯(cuò)誤消息嚴(yán)重性可編程

對(duì)于不同的設(shè)備對(duì)致命和非致命的界定不同,AER提供了錯(cuò)誤消息可編程的機(jī)制。AER以協(xié)議Error list中判定的消息結(jié)果作為默認(rèn)發(fā)送的方式,但是也可通過(guò)編程AER的一些寄存器發(fā)送更高級(jí)的錯(cuò)誤消息。

3.2.2錯(cuò)誤消息屏蔽

只有當(dāng)Device Control 寄存器的Reporting Enable fields或PCI Command寄存器的SERR# Enable位置1的情況下設(shè)備才能轉(zhuǎn)發(fā)消息,此外如果配置了AER的設(shè)備可以通過(guò)Uncorrectable Error Mask寄存器和Correctable Error Mask寄存器對(duì)不同的error進(jìn)行屏蔽操作。

3.2.3 錯(cuò)誤消息污染

如果錯(cuò)誤沒(méi)有得到隔離導(dǎo)致后續(xù)的錯(cuò)誤覆蓋最根本的錯(cuò)誤這種情況就是錯(cuò)誤污染,比如一個(gè)TLP在數(shù)據(jù)鏈路層出錯(cuò)的話就不再上傳到事務(wù)層,而是丟棄這個(gè)TLP,上報(bào)錯(cuò)誤消息。如果產(chǎn)生錯(cuò)誤污染就很難定位到根本的錯(cuò)誤消息是從哪里產(chǎn)生的。對(duì)于產(chǎn)生自同一源的錯(cuò)誤協(xié)議規(guī)定了錯(cuò)誤的優(yōu)先級(jí),越底層的錯(cuò)誤其優(yōu)先級(jí)越高。

· 不可更正的內(nèi)部錯(cuò)誤(Uncorrectable Internal Error)

· 接收端Buffer溢出

· 流量控制協(xié)議錯(cuò)誤

· ECRC校檢失敗

· 異常的TLP(Malformed TLP)

· AtomicOp Egress Blocked

· TLP包頭異常(TLP Prefix Blocked)

· 訪問(wèn)控制服務(wù)(Access Control Services,ACS)異常

· MC(Multi-cast) Blocked TLP

· 不支持的請(qǐng)求(Unsupported Request,UR),Completer Abort(CA)或者不對(duì)應(yīng)的返回包(Unexpected Completion)

· 接收到損壞的數(shù)據(jù)包(Poisoned Packet)

3.2.4 AdvisoryNon-FatalError(警告性的非致命錯(cuò)誤)

在一些情況下如果檢測(cè)到ERR_NONFATAL錯(cuò)誤的設(shè)備并不是最終決定錯(cuò)誤處理的設(shè)備,設(shè)備如果配有AER則發(fā)送ERR_COR提醒軟件,若果沒(méi)有配置AER則不發(fā)送消息通知軟件。PCIe規(guī)定以下幾種情況為警告性的非致命錯(cuò)誤:

1.CompleterSending a CompletionwithUR/CA Status

2.IntermediateReceive

3.UltimatePCIExpressReceiverofaPoisonedTLP

4.Requesterwith completion timeout

5.Receiver of an unexpected completion

3.3錯(cuò)誤轉(zhuǎn)發(fā)(Datapoisoning)

一旦出現(xiàn)這種情況TLP的EP位被置1,TLP整個(gè)路由流程中的接收者都將報(bào)告接收到這個(gè)poison的TLP,從而能追蹤出現(xiàn)問(wèn)題的位置。

4.錯(cuò)誤日志記錄

如果設(shè)備不支持AER,只有通過(guò)查看Device Status寄存器中是否檢測(cè)到錯(cuò)誤,如果支持AER則對(duì)應(yīng)的Uncorrectable Error Status寄存器和Correctable Error Status寄存器會(huì)記錄相應(yīng)狀態(tài)。對(duì)于明確的事務(wù)層的錯(cuò)誤AER的Header Log寄存器會(huì)記錄第一個(gè)uncorrectable error TLP的頭。

4.1錯(cuò)誤源溯源

錯(cuò)誤消息中包含Requester ID如下圖:

系統(tǒng)軟件可以根據(jù)RootPort或者RootComplexEventCollector的AER寄存器的內(nèi)容獲取有效的信息

4.2多條錯(cuò)誤的處理(支持AER設(shè)備)

對(duì)于一個(gè)設(shè)備如果同時(shí)收到多條錯(cuò)誤,其AER狀態(tài)寄存器的位會(huì)置上,直到軟件清理或者復(fù)位清除。即使AER的多個(gè)狀態(tài)位被置起,但是First Error Pointer寄存器和Header Log寄存器中記錄的信息還是第一個(gè)錯(cuò)誤的信息。即使這樣還是應(yīng)該及時(shí)的處理First Error Pointer寄存器和Header Log寄存器的信息,防止后續(xù)錯(cuò)誤增加系統(tǒng)的風(fēng)險(xiǎn)。

5. 流程中涉及到的寄存器介紹

5.1 PCIe標(biāo)準(zhǔn)配置空間的Command Register和Status Register

5.2PCIE Capabilities寄存器的Device Control和Status寄存器

5.3AER寄存器介紹

5.3.1Uncorrectable/correctableErrorStatus/mask/severityRegister

Uncorrectable和correctable的status mask severity寄存器類(lèi)似,值得注意的是correctable系列的寄存器有個(gè)Advisory Non-Fatal Error Status(mask/severity),處理上文中提及的警告性的非致命錯(cuò)誤。對(duì)于Uncorrectable的錯(cuò)誤有Severity寄存器來(lái)配置對(duì)應(yīng)錯(cuò)誤的嚴(yán)重性,而Correctable的錯(cuò)誤并沒(méi)有對(duì)應(yīng)的Severity寄存器。

Status:當(dāng)產(chǎn)生相應(yīng)的錯(cuò)誤時(shí),Status寄存器的相應(yīng)位會(huì)被置1;

Mask:當(dāng)對(duì)應(yīng)錯(cuò)誤的mask位置1時(shí),將不再上報(bào)錯(cuò)誤消息,雖然mask被置1,但是如果有錯(cuò)誤產(chǎn)生status相應(yīng)位仍會(huì)置1;

Severity:根據(jù)設(shè)備的不同要求,可以將uncorrectable error的嚴(yán)重程度配置,1則表示fatal error;

5.3.2AdvancedErrorCapabilitiesandControlRegister

First Error Pointer:表示status中報(bào)告的第一個(gè)錯(cuò)誤(對(duì)應(yīng)的status的bit位)

5.3.3HeaderLogRegister

Header Log Register:記錄了第一個(gè)錯(cuò)誤TLP的Header內(nèi)容。

6.錯(cuò)誤消息上報(bào)和記錄流程

7.Errormessage路由過(guò)程中的寄存器控制流程

8.總結(jié)

Advanced Error Reporting(AER)機(jī)制提供了更健壯和豐富的錯(cuò)誤消息機(jī)制,比傳統(tǒng)的PCIe Baseline Error Reporting機(jī)制提供了更多的錯(cuò)誤處理。AER機(jī)制讓錯(cuò)誤信號(hào)更加豐富,讓Fw開(kāi)發(fā)人員可以根據(jù)不同的場(chǎng)景對(duì)錯(cuò)誤做出不同的響應(yīng)。

責(zé)任編輯人:CC

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PCIe
    +關(guān)注

    關(guān)注

    16

    文章

    1342

    瀏覽量

    85169

原文標(biāo)題:談?wù)凱CIe錯(cuò)誤報(bào)告機(jī)制

文章出處:【微信號(hào):dputech,微信公眾號(hào):DapuStor】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PCB設(shè)計(jì)中如何進(jìn)行統(tǒng)一批量檢測(cè)并生成錯(cuò)誤報(bào)告

    不僅能在PCB設(shè)計(jì)的過(guò)程中實(shí)時(shí)檢測(cè), 而且也能夠在需要的時(shí)候進(jìn)行統(tǒng)一的批量檢測(cè)并生成錯(cuò)誤報(bào)告。 Altium Designer的設(shè)計(jì)規(guī)則不是PCB對(duì)象的屬性, 而是獨(dú)立定義的。 每條規(guī)則需針對(duì)具體的PCB對(duì)象。對(duì)于PCB規(guī)則系統(tǒng)來(lái)說(shuō),它必須知道給定的規(guī)則應(yīng)用于哪些對(duì)象,即規(guī)則的應(yīng)用范圍???/div>
    的頭像 發(fā)表于 04-04 09:21 ?1.1w次閱讀
    PCB設(shè)計(jì)中如何進(jìn)行統(tǒng)一批量檢測(cè)并生成<b class='flag-5'>錯(cuò)誤報(bào)告</b>

    Win8系統(tǒng)操作不當(dāng)彈出錯(cuò)誤報(bào)告

    win8有時(shí)候會(huì)操作不當(dāng),系統(tǒng)會(huì)彈出一個(gè)錯(cuò)誤報(bào)告,頻繁彈出提示窗口,非常麻煩,有什么方法可以將提示窗口關(guān)閉呢?系統(tǒng) 會(huì)彈出一個(gè)錯(cuò)誤報(bào)告,它會(huì)將系統(tǒng)出現(xiàn)的一些問(wèn)題生成文件報(bào)告發(fā)送至微軟,以便讓技術(shù)員
    發(fā)表于 06-24 14:35

    仿真停止后怎樣關(guān)掉錯(cuò)誤報(bào)告?

    問(wèn)個(gè)小問(wèn)題 請(qǐng)問(wèn)怎樣設(shè)定才能在仿真停止之后讓那個(gè)錯(cuò)誤報(bào)告頁(yè)面不彈出。每次仿真完之后都彈出煩死了
    發(fā)表于 06-23 00:29

    關(guān)于Quartus II 錯(cuò)誤報(bào)告Error (171173): Node from partition Top cannot preserve previous placement at PIN_P8 and honor the location assigment to PIN_F8

    問(wèn)題:在修改分配管腳后總是出現(xiàn)下面這個(gè)錯(cuò)誤報(bào)告,編譯不過(guò)。Error (171173): Node rs232_tx from partition Top cannot preserve
    發(fā)表于 11-04 21:13

    MPLAB X IDE v3.20編譯器使用錯(cuò)誤的行號(hào)引用報(bào)告錯(cuò)誤

    嗨,我使用XC16并在匯編中編寫(xiě),所以當(dāng)編譯過(guò)程中代碼出錯(cuò)時(shí),編譯器將錯(cuò)誤報(bào)告錯(cuò)誤的行中。例如,我在編輯器的第1439行出錯(cuò),編譯器將錯(cuò)誤報(bào)告在第1741行。我在V3.15也有這個(gè)問(wèn)題,但是當(dāng)我使用舊的V892時(shí)沒(méi)有。有什么線
    發(fā)表于 09-16 11:14

    為什么我設(shè)計(jì)的TMS320VC5402板子在調(diào)試軟件時(shí)總會(huì)出現(xiàn)存儲(chǔ)器錯(cuò)誤報(bào)告?

    我設(shè)計(jì)的TMS320VC5402板子在調(diào)試軟件時(shí)會(huì)經(jīng)常出現(xiàn)存儲(chǔ)器錯(cuò)誤報(bào)告,排除是映射的問(wèn)題,是不是板子不穩(wěn)定的因素?還是DSP工作不正常的問(wèn)題?如何判別?
    發(fā)表于 09-17 05:33

    當(dāng)PCIe配置為端點(diǎn)時(shí),如何啟用AER(高級(jí)錯(cuò)誤報(bào)告)驅(qū)動(dòng)程序?

    當(dāng) PCIe 配置為端點(diǎn)時(shí),如何啟用 AER(高級(jí)錯(cuò)誤報(bào)告)驅(qū)動(dòng)程序。
    發(fā)表于 04-19 07:31

    ICC錯(cuò)誤集錦、ICCAVR的報(bào)錯(cuò)

      新手用ICC編程的時(shí)候,經(jīng)常會(huì)出現(xiàn)一些錯(cuò)誤,現(xiàn)在將常見(jiàn)的錯(cuò)誤報(bào)告整理如下。這里的一些錯(cuò)誤是我為了展示而故意制造的,歡迎你提供你遇到的錯(cuò)誤。排名不分先后:
    發(fā)表于 09-09 15:20 ?0次下載

    基于軟件錯(cuò)誤報(bào)告數(shù)據(jù)集成的改進(jìn)貝葉斯算法

    受到關(guān)注。通過(guò)改進(jìn)詞頻一逆文檔頻率( TF-IDF),考慮到詞條在類(lèi)間和類(lèi)內(nèi)出現(xiàn)情況對(duì)文本分類(lèi)的影響,提出一基于軟件錯(cuò)誤報(bào)告數(shù)據(jù)集的改進(jìn)多項(xiàng)式樸素貝葉斯算法,同時(shí)在Hadoop平臺(tái)下使用MapReduce計(jì)算模型實(shí)現(xiàn)該算法的分布式版本
    發(fā)表于 12-18 11:25 ?1次下載

    PCIe總線的錯(cuò)誤報(bào)告機(jī)制中四個(gè)比較重要的概念

    錯(cuò)誤報(bào)告(Error Reporting):通知系統(tǒng)某個(gè)(或多個(gè))錯(cuò)誤發(fā)生了。在PCIe總線中,發(fā)生錯(cuò)誤的設(shè)備會(huì)通過(guò)錯(cuò)誤消息(Error
    的頭像 發(fā)表于 08-17 10:09 ?7151次閱讀

    PCIe掃盲—PCIe錯(cuò)誤檢測(cè)機(jī)制的詳細(xì)資料概述

    PCIe總線錯(cuò)誤檢測(cè)囊括了鏈路(Link)上的錯(cuò)誤以及包傳遞過(guò)程中的錯(cuò)誤,如下圖所示。用戶設(shè)計(jì)的應(yīng)用程序?qū)又械?b class='flag-5'>錯(cuò)誤不屬于鏈路傳輸中的
    的頭像 發(fā)表于 08-18 11:05 ?1.6w次閱讀

    PCIe總線的三錯(cuò)誤報(bào)告方式

    PCIe設(shè)備的配置空間中的狀態(tài)與控制寄存器如上圖所示,通過(guò)這些寄存器可以使能(或禁止)通過(guò)錯(cuò)誤消息(Error Message)發(fā)送錯(cuò)誤報(bào)告、查詢錯(cuò)誤狀態(tài)信息,以及鏈路訓(xùn)練和初始化狀態(tài)
    的頭像 發(fā)表于 08-23 10:14 ?1.5w次閱讀
    <b class='flag-5'>PCIe</b>總線的三<b class='flag-5'>種</b><b class='flag-5'>錯(cuò)誤報(bào)告</b>方式

    PCIe錯(cuò)誤報(bào)告機(jī)制上高級(jí)錯(cuò)誤報(bào)告AER

    也是其他錯(cuò)誤的根源。PCIe Spec V2.1還支持多個(gè)錯(cuò)誤的追蹤(Tracking Multiple Errors)。
    的頭像 發(fā)表于 08-27 11:31 ?7932次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>錯(cuò)誤報(bào)告</b><b class='flag-5'>機(jī)制</b>上高級(jí)<b class='flag-5'>錯(cuò)誤報(bào)告</b>AER

    Root如何處理來(lái)自其他PCIe設(shè)備的錯(cuò)誤消息

    高級(jí)可校正錯(cuò)誤屏蔽寄存器如下圖所示,默認(rèn)情況下,這些bit的值都是0。也就是說(shuō),只要發(fā)生相關(guān)錯(cuò)誤,且該錯(cuò)誤報(bào)告功能被使能,則相關(guān)錯(cuò)誤便會(huì)被報(bào)告
    的頭像 發(fā)表于 08-28 09:44 ?4810次閱讀
    Root如何處理來(lái)自其他<b class='flag-5'>PCIe</b>設(shè)備的<b class='flag-5'>錯(cuò)誤</b>消息

    查看服務(wù)器連接錯(cuò)誤報(bào)告的方法說(shuō)明

    查看服務(wù)器連接錯(cuò)誤報(bào)告的方法
    發(fā)表于 01-07 11:04 ?1142次閱讀