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