最近研究了一下關於服務器片間互聯的主流協議和連接方式,之前接觸的主要是CCIX,這幾天也關注了一下Intel主推的CXL協議,記錄一下學習中的一些重點和問題。
CXL的全稱是Compute Express Link,主要為了解決芯片和外設直接的互聯問題,也包括芯片之間的片間互聯,應用場景包括AI,Machine Learning, HPC等。
主要分三類:
CXL.io: Discovery, configuration, register access, interrupts, RAS(similar to PCIe)
CXL.cache: Device access to processor-attached memory more efficiently
CXL.memory: Processor access to device-attached memory
其架構和主要應用示意圖如下圖所示:
然后是在研究中遇到的一些問題QA:
Q. 對於atomic的操作會保證嗎?
A. CXL的Cache granule是64Bytes,看起來只能用兩筆操作來完成,而且最大64bytes.
Q. 如果有多個device, 是否可以某個device直接去訪問其他device的cache data?
A. 可以,假設requeste訪問其他peer CXL device, peer device是type2/type3的,仍然由home agent來處理相關的coherency問題
Q. 是否有開關可以enable/disable IO, memory or cache CXL?
A. IO是必須的,對於CXL.mem, CXL,cache, 可以沒有,但是建議device有其中一種。
Q. 如果CXL device發送了很多request到同一個Home agent,是否會使得home agent成為Bottleneck?
A. 有可能,CXL通過back pressuring CXL host-to-device request channel來解決這個問題
Q. CXL通過什么手段獲得減少Latency的可能?
A. 在type2/type3中,通過簡化傳輸所需的packet, 按照cache line 高效傳輸,不需要發送interrupt等方式,減少task的overhead.其實就是簡化了PCIe的傳輸形式,減少了不必要的傳輸.
同時,可以使用relaxed ordering rules.
Q. CXL的讀寫round-trip latency是多少(當使用CXL device且從invalidate state開始)?
A. CXL不決定具體的延遲,而是取決於device的實現方式,CXL本身的指導延遲是50ns.
Q. 可否芯片內部使用另一個協議,通過CXL連接到外部?
A. 可以,但是需要協議轉換