「博文連載」PCIe掃盲——PCIe演進方向?CCIX簡介

摩爾定律逐漸降速,業界需要一同尋找提升計算性能、同時保持低功耗的方法。CCIX聯盟的成立旨在實現一種新型互聯,專注於新興的加速應用,如機器學習、網絡處理、存儲卸載、內存數據庫和4G/5G 無線技術。這個標準使得基於不同指令集的處理器,將緩存一致性、對等計算的優勢擴展至許多加速設備包括FPGA、GPU、網絡或存儲適配器、智能網絡和定製的專用集成電路。CCIX 通過擴展現有成熟的數據中心硬件和軟件基礎設施來簡化開發和採用。這最終能使系統設計者將合適的異構組件無縫集成來滿足特定系統需求。

緩存一致性的加速器互聯,即CCIX™(讀成“see 6”)是一種能夠將兩個或兩個以上器件通過緩存一致性的方式來共享數據的片間互聯。機器學習和大數據應用正深刻的變革數據處理的方式。通過片外加速器的定製,傳統處理器從計算到網絡的應用都得到了增強;這推動了產業整體向加速器和異構計算髮展。對目前很多計算任務,加速器能夠比單獨的處理器速度更快、功耗更低的完成所需功能。但是,不受管控的異構會帶來軟件複雜性。CCIX 旨在優化、簡化異構系統的架構設計,同時基於不同指令集(ISA)的處理器或應用特定的加速器提升系統的帶寬、降低時延。

今天,高科技的版圖是由新的、大規模的消費者服務的創新構成的,例如5G、雲計算、物聯網、大數據和自動駕駛。機器學習和人工智能應用根本性的改變了消費者行爲。這又推進了平臺和解決方案不斷演進,通過高效、可擴展的方式來支持這些新應用。僅以中央處理器爲中心的服務器架構的解決方案無法滿足這些應用的性能需求。因此需要基於高效的異構計算架構的解決方案,包含加速器例如圖形處理單元(GPU)、可編程邏輯陣列(FGPA)、智能網卡(NIC)和很多其它領域特定的可編程器件。PCI Express (PCIe) 是目前最常見的,處理器和片外加速器間傳輸數據的協議。儘管PCIe 協議作爲輸入輸出(IO)協議很有效,但不能支持IO 設備成爲對等計算模型中的一個無縫組件。

隨着片外加速器的應用越來越多,高性能、低延時和易用性成爲下一代互聯的首要訴求。

CCIX分層架構

CCIX規範的最大優勢之一是它建立在PCI Express規範的基礎之上。CCIX的一致性協議只需很少修改或者無需修改就可以通過PCI Express鏈路傳遞。如下圖所示,某個現有的PCI Express控制器實施可以通過邏輯進行擴展,以實現CCIX事務層。CCIX事務層負責攜帶一致性消息,而塊 – 即CCIX協議層和鏈路層 -- 負責實現一致性協議本身並對其執行操作。這些塊需要與用於緩存的內部片上系統(SoC)邏輯進行緊密集成,並且可能是特定於該SoC上使用的具體架構。在其今後設計中實現CCIX的SoC設計人員通常希望將CCIX協議及鏈路層與CCIX事務層分開,以使前者能夠與內部SoC邏輯緊密集成。

CCIX 棧的最上層是CCIX 協議層。這一層負責一致性協議,包括內存的讀、寫流。這一層提供了片上一致性協議(例如Arm AMBA CHI)的簡單映射。這一層定義的緩存狀態使得硬件能夠確定內存的狀態。比如硬件可以確定數據是否唯一且未被修改(和內存一致),或是共享且被修改的(和內存不一致)。

CCIX 協議層之下是CCIX 鏈接層。這一層負責CCIX 協議層定義的代理(agent)之間消息的傳輸格式。目前CCIX 鏈接層是構建在PCIe 之上,但是基於分層架構,CCIX 將來可以映射到不同的傳輸層。此外,這一層負責端口聚合,使得多個端口能夠聚合在一起提升帶寬。

CCIX 和PCIe 事務層負責處理它們各自的包。PCIe 協議支持部署虛擬通道,使得不同數據流通過一個PCIe 鏈路。將CCIX 和PCIe 傳輸流各分到一個虛擬通道,CCIX 和PCIe 傳輸可以共享相同的鏈路。CCIX 能夠傳輸標準的PCIe 包,或經過優化的CCIX 包。經過優化的CCIX 包刪減了PCIe 包裏的幾個不必要的字段。傳輸標準的PCIe 包時可以採用現有的PCIe 交換器。傳輸經過優化的CCIX 包,能降低PCIe 的額外開銷,使得一致性傳輸的包更小、更高效。

PCIe 數據鏈路層執行數據鏈路層的所有正常功能。這些功能包括 CRC 錯誤校驗、包確認和超時檢查,和信用初始化及交換。

