3. CCIX協(xié)議層
3.9 錯(cuò)誤處理
事務(wù)錯(cuò)誤可以分為兩類:
數(shù)據(jù)錯(cuò)誤。用于當(dāng)訪問(wèn)了正確的地址位置,但在數(shù)據(jù)中檢測(cè)到無(wú)法糾正的(uncorrectable)錯(cuò)誤。通常,這在ECC或奇偶校驗(yàn)檢測(cè)到數(shù)據(jù)損壞時(shí)使用。
非數(shù)據(jù)錯(cuò)誤。當(dāng)檢測(cè)到與數(shù)據(jù)損壞無(wú)關(guān)的錯(cuò)誤時(shí)使用。
3.10 數(shù)據(jù)包頭
3.10.1 數(shù)據(jù)包頭
CCIX支持兩種數(shù)據(jù)包頭:
PCIe兼容的數(shù)據(jù)包頭,遵循PCIe協(xié)議規(guī)范
優(yōu)化的數(shù)據(jù)包頭,僅適用于CCIX協(xié)議規(guī)范
兩種格式如下:
每個(gè)數(shù)據(jù)包可以包含多條消息。數(shù)據(jù)包中的每條消息都包含一個(gè)MsgLen字段,該字段指示該消息的長(zhǎng)度。
NoMessagePack屬性用于控制是否支持在一個(gè)數(shù)據(jù)包中打包多條消息。當(dāng)NoMessagePack屬性為True時(shí),發(fā)送方只需為每個(gè)數(shù)據(jù)包發(fā)送一條消息。當(dāng)NoMessagePack屬性為False時(shí),根據(jù)MaxPacketSize參數(shù)的限制,允許發(fā)送方在每個(gè)數(shù)據(jù)包中打包多條消息。 MaxPacketSize屬性用于控制最大數(shù)據(jù)包大小。這決定了數(shù)據(jù)包有效負(fù)載中的最大字節(jié)數(shù),因此也是數(shù)據(jù)包頭中長(zhǎng)度字段指示的最大值。MaxPacketSize的值可以是128B,256B,512B。 每個(gè)接收接口必須聲明NoMessagePack和MaxPacketSize屬性,以便軟件在系統(tǒng)配置期間可以獲取這些信息。
3.11 消息格式
3.11.1 讀請(qǐng)求
讀請(qǐng)求消息格式:
3.11.2 寫請(qǐng)求
寫請(qǐng)求消息格式:
3.11.3 無(wú)數(shù)據(jù)響應(yīng)
無(wú)數(shù)據(jù)響應(yīng)消息格式:
3.11.4 有數(shù)據(jù)響應(yīng)
有數(shù)據(jù)響應(yīng)消息格式:
3.11.5 監(jiān)聽(tīng)
監(jiān)聽(tīng)消息格式:
3.11.6 雜項(xiàng)消息
Credited雜項(xiàng)消息格式
信用交換消息格式:
NOP消息格式:
協(xié)議錯(cuò)誤消息格式:
3.11.7 請(qǐng)求鏈(Request Chaining)
CCIX支持一種請(qǐng)求鏈機(jī)制。如果一個(gè)請(qǐng)求是發(fā)送到前一個(gè)請(qǐng)求的后續(xù)地址,允許為這個(gè)請(qǐng)求發(fā)送一條優(yōu)化的消息。
3.11.8 監(jiān)聽(tīng)鏈(Snoop Chaining)
同樣的,CCIX也支持監(jiān)聽(tīng)鏈機(jī)制。
3.11.9 擴(kuò)展字段
CCIX允許消息包含使用一個(gè)或多個(gè)消息擴(kuò)展的附加字段。
3.12 可選特性和參數(shù)
略
3.13 消息路由和代理ID分配
3.13.1 消息路由
對(duì)于一條消息,Address或TgtID值決定下一個(gè)要去的端口或鏈路。對(duì)于這種路由,地址路由消息使用系統(tǒng)地址映射(System Address Map,SAM),ID路由消息使用ID映射(ID Map,IDM)。監(jiān)聽(tīng)響應(yīng)使用的路由表標(biāo)記為SR-IDM。SR-IDM可以與樹(shù)拓?fù)浠蛲耆B接拓?fù)渲械腎DM相同,但在其他一些拓?fù)渲?,如具有維度序路由的網(wǎng)絡(luò),SR-IDM的編程方式必須與IDM不同。
對(duì)于地址路由消息,是這樣的:
在原始RA中,RSAM表用于確定請(qǐng)求是發(fā)送到本地目標(biāo)還是路由到端口
如果是發(fā)到端口,通過(guò)使用端口SAM(PSAM)確定所使用的鏈接
到達(dá)下一個(gè)芯片前,重復(fù)該過(guò)程,直到請(qǐng)求到達(dá)HA所在的芯片
系統(tǒng)中的每個(gè)芯片都包括一個(gè)64個(gè)條目的ID映射表,該表中的每個(gè)條目都提供了路由詳細(xì)信息,以達(dá)到適當(dāng)?shù)拇鞩D。ID路由獨(dú)立于代理類型,具有相同代理ID值的所有代理必須位于同一芯片上,并且對(duì)這些代理ID的請(qǐng)求響應(yīng)和監(jiān)聽(tīng)使用相同的路由。完全連接和樹(shù)狀拓?fù)渲械谋O(jiān)聽(tīng)響應(yīng)也采用相同的路徑。 IDM表僅確定正在使用的每個(gè)有效代理ID,也就是代理位于芯片本地或用于到達(dá)最終代理路由上的下一個(gè)芯片的端口/鏈路。對(duì)于遠(yuǎn)程代理,在到達(dá)下一個(gè)芯片時(shí),該芯片的IDM表用于確定下一次跳躍(hop),直到最終到達(dá)最終目的地。
3.13.2 廣播監(jiān)聽(tīng)路由
對(duì)于Broadcast和Broadcast-1監(jiān)聽(tīng)請(qǐng)求消息,廣播轉(zhuǎn)發(fā)控制向量(Broadcast Forward Control Vector)與IDM表結(jié)合使用,以確定消息應(yīng)如何傳播。 在Broadcast監(jiān)聽(tīng)路徑上的任何一點(diǎn)上,廣播監(jiān)聽(tīng)都可以分為多個(gè)監(jiān)聽(tīng)。轉(zhuǎn)發(fā)到另一個(gè)出口端口的拆分偵聽(tīng)必須是廣播偵聽(tīng)。在Broadcast-1監(jiān)聽(tīng)路徑上的任何一點(diǎn)上,都可以分為多個(gè)監(jiān)聽(tīng)。轉(zhuǎn)發(fā)到出口端口的拆分偵聽(tīng)必須最多包括一個(gè)Broadcast-1偵聽(tīng)和任意數(shù)量的Broadcast Snoop。分割Broadcast或Broadcast-1偵聽(tīng)的點(diǎn)負(fù)責(zé)收集和合并與接收到的監(jiān)聽(tīng)請(qǐng)求相對(duì)應(yīng)的所有監(jiān)聽(tīng)響應(yīng)。
3.13.3 TxnID分配
將TxnID分配給內(nèi)存和監(jiān)聽(tīng)請(qǐng)求必須遵循以下規(guī)則:
對(duì)于內(nèi)存請(qǐng)求,TxnID對(duì)于從單個(gè)源到單個(gè)點(diǎn)的所有超發(fā)請(qǐng)求必須是唯一的
對(duì)于Unicast,Broadcast,Broadcast-1,監(jiān)聽(tīng)TxnID必須是唯一的
參與端口聚合的CCIX端口允許重新映射TxnID。下圖顯示了聚合端口示例,芯片1上的端口可以重新映射它們發(fā)送的請(qǐng)求的TxnID。芯片2上的代理必須保證其通過(guò)聚合端口接收到的芯片1的請(qǐng)求的TxnID是唯一。
3.13.4 代理ID
所有代理都使用6-bit的ID字段,分配給某一種代理的ID必須是唯一的,位于同一芯片上的不同類型的代理可以使用相同的ID值,同一ID不得分配給不同芯片上的不同代理類型。
3.13.5 目標(biāo)ID確定
HA根據(jù)需要監(jiān)聽(tīng)的RA的ID發(fā)出監(jiān)聽(tīng)消息。可以根據(jù)監(jiān)聽(tīng)過(guò)濾器(Snoop Filter)機(jī)制,或者目錄(Directory)機(jī)制來(lái)確定需要監(jiān)聽(tīng)的RA。 CCIX規(guī)范中的三種監(jiān)聽(tīng)路由類型:
Unicast:僅向TgtID字段中指定的代理發(fā)送監(jiān)聽(tīng)。
Broadcast:向所有請(qǐng)求代理發(fā)送監(jiān)聽(tīng)。
Broadcast-1:向除TgtID字段中指定的請(qǐng)求代理外的所有請(qǐng)求代理發(fā)送監(jiān)聽(tīng)。
代理ID分配總結(jié)
下表總結(jié)了不同消息類型中SrcID和TgtID分配的規(guī)則。
3.14 內(nèi)存擴(kuò)展
CCIX規(guī)范支持內(nèi)存擴(kuò)展。例如一個(gè)場(chǎng)景,主代理在一個(gè)芯片上,其負(fù)責(zé)管理的物理內(nèi)存在另外一個(gè)芯片上。這時(shí),HA充當(dāng)請(qǐng)求者,發(fā)出請(qǐng)求并接受響應(yīng);而SA充當(dāng)HA的角色,接受請(qǐng)求并負(fù)責(zé)返回響應(yīng)。
關(guān)于內(nèi)存擴(kuò)展的限制就不展開(kāi)了。
3.15 端口聚合
CCIX允許在兩個(gè)芯片之間使用多個(gè)并行CCIX鏈路進(jìn)行通信。這種連接方式被稱為端口聚合,用于單個(gè)端口的可用吞吐量不足以滿足兩個(gè)芯片之間通信需求的情況。CCIX支持的可聚合端口數(shù)量是2,4,8,16。
使用端口聚合時(shí),以下規(guī)則適用于通過(guò)可用端口的事務(wù)路由:
請(qǐng)求消息和窺探消息根據(jù)地址解碼進(jìn)行路由
所有響應(yīng)必須使用與相關(guān)請(qǐng)求相同的CCIX端口。
只有在確定使用同一CCIX鏈路的情況下,才允許在單個(gè)數(shù)據(jù)包中組合消息
端口聚合路由
總結(jié): CCIX的協(xié)議層首先定義了CCIX一致性協(xié)議,包括緩存行的狀態(tài),狀態(tài)間的轉(zhuǎn)移,及對(duì)應(yīng)的各種請(qǐng)求和響應(yīng)事務(wù);并且,對(duì)數(shù)據(jù)包頭和消息格式進(jìn)行了定義,包括各字段及其含義;然后是對(duì)CCIX消息路由的規(guī)范,消息可以通過(guò)地址或者ID路由,兩種路由方式分別有各自的限制;最后是內(nèi)存擴(kuò)展和端口聚合的說(shuō)明。 通過(guò)這一層,CCIX規(guī)范對(duì)系統(tǒng)內(nèi)存擴(kuò)展,芯片間一致性和數(shù)據(jù)共享提供了基礎(chǔ)框架。
審核編輯:湯梓紅
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6817瀏覽量
88743 -
PCIe
+關(guān)注
關(guān)注
15文章
1200瀏覽量
82353
原文標(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)論