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