如前所述,CCIX的最大的吸引力之一就是它與PCI Express的兼容性。實際上,CCIX的緩存一致性協議可以通過運行8GT/s或更快速度的任何PCI Express鏈路來傳遞。PCI Express 4.0規定的最高數據速率爲16GT/s,這在一條16通道鏈路上可以達到總雙向帶寬約64GB/s,但CCIX聯盟的一些成員需要更大的帶寬。他們認爲,通過將傳輸速率提高到25GT/s,一條CCIX鏈路可以在相同的條件下達到100GB/s。這導致出現了一項稱爲“擴展速度模式”(ESM)的CCIX特性。由於PCI Express由一個不同的標準化機構所擁有,所以CCIX聯盟選擇了一個聰明的機制用於在具有ESM功能的組件與PCI Express組件之間實現兼容性。希望彼此進行通信的兩個CCIX組件可以通過正常的PCI Express鏈路初始化過程(通常是一個硬件自主過程)進行處理,以達到最高的相互支持的PCI Express速度。自此開始,在主機系統上運行的軟件可以詢問CCIX特定的配置寄存器,並確定兩個組件是否都具備ESM能力。如果具備的話,則確定它們的最高支持速度。該軟件然後在兩個組件上編寫其他CCIX特定的寄存器,以便把PCI Express鏈路速度映射爲CCIX ESM鏈路速度。自此以後,鏈路協商將針對CCIX ESM速度,因此,通過強制進行鏈路重新訓練,這兩個組件現在可以以高達25GT/s的速度進行通信。

CCIX 系統拓撲樣例

得益於分層架構,CCIX 能夠支持多種靈活的拓撲結構。最常見的拓撲結構是直接附加的共享虛擬內存。但其它拓撲結構,如交換器、菊花鏈或網狀拓撲,也很容易被構建和支持。

上圖中,4a爲直接連接,4b爲交換器拓撲,4c爲混合菊花鏈。

CCIX 一致性分層架構

CCIX 協議定義了CCIX 組成模塊的內存訪問協議。所有CCIX 器件至少有一個具備CCIX 鏈接的端口。一個CCIX 端口關聯一組物理管腳,用於和另一個CCIX 端口連接,在兩個或多個不同芯片間交互信息。

同時定義了一些不同的代理類型,哪種代理在哪一個器件取決於器件的功能。定義的代理類型包括:請求代理(RA)、主代理(HA)、從代理(SA)和錯誤代理(Error Agent)。請求代理、主代理、從代理、錯誤代理,系統裏的端口和鏈接統稱CCIX 組件。一個代理在協議中由一個代理ID 標識。以下對每一種代理類型進行簡要描述。

請求代理(RA)- 一個請求代理對系統內的不同地址進行讀、寫操作。請求代理可以對它已經訪問的地址的數據進行緩存。每個CCIX 請求代理可以有一個或多個處理單元作爲內部請求的發起者,它(們)的請求由一個CCIX 架構的請求代理執行。根本上說CCIX 請求代理提供了加速器或CCIX 使能的IO 主設備向一致性系統內存的接口。此外,請求代理使得加速器的緩存具備一致性,因此編程者無需感知。

主代理(HA)- 主代理負責管理指定的一段地址的數據一致性。當一個緩存行的狀態需要改變時,主代理通過向所需的請求代理髮出偵聽操作來保持一致性。

從代理(SA)- CCIX 支持擴展系統內存,來包含外設所附的內存。這種情形出現在主代理在一個芯片上,而這個主代理關聯的一些或全部物理內存在另一個芯片上時。這種架構組件(擴展內存)稱爲從代理。從代理不會被請求代理直接訪問。請求代理總是訪問一個主代理,然後主代理再訪問從代理。

錯誤代理- 一個錯誤代理接收並處理協議錯誤信息。協議錯誤信息由CCIX 組件發出。

CCIX 數據流樣例

基於上述的代理類別,可以描述CCIX 可見的一些常見用例。

1、加速器共享處理器內存

當採用和部署CCIX 時,最常見的初始用例是處理器和加速器共享緩存。這個用例裏有兩個請求代理,各自管理自己的緩存。主代理在處理器上,管理連接到該處理器的內存的訪問。

2、共享的處理器和加速器內存

下一種常用模型可能是處理器和加速器共享虛擬內存。在這個用例裏,加速器和處理器的內存同在一個共享虛擬內存池裏。處理器只需要簡單的將待處理的數據的地址指針傳給加速器,而不需要複雜的PCIeDMA 和驅動在處理器和加速器內存之間傳遞數據。有兩個請求代理管理各自的緩存,有兩個主代理管理內存。免去軟件驅動開發和額外開銷,可以大幅提升系統性能和簡化軟件。

3、拓展基本結構

得益於CCIX 非常靈活的特性,它可以在展示的這些基本數據流之外進行拓展。從直接附帶的加速器、到網狀拓撲和星型網絡, CCIX 具備很可觀的選項來支持很多種類的拓撲結構。

CCIX 軟件

CCIX 對硬件的增強極大推進了片外加速器,同時CCIX 的一個關鍵優勢是它能支持主設備和加速器間的數據共享採用無驅動的數據移動方式。傳統的PCIe 加速器需要驅動對加速器寫入和讀出數據,這增加了延時和計算開銷。採用無驅動的數據移動方式,CCIX 還可以將系統內存擴展至主設備的內存之外。

基於CCIX,每個支持CCIX 的設備的行爲與現有NUMA(非統一內存訪問)操作系統中的節點類似。這種基於內存的方法利用了現有的操作系統功能。在這種模式下,用來共享的所有數據結構都放在處理器和加速器都可訪問的共享內存裏。這種數據共享模型可以消除加速器特定的控制與管理驅動,允許加速器資源由一箇中心調度器安排的長時間運行的任務來調用。這個調度器可以是操作系統調度程序的一部分,或和操作系統調度程序協同。這能簡化在虛機或容器上運行的應用所用的軟件庫,允許開發者用任何語言、有完整的工具支持來編寫常規的應用軟件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章