時間:2018-08-17 11:06:31來源:網絡轉載
前面的文章提到過,PCI總線中定義兩個邊帶信號(PERR#和SERR#)來處理總線錯誤。其中PERR#主要對應的是普通數據奇偶校檢錯誤(ParityError),而SERR#主要對應的是系統錯誤(SystemError)。具體如下:
·普通的數據奇偶校檢錯誤——通過PERR#報告
·在多任務事務(Multi-taskTransaction,又稱為SpecialCycles)時的奇偶校檢錯誤——通過SERR#報告
·地址和命令的奇偶校檢錯誤——通過SERR#報告
·其他錯誤——通過SERR#報告
一個簡單的例子如下圖所示:
PCIe作為一種高速串行總線,取消了PCI總線中的這兩個邊帶信號,采用錯誤消息的方式來實現錯誤報告。但是,在軟件層面上,PCIe仍是兼容PCI總線的,具體后面會詳細描述。
在PCIe總線的錯誤報告機制中,有如下四個比較重要的概念:
·錯誤檢測(ErrorDetection):指的是檢測某個錯誤是否存在的過程。
·錯誤登記(ErrorLogging):指的是將相關寄存器(配置空間中的)的對應為置位,以等待軟件中的相關錯誤處理程序來處理該錯誤。
·錯誤報告(ErrorReporting):通知系統某個(或多個)錯誤發生了。在PCIe總線中,發生錯誤的設備會通過錯誤消息(ErrorMessage)逐級將錯誤信息發送至Root,Root接收到錯誤消息后,會產生對應的中斷通知系統。
·錯誤發送(ErrorSignaling):指的是通過發送錯誤消息(或者帶有UR,CA的Completion和PoisonedTLP)來傳遞錯誤信息的過程。
注:“帶有UR,CA的Completion”在前面的文章中介紹過,不熟悉的可以回顧一下。“PoisonedTLP”是PCIe總線錯誤報告機制中的ErrorForwarding的方式,具體會在后面詳細介紹。
PCIe總線Spec定義了兩個錯誤報告等級。第一個為基本的(BaselineCapability),是所有PCIe設備都需要支持的功能。第二個是可選的,稱之為高級錯誤報告(AdvancedErrorReportingCapability)。
在基本的錯誤報告機制中,有兩組相關的配置寄存器(配置空間中),分別為:
·兼容PCI總線的寄存器(PCI-compatibleRegisters)
·PCIe總線中新增的寄存器(PCIExpressCapabilityRegisters)
高級錯誤報告機制(AER)中,又使用了一組專用的配置寄存器(配置空間中)。借助AER可以獲得更多的錯誤信息,有助于軟件定位錯誤源和分析錯誤原因。
PCIe總線的錯誤可以分為(CorrectableErrors)和不可校正錯誤(UncorrectableErrors)。其中,可校正錯誤可以自動地被硬件識別并被自動的校正或恢復。而不可校正錯誤又被分為非致命的(Non-Fatal)和致命的(Fatal)。非致命的錯誤一般有設備驅動軟件(DeviceSpecificSoftware)直接處理,且鏈路(Link)可恢復,甚至鏈路上的數據有可能得到恢復(不丟失數據)。致命的錯誤只能由系統軟件(SystemSoftware)處理,且一般需要進行復位等操作,因此鏈路上的數據必然會丟失。
標簽:
上一篇:變頻器與電動機之間的距離多...
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
相關資訊
產品新聞
更多>2025-05-19
2025-04-30
2025-04-11
2025-04-08
2025-03-31
2025-03-26