7.RAS概述
PCIe錯誤分為可校正的錯誤(Correctable Error)和不可校正的錯誤(Uncorrectable Error), Uncorrectable又分為致命的(Fatal)和非致命的(Nonfatal)。可校正錯誤可以自動地被硬件識別并被自動的校正或恢復。非致命錯誤可能會導致特定的傳輸變得不可靠,但是鏈路和硬件的其他功能不受影響。設備驅動軟件提供恢復機制,并不會影響到鏈路和其他設備的運行。致命錯誤會導致鏈路和硬件異常,只有通過系統軟件進行復位操作實現恢復。
7.1 硬件故障分類
三類硬件故障(Fault):
同步且精確的CPU異常(exception),這些異常可能是由于數據中止、指令預取中止,或由于訪問某個故障地址時出現硬件故障而導致的某種形式的總線錯誤。
異步和不精確的CPU異常,可能由CPU內部的不可糾正錯誤(Uncorrected Error,UE)、可糾正錯誤(Corrected Error,CE)或外部總線錯誤觸發。
異步和不精確的系統異常或中斷,這些異常發生在CPU子系統之外,一般通過中斷線或者消息中斷(MSI)報告給CPU,通知CPU發生硬件故障。
7.2 硬件錯誤傳播
主機系統和CCIX設備可以有類似的組件集:
不同類型的存儲
不同類型的緩存和寄存器堆
處理單元(Processing Elements)
一致性互連
上述每個組件都可能消耗、產生或是檢測硬件錯誤。這些硬件錯誤可能與ECC、命令故障、傳輸錯誤、解碼錯誤、邏輯錯誤、超時/看門狗等有關。
當數據中毒(poisoned)時,錯誤可能會在整個系統中從一個實體傳播到另一個實體,這可能是由處理單元,或者緩存/監聽邏輯啟動的事務觸發的。下圖展示了有毒數據如何流經連接到CCIX設備的主機系統。
CCIX規范只規定了如何報告和處理CCIX錯誤。
7.3 CCIX協議錯誤報告(Protocol Error Reporting,PER)
有兩類硬件故障(Fault)可以引起CCIX硬件錯誤(Error):
PCIe傳輸錯誤,通過標準的PCIe機制報告
CCIX協議錯誤(CCIX Protocol Errors ,PER),在設備端通過CCIX PER消息報告,并記錄到CCIX DVSEC空間;在主機端,錯誤被報告給錯誤代理,錯誤代理向CPU報告錯誤
7.3.1 PER消息格式
PER消息格式:
其中的PER Type字段的含義是:
0x0:Memory Error Type Structure
0x1:Cache Error Type Structure
0x2:ATC Error Type Structure
0x3:Port Error Type Structure
0x4:CCIX Link Error Type Structure
0x5:Agent Internal
在規范的7.3.3 – 7.3.8章節有具體介紹。
7.3.2 PER日志結構
CCIX PER日志用于報告會導致協議錯誤的硬件故障。協議錯誤通常與特定的CCIX協議組件(即CCIX鏈路、端口、HA、SA或RA)相關。每個日志結構開始的偏移量(字節數)由各種能力結構的錯誤日志偏移量表示。
每個日志頭由256位組成。DW0和DW1表示錯誤日志屬性字段。DW2和DW3提供錯誤的故障地址。DW4提供錯誤的錯誤地址掩碼長度。DW5-7保留供將來使用。后面的具體結構說明全都略去。
7.4 CCIX錯誤控制和狀態結構
CCIX在兩個級別提供錯誤控制機制:
Level 1:CCIX設備錯誤控制和狀態(每個CCIX設備)
Level 2:組件錯誤控制和狀態(根據CCIX協議組件)
必須禁用CCIX設備中所有錯誤控制和狀態寄存器的重置值。主機軟件必須明確啟用CCIX設備和每個CCIX協議組件的錯誤報告。啟用后,默認情況下,除非軟件設置了掩碼位,否則錯誤將被不能被屏蔽。
7.4.1 錯誤控制寄存器定義
設備和組件的控制寄存器如下:
7.4.2 設備錯誤控制流程
本章節介紹錯誤屏蔽規則和啟動時啟用錯誤的流程,略過。
8.地址翻譯服務(Address Translation Services)
ATS機制是在PCIe中定義的。簡單介紹一下,為節省CPU資源,PCIe設備常采用DMA方式訪問內存。Root Complex需要將DMA請求進行一次地址轉換才能將訪問到真實物理存儲地址。進行地址轉換可以防止非法DMA請求,并且有利于實現虛擬化傳輸。但是,RC進行DMA地址轉換是需要時間的,相較于不進行地址轉換,顯然進行DMA地址轉換會增加DMA訪問的時間。為了減小地址轉換的影響,設計人員常常在需要進行地址轉換的地方添加地址轉換緩存(Address Translation Cache,ATC)。需要設備設計出具有良好的ATC機制,包括ATC的預測、地址翻譯請求的長度、發送翻譯請求的時機等。
8.1 介紹
CCIX請求代理(RA)發出的內存請求時使用的是物理地址。因此與RA關聯的加速器功能(Accelerator Functions,AFs)必須向RA提供物理地址。但是軟件使用的是虛擬地址,所以AFs需要執行地址轉換。
請求代理不可以向CCIX鏈路發出帶有未翻譯虛擬地址的內存請求,因為這可能會違反基于頁表的安全性或虛擬化。
AF可以使用兩種方法來轉換虛擬地址。第一種是使用PCIe定義的地址轉換服務變體從主機系統獲取地址轉換。第二種方法是讓AF包含一個MMU,以支持主機系統頁表格式。
8.2 ATS
PCIe格式的ATS轉換請求、轉換完成、失效請求、頁面請求和頁面響應通過VC0發送。除CCIX VC外,可以在任何VC上發送失效響應。
8.3 無效語義
略過。
8.4 內存類型
除了獲取翻譯后的頁面地址外,CCIX請求代理還需要內存類型信息,以便與內存正確交互。內存類型信息決定了CCIX鏈路上支持的操作類型,以及數據是否可以在本地緩存。
帶有內存屬性的ATS翻譯完成的格式和定義如下:
其中Mem[2:0]的定義如下:
關于Reodering,Early write acknowledge這些在之前的文章中介紹過。
至此,CCIX規范的內容大致粗過一遍,其中PCIe部分基本都略過了,有的地方介紹了一點概念性知識。真需要用到CCIX的時候,還是多看協議。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5372瀏覽量
121296 -
cpu
+關注
關注
68文章
10911瀏覽量
213152 -
PCIe
+關注
關注
15文章
1265瀏覽量
83271
原文標題:技術分享 | CCIX(九)
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
基于Vector工具進行CAN協議錯誤幀的分析實踐
![基于Vector工具進行CAN協議<b class='flag-5'>錯誤</b>幀的分析實踐](https://file.elecfans.com/web2/M00/52/D4/pYYBAGLNkrKAeFJaAAAjXRuImx0496.png)
GPIO錯誤排查與解決
RTOS中的錯誤檢查機制
DAC7811在哪種錯誤狀態下,或者錯誤的控制下會輸出正壓嗎?
晶體管工作狀態的分類與分析
RS-52SH磁性開關的結構和工作狀態
接口的控制與狀態寄存器什么作用
CAN總線錯誤狀態的種類
DSP電機控制程序的概述
一文讀懂CAN通訊錯誤幀
![一文讀懂CAN通訊<b class='flag-5'>錯誤</b>幀](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
介紹一個IC設計錯誤案例:可讀debug寄存器錯誤跨時鐘
![介紹一個IC設計<b class='flag-5'>錯誤</b>案例:可讀debug寄存器<b class='flag-5'>錯誤</b>跨時鐘](https://file1.elecfans.com/web2/M00/C4/BB/wKgaomXuuaCAc1UAAAAs-lw8H8Y967.png)
評論