3. CCIX協議層
3.1 介紹
每個CCIX代理都有一個ID,通過ID進行消息路由。 每個CCIX端口可以與一個或多個其他CCIX端口通信。CCIX交換機(Switch)包括CCIX端口并支持CCIX鏈路。CCIX鏈路定義為兩個CCIX端口之間的(邏輯)連接,具有專用的通信資源。
一個CCIX系統在正常工作前,需要主機通過發現(discovery)和枚舉(enumeration)機制去初始化,CCIX規范并沒有額外規定這個機制,完全遵守PCIe規范。 發現過程需要完成以下動作:
發現系統中存在的每個芯片。
發現系統中存在的所有傳輸交換機(transport switches),包括支持協議的嵌入式和獨立式交換機。
發現在系統中每個芯片上的所有代理。
對于每個主代理,發現在系統地址映射中其所需的地址范圍的大小。
對于每個從代理,發現從屬代理可以提供給另一個芯片上的主代理的地址范圍的大小。
枚舉過程需要完成以下動作:
確定系統的拓撲結構和適當的路由算法。
將從代理分配給主代理。
確定主代理和從代理的全局系統地址映射(G-RSAM和G-HSAM)。
確定整個系統的代理ID分配。
3.2 消息字段
前面講過,在CCIX鏈路層和CCIX事務層之間,是通過CCIX消息來進行通信的。CCIX消息可以分為幾類,請求消息,監聽消息和響應消息。下圖是請求消息的所有字段(Field)。如果是128B的緩存行,“注釋列”標明了所需的額外要求。另外,表的底部列出了請求消息中包含數據時所需的其它字段。
下圖是監聽消息的所有字段。
下圖是響應消息的所有字段。
接下來,我們看看這些CCIX消息中每個字段的具體含義是什么。
TgtID: 目標標識(Target Identifier),6-bit寬度。
SrcID: 源標識(Source Identifier),6-bit寬度。
MsgLen:消息長度,6-bit寬度,以4字節增量的方式標識消息的長度,例如下表顯示,消息最長116字節,最短4字節。
MsgCredit:用于標識消息信用是否傳遞給CCIX鏈路的發送方。后面會解釋什么是信用。
Ext:如果設置為1,表示包含4B擴展。
MsgType:標識有效負載中的消息類型,4-bit寬度,編碼含義如下表。
QoS:Quality of Service,服務質量優先級別。QoS主要用于主控制器和內存控制器事務調度;只有請求具有QoS字段;QoS設置不應影響功能正確性;QoS字段沒有必要的行為要求,然而預期的默認行為是QoS的上升值表示更高的優先級。
TxnID: 事務標識(Transaction Identifier),12-bit寬度(對于128B的緩存行,只需11-bit)。
ReqOp,SnpOp, RespOp:指定要執行的操作,Opcode編碼對于每種消息類型是不同的。
Addr:指定與消息相關的地址,允許的地址大小由AddrWidth屬性定義。
NonSec:標識是對非安全區域的訪問。
ReqAttr:請求屬性,包括有關請求數據大小、內存屬性、監聽屬性以及事務排序要求信息。ReqAttr[6:4]指明數據大小,合法的數據長度可以是1B,2B,4B,8B,16B,32B,128B;ReqAttr[2:0]指明了存儲類型,編碼如下。
User:用戶定義的字段。
Data:寫數據或者讀響應數據。
BE:Byte Enable,字節使能。
Posion:指示對應的8-byte塊是否有未更正的錯誤。
SnpCast:標識單獨監聽的代理,其編碼如下表。
RespAttr:響應屬性。在Comp響應中,此字段不用,必須設置為0;在CompData響應中,此字段指示響應接收器可以設置的緩存狀態;在監聽響應中,此字段指明在被監聽端(snoopee)的一致性緩存狀態。
DataRet:指示是否要將數據返回到主代理。當DataRet被置無效時,對于除SnpMakeI之外的所有監聽:
要求返回“臟”緩存行的數據。
建議(但不是必需的)不為唯一的干凈緩存行返回數據。
要求不為共享“干凈”緩存行返回數據。
當DataRet有效時:
要求返回“臟”緩存行的數據。
建議為唯一的“干凈”緩存行返回數據,但不是必需的。
要求不為共享“干凈”緩存行返回數據。
今天先到這里吧,內容不多,但是有點雜亂。接下來會講到CCIX的一致性協議,內容會比較多 最后附上兩篇舊文,幫助大家理解ReqAttr[2:0]中的存儲類型。
審核編輯:湯梓紅
-
通信
+關注
關注
18文章
6026瀏覽量
135950 -
交換機
+關注
關注
21文章
2637瀏覽量
99537
原文標題:老秦帶你探索CCIX(三)
文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論