7.RAS概述
PCIe錯誤分為可校正的錯誤(Correctable Error)和不可校正的錯誤(Uncorrectable Error), Uncorrectable又分為致命的(Fatal)和非致命的(Nonfatal)??尚Ue誤可以自動地被硬件識別并被自動的校正或恢復。非致命錯誤可能會導致特定的傳輸變得不可靠,但是鏈路和硬件的其他功能不受影響。設(shè)備驅(qū)動軟件提供恢復機制,并不會影響到鏈路和其他設(shè)備的運行。致命錯誤會導致鏈路和硬件異常,只有通過系統(tǒng)軟件進行復位操作實現(xiàn)恢復。
7.1 硬件故障分類
三類硬件故障(Fault):
同步且精確的CPU異常(exception),這些異常可能是由于數(shù)據(jù)中止、指令預取中止,或由于訪問某個故障地址時出現(xiàn)硬件故障而導致的某種形式的總線錯誤。
異步和不精確的CPU異常,可能由CPU內(nèi)部的不可糾正錯誤(Uncorrected Error,UE)、可糾正錯誤(Corrected Error,CE)或外部總線錯誤觸發(fā)。
異步和不精確的系統(tǒng)異?;蛑袛?,這些異常發(fā)生在CPU子系統(tǒng)之外,一般通過中斷線或者消息中斷(MSI)報告給CPU,通知CPU發(fā)生硬件故障。
7.2 硬件錯誤傳播
主機系統(tǒng)和CCIX設(shè)備可以有類似的組件集:
不同類型的存儲
不同類型的緩存和寄存器堆
處理單元(Processing Elements)
一致性互連
上述每個組件都可能消耗、產(chǎn)生或是檢測硬件錯誤。這些硬件錯誤可能與ECC、命令故障、傳輸錯誤、解碼錯誤、邏輯錯誤、超時/看門狗等有關(guān)。
當數(shù)據(jù)中毒(poisoned)時,錯誤可能會在整個系統(tǒng)中從一個實體傳播到另一個實體,這可能是由處理單元,或者緩存/監(jiān)聽邏輯啟動的事務(wù)觸發(fā)的。下圖展示了有毒數(shù)據(jù)如何流經(jīng)連接到CCIX設(shè)備的主機系統(tǒng)。
CCIX規(guī)范只規(guī)定了如何報告和處理CCIX錯誤。
7.3 CCIX協(xié)議錯誤報告(Protocol Error Reporting,PER)
有兩類硬件故障(Fault)可以引起CCIX硬件錯誤(Error):
PCIe傳輸錯誤,通過標準的PCIe機制報告
CCIX協(xié)議錯誤(CCIX Protocol Errors ,PER),在設(shè)備端通過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
在規(guī)范的7.3.3 – 7.3.8章節(jié)有具體介紹。
7.3.2 PER日志結(jié)構(gòu)
CCIX PER日志用于報告會導致協(xié)議錯誤的硬件故障。協(xié)議錯誤通常與特定的CCIX協(xié)議組件(即CCIX鏈路、端口、HA、SA或RA)相關(guān)。每個日志結(jié)構(gòu)開始的偏移量(字節(jié)數(shù))由各種能力結(jié)構(gòu)的錯誤日志偏移量表示。
每個日志頭由256位組成。DW0和DW1表示錯誤日志屬性字段。DW2和DW3提供錯誤的故障地址。DW4提供錯誤的錯誤地址掩碼長度。DW5-7保留供將來使用。后面的具體結(jié)構(gòu)說明全都略去。
7.4 CCIX錯誤控制和狀態(tài)結(jié)構(gòu)
CCIX在兩個級別提供錯誤控制機制:
Level 1:CCIX設(shè)備錯誤控制和狀態(tài)(每個CCIX設(shè)備)
Level 2:組件錯誤控制和狀態(tài)(根據(jù)CCIX協(xié)議組件)
必須禁用CCIX設(shè)備中所有錯誤控制和狀態(tài)寄存器的重置值。主機軟件必須明確啟用CCIX設(shè)備和每個CCIX協(xié)議組件的錯誤報告。啟用后,默認情況下,除非軟件設(shè)置了掩碼位,否則錯誤將被不能被屏蔽。
7.4.1 錯誤控制寄存器定義
設(shè)備和組件的控制寄存器如下:
7.4.2 設(shè)備錯誤控制流程
本章節(jié)介紹錯誤屏蔽規(guī)則和啟動時啟用錯誤的流程,略過。
8.地址翻譯服務(wù)(Address Translation Services)
ATS機制是在PCIe中定義的。簡單介紹一下,為節(jié)省CPU資源,PCIe設(shè)備常采用DMA方式訪問內(nèi)存。Root Complex需要將DMA請求進行一次地址轉(zhuǎn)換才能將訪問到真實物理存儲地址。進行地址轉(zhuǎn)換可以防止非法DMA請求,并且有利于實現(xiàn)虛擬化傳輸。但是,RC進行DMA地址轉(zhuǎn)換是需要時間的,相較于不進行地址轉(zhuǎn)換,顯然進行DMA地址轉(zhuǎn)換會增加DMA訪問的時間。為了減小地址轉(zhuǎn)換的影響,設(shè)計人員常常在需要進行地址轉(zhuǎn)換的地方添加地址轉(zhuǎn)換緩存(Address Translation Cache,ATC)。需要設(shè)備設(shè)計出具有良好的ATC機制,包括ATC的預測、地址翻譯請求的長度、發(fā)送翻譯請求的時機等。
8.1 介紹
CCIX請求代理(RA)發(fā)出的內(nèi)存請求時使用的是物理地址。因此與RA關(guān)聯(lián)的加速器功能(Accelerator Functions,AFs)必須向RA提供物理地址。但是軟件使用的是虛擬地址,所以AFs需要執(zhí)行地址轉(zhuǎn)換。
請求代理不可以向CCIX鏈路發(fā)出帶有未翻譯虛擬地址的內(nèi)存請求,因為這可能會違反基于頁表的安全性或虛擬化。
AF可以使用兩種方法來轉(zhuǎn)換虛擬地址。第一種是使用PCIe定義的地址轉(zhuǎn)換服務(wù)變體從主機系統(tǒng)獲取地址轉(zhuǎn)換。第二種方法是讓AF包含一個MMU,以支持主機系統(tǒng)頁表格式。
8.2 ATS
PCIe格式的ATS轉(zhuǎn)換請求、轉(zhuǎn)換完成、失效請求、頁面請求和頁面響應(yīng)通過VC0發(fā)送。除CCIX VC外,可以在任何VC上發(fā)送失效響應(yīng)。
8.3 無效語義
略過。
8.4 內(nèi)存類型
除了獲取翻譯后的頁面地址外,CCIX請求代理還需要內(nèi)存類型信息,以便與內(nèi)存正確交互。內(nèi)存類型信息決定了CCIX鏈路上支持的操作類型,以及數(shù)據(jù)是否可以在本地緩存。
帶有內(nèi)存屬性的ATS翻譯完成的格式和定義如下:
其中Mem[2:0]的定義如下:
關(guān)于Reodering,Early write acknowledge這些在之前的文章中介紹過。
至此,CCIX規(guī)范的內(nèi)容大致粗過一遍,其中PCIe部分基本都略過了,有的地方介紹了一點概念性知識。真需要用到CCIX的時候,還是多看協(xié)議。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5357瀏覽量
120592 -
cpu
+關(guān)注
關(guān)注
68文章
10873瀏覽量
212106 -
PCIe
+關(guān)注
關(guān)注
15文章
1241瀏覽量
82748
原文標題:技術(shù)分享 | CCIX(九)
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論