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